diff --git a/ts/client/src/scripts/mb-add-spot-market.ts b/ts/client/src/scripts/mb-add-spot-market.ts new file mode 100644 index 000000000..822c1f813 --- /dev/null +++ b/ts/client/src/scripts/mb-add-spot-market.ts @@ -0,0 +1,58 @@ +import { AnchorProvider, Wallet } from '@project-serum/anchor'; +import { Connection, Keypair, PublicKey } from '@solana/web3.js'; +import * as dotenv from 'dotenv'; +import fs from 'fs'; +import { MangoClient } from '../client'; +import { MANGO_V4_ID } from '../constants'; +dotenv.config(); + +// +// (untested?) script which closes a mango account cleanly, first closes all positions, withdraws all tokens and then closes it +// +async function addSpotMarket() { + const options = AnchorProvider.defaultOptions(); + const connection = new Connection(process.env.MB_CLUSTER_URL!, options); + + // admin + const admin = Keypair.fromSecretKey( + Buffer.from( + JSON.parse(fs.readFileSync(process.env.MB_PAYER_KEYPAIR!, 'utf-8')), + ), + ); + const adminWallet = new Wallet(admin); + const adminProvider = new AnchorProvider(connection, adminWallet, options); + const client = await MangoClient.connect( + adminProvider, + 'mainnet-beta', + MANGO_V4_ID['mainnet-beta'], + ); + console.log(`Admin ${admin.publicKey.toBase58()}`); + + // fetch group + const groupPk = '78b8f4cGCwmZ9ysPFMWLaLTkkaYnUjwMJYStWe5RTSSX'; + const group = await client.getGroup(new PublicKey(groupPk)); + console.log(`Found group ${group.publicKey.toBase58()}`); + + const eth_openbook_mkt = 'FZxi3yWkE5mMjyaZj6utmYL54QQYfMCKMcLaQZq4UwnA'; + const eth_mint = '7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs'; + const usdc_mint = 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v'; + + const signature = await client.serum3RegisterMarket( + group, + new PublicKey(eth_openbook_mkt), + group.getFirstBankByMint(new PublicKey(eth_mint)), + group.getFirstBankByMint(new PublicKey(usdc_mint)), + 1, // market index + 'ETH/USDC', + ); + + console.log('Tx Successful:', signature); + + process.exit(); +} + +async function main() { + await addSpotMarket(); +} + +main();