diff --git a/src/index.js b/src/index.js index 87ec139..4e32117 100644 --- a/src/index.js +++ b/src/index.js @@ -1,4 +1,5 @@ export { Market, Orderbook, OpenOrders } from './market'; -export { DexInstructions, DEX_PROGRAM_ID } from './instructions'; +export { DexInstructions } from './instructions'; +export { TOKEN_MINTS, MARKETS } from './tokens_and_markets'; export { decodeEventQueue, decodeRequestQueue } from './queue'; export * as TokenInstructions from './token-instructions'; diff --git a/src/instructions.js b/src/instructions.js index 873a961..6b20053 100644 --- a/src/instructions.js +++ b/src/instructions.js @@ -7,17 +7,9 @@ import { u64, VersionedLayout, } from './layout'; -import { - PublicKey, - SYSVAR_RENT_PUBKEY, - TransactionInstruction, -} from '@solana/web3.js'; +import { SYSVAR_RENT_PUBKEY, TransactionInstruction } from '@solana/web3.js'; import { TOKEN_PROGRAM_ID } from './token-instructions'; -export const DEX_PROGRAM_ID = new PublicKey( - '4ckmDgGdxQoPDLUkDT3vHgSAkzA3QRdNq5ywwY4sUSJn', -); - export const INSTRUCTION_LAYOUT = new VersionedLayout( 0, union(u32('instruction')), @@ -84,7 +76,7 @@ export class DexInstructions { feeRateBps, vaultSignerNonce, quoteDustThreshold, - programId = DEX_PROGRAM_ID, + programId, }) { return new TransactionInstruction({ keys: [ @@ -124,7 +116,7 @@ export class DexInstructions { maxQuantity, orderType, clientId, - programId = DEX_PROGRAM_ID, + programId, }) { return new TransactionInstruction({ keys: [ @@ -156,7 +148,7 @@ export class DexInstructions { baseVault, quoteVault, limit, - programId = DEX_PROGRAM_ID, + programId, }) { return new TransactionInstruction({ keys: [ @@ -178,7 +170,7 @@ export class DexInstructions { eventQueue, openOrdersAccounts, limit, - programId = DEX_PROGRAM_ID, + programId, }) { return new TransactionInstruction({ keys: [ @@ -203,7 +195,7 @@ export class DexInstructions { side, orderId, openOrdersSlot, - programId = DEX_PROGRAM_ID, + programId, }) { return new TransactionInstruction({ keys: [ @@ -225,7 +217,7 @@ export class DexInstructions { owner, requestQueue, clientId, - programId = DEX_PROGRAM_ID, + programId, }) { return new TransactionInstruction({ keys: [ @@ -250,7 +242,7 @@ export class DexInstructions { baseWallet, quoteWallet, vaultSigner, - programId = DEX_PROGRAM_ID, + programId, }) { return new TransactionInstruction({ keys: [ diff --git a/src/market.ts b/src/market.ts index 5620710..e54d79c 100644 --- a/src/market.ts +++ b/src/market.ts @@ -1,7 +1,7 @@ import { blob, seq, struct, u8 } from 'buffer-layout'; import { accountFlagsLayout, publicKeyLayout, u128, u64 } from './layout'; import { Slab, SLAB_LAYOUT } from './slab'; -import { DEX_PROGRAM_ID, DexInstructions } from './instructions'; +import { DexInstructions } from './instructions'; import BN from 'bn.js'; import { Account, @@ -75,7 +75,7 @@ export class Market { baseMintDecimals: number, quoteMintDecimals: number, options: MarketOptions = {}, - programId: PublicKey = DEX_PROGRAM_ID, + programId: PublicKey, ) { const { skipPreflight = false, confirmations = 0 } = options; if (!decoded.accountFlags.initialized || !decoded.accountFlags.market) { @@ -98,7 +98,7 @@ export class Market { connection: Connection, address: PublicKey, options: MarketOptions = {}, - programId: PublicKey = DEX_PROGRAM_ID, + programId: PublicKey, ) { const { owner, data } = throwIfNull( await connection.getAccountInfo(address), @@ -842,11 +842,7 @@ export class OpenOrders { orders!: BN[]; clientIds!: BN[]; - constructor( - address: PublicKey, - decoded, - programId: PublicKey = DEX_PROGRAM_ID, - ) { + constructor(address: PublicKey, decoded, programId: PublicKey) { this.address = address; this._programId = programId; Object.assign(this, decoded); @@ -860,7 +856,7 @@ export class OpenOrders { connection: Connection, marketAddress: PublicKey, ownerAddress: PublicKey, - programId: PublicKey = DEX_PROGRAM_ID, + programId: PublicKey, ) { const filters = [ { @@ -892,7 +888,7 @@ export class OpenOrders { static async load( connection: Connection, address: PublicKey, - programId: PublicKey = DEX_PROGRAM_ID, + programId: PublicKey, ) { const accountInfo = await connection.getAccountInfo(address); if (accountInfo === null) { @@ -904,7 +900,7 @@ export class OpenOrders { static fromAccountInfo( address: PublicKey, accountInfo: AccountInfo, - programId: PublicKey = DEX_PROGRAM_ID, + programId: PublicKey, ) { const { owner, data } = accountInfo; if (!owner.equals(programId)) { @@ -922,7 +918,7 @@ export class OpenOrders { marketAddress: PublicKey, ownerAddress: PublicKey, newAccountAddress: PublicKey, - programId: PublicKey = DEX_PROGRAM_ID, + programId: PublicKey, ) { return SystemProgram.createAccount({ fromPubkey: ownerAddress, diff --git a/src/token-instructions.js b/src/token-instructions.js index 521b8c4..1c6462f 100644 --- a/src/token-instructions.js +++ b/src/token-instructions.js @@ -14,6 +14,14 @@ export const WRAPPED_SOL_MINT = new PublicKey( 'So11111111111111111111111111111111111111112', ); +export const SRM_MINT = new PublicKey( + 'SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt', +); + +export const MSRM_MINT = new PublicKey( + 'MSRMcoVyrFxnSgo5uXwone5SKcGhT1KEJMFEkMEWf9L', +); + const LAYOUT = BufferLayout.union(BufferLayout.u8('instruction')); LAYOUT.addVariant( 0, diff --git a/src/tokens_and_markets.ts b/src/tokens_and_markets.ts new file mode 100644 index 0000000..4d78b07 --- /dev/null +++ b/src/tokens_and_markets.ts @@ -0,0 +1,198 @@ +import { MSRM_MINT, SRM_MINT, WRAPPED_SOL_MINT } from './token-instructions'; +import { PublicKey } from '@solana/web3.js'; + +export const TOKEN_MINTS: Array<{ address: PublicKey; name: string }> = [ + { + address: new PublicKey('9n4nbM75f5Ui33ZbPYXn59EwSgE8CGsHtAeTH5YFeJ9E'), + name: 'BTC', + }, + { + address: new PublicKey('2FPyTwcZLUg1MDrwsyoP4D6s1tM7hAkHYRjkNb5w6Pxk'), + name: 'ETH', + }, + { + address: new PublicKey('AGFEad2et2ZJif9jaGpdMixQqvW5i81aBdvKe7PHNfz3'), + name: 'FTT', + }, + { + address: new PublicKey('3JSf5tPeuscJGtaCp5giEiDhv51gQ4v3zWg8DGgyLfAB'), + name: 'YFI', + }, + { + address: new PublicKey('CWE8jPTUYhdCTZYWPTe1o5DFqfdjzWKc9WKz6rSjQUdG'), + name: 'LINK', + }, + { + address: new PublicKey('Ga2AXHpfAF6mv2ekZwcsJFqu7wB4NV331qNH7fW9Nst8'), + name: 'XRP', + }, + { + address: new PublicKey('BQcdHdAQW1hczDbBi9hiegXAR7A98Q9jx3X3iBBBDiq4'), + name: 'USDT', + }, + { + address: new PublicKey('BXXkv6z8ykpG1yuvUDPgh732wzVHB69RnB9YgSYh3itW'), + name: 'USDC', + }, + { + address: MSRM_MINT, + name: 'MSRM', + }, + { + address: SRM_MINT, + name: 'SRM', + }, + { + address: new PublicKey('AR1Mtgh7zAtxuxGd2XPovXPVjcSdY3i4rQYisNadjfKy'), + name: 'SUSHI', + }, + { + address: new PublicKey('SF3oTvfWzEP3DTwGSvUXRrGTvr75pdZNnBLAH9bzMuX'), + name: 'SXP', + }, + { + address: new PublicKey('CsZ5LZkDS7h9TDKjrbL7VAwQZ9nsRu8vJLhRYfmGaN8K'), + name: 'ALEPH', + }, + { address: WRAPPED_SOL_MINT, name: 'SOL' }, +]; + +export const MARKETS: Array<{ + address: PublicKey; + name: string; + programId: PublicKey; + deprecated: boolean; +}> = [ + { + address: new PublicKey('EmCzMQfXMgNHcnRoFwAdPe1i2SuiSzMj1mx6wu3KN2uA'), + name: 'ALEPH/USDT', + deprecated: false, + programId: new PublicKey('4ckmDgGdxQoPDLUkDT3vHgSAkzA3QRdNq5ywwY4sUSJn'), + }, + { + address: new PublicKey('B37pZmwrwXHjpgvd9hHDAx1yeDsNevTnbbrN9W12BoGK'), + name: 'ALEPH/USDC', + deprecated: false, + programId: new PublicKey('4ckmDgGdxQoPDLUkDT3vHgSAkzA3QRdNq5ywwY4sUSJn'), + }, + { + address: new PublicKey('8AcVjMG2LTbpkjNoyq8RwysokqZunkjy3d5JDzxC6BJa'), + name: 'BTC/USDT', + deprecated: false, + programId: new PublicKey('4ckmDgGdxQoPDLUkDT3vHgSAkzA3QRdNq5ywwY4sUSJn'), + }, + { + address: new PublicKey('CAgAeMD7quTdnr6RPa7JySQpjf3irAmefYNdTb6anemq'), + name: 'BTC/USDC', + deprecated: false, + programId: new PublicKey('4ckmDgGdxQoPDLUkDT3vHgSAkzA3QRdNq5ywwY4sUSJn'), + }, + { + address: new PublicKey('HfCZdJ1wfsWKfYP2qyWdXTT5PWAGWFctzFjLH48U1Hsd'), + name: 'ETH/USDT', + deprecated: false, + programId: new PublicKey('4ckmDgGdxQoPDLUkDT3vHgSAkzA3QRdNq5ywwY4sUSJn'), + }, + { + address: new PublicKey('ASKiV944nKg1W9vsf7hf3fTsjawK6DwLwrnB2LH9n61c'), + name: 'ETH/USDC', + deprecated: false, + programId: new PublicKey('4ckmDgGdxQoPDLUkDT3vHgSAkzA3QRdNq5ywwY4sUSJn'), + }, + { + address: new PublicKey('8mDuvJJSgoodovMRYArtVVYBbixWYdGzR47GPrRT65YJ'), + name: 'SOL/USDT', + deprecated: false, + programId: new PublicKey('BJ3jrUzddfuSrZHXSCxMUUQsjKEyLmuuyZebkcaFp2fg'), + }, + { + address: new PublicKey('Cdp72gDcYMCLLk3aDkPxjeiirKoFqK38ECm8Ywvk94Wi'), + name: 'SOL/USDC', + deprecated: false, + programId: new PublicKey('BJ3jrUzddfuSrZHXSCxMUUQsjKEyLmuuyZebkcaFp2fg'), + }, + { + address: new PublicKey('HARFLhSq8nECZk4DVFKvzqXMNMA9a3hjvridGMFizeLa'), + name: 'SRM/USDT', + deprecated: false, + programId: new PublicKey('4ckmDgGdxQoPDLUkDT3vHgSAkzA3QRdNq5ywwY4sUSJn'), + }, + { + address: new PublicKey('68J6nkWToik6oM9rTatKSR5ibVSykAtzftBUEAvpRsys'), + name: 'SRM/USDC', + deprecated: false, + programId: new PublicKey('4ckmDgGdxQoPDLUkDT3vHgSAkzA3QRdNq5ywwY4sUSJn'), + }, + { + address: new PublicKey('DzFjazak6EKHnaB2w6qSsArnj28CV1TKd2Smcj9fqtHW'), + name: 'SUSHI/USDT', + deprecated: false, + programId: new PublicKey('4ckmDgGdxQoPDLUkDT3vHgSAkzA3QRdNq5ywwY4sUSJn'), + }, + { + address: new PublicKey('9wDmxsfwaDb2ysmZpBLzxKzoWrF1zHzBN7PV5EmJe19R'), + name: 'SUSHI/USDC', + deprecated: false, + programId: new PublicKey('4ckmDgGdxQoPDLUkDT3vHgSAkzA3QRdNq5ywwY4sUSJn'), + }, + { + address: new PublicKey('GuvWMATdEV6DExWnXncPYEzn4ePWYkvGdC8pu8gsn7m7'), + name: 'SXP/USDT', + deprecated: false, + programId: new PublicKey('4ckmDgGdxQoPDLUkDT3vHgSAkzA3QRdNq5ywwY4sUSJn'), + }, + { + address: new PublicKey('GbQSffne1NcJbS4jsewZEpRGYVR4RNnuVUN8Ht6vAGb6'), + name: 'SXP/USDC', + deprecated: false, + programId: new PublicKey('4ckmDgGdxQoPDLUkDT3vHgSAkzA3QRdNq5ywwY4sUSJn'), + }, + { + address: new PublicKey('H4snTKK9adiU15gP22ErfZYtro3aqR9BTMXiH3AwiUTQ'), + name: 'MSRM/USDT', + deprecated: false, + programId: new PublicKey('4ckmDgGdxQoPDLUkDT3vHgSAkzA3QRdNq5ywwY4sUSJn'), + }, + { + address: new PublicKey('7kgkDyW7dmyMeP8KFXzbcUZz1R2WHsovDZ7n3ihZuNDS'), + name: 'MSRM/USDC', + deprecated: false, + programId: new PublicKey('4ckmDgGdxQoPDLUkDT3vHgSAkzA3QRdNq5ywwY4sUSJn'), + }, + { + address: new PublicKey('DHDdghmkBhEpReno3tbzBPtsxCt6P3KrMzZvxavTktJt'), + name: 'FTT/USDT', + deprecated: false, + programId: new PublicKey('4ckmDgGdxQoPDLUkDT3vHgSAkzA3QRdNq5ywwY4sUSJn'), + }, + { + address: new PublicKey('FZqrBXz7ADGsmDf1TM9YgysPUfvtG8rJiNUrqDpHc9Au'), + name: 'FTT/USDC', + deprecated: false, + programId: new PublicKey('4ckmDgGdxQoPDLUkDT3vHgSAkzA3QRdNq5ywwY4sUSJn'), + }, + { + address: new PublicKey('5zu5bTZZvqESAAgFsr12CUMxdQvMrvU9CgvC1GW8vJdf'), + name: 'YFI/USDT', + deprecated: false, + programId: new PublicKey('4ckmDgGdxQoPDLUkDT3vHgSAkzA3QRdNq5ywwY4sUSJn'), + }, + { + address: new PublicKey('FJg9FUtbN3fg3YFbMCFiZKjGh5Bn4gtzxZmtxFzmz9kT'), + name: 'YFI/USDC', + deprecated: false, + programId: new PublicKey('4ckmDgGdxQoPDLUkDT3vHgSAkzA3QRdNq5ywwY4sUSJn'), + }, + { + address: new PublicKey('F5xschQBMpu1gD2q1babYEAVJHR1buj1YazLiXyQNqSW'), + name: 'LINK/USDT', + deprecated: false, + programId: new PublicKey('4ckmDgGdxQoPDLUkDT3vHgSAkzA3QRdNq5ywwY4sUSJn'), + }, + { + address: new PublicKey('7GZ59DMgJ7D6dfoJTpszPayTRyua9jwcaGJXaRMMF1my'), + name: 'LINK/USDC', + deprecated: false, + programId: new PublicKey('4ckmDgGdxQoPDLUkDT3vHgSAkzA3QRdNq5ywwY4sUSJn'), + }, +];