{"version":3,"sources":["../src/utils/executeTransaction.ts","../src/utils/transactionHelpers.ts","../src/constants.ts","../src/idl/jupiter6.ts","../src/utils/getEvents.ts","../src/program.ts","../src/utils/Owner.ts","../src/utils/wait.ts","../src/utils/indexedRouteMap.ts","../src/utils/TransactionBuilder.ts","../src/utils/instruction.ts","../src/utils/token.ts","../src/types.ts","../src/fee.ts"],"sourcesContent":["import {\n  BlockhashWithExpiryBlockHeight,\n  Connection,\n  PublicKey,\n  Transaction,\n  VersionedTransaction,\n} from '@solana/web3.js';\nimport { COMMON_TX_ERRORS, TransactionError, handleSendTransaction } from '@mercurial-finance/optimist';\nimport { Owner } from './Owner';\nimport { ExecuteParams, OnTransaction, SwapResult } from '../types';\nimport { getSignature, getTokenBalanceChangesFromTransactionResponse, signTransaction } from './transactionHelpers';\nimport { JUPITER_COMMON_ERRORS, JUPITER_PROGRAM_V6_ID } from '../constants';\nimport { IDL_V6 } from '../idl/jupiter6';\n\nfunction transformIntoJsTransaction(swapTransaction: Transaction | VersionedTransaction) {\n  if ('version' in swapTransaction) {\n    return swapTransaction;\n  } else {\n    // We rebuild a Transaction so what is passed to the wallet adapter will likely match what happens at the other side\n    // This is to reduce the probability of serialized message mismatch for incorrect wallet adapter implementations\n    return new Transaction({\n      feePayer: swapTransaction.feePayer,\n      recentBlockhash: swapTransaction.recentBlockhash,\n    }).add(...swapTransaction.instructions);\n  }\n}\n\n/** sign, send and await confirmation for an exchange */\nexport const executeTransaction = async ({\n  connection,\n  wallet,\n  onTransaction,\n  inputMint,\n  outputMint,\n  sourceAddress,\n  destinationAddress,\n  swapTransaction,\n  blockhashWithExpiryBlockHeight,\n  owner,\n  wrapUnwrapSOL,\n  minContextSlot,\n}: {\n  connection: Connection;\n  wallet: ExecuteParams['wallet'];\n  onTransaction?: OnTransaction;\n  inputMint: PublicKey;\n  outputMint: PublicKey;\n  sourceAddress: PublicKey;\n  destinationAddress: PublicKey;\n  swapTransaction: Transaction | VersionedTransaction;\n  blockhashWithExpiryBlockHeight: BlockhashWithExpiryBlockHeight;\n  owner: Owner;\n  wrapUnwrapSOL?: boolean;\n  minContextSlot?: number;\n}): Promise<SwapResult> => {\n  let swapError: TransactionError | undefined = undefined;\n  let swapResult: SwapResult | undefined = undefined;\n\n  try {\n    if (owner.signer) {\n      signTransaction(swapTransaction, [owner.signer]);\n    } else {\n      if (!wallet) throw new Error('Signer wallet not found');\n      swapTransaction = transformIntoJsTransaction(swapTransaction);\n      swapTransaction = await wallet.signTransaction(swapTransaction);\n    }\n\n    const swapTxid = getSignature(swapTransaction);\n    const skipPreflight = true;\n    try {\n      const swapTransactionSender = async () => {\n        try {\n          const transactionResponse = await handleSendTransaction({\n            ...blockhashWithExpiryBlockHeight,\n            connection,\n            signedTransaction: swapTransaction,\n            idl: IDL_V6,\n            idlProgramId: JUPITER_PROGRAM_V6_ID,\n            skipPreflight,\n            minContextSlot,\n          });\n\n          if ('error' in transactionResponse) {\n            // Map error to a local Jupiter error so ui can parse it.\n            return mapCommonErrorToJupiterError(transactionResponse.error);\n          }\n\n          return transactionResponse.transactionResponse;\n        } catch (e) {\n          // catch for network error etc...\n          return e as TransactionError;\n        }\n      };\n      const swapPromise = swapTransactionSender();\n      onTransaction?.(swapTxid, swapPromise);\n      const transactionResponse = await swapPromise;\n\n      if (transactionResponse instanceof Error) {\n        throw transactionResponse;\n      }\n\n      const [sourceTokenBalanceChange, destinationTokenBalanceChange] = getTokenBalanceChangesFromTransactionResponse({\n        txid: swapTxid,\n        inputMint,\n        outputMint,\n        user: owner.publicKey,\n        transactionResponse,\n        hasWrappedSOL: !wrapUnwrapSOL,\n      });\n\n      swapResult = {\n        txid: swapTxid,\n        inputAddress: sourceAddress,\n        outputAddress: destinationAddress,\n        inputAmount: sourceTokenBalanceChange,\n        outputAmount: destinationTokenBalanceChange,\n      };\n    } catch (e: any) {\n      console.error(e);\n      swapError = e;\n    }\n\n    if (swapError || !swapResult) {\n      throw swapError || new Error('Swap failed');\n    }\n\n    return swapResult;\n  } catch (error: any) {\n    return { error: error as TransactionError };\n  }\n};\n\nexport const mapCommonErrorToJupiterError = (error: TransactionError) => {\n  switch (error.message) {\n    case COMMON_TX_ERRORS.TRANSACTION_NOT_CONFIRMED: {\n      const errorDetails = JUPITER_COMMON_ERRORS['TransactionNotConfirmed'];\n      return new TransactionError(errorDetails.msg, undefined, errorDetails.code, [JUPITER_PROGRAM_V6_ID.toBase58()]);\n    }\n    case COMMON_TX_ERRORS.TOO_MANY_ACCOUNT_LOCKS: {\n      const errorDetails = JUPITER_COMMON_ERRORS['TooManyAccountLocked'];\n      return new TransactionError(errorDetails.msg, undefined, errorDetails.code, [JUPITER_PROGRAM_V6_ID.toBase58()]);\n    }\n    case COMMON_TX_ERRORS.FROZEN_ACCOUNT: {\n      const errorDetails = JUPITER_COMMON_ERRORS['FrozenAccount'];\n      return new TransactionError(errorDetails.msg, undefined, errorDetails.code, error.programIds);\n    }\n    default: {\n      return error;\n    }\n  }\n};\n","import { TransactionError } from '@mercurial-finance/optimist';\nimport bs58 from 'bs58';\nimport {\n  AccountKeysFromLookups,\n  Blockhash,\n  ConfirmedTransactionMeta,\n  PublicKey,\n  Signer,\n  Transaction,\n  TransactionSignature,\n  VersionedMessage,\n  VersionedTransaction,\n  VersionedTransactionResponse,\n} from '@solana/web3.js';\nimport { JUPITER_COMMON_ERRORS, JUPITER_PROGRAM_V6_ID, WRAPPED_SOL_MINT } from '../constants';\nimport { getEvents } from './getEvents';\nimport { BN, Event } from '@coral-xyz/anchor';\n\n/** Should this be a method in web3.js? */\nfunction getKeyMap(message: VersionedMessage, accountKeysFromLookups: AccountKeysFromLookups | undefined) {\n  return message\n    .getAccountKeys({ accountKeysFromLookups })\n    .keySegments()\n    .flat()\n    .reduce((acc, key, index) => {\n      acc.set(key.toBase58(), index);\n      return acc;\n    }, new Map<string, number>());\n}\n\nfunction diffTokenBalance(meta: ConfirmedTransactionMeta, owner: string, mint: string): number | undefined {\n  const postBalance = meta.postTokenBalances?.find(\n    (postTokenBalance) => postTokenBalance.owner === owner && postTokenBalance.mint === mint,\n  )?.uiTokenAmount.amount;\n  const preBalance = meta.preTokenBalances?.find(\n    (preTokenBalance) => preTokenBalance.owner === owner && preTokenBalance.mint === mint,\n  )?.uiTokenAmount.amount;\n\n  if (!postBalance) return;\n  // When token account is created it isn't present in preBalance\n  return Math.abs(parseInt(postBalance) - (preBalance !== undefined ? parseInt(preBalance) : 0));\n}\n\nexport function extractTokenBalanceChangeFromTransaction(\n  meta: ConfirmedTransactionMeta,\n  user: PublicKey,\n  mint: PublicKey,\n): number | undefined {\n  if (!meta) return;\n  return diffTokenBalance(meta, user.toBase58(), mint.toBase58());\n}\n\n/** Assumption: user is the signer so it can never be rolled */\nexport function extractSOLChangeFromTransaction(\n  meta: ConfirmedTransactionMeta,\n  keyMap: Map<string, number>,\n  user: PublicKey,\n): number {\n  const accountKeyIndex = keyMap.get(user.toBase58());\n  if (accountKeyIndex !== undefined) {\n    return Math.abs(meta.postBalances[accountKeyIndex] - meta.preBalances[accountKeyIndex]);\n  }\n\n  return 0;\n}\n\n// Event might be missing from log truncated\nexport function extractTokenBalanceChangesFromEvents(\n  events: Event[],\n  inputMint: PublicKey,\n  outputMint: PublicKey,\n): [number, number] {\n  let inputAmount = new BN(0);\n  let outputAmount = new BN(0);\n\n  events.forEach((event: any) => {\n    if (event.data.inputMint.equals(inputMint)) {\n      inputAmount = inputAmount.add(event.data.inputAmount);\n    }\n    if (event.data.outputMint.equals(outputMint)) {\n      outputAmount = outputAmount.add(event.data.outputAmount);\n    }\n  });\n\n  return [Number(inputAmount.toString()), Number(outputAmount.toString())];\n}\n\nexport function getTokenBalanceChangesFromTransactionResponse({\n  txid,\n  user,\n  inputMint,\n  outputMint,\n  transactionResponse,\n  hasWrappedSOL,\n}: {\n  txid: TransactionSignature;\n  user: PublicKey;\n  inputMint: PublicKey;\n  outputMint: PublicKey;\n  transactionResponse: VersionedTransactionResponse | null;\n  hasWrappedSOL: boolean;\n}): [number, number] {\n  let sourceTokenBalanceChange: number | undefined;\n  let destinationTokenBalanceChange: number | undefined;\n  let events: Event[] = [];\n  let swapEvents: Event[] = [];\n\n  if (transactionResponse && transactionResponse.meta) {\n    let { meta, transaction } = transactionResponse;\n    events = getEvents(transactionResponse);\n    swapEvents = events.filter((event) => event.name === 'SwapEvent');\n    [sourceTokenBalanceChange, destinationTokenBalanceChange] = extractTokenBalanceChangesFromEvents(\n      swapEvents,\n      inputMint,\n      outputMint,\n    );\n\n    // If we don't get the balance changes from the events, we extract them the old fashion way.\n    if (!sourceTokenBalanceChange || !destinationTokenBalanceChange) {\n      const keyMap = getKeyMap(transaction.message, meta.loadedAddresses);\n\n      sourceTokenBalanceChange =\n        inputMint.equals(WRAPPED_SOL_MINT) && !hasWrappedSOL\n          ? extractSOLChangeFromTransaction(meta, keyMap, user)\n          : extractTokenBalanceChangeFromTransaction(meta, user, inputMint);\n      destinationTokenBalanceChange =\n        outputMint.equals(WRAPPED_SOL_MINT) && !hasWrappedSOL\n          ? extractSOLChangeFromTransaction(meta, keyMap, user)\n          : extractTokenBalanceChangeFromTransaction(meta, user, outputMint);\n    }\n  }\n\n  if (!(sourceTokenBalanceChange && destinationTokenBalanceChange)) {\n    throw new TransactionError(\n      'Cannot find source or destination token account balance change',\n      txid,\n      JUPITER_COMMON_ERRORS['BalancesNotExtractedProperly'].code,\n      [JUPITER_PROGRAM_V6_ID.toBase58()],\n    );\n  }\n\n  return [sourceTokenBalanceChange, destinationTokenBalanceChange];\n}\n\nexport function getUnixTs() {\n  return new Date().getTime();\n}\n\nexport function getSignature(transaction: Transaction | VersionedTransaction): string {\n  const signature = 'signature' in transaction ? transaction.signature : transaction.signatures[0];\n  if (!signature) {\n    throw new Error('Missing transaction signature, the transaction was not signed by the fee payer');\n  }\n  return bs58.encode(signature);\n}\n\nexport function getTransactionBlockhash(transaction: Transaction | VersionedTransaction): Blockhash {\n  if ('version' in transaction) {\n    return transaction.message.recentBlockhash;\n  } else {\n    if (!transaction.recentBlockhash) throw new Error('Missing blockhash');\n    return transaction.recentBlockhash;\n  }\n}\n\nexport function signTransaction(\n  transaction: Transaction | VersionedTransaction,\n  signers: Signer[],\n): TransactionSignature {\n  if ('version' in transaction) {\n    transaction.sign(signers);\n  } else {\n    transaction.sign(...signers);\n  }\n  return getSignature(transaction);\n}\n","import { Cluster, PublicKey } from '@solana/web3.js';\nimport { IDL_V6 } from './idl/jupiter6';\n\nexport const JUPITER_PROGRAM_V4_ID = new PublicKey('JUP4Fb2cqiRUcaTHdrPC8h2gNsA2ETXiPDD33WcGuJB');\nexport const JUPITER_PROGRAM_V6_ID = new PublicKey('JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4');\n\nexport const JUPITER_PROGRAM_ID_DEVNET = new PublicKey('BHzPYvC5J38kUeqkcUXwfraLWJ68cmGWm43ksF3i8bmk');\nexport const JUPITER_PROGRAM_ID_STAGING = new PublicKey('JUPSjgjMFjU4453KMgxhqVmzep6W352bQpE4RsNqXAx');\n\nexport const MAINNET_SERUM_DEX_PROGRAM = new PublicKey('9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin');\n\nexport const DEVNET_SERUM_DEX_PROGRAM = new PublicKey('DESVgJVGajEgKGXhb6XmqDHGz3VjdgP7rEVESBgxmroY');\n\nexport const RAYDIUM_AMM_V4_PROGRAM_ID = new PublicKey('675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8');\n\nexport const ALDRIN_SWAP_PROGRAM_ID = new PublicKey('AMM55ShdkoGRB5jVYPjWziwk8m5MpwyDgsMWHaMSQWH6');\n\n// https://github.com/aldrin-exchange/aldrin-sdk/blob/f93fe3f2d847d79d8ddff507d8d4f62fd803421b/src/v2.json\nexport const ALDRIN_SWAP_V2_PROGRAM_ID = new PublicKey('CURVGoZn8zycx6FXwwevgBTB2gVvdbGTEpvMJDbgs2t4');\n\nexport const SABER_ADD_DECIMALS_PROGRAM_ID = new PublicKey('DecZY86MU5Gj7kppfUCEmd4LbXXuyZH1yHaP2NTqdiZB');\n\nexport const CROPPER_PROGRAM_ID = new PublicKey('CTMAxxk34HjKWxQ3QLZK1HpaLXmBveao3ESePXbiyfzh');\n\nexport const SENCHA_PROGRAM_ID = new PublicKey('SCHAtsf8mbjyjiv4LkhLKutTf6JnZAbdJKFkXQNMFHZ');\n\nexport const LIFINITY_PROGRAM_ID = new PublicKey('EewxydAPCCVuNEyrVN68PuSYdQ7wKn27V9Gjeoi8dy3S');\n\nexport const CREMA_PROGRAM_ID = new PublicKey('CLMM9tUoggJu2wagPkkqs9eFG4BWhVBZWkP1qv3Sp7tR');\n// Crema requires a separate partner account controlled by them\nexport const CREMA_PARTNER_ACCOUNT = new PublicKey('FxYoB1VAx8TfLCwvmworJy16VH89v992qznUvBX5aR8K');\n\nexport const MERCURIAL_SWAP_PROGRAM_ID = new PublicKey('MERLuDFBMmsHnsBPZw2sDQZHvXFMwp8EdjudcU2HKky');\n\nexport const WHIRLPOOL_PROGRAM_ID = new PublicKey('whirLbMiicVdio4qvUfM5KAg6Ct8VwpYzGff3uctyCc');\n\nexport const INVARIANT_PROGRAM_ID = new PublicKey('HyaB3W9q6XdA5xwpU4XnSZV94htfmbmqJXZcEbRaJutt');\nexport const INVARIANT_STATE_ID = new PublicKey('8NsPwRFYqob3FzYvHYTjFK6WVFJADFN8Hn7yNQKcVNW1');\nexport const INVARIANT_PROGRAM_AUTHORITY_ID = new PublicKey('J4uBbeoWpZE8fH58PM1Fp9n9K6f1aThyeVCyRdJbaXqt');\n\nexport const CYKURA_PROGRAM_ID = new PublicKey('cysPXAjehMpVKUapzbMCCnpFxUFFryEWEaLgnb9NrR8');\n\nexport const CYKURA_FACTORY_STATE_ADDRESS = new PublicKey('DBsMwKfeoUHhxMi9x6wd2AsT12UwUCssjNbUzu1aKgqj');\n\nexport const MARINADE_PROGRAM_ID = new PublicKey('MarBmsSgKXdrN1egZf5sqe1TMai9K1rChYNDJgjq7aD');\n\nexport const STEPN_PROGRAM_ID = new PublicKey('Dooar9JkhdZ7J3LHN3A7YCuoGRUggXhQaG4kijfLGU2j');\nexport const ORCA_V1_PROGRAM_ID = new PublicKey('DjVE6JNiYqPL2QXyCUUh8rNjHrbz9hXHNYt99MQ59qw1');\nexport const ORCA_V2_PROGRAM_ID = new PublicKey('9W959DqEETiGZocYWCQPaJ6sBmUzgfxXfqGeTEdp3aQP');\nexport const STEP_TOKEN_SWAP_PROGRAM_ID = new PublicKey('SSwpMgqNDsyV7mAgN9ady4bDVu5ySjmmXejXvy2vLt1');\n\nexport const PENGUIN_PROGRAM_ID = new PublicKey('PSwapMdSai8tjrEXcxFeQth87xC4rRsa4VA5mhGhXkP');\nexport const SAROS_PROGRAM_ID = new PublicKey('SSwapUtytfBdBn1b9NUGG6foMVPtcWgpRU32HToDUZr');\n\nexport const METEORA_PROGRAM_ID = new PublicKey('Eo7WjKq67rjJQSZxS6z3YkapzY3eMj6Xy8X5EQVn5UaB');\nexport const METEORA_VAULT_PROGRAM_ID = new PublicKey('24Uqj9JCLxUeoC3hGfh5W3s9FM9uCHDS2SG3LYwBpyTi');\n\nexport const DELTA_FI_PROGRAM_ID = new PublicKey('GNExJhNUhc9LN2DauuQAUJnXoy6DJ6zey3t9kT9A2PF3');\nexport const DELTA_FI_USER_ID = new PublicKey('ziSPuDShwunW4xNrCfTnSHTPVT6FZDREtdofpf1BJwe');\n\nexport const GOOSE_FX_PROGRAM_ID = new PublicKey('7WduLbRfYhTJktjLw5FDEyrqoEv61aTTCuGAetgLjzN5');\nexport const GOOSE_FX_CONTROLLER_ID = new PublicKey('8CxKnuJeoeQXFwiG6XiGY2akBjvJA5k3bE52BfnuEmNQ');\n\nexport const BALANSOL_PROGRAM_ID = new PublicKey('D3BBjqUdCYuP18fNvvMbPAZ8DpcRi4io2EsYHQawJDag');\n\nexport const DRADEX_PROGRAM_ID = new PublicKey('dp2waEWSBy5yKmq65ergoU3G6qRLmqa6K7We4rZSKph');\nexport const DRADEX_LOGGER_PROGRAM_ID = new PublicKey('1gE3LGQze8DQ3KD2C4ZUCmRX5g4njhY5yLfYmnmcvJR');\nexport const DRADEX_MASTER_ID = new PublicKey('76ygWLcvJLR6nSzRUpiQqqtX4Pabkq4vpaTxwr3mDcXA');\n\nexport const LIFINITY_V2_PROGRAM_ID = new PublicKey('2wT8Yq49kHgDzXuPxZSaeLaH1qbmGXtEyPy64bL7aD3c');\n\n// This is DexUser for Dradex with `BUX7s2ef2htTGb2KKoPHWkmzxPj4nTWMWRgs5CSbQxf9` as owner.\nexport const DRADEX_DEX_USER = new PublicKey('571oqNkJauZ2tccLwf8CUB56hpLPZkop9X1Px4DE9rnQ');\n\nexport const RAYDIUM_CLMM_PROGRAM_ID = new PublicKey('CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK');\nexport const OPENBOOK_PROGRAM_ID = new PublicKey('srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX');\n\nexport const MARCO_POLO_PROGRAM_ID = new PublicKey('9tKE7Mbmj4mxDjWatikzGAtkoWosiiZX9y6J4Hfm2R8H');\nexport const MARCO_POLO_STATE_ID = new PublicKey('BE5YRQ6N6LCw7UL3JwzVp317EWa4mzJY6JKDaudcXu7A');\nexport const MARCO_POLO_PROGRAM_AUTHORITY = new PublicKey('JM78XNzeQRmZXDAP4DSq88ZdErbuSXSLE6fkRsVDKSu');\n\nexport const BONK_SWAP_PROGRAM_ID = new PublicKey('BSwp6bEBihVLdqJRKGgzjcGLHkcTuzmSo1TQkHepzH8p');\nexport const BONK_SWAP_STATE_ID = new PublicKey('2QWN6WjrJ3RAk51ecxLxaLPfFCYLAnmWJwJ1oKA92CRD');\nexport const BONK_SWAP_PROGRAM_AUTHORITY = new PublicKey('8NyaPDJeC2eaBGpkRpZKnD9S448AZGgjSvumFe92DRK2');\n\nexport const PHOENIX_PROGRAM_ID = new PublicKey('PhoeNiXZ8ByJGLkxNfZRnkUfjvmuYqLR89jjFHGqdXY');\n\nexport const SYMMETRY_PROGRAM_ID = new PublicKey('2KehYt3KsEQR53jYcxjbQp2d2kCp4AkuQW68atufRwSr');\n\nexport const WRAPPED_SOL_MINT = new PublicKey('So11111111111111111111111111111111111111112');\n\nexport const MARKETS_URL: Record<Cluster, string> = {\n  devnet: 'https://jupiter-devnet.zhen8558.workers.dev/markets?v=3', // 'https://api.jup.ag/api/markets/cache/devnet',\n  'mainnet-beta': 'https://cache.jup.ag/markets?v=3',\n  testnet: 'https://api.jup.ag/api/markets/cache/devnet',\n};\n\nexport const INDEXED_ROUTE_MAP_URL = 'https://cache.jup.ag/indexed-route-maps-v3';\n\nexport const TOKEN_LIST_URL: Record<Cluster & 'localnet', string> = {\n  devnet: 'https://api.jup.ag/api/tokens/devnet',\n  testnet: 'https://api.jup.ag/api/markets/devnet',\n  'mainnet-beta': 'https://cache.jup.ag/tokens',\n  localnet: 'https://cache.jup.ag/tokens',\n};\n\nexport const LAMPORTS_PER_SIGNATURE = 5000;\n\n// The default wallet collecting referrer fees\nexport const JUPITER_FEE_OWNER = new PublicKey('BUX7s2ef2htTGb2KKoPHWkmzxPj4nTWMWRgs5CSbQxf9');\n\nexport interface ErrorDetails {\n  code: number;\n  name: string;\n  msg: string;\n}\n\ntype COMMON_ERRORS = keyof typeof JUPITER_COMMON_ERRORS;\n\ntype JUPITER_V6_ERROR_TYPES = COMMON_ERRORS | (typeof IDL_V6.errors)[number]['name'];\n\nexport const JUPITER_COMMON_ERRORS = {\n  AlreadyInUse: {\n    code: 0,\n    name: 'AlreadyInUsed',\n    msg: 'Account already In Used',\n  },\n  InsufficientSOL: {\n    code: 1,\n    name: 'InsufficientSOL',\n    msg: 'Insufficient SOL',\n  },\n  TransactionNotConfirmed: {\n    code: 7000, // a code that is not in the list of errors\n    name: 'TransactionNotConfirmed',\n    msg: 'Transaction was not confirmed',\n  },\n  BalancesNotExtractedProperly: {\n    code: 7001, // a code that is not in the list of errors\n    name: 'BalancesNotExtractedProperly',\n    msg: 'Balances cannot be extracted properly',\n  },\n  TooManyAccountLocked: {\n    code: 7002,\n    name: 'TooManyAccountsLocked',\n    msg: 'Transaction not proccessed due to too many accounts locked',\n  },\n  FrozenAccount: {\n    code: 17,\n    name: 'FrozenAccount',\n    msg: 'The token account is frozen',\n  },\n};\n\nexport const JUPITER_V6_ERRORS: Record<JUPITER_V6_ERROR_TYPES, ErrorDetails> = Object.freeze({\n  ...JUPITER_COMMON_ERRORS,\n  ...IDL_V6.errors.reduce((accErrors, error) => {\n    return { ...accErrors, [error.name]: error };\n  }, {} as Record<(typeof IDL_V6.errors)[number]['name'], ErrorDetails>),\n});\n","export type Jupiter = {\n  version: '0.1.0';\n  name: 'jupiter';\n  instructions: [\n    {\n      name: 'route';\n      docs: ['route_plan Topologically sorted trade DAG'];\n      accounts: [\n        {\n          name: 'tokenProgram';\n          isMut: false;\n          isSigner: false;\n        },\n        {\n          name: 'userTransferAuthority';\n          isMut: false;\n          isSigner: true;\n        },\n        {\n          name: 'userSourceTokenAccount';\n          isMut: false;\n          isSigner: false;\n        },\n        {\n          name: 'userDestinationTokenAccount';\n          isMut: false;\n          isSigner: false;\n        },\n        {\n          name: 'destinationTokenAccount';\n          isMut: false;\n          isSigner: false;\n          isOptional: true;\n        },\n        {\n          name: 'destinationMint';\n          isMut: false;\n          isSigner: false;\n        },\n        {\n          name: 'platformFeeAccount';\n          isMut: true;\n          isSigner: false;\n          isOptional: true;\n        },\n        {\n          name: 'eventAuthority';\n          isMut: false;\n          isSigner: false;\n        },\n        {\n          name: 'program';\n          isMut: false;\n          isSigner: false;\n        },\n      ];\n      args: [\n        {\n          name: 'routePlan';\n          type: {\n            vec: {\n              defined: 'RoutePlanStep';\n            };\n          };\n        },\n        {\n          name: 'inAmount';\n          type: 'u64';\n        },\n        {\n          name: 'quotedOutAmount';\n          type: 'u64';\n        },\n        {\n          name: 'slippageBps';\n          type: 'u16';\n        },\n        {\n          name: 'platformFeeBps';\n          type: 'u8';\n        },\n      ];\n      returns: 'u64';\n    },\n    {\n      name: 'routeWithTokenLedger';\n      accounts: [\n        {\n          name: 'tokenProgram';\n          isMut: false;\n          isSigner: false;\n        },\n        {\n          name: 'userTransferAuthority';\n          isMut: false;\n          isSigner: true;\n        },\n        {\n          name: 'userSourceTokenAccount';\n          isMut: false;\n          isSigner: false;\n        },\n        {\n          name: 'userDestinationTokenAccount';\n          isMut: false;\n          isSigner: false;\n        },\n        {\n          name: 'destinationTokenAccount';\n          isMut: false;\n          isSigner: false;\n          isOptional: true;\n        },\n        {\n          name: 'destinationMint';\n          isMut: false;\n          isSigner: false;\n        },\n        {\n          name: 'platformFeeAccount';\n          isMut: true;\n          isSigner: false;\n          isOptional: true;\n        },\n        {\n          name: 'tokenLedger';\n          isMut: false;\n          isSigner: false;\n        },\n        {\n          name: 'eventAuthority';\n          isMut: false;\n          isSigner: false;\n        },\n        {\n          name: 'program';\n          isMut: false;\n          isSigner: false;\n        },\n      ];\n      args: [\n        {\n          name: 'routePlan';\n          type: {\n            vec: {\n              defined: 'RoutePlanStep';\n            };\n          };\n        },\n        {\n          name: 'quotedOutAmount';\n          type: 'u64';\n        },\n        {\n          name: 'slippageBps';\n          type: 'u16';\n        },\n        {\n          name: 'platformFeeBps';\n          type: 'u8';\n        },\n      ];\n      returns: 'u64';\n    },\n    {\n      name: 'sharedAccountsRoute';\n      docs: ['Route by using program owned token accounts and open orders accounts.'];\n      accounts: [\n        {\n          name: 'tokenProgram';\n          isMut: false;\n          isSigner: false;\n        },\n        {\n          name: 'programAuthority';\n          isMut: false;\n          isSigner: false;\n        },\n        {\n          name: 'userTransferAuthority';\n          isMut: false;\n          isSigner: true;\n        },\n        {\n          name: 'sourceTokenAccount';\n          isMut: true;\n          isSigner: false;\n        },\n        {\n          name: 'programSourceTokenAccount';\n          isMut: true;\n          isSigner: false;\n        },\n        {\n          name: 'programDestinationTokenAccount';\n          isMut: true;\n          isSigner: false;\n        },\n        {\n          name: 'destinationTokenAccount';\n          isMut: true;\n          isSigner: false;\n        },\n        {\n          name: 'sourceMint';\n          isMut: false;\n          isSigner: false;\n        },\n        {\n          name: 'destinationMint';\n          isMut: false;\n          isSigner: false;\n        },\n        {\n          name: 'platformFeeAccount';\n          isMut: true;\n          isSigner: false;\n          isOptional: true;\n        },\n        {\n          name: 'token2022Program';\n          isMut: false;\n          isSigner: false;\n          isOptional: true;\n        },\n        {\n          name: 'eventAuthority';\n          isMut: false;\n          isSigner: false;\n        },\n        {\n          name: 'program';\n          isMut: false;\n          isSigner: false;\n        },\n      ];\n      args: [\n        {\n          name: 'id';\n          type: 'u8';\n        },\n        {\n          name: 'routePlan';\n          type: {\n            vec: {\n              defined: 'RoutePlanStep';\n            };\n          };\n        },\n        {\n          name: 'inAmount';\n          type: 'u64';\n        },\n        {\n          name: 'quotedOutAmount';\n          type: 'u64';\n        },\n        {\n          name: 'slippageBps';\n          type: 'u16';\n        },\n        {\n          name: 'platformFeeBps';\n          type: 'u8';\n        },\n      ];\n      returns: 'u64';\n    },\n    {\n      name: 'sharedAccountsRouteWithTokenLedger';\n      accounts: [\n        {\n          name: 'tokenProgram';\n          isMut: false;\n          isSigner: false;\n        },\n        {\n          name: 'programAuthority';\n          isMut: false;\n          isSigner: false;\n        },\n        {\n          name: 'userTransferAuthority';\n          isMut: false;\n          isSigner: true;\n        },\n        {\n          name: 'sourceTokenAccount';\n          isMut: true;\n          isSigner: false;\n        },\n        {\n          name: 'programSourceTokenAccount';\n          isMut: true;\n          isSigner: false;\n        },\n        {\n          name: 'programDestinationTokenAccount';\n          isMut: true;\n          isSigner: false;\n        },\n        {\n          name: 'destinationTokenAccount';\n          isMut: true;\n          isSigner: false;\n        },\n        {\n          name: 'sourceMint';\n          isMut: false;\n          isSigner: false;\n        },\n        {\n          name: 'destinationMint';\n          isMut: false;\n          isSigner: false;\n        },\n        {\n          name: 'platformFeeAccount';\n          isMut: true;\n          isSigner: false;\n          isOptional: true;\n        },\n        {\n          name: 'token2022Program';\n          isMut: false;\n          isSigner: false;\n          isOptional: true;\n        },\n        {\n          name: 'tokenLedger';\n          isMut: false;\n          isSigner: false;\n        },\n        {\n          name: 'eventAuthority';\n          isMut: false;\n          isSigner: false;\n        },\n        {\n          name: 'program';\n          isMut: false;\n          isSigner: false;\n        },\n      ];\n      args: [\n        {\n          name: 'id';\n          type: 'u8';\n        },\n        {\n          name: 'routePlan';\n          type: {\n            vec: {\n              defined: 'RoutePlanStep';\n            };\n          };\n        },\n        {\n          name: 'quotedOutAmount';\n          type: 'u64';\n        },\n        {\n          name: 'slippageBps';\n          type: 'u16';\n        },\n        {\n          name: 'platformFeeBps';\n          type: 'u8';\n        },\n      ];\n      returns: 'u64';\n    },\n    {\n      name: 'exactOutRoute';\n      accounts: [\n        {\n          name: 'tokenProgram';\n          isMut: false;\n          isSigner: false;\n        },\n        {\n          name: 'userTransferAuthority';\n          isMut: false;\n          isSigner: true;\n        },\n        {\n          name: 'userSourceTokenAccount';\n          isMut: false;\n          isSigner: false;\n        },\n        {\n          name: 'userDestinationTokenAccount';\n          isMut: false;\n          isSigner: false;\n        },\n        {\n          name: 'destinationTokenAccount';\n          isMut: false;\n          isSigner: false;\n          isOptional: true;\n        },\n        {\n          name: 'sourceMint';\n          isMut: false;\n          isSigner: false;\n        },\n        {\n          name: 'destinationMint';\n          isMut: false;\n          isSigner: false;\n        },\n        {\n          name: 'platformFeeAccount';\n          isMut: true;\n          isSigner: false;\n          isOptional: true;\n        },\n        {\n          name: 'token2022Program';\n          isMut: false;\n          isSigner: false;\n          isOptional: true;\n        },\n        {\n          name: 'eventAuthority';\n          isMut: false;\n          isSigner: false;\n        },\n        {\n          name: 'program';\n          isMut: false;\n          isSigner: false;\n        },\n      ];\n      args: [\n        {\n          name: 'routePlan';\n          type: {\n            vec: {\n              defined: 'RoutePlanStep';\n            };\n          };\n        },\n        {\n          name: 'outAmount';\n          type: 'u64';\n        },\n        {\n          name: 'quotedInAmount';\n          type: 'u64';\n        },\n        {\n          name: 'slippageBps';\n          type: 'u16';\n        },\n        {\n          name: 'platformFeeBps';\n          type: 'u8';\n        },\n      ];\n      returns: 'u64';\n    },\n    {\n      name: 'sharedAccountsExactOutRoute';\n      docs: ['Route by using program owned token accounts and open orders accounts.'];\n      accounts: [\n        {\n          name: 'tokenProgram';\n          isMut: false;\n          isSigner: false;\n        },\n        {\n          name: 'programAuthority';\n          isMut: false;\n          isSigner: false;\n        },\n        {\n          name: 'userTransferAuthority';\n          isMut: false;\n          isSigner: true;\n        },\n        {\n          name: 'sourceTokenAccount';\n          isMut: true;\n          isSigner: false;\n        },\n        {\n          name: 'programSourceTokenAccount';\n          isMut: true;\n          isSigner: false;\n        },\n        {\n          name: 'programDestinationTokenAccount';\n          isMut: true;\n          isSigner: false;\n        },\n        {\n          name: 'destinationTokenAccount';\n          isMut: true;\n          isSigner: false;\n        },\n        {\n          name: 'sourceMint';\n          isMut: false;\n          isSigner: false;\n        },\n        {\n          name: 'destinationMint';\n          isMut: false;\n          isSigner: false;\n        },\n        {\n          name: 'platformFeeAccount';\n          isMut: true;\n          isSigner: false;\n          isOptional: true;\n        },\n        {\n          name: 'token2022Program';\n          isMut: false;\n          isSigner: false;\n          isOptional: true;\n        },\n        {\n          name: 'eventAuthority';\n          isMut: false;\n          isSigner: false;\n        },\n        {\n          name: 'program';\n          isMut: false;\n          isSigner: false;\n        },\n      ];\n      args: [\n        {\n          name: 'id';\n          type: 'u8';\n        },\n        {\n          name: 'routePlan';\n          type: {\n            vec: {\n              defined: 'RoutePlanStep';\n            };\n          };\n        },\n        {\n          name: 'outAmount';\n          type: 'u64';\n        },\n        {\n          name: 'quotedInAmount';\n          type: 'u64';\n        },\n        {\n          name: 'slippageBps';\n          type: 'u16';\n        },\n        {\n          name: 'platformFeeBps';\n          type: 'u8';\n        },\n      ];\n      returns: 'u64';\n    },\n    {\n      name: 'setTokenLedger';\n      accounts: [\n        {\n          name: 'tokenLedger';\n          isMut: true;\n          isSigner: false;\n        },\n        {\n          name: 'tokenAccount';\n          isMut: false;\n          isSigner: false;\n        },\n      ];\n      args: [];\n    },\n    {\n      name: 'createOpenOrders';\n      accounts: [\n        {\n          name: 'openOrders';\n          isMut: true;\n          isSigner: false;\n        },\n        {\n          name: 'payer';\n          isMut: true;\n          isSigner: true;\n        },\n        {\n          name: 'dexProgram';\n          isMut: false;\n          isSigner: false;\n        },\n        {\n          name: 'systemProgram';\n          isMut: false;\n          isSigner: false;\n        },\n        {\n          name: 'rent';\n          isMut: false;\n          isSigner: false;\n        },\n        {\n          name: 'market';\n          isMut: false;\n          isSigner: false;\n        },\n      ];\n      args: [];\n    },\n    {\n      name: 'createProgramOpenOrders';\n      accounts: [\n        {\n          name: 'openOrders';\n          isMut: true;\n          isSigner: false;\n        },\n        {\n          name: 'payer';\n          isMut: true;\n          isSigner: true;\n        },\n        {\n          name: 'programAuthority';\n          isMut: false;\n          isSigner: false;\n        },\n        {\n          name: 'dexProgram';\n          isMut: false;\n          isSigner: false;\n        },\n        {\n          name: 'systemProgram';\n          isMut: false;\n          isSigner: false;\n        },\n        {\n          name: 'rent';\n          isMut: false;\n          isSigner: false;\n        },\n        {\n          name: 'market';\n          isMut: false;\n          isSigner: false;\n        },\n      ];\n      args: [\n        {\n          name: 'id';\n          type: 'u8';\n        },\n      ];\n    },\n    {\n      name: 'claim';\n      accounts: [\n        {\n          name: 'wallet';\n          isMut: true;\n          isSigner: false;\n        },\n        {\n          name: 'programAuthority';\n          isMut: true;\n          isSigner: false;\n        },\n        {\n          name: 'systemProgram';\n          isMut: false;\n          isSigner: false;\n        },\n      ];\n      args: [\n        {\n          name: 'id';\n          type: 'u8';\n        },\n      ];\n      returns: 'u64';\n    },\n    {\n      name: 'claimToken';\n      accounts: [\n        {\n          name: 'payer';\n          isMut: true;\n          isSigner: true;\n        },\n        {\n          name: 'wallet';\n          isMut: false;\n          isSigner: false;\n        },\n        {\n          name: 'programAuthority';\n          isMut: false;\n          isSigner: false;\n        },\n        {\n          name: 'programTokenAccount';\n          isMut: true;\n          isSigner: false;\n        },\n        {\n          name: 'destinationTokenAccount';\n          isMut: true;\n          isSigner: false;\n        },\n        {\n          name: 'mint';\n          isMut: false;\n          isSigner: false;\n        },\n        {\n          name: 'associatedTokenTokenProgram';\n          isMut: false;\n          isSigner: false;\n        },\n        {\n          name: 'associatedTokenProgram';\n          isMut: false;\n          isSigner: false;\n        },\n        {\n          name: 'systemProgram';\n          isMut: false;\n          isSigner: false;\n        },\n      ];\n      args: [\n        {\n          name: 'id';\n          type: 'u8';\n        },\n      ];\n      returns: 'u64';\n    },\n    {\n      name: 'createTokenLedger';\n      accounts: [\n        {\n          name: 'tokenLedger';\n          isMut: true;\n          isSigner: true;\n        },\n        {\n          name: 'payer';\n          isMut: true;\n          isSigner: true;\n        },\n        {\n          name: 'systemProgram';\n          isMut: false;\n          isSigner: false;\n        },\n      ];\n      args: [];\n    },\n  ];\n  accounts: [\n    {\n      name: 'tokenLedger';\n      type: {\n        kind: 'struct';\n        fields: [\n          {\n            name: 'tokenAccount';\n            type: 'publicKey';\n          },\n          {\n            name: 'amount';\n            type: 'u64';\n          },\n        ];\n      };\n    },\n  ];\n  types: [\n    {\n      name: 'AmountWithSlippage';\n      type: {\n        kind: 'struct';\n        fields: [\n          {\n            name: 'amount';\n            type: 'u64';\n          },\n          {\n            name: 'slippageBps';\n            type: 'u16';\n          },\n        ];\n      };\n    },\n    {\n      name: 'RoutePlanStep';\n      type: {\n        kind: 'struct';\n        fields: [\n          {\n            name: 'swap';\n            type: {\n              defined: 'Swap';\n            };\n          },\n          {\n            name: 'percent';\n            type: 'u8';\n          },\n          {\n            name: 'inputIndex';\n            type: 'u8';\n          },\n          {\n            name: 'outputIndex';\n            type: 'u8';\n          },\n        ];\n      };\n    },\n    {\n      name: 'Side';\n      type: {\n        kind: 'enum';\n        variants: [\n          {\n            name: 'Bid';\n          },\n          {\n            name: 'Ask';\n          },\n        ];\n      };\n    },\n    {\n      name: 'Swap';\n      type: {\n        kind: 'enum';\n        variants: [\n          {\n            name: 'Saber';\n          },\n          {\n            name: 'SaberAddDecimalsDeposit';\n          },\n          {\n            name: 'SaberAddDecimalsWithdraw';\n          },\n          {\n            name: 'TokenSwap';\n          },\n          {\n            name: 'Sencha';\n          },\n          {\n            name: 'Step';\n          },\n          {\n            name: 'Cropper';\n          },\n          {\n            name: 'Raydium';\n          },\n          {\n            name: 'Crema';\n            fields: [\n              {\n                name: 'aToB';\n                type: 'bool';\n              },\n            ];\n          },\n          {\n            name: 'Lifinity';\n          },\n          {\n            name: 'Mercurial';\n          },\n          {\n            name: 'Cykura';\n          },\n          {\n            name: 'Serum';\n            fields: [\n              {\n                name: 'side';\n                type: {\n                  defined: 'Side';\n                };\n              },\n            ];\n          },\n          {\n            name: 'MarinadeDeposit';\n          },\n          {\n            name: 'MarinadeUnstake';\n          },\n          {\n            name: 'Aldrin';\n            fields: [\n              {\n                name: 'side';\n                type: {\n                  defined: 'Side';\n                };\n              },\n            ];\n          },\n          {\n            name: 'AldrinV2';\n            fields: [\n              {\n                name: 'side';\n                type: {\n                  defined: 'Side';\n                };\n              },\n            ];\n          },\n          {\n            name: 'Whirlpool';\n            fields: [\n              {\n                name: 'aToB';\n                type: 'bool';\n              },\n            ];\n          },\n          {\n            name: 'Invariant';\n            fields: [\n              {\n                name: 'xToY';\n                type: 'bool';\n              },\n            ];\n          },\n          {\n            name: 'Meteora';\n          },\n          {\n            name: 'GooseFX';\n          },\n          {\n            name: 'DeltaFi';\n            fields: [\n              {\n                name: 'stable';\n                type: 'bool';\n              },\n            ];\n          },\n          {\n            name: 'Balansol';\n          },\n          {\n            name: 'MarcoPolo';\n            fields: [\n              {\n                name: 'xToY';\n                type: 'bool';\n              },\n            ];\n          },\n          {\n            name: 'Dradex';\n            fields: [\n              {\n                name: 'side';\n                type: {\n                  defined: 'Side';\n                };\n              },\n            ];\n          },\n          {\n            name: 'LifinityV2';\n          },\n          {\n            name: 'RaydiumClmm';\n          },\n          {\n            name: 'Openbook';\n            fields: [\n              {\n                name: 'side';\n                type: {\n                  defined: 'Side';\n                };\n              },\n            ];\n          },\n          {\n            name: 'Phoenix';\n            fields: [\n              {\n                name: 'side';\n                type: {\n                  defined: 'Side';\n                };\n              },\n            ];\n          },\n          {\n            name: 'Symmetry';\n            fields: [\n              {\n                name: 'fromTokenId';\n                type: 'u64';\n              },\n              {\n                name: 'toTokenId';\n                type: 'u64';\n              },\n            ];\n          },\n          {\n            name: 'TokenSwapV2';\n          },\n          {\n            name: 'HeliumTreasuryManagementRedeemV0';\n          },\n          {\n            name: 'StakeDexStakeWrappedSol';\n          },\n          {\n            name: 'StakeDexSwapViaStake';\n            fields: [\n              {\n                name: 'bridgeStakeSeed';\n                type: 'u32';\n              },\n            ];\n          },\n          {\n            name: 'GooseFXV2';\n          },\n          {\n            name: 'Perps';\n          },\n          {\n            name: 'PerpsAddLiquidity';\n          },\n          {\n            name: 'PerpsRemoveLiquidity';\n          },\n          {\n            name: 'MeteoraDlmm';\n          },\n          {\n            name: 'OpenBookV2';\n            fields: [\n              {\n                name: 'side';\n                type: {\n                  defined: 'Side';\n                };\n              },\n            ];\n          },\n          {\n            name: 'RaydiumClmmV2';\n          },\n          {\n            name: 'StakeDexPrefundWithdrawStakeAndDepositStake';\n            fields: [\n              {\n                name: 'bridgeStakeSeed';\n                type: 'u32';\n              },\n            ];\n          },\n          {\n            name: 'Clone';\n            fields: [\n              {\n                name: 'poolIndex';\n                type: 'u8';\n              },\n              {\n                name: 'quantityIsInput';\n                type: 'bool';\n              },\n              {\n                name: 'quantityIsCollateral';\n                type: 'bool';\n              },\n            ];\n          },\n          {\n            name: 'SanctumS';\n            fields: [\n              {\n                name: 'srcLstValueCalcAccs';\n                type: 'u8';\n              },\n              {\n                name: 'dstLstValueCalcAccs';\n                type: 'u8';\n              },\n              {\n                name: 'srcLstIndex';\n                type: 'u32';\n              },\n              {\n                name: 'dstLstIndex';\n                type: 'u32';\n              },\n            ];\n          },\n          {\n            name: 'SanctumSAddLiquidity';\n            fields: [\n              {\n                name: 'lstValueCalcAccs';\n                type: 'u8';\n              },\n              {\n                name: 'lstIndex';\n                type: 'u32';\n              },\n            ];\n          },\n          {\n            name: 'SanctumSRemoveLiquidity';\n            fields: [\n              {\n                name: 'lstValueCalcAccs';\n                type: 'u8';\n              },\n              {\n                name: 'lstIndex';\n                type: 'u32';\n              },\n            ];\n          },\n          {\n            name: 'RaydiumCP';\n          },\n          {\n            name: 'WhirlpoolSwapV2';\n            fields: [\n              {\n                name: 'aToB';\n                type: 'bool';\n              },\n              {\n                name: 'remainingAccountsInfo';\n                type: {\n                  option: {\n                    defined: 'RemainingAccountsInfo';\n                  };\n                };\n              },\n            ];\n          },\n          {\n            name: 'OneIntro';\n          },\n        ];\n      };\n    },\n    {\n      name: 'RemainingAccountsSlice';\n      type: {\n        kind: 'struct';\n        fields: [\n          {\n            name: 'accountsType';\n            type: {\n              defined: 'AccountsType';\n            };\n          },\n          {\n            name: 'length';\n            type: 'u8';\n          },\n        ];\n      };\n    },\n    {\n      name: 'RemainingAccountsInfo';\n      type: {\n        kind: 'struct';\n        fields: [\n          {\n            name: 'slices';\n            type: {\n              vec: {\n                defined: 'RemainingAccountsSlice';\n              };\n            };\n          },\n        ];\n      };\n    },\n    {\n      name: 'AccountsType';\n      type: {\n        kind: 'enum';\n        variants: [\n          {\n            name: 'TransferHookA';\n          },\n          {\n            name: 'TransferHookB';\n          },\n        ];\n      };\n    },\n  ];\n  events: [\n    {\n      name: 'SwapEvent';\n      fields: [\n        {\n          name: 'amm';\n          type: 'publicKey';\n          index: false;\n        },\n        {\n          name: 'inputMint';\n          type: 'publicKey';\n          index: false;\n        },\n        {\n          name: 'inputAmount';\n          type: 'u64';\n          index: false;\n        },\n        {\n          name: 'outputMint';\n          type: 'publicKey';\n          index: false;\n        },\n        {\n          name: 'outputAmount';\n          type: 'u64';\n          index: false;\n        },\n      ];\n    },\n    {\n      name: 'FeeEvent';\n      fields: [\n        {\n          name: 'account';\n          type: 'publicKey';\n          index: false;\n        },\n        {\n          name: 'mint';\n          type: 'publicKey';\n          index: false;\n        },\n        {\n          name: 'amount';\n          type: 'u64';\n          index: false;\n        },\n      ];\n    },\n  ];\n  errors: [\n    {\n      code: 6000;\n      name: 'EmptyRoute';\n      msg: 'Empty route';\n    },\n    {\n      code: 6001;\n      name: 'SlippageToleranceExceeded';\n      msg: 'Slippage tolerance exceeded';\n    },\n    {\n      code: 6002;\n      name: 'InvalidCalculation';\n      msg: 'Invalid calculation';\n    },\n    {\n      code: 6003;\n      name: 'MissingPlatformFeeAccount';\n      msg: 'Missing platform fee account';\n    },\n    {\n      code: 6004;\n      name: 'InvalidSlippage';\n      msg: 'Invalid slippage';\n    },\n    {\n      code: 6005;\n      name: 'NotEnoughPercent';\n      msg: 'Not enough percent to 100';\n    },\n    {\n      code: 6006;\n      name: 'InvalidInputIndex';\n      msg: 'Token input index is invalid';\n    },\n    {\n      code: 6007;\n      name: 'InvalidOutputIndex';\n      msg: 'Token output index is invalid';\n    },\n    {\n      code: 6008;\n      name: 'NotEnoughAccountKeys';\n      msg: 'Not Enough Account keys';\n    },\n    {\n      code: 6009;\n      name: 'NonZeroMinimumOutAmountNotSupported';\n      msg: 'Non zero minimum out amount not supported';\n    },\n    {\n      code: 6010;\n      name: 'InvalidRoutePlan';\n      msg: 'Invalid route plan';\n    },\n    {\n      code: 6011;\n      name: 'InvalidReferralAuthority';\n      msg: 'Invalid referral authority';\n    },\n    {\n      code: 6012;\n      name: 'LedgerTokenAccountDoesNotMatch';\n      msg: \"Token account doesn't match the ledger\";\n    },\n    {\n      code: 6013;\n      name: 'InvalidTokenLedger';\n      msg: 'Invalid token ledger';\n    },\n    {\n      code: 6014;\n      name: 'IncorrectTokenProgramID';\n      msg: 'Token program ID is invalid';\n    },\n    {\n      code: 6015;\n      name: 'TokenProgramNotProvided';\n      msg: 'Token program not provided';\n    },\n    {\n      code: 6016;\n      name: 'SwapNotSupported';\n      msg: 'Swap not supported';\n    },\n    {\n      code: 6017;\n      name: 'ExactOutAmountNotMatched';\n      msg: \"Exact out amount doesn't match\";\n    },\n    {\n      code: 6018;\n      name: 'SourceAndDestinationMintCannotBeTheSame';\n      msg: 'Source mint and destination mint cannot the same';\n    },\n  ];\n};\n\nexport const IDL_V6: Jupiter = {\n  version: '0.1.0',\n  name: 'jupiter',\n  instructions: [\n    {\n      name: 'route',\n      docs: ['route_plan Topologically sorted trade DAG'],\n      accounts: [\n        {\n          name: 'tokenProgram',\n          isMut: false,\n          isSigner: false,\n        },\n        {\n          name: 'userTransferAuthority',\n          isMut: false,\n          isSigner: true,\n        },\n        {\n          name: 'userSourceTokenAccount',\n          isMut: false,\n          isSigner: false,\n        },\n        {\n          name: 'userDestinationTokenAccount',\n          isMut: false,\n          isSigner: false,\n        },\n        {\n          name: 'destinationTokenAccount',\n          isMut: false,\n          isSigner: false,\n          isOptional: true,\n        },\n        {\n          name: 'destinationMint',\n          isMut: false,\n          isSigner: false,\n        },\n        {\n          name: 'platformFeeAccount',\n          isMut: true,\n          isSigner: false,\n          isOptional: true,\n        },\n        {\n          name: 'eventAuthority',\n          isMut: false,\n          isSigner: false,\n        },\n        {\n          name: 'program',\n          isMut: false,\n          isSigner: false,\n        },\n      ],\n      args: [\n        {\n          name: 'routePlan',\n          type: {\n            vec: {\n              defined: 'RoutePlanStep',\n            },\n          },\n        },\n        {\n          name: 'inAmount',\n          type: 'u64',\n        },\n        {\n          name: 'quotedOutAmount',\n          type: 'u64',\n        },\n        {\n          name: 'slippageBps',\n          type: 'u16',\n        },\n        {\n          name: 'platformFeeBps',\n          type: 'u8',\n        },\n      ],\n      returns: 'u64',\n    },\n    {\n      name: 'routeWithTokenLedger',\n      accounts: [\n        {\n          name: 'tokenProgram',\n          isMut: false,\n          isSigner: false,\n        },\n        {\n          name: 'userTransferAuthority',\n          isMut: false,\n          isSigner: true,\n        },\n        {\n          name: 'userSourceTokenAccount',\n          isMut: false,\n          isSigner: false,\n        },\n        {\n          name: 'userDestinationTokenAccount',\n          isMut: false,\n          isSigner: false,\n        },\n        {\n          name: 'destinationTokenAccount',\n          isMut: false,\n          isSigner: false,\n          isOptional: true,\n        },\n        {\n          name: 'destinationMint',\n          isMut: false,\n          isSigner: false,\n        },\n        {\n          name: 'platformFeeAccount',\n          isMut: true,\n          isSigner: false,\n          isOptional: true,\n        },\n        {\n          name: 'tokenLedger',\n          isMut: false,\n          isSigner: false,\n        },\n        {\n          name: 'eventAuthority',\n          isMut: false,\n          isSigner: false,\n        },\n        {\n          name: 'program',\n          isMut: false,\n          isSigner: false,\n        },\n      ],\n      args: [\n        {\n          name: 'routePlan',\n          type: {\n            vec: {\n              defined: 'RoutePlanStep',\n            },\n          },\n        },\n        {\n          name: 'quotedOutAmount',\n          type: 'u64',\n        },\n        {\n          name: 'slippageBps',\n          type: 'u16',\n        },\n        {\n          name: 'platformFeeBps',\n          type: 'u8',\n        },\n      ],\n      returns: 'u64',\n    },\n    {\n      name: 'sharedAccountsRoute',\n      docs: ['Route by using program owned token accounts and open orders accounts.'],\n      accounts: [\n        {\n          name: 'tokenProgram',\n          isMut: false,\n          isSigner: false,\n        },\n        {\n          name: 'programAuthority',\n          isMut: false,\n          isSigner: false,\n        },\n        {\n          name: 'userTransferAuthority',\n          isMut: false,\n          isSigner: true,\n        },\n        {\n          name: 'sourceTokenAccount',\n          isMut: true,\n          isSigner: false,\n        },\n        {\n          name: 'programSourceTokenAccount',\n          isMut: true,\n          isSigner: false,\n        },\n        {\n          name: 'programDestinationTokenAccount',\n          isMut: true,\n          isSigner: false,\n        },\n        {\n          name: 'destinationTokenAccount',\n          isMut: true,\n          isSigner: false,\n        },\n        {\n          name: 'sourceMint',\n          isMut: false,\n          isSigner: false,\n        },\n        {\n          name: 'destinationMint',\n          isMut: false,\n          isSigner: false,\n        },\n        {\n          name: 'platformFeeAccount',\n          isMut: true,\n          isSigner: false,\n          isOptional: true,\n        },\n        {\n          name: 'token2022Program',\n          isMut: false,\n          isSigner: false,\n          isOptional: true,\n        },\n        {\n          name: 'eventAuthority',\n          isMut: false,\n          isSigner: false,\n        },\n        {\n          name: 'program',\n          isMut: false,\n          isSigner: false,\n        },\n      ],\n      args: [\n        {\n          name: 'id',\n          type: 'u8',\n        },\n        {\n          name: 'routePlan',\n          type: {\n            vec: {\n              defined: 'RoutePlanStep',\n            },\n          },\n        },\n        {\n          name: 'inAmount',\n          type: 'u64',\n        },\n        {\n          name: 'quotedOutAmount',\n          type: 'u64',\n        },\n        {\n          name: 'slippageBps',\n          type: 'u16',\n        },\n        {\n          name: 'platformFeeBps',\n          type: 'u8',\n        },\n      ],\n      returns: 'u64',\n    },\n    {\n      name: 'sharedAccountsRouteWithTokenLedger',\n      accounts: [\n        {\n          name: 'tokenProgram',\n          isMut: false,\n          isSigner: false,\n        },\n        {\n          name: 'programAuthority',\n          isMut: false,\n          isSigner: false,\n        },\n        {\n          name: 'userTransferAuthority',\n          isMut: false,\n          isSigner: true,\n        },\n        {\n          name: 'sourceTokenAccount',\n          isMut: true,\n          isSigner: false,\n        },\n        {\n          name: 'programSourceTokenAccount',\n          isMut: true,\n          isSigner: false,\n        },\n        {\n          name: 'programDestinationTokenAccount',\n          isMut: true,\n          isSigner: false,\n        },\n        {\n          name: 'destinationTokenAccount',\n          isMut: true,\n          isSigner: false,\n        },\n        {\n          name: 'sourceMint',\n          isMut: false,\n          isSigner: false,\n        },\n        {\n          name: 'destinationMint',\n          isMut: false,\n          isSigner: false,\n        },\n        {\n          name: 'platformFeeAccount',\n          isMut: true,\n          isSigner: false,\n          isOptional: true,\n        },\n        {\n          name: 'token2022Program',\n          isMut: false,\n          isSigner: false,\n          isOptional: true,\n        },\n        {\n          name: 'tokenLedger',\n          isMut: false,\n          isSigner: false,\n        },\n        {\n          name: 'eventAuthority',\n          isMut: false,\n          isSigner: false,\n        },\n        {\n          name: 'program',\n          isMut: false,\n          isSigner: false,\n        },\n      ],\n      args: [\n        {\n          name: 'id',\n          type: 'u8',\n        },\n        {\n          name: 'routePlan',\n          type: {\n            vec: {\n              defined: 'RoutePlanStep',\n            },\n          },\n        },\n        {\n          name: 'quotedOutAmount',\n          type: 'u64',\n        },\n        {\n          name: 'slippageBps',\n          type: 'u16',\n        },\n        {\n          name: 'platformFeeBps',\n          type: 'u8',\n        },\n      ],\n      returns: 'u64',\n    },\n    {\n      name: 'exactOutRoute',\n      accounts: [\n        {\n          name: 'tokenProgram',\n          isMut: false,\n          isSigner: false,\n        },\n        {\n          name: 'userTransferAuthority',\n          isMut: false,\n          isSigner: true,\n        },\n        {\n          name: 'userSourceTokenAccount',\n          isMut: false,\n          isSigner: false,\n        },\n        {\n          name: 'userDestinationTokenAccount',\n          isMut: false,\n          isSigner: false,\n        },\n        {\n          name: 'destinationTokenAccount',\n          isMut: false,\n          isSigner: false,\n          isOptional: true,\n        },\n        {\n          name: 'sourceMint',\n          isMut: false,\n          isSigner: false,\n        },\n        {\n          name: 'destinationMint',\n          isMut: false,\n          isSigner: false,\n        },\n        {\n          name: 'platformFeeAccount',\n          isMut: true,\n          isSigner: false,\n          isOptional: true,\n        },\n        {\n          name: 'token2022Program',\n          isMut: false,\n          isSigner: false,\n          isOptional: true,\n        },\n        {\n          name: 'eventAuthority',\n          isMut: false,\n          isSigner: false,\n        },\n        {\n          name: 'program',\n          isMut: false,\n          isSigner: false,\n        },\n      ],\n      args: [\n        {\n          name: 'routePlan',\n          type: {\n            vec: {\n              defined: 'RoutePlanStep',\n            },\n          },\n        },\n        {\n          name: 'outAmount',\n          type: 'u64',\n        },\n        {\n          name: 'quotedInAmount',\n          type: 'u64',\n        },\n        {\n          name: 'slippageBps',\n          type: 'u16',\n        },\n        {\n          name: 'platformFeeBps',\n          type: 'u8',\n        },\n      ],\n      returns: 'u64',\n    },\n    {\n      name: 'sharedAccountsExactOutRoute',\n      docs: ['Route by using program owned token accounts and open orders accounts.'],\n      accounts: [\n        {\n          name: 'tokenProgram',\n          isMut: false,\n          isSigner: false,\n        },\n        {\n          name: 'programAuthority',\n          isMut: false,\n          isSigner: false,\n        },\n        {\n          name: 'userTransferAuthority',\n          isMut: false,\n          isSigner: true,\n        },\n        {\n          name: 'sourceTokenAccount',\n          isMut: true,\n          isSigner: false,\n        },\n        {\n          name: 'programSourceTokenAccount',\n          isMut: true,\n          isSigner: false,\n        },\n        {\n          name: 'programDestinationTokenAccount',\n          isMut: true,\n          isSigner: false,\n        },\n        {\n          name: 'destinationTokenAccount',\n          isMut: true,\n          isSigner: false,\n        },\n        {\n          name: 'sourceMint',\n          isMut: false,\n          isSigner: false,\n        },\n        {\n          name: 'destinationMint',\n          isMut: false,\n          isSigner: false,\n        },\n        {\n          name: 'platformFeeAccount',\n          isMut: true,\n          isSigner: false,\n          isOptional: true,\n        },\n        {\n          name: 'token2022Program',\n          isMut: false,\n          isSigner: false,\n          isOptional: true,\n        },\n        {\n          name: 'eventAuthority',\n          isMut: false,\n          isSigner: false,\n        },\n        {\n          name: 'program',\n          isMut: false,\n          isSigner: false,\n        },\n      ],\n      args: [\n        {\n          name: 'id',\n          type: 'u8',\n        },\n        {\n          name: 'routePlan',\n          type: {\n            vec: {\n              defined: 'RoutePlanStep',\n            },\n          },\n        },\n        {\n          name: 'outAmount',\n          type: 'u64',\n        },\n        {\n          name: 'quotedInAmount',\n          type: 'u64',\n        },\n        {\n          name: 'slippageBps',\n          type: 'u16',\n        },\n        {\n          name: 'platformFeeBps',\n          type: 'u8',\n        },\n      ],\n      returns: 'u64',\n    },\n    {\n      name: 'setTokenLedger',\n      accounts: [\n        {\n          name: 'tokenLedger',\n          isMut: true,\n          isSigner: false,\n        },\n        {\n          name: 'tokenAccount',\n          isMut: false,\n          isSigner: false,\n        },\n      ],\n      args: [],\n    },\n    {\n      name: 'createOpenOrders',\n      accounts: [\n        {\n          name: 'openOrders',\n          isMut: true,\n          isSigner: false,\n        },\n        {\n          name: 'payer',\n          isMut: true,\n          isSigner: true,\n        },\n        {\n          name: 'dexProgram',\n          isMut: false,\n          isSigner: false,\n        },\n        {\n          name: 'systemProgram',\n          isMut: false,\n          isSigner: false,\n        },\n        {\n          name: 'rent',\n          isMut: false,\n          isSigner: false,\n        },\n        {\n          name: 'market',\n          isMut: false,\n          isSigner: false,\n        },\n      ],\n      args: [],\n    },\n    {\n      name: 'createProgramOpenOrders',\n      accounts: [\n        {\n          name: 'openOrders',\n          isMut: true,\n          isSigner: false,\n        },\n        {\n          name: 'payer',\n          isMut: true,\n          isSigner: true,\n        },\n        {\n          name: 'programAuthority',\n          isMut: false,\n          isSigner: false,\n        },\n        {\n          name: 'dexProgram',\n          isMut: false,\n          isSigner: false,\n        },\n        {\n          name: 'systemProgram',\n          isMut: false,\n          isSigner: false,\n        },\n        {\n          name: 'rent',\n          isMut: false,\n          isSigner: false,\n        },\n        {\n          name: 'market',\n          isMut: false,\n          isSigner: false,\n        },\n      ],\n      args: [\n        {\n          name: 'id',\n          type: 'u8',\n        },\n      ],\n    },\n    {\n      name: 'claim',\n      accounts: [\n        {\n          name: 'wallet',\n          isMut: true,\n          isSigner: false,\n        },\n        {\n          name: 'programAuthority',\n          isMut: true,\n          isSigner: false,\n        },\n        {\n          name: 'systemProgram',\n          isMut: false,\n          isSigner: false,\n        },\n      ],\n      args: [\n        {\n          name: 'id',\n          type: 'u8',\n        },\n      ],\n      returns: 'u64',\n    },\n    {\n      name: 'claimToken',\n      accounts: [\n        {\n          name: 'payer',\n          isMut: true,\n          isSigner: true,\n        },\n        {\n          name: 'wallet',\n          isMut: false,\n          isSigner: false,\n        },\n        {\n          name: 'programAuthority',\n          isMut: false,\n          isSigner: false,\n        },\n        {\n          name: 'programTokenAccount',\n          isMut: true,\n          isSigner: false,\n        },\n        {\n          name: 'destinationTokenAccount',\n          isMut: true,\n          isSigner: false,\n        },\n        {\n          name: 'mint',\n          isMut: false,\n          isSigner: false,\n        },\n        {\n          name: 'associatedTokenTokenProgram',\n          isMut: false,\n          isSigner: false,\n        },\n        {\n          name: 'associatedTokenProgram',\n          isMut: false,\n          isSigner: false,\n        },\n        {\n          name: 'systemProgram',\n          isMut: false,\n          isSigner: false,\n        },\n      ],\n      args: [\n        {\n          name: 'id',\n          type: 'u8',\n        },\n      ],\n      returns: 'u64',\n    },\n    {\n      name: 'createTokenLedger',\n      accounts: [\n        {\n          name: 'tokenLedger',\n          isMut: true,\n          isSigner: true,\n        },\n        {\n          name: 'payer',\n          isMut: true,\n          isSigner: true,\n        },\n        {\n          name: 'systemProgram',\n          isMut: false,\n          isSigner: false,\n        },\n      ],\n      args: [],\n    },\n  ],\n  accounts: [\n    {\n      name: 'tokenLedger',\n      type: {\n        kind: 'struct',\n        fields: [\n          {\n            name: 'tokenAccount',\n            type: 'publicKey',\n          },\n          {\n            name: 'amount',\n            type: 'u64',\n          },\n        ],\n      },\n    },\n  ],\n  types: [\n    {\n      name: 'AmountWithSlippage',\n      type: {\n        kind: 'struct',\n        fields: [\n          {\n            name: 'amount',\n            type: 'u64',\n          },\n          {\n            name: 'slippageBps',\n            type: 'u16',\n          },\n        ],\n      },\n    },\n    {\n      name: 'RoutePlanStep',\n      type: {\n        kind: 'struct',\n        fields: [\n          {\n            name: 'swap',\n            type: {\n              defined: 'Swap',\n            },\n          },\n          {\n            name: 'percent',\n            type: 'u8',\n          },\n          {\n            name: 'inputIndex',\n            type: 'u8',\n          },\n          {\n            name: 'outputIndex',\n            type: 'u8',\n          },\n        ],\n      },\n    },\n    {\n      name: 'Side',\n      type: {\n        kind: 'enum',\n        variants: [\n          {\n            name: 'Bid',\n          },\n          {\n            name: 'Ask',\n          },\n        ],\n      },\n    },\n    {\n      name: 'Swap',\n      type: {\n        kind: 'enum',\n        variants: [\n          {\n            name: 'Saber',\n          },\n          {\n            name: 'SaberAddDecimalsDeposit',\n          },\n          {\n            name: 'SaberAddDecimalsWithdraw',\n          },\n          {\n            name: 'TokenSwap',\n          },\n          {\n            name: 'Sencha',\n          },\n          {\n            name: 'Step',\n          },\n          {\n            name: 'Cropper',\n          },\n          {\n            name: 'Raydium',\n          },\n          {\n            name: 'Crema',\n            fields: [\n              {\n                name: 'aToB',\n                type: 'bool',\n              },\n            ],\n          },\n          {\n            name: 'Lifinity',\n          },\n          {\n            name: 'Mercurial',\n          },\n          {\n            name: 'Cykura',\n          },\n          {\n            name: 'Serum',\n            fields: [\n              {\n                name: 'side',\n                type: {\n                  defined: 'Side',\n                },\n              },\n            ],\n          },\n          {\n            name: 'MarinadeDeposit',\n          },\n          {\n            name: 'MarinadeUnstake',\n          },\n          {\n            name: 'Aldrin',\n            fields: [\n              {\n                name: 'side',\n                type: {\n                  defined: 'Side',\n                },\n              },\n            ],\n          },\n          {\n            name: 'AldrinV2',\n            fields: [\n              {\n                name: 'side',\n                type: {\n                  defined: 'Side',\n                },\n              },\n            ],\n          },\n          {\n            name: 'Whirlpool',\n            fields: [\n              {\n                name: 'aToB',\n                type: 'bool',\n              },\n            ],\n          },\n          {\n            name: 'Invariant',\n            fields: [\n              {\n                name: 'xToY',\n                type: 'bool',\n              },\n            ],\n          },\n          {\n            name: 'Meteora',\n          },\n          {\n            name: 'GooseFX',\n          },\n          {\n            name: 'DeltaFi',\n            fields: [\n              {\n                name: 'stable',\n                type: 'bool',\n              },\n            ],\n          },\n          {\n            name: 'Balansol',\n          },\n          {\n            name: 'MarcoPolo',\n            fields: [\n              {\n                name: 'xToY',\n                type: 'bool',\n              },\n            ],\n          },\n          {\n            name: 'Dradex',\n            fields: [\n              {\n                name: 'side',\n                type: {\n                  defined: 'Side',\n                },\n              },\n            ],\n          },\n          {\n            name: 'LifinityV2',\n          },\n          {\n            name: 'RaydiumClmm',\n          },\n          {\n            name: 'Openbook',\n            fields: [\n              {\n                name: 'side',\n                type: {\n                  defined: 'Side',\n                },\n              },\n            ],\n          },\n          {\n            name: 'Phoenix',\n            fields: [\n              {\n                name: 'side',\n                type: {\n                  defined: 'Side',\n                },\n              },\n            ],\n          },\n          {\n            name: 'Symmetry',\n            fields: [\n              {\n                name: 'fromTokenId',\n                type: 'u64',\n              },\n              {\n                name: 'toTokenId',\n                type: 'u64',\n              },\n            ],\n          },\n          {\n            name: 'TokenSwapV2',\n          },\n          {\n            name: 'HeliumTreasuryManagementRedeemV0',\n          },\n          {\n            name: 'StakeDexStakeWrappedSol',\n          },\n          {\n            name: 'StakeDexSwapViaStake',\n            fields: [\n              {\n                name: 'bridgeStakeSeed',\n                type: 'u32',\n              },\n            ],\n          },\n          {\n            name: 'GooseFXV2',\n          },\n          {\n            name: 'Perps',\n          },\n          {\n            name: 'PerpsAddLiquidity',\n          },\n          {\n            name: 'PerpsRemoveLiquidity',\n          },\n          {\n            name: 'MeteoraDlmm',\n          },\n          {\n            name: 'OpenBookV2',\n            fields: [\n              {\n                name: 'side',\n                type: {\n                  defined: 'Side',\n                },\n              },\n            ],\n          },\n          {\n            name: 'RaydiumClmmV2',\n          },\n          {\n            name: 'StakeDexPrefundWithdrawStakeAndDepositStake',\n            fields: [\n              {\n                name: 'bridgeStakeSeed',\n                type: 'u32',\n              },\n            ],\n          },\n          {\n            name: 'Clone',\n            fields: [\n              {\n                name: 'poolIndex',\n                type: 'u8',\n              },\n              {\n                name: 'quantityIsInput',\n                type: 'bool',\n              },\n              {\n                name: 'quantityIsCollateral',\n                type: 'bool',\n              },\n            ],\n          },\n          {\n            name: 'SanctumS',\n            fields: [\n              {\n                name: 'srcLstValueCalcAccs',\n                type: 'u8',\n              },\n              {\n                name: 'dstLstValueCalcAccs',\n                type: 'u8',\n              },\n              {\n                name: 'srcLstIndex',\n                type: 'u32',\n              },\n              {\n                name: 'dstLstIndex',\n                type: 'u32',\n              },\n            ],\n          },\n          {\n            name: 'SanctumSAddLiquidity',\n            fields: [\n              {\n                name: 'lstValueCalcAccs',\n                type: 'u8',\n              },\n              {\n                name: 'lstIndex',\n                type: 'u32',\n              },\n            ],\n          },\n          {\n            name: 'SanctumSRemoveLiquidity',\n            fields: [\n              {\n                name: 'lstValueCalcAccs',\n                type: 'u8',\n              },\n              {\n                name: 'lstIndex',\n                type: 'u32',\n              },\n            ],\n          },\n          {\n            name: 'RaydiumCP',\n          },\n          {\n            name: 'WhirlpoolSwapV2',\n            fields: [\n              {\n                name: 'aToB',\n                type: 'bool',\n              },\n              {\n                name: 'remainingAccountsInfo',\n                type: {\n                  option: {\n                    defined: 'RemainingAccountsInfo',\n                  },\n                },\n              },\n            ],\n          },\n          {\n            name: 'OneIntro',\n          },\n        ],\n      },\n    },\n    {\n      name: 'RemainingAccountsSlice',\n      type: {\n        kind: 'struct',\n        fields: [\n          {\n            name: 'accountsType',\n            type: {\n              defined: 'AccountsType',\n            },\n          },\n          {\n            name: 'length',\n            type: 'u8',\n          },\n        ],\n      },\n    },\n    {\n      name: 'RemainingAccountsInfo',\n      type: {\n        kind: 'struct',\n        fields: [\n          {\n            name: 'slices',\n            type: {\n              vec: {\n                defined: 'RemainingAccountsSlice',\n              },\n            },\n          },\n        ],\n      },\n    },\n    {\n      name: 'AccountsType',\n      type: {\n        kind: 'enum',\n        variants: [\n          {\n            name: 'TransferHookA',\n          },\n          {\n            name: 'TransferHookB',\n          },\n        ],\n      },\n    },\n  ],\n  events: [\n    {\n      name: 'SwapEvent',\n      fields: [\n        {\n          name: 'amm',\n          type: 'publicKey',\n          index: false,\n        },\n        {\n          name: 'inputMint',\n          type: 'publicKey',\n          index: false,\n        },\n        {\n          name: 'inputAmount',\n          type: 'u64',\n          index: false,\n        },\n        {\n          name: 'outputMint',\n          type: 'publicKey',\n          index: false,\n        },\n        {\n          name: 'outputAmount',\n          type: 'u64',\n          index: false,\n        },\n      ],\n    },\n    {\n      name: 'FeeEvent',\n      fields: [\n        {\n          name: 'account',\n          type: 'publicKey',\n          index: false,\n        },\n        {\n          name: 'mint',\n          type: 'publicKey',\n          index: false,\n        },\n        {\n          name: 'amount',\n          type: 'u64',\n          index: false,\n        },\n      ],\n    },\n  ],\n  errors: [\n    {\n      code: 6000,\n      name: 'EmptyRoute',\n      msg: 'Empty route',\n    },\n    {\n      code: 6001,\n      name: 'SlippageToleranceExceeded',\n      msg: 'Slippage tolerance exceeded',\n    },\n    {\n      code: 6002,\n      name: 'InvalidCalculation',\n      msg: 'Invalid calculation',\n    },\n    {\n      code: 6003,\n      name: 'MissingPlatformFeeAccount',\n      msg: 'Missing platform fee account',\n    },\n    {\n      code: 6004,\n      name: 'InvalidSlippage',\n      msg: 'Invalid slippage',\n    },\n    {\n      code: 6005,\n      name: 'NotEnoughPercent',\n      msg: 'Not enough percent to 100',\n    },\n    {\n      code: 6006,\n      name: 'InvalidInputIndex',\n      msg: 'Token input index is invalid',\n    },\n    {\n      code: 6007,\n      name: 'InvalidOutputIndex',\n      msg: 'Token output index is invalid',\n    },\n    {\n      code: 6008,\n      name: 'NotEnoughAccountKeys',\n      msg: 'Not Enough Account keys',\n    },\n    {\n      code: 6009,\n      name: 'NonZeroMinimumOutAmountNotSupported',\n      msg: 'Non zero minimum out amount not supported',\n    },\n    {\n      code: 6010,\n      name: 'InvalidRoutePlan',\n      msg: 'Invalid route plan',\n    },\n    {\n      code: 6011,\n      name: 'InvalidReferralAuthority',\n      msg: 'Invalid referral authority',\n    },\n    {\n      code: 6012,\n      name: 'LedgerTokenAccountDoesNotMatch',\n      msg: \"Token account doesn't match the ledger\",\n    },\n    {\n      code: 6013,\n      name: 'InvalidTokenLedger',\n      msg: 'Invalid token ledger',\n    },\n    {\n      code: 6014,\n      name: 'IncorrectTokenProgramID',\n      msg: 'Token program ID is invalid',\n    },\n    {\n      code: 6015,\n      name: 'TokenProgramNotProvided',\n      msg: 'Token program not provided',\n    },\n    {\n      code: 6016,\n      name: 'SwapNotSupported',\n      msg: 'Swap not supported',\n    },\n    {\n      code: 6017,\n      name: 'ExactOutAmountNotMatched',\n      msg: \"Exact out amount doesn't match\",\n    },\n    {\n      code: 6018,\n      name: 'SourceAndDestinationMintCannotBeTheSame',\n      msg: 'Source mint and destination mint cannot the same',\n    },\n  ],\n};\n","import { Event, utils } from '@coral-xyz/anchor';\nimport { VersionedTransactionResponse } from '@solana/web3.js';\nimport { JUPITER_PROGRAM } from '../program';\n\nexport function getEvents(transactionResponse: VersionedTransactionResponse) {\n  let events: Event[] = [];\n\n  if (transactionResponse && transactionResponse.meta) {\n    let { meta } = transactionResponse;\n\n    meta.innerInstructions?.map(async (ix) => {\n      ix.instructions.map(async (iix) => {\n        const ixData = utils.bytes.bs58.decode(iix.data);\n        const eventData = utils.bytes.base64.encode(ixData.subarray(8));\n        const event = JUPITER_PROGRAM.coder.events.decode(eventData);\n\n        if (!event) return;\n\n        events.push(event);\n      });\n    });\n  }\n\n  return events;\n}\n","import { Program, Provider } from '@coral-xyz/anchor';\nimport { IDL_V6, Jupiter } from './idl/jupiter6';\nimport { JUPITER_PROGRAM_V6_ID } from './constants';\n\nexport const JUPITER_PROGRAM = new Program<Jupiter>(IDL_V6, JUPITER_PROGRAM_V6_ID, {} as Provider);\n","import { Keypair, PublicKey, Signer } from '@solana/web3.js';\n\ntype _Owner = Keypair | PublicKey;\n\nexport class Owner {\n  private readonly _owner: _Owner;\n\n  constructor(owner: _Owner) {\n    this._owner = owner;\n  }\n\n  get publicKey(): PublicKey {\n    if (Owner.isKeyPair(this._owner)) {\n      return this._owner.publicKey;\n    }\n\n    return this._owner;\n  }\n\n  get signer(): Signer | undefined {\n    return Owner.isKeyPair(this._owner) ? this._owner : undefined;\n  }\n\n  get isKeyPair(): boolean {\n    return Owner.isKeyPair(this._owner);\n  }\n\n  get isPublicKey(): boolean {\n    return Owner.isPublicKey(this._owner);\n  }\n\n  static isKeyPair(owner: _Owner): owner is Keypair {\n    return (owner as Keypair).secretKey !== undefined;\n  }\n\n  static isPublicKey(owner: _Owner): owner is PublicKey {\n    return !Owner.isKeyPair(owner);\n  }\n}\n","export const wait = (time: number) => new Promise<void>((resolve) => setTimeout(resolve, time));\n","import { INDEXED_ROUTE_MAP_URL } from '..';\n\nexport interface IndexedRouteMap {\n  mintKeys: string[];\n  indexedRouteMap: { [key: number]: number[] };\n}\n\nfunction getOrAddKeyToIndexMap(pk: string, mintToIndexMap: Map<string, number>): number {\n  let keyIndex = mintToIndexMap.get(pk);\n  if (keyIndex === undefined) {\n    keyIndex = mintToIndexMap.size;\n    mintToIndexMap.set(pk, keyIndex);\n  }\n  return keyIndex;\n}\n\n/** An indexed route map which is light (less data to compress/decompress) and can quickly be inflated into the full route map  */\nexport function routeMapToIndexedRouteMap(routeMap: Map<string, string[]>) {\n  const { mintToIndexMap, indexedRouteMap: innerIndexedRouteMap } = Array.from(routeMap).reduce<{\n    mintToIndexMap: Map<string, number>;\n    indexedRouteMap: Record<number, number[]>;\n  }>(\n    ({ mintToIndexMap, indexedRouteMap }, [key, item]) => {\n      const keyIndex = getOrAddKeyToIndexMap(key, mintToIndexMap);\n\n      const indexedOutputMintCache = [];\n      for (const routeOutputKey of item) {\n        const routeOutputKeyIndex = getOrAddKeyToIndexMap(routeOutputKey, mintToIndexMap);\n        indexedOutputMintCache.push(routeOutputKeyIndex);\n      }\n      indexedRouteMap[keyIndex] = indexedOutputMintCache;\n\n      return { mintToIndexMap, indexedRouteMap };\n    },\n    { mintToIndexMap: new Map(), indexedRouteMap: {} },\n  );\n\n  const indexedRouteMap = {\n    mintKeys: Array.from(mintToIndexMap.keys()),\n    indexedRouteMap: innerIndexedRouteMap,\n  };\n\n  return indexedRouteMap;\n}\n\nexport function indexedRouteMapToRouteMap(indexedRouteMap: IndexedRouteMap) {\n  const getMint = (index: number) => indexedRouteMap.mintKeys[index];\n\n  // generate route map by replacing indexes with mint addresses\n  const generatedRouteMap: Map<string, string[]> = new Map();\n  Object.keys(indexedRouteMap.indexedRouteMap).forEach((key) => {\n    generatedRouteMap.set(\n      getMint(key as any as number),\n      indexedRouteMap['indexedRouteMap'][key as any as number].map((index: number) => getMint(index)),\n    );\n  });\n\n  return generatedRouteMap;\n}\n\nexport async function getRemoteRouteMap(\n  { onlyDirectRoutes, asLegacyTransaction }: { onlyDirectRoutes?: boolean; asLegacyTransaction?: boolean },\n  indexedRouteMapUrl?: string,\n) {\n  let url = indexedRouteMapUrl || INDEXED_ROUTE_MAP_URL;\n  if (onlyDirectRoutes) {\n    url = url.concat('?onlyDirectRoutes=true');\n  } else if (asLegacyTransaction) {\n    url = url.concat('?asLegacyTransaction=true');\n  }\n\n  const indexedRouteMap = (await (await fetch(url)).json()) as IndexedRouteMap;\n\n  return indexedRouteMapToRouteMap(indexedRouteMap);\n}\n","import {\n  Connection,\n  PublicKey,\n  Signer,\n  TransactionInstruction,\n  BlockhashWithExpiryBlockHeight,\n  sendAndConfirmRawTransaction,\n  TransactionMessage,\n  VersionedTransaction,\n  Transaction,\n  AddressLookupTableAccount,\n} from '@solana/web3.js';\nimport { Instruction, TransactionPayload } from './instruction';\nimport { Owner } from './Owner';\nimport { signTransaction } from './transactionHelpers';\n\nexport class TransactionBuilder {\n  private connection: Connection;\n  private feePayer: PublicKey;\n  private instructions: Instruction[];\n  private owner: Owner;\n\n  constructor(connection: Connection, feePayer: PublicKey, owner: Owner) {\n    this.connection = connection;\n    this.feePayer = feePayer;\n    this.instructions = [];\n    this.owner = owner;\n  }\n\n  addInstruction(instruction: Instruction): TransactionBuilder {\n    this.instructions.push(instruction);\n    return this;\n  }\n\n  async build(\n    blockhashWithExpiryBlockHeight: BlockhashWithExpiryBlockHeight,\n    addressLookupTables: AddressLookupTableAccount[],\n    asLegacyTransaction?: boolean,\n  ): Promise<TransactionPayload> {\n    let instructions: TransactionInstruction[] = [];\n    let setupInstructions: TransactionInstruction[] = [];\n    let cleanupInstructions: TransactionInstruction[] = [];\n    let signers: Signer[] = [];\n    this.instructions.forEach((curr) => {\n      setupInstructions = setupInstructions.concat(curr.setupInstructions);\n      instructions = instructions.concat(curr.instructions);\n      cleanupInstructions = cleanupInstructions.concat(curr.cleanupInstructions);\n      signers = signers.concat(curr.signers);\n    });\n\n    const transactionInstructions = setupInstructions.concat(instructions).concat(cleanupInstructions);\n\n    const transaction = asLegacyTransaction\n      ? this.buildLegacyTransaction({ transactionInstructions, blockhashWithExpiryBlockHeight })\n      : this.buildVersionedTransaction({\n          transactionInstructions,\n          blockhashWithExpiryBlockHeight,\n          addressLookupTables,\n        });\n\n    return {\n      transaction,\n      signers,\n      execute: this.owner.isKeyPair\n        ? () => {\n            const signature = signTransaction(transaction, [this.owner.signer!, ...signers]);\n            const serializedTx = transaction.serialize();\n            return sendAndConfirmRawTransaction(this.connection, Buffer.from(serializedTx), {\n              signature,\n              ...blockhashWithExpiryBlockHeight,\n            });\n          }\n        : async () => {\n            throw new Error('Please use a Keypair for the owner parameter to enable the execute function');\n          },\n    };\n  }\n\n  private buildLegacyTransaction({\n    transactionInstructions,\n    blockhashWithExpiryBlockHeight,\n  }: {\n    transactionInstructions: TransactionInstruction[];\n    blockhashWithExpiryBlockHeight: BlockhashWithExpiryBlockHeight;\n  }) {\n    return new Transaction({ feePayer: this.feePayer, ...blockhashWithExpiryBlockHeight }).add(\n      ...transactionInstructions,\n    );\n  }\n\n  private buildVersionedTransaction({\n    transactionInstructions,\n    blockhashWithExpiryBlockHeight,\n    addressLookupTables,\n  }: {\n    transactionInstructions: TransactionInstruction[];\n    blockhashWithExpiryBlockHeight: BlockhashWithExpiryBlockHeight;\n    addressLookupTables: AddressLookupTableAccount[];\n  }) {\n    const transactionMessage = new TransactionMessage({\n      payerKey: this.feePayer,\n      instructions: transactionInstructions,\n      recentBlockhash: blockhashWithExpiryBlockHeight.blockhash,\n    });\n\n    const messageV0 = transactionMessage.compileToV0Message(addressLookupTables);\n    return new VersionedTransaction(messageV0);\n  }\n}\n","import {\n  Signer,\n  Transaction,\n  TransactionInstruction,\n  TransactionSignature,\n  VersionedTransaction,\n} from '@solana/web3.js';\n\nexport const getEmptyInstruction: () => Instruction = () => ({\n  setupInstructions: [],\n  instructions: [],\n  cleanupInstructions: [],\n  signers: [],\n});\n\nexport type Instruction = {\n  setupInstructions: TransactionInstruction[];\n  instructions: TransactionInstruction[];\n  cleanupInstructions: TransactionInstruction[];\n  signers: Signer[];\n};\n\nexport type TransactionPayload = {\n  transaction: Transaction | VersionedTransaction;\n  signers: Signer[];\n  execute: () => Promise<TransactionSignature>;\n};\n","import { deserializeAccount } from '@mercurial-finance/optimist';\nimport { ASSOCIATED_TOKEN_PROGRAM_ID, Token, TOKEN_PROGRAM_ID } from '@solana/spl-token';\nimport { Connection, PublicKey, SystemProgram, TransactionInstruction } from '@solana/web3.js';\nimport JSBI from 'jsbi';\nimport { WRAPPED_SOL_MINT } from '../constants';\nimport { getEmptyInstruction, Instruction } from './instruction';\nimport { Owner } from './Owner';\n\n// Leverage the existing ATA when present\nexport async function createAndCloseWSOLAccount({\n  connection,\n  amount,\n  owner: { publicKey },\n}: {\n  connection: Connection;\n  owner: Owner;\n  amount: JSBI;\n}): Promise<Instruction & { address: PublicKey }> {\n  const result = getEmptyInstruction();\n\n  const toAccount = findAssociatedTokenAddress({\n    walletAddress: publicKey,\n    tokenMintAddress: WRAPPED_SOL_MINT,\n  });\n\n  const info = await connection.getAccountInfo(toAccount);\n\n  if (info === null) {\n    result.setupInstructions.push(\n      createAssociatedTokenAccountIdempotentInstruction(publicKey, toAccount, publicKey, WRAPPED_SOL_MINT),\n    );\n  }\n\n  // Fund account and sync\n  result.setupInstructions.push(\n    SystemProgram.transfer({\n      fromPubkey: publicKey,\n      toPubkey: toAccount,\n      lamports: JSBI.toNumber(amount),\n    }),\n  );\n  result.setupInstructions.push(\n    // This is not exposed by the types, but indeed it exists\n    (Token as any).createSyncNativeInstruction(TOKEN_PROGRAM_ID, toAccount),\n  );\n\n  result.cleanupInstructions = [\n    Token.createCloseAccountInstruction(TOKEN_PROGRAM_ID, toAccount, publicKey, publicKey, []),\n  ];\n\n  return {\n    address: toAccount,\n    ...result,\n  };\n}\n\nexport async function findOrCreateAssociatedAccountByMint({\n  connection,\n  payer,\n  owner: { publicKey },\n  mintAddress,\n  unwrapSOL,\n}: {\n  connection: Connection;\n  payer: PublicKey;\n  owner: Owner;\n  mintAddress: PublicKey | string;\n  unwrapSOL: boolean;\n}): Promise<Instruction & { address: PublicKey }> {\n  const mint = typeof mintAddress === 'string' ? new PublicKey(mintAddress) : mintAddress;\n  const toAccount = findAssociatedTokenAddress({\n    tokenMintAddress: mint,\n    walletAddress: publicKey,\n  });\n  const result = getEmptyInstruction();\n\n  const info = await connection.getAccountInfo(toAccount);\n\n  if (info === null) {\n    result.setupInstructions.push(createAssociatedTokenAccountIdempotentInstruction(payer, toAccount, publicKey, mint));\n  } else {\n    const tokenAccountInfo = deserializeAccount(info.data);\n\n    if (tokenAccountInfo && !tokenAccountInfo.owner.equals(publicKey)) {\n      // What to do at the top level in UIs and SDK?\n      throw new Error(`/!\\ ATA ${toAccount.toBase58()} is not owned by ${publicKey.toBase58()}`);\n    }\n  }\n\n  // We close it when wrapped SOL\n  if (mint.equals(WRAPPED_SOL_MINT) && unwrapSOL) {\n    result.cleanupInstructions.push(\n      Token.createCloseAccountInstruction(TOKEN_PROGRAM_ID, toAccount, publicKey, publicKey, []),\n    );\n  }\n\n  return {\n    address: toAccount,\n    ...result,\n  };\n}\n\n// 0.1.x @solana/spl-token does not have the version without the rent sysvar\n// Source: https://github.com/solana-labs/solana-program-library/blob/dc5684445f0b42ba36a0157f06c561d967a7cb34/associated-token-account/program/src/instruction.rs#L16-L25\nexport function createAssociatedTokenAccountIdempotentInstruction(\n  payer: PublicKey,\n  associatedToken: PublicKey,\n  owner: PublicKey,\n  mint: PublicKey,\n  programId = TOKEN_PROGRAM_ID,\n  associatedTokenProgramId = ASSOCIATED_TOKEN_PROGRAM_ID,\n): TransactionInstruction {\n  const keys = [\n    { pubkey: payer, isSigner: true, isWritable: true },\n    { pubkey: associatedToken, isSigner: false, isWritable: true },\n    { pubkey: owner, isSigner: false, isWritable: false },\n    { pubkey: mint, isSigner: false, isWritable: false },\n    { pubkey: SystemProgram.programId, isSigner: false, isWritable: false },\n    { pubkey: programId, isSigner: false, isWritable: false },\n  ];\n\n  return new TransactionInstruction({\n    keys,\n    programId: associatedTokenProgramId,\n    data: Buffer.from([1]),\n  });\n}\n\nexport const findAssociatedTokenAddress = ({\n  walletAddress,\n  tokenMintAddress,\n}: {\n  walletAddress: PublicKey;\n  tokenMintAddress: PublicKey;\n}): PublicKey => {\n  return PublicKey.findProgramAddressSync(\n    [walletAddress.toBuffer(), TOKEN_PROGRAM_ID.toBuffer(), tokenMintAddress.toBuffer()],\n    ASSOCIATED_TOKEN_PROGRAM_ID,\n  )[0];\n};\n","import { TransactionError } from '@mercurial-finance/optimist';\nimport type { SignerWalletAdapter } from '@solana/wallet-adapter-base';\nimport {\n  BlockhashWithExpiryBlockHeight,\n  PublicKey,\n  TransactionSignature,\n  VersionedTransactionResponse,\n} from '@solana/web3.js';\nimport JSBI from 'jsbi';\nimport { Instruction } from './utils';\n\nexport type TokenMintAddress = string;\n\nexport type PlatformFeeAndAccounts = {\n  /** Provide referralAccount for automatic referral token account check */\n  referralAccount?: PublicKey;\n  feeBps: number;\n  /** Initial fee accounts */\n  feeAccounts?: Map<string, PublicKey | null>;\n};\n\nexport type PlatformFee = {\n  feeBps: number;\n  feeAccount: PublicKey;\n};\n\nexport type QuoteMintToReferrer = Map<TokenMintAddress, PublicKey>;\n\nexport interface Fee {\n  amount: JSBI;\n  mint: string;\n  pct: number;\n}\n\nexport type SwapResult =\n  | {\n      txid: string;\n      inputAddress: PublicKey;\n      outputAddress: PublicKey;\n      inputAmount: number;\n      outputAmount: number;\n    }\n  | {\n      error?: TransactionError;\n    };\n\nexport enum SwapMode {\n  ExactIn = 'ExactIn',\n  ExactOut = 'ExactOut',\n}\n\nexport type OnTransaction = (\n  txid: TransactionSignature,\n  awaiter: Promise<VersionedTransactionResponse | TransactionError | null>,\n) => void;\n\nexport type ExecuteParams = {\n  wallet?: Pick<SignerWalletAdapter, 'signAllTransactions' | 'signTransaction'>;\n  /**\n   * Allows to customize control of sending and awaiting confirmation in the single/multi transaction flow\n   */\n  onTransaction?: OnTransaction;\n};\n\nexport interface TransactionFeeInfo {\n  signatureFee: number;\n  openOrdersDeposits: number[];\n  ataDeposits: number[];\n  /* Overall amount that will be deducted from user wallet after the swap */\n  totalFeeAndDeposits: number;\n  /* Amount for fee, deposits and temporary token accounts */\n  minimumSOLForTransaction: number;\n}\n\nexport interface ExchangeParams<T> {\n  quoteResponseMeta: T;\n  /**\n   * This will overwrite the default Jupiter.setUser, useful for stateless usage like API\n   */\n  userPublicKey?: PublicKey;\n  /**\n   * This will overwrite the default fee account, useful for stateless usage like API\n   */\n  feeAccount?: PublicKey;\n  /**\n   * This will overwrite the default wrapUnwrapSOL, useful for stateless usage like API\n   */\n  wrapUnwrapSOL?: boolean;\n  /**\n   * The transaction will use the blockhash and valid blockheight to create transaction\n   */\n  blockhashWithExpiryBlockHeight?: BlockhashWithExpiryBlockHeight;\n  /**\n   * Produces a legacy transaction\n   */\n  asLegacyTransaction?: boolean;\n  /**\n   * compute unit price in micro lamports, the swap transaction will cost consumed compute units * computeUnitPriceMicroLamports in addition to the signatures fee, see https://docs.solana.com/developing/programming-model/runtime#prioritization-fees\n   */\n  computeUnitPriceMicroLamports?: number | 'auto';\n  /**\n   * prioritization fee in lamports\n   * Preferred over computeUnitPriceMicroLamports for UIs\n   */\n  prioritizationFeeLamports?: number | 'auto' | { autoMultiplier: number } | { jitoTipLamports: number };\n  /**\n   * Use the shared program accounts for swapping so the user doesn't need to create their own intermediate token accounts or open orders accounts.\n   */\n  useSharedAccounts?: boolean;\n  /**\n   * Use the optimized wrapped SOL token account for swapping\n   */\n  allowOptimizedWrappedSolTokenAccount?: boolean;\n}\n\nexport type SetupInstructions = {\n  openOrders: ((Instruction & { address: PublicKey }) | undefined)[];\n  intermediates: (Instruction & { address: PublicKey })[];\n  destination: Instruction & { address: PublicKey };\n};\n","import { Connection, FeeCalculator, PublicKey } from '@solana/web3.js';\nimport { SetupInstructions, TransactionFeeInfo } from './types';\nimport { deserializeAccount } from '@mercurial-finance/optimist';\n\nconst SERUM_OPEN_ACCOUNT_LAMPORTS = 23_352_760;\nconst OPEN_TOKEN_ACCOUNT_LAMPORTS = 2_039_280;\nconst WALLET_RENT_EXEMPT_MINIMUM = 890_880;\nconst LAMPORTS_PER_SIGNATURE = 5000;\n\nfunction sum(values: number[]) {\n  return values.reduce((value, acc) => {\n    acc += value;\n    return acc;\n  }, 0);\n}\n\nexport const calculateTransactionDepositAndFee = ({\n  intermediates,\n  destination,\n  openOrders,\n  hasWrapUnwrapSOL,\n  feeCalculator,\n}: SetupInstructions & {\n  hasWrapUnwrapSOL: boolean;\n  feeCalculator: FeeCalculator;\n}): TransactionFeeInfo => {\n  const openOrdersDeposits = openOrders\n    .filter((ooi) => ooi && ooi.setupInstructions.length > 0)\n    .map(() => SERUM_OPEN_ACCOUNT_LAMPORTS);\n  const ataDeposits = [...intermediates, destination]\n    .filter((item) => item?.setupInstructions.length && item.cleanupInstructions.length === 0)\n    .map(() => OPEN_TOKEN_ACCOUNT_LAMPORTS);\n\n  const signatureFee = feeCalculator.lamportsPerSignature;\n\n  const totalFeeAndDeposits = sum([signatureFee, ...openOrdersDeposits, ...ataDeposits]);\n\n  // We need to account for temporary wrapped SOL token accounts as intermediary or output\n  const minimumSOLForTransaction = sum([\n    signatureFee,\n    ...openOrdersDeposits,\n    ...ataDeposits,\n    WALLET_RENT_EXEMPT_MINIMUM,\n    hasWrapUnwrapSOL ? OPEN_TOKEN_ACCOUNT_LAMPORTS : 0,\n  ]);\n\n  return {\n    signatureFee,\n    openOrdersDeposits,\n    ataDeposits,\n    totalFeeAndDeposits,\n    minimumSOLForTransaction,\n  };\n};\n\ninterface CalculateTransactionFeeAndDepositParams {\n  numOfAtasToBeCreated: number; // missing ata for each tokens\n  numOfOpenOrdersToBeCreated: number; // missing open orders for each tokens\n  isInputMintSOL: boolean;\n}\n\nexport const calculateTransactionDepositAndFeeV2 = ({\n  numOfAtasToBeCreated,\n  numOfOpenOrdersToBeCreated,\n  isInputMintSOL,\n}: CalculateTransactionFeeAndDepositParams): TransactionFeeInfo => {\n  const openOrdersDeposits = new Array(numOfOpenOrdersToBeCreated).fill(0).map(() => SERUM_OPEN_ACCOUNT_LAMPORTS);\n  const ataDeposits = new Array(numOfAtasToBeCreated).fill(0).map(() => OPEN_TOKEN_ACCOUNT_LAMPORTS);\n\n  const signatureFee = LAMPORTS_PER_SIGNATURE;\n\n  const totalFeeAndDeposits = sum([signatureFee, ...openOrdersDeposits, ...ataDeposits]);\n\n  // We need to account for temporary wrapped SOL token accounts as intermediary or output\n  const minimumSOLForTransaction = sum([\n    signatureFee,\n    ...openOrdersDeposits,\n    ...ataDeposits,\n    isInputMintSOL ? WALLET_RENT_EXEMPT_MINIMUM : 0,\n  ]);\n\n  return {\n    signatureFee,\n    openOrdersDeposits,\n    ataDeposits,\n    totalFeeAndDeposits,\n    minimumSOLForTransaction,\n  };\n};\n\ninterface GetReferralTokenAccountParams {\n  connection: Connection;\n  referralAccount: PublicKey;\n  mint: PublicKey;\n}\n\nconst REFERRAL_PROGRAM_ID = new PublicKey('REFER4ZgmyYx9c6He5XfaTMiGfdLwRnkV4RPp9t9iF3');\nconst REFERRAL_ATA_SEED = Buffer.from('referral_ata');\n\n/** Provides the referral token account address if the account exists and is not frozen */\nexport const getReferralTokenAccount = async ({ connection, referralAccount, mint }: GetReferralTokenAccountParams) => {\n  const referralTokenAccountAddress = PublicKey.findProgramAddressSync(\n    [REFERRAL_ATA_SEED, referralAccount.toBuffer(), mint.toBuffer()],\n    REFERRAL_PROGRAM_ID,\n  )[0];\n  const accountInfo = await connection.getAccountInfo(referralTokenAccountAddress);\n  if (!accountInfo) return null;\n\n  const tokenAccount = deserializeAccount(accountInfo.data);\n  if (!tokenAccount) return null;\n  if (tokenAccount.isFrozen) return null;\n\n  return referralTokenAccountAddress;\n};\n"],"mappings":"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","names":["TransactionError","transactionResponse","TransactionError","mintToIndexMap","indexedRouteMap","VersionedTransaction","Transaction","Transaction","VersionedTransaction","PublicKey","TransactionInstruction","PublicKey","TransactionInstruction","SwapMode","PublicKey","deserializeAccount","LAMPORTS_PER_SIGNATURE"]}