[
  {
    "path": ".eslintrc",
    "content": "{\n    \"extends\": [\n        \"react-app\",\n        \"prettier\"\n    ]\n}\n"
  },
  {
    "path": ".gitignore",
    "content": ".DS_Store\n# Logs\nlogs\n*.log\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\nlerna-debug.log*\n\n# Diagnostic reports (https://nodejs.org/api/report.html)\nreport.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json\n\n# Runtime data\npids\n*.pid\n*.seed\n*.pid.lock\n\n# Directory for instrumented libs generated by jscoverage/JSCover\nlib-cov\n\n# Coverage directory used by tools like istanbul\ncoverage\n*.lcov\n\n# nyc test coverage\n.nyc_output\n\n# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)\n.grunt\n\n# Bower dependency directory (https://bower.io/)\nbower_components\n\n# node-waf configuration\n.lock-wscript\n\n# Compiled binary addons (https://nodejs.org/api/addons.html)\nbuild/Release\n\n# Dependency directories\nnode_modules/\njspm_packages/\n\n# Snowpack dependency directory (https://snowpack.dev/)\nweb_modules/\n\n# TypeScript cache\n*.tsbuildinfo\n\n# Optional npm cache directory\n.npm\n\n# Optional eslint cache\n.eslintcache\n\n# Microbundle cache\n.rpt2_cache/\n.rts2_cache_cjs/\n.rts2_cache_es/\n.rts2_cache_umd/\n\n# Optional REPL history\n.node_repl_history\n\n# Output of 'npm pack'\n*.tgz\n\n# Yarn Integrity file\n.yarn-integrity\n\n# dotenv environment variables file\n.env\n.env.test\n\n# parcel-bundler cache (https://parceljs.org/)\n.cache\n.parcel-cache\n\n# Next.js build output\n.next\nout\n\n# Nuxt.js build / generate output\n.nuxt\ndist\n\n# Gatsby files\n.cache/\n# Comment in the public line in if your project uses Gatsby and not Next.js\n# https://nextjs.org/blog/next-9-1#public-directory-support\n# public\n\n# vuepress build output\n.vuepress/dist\n\n# Serverless directories\n.serverless/\n\n# FuseBox cache\n.fusebox/\n\n# DynamoDB Local files\n.dynamodb/\n\n# TernJS port file\n.tern-port\n\n# Stores VSCode versions used for testing VSCode extensions\n.vscode-test\n\n# yarn v2\n.yarn/cache\n.yarn/unplugged\n.yarn/build-state.yml\n.yarn/install-state.gz\n.pnp.*\n\n.vscode/*\n"
  },
  {
    "path": ".husky/.gitignore",
    "content": "_\n"
  },
  {
    "path": ".husky/pre-commit",
    "content": "#!/bin/sh\n. \"$(dirname \"$0\")/_/husky.sh\"\n\nnpx lint-staged\n"
  },
  {
    "path": ".prettierrc",
    "content": "{\n  \"printWidth\": 100\n}\n"
  },
  {
    "path": "README.md",
    "content": "⚠️ **WARNING: DEPRECATED TYPESCRIPT SDK** ⚠️\n\nThis Typescript SDK is for the **legacy pools** which are **deprecated**. We highly recommend you to use the **Whirlpools SDK** for the new and improved pools. You can find it here:\n\n🌊 [Whirlpools SDK on npmjs](https://www.npmjs.com/package/@orca-so/whirlpools-sdk) 🌊\n\nPlease update your implementations to avoid any issues or disruptions in the future.\n\n# Orca Typescript SDK\n\nThe Orca SDK contains a set of simple to use APIs to allow developers to integrate with the Orca platform.\n\nLearn more Orca [here](https://docs.orca.so).\n\n### Orca Token Swap V2\n\n- The [Orca Token Swap V2 program](https://solscan.io/account/9W959DqEETiGZocYWCQPaJ6sBmUzgfxXfqGeTEdp3aQP) uses the following commit hash of the SPL Token Swap program: [3613cea3](https://github.com/solana-labs/solana-program-library/tree/3613cea3cabbb5f7e4445d6203b7292d413732da/token-swap)\n\n### Trading Orca Liquidity Pools\n\n- Get detailed quotes and make swaps between trading pairs in an Orca Pool\n- Check your Orca Pool LP token balance and total supply\n\n**Supported Orca Pools**\n\n- The SDK supports all pools currently listed on [Orca](https://www.orca.so/pools)\n\n### Provide Liquidity to Orca Pools\n\n- Deposit liquidity to supported Orca Pools\n  - Deposit a trading pair, and receive LP token\n- Withdraw liquidity from supported Orca Pools\n  - Withdraw a trading pair in exchange for LP token\n\n**Aquafarm Support**\n\n- After depositing liquidtiy to a pool, the LP token can be deposited into\n  the corresponding farm to receive an equivalent amount of farm token\n- Remember to withdraw the LP token in exchange for farm token before\n  withdrawing liquidity from Orca Pool\n\n**DoubleDip Support**\n\n- For farms with double-dip, the aquafarm tokens can be deposited into\n  double-dip farm to receive double-dip rewards\n\n**Features Coming Soon**\n\n- More trader information (APY, Volume)\n\n# Installation\n\nUse your environment's package manager to install @orca-so/sdk and other related packages into your project.\n\n```bash\nyarn add @orca-so/sdk @solana/web3.js decimal.js\n```\n\n```bash\nnpm install @orca-so/sdk @solana/web3.js decimal.js\n```\n\n# Usage\n\n```typescript\nimport { readFile } from \"mz/fs\";\nimport { Connection, Keypair } from \"@solana/web3.js\";\nimport { getOrca, OrcaFarmConfig, OrcaPoolConfig } from \"@orca-so/sdk\";\nimport Decimal from \"decimal.js\";\n\nconst main = async () => {\n  /*** Setup ***/\n  // 1. Read secret key file to get owner keypair\n  const secretKeyString = await readFile(\"/Users/scuba/my-wallet/my-keypair.json\", {\n    encoding: \"utf8\",\n  });\n  const secretKey = Uint8Array.from(JSON.parse(secretKeyString));\n  const owner = Keypair.fromSecretKey(secretKey);\n\n  // 2. Initialzie Orca object with mainnet connection\n  const connection = new Connection(\"https://api.mainnet-beta.solana.com\", \"singleGossip\");\n  const orca = getOrca(connection);\n\n  try {\n    /*** Swap ***/\n    // 3. We will be swapping 0.1 SOL for some ORCA\n    const orcaSolPool = orca.getPool(OrcaPoolConfig.ORCA_SOL);\n    const solToken = orcaSolPool.getTokenB();\n    const solAmount = new Decimal(0.1);\n    const quote = await orcaSolPool.getQuote(solToken, solAmount);\n    const orcaAmount = quote.getMinOutputAmount();\n\n    console.log(`Swap ${solAmount.toString()} SOL for at least ${orcaAmount.toNumber()} ORCA`);\n    const swapPayload = await orcaSolPool.swap(owner, solToken, solAmount, orcaAmount);\n    const swapTxId = await swapPayload.execute();\n    console.log(\"Swapped:\", swapTxId, \"\\n\");\n\n    /*** Pool Deposit ***/\n    // 4. Deposit SOL and ORCA for LP token\n    const { maxTokenAIn, maxTokenBIn, minPoolTokenAmountOut } = await orcaSolPool.getDepositQuote(\n      orcaAmount,\n      solAmount\n    );\n\n    console.log(\n      `Deposit at most ${maxTokenBIn.toNumber()} SOL and ${maxTokenAIn.toNumber()} ORCA, for at least ${minPoolTokenAmountOut.toNumber()} LP tokens`\n    );\n    const poolDepositPayload = await orcaSolPool.deposit(\n      owner,\n      maxTokenAIn,\n      maxTokenBIn,\n      minPoolTokenAmountOut\n    );\n    const poolDepositTxId = await poolDepositPayload.execute();\n    console.log(\"Pool deposited:\", poolDepositTxId, \"\\n\");\n\n    /*** Farm Deposit ***/\n    // 5. Deposit some ORCA_SOL LP token for farm token\n    const lpBalance = await orcaSolPool.getLPBalance(owner.publicKey);\n    const orcaSolFarm = orca.getFarm(OrcaFarmConfig.ORCA_SOL_AQ);\n    const farmDepositPayload = await orcaSolFarm.deposit(owner, lpBalance);\n    const farmDepositTxId = await farmDepositPayload.execute();\n    console.log(\"Farm deposited:\", farmDepositTxId, \"\\n\");\n    // Note 1: for double dip, repeat step 5 but with the double dip farm\n    // Note 2: to harvest reward, orcaSolFarm.harvest(owner)\n    // Note 3: to get harvestable reward amount, orcaSolFarm.getHarvestableAmount(owner.publicKey)\n\n    /*** Farm Withdraw ***/\n    // 6. Withdraw ORCA_SOL LP token, in exchange for farm token\n    const farmBalance = await orcaSolFarm.getFarmBalance(owner.publicKey); // withdraw the entire balance\n    const farmWithdrawPayload = await orcaSolFarm.withdraw(owner, farmBalance);\n    const farmWithdrawTxId = await farmWithdrawPayload.execute();\n    console.log(\"Farm withdrawn:\", farmWithdrawTxId, \"\\n\");\n\n    /*** Pool Withdraw ***/\n    // 6. Withdraw SOL and ORCA, in exchange for ORCA_SOL LP token\n    const withdrawTokenAmount = await orcaSolPool.getLPBalance(owner.publicKey);\n    const withdrawTokenMint = orcaSolPool.getPoolTokenMint();\n    const { maxPoolTokenAmountIn, minTokenAOut, minTokenBOut } = await orcaSolPool.getWithdrawQuote(\n      withdrawTokenAmount,\n      withdrawTokenMint\n    );\n\n    console.log(\n      `Withdraw at most ${maxPoolTokenAmountIn.toNumber()} ORCA_SOL LP token for at least ${minTokenAOut.toNumber()} ORCA and ${minTokenBOut.toNumber()} SOL`\n    );\n    const poolWithdrawPayload = await orcaSolPool.withdraw(\n      owner,\n      maxPoolTokenAmountIn,\n      minTokenAOut,\n      minTokenBOut\n    );\n    const poolWithdrawTxId = await poolWithdrawPayload.execute();\n    console.log(\"Pool withdrawn:\", poolWithdrawTxId, \"\\n\");\n  } catch (err) {\n    console.warn(err);\n  }\n};\n\nmain()\n  .then(() => {\n    console.log(\"Done\");\n  })\n  .catch((e) => {\n    console.error(e);\n  });\n```\n\n# Devnet Testing\n\nThe example code above can be run on devnet by updating the import statement:\n\n```typescript\nimport { getOrca, OrcaFarmConfig, OrcaPoolConfig, Network } from \"@orca-so/sdk\";\n```\n\nAnd changing two lines of code like so:\n\n```typescript\nconst connection = new Connection(\"https://api.devnet.solana.com\", \"singleGossip\");\nconst orca = getOrca(connection, Network.DEVNET);\n```\n\nOne caveat to note is that there are only a few devnet pools available, so if you try to access pools that are only\navailable on mainnet, the code will throw an error. The example code uses ORCA_SOL, which exists on the devnet.\n\n# Technical Notes\n\n**Decimals & OrcaU64**\n\nThe SDK relies on the use of [Decimal](https://github.com/MikeMcl/decimal.js/) for number inputs and Decimal/[OrcaU64](https://github.com/orca-so/typescript-sdk/blob/main/src/public/utils/orca-u64.ts) for token-value inputs. If a Decimal instance is provided for a token-value input, it will be automatically transformed to the token's scale.\n\n**Stability of the Public Util Functions**\n\nWe hope you find the tools we used to build our API useful in the public/utils folder. Due to our on-going development of the Orca platform, we cannot guarrantee the stability of the util APIs. The trading APIs can only be upgraded on major version updates.\n\n# Support\n\n**Integration Questions**\n\nHave problems integrating with the SDK? Pop by over to our [Discord](https://discord.gg/nSwGWn5KSG) #integrations channel and chat with one of our engineers.\n\n**Issues / Bugs**\n\nIf you found a bug, open up an issue on github with the prefix [ISSUE]. To help us be more effective in resolving the problem, be specific in the steps it took to reproduce the problem (ex. when did the issue occur, code samples, debug logs etc).\n\n**Feedback**\n\nGot ideas on how to improve the system? Open up an issue on github with the prefix [FEEDBACK] and let's brainstorm more about it together!\n\n# License\n\n[MIT](https://choosealicense.com/licenses/mit/)\n"
  },
  {
    "path": "jest.config.js",
    "content": "module.exports = {\n  \"roots\": [\n    \"<rootDir>/src\",\n    \"<rootDir>/test\"\n  ],\n  \"testMatch\": [\n    \"**/__tests__/**/*.+(ts|tsx|js)\",\n    \"**/?(*.)+(spec|test).+(ts|tsx|js)\"\n  ],\n  \"transform\": {\n    \"^.+\\\\.(ts|tsx)$\": \"ts-jest\"\n  },\n}"
  },
  {
    "path": "package.json",
    "content": "{\n  \"name\": \"@orca-so/sdk\",\n  \"version\": \"1.2.25\",\n  \"description\": \"Typescript SDK for the Orca protocol.\",\n  \"main\": \"dist/index.js\",\n  \"types\": \"dist/index.d.ts\",\n  \"license\": \"MIT\",\n  \"dependencies\": {\n    \"@orca-so/aquafarm\": \"^0.0.12\",\n    \"@orca-so/stablecurve\": \"^1.0.5\",\n    \"@solana/spl-token\": \"^0.1.5\",\n    \"@solana/spl-token-swap\": \"^0.1.2\",\n    \"@solana/web3.js\": \"^1.24.1\",\n    \"decimal.js\": \"^10.3.1\"\n  },\n  \"devDependencies\": {\n    \"@types/bn.js\": \"^4.11.6\",\n    \"@types/decimal.js\": \"^7.4.0\",\n    \"@types/jest\": \"^26.0.24\",\n    \"@types/node\": \"^12.0.0\",\n    \"@typescript-eslint/eslint-plugin\": \"^4.26.0\",\n    \"@typescript-eslint/parser\": \"^4.26.0\",\n    \"builder-pattern\": \"^1.3.0\",\n    \"eslint-config-prettier\": \"^8.3.0\",\n    \"eslint-config-react-app\": \"^6.0.0\",\n    \"husky\": \"^7.0.1\",\n    \"jest\": \"^27.0.6\",\n    \"lint-staged\": \">=10\",\n    \"prettier\": \"^2.3.2\",\n    \"ts-jest\": \"^27.0.3\",\n    \"typescript\": \"^4.3.2\"\n  },\n  \"scripts\": {\n    \"build\": \"tsc -p src\",\n    \"watch\": \"tsc -w -p src\",\n    \"prettier-format\": \"prettier --config .prettierrc 'src/**/*.ts' --write\",\n    \"prepare\": \"husky install\",\n    \"prepublishOnly\": \"tsc -p src\",\n    \"test\": \"jest\"\n  },\n  \"lint-staged\": {\n    \"*.{ts,md}\": \"yarn run prettier-format\"\n  },\n  \"files\": [\n    \"/dist\"\n  ],\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"git+https://github.com/orca-so/typescript-sdk.git\"\n  },\n  \"keywords\": [\n    \"orca_so\",\n    \"orca\",\n    \"solana\",\n    \"typescript\",\n    \"sdk\",\n    \"crypto\",\n    \"dex\"\n  ],\n  \"author\": \"team@orca.so\",\n  \"bugs\": {\n    \"url\": \"https://github.com/orca-so/typescript-sdk/issues\"\n  },\n  \"homepage\": \"https://www.orca.so\"\n}\n"
  },
  {
    "path": "src/constants/devnet/farms.ts",
    "content": "import { PublicKey } from \"@solana/web3.js\";\nimport { OrcaFarmParams } from \"../../model/orca/farm/farm-types\";\n\n/**\n * The following content is auto-generated.\n */\n\nexport const solUsdcAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"CzFnr34cRC1o8yrs5jTHBqDQ1FDckLapkPis6zTfqCF5\"),\n  farmTokenMint: new PublicKey(\"AtJF9fbQ1pbz76NYo2jtKjHuzzyaFToHLCizYk6UoHHL\"),\n  rewardTokenMint: new PublicKey(\"orcarKHSqC5CDDsGbho8GKvwExejWHxTqGzXgcewB9L\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"4GpUivZ2jvZqQ3vJRsoq5PwnYv6gdV9fJ9BzHT2JcRr7\"),\n  baseTokenDecimals: 6,\n});\n\nexport const solUsdtAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"ER1UZsRhzucvXY8xMmXGfbbxb442iTHk2u1rSKRMPakC\"),\n  farmTokenMint: new PublicKey(\"E95ABqtqnJRMG6gqEKZ16dVMfSNDUdCbEYqGUVg3tFRX\"),\n  rewardTokenMint: new PublicKey(\"orcarKHSqC5CDDsGbho8GKvwExejWHxTqGzXgcewB9L\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"2E4Mp6y2gFRteXiANnwzAJEhHwD3NX1wru3XvxJpGBq2\"),\n  baseTokenDecimals: 6,\n});\n\nexport const usdcUsdtAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"D7wWV4nxqEeCAk2UA2nEGWgKw2BgoZYFZFUfwWGBhDF8\"),\n  farmTokenMint: new PublicKey(\"3dDqVehvEpc5HMcbJUAzwMwF54xqa4nNvYN9qis7HAPe\"),\n  rewardTokenMint: new PublicKey(\"orcarKHSqC5CDDsGbho8GKvwExejWHxTqGzXgcewB9L\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"EBor1PR5XNGHjRVB6JDJuKVCQbvdr1CVZTaX1hTAdvQv\"),\n  baseTokenDecimals: 6,\n});\n\nexport const ethSolAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"3q4wtMRT2yKHzQGy6gxwD34i9rsafviKd78rpdDLrBfk\"),\n  farmTokenMint: new PublicKey(\"5NH9rNaoLKbPPP5zwCJTaMPkFACtfJA8wEmqWrXzgCMa\"),\n  rewardTokenMint: new PublicKey(\"orcarKHSqC5CDDsGbho8GKvwExejWHxTqGzXgcewB9L\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"8sFnpd7mM1AWxP1LXX2FWbbkaVtAopBPmPNZ9y6172WL\"),\n  baseTokenDecimals: 6,\n});\n\nexport const ethUsdcAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"3aRTv8TGtZkX4dsM4N9aUHKotcwRr6phWPHXPLN8DEYX\"),\n  farmTokenMint: new PublicKey(\"EeqPcczEZH2cjYBnQyGXBQx1DGs7KG1pobwdPKcwALhD\"),\n  rewardTokenMint: new PublicKey(\"orcarKHSqC5CDDsGbho8GKvwExejWHxTqGzXgcewB9L\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"9pRnvg7ihSJDLi6DGf3PLwr6xRRRrBPXsHYEgGL5hzgA\"),\n  baseTokenDecimals: 6,\n});\n\nexport const orcaSolAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"6YrLcQs5yFvXkRY5VkMGEfVgo5rwozJf7jXedpZxbKmi\"),\n  farmTokenMint: new PublicKey(\"3z8o3b4gMBpnRsrDv7ruZPcVtgoULMFyEoEEGwTsw2TR\"),\n  rewardTokenMint: new PublicKey(\"orcarKHSqC5CDDsGbho8GKvwExejWHxTqGzXgcewB9L\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"CmDdQhusZWyi9fue27VSktYgkHefm3JXNdzc9kCpyvYi\"),\n  baseTokenDecimals: 6,\n});\n\nexport const orcaUsdcAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"44GPPv5XedLXCNCc3Mbay1T18vc6x2bWihmmg7UJanvH\"),\n  farmTokenMint: new PublicKey(\"52Tv8d6Z7Lb27dqCufZPUqadZBTv3EAKGzoV6hy185As\"),\n  rewardTokenMint: new PublicKey(\"orcarKHSqC5CDDsGbho8GKvwExejWHxTqGzXgcewB9L\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"2ZEEntzoUN7XuMs88ukLGv5HRR1byL7wFWChryF5ZHri\"),\n  baseTokenDecimals: 6,\n});\n\nexport const solUsdcDoubleDip: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"L3XdTwLLtZRrXqSk5mqcBKaorqgmM2AMDGmzfBuhLMd\"),\n  farmTokenMint: new PublicKey(\"7AYG2y3je8TqcLsugNkV6aPw14QyqdVFmK5EegeJmRFi\"),\n  rewardTokenMint: new PublicKey(\"Ff5JqsAYUD4vAfQUtfRprT4nXu9e28tTBZTDFMnJNdvd\"),\n  rewardTokenDecimals: 9,\n  baseTokenMint: new PublicKey(\"AtJF9fbQ1pbz76NYo2jtKjHuzzyaFToHLCizYk6UoHHL\"),\n  baseTokenDecimals: 6,\n});\n\nexport const ethSolDoubleDip: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"5jGfcgoRNpZPwfiRTp5zxNpEKP3PTeM3F9EKS9EsvX67\"),\n  farmTokenMint: new PublicKey(\"5Uv5T1BksJGKGFGVpfxGeGniFFgGLjavNpPWGkfUFNkr\"),\n  rewardTokenMint: new PublicKey(\"6PE3Mwjzx9h8kCoBp5YPed9TFoG7du8L98yucBP5ps3x\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"5NH9rNaoLKbPPP5zwCJTaMPkFACtfJA8wEmqWrXzgCMa\"),\n  baseTokenDecimals: 6,\n});\n\nexport const ethUsdcDoubleDip: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"B4CTmaFpNRtXL3ZLiLrgbMZknQHFdoGu4V9tbzsjFbRT\"),\n  farmTokenMint: new PublicKey(\"5jdeMPvNrscuw8abZFf99X9kcxDhANcpuBHDNpnx7YPT\"),\n  rewardTokenMint: new PublicKey(\"EmXq3Ni9gfudTiyNKzzYvpnQqnJEMRw2ttnVXoJXjLo1\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"EeqPcczEZH2cjYBnQyGXBQx1DGs7KG1pobwdPKcwALhD\"),\n  baseTokenDecimals: 6,\n});\n\n/**\n * Mapping for OrcaFarm parameters\n * Key: baseTokenMint : OrcaFarmParams\n */\nexport const orcaDevnetFarmConfigs: Record<string, OrcaFarmParams> = {\n  \"4GpUivZ2jvZqQ3vJRsoq5PwnYv6gdV9fJ9BzHT2JcRr7\": solUsdcAqFarm,\n  \"2E4Mp6y2gFRteXiANnwzAJEhHwD3NX1wru3XvxJpGBq2\": solUsdtAqFarm,\n  EBor1PR5XNGHjRVB6JDJuKVCQbvdr1CVZTaX1hTAdvQv: usdcUsdtAqFarm,\n  \"8sFnpd7mM1AWxP1LXX2FWbbkaVtAopBPmPNZ9y6172WL\": ethSolAqFarm,\n  \"9pRnvg7ihSJDLi6DGf3PLwr6xRRRrBPXsHYEgGL5hzgA\": ethUsdcAqFarm,\n  CmDdQhusZWyi9fue27VSktYgkHefm3JXNdzc9kCpyvYi: orcaSolAqFarm,\n  \"2ZEEntzoUN7XuMs88ukLGv5HRR1byL7wFWChryF5ZHri\": orcaUsdcAqFarm,\n  AtJF9fbQ1pbz76NYo2jtKjHuzzyaFToHLCizYk6UoHHL: solUsdcDoubleDip,\n  \"5NH9rNaoLKbPPP5zwCJTaMPkFACtfJA8wEmqWrXzgCMa\": ethSolDoubleDip,\n  EeqPcczEZH2cjYBnQyGXBQx1DGs7KG1pobwdPKcwALhD: ethUsdcDoubleDip,\n};\n"
  },
  {
    "path": "src/constants/devnet/index.ts",
    "content": "export { orcaDevnetPoolConfigs } from \"./pools\";\nexport { orcaDevnetFarmConfigs } from \"./farms\";\n"
  },
  {
    "path": "src/constants/devnet/pools.ts",
    "content": "import { PublicKey } from \"@solana/web3.js\";\nimport { CurveType, OrcaPoolParams } from \"../../model/orca/pool/pool-types\";\nimport { Percentage } from \"../../public/utils/models/percentage\";\nimport * as Tokens from \"./tokens\";\n\n/**\n * The following content is auto-generated.\n */\n\nexport const solUsdcPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"8DT1oKJPHcdJzdSf3cb2WT7L8eRjLUJeDFSe7M2QDtQE\"),\n  nonce: 255,\n  authority: new PublicKey(\"BVSZP6RsqAtjvuJrXYsYN5U4XY7pLwW4PawfgVPkLbjN\"),\n  poolTokenMint: new PublicKey(\"4GpUivZ2jvZqQ3vJRsoq5PwnYv6gdV9fJ9BzHT2JcRr7\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"HPzaLqtZGhTbs7WcdGMfLswKze28W75nrYytNSw7qdvi\"),\n  tokenIds: [Tokens.solToken.mint.toString(), Tokens.usdcToken.mint.toString()],\n  tokens: {\n    [Tokens.solToken.mint.toString()]: {\n      ...Tokens.solToken,\n      addr: new PublicKey(\"4ShvTPQ3jYZzwUpxoQFSCDZxLtxQYNPUfeL3sR9mzLjJ\"),\n    },\n    [Tokens.usdcToken.mint.toString()]: {\n      ...Tokens.usdcToken,\n      addr: new PublicKey(\"9eKgmUSfTkQLRBvowV9zjY3BbhAQVaGSw1jfon5UwUJM\"),\n    },\n  },\n  curveType: CurveType.ConstantProduct,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(25, 10000),\n    ownerFee: Percentage.fromFraction(5, 10000),\n  },\n});\n\nexport const solUsdtPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"65AsoozQfBedPU3rGCB7CfBbSFhiFGaVQaeoF9mLFM3g\"),\n  nonce: 255,\n  authority: new PublicKey(\"59Pu3srqBDSgWrSJKuh7xcb5omJeVkMw41eFswDWKPat\"),\n  poolTokenMint: new PublicKey(\"2E4Mp6y2gFRteXiANnwzAJEhHwD3NX1wru3XvxJpGBq2\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"HmRP17zbgJUPPeueLjT2b1HVKt16CTixSJX6UpGkkZnp\"),\n  tokenIds: [Tokens.solToken.mint.toString(), Tokens.usdtToken.mint.toString()],\n  tokens: {\n    [Tokens.solToken.mint.toString()]: {\n      ...Tokens.solToken,\n      addr: new PublicKey(\"BhJsBxGoe39HWtwFTCxRZGhPNVZ5x9Rr2gFzNsaA6ES8\"),\n    },\n    [Tokens.usdtToken.mint.toString()]: {\n      ...Tokens.usdtToken,\n      addr: new PublicKey(\"Ea2gPV96MQthA5CCS4NincVidxsN8JifWhBoMJVHx8mZ\"),\n    },\n  },\n  curveType: CurveType.ConstantProduct,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(25, 10000),\n    ownerFee: Percentage.fromFraction(5, 10000),\n  },\n});\n\nexport const usdcUsdtPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"4UJqLypzZzDvoAWCLt6qWEoddMYoSLjrJEB13AfRmV68\"),\n  nonce: 255,\n  authority: new PublicKey(\"52Sp73fASLtZhBPyZu7rQoejG9sNzpNLaTTF4mJJGZge\"),\n  poolTokenMint: new PublicKey(\"EBor1PR5XNGHjRVB6JDJuKVCQbvdr1CVZTaX1hTAdvQv\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"6RjV63TfeJDL7K6j8cUnaT6mWXKxqsrDFrumvqGRwss6\"),\n  tokenIds: [Tokens.usdcToken.mint.toString(), Tokens.usdtToken.mint.toString()],\n  tokens: {\n    [Tokens.usdcToken.mint.toString()]: {\n      ...Tokens.usdcToken,\n      addr: new PublicKey(\"Fp9PioKwFc6vmQZ5yB2pPSSx5VqkLhgX21dQYug79yUQ\"),\n    },\n    [Tokens.usdtToken.mint.toString()]: {\n      ...Tokens.usdtToken,\n      addr: new PublicKey(\"GazSkg8GU4cti8Dm1cYD74CQf9UXQdUzBsP27YhC4SCt\"),\n    },\n  },\n  curveType: CurveType.Stable,\n  amp: 100,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(9, 10000),\n    ownerFee: Percentage.fromFraction(1, 10000),\n  },\n});\n\nexport const ethSolPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"F9MgdfFEshXCTGbppcVr2DzpVxqkiVowGqd95S4vpC6D\"),\n  nonce: 251,\n  authority: new PublicKey(\"FD1UJqbXtiYnMcKxcDG4MYY1vasupm2sYXAkStQhSpTb\"),\n  poolTokenMint: new PublicKey(\"8sFnpd7mM1AWxP1LXX2FWbbkaVtAopBPmPNZ9y6172WL\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"8zyAMewVQuHBxJeqn5oRvanDaaEZ9uYxjHxJ9DYCRsgn\"),\n  tokenIds: [Tokens.ethToken.mint.toString(), Tokens.solToken.mint.toString()],\n  tokens: {\n    [Tokens.ethToken.mint.toString()]: {\n      ...Tokens.ethToken,\n      addr: new PublicKey(\"FJetz1Du8p2NWmfa9DNvHR8zC42tUCHsY3YfnkZNyZfT\"),\n    },\n    [Tokens.solToken.mint.toString()]: {\n      ...Tokens.solToken,\n      addr: new PublicKey(\"37o62xYE1a43Ap8neq6SdrutxQKFsFHicRamkcjHigKs\"),\n    },\n  },\n  curveType: CurveType.ConstantProduct,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(25, 10000),\n    ownerFee: Percentage.fromFraction(5, 10000),\n  },\n});\n\nexport const ethUsdcPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"CVH3UX1fePV3fn4dE2irNgni2uRkPdEWyZeCZS5b63F3\"),\n  nonce: 255,\n  authority: new PublicKey(\"3uf9wngmqKdBdrWPM9iKsXQE829sg7gH9oJghcrpePhh\"),\n  poolTokenMint: new PublicKey(\"9pRnvg7ihSJDLi6DGf3PLwr6xRRRrBPXsHYEgGL5hzgA\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"9AekLW8Dq5T1XnLLC2rQscS4Y5YN2QwrYA7eaGdq7Xje\"),\n  tokenIds: [Tokens.ethToken.mint.toString(), Tokens.usdcToken.mint.toString()],\n  tokens: {\n    [Tokens.ethToken.mint.toString()]: {\n      ...Tokens.ethToken,\n      addr: new PublicKey(\"C7eYGeiroWzuPgqruxRmgj3xw978gRZpPTov2kqxBRpx\"),\n    },\n    [Tokens.usdcToken.mint.toString()]: {\n      ...Tokens.usdcToken,\n      addr: new PublicKey(\"DRdNFrRqWpqQHhJDymyZvgHBH2vTkUo5jzzTwWy7RT4h\"),\n    },\n  },\n  curveType: CurveType.ConstantProduct,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(25, 10000),\n    ownerFee: Percentage.fromFraction(5, 10000),\n  },\n});\n\nexport const orcaSolPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"B4v9urCKnrdCMWt7rEPyA5xyuEeYQv4aDpCfGFVaCvox\"),\n  nonce: 252,\n  authority: new PublicKey(\"38Q2148y3BKU6pDUfv1zpeEeKNuDHBH34WdEwo5EiTfe\"),\n  poolTokenMint: new PublicKey(\"CmDdQhusZWyi9fue27VSktYgkHefm3JXNdzc9kCpyvYi\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"EEWAuP2d1KbwX14dgHwxXspPMYfxXvgf4CNRYvMakPHg\"),\n  tokenIds: [Tokens.orcaToken.mint.toString(), Tokens.solToken.mint.toString()],\n  tokens: {\n    [Tokens.orcaToken.mint.toString()]: {\n      ...Tokens.orcaToken,\n      addr: new PublicKey(\"HsGXFtv1uBTtWuPCEJWpxZS4QkcHwAhdPaMVSvS4fhtv\"),\n    },\n    [Tokens.solToken.mint.toString()]: {\n      ...Tokens.solToken,\n      addr: new PublicKey(\"3coXPvurzHQ6sYLrYi8zGWG7SLVv9mHnbqmchjKgPEmz\"),\n    },\n  },\n  curveType: CurveType.ConstantProduct,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(25, 10000),\n    ownerFee: Percentage.fromFraction(5, 10000),\n  },\n});\n\nexport const orcaUsdcPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"GaCKuVZyo6HxUf6bkcWzDETGHqqViF6H77ax7Uxq3LXU\"),\n  nonce: 255,\n  authority: new PublicKey(\"3KVqBR9cB4tNHwpNPZtedegXbQ8FbWgjzk5oob7QRnHt\"),\n  poolTokenMint: new PublicKey(\"2ZEEntzoUN7XuMs88ukLGv5HRR1byL7wFWChryF5ZHri\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"9yVp1tUHNxorNZgXAs6thPeizCryHTebjKG4P8uUdXuv\"),\n  tokenIds: [Tokens.orcaToken.mint.toString(), Tokens.usdcToken.mint.toString()],\n  tokens: {\n    [Tokens.orcaToken.mint.toString()]: {\n      ...Tokens.orcaToken,\n      addr: new PublicKey(\"7KAqhu58omLjKjg1XNSw28JULED82mnA1vvAMVoAdA6T\"),\n    },\n    [Tokens.usdcToken.mint.toString()]: {\n      ...Tokens.usdcToken,\n      addr: new PublicKey(\"8E2CH9fPNXbc5pqu1dWWkNsNZWvLcBEXdBnzzXuhvJNL\"),\n    },\n  },\n  curveType: CurveType.ConstantProduct,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(25, 10000),\n    ownerFee: Percentage.fromFraction(5, 10000),\n  },\n});\n\n/**\n * Mapping for OrcaPool parameters\n * Key: poolTokenMint : OrcaPoolParams\n */\nexport const orcaDevnetPoolConfigs: Record<string, OrcaPoolParams> = {\n  \"4GpUivZ2jvZqQ3vJRsoq5PwnYv6gdV9fJ9BzHT2JcRr7\": solUsdcPool,\n  \"2E4Mp6y2gFRteXiANnwzAJEhHwD3NX1wru3XvxJpGBq2\": solUsdtPool,\n  EBor1PR5XNGHjRVB6JDJuKVCQbvdr1CVZTaX1hTAdvQv: usdcUsdtPool,\n  \"8sFnpd7mM1AWxP1LXX2FWbbkaVtAopBPmPNZ9y6172WL\": ethSolPool,\n  \"9pRnvg7ihSJDLi6DGf3PLwr6xRRRrBPXsHYEgGL5hzgA\": ethUsdcPool,\n  CmDdQhusZWyi9fue27VSktYgkHefm3JXNdzc9kCpyvYi: orcaSolPool,\n  \"2ZEEntzoUN7XuMs88ukLGv5HRR1byL7wFWChryF5ZHri\": orcaUsdcPool,\n};\n"
  },
  {
    "path": "src/constants/devnet/tokens.ts",
    "content": "import { PublicKey } from \"@solana/web3.js\";\nimport { OrcaToken } from \"../..\";\n\n/**\n * The following content is auto-generated.\n */\n\nexport const ethToken: OrcaToken = Object.freeze({\n  tag: \"ETH\",\n  name: \"Ethereum\",\n  mint: new PublicKey(\"Ff5JqsAYUD4vAfQUtfRprT4nXu9e28tTBZTDFMnJNdvd\"),\n  scale: 9,\n});\n\nexport const orcaToken: OrcaToken = Object.freeze({\n  tag: \"ORCA\",\n  name: \"Orca\",\n  mint: new PublicKey(\"orcarKHSqC5CDDsGbho8GKvwExejWHxTqGzXgcewB9L\"),\n  scale: 6,\n});\n\nexport const solToken: OrcaToken = Object.freeze({\n  tag: \"SOL\",\n  name: \"Solana\",\n  mint: new PublicKey(\"So11111111111111111111111111111111111111112\"),\n  scale: 9,\n});\n\nexport const usdcToken: OrcaToken = Object.freeze({\n  tag: \"USDC\",\n  name: \"USD Coin\",\n  mint: new PublicKey(\"EmXq3Ni9gfudTiyNKzzYvpnQqnJEMRw2ttnVXoJXjLo1\"),\n  scale: 6,\n});\n\nexport const usdtToken: OrcaToken = Object.freeze({\n  tag: \"USDT\",\n  name: \"Tether USD\",\n  mint: new PublicKey(\"6PE3Mwjzx9h8kCoBp5YPed9TFoG7du8L98yucBP5ps3x\"),\n  scale: 6,\n});\n"
  },
  {
    "path": "src/constants/farms.ts",
    "content": "import { PublicKey } from \"@solana/web3.js\";\nimport { OrcaFarmParams } from \"../model/orca/farm/farm-types\";\n\n/**\n * The following content is auto-generated.\n */\n\nexport const solUsdcAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"85HrPbJtrN82aeB74WTwoFxcNgmf5aDNP2ENngbDpd5G\"),\n  farmTokenMint: new PublicKey(\"FFdjrSvNALfdgxANNpt3x85WpeVMdQSH5SEP2poM8fcK\"),\n  rewardTokenMint: new PublicKey(\"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"APDFRM3HMr8CAGXwKHiu2f5ePSpaiEJhaURwhsRrUUt9\"),\n  baseTokenDecimals: 6,\n});\n\nexport const solUsdtAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"4RRRJkscV2DmwJUxTQgRdYock75GfwYJn7LTxy9rGTmY\"),\n  farmTokenMint: new PublicKey(\"71vZ7Jvu8fTyFzpX399dmoSovoz24rVbipLrRn2wBNzW\"),\n  rewardTokenMint: new PublicKey(\"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"FZthQCuYHhcfiDma7QrX7buDHwrZEd7vL8SjS6LQa3Tx\"),\n  baseTokenDecimals: 6,\n});\n\nexport const ethSolAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"3ARgavt1NhqLmJWj3wAJy6XBarG6pJbEKRv1wzzRbbaN\"),\n  farmTokenMint: new PublicKey(\"CGFTRh4jKLPbS9r4hZtbDfaRuC7qcA8rZpbLnVTzJBer\"),\n  rewardTokenMint: new PublicKey(\"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"71FymgN2ZUf7VvVTLE8jYEnjP3jSK1Frp2XT1nHs8Hob\"),\n  baseTokenDecimals: 6,\n});\n\nexport const ethUsdcAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"FpezTR76RRjgpBb9HhR6ap8BgQfkHyNMQSqJDcoXpjAb\"),\n  farmTokenMint: new PublicKey(\"HDP2AYFmvLz6sWpoSuNS62JjvW4HjMKp7doXucqpWN56\"),\n  rewardTokenMint: new PublicKey(\"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"3e1W6Aqcbuk2DfHUwRiRcyzpyYRRjg6yhZZcyEARydUX\"),\n  baseTokenDecimals: 6,\n});\n\nexport const raySolAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"B1aByG1fU5yUgQT2EtJrp96SC4tJhnipzdXqHx2CXRgj\"),\n  farmTokenMint: new PublicKey(\"AUkn5f4N4TqPA5BiWirTDHWnG3SePfmeDpDqrFmhSgKb\"),\n  rewardTokenMint: new PublicKey(\"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"5kimD5W6yJpHRHCyPtnEyDsQRdiiJKivu5AqN3si82Jc\"),\n  baseTokenDecimals: 6,\n});\n\nexport const ropeSolAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"NFsHa28zxuLnncHme7iLx8TXWV8ypyxPvEPaQh29zDh\"),\n  farmTokenMint: new PublicKey(\"xpPyQwQ1HXHyEpvFGyTQRLY6rmj6jtAdEgLMV5uoz4m\"),\n  rewardTokenMint: new PublicKey(\"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"ADrvfPBsRcJfGsN6Bs385zYddH52nuM5FA8UaAkX9o2V\"),\n  baseTokenDecimals: 6,\n});\n\nexport const stepSolAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"DGtiR1LWNPGV9A5byh7EjAoh9NC2cW5YDcmxCpUJosD2\"),\n  farmTokenMint: new PublicKey(\"GwrBA1F8rGummDCDd8NY9Eu1cLNuJqbT8WaGxgWpFwGL\"),\n  rewardTokenMint: new PublicKey(\"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"8nTzqDXHriG2CXKbybeuEh1EqDQMtrbYMFWcP7AkiDaP\"),\n  baseTokenDecimals: 6,\n});\n\nexport const srmSolAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"5CQVdPpaW95X1atyfqunZf7eBE1rhQBXMfgJ1wRVF1p1\"),\n  farmTokenMint: new PublicKey(\"D659zwnbeTgquChbaWC3KDHrkYoqMuz1doGLHTFaqTtD\"),\n  rewardTokenMint: new PublicKey(\"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"9tf8rBSEQYG7AqL896fN2nZi1iYPqpWaLEdpbeQaC1Vy\"),\n  baseTokenDecimals: 6,\n});\n\nexport const fttSolAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"GzZE2CEemaTGNtRSYs9sArAJFuJi5kwsPJFyz5puYhsj\"),\n  farmTokenMint: new PublicKey(\"9r9BcPwCon96P5Y6JSdRAog7Uknz9p9GrnuHm4VzuB9k\"),\n  rewardTokenMint: new PublicKey(\"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"EsYaDKJCmcJtJHFuJYwQZwqohvVMCrFzcg8yo3i328No\"),\n  baseTokenDecimals: 6,\n});\n\nexport const copeSolAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"CXYEVaqtDs4R9Bpeu4xYf8KT8S6nYis6VWkDEh9Mu1FS\"),\n  farmTokenMint: new PublicKey(\"7CT19h7n2YBKiCFCaxXqMM79jNM4cmUvjXhNMjJNRYa\"),\n  rewardTokenMint: new PublicKey(\"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"CzieDbGRdN1QGaGDNpSqzEA18bi881ccvkkGZi51pe1k\"),\n  baseTokenDecimals: 6,\n});\n\nexport const oxySolAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"ALmRst1DksKXVfY64KXq7pJUUG5PP56kwY18ijVDGAsz\"),\n  farmTokenMint: new PublicKey(\"G48RkwsNYd3A4rBfuQhCswr9YUE63fFmZGyhgH95dq3S\"),\n  rewardTokenMint: new PublicKey(\"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"7tYCdLN84EnTMkxM7HNamWJx7F4xgKe9KiiWvLyWjbgT\"),\n  baseTokenDecimals: 6,\n});\n\nexport const btcSolAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"EeG5AAnFS56AveUrKexzivQeUdWhm6zYq6ubn6fLMCQa\"),\n  farmTokenMint: new PublicKey(\"GxmjQZvgwNCh3QSRNB8CPED81hzySem62PDDuMp4B379\"),\n  rewardTokenMint: new PublicKey(\"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"Acxs19v6eUMTEfdvkvWkRB4bwFCHm3XV9jABCy7c1mXe\"),\n  baseTokenDecimals: 6,\n});\n\nexport const merSolAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"8gJggSfM35JpfvXmEsuJoHPLB8D6br15MEWEWdQF81d6\"),\n  farmTokenMint: new PublicKey(\"CrKVRnH6iGbFXxEnXMn3Emwv3Fe7VwxEqpA8zNbwsgkH\"),\n  rewardTokenMint: new PublicKey(\"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"HiwRobjfHZ4zsPtqCC4oBS24pSmy4t8GGkXRbQj4yU6L\"),\n  baseTokenDecimals: 6,\n});\n\nexport const fidaSolAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"4X3U1tpfiwQ5zPPd4oQSPcu3UK7nMSUWyAXxCmcSA6qP\"),\n  farmTokenMint: new PublicKey(\"4geGcEfgVjzJGZAaT8iTicPm1XLDPjdSpVhtA99sZ7jX\"),\n  rewardTokenMint: new PublicKey(\"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"EYsNdtyu4gGTaGz8N5m5iQ3G1N6rDyMbR72B3CqbWW4W\"),\n  baseTokenDecimals: 6,\n});\n\nexport const mapsSolAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"Gobr8FhZDtn8yxkFQDND3KmfuwZseWEuyZ3xpD56hk1i\"),\n  farmTokenMint: new PublicKey(\"7Dy84zJNHzEM9335BrtFjCuunt2VgxJ7KBT6PJarxKMq\"),\n  rewardTokenMint: new PublicKey(\"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"99pfC8fWymXgbq3CvrExhx3UxQDC1fMWEWLbNT83F45e\"),\n  baseTokenDecimals: 6,\n});\n\nexport const usdcUsdtAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"5psKJrxWnPmoAbCxk3An2CGh7wHAX2cWddf5vZuYbbVw\"),\n  farmTokenMint: new PublicKey(\"GjpXgKwn4VW4J2pZdS3dovM58hiXWLJtopTfqG83zY2f\"),\n  rewardTokenMint: new PublicKey(\"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"H2uzgruPvonVpCRhwwdukcpXK8TG17swFNzYFr2rtPxy\"),\n  baseTokenDecimals: 6,\n});\n\nexport const orcaSolAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"F6pi7SyXWx56fP96mYQ4Yfh4yZ7oGNtDjwSYHT5Mz7Ld\"),\n  farmTokenMint: new PublicKey(\"B5waaKnsmtqFawPspUwcuy1cRjAC7u2LrHSwxPSxK4sZ\"),\n  rewardTokenMint: new PublicKey(\"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"2uVjAuRXavpM6h1scGQaxqb6HVaNRn6T2X7HHXTabz25\"),\n  baseTokenDecimals: 6,\n});\n\nexport const orcaUsdcAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"9S1BsxbDNQXQccjFamVEGgxiYQHTeudvhEYwFr4oWeaf\"),\n  farmTokenMint: new PublicKey(\"Gc7W5U66iuHQcC1cQyeX9hxkPF2QUVJPTf1NWbW8fNrt\"),\n  rewardTokenMint: new PublicKey(\"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"n8Mpu28RjeYD7oUX3LG1tPxzhRZh3YYLRSHcHRdS3Zx\"),\n  baseTokenDecimals: 6,\n});\n\nexport const kinSolAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"9XTA3t3X8KaeLgkv7XuDWATo4oDwBnTZqjnSPcE5ijYK\"),\n  farmTokenMint: new PublicKey(\"7Ho3ht7krdFELBcPAsGXFfQMyG4PUvYSfpz4aNBRP3Ek\"),\n  rewardTokenMint: new PublicKey(\"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"HEvnD66WcBfTajS9adUYnGRBMDehFtLySiFHSD6kEBWs\"),\n  baseTokenDecimals: 6,\n});\n\nexport const samoSolAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"98EDd1L47pdW1F7ne82dyFXpfhVdEcrCqUF1dYrWLFZi\"),\n  farmTokenMint: new PublicKey(\"CNf8gZtLahBWxKe3YwsqywLHMTewGqvq6pJ5ecg3cTYU\"),\n  rewardTokenMint: new PublicKey(\"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"D6N9j8F2DhtzDtrdpT74y3u2YmYAzcggiLc3nTjqux9M\"),\n  baseTokenDecimals: 6,\n});\n\nexport const liqUsdcAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"z2WHNcBJTZqbK5wCuBPtswEq2614T6si1cJmog7vFAL\"),\n  farmTokenMint: new PublicKey(\"57vGdcMZLnbNr4TZ4hgrpGJZGR9vTPhu8L9bNKDrqxKT\"),\n  rewardTokenMint: new PublicKey(\"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"3PD9SZFwXKkXr4akLf4ofo37ZUMycwML89R2P3qxcbZG\"),\n  baseTokenDecimals: 6,\n});\n\nexport const snyUsdcAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"7qAQZxYQRcmHmz3Wi9NeieujwLSd3N41M4dJipgSCNsB\"),\n  farmTokenMint: new PublicKey(\"6Qw5Gzf1TkM3YRe7Dh6yMVMo2wnJxRiCUBP8abTTn9Yg\"),\n  rewardTokenMint: new PublicKey(\"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"AZpo4BJHHRetF96v6SGinFZBMXM4yWMo4RA8C4PriDLk\"),\n  baseTokenDecimals: 6,\n});\n\nexport const msolUsdcAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"EvtMzreDMq1U8ytV5fEmfoWNfPhrjZ87za835GuRvZCc\"),\n  farmTokenMint: new PublicKey(\"5r3vDsNTGXXb9cGQfqyNuYD2bjhRPymGJBfDmKosR9Ev\"),\n  rewardTokenMint: new PublicKey(\"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"8PSfyiTVwPb6Rr2iZ8F3kNpbg65BCfJM9v8LfB916r44\"),\n  baseTokenDecimals: 6,\n});\n\nexport const slrsUsdcAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"5XXw91d4HoLjqhUhXmUcdkCDtQyXvQkLJMUcYJkKn5Dx\"),\n  farmTokenMint: new PublicKey(\"66xCxkffQZKBZLiHV3PDcfR8ANJTfnDRxPCaBdv4wxB7\"),\n  rewardTokenMint: new PublicKey(\"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"AtB4nUmdyQfuWWJ9xAHw9xyVnJFfSjSuVWkiYan8y86w\"),\n  baseTokenDecimals: 6,\n});\n\nexport const portUsdcAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"FpEb4eEqhnPBAA2RNvsSe8baCoev4mSNQjxKPGvx5Gjv\"),\n  farmTokenMint: new PublicKey(\"4CGxvZdwiZgVMLXiTdJHTkJRUTpTSJCtmtCRbSkAxerE\"),\n  rewardTokenMint: new PublicKey(\"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"F8gPSpwVHj8FdAJAYULDuZBxFEJut87hUbARYYx3471w\"),\n  baseTokenDecimals: 6,\n});\n\nexport const sbrUsdcAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"EWRNKpLc4Y8r6Aur9mo8GtBYatqfoML9A7bfEmDv2JD4\"),\n  farmTokenMint: new PublicKey(\"Cum6sRPGpWYQHZapekDtMhbZ1BQ2QkYv9PAwQjypxMVo\"),\n  rewardTokenMint: new PublicKey(\"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"CS7fA5n4c2D82dUoHrYzS3gAqgqaoVSfgsr18kitp2xo\"),\n  baseTokenDecimals: 6,\n});\n\nexport const scnsolUsdcAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"5MzBKRo6YqK1BKBz67sXd42jrb6gYzBuX6R5F8ywC33e\"),\n  farmTokenMint: new PublicKey(\"7YFfqZGTxkj3Zeq3Et23kMznCaEYZ1WBZDt6CVrxwfqd\"),\n  rewardTokenMint: new PublicKey(\"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"Dkr8B675PGnNwEr9vTKXznjjHke5454EQdz3iaSbparB\"),\n  baseTokenDecimals: 6,\n});\n\nexport const psolUsdcAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"4TK569s8SLgzmEcihyhrH8GmqFsufjZqsvHs8zrPEZYP\"),\n  farmTokenMint: new PublicKey(\"8kWk6CuCAfaxhWQZvQva6qkB1DkWNHq9LRKKN6n9joUG\"),\n  rewardTokenMint: new PublicKey(\"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"C2YzN6MymD5HM2kPaH7bzcbqciyjfmpqyVaR3KA5V6z1\"),\n  baseTokenDecimals: 6,\n});\n\nexport const msolSolAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"JADWjBW1Xs8WhW8kj3GTCRQn3LR4gwvbFTEMwv9ZNxQh\"),\n  farmTokenMint: new PublicKey(\"3RTGL7gPF4V1ns1AeGFApT7cBEGVDfmJ77DqQi9AC6uG\"),\n  rewardTokenMint: new PublicKey(\"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"29cdoMgu6MS2VXpcMo1sqRdWEzdUR9tjvoh8fcK8Z87R\"),\n  baseTokenDecimals: 6,\n});\n\nexport const orcaPaiAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"8KBSXu7zFjvbVXiwf1opGNBx3evVwdpaYHWR3uc4HVR6\"),\n  farmTokenMint: new PublicKey(\"4aEi4A91hRbERJVDYxRWbbSrBrsxoM1Hm33KRoRzWMht\"),\n  rewardTokenMint: new PublicKey(\"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"C7TH2jEJJaxVwwuvkbcDGfHUiZvEkkeYjyAcdTMi5ujb\"),\n  baseTokenDecimals: 6,\n});\n\nexport const orcaMsolAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"7EVKT4iqfjiyzeVrafs23JrfhSoLd6XTanVuENNvisq7\"),\n  farmTokenMint: new PublicKey(\"3Duk5b6fLztPmS4ryV48FM1Q9WXUSMwz9jehAT4UtqpE\"),\n  rewardTokenMint: new PublicKey(\"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"CVapmQn7HaU1yMDW3q6oUV4hx6XoYv54T4zfGXkuJqkA\"),\n  baseTokenDecimals: 6,\n});\n\nexport const scnsolSolAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"5cE7V9D13k1P1qC23g5vcQEMsvrDzL5yFHhiesVUyn93\"),\n  farmTokenMint: new PublicKey(\"CNqmEKGjZUUARVFHcz4w9CvX5pR8Ae2c6imHDNqsbxgj\"),\n  rewardTokenMint: new PublicKey(\"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"APNpzQvR91v1THbsAyG3HHrUEwvexWYeNCFLQuVnxgMc\"),\n  baseTokenDecimals: 6,\n});\n\nexport const atlasUsdcAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"G92aJeZBCFiECwrKSQsbobfykh6cNLCf5Pd3zkiLjGLe\"),\n  farmTokenMint: new PublicKey(\"HFmY1ggCsCky1zJ1sfdkNR4zb3u5n38YNRdf4vsGu17t\"),\n  rewardTokenMint: new PublicKey(\"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"FZ8x1LCRSPDeHBDoAc3Gc6Y7ETCynuHEr5q5YWV7uRCJ\"),\n  baseTokenDecimals: 6,\n});\n\nexport const polisUsdcAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"5NkDw3LcFscf5WSxUiquNregP6RaP79Y2pN1jyUYepzc\"),\n  farmTokenMint: new PublicKey(\"63JUKLnCAuNMPSPioEgbjjzp9Qk8qSEEM8eZqEtPqfLU\"),\n  rewardTokenMint: new PublicKey(\"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"GteBdo9sqE7T41G8AJsaG9WHW48uXBwsLLznmu2TBdgy\"),\n  baseTokenDecimals: 6,\n});\n\nexport const bopUsdcAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"4bmbPAxrf5NLAD6A5fkhKhmuffdGScpu9Ei39YEaPATQ\"),\n  farmTokenMint: new PublicKey(\"A7vvbqENJj8kED3ABjphe8TvwpasQYtoWGKpjpLArMxa\"),\n  rewardTokenMint: new PublicKey(\"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"2gXDJZ7XAtQEtf4PRSQZKoq1WMuu1H44tQanbMA3YVpu\"),\n  baseTokenDecimals: 6,\n});\n\nexport const samoUsdcAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"F5ZvDWRVpQP5A17RFogL4dE7gZ2Uda7ZqKUy3DWJDEFx\"),\n  farmTokenMint: new PublicKey(\"9voVuTq1S9bFZkF2Jo44HoVG63w2xDRT8eBzB23YbQud\"),\n  rewardTokenMint: new PublicKey(\"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"6VK1ksrmYGMBWUUZfygGF8tHRGpNxQEWv8pfvzQHdyyc\"),\n  baseTokenDecimals: 6,\n});\n\nexport const ninjaSolAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"B8Q8e1hdCw6fhnSKmsMCrsDbvSNLZyzHjnPpwZKBkcSB\"),\n  farmTokenMint: new PublicKey(\"7YyhptkxY81HPzFVfyCzA5UXxWdsNRD41ofLva3TuSpd\"),\n  rewardTokenMint: new PublicKey(\"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"4X1oYoFWYtLebk51zuh889r1WFLe8Z9qWApj87hQMfML\"),\n  baseTokenDecimals: 6,\n});\n\nexport const slimUsdcAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"3muHEhQLmt7jmaicMHqe6LqXrrfFtqEuAfBog2fAXhRm\"),\n  farmTokenMint: new PublicKey(\"3K7aZhtwWJ2JS6GnbbgeDVnxd1q2hwhqasmgRsAMZ4yC\"),\n  rewardTokenMint: new PublicKey(\"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"BVWwyiHVHZQMPHsiW7dZH7bnBVKmbxdeEjWqVRciHCyo\"),\n  baseTokenDecimals: 6,\n});\n\nexport const whapiUsdcAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"r2MxTnFdnP7ECMxH7F4mcg1p3CowwhPmDmYoZ1syKZh\"),\n  farmTokenMint: new PublicKey(\"Bfoi3RNnfdP5VeRGqvTA8MRN9ePGJoZgeKfe8WeBHUxE\"),\n  rewardTokenMint: new PublicKey(\"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"ELfBngAgvLEHVBuJQhhE7AW6eqLX7id2sfrBngVNVAUW\"),\n  baseTokenDecimals: 6,\n});\n\nexport const copeUsdcAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"xigyMM8txxzpvjRw3Z1tX9euUshtqeHucW6K3f81KNQ\"),\n  farmTokenMint: new PublicKey(\"9SDpBrfqNxjXcCzpKWM6yUKdfky975VJBD6xcu5cKf5s\"),\n  rewardTokenMint: new PublicKey(\"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"HsauTv9s52Zv12eaDuSp6y7BEm4e4BHEyAsbdjyyWzPK\"),\n  baseTokenDecimals: 6,\n});\n\nexport const sunnyUsdcAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"Nw3caGfeqM8xQZ45iAf5zWmPMQux5wMWMjxsKEfnNk4\"),\n  farmTokenMint: new PublicKey(\"9HPn1oREyNA7CEK7B1xwmBmVH6qtQaSfLBXc1JyRsdUE\"),\n  rewardTokenMint: new PublicKey(\"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"GHuoeq9UnFBsBhMwH43eL3RWX5XVXbSRYJymmyMYpT7n\"),\n  baseTokenDecimals: 6,\n});\n\nexport const grapeUsdcAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"6eeK7PHkUXJ9t2qgdrHfbZfmU5S7zWZwpDw6i46Rf1jU\"),\n  farmTokenMint: new PublicKey(\"97q89hnoKwqcynvwXcj83YqfqUBuCm4A8f2zHeV6bfZg\"),\n  rewardTokenMint: new PublicKey(\"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"EorFh8siFyLF1QTZ7cCXQaPGqyo7eb4SAgKtRH8Jcxjd\"),\n  baseTokenDecimals: 6,\n});\n\nexport const abrUsdcAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"PyzV3qSzbj98ArVpASj2LQg6zCq6zfAixqUtYDafnRU\"),\n  farmTokenMint: new PublicKey(\"5uR5STASUmoGVHzqMeut98t26TfVkQqWU9f9dsv3NfJ6\"),\n  rewardTokenMint: new PublicKey(\"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"GMzPbaCuQmeMUm1opH3oSCgKUjVgJUW14myq99RVPGX5\"),\n  baseTokenDecimals: 6,\n});\n\nexport const kuroUsdcAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"6bHkoSxnK3aKW3PyG34dUz1naD6T3Pc7143s41nSuuzN\"),\n  farmTokenMint: new PublicKey(\"6PGoaQdL9e463hdaFxHXsuPcjCHRK32CQ9PFKxvM7XY2\"),\n  rewardTokenMint: new PublicKey(\"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"DRknxb4ZFxXUTG6UJ5HupNHG1SmvBSCPzsZ1o9gAhyBi\"),\n  baseTokenDecimals: 6,\n});\n\nexport const mediaUsdcAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"jCGam3ptTrFKhCwBGYUcqtrvt8pY4uWXaPoqC9E7uXB\"),\n  farmTokenMint: new PublicKey(\"3pMYToENTB7jKrJiUPq19FCZCWE35Ph7bkRRMN6kxDXK\"),\n  rewardTokenMint: new PublicKey(\"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"2toFgkQDoPrTJYGDEVoCasPXuL9uQnjvXJaDwa9LHyTx\"),\n  baseTokenDecimals: 6,\n});\n\nexport const tulipUsdcAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"AEemiZ28JTnz3xmj6LSfXruK1et317ZAGY5KCrKdXNCX\"),\n  farmTokenMint: new PublicKey(\"2KYUwdRbVtaMUgHp1a6NuTomyCb33FxoZ4fkeVdwjaJA\"),\n  rewardTokenMint: new PublicKey(\"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"4SBx8GXu8HhcVHWydQv1vsDdZs3G93XSL9CtMBny6hS5\"),\n  baseTokenDecimals: 6,\n});\n\nexport const mngoUsdcAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"2LM1Y428kPtLAsxcdxv2iKWaPxobt9poD2DAjeGpN6TC\"),\n  farmTokenMint: new PublicKey(\"CxhcLZtbhfkwjAZ956SEkGxkAvMVQH3hfKTjKpgTV9Q5\"),\n  rewardTokenMint: new PublicKey(\"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"H9yC7jDng974WwcU4kTGs7BKf7nBNswpdsP5bzbdXjib\"),\n  baseTokenDecimals: 6,\n});\n\nexport const stsolWstethAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"6eW2skHuzMxxPZjzE7x5fxtn3ZZ1Ak2SawrMH9T5KANp\"),\n  farmTokenMint: new PublicKey(\"3kT3oYuS1rCfhmqfgy6EKcbZdaJimaVEjoy25QiuEaoj\"),\n  rewardTokenMint: new PublicKey(\"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"Eswigpwm3xsipkTqahGi2PEJsJcULQBwZgxhQpr6yBEa\"),\n  baseTokenDecimals: 6,\n});\n\nexport const sypUsdcAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"7GDHcUdLhHxCHeQccpbJr3eNGzQvnoMdLBzkVNYvQgkh\"),\n  farmTokenMint: new PublicKey(\"Ds4VGZhZzS2PMFzhzKeC3mwcQjdiCG21R76fTVbsSJyJ\"),\n  rewardTokenMint: new PublicKey(\"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"qJxKN9BhxbYvRNbjfK2uAVWboto6sonj8XC1ZEW5XTB\"),\n  baseTokenDecimals: 6,\n});\n\nexport const stsolWldoAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"DMECkFUnVp1esox6Yyyfc7vJeN7spUHd5JypAWqEqCRC\"),\n  farmTokenMint: new PublicKey(\"DQsbebdNDy8yQrwLTpieckhzi7Ewx9LoCPVf7G9KvY2U\"),\n  rewardTokenMint: new PublicKey(\"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"74B9aMS7SA832xKngt5VLKmWAP3pa3qkUzWncTmQSsGF\"),\n  baseTokenDecimals: 6,\n});\n\nexport const whethSolAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"BerS3SE5G6FqZER7L7G3BhUJBrZ7BpizmuQRH9LMEYQw\"),\n  farmTokenMint: new PublicKey(\"FkHQBBZGh5GS4GcXpcVksKYUUkLTNn6Yk1PCMxucR2AK\"),\n  rewardTokenMint: new PublicKey(\"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"7aYnrdmdCRodDy2Czn6keUquUhjF1jPEmfwZPh488z8U\"),\n  baseTokenDecimals: 6,\n});\n\nexport const whethUsdcAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"GdQyNtN9rQWzpcm7mQMNBiXyeKRjjQoobh2waVQq5QyP\"),\n  farmTokenMint: new PublicKey(\"B11Xp26xU2gzjToJEuGswvr6Jtidfh4GRUyCWzWMNdQZ\"),\n  rewardTokenMint: new PublicKey(\"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"7NPtjjAP7vhp4t5NCLyY4DY5rurvyc8cgZ2a2rYabRia\"),\n  baseTokenDecimals: 6,\n});\n\nexport const mndeMsolAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"5wr7m4YrJB38vuz3xyLqvq2DwLCcDkEDH5X97chKpH4T\"),\n  farmTokenMint: new PublicKey(\"2wPsMuzhEsC6GhV3qtFpmJF6atEgLGbnmQ8U43Y6fPxZ\"),\n  rewardTokenMint: new PublicKey(\"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"5PHS5w6hQwFNnLz1jJFe7TVTxSQ98cDYC3akmiAoFMXs\"),\n  baseTokenDecimals: 6,\n});\n\nexport const wagUsdcAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"4GWmnvMg7EGQZ6LeQtK6rbJrtTTVsQHj2ivwm4vm8mnR\"),\n  farmTokenMint: new PublicKey(\"8Wu5sJpERA1J5iWcT8aMpt9cTAfKDLPbLpGjNsJoPgLc\"),\n  rewardTokenMint: new PublicKey(\"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"Df6XNHMF3uRVZnz7LCEGiZVax6rXgz76owtVkBHEjSb6\"),\n  baseTokenDecimals: 6,\n});\n\nexport const msolUsdtAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"HULY26UFdfVkc2STTt1KREd57BwFV2md1tqdk253QyiK\"),\n  farmTokenMint: new PublicKey(\"Afvh7TWfcT1E9eEEWJk17fPjnqk36hreTJJK5g3s4fm8\"),\n  rewardTokenMint: new PublicKey(\"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"9cMWe4UYRPGAUUsTkjShJWVM7bk8DUBgxtwwH8asFJoV\"),\n  baseTokenDecimals: 6,\n});\n\nexport const msolWhethAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"D4Pmc82b9W1UDAqYNNNMGG7UYxBaZckf97AYExGbUK95\"),\n  farmTokenMint: new PublicKey(\"58nifjPjF3CutGz2xMxvAMk7R9YgbVEc8Cstj4rCcs8j\"),\n  rewardTokenMint: new PublicKey(\"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"5qoTq3qC4U7vFxo3iCzbXcaD1UEmDeCD63Dsuoct71oV\"),\n  baseTokenDecimals: 6,\n});\n\nexport const btcMsolAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"GBrpFtiTabs14mc4Hi1RX9YiQY7res6JxrVfMTADfcQV\"),\n  farmTokenMint: new PublicKey(\"DzpLz78wuwyFsQToin8iDv6YK6aBEymRqQq82swiFh7r\"),\n  rewardTokenMint: new PublicKey(\"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"8nKJ4z9FSw6wrVZKASqBiS9DS1CiNsRnqwCCKVQjqdkB\"),\n  baseTokenDecimals: 6,\n});\n\nexport const ivnSolAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"FwzqbJZQiL3qzMx88r2o3CNKFxztuW3JC45YYk6ghMLR\"),\n  farmTokenMint: new PublicKey(\"HqajzzbGMST3yCCVBJuXvNVsWkY2DXqiBz9cTRmmyBMy\"),\n  rewardTokenMint: new PublicKey(\"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"DfgCnzaiTXfPkAH1C1Z441b5MzjjTCEh134ioxqRZxYf\"),\n  baseTokenDecimals: 6,\n});\n\nexport const larixUsdcAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"HeAQxAGBQdGURFFcLpdPagQ2vb66kXFTVxDfTjme8eGo\"),\n  farmTokenMint: new PublicKey(\"DNAGfa7tK8csprRQmiDUwDaFfhw6ueHhVFHTCgTJ8HGs\"),\n  rewardTokenMint: new PublicKey(\"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"8sfThep3io4gvcGeuoAg1Rs8GDwKJjtcdAFHqQSSNAVE\"),\n  baseTokenDecimals: 6,\n});\n\nexport const prtUsdcAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"9dCsoLdfkpYw1s7TMNE1HZPNmVSNDZrUkUHfxn2p8675\"),\n  farmTokenMint: new PublicKey(\"2cYMt26745oFc7PadaQn8Vv3xFUxWBfbip2NyJeVG35F\"),\n  rewardTokenMint: new PublicKey(\"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"6jCERp5hKj37PCXP3VTjCDJeoPuSpnMDMz5A6jWQv3yS\"),\n  baseTokenDecimals: 6,\n});\n\nexport const jetUsdcAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"BKdPQziyuKmXwZeVuo8Uj7usfUYpwSfnGBDbG96y266V\"),\n  farmTokenMint: new PublicKey(\"4DjiLEKADWjYmiY9gzFnu5xews5oCTMRByWHWEzDa3bj\"),\n  rewardTokenMint: new PublicKey(\"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"GBijunwxa4Ni3JmYC6q6zgaVhSUJU6hVX5qTyJDRpNTc\"),\n  baseTokenDecimals: 6,\n});\n\nexport const stsolUsdcAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"2P7FGV8XNXUkEAG6q5LbhfoBFkHJ7PDAjYqmAbwnVHBF\"),\n  farmTokenMint: new PublicKey(\"3u2dNfGuU6C3vmSg5EvLPUpX57b3niqhWBV5Gc3WDEf5\"),\n  rewardTokenMint: new PublicKey(\"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"GtQ1NT7R5aaTiST7K6ZWdMhwDdFxsSFvVFhBo8vyHGAq\"),\n  baseTokenDecimals: 6,\n});\n\nexport const wstethUsdcAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"2FAzkAgm8EpE7WpWUsEcNyj4kcVeCX2L8SR1BicGWEx9\"),\n  farmTokenMint: new PublicKey(\"ojpWEdNYa5nGviUc8k8M2XLjHuaCL2EgHFdvTtdkXA1\"),\n  rewardTokenMint: new PublicKey(\"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"5a6Y1ephcbKSoyLMQyD1JWbtqawCy8p2FtRL9v3zhaG5\"),\n  baseTokenDecimals: 6,\n});\n\nexport const auryUsdcAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"FvkyNXLizY4FCNkgbGpr1WA3z4A8iTRU4rPnnNJC3q2V\"),\n  farmTokenMint: new PublicKey(\"7s7Veo1P8ZRy6z5MCvoAmg2kPFcQnq2Grt6yewWS8LbQ\"),\n  rewardTokenMint: new PublicKey(\"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"6mJqqT5TMgveDvxzBt3hrjGkPV5VAj7tacxFCT3GebXh\"),\n  baseTokenDecimals: 6,\n});\n\nexport const avaxUsdcAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"GkmPgsKU9uYaZtKfzjWeJjBSvX8mkK8gNqoWMYBdcvUx\"),\n  farmTokenMint: new PublicKey(\"5mZydNG1fBPTXzgp9SoS7Jny6EmSzBPTPrFbB1ttGnvx\"),\n  rewardTokenMint: new PublicKey(\"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"Hmfrtmo93DpSDmVNLQKcBS5D1ia5JatiRSok9ososubz\"),\n  baseTokenDecimals: 6,\n});\n\nexport const fttUsdcAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"2FtSDVRmYq4x6NeTidpZVuLzgN2APzr3zHxpHx8zdgbr\"),\n  farmTokenMint: new PublicKey(\"2AAzmhZ9Kh9mFcQtHJVTafu69tc5GCGpi6CTgafYta1S\"),\n  rewardTokenMint: new PublicKey(\"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"FwCombynV2fTVizxPCNA2oZKoWXLZgdJThjE4Xv9sjxc\"),\n  baseTokenDecimals: 6,\n});\n\nexport const rayUsdcAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"GCcVYpBCPcPjb11LeeoVhLNJQzS5GXEEd6Dmo5eejBTx\"),\n  farmTokenMint: new PublicKey(\"9MaXcCERB4DzedPNSBwyHM2P6Yo6jCFLjnatuWCtR3WF\"),\n  rewardTokenMint: new PublicKey(\"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"4cXw2MYj94TFBXLL73fEpMCr8DPrW68JvrV8mzWgktbD\"),\n  baseTokenDecimals: 6,\n});\n\nexport const slndUsdcAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"5NrUSiG134QLY4JkmX82n4hdZQnmqsWMrBapQwfAtpeu\"),\n  farmTokenMint: new PublicKey(\"GdySZb2nbeEjCLBg65veC5kzfMCfCWgtgqwH9YWDtDXr\"),\n  rewardTokenMint: new PublicKey(\"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"F59gkD7NnsdJbFKrRZsiBC8PAooN4c56T8QmahfW1iXN\"),\n  baseTokenDecimals: 6,\n});\n\nexport const gofxUsdcAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"GmyMx4JtRrkjmxNn4WQCmVNuLfwRjkAmCfMv2AXag5se\"),\n  farmTokenMint: new PublicKey(\"B95rdqSY4dqPwmt295XwBZZqZJYLmqDNXU6NvBpT4ep4\"),\n  rewardTokenMint: new PublicKey(\"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"7vnps4VE5RTGAr5fmPZu7fSrk2VnM4Up838grZfqmxqE\"),\n  baseTokenDecimals: 6,\n});\n\nexport const woofUsdcAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"5K7WdUTG2yZjULeNUUiH3eoWhY9YYAnpoWFGiwVj3q2V\"),\n  farmTokenMint: new PublicKey(\"4HaQXDz9gdLgKUjvNVtnLyNZoWNYKjh3XxH1TpLgiwmi\"),\n  rewardTokenMint: new PublicKey(\"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"9EjcYfHcG8f1mccpHyaAwpoxaUPiheC6KgLQjyD9aTb6\"),\n  baseTokenDecimals: 6,\n});\n\nexport const sdogeUsdcAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"672wPyV8sJdqBfyay6MccLxsCj1sqQyd5WaPXkTbeB8N\"),\n  farmTokenMint: new PublicKey(\"4kXYyZAMBdvgDaBKUGvRWJnHw9af7sCUPvpQ68PEdP8b\"),\n  rewardTokenMint: new PublicKey(\"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"CHTKUJGYRtBDqnxCFjxe5KEkZgxV98udbhuYYyzGxup5\"),\n  baseTokenDecimals: 6,\n});\n\nexport const catoUsdcAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"4EfikjxutL59CXMBYffhSXdPEw28T963idHiwz2qpodQ\"),\n  farmTokenMint: new PublicKey(\"BHtZnTBMeY4EBEW5egGnuK5bdW12v6Dod6wFav79AyYx\"),\n  rewardTokenMint: new PublicKey(\"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"55r9txzQtmjTykmTXmBYZCVMg5z9squB8b5cSw2AhxA4\"),\n  baseTokenDecimals: 6,\n});\n\nexport const oogiUsdcAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"CzWsHjE7azpbksPhHxdkvH5gfpBAx4FqohwFnkHgfVpr\"),\n  farmTokenMint: new PublicKey(\"FiwSk36yi1DNWcuQUeNipAc1VKxa9Wv9AR2xFvyKUxAE\"),\n  rewardTokenMint: new PublicKey(\"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"DSiHyHDn96bUQSZtizyCRLcQzrwohZeMpVu8rYJN1HzG\"),\n  baseTokenDecimals: 6,\n});\n\nexport const sonarUsdcAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"2SxKGe1PEKWQC6m5Q1jUnXJuZBVXyUC37ffCPop38iiA\"),\n  farmTokenMint: new PublicKey(\"GWmwwMGYBG4NqYdnsYrudzBnbgDC49MkBxdzhfLA9kVY\"),\n  rewardTokenMint: new PublicKey(\"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"5MvQHx8eftU39JTucFsT315JFnQASuDQg3FqxTw7xcvN\"),\n  baseTokenDecimals: 6,\n});\n\nexport const aptUsdcAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"3YZ5GYL625vWibn7d8hMdrMBawy9HGUyeTe4AoXoME1Q\"),\n  farmTokenMint: new PublicKey(\"Dx7DYSuaBufhXyQG7155ePkLmHyn6w7WeKKtQB9zscZV\"),\n  rewardTokenMint: new PublicKey(\"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"HNrYngS1eoqkjWro9D3Y5Z9sWBDzPNK2tX4rfV2Up177\"),\n  baseTokenDecimals: 6,\n});\n\nexport const dflUsdcAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"GaKnyw7sYU6raJpZGjFER1eXZ9zHfqih5fAj1T5xxP6J\"),\n  farmTokenMint: new PublicKey(\"C8jJeUM9s7R7gTw1ybgTW4LPkgrYtogstD6MtBjroGLB\"),\n  rewardTokenMint: new PublicKey(\"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"AWrtTWG4Zgxw8D92bb3L3sQtGLD3zDztMPWsXSph8iBP\"),\n  baseTokenDecimals: 6,\n});\n\nexport const dflSolAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"HTEe4r3YDRqDbA2dwQNMnMBAToV7rHvpyMBe6EjZmXyz\"),\n  farmTokenMint: new PublicKey(\"E3omuGbZSksAdbiyvtpdfGsUGhptA26Enwe5Y5jJKnbK\"),\n  rewardTokenMint: new PublicKey(\"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"9Y1vPaAsMz8X65DebMMnmBjbMo8i4jh4mcgiggZUUS3M\"),\n  baseTokenDecimals: 6,\n});\n\nexport const frktUsdcAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"EUgwcVQhm1BDHWeMThNRx143RRay1byP6gmca9dp8HMe\"),\n  farmTokenMint: new PublicKey(\"Bc4CvPm15iLRopgLmU17RJicBgjykiMwVzYxa7Wnujdh\"),\n  rewardTokenMint: new PublicKey(\"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"FnDxJPNk7pPmGHUbR4XUHmHevrkXHdna5D3sQKcAtjBL\"),\n  baseTokenDecimals: 6,\n});\n\nexport const tttUsdcAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"BPsQWbFEwYRxHims8Yw14BbL8njWEQq4tNWrrJb9sgXD\"),\n  farmTokenMint: new PublicKey(\"AmrPpJFQj4xtv3yVgPCFqhXEMBPhaKRP6qFyhuCdz66c\"),\n  rewardTokenMint: new PublicKey(\"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"FGgP1npQTsC5Q4xBmQtNYSh51NKqNwdxBZy8JCo3igcu\"),\n  baseTokenDecimals: 6,\n});\n\nexport const upsUsdcAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"4TQzMpNP5JdZ3YDi1iz9kYqv4L7sTKQeFtpvnfc6T7aJ\"),\n  farmTokenMint: new PublicKey(\"9fuv3emLQXECrTWqm2HaKT3wQhmvmgqmReZSMcu8PfpH\"),\n  rewardTokenMint: new PublicKey(\"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"E1U63VXhNiWoUkVvjrfLDdV1oJrwE6zLde3bohr6jCqz\"),\n  baseTokenDecimals: 6,\n});\n\nexport const fantUsdcAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"BkiSfYmmt8KxrKFhpS4oq6TYf5C4DFnaFWDnn3eDhcfp\"),\n  farmTokenMint: new PublicKey(\"C2EcthTMaC5eATXVaXg5ctvMfUYYgFyNibybHes5D3S6\"),\n  rewardTokenMint: new PublicKey(\"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"GjG7JjTQfQpDxw4hWx4etP9oTaYCuCbPjsU8WaUT3xHB\"),\n  baseTokenDecimals: 6,\n});\n\nexport const blockUsdcAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"3QHfuWvAkUfr1QenKaPBDUUUwShvoMLZCmfux5bovz1J\"),\n  farmTokenMint: new PublicKey(\"CkSfxpcpunHLUQktiFAeTJCYHsT4brYoJE23R3vw5zCF\"),\n  rewardTokenMint: new PublicKey(\"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"D8WjqtwC9CzBrQKfSf2ccCHFQuPYwyLv5KAy8WjT5vnf\"),\n  baseTokenDecimals: 6,\n});\n\nexport const runUsdcAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"2yCL6hAsNQN7R2wrPaUffxVDyK8hhSL1hYf2knhUzLZk\"),\n  farmTokenMint: new PublicKey(\"Gxh7KubJPEqR1i4oHCxxYayWcSJMzn7h2kpJeCCEAkNC\"),\n  rewardTokenMint: new PublicKey(\"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"34Ppq6R8NfYBwWwPY4cBK4Afyb8hHaASQFukCzH6cV4n\"),\n  baseTokenDecimals: 6,\n});\n\nexport const uxpUsdcAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"G7W1y2Mv2kxu7ht3csCUNdduaUNBkYVcvX6QA47CJKuF\"),\n  farmTokenMint: new PublicKey(\"8BxKJ3FAFbidm9rPotQEcm6dDqJkTz2PhLtaq6hnZk8L\"),\n  rewardTokenMint: new PublicKey(\"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"HjR8JgqNKQVMvdryqJw5RJ4PCE9WGk8sgbEF7S9S3obv\"),\n  baseTokenDecimals: 6,\n});\n\nexport const btcUsdcAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"3japFRAWZTq8FLjeTsi4hmNHpeo7RhP9ift4joCjRkga\"),\n  farmTokenMint: new PublicKey(\"3aDHNJpWPEzXHZNeuak3LgcB8MbAwnDKkB2YftaPyhev\"),\n  rewardTokenMint: new PublicKey(\"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"J3kvcay3N16FBdawgnqoJ9v9p6XCvyCLE2Z9F5RLvGkj\"),\n  baseTokenDecimals: 6,\n});\n\nexport const mndeUsdcAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"FBSHQPtDZLvv8tmj1S75GW4TKGhxXVqU1zcSK57ZWHGF\"),\n  farmTokenMint: new PublicKey(\"BtXnDsnidDZnkVFJJnqtAMMCtkoG5uioYF72yC8fhVTn\"),\n  rewardTokenMint: new PublicKey(\"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"12Uj74zgUUoBe4yeackwQ4qYtFMr9fk1xL6q5Nha6t2N\"),\n  baseTokenDecimals: 6,\n});\n\nexport const chicksUsdcAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"BQivr16DZwUyzx9Qa5LR7V7eg1ASMiPjBtyj1bsoLXw2\"),\n  farmTokenMint: new PublicKey(\"GTcxXu3yw7yotq2UtAMvpEbx84ozJyrBwy77Cmem7m4X\"),\n  rewardTokenMint: new PublicKey(\"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"71CBZeJ4tw38L9pSPoCz4fRsuWE64Fipyzotte7haoCS\"),\n  baseTokenDecimals: 6,\n});\n\nexport const onesolUsdcAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"5FSwvhovxgEJPg4yufxCXiLXD3RY2SJKQ2fFy8mMupJj\"),\n  farmTokenMint: new PublicKey(\"4tcadvVpXQPswr5dRt6jJW1sVFW2CxrKgzP594ZxaUTv\"),\n  rewardTokenMint: new PublicKey(\"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"6MF5CHWAj5mS7FhpxiKz37CzR2eYTu236XpBKKMXCrGg\"),\n  baseTokenDecimals: 6,\n});\n\nexport const wmpUsdcAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"8brkHbXG9fNoYZu68D7cQy9Q1gC7hfTZQD7jfKFv4hvC\"),\n  farmTokenMint: new PublicKey(\"Ce3VXSQGFEHqrQSEzcVb2Ro88Mcn56cYBUAXFx5tL9bo\"),\n  rewardTokenMint: new PublicKey(\"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"HDgxKmiA8Pv82fNguhVeMkZqQkos2YksFPoP1KttWxX8\"),\n  baseTokenDecimals: 6,\n});\n\nexport const unqUsdcAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"9hQXfKCdD4v9v8vzimd6KExoSnS36q5kUPTW3PdX6KRu\"),\n  farmTokenMint: new PublicKey(\"CsGTrgJ6oLx9UQow9aLjuAacjXTY53zT8B2FnAbfVZAS\"),\n  rewardTokenMint: new PublicKey(\"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"2VuGzaMrDnDyZfYvDwSXk38s7M2wpud7LDY3dGA1J9sy\"),\n  baseTokenDecimals: 6,\n});\n\nexport const basisUsdcAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"A8CNiARq7zYMMGKYbqJVfByVyBzdMexhc5EEGzCN13dS\"),\n  farmTokenMint: new PublicKey(\"4yx2aHMa7N4m1uUaBRy9QPtpstw3HFPtvcCPJQaGFHKL\"),\n  rewardTokenMint: new PublicKey(\"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"GoaAiajubRgeCFEz9L6mLnSmT2QFegoJDH5tpLfivpj\"),\n  baseTokenDecimals: 6,\n});\n\nexport const gstUsdcAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"44aNS8nnj4r3WWvnR1Ud929iAqn5jJ7ugVkJJvH4XuW9\"),\n  farmTokenMint: new PublicKey(\"72vxFxfeSN2DRKmSQAkJCoFBNYb2WNevyaDh4v2t8TqP\"),\n  rewardTokenMint: new PublicKey(\"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"E6FUnQHGHJVJg7oExVr5Moeaj1QpdpZQF5odYjHXWPZb\"),\n  baseTokenDecimals: 6,\n});\n\nexport const meanUsdcAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"4ZqD3uYerAhUrVCPSKV15JT7ToR4EW1TwK6HHckAZNio\"),\n  farmTokenMint: new PublicKey(\"3h2VBX8533NB8eEH8rPXMdayodFDbgTHpbav6JqLZAQq\"),\n  rewardTokenMint: new PublicKey(\"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"F5BTnwuMA6rxftTdbZ33VWKr2wrr6DuQHnd4guKmPSYQ\"),\n  baseTokenDecimals: 6,\n});\n\nexport const aartUsdcAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"6pvWTK3UZJ2gKpVZBXMEUEbnSbqf8GxEFbAQjWuuW4C7\"),\n  farmTokenMint: new PublicKey(\"Bg7pZq7KdsQsnCQBeNpa4XVnrWfjUJNu3ViHoNB7YUZU\"),\n  rewardTokenMint: new PublicKey(\"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"HCtyJzFUtYecXrA52s4Y9atq4J1fhT3cYsTX17XVSFag\"),\n  baseTokenDecimals: 6,\n});\n\nexport const shdwUsdcAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"ABmFqgfvQjjU8uBkZL2KdH5AvYEMsuddtdvpm4s62Pzq\"),\n  farmTokenMint: new PublicKey(\"7WWHfufv8vuBC1x7GXA3pu7kgNhEQkXoq3CtbaQihAJ9\"),\n  rewardTokenMint: new PublicKey(\"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"DJqqvzSuPaWThfzwMjXx7H2ZmHDdwxza6NtFudtuXcpc\"),\n  baseTokenDecimals: 6,\n});\n\nexport const shdwSolAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"EKe5CgBnBJA2cgeEUe67aQS57bAQsPvfVdArEWuEuEEW\"),\n  farmTokenMint: new PublicKey(\"BDStVBt4NS5bfda25ubK51kVRioV4yjKKCPbe96jeEms\"),\n  rewardTokenMint: new PublicKey(\"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"2ws7g3LBPdctfKn42Di9qxzQtUJ8ZL1aEAX2rGEQMNqh\"),\n  baseTokenDecimals: 6,\n});\n\nexport const scyUsdcAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"GDf3GpSU1V1UCvpcU19rV8p8CUC4cken9b5RpKzBBgiN\"),\n  farmTokenMint: new PublicKey(\"DkxeyV1TEt9umvqjPNf9tdjJjgyvW5Mdi4AQnExA5bZa\"),\n  rewardTokenMint: new PublicKey(\"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"99ZHUQsgxL7K6PHrGNi1gSwawwPr7UA5fbWrYoHQ6qhX\"),\n  baseTokenDecimals: 6,\n});\n\nexport const slcUsdcAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"AgscvT8HJ4uqznp4SeYMgKf9qUjTrQL7AzU6mjcqpPCB\"),\n  farmTokenMint: new PublicKey(\"X8GnAvxq942xXjNzqYPFQQ9JstJQNEA81uPeNoQpgrN\"),\n  rewardTokenMint: new PublicKey(\"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"E5kSBqTDxFLbLNQaVVtPtnhEYVLMCK2fVSEKoMKL98qR\"),\n  baseTokenDecimals: 6,\n});\n\nexport const wustSolAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"7tHjwHKvoSPjoAZepTZsw7uV9XobkgRXhMbhbZmqA8mS\"),\n  farmTokenMint: new PublicKey(\"F49Cm3srGucQCBanA2xL7nSKHfH1QZd9vLdFtkg4LKnq\"),\n  rewardTokenMint: new PublicKey(\"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"6c13xsmyk7UaHUWZ2rm1MM3ZdrQRSBkQ9waaG25ridVs\"),\n  baseTokenDecimals: 6,\n});\n\nexport const wustUsdcAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"Aq289TqufDB4A4TEGVUkVquVggyrPjCwxkEv7pDEVpWZ\"),\n  farmTokenMint: new PublicKey(\"2mhVUMsG7eb3XhHjAbKpRZgWNyGZNCiWU7dRxauzZaGL\"),\n  rewardTokenMint: new PublicKey(\"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"J1KfRtP5y2warpD7LdJhfBLPKoWwSqYuovdArSv1mpQ7\"),\n  baseTokenDecimals: 6,\n});\n\nexport const msolWustAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"9iXAweywwdGR76L58FNg9siQzxyzbeJsomjEohPztpHF\"),\n  farmTokenMint: new PublicKey(\"6wqME6zPQzGDLugpnwZnVBKBbATC5nTaEa781Vj98yvM\"),\n  rewardTokenMint: new PublicKey(\"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"68YVjgPnTUPcBqZyghqvD2WPNsrLKsjYTmBKJzHRr4qd\"),\n  baseTokenDecimals: 6,\n});\n\nexport const wlunaWustAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"52VxPD3pag6QrtEKXTe4jYBvSTvfggjbXZv3vqo455uU\"),\n  farmTokenMint: new PublicKey(\"3ZGKT28NXAqb2YtUAMvKixQvHNHT31Q5mK8AC2iBMs29\"),\n  rewardTokenMint: new PublicKey(\"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"8Mh7drLbt3jFJYwp948XyvQscGLaLkChNcaH5wwaAoWA\"),\n  baseTokenDecimals: 6,\n});\n\nexport const stsolWustAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"GxhewC22S6wsXT156yC9SARvDnijoc3YEYyLVcQFDUCx\"),\n  farmTokenMint: new PublicKey(\"3Q44iV4URXdbS4Tk1PGs5VdWQoCxHB7zdcdMnemo8jfH\"),\n  rewardTokenMint: new PublicKey(\"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"HTZd53fYwYQRyAjiaPsZy9Gf41gobFdqkF4oKe3XLi95\"),\n  baseTokenDecimals: 6,\n});\n\nexport const jsolUsdcAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"62JumLDtnsQ5YsEZrJaQsvDMP5pRmok3JEWHghFkL8D2\"),\n  farmTokenMint: new PublicKey(\"B3JDURP58ooQT8zvhLgDRKVjstqgrHhn61qzzudHWrS1\"),\n  rewardTokenMint: new PublicKey(\"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"AzEoVuNJyo9ByoLRZ5t6vav2Zg24vULNVJM41PgCKUqR\"),\n  baseTokenDecimals: 6,\n});\n\nexport const daosolUsdcAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"EaxYr2iZhrgwUKQVeFFeHQLW1afzS8pgZGn6hLhgFMgy\"),\n  farmTokenMint: new PublicKey(\"A9kPybFFdj3MGKWWSwgb3KvzQyeNXESayh4ngmkmee2R\"),\n  rewardTokenMint: new PublicKey(\"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"CCyDxjdW3G7hPTthTMPTZ4bnhFF19XG6rx2fNiKeRQww\"),\n  baseTokenDecimals: 6,\n});\n\nexport const orcaUsdtAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"4SNMBiDGjDSZnyQFqSodJTTmRqEkisBWciXZ4hGbDujc\"),\n  farmTokenMint: new PublicKey(\"C2YSdSesufbMVWtKXSZGhc12f6UL2j3WDe9VT6rRbmA8\"),\n  rewardTokenMint: new PublicKey(\"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"Gx4PoxenyQwhGGnKagAT35iVg4im1iKhJxDWqVhgu6tk\"),\n  baseTokenDecimals: 6,\n});\n\nexport const orcaWhethAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"AgWH92f8cPAuURyqehF6A9wFgupEsnDX3VP5eHyytabA\"),\n  farmTokenMint: new PublicKey(\"A7EAHvFEWzW8qSTFNLrEHN894GAZWZesNiebttEwtUGJ\"),\n  rewardTokenMint: new PublicKey(\"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"GsfyYHkSgC3Ta6aWR9MjB2sxoBrkGGeR2tAwXbpphf3\"),\n  baseTokenDecimals: 6,\n});\n\nexport const geneUsdcAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"EoRaCH4cwmmxc78s5E1fTDt2zPkivXNLf1MvoGhJywKd\"),\n  farmTokenMint: new PublicKey(\"GrBZ4HLhL28JTxMfAH2Vm2hVv3RE4TYXCG9p9BpyUaRq\"),\n  rewardTokenMint: new PublicKey(\"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"7cuu94swKL5PtFQohKMAzyd1mjj65rgMW3GzLY31HCnK\"),\n  baseTokenDecimals: 6,\n});\n\nexport const cmfiUsdcAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"2CGcou8YJoannsazSYQ16jSUZzPP8zZ9jdqgSRSGsVXa\"),\n  farmTokenMint: new PublicKey(\"E8RVjS24pBuF3oCCeJVAgC4RQ7mVa5P3FGXqGbiczzvD\"),\n  rewardTokenMint: new PublicKey(\"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"85krvT9DxdYgoFLQDHTAGdvtNuLdAsc4xE5FkVLpN2aR\"),\n  baseTokenDecimals: 6,\n});\n\nexport const celoUsdcAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"EowPc9YUmqJDjAujhD1eaLzDm99JnCu88fA1W8skKgQv\"),\n  farmTokenMint: new PublicKey(\"9RRBDWZGWGVnHgazCpb9R1XApmHLBDya8Tq1yrzoMsKY\"),\n  rewardTokenMint: new PublicKey(\"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"HVLyX8mD8YvKgZJ4oB6rXJiCYMLpHKwB6iCiCjE1XwdT\"),\n  baseTokenDecimals: 6,\n});\n\nexport const ftmUsdcAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"EsE6fq5rP5Dg3ivS42JodpaQNpmkB6LTFX2nDSRZZ2og\"),\n  farmTokenMint: new PublicKey(\"E7Af9Fa2U1YqEkQpAYjXwDB5TJUou9VcN3ot33Gj6UY9\"),\n  rewardTokenMint: new PublicKey(\"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"Gpzd833qSmv3kXpQmxEaqkrZTXZaRjhNAoqhf61qAhTG\"),\n  baseTokenDecimals: 6,\n});\n\nexport const btcOrcaAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"8TcCqDgPgim1CV6zgAXFq3PxSBH7MDCeVSGharRzJ4SA\"),\n  farmTokenMint: new PublicKey(\"EQsfnq9d1R2MbXGKDPSgJXnDk1oXocgMFoSd15pEAPGD\"),\n  rewardTokenMint: new PublicKey(\"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"DFpLFcQZqDKykyDePgip4r6MExVmBKWqTa12ezq6qxUY\"),\n  baseTokenDecimals: 6,\n});\n\nexport const hbbUsdcAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"3saySWJwipyCXqqhYT8XaSMFAS7NNksKKdP3zFJuUMtT\"),\n  farmTokenMint: new PublicKey(\"BxPd4x7gm6WQF6jsDCRQuQVZ2bopQ4KegMrqyQgdkPDk\"),\n  rewardTokenMint: new PublicKey(\"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"cL5WhffCYFRLM4We8VS2W684kM4pHyuvEDwp8Ddw48k\"),\n  baseTokenDecimals: 6,\n});\n\nexport const hbbSolAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"9fEfGhHjvqDPcFx6cBNuWHHjQaa6fSEP5pRHjdFkPenE\"),\n  farmTokenMint: new PublicKey(\"62q8m79WkXR1MAer4H2zLpA38s47Fywkqqv4MMwEHjad\"),\n  rewardTokenMint: new PublicKey(\"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"FkKzu2HeMJZf4oHwoYPxLGVy3net5Jq8HAfnA5VqETgk\"),\n  baseTokenDecimals: 6,\n});\n\nexport const sbUsdcAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"Ax8vkRHj3Gqo5Tv6PfWZzmbr8zHfPdeYbJpG7QYkP3r1\"),\n  farmTokenMint: new PublicKey(\"3Wppx86xN7Dg7GLUTD9C7AqCt68qZkWzNYUdCS7t1pCk\"),\n  rewardTokenMint: new PublicKey(\"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"2Reqt4Sw9xNY8BoJ3EZLpFu5yVgNxFrbw8M3KiJpPn6o\"),\n  baseTokenDecimals: 6,\n});\n\nexport const stsolUsdtAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"2xvT1Z2SU1iKvmWpUNP9y4vRXyB8GpGq7sD9CforJoYd\"),\n  farmTokenMint: new PublicKey(\"CtvKaRLzCzRZCcYPwai7NCYBK4ArBj2oD6BfvMgJoiCN\"),\n  rewardTokenMint: new PublicKey(\"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"4ni1nho89cDKAQ9ddbNQA9ieLYpzvJVmJpuogu5Ct5ur\"),\n  baseTokenDecimals: 6,\n});\n\nexport const seededUsdcAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"n7VuBP5qpMt2fZxNevR2gtxsgogDv22GJsj5f2WNJCN\"),\n  farmTokenMint: new PublicKey(\"H15WptGntFQifZmJHUzYBV9Mv7P27ofavEsF6yqpLTdX\"),\n  rewardTokenMint: new PublicKey(\"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"H7gyTmNCDXkD8MGMqnxqoD8ANszjcju4tjT6ERZ5dakf\"),\n  baseTokenDecimals: 6,\n});\n\nexport const audioUsdcAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"DvzYNQoPYFWQCjBs6rxvMmarcKMiEaQHC7sWVAm5K2XM\"),\n  farmTokenMint: new PublicKey(\"BbRVh76k2jYsSWnd7qpDQ8ptzVzgRq67viK6tAFEkB8z\"),\n  rewardTokenMint: new PublicKey(\"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"3hksYA17VxgiKSeihjnZkBbjc2CTbEBfvDCYgQhojTo5\"),\n  baseTokenDecimals: 6,\n});\n\nexport const mmaUsdcAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"C54TkajKsLqHZP1taiayDAaAHrr6KBmCVRT1BuZHxa9q\"),\n  farmTokenMint: new PublicKey(\"H9qkbU2XYSQTk6JJJ2TMuZBthfkeCHigmuxB5jiQaamn\"),\n  rewardTokenMint: new PublicKey(\"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"AaZRnJAnDyJyPD9uPJpJ8bzBGDCEi6jtBpUf92xErWPp\"),\n  baseTokenDecimals: 6,\n});\n\nexport const onesolSolAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"64zLHH6zA8yuLxxPAgbVx5Cp9F8afHZWSyUndHsFBP95\"),\n  farmTokenMint: new PublicKey(\"Hva9oLa2GjoKdB45WoHujsX7MTpehByPshMrQpNDmkFq\"),\n  rewardTokenMint: new PublicKey(\"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"9wPhuYapychVDSxmXqCZxy2Ka8Lmav4SHM72si8bfraV\"),\n  baseTokenDecimals: 6,\n});\n\nexport const puffSolAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"Gp4r2PFLSf9Y1Y1K46gpEYsM7mkFNVY4Ga7s6YXZmxGD\"),\n  farmTokenMint: new PublicKey(\"Ge5kuYg5PekrPUeKzngw97Cnfngj8j6NCX5q1jTBkWSW\"),\n  rewardTokenMint: new PublicKey(\"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"Eho8h1BcoG5QWU7X9FzJafw5ErKUXtR2LobAJJZfWff4\"),\n  baseTokenDecimals: 6,\n});\n\nexport const saoUsdcAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"4rKjrmHAmeT6bu3JNhP2NYjFgVHtt71U9yumBDKHTe14\"),\n  farmTokenMint: new PublicKey(\"A9BeGSRJJYXPrMs81rVZxvkk16fopzgG5YkngntgTu7p\"),\n  rewardTokenMint: new PublicKey(\"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"4iyU77yZbg8iD344vbwruAuDAf9i1EVV3FhZJDnWStBE\"),\n  baseTokenDecimals: 6,\n});\n\nexport const srlyv2SolAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"9SV2NL59i1PfD72AUHDXa2KT1xWnFD3VyMgfzCRDARW1\"),\n  farmTokenMint: new PublicKey(\"6gkZ7QUmxmwPLS2NK3Dr6YHtTPZs6GQrkA595WSx5iLe\"),\n  rewardTokenMint: new PublicKey(\"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"3dXdXg5HPyZ73GFC9LkSn3thdJUGeXWB8iSTHs5UcqiH\"),\n  baseTokenDecimals: 6,\n});\n\nexport const zbcUsdcAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"gBBNuRf5VsGoAEwKzTAaVsPSqTiYLh5VmaxvzvbCEBb\"),\n  farmTokenMint: new PublicKey(\"7Hoi4adCSBzERdvSiUXtVDz79tiDxMD5HpDv7m9rs3Sb\"),\n  rewardTokenMint: new PublicKey(\"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"2LYgm6nGXmSSjfoEriPuYeGoNiWNxUs7n3rnTbDWN5c7\"),\n  baseTokenDecimals: 6,\n});\n\nexport const gmtUsdcAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"DbJT9UTTt8U8xAk7BtRWC3nQHxJnNmZdZydUAhJj14TZ\"),\n  farmTokenMint: new PublicKey(\"8EnEoVX1aXkzbTzhrqDQ2aVGybbPpeWZDCYEGjjw1dyG\"),\n  rewardTokenMint: new PublicKey(\"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"CFxQF5kNAtbbDj298Xr47Sf4mkSyuzWpRH97hrdQ6kxi\"),\n  baseTokenDecimals: 6,\n});\n\nexport const novaUsdcAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"B8Kv2mjJGvbDnEUX5EHhg1Erg3s7qBYpjDzrmvMMMrRx\"),\n  farmTokenMint: new PublicKey(\"H2jZrZKx1fLY9LPi2ad5G2DVBWzMmUwPQLjRFERUroEH\"),\n  rewardTokenMint: new PublicKey(\"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"DdAFNvDxtEHCgKj3JAM64zCKfMWhs4J9wEmRrjUAFiME\"),\n  baseTokenDecimals: 6,\n});\n\nexport const hbbUsdhAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"cPFH2eNZnyf85RpSkPM2ZG3S4RdedX51ywqSk7kjmp2\"),\n  farmTokenMint: new PublicKey(\"DUGuXcpHX9y6WdTKgDm8XsECbf7pApA7ZvAsjUqHUoYn\"),\n  rewardTokenMint: new PublicKey(\"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"7n2YW9qLkhGFArdZPLoF4hYPE2zw7xCACkVPXrUWnLuo\"),\n  baseTokenDecimals: 6,\n});\n\nexport const takiSrlyv2AqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"ADTFK1eFV3oKCzGex2wHTCctBNYxqSvHv7fN1tnbHBGq\"),\n  farmTokenMint: new PublicKey(\"EkPqSfr4ZiRiLgjZw45QmF36TzZ3EEV51DyRVd2iuhA2\"),\n  rewardTokenMint: new PublicKey(\"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"6atKbS2Xz5vu7cqWBNk8KYkuakRzckZ9nvtUKf2k8Sc3\"),\n  baseTokenDecimals: 6,\n});\n\nexport const zigUsdcAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"CAG4eyg41phvb4KZ1hkfPikbUreZcVTVVH9Rc8yf7ADc\"),\n  farmTokenMint: new PublicKey(\"9nKbvVW9TjdnKt2NbfMaf9PHcg8zWWFgGTBfzUXdFcke\"),\n  rewardTokenMint: new PublicKey(\"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"5vhh9ZnD9vnahRhFLP1EUEyYRSzvJwgw9U2xygsSJSrp\"),\n  baseTokenDecimals: 6,\n});\n\nexport const srlySolAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"3851tQsk6PdqWm3pZgPdHaqZcBdNioKxnGM3ah8Yq5rK\"),\n  farmTokenMint: new PublicKey(\"HfkZkoPqZzd7S1F3BhkJN2Es1C5vabVYqfCecXG2MGHP\"),\n  rewardTokenMint: new PublicKey(\"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"HfRgvhgscGX5GaP3rUrZAhh7gS4aJ2UQ7rNVX976rG6P\"),\n  baseTokenDecimals: 6,\n});\n\nexport const takiSrlyAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"FSy7cpNu9gC2Grr8J3pnorm5jTR9D2xHngUS8vZDUeug\"),\n  farmTokenMint: new PublicKey(\"13HwDUH7yREGAwHSWnx4Kgnn6huL8yfCCBqaBr6NGVH6\"),\n  rewardTokenMint: new PublicKey(\"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"3xaK5aWWLNRB73xUVX3cusLhDp65mTvP4fwW5Jwxakgs\"),\n  baseTokenDecimals: 6,\n});\n\nexport const stsolSolAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"9bKvCTiVrnSzFPrd4g7Dd9SeEZvKNn3SQ7dMpuE9VKuo\"),\n  farmTokenMint: new PublicKey(\"7ZvhrqdnP2NrQi2YCjQNd8jKJpLDMUuZg4wP7XJPjnVX\"),\n  rewardTokenMint: new PublicKey(\"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"4jjQSgFx33DUb1a7pgPsi3FbtZXDQ94b6QywjNK3NtZw\"),\n  baseTokenDecimals: 6,\n});\n\nexport const btcStsolAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"F2mdxT26uvf16X9vV5ACUqa6FicPBq5fLZkAXXxYxD8b\"),\n  farmTokenMint: new PublicKey(\"GjBW6751wNJ99zYkr9QwSi98bvj1NgyAcYHfQDpemJfq\"),\n  rewardTokenMint: new PublicKey(\"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"HYp9v7cY4wAxSsa6ijztQQ3GQ8iTttuG5vu8JNBDHoNh\"),\n  baseTokenDecimals: 6,\n});\n\nexport const stsolWhethAqFarm: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"5xpcR2aPqE3WWQa6ZMv6xSmBakdyKBsAi3pmLJj2ARH1\"),\n  farmTokenMint: new PublicKey(\"9V9CavjccKJH66m4MJHzVBYzY2ZM3U3D5xUCP7HSyAUz\"),\n  rewardTokenMint: new PublicKey(\"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"FWurFWADrgmhb6Y44LEaCMnEHS2Tu3QGqd9oBcZtr8gT\"),\n  baseTokenDecimals: 6,\n});\n\nexport const liqUsdcDoubleDip: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"AraZDjfmkqzDJ3CdbjjYbtpujUYivgTEKKM2TPf6hJ27\"),\n  farmTokenMint: new PublicKey(\"5rGtJDiJhD5Mx2fvdEYuLrCiWaMD9z3wpmJSxwGHmo4u\"),\n  rewardTokenMint: new PublicKey(\"4wjPQJ6PrkC4dHhYghwJzGBVP78DkBzA2U3kHoFNBuhj\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"57vGdcMZLnbNr4TZ4hgrpGJZGR9vTPhu8L9bNKDrqxKT\"),\n  baseTokenDecimals: 6,\n});\n\nexport const stepSolDoubleDip: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"FmHGpt2scyJ8NuDuknnzQ7jectLyRRQmTyXxu5tRoD2j\"),\n  farmTokenMint: new PublicKey(\"Gs1fM7EFS1rXkxhqs4mwu9uvSkupNzZgRbHGxG2NGRh7\"),\n  rewardTokenMint: new PublicKey(\"StepAscQoEioFxxWGnh2sLBDFp9d8rvKz2Yp39iDpyT\"),\n  rewardTokenDecimals: 9,\n  baseTokenMint: new PublicKey(\"GwrBA1F8rGummDCDd8NY9Eu1cLNuJqbT8WaGxgWpFwGL\"),\n  baseTokenDecimals: 6,\n});\n\nexport const slrsUsdcDoubleDip: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"8JkTAVHXChDPzsNkcJYRJ69mXN5nCcyb1qVBmbVhCH1n\"),\n  farmTokenMint: new PublicKey(\"F3rWkGAtdjWcU1rr16Wq4YPTgFdsyb1oS1xdy5tr9K1r\"),\n  rewardTokenMint: new PublicKey(\"SLRSSpSLUTP7okbCUBYStWCo1vUgyt775faPqz8HUMr\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"66xCxkffQZKBZLiHV3PDcfR8ANJTfnDRxPCaBdv4wxB7\"),\n  baseTokenDecimals: 6,\n});\n\nexport const portUsdcDoubleDip: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"C8k63XU8xzzvBpSraYWjHCNzvprjYKDadAML3MWSFbxW\"),\n  farmTokenMint: new PublicKey(\"Zm2dmUuuBicmvHxGAnAzaohZR2Y86gXEV2WMfo8AoCa\"),\n  rewardTokenMint: new PublicKey(\"PoRTjZMPXb9T7dyU7tpLEZRQj7e6ssfAE62j2oQuc6y\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"4CGxvZdwiZgVMLXiTdJHTkJRUTpTSJCtmtCRbSkAxerE\"),\n  baseTokenDecimals: 6,\n});\n\nexport const copeUsdcDoubleDip: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"HW21NT7v6ViM2Cs3S2tVgUnawACF8JRRwd2AA41a8HUh\"),\n  farmTokenMint: new PublicKey(\"AtcMEt9caZxpunQV99pxED2rhpQmaDykBreEqBsYU11v\"),\n  rewardTokenMint: new PublicKey(\"8HGyAAB1yoM1ttS7pXjHMa3dukTFGQggnFFH3hJZgzQh\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"9SDpBrfqNxjXcCzpKWM6yUKdfky975VJBD6xcu5cKf5s\"),\n  baseTokenDecimals: 6,\n});\n\nexport const bopUsdcDoubleDip: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"GYipJSPD7zcDoEABRCZfDSqh7zqYMmjyP8dNKEUnW1iC\"),\n  farmTokenMint: new PublicKey(\"CjGUbKiH1QmFFjMqhAbJn4DrbjgBWUhQHV4LuzrgpFqi\"),\n  rewardTokenMint: new PublicKey(\"BLwTnYKqf7u4qjgZrrsKeNs2EzWkMLqVCu6j8iHyrNA3\"),\n  rewardTokenDecimals: 8,\n  baseTokenMint: new PublicKey(\"A7vvbqENJj8kED3ABjphe8TvwpasQYtoWGKpjpLArMxa\"),\n  baseTokenDecimals: 6,\n});\n\nexport const samoUsdcDoubleDip: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"8VJT2SYGXgvQ8jYvh1Cq6mg83gkAVuTY3cHiULUy6Cit\"),\n  farmTokenMint: new PublicKey(\"EdfAy8jwnvU1z61UaFUjwoRPFgD3UkkPvnhEBZjzwhv8\"),\n  rewardTokenMint: new PublicKey(\"7xKXtg2CW87d97TXJSDpbD5jBkheTqA83TZRuJosgAsU\"),\n  rewardTokenDecimals: 9,\n  baseTokenMint: new PublicKey(\"9voVuTq1S9bFZkF2Jo44HoVG63w2xDRT8eBzB23YbQud\"),\n  baseTokenDecimals: 6,\n});\n\nexport const whapiUsdcDoubleDip: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"GFFQdLWvbWzrZBQrPQVyzGQfd6SWuZaiRwmkKA2bJPeY\"),\n  farmTokenMint: new PublicKey(\"41VBoy8SGJzQnWGcxiBL4yM6H68FiPp74aMvsZGNGCbt\"),\n  rewardTokenMint: new PublicKey(\"6VNKqgz9hk7zRShTFdg5AnkfKwZUcojzwAkzxSH3bnUm\"),\n  rewardTokenDecimals: 9,\n  baseTokenMint: new PublicKey(\"Bfoi3RNnfdP5VeRGqvTA8MRN9ePGJoZgeKfe8WeBHUxE\"),\n  baseTokenDecimals: 6,\n});\n\nexport const slimUsdcDoubleDip: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"3RsBqqz9MiXa1uhFFd6tpGVQ66ptkFPCBAUyqLAXeCTE\"),\n  farmTokenMint: new PublicKey(\"HhDk3ySWkVbMZjgBsFSnLtAeudDCrfZ6DNSRgxh2oRUp\"),\n  rewardTokenMint: new PublicKey(\"xxxxa1sKNGwFtw2kFn8XauW9xq8hBZ5kVtcSesTT9fW\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"3K7aZhtwWJ2JS6GnbbgeDVnxd1q2hwhqasmgRsAMZ4yC\"),\n  baseTokenDecimals: 6,\n});\n\nexport const ninjaSolDoubleDip: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"HPeAGzDEhYUNm4z4aV2PTjVjbESnNg6jBy6LtFjFJzQj\"),\n  farmTokenMint: new PublicKey(\"Db7mPGrZbswvFmJ7MgZsM6CFhnXHMnrUDqr2hrzmi7Re\"),\n  rewardTokenMint: new PublicKey(\"FgX1WD9WzMU3yLwXaFSarPfkgzjLb2DZCqmkx9ExpuvJ\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"7YyhptkxY81HPzFVfyCzA5UXxWdsNRD41ofLva3TuSpd\"),\n  baseTokenDecimals: 6,\n});\n\nexport const atlasUsdcDoubleDip: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"DTP1xr4EzFf1YDu4CeWTtWVsCBzFPk4HDEsL3AzoR3kB\"),\n  farmTokenMint: new PublicKey(\"894ptAFT7d3inPsWTniCGL2NZpJDiXGvFZFfuHXA1w8F\"),\n  rewardTokenMint: new PublicKey(\"ATLASXmbPQxBUYbxPsV97usA3fPQYEqzQBUHgiFCUsXx\"),\n  rewardTokenDecimals: 8,\n  baseTokenMint: new PublicKey(\"HFmY1ggCsCky1zJ1sfdkNR4zb3u5n38YNRdf4vsGu17t\"),\n  baseTokenDecimals: 6,\n});\n\nexport const polisUsdcDoubleDip: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"7h1zAHj2xzEw3eKfprYqG36aN5XwcZXBsYwM2haWQVzR\"),\n  farmTokenMint: new PublicKey(\"FE1QJzi5RA5aKnTfSV3DAMN3z4uHUzSR5Z4drs9S5vB\"),\n  rewardTokenMint: new PublicKey(\"poLisWXnNRwC6oBu1vHiuKQzFjGL4XDSu4g9qjz9qVk\"),\n  rewardTokenDecimals: 8,\n  baseTokenMint: new PublicKey(\"63JUKLnCAuNMPSPioEgbjjzp9Qk8qSEEM8eZqEtPqfLU\"),\n  baseTokenDecimals: 6,\n});\n\nexport const abrUsdcDoubleDip: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"98htZRc2QNd8BS9GGHoxkySZ9BiL9MAgHLEQfxzXYKk6\"),\n  farmTokenMint: new PublicKey(\"7bp7psdaC3DVc86Hmdz5tAMEjgPjmCzgFEVALfqBwMmz\"),\n  rewardTokenMint: new PublicKey(\"a11bdAAuV8iB2fu7X6AxAvDTo1QZ8FXB3kk5eecdasp\"),\n  rewardTokenDecimals: 9,\n  baseTokenMint: new PublicKey(\"5uR5STASUmoGVHzqMeut98t26TfVkQqWU9f9dsv3NfJ6\"),\n  baseTokenDecimals: 6,\n});\n\nexport const kuroUsdcDoubleDip: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"BK3VXXDA4KxVurHbP3yPytGWp1HifbBtB4ugpzfDeq4v\"),\n  farmTokenMint: new PublicKey(\"88RCQs9VFvqPjsRe3PKNzBeMtzCS9oS1a1CJuAnGnLZJ\"),\n  rewardTokenMint: new PublicKey(\"2Kc38rfQ49DFaKHQaWbijkE7fcymUMLY5guUiUsDmFfn\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"6PGoaQdL9e463hdaFxHXsuPcjCHRK32CQ9PFKxvM7XY2\"),\n  baseTokenDecimals: 6,\n});\n\nexport const msolUsdcDoubleDip: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"5fhDMuGKRDPWVWXf7BBEwifRFrp6XwXctDQoG7UHGVt6\"),\n  farmTokenMint: new PublicKey(\"9y3QYM5mcaB8tU7oXRzAQnzHVa75P8riDuPievLp64cY\"),\n  rewardTokenMint: new PublicKey(\"MNDEFzGvMt87ueuHvVU9VcTqsAP5b3fTGPsHuuPA5ey\"),\n  rewardTokenDecimals: 9,\n  baseTokenMint: new PublicKey(\"5r3vDsNTGXXb9cGQfqyNuYD2bjhRPymGJBfDmKosR9Ev\"),\n  baseTokenDecimals: 6,\n});\n\nexport const orcaMsolDoubleDip: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"41ZYSekqDNtJ1BdGkTZVR1CJfBiFrud6HcT3HVUdSyWN\"),\n  farmTokenMint: new PublicKey(\"876yhw4J4GHyynNJUtARYEnWGaejhrWC7Hy3DAm1pZxi\"),\n  rewardTokenMint: new PublicKey(\"MNDEFzGvMt87ueuHvVU9VcTqsAP5b3fTGPsHuuPA5ey\"),\n  rewardTokenDecimals: 9,\n  baseTokenMint: new PublicKey(\"3Duk5b6fLztPmS4ryV48FM1Q9WXUSMwz9jehAT4UtqpE\"),\n  baseTokenDecimals: 6,\n});\n\nexport const msolSolDoubleDip: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"2SciNw7cEsKJc1PMRDzWCcEzvuScmEaUgmrJXCi9UFxY\"),\n  farmTokenMint: new PublicKey(\"576ABEdvLG1iFU3bLC8AMJ3mo5LhfgPPhMtTeVAGG6u7\"),\n  rewardTokenMint: new PublicKey(\"MNDEFzGvMt87ueuHvVU9VcTqsAP5b3fTGPsHuuPA5ey\"),\n  rewardTokenDecimals: 9,\n  baseTokenMint: new PublicKey(\"3RTGL7gPF4V1ns1AeGFApT7cBEGVDfmJ77DqQi9AC6uG\"),\n  baseTokenDecimals: 6,\n});\n\nexport const stsolWstethDoubleDip: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"EmWtmApj1PtJMgMfzbYMmnmtuwfcBy7es3Tg2AR8xfW6\"),\n  farmTokenMint: new PublicKey(\"5WXyG6zL1HmESPCSHHKBtqLuRPZCNgd9mTB25op87FkU\"),\n  rewardTokenMint: new PublicKey(\"HZRCwxP2Vq9PCpPXooayhJ2bxTpo5xfpQrwB1svh332p\"),\n  rewardTokenDecimals: 8,\n  baseTokenMint: new PublicKey(\"3kT3oYuS1rCfhmqfgy6EKcbZdaJimaVEjoy25QiuEaoj\"),\n  baseTokenDecimals: 6,\n});\n\nexport const sypUsdcDoubleDip: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"gpy1dZRbPbLZ2KNr4wd2r9zoxERbWV8gWTqTL47KNnh\"),\n  farmTokenMint: new PublicKey(\"BpHfwFwJwkZKWY5xVMC3oifMvWRy42R4VE1vPeBzg2G1\"),\n  rewardTokenMint: new PublicKey(\"FnKE9n6aGjQoNWRBZXy4RW6LZVao7qwBonUbiD7edUmZ\"),\n  rewardTokenDecimals: 9,\n  baseTokenMint: new PublicKey(\"Ds4VGZhZzS2PMFzhzKeC3mwcQjdiCG21R76fTVbsSJyJ\"),\n  baseTokenDecimals: 6,\n});\n\nexport const mndeMsolDoubleDip: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"C9AfeUkti1ykMTebw9N1WoiEhNqwNiXinfXBwuLUv1BT\"),\n  farmTokenMint: new PublicKey(\"2FMpVEhvxiFxhfideFUMNxCoUZK3TfhezzajoHGTQKP2\"),\n  rewardTokenMint: new PublicKey(\"MNDEFzGvMt87ueuHvVU9VcTqsAP5b3fTGPsHuuPA5ey\"),\n  rewardTokenDecimals: 9,\n  baseTokenMint: new PublicKey(\"2wPsMuzhEsC6GhV3qtFpmJF6atEgLGbnmQ8U43Y6fPxZ\"),\n  baseTokenDecimals: 6,\n});\n\nexport const msolUsdtDoubleDip: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"FNV9pGMWTYSMq5dRhmjpRwHpDJKV6JD4HTKsqZndKvuY\"),\n  farmTokenMint: new PublicKey(\"7iKG16aukdXXw43MowbfrGqXhAoYe51iVR9u2Nf2dCEY\"),\n  rewardTokenMint: new PublicKey(\"MNDEFzGvMt87ueuHvVU9VcTqsAP5b3fTGPsHuuPA5ey\"),\n  rewardTokenDecimals: 9,\n  baseTokenMint: new PublicKey(\"Afvh7TWfcT1E9eEEWJk17fPjnqk36hreTJJK5g3s4fm8\"),\n  baseTokenDecimals: 6,\n});\n\nexport const msolWhethDoubleDip: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"D6oqo3F2KkJcePDoNZfbb8F7SPnRhP7WCC9FNktzVCDT\"),\n  farmTokenMint: new PublicKey(\"3kFeVJUxhQS7PE7vV8pt9bhTCQrUDqeGf6AU4sjkLzVt\"),\n  rewardTokenMint: new PublicKey(\"MNDEFzGvMt87ueuHvVU9VcTqsAP5b3fTGPsHuuPA5ey\"),\n  rewardTokenDecimals: 9,\n  baseTokenMint: new PublicKey(\"58nifjPjF3CutGz2xMxvAMk7R9YgbVEc8Cstj4rCcs8j\"),\n  baseTokenDecimals: 6,\n});\n\nexport const btcMsolDoubleDip: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"Cn7QNyosNQ8DyKEeMDPmtg66R7vKMXigcQ561kTkFD8E\"),\n  farmTokenMint: new PublicKey(\"6uA1ADUJbvwYJZpzUn9z9LuyKoRVngBKcQTKdXsSivA8\"),\n  rewardTokenMint: new PublicKey(\"MNDEFzGvMt87ueuHvVU9VcTqsAP5b3fTGPsHuuPA5ey\"),\n  rewardTokenDecimals: 9,\n  baseTokenMint: new PublicKey(\"DzpLz78wuwyFsQToin8iDv6YK6aBEymRqQq82swiFh7r\"),\n  baseTokenDecimals: 6,\n});\n\nexport const ivnSolDoubleDip: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"9DNgTpphCRXhkf8ySiSnf1L2CHwACZybgPNwsnLUdzfA\"),\n  farmTokenMint: new PublicKey(\"5X71f6zUnVYWSxWM8wf942pzWLv1ZtCDhGCYqZipYutD\"),\n  rewardTokenMint: new PublicKey(\"iVNcrNE9BRZBC9Aqf753iZiZfbszeAVUoikgT9yvr2a\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"HqajzzbGMST3yCCVBJuXvNVsWkY2DXqiBz9cTRmmyBMy\"),\n  baseTokenDecimals: 6,\n});\n\nexport const larixUsdcDoubleDip: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"GnFV3S7H6eM9V12EJwptv111VmV7W3AnEEfzdHJL25n7\"),\n  farmTokenMint: new PublicKey(\"Huy453KXTaWaA3AiJeqLrAWWSMwoGjFU8nsEi7GiPY7n\"),\n  rewardTokenMint: new PublicKey(\"Lrxqnh6ZHKbGy3dcrCED43nsoLkM1LTzU2jRfWe8qUC\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"DNAGfa7tK8csprRQmiDUwDaFfhw6ueHhVFHTCgTJ8HGs\"),\n  baseTokenDecimals: 6,\n});\n\nexport const gofxUsdcDoubleDip: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"EVDvbsD5f1qz7FpVyknrzB3bLK86FHfqVbcH9WqpWZtK\"),\n  farmTokenMint: new PublicKey(\"BzZ3mLyXEaGt1Na1zxfZYjRJBFDbDckurc2LDq46irUx\"),\n  rewardTokenMint: new PublicKey(\"GFX1ZjR2P15tmrSwow6FjyDYcEkoFb4p4gJCpLBjaxHD\"),\n  rewardTokenDecimals: 9,\n  baseTokenMint: new PublicKey(\"B95rdqSY4dqPwmt295XwBZZqZJYLmqDNXU6NvBpT4ep4\"),\n  baseTokenDecimals: 6,\n});\n\nexport const woofUsdcDoubleDip: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"9M9JKUWatibJKghbDDjHXLGGY18dLPLHgs6a4WiP9EAe\"),\n  farmTokenMint: new PublicKey(\"G6kaJ4NrCS9VoNgPiMuR5ENFrGJBfMe98PXFgVYkBKts\"),\n  rewardTokenMint: new PublicKey(\"9nEqaUcb16sQ3Tn1psbkWqyhPdLmfHWjKGymREjsAgTE\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"4HaQXDz9gdLgKUjvNVtnLyNZoWNYKjh3XxH1TpLgiwmi\"),\n  baseTokenDecimals: 6,\n});\n\nexport const sdogeUsdcDoubleDip: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"J3AmdMedeE1mhwbZzZFysER8CZdMqxL3HoyLxCmub9mc\"),\n  farmTokenMint: new PublicKey(\"3upLraKWWJ3Tv8JgwygBszT1nQwksYBnx2XWEgaGMTt6\"),\n  rewardTokenMint: new PublicKey(\"8ymi88q5DtmdNTn2sPRNFkvMkszMHuLJ1e3RVdWjPa3s\"),\n  rewardTokenDecimals: 0,\n  baseTokenMint: new PublicKey(\"4kXYyZAMBdvgDaBKUGvRWJnHw9af7sCUPvpQ68PEdP8b\"),\n  baseTokenDecimals: 6,\n});\n\nexport const catoUsdcDoubleDip: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"7YMRTqXna5vtCkncV6hxhUd7qCrv621iRq96b7LYySR2\"),\n  farmTokenMint: new PublicKey(\"2YbEbQD8DP8QyRQnp7CXwdD6BqeJsry4MkWZgxovZPMm\"),\n  rewardTokenMint: new PublicKey(\"5p2zjqCd1WJzAVgcEnjhb9zWDU7b9XVhFhx4usiyN7jB\"),\n  rewardTokenDecimals: 9,\n  baseTokenMint: new PublicKey(\"BHtZnTBMeY4EBEW5egGnuK5bdW12v6Dod6wFav79AyYx\"),\n  baseTokenDecimals: 6,\n});\n\nexport const oogiUsdcDoubleDip: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"F1jqYgps3MsGvWJ9WKq7NYx1eT4xjPDruFtQ9gMD1pLk\"),\n  farmTokenMint: new PublicKey(\"3CiL5pm15BiLH8PBrhx7uFJr2uYoeBNZk55kuphp48Py\"),\n  rewardTokenMint: new PublicKey(\"H7Qc9APCWWGDVxGD5fJHmLTmdEgT9GFatAKFNg6sHh8A\"),\n  rewardTokenDecimals: 9,\n  baseTokenMint: new PublicKey(\"FiwSk36yi1DNWcuQUeNipAc1VKxa9Wv9AR2xFvyKUxAE\"),\n  baseTokenDecimals: 6,\n});\n\nexport const sonarUsdcDoubleDip: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"E3hyqjh9R7UWMwkMSxYHws4qdnpMSzXwkuJfVcEfmJwb\"),\n  farmTokenMint: new PublicKey(\"9tpC9vawMtim6q3MaQHfPPwFnnErh58qXhdqczS2p7sd\"),\n  rewardTokenMint: new PublicKey(\"sonarX4VtVkQemriJeLm6CKeW3GDMyiBnnAEMw1MRAE\"),\n  rewardTokenDecimals: 9,\n  baseTokenMint: new PublicKey(\"GWmwwMGYBG4NqYdnsYrudzBnbgDC49MkBxdzhfLA9kVY\"),\n  baseTokenDecimals: 6,\n});\n\nexport const upsUsdcDoubleDip: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"8V2RqGTNmz2xYBdonfvkLstGWV7ibHopoZMQeaV9rykb\"),\n  farmTokenMint: new PublicKey(\"9Ux3QdsLpLXCNFsACXjp4F2D5ihkWZnVhdDiTDTvw2Ny\"),\n  rewardTokenMint: new PublicKey(\"EwJN2GqUGXXzYmoAciwuABtorHczTA5LqbukKXV1viH7\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"9fuv3emLQXECrTWqm2HaKT3wQhmvmgqmReZSMcu8PfpH\"),\n  baseTokenDecimals: 6,\n});\n\nexport const fantUsdcDoubleDip: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"2J5exwdrNhqK1y1DF5jPQV2JieZ5xBsR3jDrZRh8PfPZ\"),\n  farmTokenMint: new PublicKey(\"FftGKB7DThU5N96xYQ8BWkRBpFTKDvSzN7hCCNxuypsE\"),\n  rewardTokenMint: new PublicKey(\"FANTafPFBAt93BNJVpdu25pGPmca3RfwdsDsRrT3LX1r\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"C2EcthTMaC5eATXVaXg5ctvMfUYYgFyNibybHes5D3S6\"),\n  baseTokenDecimals: 6,\n});\n\nexport const stsolUsdcDoubleDip: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"HhBtZgPaFb5rodxXsZbtZUqxk2vEg6tdzM4AcaG2PjcL\"),\n  farmTokenMint: new PublicKey(\"CejKA1pePxny3iprRDEyiojfTKNxxX2bjmKToDGZqwvh\"),\n  rewardTokenMint: new PublicKey(\"HZRCwxP2Vq9PCpPXooayhJ2bxTpo5xfpQrwB1svh332p\"),\n  rewardTokenDecimals: 8,\n  baseTokenMint: new PublicKey(\"3u2dNfGuU6C3vmSg5EvLPUpX57b3niqhWBV5Gc3WDEf5\"),\n  baseTokenDecimals: 6,\n});\n\nexport const wmpUsdcDoubleDip: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"2aUMqCFWK3PKeScspP4SqRFS7fag18TDHv2VsaBfSS72\"),\n  farmTokenMint: new PublicKey(\"4SWDBKeb44RQMYmyorUiuF94Fqf1toketzJyvLSjVtHN\"),\n  rewardTokenMint: new PublicKey(\"BygDd5LURoqztD3xETc99WCxLUbTi6WYSht9XiBgZ4HW\"),\n  rewardTokenDecimals: 9,\n  baseTokenMint: new PublicKey(\"Ce3VXSQGFEHqrQSEzcVb2Ro88Mcn56cYBUAXFx5tL9bo\"),\n  baseTokenDecimals: 6,\n});\n\nexport const chicksUsdcDoubleDip: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"61uQt5e3Vd3cps6mS5xnL1UVLe3rwNS4aDaa3F2V7h3z\"),\n  farmTokenMint: new PublicKey(\"3EPqpch8B8nk37gcxKCnQ5n6VSu4NyetcyZen636NYfb\"),\n  rewardTokenMint: new PublicKey(\"cxxShYRVcepDudXhe7U62QHvw8uBJoKFifmzggGKVC2\"),\n  rewardTokenDecimals: 9,\n  baseTokenMint: new PublicKey(\"GTcxXu3yw7yotq2UtAMvpEbx84ozJyrBwy77Cmem7m4X\"),\n  baseTokenDecimals: 6,\n});\n\nexport const unqUsdcDoubleDip: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"G5cvdbZwbwAV4eW8ENQy5tmbzaJu8TbdgF5MLXgLPXj3\"),\n  farmTokenMint: new PublicKey(\"75jdeQfjFnNzg4dSbkA3HxTN63hXo99MrpafDJsz5Gcy\"),\n  rewardTokenMint: new PublicKey(\"UNQtEecZ5Zb4gSSVHCAWUQEoNnSVEbWiKCi1v9kdUJJ\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"CsGTrgJ6oLx9UQow9aLjuAacjXTY53zT8B2FnAbfVZAS\"),\n  baseTokenDecimals: 6,\n});\n\nexport const meanUsdcDoubleDip: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"9TQ4HQXymNLVKEMve5peFXst5VPDXX1oZ8VTVuQeG7W7\"),\n  farmTokenMint: new PublicKey(\"FaFGyRihhc8XUqWXNrVAd6gjRsyJ98mogonH4EN8WUPb\"),\n  rewardTokenMint: new PublicKey(\"MEANeD3XDdUmNMsRGjASkSWdC8prLYsoRJ61pPeHctD\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"3h2VBX8533NB8eEH8rPXMdayodFDbgTHpbav6JqLZAQq\"),\n  baseTokenDecimals: 6,\n});\n\nexport const wagUsdcDoubleDip: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"5dA9HWoFnBagq25bpMPA79bKxQkQ6YXvBtYQn6Le6vyp\"),\n  farmTokenMint: new PublicKey(\"BYno9HNAiLoi7K8Wa5c1f5EE7hukzZPUQZDesGxBPzhh\"),\n  rewardTokenMint: new PublicKey(\"5tN42n9vMi6ubp67Uy4NnmM5DMZYN8aS8GeB3bEDHr6E\"),\n  rewardTokenDecimals: 9,\n  baseTokenMint: new PublicKey(\"8Wu5sJpERA1J5iWcT8aMpt9cTAfKDLPbLpGjNsJoPgLc\"),\n  baseTokenDecimals: 6,\n});\n\nexport const shdwUsdcDoubleDip: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"GJ9EixfM3noFT1b7Y5uAzV1qJSFev5uPaRrmfMoibck6\"),\n  farmTokenMint: new PublicKey(\"HPv7XJ16t4pZVNTBPHoYY19xiv4pHjjSbarE7Km3jJ1R\"),\n  rewardTokenMint: new PublicKey(\"SHDWyBxihqiCj6YekG2GUr7wqKLeLAMK1gHZck9pL6y\"),\n  rewardTokenDecimals: 9,\n  baseTokenMint: new PublicKey(\"7WWHfufv8vuBC1x7GXA3pu7kgNhEQkXoq3CtbaQihAJ9\"),\n  baseTokenDecimals: 6,\n});\n\nexport const shdwSolDoubleDip: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"2EHJ8ToKpJfXyAfechjH9QSbVMKTSViYPdJRepQz7V8S\"),\n  farmTokenMint: new PublicKey(\"8HgXuNigmLvfsgDun1vQso6pBuj7sVvDqpcergjtu3dz\"),\n  rewardTokenMint: new PublicKey(\"SHDWyBxihqiCj6YekG2GUr7wqKLeLAMK1gHZck9pL6y\"),\n  rewardTokenDecimals: 9,\n  baseTokenMint: new PublicKey(\"BDStVBt4NS5bfda25ubK51kVRioV4yjKKCPbe96jeEms\"),\n  baseTokenDecimals: 6,\n});\n\nexport const aartUsdcDoubleDip: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"BKFSHwhqDHRFM3PzNh7BG1vgxtEbx1A9Co1JN6z9SLYz\"),\n  farmTokenMint: new PublicKey(\"FvmyENsZf68ezNbHxRqv1hAb7phfhdnXMfQm74Vcpnkn\"),\n  rewardTokenMint: new PublicKey(\"F3nefJBcejYbtdREjui1T9DPh5dBgpkKq7u2GAAMXs5B\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"Bg7pZq7KdsQsnCQBeNpa4XVnrWfjUJNu3ViHoNB7YUZU\"),\n  baseTokenDecimals: 6,\n});\n\nexport const basisUsdcDoubleDip: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"DasaXe2Wqcks6csFv1bWwdW41mV8rMD5c27Uw9rFYVu4\"),\n  farmTokenMint: new PublicKey(\"8XtNSYBhLHa4cYzNsXd6yDAweMECumrxFJ7F2qxk2xN\"),\n  rewardTokenMint: new PublicKey(\"Basis9oJw9j8cw53oMV7iqsgo6ihi9ALw4QR31rcjUJa\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"4yx2aHMa7N4m1uUaBRy9QPtpstw3HFPtvcCPJQaGFHKL\"),\n  baseTokenDecimals: 6,\n});\n\nexport const slcUsdcDoubleDip: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"DdYbYsTgpp3pBdGhN9sSdgRJs4ijKZQuDqzqKz6qmScs\"),\n  farmTokenMint: new PublicKey(\"6VWtaecVXHuorMwVrZ4GAnYC3T5MG1YdQLYNPGyWzQHh\"),\n  rewardTokenMint: new PublicKey(\"METAmTMXwdb8gYzyCPfXXFmZZw4rUsXX58PNsDg7zjL\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"X8GnAvxq942xXjNzqYPFQQ9JstJQNEA81uPeNoQpgrN\"),\n  baseTokenDecimals: 6,\n});\n\nexport const wustSolDoubleDip: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"6p47BJ5d9JmywGpbZa8MapJmhcLdu5w2uNg9NQTJKvi\"),\n  farmTokenMint: new PublicKey(\"BkcNGF6iV6NTfoH1ocoywXrfDpPWiWUu7eARBT42e57v\"),\n  rewardTokenMint: new PublicKey(\"F6v4wfAdJB8D8p77bMXZgYt8TDKsYxLYxH5AFhUkYx9W\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"F49Cm3srGucQCBanA2xL7nSKHfH1QZd9vLdFtkg4LKnq\"),\n  baseTokenDecimals: 6,\n});\n\nexport const wustUsdcDoubleDip: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"87ArJQZCaUwLkZfaRHbjU8geq6F8HsFcCtoppCV7Buby\"),\n  farmTokenMint: new PublicKey(\"DGxLh6BykS8C4zLrBRRD4cHZRdy73eVqZ5283JkAdU7d\"),\n  rewardTokenMint: new PublicKey(\"F6v4wfAdJB8D8p77bMXZgYt8TDKsYxLYxH5AFhUkYx9W\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"2mhVUMsG7eb3XhHjAbKpRZgWNyGZNCiWU7dRxauzZaGL\"),\n  baseTokenDecimals: 6,\n});\n\nexport const msolWustDoubleDip: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"5z183wdSnkc1k9EmnXncE66VQYYLn8MkxG9gJTo5gabj\"),\n  farmTokenMint: new PublicKey(\"2q4rZYZgicviVBsb8CTWGR3bGWys3ePFDYtrayyQpwyi\"),\n  rewardTokenMint: new PublicKey(\"F6v4wfAdJB8D8p77bMXZgYt8TDKsYxLYxH5AFhUkYx9W\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"6wqME6zPQzGDLugpnwZnVBKBbATC5nTaEa781Vj98yvM\"),\n  baseTokenDecimals: 6,\n});\n\nexport const wlunaWustDoubleDip: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"4G49eoJrt6DGWnVR84tgNzw987cjwD4cPYd3SUuo6mrd\"),\n  farmTokenMint: new PublicKey(\"HQnMrrLP5RxYN6Peuu9cfDNQK81yd3TtBt3ZCjoD8UAf\"),\n  rewardTokenMint: new PublicKey(\"F6v4wfAdJB8D8p77bMXZgYt8TDKsYxLYxH5AFhUkYx9W\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"3ZGKT28NXAqb2YtUAMvKixQvHNHT31Q5mK8AC2iBMs29\"),\n  baseTokenDecimals: 6,\n});\n\nexport const stsolWustDoubleDip: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"CXbiLWJoYcVmV7GcF9xSwwMPSgHh5rHRLJB84F54R4qU\"),\n  farmTokenMint: new PublicKey(\"DxiftFoeRxHk15N4rDYzpwtGhfK3LqSn4gWDCaEkMksE\"),\n  rewardTokenMint: new PublicKey(\"HZRCwxP2Vq9PCpPXooayhJ2bxTpo5xfpQrwB1svh332p\"),\n  rewardTokenDecimals: 8,\n  baseTokenMint: new PublicKey(\"3Q44iV4URXdbS4Tk1PGs5VdWQoCxHB7zdcdMnemo8jfH\"),\n  baseTokenDecimals: 6,\n});\n\nexport const cmfiUsdcDoubleDip: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"E5m2jmo8DhLiY93nh95K4XCxvZgt66JzaJnwyt5CPmVR\"),\n  farmTokenMint: new PublicKey(\"Dr7ks8oV6iRTT2R2uqE4x6Egmg3djt14aCEciNhq3SF9\"),\n  rewardTokenMint: new PublicKey(\"5Wsd311hY8NXQhkt9cWHwTnqafk7BGEbLu8Py3DSnPAr\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"E8RVjS24pBuF3oCCeJVAgC4RQ7mVa5P3FGXqGbiczzvD\"),\n  baseTokenDecimals: 6,\n});\n\nexport const hbbUsdcDoubleDip: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"CvYum3awvbxPVa5FpZRBs97Prg5GDmLha4X6mggX7R1p\"),\n  farmTokenMint: new PublicKey(\"FYdet59VXibMU8FhnbZamZTVMsjnCyNevUqzWUrJfGum\"),\n  rewardTokenMint: new PublicKey(\"HBB111SCo9jkCejsZfz8Ec8nH7T6THF8KEKSnvwT6XK6\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"BxPd4x7gm6WQF6jsDCRQuQVZ2bopQ4KegMrqyQgdkPDk\"),\n  baseTokenDecimals: 6,\n});\n\nexport const celoUsdcDoubleDip: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"DrDpUFTvHjznYEugMqcXTqspdmQ6GZhuBzjodU7A6qWU\"),\n  farmTokenMint: new PublicKey(\"4EUgJ5LSF3UDVbVAYzqE133NXAxfhHZSvqx214EJkNkQ\"),\n  rewardTokenMint: new PublicKey(\"a11bdAAuV8iB2fu7X6AxAvDTo1QZ8FXB3kk5eecdasp\"),\n  rewardTokenDecimals: 9,\n  baseTokenMint: new PublicKey(\"9RRBDWZGWGVnHgazCpb9R1XApmHLBDya8Tq1yrzoMsKY\"),\n  baseTokenDecimals: 6,\n});\n\nexport const sbUsdcDoubleDip: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"74hUtc4MaZUt4YDDjVSqHyUbPT8kbxW16mbAharpZhPV\"),\n  farmTokenMint: new PublicKey(\"EdkL9TXiT2NV1LND5nj4kR1L9SYjozWpJvbcStvrUUJF\"),\n  rewardTokenMint: new PublicKey(\"SuperbZyz7TsSdSoFAZ6RYHfAWe9NmjXBLVQpS8hqdx\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"3Wppx86xN7Dg7GLUTD9C7AqCt68qZkWzNYUdCS7t1pCk\"),\n  baseTokenDecimals: 6,\n});\n\nexport const ftmUsdcDoubleDip: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"7cYU6ux4GwB1X2FKaRruQ9dbDZKUrxZAaWGNJfeoHeGJ\"),\n  farmTokenMint: new PublicKey(\"4r3uYr4Ph4ctw1chiUaAtwon4stFGHqbSJ6Lym139rM9\"),\n  rewardTokenMint: new PublicKey(\"a11bdAAuV8iB2fu7X6AxAvDTo1QZ8FXB3kk5eecdasp\"),\n  rewardTokenDecimals: 9,\n  baseTokenMint: new PublicKey(\"E7Af9Fa2U1YqEkQpAYjXwDB5TJUou9VcN3ot33Gj6UY9\"),\n  baseTokenDecimals: 6,\n});\n\nexport const stsolUsdtDoubleDip: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"AihUw1sSxuzL2i1ELWMXmiRT3UgyRds68iNXwFKbyQnP\"),\n  farmTokenMint: new PublicKey(\"2kftNiMcrjp9CRqtoLZNwApGEoirfunHPvunenGLz17y\"),\n  rewardTokenMint: new PublicKey(\"HZRCwxP2Vq9PCpPXooayhJ2bxTpo5xfpQrwB1svh332p\"),\n  rewardTokenDecimals: 8,\n  baseTokenMint: new PublicKey(\"CtvKaRLzCzRZCcYPwai7NCYBK4ArBj2oD6BfvMgJoiCN\"),\n  baseTokenDecimals: 6,\n});\n\nexport const seededUsdcDoubleDip: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"EsSWWXMipKC4aVHcKjkYdvNjKphxk86DGCYhdF2huoso\"),\n  farmTokenMint: new PublicKey(\"AjCuWDEZYC9FuwdYpdAy4vLoY6PxMNF8xitQeaNZd1nW\"),\n  rewardTokenMint: new PublicKey(\"seedEDBqu63tJ7PFqvcbwvThrYUkQeqT6NLf81kLibs\"),\n  rewardTokenDecimals: 9,\n  baseTokenMint: new PublicKey(\"H15WptGntFQifZmJHUzYBV9Mv7P27ofavEsF6yqpLTdX\"),\n  baseTokenDecimals: 6,\n});\n\nexport const onesolSolDoubleDip: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"2GpXwBPbooPwqxLuM1bW9FaSK5hxaJqNkr7WdPsjoPca\"),\n  farmTokenMint: new PublicKey(\"DuTybhuJgwECRHDLgtrBuKnfhxve2zXoYXD6cnDikzoT\"),\n  rewardTokenMint: new PublicKey(\"4ThReWAbAVZjNVgs5Ui9Pk3cZ5TYaD9u6Y89fp6EFzoF\"),\n  rewardTokenDecimals: 8,\n  baseTokenMint: new PublicKey(\"Hva9oLa2GjoKdB45WoHujsX7MTpehByPshMrQpNDmkFq\"),\n  baseTokenDecimals: 6,\n});\n\nexport const mmaUsdcDoubleDip: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"7w9ztS9wcnsk2gqCEvKmQFUBbwhPZPfb5CXhC2onUWXs\"),\n  farmTokenMint: new PublicKey(\"9hSvWrDqgAr7E8sWpatomKcgAGy3hvgAWPXtGPySNbsy\"),\n  rewardTokenMint: new PublicKey(\"MMAx26JtJgSWv6yH48nEHCGZcVvRbf9Lt9ALa7jSipe\"),\n  rewardTokenDecimals: 9,\n  baseTokenMint: new PublicKey(\"H9qkbU2XYSQTk6JJJ2TMuZBthfkeCHigmuxB5jiQaamn\"),\n  baseTokenDecimals: 6,\n});\n\nexport const puffSolDoubleDip: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"HNTRmR36ZXBNakYpfPPq7VJaXzLrNY6hN1Xz9p5s8wWA\"),\n  farmTokenMint: new PublicKey(\"Grn1ipjetWK7sz5Bq9S1nwD7F7dUsFzM44diFxbMruvK\"),\n  rewardTokenMint: new PublicKey(\"G9tt98aYSznRk7jWsfuz9FnTdokxS6Brohdo9hSmjTRB\"),\n  rewardTokenDecimals: 9,\n  baseTokenMint: new PublicKey(\"Ge5kuYg5PekrPUeKzngw97Cnfngj8j6NCX5q1jTBkWSW\"),\n  baseTokenDecimals: 6,\n});\n\nexport const saoUsdcDoubleDip: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"9eVq1gfxbgRpX8W4XctocHEm2U8eT5KzTcnMduFThoz1\"),\n  farmTokenMint: new PublicKey(\"47PY3ET5oziYHEt1mddYFE7opJnqPbp98yZ1xf6cpgER\"),\n  rewardTokenMint: new PublicKey(\"2HeykdKjzHKGm2LKHw8pDYwjKPiFEoXAz74dirhUgQvq\"),\n  rewardTokenDecimals: 9,\n  baseTokenMint: new PublicKey(\"A9BeGSRJJYXPrMs81rVZxvkk16fopzgG5YkngntgTu7p\"),\n  baseTokenDecimals: 6,\n});\n\nexport const srlyv2SolDoubleDip: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"7GAp1xR64GjjbyHbvE28Rt9xLEBLTjk4W3AemRMvTcrS\"),\n  farmTokenMint: new PublicKey(\"4Xtia3w6AKBNPCYmFZCAQV8CNwUmHYrVQiNMEGdMkRMg\"),\n  rewardTokenMint: new PublicKey(\"RLYv2ubRMDLcGG2UyvPmnPmkfuQTsMbg4Jtygc7dmnq\"),\n  rewardTokenDecimals: 9,\n  baseTokenMint: new PublicKey(\"6gkZ7QUmxmwPLS2NK3Dr6YHtTPZs6GQrkA595WSx5iLe\"),\n  baseTokenDecimals: 6,\n});\n\nexport const zbcUsdcDoubleDip: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"AMVd1e1mvWxvJ9LPU3GWjRQ7bfhkwVB69RiL5oRkyAtC\"),\n  farmTokenMint: new PublicKey(\"2ygRp6eeFaBmfEZngpkVwuVs8hmRbe3FMnF4qiJiFzhT\"),\n  rewardTokenMint: new PublicKey(\"zebeczgi5fSEtbpfQKVZKCJ3WgYXxjkMUkNNx7fLKAF\"),\n  rewardTokenDecimals: 9,\n  baseTokenMint: new PublicKey(\"7Hoi4adCSBzERdvSiUXtVDz79tiDxMD5HpDv7m9rs3Sb\"),\n  baseTokenDecimals: 6,\n});\n\nexport const novaUsdcDoubleDip: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"DQW177Qu36iFAjeXmywHPoeBVvVHa6ngwm2RWzL6ffVj\"),\n  farmTokenMint: new PublicKey(\"22MzBGjYuoZuAyoXEnNSAxBatpRwUFhDzusY1NboiMLj\"),\n  rewardTokenMint: new PublicKey(\"BDrL8huis6S5tpmozaAaT5zhE5A7ZBAB2jMMvpKEeF8A\"),\n  rewardTokenDecimals: 9,\n  baseTokenMint: new PublicKey(\"H2jZrZKx1fLY9LPi2ad5G2DVBWzMmUwPQLjRFERUroEH\"),\n  baseTokenDecimals: 6,\n});\n\nexport const hbbUsdhDoubleDip: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"9qCNAmcuo8odN67UJopN7BEKXBfT2kc7xf98612Ria1z\"),\n  farmTokenMint: new PublicKey(\"8Lb3tMPCUwYPWDRWsujSHs2grXBssXm8GdXyn3zh1GmU\"),\n  rewardTokenMint: new PublicKey(\"HBB111SCo9jkCejsZfz8Ec8nH7T6THF8KEKSnvwT6XK6\"),\n  rewardTokenDecimals: 6,\n  baseTokenMint: new PublicKey(\"DUGuXcpHX9y6WdTKgDm8XsECbf7pApA7ZvAsjUqHUoYn\"),\n  baseTokenDecimals: 6,\n});\n\nexport const zigUsdcDoubleDip: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"6rGP2znXXGU9vWN6Te5D3DaKvSYQKXB8chaLdVcsSJsF\"),\n  farmTokenMint: new PublicKey(\"87om2hz9nKKdS3sinYtGXCBuPACPd7xrnKBS3UwyZAoJ\"),\n  rewardTokenMint: new PublicKey(\"ANqY8h3sRSwkC29FvGJenAh7VGRABVVx7Ls6Mq4BuGT\"),\n  rewardTokenDecimals: 9,\n  baseTokenMint: new PublicKey(\"9nKbvVW9TjdnKt2NbfMaf9PHcg8zWWFgGTBfzUXdFcke\"),\n  baseTokenDecimals: 6,\n});\n\nexport const srlySolDoubleDip: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"5dGXUyewQ652r6FTC1yduvxxSVspvmcQRY5wFCVNZeg3\"),\n  farmTokenMint: new PublicKey(\"919hW5ubB18RFEU6KmP9AKfMxk6drESjc54sxewfz1Mp\"),\n  rewardTokenMint: new PublicKey(\"sRLY3migNrkC1HLgqotpvi66qGkdNedqPZ9TJpAQhyh\"),\n  rewardTokenDecimals: 9,\n  baseTokenMint: new PublicKey(\"HfkZkoPqZzd7S1F3BhkJN2Es1C5vabVYqfCecXG2MGHP\"),\n  baseTokenDecimals: 6,\n});\n\nexport const takiSrlyDoubleDip: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"GMa3zuo9DGHu9hfnQ6noUpsmtX1wJH9AF84q37TfmtfW\"),\n  farmTokenMint: new PublicKey(\"5gR2iQfkNe5XgApAUqMsbBjkXkmf4yineBFkhpm4yKgD\"),\n  rewardTokenMint: new PublicKey(\"Taki7fi3Zicv7Du1xNAWLaf6mRK7ikdn77HeGzgwvo4\"),\n  rewardTokenDecimals: 9,\n  baseTokenMint: new PublicKey(\"13HwDUH7yREGAwHSWnx4Kgnn6huL8yfCCBqaBr6NGVH6\"),\n  baseTokenDecimals: 6,\n});\n\nexport const stsolSolDoubleDip: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"D7tPD1ZP46fH2jJoL8YH75aPkGQVXFJVYiX7G2NVKt3T\"),\n  farmTokenMint: new PublicKey(\"HaBymyP8zL1pgpnkdAn14pmTQbLQpiraYwd1uEzkReG9\"),\n  rewardTokenMint: new PublicKey(\"HZRCwxP2Vq9PCpPXooayhJ2bxTpo5xfpQrwB1svh332p\"),\n  rewardTokenDecimals: 8,\n  baseTokenMint: new PublicKey(\"7ZvhrqdnP2NrQi2YCjQNd8jKJpLDMUuZg4wP7XJPjnVX\"),\n  baseTokenDecimals: 6,\n});\n\nexport const btcStsolDoubleDip: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"kDV1QjYknEeqMRaTGssdPmnnKLxTavUBFf3VkNn89aP\"),\n  farmTokenMint: new PublicKey(\"B91eD8Z2TfR21NxnwHv8H2GihT25qNRKtMxhtZfz4Kgk\"),\n  rewardTokenMint: new PublicKey(\"HZRCwxP2Vq9PCpPXooayhJ2bxTpo5xfpQrwB1svh332p\"),\n  rewardTokenDecimals: 8,\n  baseTokenMint: new PublicKey(\"GjBW6751wNJ99zYkr9QwSi98bvj1NgyAcYHfQDpemJfq\"),\n  baseTokenDecimals: 6,\n});\n\nexport const stsolWhethDoubleDip: OrcaFarmParams = Object.freeze({\n  address: new PublicKey(\"HcWSgX8HKHTDrbdHwMe2KgQSixs3KM2PNXEowT6bkyB7\"),\n  farmTokenMint: new PublicKey(\"DkMeCWXirFsQZPYfgDs4voqvQbYGGQiwYoPQkUn4fU9W\"),\n  rewardTokenMint: new PublicKey(\"HZRCwxP2Vq9PCpPXooayhJ2bxTpo5xfpQrwB1svh332p\"),\n  rewardTokenDecimals: 8,\n  baseTokenMint: new PublicKey(\"9V9CavjccKJH66m4MJHzVBYzY2ZM3U3D5xUCP7HSyAUz\"),\n  baseTokenDecimals: 6,\n});\n\n/**\n * Mapping for OrcaFarm parameters\n * Key: baseTokenMint : OrcaFarmParams\n */\nexport const orcaFarmConfigs: Record<string, OrcaFarmParams> = {\n  APDFRM3HMr8CAGXwKHiu2f5ePSpaiEJhaURwhsRrUUt9: solUsdcAqFarm,\n  FZthQCuYHhcfiDma7QrX7buDHwrZEd7vL8SjS6LQa3Tx: solUsdtAqFarm,\n  \"71FymgN2ZUf7VvVTLE8jYEnjP3jSK1Frp2XT1nHs8Hob\": ethSolAqFarm,\n  \"3e1W6Aqcbuk2DfHUwRiRcyzpyYRRjg6yhZZcyEARydUX\": ethUsdcAqFarm,\n  \"5kimD5W6yJpHRHCyPtnEyDsQRdiiJKivu5AqN3si82Jc\": raySolAqFarm,\n  ADrvfPBsRcJfGsN6Bs385zYddH52nuM5FA8UaAkX9o2V: ropeSolAqFarm,\n  \"8nTzqDXHriG2CXKbybeuEh1EqDQMtrbYMFWcP7AkiDaP\": stepSolAqFarm,\n  \"9tf8rBSEQYG7AqL896fN2nZi1iYPqpWaLEdpbeQaC1Vy\": srmSolAqFarm,\n  EsYaDKJCmcJtJHFuJYwQZwqohvVMCrFzcg8yo3i328No: fttSolAqFarm,\n  CzieDbGRdN1QGaGDNpSqzEA18bi881ccvkkGZi51pe1k: copeSolAqFarm,\n  \"7tYCdLN84EnTMkxM7HNamWJx7F4xgKe9KiiWvLyWjbgT\": oxySolAqFarm,\n  Acxs19v6eUMTEfdvkvWkRB4bwFCHm3XV9jABCy7c1mXe: btcSolAqFarm,\n  HiwRobjfHZ4zsPtqCC4oBS24pSmy4t8GGkXRbQj4yU6L: merSolAqFarm,\n  EYsNdtyu4gGTaGz8N5m5iQ3G1N6rDyMbR72B3CqbWW4W: fidaSolAqFarm,\n  \"99pfC8fWymXgbq3CvrExhx3UxQDC1fMWEWLbNT83F45e\": mapsSolAqFarm,\n  H2uzgruPvonVpCRhwwdukcpXK8TG17swFNzYFr2rtPxy: usdcUsdtAqFarm,\n  \"2uVjAuRXavpM6h1scGQaxqb6HVaNRn6T2X7HHXTabz25\": orcaSolAqFarm,\n  n8Mpu28RjeYD7oUX3LG1tPxzhRZh3YYLRSHcHRdS3Zx: orcaUsdcAqFarm,\n  HEvnD66WcBfTajS9adUYnGRBMDehFtLySiFHSD6kEBWs: kinSolAqFarm,\n  D6N9j8F2DhtzDtrdpT74y3u2YmYAzcggiLc3nTjqux9M: samoSolAqFarm,\n  \"3PD9SZFwXKkXr4akLf4ofo37ZUMycwML89R2P3qxcbZG\": liqUsdcAqFarm,\n  AZpo4BJHHRetF96v6SGinFZBMXM4yWMo4RA8C4PriDLk: snyUsdcAqFarm,\n  \"8PSfyiTVwPb6Rr2iZ8F3kNpbg65BCfJM9v8LfB916r44\": msolUsdcAqFarm,\n  AtB4nUmdyQfuWWJ9xAHw9xyVnJFfSjSuVWkiYan8y86w: slrsUsdcAqFarm,\n  F8gPSpwVHj8FdAJAYULDuZBxFEJut87hUbARYYx3471w: portUsdcAqFarm,\n  CS7fA5n4c2D82dUoHrYzS3gAqgqaoVSfgsr18kitp2xo: sbrUsdcAqFarm,\n  Dkr8B675PGnNwEr9vTKXznjjHke5454EQdz3iaSbparB: scnsolUsdcAqFarm,\n  C2YzN6MymD5HM2kPaH7bzcbqciyjfmpqyVaR3KA5V6z1: psolUsdcAqFarm,\n  \"29cdoMgu6MS2VXpcMo1sqRdWEzdUR9tjvoh8fcK8Z87R\": msolSolAqFarm,\n  C7TH2jEJJaxVwwuvkbcDGfHUiZvEkkeYjyAcdTMi5ujb: orcaPaiAqFarm,\n  CVapmQn7HaU1yMDW3q6oUV4hx6XoYv54T4zfGXkuJqkA: orcaMsolAqFarm,\n  APNpzQvR91v1THbsAyG3HHrUEwvexWYeNCFLQuVnxgMc: scnsolSolAqFarm,\n  FZ8x1LCRSPDeHBDoAc3Gc6Y7ETCynuHEr5q5YWV7uRCJ: atlasUsdcAqFarm,\n  GteBdo9sqE7T41G8AJsaG9WHW48uXBwsLLznmu2TBdgy: polisUsdcAqFarm,\n  \"2gXDJZ7XAtQEtf4PRSQZKoq1WMuu1H44tQanbMA3YVpu\": bopUsdcAqFarm,\n  \"6VK1ksrmYGMBWUUZfygGF8tHRGpNxQEWv8pfvzQHdyyc\": samoUsdcAqFarm,\n  \"4X1oYoFWYtLebk51zuh889r1WFLe8Z9qWApj87hQMfML\": ninjaSolAqFarm,\n  BVWwyiHVHZQMPHsiW7dZH7bnBVKmbxdeEjWqVRciHCyo: slimUsdcAqFarm,\n  ELfBngAgvLEHVBuJQhhE7AW6eqLX7id2sfrBngVNVAUW: whapiUsdcAqFarm,\n  HsauTv9s52Zv12eaDuSp6y7BEm4e4BHEyAsbdjyyWzPK: copeUsdcAqFarm,\n  GHuoeq9UnFBsBhMwH43eL3RWX5XVXbSRYJymmyMYpT7n: sunnyUsdcAqFarm,\n  EorFh8siFyLF1QTZ7cCXQaPGqyo7eb4SAgKtRH8Jcxjd: grapeUsdcAqFarm,\n  GMzPbaCuQmeMUm1opH3oSCgKUjVgJUW14myq99RVPGX5: abrUsdcAqFarm,\n  DRknxb4ZFxXUTG6UJ5HupNHG1SmvBSCPzsZ1o9gAhyBi: kuroUsdcAqFarm,\n  \"2toFgkQDoPrTJYGDEVoCasPXuL9uQnjvXJaDwa9LHyTx\": mediaUsdcAqFarm,\n  \"4SBx8GXu8HhcVHWydQv1vsDdZs3G93XSL9CtMBny6hS5\": tulipUsdcAqFarm,\n  H9yC7jDng974WwcU4kTGs7BKf7nBNswpdsP5bzbdXjib: mngoUsdcAqFarm,\n  Eswigpwm3xsipkTqahGi2PEJsJcULQBwZgxhQpr6yBEa: stsolWstethAqFarm,\n  qJxKN9BhxbYvRNbjfK2uAVWboto6sonj8XC1ZEW5XTB: sypUsdcAqFarm,\n  \"74B9aMS7SA832xKngt5VLKmWAP3pa3qkUzWncTmQSsGF\": stsolWldoAqFarm,\n  \"7aYnrdmdCRodDy2Czn6keUquUhjF1jPEmfwZPh488z8U\": whethSolAqFarm,\n  \"7NPtjjAP7vhp4t5NCLyY4DY5rurvyc8cgZ2a2rYabRia\": whethUsdcAqFarm,\n  \"5PHS5w6hQwFNnLz1jJFe7TVTxSQ98cDYC3akmiAoFMXs\": mndeMsolAqFarm,\n  Df6XNHMF3uRVZnz7LCEGiZVax6rXgz76owtVkBHEjSb6: wagUsdcAqFarm,\n  \"9cMWe4UYRPGAUUsTkjShJWVM7bk8DUBgxtwwH8asFJoV\": msolUsdtAqFarm,\n  \"5qoTq3qC4U7vFxo3iCzbXcaD1UEmDeCD63Dsuoct71oV\": msolWhethAqFarm,\n  \"8nKJ4z9FSw6wrVZKASqBiS9DS1CiNsRnqwCCKVQjqdkB\": btcMsolAqFarm,\n  DfgCnzaiTXfPkAH1C1Z441b5MzjjTCEh134ioxqRZxYf: ivnSolAqFarm,\n  \"8sfThep3io4gvcGeuoAg1Rs8GDwKJjtcdAFHqQSSNAVE\": larixUsdcAqFarm,\n  \"6jCERp5hKj37PCXP3VTjCDJeoPuSpnMDMz5A6jWQv3yS\": prtUsdcAqFarm,\n  GBijunwxa4Ni3JmYC6q6zgaVhSUJU6hVX5qTyJDRpNTc: jetUsdcAqFarm,\n  GtQ1NT7R5aaTiST7K6ZWdMhwDdFxsSFvVFhBo8vyHGAq: stsolUsdcAqFarm,\n  \"5a6Y1ephcbKSoyLMQyD1JWbtqawCy8p2FtRL9v3zhaG5\": wstethUsdcAqFarm,\n  \"6mJqqT5TMgveDvxzBt3hrjGkPV5VAj7tacxFCT3GebXh\": auryUsdcAqFarm,\n  Hmfrtmo93DpSDmVNLQKcBS5D1ia5JatiRSok9ososubz: avaxUsdcAqFarm,\n  FwCombynV2fTVizxPCNA2oZKoWXLZgdJThjE4Xv9sjxc: fttUsdcAqFarm,\n  \"4cXw2MYj94TFBXLL73fEpMCr8DPrW68JvrV8mzWgktbD\": rayUsdcAqFarm,\n  F59gkD7NnsdJbFKrRZsiBC8PAooN4c56T8QmahfW1iXN: slndUsdcAqFarm,\n  \"7vnps4VE5RTGAr5fmPZu7fSrk2VnM4Up838grZfqmxqE\": gofxUsdcAqFarm,\n  \"9EjcYfHcG8f1mccpHyaAwpoxaUPiheC6KgLQjyD9aTb6\": woofUsdcAqFarm,\n  CHTKUJGYRtBDqnxCFjxe5KEkZgxV98udbhuYYyzGxup5: sdogeUsdcAqFarm,\n  \"55r9txzQtmjTykmTXmBYZCVMg5z9squB8b5cSw2AhxA4\": catoUsdcAqFarm,\n  DSiHyHDn96bUQSZtizyCRLcQzrwohZeMpVu8rYJN1HzG: oogiUsdcAqFarm,\n  \"5MvQHx8eftU39JTucFsT315JFnQASuDQg3FqxTw7xcvN\": sonarUsdcAqFarm,\n  HNrYngS1eoqkjWro9D3Y5Z9sWBDzPNK2tX4rfV2Up177: aptUsdcAqFarm,\n  AWrtTWG4Zgxw8D92bb3L3sQtGLD3zDztMPWsXSph8iBP: dflUsdcAqFarm,\n  \"9Y1vPaAsMz8X65DebMMnmBjbMo8i4jh4mcgiggZUUS3M\": dflSolAqFarm,\n  FnDxJPNk7pPmGHUbR4XUHmHevrkXHdna5D3sQKcAtjBL: frktUsdcAqFarm,\n  FGgP1npQTsC5Q4xBmQtNYSh51NKqNwdxBZy8JCo3igcu: tttUsdcAqFarm,\n  E1U63VXhNiWoUkVvjrfLDdV1oJrwE6zLde3bohr6jCqz: upsUsdcAqFarm,\n  GjG7JjTQfQpDxw4hWx4etP9oTaYCuCbPjsU8WaUT3xHB: fantUsdcAqFarm,\n  D8WjqtwC9CzBrQKfSf2ccCHFQuPYwyLv5KAy8WjT5vnf: blockUsdcAqFarm,\n  \"34Ppq6R8NfYBwWwPY4cBK4Afyb8hHaASQFukCzH6cV4n\": runUsdcAqFarm,\n  HjR8JgqNKQVMvdryqJw5RJ4PCE9WGk8sgbEF7S9S3obv: uxpUsdcAqFarm,\n  J3kvcay3N16FBdawgnqoJ9v9p6XCvyCLE2Z9F5RLvGkj: btcUsdcAqFarm,\n  \"12Uj74zgUUoBe4yeackwQ4qYtFMr9fk1xL6q5Nha6t2N\": mndeUsdcAqFarm,\n  \"71CBZeJ4tw38L9pSPoCz4fRsuWE64Fipyzotte7haoCS\": chicksUsdcAqFarm,\n  \"6MF5CHWAj5mS7FhpxiKz37CzR2eYTu236XpBKKMXCrGg\": onesolUsdcAqFarm,\n  HDgxKmiA8Pv82fNguhVeMkZqQkos2YksFPoP1KttWxX8: wmpUsdcAqFarm,\n  \"2VuGzaMrDnDyZfYvDwSXk38s7M2wpud7LDY3dGA1J9sy\": unqUsdcAqFarm,\n  GoaAiajubRgeCFEz9L6mLnSmT2QFegoJDH5tpLfivpj: basisUsdcAqFarm,\n  E6FUnQHGHJVJg7oExVr5Moeaj1QpdpZQF5odYjHXWPZb: gstUsdcAqFarm,\n  F5BTnwuMA6rxftTdbZ33VWKr2wrr6DuQHnd4guKmPSYQ: meanUsdcAqFarm,\n  HCtyJzFUtYecXrA52s4Y9atq4J1fhT3cYsTX17XVSFag: aartUsdcAqFarm,\n  DJqqvzSuPaWThfzwMjXx7H2ZmHDdwxza6NtFudtuXcpc: shdwUsdcAqFarm,\n  \"2ws7g3LBPdctfKn42Di9qxzQtUJ8ZL1aEAX2rGEQMNqh\": shdwSolAqFarm,\n  \"99ZHUQsgxL7K6PHrGNi1gSwawwPr7UA5fbWrYoHQ6qhX\": scyUsdcAqFarm,\n  E5kSBqTDxFLbLNQaVVtPtnhEYVLMCK2fVSEKoMKL98qR: slcUsdcAqFarm,\n  \"6c13xsmyk7UaHUWZ2rm1MM3ZdrQRSBkQ9waaG25ridVs\": wustSolAqFarm,\n  J1KfRtP5y2warpD7LdJhfBLPKoWwSqYuovdArSv1mpQ7: wustUsdcAqFarm,\n  \"68YVjgPnTUPcBqZyghqvD2WPNsrLKsjYTmBKJzHRr4qd\": msolWustAqFarm,\n  \"8Mh7drLbt3jFJYwp948XyvQscGLaLkChNcaH5wwaAoWA\": wlunaWustAqFarm,\n  HTZd53fYwYQRyAjiaPsZy9Gf41gobFdqkF4oKe3XLi95: stsolWustAqFarm,\n  AzEoVuNJyo9ByoLRZ5t6vav2Zg24vULNVJM41PgCKUqR: jsolUsdcAqFarm,\n  CCyDxjdW3G7hPTthTMPTZ4bnhFF19XG6rx2fNiKeRQww: daosolUsdcAqFarm,\n  Gx4PoxenyQwhGGnKagAT35iVg4im1iKhJxDWqVhgu6tk: orcaUsdtAqFarm,\n  GsfyYHkSgC3Ta6aWR9MjB2sxoBrkGGeR2tAwXbpphf3: orcaWhethAqFarm,\n  \"7cuu94swKL5PtFQohKMAzyd1mjj65rgMW3GzLY31HCnK\": geneUsdcAqFarm,\n  \"85krvT9DxdYgoFLQDHTAGdvtNuLdAsc4xE5FkVLpN2aR\": cmfiUsdcAqFarm,\n  HVLyX8mD8YvKgZJ4oB6rXJiCYMLpHKwB6iCiCjE1XwdT: celoUsdcAqFarm,\n  Gpzd833qSmv3kXpQmxEaqkrZTXZaRjhNAoqhf61qAhTG: ftmUsdcAqFarm,\n  DFpLFcQZqDKykyDePgip4r6MExVmBKWqTa12ezq6qxUY: btcOrcaAqFarm,\n  cL5WhffCYFRLM4We8VS2W684kM4pHyuvEDwp8Ddw48k: hbbUsdcAqFarm,\n  FkKzu2HeMJZf4oHwoYPxLGVy3net5Jq8HAfnA5VqETgk: hbbSolAqFarm,\n  \"2Reqt4Sw9xNY8BoJ3EZLpFu5yVgNxFrbw8M3KiJpPn6o\": sbUsdcAqFarm,\n  \"4ni1nho89cDKAQ9ddbNQA9ieLYpzvJVmJpuogu5Ct5ur\": stsolUsdtAqFarm,\n  H7gyTmNCDXkD8MGMqnxqoD8ANszjcju4tjT6ERZ5dakf: seededUsdcAqFarm,\n  \"3hksYA17VxgiKSeihjnZkBbjc2CTbEBfvDCYgQhojTo5\": audioUsdcAqFarm,\n  AaZRnJAnDyJyPD9uPJpJ8bzBGDCEi6jtBpUf92xErWPp: mmaUsdcAqFarm,\n  \"9wPhuYapychVDSxmXqCZxy2Ka8Lmav4SHM72si8bfraV\": onesolSolAqFarm,\n  Eho8h1BcoG5QWU7X9FzJafw5ErKUXtR2LobAJJZfWff4: puffSolAqFarm,\n  \"4iyU77yZbg8iD344vbwruAuDAf9i1EVV3FhZJDnWStBE\": saoUsdcAqFarm,\n  \"3dXdXg5HPyZ73GFC9LkSn3thdJUGeXWB8iSTHs5UcqiH\": srlyv2SolAqFarm,\n  \"2LYgm6nGXmSSjfoEriPuYeGoNiWNxUs7n3rnTbDWN5c7\": zbcUsdcAqFarm,\n  CFxQF5kNAtbbDj298Xr47Sf4mkSyuzWpRH97hrdQ6kxi: gmtUsdcAqFarm,\n  DdAFNvDxtEHCgKj3JAM64zCKfMWhs4J9wEmRrjUAFiME: novaUsdcAqFarm,\n  \"7n2YW9qLkhGFArdZPLoF4hYPE2zw7xCACkVPXrUWnLuo\": hbbUsdhAqFarm,\n  \"6atKbS2Xz5vu7cqWBNk8KYkuakRzckZ9nvtUKf2k8Sc3\": takiSrlyv2AqFarm,\n  \"5vhh9ZnD9vnahRhFLP1EUEyYRSzvJwgw9U2xygsSJSrp\": zigUsdcAqFarm,\n  HfRgvhgscGX5GaP3rUrZAhh7gS4aJ2UQ7rNVX976rG6P: srlySolAqFarm,\n  \"3xaK5aWWLNRB73xUVX3cusLhDp65mTvP4fwW5Jwxakgs\": takiSrlyAqFarm,\n  \"4jjQSgFx33DUb1a7pgPsi3FbtZXDQ94b6QywjNK3NtZw\": stsolSolAqFarm,\n  HYp9v7cY4wAxSsa6ijztQQ3GQ8iTttuG5vu8JNBDHoNh: btcStsolAqFarm,\n  FWurFWADrgmhb6Y44LEaCMnEHS2Tu3QGqd9oBcZtr8gT: stsolWhethAqFarm,\n  \"57vGdcMZLnbNr4TZ4hgrpGJZGR9vTPhu8L9bNKDrqxKT\": liqUsdcDoubleDip,\n  GwrBA1F8rGummDCDd8NY9Eu1cLNuJqbT8WaGxgWpFwGL: stepSolDoubleDip,\n  \"66xCxkffQZKBZLiHV3PDcfR8ANJTfnDRxPCaBdv4wxB7\": slrsUsdcDoubleDip,\n  \"4CGxvZdwiZgVMLXiTdJHTkJRUTpTSJCtmtCRbSkAxerE\": portUsdcDoubleDip,\n  \"9SDpBrfqNxjXcCzpKWM6yUKdfky975VJBD6xcu5cKf5s\": copeUsdcDoubleDip,\n  A7vvbqENJj8kED3ABjphe8TvwpasQYtoWGKpjpLArMxa: bopUsdcDoubleDip,\n  \"9voVuTq1S9bFZkF2Jo44HoVG63w2xDRT8eBzB23YbQud\": samoUsdcDoubleDip,\n  Bfoi3RNnfdP5VeRGqvTA8MRN9ePGJoZgeKfe8WeBHUxE: whapiUsdcDoubleDip,\n  \"3K7aZhtwWJ2JS6GnbbgeDVnxd1q2hwhqasmgRsAMZ4yC\": slimUsdcDoubleDip,\n  \"7YyhptkxY81HPzFVfyCzA5UXxWdsNRD41ofLva3TuSpd\": ninjaSolDoubleDip,\n  HFmY1ggCsCky1zJ1sfdkNR4zb3u5n38YNRdf4vsGu17t: atlasUsdcDoubleDip,\n  \"63JUKLnCAuNMPSPioEgbjjzp9Qk8qSEEM8eZqEtPqfLU\": polisUsdcDoubleDip,\n  \"5uR5STASUmoGVHzqMeut98t26TfVkQqWU9f9dsv3NfJ6\": abrUsdcDoubleDip,\n  \"6PGoaQdL9e463hdaFxHXsuPcjCHRK32CQ9PFKxvM7XY2\": kuroUsdcDoubleDip,\n  \"5r3vDsNTGXXb9cGQfqyNuYD2bjhRPymGJBfDmKosR9Ev\": msolUsdcDoubleDip,\n  \"3Duk5b6fLztPmS4ryV48FM1Q9WXUSMwz9jehAT4UtqpE\": orcaMsolDoubleDip,\n  \"3RTGL7gPF4V1ns1AeGFApT7cBEGVDfmJ77DqQi9AC6uG\": msolSolDoubleDip,\n  \"3kT3oYuS1rCfhmqfgy6EKcbZdaJimaVEjoy25QiuEaoj\": stsolWstethDoubleDip,\n  Ds4VGZhZzS2PMFzhzKeC3mwcQjdiCG21R76fTVbsSJyJ: sypUsdcDoubleDip,\n  \"2wPsMuzhEsC6GhV3qtFpmJF6atEgLGbnmQ8U43Y6fPxZ\": mndeMsolDoubleDip,\n  Afvh7TWfcT1E9eEEWJk17fPjnqk36hreTJJK5g3s4fm8: msolUsdtDoubleDip,\n  \"58nifjPjF3CutGz2xMxvAMk7R9YgbVEc8Cstj4rCcs8j\": msolWhethDoubleDip,\n  DzpLz78wuwyFsQToin8iDv6YK6aBEymRqQq82swiFh7r: btcMsolDoubleDip,\n  HqajzzbGMST3yCCVBJuXvNVsWkY2DXqiBz9cTRmmyBMy: ivnSolDoubleDip,\n  DNAGfa7tK8csprRQmiDUwDaFfhw6ueHhVFHTCgTJ8HGs: larixUsdcDoubleDip,\n  B95rdqSY4dqPwmt295XwBZZqZJYLmqDNXU6NvBpT4ep4: gofxUsdcDoubleDip,\n  \"4HaQXDz9gdLgKUjvNVtnLyNZoWNYKjh3XxH1TpLgiwmi\": woofUsdcDoubleDip,\n  \"4kXYyZAMBdvgDaBKUGvRWJnHw9af7sCUPvpQ68PEdP8b\": sdogeUsdcDoubleDip,\n  BHtZnTBMeY4EBEW5egGnuK5bdW12v6Dod6wFav79AyYx: catoUsdcDoubleDip,\n  FiwSk36yi1DNWcuQUeNipAc1VKxa9Wv9AR2xFvyKUxAE: oogiUsdcDoubleDip,\n  GWmwwMGYBG4NqYdnsYrudzBnbgDC49MkBxdzhfLA9kVY: sonarUsdcDoubleDip,\n  \"9fuv3emLQXECrTWqm2HaKT3wQhmvmgqmReZSMcu8PfpH\": upsUsdcDoubleDip,\n  C2EcthTMaC5eATXVaXg5ctvMfUYYgFyNibybHes5D3S6: fantUsdcDoubleDip,\n  \"3u2dNfGuU6C3vmSg5EvLPUpX57b3niqhWBV5Gc3WDEf5\": stsolUsdcDoubleDip,\n  Ce3VXSQGFEHqrQSEzcVb2Ro88Mcn56cYBUAXFx5tL9bo: wmpUsdcDoubleDip,\n  GTcxXu3yw7yotq2UtAMvpEbx84ozJyrBwy77Cmem7m4X: chicksUsdcDoubleDip,\n  CsGTrgJ6oLx9UQow9aLjuAacjXTY53zT8B2FnAbfVZAS: unqUsdcDoubleDip,\n  \"3h2VBX8533NB8eEH8rPXMdayodFDbgTHpbav6JqLZAQq\": meanUsdcDoubleDip,\n  \"8Wu5sJpERA1J5iWcT8aMpt9cTAfKDLPbLpGjNsJoPgLc\": wagUsdcDoubleDip,\n  \"7WWHfufv8vuBC1x7GXA3pu7kgNhEQkXoq3CtbaQihAJ9\": shdwUsdcDoubleDip,\n  BDStVBt4NS5bfda25ubK51kVRioV4yjKKCPbe96jeEms: shdwSolDoubleDip,\n  Bg7pZq7KdsQsnCQBeNpa4XVnrWfjUJNu3ViHoNB7YUZU: aartUsdcDoubleDip,\n  \"4yx2aHMa7N4m1uUaBRy9QPtpstw3HFPtvcCPJQaGFHKL\": basisUsdcDoubleDip,\n  X8GnAvxq942xXjNzqYPFQQ9JstJQNEA81uPeNoQpgrN: slcUsdcDoubleDip,\n  F49Cm3srGucQCBanA2xL7nSKHfH1QZd9vLdFtkg4LKnq: wustSolDoubleDip,\n  \"2mhVUMsG7eb3XhHjAbKpRZgWNyGZNCiWU7dRxauzZaGL\": wustUsdcDoubleDip,\n  \"6wqME6zPQzGDLugpnwZnVBKBbATC5nTaEa781Vj98yvM\": msolWustDoubleDip,\n  \"3ZGKT28NXAqb2YtUAMvKixQvHNHT31Q5mK8AC2iBMs29\": wlunaWustDoubleDip,\n  \"3Q44iV4URXdbS4Tk1PGs5VdWQoCxHB7zdcdMnemo8jfH\": stsolWustDoubleDip,\n  E8RVjS24pBuF3oCCeJVAgC4RQ7mVa5P3FGXqGbiczzvD: cmfiUsdcDoubleDip,\n  BxPd4x7gm6WQF6jsDCRQuQVZ2bopQ4KegMrqyQgdkPDk: hbbUsdcDoubleDip,\n  \"9RRBDWZGWGVnHgazCpb9R1XApmHLBDya8Tq1yrzoMsKY\": celoUsdcDoubleDip,\n  \"3Wppx86xN7Dg7GLUTD9C7AqCt68qZkWzNYUdCS7t1pCk\": sbUsdcDoubleDip,\n  E7Af9Fa2U1YqEkQpAYjXwDB5TJUou9VcN3ot33Gj6UY9: ftmUsdcDoubleDip,\n  CtvKaRLzCzRZCcYPwai7NCYBK4ArBj2oD6BfvMgJoiCN: stsolUsdtDoubleDip,\n  H15WptGntFQifZmJHUzYBV9Mv7P27ofavEsF6yqpLTdX: seededUsdcDoubleDip,\n  Hva9oLa2GjoKdB45WoHujsX7MTpehByPshMrQpNDmkFq: onesolSolDoubleDip,\n  H9qkbU2XYSQTk6JJJ2TMuZBthfkeCHigmuxB5jiQaamn: mmaUsdcDoubleDip,\n  Ge5kuYg5PekrPUeKzngw97Cnfngj8j6NCX5q1jTBkWSW: puffSolDoubleDip,\n  A9BeGSRJJYXPrMs81rVZxvkk16fopzgG5YkngntgTu7p: saoUsdcDoubleDip,\n  \"6gkZ7QUmxmwPLS2NK3Dr6YHtTPZs6GQrkA595WSx5iLe\": srlyv2SolDoubleDip,\n  \"7Hoi4adCSBzERdvSiUXtVDz79tiDxMD5HpDv7m9rs3Sb\": zbcUsdcDoubleDip,\n  H2jZrZKx1fLY9LPi2ad5G2DVBWzMmUwPQLjRFERUroEH: novaUsdcDoubleDip,\n  DUGuXcpHX9y6WdTKgDm8XsECbf7pApA7ZvAsjUqHUoYn: hbbUsdhDoubleDip,\n  \"9nKbvVW9TjdnKt2NbfMaf9PHcg8zWWFgGTBfzUXdFcke\": zigUsdcDoubleDip,\n  HfkZkoPqZzd7S1F3BhkJN2Es1C5vabVYqfCecXG2MGHP: srlySolDoubleDip,\n  \"13HwDUH7yREGAwHSWnx4Kgnn6huL8yfCCBqaBr6NGVH6\": takiSrlyDoubleDip,\n  \"7ZvhrqdnP2NrQi2YCjQNd8jKJpLDMUuZg4wP7XJPjnVX\": stsolSolDoubleDip,\n  GjBW6751wNJ99zYkr9QwSi98bvj1NgyAcYHfQDpemJfq: btcStsolDoubleDip,\n  \"9V9CavjccKJH66m4MJHzVBYzY2ZM3U3D5xUCP7HSyAUz\": stsolWhethDoubleDip,\n};\n"
  },
  {
    "path": "src/constants/index.ts",
    "content": "export * from \"./orca-defaults\";\nexport * from \"./pools\";\nexport * from \"./farms\";\n"
  },
  {
    "path": "src/constants/orca-defaults.ts",
    "content": "import { Percentage } from \"../public/utils/models/percentage\";\n\nexport const defaultSlippagePercentage = Percentage.fromFraction(1, 1000); // 0.1%\n"
  },
  {
    "path": "src/constants/pools.ts",
    "content": "import { PublicKey } from \"@solana/web3.js\";\nimport { CurveType, OrcaPoolParams } from \"../model/orca/pool/pool-types\";\nimport { Percentage } from \"../public/utils/models/percentage\";\nimport * as Tokens from \"./tokens\";\n\n/**\n * The following content is auto-generated.\n */\n\nexport const solUsdcPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"EGZ7tiLeH62TPV1gL8WwbXGzEPa9zmcpVnnkPKKnrE2U\"),\n  nonce: 252,\n  authority: new PublicKey(\"JU8kmKzDHF9sXWsnoznaFDFezLsE5uomX2JkRMbmsQP\"),\n  poolTokenMint: new PublicKey(\"APDFRM3HMr8CAGXwKHiu2f5ePSpaiEJhaURwhsRrUUt9\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"8JnSiuvQq3BVuCU3n4DrSTw9chBSPvEMswrhtifVkr1o\"),\n  tokenIds: [Tokens.solToken.mint.toString(), Tokens.usdcToken.mint.toString()],\n  tokens: {\n    [Tokens.solToken.mint.toString()]: {\n      ...Tokens.solToken,\n      addr: new PublicKey(\"ANP74VNsHwSrq9uUSjiSNyNWvf6ZPrKTmE4gHoNd13Lg\"),\n    },\n    [Tokens.usdcToken.mint.toString()]: {\n      ...Tokens.usdcToken,\n      addr: new PublicKey(\"75HgnSvXbWKZBpZHveX68ZzAhDqMzNDS29X6BGLtxMo1\"),\n    },\n  },\n  curveType: CurveType.ConstantProduct,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(25, 10000),\n    ownerFee: Percentage.fromFraction(5, 10000),\n  },\n});\n\nexport const solUsdtPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"Dqk7mHQBx2ZWExmyrR2S8X6UG75CrbbpK2FSBZsNYsw6\"),\n  nonce: 255,\n  authority: new PublicKey(\"2sxKY7hxVFrY5oNE2DgaPAJFamMzsmFLM2DgVcjK5yTy\"),\n  poolTokenMint: new PublicKey(\"FZthQCuYHhcfiDma7QrX7buDHwrZEd7vL8SjS6LQa3Tx\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"BBKgw75FivTYXj85D2AWyVdaTdTWuSuHVXRm1Xu7fipb\"),\n  tokenIds: [Tokens.solToken.mint.toString(), Tokens.usdtToken.mint.toString()],\n  tokens: {\n    [Tokens.solToken.mint.toString()]: {\n      ...Tokens.solToken,\n      addr: new PublicKey(\"DTb8NKsfhEJGY1TrA7RXN6MBiTrjnkdMAfjPEjtmTT3M\"),\n    },\n    [Tokens.usdtToken.mint.toString()]: {\n      ...Tokens.usdtToken,\n      addr: new PublicKey(\"E8erPjPEorykpPjFV9yUYMYigEWKQUxuGfL2rJKLJ3KU\"),\n    },\n  },\n  curveType: CurveType.ConstantProduct,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(25, 10000),\n    ownerFee: Percentage.fromFraction(5, 10000),\n  },\n});\n\nexport const ethSolPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"EuK3xDa4rWuHeMQCBsHf1ETZNiEQb5C476oE9u9kp8Ji\"),\n  nonce: 255,\n  authority: new PublicKey(\"DffrDbzPiswDJaiicBBo9CjqztKgFLrqXGwNJH4XQefZ\"),\n  poolTokenMint: new PublicKey(\"71FymgN2ZUf7VvVTLE8jYEnjP3jSK1Frp2XT1nHs8Hob\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"unxKgWEc71ZiHwMqZs3VLqjcjmZhfTZEg94ZLGvjdMP\"),\n  tokenIds: [Tokens.ethToken.mint.toString(), Tokens.solToken.mint.toString()],\n  tokens: {\n    [Tokens.ethToken.mint.toString()]: {\n      ...Tokens.ethToken,\n      addr: new PublicKey(\"7F2cLdio3i6CCJaypj9VfNDPW2DwT3vkDmZJDEfmxu6A\"),\n    },\n    [Tokens.solToken.mint.toString()]: {\n      ...Tokens.solToken,\n      addr: new PublicKey(\"5pUTGvN2AA2BEzBDU4CNDh3LHER15WS6J8oJf5XeZFD8\"),\n    },\n  },\n  curveType: CurveType.ConstantProduct,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(25, 10000),\n    ownerFee: Percentage.fromFraction(5, 10000),\n  },\n});\n\nexport const ethUsdcPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"FgZut2qVQEyPBibaTJbbX2PxaMZvT1vjDebiVaDp5BWP\"),\n  nonce: 253,\n  authority: new PublicKey(\"4dfCZR32xXhoTgMRhnViNaTFwiKP9A34TDjHCR3xM5rg\"),\n  poolTokenMint: new PublicKey(\"3e1W6Aqcbuk2DfHUwRiRcyzpyYRRjg6yhZZcyEARydUX\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"DLWewB12jzGn4wXJmFCddWDeof1Ma4cZYNRv9CP5hTvX\"),\n  tokenIds: [Tokens.ethToken.mint.toString(), Tokens.usdcToken.mint.toString()],\n  tokens: {\n    [Tokens.ethToken.mint.toString()]: {\n      ...Tokens.ethToken,\n      addr: new PublicKey(\"H9h5yTBfCHcb4eRP87fXczzXgNaMzKihr7bf1sjw7iuZ\"),\n    },\n    [Tokens.usdcToken.mint.toString()]: {\n      ...Tokens.usdcToken,\n      addr: new PublicKey(\"JA98RXv2VdxQD8pRQq4dzJ1Bp4nH8nokCGmxvPWKJ3hx\"),\n    },\n  },\n  curveType: CurveType.ConstantProduct,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(25, 10000),\n    ownerFee: Percentage.fromFraction(5, 10000),\n  },\n});\n\nexport const raySolPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"3THMPkPmcHJ54JtHRyazhs7UN7HbV5KiNJVLJs6hSPSC\"),\n  nonce: 255,\n  authority: new PublicKey(\"EUc3MtHPLL956pTDfM5q25jp5Fk9zW7omEzh1uyDY7s6\"),\n  poolTokenMint: new PublicKey(\"5kimD5W6yJpHRHCyPtnEyDsQRdiiJKivu5AqN3si82Jc\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"65XNtnUsP1TMzKMGhMoD3GUFMNbmnZQwDaxDLE3jncUC\"),\n  tokenIds: [Tokens.rayToken.mint.toString(), Tokens.solToken.mint.toString()],\n  tokens: {\n    [Tokens.rayToken.mint.toString()]: {\n      ...Tokens.rayToken,\n      addr: new PublicKey(\"GZaUNWf4ov6VZaD5MqZtc5pHB3mWTqczNUB4sstt8CSR\"),\n    },\n    [Tokens.solToken.mint.toString()]: {\n      ...Tokens.solToken,\n      addr: new PublicKey(\"GNSZ1rr57QQ6qLcmZnhMcoBymenVezhNpzcFSfJP37h9\"),\n    },\n  },\n  curveType: CurveType.ConstantProduct,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(25, 10000),\n    ownerFee: Percentage.fromFraction(5, 10000),\n  },\n});\n\nexport const ropeSolPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"DCENobjFZK59nLeMCVRkQtnkAWrJkWAVpmVnwVNc8gqH\"),\n  nonce: 251,\n  authority: new PublicKey(\"C2DDX95TK3uC9MQXhHp3LWRv9kWtFTp36Ub9VPCKKiCV\"),\n  poolTokenMint: new PublicKey(\"ADrvfPBsRcJfGsN6Bs385zYddH52nuM5FA8UaAkX9o2V\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"88rKjeeDQYJxGVCG39znDvbxzjPc5H37XqHRQCSNJvED\"),\n  tokenIds: [Tokens.ropeToken.mint.toString(), Tokens.solToken.mint.toString()],\n  tokens: {\n    [Tokens.ropeToken.mint.toString()]: {\n      ...Tokens.ropeToken,\n      addr: new PublicKey(\"HLHPVwgzYjTHmu1fmV9eZzdE8H3fZwhuCBRNNN2Z5miA\"),\n    },\n    [Tokens.solToken.mint.toString()]: {\n      ...Tokens.solToken,\n      addr: new PublicKey(\"7Be3aStQmKgeXC1xqfJnA8qaGzw6keQTLqHYAJprZK2H\"),\n    },\n  },\n  curveType: CurveType.ConstantProduct,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(25, 10000),\n    ownerFee: Percentage.fromFraction(5, 10000),\n  },\n});\n\nexport const stepSolPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"2sNtf8wLZMR7XJm2pzvvVUNPTNRFsGTiC5vgDSGv5QGD\"),\n  nonce: 255,\n  authority: new PublicKey(\"HzAJLVqZ7fnmc2LfRPtz2GHu93RpAPQsdDTg6DRoTTmf\"),\n  poolTokenMint: new PublicKey(\"8nTzqDXHriG2CXKbybeuEh1EqDQMtrbYMFWcP7AkiDaP\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"5FEmPmAk72NycwzMXLD3hc2f47zRXocv4mvd3HEUZ5io\"),\n  tokenIds: [Tokens.stepToken.mint.toString(), Tokens.solToken.mint.toString()],\n  tokens: {\n    [Tokens.stepToken.mint.toString()]: {\n      ...Tokens.stepToken,\n      addr: new PublicKey(\"35opuEpVvggzfV361hQVNXiC7KAKS1HCeDoVpfVybo8k\"),\n    },\n    [Tokens.solToken.mint.toString()]: {\n      ...Tokens.solToken,\n      addr: new PublicKey(\"A3DSsYZJWHiwXSQb7P2AbEoaWhpauJLU1PVdTPnzV5s9\"),\n    },\n  },\n  curveType: CurveType.ConstantProduct,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(25, 10000),\n    ownerFee: Percentage.fromFraction(5, 10000),\n  },\n});\n\nexport const srmSolPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"EJRXAkKyDhDgzdZz1Ss5CpWKWSK9xTR5S6GDLAer8mdh\"),\n  nonce: 255,\n  authority: new PublicKey(\"2pQbngWBSWUjBHWVWQ3tppKxW3Y5NzUcye1822itKyzZ\"),\n  poolTokenMint: new PublicKey(\"9tf8rBSEQYG7AqL896fN2nZi1iYPqpWaLEdpbeQaC1Vy\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"APyc1s8wES4Q2FTqHN8jXZtRuWQyRWZ82u7EFfras2iZ\"),\n  tokenIds: [Tokens.srmToken.mint.toString(), Tokens.solToken.mint.toString()],\n  tokens: {\n    [Tokens.srmToken.mint.toString()]: {\n      ...Tokens.srmToken,\n      addr: new PublicKey(\"2JCxZv6LaFjtWqBXSC2brsWE9WryS4Cp3VwwDeNGvLyv\"),\n    },\n    [Tokens.solToken.mint.toString()]: {\n      ...Tokens.solToken,\n      addr: new PublicKey(\"EdhG3vQbTVVAARZB4AbhU2HsVbvfFqX2yhBAfFV22nzA\"),\n    },\n  },\n  curveType: CurveType.ConstantProduct,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(25, 10000),\n    ownerFee: Percentage.fromFraction(5, 10000),\n  },\n});\n\nexport const fttSolPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"68Bg6yQxWm3mrUYk3XzMiF5ycE41HwPhyEdaB1cp6wuo\"),\n  nonce: 255,\n  authority: new PublicKey(\"BpshqwEmPXmJwJfFgTFafmXoHN8Lc7SouvFsh6jyYQAm\"),\n  poolTokenMint: new PublicKey(\"EsYaDKJCmcJtJHFuJYwQZwqohvVMCrFzcg8yo3i328No\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"FWBCbjZnypLKz7uHGJXpBAEez2FurQXi9J3js7ZT1xDe\"),\n  tokenIds: [Tokens.fttToken.mint.toString(), Tokens.solToken.mint.toString()],\n  tokens: {\n    [Tokens.fttToken.mint.toString()]: {\n      ...Tokens.fttToken,\n      addr: new PublicKey(\"3eVE92aEAsLYcBACXNu1yxoHVfTM8e8vmQC2zSApGRJX\"),\n    },\n    [Tokens.solToken.mint.toString()]: {\n      ...Tokens.solToken,\n      addr: new PublicKey(\"BbsiNbFfJsRDwqF4JaiJ6sKecNuY4eWmEaDHcY6h6HuD\"),\n    },\n  },\n  curveType: CurveType.ConstantProduct,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(25, 10000),\n    ownerFee: Percentage.fromFraction(5, 10000),\n  },\n});\n\nexport const copeSolPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"BRx4dJecxzeGYc1BskCWonfGCeMyv9G7tk66cf2QGhK6\"),\n  nonce: 254,\n  authority: new PublicKey(\"JAJr1D6BQHFj9qJ8pfXhvJgLfn9vTcviU9sTA8MhKzN4\"),\n  poolTokenMint: new PublicKey(\"CzieDbGRdN1QGaGDNpSqzEA18bi881ccvkkGZi51pe1k\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"9X8VRnxk6EVKGA7TErdSZYFC8oLUM569pDbZTtycjvXw\"),\n  tokenIds: [Tokens.copeToken.mint.toString(), Tokens.solToken.mint.toString()],\n  tokens: {\n    [Tokens.copeToken.mint.toString()]: {\n      ...Tokens.copeToken,\n      addr: new PublicKey(\"7v5GCdHH439SztxcqL4wpfWdPvv9EfMm8GYTHSUQoGoY\"),\n    },\n    [Tokens.solToken.mint.toString()]: {\n      ...Tokens.solToken,\n      addr: new PublicKey(\"5tSgRUK6f2x1nAXA4gdcHNXiWdToqni9pr5xvq2Fq82u\"),\n    },\n  },\n  curveType: CurveType.ConstantProduct,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(25, 10000),\n    ownerFee: Percentage.fromFraction(5, 10000),\n  },\n});\n\nexport const oxySolPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"Cq4EZrvuFQpsCz8L3gS6t7iQ7VWzTtqDgSxD4AgVAAfd\"),\n  nonce: 255,\n  authority: new PublicKey(\"FxxcJPunf6Vj9Ve5zyM9yatMbmkrzTQ1QSk4NqKW9DvK\"),\n  poolTokenMint: new PublicKey(\"7tYCdLN84EnTMkxM7HNamWJx7F4xgKe9KiiWvLyWjbgT\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"Ch8i2A1GAspivXYfdme7vSxh1mhRjmRgeiKN8KpWhVqo\"),\n  tokenIds: [Tokens.oxyToken.mint.toString(), Tokens.solToken.mint.toString()],\n  tokens: {\n    [Tokens.oxyToken.mint.toString()]: {\n      ...Tokens.oxyToken,\n      addr: new PublicKey(\"BoZQMfTLTPcXnevJxNFkECVbKesfhXnTUg4kxLgzV9BX\"),\n    },\n    [Tokens.solToken.mint.toString()]: {\n      ...Tokens.solToken,\n      addr: new PublicKey(\"8ZrEcJbgg7BdoBga5RYDR8aMujLf5cAQp8zdPZqk7nNC\"),\n    },\n  },\n  curveType: CurveType.ConstantProduct,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(25, 10000),\n    ownerFee: Percentage.fromFraction(5, 10000),\n  },\n});\n\nexport const btcSolPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"7N2AEJ98qBs4PwEwZ6k5pj8uZBKMkZrKZeiC7A64B47u\"),\n  nonce: 255,\n  authority: new PublicKey(\"GqnLhu3bPQ46nTZYNFDnzhwm31iFoqhi3ntXMtc5DPiT\"),\n  poolTokenMint: new PublicKey(\"Acxs19v6eUMTEfdvkvWkRB4bwFCHm3XV9jABCy7c1mXe\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"4yPG4A9jB3ibDMVXEN2aZW4oA1e1xzzA3z5VWjkZd18B\"),\n  tokenIds: [Tokens.btcToken.mint.toString(), Tokens.solToken.mint.toString()],\n  tokens: {\n    [Tokens.btcToken.mint.toString()]: {\n      ...Tokens.btcToken,\n      addr: new PublicKey(\"9G5TBPbEUg2iaFxJ29uVAT8ZzxY77esRshyHiLYZKRh8\"),\n    },\n    [Tokens.solToken.mint.toString()]: {\n      ...Tokens.solToken,\n      addr: new PublicKey(\"5eqcnUasgU2NRrEAeWxvFVRTTYWJWfAJhsdffvc6nJc2\"),\n    },\n  },\n  curveType: CurveType.ConstantProduct,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(25, 10000),\n    ownerFee: Percentage.fromFraction(5, 10000),\n  },\n});\n\nexport const merSolPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"UJBm2tHwDbQZpjQvaHozg5qkjh6prSKhnWheqR5T76Q\"),\n  nonce: 255,\n  authority: new PublicKey(\"C8HcMrC9WRqqXVbHRhZWjuZPbbWmszDobKFxevCtGhpT\"),\n  poolTokenMint: new PublicKey(\"HiwRobjfHZ4zsPtqCC4oBS24pSmy4t8GGkXRbQj4yU6L\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"3Fdj69449GhiDmqyvWWTSafjRphGdiDhZ5i5rqfHBdio\"),\n  tokenIds: [Tokens.merToken.mint.toString(), Tokens.solToken.mint.toString()],\n  tokens: {\n    [Tokens.merToken.mint.toString()]: {\n      ...Tokens.merToken,\n      addr: new PublicKey(\"DHdkRWTa9SRJNMtWZQYvNNbjrDP3n92EWLHezjFGPipb\"),\n    },\n    [Tokens.solToken.mint.toString()]: {\n      ...Tokens.solToken,\n      addr: new PublicKey(\"DC5RwjB3VkXdt2PoWKTA4Ub9KbtcY8xXpmPNKsFjALwq\"),\n    },\n  },\n  curveType: CurveType.ConstantProduct,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(25, 10000),\n    ownerFee: Percentage.fromFraction(5, 10000),\n  },\n});\n\nexport const fidaSolPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"4SUBbivGMvMhem3ajVtkmuPvL4GuQ8kfYTJFuQfG4F8t\"),\n  nonce: 255,\n  authority: new PublicKey(\"owuNLod7H14GpQCUodcdBBeD4LiZ2T5U9KpS2sAbTp6\"),\n  poolTokenMint: new PublicKey(\"EYsNdtyu4gGTaGz8N5m5iQ3G1N6rDyMbR72B3CqbWW4W\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"J2s1GpduscTTvMYt3os8LdvT24uhr9bPnTbxSKZZhEma\"),\n  tokenIds: [Tokens.fidaToken.mint.toString(), Tokens.solToken.mint.toString()],\n  tokens: {\n    [Tokens.fidaToken.mint.toString()]: {\n      ...Tokens.fidaToken,\n      addr: new PublicKey(\"9ofyx5yFzjH1XWmJzfiGCDfhq6ho8yFbszGQrrJXe54\"),\n    },\n    [Tokens.solToken.mint.toString()]: {\n      ...Tokens.solToken,\n      addr: new PublicKey(\"55moYcq91pXbSRpL2DR8P3BehqSNWiJrdTn5SZFc2STn\"),\n    },\n  },\n  curveType: CurveType.ConstantProduct,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(25, 10000),\n    ownerFee: Percentage.fromFraction(5, 10000),\n  },\n});\n\nexport const mapsSolPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"4rkgbbCPKk5zx3KiwcCNiSpNSSLgAkswKGfX7CJjGgtC\"),\n  nonce: 255,\n  authority: new PublicKey(\"8uuBxVsGf2bqH5t8mct5NfpgcTDb7czXuWVEm6Boia4x\"),\n  poolTokenMint: new PublicKey(\"99pfC8fWymXgbq3CvrExhx3UxQDC1fMWEWLbNT83F45e\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"8w3gx1GQ1UN5sodEVP14qUwzCcgopHWUeWbT26hgK3xh\"),\n  tokenIds: [Tokens.mapsToken.mint.toString(), Tokens.solToken.mint.toString()],\n  tokens: {\n    [Tokens.mapsToken.mint.toString()]: {\n      ...Tokens.mapsToken,\n      addr: new PublicKey(\"BqExNTYk7YdeiaREHqnqN2q1F3dBCTPhkwrrWBFD4F1m\"),\n    },\n    [Tokens.solToken.mint.toString()]: {\n      ...Tokens.solToken,\n      addr: new PublicKey(\"HdEQ99E979aXn2xTcg5UXEfLynwFkqpPTxLaNkH7Nz7P\"),\n    },\n  },\n  curveType: CurveType.ConstantProduct,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(25, 10000),\n    ownerFee: Percentage.fromFraction(5, 10000),\n  },\n});\n\nexport const usdcUsdtPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"F13xvvx45jVGd84ynK3c8T89UejQVxjCLtmHfPmAXAHP\"),\n  nonce: 255,\n  authority: new PublicKey(\"3cGHDS8uWhdxQj14vTmFtYHX3NMouPpE4o9MjQ43Bbf4\"),\n  poolTokenMint: new PublicKey(\"H2uzgruPvonVpCRhwwdukcpXK8TG17swFNzYFr2rtPxy\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"B4RNxMJGRzKFQyTq2Uwkmpyjtew13n7KtdqZy6qgENTu\"),\n  tokenIds: [Tokens.usdcToken.mint.toString(), Tokens.usdtToken.mint.toString()],\n  tokens: {\n    [Tokens.usdcToken.mint.toString()]: {\n      ...Tokens.usdcToken,\n      addr: new PublicKey(\"6uUn2okWk5v4x9Gc4n2LLGHtWoa9tmizHq1363dW7t9W\"),\n    },\n    [Tokens.usdtToken.mint.toString()]: {\n      ...Tokens.usdtToken,\n      addr: new PublicKey(\"AiwmnLy7xPT28dqZpkRm6i1ZGwELUCzCsuN92v4JkSeU\"),\n    },\n  },\n  curveType: CurveType.Stable,\n  amp: 100,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(6, 10000),\n    ownerFee: Percentage.fromFraction(1, 10000),\n  },\n});\n\nexport const orcaSolPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"2ZnVuidTHpi5WWKUwFXauYGhvdT9jRKYv5MDahtbwtYr\"),\n  nonce: 255,\n  authority: new PublicKey(\"2PH1quJj9MHQXATCmNZ6qQ2gZqM8R236DpKaz99ggVpm\"),\n  poolTokenMint: new PublicKey(\"2uVjAuRXavpM6h1scGQaxqb6HVaNRn6T2X7HHXTabz25\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"4Zc4kQZhRQeGztihvcGSWezJE1k44kKEgPCAkdeBfras\"),\n  tokenIds: [Tokens.orcaToken.mint.toString(), Tokens.solToken.mint.toString()],\n  tokens: {\n    [Tokens.orcaToken.mint.toString()]: {\n      ...Tokens.orcaToken,\n      addr: new PublicKey(\"AioST8HKQJRqjE1mknk4Rydc8wVADhdQwRJmAAYX1T6Z\"),\n    },\n    [Tokens.solToken.mint.toString()]: {\n      ...Tokens.solToken,\n      addr: new PublicKey(\"73zdy95DynZP4exdpuXTDsexcrWbDJX9TFi2E6CDzXh4\"),\n    },\n  },\n  curveType: CurveType.ConstantProduct,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(25, 10000),\n    ownerFee: Percentage.fromFraction(5, 10000),\n  },\n});\n\nexport const orcaUsdcPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"2p7nYbtPBgtmY69NsE8DAW6szpRJn7tQvDnqvoEWQvjY\"),\n  nonce: 254,\n  authority: new PublicKey(\"3fr1AhdiAmWLeNrS24CMoAu9pPgbzVhwLtJ6QUPmw2ob\"),\n  poolTokenMint: new PublicKey(\"n8Mpu28RjeYD7oUX3LG1tPxzhRZh3YYLRSHcHRdS3Zx\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"7CXZED4jfRp3qdHB9Py3up6v1C4UhHofFvfT6RXbJLRN\"),\n  tokenIds: [Tokens.orcaToken.mint.toString(), Tokens.usdcToken.mint.toString()],\n  tokens: {\n    [Tokens.orcaToken.mint.toString()]: {\n      ...Tokens.orcaToken,\n      addr: new PublicKey(\"9vYWHBPz817wJdQpE8u3h8UoY3sZ16ZXdCcvLB7jY4Dj\"),\n    },\n    [Tokens.usdcToken.mint.toString()]: {\n      ...Tokens.usdcToken,\n      addr: new PublicKey(\"6UczejMUv1tzdvUzKpULKHxrK9sqLm8edR1v9jinVWm9\"),\n    },\n  },\n  curveType: CurveType.ConstantProduct,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(25, 10000),\n    ownerFee: Percentage.fromFraction(5, 10000),\n  },\n});\n\nexport const kinSolPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"Ez52BLSoZw3MxWxMK4ADsJXqzUiYW9sUnwcrrQwQGdLT\"),\n  nonce: 253,\n  authority: new PublicKey(\"C6WisvFQzqxTBF3DV6RFbPMPBiVHE816CZHoctB3WzrW\"),\n  poolTokenMint: new PublicKey(\"HEvnD66WcBfTajS9adUYnGRBMDehFtLySiFHSD6kEBWs\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"5bLeJU66qTopjZBa48BUd7EXWcj4UeCMfHjjrvt8Zcgs\"),\n  tokenIds: [Tokens.kinToken.mint.toString(), Tokens.solToken.mint.toString()],\n  tokens: {\n    [Tokens.kinToken.mint.toString()]: {\n      ...Tokens.kinToken,\n      addr: new PublicKey(\"2Ssm5Dd1Zc5QpGSZzuqt3Ef4bADteuBbCGiEZJ5n48rV\"),\n    },\n    [Tokens.solToken.mint.toString()]: {\n      ...Tokens.solToken,\n      addr: new PublicKey(\"HCS9EpKRxWDS9GCRFStNbPWgRQpvV6EyBWChJja2UbCm\"),\n    },\n  },\n  curveType: CurveType.ConstantProduct,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(25, 10000),\n    ownerFee: Percentage.fromFraction(5, 10000),\n  },\n});\n\nexport const samoSolPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"DiAP9qmp5foN7fLTWfBWjo9KBS1jgvKUJLWi1ZhqKaja\"),\n  nonce: 255,\n  authority: new PublicKey(\"3uZcofBKVBYFrQ7jVjTFLEMWAQiZcih4AES5tKBqdo7m\"),\n  poolTokenMint: new PublicKey(\"D6N9j8F2DhtzDtrdpT74y3u2YmYAzcggiLc3nTjqux9M\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"BYAjG645fRRHZ5JFnZKnXc4dzK9WppcoVWDMYj3zm3KF\"),\n  tokenIds: [Tokens.samoToken.mint.toString(), Tokens.solToken.mint.toString()],\n  tokens: {\n    [Tokens.samoToken.mint.toString()]: {\n      ...Tokens.samoToken,\n      addr: new PublicKey(\"AFcbD7UTzk9d1njRxyDHNbQ5Q6miPNAE1GctjD96JYAi\"),\n    },\n    [Tokens.solToken.mint.toString()]: {\n      ...Tokens.solToken,\n      addr: new PublicKey(\"6kYbPDsYLQUwptV7ZvQKG3gjNreEEgaWh2CM4DQPYTpq\"),\n    },\n  },\n  curveType: CurveType.ConstantProduct,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(25, 10000),\n    ownerFee: Percentage.fromFraction(5, 10000),\n  },\n});\n\nexport const liqUsdcPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"AXSeEafwPUGSamiZWH8m2PJtvpDVtrofxvycNwxiysdh\"),\n  nonce: 254,\n  authority: new PublicKey(\"6Y5TnCwgifc8Z7QYo672nT9uNd2hcivVR1NT6oDkJx6P\"),\n  poolTokenMint: new PublicKey(\"3PD9SZFwXKkXr4akLf4ofo37ZUMycwML89R2P3qxcbZG\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"FSVPcprrTkQLRtDACFEpa2rhEVx4kBvjPuQaxj572SaC\"),\n  tokenIds: [Tokens.liqToken.mint.toString(), Tokens.usdcToken.mint.toString()],\n  tokens: {\n    [Tokens.liqToken.mint.toString()]: {\n      ...Tokens.liqToken,\n      addr: new PublicKey(\"CVspL8Tj5YdqntXJegNeDXHiBn3648QDNB7gex6D9MgY\"),\n    },\n    [Tokens.usdcToken.mint.toString()]: {\n      ...Tokens.usdcToken,\n      addr: new PublicKey(\"8YzLsZ1FtsruswkBogEaXwmRTf5PMuyVcfSZXRAdi8qA\"),\n    },\n  },\n  curveType: CurveType.ConstantProduct,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(25, 10000),\n    ownerFee: Percentage.fromFraction(5, 10000),\n  },\n});\n\nexport const snyUsdcPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"BDn3Fj9UXVi2mRVMR2jzpCrAZZphnwfkvFhs192yhCTu\"),\n  nonce: 255,\n  authority: new PublicKey(\"FvjsfbbzZAcrVdfrGtZUjGWAjWHXrfMG8Bjwc17vVSK3\"),\n  poolTokenMint: new PublicKey(\"AZpo4BJHHRetF96v6SGinFZBMXM4yWMo4RA8C4PriDLk\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"DiULDJAYXdbtX8CfFsU2jCgHvQWT7u3gwRwpvQxfEMvr\"),\n  tokenIds: [Tokens.snyToken.mint.toString(), Tokens.usdcToken.mint.toString()],\n  tokens: {\n    [Tokens.snyToken.mint.toString()]: {\n      ...Tokens.snyToken,\n      addr: new PublicKey(\"14RHMRzwx9Y4Z41qpr9sTwJZ58wXqV1R9WTkUA7ybmKG\"),\n    },\n    [Tokens.usdcToken.mint.toString()]: {\n      ...Tokens.usdcToken,\n      addr: new PublicKey(\"Dw9D9T4bBC3oGdMqxE1xWfPSCJ27SYwWD8rFfUxU99QG\"),\n    },\n  },\n  curveType: CurveType.ConstantProduct,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(25, 10000),\n    ownerFee: Percentage.fromFraction(5, 10000),\n  },\n});\n\nexport const msolUsdcPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"Hme4Jnqhdz2jAPUMnS7jGE5zv6Y1ynqrUEhmUAWkXmzn\"),\n  nonce: 255,\n  authority: new PublicKey(\"9Z7E42k46kxnBjAh8YGXDw3rRGwwxQUBYM7Ccrmwg6ZP\"),\n  poolTokenMint: new PublicKey(\"8PSfyiTVwPb6Rr2iZ8F3kNpbg65BCfJM9v8LfB916r44\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"3W3Skj2vQsNEMhGRQprFXQy3Q8ZbM6ojdgiDCokVPWno\"),\n  tokenIds: [Tokens.msolToken.mint.toString(), Tokens.usdcToken.mint.toString()],\n  tokens: {\n    [Tokens.msolToken.mint.toString()]: {\n      ...Tokens.msolToken,\n      addr: new PublicKey(\"GBa7G5f1FqAXEgByuHXsqsEdpyMjRgT9SNxZwmmnEJAY\"),\n    },\n    [Tokens.usdcToken.mint.toString()]: {\n      ...Tokens.usdcToken,\n      addr: new PublicKey(\"7hFgNawzzmpDM8TTVCKm8jykBrym8C3TQdb8TDAfAVkD\"),\n    },\n  },\n  curveType: CurveType.ConstantProduct,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(25, 10000),\n    ownerFee: Percentage.fromFraction(5, 10000),\n  },\n});\n\nexport const slrsUsdcPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"87Xz6RK1uzP5NEhSjMewZtDAZyg4V1tYAa1KHnvge17b\"),\n  nonce: 254,\n  authority: new PublicKey(\"5D9v9y6Kbswe6k1wnVceuqRXHMsRQJ8xzx8hadSH6EAM\"),\n  poolTokenMint: new PublicKey(\"AtB4nUmdyQfuWWJ9xAHw9xyVnJFfSjSuVWkiYan8y86w\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"CLxeBxNq42AtmD43F5BTqCHTnkVHX8sP9cVPdtRkTL7D\"),\n  tokenIds: [Tokens.slrsToken.mint.toString(), Tokens.usdcToken.mint.toString()],\n  tokens: {\n    [Tokens.slrsToken.mint.toString()]: {\n      ...Tokens.slrsToken,\n      addr: new PublicKey(\"CM7oGYHy1oxzHoum8Cxv4pwnndm6Jbs3NkBZkc6v9S9d\"),\n    },\n    [Tokens.usdcToken.mint.toString()]: {\n      ...Tokens.usdcToken,\n      addr: new PublicKey(\"3QqPbMcUMZu3Rz762g7JgvpUxhRHPtE9HFk2MSDRmPqa\"),\n    },\n  },\n  curveType: CurveType.ConstantProduct,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(25, 10000),\n    ownerFee: Percentage.fromFraction(5, 10000),\n  },\n});\n\nexport const portUsdcPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"4if9Gy7dvjU7XwunKxdnCcPsaT3yAHPXdz2XS1eo19LG\"),\n  nonce: 254,\n  authority: new PublicKey(\"BshtCZRCHj2RZYC7u5sW3ioRJo9ZiYA4T5p8muFwrKnb\"),\n  poolTokenMint: new PublicKey(\"F8gPSpwVHj8FdAJAYULDuZBxFEJut87hUbARYYx3471w\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"5JZXUbCfaSo3y9PYq47Hj5Yc6hVFa4j7MkDzBJfMSRSN\"),\n  tokenIds: [Tokens.portToken.mint.toString(), Tokens.usdcToken.mint.toString()],\n  tokens: {\n    [Tokens.portToken.mint.toString()]: {\n      ...Tokens.portToken,\n      addr: new PublicKey(\"2wuSqR5z2Guft2yt57Hx7K6i1AYNoUi8fjxHUeAgaKXo\"),\n    },\n    [Tokens.usdcToken.mint.toString()]: {\n      ...Tokens.usdcToken,\n      addr: new PublicKey(\"AvP1Db3SyUxLGMSc4nSXjJkjm1kAjiLjog7cup19eWa3\"),\n    },\n  },\n  curveType: CurveType.ConstantProduct,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(25, 10000),\n    ownerFee: Percentage.fromFraction(5, 10000),\n  },\n});\n\nexport const sbrUsdcPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"HiYggjP2fN53Jw46e5UuskqNP3HH98jceRxEgVoeRwNw\"),\n  nonce: 255,\n  authority: new PublicKey(\"ATkEV1nEkdp7zgaGpzFCsJ5WAyejcJbxqzGhQpfcDW4S\"),\n  poolTokenMint: new PublicKey(\"CS7fA5n4c2D82dUoHrYzS3gAqgqaoVSfgsr18kitp2xo\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"7S3KKuvcHfcKWBGLDwmoTgtB97JE8LHruP8jbmQkGfH\"),\n  tokenIds: [Tokens.sbrToken.mint.toString(), Tokens.usdcToken.mint.toString()],\n  tokens: {\n    [Tokens.sbrToken.mint.toString()]: {\n      ...Tokens.sbrToken,\n      addr: new PublicKey(\"DrJTQqNZqNCf2HDLpYg9zRCMRwnhZEVQuGjeaWtX6CA7\"),\n    },\n    [Tokens.usdcToken.mint.toString()]: {\n      ...Tokens.usdcToken,\n      addr: new PublicKey(\"DEVLUv1uiUSukQoBdy9fDQyehi4N2Boojy8J2LQ8bK2E\"),\n    },\n  },\n  curveType: CurveType.ConstantProduct,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(25, 10000),\n    ownerFee: Percentage.fromFraction(5, 10000),\n  },\n});\n\nexport const scnsolUsdcPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"6Gh36sNXrGWYiWr999d9iZtqgnipJbWuBohyHBN1cJpS\"),\n  nonce: 255,\n  authority: new PublicKey(\"GXWEpRURaQZ9E62Q23EreTUfBy4hfemXgWFUWcg7YFgv\"),\n  poolTokenMint: new PublicKey(\"Dkr8B675PGnNwEr9vTKXznjjHke5454EQdz3iaSbparB\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"HsC1Jo38jK3EpoNAkxfoUJhQVPa28anewZpLfeouUNk7\"),\n  tokenIds: [Tokens.scnsolToken.mint.toString(), Tokens.usdcToken.mint.toString()],\n  tokens: {\n    [Tokens.scnsolToken.mint.toString()]: {\n      ...Tokens.scnsolToken,\n      addr: new PublicKey(\"7xs9QsrxQDVoWQ8LQ8VsVjfPKBrPGjvg8ZhaLnU1i2VR\"),\n    },\n    [Tokens.usdcToken.mint.toString()]: {\n      ...Tokens.usdcToken,\n      addr: new PublicKey(\"FZFJK64Fk1t619zmVPqCx8Uy29zJ3WuvjWitCQuxXRo3\"),\n    },\n  },\n  curveType: CurveType.ConstantProduct,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(25, 10000),\n    ownerFee: Percentage.fromFraction(5, 10000),\n  },\n});\n\nexport const psolUsdcPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"GW1Xt9HHtvcnky8X7aBA3BoTgiirJKP5XwC5REFcZSsc\"),\n  nonce: 254,\n  authority: new PublicKey(\"GXueH9K1MzRncoTYbpLiXXC3WrKkmHUFxV5JEu8oADbw\"),\n  poolTokenMint: new PublicKey(\"C2YzN6MymD5HM2kPaH7bzcbqciyjfmpqyVaR3KA5V6z1\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"BhHd49JYH3Hk6TV5kCjmUgf7fQSQKDjaWTokMmBhTx9o\"),\n  tokenIds: [Tokens.psolToken.mint.toString(), Tokens.usdcToken.mint.toString()],\n  tokens: {\n    [Tokens.psolToken.mint.toString()]: {\n      ...Tokens.psolToken,\n      addr: new PublicKey(\"F7XioZaGe99nosYJQCahx25TKgdUGufYf6sudm1JSgu\"),\n    },\n    [Tokens.usdcToken.mint.toString()]: {\n      ...Tokens.usdcToken,\n      addr: new PublicKey(\"BT14DfFyNS7qcBGc8TY4HAzDev4vvqsoFBJgjtQpdM2Z\"),\n    },\n  },\n  curveType: CurveType.ConstantProduct,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(25, 10000),\n    ownerFee: Percentage.fromFraction(5, 10000),\n  },\n});\n\nexport const msolSolPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"9EQMEzJdE2LDAY1hw1RytpufdwAXzatYfQ3M2UuT9b88\"),\n  nonce: 250,\n  authority: new PublicKey(\"6cwehd4xhKkJ2s7iGh4CaDb7KhMgqczSBnyNJieUYbHn\"),\n  poolTokenMint: new PublicKey(\"29cdoMgu6MS2VXpcMo1sqRdWEzdUR9tjvoh8fcK8Z87R\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"6j2tt2UVYMQwqG3hRtyydW3odzBFwy3pN33tyB3xCKQ6\"),\n  tokenIds: [Tokens.msolToken.mint.toString(), Tokens.solToken.mint.toString()],\n  tokens: {\n    [Tokens.msolToken.mint.toString()]: {\n      ...Tokens.msolToken,\n      addr: new PublicKey(\"6xmki5RtGNHrfhTiHFfp9k3RQ9t8qgL1cYP2YCG2h179\"),\n    },\n    [Tokens.solToken.mint.toString()]: {\n      ...Tokens.solToken,\n      addr: new PublicKey(\"Ew2coQtVGLeca31vqB2ssHntjzZgUy1ad9VuuAX8yw7p\"),\n    },\n  },\n  curveType: CurveType.Stable,\n  amp: 100,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(6, 10000),\n    ownerFee: Percentage.fromFraction(1, 10000),\n  },\n});\n\nexport const orcaPaiPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"7LfLiCnoLPefaCVuh6z92TK2tPZUa9bPjW7gHT4jqrec\"),\n  nonce: 254,\n  authority: new PublicKey(\"AwUWHxHyQHomqCGJJvagiSDhb2xMqJUiE25qDytdMw49\"),\n  poolTokenMint: new PublicKey(\"C7TH2jEJJaxVwwuvkbcDGfHUiZvEkkeYjyAcdTMi5ujb\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"DrC2aGWrUmsnK6yAphSXEs8GW5nKUCkityaG8Bikn5Ne\"),\n  tokenIds: [Tokens.orcaToken.mint.toString(), Tokens.paiToken.mint.toString()],\n  tokens: {\n    [Tokens.orcaToken.mint.toString()]: {\n      ...Tokens.orcaToken,\n      addr: new PublicKey(\"HSUFpGyNXEogXQLgEMQ7aMTxE4HZneRaBovbi9btXepM\"),\n    },\n    [Tokens.paiToken.mint.toString()]: {\n      ...Tokens.paiToken,\n      addr: new PublicKey(\"4c9rkBiqAY6fXpVvCbDwpDD44AGQ3MXSaCLcpmLUFtrX\"),\n    },\n  },\n  curveType: CurveType.ConstantProduct,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(25, 10000),\n    ownerFee: Percentage.fromFraction(5, 10000),\n  },\n});\n\nexport const orcaMsolPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"49tTgthTYLMPEqozZNyEQifqkGYxHqqDie9YxVczS3iB\"),\n  nonce: 255,\n  authority: new PublicKey(\"9FQ9gDtS6uNr5SMPafuzkDit2rMftHfQuz5mg2X3TqHT\"),\n  poolTokenMint: new PublicKey(\"CVapmQn7HaU1yMDW3q6oUV4hx6XoYv54T4zfGXkuJqkA\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"Hq9xxKdMavJd4teMZusF4PiGNGV3hxdcMZwAdngkHCg7\"),\n  tokenIds: [Tokens.orcaToken.mint.toString(), Tokens.msolToken.mint.toString()],\n  tokens: {\n    [Tokens.orcaToken.mint.toString()]: {\n      ...Tokens.orcaToken,\n      addr: new PublicKey(\"7hoYJc4aqttctANrNe75gscdmQD9HcXZED6AjdDdZMQ9\"),\n    },\n    [Tokens.msolToken.mint.toString()]: {\n      ...Tokens.msolToken,\n      addr: new PublicKey(\"7MuvRUFT1wWiL7uJKdZqNwk9Fmz2HJ36bEArhDTnyFij\"),\n    },\n  },\n  curveType: CurveType.ConstantProduct,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(25, 10000),\n    ownerFee: Percentage.fromFraction(5, 10000),\n  },\n});\n\nexport const scnsolSolPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"2q6UMko5kTnv866W9MTeAFau94pLpsdeNjDdSYSgZUXr\"),\n  nonce: 255,\n  authority: new PublicKey(\"Gyd77CwV23qq937x9UDa4TDkxEeQF9tp8ifotYxqW3Kd\"),\n  poolTokenMint: new PublicKey(\"APNpzQvR91v1THbsAyG3HHrUEwvexWYeNCFLQuVnxgMc\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"42Xzazs9EvjtidvEDrj3JXbDtf6fpTq5XHh96mPctvBV\"),\n  tokenIds: [Tokens.scnsolToken.mint.toString(), Tokens.solToken.mint.toString()],\n  tokens: {\n    [Tokens.scnsolToken.mint.toString()]: {\n      ...Tokens.scnsolToken,\n      addr: new PublicKey(\"C8DRXUqxXtUgvgBR7BPAmy6tnRJYgVjG27VU44wWDMNV\"),\n    },\n    [Tokens.solToken.mint.toString()]: {\n      ...Tokens.solToken,\n      addr: new PublicKey(\"DzdxH5qJ68PiM1p5o6PbPLPpDj8m1ZshcaMFATcxDZix\"),\n    },\n  },\n  curveType: CurveType.Stable,\n  amp: 100,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(6, 10000),\n    ownerFee: Percentage.fromFraction(1, 10000),\n  },\n});\n\nexport const atlasUsdcPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"3V5sjXj1mrWjjB1Xt6Xwp554QwHE5fppGSxbk4GzAtEW\"),\n  nonce: 254,\n  authority: new PublicKey(\"8UYN675AJn5htWydDs724xqintBZ4XzsCWqMozUSDU8m\"),\n  poolTokenMint: new PublicKey(\"FZ8x1LCRSPDeHBDoAc3Gc6Y7ETCynuHEr5q5YWV7uRCJ\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"CFN4DQ2p3qroX92pPNy3mov3Dw1aCNGLrU5AXHpHxbko\"),\n  tokenIds: [Tokens.atlasToken.mint.toString(), Tokens.usdcToken.mint.toString()],\n  tokens: {\n    [Tokens.atlasToken.mint.toString()]: {\n      ...Tokens.atlasToken,\n      addr: new PublicKey(\"xotXsNCx4tBhnwhrajGTaVgKq1sfuMkeYHc77ZegCqE\"),\n    },\n    [Tokens.usdcToken.mint.toString()]: {\n      ...Tokens.usdcToken,\n      addr: new PublicKey(\"8YswVYsTi66umBF2Bnkh4LB2VWMKPssDpe54VAgiuJZQ\"),\n    },\n  },\n  curveType: CurveType.ConstantProduct,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(25, 10000),\n    ownerFee: Percentage.fromFraction(5, 10000),\n  },\n});\n\nexport const polisUsdcPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"CdKPtCb5fBRaGFS4bJgytfReeHuFyhpe9YUyWHPnEWZG\"),\n  nonce: 251,\n  authority: new PublicKey(\"8XB9V3VuHtPBzHqvxzcmpkpaoXNXjZMD8VBHC79SxcEL\"),\n  poolTokenMint: new PublicKey(\"GteBdo9sqE7T41G8AJsaG9WHW48uXBwsLLznmu2TBdgy\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"3gZQ2YnrXbnRwJj5poffLirF7CwacatvtfGCNRFrbJdr\"),\n  tokenIds: [Tokens.polisToken.mint.toString(), Tokens.usdcToken.mint.toString()],\n  tokens: {\n    [Tokens.polisToken.mint.toString()]: {\n      ...Tokens.polisToken,\n      addr: new PublicKey(\"EbXNEUiKxSU1vwwhrbVNVk3qX4o1yU3p75SQUUMfc1zH\"),\n    },\n    [Tokens.usdcToken.mint.toString()]: {\n      ...Tokens.usdcToken,\n      addr: new PublicKey(\"CLCj9b1vdPutrkvZS8ACTM5q42SXB2Q7khnMLVxDMGEK\"),\n    },\n  },\n  curveType: CurveType.ConstantProduct,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(25, 10000),\n    ownerFee: Percentage.fromFraction(5, 10000),\n  },\n});\n\nexport const bopUsdcPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"9pheQ8EX2wDKHZYm75G9haEbTyAcg8F2gFWybw2w6Vyc\"),\n  nonce: 253,\n  authority: new PublicKey(\"3rxJPYuiRijipJbciewUDacab2Wo3yAe1yWBGzmqn5f1\"),\n  poolTokenMint: new PublicKey(\"2gXDJZ7XAtQEtf4PRSQZKoq1WMuu1H44tQanbMA3YVpu\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"2bei4349W8FUcu5gvP5Zt8yhkpwqcCngZxUkb3xRMJZJ\"),\n  tokenIds: [Tokens.bopToken.mint.toString(), Tokens.usdcToken.mint.toString()],\n  tokens: {\n    [Tokens.bopToken.mint.toString()]: {\n      ...Tokens.bopToken,\n      addr: new PublicKey(\"HkHjLSaP9yyWTzMGD1DKyoc1Dfvhvw4vakRhyjcVUCKs\"),\n    },\n    [Tokens.usdcToken.mint.toString()]: {\n      ...Tokens.usdcToken,\n      addr: new PublicKey(\"CqRoKMF4kh2o568nFdDNHs7cszBjrkQME4RtCuTqcjCe\"),\n    },\n  },\n  curveType: CurveType.ConstantProduct,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(25, 10000),\n    ownerFee: Percentage.fromFraction(5, 10000),\n  },\n});\n\nexport const samoUsdcPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"Epvp7qMYAF21VVjacdB3VfKn6nnXQSF4rGYu8sD6Bkow\"),\n  nonce: 252,\n  authority: new PublicKey(\"AB4rTE2JiKFhnfynUQCovbW75CUxT9LxcJX2SDTbY9gy\"),\n  poolTokenMint: new PublicKey(\"6VK1ksrmYGMBWUUZfygGF8tHRGpNxQEWv8pfvzQHdyyc\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"9U8UF7d8kBvsS25XoZnjmVQ9vGkP4BUnHJgfc615BvG1\"),\n  tokenIds: [Tokens.samoToken.mint.toString(), Tokens.usdcToken.mint.toString()],\n  tokens: {\n    [Tokens.samoToken.mint.toString()]: {\n      ...Tokens.samoToken,\n      addr: new PublicKey(\"7jwHW4Lw3nVaSJXskN5pUoKU6YB9RBVfZtGBp3VbR43U\"),\n    },\n    [Tokens.usdcToken.mint.toString()]: {\n      ...Tokens.usdcToken,\n      addr: new PublicKey(\"G7Gqjxk9EaJMeFfoFTSy9WfH8uurgQkbNQCREWAc56DZ\"),\n    },\n  },\n  curveType: CurveType.ConstantProduct,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(25, 10000),\n    ownerFee: Percentage.fromFraction(5, 10000),\n  },\n});\n\nexport const ninjaSolPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"3ECUtPokme1nimJfuAkMtcm7QYjDEfXRQzmGC16LuYnz\"),\n  nonce: 255,\n  authority: new PublicKey(\"H8f9n2PfehUc73gRWSRTPXvqUhUHVywdAxcfEtYmmyAo\"),\n  poolTokenMint: new PublicKey(\"4X1oYoFWYtLebk51zuh889r1WFLe8Z9qWApj87hQMfML\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"43ViAbUVujnYtJyzGP4AhabMYCbLsExenT3WKsZjqJ7N\"),\n  tokenIds: [Tokens.ninjaToken.mint.toString(), Tokens.solToken.mint.toString()],\n  tokens: {\n    [Tokens.ninjaToken.mint.toString()]: {\n      ...Tokens.ninjaToken,\n      addr: new PublicKey(\"6Y9VyEYHgxVahiixzphNh4HAywpab9zVoD4S8q1sfuL8\"),\n    },\n    [Tokens.solToken.mint.toString()]: {\n      ...Tokens.solToken,\n      addr: new PublicKey(\"9SxzphwrrDVDkwkyvmtag9NLgpjSkTw35cRwg9rLMYWk\"),\n    },\n  },\n  curveType: CurveType.ConstantProduct,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(25, 10000),\n    ownerFee: Percentage.fromFraction(5, 10000),\n  },\n});\n\nexport const slimUsdcPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"8JPid6GtND2tU3A7x7GDfPPEWwS36rMtzF7YoHU44UoA\"),\n  nonce: 255,\n  authority: new PublicKey(\"749y4fXb9SzqmrLEetQdui5iDucnNiMgCJ2uzc3y7cou\"),\n  poolTokenMint: new PublicKey(\"BVWwyiHVHZQMPHsiW7dZH7bnBVKmbxdeEjWqVRciHCyo\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"E6aTzkZKdCECgpDtBZtVpqiGjxRDSAFh1SC9CdSoVK7a\"),\n  tokenIds: [Tokens.slimToken.mint.toString(), Tokens.usdcToken.mint.toString()],\n  tokens: {\n    [Tokens.slimToken.mint.toString()]: {\n      ...Tokens.slimToken,\n      addr: new PublicKey(\"ErcxwkPgLdyoVL6j2SsekZ5iysPZEDRGfAggh282kQb8\"),\n    },\n    [Tokens.usdcToken.mint.toString()]: {\n      ...Tokens.usdcToken,\n      addr: new PublicKey(\"EFYW6YEiCGpavuMPS1zoXhgfNkPisWkQ3bQz1b4UfKek\"),\n    },\n  },\n  curveType: CurveType.ConstantProduct,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(25, 10000),\n    ownerFee: Percentage.fromFraction(5, 10000),\n  },\n});\n\nexport const whapiUsdcPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"2Y1Jmpkf5wt1X5zcFHNBDoHxqjTXbMJfj1UFtrYQwUbG\"),\n  nonce: 254,\n  authority: new PublicKey(\"8K4eRHeyPhBGB9zCjKtyBHoPPZ75zLN64oxBF6GyF4Qg\"),\n  poolTokenMint: new PublicKey(\"ELfBngAgvLEHVBuJQhhE7AW6eqLX7id2sfrBngVNVAUW\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"Bx3ZhEBFedDqCBzuzKVS4eMKTtW1MmHkcMGU45FcyxRT\"),\n  tokenIds: [Tokens.whapiToken.mint.toString(), Tokens.usdcToken.mint.toString()],\n  tokens: {\n    [Tokens.whapiToken.mint.toString()]: {\n      ...Tokens.whapiToken,\n      addr: new PublicKey(\"DRYADMQevoJHDFCYbDQeS4p551MpsDN2d7CJU3LxfNHa\"),\n    },\n    [Tokens.usdcToken.mint.toString()]: {\n      ...Tokens.usdcToken,\n      addr: new PublicKey(\"HzsECCX6RZ2ccbR3FarRSEfc5rkuETfywXJnRZut5JzU\"),\n    },\n  },\n  curveType: CurveType.ConstantProduct,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(25, 10000),\n    ownerFee: Percentage.fromFraction(5, 10000),\n  },\n});\n\nexport const copeUsdcPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"DhGTKyT6RVkpvPxXAJodi4Z41RSvQZxV1f5eRvJ5bE4r\"),\n  nonce: 254,\n  authority: new PublicKey(\"Hu8AWoRBa7ZaYQFdHQyRHeEZGB16Me86fA5vAZzjVUmv\"),\n  poolTokenMint: new PublicKey(\"HsauTv9s52Zv12eaDuSp6y7BEm4e4BHEyAsbdjyyWzPK\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"JEGcxfGxWJpRkGtvA6J6kEgTBebDz6kxURoeB3SX8vaW\"),\n  tokenIds: [Tokens.copeToken.mint.toString(), Tokens.usdcToken.mint.toString()],\n  tokens: {\n    [Tokens.copeToken.mint.toString()]: {\n      ...Tokens.copeToken,\n      addr: new PublicKey(\"6N3P3etaUYGeBs2C67ZQTDRqHsExNsfj85dDWPwHtQBS\"),\n    },\n    [Tokens.usdcToken.mint.toString()]: {\n      ...Tokens.usdcToken,\n      addr: new PublicKey(\"36VVz3eY8YmWBGskQVjvGGBfyUKHHCEDBgkFtzMpFqeU\"),\n    },\n  },\n  curveType: CurveType.ConstantProduct,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(25, 10000),\n    ownerFee: Percentage.fromFraction(5, 10000),\n  },\n});\n\nexport const sunnyUsdcPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"3Ukqqshh3kZ8UPbcYYFSRaeJcsgttcmShtNNn12F1rj2\"),\n  nonce: 255,\n  authority: new PublicKey(\"7NP8DTzPdpbQofhNyhLW3j2khutmfy1kuFp2AjaD8rrp\"),\n  poolTokenMint: new PublicKey(\"GHuoeq9UnFBsBhMwH43eL3RWX5XVXbSRYJymmyMYpT7n\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"CCuSVbnnq8SUj7cpPe7BbHLuKanyxfvfrwypzCBnaDdf\"),\n  tokenIds: [Tokens.sunnyToken.mint.toString(), Tokens.usdcToken.mint.toString()],\n  tokens: {\n    [Tokens.sunnyToken.mint.toString()]: {\n      ...Tokens.sunnyToken,\n      addr: new PublicKey(\"F6nCAMYEFxsyRDVonQXLNufXgAHsgAa1Br8DhBoX3KAV\"),\n    },\n    [Tokens.usdcToken.mint.toString()]: {\n      ...Tokens.usdcToken,\n      addr: new PublicKey(\"HWCTHmQppFSsKQEk1bHUqPC2WLaidgnfTG9MQGD4XKEt\"),\n    },\n  },\n  curveType: CurveType.ConstantProduct,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(25, 10000),\n    ownerFee: Percentage.fromFraction(5, 10000),\n  },\n});\n\nexport const grapeUsdcPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"6MxUhBLXHCqpdYaFPTmw1D9fQ7zYnm9grZyJvpGiqr15\"),\n  nonce: 255,\n  authority: new PublicKey(\"SvWmpVVUkv8cwoRnBQ5Gqt2FFYjdpWLS665gE2ZLNQp\"),\n  poolTokenMint: new PublicKey(\"EorFh8siFyLF1QTZ7cCXQaPGqyo7eb4SAgKtRH8Jcxjd\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"6vWYnRDEHu7kRLbA2dnBgEfbdba72iDMDD9k3munyPaP\"),\n  tokenIds: [Tokens.grapeToken.mint.toString(), Tokens.usdcToken.mint.toString()],\n  tokens: {\n    [Tokens.grapeToken.mint.toString()]: {\n      ...Tokens.grapeToken,\n      addr: new PublicKey(\"686KiYDMMkbredNoWx8yqvAdKSiHuWSG3dnbL6yWYmZp\"),\n    },\n    [Tokens.usdcToken.mint.toString()]: {\n      ...Tokens.usdcToken,\n      addr: new PublicKey(\"9i14ZKzaDmzKCAQb8hCv4h5GCo2Xiq83JcL7bofk4Ddj\"),\n    },\n  },\n  curveType: CurveType.ConstantProduct,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(25, 10000),\n    ownerFee: Percentage.fromFraction(5, 10000),\n  },\n});\n\nexport const abrUsdcPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"rxwsjytcEBvXpXrXBL1rpsjhoh78imBn8WbxjKmLRge\"),\n  nonce: 252,\n  authority: new PublicKey(\"AcaxutE6Rh9vRxipTLdqinEdRK6R4ayUAAv2bZPh6UU9\"),\n  poolTokenMint: new PublicKey(\"GMzPbaCuQmeMUm1opH3oSCgKUjVgJUW14myq99RVPGX5\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"7pPJGwd8Vq7aYmHaocQpQSfTn3UWYGKUgFkFhpMmRdDF\"),\n  tokenIds: [Tokens.abrToken.mint.toString(), Tokens.usdcToken.mint.toString()],\n  tokens: {\n    [Tokens.abrToken.mint.toString()]: {\n      ...Tokens.abrToken,\n      addr: new PublicKey(\"6FRxhbY7bvSiDojPiqoidjTyDjxaUyCoPQk3ifEdfFbm\"),\n    },\n    [Tokens.usdcToken.mint.toString()]: {\n      ...Tokens.usdcToken,\n      addr: new PublicKey(\"8aTapFecZRZmC2bTeKr2voHFW2twNvbrh8nWYdXYQWkZ\"),\n    },\n  },\n  curveType: CurveType.ConstantProduct,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(25, 10000),\n    ownerFee: Percentage.fromFraction(5, 10000),\n  },\n});\n\nexport const kuroUsdcPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"HdeYs4bpJKN2oTb7PHxbqq4kzKiLr772A5N2gWjY57ZT\"),\n  nonce: 250,\n  authority: new PublicKey(\"2KRcBDQJWEPygxcMMFMvR6dMTVtMkJV6kbxr5e9Kdj5Q\"),\n  poolTokenMint: new PublicKey(\"DRknxb4ZFxXUTG6UJ5HupNHG1SmvBSCPzsZ1o9gAhyBi\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"5XuLrZqpX9gW3pJw7274EYwAft1ciTXndU4on96ERi9J\"),\n  tokenIds: [Tokens.kuroToken.mint.toString(), Tokens.usdcToken.mint.toString()],\n  tokens: {\n    [Tokens.kuroToken.mint.toString()]: {\n      ...Tokens.kuroToken,\n      addr: new PublicKey(\"DBckbD9CoRBFE8WdbbnFLDz6WdDDSZ7ReEeqdjL62fpG\"),\n    },\n    [Tokens.usdcToken.mint.toString()]: {\n      ...Tokens.usdcToken,\n      addr: new PublicKey(\"B252w7ZkUX4WyLUJKLEymEpRkYMqJhgv2PSj2Z2LWH34\"),\n    },\n  },\n  curveType: CurveType.ConstantProduct,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(25, 10000),\n    ownerFee: Percentage.fromFraction(5, 10000),\n  },\n});\n\nexport const mediaUsdcPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"5L2aVMnNsmrnkxU4B25ajb2pR5AJWBRfUa73wjasjyaB\"),\n  nonce: 255,\n  authority: new PublicKey(\"HX3JKg5HtboRw9nQRWm47rSJkBHczdcXwBgWASyHi3Wk\"),\n  poolTokenMint: new PublicKey(\"2toFgkQDoPrTJYGDEVoCasPXuL9uQnjvXJaDwa9LHyTx\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"5BkyYnBWnzBWQKnU9AcUaDrmyhjLpAcFxCvVTTnRGyYk\"),\n  tokenIds: [Tokens.mediaToken.mint.toString(), Tokens.usdcToken.mint.toString()],\n  tokens: {\n    [Tokens.mediaToken.mint.toString()]: {\n      ...Tokens.mediaToken,\n      addr: new PublicKey(\"BFAyLvCbMhgF7CQ9fsWWK46jD9mPXfBMDWvXgk5LTgsT\"),\n    },\n    [Tokens.usdcToken.mint.toString()]: {\n      ...Tokens.usdcToken,\n      addr: new PublicKey(\"7CvBsWsfEif4sAo9dnsf1JKVAfBGcZUVTktqtxBSkgwB\"),\n    },\n  },\n  curveType: CurveType.ConstantProduct,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(25, 10000),\n    ownerFee: Percentage.fromFraction(5, 10000),\n  },\n});\n\nexport const tulipUsdcPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"BNwrRN23RCoq5MAneJ6Cot7iN2FLtyt9rtcjaVfAXTLt\"),\n  nonce: 253,\n  authority: new PublicKey(\"EFZs7veYVdWBHt7RcAPvXQc46gDzccpZTxAcEm6NyXFg\"),\n  poolTokenMint: new PublicKey(\"4SBx8GXu8HhcVHWydQv1vsDdZs3G93XSL9CtMBny6hS5\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"8BiqDTCBQ77qjGpED2was7C4iHJrQx9bXhzRt3Wz9xJG\"),\n  tokenIds: [Tokens.tulipToken.mint.toString(), Tokens.usdcToken.mint.toString()],\n  tokens: {\n    [Tokens.tulipToken.mint.toString()]: {\n      ...Tokens.tulipToken,\n      addr: new PublicKey(\"5CKd5M2nXdPM1TMXxqK6Up6GZehKL5uU9Z9Ytm2sFCiz\"),\n    },\n    [Tokens.usdcToken.mint.toString()]: {\n      ...Tokens.usdcToken,\n      addr: new PublicKey(\"HjMQnuxjVRodoaAg9WcNXb9TAssDaFNpgwcUUKNjWdh5\"),\n    },\n  },\n  curveType: CurveType.ConstantProduct,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(25, 10000),\n    ownerFee: Percentage.fromFraction(5, 10000),\n  },\n});\n\nexport const mngoUsdcPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"Hk9ZCvmqVT1FHNkWJMrtMkkVnH1WqssWPAvmio5Vs3se\"),\n  nonce: 254,\n  authority: new PublicKey(\"5RyiYaHFDVupwnwxzKCRk7JY1CKhsczZXefMs3UUmx4Z\"),\n  poolTokenMint: new PublicKey(\"H9yC7jDng974WwcU4kTGs7BKf7nBNswpdsP5bzbdXjib\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"FWKcKaMfaVezLRFr946MdgmpTZHG4A2GgqehAxjTyDAB\"),\n  tokenIds: [Tokens.mngoToken.mint.toString(), Tokens.usdcToken.mint.toString()],\n  tokens: {\n    [Tokens.mngoToken.mint.toString()]: {\n      ...Tokens.mngoToken,\n      addr: new PublicKey(\"J8bQnhcNyixFGBskQoJ2aSPXPWjvSzaaxF4YPs96XHDJ\"),\n    },\n    [Tokens.usdcToken.mint.toString()]: {\n      ...Tokens.usdcToken,\n      addr: new PublicKey(\"5yMoAhjfFaCPwEwKM2VeFFh2iBs5mHWLTJ4LuqZifsgN\"),\n    },\n  },\n  curveType: CurveType.ConstantProduct,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(25, 10000),\n    ownerFee: Percentage.fromFraction(5, 10000),\n  },\n});\n\nexport const stsolWstethPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"B32UuhPSp6srSBbRTh4qZNjkegsehY9qXTwQgnPWYMZy\"),\n  nonce: 255,\n  authority: new PublicKey(\"EtwQJxu8wih29vMpdTa74K9W9tgtL4LT6hbWBkhHwvU5\"),\n  poolTokenMint: new PublicKey(\"Eswigpwm3xsipkTqahGi2PEJsJcULQBwZgxhQpr6yBEa\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"74b9j23njRpt3PYPxoze2XS29ZgGmucziLB7WrsDpBdD\"),\n  tokenIds: [Tokens.stsolToken.mint.toString(), Tokens.wstethToken.mint.toString()],\n  tokens: {\n    [Tokens.stsolToken.mint.toString()]: {\n      ...Tokens.stsolToken,\n      addr: new PublicKey(\"CeSEpgqc3zV8xDr7Q6PiwJju6a6e92wpAv7Kg6QyFfQB\"),\n    },\n    [Tokens.wstethToken.mint.toString()]: {\n      ...Tokens.wstethToken,\n      addr: new PublicKey(\"Fb3XpEJgghTURUGd1wphWr93ruX5egnesfdZtjWCxJFy\"),\n    },\n  },\n  curveType: CurveType.ConstantProduct,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(25, 10000),\n    ownerFee: Percentage.fromFraction(5, 10000),\n  },\n});\n\nexport const sypUsdcPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"5DnwMqYAGEKekYXJdN8Bue6vN1p5zrEnBpmd53jEK61S\"),\n  nonce: 255,\n  authority: new PublicKey(\"4NfadURWeSDPJBGcKQRt39mPhbG9M7EJx6FZDwwcFB9f\"),\n  poolTokenMint: new PublicKey(\"qJxKN9BhxbYvRNbjfK2uAVWboto6sonj8XC1ZEW5XTB\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"57L2bEFecsAv4jnaM2PBaeAVyPZEYtTmXBi7eaG2xWXw\"),\n  tokenIds: [Tokens.sypToken.mint.toString(), Tokens.usdcToken.mint.toString()],\n  tokens: {\n    [Tokens.sypToken.mint.toString()]: {\n      ...Tokens.sypToken,\n      addr: new PublicKey(\"6d19CQA1FP2MLLAzA7XoZEc9Agc32FaKUS175UVWLGtv\"),\n    },\n    [Tokens.usdcToken.mint.toString()]: {\n      ...Tokens.usdcToken,\n      addr: new PublicKey(\"HpPnUHyo19VjmXbP6FbbKXu7WQCUEn6h7be76fZdHVmf\"),\n    },\n  },\n  curveType: CurveType.ConstantProduct,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(25, 10000),\n    ownerFee: Percentage.fromFraction(5, 10000),\n  },\n});\n\nexport const stsolWldoPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"CqwyVxWeaiikQ3VhvEZSEmupmG1Wmc2FeaUjsCV492Sx\"),\n  nonce: 255,\n  authority: new PublicKey(\"213QoNt5dR56Ye2sx9cwPwpR3NpJUEStQXn8EbbWKkfJ\"),\n  poolTokenMint: new PublicKey(\"74B9aMS7SA832xKngt5VLKmWAP3pa3qkUzWncTmQSsGF\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"D4kH4fcwwDtGMj4LpcynB977YVnmvDUcuDQoo5sqAgRz\"),\n  tokenIds: [Tokens.stsolToken.mint.toString(), Tokens.wldoToken.mint.toString()],\n  tokens: {\n    [Tokens.stsolToken.mint.toString()]: {\n      ...Tokens.stsolToken,\n      addr: new PublicKey(\"GDprNAcXeR5GVGnCtkS5UqyPGMm2Sy5Lk15qqN36faMT\"),\n    },\n    [Tokens.wldoToken.mint.toString()]: {\n      ...Tokens.wldoToken,\n      addr: new PublicKey(\"VCgdcsExfmxUDQwusLP2xqZ3ap7VuYyQMMHDPSva2hx\"),\n    },\n  },\n  curveType: CurveType.ConstantProduct,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(25, 10000),\n    ownerFee: Percentage.fromFraction(5, 10000),\n  },\n});\n\nexport const whethSolPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"FcEro2uFpHcb7Z785CBs6q12KMJqUJKa8VTXPi4TTBMf\"),\n  nonce: 252,\n  authority: new PublicKey(\"HMxZz8fv2uR9suzAPRbJGNB3wZL1eT3eKL3cpYWUbM8K\"),\n  poolTokenMint: new PublicKey(\"7aYnrdmdCRodDy2Czn6keUquUhjF1jPEmfwZPh488z8U\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"YCVJDKdHNi1mhJtWz7QGbBRreMmw1soeipz7wZbQKEK\"),\n  tokenIds: [Tokens.whethToken.mint.toString(), Tokens.solToken.mint.toString()],\n  tokens: {\n    [Tokens.whethToken.mint.toString()]: {\n      ...Tokens.whethToken,\n      addr: new PublicKey(\"3uQytDKNd5H6XK8FhTei4wCUmj2eTbLTbiLAtWk2SmbA\"),\n    },\n    [Tokens.solToken.mint.toString()]: {\n      ...Tokens.solToken,\n      addr: new PublicKey(\"GR3g8Wej3jmv92hYM1t22kaXog2xjkGjQ7V1XzLd1efT\"),\n    },\n  },\n  curveType: CurveType.ConstantProduct,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(25, 10000),\n    ownerFee: Percentage.fromFraction(5, 10000),\n  },\n});\n\nexport const whethUsdcPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"4reGGLbesqpAeAZdAJv9hhgA2tgj45oGcyRuEvhATdMm\"),\n  nonce: 252,\n  authority: new PublicKey(\"8uLtzZ1iTLTCPsm3b4QttRmDXcFjhVHRuMS9VTVEwo7E\"),\n  poolTokenMint: new PublicKey(\"7NPtjjAP7vhp4t5NCLyY4DY5rurvyc8cgZ2a2rYabRia\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"AVw52spXtzFh4bb5ghhpJaDbLx3XWuY85eQNDEo3X1yN\"),\n  tokenIds: [Tokens.whethToken.mint.toString(), Tokens.usdcToken.mint.toString()],\n  tokens: {\n    [Tokens.whethToken.mint.toString()]: {\n      ...Tokens.whethToken,\n      addr: new PublicKey(\"9KpjcpKwhoFPbixvKDfcAhBQcVXk1CSBTGsJdzojDPRv\"),\n    },\n    [Tokens.usdcToken.mint.toString()]: {\n      ...Tokens.usdcToken,\n      addr: new PublicKey(\"5HaG31FQS4McBVcHxVfwaKaWXE3VCGqvJ1ZDkTxs94cQ\"),\n    },\n  },\n  curveType: CurveType.ConstantProduct,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(25, 10000),\n    ownerFee: Percentage.fromFraction(5, 10000),\n  },\n});\n\nexport const mndeMsolPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"vjHagYsgZwG9icyFLHu2xWHWdtiS5gfeNzRhDcPt5xq\"),\n  nonce: 255,\n  authority: new PublicKey(\"3HWcojnC1ruEMmsE92Ez1BoebdDXzYQa4USaeWX7eTuM\"),\n  poolTokenMint: new PublicKey(\"5PHS5w6hQwFNnLz1jJFe7TVTxSQ98cDYC3akmiAoFMXs\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"46mdANZ2DCA2sTFchvD7WwbffbLQa4jCFkkRL23WuYG8\"),\n  tokenIds: [Tokens.mndeToken.mint.toString(), Tokens.msolToken.mint.toString()],\n  tokens: {\n    [Tokens.mndeToken.mint.toString()]: {\n      ...Tokens.mndeToken,\n      addr: new PublicKey(\"2LferrWvYWtHFfdkmixzt9g3aKa3yBNfgbRrP1CcWMMp\"),\n    },\n    [Tokens.msolToken.mint.toString()]: {\n      ...Tokens.msolToken,\n      addr: new PublicKey(\"GimsuZjYqMXM6xK6S3e9JpGvX6jaMPuNeR6s2piDESmy\"),\n    },\n  },\n  curveType: CurveType.ConstantProduct,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(25, 10000),\n    ownerFee: Percentage.fromFraction(5, 10000),\n  },\n});\n\nexport const wagUsdcPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"B76e3wtCDTKBgKQjvx87EBkDLPGcCY9w1SGiwjD5kaK7\"),\n  nonce: 254,\n  authority: new PublicKey(\"FRUmMZDiZrDrwioiUYi3tdqF7SEBeT219bBu54PGxoCo\"),\n  poolTokenMint: new PublicKey(\"Df6XNHMF3uRVZnz7LCEGiZVax6rXgz76owtVkBHEjSb6\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"BCuRKfsM99LJFCchKUBLBZ26UuziDewJDRkkKMwx2qnd\"),\n  tokenIds: [Tokens.wagToken.mint.toString(), Tokens.usdcToken.mint.toString()],\n  tokens: {\n    [Tokens.wagToken.mint.toString()]: {\n      ...Tokens.wagToken,\n      addr: new PublicKey(\"8voSogytL9jLgE73GS3WuujBinKFRQJjvUFsVGYexWZd\"),\n    },\n    [Tokens.usdcToken.mint.toString()]: {\n      ...Tokens.usdcToken,\n      addr: new PublicKey(\"HEP7mACuN13cT95eDAYTNjgwriqJnMQVhnyRctqnBRe4\"),\n    },\n  },\n  curveType: CurveType.ConstantProduct,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(25, 10000),\n    ownerFee: Percentage.fromFraction(5, 10000),\n  },\n});\n\nexport const msolUsdtPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"Afofkb7JTc32rdpqiyc3RDmGF5s9N6W1ujcdYVfGZ5Je\"),\n  nonce: 251,\n  authority: new PublicKey(\"8vrC1FAnW6hQMwJuU5waZdRrBbDJTULqjpdc4GjDtKR6\"),\n  poolTokenMint: new PublicKey(\"9cMWe4UYRPGAUUsTkjShJWVM7bk8DUBgxtwwH8asFJoV\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"7GPvi21QbwMyBoXU5Zqf8VhnuEh7VH4A1SRPgHJ36eE7\"),\n  tokenIds: [Tokens.msolToken.mint.toString(), Tokens.usdtToken.mint.toString()],\n  tokens: {\n    [Tokens.msolToken.mint.toString()]: {\n      ...Tokens.msolToken,\n      addr: new PublicKey(\"RTXKRxghfWJpE344UG7UhKnCwN2Gyv6KnNSTFDnaASF\"),\n    },\n    [Tokens.usdtToken.mint.toString()]: {\n      ...Tokens.usdtToken,\n      addr: new PublicKey(\"J15KntYr6iout4ce2kcD2QEdkVbLN4EHHFLfCtke3f6Y\"),\n    },\n  },\n  curveType: CurveType.ConstantProduct,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(25, 10000),\n    ownerFee: Percentage.fromFraction(5, 10000),\n  },\n});\n\nexport const msolWhethPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"A71DQffTzgxBSzXjPL3tmf8XXTNtS5mR2D78Y8rmV2hk\"),\n  nonce: 250,\n  authority: new PublicKey(\"FPWpe7QEQnDMivnHksQW2uvcw9tvX1oxejKBX136WRkr\"),\n  poolTokenMint: new PublicKey(\"5qoTq3qC4U7vFxo3iCzbXcaD1UEmDeCD63Dsuoct71oV\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"FSqUYVzF3XZzLcnj132eT6ed3bK95G1yG4MazcHZi99Q\"),\n  tokenIds: [Tokens.msolToken.mint.toString(), Tokens.whethToken.mint.toString()],\n  tokens: {\n    [Tokens.msolToken.mint.toString()]: {\n      ...Tokens.msolToken,\n      addr: new PublicKey(\"Fcp5u8bL3V24MXjA4noSfMpcEAP2vSj1WTaA1ZNxACZL\"),\n    },\n    [Tokens.whethToken.mint.toString()]: {\n      ...Tokens.whethToken,\n      addr: new PublicKey(\"DuBCBX3y2FjDWUn2ncK5EKQh229JiJ7HTCjYJhNC87K8\"),\n    },\n  },\n  curveType: CurveType.ConstantProduct,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(25, 10000),\n    ownerFee: Percentage.fromFraction(5, 10000),\n  },\n});\n\nexport const btcMsolPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"8DRw5wQE1pyg6RB1UwypGNFgb2Pzp2hpyDDNwo76Lcc8\"),\n  nonce: 255,\n  authority: new PublicKey(\"3X1aLdyvcQNc8TvBMPiucMsRCnGMBnGsjJHpZEyCf3pn\"),\n  poolTokenMint: new PublicKey(\"8nKJ4z9FSw6wrVZKASqBiS9DS1CiNsRnqwCCKVQjqdkB\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"AqiLHbUAy4UWWKGVVgbHsaUVCMg1zemNkgsYBPSirT92\"),\n  tokenIds: [Tokens.btcToken.mint.toString(), Tokens.msolToken.mint.toString()],\n  tokens: {\n    [Tokens.btcToken.mint.toString()]: {\n      ...Tokens.btcToken,\n      addr: new PublicKey(\"6D3sxC6yEe84FUnF5Kpbgx6gN57N9poJCKAtrCeCWdJo\"),\n    },\n    [Tokens.msolToken.mint.toString()]: {\n      ...Tokens.msolToken,\n      addr: new PublicKey(\"EPoVJLhi9QtVPVo8n31M5k5Knvb48j8zbYyRrUbrHwC5\"),\n    },\n  },\n  curveType: CurveType.ConstantProduct,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(25, 10000),\n    ownerFee: Percentage.fromFraction(5, 10000),\n  },\n});\n\nexport const ivnSolPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"CFCivUWXBuULVNfJezj1fAhX6hdwVFi2BsCtpu6m96bR\"),\n  nonce: 255,\n  authority: new PublicKey(\"JGhNs5r7YNnJokzzXZWE3REKV8x4GiUvn2xSg7XGg59\"),\n  poolTokenMint: new PublicKey(\"DfgCnzaiTXfPkAH1C1Z441b5MzjjTCEh134ioxqRZxYf\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"HwwgrSjJGFBtRN8h2daWnVLBciwoo79wNeKi6b5SZmE2\"),\n  tokenIds: [Tokens.ivnToken.mint.toString(), Tokens.solToken.mint.toString()],\n  tokens: {\n    [Tokens.ivnToken.mint.toString()]: {\n      ...Tokens.ivnToken,\n      addr: new PublicKey(\"C5yDeB3jBz5yZPa6FgP6b7HNoFxLP63Pyzpaosnkikis\"),\n    },\n    [Tokens.solToken.mint.toString()]: {\n      ...Tokens.solToken,\n      addr: new PublicKey(\"CCm846T6xj9VAhSAifuUJAXYCR3kaGp5KqhXFHCaeWUh\"),\n    },\n  },\n  curveType: CurveType.ConstantProduct,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(25, 10000),\n    ownerFee: Percentage.fromFraction(5, 10000),\n  },\n});\n\nexport const larixUsdcPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"DaNULZAv2VyLk75pW3QD5szVzx5dT6iNvoih94Bttqf5\"),\n  nonce: 255,\n  authority: new PublicKey(\"FUVkG7fM3i8T49qV7WsJd68rBaYKvqTkAQCdftqTWWNj\"),\n  poolTokenMint: new PublicKey(\"8sfThep3io4gvcGeuoAg1Rs8GDwKJjtcdAFHqQSSNAVE\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"AVb9Bvu4rjFYNCHygEnAYCjwnkgtC8C6UmJ7at3dsfdz\"),\n  tokenIds: [Tokens.larixToken.mint.toString(), Tokens.usdcToken.mint.toString()],\n  tokens: {\n    [Tokens.larixToken.mint.toString()]: {\n      ...Tokens.larixToken,\n      addr: new PublicKey(\"AAjjSJsZM3AKK4h9cbGTHkquEZ2fWjgo9A9Pmrj2ynTH\"),\n    },\n    [Tokens.usdcToken.mint.toString()]: {\n      ...Tokens.usdcToken,\n      addr: new PublicKey(\"82Fs8dSpMxPPfN1ULsXGFREHWz3JizREpTxwz2MaZ1n1\"),\n    },\n  },\n  curveType: CurveType.ConstantProduct,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(25, 10000),\n    ownerFee: Percentage.fromFraction(5, 10000),\n  },\n});\n\nexport const prtUsdcPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"CRm5uRBsVmUVHVqKfCCvCUX1RLUkjfcBWAeMQ5D9VuCM\"),\n  nonce: 255,\n  authority: new PublicKey(\"A9eqdCXYys7jeoroMFEnkGLoYLa2q5gGbg8RSKHkR2ne\"),\n  poolTokenMint: new PublicKey(\"6jCERp5hKj37PCXP3VTjCDJeoPuSpnMDMz5A6jWQv3yS\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"FHVidN2ZdGnVaCjYwLjLXrimPbVsaqsUEEiGcVZ6WAPq\"),\n  tokenIds: [Tokens.prtToken.mint.toString(), Tokens.usdcToken.mint.toString()],\n  tokens: {\n    [Tokens.prtToken.mint.toString()]: {\n      ...Tokens.prtToken,\n      addr: new PublicKey(\"3oL2GjsUnQLjHw77p78CsRr7t94AVrtsCnW5uf6NYQ3g\"),\n    },\n    [Tokens.usdcToken.mint.toString()]: {\n      ...Tokens.usdcToken,\n      addr: new PublicKey(\"2EiVwvsH5cvyk4W243zKoywkaEQb9Bwe9WGphRgBSqaP\"),\n    },\n  },\n  curveType: CurveType.ConstantProduct,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(25, 10000),\n    ownerFee: Percentage.fromFraction(5, 10000),\n  },\n});\n\nexport const jetUsdcPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"ErWwp9HKjk5ZPLDt8SrHKH5PvSKTwFDdFo5E3zDuE5Be\"),\n  nonce: 253,\n  authority: new PublicKey(\"GYY1t5d4pZnJC4rMXGY9yKMyCzLqxRqbtSguD2KkxghH\"),\n  poolTokenMint: new PublicKey(\"GBijunwxa4Ni3JmYC6q6zgaVhSUJU6hVX5qTyJDRpNTc\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"6NhybmW42rdWj5TcobNKQT6JaZispgngcfTDrCsgVq4Q\"),\n  tokenIds: [Tokens.jetToken.mint.toString(), Tokens.usdcToken.mint.toString()],\n  tokens: {\n    [Tokens.jetToken.mint.toString()]: {\n      ...Tokens.jetToken,\n      addr: new PublicKey(\"GEtZSc8188t2cCAv21UGCyjvxCeyU5Co99GtRtyTkpdh\"),\n    },\n    [Tokens.usdcToken.mint.toString()]: {\n      ...Tokens.usdcToken,\n      addr: new PublicKey(\"Bi95f8H7o7zHWuYysxDHEubPv4c3NhsHWhaesXJu91NC\"),\n    },\n  },\n  curveType: CurveType.ConstantProduct,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(25, 10000),\n    ownerFee: Percentage.fromFraction(5, 10000),\n  },\n});\n\nexport const stsolUsdcPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"EfK84vYEKT1PoTJr6fBVKFbyA7ZoftfPo2LQPAJG1exL\"),\n  nonce: 252,\n  authority: new PublicKey(\"8PSN1CQxfyZ7T4sM3HM3RAgF2Y6VCf4tKSc8xY73Tnq5\"),\n  poolTokenMint: new PublicKey(\"GtQ1NT7R5aaTiST7K6ZWdMhwDdFxsSFvVFhBo8vyHGAq\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"CJhL3UGesECFt6fvLB3csrGMuHf3M3G78pUzTopUiV8T\"),\n  tokenIds: [Tokens.stsolToken.mint.toString(), Tokens.usdcToken.mint.toString()],\n  tokens: {\n    [Tokens.stsolToken.mint.toString()]: {\n      ...Tokens.stsolToken,\n      addr: new PublicKey(\"9SEBxqhP8sTAzmfiQfCPim1MqQXuDPb6fkGzJF7Z339i\"),\n    },\n    [Tokens.usdcToken.mint.toString()]: {\n      ...Tokens.usdcToken,\n      addr: new PublicKey(\"G45yhM5mZ5RXZpLxGWLk3PVzdAp33z8aH6F9mLW8fQj3\"),\n    },\n  },\n  curveType: CurveType.ConstantProduct,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(25, 10000),\n    ownerFee: Percentage.fromFraction(5, 10000),\n  },\n});\n\nexport const wstethUsdcPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"v51xWrRwmFVH6EKe8eZTjgK5E4uC2tzY5sVt5cHbrkG\"),\n  nonce: 254,\n  authority: new PublicKey(\"3Kk8rpjxpc9qv2pJPr1CbmyQqrTDPntpryXActLogQeD\"),\n  poolTokenMint: new PublicKey(\"5a6Y1ephcbKSoyLMQyD1JWbtqawCy8p2FtRL9v3zhaG5\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"ACKiRmbiMaPEc73pz4dVMuJGPaa74Vx9sfYADjnHuzvo\"),\n  tokenIds: [Tokens.wstethToken.mint.toString(), Tokens.usdcToken.mint.toString()],\n  tokens: {\n    [Tokens.wstethToken.mint.toString()]: {\n      ...Tokens.wstethToken,\n      addr: new PublicKey(\"5c4tzhRVaCxpmu8o3HrEZ8PWBDKSR6QNkBdQrUo9oe3e\"),\n    },\n    [Tokens.usdcToken.mint.toString()]: {\n      ...Tokens.usdcToken,\n      addr: new PublicKey(\"AFNaWHH7ZGFjB7y7jmPM7jVs7QBAciffu7Z5tZidRHPR\"),\n    },\n  },\n  curveType: CurveType.ConstantProduct,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(25, 10000),\n    ownerFee: Percentage.fromFraction(5, 10000),\n  },\n});\n\nexport const auryUsdcPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"6HSguUukDH9zqJBm6oAAmFkg1WK9dJ5iLgnppTCM6jHm\"),\n  nonce: 255,\n  authority: new PublicKey(\"9T1koZp2PNJgspcx3G22yLiChBUfYzAjs2dhj2kgw2LZ\"),\n  poolTokenMint: new PublicKey(\"6mJqqT5TMgveDvxzBt3hrjGkPV5VAj7tacxFCT3GebXh\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"JCqbv7r3mtYhzruNFjc21X14fndDVBLMiaNQrsHVpWui\"),\n  tokenIds: [Tokens.auryToken.mint.toString(), Tokens.usdcToken.mint.toString()],\n  tokens: {\n    [Tokens.auryToken.mint.toString()]: {\n      ...Tokens.auryToken,\n      addr: new PublicKey(\"413s6jiRbayD9didA4VnY8kQVgVBgkYNpYB2tyNf8sbh\"),\n    },\n    [Tokens.usdcToken.mint.toString()]: {\n      ...Tokens.usdcToken,\n      addr: new PublicKey(\"GdPeogNxRWAZtUj7ZHc7fUpBuGHJosdbukiT2krFtXm8\"),\n    },\n  },\n  curveType: CurveType.ConstantProduct,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(25, 10000),\n    ownerFee: Percentage.fromFraction(5, 10000),\n  },\n});\n\nexport const avaxUsdcPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"7c2CLgatf2TU36PgpS65WLmvWk94rmaHVf1Z1peZ7mcA\"),\n  nonce: 251,\n  authority: new PublicKey(\"Mq46N9EknnxHL9fRkJhS4Eg9YXRifHiWzFJTD11ePWC\"),\n  poolTokenMint: new PublicKey(\"Hmfrtmo93DpSDmVNLQKcBS5D1ia5JatiRSok9ososubz\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"7JH76Kw4dHyC5szRXkx6MFkJ3BEViodfNy15uFJst1cX\"),\n  tokenIds: [Tokens.avaxToken.mint.toString(), Tokens.usdcToken.mint.toString()],\n  tokens: {\n    [Tokens.avaxToken.mint.toString()]: {\n      ...Tokens.avaxToken,\n      addr: new PublicKey(\"5rU6M2jAXQMSmgrsn14BPoVVhoBdCU6y5cP7XMjN4ZYy\"),\n    },\n    [Tokens.usdcToken.mint.toString()]: {\n      ...Tokens.usdcToken,\n      addr: new PublicKey(\"D28rzq246bcXBrYiCeALY86y8NwvCUmuJGNggvKsh4WR\"),\n    },\n  },\n  curveType: CurveType.ConstantProduct,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(25, 10000),\n    ownerFee: Percentage.fromFraction(5, 10000),\n  },\n});\n\nexport const fttUsdcPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"8npdwWX2BR39kcFLtTJABbcjNq7NWQvipfqxgsfk9mTX\"),\n  nonce: 255,\n  authority: new PublicKey(\"8zU13KiLb1e87skt4rf8q1LhamEKKecyu6Xxb4Hqnm7e\"),\n  poolTokenMint: new PublicKey(\"FwCombynV2fTVizxPCNA2oZKoWXLZgdJThjE4Xv9sjxc\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"C8D52rGuZcsBENhWtR9aqJVRU62cL7jyyEhxesKwc1k8\"),\n  tokenIds: [Tokens.fttToken.mint.toString(), Tokens.usdcToken.mint.toString()],\n  tokens: {\n    [Tokens.fttToken.mint.toString()]: {\n      ...Tokens.fttToken,\n      addr: new PublicKey(\"SasuKsATA2ATrMfFfSJr86wAGVgdS69PkQT3jFASBB8\"),\n    },\n    [Tokens.usdcToken.mint.toString()]: {\n      ...Tokens.usdcToken,\n      addr: new PublicKey(\"3wADiuUqoakdoYYYxKqwoA4VN3uWZy5UwvLePox1mEsK\"),\n    },\n  },\n  curveType: CurveType.ConstantProduct,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(25, 10000),\n    ownerFee: Percentage.fromFraction(5, 10000),\n  },\n});\n\nexport const rayUsdcPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"2R2VhohRc5WoNHtRdwnjovAQaZRAmr1DE3QFW5jfgb6v\"),\n  nonce: 252,\n  authority: new PublicKey(\"9B9ZcYT8jDQ6XLe6gRLDCFv1zz3uHVKdbZT9DFhsYSQW\"),\n  poolTokenMint: new PublicKey(\"4cXw2MYj94TFBXLL73fEpMCr8DPrW68JvrV8mzWgktbD\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"HURhvCRsrwwR5TiG75Hn274WwL76kaKgjgC6n9h4FEHj\"),\n  tokenIds: [Tokens.rayToken.mint.toString(), Tokens.usdcToken.mint.toString()],\n  tokens: {\n    [Tokens.rayToken.mint.toString()]: {\n      ...Tokens.rayToken,\n      addr: new PublicKey(\"9ASj9zDg7cT6wtvn4euSUiZte8yN2U3Tn6cTVZvMHbU7\"),\n    },\n    [Tokens.usdcToken.mint.toString()]: {\n      ...Tokens.usdcToken,\n      addr: new PublicKey(\"HGTxSWbb62nxk4oGkLkHUvrEzR5D4GKYRb8ZDcA2dpki\"),\n    },\n  },\n  curveType: CurveType.ConstantProduct,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(25, 10000),\n    ownerFee: Percentage.fromFraction(5, 10000),\n  },\n});\n\nexport const slndUsdcPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"GhosXH9yZPxqSyTHqJtXQt6w65YfiGjKXcEXciX1P3z8\"),\n  nonce: 255,\n  authority: new PublicKey(\"ChmSHndtXRsYnFjYA2F7yRRsnyZ8kCpxSogTsCUgCEsh\"),\n  poolTokenMint: new PublicKey(\"F59gkD7NnsdJbFKrRZsiBC8PAooN4c56T8QmahfW1iXN\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"GMipxN5pu6F6wwUrq6RhpqgcMjcKLTsnDTeNFCuUm5n7\"),\n  tokenIds: [Tokens.slndToken.mint.toString(), Tokens.usdcToken.mint.toString()],\n  tokens: {\n    [Tokens.slndToken.mint.toString()]: {\n      ...Tokens.slndToken,\n      addr: new PublicKey(\"9RcdfprKxbTzp3erTJMwXKznNCLmbCUaKhibaTMXhToi\"),\n    },\n    [Tokens.usdcToken.mint.toString()]: {\n      ...Tokens.usdcToken,\n      addr: new PublicKey(\"6wEh8r3Czc3nKkN6JXobShnLG7ZqA5Y5DREGzkirYR36\"),\n    },\n  },\n  curveType: CurveType.ConstantProduct,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(25, 10000),\n    ownerFee: Percentage.fromFraction(5, 10000),\n  },\n});\n\nexport const gofxUsdcPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"C3b5AWQJiyar5g8EWu75zgDE26F55ZJWpqtFVCCVDQQQ\"),\n  nonce: 253,\n  authority: new PublicKey(\"3SphkwoHx3d13Eu9RehVVg4gGMZv7FEaDXvPqWbQF9bm\"),\n  poolTokenMint: new PublicKey(\"7vnps4VE5RTGAr5fmPZu7fSrk2VnM4Up838grZfqmxqE\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"CT95CSNqi4nttNW84dDuA8Um7FLAC52PVUvuVRKeCHVK\"),\n  tokenIds: [Tokens.gofxToken.mint.toString(), Tokens.usdcToken.mint.toString()],\n  tokens: {\n    [Tokens.gofxToken.mint.toString()]: {\n      ...Tokens.gofxToken,\n      addr: new PublicKey(\"5AhPVbtyiTV3SiNRJuq5z9xeaqqwoHQWqohR9HvjJkKS\"),\n    },\n    [Tokens.usdcToken.mint.toString()]: {\n      ...Tokens.usdcToken,\n      addr: new PublicKey(\"6mtcbtTAadVEdnWJZmsq8woqLea7ef7k5WumVXSHr5KQ\"),\n    },\n  },\n  curveType: CurveType.ConstantProduct,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(25, 10000),\n    ownerFee: Percentage.fromFraction(5, 10000),\n  },\n});\n\nexport const woofUsdcPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"HY6iq1dp7pHwstfmLFu8m2iEvRQtjX3N751jcN6KrQXU\"),\n  nonce: 255,\n  authority: new PublicKey(\"8JuHyxYBpemmryQq4bcA1GTuKaub9JJuLPoNNJpwX9aP\"),\n  poolTokenMint: new PublicKey(\"9EjcYfHcG8f1mccpHyaAwpoxaUPiheC6KgLQjyD9aTb6\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"886Yu2fd1x8xpb4icdrhxZemdD8PN9RLdrq6Mn89wR4k\"),\n  tokenIds: [Tokens.woofToken.mint.toString(), Tokens.usdcToken.mint.toString()],\n  tokens: {\n    [Tokens.woofToken.mint.toString()]: {\n      ...Tokens.woofToken,\n      addr: new PublicKey(\"8ju56eRfs9wg3GtoSFVoQoR6NnQn6gsWr6FkQyZ1EeBg\"),\n    },\n    [Tokens.usdcToken.mint.toString()]: {\n      ...Tokens.usdcToken,\n      addr: new PublicKey(\"5WcqVktXr3Rr78MGGfcuwgB6azoN9EDCZLP4werGnfi4\"),\n    },\n  },\n  curveType: CurveType.ConstantProduct,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(25, 10000),\n    ownerFee: Percentage.fromFraction(5, 10000),\n  },\n});\n\nexport const sdogeUsdcPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"8GoFKVkoxPyQKWXhoXs3ycGmp9rXYM8hz7eq1EUM1MJe\"),\n  nonce: 252,\n  authority: new PublicKey(\"DSuxdCkHQy6rAjFsL75tRu2UpHVQDoYsYFeZt15sVDYL\"),\n  poolTokenMint: new PublicKey(\"CHTKUJGYRtBDqnxCFjxe5KEkZgxV98udbhuYYyzGxup5\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"2gCRgQEySFTXA5v99vRUJHAGhQPTPtHx16Rdgipz7Q1y\"),\n  tokenIds: [Tokens.sdogeToken.mint.toString(), Tokens.usdcToken.mint.toString()],\n  tokens: {\n    [Tokens.sdogeToken.mint.toString()]: {\n      ...Tokens.sdogeToken,\n      addr: new PublicKey(\"ABQfmExcxJt2wE9JeLUxvhkpA2VkoQVvWKDvfusjq226\"),\n    },\n    [Tokens.usdcToken.mint.toString()]: {\n      ...Tokens.usdcToken,\n      addr: new PublicKey(\"EDBXkzwxu6UXqBDnzb9AJ6Eggjyyct7SmYVoR8PYJkHd\"),\n    },\n  },\n  curveType: CurveType.ConstantProduct,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(25, 10000),\n    ownerFee: Percentage.fromFraction(5, 10000),\n  },\n});\n\nexport const catoUsdcPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"GumfURfQvPaJ2E5ueCEKYJmymNQbV34gU9TmiKZYRkiv\"),\n  nonce: 255,\n  authority: new PublicKey(\"EjoLNSDggfWWE7BxwoL4tJHBEg1cFpdiyKeYTYCec2o2\"),\n  poolTokenMint: new PublicKey(\"55r9txzQtmjTykmTXmBYZCVMg5z9squB8b5cSw2AhxA4\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"F6xCTe256cA6HTX5CYBkDtXoruHvjfbxeHNeqR9kR7oJ\"),\n  tokenIds: [Tokens.catoToken.mint.toString(), Tokens.usdcToken.mint.toString()],\n  tokens: {\n    [Tokens.catoToken.mint.toString()]: {\n      ...Tokens.catoToken,\n      addr: new PublicKey(\"AGNHgSQuPd4EqjLTLJrXEVb3KCkjRxGVDTaag4drV1XX\"),\n    },\n    [Tokens.usdcToken.mint.toString()]: {\n      ...Tokens.usdcToken,\n      addr: new PublicKey(\"FESKk2kj9oqdYR4dcaP4LyqDyWZt3NttgypRVFoyUQNs\"),\n    },\n  },\n  curveType: CurveType.ConstantProduct,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(25, 10000),\n    ownerFee: Percentage.fromFraction(5, 10000),\n  },\n});\n\nexport const oogiUsdcPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"9tK2LaapwjxaUmfcAzY9zgC39M3wnaFX558y2Bb4oxWG\"),\n  nonce: 255,\n  authority: new PublicKey(\"EGuBsx6HAgAtf1ogzF1uXTUQgwRex61hnhvuZcMwQKUJ\"),\n  poolTokenMint: new PublicKey(\"DSiHyHDn96bUQSZtizyCRLcQzrwohZeMpVu8rYJN1HzG\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"Acom6ebnmbFKQk3XeX5VHPiz8bd7kzfpUMsqHKJDJnry\"),\n  tokenIds: [Tokens.oogiToken.mint.toString(), Tokens.usdcToken.mint.toString()],\n  tokens: {\n    [Tokens.oogiToken.mint.toString()]: {\n      ...Tokens.oogiToken,\n      addr: new PublicKey(\"GgfTGZ5DnAotnXKFM86vqffKQZ9nGgHaX1PDS7RTcKjQ\"),\n    },\n    [Tokens.usdcToken.mint.toString()]: {\n      ...Tokens.usdcToken,\n      addr: new PublicKey(\"A3rzsPGtqowjKXfscYrPo1jvv2EVYpJwXQPGKxgvvStf\"),\n    },\n  },\n  curveType: CurveType.ConstantProduct,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(25, 10000),\n    ownerFee: Percentage.fromFraction(5, 10000),\n  },\n});\n\nexport const sonarUsdcPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"Dzp3ZWyUZGXZYWfodXdLdXfiW7gwVZBdWBwQ28eB6cTH\"),\n  nonce: 253,\n  authority: new PublicKey(\"3HJw5YCXr69DzUcLSif4BicrMrXjC2jrEMpjQhQ3AwmB\"),\n  poolTokenMint: new PublicKey(\"5MvQHx8eftU39JTucFsT315JFnQASuDQg3FqxTw7xcvN\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"J8tqP1N2fEgMTGhX2PTgRyj5ZFsFWsXneJpXyRjekKWA\"),\n  tokenIds: [Tokens.sonarToken.mint.toString(), Tokens.usdcToken.mint.toString()],\n  tokens: {\n    [Tokens.sonarToken.mint.toString()]: {\n      ...Tokens.sonarToken,\n      addr: new PublicKey(\"DxGfntMLqAjtB287GkPPcfotUGcWdhtpzR6KukdBo39H\"),\n    },\n    [Tokens.usdcToken.mint.toString()]: {\n      ...Tokens.usdcToken,\n      addr: new PublicKey(\"EVymxW4gFtxw7qjMYGFq4EupxHc1RteffwETa5MKTDPR\"),\n    },\n  },\n  curveType: CurveType.ConstantProduct,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(25, 10000),\n    ownerFee: Percentage.fromFraction(5, 10000),\n  },\n});\n\nexport const aptUsdcPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"Fg3UabVqnfycMtkiTVoaia9eNafehtT9Y4TicH2iBtvK\"),\n  nonce: 255,\n  authority: new PublicKey(\"JDEYn1JsacdxoB4v4mbctFSVrSUPttacX3gxWphFHJKZ\"),\n  poolTokenMint: new PublicKey(\"HNrYngS1eoqkjWro9D3Y5Z9sWBDzPNK2tX4rfV2Up177\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"41H5mWwsZKewJeV4wWiNjQ3U4VYBnwqCpzvAWt86baHd\"),\n  tokenIds: [Tokens.aptToken.mint.toString(), Tokens.usdcToken.mint.toString()],\n  tokens: {\n    [Tokens.aptToken.mint.toString()]: {\n      ...Tokens.aptToken,\n      addr: new PublicKey(\"636crNdZTf46gFUKuedaBCZDBMLahf7KGud2LyTMskU5\"),\n    },\n    [Tokens.usdcToken.mint.toString()]: {\n      ...Tokens.usdcToken,\n      addr: new PublicKey(\"DGEYFkEHyiuHWtHeCGiQGn1JbkGHqYrNwaP44miRbgxu\"),\n    },\n  },\n  curveType: CurveType.ConstantProduct,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(25, 10000),\n    ownerFee: Percentage.fromFraction(5, 10000),\n  },\n});\n\nexport const dflUsdcPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"59wJQz25rr38YnD69eXsntbdE4LB7m39KjHqZUUaoyZ3\"),\n  nonce: 255,\n  authority: new PublicKey(\"E2kEN96wSW5bYML8qYLgxKM4pvdLjqhCRMyCvqYyVrXt\"),\n  poolTokenMint: new PublicKey(\"AWrtTWG4Zgxw8D92bb3L3sQtGLD3zDztMPWsXSph8iBP\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"bZxTKZNF5gwnuXQ3xt8huUtsLAyFoh2NnQwmDDgbVxd\"),\n  tokenIds: [Tokens.dflToken.mint.toString(), Tokens.usdcToken.mint.toString()],\n  tokens: {\n    [Tokens.dflToken.mint.toString()]: {\n      ...Tokens.dflToken,\n      addr: new PublicKey(\"EXZdhy56TjvArQRfDakjuQdT7DffwFEYdY5F39vn3Wbr\"),\n    },\n    [Tokens.usdcToken.mint.toString()]: {\n      ...Tokens.usdcToken,\n      addr: new PublicKey(\"Bhch1NY65RNA8uFaj2s8Fzxu36SFMQiniyZidq4jzsTt\"),\n    },\n  },\n  curveType: CurveType.ConstantProduct,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(25, 10000),\n    ownerFee: Percentage.fromFraction(5, 10000),\n  },\n});\n\nexport const dflSolPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"GxkXvW6dJP3KUNWuXi64V99uRsPFEFnuuasNTq6fvZfP\"),\n  nonce: 255,\n  authority: new PublicKey(\"H196f95DHGfhNkF3W9h4bjBqpL8g3qesEENHRsDqJshj\"),\n  poolTokenMint: new PublicKey(\"9Y1vPaAsMz8X65DebMMnmBjbMo8i4jh4mcgiggZUUS3M\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"7L7kjeEo5oE9SCZ9vacmyJvfKKmjAevVpdktBGyxBxaF\"),\n  tokenIds: [Tokens.dflToken.mint.toString(), Tokens.solToken.mint.toString()],\n  tokens: {\n    [Tokens.dflToken.mint.toString()]: {\n      ...Tokens.dflToken,\n      addr: new PublicKey(\"BpjpdhuMkPPW3HPx4U9tRmNAXdUeb49jxwFGy2PrSNCp\"),\n    },\n    [Tokens.solToken.mint.toString()]: {\n      ...Tokens.solToken,\n      addr: new PublicKey(\"HcXqJthqq1UeGHA8xPeDLnWVJFcndoUnKnpULRCjyTzi\"),\n    },\n  },\n  curveType: CurveType.ConstantProduct,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(25, 10000),\n    ownerFee: Percentage.fromFraction(5, 10000),\n  },\n});\n\nexport const frktUsdcPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"DXNct3MfHDuhKiXHY3AUXPtj5sQVY3feuDxkDRfCw1rL\"),\n  nonce: 254,\n  authority: new PublicKey(\"JBCdhgkmW6xHdZUZdKdf56qov9LtHixf47JpoCWm4qcn\"),\n  poolTokenMint: new PublicKey(\"FnDxJPNk7pPmGHUbR4XUHmHevrkXHdna5D3sQKcAtjBL\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"DRn2F5MsWzLihtqsheuJmugJuHQGDR23cvqCLy7eCucw\"),\n  tokenIds: [Tokens.frktToken.mint.toString(), Tokens.usdcToken.mint.toString()],\n  tokens: {\n    [Tokens.frktToken.mint.toString()]: {\n      ...Tokens.frktToken,\n      addr: new PublicKey(\"AUSeFBvVtLiZRppRu8Uvd8NjzCkQzaCi5Si8WWyko9p\"),\n    },\n    [Tokens.usdcToken.mint.toString()]: {\n      ...Tokens.usdcToken,\n      addr: new PublicKey(\"C3RzSoNiBfTNbAZMyyuV2aLfwGQRyjvkjL3pf9iuvU3R\"),\n    },\n  },\n  curveType: CurveType.ConstantProduct,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(25, 10000),\n    ownerFee: Percentage.fromFraction(5, 10000),\n  },\n});\n\nexport const tttUsdcPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"HD6pqxyqj4S7eS3orAyQyan5RpwpMPjKEDWgTyYXcfr1\"),\n  nonce: 254,\n  authority: new PublicKey(\"Gh1QqgpKGd6zhicNvBh1VLbycpoq6P7QBCZT8MdhWzN1\"),\n  poolTokenMint: new PublicKey(\"FGgP1npQTsC5Q4xBmQtNYSh51NKqNwdxBZy8JCo3igcu\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"AFjaSrdgNJsFDSQTDbkBoBMLHt2qCt5GuPHWDTUV4nHt\"),\n  tokenIds: [Tokens.tttToken.mint.toString(), Tokens.usdcToken.mint.toString()],\n  tokens: {\n    [Tokens.tttToken.mint.toString()]: {\n      ...Tokens.tttToken,\n      addr: new PublicKey(\"HbrvwSnL11K5EALN21FdjmWvG16VNcq5iyHEKjdHtyJe\"),\n    },\n    [Tokens.usdcToken.mint.toString()]: {\n      ...Tokens.usdcToken,\n      addr: new PublicKey(\"CQvyngoqxCdgFQYjbT8EKved6hTDzmzdp8Xxxv5FkXmd\"),\n    },\n  },\n  curveType: CurveType.ConstantProduct,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(25, 10000),\n    ownerFee: Percentage.fromFraction(5, 10000),\n  },\n});\n\nexport const upsUsdcPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"G67ZSkxE5N67x6A1WhcTaHiFHqRtRQUb3QHwjtPge1Xr\"),\n  nonce: 250,\n  authority: new PublicKey(\"Hj3vg6P2DBfJ6hhvCoucaGvL9cwsvUgeJWZRzuXTZ6hi\"),\n  poolTokenMint: new PublicKey(\"E1U63VXhNiWoUkVvjrfLDdV1oJrwE6zLde3bohr6jCqz\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"Cu8SFyZKsHcUYhxECpt5Wr97CeHSXeDyNjs9kyDWtVJm\"),\n  tokenIds: [Tokens.upsToken.mint.toString(), Tokens.usdcToken.mint.toString()],\n  tokens: {\n    [Tokens.upsToken.mint.toString()]: {\n      ...Tokens.upsToken,\n      addr: new PublicKey(\"CNw37MJdV6gBChtEtUgGrx3zWXz8t3bYxD7u5axPrwdJ\"),\n    },\n    [Tokens.usdcToken.mint.toString()]: {\n      ...Tokens.usdcToken,\n      addr: new PublicKey(\"5iLVx3LwhWiqjaRyLaiVNsLbYBqy48fvs2sTY6q96nNy\"),\n    },\n  },\n  curveType: CurveType.ConstantProduct,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(25, 10000),\n    ownerFee: Percentage.fromFraction(5, 10000),\n  },\n});\n\nexport const fantUsdcPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"95aDcNzL8tL17jzHAUQXnRwuCmYBWKUr4xfjV6AMVJY1\"),\n  nonce: 255,\n  authority: new PublicKey(\"GeTZHdp1sYgX6J73CBeqS5pjb7xfY8D9Rzf4E615oGMt\"),\n  poolTokenMint: new PublicKey(\"GjG7JjTQfQpDxw4hWx4etP9oTaYCuCbPjsU8WaUT3xHB\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"AdSQYnzmJ4j2hbqT5aumXAf4a3T2AxmGHbCgHER8rf6K\"),\n  tokenIds: [Tokens.fantToken.mint.toString(), Tokens.usdcToken.mint.toString()],\n  tokens: {\n    [Tokens.fantToken.mint.toString()]: {\n      ...Tokens.fantToken,\n      addr: new PublicKey(\"CyLaJ6Y382czGE75yFDg2fneKni6PjZHH9Jh4GZN2Nyo\"),\n    },\n    [Tokens.usdcToken.mint.toString()]: {\n      ...Tokens.usdcToken,\n      addr: new PublicKey(\"7wHMKRPVsacb3JcBsUxLKLZkAPbX81VNc6Z6J9uvJ2J8\"),\n    },\n  },\n  curveType: CurveType.ConstantProduct,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(25, 10000),\n    ownerFee: Percentage.fromFraction(5, 10000),\n  },\n});\n\nexport const blockUsdcPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"ExeW62iy4xEUo5b5XnDru5oQCDRDUmBaFNqE4V4u7uvm\"),\n  nonce: 255,\n  authority: new PublicKey(\"2fSbre92FnmkeUP5iT7jdFKNB3nfx5yQ5GEW2mjVigMi\"),\n  poolTokenMint: new PublicKey(\"D8WjqtwC9CzBrQKfSf2ccCHFQuPYwyLv5KAy8WjT5vnf\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"BGSDZoQyH8QGJDvQ8toms4Pk4HWHaFEXSUvJ3AAYXxmF\"),\n  tokenIds: [Tokens.blockToken.mint.toString(), Tokens.usdcToken.mint.toString()],\n  tokens: {\n    [Tokens.blockToken.mint.toString()]: {\n      ...Tokens.blockToken,\n      addr: new PublicKey(\"7uJ5SFRGzrnbspUThix8M2wFJNnS8vvSKbCEhKmqMjNm\"),\n    },\n    [Tokens.usdcToken.mint.toString()]: {\n      ...Tokens.usdcToken,\n      addr: new PublicKey(\"4e5ZVp7u6YWEibveHscZmbmHpujtbJNUHFj14tqtAZKv\"),\n    },\n  },\n  curveType: CurveType.ConstantProduct,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(25, 10000),\n    ownerFee: Percentage.fromFraction(5, 10000),\n  },\n});\n\nexport const runUsdcPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"9j4FdbK68xUDQVynTWHbNzBRAj7Q7Lywiqb82en4JzZs\"),\n  nonce: 253,\n  authority: new PublicKey(\"9RUMuXequVtf9UVYHoKJxwWfqyod478nBfX8H3DvSaKV\"),\n  poolTokenMint: new PublicKey(\"34Ppq6R8NfYBwWwPY4cBK4Afyb8hHaASQFukCzH6cV4n\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"pPH4mFHFu1c3ZR59Zaun5jSCBRn6pU1GWSoVHD4LKUs\"),\n  tokenIds: [Tokens.runToken.mint.toString(), Tokens.usdcToken.mint.toString()],\n  tokens: {\n    [Tokens.runToken.mint.toString()]: {\n      ...Tokens.runToken,\n      addr: new PublicKey(\"tg7YMVac4S2ZpVrbaDqrZgURyTBBrZCQUkQ6Fn6nnrX\"),\n    },\n    [Tokens.usdcToken.mint.toString()]: {\n      ...Tokens.usdcToken,\n      addr: new PublicKey(\"G2fZDZKa5Y599xzqP1jVQ3EMCfiG6f4dMS6G1f7BKoQe\"),\n    },\n  },\n  curveType: CurveType.ConstantProduct,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(25, 10000),\n    ownerFee: Percentage.fromFraction(5, 10000),\n  },\n});\n\nexport const uxpUsdcPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"eKuTPdMHmnVzLP63oWwdUH6bBAVcdvBfg4zvH2nWWCj\"),\n  nonce: 255,\n  authority: new PublicKey(\"DYwCP16u5pmLMspCb8tdTQaaF2rBvM2qvgzm5uYvPUHT\"),\n  poolTokenMint: new PublicKey(\"HjR8JgqNKQVMvdryqJw5RJ4PCE9WGk8sgbEF7S9S3obv\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"HoaPae92LswzSbvnVbdkBAYFNanrvK3kFvWtYyUhpC2o\"),\n  tokenIds: [Tokens.uxpToken.mint.toString(), Tokens.usdcToken.mint.toString()],\n  tokens: {\n    [Tokens.uxpToken.mint.toString()]: {\n      ...Tokens.uxpToken,\n      addr: new PublicKey(\"BWL9ocg8VEBSfrS7zjUBUidE9T8p95J3p5wF6C4Vaqrs\"),\n    },\n    [Tokens.usdcToken.mint.toString()]: {\n      ...Tokens.usdcToken,\n      addr: new PublicKey(\"GQC4fM5E6dr9MsXvtMzAR4Z8iCduhyFvYCLdMAAHGCM2\"),\n    },\n  },\n  curveType: CurveType.ConstantProduct,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(25, 10000),\n    ownerFee: Percentage.fromFraction(5, 10000),\n  },\n});\n\nexport const btcUsdcPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"2dwHmCoAGxCXvTbLTMjqAhvEFAHWUt9kZaroJJJdmoD4\"),\n  nonce: 253,\n  authority: new PublicKey(\"BwJ1vMtJiBy7dJaVToR1KUwVbBsGUTNN4QdKVSf8EEh1\"),\n  poolTokenMint: new PublicKey(\"J3kvcay3N16FBdawgnqoJ9v9p6XCvyCLE2Z9F5RLvGkj\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"HR7c67SkeLvCpHrVSu7MiiAERQh6iD1NrCJsj3kWiZnK\"),\n  tokenIds: [Tokens.btcToken.mint.toString(), Tokens.usdcToken.mint.toString()],\n  tokens: {\n    [Tokens.btcToken.mint.toString()]: {\n      ...Tokens.btcToken,\n      addr: new PublicKey(\"D3Wv78j9STkfJx3vhzoCzpMZ4RqCg8oaTNGzi1rZpdJg\"),\n    },\n    [Tokens.usdcToken.mint.toString()]: {\n      ...Tokens.usdcToken,\n      addr: new PublicKey(\"HMFLg2GtbWSSEe92Vuf2LQdUpCacGj2m2PwvMqzwQFNi\"),\n    },\n  },\n  curveType: CurveType.ConstantProduct,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(25, 10000),\n    ownerFee: Percentage.fromFraction(5, 10000),\n  },\n});\n\nexport const mndeUsdcPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"2yNwARmTmc3NzYMETCZQjAE5GGCPgviH6hiBsxaeikTK\"),\n  nonce: 253,\n  authority: new PublicKey(\"2ZzxuHxvPQtPU48Tffs8LD8sy17rgjBRQviRVxQ54fR6\"),\n  poolTokenMint: new PublicKey(\"12Uj74zgUUoBe4yeackwQ4qYtFMr9fk1xL6q5Nha6t2N\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"6AvWhLSuAqTWUdpo4jF84s4gfgAjbRQv5vLf7mYNCgd8\"),\n  tokenIds: [Tokens.mndeToken.mint.toString(), Tokens.usdcToken.mint.toString()],\n  tokens: {\n    [Tokens.mndeToken.mint.toString()]: {\n      ...Tokens.mndeToken,\n      addr: new PublicKey(\"AfF3SJFpyfU7iw9KtrwPyi6corJbyiC24JyVis7oxNVr\"),\n    },\n    [Tokens.usdcToken.mint.toString()]: {\n      ...Tokens.usdcToken,\n      addr: new PublicKey(\"FT4GQqs5sEvqhsWm845VF1vmHjdQkrB1jdsGPJbzB4oB\"),\n    },\n  },\n  curveType: CurveType.ConstantProduct,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(25, 10000),\n    ownerFee: Percentage.fromFraction(5, 10000),\n  },\n});\n\nexport const chicksUsdcPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"3abwmh8LDUsXMoDgNzZLq9QvKqKbhYND9N5aXh9yz7Dm\"),\n  nonce: 255,\n  authority: new PublicKey(\"HmNqp8F5Bp16dUTUihhL3TnyQxfzJ2GtTo9VEQx6bjB3\"),\n  poolTokenMint: new PublicKey(\"71CBZeJ4tw38L9pSPoCz4fRsuWE64Fipyzotte7haoCS\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"4zRJg9Kod7bd9tR3mxQhxzAQUPqQmUGJbmrWpQ4XDGT4\"),\n  tokenIds: [Tokens.chicksToken.mint.toString(), Tokens.usdcToken.mint.toString()],\n  tokens: {\n    [Tokens.chicksToken.mint.toString()]: {\n      ...Tokens.chicksToken,\n      addr: new PublicKey(\"84Ha1dXH8YAWXt3AC15RstnUCoWT3hg24tUGD1GtqGSm\"),\n    },\n    [Tokens.usdcToken.mint.toString()]: {\n      ...Tokens.usdcToken,\n      addr: new PublicKey(\"GkonWV6urvzsnKwVmPXe89fTX1zBfv4xrAhx9JnxV9Nq\"),\n    },\n  },\n  curveType: CurveType.ConstantProduct,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(25, 10000),\n    ownerFee: Percentage.fromFraction(5, 10000),\n  },\n});\n\nexport const onesolUsdcPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"CKKuMECwW75NBNRKtYJz1svCycRHt4KpXmcNnHXiHY73\"),\n  nonce: 253,\n  authority: new PublicKey(\"2TSCMpjN6ToLJy8baiFTc9UdB1PuHFsr24mos98Zp57v\"),\n  poolTokenMint: new PublicKey(\"6MF5CHWAj5mS7FhpxiKz37CzR2eYTu236XpBKKMXCrGg\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"9Rw29Mvx6b2RMAbdZoqs3gBRMcfYjBYRyiegNZoaYrWS\"),\n  tokenIds: [Tokens.onesolToken.mint.toString(), Tokens.usdcToken.mint.toString()],\n  tokens: {\n    [Tokens.onesolToken.mint.toString()]: {\n      ...Tokens.onesolToken,\n      addr: new PublicKey(\"2meoejmWQno2q6cbFMRytu7UMqMA8FTx651feSUHfTtC\"),\n    },\n    [Tokens.usdcToken.mint.toString()]: {\n      ...Tokens.usdcToken,\n      addr: new PublicKey(\"n5CtiZDLm2xNxVU1o4KC98dNGiFb1sbuCazDihahbMy\"),\n    },\n  },\n  curveType: CurveType.ConstantProduct,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(25, 10000),\n    ownerFee: Percentage.fromFraction(5, 10000),\n  },\n});\n\nexport const wmpUsdcPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"Cqy7PRGRx2QeTLZM3QmLGN68uHxEd9euj2eEeeZWnuvQ\"),\n  nonce: 255,\n  authority: new PublicKey(\"9vkbzRnjd9qpmunBUHqS8Fnt9DUEX5akJPm9movtfNxZ\"),\n  poolTokenMint: new PublicKey(\"HDgxKmiA8Pv82fNguhVeMkZqQkos2YksFPoP1KttWxX8\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"Bfr66xExhYijJzc732abX7znkFnj4v3otQDFbHaz7RkK\"),\n  tokenIds: [Tokens.wmpToken.mint.toString(), Tokens.usdcToken.mint.toString()],\n  tokens: {\n    [Tokens.wmpToken.mint.toString()]: {\n      ...Tokens.wmpToken,\n      addr: new PublicKey(\"3WubbpV7W82H6FERR62Bd8Z4fXFGaihtBNqnT1zkGr6f\"),\n    },\n    [Tokens.usdcToken.mint.toString()]: {\n      ...Tokens.usdcToken,\n      addr: new PublicKey(\"8MxcExnMniQEDs361cZseukEau9Rmd3CmrCXxasmNM1x\"),\n    },\n  },\n  curveType: CurveType.ConstantProduct,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(25, 10000),\n    ownerFee: Percentage.fromFraction(5, 10000),\n  },\n});\n\nexport const unqUsdcPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"3a3G1RjJe826EB1toShvPPWnyi2jXR53HP4vYb936kwj\"),\n  nonce: 254,\n  authority: new PublicKey(\"94V4mU6bWzU86tdzFbBCjkFngqXvf5MwXKhVLgJA83vL\"),\n  poolTokenMint: new PublicKey(\"2VuGzaMrDnDyZfYvDwSXk38s7M2wpud7LDY3dGA1J9sy\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"9iHGnquXmnJnSATN4ijGj7Niz4StxXEMC8KqB1pT51uW\"),\n  tokenIds: [Tokens.unqToken.mint.toString(), Tokens.usdcToken.mint.toString()],\n  tokens: {\n    [Tokens.unqToken.mint.toString()]: {\n      ...Tokens.unqToken,\n      addr: new PublicKey(\"Hf4gYkKNAPhm2RYrXrcP9YVL44VbYnsRsyUuBnZGzqPr\"),\n    },\n    [Tokens.usdcToken.mint.toString()]: {\n      ...Tokens.usdcToken,\n      addr: new PublicKey(\"BZ9oTLGDL6tsvoooQ9qEBSM3sYKJB1v2e9b4en5ix1Mp\"),\n    },\n  },\n  curveType: CurveType.ConstantProduct,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(25, 10000),\n    ownerFee: Percentage.fromFraction(5, 10000),\n  },\n});\n\nexport const basisUsdcPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"9wb29L97MmPp7Nw8oaqiAGkXceETGNQurhySiUNLv5wh\"),\n  nonce: 251,\n  authority: new PublicKey(\"786ezhfHqkmJUBmjrWYGpzPnVWR8zhy2V71qNws7D89z\"),\n  poolTokenMint: new PublicKey(\"GoaAiajubRgeCFEz9L6mLnSmT2QFegoJDH5tpLfivpj\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"4FjEd37W9FExXq85nLeuNWuhUaTwkFdnqewt3E3qoYAh\"),\n  tokenIds: [Tokens.basisToken.mint.toString(), Tokens.usdcToken.mint.toString()],\n  tokens: {\n    [Tokens.basisToken.mint.toString()]: {\n      ...Tokens.basisToken,\n      addr: new PublicKey(\"7QM71YvJm86bN9RLFoEvyDX8dBgLh2xjnabcHf4d1Q1y\"),\n    },\n    [Tokens.usdcToken.mint.toString()]: {\n      ...Tokens.usdcToken,\n      addr: new PublicKey(\"AmP22dYrTsG2LrkQX9cLg79jUrzDJcmWqGEWmM3Mdn46\"),\n    },\n  },\n  curveType: CurveType.ConstantProduct,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(25, 10000),\n    ownerFee: Percentage.fromFraction(5, 10000),\n  },\n});\n\nexport const gstUsdcPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"87E4KtN7F4LivKhjqXaoQAvS3a8HnM4DnMUrbMrkVvXY\"),\n  nonce: 244,\n  authority: new PublicKey(\"CwwMfXPXfRT5H5JUatpBctASRGhKW2SqLWWGU3eX5Zgo\"),\n  poolTokenMint: new PublicKey(\"E6FUnQHGHJVJg7oExVr5Moeaj1QpdpZQF5odYjHXWPZb\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"BynpQprCNjcY2KHeffDKzquyKWvJxikty3donrMT4ZPU\"),\n  tokenIds: [Tokens.gstToken.mint.toString(), Tokens.usdcToken.mint.toString()],\n  tokens: {\n    [Tokens.gstToken.mint.toString()]: {\n      ...Tokens.gstToken,\n      addr: new PublicKey(\"9r39vqrJuubgafaJ5aQyDWYAUQVJeyZyveBXeRqp7xev\"),\n    },\n    [Tokens.usdcToken.mint.toString()]: {\n      ...Tokens.usdcToken,\n      addr: new PublicKey(\"7LFnr5YgUyEgPMCLGNQ9N7wM5MFRNqCuRawLZTe5q4c7\"),\n    },\n  },\n  curveType: CurveType.ConstantProduct,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(25, 10000),\n    ownerFee: Percentage.fromFraction(5, 10000),\n  },\n});\n\nexport const meanUsdcPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"4jhCSYuGkLCiB8uvCaS34QCtPycBjayxEk27YCartTuW\"),\n  nonce: 255,\n  authority: new PublicKey(\"Fawkj9g4s1M26uZDF6QczEviyib2Ge3FaPdCG9TJLYcm\"),\n  poolTokenMint: new PublicKey(\"F5BTnwuMA6rxftTdbZ33VWKr2wrr6DuQHnd4guKmPSYQ\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"EqhWQbxsa36o7YSrCNvJTV1yoTRTWxCiLKcG9pzafprc\"),\n  tokenIds: [Tokens.meanToken.mint.toString(), Tokens.usdcToken.mint.toString()],\n  tokens: {\n    [Tokens.meanToken.mint.toString()]: {\n      ...Tokens.meanToken,\n      addr: new PublicKey(\"5KSCuA99i7PSF6KvvbvV5hDveGse7isqF6e7tFXPeMyn\"),\n    },\n    [Tokens.usdcToken.mint.toString()]: {\n      ...Tokens.usdcToken,\n      addr: new PublicKey(\"13PtHDhQzswoFWg8Gr4yVrTmUEW4CWxeKFkLVERCmypB\"),\n    },\n  },\n  curveType: CurveType.ConstantProduct,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(25, 10000),\n    ownerFee: Percentage.fromFraction(5, 10000),\n  },\n});\n\nexport const aartUsdcPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"8wVYTnchy3WbhJvKn4NhTbgtVm6Bfd6yvxR33DsSftse\"),\n  nonce: 255,\n  authority: new PublicKey(\"GAWAD19LVUgKmkWWfB4Xg92KMXuVR7M1gUpQPiFAAtxR\"),\n  poolTokenMint: new PublicKey(\"HCtyJzFUtYecXrA52s4Y9atq4J1fhT3cYsTX17XVSFag\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"FmZkn9xAwpZULmF6rSrcz1pHiqqNnAXCUFWs1z5t9LSX\"),\n  tokenIds: [Tokens.aartToken.mint.toString(), Tokens.usdcToken.mint.toString()],\n  tokens: {\n    [Tokens.aartToken.mint.toString()]: {\n      ...Tokens.aartToken,\n      addr: new PublicKey(\"Hy3FDHpTfzqtooUARjgUvYuRcFnjGH5WLftu77DyEnKJ\"),\n    },\n    [Tokens.usdcToken.mint.toString()]: {\n      ...Tokens.usdcToken,\n      addr: new PublicKey(\"J4Cd9u1WuY1WnCScENuRyL2jGh7qD6vpRsWJG6ZsC5z9\"),\n    },\n  },\n  curveType: CurveType.ConstantProduct,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(25, 10000),\n    ownerFee: Percentage.fromFraction(5, 10000),\n  },\n});\n\nexport const shdwUsdcPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"25bQ6UzZpgFgnU7MqZdqM9Axi6oJunytRL2LgXruDWZB\"),\n  nonce: 254,\n  authority: new PublicKey(\"BjnfpyU3Verx99dKcEJZpL1AqLTPrkAUcd44LpXcXVvn\"),\n  poolTokenMint: new PublicKey(\"DJqqvzSuPaWThfzwMjXx7H2ZmHDdwxza6NtFudtuXcpc\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"9wmHbXURZ4zTPSj1KqoRSCdBRGUF7jrURzf7BB39cxM4\"),\n  tokenIds: [Tokens.shdwToken.mint.toString(), Tokens.usdcToken.mint.toString()],\n  tokens: {\n    [Tokens.shdwToken.mint.toString()]: {\n      ...Tokens.shdwToken,\n      addr: new PublicKey(\"8ZVaNyNZQkcMzF7esuZoRgRo7Rc9eKEN18v4zw7Ng8JZ\"),\n    },\n    [Tokens.usdcToken.mint.toString()]: {\n      ...Tokens.usdcToken,\n      addr: new PublicKey(\"H8A2xivBXr1RMCYmuhJ7dyEXJqPxaGDyQaaim8WucU7c\"),\n    },\n  },\n  curveType: CurveType.ConstantProduct,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(25, 10000),\n    ownerFee: Percentage.fromFraction(5, 10000),\n  },\n});\n\nexport const shdwSolPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"E3fxkJGNNAWf5xXDfMdq5qofBVkQtLKxkP7gG6Up21Ts\"),\n  nonce: 253,\n  authority: new PublicKey(\"ByC5idkRdo2XdU5U6tSoSQmfq6spztUYMaSs2rrcJRPh\"),\n  poolTokenMint: new PublicKey(\"2ws7g3LBPdctfKn42Di9qxzQtUJ8ZL1aEAX2rGEQMNqh\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"G9HR4sFJufdUovMGn4qc97r7fhgJCkTDnn4BT2wPWYar\"),\n  tokenIds: [Tokens.shdwToken.mint.toString(), Tokens.solToken.mint.toString()],\n  tokens: {\n    [Tokens.shdwToken.mint.toString()]: {\n      ...Tokens.shdwToken,\n      addr: new PublicKey(\"9LQEB2SZQJxtLQStgXVNzgWU3LVkc4szK22iDHcSr4K9\"),\n    },\n    [Tokens.solToken.mint.toString()]: {\n      ...Tokens.solToken,\n      addr: new PublicKey(\"F2qtMkEy3L78wpw64bckvRx5M4w12Zi7bimuPBnYzto1\"),\n    },\n  },\n  curveType: CurveType.ConstantProduct,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(25, 10000),\n    ownerFee: Percentage.fromFraction(5, 10000),\n  },\n});\n\nexport const scyUsdcPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"Ci2T7KY8xXc3NmSr4JmbhZ2V7SfjZ7Fn2q6VxJsDD1Dg\"),\n  nonce: 255,\n  authority: new PublicKey(\"fmoBkLez7cSLnG1XNn6PTf6UH5Vq2hSAPrZ1NbvRppL\"),\n  poolTokenMint: new PublicKey(\"99ZHUQsgxL7K6PHrGNi1gSwawwPr7UA5fbWrYoHQ6qhX\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"HHhxxFKyVt4xrYnJqAiywHCzuoCu45S4itkLKvop2fAe\"),\n  tokenIds: [Tokens.scyToken.mint.toString(), Tokens.usdcToken.mint.toString()],\n  tokens: {\n    [Tokens.scyToken.mint.toString()]: {\n      ...Tokens.scyToken,\n      addr: new PublicKey(\"Hfa6kPY27pgnbXHMd1bKBaYMBoF8RRxUm2AmWHBWudcn\"),\n    },\n    [Tokens.usdcToken.mint.toString()]: {\n      ...Tokens.usdcToken,\n      addr: new PublicKey(\"CYKEhyhe9JZqLzaM29o8urMu8riDNBE6ycZP6bLQtkbF\"),\n    },\n  },\n  curveType: CurveType.ConstantProduct,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(25, 10000),\n    ownerFee: Percentage.fromFraction(5, 10000),\n  },\n});\n\nexport const slcUsdcPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"ByfDbpLVNVQHzU6E5dmLE1kcAKWAYRr9LPSGcVxxSRFF\"),\n  nonce: 255,\n  authority: new PublicKey(\"7G6i4eQxiJvXg7hPn5kMrso8AHQNsdfPZZdJM3NNJuYz\"),\n  poolTokenMint: new PublicKey(\"E5kSBqTDxFLbLNQaVVtPtnhEYVLMCK2fVSEKoMKL98qR\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"CtBP4cFDLzm3KQCQRKXwwsMgYG9f6hbwuUswUZBzYvvY\"),\n  tokenIds: [Tokens.slcToken.mint.toString(), Tokens.usdcToken.mint.toString()],\n  tokens: {\n    [Tokens.slcToken.mint.toString()]: {\n      ...Tokens.slcToken,\n      addr: new PublicKey(\"EnvNSVK9JRQ5jmsz7nvbhYmR3MHSeMvB8Mf1e4VwoyRe\"),\n    },\n    [Tokens.usdcToken.mint.toString()]: {\n      ...Tokens.usdcToken,\n      addr: new PublicKey(\"CHuUSo3EMCqtGWvUGRj4crmDzV5YKdYvqrhHSEitAP8V\"),\n    },\n  },\n  curveType: CurveType.ConstantProduct,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(25, 10000),\n    ownerFee: Percentage.fromFraction(5, 10000),\n  },\n});\n\nexport const wustSolPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"M3DfDvKZ9WEWYWcBuguvt3rYSbKqj66PgjW69DoEq9C\"),\n  nonce: 249,\n  authority: new PublicKey(\"5mYWcs7n1JqDVeYby897eEUNeEJsp2PNMg2Y2VMD5Jrf\"),\n  poolTokenMint: new PublicKey(\"6c13xsmyk7UaHUWZ2rm1MM3ZdrQRSBkQ9waaG25ridVs\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"BSoUBwfNgXSHX8QoZUnjfu8wWKyBmjNyDXwsgW3UEff9\"),\n  tokenIds: [Tokens.wustToken.mint.toString(), Tokens.solToken.mint.toString()],\n  tokens: {\n    [Tokens.wustToken.mint.toString()]: {\n      ...Tokens.wustToken,\n      addr: new PublicKey(\"3T7UL3ixF9S8XPjW7SEr9yYY8A5YWTDc7omgjKD2ULhb\"),\n    },\n    [Tokens.solToken.mint.toString()]: {\n      ...Tokens.solToken,\n      addr: new PublicKey(\"91NfC8SunFRWF6BqEKnbnJCursfiDB2U3H6GGCqsFVxc\"),\n    },\n  },\n  curveType: CurveType.ConstantProduct,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(25, 10000),\n    ownerFee: Percentage.fromFraction(5, 10000),\n  },\n});\n\nexport const wustUsdcPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"Awp1hdAi5xi3CTDsXxiZsygSacpZV2a3L8rNNvpNRVn4\"),\n  nonce: 255,\n  authority: new PublicKey(\"EtdLVaBnKzfKPqp8E2swCyQcjp8XjoT5FE72kqGxWCkq\"),\n  poolTokenMint: new PublicKey(\"J1KfRtP5y2warpD7LdJhfBLPKoWwSqYuovdArSv1mpQ7\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"2onwniiH5fapr1EPsCDBnY92HGzoQpiHnNPWTmxngKbd\"),\n  tokenIds: [Tokens.wustToken.mint.toString(), Tokens.usdcToken.mint.toString()],\n  tokens: {\n    [Tokens.wustToken.mint.toString()]: {\n      ...Tokens.wustToken,\n      addr: new PublicKey(\"GZWYWkbZ63teAW3tUaThq7k4NMp67TqwF94TqAMRSPx4\"),\n    },\n    [Tokens.usdcToken.mint.toString()]: {\n      ...Tokens.usdcToken,\n      addr: new PublicKey(\"DMuVdnkRsqP7v8exbrdHNn7WoViNLjf4PVanEQtwgFZ6\"),\n    },\n  },\n  curveType: CurveType.Stable,\n  amp: 100,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(6, 10000),\n    ownerFee: Percentage.fromFraction(1, 10000),\n  },\n});\n\nexport const msolWustPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"BpiM8jnpbha2TnTKp4AogyLYYA99Ks73GfDGueUWLakT\"),\n  nonce: 255,\n  authority: new PublicKey(\"DVSsnD9fid2o6nzqbET1LctDmNMHBthf8LS1u9ZPyebr\"),\n  poolTokenMint: new PublicKey(\"68YVjgPnTUPcBqZyghqvD2WPNsrLKsjYTmBKJzHRr4qd\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"ETX7csSJYTMYFwLAC6oPDKXnYWdpkzsNXyG2JuxVV4tJ\"),\n  tokenIds: [Tokens.msolToken.mint.toString(), Tokens.wustToken.mint.toString()],\n  tokens: {\n    [Tokens.msolToken.mint.toString()]: {\n      ...Tokens.msolToken,\n      addr: new PublicKey(\"8SuMMuDbSGVpWjp3fW5kzpMWuMhxcdQwGgLJiviP25UD\"),\n    },\n    [Tokens.wustToken.mint.toString()]: {\n      ...Tokens.wustToken,\n      addr: new PublicKey(\"FL5QM8K2AYrqN52ssqr9GA3goYGkUiXQQxXfFFc9xD4f\"),\n    },\n  },\n  curveType: CurveType.ConstantProduct,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(25, 10000),\n    ownerFee: Percentage.fromFraction(5, 10000),\n  },\n});\n\nexport const wlunaWustPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"C9NcP1mx51DLZVX8VtAk2Ldip5v6xCxZGmhx7Bxtqnz8\"),\n  nonce: 255,\n  authority: new PublicKey(\"CAsASHduARHrb6pFFYrD9vcqXWhEEj7Z6AatKYVG3dbA\"),\n  poolTokenMint: new PublicKey(\"8Mh7drLbt3jFJYwp948XyvQscGLaLkChNcaH5wwaAoWA\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"J43pVTNEB3AQEeXopMWTEozjPeMHBkwETXQWr4YZDzn3\"),\n  tokenIds: [Tokens.wlunaToken.mint.toString(), Tokens.wustToken.mint.toString()],\n  tokens: {\n    [Tokens.wlunaToken.mint.toString()]: {\n      ...Tokens.wlunaToken,\n      addr: new PublicKey(\"97aVH3M9cjZmfA5HVu9iJ9AnE41inBG1Sxqj8UQhR2jo\"),\n    },\n    [Tokens.wustToken.mint.toString()]: {\n      ...Tokens.wustToken,\n      addr: new PublicKey(\"Av3RXECkvPCehJTJNbkWmUj3LmP63c4btzMYjbcYLkpm\"),\n    },\n  },\n  curveType: CurveType.ConstantProduct,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(25, 10000),\n    ownerFee: Percentage.fromFraction(5, 10000),\n  },\n});\n\nexport const stsolWustPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"9F3J6RY7PTkDb3SUUpg725uXyCceBGCpZrtmYGJwgMwF\"),\n  nonce: 253,\n  authority: new PublicKey(\"wJydc21tAMxYDif8uvy5rWNGWDFNZnPPmqCvegyZRod\"),\n  poolTokenMint: new PublicKey(\"HTZd53fYwYQRyAjiaPsZy9Gf41gobFdqkF4oKe3XLi95\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"5rCbmppxMBHwBjCkLUP6fireQ12cL8LRa26QRUimoxN6\"),\n  tokenIds: [Tokens.stsolToken.mint.toString(), Tokens.wustToken.mint.toString()],\n  tokens: {\n    [Tokens.stsolToken.mint.toString()]: {\n      ...Tokens.stsolToken,\n      addr: new PublicKey(\"GFso9SAGakm8ZFa3rmuonuerbcQ8ZbACNZN7idkKR5nw\"),\n    },\n    [Tokens.wustToken.mint.toString()]: {\n      ...Tokens.wustToken,\n      addr: new PublicKey(\"EZ7pJskN2a4pDknrdkLzGDHpzjbfgdBj3Tt594K9HZbL\"),\n    },\n  },\n  curveType: CurveType.ConstantProduct,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(25, 10000),\n    ownerFee: Percentage.fromFraction(5, 10000),\n  },\n});\n\nexport const jsolUsdcPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"5pki97N9a6yEB3YQL3y8gvf4nSWnvEL9V6yms8Amnd9Z\"),\n  nonce: 255,\n  authority: new PublicKey(\"BqBc47X3wgrVzi8zPUMUvsaKWsj6JN4wKJ4ArGRKn2QG\"),\n  poolTokenMint: new PublicKey(\"AzEoVuNJyo9ByoLRZ5t6vav2Zg24vULNVJM41PgCKUqR\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"9Qkje8PCpu4LrGwpudcN3sunWLVP6ZP61zNupaPKNRnr\"),\n  tokenIds: [Tokens.jsolToken.mint.toString(), Tokens.usdcToken.mint.toString()],\n  tokens: {\n    [Tokens.jsolToken.mint.toString()]: {\n      ...Tokens.jsolToken,\n      addr: new PublicKey(\"D4Am1hMwzQqULAvmEjwJLDGwoyTgakRXrn7ayWHMhiB7\"),\n    },\n    [Tokens.usdcToken.mint.toString()]: {\n      ...Tokens.usdcToken,\n      addr: new PublicKey(\"GznbQjBy2KKYYVLaJ6bM59GgekRsKT5QRi2NFMYNRcmf\"),\n    },\n  },\n  curveType: CurveType.ConstantProduct,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(25, 10000),\n    ownerFee: Percentage.fromFraction(5, 10000),\n  },\n});\n\nexport const daosolUsdcPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"6TwZgp6ABN7pbXbxvaZriHbbxeSAcEgxhKYnqGwphiRD\"),\n  nonce: 255,\n  authority: new PublicKey(\"5jFXPUF5mN83WZkT5MJQFpFcZrP5zPZy1ZZwD29Le2Kh\"),\n  poolTokenMint: new PublicKey(\"CCyDxjdW3G7hPTthTMPTZ4bnhFF19XG6rx2fNiKeRQww\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"JCnNHppa7kp9bRc3zfvfnwGqoVR8Li6sJT9pMztgwE9j\"),\n  tokenIds: [Tokens.daosolToken.mint.toString(), Tokens.usdcToken.mint.toString()],\n  tokens: {\n    [Tokens.daosolToken.mint.toString()]: {\n      ...Tokens.daosolToken,\n      addr: new PublicKey(\"EZf2tVoxVgGaBz6ir5iBppxiqFSqBUob2dNpiEuXMYiJ\"),\n    },\n    [Tokens.usdcToken.mint.toString()]: {\n      ...Tokens.usdcToken,\n      addr: new PublicKey(\"3v29nJzrWebKv3DefSY5WVq4kgHWykF7fdYVaCpohwks\"),\n    },\n  },\n  curveType: CurveType.ConstantProduct,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(25, 10000),\n    ownerFee: Percentage.fromFraction(5, 10000),\n  },\n});\n\nexport const orcaUsdtPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"4YnaUPeZ2fYqpoLrCyprSai8LaDWZxmgb6cGfNHJmyP6\"),\n  nonce: 255,\n  authority: new PublicKey(\"35d4qNQiMtNV9Yb2kqk4tSd5M1yEqozWSQaYtjGHCA7b\"),\n  poolTokenMint: new PublicKey(\"Gx4PoxenyQwhGGnKagAT35iVg4im1iKhJxDWqVhgu6tk\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"ABuGLBFTwcbLsqNsiCpZsFuNmHYwHEzfQR9SNpr4y3bP\"),\n  tokenIds: [Tokens.orcaToken.mint.toString(), Tokens.usdtToken.mint.toString()],\n  tokens: {\n    [Tokens.orcaToken.mint.toString()]: {\n      ...Tokens.orcaToken,\n      addr: new PublicKey(\"D91z1TewbTQ3AVc9RThtTjiMVRqr94CP73XrsbHEhej8\"),\n    },\n    [Tokens.usdtToken.mint.toString()]: {\n      ...Tokens.usdtToken,\n      addr: new PublicKey(\"Fy4AwXwAwitVdFwgWBdYkqRVv8QjigU86ssL6rqzgp8S\"),\n    },\n  },\n  curveType: CurveType.ConstantProduct,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(25, 10000),\n    ownerFee: Percentage.fromFraction(5, 10000),\n  },\n});\n\nexport const orcaWhethPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"D67u6UEuFp9Q4Fu2gnu5thxBoVj2eRgDDDirdWsMVsgm\"),\n  nonce: 255,\n  authority: new PublicKey(\"4kwchkCnCaZPkBdnk85j9bJ9F1P883rwjbvsXGV7H5rM\"),\n  poolTokenMint: new PublicKey(\"GsfyYHkSgC3Ta6aWR9MjB2sxoBrkGGeR2tAwXbpphf3\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"GdHXLai5M8FKedXUsECSzrV72nb1RTCCooFyTWT8WYmT\"),\n  tokenIds: [Tokens.orcaToken.mint.toString(), Tokens.whethToken.mint.toString()],\n  tokens: {\n    [Tokens.orcaToken.mint.toString()]: {\n      ...Tokens.orcaToken,\n      addr: new PublicKey(\"EMxDw1NjdddQjPk9gCUN4iDMy8HJ5siKYMVjGbjuUCrh\"),\n    },\n    [Tokens.whethToken.mint.toString()]: {\n      ...Tokens.whethToken,\n      addr: new PublicKey(\"DQyhcuEvE1K9DSd51agcNLg4CDrgthnKMVhU7q6R55LV\"),\n    },\n  },\n  curveType: CurveType.ConstantProduct,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(25, 10000),\n    ownerFee: Percentage.fromFraction(5, 10000),\n  },\n});\n\nexport const geneUsdcPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"PQ1sBpkZYTkXo2aDRqWU2sEJGUj7yaeJ3GePoCRYU4V\"),\n  nonce: 253,\n  authority: new PublicKey(\"DvbTrW3tUfdgBDU5TFxfXjBpGUYivQP8MiSA5YmXHZGF\"),\n  poolTokenMint: new PublicKey(\"7cuu94swKL5PtFQohKMAzyd1mjj65rgMW3GzLY31HCnK\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"AsR18ERwBhmTkjNpav9NDWdeUzvmDH2TXCwfy2kinat\"),\n  tokenIds: [Tokens.geneToken.mint.toString(), Tokens.usdcToken.mint.toString()],\n  tokens: {\n    [Tokens.geneToken.mint.toString()]: {\n      ...Tokens.geneToken,\n      addr: new PublicKey(\"LiM9qAQi7ud4fCkAcGcJJzmY47od7vzzeqKBejATbJm\"),\n    },\n    [Tokens.usdcToken.mint.toString()]: {\n      ...Tokens.usdcToken,\n      addr: new PublicKey(\"APQyCmCvyVFreK2JjFHinmja24jTHdwm4umNJo67Nu2v\"),\n    },\n  },\n  curveType: CurveType.ConstantProduct,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(25, 10000),\n    ownerFee: Percentage.fromFraction(5, 10000),\n  },\n});\n\nexport const cmfiUsdcPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"AaJERSYSMtWxhRqZzBZ9JFr1gJkfSPgPEd3mBDT2AknQ\"),\n  nonce: 255,\n  authority: new PublicKey(\"ERMNbmKrBKk3e8ZBbVWNUTkrqamZYxnRFXvgsPUSLT5j\"),\n  poolTokenMint: new PublicKey(\"85krvT9DxdYgoFLQDHTAGdvtNuLdAsc4xE5FkVLpN2aR\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"3HXU5ABkghqJ3iMEGWsGe88kvZtiEyDJ24ihgFTytRNx\"),\n  tokenIds: [Tokens.cmfiToken.mint.toString(), Tokens.usdcToken.mint.toString()],\n  tokens: {\n    [Tokens.cmfiToken.mint.toString()]: {\n      ...Tokens.cmfiToken,\n      addr: new PublicKey(\"HEqNExFgmyZ4Es53pL2bfBi5pKcZwGzbvwm1UknYLD9s\"),\n    },\n    [Tokens.usdcToken.mint.toString()]: {\n      ...Tokens.usdcToken,\n      addr: new PublicKey(\"GbK7B7ZGQNZYrEhADC8aV5HdPhYgMZ35f6c8Decie224\"),\n    },\n  },\n  curveType: CurveType.ConstantProduct,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(25, 10000),\n    ownerFee: Percentage.fromFraction(5, 10000),\n  },\n});\n\nexport const celoUsdcPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"H2bkwBwizcotpWHbruYFKXfHvh29hhoZn52qHq2YZumW\"),\n  nonce: 254,\n  authority: new PublicKey(\"E812K73QyqSsGBeU3MLodqVs3gCKJjka4p4gP34hXtns\"),\n  poolTokenMint: new PublicKey(\"HVLyX8mD8YvKgZJ4oB6rXJiCYMLpHKwB6iCiCjE1XwdT\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"35HW4HcFDzVnVsxBhPKptYfwX3HyJWEosv5T9sdBSu8t\"),\n  tokenIds: [Tokens.celoToken.mint.toString(), Tokens.usdcToken.mint.toString()],\n  tokens: {\n    [Tokens.celoToken.mint.toString()]: {\n      ...Tokens.celoToken,\n      addr: new PublicKey(\"H6tFXr3BnF3r21Sv2ykLSbiE7wLxWpDcXroyxBReoXou\"),\n    },\n    [Tokens.usdcToken.mint.toString()]: {\n      ...Tokens.usdcToken,\n      addr: new PublicKey(\"GnKnjXsmZKVhduVyLiR9Ngsxwo8spfxtruiPtqDqHLNJ\"),\n    },\n  },\n  curveType: CurveType.ConstantProduct,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(25, 10000),\n    ownerFee: Percentage.fromFraction(5, 10000),\n  },\n});\n\nexport const ftmUsdcPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"4RCU8SoBzvYysNaQBAFpQMmt7LPQgxbto9uiuRjAJPpq\"),\n  nonce: 255,\n  authority: new PublicKey(\"HC6aGC7RsgVGonWs1MVy5Qit5R5ruEXZmeywpFwSCmdY\"),\n  poolTokenMint: new PublicKey(\"Gpzd833qSmv3kXpQmxEaqkrZTXZaRjhNAoqhf61qAhTG\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"2cA9XLcSFJ9jgnYViJr5JtnhSpGNrPhebS4RaGm7DHmu\"),\n  tokenIds: [Tokens.ftmToken.mint.toString(), Tokens.usdcToken.mint.toString()],\n  tokens: {\n    [Tokens.ftmToken.mint.toString()]: {\n      ...Tokens.ftmToken,\n      addr: new PublicKey(\"EULHGNmuJWcRHm5Xen9CiG4uqVZoemLorLvAQ7vR9vCi\"),\n    },\n    [Tokens.usdcToken.mint.toString()]: {\n      ...Tokens.usdcToken,\n      addr: new PublicKey(\"71rJZyRkxxupdqZeLrNQnHjus11C1yEVwsrKgQax6TSx\"),\n    },\n  },\n  curveType: CurveType.ConstantProduct,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(25, 10000),\n    ownerFee: Percentage.fromFraction(5, 10000),\n  },\n});\n\nexport const btcOrcaPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"CqXRyZ23dFwdbMLGEQLhQQRJrzkFB3wBsuH92rp7d3yw\"),\n  nonce: 255,\n  authority: new PublicKey(\"Fixb6XBzoSRJ4iCkHNX3xbr61yWXUh6SYyu5Jweg36VF\"),\n  poolTokenMint: new PublicKey(\"DFpLFcQZqDKykyDePgip4r6MExVmBKWqTa12ezq6qxUY\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"47pxL1vidAiARAF45SoVnpqSet8EPckF9pB4d9zT1S3N\"),\n  tokenIds: [Tokens.btcToken.mint.toString(), Tokens.orcaToken.mint.toString()],\n  tokens: {\n    [Tokens.btcToken.mint.toString()]: {\n      ...Tokens.btcToken,\n      addr: new PublicKey(\"8dbqoSTALCCshdKXX8Nb6AskytydXtHLyPoqu9Nb2ig3\"),\n    },\n    [Tokens.orcaToken.mint.toString()]: {\n      ...Tokens.orcaToken,\n      addr: new PublicKey(\"7UAHjQQjYBrSKdtgbJK1SaUVgmBxcmMJKshvEiEhLheP\"),\n    },\n  },\n  curveType: CurveType.ConstantProduct,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(25, 10000),\n    ownerFee: Percentage.fromFraction(5, 10000),\n  },\n});\n\nexport const hbbUsdcPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"Fpwa7a1r7kjax1nW25TVP3uiQc7XH9dv9n9UXMJRSTEx\"),\n  nonce: 254,\n  authority: new PublicKey(\"9odZioXkQTCZERzQXbDTfirMfbP9FtKqsP9LvHgm6wJr\"),\n  poolTokenMint: new PublicKey(\"cL5WhffCYFRLM4We8VS2W684kM4pHyuvEDwp8Ddw48k\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"3nyqxtRPnYrwEHneWgbN1197aZoEaemnSNQ7rgJLv8hS\"),\n  tokenIds: [Tokens.hbbToken.mint.toString(), Tokens.usdcToken.mint.toString()],\n  tokens: {\n    [Tokens.hbbToken.mint.toString()]: {\n      ...Tokens.hbbToken,\n      addr: new PublicKey(\"2vq1vt98xBPUmvbTC5nH4GtsjJVeA64kwv6CZc7xSAf6\"),\n    },\n    [Tokens.usdcToken.mint.toString()]: {\n      ...Tokens.usdcToken,\n      addr: new PublicKey(\"B7f4A1Pp6RCjWYv5Lsrf4MecmZQDMekXh4MFQasCQuRB\"),\n    },\n  },\n  curveType: CurveType.ConstantProduct,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(25, 10000),\n    ownerFee: Percentage.fromFraction(5, 10000),\n  },\n});\n\nexport const hbbSolPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"2aCJ1VTwfvLej1PJJAmiVCzuLGtjQ5bEo9DYkbwwe1C6\"),\n  nonce: 255,\n  authority: new PublicKey(\"8GRweHBrpXfeYpmryfkvEsW3DmoJKGDQLpcVfeNUqn8x\"),\n  poolTokenMint: new PublicKey(\"FkKzu2HeMJZf4oHwoYPxLGVy3net5Jq8HAfnA5VqETgk\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"2Y1xXr1j6xg5r5Qz8LDqnU7N8T4GGu3Ju4AHGsfU2nXS\"),\n  tokenIds: [Tokens.hbbToken.mint.toString(), Tokens.solToken.mint.toString()],\n  tokens: {\n    [Tokens.hbbToken.mint.toString()]: {\n      ...Tokens.hbbToken,\n      addr: new PublicKey(\"5k1Nj2TvG51p7s2ambWpmX6FraiSchoYS1wJgVw5f9Af\"),\n    },\n    [Tokens.solToken.mint.toString()]: {\n      ...Tokens.solToken,\n      addr: new PublicKey(\"2s2vbHk4XzKQ9SQdPRyirY8JmBemhZ67EBx7xgF6tzq5\"),\n    },\n  },\n  curveType: CurveType.ConstantProduct,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(25, 10000),\n    ownerFee: Percentage.fromFraction(5, 10000),\n  },\n});\n\nexport const sbUsdcPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"GPxcR4ci8RbLh4bVPi88mKwTEDeVxEKs3nBkKayghuuL\"),\n  nonce: 255,\n  authority: new PublicKey(\"6poTLvmbRU9FAJAnM5RmXMRTVFf2xWRKooCkStZQJf6U\"),\n  poolTokenMint: new PublicKey(\"2Reqt4Sw9xNY8BoJ3EZLpFu5yVgNxFrbw8M3KiJpPn6o\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"EVRpMUxUGZGH15SB1hGhLzzz15XNopLZjSuTZSpcwMmt\"),\n  tokenIds: [Tokens.sbToken.mint.toString(), Tokens.usdcToken.mint.toString()],\n  tokens: {\n    [Tokens.sbToken.mint.toString()]: {\n      ...Tokens.sbToken,\n      addr: new PublicKey(\"EoV9ub5aojyBFdYGhPQPQ6cDeesgsENrNYGN6L8CB6Nh\"),\n    },\n    [Tokens.usdcToken.mint.toString()]: {\n      ...Tokens.usdcToken,\n      addr: new PublicKey(\"7kRmDjSorwKqqLAFupgGW8fEp6hywkt2bntw2gCrV5Sh\"),\n    },\n  },\n  curveType: CurveType.ConstantProduct,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(25, 10000),\n    ownerFee: Percentage.fromFraction(5, 10000),\n  },\n});\n\nexport const stsolUsdtPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"EacW6utfAJk6z5QCbyqjJHdTN2TH5UFu9K5dh3DmhsLV\"),\n  nonce: 254,\n  authority: new PublicKey(\"CUQbwmFXySWXpBgycGTTj3gQNY8AnjD4DJRjgLeG1bVK\"),\n  poolTokenMint: new PublicKey(\"4ni1nho89cDKAQ9ddbNQA9ieLYpzvJVmJpuogu5Ct5ur\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"H4VgN76Mri6ctLCkf6fnyfae9fCDC51nZVPa1oPjq1Da\"),\n  tokenIds: [Tokens.stsolToken.mint.toString(), Tokens.usdtToken.mint.toString()],\n  tokens: {\n    [Tokens.stsolToken.mint.toString()]: {\n      ...Tokens.stsolToken,\n      addr: new PublicKey(\"BAMiBNk9j6Z9LLdZzzGScHDFQas58uLqW4GGX4ndq7K6\"),\n    },\n    [Tokens.usdtToken.mint.toString()]: {\n      ...Tokens.usdtToken,\n      addr: new PublicKey(\"Ajf4bxNoKCyFVfV35sRTgGwZK1dfJJJVXgNFs7ncC5EF\"),\n    },\n  },\n  curveType: CurveType.ConstantProduct,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(25, 10000),\n    ownerFee: Percentage.fromFraction(5, 10000),\n  },\n});\n\nexport const seededUsdcPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"3fyCss3Y9ATNnTSsN7VCasEb4H5SpSuN7VEoJnNWZU3x\"),\n  nonce: 251,\n  authority: new PublicKey(\"89TxEkGNHFcniBm5pXo8Jq6s1ZaBUKCRqgYS3eAr3jJ7\"),\n  poolTokenMint: new PublicKey(\"H7gyTmNCDXkD8MGMqnxqoD8ANszjcju4tjT6ERZ5dakf\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"2ZTqrZTNumBMdyQm3cAiREHozzQp18KhEuGWiUVwJMRm\"),\n  tokenIds: [Tokens.seededToken.mint.toString(), Tokens.usdcToken.mint.toString()],\n  tokens: {\n    [Tokens.seededToken.mint.toString()]: {\n      ...Tokens.seededToken,\n      addr: new PublicKey(\"Dn9LiTqcRiyxipCqvTEyT3ZwbWtf69bUcHQLWG89jpJa\"),\n    },\n    [Tokens.usdcToken.mint.toString()]: {\n      ...Tokens.usdcToken,\n      addr: new PublicKey(\"Aq5xPmh3cZoyLN3KzVcAK8osAU7oAjo1k6qdw6gd5ovi\"),\n    },\n  },\n  curveType: CurveType.ConstantProduct,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(25, 10000),\n    ownerFee: Percentage.fromFraction(5, 10000),\n  },\n});\n\nexport const audioUsdcPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"2arG3AznFJbLknAQUqk44PgeABZDHpBfcRsPmPWjjBPY\"),\n  nonce: 254,\n  authority: new PublicKey(\"ETCzw3Vp2n4aas7rFtxb554h67JPeyDBr7DKcHUgSAxp\"),\n  poolTokenMint: new PublicKey(\"3hksYA17VxgiKSeihjnZkBbjc2CTbEBfvDCYgQhojTo5\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"H1Rcj6jAeV9v5QsJTo957tcWgYzve4PZEuSHGNmX1UFv\"),\n  tokenIds: [Tokens.audioToken.mint.toString(), Tokens.usdcToken.mint.toString()],\n  tokens: {\n    [Tokens.audioToken.mint.toString()]: {\n      ...Tokens.audioToken,\n      addr: new PublicKey(\"FfpKRggDra1uSskyzAm6f4EXFhxw6ij8BkDwiWTs126x\"),\n    },\n    [Tokens.usdcToken.mint.toString()]: {\n      ...Tokens.usdcToken,\n      addr: new PublicKey(\"ACBf9ksELg2buAFnDTJL9WnT5kZRcFN1Bvarox9JZVbq\"),\n    },\n  },\n  curveType: CurveType.ConstantProduct,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(25, 10000),\n    ownerFee: Percentage.fromFraction(5, 10000),\n  },\n});\n\nexport const mmaUsdcPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"3HJ9QwRNsdHj3xaTvrzYyvvsY1gd23N8qGiSHaytKLLB\"),\n  nonce: 254,\n  authority: new PublicKey(\"58KyKR1fHXP2ewDC93TdRxPZ7W8FNYkLc53VH9XP32hD\"),\n  poolTokenMint: new PublicKey(\"AaZRnJAnDyJyPD9uPJpJ8bzBGDCEi6jtBpUf92xErWPp\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"AfesEXaDzs4mnPQJyqNHzpZ8DMBpuEPtmi1aL5xwRjVm\"),\n  tokenIds: [Tokens.mmaToken.mint.toString(), Tokens.usdcToken.mint.toString()],\n  tokens: {\n    [Tokens.mmaToken.mint.toString()]: {\n      ...Tokens.mmaToken,\n      addr: new PublicKey(\"BzccyLPYsbhhWjHnRLUn7Fpkao9reYRdjA8wkp7iY6re\"),\n    },\n    [Tokens.usdcToken.mint.toString()]: {\n      ...Tokens.usdcToken,\n      addr: new PublicKey(\"6uJF6gMpCxUYvmQ8hmaz44MRyRYq5ykpsx5GYABbUK5A\"),\n    },\n  },\n  curveType: CurveType.ConstantProduct,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(25, 10000),\n    ownerFee: Percentage.fromFraction(5, 10000),\n  },\n});\n\nexport const onesolSolPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"8CJhJomcLYoVw6pAQdNWPJ3yDXkS55y2gAxJ9uReuXEz\"),\n  nonce: 254,\n  authority: new PublicKey(\"9DV4t1XqqNiXLCdHfaEwAbVaT5Mth3z8VjYS6CG8CPQS\"),\n  poolTokenMint: new PublicKey(\"9wPhuYapychVDSxmXqCZxy2Ka8Lmav4SHM72si8bfraV\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"6yqvsmFJrMhSv31Ne6yY8f4y2ZJvMMCwTjYTxhq1eKS5\"),\n  tokenIds: [Tokens.onesolToken.mint.toString(), Tokens.solToken.mint.toString()],\n  tokens: {\n    [Tokens.onesolToken.mint.toString()]: {\n      ...Tokens.onesolToken,\n      addr: new PublicKey(\"532m3b4aSmWsrn4RfM9ByBRLJocdcHMwiscjADQYNjXG\"),\n    },\n    [Tokens.solToken.mint.toString()]: {\n      ...Tokens.solToken,\n      addr: new PublicKey(\"2qu6tc58av5AGfrrBPdHxK2Cyi5CsDhjaZ8x8yw8UA1w\"),\n    },\n  },\n  curveType: CurveType.ConstantProduct,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(25, 10000),\n    ownerFee: Percentage.fromFraction(5, 10000),\n  },\n});\n\nexport const puffSolPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"GrSE1LoQBr3p9y7HQxV8h5vc8fH4xkT4a6Nysckbu8zt\"),\n  nonce: 253,\n  authority: new PublicKey(\"79gfyi1Ct3m8RKkF618yxnA7w5JQV1NWhkMs6dXACgGq\"),\n  poolTokenMint: new PublicKey(\"Eho8h1BcoG5QWU7X9FzJafw5ErKUXtR2LobAJJZfWff4\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"44XxHHYz2642Bc4sHdDuV2aEGbziugqN5tKnmBBBwPyA\"),\n  tokenIds: [Tokens.puffToken.mint.toString(), Tokens.solToken.mint.toString()],\n  tokens: {\n    [Tokens.puffToken.mint.toString()]: {\n      ...Tokens.puffToken,\n      addr: new PublicKey(\"HYszSkhsPPNSj6Q5hRudc94kawCgUNeQ1DqrxJxtoxsK\"),\n    },\n    [Tokens.solToken.mint.toString()]: {\n      ...Tokens.solToken,\n      addr: new PublicKey(\"AKJUQjqAHTw5rNYYv9Rvxxe23mwdNaqzt7pdriJy92sw\"),\n    },\n  },\n  curveType: CurveType.ConstantProduct,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(25, 10000),\n    ownerFee: Percentage.fromFraction(5, 10000),\n  },\n});\n\nexport const saoUsdcPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"BWCT76eQ8jtrKkMm234ZY1QEXSfZYTrzHyXaE3DxeQfd\"),\n  nonce: 255,\n  authority: new PublicKey(\"7TXfpFGVASvgkLkuTSsqQJQTXypa31zqcHmPZNMaAJu\"),\n  poolTokenMint: new PublicKey(\"4iyU77yZbg8iD344vbwruAuDAf9i1EVV3FhZJDnWStBE\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"BVSJLE6RZ2cvfXPjSZcj7fK1HLra2wtcC4jLCZAh6gFX\"),\n  tokenIds: [Tokens.saoToken.mint.toString(), Tokens.usdcToken.mint.toString()],\n  tokens: {\n    [Tokens.saoToken.mint.toString()]: {\n      ...Tokens.saoToken,\n      addr: new PublicKey(\"8MNhNFCU366Y3dq3HRk5nKuKZuQLY3kffMZekadM2R8q\"),\n    },\n    [Tokens.usdcToken.mint.toString()]: {\n      ...Tokens.usdcToken,\n      addr: new PublicKey(\"6qnLaADqFjtGsMsHjScFVmpVVNBbqaGNoBwBFy5BVRr8\"),\n    },\n  },\n  curveType: CurveType.ConstantProduct,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(25, 10000),\n    ownerFee: Percentage.fromFraction(5, 10000),\n  },\n});\n\nexport const srlyv2SolPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"Df7DkQRXEpPM5basbYHi45268hmR8m7YrtraPdGgj6R6\"),\n  nonce: 255,\n  authority: new PublicKey(\"9DaRQeoEx3EjXYxhpZrcJ6no3bcAkfm9toWbngcAqSCB\"),\n  poolTokenMint: new PublicKey(\"3dXdXg5HPyZ73GFC9LkSn3thdJUGeXWB8iSTHs5UcqiH\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"B3Ao2fEX2isX8UQ99EuPz3BDzUfQTPeYS7KVvbCnkrXm\"),\n  tokenIds: [Tokens.srlyv2Token.mint.toString(), Tokens.solToken.mint.toString()],\n  tokens: {\n    [Tokens.srlyv2Token.mint.toString()]: {\n      ...Tokens.srlyv2Token,\n      addr: new PublicKey(\"AJzDsY4wnv8nWSWoBimY6hWJpWC54oEgmfbV7YGXsLww\"),\n    },\n    [Tokens.solToken.mint.toString()]: {\n      ...Tokens.solToken,\n      addr: new PublicKey(\"qytd7KfK3pFVWog53xUVE8dqD1sBxa1H13VnF6ADGSd\"),\n    },\n  },\n  curveType: CurveType.ConstantProduct,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(25, 10000),\n    ownerFee: Percentage.fromFraction(5, 10000),\n  },\n});\n\nexport const zbcUsdcPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"J4Xvy9twDDWqqwyfX6nrc2QFJeMJ6HD9kbAmcPhfYmFP\"),\n  nonce: 255,\n  authority: new PublicKey(\"9Ssocd3xbxm3xCKwz1g8d41rS6iWbmGyo25ZdYZHbDCp\"),\n  poolTokenMint: new PublicKey(\"2LYgm6nGXmSSjfoEriPuYeGoNiWNxUs7n3rnTbDWN5c7\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"8H1bUAywEerLCYxLVDjM5EqXYXtoW5gbR1MoD1LrrnMV\"),\n  tokenIds: [Tokens.zbcToken.mint.toString(), Tokens.usdcToken.mint.toString()],\n  tokens: {\n    [Tokens.zbcToken.mint.toString()]: {\n      ...Tokens.zbcToken,\n      addr: new PublicKey(\"8AcanN7p8KHfLxKBBMKuJUqqX2uUPz3mkp3iaNHHaZfZ\"),\n    },\n    [Tokens.usdcToken.mint.toString()]: {\n      ...Tokens.usdcToken,\n      addr: new PublicKey(\"FwqAxdo6s5EtyVXqqU7sj3Q9n3eLuUkF2D4584MDoWLW\"),\n    },\n  },\n  curveType: CurveType.ConstantProduct,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(25, 10000),\n    ownerFee: Percentage.fromFraction(5, 10000),\n  },\n});\n\nexport const gmtUsdcPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"46GcZFgznxUf6TpoCqJqzMpgMbbJPCAwNn8GThSt9qjC\"),\n  nonce: 255,\n  authority: new PublicKey(\"3HGGVGTXbqT49PG3L8JQYH4jCeP5CNBG6CpJniZ434an\"),\n  poolTokenMint: new PublicKey(\"CFxQF5kNAtbbDj298Xr47Sf4mkSyuzWpRH97hrdQ6kxi\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"3pBqsnahNsm6p14FFjtMCGfD1VCQNcUEdNEeSwTGfE2q\"),\n  tokenIds: [Tokens.gmtToken.mint.toString(), Tokens.usdcToken.mint.toString()],\n  tokens: {\n    [Tokens.gmtToken.mint.toString()]: {\n      ...Tokens.gmtToken,\n      addr: new PublicKey(\"BTpvbpTArnekGgbXRqjfSvp7gENtHXvZCAwuUKQNYMeN\"),\n    },\n    [Tokens.usdcToken.mint.toString()]: {\n      ...Tokens.usdcToken,\n      addr: new PublicKey(\"DdBTJuiAXQQ7gLVXBXNPbVEG8g1avRxiJXhH5LhBytYW\"),\n    },\n  },\n  curveType: CurveType.ConstantProduct,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(25, 10000),\n    ownerFee: Percentage.fromFraction(5, 10000),\n  },\n});\n\nexport const novaUsdcPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"GWG6gTW75GxMS7oUDoivjPrjcbsiR7fDMFKFw6pz2MuN\"),\n  nonce: 254,\n  authority: new PublicKey(\"Az4AA8tzbKJRZhunGUGVmtJyGUj763fiDyxbZiPeSVb4\"),\n  poolTokenMint: new PublicKey(\"DdAFNvDxtEHCgKj3JAM64zCKfMWhs4J9wEmRrjUAFiME\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"7RPsLN9WHRL39sAs3oDjWzGHJ1bCJg36qmTqb4i6ZPFV\"),\n  tokenIds: [Tokens.novaToken.mint.toString(), Tokens.usdcToken.mint.toString()],\n  tokens: {\n    [Tokens.novaToken.mint.toString()]: {\n      ...Tokens.novaToken,\n      addr: new PublicKey(\"5DCtLobmcNATqtgbv9pymXsXDqmVJ7NVi6GLLuPwmphk\"),\n    },\n    [Tokens.usdcToken.mint.toString()]: {\n      ...Tokens.usdcToken,\n      addr: new PublicKey(\"Hym2QSjXpNZE8VubGbg63nPx1QGXtkmsucdBCFYKp6jj\"),\n    },\n  },\n  curveType: CurveType.ConstantProduct,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(25, 10000),\n    ownerFee: Percentage.fromFraction(5, 10000),\n  },\n});\n\nexport const hbbUsdhPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"9GgFi1cavfTEQ8gy87S3VVeqZSFBhncpJvMBQ8vprAQw\"),\n  nonce: 255,\n  authority: new PublicKey(\"HsTk5QvXEQpdr1bB8nay55TZqecKUqNvGLM93vVRhHqj\"),\n  poolTokenMint: new PublicKey(\"7n2YW9qLkhGFArdZPLoF4hYPE2zw7xCACkVPXrUWnLuo\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"AijCQCXg6pcLwfNW6DB9HNrwge2HRaXfdJLAXeBEhgKF\"),\n  tokenIds: [Tokens.hbbToken.mint.toString(), Tokens.usdhToken.mint.toString()],\n  tokens: {\n    [Tokens.hbbToken.mint.toString()]: {\n      ...Tokens.hbbToken,\n      addr: new PublicKey(\"D9uCWM7yfWwUktQ2MjuiDmTYa4vE9ff5St7TaQ9uJPwe\"),\n    },\n    [Tokens.usdhToken.mint.toString()]: {\n      ...Tokens.usdhToken,\n      addr: new PublicKey(\"AGGpY57ko5qcJJxRNgJSXTs3jrf6cPgux4q8B9R3nE52\"),\n    },\n  },\n  curveType: CurveType.ConstantProduct,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(25, 10000),\n    ownerFee: Percentage.fromFraction(5, 10000),\n  },\n});\n\nexport const takiSrlyv2Pool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"6AxGikaR6FvDAP3rEWYA5sjKim8ELceCfno7ZGaYYwsK\"),\n  nonce: 254,\n  authority: new PublicKey(\"13sT1XctPqMUoomDqyV55nEAupZXfyc7tohxTrhNXyKQ\"),\n  poolTokenMint: new PublicKey(\"6atKbS2Xz5vu7cqWBNk8KYkuakRzckZ9nvtUKf2k8Sc3\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"3yvDrXwLK4z5P7BbPko7siDfxDLV31J58xzoCK9Wy5mb\"),\n  tokenIds: [Tokens.takiToken.mint.toString(), Tokens.srlyv2Token.mint.toString()],\n  tokens: {\n    [Tokens.takiToken.mint.toString()]: {\n      ...Tokens.takiToken,\n      addr: new PublicKey(\"J8kiPsPrscD9oLg5JP3Dj7HyNSLh5s4zmfA7LLYNqYXS\"),\n    },\n    [Tokens.srlyv2Token.mint.toString()]: {\n      ...Tokens.srlyv2Token,\n      addr: new PublicKey(\"FpdhjfJsJtMYy5zejmhFJNxtE59NDhgbXn3mfsEeKDmu\"),\n    },\n  },\n  curveType: CurveType.ConstantProduct,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(25, 10000),\n    ownerFee: Percentage.fromFraction(5, 10000),\n  },\n});\n\nexport const zigUsdcPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"37b7oyhDTJh1VpjjEZqaC8VasvnyHHYHeiXLpa8Ht8Hm\"),\n  nonce: 255,\n  authority: new PublicKey(\"8D4DfRUgmEMuiFct6BCqSiUd7NgH4wtbU3kLB4Miy1YC\"),\n  poolTokenMint: new PublicKey(\"5vhh9ZnD9vnahRhFLP1EUEyYRSzvJwgw9U2xygsSJSrp\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"AcWQv9cp2gn8BUTn7swwpPeAcGZ9gG64zzM5pYWnReGx\"),\n  tokenIds: [Tokens.zigToken.mint.toString(), Tokens.usdcToken.mint.toString()],\n  tokens: {\n    [Tokens.zigToken.mint.toString()]: {\n      ...Tokens.zigToken,\n      addr: new PublicKey(\"BNx1dsmrFLX9r2hWf2duWaPL4m7yu1AkBw8X9YwEGqp7\"),\n    },\n    [Tokens.usdcToken.mint.toString()]: {\n      ...Tokens.usdcToken,\n      addr: new PublicKey(\"jYirYPaPZKnsbEJSvWu3Pb6tWRcNxPQPL2RD1qTa7eK\"),\n    },\n  },\n  curveType: CurveType.ConstantProduct,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(25, 10000),\n    ownerFee: Percentage.fromFraction(5, 10000),\n  },\n});\n\nexport const srlySolPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"FyGeyg6HEjBwTEGXF9o78XgKyMkmxSncLe2VECu3FPgo\"),\n  nonce: 253,\n  authority: new PublicKey(\"BDmEnikYwue2wtzxZFhr29avpQdX3rrQrvSjYJimeteH\"),\n  poolTokenMint: new PublicKey(\"HfRgvhgscGX5GaP3rUrZAhh7gS4aJ2UQ7rNVX976rG6P\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"EcUL9q6rMrVsyqDR1hMMMyHM6Sqos93SKXBCEd3HgAa7\"),\n  tokenIds: [Tokens.srlyToken.mint.toString(), Tokens.solToken.mint.toString()],\n  tokens: {\n    [Tokens.srlyToken.mint.toString()]: {\n      ...Tokens.srlyToken,\n      addr: new PublicKey(\"7vY5bs27YTWus7KiemXsfaY4E2EzbrV5gXvbx1RaWJ8B\"),\n    },\n    [Tokens.solToken.mint.toString()]: {\n      ...Tokens.solToken,\n      addr: new PublicKey(\"JiKtEtLL96sUDQvM1oYXuNaWdHxjdcSgb9M3yqNYs8h\"),\n    },\n  },\n  curveType: CurveType.ConstantProduct,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(25, 10000),\n    ownerFee: Percentage.fromFraction(5, 10000),\n  },\n});\n\nexport const takiSrlyPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"4VzdxTLqzgn5MGMTDsNMukZCvkAZkXLXhYENeKGRtdTR\"),\n  nonce: 255,\n  authority: new PublicKey(\"CMTEg8iJ131Fi6yJvsZ5ovtUZjfQWaEsZtTmZH15WjFH\"),\n  poolTokenMint: new PublicKey(\"3xaK5aWWLNRB73xUVX3cusLhDp65mTvP4fwW5Jwxakgs\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"5Vey7hniN8uNjqBkaxrVpXFrsc5eEZdqFD1Xi5SJF6PS\"),\n  tokenIds: [Tokens.takiToken.mint.toString(), Tokens.srlyToken.mint.toString()],\n  tokens: {\n    [Tokens.takiToken.mint.toString()]: {\n      ...Tokens.takiToken,\n      addr: new PublicKey(\"7p3UFVn1h2Eeo8zF4CETufa7JqXYMVXzKLn7vg39MQfX\"),\n    },\n    [Tokens.srlyToken.mint.toString()]: {\n      ...Tokens.srlyToken,\n      addr: new PublicKey(\"J5V4k8nSGu3PBH8ej4E34KjCbGZx5Q7v2AMwr4Wt9Tgm\"),\n    },\n  },\n  curveType: CurveType.ConstantProduct,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(25, 10000),\n    ownerFee: Percentage.fromFraction(5, 10000),\n  },\n});\n\nexport const stsolSolPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"71zvJycCiY2JRRwKr27oiu48mFzrstCoP6riGEyCyEB2\"),\n  nonce: 253,\n  authority: new PublicKey(\"5qpKgo2PSNSkmHGAa4oYrEZcYA3CQaFpA66nPVuP1qHX\"),\n  poolTokenMint: new PublicKey(\"4jjQSgFx33DUb1a7pgPsi3FbtZXDQ94b6QywjNK3NtZw\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"7nxYhYUaD7og4rYce263CCPh9pPTnGixfBtQrXE7UUvZ\"),\n  tokenIds: [Tokens.stsolToken.mint.toString(), Tokens.solToken.mint.toString()],\n  tokens: {\n    [Tokens.stsolToken.mint.toString()]: {\n      ...Tokens.stsolToken,\n      addr: new PublicKey(\"HQ2XUmQefvBdpN8nseBSWNP2D1crncodLL73AWnYBiSy\"),\n    },\n    [Tokens.solToken.mint.toString()]: {\n      ...Tokens.solToken,\n      addr: new PublicKey(\"8y8X4JuZn1MckRo5J6rirpr2Dxj1RKQshj7VzuX6dMUw\"),\n    },\n  },\n  curveType: CurveType.Stable,\n  amp: 100,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(6, 10000),\n    ownerFee: Percentage.fromFraction(1, 10000),\n  },\n});\n\nexport const btcStsolPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"Cus1XADrHBrgyD7hKLGARsHFtBgGWvjAA346KimbHXai\"),\n  nonce: 255,\n  authority: new PublicKey(\"Czqib5TfizVRvDksYBFfdDgHcBwdPPVejW9LYDBSXxu5\"),\n  poolTokenMint: new PublicKey(\"HYp9v7cY4wAxSsa6ijztQQ3GQ8iTttuG5vu8JNBDHoNh\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"3SHTi6ybA2oAFooARTt1ETbNPSueofuBFhmEtjmrJFUw\"),\n  tokenIds: [Tokens.btcToken.mint.toString(), Tokens.stsolToken.mint.toString()],\n  tokens: {\n    [Tokens.btcToken.mint.toString()]: {\n      ...Tokens.btcToken,\n      addr: new PublicKey(\"8WhAF65WbdsRAzGQF66oLsBZwbeXbU5WtxX7pA8SwjK\"),\n    },\n    [Tokens.stsolToken.mint.toString()]: {\n      ...Tokens.stsolToken,\n      addr: new PublicKey(\"EnbNxeehxrAJXxyWupFcs7zsJN3Zob4nJmpFGS8ninm8\"),\n    },\n  },\n  curveType: CurveType.ConstantProduct,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(25, 10000),\n    ownerFee: Percentage.fromFraction(5, 10000),\n  },\n});\n\nexport const stsolWhethPool: OrcaPoolParams = Object.freeze({\n  address: new PublicKey(\"9FtrC9VkqssGygMafJjseqPQXnyorqHV3DyMPBfJrgtj\"),\n  nonce: 252,\n  authority: new PublicKey(\"4Y7EQYJ1WWKn8ZXC3Fc6KVnp5LPgqLxyV5Pk9eGm3cuh\"),\n  poolTokenMint: new PublicKey(\"FWurFWADrgmhb6Y44LEaCMnEHS2Tu3QGqd9oBcZtr8gT\"),\n  poolTokenDecimals: 6,\n  feeAccount: new PublicKey(\"28t4Vixx6cE1yunwXNqQ2YU3pU9PbCscK9G3daRYuYCS\"),\n  tokenIds: [Tokens.stsolToken.mint.toString(), Tokens.whethToken.mint.toString()],\n  tokens: {\n    [Tokens.stsolToken.mint.toString()]: {\n      ...Tokens.stsolToken,\n      addr: new PublicKey(\"FTrSPUnMKmdKkNekKvVUQY1nunr2kWwohMHmBusd79Vj\"),\n    },\n    [Tokens.whethToken.mint.toString()]: {\n      ...Tokens.whethToken,\n      addr: new PublicKey(\"2teAyRLAU716sCj9v2634Wi4wcLqtRvV9upXaRvDSFm1\"),\n    },\n  },\n  curveType: CurveType.ConstantProduct,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(25, 10000),\n    ownerFee: Percentage.fromFraction(5, 10000),\n  },\n});\n\n/**\n * Mapping for OrcaPool parameters\n * Key: poolTokenMint : OrcaPoolParams\n */\nexport const orcaPoolConfigs: Record<string, OrcaPoolParams> = {\n  APDFRM3HMr8CAGXwKHiu2f5ePSpaiEJhaURwhsRrUUt9: solUsdcPool,\n  FZthQCuYHhcfiDma7QrX7buDHwrZEd7vL8SjS6LQa3Tx: solUsdtPool,\n  \"71FymgN2ZUf7VvVTLE8jYEnjP3jSK1Frp2XT1nHs8Hob\": ethSolPool,\n  \"3e1W6Aqcbuk2DfHUwRiRcyzpyYRRjg6yhZZcyEARydUX\": ethUsdcPool,\n  \"5kimD5W6yJpHRHCyPtnEyDsQRdiiJKivu5AqN3si82Jc\": raySolPool,\n  ADrvfPBsRcJfGsN6Bs385zYddH52nuM5FA8UaAkX9o2V: ropeSolPool,\n  \"8nTzqDXHriG2CXKbybeuEh1EqDQMtrbYMFWcP7AkiDaP\": stepSolPool,\n  \"9tf8rBSEQYG7AqL896fN2nZi1iYPqpWaLEdpbeQaC1Vy\": srmSolPool,\n  EsYaDKJCmcJtJHFuJYwQZwqohvVMCrFzcg8yo3i328No: fttSolPool,\n  CzieDbGRdN1QGaGDNpSqzEA18bi881ccvkkGZi51pe1k: copeSolPool,\n  \"7tYCdLN84EnTMkxM7HNamWJx7F4xgKe9KiiWvLyWjbgT\": oxySolPool,\n  Acxs19v6eUMTEfdvkvWkRB4bwFCHm3XV9jABCy7c1mXe: btcSolPool,\n  HiwRobjfHZ4zsPtqCC4oBS24pSmy4t8GGkXRbQj4yU6L: merSolPool,\n  EYsNdtyu4gGTaGz8N5m5iQ3G1N6rDyMbR72B3CqbWW4W: fidaSolPool,\n  \"99pfC8fWymXgbq3CvrExhx3UxQDC1fMWEWLbNT83F45e\": mapsSolPool,\n  H2uzgruPvonVpCRhwwdukcpXK8TG17swFNzYFr2rtPxy: usdcUsdtPool,\n  \"2uVjAuRXavpM6h1scGQaxqb6HVaNRn6T2X7HHXTabz25\": orcaSolPool,\n  n8Mpu28RjeYD7oUX3LG1tPxzhRZh3YYLRSHcHRdS3Zx: orcaUsdcPool,\n  HEvnD66WcBfTajS9adUYnGRBMDehFtLySiFHSD6kEBWs: kinSolPool,\n  D6N9j8F2DhtzDtrdpT74y3u2YmYAzcggiLc3nTjqux9M: samoSolPool,\n  \"3PD9SZFwXKkXr4akLf4ofo37ZUMycwML89R2P3qxcbZG\": liqUsdcPool,\n  AZpo4BJHHRetF96v6SGinFZBMXM4yWMo4RA8C4PriDLk: snyUsdcPool,\n  \"8PSfyiTVwPb6Rr2iZ8F3kNpbg65BCfJM9v8LfB916r44\": msolUsdcPool,\n  AtB4nUmdyQfuWWJ9xAHw9xyVnJFfSjSuVWkiYan8y86w: slrsUsdcPool,\n  F8gPSpwVHj8FdAJAYULDuZBxFEJut87hUbARYYx3471w: portUsdcPool,\n  CS7fA5n4c2D82dUoHrYzS3gAqgqaoVSfgsr18kitp2xo: sbrUsdcPool,\n  Dkr8B675PGnNwEr9vTKXznjjHke5454EQdz3iaSbparB: scnsolUsdcPool,\n  C2YzN6MymD5HM2kPaH7bzcbqciyjfmpqyVaR3KA5V6z1: psolUsdcPool,\n  \"29cdoMgu6MS2VXpcMo1sqRdWEzdUR9tjvoh8fcK8Z87R\": msolSolPool,\n  C7TH2jEJJaxVwwuvkbcDGfHUiZvEkkeYjyAcdTMi5ujb: orcaPaiPool,\n  CVapmQn7HaU1yMDW3q6oUV4hx6XoYv54T4zfGXkuJqkA: orcaMsolPool,\n  APNpzQvR91v1THbsAyG3HHrUEwvexWYeNCFLQuVnxgMc: scnsolSolPool,\n  FZ8x1LCRSPDeHBDoAc3Gc6Y7ETCynuHEr5q5YWV7uRCJ: atlasUsdcPool,\n  GteBdo9sqE7T41G8AJsaG9WHW48uXBwsLLznmu2TBdgy: polisUsdcPool,\n  \"2gXDJZ7XAtQEtf4PRSQZKoq1WMuu1H44tQanbMA3YVpu\": bopUsdcPool,\n  \"6VK1ksrmYGMBWUUZfygGF8tHRGpNxQEWv8pfvzQHdyyc\": samoUsdcPool,\n  \"4X1oYoFWYtLebk51zuh889r1WFLe8Z9qWApj87hQMfML\": ninjaSolPool,\n  BVWwyiHVHZQMPHsiW7dZH7bnBVKmbxdeEjWqVRciHCyo: slimUsdcPool,\n  ELfBngAgvLEHVBuJQhhE7AW6eqLX7id2sfrBngVNVAUW: whapiUsdcPool,\n  HsauTv9s52Zv12eaDuSp6y7BEm4e4BHEyAsbdjyyWzPK: copeUsdcPool,\n  GHuoeq9UnFBsBhMwH43eL3RWX5XVXbSRYJymmyMYpT7n: sunnyUsdcPool,\n  EorFh8siFyLF1QTZ7cCXQaPGqyo7eb4SAgKtRH8Jcxjd: grapeUsdcPool,\n  GMzPbaCuQmeMUm1opH3oSCgKUjVgJUW14myq99RVPGX5: abrUsdcPool,\n  DRknxb4ZFxXUTG6UJ5HupNHG1SmvBSCPzsZ1o9gAhyBi: kuroUsdcPool,\n  \"2toFgkQDoPrTJYGDEVoCasPXuL9uQnjvXJaDwa9LHyTx\": mediaUsdcPool,\n  \"4SBx8GXu8HhcVHWydQv1vsDdZs3G93XSL9CtMBny6hS5\": tulipUsdcPool,\n  H9yC7jDng974WwcU4kTGs7BKf7nBNswpdsP5bzbdXjib: mngoUsdcPool,\n  Eswigpwm3xsipkTqahGi2PEJsJcULQBwZgxhQpr6yBEa: stsolWstethPool,\n  qJxKN9BhxbYvRNbjfK2uAVWboto6sonj8XC1ZEW5XTB: sypUsdcPool,\n  \"74B9aMS7SA832xKngt5VLKmWAP3pa3qkUzWncTmQSsGF\": stsolWldoPool,\n  \"7aYnrdmdCRodDy2Czn6keUquUhjF1jPEmfwZPh488z8U\": whethSolPool,\n  \"7NPtjjAP7vhp4t5NCLyY4DY5rurvyc8cgZ2a2rYabRia\": whethUsdcPool,\n  \"5PHS5w6hQwFNnLz1jJFe7TVTxSQ98cDYC3akmiAoFMXs\": mndeMsolPool,\n  Df6XNHMF3uRVZnz7LCEGiZVax6rXgz76owtVkBHEjSb6: wagUsdcPool,\n  \"9cMWe4UYRPGAUUsTkjShJWVM7bk8DUBgxtwwH8asFJoV\": msolUsdtPool,\n  \"5qoTq3qC4U7vFxo3iCzbXcaD1UEmDeCD63Dsuoct71oV\": msolWhethPool,\n  \"8nKJ4z9FSw6wrVZKASqBiS9DS1CiNsRnqwCCKVQjqdkB\": btcMsolPool,\n  DfgCnzaiTXfPkAH1C1Z441b5MzjjTCEh134ioxqRZxYf: ivnSolPool,\n  \"8sfThep3io4gvcGeuoAg1Rs8GDwKJjtcdAFHqQSSNAVE\": larixUsdcPool,\n  \"6jCERp5hKj37PCXP3VTjCDJeoPuSpnMDMz5A6jWQv3yS\": prtUsdcPool,\n  GBijunwxa4Ni3JmYC6q6zgaVhSUJU6hVX5qTyJDRpNTc: jetUsdcPool,\n  GtQ1NT7R5aaTiST7K6ZWdMhwDdFxsSFvVFhBo8vyHGAq: stsolUsdcPool,\n  \"5a6Y1ephcbKSoyLMQyD1JWbtqawCy8p2FtRL9v3zhaG5\": wstethUsdcPool,\n  \"6mJqqT5TMgveDvxzBt3hrjGkPV5VAj7tacxFCT3GebXh\": auryUsdcPool,\n  Hmfrtmo93DpSDmVNLQKcBS5D1ia5JatiRSok9ososubz: avaxUsdcPool,\n  FwCombynV2fTVizxPCNA2oZKoWXLZgdJThjE4Xv9sjxc: fttUsdcPool,\n  \"4cXw2MYj94TFBXLL73fEpMCr8DPrW68JvrV8mzWgktbD\": rayUsdcPool,\n  F59gkD7NnsdJbFKrRZsiBC8PAooN4c56T8QmahfW1iXN: slndUsdcPool,\n  \"7vnps4VE5RTGAr5fmPZu7fSrk2VnM4Up838grZfqmxqE\": gofxUsdcPool,\n  \"9EjcYfHcG8f1mccpHyaAwpoxaUPiheC6KgLQjyD9aTb6\": woofUsdcPool,\n  CHTKUJGYRtBDqnxCFjxe5KEkZgxV98udbhuYYyzGxup5: sdogeUsdcPool,\n  \"55r9txzQtmjTykmTXmBYZCVMg5z9squB8b5cSw2AhxA4\": catoUsdcPool,\n  DSiHyHDn96bUQSZtizyCRLcQzrwohZeMpVu8rYJN1HzG: oogiUsdcPool,\n  \"5MvQHx8eftU39JTucFsT315JFnQASuDQg3FqxTw7xcvN\": sonarUsdcPool,\n  HNrYngS1eoqkjWro9D3Y5Z9sWBDzPNK2tX4rfV2Up177: aptUsdcPool,\n  AWrtTWG4Zgxw8D92bb3L3sQtGLD3zDztMPWsXSph8iBP: dflUsdcPool,\n  \"9Y1vPaAsMz8X65DebMMnmBjbMo8i4jh4mcgiggZUUS3M\": dflSolPool,\n  FnDxJPNk7pPmGHUbR4XUHmHevrkXHdna5D3sQKcAtjBL: frktUsdcPool,\n  FGgP1npQTsC5Q4xBmQtNYSh51NKqNwdxBZy8JCo3igcu: tttUsdcPool,\n  E1U63VXhNiWoUkVvjrfLDdV1oJrwE6zLde3bohr6jCqz: upsUsdcPool,\n  GjG7JjTQfQpDxw4hWx4etP9oTaYCuCbPjsU8WaUT3xHB: fantUsdcPool,\n  D8WjqtwC9CzBrQKfSf2ccCHFQuPYwyLv5KAy8WjT5vnf: blockUsdcPool,\n  \"34Ppq6R8NfYBwWwPY4cBK4Afyb8hHaASQFukCzH6cV4n\": runUsdcPool,\n  HjR8JgqNKQVMvdryqJw5RJ4PCE9WGk8sgbEF7S9S3obv: uxpUsdcPool,\n  J3kvcay3N16FBdawgnqoJ9v9p6XCvyCLE2Z9F5RLvGkj: btcUsdcPool,\n  \"12Uj74zgUUoBe4yeackwQ4qYtFMr9fk1xL6q5Nha6t2N\": mndeUsdcPool,\n  \"71CBZeJ4tw38L9pSPoCz4fRsuWE64Fipyzotte7haoCS\": chicksUsdcPool,\n  \"6MF5CHWAj5mS7FhpxiKz37CzR2eYTu236XpBKKMXCrGg\": onesolUsdcPool,\n  HDgxKmiA8Pv82fNguhVeMkZqQkos2YksFPoP1KttWxX8: wmpUsdcPool,\n  \"2VuGzaMrDnDyZfYvDwSXk38s7M2wpud7LDY3dGA1J9sy\": unqUsdcPool,\n  GoaAiajubRgeCFEz9L6mLnSmT2QFegoJDH5tpLfivpj: basisUsdcPool,\n  E6FUnQHGHJVJg7oExVr5Moeaj1QpdpZQF5odYjHXWPZb: gstUsdcPool,\n  F5BTnwuMA6rxftTdbZ33VWKr2wrr6DuQHnd4guKmPSYQ: meanUsdcPool,\n  HCtyJzFUtYecXrA52s4Y9atq4J1fhT3cYsTX17XVSFag: aartUsdcPool,\n  DJqqvzSuPaWThfzwMjXx7H2ZmHDdwxza6NtFudtuXcpc: shdwUsdcPool,\n  \"2ws7g3LBPdctfKn42Di9qxzQtUJ8ZL1aEAX2rGEQMNqh\": shdwSolPool,\n  \"99ZHUQsgxL7K6PHrGNi1gSwawwPr7UA5fbWrYoHQ6qhX\": scyUsdcPool,\n  E5kSBqTDxFLbLNQaVVtPtnhEYVLMCK2fVSEKoMKL98qR: slcUsdcPool,\n  \"6c13xsmyk7UaHUWZ2rm1MM3ZdrQRSBkQ9waaG25ridVs\": wustSolPool,\n  J1KfRtP5y2warpD7LdJhfBLPKoWwSqYuovdArSv1mpQ7: wustUsdcPool,\n  \"68YVjgPnTUPcBqZyghqvD2WPNsrLKsjYTmBKJzHRr4qd\": msolWustPool,\n  \"8Mh7drLbt3jFJYwp948XyvQscGLaLkChNcaH5wwaAoWA\": wlunaWustPool,\n  HTZd53fYwYQRyAjiaPsZy9Gf41gobFdqkF4oKe3XLi95: stsolWustPool,\n  AzEoVuNJyo9ByoLRZ5t6vav2Zg24vULNVJM41PgCKUqR: jsolUsdcPool,\n  CCyDxjdW3G7hPTthTMPTZ4bnhFF19XG6rx2fNiKeRQww: daosolUsdcPool,\n  Gx4PoxenyQwhGGnKagAT35iVg4im1iKhJxDWqVhgu6tk: orcaUsdtPool,\n  GsfyYHkSgC3Ta6aWR9MjB2sxoBrkGGeR2tAwXbpphf3: orcaWhethPool,\n  \"7cuu94swKL5PtFQohKMAzyd1mjj65rgMW3GzLY31HCnK\": geneUsdcPool,\n  \"85krvT9DxdYgoFLQDHTAGdvtNuLdAsc4xE5FkVLpN2aR\": cmfiUsdcPool,\n  HVLyX8mD8YvKgZJ4oB6rXJiCYMLpHKwB6iCiCjE1XwdT: celoUsdcPool,\n  Gpzd833qSmv3kXpQmxEaqkrZTXZaRjhNAoqhf61qAhTG: ftmUsdcPool,\n  DFpLFcQZqDKykyDePgip4r6MExVmBKWqTa12ezq6qxUY: btcOrcaPool,\n  cL5WhffCYFRLM4We8VS2W684kM4pHyuvEDwp8Ddw48k: hbbUsdcPool,\n  FkKzu2HeMJZf4oHwoYPxLGVy3net5Jq8HAfnA5VqETgk: hbbSolPool,\n  \"2Reqt4Sw9xNY8BoJ3EZLpFu5yVgNxFrbw8M3KiJpPn6o\": sbUsdcPool,\n  \"4ni1nho89cDKAQ9ddbNQA9ieLYpzvJVmJpuogu5Ct5ur\": stsolUsdtPool,\n  H7gyTmNCDXkD8MGMqnxqoD8ANszjcju4tjT6ERZ5dakf: seededUsdcPool,\n  \"3hksYA17VxgiKSeihjnZkBbjc2CTbEBfvDCYgQhojTo5\": audioUsdcPool,\n  AaZRnJAnDyJyPD9uPJpJ8bzBGDCEi6jtBpUf92xErWPp: mmaUsdcPool,\n  \"9wPhuYapychVDSxmXqCZxy2Ka8Lmav4SHM72si8bfraV\": onesolSolPool,\n  Eho8h1BcoG5QWU7X9FzJafw5ErKUXtR2LobAJJZfWff4: puffSolPool,\n  \"4iyU77yZbg8iD344vbwruAuDAf9i1EVV3FhZJDnWStBE\": saoUsdcPool,\n  \"3dXdXg5HPyZ73GFC9LkSn3thdJUGeXWB8iSTHs5UcqiH\": srlyv2SolPool,\n  \"2LYgm6nGXmSSjfoEriPuYeGoNiWNxUs7n3rnTbDWN5c7\": zbcUsdcPool,\n  CFxQF5kNAtbbDj298Xr47Sf4mkSyuzWpRH97hrdQ6kxi: gmtUsdcPool,\n  DdAFNvDxtEHCgKj3JAM64zCKfMWhs4J9wEmRrjUAFiME: novaUsdcPool,\n  \"7n2YW9qLkhGFArdZPLoF4hYPE2zw7xCACkVPXrUWnLuo\": hbbUsdhPool,\n  \"6atKbS2Xz5vu7cqWBNk8KYkuakRzckZ9nvtUKf2k8Sc3\": takiSrlyv2Pool,\n  \"5vhh9ZnD9vnahRhFLP1EUEyYRSzvJwgw9U2xygsSJSrp\": zigUsdcPool,\n  HfRgvhgscGX5GaP3rUrZAhh7gS4aJ2UQ7rNVX976rG6P: srlySolPool,\n  \"3xaK5aWWLNRB73xUVX3cusLhDp65mTvP4fwW5Jwxakgs\": takiSrlyPool,\n  \"4jjQSgFx33DUb1a7pgPsi3FbtZXDQ94b6QywjNK3NtZw\": stsolSolPool,\n  HYp9v7cY4wAxSsa6ijztQQ3GQ8iTttuG5vu8JNBDHoNh: btcStsolPool,\n  FWurFWADrgmhb6Y44LEaCMnEHS2Tu3QGqd9oBcZtr8gT: stsolWhethPool,\n};\n"
  },
  {
    "path": "src/constants/tokens.ts",
    "content": "import { PublicKey } from \"@solana/web3.js\";\nimport { OrcaToken } from \"..\";\n\n/**\n * The following content is auto-generated.\n */\n\nexport const onesolToken: OrcaToken = Object.freeze({\n  tag: \"1SOL\",\n  name: \"1Sol\",\n  mint: new PublicKey(\"4ThReWAbAVZjNVgs5Ui9Pk3cZ5TYaD9u6Y89fp6EFzoF\"),\n  scale: 8,\n});\n\nexport const aartToken: OrcaToken = Object.freeze({\n  tag: \"AART\",\n  name: \"ALL.ART\",\n  mint: new PublicKey(\"F3nefJBcejYbtdREjui1T9DPh5dBgpkKq7u2GAAMXs5B\"),\n  scale: 6,\n});\n\nexport const abrToken: OrcaToken = Object.freeze({\n  tag: \"ABR\",\n  name: \"Allbridge\",\n  mint: new PublicKey(\"a11bdAAuV8iB2fu7X6AxAvDTo1QZ8FXB3kk5eecdasp\"),\n  scale: 9,\n});\n\nexport const anaToken: OrcaToken = Object.freeze({\n  tag: \"ANA\",\n  name: \"Nirvana ANA\",\n  mint: new PublicKey(\"ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo\"),\n  scale: 6,\n});\n\nexport const aptToken: OrcaToken = Object.freeze({\n  tag: \"APT\",\n  name: \"Apricot\",\n  mint: new PublicKey(\"APTtJyaRX5yGTsJU522N4VYWg3vCvSb65eam5GrPT5Rt\"),\n  scale: 6,\n});\n\nexport const atlasToken: OrcaToken = Object.freeze({\n  tag: \"ATLAS\",\n  name: \"Star Atlas\",\n  mint: new PublicKey(\"ATLASXmbPQxBUYbxPsV97usA3fPQYEqzQBUHgiFCUsXx\"),\n  scale: 8,\n});\n\nexport const audioToken: OrcaToken = Object.freeze({\n  tag: \"AUDIO\",\n  name: \"Audius (Wormhole)\",\n  mint: new PublicKey(\"9LzCMqDgTKYz9Drzqnpgee3SGa89up3a247ypMj2xrqM\"),\n  scale: 8,\n});\n\nexport const auryToken: OrcaToken = Object.freeze({\n  tag: \"AURY\",\n  name: \"Aurory\",\n  mint: new PublicKey(\"AURYydfxJib1ZkTir1Jn1J9ECYUtjb6rKQVmtYaixWPP\"),\n  scale: 9,\n});\n\nexport const avaxToken: OrcaToken = Object.freeze({\n  tag: \"AVAX\",\n  name: \"Avalanche\",\n  mint: new PublicKey(\"AUrMpCDYYcPuHhyNX8gEEqbmDPFUpBpHrNW3vPeCFn5Z\"),\n  scale: 9,\n});\n\nexport const basisToken: OrcaToken = Object.freeze({\n  tag: \"BASIS\",\n  name: \"basis.markets\",\n  mint: new PublicKey(\"Basis9oJw9j8cw53oMV7iqsgo6ihi9ALw4QR31rcjUJa\"),\n  scale: 6,\n});\n\nexport const blockToken: OrcaToken = Object.freeze({\n  tag: \"BLOCK\",\n  name: \"Blockasset\",\n  mint: new PublicKey(\"NFTUkR4u7wKxy9QLaX2TGvd9oZSWoMo4jqSJqdMb7Nk\"),\n  scale: 6,\n});\n\nexport const bopToken: OrcaToken = Object.freeze({\n  tag: \"BOP\",\n  name: \"Boring Protocol\",\n  mint: new PublicKey(\"BLwTnYKqf7u4qjgZrrsKeNs2EzWkMLqVCu6j8iHyrNA3\"),\n  scale: 8,\n});\n\nexport const btcToken: OrcaToken = Object.freeze({\n  tag: \"BTC\",\n  name: \"Bitcoin\",\n  mint: new PublicKey(\"9n4nbM75f5Ui33ZbPYXn59EwSgE8CGsHtAeTH5YFeJ9E\"),\n  scale: 6,\n});\n\nexport const catoToken: OrcaToken = Object.freeze({\n  tag: \"CATO\",\n  name: \"CATO\",\n  mint: new PublicKey(\"5p2zjqCd1WJzAVgcEnjhb9zWDU7b9XVhFhx4usiyN7jB\"),\n  scale: 9,\n});\n\nexport const caveToken: OrcaToken = Object.freeze({\n  tag: \"CAVE\",\n  name: \"Crypto Cavemen\",\n  mint: new PublicKey(\"4SZjjNABoqhbd4hnapbvoEPEqT8mnNkfbEoAwALf1V8t\"),\n  scale: 6,\n});\n\nexport const celoToken: OrcaToken = Object.freeze({\n  tag: \"CELO\",\n  name: \"Celo\",\n  mint: new PublicKey(\"GNCjk3FmPPgZTkbQRSxr6nCvLtYMbXKMnRxg8BgJs62e\"),\n  scale: 9,\n});\n\nexport const chicksToken: OrcaToken = Object.freeze({\n  tag: \"CHICKS\",\n  name: \"SolChicks Token\",\n  mint: new PublicKey(\"cxxShYRVcepDudXhe7U62QHvw8uBJoKFifmzggGKVC2\"),\n  scale: 9,\n});\n\nexport const cmfiToken: OrcaToken = Object.freeze({\n  tag: \"CMFI\",\n  name: \"Compendium.Fi\",\n  mint: new PublicKey(\"5Wsd311hY8NXQhkt9cWHwTnqafk7BGEbLu8Py3DSnPAr\"),\n  scale: 6,\n});\n\nexport const copeToken: OrcaToken = Object.freeze({\n  tag: \"COPE\",\n  name: \"Cope\",\n  mint: new PublicKey(\"8HGyAAB1yoM1ttS7pXjHMa3dukTFGQggnFFH3hJZgzQh\"),\n  scale: 6,\n});\n\nexport const dflToken: OrcaToken = Object.freeze({\n  tag: \"DFL\",\n  name: \"DeFi Land\",\n  mint: new PublicKey(\"DFL1zNkaGPWm1BqAVqRjCZvHmwTFrEaJtbzJWgseoNJh\"),\n  scale: 9,\n});\n\nexport const ethToken: OrcaToken = Object.freeze({\n  tag: \"ETH\",\n  name: \"Ethereum\",\n  mint: new PublicKey(\"2FPyTwcZLUg1MDrwsyoP4D6s1tM7hAkHYRjkNb5w6Pxk\"),\n  scale: 6,\n});\n\nexport const fabToken: OrcaToken = Object.freeze({\n  tag: \"FAB\",\n  name: \"Fabric\",\n  mint: new PublicKey(\"EdAhkbj5nF9sRM7XN7ewuW8C9XEUMs8P7cnoQ57SYE96\"),\n  scale: 9,\n});\n\nexport const fantToken: OrcaToken = Object.freeze({\n  tag: \"FANT\",\n  name: \"Phantasia\",\n  mint: new PublicKey(\"FANTafPFBAt93BNJVpdu25pGPmca3RfwdsDsRrT3LX1r\"),\n  scale: 6,\n});\n\nexport const fidaToken: OrcaToken = Object.freeze({\n  tag: \"FIDA\",\n  name: \"Bonfida\",\n  mint: new PublicKey(\"EchesyfXePKdLtoiZSL8pBe8Myagyy8ZRqsACNCFGnvp\"),\n  scale: 6,\n});\n\nexport const frktToken: OrcaToken = Object.freeze({\n  tag: \"FRKT\",\n  name: \"FRAKT Token\",\n  mint: new PublicKey(\"ErGB9xa24Szxbk1M28u2Tx8rKPqzL6BroNkkzk5rG4zj\"),\n  scale: 8,\n});\n\nexport const ftmToken: OrcaToken = Object.freeze({\n  tag: \"FTM\",\n  name: \"Fantom\",\n  mint: new PublicKey(\"EsPKhGTMf3bGoy4Qm7pCv3UCcWqAmbC1UGHBTDxRjjD4\"),\n  scale: 9,\n});\n\nexport const fttToken: OrcaToken = Object.freeze({\n  tag: \"FTT\",\n  name: \"FTX Token\",\n  mint: new PublicKey(\"AGFEad2et2ZJif9jaGpdMixQqvW5i81aBdvKe7PHNfz3\"),\n  scale: 6,\n});\n\nexport const geneToken: OrcaToken = Object.freeze({\n  tag: \"GENE\",\n  name: \"Genopets\",\n  mint: new PublicKey(\"GENEtH5amGSi8kHAtQoezp1XEXwZJ8vcuePYnXdKrMYz\"),\n  scale: 9,\n});\n\nexport const gmtToken: OrcaToken = Object.freeze({\n  tag: \"GMT\",\n  name: \"STEPN\",\n  mint: new PublicKey(\"7i5KKsX2weiTkry7jA4ZwSuXGhs5eJBEjY8vVxR4pfRx\"),\n  scale: 9,\n});\n\nexport const gofxToken: OrcaToken = Object.freeze({\n  tag: \"GOFX\",\n  name: \"GooseFX\",\n  mint: new PublicKey(\"GFX1ZjR2P15tmrSwow6FjyDYcEkoFb4p4gJCpLBjaxHD\"),\n  scale: 9,\n});\n\nexport const grapeToken: OrcaToken = Object.freeze({\n  tag: \"GRAPE\",\n  name: \"Grape\",\n  mint: new PublicKey(\"8upjSpvjcdpuzhfR1zriwg5NXkwDruejqNE9WNbPRtyA\"),\n  scale: 6,\n});\n\nexport const gstToken: OrcaToken = Object.freeze({\n  tag: \"GST\",\n  name: \"GST\",\n  mint: new PublicKey(\"AFbX8oGjGpmVFywbVouvhQSRmiW2aR1mohfahi4Y2AdB\"),\n  scale: 9,\n});\n\nexport const hbbToken: OrcaToken = Object.freeze({\n  tag: \"HBB\",\n  name: \"Hubble\",\n  mint: new PublicKey(\"HBB111SCo9jkCejsZfz8Ec8nH7T6THF8KEKSnvwT6XK6\"),\n  scale: 6,\n});\n\nexport const hdgToken: OrcaToken = Object.freeze({\n  tag: \"HDG\",\n  name: \"Hedge Token\",\n  mint: new PublicKey(\"5PmpMzWjraf3kSsGEKtqdUsCoLhptg4yriZ17LKKdBBy\"),\n  scale: 9,\n});\n\nexport const ivnToken: OrcaToken = Object.freeze({\n  tag: \"IVN\",\n  name: \"Investin\",\n  mint: new PublicKey(\"iVNcrNE9BRZBC9Aqf753iZiZfbszeAVUoikgT9yvr2a\"),\n  scale: 6,\n});\n\nexport const jetToken: OrcaToken = Object.freeze({\n  tag: \"JET\",\n  name: \"JET\",\n  mint: new PublicKey(\"JET6zMJWkCN9tpRT2v2jfAmm5VnQFDpUBCyaKojmGtz\"),\n  scale: 9,\n});\n\nexport const jsolToken: OrcaToken = Object.freeze({\n  tag: \"JSOL\",\n  name: \"JPool\",\n  mint: new PublicKey(\"7Q2afV64in6N6SeZsAAB81TJzwDoD6zpqmHkzi9Dcavn\"),\n  scale: 9,\n});\n\nexport const kinToken: OrcaToken = Object.freeze({\n  tag: \"KIN\",\n  name: \"Kin\",\n  mint: new PublicKey(\"kinXdEcpDQeHPEuQnqmUgtYykqKGVFq6CeVX5iAHJq6\"),\n  scale: 5,\n});\n\nexport const kuroToken: OrcaToken = Object.freeze({\n  tag: \"KURO\",\n  name: \"Kurobi\",\n  mint: new PublicKey(\"2Kc38rfQ49DFaKHQaWbijkE7fcymUMLY5guUiUsDmFfn\"),\n  scale: 6,\n});\n\nexport const larixToken: OrcaToken = Object.freeze({\n  tag: \"LARIX\",\n  name: \"Larix\",\n  mint: new PublicKey(\"Lrxqnh6ZHKbGy3dcrCED43nsoLkM1LTzU2jRfWe8qUC\"),\n  scale: 6,\n});\n\nexport const liqToken: OrcaToken = Object.freeze({\n  tag: \"LIQ\",\n  name: \"LIQ Protocol\",\n  mint: new PublicKey(\"4wjPQJ6PrkC4dHhYghwJzGBVP78DkBzA2U3kHoFNBuhj\"),\n  scale: 6,\n});\n\nexport const mapsToken: OrcaToken = Object.freeze({\n  tag: \"MAPS\",\n  name: \"MAPS\",\n  mint: new PublicKey(\"MAPS41MDahZ9QdKXhVa4dWB9RuyfV4XqhyAZ8XcYepb\"),\n  scale: 6,\n});\n\nexport const meanToken: OrcaToken = Object.freeze({\n  tag: \"MEAN\",\n  name: \"Meanfi\",\n  mint: new PublicKey(\"MEANeD3XDdUmNMsRGjASkSWdC8prLYsoRJ61pPeHctD\"),\n  scale: 6,\n});\n\nexport const mediaToken: OrcaToken = Object.freeze({\n  tag: \"MEDIA\",\n  name: \"Media Network\",\n  mint: new PublicKey(\"ETAtLmCmsoiEEKfNrHKJ2kYy3MoABhU6NQvpSfij5tDs\"),\n  scale: 6,\n});\n\nexport const merToken: OrcaToken = Object.freeze({\n  tag: \"MER\",\n  name: \"Mercurial\",\n  mint: new PublicKey(\"MERt85fc5boKw3BW1eYdxonEuJNvXbiMbs6hvheau5K\"),\n  scale: 6,\n});\n\nexport const mmaToken: OrcaToken = Object.freeze({\n  tag: \"MMA\",\n  name: \"MMA Gaming\",\n  mint: new PublicKey(\"MMAx26JtJgSWv6yH48nEHCGZcVvRbf9Lt9ALa7jSipe\"),\n  scale: 9,\n});\n\nexport const mndeToken: OrcaToken = Object.freeze({\n  tag: \"MNDE\",\n  name: \"Marinade Governance\",\n  mint: new PublicKey(\"MNDEFzGvMt87ueuHvVU9VcTqsAP5b3fTGPsHuuPA5ey\"),\n  scale: 9,\n});\n\nexport const mngoToken: OrcaToken = Object.freeze({\n  tag: \"MNGO\",\n  name: \"Mango Markets\",\n  mint: new PublicKey(\"MangoCzJ36AjZyKwVj3VnYU4GTonjfVEnJmvvWaxLac\"),\n  scale: 6,\n});\n\nexport const ninjaToken: OrcaToken = Object.freeze({\n  tag: \"NINJA\",\n  name: \"NINJA\",\n  mint: new PublicKey(\"FgX1WD9WzMU3yLwXaFSarPfkgzjLb2DZCqmkx9ExpuvJ\"),\n  scale: 6,\n});\n\nexport const novaToken: OrcaToken = Object.freeze({\n  tag: \"NOVA\",\n  name: \"Nova Finance\",\n  mint: new PublicKey(\"BDrL8huis6S5tpmozaAaT5zhE5A7ZBAB2jMMvpKEeF8A\"),\n  scale: 9,\n});\n\nexport const oogiToken: OrcaToken = Object.freeze({\n  tag: \"OOGI\",\n  name: \"OOGI\",\n  mint: new PublicKey(\"H7Qc9APCWWGDVxGD5fJHmLTmdEgT9GFatAKFNg6sHh8A\"),\n  scale: 9,\n});\n\nexport const orcaToken: OrcaToken = Object.freeze({\n  tag: \"ORCA\",\n  name: \"Orca\",\n  mint: new PublicKey(\"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\"),\n  scale: 6,\n});\n\nexport const oxyToken: OrcaToken = Object.freeze({\n  tag: \"OXY\",\n  name: \"Oxygen\",\n  mint: new PublicKey(\"z3dn17yLaGMKffVogeFHQ9zWVcXgqgf3PQnDsNs2g6M\"),\n  scale: 6,\n});\n\nexport const paiToken: OrcaToken = Object.freeze({\n  tag: \"PAI\",\n  name: \"Parrot Stable\",\n  mint: new PublicKey(\"Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS\"),\n  scale: 6,\n});\n\nexport const polisToken: OrcaToken = Object.freeze({\n  tag: \"POLIS\",\n  name: \"Star Atlas DAO\",\n  mint: new PublicKey(\"poLisWXnNRwC6oBu1vHiuKQzFjGL4XDSu4g9qjz9qVk\"),\n  scale: 8,\n});\n\nexport const portToken: OrcaToken = Object.freeze({\n  tag: \"PORT\",\n  name: \"Port Finance\",\n  mint: new PublicKey(\"PoRTjZMPXb9T7dyU7tpLEZRQj7e6ssfAE62j2oQuc6y\"),\n  scale: 6,\n});\n\nexport const prtToken: OrcaToken = Object.freeze({\n  tag: \"PRT\",\n  name: \"Parrot Protocol\",\n  mint: new PublicKey(\"PRT88RkA4Kg5z7pKnezeNH4mafTvtQdfFgpQTGRjz44\"),\n  scale: 6,\n});\n\nexport const puffToken: OrcaToken = Object.freeze({\n  tag: \"PUFF\",\n  name: \"PUFF\",\n  mint: new PublicKey(\"G9tt98aYSznRk7jWsfuz9FnTdokxS6Brohdo9hSmjTRB\"),\n  scale: 9,\n});\n\nexport const rayToken: OrcaToken = Object.freeze({\n  tag: \"RAY\",\n  name: \"Raydium\",\n  mint: new PublicKey(\"4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R\"),\n  scale: 6,\n});\n\nexport const ropeToken: OrcaToken = Object.freeze({\n  tag: \"ROPE\",\n  name: \"Rope\",\n  mint: new PublicKey(\"8PMHT4swUMtBzgHnh5U564N5sjPSiUz2cjEQzFnnP1Fo\"),\n  scale: 9,\n});\n\nexport const runToken: OrcaToken = Object.freeze({\n  tag: \"RUN\",\n  name: \"Run\",\n  mint: new PublicKey(\"6F9XriABHfWhit6zmMUYAQBSy6XK5VF1cHXuW5LDpRtC\"),\n  scale: 9,\n});\n\nexport const samoToken: OrcaToken = Object.freeze({\n  tag: \"SAMO\",\n  name: \"Samoyedcoin\",\n  mint: new PublicKey(\"7xKXtg2CW87d97TXJSDpbD5jBkheTqA83TZRuJosgAsU\"),\n  scale: 9,\n});\n\nexport const saoToken: OrcaToken = Object.freeze({\n  tag: \"SAO\",\n  name: \"Sator\",\n  mint: new PublicKey(\"2HeykdKjzHKGm2LKHw8pDYwjKPiFEoXAz74dirhUgQvq\"),\n  scale: 9,\n});\n\nexport const sbToken: OrcaToken = Object.freeze({\n  tag: \"SB\",\n  name: \"SuperBonds\",\n  mint: new PublicKey(\"SuperbZyz7TsSdSoFAZ6RYHfAWe9NmjXBLVQpS8hqdx\"),\n  scale: 6,\n});\n\nexport const sbrToken: OrcaToken = Object.freeze({\n  tag: \"SBR\",\n  name: \"Saber\",\n  mint: new PublicKey(\"Saber2gLauYim4Mvftnrasomsv6NvAuncvMEZwcLpD1\"),\n  scale: 6,\n});\n\nexport const scyToken: OrcaToken = Object.freeze({\n  tag: \"SCY\",\n  name: \"Synchrony\",\n  mint: new PublicKey(\"SCYfrGCw8aDiqdgcpdGjV6jp4UVVQLuphxTDLNWu36f\"),\n  scale: 9,\n});\n\nexport const sdogeToken: OrcaToken = Object.freeze({\n  tag: \"SDOGE\",\n  name: \"SolDoge\",\n  mint: new PublicKey(\"8ymi88q5DtmdNTn2sPRNFkvMkszMHuLJ1e3RVdWjPa3s\"),\n  scale: 0,\n});\n\nexport const seededToken: OrcaToken = Object.freeze({\n  tag: \"SEEDED\",\n  name: \"Seeded Network\",\n  mint: new PublicKey(\"seedEDBqu63tJ7PFqvcbwvThrYUkQeqT6NLf81kLibs\"),\n  scale: 9,\n});\n\nexport const shdwToken: OrcaToken = Object.freeze({\n  tag: \"SHDW\",\n  name: \"Shadow\",\n  mint: new PublicKey(\"SHDWyBxihqiCj6YekG2GUr7wqKLeLAMK1gHZck9pL6y\"),\n  scale: 9,\n});\n\nexport const slcToken: OrcaToken = Object.freeze({\n  tag: \"SLC\",\n  name: \"Solice\",\n  mint: new PublicKey(\"METAmTMXwdb8gYzyCPfXXFmZZw4rUsXX58PNsDg7zjL\"),\n  scale: 6,\n});\n\nexport const slimToken: OrcaToken = Object.freeze({\n  tag: \"SLIM\",\n  name: \"Solanium\",\n  mint: new PublicKey(\"xxxxa1sKNGwFtw2kFn8XauW9xq8hBZ5kVtcSesTT9fW\"),\n  scale: 6,\n});\n\nexport const slndToken: OrcaToken = Object.freeze({\n  tag: \"SLND\",\n  name: \"Solend\",\n  mint: new PublicKey(\"SLNDpmoWTVADgEdndyvWzroNL7zSi1dF9PC3xHGtPwp\"),\n  scale: 6,\n});\n\nexport const slrsToken: OrcaToken = Object.freeze({\n  tag: \"SLRS\",\n  name: \"Solrise Finance\",\n  mint: new PublicKey(\"SLRSSpSLUTP7okbCUBYStWCo1vUgyt775faPqz8HUMr\"),\n  scale: 6,\n});\n\nexport const snyToken: OrcaToken = Object.freeze({\n  tag: \"SNY\",\n  name: \"SNY\",\n  mint: new PublicKey(\"4dmKkXNHdgYsXqBHCuMikNQWwVomZURhYvkkX5c4pQ7y\"),\n  scale: 6,\n});\n\nexport const solToken: OrcaToken = Object.freeze({\n  tag: \"SOL\",\n  name: \"Solana\",\n  mint: new PublicKey(\"So11111111111111111111111111111111111111112\"),\n  scale: 9,\n});\n\nexport const sonarToken: OrcaToken = Object.freeze({\n  tag: \"SONAR\",\n  name: \"SonarWatch\",\n  mint: new PublicKey(\"sonarX4VtVkQemriJeLm6CKeW3GDMyiBnnAEMw1MRAE\"),\n  scale: 9,\n});\n\nexport const srmToken: OrcaToken = Object.freeze({\n  tag: \"SRM\",\n  name: \"Serum\",\n  mint: new PublicKey(\"SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt\"),\n  scale: 6,\n});\n\nexport const stepToken: OrcaToken = Object.freeze({\n  tag: \"STEP\",\n  name: \"Step\",\n  mint: new PublicKey(\"StepAscQoEioFxxWGnh2sLBDFp9d8rvKz2Yp39iDpyT\"),\n  scale: 9,\n});\n\nexport const sunnyToken: OrcaToken = Object.freeze({\n  tag: \"SUNNY\",\n  name: \"Sunny Aggregator\",\n  mint: new PublicKey(\"SUNNYWgPQmFxe9wTZzNK7iPnJ3vYDrkgnxJRJm1s3ag\"),\n  scale: 6,\n});\n\nexport const sypToken: OrcaToken = Object.freeze({\n  tag: \"SYP\",\n  name: \"Sypool\",\n  mint: new PublicKey(\"FnKE9n6aGjQoNWRBZXy4RW6LZVao7qwBonUbiD7edUmZ\"),\n  scale: 9,\n});\n\nexport const takiToken: OrcaToken = Object.freeze({\n  tag: \"TAKI\",\n  name: \"Taki\",\n  mint: new PublicKey(\"Taki7fi3Zicv7Du1xNAWLaf6mRK7ikdn77HeGzgwvo4\"),\n  scale: 9,\n});\n\nexport const tttToken: OrcaToken = Object.freeze({\n  tag: \"TTT\",\n  name: \"TabTrader\",\n  mint: new PublicKey(\"FNFKRV3V8DtA3gVJN6UshMiLGYA8izxFwkNWmJbFjmRj\"),\n  scale: 6,\n});\n\nexport const tulipToken: OrcaToken = Object.freeze({\n  tag: \"TULIP\",\n  name: \"Tulip Protocol\",\n  mint: new PublicKey(\"TuLipcqtGVXP9XR62wM8WWCm6a9vhLs7T1uoWBk6FDs\"),\n  scale: 6,\n});\n\nexport const unqToken: OrcaToken = Object.freeze({\n  tag: \"UNQ\",\n  name: \"UNQ\",\n  mint: new PublicKey(\"UNQtEecZ5Zb4gSSVHCAWUQEoNnSVEbWiKCi1v9kdUJJ\"),\n  scale: 6,\n});\n\nexport const upsToken: OrcaToken = Object.freeze({\n  tag: \"UPS\",\n  name: \"UPFI Network\",\n  mint: new PublicKey(\"EwJN2GqUGXXzYmoAciwuABtorHczTA5LqbukKXV1viH7\"),\n  scale: 6,\n});\n\nexport const usdcToken: OrcaToken = Object.freeze({\n  tag: \"USDC\",\n  name: \"USD Coin\",\n  mint: new PublicKey(\"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\"),\n  scale: 6,\n});\n\nexport const usdhToken: OrcaToken = Object.freeze({\n  tag: \"USDH\",\n  name: \"USDH\",\n  mint: new PublicKey(\"USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX\"),\n  scale: 6,\n});\n\nexport const usdtToken: OrcaToken = Object.freeze({\n  tag: \"USDT\",\n  name: \"Tether USD\",\n  mint: new PublicKey(\"Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB\"),\n  scale: 6,\n});\n\nexport const ushToken: OrcaToken = Object.freeze({\n  tag: \"USH\",\n  name: \"Hedge USD\",\n  mint: new PublicKey(\"9iLH8T7zoWhY7sBmj1WK9ENbWdS1nL8n9wAxaeRitTa6\"),\n  scale: 9,\n});\n\nexport const uxpToken: OrcaToken = Object.freeze({\n  tag: \"UXP\",\n  name: \"UXD Protocol Token\",\n  mint: new PublicKey(\"UXPhBoR3qG4UCiGNJfV7MqhHyFqKN68g45GoYvAeL2M\"),\n  scale: 9,\n});\n\nexport const wagToken: OrcaToken = Object.freeze({\n  tag: \"WAG\",\n  name: \"Waggle\",\n  mint: new PublicKey(\"5tN42n9vMi6ubp67Uy4NnmM5DMZYN8aS8GeB3bEDHr6E\"),\n  scale: 9,\n});\n\nexport const wmpToken: OrcaToken = Object.freeze({\n  tag: \"WMP\",\n  name: \"Whalemap\",\n  mint: new PublicKey(\"BygDd5LURoqztD3xETc99WCxLUbTi6WYSht9XiBgZ4HW\"),\n  scale: 9,\n});\n\nexport const woofToken: OrcaToken = Object.freeze({\n  tag: \"WOOF\",\n  name: \"WOOF Token\",\n  mint: new PublicKey(\"9nEqaUcb16sQ3Tn1psbkWqyhPdLmfHWjKGymREjsAgTE\"),\n  scale: 6,\n});\n\nexport const zbcToken: OrcaToken = Object.freeze({\n  tag: \"ZBC\",\n  name: \"Zebec Protocol\",\n  mint: new PublicKey(\"zebeczgi5fSEtbpfQKVZKCJ3WgYXxjkMUkNNx7fLKAF\"),\n  scale: 9,\n});\n\nexport const zigToken: OrcaToken = Object.freeze({\n  tag: \"ZIG\",\n  name: \"Zignaly\",\n  mint: new PublicKey(\"ANqY8h3sRSwkC29FvGJenAh7VGRABVVx7Ls6Mq4BuGT\"),\n  scale: 9,\n});\n\nexport const daosolToken: OrcaToken = Object.freeze({\n  tag: \"daoSOL\",\n  name: \"daoSOL Token\",\n  mint: new PublicKey(\"GEJpt3Wjmr628FqXxTgxMce1pLntcPV4uFi8ksxMyPQh\"),\n  scale: 9,\n});\n\nexport const msolToken: OrcaToken = Object.freeze({\n  tag: \"mSOL\",\n  name: \"Marinade.finance\",\n  mint: new PublicKey(\"mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So\"),\n  scale: 9,\n});\n\nexport const psolToken: OrcaToken = Object.freeze({\n  tag: \"pSOL\",\n  name: \"pSOL\",\n  mint: new PublicKey(\"9EaLkQrbjmbbuZG9Wdpo8qfNUEjHATJFSycEmw6f1rGX\"),\n  scale: 9,\n});\n\nexport const srlyv2Token: OrcaToken = Object.freeze({\n  tag: \"sRLYv2\",\n  name: \"Rally (Solana)\",\n  mint: new PublicKey(\"RLYv2ubRMDLcGG2UyvPmnPmkfuQTsMbg4Jtygc7dmnq\"),\n  scale: 9,\n});\n\nexport const srlyToken: OrcaToken = Object.freeze({\n  tag: \"sRLY\",\n  name: \"Rally Solana\",\n  mint: new PublicKey(\"sRLY3migNrkC1HLgqotpvi66qGkdNedqPZ9TJpAQhyh\"),\n  scale: 9,\n});\n\nexport const scnsolToken: OrcaToken = Object.freeze({\n  tag: \"scnSOL\",\n  name: \"Socean Staked Sol\",\n  mint: new PublicKey(\"5oVNBeEEQvYi1cX3ir8Dx5n1P7pdxydbGF2X4TxVusJm\"),\n  scale: 9,\n});\n\nexport const stsolToken: OrcaToken = Object.freeze({\n  tag: \"stSOL\",\n  name: \"Lido Staked SOL\",\n  mint: new PublicKey(\"7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj\"),\n  scale: 9,\n});\n\nexport const whapiToken: OrcaToken = Object.freeze({\n  tag: \"wHAPI\",\n  name: \"HAPI\",\n  mint: new PublicKey(\"6VNKqgz9hk7zRShTFdg5AnkfKwZUcojzwAkzxSH3bnUm\"),\n  scale: 9,\n});\n\nexport const wldoToken: OrcaToken = Object.freeze({\n  tag: \"wLDO\",\n  name: \"Lido DAO\",\n  mint: new PublicKey(\"HZRCwxP2Vq9PCpPXooayhJ2bxTpo5xfpQrwB1svh332p\"),\n  scale: 8,\n});\n\nexport const wlunaToken: OrcaToken = Object.freeze({\n  tag: \"wLUNA\",\n  name: \"Terra\",\n  mint: new PublicKey(\"F6v4wfAdJB8D8p77bMXZgYt8TDKsYxLYxH5AFhUkYx9W\"),\n  scale: 6,\n});\n\nexport const wustToken: OrcaToken = Object.freeze({\n  tag: \"wUST\",\n  name: \"TerraUSD (Wormhole)\",\n  mint: new PublicKey(\"9vMJfxuKxXBoEa7rM12mYLMwTacLMLDJqHozw96WQL8i\"),\n  scale: 6,\n});\n\nexport const whethToken: OrcaToken = Object.freeze({\n  tag: \"whETH\",\n  name: \"Ethereum\",\n  mint: new PublicKey(\"7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs\"),\n  scale: 8,\n});\n\nexport const wstethToken: OrcaToken = Object.freeze({\n  tag: \"wstETH\",\n  name: \"Lido Staked Ether\",\n  mint: new PublicKey(\"ZScHuTtqZukUrtZS43teTKGs2VqkKL8k4QCouR2n6Uo\"),\n  scale: 8,\n});\n"
  },
  {
    "path": "src/index.ts",
    "content": "export * from \"./public\";\n"
  },
  {
    "path": "src/model/orca/farm/farm-types.ts",
    "content": "import { PublicKey } from \"@solana/web3.js\";\n\n/**\n * An Orca aquafarm token\n * @param address The farm account address\n * @param farmTokenMint Mint address for the farm token\n * @param rewardTokenMint Mint address for the farm reward token\n * @param rewardTokenDecimals Number of decimal places for the reward token\n * @param baseTokenMint Mint address for the base token\n * @param baseTokenDecimals Number of decimal places for the base token\n */\nexport type OrcaFarmParams = {\n  address: PublicKey;\n  farmTokenMint: PublicKey;\n  rewardTokenMint: PublicKey;\n  rewardTokenDecimals: number;\n  baseTokenMint: PublicKey;\n  baseTokenDecimals: number;\n};\n"
  },
  {
    "path": "src/model/orca/farm/orca-farm.ts",
    "content": "import { Aquafarm, fetchGlobalFarms, fetchUserFarms, getUserFarmAddress } from \"@orca-so/aquafarm\";\nimport { TOKEN_PROGRAM_ID, u64 } from \"@solana/spl-token\";\nimport { Connection, Keypair, PublicKey } from \"@solana/web3.js\";\nimport Decimal from \"decimal.js\";\nimport {\n  deriveAssociatedTokenAddress,\n  deserializeAccount,\n  OrcaU64,\n  ORCA_FARM_ID,\n  resolveOrCreateAssociatedTokenAddress,\n  TransactionBuilder,\n  TransactionPayload,\n  U64Utils,\n} from \"../../..\";\nimport { OrcaFarm, ZERO } from \"../../../public/\";\nimport {\n  createFarmConvertTokensInstruction,\n  createFarmHarvestRewardInstruction,\n  createFarmRevertTokensInstruction,\n  createInitUserFarmInstruction,\n} from \"../../../public/utils/web3/instructions/farm-instructions\";\nimport { createApprovalInstruction } from \"../../../public/utils/web3/instructions/pool-instructions\";\nimport { Owner } from \"../../../public/utils/web3/key-utils\";\nimport { OrcaFarmParams } from \"./farm-types\";\n\nexport class OrcaFarmImpl implements OrcaFarm {\n  private connection: Connection;\n  private farmParams: OrcaFarmParams;\n\n  constructor(connection: Connection, config: OrcaFarmParams) {\n    this.connection = connection;\n    this.farmParams = config;\n  }\n\n  public async getFarmBalance(owner: PublicKey): Promise<OrcaU64> {\n    const address = await deriveAssociatedTokenAddress(owner, this.farmParams.farmTokenMint);\n\n    const accountInfo = await this.connection.getAccountInfo(address);\n\n    // User does not have a balance for this account\n    if (accountInfo == undefined) {\n      return OrcaU64.fromNumber(0, this.farmParams.baseTokenDecimals);\n    }\n    const result = deserializeAccount(accountInfo?.data);\n    if (result == undefined) {\n      throw new Error(\"Failed to parse user account for LP token.\");\n    }\n\n    return OrcaU64.fromU64(result.amount, this.farmParams.baseTokenDecimals);\n  }\n\n  public async getFarmSupply(): Promise<OrcaU64> {\n    const context = await this.connection.getTokenSupply(this.farmParams.farmTokenMint);\n\n    const amt = new u64(context.value.amount);\n\n    return OrcaU64.fromU64(amt, this.farmParams.baseTokenDecimals);\n  }\n\n  public async deposit(\n    owner: Keypair | PublicKey,\n    baseTokenAmount: Decimal | OrcaU64\n  ): Promise<TransactionPayload> {\n    const _owner = new Owner(owner);\n    const ownerAddress = _owner.publicKey;\n\n    const baseTokenAmount_U64 = U64Utils.toFarmU64(\n      baseTokenAmount,\n      this.farmParams,\n      \"baseTokenAmount\"\n    );\n\n    const { address: farmAddress, rewardTokenMint } = this.farmParams;\n    const userFarmPublicKey = (\n      await getUserFarmAddress(farmAddress, ownerAddress, TOKEN_PROGRAM_ID, ORCA_FARM_ID)\n    )[0];\n\n    const globalFarms = await fetchGlobalFarms(this.connection, [farmAddress], ORCA_FARM_ID);\n    const userFarms = await fetchUserFarms(\n      this.connection,\n      ownerAddress,\n      [farmAddress],\n      ORCA_FARM_ID\n    );\n\n    if (!globalFarms) {\n      throw new Error(\"Failed to get globalFarms information\");\n    }\n    const farm = new Aquafarm(globalFarms[0], ORCA_FARM_ID, userFarms && userFarms[0]);\n\n    // If the user lacks the user farm, create it\n    const initUserFarmInstruction = await createInitUserFarmInstruction(\n      farm,\n      userFarmPublicKey,\n      _owner\n    );\n\n    // If the user lacks the farm token account, create it\n    const { address: userFarmTokenPublicKey, ...resolveFarmTokenInstructions } =\n      await resolveOrCreateAssociatedTokenAddress(\n        this.connection,\n        _owner,\n        farm.globalFarm.farmTokenMint\n      );\n\n    // If the user lacks the reward token account, create it\n    const { address: userRewardTokenPublicKey, ...resolveRewardTokenInstructions } =\n      await resolveOrCreateAssociatedTokenAddress(this.connection, _owner, rewardTokenMint);\n\n    // If the user lacks the base token account, create it\n    const { address: userBaseTokenPublicKey, ...resolveBaseTokenInstructions } =\n      await resolveOrCreateAssociatedTokenAddress(\n        this.connection,\n        _owner,\n        this.farmParams.baseTokenMint\n      );\n\n    // Approve transfer of base token to be converted to farm tokens\n    const { userTransferAuthority, ...transferBaseTokenInstruction } = createApprovalInstruction(\n      ownerAddress,\n      baseTokenAmount_U64,\n      userBaseTokenPublicKey\n    );\n\n    // Convert base tokens to farm tokens\n    const convertToFarmTokens = await createFarmConvertTokensInstruction(\n      farm,\n      userTransferAuthority.publicKey,\n      userBaseTokenPublicKey,\n      userFarmTokenPublicKey,\n      userRewardTokenPublicKey,\n      baseTokenAmount_U64,\n      userFarmPublicKey,\n      _owner\n    );\n\n    return await new TransactionBuilder(this.connection, ownerAddress, _owner)\n      .addInstruction(initUserFarmInstruction)\n      .addInstruction(resolveFarmTokenInstructions)\n      .addInstruction(resolveBaseTokenInstructions)\n      .addInstruction(resolveRewardTokenInstructions)\n      .addInstruction(transferBaseTokenInstruction)\n      .addInstruction(convertToFarmTokens)\n      .build();\n  }\n\n  public async withdraw(\n    owner: Keypair | PublicKey,\n    baseTokenAmount: Decimal | OrcaU64\n  ): Promise<TransactionPayload> {\n    const _owner = new Owner(owner);\n    const ownerAddress = _owner.publicKey;\n\n    const baseTokenAmount_U64 = U64Utils.toFarmU64(\n      baseTokenAmount,\n      this.farmParams,\n      \"baseTokenAmount\"\n    );\n\n    const { address: farmAddress, rewardTokenMint } = this.farmParams;\n    const userFarmPublicKey = (\n      await getUserFarmAddress(farmAddress, ownerAddress, TOKEN_PROGRAM_ID, ORCA_FARM_ID)\n    )[0];\n\n    const globalFarms = await fetchGlobalFarms(this.connection, [farmAddress], ORCA_FARM_ID);\n    const userFarms = await fetchUserFarms(\n      this.connection,\n      ownerAddress,\n      [farmAddress],\n      ORCA_FARM_ID\n    );\n\n    if (!globalFarms) {\n      throw new Error(\"Failed to get globalFarms information\");\n    }\n    const farm = new Aquafarm(globalFarms[0], ORCA_FARM_ID, userFarms && userFarms[0]);\n\n    if (!farm.isUserFarmInitialized()) {\n      throw new Error(\"Failed to get userFarm information. Warning: withdraw from deposit address\");\n    }\n\n    // If the user lacks the farm token account, create it\n    const { address: userFarmTokenPublicKey, ...resolveFarmTokenInstructions } =\n      await resolveOrCreateAssociatedTokenAddress(\n        this.connection,\n        _owner,\n        farm.globalFarm.farmTokenMint\n      );\n\n    // If the user lacks the reward token account, create it\n    const { address: userRewardTokenPublicKey, ...resolveRewardTokenInstructions } =\n      await resolveOrCreateAssociatedTokenAddress(this.connection, _owner, rewardTokenMint);\n\n    // Get user's baseToken token account\n    const { address: userBaseTokenPublicKey, ...resolveBaseTokenInstructions } =\n      await resolveOrCreateAssociatedTokenAddress(\n        this.connection,\n        _owner,\n        this.farmParams.baseTokenMint\n      );\n\n    // Approve transfer of farm tokens to be reverted to base tokens\n    const { userTransferAuthority, ...transferFarmTokenInstruction } = createApprovalInstruction(\n      ownerAddress,\n      baseTokenAmount_U64,\n      userFarmTokenPublicKey\n    );\n\n    // Revert farm tokens to base tokens\n    const revertFromFarmTokens = await createFarmRevertTokensInstruction(\n      farm,\n      userTransferAuthority.publicKey,\n      userBaseTokenPublicKey,\n      userFarmTokenPublicKey,\n      userRewardTokenPublicKey,\n      baseTokenAmount_U64,\n      _owner\n    );\n\n    return await new TransactionBuilder(this.connection, ownerAddress, _owner)\n      .addInstruction(resolveFarmTokenInstructions)\n      .addInstruction(resolveRewardTokenInstructions)\n      .addInstruction(resolveBaseTokenInstructions)\n      .addInstruction(transferFarmTokenInstruction)\n      .addInstruction(revertFromFarmTokens)\n      .build();\n  }\n\n  public async getHarvestableAmount(ownerPublicKey: PublicKey): Promise<OrcaU64> {\n    const { address: farmAddress, baseTokenDecimals } = this.farmParams;\n\n    const globalFarms = await fetchGlobalFarms(this.connection, [farmAddress], ORCA_FARM_ID);\n    const userFarms = await fetchUserFarms(\n      this.connection,\n      ownerPublicKey,\n      [farmAddress],\n      ORCA_FARM_ID\n    );\n\n    if (!globalFarms) {\n      throw new Error(\"Failed to get globalFarms information\");\n    }\n\n    const farm = new Aquafarm(globalFarms[0], ORCA_FARM_ID, userFarms && userFarms[0]);\n\n    if (!farm.isUserFarmInitialized()) {\n      return OrcaU64.fromU64(ZERO, baseTokenDecimals);\n    }\n\n    const farmSupply = await this.getFarmSupply();\n    const harvestableAmount = farm.getCurrentHarvestableAmount(farmSupply.toU64()) ?? ZERO;\n    return OrcaU64.fromU64(harvestableAmount, baseTokenDecimals);\n  }\n\n  public async harvest(owner: Keypair | PublicKey): Promise<TransactionPayload> {\n    const _owner = new Owner(owner);\n    const ownerAddress = _owner.publicKey;\n\n    const { address: farmAddress, rewardTokenMint } = this.farmParams;\n\n    const globalFarms = await fetchGlobalFarms(this.connection, [farmAddress], ORCA_FARM_ID);\n    const userFarms = await fetchUserFarms(\n      this.connection,\n      ownerAddress,\n      [farmAddress],\n      ORCA_FARM_ID\n    );\n\n    if (!globalFarms) {\n      throw new Error(\"Failed to get globalFarms information\");\n    }\n\n    const farm = new Aquafarm(globalFarms[0], ORCA_FARM_ID, userFarms && userFarms[0]);\n\n    if (!farm.isUserFarmInitialized()) {\n      throw new Error(\"Failed to get userFarm information\");\n    }\n\n    // If the user lacks the reward token account, create it\n    const { address: userRewardTokenPublicKey, ...resolveRewardTokenInstructions } =\n      await resolveOrCreateAssociatedTokenAddress(this.connection, _owner, rewardTokenMint);\n\n    const harvestRewardInstruction = await createFarmHarvestRewardInstruction(\n      farm,\n      userRewardTokenPublicKey,\n      _owner\n    );\n\n    return await new TransactionBuilder(this.connection, ownerAddress, _owner)\n      .addInstruction(resolveRewardTokenInstructions)\n      .addInstruction(harvestRewardInstruction)\n      .build();\n  }\n\n  public async getDailyEmissions(): Promise<OrcaU64> {\n    const { address, rewardTokenDecimals } = this.farmParams;\n\n    const globalFarms = await fetchGlobalFarms(this.connection, [address], ORCA_FARM_ID);\n\n    if (!globalFarms) {\n      throw new Error(\"Failed to get globalFarms information\");\n    }\n\n    const value = new Decimal(globalFarms[0].emissionsPerSecondNumerator.toString())\n      .mul(60 * 60 * 24)\n      .div(globalFarms[0].emissionsPerSecondDenominator.toString())\n      .div(new Decimal(10).pow(rewardTokenDecimals));\n\n    return OrcaU64.fromDecimal(value, rewardTokenDecimals);\n  }\n}\n"
  },
  {
    "path": "src/model/orca/orca-impl.ts",
    "content": "import { Connection } from \"@solana/web3.js\";\nimport { Orca, OrcaFarm, OrcaPool, OrcaPoolConfig, OrcaFarmConfig, Network } from \"../../public\";\nimport { OrcaFactory } from \"../orca-factory\";\n\nexport class OrcaImpl implements Orca {\n  private connection: Connection;\n  private network: Network;\n  private factory: OrcaFactory;\n\n  constructor(connection: Connection, network: Network) {\n    this.connection = connection;\n    this.network = network;\n    this.factory = new OrcaFactory();\n  }\n\n  getPool(pool: OrcaPoolConfig): OrcaPool {\n    return this.factory.getPool(this.connection, this.network, pool);\n  }\n\n  getFarm(farm: OrcaFarmConfig): OrcaFarm {\n    return this.factory.getFarm(this.connection, this.network, farm);\n  }\n}\n"
  },
  {
    "path": "src/model/orca/pool/orca-pool.ts",
    "content": "import { u64 } from \"@solana/spl-token\";\nimport { Connection, PublicKey, Keypair } from \"@solana/web3.js\";\nimport Decimal from \"decimal.js\";\nimport { defaultSlippagePercentage } from \"../../../constants/orca-defaults\";\n\nimport {\n  OrcaU64,\n  deriveAssociatedTokenAddress,\n  deserializeAccount,\n  getTokens,\n  U64Utils,\n  PoolTokenCount,\n  getTokenCount,\n  TransactionBuilder,\n  OrcaPool,\n  OrcaToken,\n  OrcaPoolToken,\n  Quote,\n  TransactionPayload,\n  Percentage,\n  resolveOrCreateAssociatedTokenAddress,\n  ZERO,\n  DepositQuote,\n  WithdrawQuote,\n  DecimalUtil,\n  Network,\n  ORCA_TOKEN_SWAP_ID_DEVNET,\n  ORCA_TOKEN_SWAP_ID,\n} from \"../../../public\";\nimport {\n  createApprovalInstruction,\n  createDepositInstruction,\n  createSwapInstruction,\n  createWithdrawInstruction,\n} from \"../../../public/utils/web3/instructions/pool-instructions\";\nimport { Owner } from \"../../../public/utils/web3/key-utils\";\nimport { QuotePoolParams, QuoteBuilderFactory } from \"../../quote/quote-builder\";\nimport { OrcaPoolParams } from \"./pool-types\";\n\nexport class OrcaPoolImpl implements OrcaPool {\n  private connection: Connection;\n  private poolParams: OrcaPoolParams;\n  private orcaTokenSwapId: PublicKey;\n\n  constructor(connection: Connection, network: Network, config: OrcaPoolParams) {\n    this.connection = connection;\n    this.poolParams = config;\n\n    this.orcaTokenSwapId =\n      network === Network.MAINNET ? ORCA_TOKEN_SWAP_ID : ORCA_TOKEN_SWAP_ID_DEVNET;\n  }\n\n  public getTokenA(): OrcaPoolToken {\n    const tokenId = this.poolParams.tokenIds[0];\n    return this.poolParams.tokens[tokenId];\n  }\n\n  public getTokenB(): OrcaPoolToken {\n    const tokenId = this.poolParams.tokenIds[1];\n    return this.poolParams.tokens[tokenId];\n  }\n\n  public getPoolTokenMint(): PublicKey {\n    return this.poolParams.poolTokenMint;\n  }\n\n  public async getLPBalance(owner: PublicKey): Promise<OrcaU64> {\n    const address = await deriveAssociatedTokenAddress(owner, this.poolParams.poolTokenMint);\n\n    const accountInfo = await this.connection.getAccountInfo(address);\n\n    // User does not have a balance for this account\n    if (accountInfo == undefined) {\n      return OrcaU64.fromNumber(0, this.poolParams.poolTokenDecimals);\n    }\n    const result = deserializeAccount(accountInfo?.data);\n    if (result == undefined) {\n      throw new Error(\"Failed to parse user account for LP token.\");\n    }\n\n    return OrcaU64.fromU64(result.amount, this.poolParams.poolTokenDecimals);\n  }\n\n  public async getLPSupply(): Promise<OrcaU64> {\n    const context = await this.connection.getTokenSupply(this.poolParams.poolTokenMint);\n\n    const amt = new u64(context.value.amount);\n\n    return OrcaU64.fromU64(amt, this.poolParams.poolTokenDecimals);\n  }\n\n  public async getQuote(\n    inputToken: OrcaToken,\n    inputAmount: Decimal | OrcaU64,\n    slippage?: Decimal\n  ): Promise<Quote> {\n    const { inputPoolToken, outputPoolToken } = getTokens(\n      this.poolParams,\n      inputToken.mint.toString()\n    );\n\n    const { inputTokenCount, outputTokenCount } = await getTokenCount(\n      this.connection,\n      this.poolParams,\n      inputPoolToken,\n      outputPoolToken\n    );\n\n    return this.getQuoteWithPoolAmounts(\n      inputToken,\n      inputAmount,\n      inputTokenCount,\n      outputTokenCount,\n      slippage\n    );\n  }\n\n  public async getQuoteWithPoolAmounts(\n    inputToken: OrcaToken,\n    inputAmount: Decimal | OrcaU64,\n    inputTokenPoolAmount: u64,\n    outputTokenPoolAmount: u64,\n    slippage?: Decimal\n  ): Promise<Quote> {\n    const slippageTolerance =\n      slippage === undefined ? defaultSlippagePercentage : Percentage.fromDecimal(slippage);\n\n    const feeStructure = this.poolParams.feeStructure;\n\n    const { inputPoolToken, outputPoolToken } = getTokens(\n      this.poolParams,\n      inputToken.mint.toString()\n    );\n    const inputAmountU64 = U64Utils.toTokenU64(inputAmount, inputPoolToken, \"inputAmount\");\n\n    const {\n      value: { feeCalculator },\n    } = await this.connection.getRecentBlockhashAndContext(\"singleGossip\");\n\n    const quoteParams: QuotePoolParams = {\n      inputToken: inputPoolToken,\n      outputToken: outputPoolToken,\n      inputTokenCount: inputTokenPoolAmount,\n      outputTokenCount: outputTokenPoolAmount,\n      feeStructure: feeStructure,\n      slippageTolerance: slippageTolerance,\n      lamportsPerSignature: feeCalculator.lamportsPerSignature,\n      amp: this.poolParams.amp !== undefined ? new u64(this.poolParams.amp) : undefined,\n    };\n\n    const quoteBuilder = QuoteBuilderFactory.getBuilder(this.poolParams.curveType);\n\n    const quote = quoteBuilder?.buildQuote(quoteParams, inputAmountU64);\n\n    if (quote == undefined) {\n      throw new Error(\"Failed to get quote!\");\n    }\n\n    return quote;\n  }\n\n  public async swap(\n    owner: Keypair | PublicKey,\n    inputToken: OrcaToken,\n    amountIn: Decimal | OrcaU64,\n    minimumAmountOut: Decimal | OrcaU64\n  ): Promise<TransactionPayload> {\n    const _owner = new Owner(owner);\n\n    const ownerAddress = _owner.publicKey;\n\n    const { inputPoolToken, outputPoolToken } = getTokens(\n      this.poolParams,\n      inputToken.mint.toString()\n    );\n    const amountInU64 = U64Utils.toTokenU64(amountIn, inputPoolToken, \"amountIn\");\n    const minimumAmountOutU64 = U64Utils.toTokenU64(\n      minimumAmountOut,\n      outputPoolToken,\n      \"minimumAmountOut\"\n    );\n\n    const { address: inputPoolTokenUserAddress, ...resolveInputAddrInstructions } =\n      await resolveOrCreateAssociatedTokenAddress(\n        this.connection,\n        _owner,\n        inputPoolToken.mint,\n        amountInU64\n      );\n\n    const { address: outputPoolTokenUserAddress, ...resolveOutputAddrInstructions } =\n      await resolveOrCreateAssociatedTokenAddress(this.connection, _owner, outputPoolToken.mint);\n\n    if (inputPoolTokenUserAddress === undefined || outputPoolTokenUserAddress === undefined) {\n      throw new Error(\"Unable to derive input / output token associated address.\");\n    }\n\n    const { userTransferAuthority, ...approvalInstruction } = createApprovalInstruction(\n      ownerAddress,\n      amountInU64,\n      inputPoolTokenUserAddress\n    );\n\n    const swapInstruction = await createSwapInstruction(\n      this.poolParams,\n      _owner,\n      inputPoolToken,\n      inputPoolTokenUserAddress,\n      outputPoolToken,\n      outputPoolTokenUserAddress,\n      amountInU64,\n      minimumAmountOutU64,\n      userTransferAuthority.publicKey,\n      this.orcaTokenSwapId\n    );\n\n    return await new TransactionBuilder(this.connection, ownerAddress, _owner)\n      .addInstruction(resolveInputAddrInstructions)\n      .addInstruction(resolveOutputAddrInstructions)\n      .addInstruction(approvalInstruction)\n      .addInstruction(swapInstruction)\n      .build();\n  }\n\n  public async getDepositQuote(\n    maxTokenAIn: Decimal | OrcaU64,\n    maxTokenBIn: Decimal | OrcaU64,\n    slippage?: Decimal\n  ): Promise<DepositQuote> {\n    const slippageTolerance =\n      slippage === undefined ? defaultSlippagePercentage : Percentage.fromDecimal(slippage);\n\n    const maxTokenAIn_U64 = U64Utils.toTokenU64(maxTokenAIn, this.getTokenA(), \"maxTokenAIn\");\n    const maxTokenBIn_U64 = U64Utils.toTokenU64(maxTokenBIn, this.getTokenB(), \"maxTokenBIn\");\n\n    const { inputTokenCount: tokenAAmount, outputTokenCount: tokenBAmount } = await getTokenCount(\n      this.connection,\n      this.poolParams,\n      this.getTokenA(),\n      this.getTokenB()\n    );\n    const lpSupply = await this.getLPSupply();\n\n    if (tokenAAmount.eq(ZERO) || tokenBAmount.eq(ZERO)) {\n      return {\n        minPoolTokenAmountOut: OrcaU64.fromU64(ZERO, lpSupply.scale),\n        maxTokenAIn: OrcaU64.fromU64(maxTokenAIn_U64, this.getTokenA().scale),\n        maxTokenBIn: OrcaU64.fromU64(maxTokenBIn_U64, this.getTokenB().scale),\n      };\n    }\n\n    const poolTokenAmountWithA = maxTokenAIn_U64\n      .mul(slippageTolerance.denominator)\n      .mul(lpSupply.toU64())\n      .div(tokenAAmount)\n      .div(slippageTolerance.numerator.add(slippageTolerance.denominator));\n\n    const poolTokenAmountWithB = maxTokenBIn_U64\n      .mul(slippageTolerance.denominator)\n      .mul(lpSupply.toU64())\n      .div(tokenBAmount)\n      .div(slippageTolerance.numerator.add(slippageTolerance.denominator));\n\n    // Pick the smaller value of the two to calculate the minimum poolTokenAmount out\n    const minPoolTokenAmountOut_U64 = poolTokenAmountWithA.gt(poolTokenAmountWithB)\n      ? poolTokenAmountWithB\n      : poolTokenAmountWithA;\n\n    return {\n      minPoolTokenAmountOut: OrcaU64.fromU64(minPoolTokenAmountOut_U64, lpSupply.scale),\n      maxTokenAIn: OrcaU64.fromU64(maxTokenAIn_U64, this.getTokenA().scale),\n      maxTokenBIn: OrcaU64.fromU64(maxTokenBIn_U64, this.getTokenB().scale),\n    };\n  }\n\n  public async deposit(\n    owner: Keypair | PublicKey,\n    maxTokenAIn: Decimal | OrcaU64,\n    maxTokenBIn: Decimal | OrcaU64,\n    minPoolTokenAmountOut: Decimal | OrcaU64\n  ): Promise<TransactionPayload> {\n    const _owner = new Owner(owner);\n    const ownerAddress = _owner.publicKey;\n\n    const tokenA = this.getTokenA();\n    const tokenB = this.getTokenB();\n\n    const maxTokenAIn_U64 = U64Utils.toTokenU64(maxTokenAIn, tokenA, \"maxTokenAIn\");\n    const maxTokenBIn_U64 = U64Utils.toTokenU64(maxTokenBIn, tokenB, \"maxTokenBIn\");\n    const minPoolTokenAmountOut_U64 = U64Utils.toPoolU64(\n      minPoolTokenAmountOut,\n      this.poolParams,\n      \"poolTokenAmount\"\n    );\n\n    // If tokenA is SOL, this will create a new wSOL account with maxTokenAIn_U64\n    // Otherwise, get tokenA's associated token account\n    const { address: userTokenAPublicKey, ...resolveTokenAInstrucitons } =\n      await resolveOrCreateAssociatedTokenAddress(\n        this.connection,\n        _owner,\n        tokenA.mint,\n        maxTokenAIn_U64\n      );\n\n    // If tokenB is SOL, this will create a new wSOL account with maxTokenBIn_U64\n    // Otherwise, get tokenB's associated token account\n    const { address: userTokenBPublicKey, ...resolveTokenBInstrucitons } =\n      await resolveOrCreateAssociatedTokenAddress(\n        this.connection,\n        _owner,\n        tokenB.mint,\n        maxTokenBIn_U64\n      );\n\n    // If the user lacks the pool token account, create it\n    const { address: userPoolTokenPublicKey, ...resolvePoolTokenInstructions } =\n      await resolveOrCreateAssociatedTokenAddress(\n        this.connection,\n        _owner,\n        this.poolParams.poolTokenMint\n      );\n\n    // Approve transfer of the tokens being deposited\n    const { userTransferAuthority, ...transferTokenAInstruction } = createApprovalInstruction(\n      ownerAddress,\n      maxTokenAIn_U64,\n      userTokenAPublicKey\n    );\n    const { ...transferTokenBInstruction } = createApprovalInstruction(\n      ownerAddress,\n      maxTokenBIn_U64,\n      userTokenBPublicKey,\n      userTransferAuthority\n    );\n\n    // Create the deposit instruction\n    const depositInstruction = await createDepositInstruction(\n      this.poolParams,\n      userTransferAuthority.publicKey,\n      userTokenAPublicKey,\n      userTokenBPublicKey,\n      userPoolTokenPublicKey,\n      minPoolTokenAmountOut_U64,\n      maxTokenAIn_U64,\n      maxTokenBIn_U64,\n      tokenA.addr,\n      tokenB.addr,\n      this.orcaTokenSwapId,\n      _owner\n    );\n\n    return await new TransactionBuilder(this.connection, ownerAddress, _owner)\n      .addInstruction(resolveTokenAInstrucitons)\n      .addInstruction(resolveTokenBInstrucitons)\n      .addInstruction(resolvePoolTokenInstructions)\n      .addInstruction(transferTokenAInstruction)\n      .addInstruction(transferTokenBInstruction)\n      .addInstruction(depositInstruction)\n      .build();\n  }\n\n  public async getWithdrawQuote(\n    withdrawTokenAmount: Decimal | OrcaU64,\n    withdrawTokenMint: PublicKey,\n    slippage?: Decimal\n  ): Promise<WithdrawQuote> {\n    const slippageTolerance =\n      slippage === undefined ? defaultSlippagePercentage : Percentage.fromDecimal(slippage);\n\n    const lpSupply = await this.getLPSupply();\n    const { inputTokenCount: tokenAAmount, outputTokenCount: tokenBAmount } = await getTokenCount(\n      this.connection,\n      this.poolParams,\n      this.getTokenA(),\n      this.getTokenB()\n    );\n\n    // withdrawTokenAmount needs represent amounts for one of the following: poolTokenAmount, tokenAAmount, or tokenBAmount\n    // determine which token this amount represents, then calculate poolTokenIn_U64\n    let poolTokenIn_U64 = ZERO;\n    if (withdrawTokenMint.equals(this.getPoolTokenMint())) {\n      poolTokenIn_U64 = U64Utils.toPoolU64(\n        withdrawTokenAmount,\n        this.poolParams,\n        \"withdrawTokenAmount\"\n      );\n    } else if (\n      withdrawTokenMint.equals(this.getTokenA().mint) ||\n      withdrawTokenMint.equals(this.getTokenB().mint)\n    ) {\n      const token = withdrawTokenMint.equals(this.getTokenA().mint)\n        ? this.getTokenA()\n        : this.getTokenB();\n      const totalAmount = token.mint.equals(this.getTokenA().mint) ? tokenAAmount : tokenBAmount;\n\n      const numerator =\n        withdrawTokenAmount instanceof OrcaU64\n          ? withdrawTokenAmount.toDecimal()\n          : withdrawTokenAmount;\n      const denominator = DecimalUtil.fromU64(totalAmount, token.scale);\n      const poolTokenIn = lpSupply.toDecimal().div(denominator).mul(numerator);\n      poolTokenIn_U64 = U64Utils.toPoolU64(poolTokenIn, this.poolParams, \"poolTokenIn\");\n    } else {\n      throw new Error(\n        `Unable to get withdraw quote with an invalid withdrawTokenMint ${withdrawTokenMint}`\n      );\n    }\n\n    if (poolTokenIn_U64.eq(ZERO)) {\n      return {\n        maxPoolTokenAmountIn: OrcaU64.fromU64(ZERO, lpSupply.scale),\n        minTokenAOut: OrcaU64.fromU64(ZERO, this.getTokenA().scale),\n        minTokenBOut: OrcaU64.fromU64(ZERO, this.getTokenB().scale),\n      };\n    }\n\n    const minTokenAOut = new OrcaU64(\n      poolTokenIn_U64\n        .mul(slippageTolerance.denominator)\n        .mul(tokenAAmount)\n        .div(lpSupply.toU64())\n        .div(slippageTolerance.numerator.add(slippageTolerance.denominator)),\n      this.getTokenA().scale\n    );\n\n    const minTokenBOut = new OrcaU64(\n      poolTokenIn_U64\n        .mul(slippageTolerance.denominator)\n        .mul(tokenBAmount)\n        .div(lpSupply.toU64())\n        .div(slippageTolerance.numerator.add(slippageTolerance.denominator)),\n      this.getTokenB().scale\n    );\n\n    return {\n      maxPoolTokenAmountIn: OrcaU64.fromU64(poolTokenIn_U64, lpSupply.scale),\n      minTokenAOut,\n      minTokenBOut,\n    };\n  }\n\n  public async withdraw(\n    owner: Keypair | PublicKey,\n    poolTokenAmountIn: Decimal | OrcaU64,\n    minTokenAOut: Decimal | OrcaU64,\n    minTokenBOut: Decimal | OrcaU64\n  ): Promise<TransactionPayload> {\n    const _owner = new Owner(owner);\n    const ownerAddress = _owner.publicKey;\n\n    const tokenA = this.getTokenA();\n    const tokenB = this.getTokenB();\n\n    const minTokenAOut_U64 = U64Utils.toTokenU64(minTokenAOut, tokenA, \"minTokenAOut\");\n    const minTokenBOut_U64 = U64Utils.toTokenU64(minTokenBOut, tokenB, \"minTokenBOut\");\n    const poolTokenAmountIn_U64 = U64Utils.toPoolU64(\n      poolTokenAmountIn,\n      this.poolParams,\n      \"poolTokenAmountIn\"\n    );\n\n    // Create a token account for tokenA, if necessary\n    const { address: userTokenAPublicKey, ...resolveTokenAInstrucitons } =\n      await resolveOrCreateAssociatedTokenAddress(this.connection, _owner, tokenA.mint);\n\n    // Create a token account for tokenB, if necessary\n    const { address: userTokenBPublicKey, ...resolveTokenBInstrucitons } =\n      await resolveOrCreateAssociatedTokenAddress(this.connection, _owner, tokenB.mint);\n\n    // Get user's poolToken token account\n    const { address: userPoolTokenPublicKey, ...resolvePoolTokenInstructions } =\n      await resolveOrCreateAssociatedTokenAddress(\n        this.connection,\n        _owner,\n        this.poolParams.poolTokenMint\n      );\n\n    // Approve transfer of pool token\n    const { userTransferAuthority, ...transferPoolTokenInstruction } = createApprovalInstruction(\n      ownerAddress,\n      poolTokenAmountIn_U64,\n      userPoolTokenPublicKey\n    );\n\n    // Create the withdraw instruction\n    const withdrawInstruction = await createWithdrawInstruction(\n      this.poolParams,\n      userTransferAuthority.publicKey,\n      userTokenAPublicKey,\n      userTokenBPublicKey,\n      userPoolTokenPublicKey,\n      poolTokenAmountIn_U64,\n      minTokenAOut_U64,\n      minTokenBOut_U64,\n      tokenA.addr,\n      tokenB.addr,\n      this.orcaTokenSwapId,\n      _owner\n    );\n\n    return await new TransactionBuilder(this.connection, ownerAddress, _owner)\n      .addInstruction(resolveTokenAInstrucitons)\n      .addInstruction(resolveTokenBInstrucitons)\n      .addInstruction(resolvePoolTokenInstructions)\n      .addInstruction(transferPoolTokenInstruction)\n      .addInstruction(withdrawInstruction)\n      .build();\n  }\n}\n"
  },
  {
    "path": "src/model/orca/pool/pool-types.ts",
    "content": "import { PublicKey } from \"@solana/web3.js\";\nimport { OrcaPoolToken } from \"../../..\";\nimport { Percentage } from \"../../../public\";\n\n/**\n * An Orca token-swap pool\n * @param address The pool account address\n * @param nonce The nonce used to generate the pool authority\n * @param authority The pool authority PDA address to sign instructions\n * @param poolTokenMint Mint address for the pool token\n * @param poolTokenDecimals Number of decimal places for the pool token\n * @param feeAccount Public address of the pool token fee account\n * @param tokenIds The ids of the tokens in this pool\n * @param tokens The id, token object of the tokens in this pool\n * @param curveType Trading curve type. 0 - ConstantProduct, 1 - ConstantPrice, 2 - Stable, 3 - Offset\n * @param feeStructure The % of fees collected by this pool\n * @param amp The amplification coefficient for a stable curve pool (defines how flat the AMM curve is when prices are similar)\n */\nexport type OrcaPoolParams = {\n  address: PublicKey;\n  nonce: number;\n  authority: PublicKey;\n  poolTokenMint: PublicKey;\n  poolTokenDecimals: number;\n  feeAccount: PublicKey;\n  tokenIds: string[];\n  tokens: Record<string, OrcaPoolToken>;\n  curveType: CurveType;\n  feeStructure: FeeStructure;\n  amp?: number;\n};\n\nexport enum CurveType {\n  ConstantProduct,\n  ConstantPrice,\n  Stable,\n  Offset,\n}\n\n/**\n * @param traderFee Percentage of the fee that goes to the liquidity providers\n * @param ownerFee Percentage of the fee that goes to orca\n */\nexport type FeeStructure = {\n  traderFee: Percentage;\n  ownerFee: Percentage;\n};\n"
  },
  {
    "path": "src/model/orca-factory.ts",
    "content": "import { Connection } from \"@solana/web3.js\";\nimport { OrcaPoolConfig, OrcaPool, OrcaFarmConfig, OrcaFarm, Network } from \"..\";\nimport { orcaPoolConfigs, orcaFarmConfigs } from \"../constants\";\nimport { orcaDevnetFarmConfigs, orcaDevnetPoolConfigs } from \"../constants/devnet\";\nimport { getDevnetFarm, getDevnetPool } from \"../public/devnet\";\nimport { OrcaFarmImpl } from \"./orca/farm/orca-farm\";\nimport { OrcaPoolImpl } from \"./orca/pool/orca-pool\";\n\nexport class OrcaFactory {\n  getPool(connection: Connection, network: Network, config: OrcaPoolConfig): OrcaPool {\n    if (network === Network.DEVNET) {\n      const devnetConfig = getDevnetPool(config);\n      return new OrcaPoolImpl(connection, network, orcaDevnetPoolConfigs[devnetConfig]);\n    }\n\n    return new OrcaPoolImpl(connection, network, orcaPoolConfigs[config]);\n  }\n\n  getFarm(connection: Connection, network: Network, config: OrcaFarmConfig): OrcaFarm {\n    if (network === Network.DEVNET) {\n      const devnetConfig = getDevnetFarm(config);\n      return new OrcaFarmImpl(connection, orcaDevnetFarmConfigs[devnetConfig]);\n    }\n\n    return new OrcaFarmImpl(connection, orcaFarmConfigs[config]);\n  }\n}\n"
  },
  {
    "path": "src/model/quote/constant-product-quote.ts",
    "content": "import { u64 } from \"@solana/spl-token\";\nimport Decimal from \"decimal.js\";\nimport { solToken } from \"../../constants/tokens\";\nimport { ZERO, ONE, DecimalUtil, U64Utils, OrcaU64, Quote } from \"../../public\";\nimport { QuotePoolParams } from \"./quote-builder\";\n\n/**\n * ConstantProductPools\n *\n * Product price curve:\n * x = inputTokenCount\n * y = outputTokenCount\n * k =  x * y\n */\n\nfunction calculateFee(inputTradeAmount: u64, feeNumerator: u64, feeDenominator: u64): u64 {\n  if (feeNumerator.eq(ZERO) || inputTradeAmount.eq(ZERO)) {\n    return ZERO;\n  }\n\n  const fee = inputTradeAmount.mul(feeNumerator).div(feeDenominator);\n  // minimum fee of one token\n  return fee.eq(ZERO) ? ONE : fee;\n}\n\nfunction getInputAmountLessFees(inputTradeAmount: u64, params: QuotePoolParams): u64 {\n  const fees = getLPFees(inputTradeAmount, params);\n  return fees.gt(inputTradeAmount) ? new u64(0) : inputTradeAmount.sub(fees);\n}\n\nfunction getRate(inputTradeAmountU64: u64, params: QuotePoolParams): Decimal {\n  if (inputTradeAmountU64.eq(ZERO)) {\n    return new Decimal(0);\n  }\n\n  const expectedOutputAmountU64 = getExpectedOutputAmount(inputTradeAmountU64, params);\n  const inputTradeAmount = DecimalUtil.fromU64(inputTradeAmountU64, params.inputToken.scale);\n  const outputTradeAmount = DecimalUtil.fromU64(expectedOutputAmountU64, params.outputToken.scale);\n  return outputTradeAmount.div(inputTradeAmount).toDecimalPlaces(params.outputToken.scale);\n}\n\nfunction getPriceImpact(inputTradeAmount: u64, params: QuotePoolParams): Decimal {\n  if (inputTradeAmount.eq(ZERO) || params.outputTokenCount.eq(ZERO)) {\n    return new Decimal(0);\n  }\n\n  const noSlippageOutputCountU64 = getExpectedOutputAmountWithNoSlippage(inputTradeAmount, params);\n  const outputCountU64 = getExpectedOutputAmount(inputTradeAmount, params);\n  if (noSlippageOutputCountU64.isZero()) {\n    // The minimum fee of one token makes inputTradeLessFees zero when the input is minimal,\n    // and the output is also zero.\n    return new Decimal(0);\n  }\n\n  const noSlippageOutputCount = DecimalUtil.fromU64(\n    noSlippageOutputCountU64,\n    params.outputToken.scale\n  );\n  const outputCount = DecimalUtil.fromU64(outputCountU64, params.outputToken.scale);\n\n  const impact = noSlippageOutputCount.sub(outputCount).div(noSlippageOutputCount);\n  return impact.mul(100).toDecimalPlaces(params.outputToken.scale);\n}\n\nfunction getLPFees(inputTradeAmount: u64, params: QuotePoolParams): u64 {\n  const { feeStructure } = params;\n  const tradingFee = calculateFee(\n    inputTradeAmount,\n    feeStructure.traderFee.numerator,\n    feeStructure.traderFee.denominator\n  );\n\n  const ownerFee = calculateFee(\n    inputTradeAmount,\n    feeStructure.ownerFee.numerator,\n    feeStructure.ownerFee.denominator\n  );\n\n  return new u64(tradingFee.add(ownerFee).toString());\n}\n\nfunction getExpectedOutputAmount(inputTradeAmount: u64, params: QuotePoolParams): u64 {\n  const inputTradeLessFees = getInputAmountLessFees(inputTradeAmount, params);\n  return getOutputAmount(inputTradeLessFees, params);\n}\n\nfunction getExpectedOutputAmountWithNoSlippage(\n  inputTradeAmount: u64,\n  params: QuotePoolParams\n): u64 {\n  if (params.inputTokenCount.eq(ZERO)) {\n    return params.outputTokenCount;\n  }\n\n  const inputTradeLessFees = getInputAmountLessFees(inputTradeAmount, params);\n  return inputTradeLessFees.mul(params.outputTokenCount).div(params.inputTokenCount);\n}\n\nfunction getMinimumAmountOut(inputTradeAmount: u64, params: QuotePoolParams): u64 {\n  const slippageTolerance = params.slippageTolerance;\n  const expectedOutputAmountFees = getExpectedOutputAmount(inputTradeAmount, params);\n  const result = expectedOutputAmountFees\n    .mul(slippageTolerance.denominator.sub(slippageTolerance.numerator))\n    .div(slippageTolerance.denominator);\n  return result;\n}\n\n// Note: This function matches the calculation done on SERUM and on Web UI.\n// Given k = currInputTokenCount * currOutputTokenCount and k = newInputTokenCount * newOutputTokenCount,\n// solve for newOutputTokenCount\nfunction getOutputAmount(inputTradeAmount: u64, params: QuotePoolParams): u64 {\n  const [poolInputAmount, poolOutputAmount] = [params.inputTokenCount, params.outputTokenCount];\n\n  const invariant = poolInputAmount.mul(poolOutputAmount);\n\n  const [newPoolOutputAmount] = U64Utils.ceilingDivision(\n    invariant,\n    poolInputAmount.add(inputTradeAmount)\n  );\n\n  const outputAmount = poolOutputAmount.sub(newPoolOutputAmount);\n\n  return new u64(outputAmount.toString());\n}\n\nfunction getNetworkFees(params: QuotePoolParams) {\n  let numSigs;\n  if (params.inputToken === solToken || params.outputToken === solToken) {\n    numSigs = 3;\n  } else {\n    numSigs = 2;\n  }\n\n  return params.lamportsPerSignature * numSigs;\n}\n\nexport class ConstantProductPoolQuoteBuilder {\n  buildQuote(params: QuotePoolParams, inputTradeAmount: u64): Quote {\n    return {\n      getRate: () => getRate(inputTradeAmount, params),\n      getPriceImpact: () => getPriceImpact(inputTradeAmount, params),\n      getLPFees: () =>\n        OrcaU64.fromU64(getLPFees(inputTradeAmount, params), params.inputToken.scale),\n      getNetworkFees: () => OrcaU64.fromNumber(getNetworkFees(params)),\n      getExpectedOutputAmount: () =>\n        OrcaU64.fromU64(\n          getExpectedOutputAmount(inputTradeAmount, params),\n          params.outputToken.scale\n        ),\n      getMinOutputAmount: () =>\n        OrcaU64.fromU64(getMinimumAmountOut(inputTradeAmount, params), params.outputToken.scale),\n    };\n  }\n}\n"
  },
  {
    "path": "src/model/quote/quote-builder.ts",
    "content": "import { u64 } from \"@solana/spl-token\";\nimport { OrcaToken, Quote } from \"../..\";\nimport { PoolTokenCount, Percentage } from \"../../public\";\nimport { FeeStructure, CurveType } from \"../orca/pool/pool-types\";\nimport { ConstantProductPoolQuoteBuilder } from \"./constant-product-quote\";\nimport { StablePoolQuoteBuilder } from \"./stable-quote\";\n\nexport type QuotePoolParams = PoolTokenCount & {\n  inputToken: OrcaToken;\n  outputToken: OrcaToken;\n  inputTokenCount: u64;\n  outputTokenCount: u64;\n  feeStructure: FeeStructure;\n  slippageTolerance: Percentage;\n  lamportsPerSignature: number;\n  amp?: u64;\n};\n\nexport interface QuoteBuilder {\n  buildQuote(pool: QuotePoolParams, inputAmount: u64): Quote;\n}\n\nexport class QuoteBuilderFactory {\n  static getBuilder(curveType: CurveType): QuoteBuilder | undefined {\n    switch (curveType) {\n      case CurveType.ConstantProduct:\n        return new ConstantProductPoolQuoteBuilder();\n      case CurveType.Stable:\n        return new StablePoolQuoteBuilder();\n      default:\n        return undefined;\n    }\n  }\n}\n"
  },
  {
    "path": "src/model/quote/stable-quote.ts",
    "content": "import { u64 } from \"@solana/spl-token\";\nimport Decimal from \"decimal.js\";\nimport { computeBaseOutputAmount, computeOutputAmount } from \"@orca-so/stablecurve\";\nimport { QuotePoolParams } from \"./quote-builder\";\nimport { DecimalUtil, OrcaU64, Quote, ZERO, ONE } from \"../../public\";\nimport { solToken } from \"../../constants/tokens\";\n\nfunction calculateFee(inputTradeAmount: u64, feeNumerator: u64, feeDenominator: u64): u64 {\n  if (feeNumerator.eq(ZERO) || inputTradeAmount.eq(ZERO)) {\n    return ZERO;\n  }\n\n  const fee = inputTradeAmount.mul(feeNumerator).div(feeDenominator);\n  // minimum fee of one token\n  return fee.eq(ZERO) ? ONE : fee;\n}\n\nfunction getInputAmountLessFees(inputTradeAmount: u64, params: QuotePoolParams): u64 {\n  const fees = getLPFees(inputTradeAmount, params);\n  return fees.gt(inputTradeAmount) ? new u64(0) : inputTradeAmount.sub(fees);\n}\n\nfunction getOutputAmountWithNoSlippage(\n  inputTradeAmountLessFees: u64,\n  params: QuotePoolParams\n): u64 {\n  const [poolInputAmount, poolOutputAmount, amp] = [\n    params.inputTokenCount,\n    params.outputTokenCount,\n    params.amp!,\n  ];\n\n  return computeBaseOutputAmount(inputTradeAmountLessFees, poolInputAmount, poolOutputAmount, amp);\n}\n\nfunction getOutputAmount(inputTradeAmountLessFees: u64, params: QuotePoolParams): u64 {\n  const [poolInputAmount, poolOutputAmount, amp] = [\n    params.inputTokenCount,\n    params.outputTokenCount,\n    params.amp!,\n  ];\n\n  return computeOutputAmount(inputTradeAmountLessFees, poolInputAmount, poolOutputAmount, amp);\n}\n\nfunction getExpectedOutputAmountWithNoSlippage(\n  inputTradeAmount: u64,\n  params: QuotePoolParams\n): u64 {\n  const inputTradeAmountLessFees = getInputAmountLessFees(inputTradeAmount, params);\n\n  return getOutputAmountWithNoSlippage(inputTradeAmountLessFees, params);\n}\n\nfunction getExpectedOutputAmount(inputTradeAmount: u64, params: QuotePoolParams): u64 {\n  const inputTradeAmountLessFees = getInputAmountLessFees(inputTradeAmount, params);\n\n  return getOutputAmount(inputTradeAmountLessFees, params);\n}\n\nfunction getRate(inputTradeAmountU64: u64, params: QuotePoolParams): Decimal {\n  if (inputTradeAmountU64.eq(ZERO)) {\n    return new Decimal(0);\n  }\n\n  const expectedOutputAmountU64 = getExpectedOutputAmount(inputTradeAmountU64, params);\n  const inputTradeAmount = DecimalUtil.fromU64(inputTradeAmountU64, params.inputToken.scale);\n  const outputTradeAmount = DecimalUtil.fromU64(expectedOutputAmountU64, params.outputToken.scale);\n  return outputTradeAmount.div(inputTradeAmount).toDecimalPlaces(params.outputToken.scale);\n}\n\nfunction getPriceImpact(inputTradeAmount: u64, params: QuotePoolParams): Decimal {\n  if (\n    inputTradeAmount.eq(ZERO) ||\n    params.inputTokenCount.eq(ZERO) ||\n    params.outputTokenCount.eq(ZERO)\n  ) {\n    return new Decimal(0);\n  }\n\n  const noSlippageOutputCountU64 = getExpectedOutputAmountWithNoSlippage(inputTradeAmount, params);\n  const outputCountU64 = getExpectedOutputAmount(inputTradeAmount, params);\n  if (noSlippageOutputCountU64.isZero()) {\n    // The minimum fee of one token makes inputTradeLessFees zero when the input is minimal,\n    // and the output is also zero.\n    return new Decimal(0);\n  }\n\n  const noSlippageOutputCount = DecimalUtil.fromU64(\n    noSlippageOutputCountU64,\n    params.outputToken.scale\n  );\n  const outputCount = DecimalUtil.fromU64(outputCountU64, params.outputToken.scale);\n\n  const impact = noSlippageOutputCount.sub(outputCount).div(noSlippageOutputCount);\n  return impact.mul(100).toDecimalPlaces(params.outputToken.scale);\n}\n\nfunction getLPFees(inputTradeAmount: u64, params: QuotePoolParams): u64 {\n  const { feeStructure } = params;\n  const tradingFee = calculateFee(\n    inputTradeAmount,\n    feeStructure.traderFee.numerator,\n    feeStructure.traderFee.denominator\n  );\n\n  const ownerFee = calculateFee(\n    inputTradeAmount,\n    feeStructure.ownerFee.numerator,\n    feeStructure.ownerFee.denominator\n  );\n\n  return new u64(tradingFee.add(ownerFee).toString());\n}\n\nfunction getMinimumAmountOut(inputTradeAmount: u64, params: QuotePoolParams): u64 {\n  const slippageTolerance = params.slippageTolerance;\n  const expectedOutputAmount = getExpectedOutputAmount(inputTradeAmount, params);\n\n  return expectedOutputAmount\n    .mul(slippageTolerance.denominator.sub(slippageTolerance.numerator))\n    .div(slippageTolerance.denominator);\n}\n\nfunction getNetworkFees(params: QuotePoolParams): number {\n  let numSigs;\n\n  if (params.inputToken === solToken || params.outputToken === solToken) {\n    numSigs = 3;\n  } else {\n    numSigs = 2;\n  }\n\n  return params.lamportsPerSignature * numSigs;\n}\n\nexport class StablePoolQuoteBuilder {\n  buildQuote(params: QuotePoolParams, inputTradeAmount: u64): Quote {\n    if (!params.amp) {\n      throw new Error(\"amp param required for stable pool\");\n    }\n\n    return {\n      getRate: () => getRate(inputTradeAmount, params),\n      getPriceImpact: () => getPriceImpact(inputTradeAmount, params),\n      getLPFees: () =>\n        OrcaU64.fromU64(getLPFees(inputTradeAmount, params), params.inputToken.scale),\n      getNetworkFees: () => OrcaU64.fromNumber(getNetworkFees(params)),\n      getExpectedOutputAmount: () =>\n        OrcaU64.fromU64(\n          getExpectedOutputAmount(inputTradeAmount, params),\n          params.outputToken.scale\n        ),\n      getMinOutputAmount: () =>\n        OrcaU64.fromU64(getMinimumAmountOut(inputTradeAmount, params), params.outputToken.scale),\n    };\n  }\n}\n"
  },
  {
    "path": "src/public/devnet/farms/config.ts",
    "content": "/**\n * The following content is auto-generated.\n */\n\n/**\n * A list of supported Orca farms in this SDK.\n */\nexport enum OrcaFarmConfig {\n  SOL_USDC_AQ = \"4GpUivZ2jvZqQ3vJRsoq5PwnYv6gdV9fJ9BzHT2JcRr7\",\n  SOL_USDT_AQ = \"2E4Mp6y2gFRteXiANnwzAJEhHwD3NX1wru3XvxJpGBq2\",\n  USDC_USDT_AQ = \"EBor1PR5XNGHjRVB6JDJuKVCQbvdr1CVZTaX1hTAdvQv\",\n  ETH_SOL_AQ = \"8sFnpd7mM1AWxP1LXX2FWbbkaVtAopBPmPNZ9y6172WL\",\n  ETH_USDC_AQ = \"9pRnvg7ihSJDLi6DGf3PLwr6xRRRrBPXsHYEgGL5hzgA\",\n  ORCA_SOL_AQ = \"CmDdQhusZWyi9fue27VSktYgkHefm3JXNdzc9kCpyvYi\",\n  ORCA_USDC_AQ = \"2ZEEntzoUN7XuMs88ukLGv5HRR1byL7wFWChryF5ZHri\",\n  SOL_USDC_DD = \"AtJF9fbQ1pbz76NYo2jtKjHuzzyaFToHLCizYk6UoHHL\",\n  ETH_SOL_DD = \"5NH9rNaoLKbPPP5zwCJTaMPkFACtfJA8wEmqWrXzgCMa\",\n  ETH_USDC_DD = \"EeqPcczEZH2cjYBnQyGXBQx1DGs7KG1pobwdPKcwALhD\",\n}\n"
  },
  {
    "path": "src/public/devnet/index.ts",
    "content": "export * from \"./utils\";\n"
  },
  {
    "path": "src/public/devnet/pools/config.ts",
    "content": "/**\n * The following content is auto-generated.\n */\n\n/**\n * A list of supported Orca pools in this SDK.\n */\nexport enum OrcaPoolConfig {\n  SOL_USDC = \"4GpUivZ2jvZqQ3vJRsoq5PwnYv6gdV9fJ9BzHT2JcRr7\",\n  SOL_USDT = \"2E4Mp6y2gFRteXiANnwzAJEhHwD3NX1wru3XvxJpGBq2\",\n  USDC_USDT = \"EBor1PR5XNGHjRVB6JDJuKVCQbvdr1CVZTaX1hTAdvQv\",\n  ETH_SOL = \"8sFnpd7mM1AWxP1LXX2FWbbkaVtAopBPmPNZ9y6172WL\",\n  ETH_USDC = \"9pRnvg7ihSJDLi6DGf3PLwr6xRRRrBPXsHYEgGL5hzgA\",\n  ORCA_SOL = \"CmDdQhusZWyi9fue27VSktYgkHefm3JXNdzc9kCpyvYi\",\n  ORCA_USDC = \"2ZEEntzoUN7XuMs88ukLGv5HRR1byL7wFWChryF5ZHri\",\n}\n"
  },
  {
    "path": "src/public/devnet/utils.ts",
    "content": "import { OrcaPoolConfig, OrcaFarmConfig } from \"..\";\nimport { OrcaFarmConfig as OrcaDevnetFarmConfig } from \"./farms/config\";\nimport { OrcaPoolConfig as OrcaDevnetPoolConfig } from \"./pools/config\";\n\nexport function getDevnetPool(config: OrcaPoolConfig): OrcaDevnetPoolConfig {\n  const entry = Object.entries(OrcaPoolConfig).find((arr) => arr[1] === config);\n  if (!entry) {\n    throw new Error(\"Invalid OrcaPoolConfig\");\n  }\n\n  const key = entry[0];\n  if (!isOrcaDevnetPoolConfig(key)) {\n    throw new Error(`${key} does not exist in devnet`);\n  }\n\n  return OrcaDevnetPoolConfig[key];\n}\n\nexport function getDevnetFarm(config: OrcaFarmConfig): OrcaDevnetFarmConfig {\n  const entry = Object.entries(OrcaFarmConfig).find((arr) => arr[1] === config);\n  if (!entry) {\n    throw new Error(\"Invalid OrcaFarmConfig\");\n  }\n\n  const key = entry[0];\n  if (!isOrcaDevnetFarmConfig(key)) {\n    throw new Error(`${key} does not exist in devnet`);\n  }\n\n  return OrcaDevnetFarmConfig[key];\n}\n\n/*** Type guards ***/\n\nfunction isOrcaDevnetPoolConfig(key: string): key is keyof typeof OrcaDevnetPoolConfig {\n  return OrcaDevnetPoolConfig[key as keyof typeof OrcaDevnetPoolConfig] !== undefined;\n}\n\nfunction isOrcaDevnetFarmConfig(key: string): key is keyof typeof OrcaDevnetFarmConfig {\n  return OrcaDevnetFarmConfig[key as keyof typeof OrcaDevnetFarmConfig] !== undefined;\n}\n"
  },
  {
    "path": "src/public/farms/config.ts",
    "content": "/**\n * The following content is auto-generated.\n */\n\n/**\n * A list of supported Orca farms in this SDK.\n */\nexport enum OrcaFarmConfig {\n  SOL_USDC_AQ = \"APDFRM3HMr8CAGXwKHiu2f5ePSpaiEJhaURwhsRrUUt9\",\n  SOL_USDT_AQ = \"FZthQCuYHhcfiDma7QrX7buDHwrZEd7vL8SjS6LQa3Tx\",\n  ETH_SOL_AQ = \"71FymgN2ZUf7VvVTLE8jYEnjP3jSK1Frp2XT1nHs8Hob\",\n  ETH_USDC_AQ = \"3e1W6Aqcbuk2DfHUwRiRcyzpyYRRjg6yhZZcyEARydUX\",\n  RAY_SOL_AQ = \"5kimD5W6yJpHRHCyPtnEyDsQRdiiJKivu5AqN3si82Jc\",\n  ROPE_SOL_AQ = \"ADrvfPBsRcJfGsN6Bs385zYddH52nuM5FA8UaAkX9o2V\",\n  STEP_SOL_AQ = \"8nTzqDXHriG2CXKbybeuEh1EqDQMtrbYMFWcP7AkiDaP\",\n  SRM_SOL_AQ = \"9tf8rBSEQYG7AqL896fN2nZi1iYPqpWaLEdpbeQaC1Vy\",\n  FTT_SOL_AQ = \"EsYaDKJCmcJtJHFuJYwQZwqohvVMCrFzcg8yo3i328No\",\n  COPE_SOL_AQ = \"CzieDbGRdN1QGaGDNpSqzEA18bi881ccvkkGZi51pe1k\",\n  OXY_SOL_AQ = \"7tYCdLN84EnTMkxM7HNamWJx7F4xgKe9KiiWvLyWjbgT\",\n  BTC_SOL_AQ = \"Acxs19v6eUMTEfdvkvWkRB4bwFCHm3XV9jABCy7c1mXe\",\n  MER_SOL_AQ = \"HiwRobjfHZ4zsPtqCC4oBS24pSmy4t8GGkXRbQj4yU6L\",\n  FIDA_SOL_AQ = \"EYsNdtyu4gGTaGz8N5m5iQ3G1N6rDyMbR72B3CqbWW4W\",\n  MAPS_SOL_AQ = \"99pfC8fWymXgbq3CvrExhx3UxQDC1fMWEWLbNT83F45e\",\n  USDC_USDT_AQ = \"H2uzgruPvonVpCRhwwdukcpXK8TG17swFNzYFr2rtPxy\",\n  ORCA_SOL_AQ = \"2uVjAuRXavpM6h1scGQaxqb6HVaNRn6T2X7HHXTabz25\",\n  ORCA_USDC_AQ = \"n8Mpu28RjeYD7oUX3LG1tPxzhRZh3YYLRSHcHRdS3Zx\",\n  KIN_SOL_AQ = \"HEvnD66WcBfTajS9adUYnGRBMDehFtLySiFHSD6kEBWs\",\n  SAMO_SOL_AQ = \"D6N9j8F2DhtzDtrdpT74y3u2YmYAzcggiLc3nTjqux9M\",\n  LIQ_USDC_AQ = \"3PD9SZFwXKkXr4akLf4ofo37ZUMycwML89R2P3qxcbZG\",\n  SNY_USDC_AQ = \"AZpo4BJHHRetF96v6SGinFZBMXM4yWMo4RA8C4PriDLk\",\n  mSOL_USDC_AQ = \"8PSfyiTVwPb6Rr2iZ8F3kNpbg65BCfJM9v8LfB916r44\",\n  SLRS_USDC_AQ = \"AtB4nUmdyQfuWWJ9xAHw9xyVnJFfSjSuVWkiYan8y86w\",\n  PORT_USDC_AQ = \"F8gPSpwVHj8FdAJAYULDuZBxFEJut87hUbARYYx3471w\",\n  SBR_USDC_AQ = \"CS7fA5n4c2D82dUoHrYzS3gAqgqaoVSfgsr18kitp2xo\",\n  scnSOL_USDC_AQ = \"Dkr8B675PGnNwEr9vTKXznjjHke5454EQdz3iaSbparB\",\n  pSOL_USDC_AQ = \"C2YzN6MymD5HM2kPaH7bzcbqciyjfmpqyVaR3KA5V6z1\",\n  mSOL_SOL_AQ = \"29cdoMgu6MS2VXpcMo1sqRdWEzdUR9tjvoh8fcK8Z87R\",\n  ORCA_PAI_AQ = \"C7TH2jEJJaxVwwuvkbcDGfHUiZvEkkeYjyAcdTMi5ujb\",\n  ORCA_mSOL_AQ = \"CVapmQn7HaU1yMDW3q6oUV4hx6XoYv54T4zfGXkuJqkA\",\n  scnSOL_SOL_AQ = \"APNpzQvR91v1THbsAyG3HHrUEwvexWYeNCFLQuVnxgMc\",\n  ATLAS_USDC_AQ = \"FZ8x1LCRSPDeHBDoAc3Gc6Y7ETCynuHEr5q5YWV7uRCJ\",\n  POLIS_USDC_AQ = \"GteBdo9sqE7T41G8AJsaG9WHW48uXBwsLLznmu2TBdgy\",\n  BOP_USDC_AQ = \"2gXDJZ7XAtQEtf4PRSQZKoq1WMuu1H44tQanbMA3YVpu\",\n  SAMO_USDC_AQ = \"6VK1ksrmYGMBWUUZfygGF8tHRGpNxQEWv8pfvzQHdyyc\",\n  NINJA_SOL_AQ = \"4X1oYoFWYtLebk51zuh889r1WFLe8Z9qWApj87hQMfML\",\n  SLIM_USDC_AQ = \"BVWwyiHVHZQMPHsiW7dZH7bnBVKmbxdeEjWqVRciHCyo\",\n  wHAPI_USDC_AQ = \"ELfBngAgvLEHVBuJQhhE7AW6eqLX7id2sfrBngVNVAUW\",\n  COPE_USDC_AQ = \"HsauTv9s52Zv12eaDuSp6y7BEm4e4BHEyAsbdjyyWzPK\",\n  SUNNY_USDC_AQ = \"GHuoeq9UnFBsBhMwH43eL3RWX5XVXbSRYJymmyMYpT7n\",\n  GRAPE_USDC_AQ = \"EorFh8siFyLF1QTZ7cCXQaPGqyo7eb4SAgKtRH8Jcxjd\",\n  ABR_USDC_AQ = \"GMzPbaCuQmeMUm1opH3oSCgKUjVgJUW14myq99RVPGX5\",\n  KURO_USDC_AQ = \"DRknxb4ZFxXUTG6UJ5HupNHG1SmvBSCPzsZ1o9gAhyBi\",\n  MEDIA_USDC_AQ = \"2toFgkQDoPrTJYGDEVoCasPXuL9uQnjvXJaDwa9LHyTx\",\n  TULIP_USDC_AQ = \"4SBx8GXu8HhcVHWydQv1vsDdZs3G93XSL9CtMBny6hS5\",\n  MNGO_USDC_AQ = \"H9yC7jDng974WwcU4kTGs7BKf7nBNswpdsP5bzbdXjib\",\n  stSOL_wstETH_AQ = \"Eswigpwm3xsipkTqahGi2PEJsJcULQBwZgxhQpr6yBEa\",\n  SYP_USDC_AQ = \"qJxKN9BhxbYvRNbjfK2uAVWboto6sonj8XC1ZEW5XTB\",\n  stSOL_wLDO_AQ = \"74B9aMS7SA832xKngt5VLKmWAP3pa3qkUzWncTmQSsGF\",\n  whETH_SOL_AQ = \"7aYnrdmdCRodDy2Czn6keUquUhjF1jPEmfwZPh488z8U\",\n  whETH_USDC_AQ = \"7NPtjjAP7vhp4t5NCLyY4DY5rurvyc8cgZ2a2rYabRia\",\n  MNDE_mSOL_AQ = \"5PHS5w6hQwFNnLz1jJFe7TVTxSQ98cDYC3akmiAoFMXs\",\n  WAG_USDC_AQ = \"Df6XNHMF3uRVZnz7LCEGiZVax6rXgz76owtVkBHEjSb6\",\n  mSOL_USDT_AQ = \"9cMWe4UYRPGAUUsTkjShJWVM7bk8DUBgxtwwH8asFJoV\",\n  mSOL_whETH_AQ = \"5qoTq3qC4U7vFxo3iCzbXcaD1UEmDeCD63Dsuoct71oV\",\n  BTC_mSOL_AQ = \"8nKJ4z9FSw6wrVZKASqBiS9DS1CiNsRnqwCCKVQjqdkB\",\n  IVN_SOL_AQ = \"DfgCnzaiTXfPkAH1C1Z441b5MzjjTCEh134ioxqRZxYf\",\n  LARIX_USDC_AQ = \"8sfThep3io4gvcGeuoAg1Rs8GDwKJjtcdAFHqQSSNAVE\",\n  PRT_USDC_AQ = \"6jCERp5hKj37PCXP3VTjCDJeoPuSpnMDMz5A6jWQv3yS\",\n  JET_USDC_AQ = \"GBijunwxa4Ni3JmYC6q6zgaVhSUJU6hVX5qTyJDRpNTc\",\n  stSOL_USDC_AQ = \"GtQ1NT7R5aaTiST7K6ZWdMhwDdFxsSFvVFhBo8vyHGAq\",\n  wstETH_USDC_AQ = \"5a6Y1ephcbKSoyLMQyD1JWbtqawCy8p2FtRL9v3zhaG5\",\n  AURY_USDC_AQ = \"6mJqqT5TMgveDvxzBt3hrjGkPV5VAj7tacxFCT3GebXh\",\n  AVAX_USDC_AQ = \"Hmfrtmo93DpSDmVNLQKcBS5D1ia5JatiRSok9ososubz\",\n  FTT_USDC_AQ = \"FwCombynV2fTVizxPCNA2oZKoWXLZgdJThjE4Xv9sjxc\",\n  RAY_USDC_AQ = \"4cXw2MYj94TFBXLL73fEpMCr8DPrW68JvrV8mzWgktbD\",\n  SLND_USDC_AQ = \"F59gkD7NnsdJbFKrRZsiBC8PAooN4c56T8QmahfW1iXN\",\n  GOFX_USDC_AQ = \"7vnps4VE5RTGAr5fmPZu7fSrk2VnM4Up838grZfqmxqE\",\n  WOOF_USDC_AQ = \"9EjcYfHcG8f1mccpHyaAwpoxaUPiheC6KgLQjyD9aTb6\",\n  SDOGE_USDC_AQ = \"CHTKUJGYRtBDqnxCFjxe5KEkZgxV98udbhuYYyzGxup5\",\n  CATO_USDC_AQ = \"55r9txzQtmjTykmTXmBYZCVMg5z9squB8b5cSw2AhxA4\",\n  OOGI_USDC_AQ = \"DSiHyHDn96bUQSZtizyCRLcQzrwohZeMpVu8rYJN1HzG\",\n  SONAR_USDC_AQ = \"5MvQHx8eftU39JTucFsT315JFnQASuDQg3FqxTw7xcvN\",\n  APT_USDC_AQ = \"HNrYngS1eoqkjWro9D3Y5Z9sWBDzPNK2tX4rfV2Up177\",\n  DFL_USDC_AQ = \"AWrtTWG4Zgxw8D92bb3L3sQtGLD3zDztMPWsXSph8iBP\",\n  DFL_SOL_AQ = \"9Y1vPaAsMz8X65DebMMnmBjbMo8i4jh4mcgiggZUUS3M\",\n  FRKT_USDC_AQ = \"FnDxJPNk7pPmGHUbR4XUHmHevrkXHdna5D3sQKcAtjBL\",\n  TTT_USDC_AQ = \"FGgP1npQTsC5Q4xBmQtNYSh51NKqNwdxBZy8JCo3igcu\",\n  UPS_USDC_AQ = \"E1U63VXhNiWoUkVvjrfLDdV1oJrwE6zLde3bohr6jCqz\",\n  FANT_USDC_AQ = \"GjG7JjTQfQpDxw4hWx4etP9oTaYCuCbPjsU8WaUT3xHB\",\n  BLOCK_USDC_AQ = \"D8WjqtwC9CzBrQKfSf2ccCHFQuPYwyLv5KAy8WjT5vnf\",\n  RUN_USDC_AQ = \"34Ppq6R8NfYBwWwPY4cBK4Afyb8hHaASQFukCzH6cV4n\",\n  UXP_USDC_AQ = \"HjR8JgqNKQVMvdryqJw5RJ4PCE9WGk8sgbEF7S9S3obv\",\n  BTC_USDC_AQ = \"J3kvcay3N16FBdawgnqoJ9v9p6XCvyCLE2Z9F5RLvGkj\",\n  MNDE_USDC_AQ = \"12Uj74zgUUoBe4yeackwQ4qYtFMr9fk1xL6q5Nha6t2N\",\n  CHICKS_USDC_AQ = \"71CBZeJ4tw38L9pSPoCz4fRsuWE64Fipyzotte7haoCS\",\n  ONESOL_USDC_AQ = \"6MF5CHWAj5mS7FhpxiKz37CzR2eYTu236XpBKKMXCrGg\",\n  WMP_USDC_AQ = \"HDgxKmiA8Pv82fNguhVeMkZqQkos2YksFPoP1KttWxX8\",\n  UNQ_USDC_AQ = \"2VuGzaMrDnDyZfYvDwSXk38s7M2wpud7LDY3dGA1J9sy\",\n  BASIS_USDC_AQ = \"GoaAiajubRgeCFEz9L6mLnSmT2QFegoJDH5tpLfivpj\",\n  GST_USDC_AQ = \"E6FUnQHGHJVJg7oExVr5Moeaj1QpdpZQF5odYjHXWPZb\",\n  MEAN_USDC_AQ = \"F5BTnwuMA6rxftTdbZ33VWKr2wrr6DuQHnd4guKmPSYQ\",\n  AART_USDC_AQ = \"HCtyJzFUtYecXrA52s4Y9atq4J1fhT3cYsTX17XVSFag\",\n  SHDW_USDC_AQ = \"DJqqvzSuPaWThfzwMjXx7H2ZmHDdwxza6NtFudtuXcpc\",\n  SHDW_SOL_AQ = \"2ws7g3LBPdctfKn42Di9qxzQtUJ8ZL1aEAX2rGEQMNqh\",\n  SCY_USDC_AQ = \"99ZHUQsgxL7K6PHrGNi1gSwawwPr7UA5fbWrYoHQ6qhX\",\n  SLC_USDC_AQ = \"E5kSBqTDxFLbLNQaVVtPtnhEYVLMCK2fVSEKoMKL98qR\",\n  wUST_SOL_AQ = \"6c13xsmyk7UaHUWZ2rm1MM3ZdrQRSBkQ9waaG25ridVs\",\n  wUST_USDC_AQ = \"J1KfRtP5y2warpD7LdJhfBLPKoWwSqYuovdArSv1mpQ7\",\n  mSOL_wUST_AQ = \"68YVjgPnTUPcBqZyghqvD2WPNsrLKsjYTmBKJzHRr4qd\",\n  wLUNA_wUST_AQ = \"8Mh7drLbt3jFJYwp948XyvQscGLaLkChNcaH5wwaAoWA\",\n  stSOL_wUST_AQ = \"HTZd53fYwYQRyAjiaPsZy9Gf41gobFdqkF4oKe3XLi95\",\n  JSOL_USDC_AQ = \"AzEoVuNJyo9ByoLRZ5t6vav2Zg24vULNVJM41PgCKUqR\",\n  daoSOL_USDC_AQ = \"CCyDxjdW3G7hPTthTMPTZ4bnhFF19XG6rx2fNiKeRQww\",\n  ORCA_USDT_AQ = \"Gx4PoxenyQwhGGnKagAT35iVg4im1iKhJxDWqVhgu6tk\",\n  ORCA_whETH_AQ = \"GsfyYHkSgC3Ta6aWR9MjB2sxoBrkGGeR2tAwXbpphf3\",\n  GENE_USDC_AQ = \"7cuu94swKL5PtFQohKMAzyd1mjj65rgMW3GzLY31HCnK\",\n  CMFI_USDC_AQ = \"85krvT9DxdYgoFLQDHTAGdvtNuLdAsc4xE5FkVLpN2aR\",\n  CELO_USDC_AQ = \"HVLyX8mD8YvKgZJ4oB6rXJiCYMLpHKwB6iCiCjE1XwdT\",\n  FTM_USDC_AQ = \"Gpzd833qSmv3kXpQmxEaqkrZTXZaRjhNAoqhf61qAhTG\",\n  BTC_ORCA_AQ = \"DFpLFcQZqDKykyDePgip4r6MExVmBKWqTa12ezq6qxUY\",\n  HBB_USDC_AQ = \"cL5WhffCYFRLM4We8VS2W684kM4pHyuvEDwp8Ddw48k\",\n  HBB_SOL_AQ = \"FkKzu2HeMJZf4oHwoYPxLGVy3net5Jq8HAfnA5VqETgk\",\n  SB_USDC_AQ = \"2Reqt4Sw9xNY8BoJ3EZLpFu5yVgNxFrbw8M3KiJpPn6o\",\n  stSOL_USDT_AQ = \"4ni1nho89cDKAQ9ddbNQA9ieLYpzvJVmJpuogu5Ct5ur\",\n  SEEDED_USDC_AQ = \"H7gyTmNCDXkD8MGMqnxqoD8ANszjcju4tjT6ERZ5dakf\",\n  AUDIO_USDC_AQ = \"3hksYA17VxgiKSeihjnZkBbjc2CTbEBfvDCYgQhojTo5\",\n  MMA_USDC_AQ = \"AaZRnJAnDyJyPD9uPJpJ8bzBGDCEi6jtBpUf92xErWPp\",\n  ONESOL_SOL_AQ = \"9wPhuYapychVDSxmXqCZxy2Ka8Lmav4SHM72si8bfraV\",\n  PUFF_SOL_AQ = \"Eho8h1BcoG5QWU7X9FzJafw5ErKUXtR2LobAJJZfWff4\",\n  SAO_USDC_AQ = \"4iyU77yZbg8iD344vbwruAuDAf9i1EVV3FhZJDnWStBE\",\n  sRLYv2_SOL_AQ = \"3dXdXg5HPyZ73GFC9LkSn3thdJUGeXWB8iSTHs5UcqiH\",\n  ZBC_USDC_AQ = \"2LYgm6nGXmSSjfoEriPuYeGoNiWNxUs7n3rnTbDWN5c7\",\n  GMT_USDC_AQ = \"CFxQF5kNAtbbDj298Xr47Sf4mkSyuzWpRH97hrdQ6kxi\",\n  NOVA_USDC_AQ = \"DdAFNvDxtEHCgKj3JAM64zCKfMWhs4J9wEmRrjUAFiME\",\n  HBB_USDH_AQ = \"7n2YW9qLkhGFArdZPLoF4hYPE2zw7xCACkVPXrUWnLuo\",\n  TAKI_sRLYv2_AQ = \"6atKbS2Xz5vu7cqWBNk8KYkuakRzckZ9nvtUKf2k8Sc3\",\n  ZIG_USDC_AQ = \"5vhh9ZnD9vnahRhFLP1EUEyYRSzvJwgw9U2xygsSJSrp\",\n  sRLY_SOL_AQ = \"HfRgvhgscGX5GaP3rUrZAhh7gS4aJ2UQ7rNVX976rG6P\",\n  TAKI_sRLY_AQ = \"3xaK5aWWLNRB73xUVX3cusLhDp65mTvP4fwW5Jwxakgs\",\n  stSOL_SOL_AQ = \"4jjQSgFx33DUb1a7pgPsi3FbtZXDQ94b6QywjNK3NtZw\",\n  BTC_stSOL_AQ = \"HYp9v7cY4wAxSsa6ijztQQ3GQ8iTttuG5vu8JNBDHoNh\",\n  stSOL_whETH_AQ = \"FWurFWADrgmhb6Y44LEaCMnEHS2Tu3QGqd9oBcZtr8gT\",\n  LIQ_USDC_DD = \"57vGdcMZLnbNr4TZ4hgrpGJZGR9vTPhu8L9bNKDrqxKT\",\n  STEP_SOL_DD = \"GwrBA1F8rGummDCDd8NY9Eu1cLNuJqbT8WaGxgWpFwGL\",\n  SLRS_USDC_DD = \"66xCxkffQZKBZLiHV3PDcfR8ANJTfnDRxPCaBdv4wxB7\",\n  PORT_USDC_DD = \"4CGxvZdwiZgVMLXiTdJHTkJRUTpTSJCtmtCRbSkAxerE\",\n  COPE_USDC_DD = \"9SDpBrfqNxjXcCzpKWM6yUKdfky975VJBD6xcu5cKf5s\",\n  BOP_USDC_DD = \"A7vvbqENJj8kED3ABjphe8TvwpasQYtoWGKpjpLArMxa\",\n  SAMO_USDC_DD = \"9voVuTq1S9bFZkF2Jo44HoVG63w2xDRT8eBzB23YbQud\",\n  wHAPI_USDC_DD = \"Bfoi3RNnfdP5VeRGqvTA8MRN9ePGJoZgeKfe8WeBHUxE\",\n  SLIM_USDC_DD = \"3K7aZhtwWJ2JS6GnbbgeDVnxd1q2hwhqasmgRsAMZ4yC\",\n  NINJA_SOL_DD = \"7YyhptkxY81HPzFVfyCzA5UXxWdsNRD41ofLva3TuSpd\",\n  ATLAS_USDC_DD = \"HFmY1ggCsCky1zJ1sfdkNR4zb3u5n38YNRdf4vsGu17t\",\n  POLIS_USDC_DD = \"63JUKLnCAuNMPSPioEgbjjzp9Qk8qSEEM8eZqEtPqfLU\",\n  ABR_USDC_DD = \"5uR5STASUmoGVHzqMeut98t26TfVkQqWU9f9dsv3NfJ6\",\n  KURO_USDC_DD = \"6PGoaQdL9e463hdaFxHXsuPcjCHRK32CQ9PFKxvM7XY2\",\n  mSOL_USDC_DD = \"5r3vDsNTGXXb9cGQfqyNuYD2bjhRPymGJBfDmKosR9Ev\",\n  ORCA_mSOL_DD = \"3Duk5b6fLztPmS4ryV48FM1Q9WXUSMwz9jehAT4UtqpE\",\n  mSOL_SOL_DD = \"3RTGL7gPF4V1ns1AeGFApT7cBEGVDfmJ77DqQi9AC6uG\",\n  stSOL_wstETH_DD = \"3kT3oYuS1rCfhmqfgy6EKcbZdaJimaVEjoy25QiuEaoj\",\n  SYP_USDC_DD = \"Ds4VGZhZzS2PMFzhzKeC3mwcQjdiCG21R76fTVbsSJyJ\",\n  MNDE_mSOL_DD = \"2wPsMuzhEsC6GhV3qtFpmJF6atEgLGbnmQ8U43Y6fPxZ\",\n  mSOL_USDT_DD = \"Afvh7TWfcT1E9eEEWJk17fPjnqk36hreTJJK5g3s4fm8\",\n  mSOL_whETH_DD = \"58nifjPjF3CutGz2xMxvAMk7R9YgbVEc8Cstj4rCcs8j\",\n  BTC_mSOL_DD = \"DzpLz78wuwyFsQToin8iDv6YK6aBEymRqQq82swiFh7r\",\n  IVN_SOL_DD = \"HqajzzbGMST3yCCVBJuXvNVsWkY2DXqiBz9cTRmmyBMy\",\n  LARIX_USDC_DD = \"DNAGfa7tK8csprRQmiDUwDaFfhw6ueHhVFHTCgTJ8HGs\",\n  GOFX_USDC_DD = \"B95rdqSY4dqPwmt295XwBZZqZJYLmqDNXU6NvBpT4ep4\",\n  WOOF_USDC_DD = \"4HaQXDz9gdLgKUjvNVtnLyNZoWNYKjh3XxH1TpLgiwmi\",\n  SDOGE_USDC_DD = \"4kXYyZAMBdvgDaBKUGvRWJnHw9af7sCUPvpQ68PEdP8b\",\n  CATO_USDC_DD = \"BHtZnTBMeY4EBEW5egGnuK5bdW12v6Dod6wFav79AyYx\",\n  OOGI_USDC_DD = \"FiwSk36yi1DNWcuQUeNipAc1VKxa9Wv9AR2xFvyKUxAE\",\n  SONAR_USDC_DD = \"GWmwwMGYBG4NqYdnsYrudzBnbgDC49MkBxdzhfLA9kVY\",\n  UPS_USDC_DD = \"9fuv3emLQXECrTWqm2HaKT3wQhmvmgqmReZSMcu8PfpH\",\n  FANT_USDC_DD = \"C2EcthTMaC5eATXVaXg5ctvMfUYYgFyNibybHes5D3S6\",\n  stSOL_USDC_DD = \"3u2dNfGuU6C3vmSg5EvLPUpX57b3niqhWBV5Gc3WDEf5\",\n  WMP_USDC_DD = \"Ce3VXSQGFEHqrQSEzcVb2Ro88Mcn56cYBUAXFx5tL9bo\",\n  CHICKS_USDC_DD = \"GTcxXu3yw7yotq2UtAMvpEbx84ozJyrBwy77Cmem7m4X\",\n  UNQ_USDC_DD = \"CsGTrgJ6oLx9UQow9aLjuAacjXTY53zT8B2FnAbfVZAS\",\n  MEAN_USDC_DD = \"3h2VBX8533NB8eEH8rPXMdayodFDbgTHpbav6JqLZAQq\",\n  WAG_USDC_DD = \"8Wu5sJpERA1J5iWcT8aMpt9cTAfKDLPbLpGjNsJoPgLc\",\n  SHDW_USDC_DD = \"7WWHfufv8vuBC1x7GXA3pu7kgNhEQkXoq3CtbaQihAJ9\",\n  SHDW_SOL_DD = \"BDStVBt4NS5bfda25ubK51kVRioV4yjKKCPbe96jeEms\",\n  AART_USDC_DD = \"Bg7pZq7KdsQsnCQBeNpa4XVnrWfjUJNu3ViHoNB7YUZU\",\n  BASIS_USDC_DD = \"4yx2aHMa7N4m1uUaBRy9QPtpstw3HFPtvcCPJQaGFHKL\",\n  SLC_USDC_DD = \"X8GnAvxq942xXjNzqYPFQQ9JstJQNEA81uPeNoQpgrN\",\n  wUST_SOL_DD = \"F49Cm3srGucQCBanA2xL7nSKHfH1QZd9vLdFtkg4LKnq\",\n  wUST_USDC_DD = \"2mhVUMsG7eb3XhHjAbKpRZgWNyGZNCiWU7dRxauzZaGL\",\n  mSOL_wUST_DD = \"6wqME6zPQzGDLugpnwZnVBKBbATC5nTaEa781Vj98yvM\",\n  wLUNA_wUST_DD = \"3ZGKT28NXAqb2YtUAMvKixQvHNHT31Q5mK8AC2iBMs29\",\n  stSOL_wUST_DD = \"3Q44iV4URXdbS4Tk1PGs5VdWQoCxHB7zdcdMnemo8jfH\",\n  CMFI_USDC_DD = \"E8RVjS24pBuF3oCCeJVAgC4RQ7mVa5P3FGXqGbiczzvD\",\n  HBB_USDC_DD = \"BxPd4x7gm6WQF6jsDCRQuQVZ2bopQ4KegMrqyQgdkPDk\",\n  CELO_USDC_DD = \"9RRBDWZGWGVnHgazCpb9R1XApmHLBDya8Tq1yrzoMsKY\",\n  SB_USDC_DD = \"3Wppx86xN7Dg7GLUTD9C7AqCt68qZkWzNYUdCS7t1pCk\",\n  FTM_USDC_DD = \"E7Af9Fa2U1YqEkQpAYjXwDB5TJUou9VcN3ot33Gj6UY9\",\n  stSOL_USDT_DD = \"CtvKaRLzCzRZCcYPwai7NCYBK4ArBj2oD6BfvMgJoiCN\",\n  SEEDED_USDC_DD = \"H15WptGntFQifZmJHUzYBV9Mv7P27ofavEsF6yqpLTdX\",\n  ONESOL_SOL_DD = \"Hva9oLa2GjoKdB45WoHujsX7MTpehByPshMrQpNDmkFq\",\n  MMA_USDC_DD = \"H9qkbU2XYSQTk6JJJ2TMuZBthfkeCHigmuxB5jiQaamn\",\n  PUFF_SOL_DD = \"Ge5kuYg5PekrPUeKzngw97Cnfngj8j6NCX5q1jTBkWSW\",\n  SAO_USDC_DD = \"A9BeGSRJJYXPrMs81rVZxvkk16fopzgG5YkngntgTu7p\",\n  sRLYv2_SOL_DD = \"6gkZ7QUmxmwPLS2NK3Dr6YHtTPZs6GQrkA595WSx5iLe\",\n  ZBC_USDC_DD = \"7Hoi4adCSBzERdvSiUXtVDz79tiDxMD5HpDv7m9rs3Sb\",\n  NOVA_USDC_DD = \"H2jZrZKx1fLY9LPi2ad5G2DVBWzMmUwPQLjRFERUroEH\",\n  HBB_USDH_DD = \"DUGuXcpHX9y6WdTKgDm8XsECbf7pApA7ZvAsjUqHUoYn\",\n  ZIG_USDC_DD = \"9nKbvVW9TjdnKt2NbfMaf9PHcg8zWWFgGTBfzUXdFcke\",\n  sRLY_SOL_DD = \"HfkZkoPqZzd7S1F3BhkJN2Es1C5vabVYqfCecXG2MGHP\",\n  TAKI_sRLY_DD = \"13HwDUH7yREGAwHSWnx4Kgnn6huL8yfCCBqaBr6NGVH6\",\n  stSOL_SOL_DD = \"7ZvhrqdnP2NrQi2YCjQNd8jKJpLDMUuZg4wP7XJPjnVX\",\n  BTC_stSOL_DD = \"GjBW6751wNJ99zYkr9QwSi98bvj1NgyAcYHfQDpemJfq\",\n  stSOL_whETH_DD = \"9V9CavjccKJH66m4MJHzVBYzY2ZM3U3D5xUCP7HSyAUz\",\n}\n"
  },
  {
    "path": "src/public/farms/index.ts",
    "content": "export * from \"./config\";\nexport * from \"./types\";\n"
  },
  {
    "path": "src/public/farms/types.ts",
    "content": "import { Keypair, PublicKey } from \"@solana/web3.js\";\nimport Decimal from \"decimal.js\";\nimport { OrcaU64, TransactionPayload } from \"..\";\n\nexport type OrcaFarm = {\n  /**\n   * Query the balance for an user address\n   * @param wallet The public key for the user.\n   * @return Returns the amount of farm token the user owns for this pool.\n   */\n  getFarmBalance: (owner: PublicKey) => Promise<OrcaU64>;\n\n  /**\n   * Query the supply of farm tokens for this pool.\n   * @return Returns the supply of farm tokens for this pool.\n   */\n  getFarmSupply: () => Promise<OrcaU64>;\n\n  /**\n   * Perfrom a deposit: send baseToken, and receive farmToken in return.\n   * Fee for the transaction will be paid by the owner's wallet.\n   *\n   * NOTE:\n   * 1. Associated Token Address initialization instructions will be appended if the ATA of the specified token does not exist in the user's wallet\n   * 2. OrcaU64 must have the same scale as the corresponding token scale value\n   *\n   * @param owner The keypair for the user's wallet or just the user's public key\n   * @param baseTokenAmount The amount of baseToken to deposit\n   * @return The transaction signature of the deposit instruction\n   */\n  deposit: (\n    owner: Keypair | PublicKey,\n    baseTokenAmount: Decimal | OrcaU64\n  ) => Promise<TransactionPayload>;\n\n  /**\n   * Perfrom a withdraw: send farmToken, and receive baseToken in return.\n   * Fee for the transaction will be paid by the owner's wallet.\n   *\n   * WARNING:\n   * 1. Withdraw is only supported from the public key that initiated the deposit.\n   *\n   * NOTE:\n   * 1. Associated Token Address initialization instructions will be appended if the ATA of the specified token does not exist in the user's wallet\n   * 2. OrcaU64 must have the same scale as the corresponding token scale value\n   *\n   * @param owner The keypair for the user's wallet or just the user's public key\n   * @param baseTokenAmount The amount of baseToken to receive\n   * @return The transaction signature of the deposit instruction\n   */\n  withdraw: (\n    owner: Keypair | PublicKey,\n    baseTokenAmount: Decimal | OrcaU64\n  ) => Promise<TransactionPayload>;\n\n  /**\n   * Get the total amount of rewards that has accumulated in the user's farm.\n   *\n   * Returns 0 if:\n   *   1. the user does not have a farm initialized (by calling deposit)\n   *   2. the user's farm balance is empty\n   *\n   * @param ownerPublicKey The public key of the user\n   * @return The amount of reward that can be harvestable by the user\n   */\n  getHarvestableAmount: (ownerPublicKey: PublicKey) => Promise<OrcaU64>;\n\n  /**\n   * Harvest all of the rewards that has accumulated in the user's farm.\n   *\n   * Throws error if the user does not have a farm initialized (by calling deposit)\n   *\n   * @param owner The keypair for the user's wallet or just the user's public key\n   * @return The transaction signature of the harvest instruction\n   */\n  harvest: (owner: Keypair | PublicKey) => Promise<TransactionPayload>;\n\n  /**\n   * Get amount of reward tokens emitted to all liquidity per day.\n   */\n  getDailyEmissions: () => Promise<OrcaU64>;\n};\n"
  },
  {
    "path": "src/public/index.ts",
    "content": "export * from \"./utils\";\nexport * from \"./pools\";\nexport * from \"./main\";\nexport * from \"./farms\";\n"
  },
  {
    "path": "src/public/main/index.ts",
    "content": "export * from \"./orca\";\nexport * from \"./types\";\n"
  },
  {
    "path": "src/public/main/orca.ts",
    "content": "import { Connection } from \"@solana/web3.js\";\nimport { Network } from \"..\";\nimport { OrcaImpl } from \"../../model/orca/orca-impl\";\nimport { Orca } from \"./types\";\n\n/**\n * Retrieve an instance of the Orca SDK\n * @param connection Solana connection class\n * @returns An instance of Orca SDK\n */\nexport function getOrca(connection: Connection, network = Network.MAINNET): Orca {\n  return new OrcaImpl(connection, network);\n}\n"
  },
  {
    "path": "src/public/main/types.ts",
    "content": "import { OrcaFarm, OrcaPool, OrcaPoolConfig, OrcaFarmConfig } from \"..\";\n\nexport type Orca = {\n  /**\n   * Get an instance of an Orca pool.\n   * @param pool a pool config targeting an Orca pool\n   */\n  getPool: (pool: OrcaPoolConfig) => OrcaPool;\n\n  /**\n   * Get an instance of an Orca farm.\n   * @param farm a farm config targeting an Orca farm\n   */\n  getFarm: (farm: OrcaFarmConfig) => OrcaFarm;\n};\n"
  },
  {
    "path": "src/public/pools/config.ts",
    "content": "/**\n * The following content is auto-generated.\n */\n\n/**\n * A list of supported Orca pools in this SDK.\n */\nexport enum OrcaPoolConfig {\n  SOL_USDC = \"APDFRM3HMr8CAGXwKHiu2f5ePSpaiEJhaURwhsRrUUt9\",\n  SOL_USDT = \"FZthQCuYHhcfiDma7QrX7buDHwrZEd7vL8SjS6LQa3Tx\",\n  ETH_SOL = \"71FymgN2ZUf7VvVTLE8jYEnjP3jSK1Frp2XT1nHs8Hob\",\n  ETH_USDC = \"3e1W6Aqcbuk2DfHUwRiRcyzpyYRRjg6yhZZcyEARydUX\",\n  RAY_SOL = \"5kimD5W6yJpHRHCyPtnEyDsQRdiiJKivu5AqN3si82Jc\",\n  ROPE_SOL = \"ADrvfPBsRcJfGsN6Bs385zYddH52nuM5FA8UaAkX9o2V\",\n  STEP_SOL = \"8nTzqDXHriG2CXKbybeuEh1EqDQMtrbYMFWcP7AkiDaP\",\n  SRM_SOL = \"9tf8rBSEQYG7AqL896fN2nZi1iYPqpWaLEdpbeQaC1Vy\",\n  FTT_SOL = \"EsYaDKJCmcJtJHFuJYwQZwqohvVMCrFzcg8yo3i328No\",\n  COPE_SOL = \"CzieDbGRdN1QGaGDNpSqzEA18bi881ccvkkGZi51pe1k\",\n  OXY_SOL = \"7tYCdLN84EnTMkxM7HNamWJx7F4xgKe9KiiWvLyWjbgT\",\n  BTC_SOL = \"Acxs19v6eUMTEfdvkvWkRB4bwFCHm3XV9jABCy7c1mXe\",\n  MER_SOL = \"HiwRobjfHZ4zsPtqCC4oBS24pSmy4t8GGkXRbQj4yU6L\",\n  FIDA_SOL = \"EYsNdtyu4gGTaGz8N5m5iQ3G1N6rDyMbR72B3CqbWW4W\",\n  MAPS_SOL = \"99pfC8fWymXgbq3CvrExhx3UxQDC1fMWEWLbNT83F45e\",\n  USDC_USDT = \"H2uzgruPvonVpCRhwwdukcpXK8TG17swFNzYFr2rtPxy\",\n  ORCA_SOL = \"2uVjAuRXavpM6h1scGQaxqb6HVaNRn6T2X7HHXTabz25\",\n  ORCA_USDC = \"n8Mpu28RjeYD7oUX3LG1tPxzhRZh3YYLRSHcHRdS3Zx\",\n  KIN_SOL = \"HEvnD66WcBfTajS9adUYnGRBMDehFtLySiFHSD6kEBWs\",\n  SAMO_SOL = \"D6N9j8F2DhtzDtrdpT74y3u2YmYAzcggiLc3nTjqux9M\",\n  LIQ_USDC = \"3PD9SZFwXKkXr4akLf4ofo37ZUMycwML89R2P3qxcbZG\",\n  SNY_USDC = \"AZpo4BJHHRetF96v6SGinFZBMXM4yWMo4RA8C4PriDLk\",\n  mSOL_USDC = \"8PSfyiTVwPb6Rr2iZ8F3kNpbg65BCfJM9v8LfB916r44\",\n  SLRS_USDC = \"AtB4nUmdyQfuWWJ9xAHw9xyVnJFfSjSuVWkiYan8y86w\",\n  PORT_USDC = \"F8gPSpwVHj8FdAJAYULDuZBxFEJut87hUbARYYx3471w\",\n  SBR_USDC = \"CS7fA5n4c2D82dUoHrYzS3gAqgqaoVSfgsr18kitp2xo\",\n  scnSOL_USDC = \"Dkr8B675PGnNwEr9vTKXznjjHke5454EQdz3iaSbparB\",\n  pSOL_USDC = \"C2YzN6MymD5HM2kPaH7bzcbqciyjfmpqyVaR3KA5V6z1\",\n  mSOL_SOL = \"29cdoMgu6MS2VXpcMo1sqRdWEzdUR9tjvoh8fcK8Z87R\",\n  ORCA_PAI = \"C7TH2jEJJaxVwwuvkbcDGfHUiZvEkkeYjyAcdTMi5ujb\",\n  ORCA_mSOL = \"CVapmQn7HaU1yMDW3q6oUV4hx6XoYv54T4zfGXkuJqkA\",\n  scnSOL_SOL = \"APNpzQvR91v1THbsAyG3HHrUEwvexWYeNCFLQuVnxgMc\",\n  ATLAS_USDC = \"FZ8x1LCRSPDeHBDoAc3Gc6Y7ETCynuHEr5q5YWV7uRCJ\",\n  POLIS_USDC = \"GteBdo9sqE7T41G8AJsaG9WHW48uXBwsLLznmu2TBdgy\",\n  BOP_USDC = \"2gXDJZ7XAtQEtf4PRSQZKoq1WMuu1H44tQanbMA3YVpu\",\n  SAMO_USDC = \"6VK1ksrmYGMBWUUZfygGF8tHRGpNxQEWv8pfvzQHdyyc\",\n  NINJA_SOL = \"4X1oYoFWYtLebk51zuh889r1WFLe8Z9qWApj87hQMfML\",\n  SLIM_USDC = \"BVWwyiHVHZQMPHsiW7dZH7bnBVKmbxdeEjWqVRciHCyo\",\n  wHAPI_USDC = \"ELfBngAgvLEHVBuJQhhE7AW6eqLX7id2sfrBngVNVAUW\",\n  COPE_USDC = \"HsauTv9s52Zv12eaDuSp6y7BEm4e4BHEyAsbdjyyWzPK\",\n  SUNNY_USDC = \"GHuoeq9UnFBsBhMwH43eL3RWX5XVXbSRYJymmyMYpT7n\",\n  GRAPE_USDC = \"EorFh8siFyLF1QTZ7cCXQaPGqyo7eb4SAgKtRH8Jcxjd\",\n  ABR_USDC = \"GMzPbaCuQmeMUm1opH3oSCgKUjVgJUW14myq99RVPGX5\",\n  KURO_USDC = \"DRknxb4ZFxXUTG6UJ5HupNHG1SmvBSCPzsZ1o9gAhyBi\",\n  MEDIA_USDC = \"2toFgkQDoPrTJYGDEVoCasPXuL9uQnjvXJaDwa9LHyTx\",\n  TULIP_USDC = \"4SBx8GXu8HhcVHWydQv1vsDdZs3G93XSL9CtMBny6hS5\",\n  MNGO_USDC = \"H9yC7jDng974WwcU4kTGs7BKf7nBNswpdsP5bzbdXjib\",\n  stSOL_wstETH = \"Eswigpwm3xsipkTqahGi2PEJsJcULQBwZgxhQpr6yBEa\",\n  SYP_USDC = \"qJxKN9BhxbYvRNbjfK2uAVWboto6sonj8XC1ZEW5XTB\",\n  stSOL_wLDO = \"74B9aMS7SA832xKngt5VLKmWAP3pa3qkUzWncTmQSsGF\",\n  whETH_SOL = \"7aYnrdmdCRodDy2Czn6keUquUhjF1jPEmfwZPh488z8U\",\n  whETH_USDC = \"7NPtjjAP7vhp4t5NCLyY4DY5rurvyc8cgZ2a2rYabRia\",\n  MNDE_mSOL = \"5PHS5w6hQwFNnLz1jJFe7TVTxSQ98cDYC3akmiAoFMXs\",\n  WAG_USDC = \"Df6XNHMF3uRVZnz7LCEGiZVax6rXgz76owtVkBHEjSb6\",\n  mSOL_USDT = \"9cMWe4UYRPGAUUsTkjShJWVM7bk8DUBgxtwwH8asFJoV\",\n  mSOL_whETH = \"5qoTq3qC4U7vFxo3iCzbXcaD1UEmDeCD63Dsuoct71oV\",\n  BTC_mSOL = \"8nKJ4z9FSw6wrVZKASqBiS9DS1CiNsRnqwCCKVQjqdkB\",\n  IVN_SOL = \"DfgCnzaiTXfPkAH1C1Z441b5MzjjTCEh134ioxqRZxYf\",\n  LARIX_USDC = \"8sfThep3io4gvcGeuoAg1Rs8GDwKJjtcdAFHqQSSNAVE\",\n  PRT_USDC = \"6jCERp5hKj37PCXP3VTjCDJeoPuSpnMDMz5A6jWQv3yS\",\n  JET_USDC = \"GBijunwxa4Ni3JmYC6q6zgaVhSUJU6hVX5qTyJDRpNTc\",\n  stSOL_USDC = \"GtQ1NT7R5aaTiST7K6ZWdMhwDdFxsSFvVFhBo8vyHGAq\",\n  wstETH_USDC = \"5a6Y1ephcbKSoyLMQyD1JWbtqawCy8p2FtRL9v3zhaG5\",\n  AURY_USDC = \"6mJqqT5TMgveDvxzBt3hrjGkPV5VAj7tacxFCT3GebXh\",\n  AVAX_USDC = \"Hmfrtmo93DpSDmVNLQKcBS5D1ia5JatiRSok9ososubz\",\n  FTT_USDC = \"FwCombynV2fTVizxPCNA2oZKoWXLZgdJThjE4Xv9sjxc\",\n  RAY_USDC = \"4cXw2MYj94TFBXLL73fEpMCr8DPrW68JvrV8mzWgktbD\",\n  SLND_USDC = \"F59gkD7NnsdJbFKrRZsiBC8PAooN4c56T8QmahfW1iXN\",\n  GOFX_USDC = \"7vnps4VE5RTGAr5fmPZu7fSrk2VnM4Up838grZfqmxqE\",\n  WOOF_USDC = \"9EjcYfHcG8f1mccpHyaAwpoxaUPiheC6KgLQjyD9aTb6\",\n  SDOGE_USDC = \"CHTKUJGYRtBDqnxCFjxe5KEkZgxV98udbhuYYyzGxup5\",\n  CATO_USDC = \"55r9txzQtmjTykmTXmBYZCVMg5z9squB8b5cSw2AhxA4\",\n  OOGI_USDC = \"DSiHyHDn96bUQSZtizyCRLcQzrwohZeMpVu8rYJN1HzG\",\n  SONAR_USDC = \"5MvQHx8eftU39JTucFsT315JFnQASuDQg3FqxTw7xcvN\",\n  APT_USDC = \"HNrYngS1eoqkjWro9D3Y5Z9sWBDzPNK2tX4rfV2Up177\",\n  DFL_USDC = \"AWrtTWG4Zgxw8D92bb3L3sQtGLD3zDztMPWsXSph8iBP\",\n  DFL_SOL = \"9Y1vPaAsMz8X65DebMMnmBjbMo8i4jh4mcgiggZUUS3M\",\n  FRKT_USDC = \"FnDxJPNk7pPmGHUbR4XUHmHevrkXHdna5D3sQKcAtjBL\",\n  TTT_USDC = \"FGgP1npQTsC5Q4xBmQtNYSh51NKqNwdxBZy8JCo3igcu\",\n  UPS_USDC = \"E1U63VXhNiWoUkVvjrfLDdV1oJrwE6zLde3bohr6jCqz\",\n  FANT_USDC = \"GjG7JjTQfQpDxw4hWx4etP9oTaYCuCbPjsU8WaUT3xHB\",\n  BLOCK_USDC = \"D8WjqtwC9CzBrQKfSf2ccCHFQuPYwyLv5KAy8WjT5vnf\",\n  RUN_USDC = \"34Ppq6R8NfYBwWwPY4cBK4Afyb8hHaASQFukCzH6cV4n\",\n  UXP_USDC = \"HjR8JgqNKQVMvdryqJw5RJ4PCE9WGk8sgbEF7S9S3obv\",\n  BTC_USDC = \"J3kvcay3N16FBdawgnqoJ9v9p6XCvyCLE2Z9F5RLvGkj\",\n  MNDE_USDC = \"12Uj74zgUUoBe4yeackwQ4qYtFMr9fk1xL6q5Nha6t2N\",\n  CHICKS_USDC = \"71CBZeJ4tw38L9pSPoCz4fRsuWE64Fipyzotte7haoCS\",\n  ONESOL_USDC = \"6MF5CHWAj5mS7FhpxiKz37CzR2eYTu236XpBKKMXCrGg\",\n  WMP_USDC = \"HDgxKmiA8Pv82fNguhVeMkZqQkos2YksFPoP1KttWxX8\",\n  UNQ_USDC = \"2VuGzaMrDnDyZfYvDwSXk38s7M2wpud7LDY3dGA1J9sy\",\n  BASIS_USDC = \"GoaAiajubRgeCFEz9L6mLnSmT2QFegoJDH5tpLfivpj\",\n  GST_USDC = \"E6FUnQHGHJVJg7oExVr5Moeaj1QpdpZQF5odYjHXWPZb\",\n  MEAN_USDC = \"F5BTnwuMA6rxftTdbZ33VWKr2wrr6DuQHnd4guKmPSYQ\",\n  AART_USDC = \"HCtyJzFUtYecXrA52s4Y9atq4J1fhT3cYsTX17XVSFag\",\n  SHDW_USDC = \"DJqqvzSuPaWThfzwMjXx7H2ZmHDdwxza6NtFudtuXcpc\",\n  SHDW_SOL = \"2ws7g3LBPdctfKn42Di9qxzQtUJ8ZL1aEAX2rGEQMNqh\",\n  SCY_USDC = \"99ZHUQsgxL7K6PHrGNi1gSwawwPr7UA5fbWrYoHQ6qhX\",\n  SLC_USDC = \"E5kSBqTDxFLbLNQaVVtPtnhEYVLMCK2fVSEKoMKL98qR\",\n  wUST_SOL = \"6c13xsmyk7UaHUWZ2rm1MM3ZdrQRSBkQ9waaG25ridVs\",\n  wUST_USDC = \"J1KfRtP5y2warpD7LdJhfBLPKoWwSqYuovdArSv1mpQ7\",\n  mSOL_wUST = \"68YVjgPnTUPcBqZyghqvD2WPNsrLKsjYTmBKJzHRr4qd\",\n  wLUNA_wUST = \"8Mh7drLbt3jFJYwp948XyvQscGLaLkChNcaH5wwaAoWA\",\n  stSOL_wUST = \"HTZd53fYwYQRyAjiaPsZy9Gf41gobFdqkF4oKe3XLi95\",\n  JSOL_USDC = \"AzEoVuNJyo9ByoLRZ5t6vav2Zg24vULNVJM41PgCKUqR\",\n  daoSOL_USDC = \"CCyDxjdW3G7hPTthTMPTZ4bnhFF19XG6rx2fNiKeRQww\",\n  ORCA_USDT = \"Gx4PoxenyQwhGGnKagAT35iVg4im1iKhJxDWqVhgu6tk\",\n  ORCA_whETH = \"GsfyYHkSgC3Ta6aWR9MjB2sxoBrkGGeR2tAwXbpphf3\",\n  GENE_USDC = \"7cuu94swKL5PtFQohKMAzyd1mjj65rgMW3GzLY31HCnK\",\n  CMFI_USDC = \"85krvT9DxdYgoFLQDHTAGdvtNuLdAsc4xE5FkVLpN2aR\",\n  CELO_USDC = \"HVLyX8mD8YvKgZJ4oB6rXJiCYMLpHKwB6iCiCjE1XwdT\",\n  FTM_USDC = \"Gpzd833qSmv3kXpQmxEaqkrZTXZaRjhNAoqhf61qAhTG\",\n  BTC_ORCA = \"DFpLFcQZqDKykyDePgip4r6MExVmBKWqTa12ezq6qxUY\",\n  HBB_USDC = \"cL5WhffCYFRLM4We8VS2W684kM4pHyuvEDwp8Ddw48k\",\n  HBB_SOL = \"FkKzu2HeMJZf4oHwoYPxLGVy3net5Jq8HAfnA5VqETgk\",\n  SB_USDC = \"2Reqt4Sw9xNY8BoJ3EZLpFu5yVgNxFrbw8M3KiJpPn6o\",\n  stSOL_USDT = \"4ni1nho89cDKAQ9ddbNQA9ieLYpzvJVmJpuogu5Ct5ur\",\n  SEEDED_USDC = \"H7gyTmNCDXkD8MGMqnxqoD8ANszjcju4tjT6ERZ5dakf\",\n  AUDIO_USDC = \"3hksYA17VxgiKSeihjnZkBbjc2CTbEBfvDCYgQhojTo5\",\n  MMA_USDC = \"AaZRnJAnDyJyPD9uPJpJ8bzBGDCEi6jtBpUf92xErWPp\",\n  ONESOL_SOL = \"9wPhuYapychVDSxmXqCZxy2Ka8Lmav4SHM72si8bfraV\",\n  PUFF_SOL = \"Eho8h1BcoG5QWU7X9FzJafw5ErKUXtR2LobAJJZfWff4\",\n  SAO_USDC = \"4iyU77yZbg8iD344vbwruAuDAf9i1EVV3FhZJDnWStBE\",\n  sRLYv2_SOL = \"3dXdXg5HPyZ73GFC9LkSn3thdJUGeXWB8iSTHs5UcqiH\",\n  ZBC_USDC = \"2LYgm6nGXmSSjfoEriPuYeGoNiWNxUs7n3rnTbDWN5c7\",\n  GMT_USDC = \"CFxQF5kNAtbbDj298Xr47Sf4mkSyuzWpRH97hrdQ6kxi\",\n  NOVA_USDC = \"DdAFNvDxtEHCgKj3JAM64zCKfMWhs4J9wEmRrjUAFiME\",\n  HBB_USDH = \"7n2YW9qLkhGFArdZPLoF4hYPE2zw7xCACkVPXrUWnLuo\",\n  TAKI_sRLYv2 = \"6atKbS2Xz5vu7cqWBNk8KYkuakRzckZ9nvtUKf2k8Sc3\",\n  ZIG_USDC = \"5vhh9ZnD9vnahRhFLP1EUEyYRSzvJwgw9U2xygsSJSrp\",\n  sRLY_SOL = \"HfRgvhgscGX5GaP3rUrZAhh7gS4aJ2UQ7rNVX976rG6P\",\n  TAKI_sRLY = \"3xaK5aWWLNRB73xUVX3cusLhDp65mTvP4fwW5Jwxakgs\",\n  stSOL_SOL = \"4jjQSgFx33DUb1a7pgPsi3FbtZXDQ94b6QywjNK3NtZw\",\n  BTC_stSOL = \"HYp9v7cY4wAxSsa6ijztQQ3GQ8iTttuG5vu8JNBDHoNh\",\n  stSOL_whETH = \"FWurFWADrgmhb6Y44LEaCMnEHS2Tu3QGqd9oBcZtr8gT\",\n}\n"
  },
  {
    "path": "src/public/pools/index.ts",
    "content": "export * from \"./config\";\nexport * from \"./types\";\n"
  },
  {
    "path": "src/public/pools/types.ts",
    "content": "import { u64 } from \"@solana/spl-token\";\nimport { Keypair, PublicKey } from \"@solana/web3.js\";\nimport Decimal from \"decimal.js\";\nimport { OrcaU64 } from \"..\";\nimport { TransactionPayload } from \"../utils\";\n\nexport type DepositQuote = {\n  minPoolTokenAmountOut: OrcaU64; // MISNOMER - this value represents the exact poolTokenAmountOut\n  maxTokenAIn: OrcaU64;\n  maxTokenBIn: OrcaU64;\n};\n\nexport type WithdrawQuote = {\n  minTokenAOut: OrcaU64;\n  minTokenBOut: OrcaU64;\n  maxPoolTokenAmountIn: OrcaU64; // MISNOMER - this value represents the exact poolTokenAmountIn\n};\n\n/**\n * Allows interactions with an Orca liquidity pool.\n */\nexport type OrcaPool = {\n  /**\n   * Query the token of tokenA in this pool.\n   * @returns Returns the token id of tokenA in this pool\n   */\n  getTokenA: () => OrcaPoolToken;\n\n  /**\n   * Query the token of tokenB in this pool.\n   * @returns Returns the token id of tokenB in this pool\n   */\n  getTokenB: () => OrcaPoolToken;\n\n  /**\n   * Query the mint public key for the pool token of this pool.\n   * @returns Returns the tokenMint public key of this pool\n   */\n  getPoolTokenMint: () => PublicKey;\n\n  /**\n   * Query the balance for an user address\n   * @param wallet The public key for the user.\n   * @return Returns the amount of LP token the user owns for this pool.\n   */\n  getLPBalance: (owner: PublicKey) => Promise<OrcaU64>;\n\n  /**\n   * Query the supply of LP tokens for this pool.\n   * @return Returns the supply of LP tokens for this pool\n   */\n  getLPSupply: () => Promise<OrcaU64>;\n\n  /**\n   * Get the latest quote to trade one token to another in this pool\n   *\n   * Note: slippage supports a maximum scale of 1 (ex. 0.1%). Additional decimal places will be floored.\n   *\n   * @param inputTokenId The token you want to trade from\n   * @param inputAmount The amount of token you would to trade\n   * @param slippage An optional slippage in percentage you are willing to take in this trade (default: 0.1%)\n   * @return Returns a quote on the exchanged token based on the input token amount\n   */\n  getQuote: (\n    inputToken: OrcaToken,\n    inputAmount: Decimal | OrcaU64,\n    slippage?: Decimal\n  ) => Promise<Quote>;\n\n  /**\n   * Get the latest quote to trade on token to another in this pool using user provided pool amounts\n   *\n   * Note: slippage supports a maximum scale of 1 (ex. 0.1%). Additional decimal places will be floored.\n   *\n   * @param inputTokenId The token you want to trade from\n   * @param inputAmount The amount of token you would to trade\n   * @param inputTokenPoolAmount The amount of input tokens in the pool\n   * @param outputTokenPoolAmount The amount of output tokens in the pool\n   * @param slippage An optional slippage in percentage you are willing to take in this trade (default: 0.1%)\n   * @return Returns a quote on the exchanged token based on the input token amount\n   */\n  getQuoteWithPoolAmounts: (\n    inputToken: OrcaToken,\n    inputAmount: Decimal | OrcaU64,\n    inputTokenPoolAmount: u64,\n    outputTokenPoolAmount: u64,\n    slippage?: Decimal\n  ) => Promise<Quote>;\n\n  /**\n   * Perform a swap from the input type to the other token in the pool.\n   * Fee for the transaction will be paid by the owner's wallet.\n   *\n   * NOTE:\n   * 1. Associated Token Address initialization instructions will be appended if the ATA of the specified token does not exist in the user's wallet\n   * 2. OrcaU64 must have the same scale as the corresponding token scale value\n   *\n   * @param owner The keypair for the user's wallet or just the user's public key\n   * @param inputToken An Orca supported token in the user's wallet to swap from\n   * @param amountIn The amount of inputToken to swap from\n   * @param minimumAmountOut The minimum amount of outputToken to receive from this swap\n   * @return The transaction signature of the swap instruction\n   */\n  swap: (\n    owner: Keypair | PublicKey,\n    inputToken: OrcaToken,\n    amountIn: Decimal | OrcaU64,\n    minimumAmountOut: Decimal | OrcaU64\n  ) => Promise<TransactionPayload>;\n\n  /**\n   * Get suggested pool token deposit amount based on required constraints on maximum tokenA amount and maximum tokenB amount\n   *\n   * Note:\n   * 1. minPoolTokenAmountOut in the output type is a misnomer, and it represents the _exact_ poolTokenAmountOut value\n   *\n   * @param maxTokenAIn The maximum amount of tokenA to deposit in exchange for pool token\n   * @param maxTokenBIn The maximum amount of tokenB to deposit in exchange for pool token\n   * @param slippage An optional slippage in percentage you are willing to take in deposit (default: 0.1%)\n   * @return Returns the input for deposit\n   */\n  getDepositQuote: (\n    maxTokenAIn: Decimal | OrcaU64,\n    maxTokenBIn: Decimal | OrcaU64,\n    slippage?: Decimal\n  ) => Promise<DepositQuote>;\n\n  /**\n   * Perform a deposit: send tokenA and tokenB, and receive a poolToken in return.\n   * Fee for the transaction will be paid by the owner's wallet.\n   *\n   * NOTE:\n   * 1. Associated Token Address initialization instructions will be appended if the ATA of the specified token does not exist in the user's wallet\n   * 2. OrcaU64 must have the same scale as the corresponding token scale value\n   *\n   * @param owner The keypair for the user's wallet or just the user's public key\n   * @param maxTokenAIn The maximum amount of tokenA to send\n   * @param maxTokenBIn The maximum amount of tokenB to send\n   * @param minPoolTokenAmountOut The amount of poolToken to receive\n   * @return The transaction signature of the deposit instruction\n   */\n  deposit: (\n    owner: Keypair | PublicKey,\n    maxTokenAIn: Decimal | OrcaU64,\n    maxTokenBIn: Decimal | OrcaU64,\n    minPoolTokenAmountOut: Decimal | OrcaU64\n  ) => Promise<TransactionPayload>;\n\n  /**\n   * Get suggested withdraw token amounts based on required withdraw amount of the pool token / one of the paired tokens\n   *\n   * Throws error if withdrawTokenMint does not equal tokenMint of tokenA, tokenB, or poolToken of this pool\n   *\n   * Note:\n   * 1. maxPoolTokenAmountIn in the output type is a misnomer, and it represents the _exact_ poolTokenAmountIn value\n   *\n   * @param withdrawTokenAmount The amount of tokens to withdraw in terms of tokenA amount, tokenB amount, or poolToken amount\n   * @param withdrawTokenMint The token mint public key of tied to withdrawTokenAmount. It should be the mint of tokenA, tokenB, or poolToken\n   * @param slippage An optional slippage in percentage you are willing to take in withdraw (default: 0.1%)\n   * @return Returns the input for withdraw\n   */\n  getWithdrawQuote: (\n    withdrawTokenAmount: Decimal | OrcaU64,\n    withdrawTokenMint: PublicKey,\n    slippage?: Decimal\n  ) => Promise<WithdrawQuote>;\n\n  /**\n   * Perform a withdraw: send poolToken, and receive tokenA and tokenB in return.\n   * Fee for the transaction will be paid by the owner's wallet.\n   *\n   * NOTE:\n   * 1. Associated Token Address initialization instructions will be appended if the ATA of the specified token does not exist in the user's wallet\n   * 2. OrcaU64 must have the same scale as the corresponding token scale value\n   *\n   * @param owner The keypair for the user's wallet or just the user's public key\n   * @param poolTokenAmountIn The amount of poolToken to send\n   * @param minTokenAOut The minimum amount of tokenA to receive\n   * @param minTokenBOut The minimum amount of tokenB to receive\n   * @return The transaction signature of the withdraw instruction\n   */\n  withdraw: (\n    owner: Keypair | PublicKey,\n    poolTokenAmountIn: Decimal | OrcaU64,\n    minTokenAOut: Decimal | OrcaU64,\n    minTokenBOut: Decimal | OrcaU64\n  ) => Promise<TransactionPayload>;\n};\n\n/**\n * An Orca Token\n * @param tag The tag of the token\n * @param name The presentable name of the token\n * @param mint The mint public key for the token\n * @param scale The scale of the u64 return type\n */\nexport type OrcaToken = {\n  tag: string;\n  name: string;\n  mint: PublicKey;\n  scale: number;\n};\n\n/**\n * An Orca Token within an OrcaPool\n * @param addr The public key for this token for this Orca Pool\n */\nexport type OrcaPoolToken = OrcaToken & {\n  addr: PublicKey;\n};\n\nexport type Quote = {\n  /**\n   * Returns the rate of exchange given the trade amount. Fees are included.\n   * Rate is zero if the input trade amount, input or output token balance in pool is zero.\n   * @returns a function that returns the rate of exchange when the quote was built (denominated by output token)\n   */\n  getRate: () => Decimal;\n\n  /**\n   * Returns the fee that will be charged in this exchange.\n   * @return a function that returns the fee (denominated by input token) that will be charged in this exchange.\n   */\n  getLPFees: () => OrcaU64;\n\n  /**\n   * Return the network fee that will be charged to submit the transaction.\n   * @return a function that returns the network fee in lamports that will be charged to submit the transaction.\n   */\n  getNetworkFees: () => OrcaU64;\n\n  /**\n   * Returns the % impact to the rate if this transaction goes through.\n   * @return a function to return the % impact to the rate if this transaction goes through. Zero if input or output token balance in pool is zero.\n   */\n  getPriceImpact: () => Decimal;\n\n  /**\n   * Returns the expected amount of output tokens returned if this exchange is transacted. Fees applied.\n   * @return a function to return the expected amount of output tokens returned if this exchange is transacted\n   */\n  getExpectedOutputAmount: () => OrcaU64;\n\n  /**\n   * Returns the minimum amount of output tokens returned if this exchange is transacted. Fees & maximum slippage applied.\n   * @return a function to return the minimum amount of output tokens returned if this exchange is transacted\n   */\n  getMinOutputAmount: () => OrcaU64;\n};\n"
  },
  {
    "path": "src/public/utils/constants.ts",
    "content": "import { PublicKey } from \"@solana/web3.js\";\n\nexport const ORCA_TOKEN_SWAP_ID: PublicKey = new PublicKey(\n  \"9W959DqEETiGZocYWCQPaJ6sBmUzgfxXfqGeTEdp3aQP\"\n);\n\nexport const ORCA_TOKEN_SWAP_ID_DEVNET: PublicKey = new PublicKey(\n  \"3xQ8SWv2GaFXXpHZNqkXsdxq5DZciHBz6ZFoPPfbFd7U\"\n);\n\nexport const SPL_ASSOCIATED_TOKEN_ACCOUNT_PROGRAM_ID: PublicKey = new PublicKey(\n  \"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\"\n);\n\nexport const ORCA_FARM_ID: PublicKey = new PublicKey(\n  \"82yxjeMsvaURa4MbZZ7WZZHfobirZYkH1zF8fmeGtyaQ\"\n);\n"
  },
  {
    "path": "src/public/utils/index.ts",
    "content": "export * from \"./constants\";\nexport * from \"./models\";\nexport * from \"./numbers\";\nexport * from \"./pool-utils\";\nexport * from \"./time-utils\";\nexport * from \"./web3\";\nexport * from \"./types\";\n"
  },
  {
    "path": "src/public/utils/models/index.ts",
    "content": "export * from \"./instruction\";\nexport * from \"./percentage\";\n"
  },
  {
    "path": "src/public/utils/models/instruction.ts",
    "content": "import {\n  Keypair,\n  PublicKey,\n  Signer,\n  Transaction,\n  TransactionInstruction,\n  TransactionSignature,\n} from \"@solana/web3.js\";\n\nexport const emptyInstruction: Instruction = {\n  instructions: [],\n  cleanupInstructions: [],\n  signers: [],\n};\n\nexport type Instruction = {\n  instructions: TransactionInstruction[];\n  cleanupInstructions: TransactionInstruction[];\n  signers: Signer[];\n};\n\nexport type TransactionPayload = {\n  transaction: Transaction;\n  signers: Signer[];\n  execute: () => Promise<TransactionSignature>;\n};\n"
  },
  {
    "path": "src/public/utils/models/percentage.ts",
    "content": "import { u64 } from \"@solana/spl-token\";\nimport Decimal from \"decimal.js\";\nimport { ZERO } from \"..\";\n\nexport class Percentage {\n  readonly numerator: u64;\n  readonly denominator: u64;\n\n  constructor(numerator: u64, denominator: u64) {\n    this.numerator = numerator;\n    this.denominator = denominator;\n  }\n\n  public static fromDecimal(number: Decimal): Percentage {\n    return Percentage.fromFraction(number.toDecimalPlaces(1).mul(10).toNumber(), 1000);\n  }\n\n  public static fromFraction(numerator: u64 | number, denominator: u64 | number): Percentage {\n    const num = typeof numerator === \"number\" ? new u64(numerator.toString()) : numerator;\n    const denom = typeof denominator === \"number\" ? new u64(denominator.toString()) : denominator;\n    return new Percentage(num, denom);\n  }\n\n  public toString = (): string => {\n    return `${this.numerator.toString()}/${this.denominator.toString()}`;\n  };\n\n  public toDecimal() {\n    if (this.denominator.eq(ZERO)) {\n      return new Decimal(0);\n    }\n    return new Decimal(this.numerator.toString()).div(new Decimal(this.denominator.toString()));\n  }\n\n  public add(p2: Percentage): Percentage {\n    const denomGcd = this.denominator.gcd(p2.denominator);\n    const denomLcm = this.denominator.div(denomGcd).mul(p2.denominator);\n\n    const p1DenomAdjustment = denomLcm.div(this.denominator);\n    const p2DenomAdjustment = denomLcm.div(p2.denominator);\n\n    const p1NumeratorAdjusted = this.numerator.mul(p1DenomAdjustment);\n    const p2NumeratorAdjusted = p2.numerator.mul(p2DenomAdjustment);\n\n    const newNumerator = p1NumeratorAdjusted.add(p2NumeratorAdjusted);\n\n    return new Percentage(new u64(newNumerator.toString()), new u64(denomLcm.toString()));\n  }\n}\n"
  },
  {
    "path": "src/public/utils/numbers/decimal-utils.ts",
    "content": "import { u64 } from \"@solana/spl-token\";\nimport Decimal from \"decimal.js\";\n\nexport class DecimalUtil {\n  public static fromU64(input: u64, shift = 0): Decimal {\n    return new Decimal(input.toString()).div(new Decimal(10).pow(shift));\n  }\n\n  public static toU64(input: Decimal, shift = 0): u64 {\n    if (input.isNeg()) {\n      throw new Error(\"Negative decimal value ${input} cannot be converted to u64.\");\n    }\n\n    const shiftedValue = input.mul(new Decimal(10).pow(shift));\n    const zeroDecimalValue = shiftedValue.trunc();\n    return new u64(zeroDecimalValue.toString());\n  }\n}\n"
  },
  {
    "path": "src/public/utils/numbers/index.ts",
    "content": "export * from \"./decimal-utils\";\nexport * from \"./orca-u64\";\nexport * from \"./u64-utils\";\n"
  },
  {
    "path": "src/public/utils/numbers/orca-u64.ts",
    "content": "import { u64 } from \"@solana/spl-token\";\nimport Decimal from \"decimal.js\";\nimport { DecimalUtil } from \"../../utils/numbers/decimal-utils\";\n\n/**\n * Orca's U64 wrapper class to help users convert to/from regular javascript number types\n *\n *\n * Examples:\n * OrcaU64(value: 99999, decimal: 0) -> 99999\n * OrcaU64(value: 99999, decimal: 5) -> 0.99999\n */\nexport class OrcaU64 {\n  readonly value: u64;\n  readonly scale: number;\n\n  constructor(value: u64, scale = 0) {\n    this.value = value;\n    this.scale = Math.floor(scale);\n  }\n\n  /**\n   * Create an OrcaU64 from a Decimal\n   * @param value - an object representing the value of the u64 in Decimal form\n   * @param scale - the number of digits after the decimal point to keep account for in this u64\n   * @returns OrcaU64 hosting a u64 representing the input value adjusted to the provided scale\n   */\n  static fromDecimal(value: Decimal, scale = 0) {\n    const dec = Math.floor(scale);\n    return new OrcaU64(DecimalUtil.toU64(value, dec), dec);\n  }\n\n  /**\n   * Create an OrcaU64 from a number\n   * @param value - an object representing the value of the u64 in number form\n   * @param scale - the number of digits after the decimal point to keep account for in this u64\n   * @returns OrcaU64 hosting a u64 representing the input value adjusted to the provided scale\n   */\n  static fromNumber(value: number, scale = 0) {\n    const dec = Math.floor(scale);\n    return new OrcaU64(DecimalUtil.toU64(new Decimal(value), dec), dec);\n  }\n\n  /**\n   * Create an OrcaU64 from a u64\n   * @param value - an object representing the value of the u64\n   * @param scale - the number of digits after the decimal point represented in this u64\n   * @returns OrcaU64 hosting the input u64 with the provided scale\n   */\n  static fromU64(value: u64, scale = 0) {\n    const dec = Math.floor(scale);\n    return new OrcaU64(value, dec);\n  }\n\n  /**\n   * Convert this OrcaU64 to Decimal.\n   * @returns Decimal object that equals to the OrcaU64's value & scale\n   */\n  public toDecimal() {\n    return DecimalUtil.fromU64(this.value, this.scale);\n  }\n\n  /**\n   * Convert this OrcaU64 to number.\n   * @returns number that equals to the OrcaU64's value & scale\n   */\n  public toNumber() {\n    return DecimalUtil.fromU64(this.value, this.scale).toNumber();\n  }\n\n  /**\n   * Convert this OrcaU64 to u64.\n   * @returns u64 that equals to the OrcaU64 value\n   */\n  public toU64() {\n    return new u64(this.value.toString());\n  }\n}\n"
  },
  {
    "path": "src/public/utils/numbers/u64-utils.ts",
    "content": "import { u64 } from \"@solana/spl-token\";\nimport Decimal from \"decimal.js\";\nimport { OrcaToken, OrcaU64 } from \"../..\";\nimport { OrcaFarmParams } from \"../../../model/orca/farm/farm-types\";\nimport { OrcaPoolParams } from \"../../../model/orca/pool/pool-types\";\nimport { DecimalUtil } from \"./decimal-utils\";\n\nexport const ZERO = new u64(0);\nexport const ONE = new u64(1);\n\nexport class U64Utils {\n  public static toTokenU64(input: Decimal | OrcaU64, token: OrcaToken, varName: string) {\n    if (input instanceof OrcaU64) {\n      if (input.scale !== token.scale) {\n        throw new Error(\n          `${varName}'s scale of ${input.scale} does not match token's decimal of ${token.scale}`\n        );\n      }\n      return input.toU64();\n    }\n\n    return DecimalUtil.toU64(input, token.scale);\n  }\n\n  public static toPoolU64(input: Decimal | OrcaU64, pool: OrcaPoolParams, varName: string) {\n    if (input instanceof OrcaU64) {\n      if (input.scale !== pool.poolTokenDecimals) {\n        throw new Error(\n          `${varName}'s scale of ${input.scale} does not match pool's decimal of ${pool.poolTokenDecimals}`\n        );\n      }\n      return input.toU64();\n    }\n\n    return DecimalUtil.toU64(input, pool.poolTokenDecimals);\n  }\n\n  public static toFarmU64(input: Decimal | OrcaU64, farm: OrcaFarmParams, varName: string) {\n    if (input instanceof OrcaU64) {\n      if (input.scale !== farm.baseTokenDecimals) {\n        throw new Error(\n          `${varName}'s scale of ${input.scale} does not match baseToken's decimal of ${farm.baseTokenDecimals}`\n        );\n      }\n      return input.toU64();\n    }\n\n    return DecimalUtil.toU64(input, farm.baseTokenDecimals);\n  }\n\n  // Note: divisor input variable modified in place\n  // https://github.com/solana-labs/solana-program-library/blob/master/libraries/math/src/checked_ceil_div.rs#L5-L22\n  public static ceilingDivision(dividend: u64, divisor: u64): [u64, u64] {\n    let quotient = dividend.div(divisor);\n    if (quotient.eq(ZERO)) {\n      return [ZERO, divisor];\n    }\n\n    let remainder = dividend.mod(divisor);\n    if (remainder.gt(ZERO)) {\n      quotient = quotient.add(ONE);\n      divisor = dividend.div(quotient);\n      remainder = dividend.mod(quotient);\n      if (remainder.gt(ZERO)) {\n        divisor = divisor.add(ONE);\n      }\n    }\n\n    return [quotient, divisor];\n  }\n}\n"
  },
  {
    "path": "src/public/utils/pool-utils.ts",
    "content": "import { OrcaPoolParams } from \"../../model/orca/pool/pool-types\";\n\nexport function getTokens(poolParams: OrcaPoolParams, inputTokenId: string) {\n  if (poolParams.tokens[inputTokenId] == undefined) {\n    throw new Error(\"Input token not part of pool\");\n  }\n\n  const tokenAId = poolParams.tokenIds[0];\n  const tokenBId = poolParams.tokenIds[1];\n\n  const forward = tokenAId == inputTokenId;\n\n  const inputOrcaToken = forward ? poolParams.tokens[tokenAId] : poolParams.tokens[tokenBId];\n  const outputOrcaToken = forward ? poolParams.tokens[tokenBId] : poolParams.tokens[tokenAId];\n  return { inputPoolToken: inputOrcaToken, outputPoolToken: outputOrcaToken };\n}\n"
  },
  {
    "path": "src/public/utils/time-utils.ts",
    "content": "export function nowMS() {\n  return new Date().getTime();\n}\n"
  },
  {
    "path": "src/public/utils/types.ts",
    "content": "export enum Network {\n  MAINNET = \"mainnet-beta\",\n  DEVNET = \"devnet\",\n}\n"
  },
  {
    "path": "src/public/utils/web3/ata-utils.ts",
    "content": "import { AccountLayout, TOKEN_PROGRAM_ID, u64 } from \"@solana/spl-token\";\nimport { Connection, Keypair, PublicKey } from \"@solana/web3.js\";\nimport { solToken } from \"../../../constants/tokens\";\nimport { SPL_ASSOCIATED_TOKEN_ACCOUNT_PROGRAM_ID } from \"../constants\";\nimport { emptyInstruction, Instruction } from \"../models/instruction\";\nimport { deserializeAccount } from \"./deserialize-account\";\nimport {\n  createAssociatedTokenAccountInstruction,\n  createWSOLAccountInstructions,\n} from \"./instructions/token-instructions\";\nimport { Owner } from \"./key-utils\";\n\nexport type ResolvedTokenAddressInstruction = { address: PublicKey } & Instruction;\n\n/**\n * IMPORTANT: wrappedSolAmountIn should only be used for input/source token that\n *            could be SOL. This is because when SOL is the output, it is the end\n *            destination, and thus does not need to be wrapped with an amount.\n *\n * @param connection Solana connection class\n * @param owner The keypair for the user's wallet or just the user's public key\n * @param tokenMint Token mint address\n * @param wrappedSolAmountIn Optional. Only use for input/source token that could be SOL\n * @returns\n */\nexport async function resolveOrCreateAssociatedTokenAddress(\n  connection: Connection,\n  owner: Owner,\n  tokenMint: PublicKey,\n  wrappedSolAmountIn = new u64(0)\n): Promise<ResolvedTokenAddressInstruction> {\n  if (!tokenMint.equals(solToken.mint)) {\n    const derivedAddress = await deriveAssociatedTokenAddress(owner.publicKey, tokenMint);\n\n    // Check if current wallet has an ATA for this spl-token mint. If not, create one.\n    let resolveAtaInstruction = emptyInstruction;\n    await connection.getAccountInfo(derivedAddress).then((info) => {\n      const tokenAccountInfo = deserializeAccount(info?.data);\n\n      if (!tokenAccountInfo) {\n        resolveAtaInstruction = createAssociatedTokenAccountInstruction(\n          derivedAddress,\n          owner.publicKey,\n          owner.publicKey,\n          tokenMint,\n          owner\n        );\n      }\n    });\n\n    return {\n      address: derivedAddress,\n      instructions: resolveAtaInstruction.instructions,\n      cleanupInstructions: resolveAtaInstruction.cleanupInstructions,\n      signers: resolveAtaInstruction.signers,\n    };\n  } else {\n    // TODO: Is there a way to store this cleaner?\n    const accountRentExempt = await connection.getMinimumBalanceForRentExemption(\n      AccountLayout.span\n    );\n    // Create a temp-account to transfer SOL in the form of WSOL\n    return createWSOLAccountInstructions(\n      owner.publicKey,\n      solToken.mint,\n      wrappedSolAmountIn,\n      accountRentExempt\n    );\n  }\n}\n\nexport async function deriveAssociatedTokenAddress(\n  walletAddress: PublicKey,\n  tokenMint: PublicKey\n): Promise<PublicKey> {\n  return (\n    await PublicKey.findProgramAddress(\n      [walletAddress.toBuffer(), TOKEN_PROGRAM_ID.toBuffer(), tokenMint.toBuffer()],\n      SPL_ASSOCIATED_TOKEN_ACCOUNT_PROGRAM_ID\n    )\n  )[0];\n}\n"
  },
  {
    "path": "src/public/utils/web3/deserialize-account.ts",
    "content": "import { AccountInfo, AccountLayout, u64 } from \"@solana/spl-token\";\nimport { PublicKey } from \"@solana/web3.js\";\n\nexport const deserializeAccount = (data: Buffer | undefined): AccountInfo | undefined => {\n  if (data == undefined || data.length == 0) {\n    return undefined;\n  }\n\n  const accountInfo = AccountLayout.decode(data);\n  accountInfo.mint = new PublicKey(accountInfo.mint);\n  accountInfo.owner = new PublicKey(accountInfo.owner);\n  accountInfo.amount = u64.fromBuffer(accountInfo.amount);\n\n  if (accountInfo.delegateOption === 0) {\n    accountInfo.delegate = null;\n    accountInfo.delegatedAmount = new u64(0);\n  } else {\n    accountInfo.delegate = new PublicKey(accountInfo.delegate);\n    accountInfo.delegatedAmount = u64.fromBuffer(accountInfo.delegatedAmount);\n  }\n\n  accountInfo.isInitialized = accountInfo.state !== 0;\n  accountInfo.isFrozen = accountInfo.state === 2;\n\n  if (accountInfo.isNativeOption === 1) {\n    accountInfo.rentExemptReserve = u64.fromBuffer(accountInfo.isNative);\n    accountInfo.isNative = true;\n  } else {\n    accountInfo.rentExemptReserve = null;\n    accountInfo.isNative = false;\n  }\n\n  if (accountInfo.closeAuthorityOption === 0) {\n    accountInfo.closeAuthority = null;\n  } else {\n    accountInfo.closeAuthority = new PublicKey(accountInfo.closeAuthority);\n  }\n\n  return accountInfo;\n};\n"
  },
  {
    "path": "src/public/utils/web3/get-token-count.ts",
    "content": "import { u64 } from \"@solana/spl-token\";\nimport { Connection } from \"@solana/web3.js\";\nimport { OrcaPoolToken } from \"../..\";\nimport { OrcaPoolParams } from \"../../../model/orca/pool/pool-types\";\nimport { deserializeAccount } from \"./deserialize-account\";\n\nexport type PoolTokenCount = {\n  inputTokenCount: u64;\n  outputTokenCount: u64;\n};\n\nexport async function getTokenCount(\n  connection: Connection,\n  poolParams: OrcaPoolParams,\n  inputPoolToken: OrcaPoolToken,\n  outputPoolToken: OrcaPoolToken\n): Promise<PoolTokenCount> {\n  if (poolParams.tokens[inputPoolToken.mint.toString()] == undefined) {\n    throw new Error(\"Input token not part of pool\");\n  }\n\n  if (poolParams.tokens[outputPoolToken.mint.toString()] == undefined) {\n    throw new Error(\"Output token not part of pool\");\n  }\n\n  const accountInfos = await connection.getMultipleAccountsInfo([\n    inputPoolToken.addr,\n    outputPoolToken.addr,\n  ]);\n\n  const tokens = accountInfos.map((info) =>\n    info != undefined ? deserializeAccount(info.data) : undefined\n  );\n  const inputTokenAccount = tokens[0],\n    outputTokenAccount = tokens[1];\n\n  if (inputTokenAccount === undefined || outputTokenAccount === undefined) {\n    throw new Error(\"Unable to fetch accounts for specified tokens.\");\n  }\n\n  return {\n    inputTokenCount: new u64(inputTokenAccount.amount),\n    outputTokenCount: new u64(outputTokenAccount.amount),\n  };\n}\n"
  },
  {
    "path": "src/public/utils/web3/index.ts",
    "content": "export * from \"./ata-utils\";\nexport * from \"./deserialize-account\";\nexport * from \"./get-token-count\";\nexport * from \"./transactions\";\n"
  },
  {
    "path": "src/public/utils/web3/instructions/farm-instructions.ts",
    "content": "import { Aquafarm } from \"@orca-so/aquafarm\";\nimport { u64 } from \"@solana/spl-token\";\nimport { PublicKey } from \"@solana/web3.js\";\nimport { Instruction, emptyInstruction } from \"../..\";\nimport { Owner } from \"../key-utils\";\n\nexport const createInitUserFarmInstruction = async (\n  farm: Aquafarm,\n  userFarmPublicKey: PublicKey,\n  owner: Owner\n): Promise<Instruction> => {\n  if (farm.isUserFarmInitialized()) {\n    return emptyInstruction;\n  }\n\n  const initUserFarmIx = farm.constructInitUserFarmIx(owner.publicKey, userFarmPublicKey);\n\n  return {\n    instructions: [initUserFarmIx],\n    cleanupInstructions: [],\n    signers: owner.signer ? [owner.signer] : [],\n  };\n};\n\nexport const createFarmConvertTokensInstruction = async (\n  farm: Aquafarm,\n  userTransferAuthorityPublicKey: PublicKey,\n  userBaseTokenPublicKey: PublicKey,\n  userFarmTokenPublicKey: PublicKey,\n  userRewardTokenPublicKey: PublicKey,\n  baseTokenAmount: u64,\n  userFarmPublicKey: PublicKey,\n  owner: Owner\n): Promise<Instruction> => {\n  let convertIx;\n  if (!farm.userFarm) {\n    convertIx = farm.constructConvertTokensIx(\n      userTransferAuthorityPublicKey,\n      userBaseTokenPublicKey,\n      userFarmTokenPublicKey,\n      userRewardTokenPublicKey,\n      baseTokenAmount,\n      userFarmPublicKey,\n      owner.publicKey\n    );\n  } else {\n    convertIx = farm.constructConvertTokensIx(\n      userTransferAuthorityPublicKey,\n      userBaseTokenPublicKey,\n      userFarmTokenPublicKey,\n      userRewardTokenPublicKey,\n      baseTokenAmount\n    );\n  }\n\n  if (!convertIx) {\n    throw new Error(\"constructConvertTokensIx returned null\");\n  }\n\n  return {\n    instructions: [convertIx],\n    cleanupInstructions: [],\n    signers: owner.signer ? [owner.signer] : [],\n  };\n};\n\nexport const createFarmRevertTokensInstruction = async (\n  farm: Aquafarm,\n  userBurnAuthorityPublicKey: PublicKey,\n  userBaseTokenPublicKey: PublicKey,\n  userFarmTokenPublicKey: PublicKey,\n  userRewardTokenPublicKey: PublicKey,\n  baseTokenAmount: u64,\n  owner: Owner\n): Promise<Instruction> => {\n  const revertIx = farm.constructRevertTokensIx(\n    userBurnAuthorityPublicKey,\n    userBaseTokenPublicKey,\n    userFarmTokenPublicKey,\n    userRewardTokenPublicKey,\n    baseTokenAmount\n  );\n\n  if (!revertIx) {\n    throw new Error(\"constructRevertTokensIx returned null\");\n  }\n\n  return {\n    instructions: [revertIx],\n    cleanupInstructions: [],\n    signers: owner.signer ? [owner.signer] : [],\n  };\n};\n\nexport const createFarmHarvestRewardInstruction = async (\n  farm: Aquafarm,\n  userRewardTokenPublicKey: PublicKey,\n  owner: Owner\n): Promise<Instruction> => {\n  const harvestIx = farm.constructHarvestIx(userRewardTokenPublicKey);\n\n  return {\n    instructions: [harvestIx],\n    cleanupInstructions: [],\n    signers: owner.signer ? [owner.signer] : [],\n  };\n};\n"
  },
  {
    "path": "src/public/utils/web3/instructions/pool-instructions.ts",
    "content": "import { Token, TOKEN_PROGRAM_ID, u64 } from \"@solana/spl-token\";\nimport { TokenSwap } from \"@solana/spl-token-swap\";\nimport { Keypair, PublicKey } from \"@solana/web3.js\";\nimport { OrcaPoolParams } from \"../../../../model/orca/pool/pool-types\";\nimport { OrcaPoolToken } from \"../../../pools\";\nimport { Instruction } from \"../../models\";\nimport { Owner } from \"../key-utils\";\n\nexport const createApprovalInstruction = (\n  ownerAddress: PublicKey,\n  approveAmount: u64,\n  tokenUserAddress: PublicKey,\n  userTransferAuthority?: Keypair\n): { userTransferAuthority: Keypair } & Instruction => {\n  userTransferAuthority = userTransferAuthority || new Keypair();\n\n  const approvalInstruction = Token.createApproveInstruction(\n    TOKEN_PROGRAM_ID,\n    tokenUserAddress,\n    userTransferAuthority.publicKey,\n    ownerAddress,\n    [],\n    approveAmount\n  );\n\n  const revokeInstruction = Token.createRevokeInstruction(\n    TOKEN_PROGRAM_ID,\n    tokenUserAddress,\n    ownerAddress,\n    []\n  );\n\n  return {\n    userTransferAuthority: userTransferAuthority,\n    instructions: [approvalInstruction],\n    cleanupInstructions: [revokeInstruction],\n    signers: [userTransferAuthority],\n  };\n};\n\nexport const createSwapInstruction = async (\n  poolParams: OrcaPoolParams,\n  owner: Owner,\n  inputToken: OrcaPoolToken,\n  inputTokenUserAddress: PublicKey,\n  outputToken: OrcaPoolToken,\n  outputTokenUserAddress: PublicKey,\n  amountIn: u64,\n  minimumAmountOut: u64,\n  userTransferAuthority: PublicKey,\n  orcaTokenSwapId: PublicKey\n): Promise<Instruction> => {\n  const amountInU64 = amountIn;\n  const minimumAmountOutU64 = minimumAmountOut;\n\n  const [authorityForPoolAddress] = await PublicKey.findProgramAddress(\n    [poolParams.address.toBuffer()],\n    orcaTokenSwapId\n  );\n\n  const swapInstruction = TokenSwap.swapInstruction(\n    poolParams.address,\n    authorityForPoolAddress,\n    userTransferAuthority,\n    inputTokenUserAddress,\n    inputToken.addr,\n    outputToken.addr,\n    outputTokenUserAddress,\n    poolParams.poolTokenMint,\n    poolParams.feeAccount,\n    null,\n    orcaTokenSwapId,\n    TOKEN_PROGRAM_ID,\n    amountInU64,\n    minimumAmountOutU64\n  );\n\n  return {\n    instructions: [swapInstruction],\n    cleanupInstructions: [],\n    signers: owner.signer ? [owner.signer] : [],\n  };\n};\n\nexport const createDepositInstruction = async (\n  poolParams: OrcaPoolParams,\n  userTransferAuthorityPublicKey: PublicKey,\n  userTokenAPublicKey: PublicKey,\n  userTokenBPublicKey: PublicKey,\n  userPoolTokenPublicKey: PublicKey,\n  poolTokenAmount: u64,\n  maximumTokenA: u64,\n  maximumTokenB: u64,\n  tokenAPublicKey: PublicKey,\n  tokenBPublicKey: PublicKey,\n  orcaTokenSwapId: PublicKey,\n  owner: Owner\n): Promise<Instruction> => {\n  const depositInstruction = TokenSwap.depositAllTokenTypesInstruction(\n    poolParams.address,\n    poolParams.authority,\n    userTransferAuthorityPublicKey,\n    userTokenAPublicKey,\n    userTokenBPublicKey,\n    tokenAPublicKey,\n    tokenBPublicKey,\n    poolParams.poolTokenMint,\n    userPoolTokenPublicKey,\n    orcaTokenSwapId,\n    TOKEN_PROGRAM_ID,\n    poolTokenAmount,\n    maximumTokenA,\n    maximumTokenB\n  );\n\n  return {\n    instructions: [depositInstruction],\n    cleanupInstructions: [],\n    signers: owner.signer ? [owner.signer] : [],\n  };\n};\n\nexport const createWithdrawInstruction = async (\n  poolParams: OrcaPoolParams,\n  userTransferAuthorityPublicKey: PublicKey,\n  userTokenAPublicKey: PublicKey,\n  userTokenBPublicKey: PublicKey,\n  userPoolTokenPublicKey: PublicKey,\n  poolTokenAmount: u64,\n  minimumTokenA: u64,\n  minimumTokenB: u64,\n  tokenAPublicKey: PublicKey,\n  tokenBPublicKey: PublicKey,\n  orcaTokenSwapId: PublicKey,\n  owner: Owner\n): Promise<Instruction> => {\n  const withdrawInstruction = TokenSwap.withdrawAllTokenTypesInstruction(\n    poolParams.address,\n    poolParams.authority,\n    userTransferAuthorityPublicKey,\n    poolParams.poolTokenMint,\n    poolParams.feeAccount,\n    userPoolTokenPublicKey,\n    tokenAPublicKey,\n    tokenBPublicKey,\n    userTokenAPublicKey,\n    userTokenBPublicKey,\n    orcaTokenSwapId,\n    TOKEN_PROGRAM_ID,\n    poolTokenAmount,\n    minimumTokenA,\n    minimumTokenB\n  );\n\n  return {\n    instructions: [withdrawInstruction],\n    cleanupInstructions: [],\n    signers: owner.signer ? [owner.signer] : [],\n  };\n};\n"
  },
  {
    "path": "src/public/utils/web3/instructions/token-instructions.ts",
    "content": "import { AccountLayout, Token, TOKEN_PROGRAM_ID, u64 } from \"@solana/spl-token\";\nimport {\n  Keypair,\n  PublicKey,\n  SystemProgram,\n  SYSVAR_RENT_PUBKEY,\n  TransactionInstruction,\n} from \"@solana/web3.js\";\nimport { Instruction, SPL_ASSOCIATED_TOKEN_ACCOUNT_PROGRAM_ID } from \"../..\";\nimport { ResolvedTokenAddressInstruction } from \"../ata-utils\";\nimport { Owner } from \"../key-utils\";\n\nexport const createWSOLAccountInstructions = (\n  owner: PublicKey,\n  solMint: PublicKey,\n  amountIn: u64,\n  rentExemptLamports: number\n): ResolvedTokenAddressInstruction => {\n  const tempAccount = new Keypair();\n\n  const createAccountInstruction = SystemProgram.createAccount({\n    fromPubkey: owner,\n    newAccountPubkey: tempAccount.publicKey,\n    lamports: amountIn.toNumber() + rentExemptLamports,\n    space: AccountLayout.span,\n    programId: TOKEN_PROGRAM_ID,\n  });\n\n  const initAccountInstruction = Token.createInitAccountInstruction(\n    TOKEN_PROGRAM_ID,\n    solMint,\n    tempAccount.publicKey,\n    owner\n  );\n\n  const closeWSOLAccountInstruction = Token.createCloseAccountInstruction(\n    TOKEN_PROGRAM_ID,\n    tempAccount.publicKey,\n    owner,\n    owner,\n    []\n  );\n\n  return {\n    address: tempAccount.publicKey,\n    instructions: [createAccountInstruction, initAccountInstruction],\n    cleanupInstructions: [closeWSOLAccountInstruction],\n    signers: [tempAccount],\n  };\n};\n\nexport function createAssociatedTokenAccountInstruction(\n  associatedTokenAddress: PublicKey,\n  fundSource: PublicKey,\n  destination: PublicKey,\n  tokenMint: PublicKey,\n  fundAddressOwner: Owner\n): Instruction {\n  const systemProgramId = new PublicKey(\"11111111111111111111111111111111\");\n  const keys = [\n    {\n      pubkey: fundSource,\n      isSigner: true,\n      isWritable: true,\n    },\n    {\n      pubkey: associatedTokenAddress,\n      isSigner: false,\n      isWritable: true,\n    },\n    {\n      pubkey: destination,\n      isSigner: false,\n      isWritable: false,\n    },\n    {\n      pubkey: tokenMint,\n      isSigner: false,\n      isWritable: false,\n    },\n    {\n      pubkey: systemProgramId,\n      isSigner: false,\n      isWritable: false,\n    },\n    {\n      pubkey: TOKEN_PROGRAM_ID,\n      isSigner: false,\n      isWritable: false,\n    },\n    {\n      pubkey: SYSVAR_RENT_PUBKEY,\n      isSigner: false,\n      isWritable: false,\n    },\n  ];\n  const createATAInstruction = new TransactionInstruction({\n    keys,\n    programId: SPL_ASSOCIATED_TOKEN_ACCOUNT_PROGRAM_ID,\n    data: Buffer.from([]),\n  });\n  return {\n    instructions: [createATAInstruction],\n    cleanupInstructions: [],\n    signers: fundAddressOwner.signer ? [fundAddressOwner.signer] : [],\n  };\n}\n"
  },
  {
    "path": "src/public/utils/web3/key-utils.ts",
    "content": "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"
  },
  {
    "path": "src/public/utils/web3/transactions/index.ts",
    "content": "export * from \"./transaction-builder\";\n"
  },
  {
    "path": "src/public/utils/web3/transactions/transaction-builder.ts",
    "content": "import {\n  Connection,\n  PublicKey,\n  sendAndConfirmTransaction,\n  Transaction,\n  TransactionCtorFields,\n  Signer,\n  Keypair,\n  TransactionInstruction,\n} from \"@solana/web3.js\";\nimport { Instruction } from \"../..\";\nimport { TransactionPayload } from \"../../models\";\nimport { Owner } from \"../key-utils\";\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(): Promise<TransactionPayload> {\n    const recentBlockHash = (await this.connection.getRecentBlockhash(\"singleGossip\")).blockhash;\n    const txFields: TransactionCtorFields = {\n      recentBlockhash: recentBlockHash,\n      feePayer: this.feePayer,\n    };\n\n    let instructions: TransactionInstruction[] = [];\n    let cleanupInstructions: TransactionInstruction[] = [];\n    let signers: Signer[] = [];\n    this.instructions.forEach((curr) => {\n      instructions = instructions.concat(curr.instructions);\n      cleanupInstructions = curr.cleanupInstructions.concat(cleanupInstructions);\n      signers = signers.concat(curr.signers);\n    });\n\n    const transaction = new Transaction(txFields);\n    transaction.add(...instructions.concat(cleanupInstructions));\n    transaction.feePayer = this.feePayer;\n\n    return {\n      transaction: transaction,\n      signers: signers,\n      execute: this.owner.isKeyPair\n        ? async () => {\n            return sendAndConfirmTransaction(this.connection, transaction, signers);\n          }\n        : async () => {\n            throw new Error(\n              \"Please use a Keypair for the owner parameter to enable the execute function\"\n            );\n          },\n    };\n  }\n}\n"
  },
  {
    "path": "src/tsconfig.json",
    "content": "{\n  \"extends\": \"../tsconfig-base.json\",\n  \"compilerOptions\": {\n    \"composite\": true,\n  },\n}"
  },
  {
    "path": "test/model/orca/quote/constant-product-quote.test.ts",
    "content": "import { u64 } from \"@solana/spl-token\";\nimport Decimal from \"decimal.js\";\nimport { OrcaToken } from \"../../../../src\";\nimport * as Token from \"../../../../src/constants/tokens\";\nimport { CurveType } from \"../../../../src/model/orca/pool/pool-types\";\nimport {\n  QuoteBuilder,\n  QuoteBuilderFactory,\n  QuotePoolParams,\n} from \"../../../../src/model/quote/quote-builder\";\nimport { DecimalUtil, OrcaU64, Percentage } from \"../../../../src/public\";\nimport { defaultQuotePoolParams, defaultSOLToken, defaultUsdcToken } from \"../../../test-utils\";\nimport { Builder } from \"builder-pattern\";\n\nconst builder: QuoteBuilder = QuoteBuilderFactory.getBuilder(\n  CurveType.ConstantProduct\n) as QuoteBuilder;\n\ntest(\"Input & Output tokens have different scale\", () => {\n  const params = Builder<QuotePoolParams>(defaultQuotePoolParams).build();\n\n  const quote = builder.buildQuote(\n    params,\n    DecimalUtil.toU64(new Decimal(10), params.inputToken.scale)\n  );\n\n  expect(quote.getRate()).toEqual(new Decimal(24.175536));\n  expect(quote.getPriceImpact()).toEqual(new Decimal(0.036059));\n  expect(quote.getLPFees()).toEqual(new OrcaU64(new u64(\"30000000\"), params.inputToken.scale));\n  expect(quote.getNetworkFees()).toEqual(new OrcaU64(new u64(\"10000\")));\n  expect(quote.getMinOutputAmount()).toEqual(\n    new OrcaU64(new u64(\"241513608\"), params.outputToken.scale)\n  );\n  expect(quote.getExpectedOutputAmount()).toEqual(\n    new OrcaU64(new u64(\"241755364\"), params.outputToken.scale)\n  );\n});\n\ntest(\"Input & Output tokens have the same scale\", () => {\n  const usdcTokenWithSameScale = Builder<OrcaToken>(Token.usdcToken)\n    .scale(Token.solToken.scale)\n    .build();\n  const params = Builder<QuotePoolParams>(defaultQuotePoolParams)\n    .outputTokenCount(new u64(\"670432580208000\"))\n    .outputToken(usdcTokenWithSameScale)\n    .build();\n\n  const quote = builder.buildQuote(\n    params,\n    DecimalUtil.toU64(new Decimal(10), params.inputToken.scale)\n  );\n\n  expect(quote.getRate()).toEqual(new Decimal(24.175536404));\n  expect(quote.getPriceImpact()).toEqual(new Decimal(0.036059609));\n  expect(quote.getLPFees()).toEqual(new OrcaU64(new u64(\"30000000\"), params.inputToken.scale));\n  expect(quote.getNetworkFees()).toEqual(new OrcaU64(new u64(\"10000\")));\n  expect(quote.getMinOutputAmount()).toEqual(\n    new OrcaU64(new u64(\"241513608677\"), params.outputToken.scale)\n  );\n  expect(quote.getExpectedOutputAmount()).toEqual(\n    new OrcaU64(new u64(\"241755364042\"), params.outputToken.scale)\n  );\n});\n\ntest(\"Input trade amount equal 0 \", () => {\n  const params = Builder<QuotePoolParams>(defaultQuotePoolParams).build();\n\n  const quote = builder.buildQuote(\n    params,\n    DecimalUtil.toU64(new Decimal(0), params.inputToken.scale)\n  );\n\n  expect(quote.getRate()).toEqual(new Decimal(0));\n  expect(quote.getPriceImpact()).toEqual(new Decimal(0));\n  expect(quote.getLPFees()).toEqual(new OrcaU64(new u64(\"0\"), params.inputToken.scale));\n  expect(quote.getNetworkFees()).toEqual(new OrcaU64(new u64(\"10000\")));\n  expect(quote.getMinOutputAmount()).toEqual(new OrcaU64(new u64(\"0\"), params.outputToken.scale));\n  expect(quote.getExpectedOutputAmount()).toEqual(\n    new OrcaU64(new u64(\"0\"), params.outputToken.scale)\n  );\n});\n\ntest(\"Input Token Count is zero\", () => {\n  const params = Builder<QuotePoolParams>(defaultQuotePoolParams)\n    .inputTokenCount(new u64(\"0\"))\n    .build();\n\n  const quote = builder.buildQuote(\n    params,\n    DecimalUtil.toU64(new Decimal(10), params.inputToken.scale)\n  );\n\n  expect(quote.getRate()).toEqual(new Decimal(67043.258021));\n  expect(quote.getPriceImpact()).toEqual(new Decimal(0));\n  expect(quote.getLPFees()).toEqual(new OrcaU64(new u64(\"30000000\"), params.inputToken.scale));\n  expect(quote.getNetworkFees()).toEqual(new OrcaU64(new u64(\"10000\")));\n  expect(quote.getMinOutputAmount()).toEqual(\n    new OrcaU64(new u64(\"669762147627\"), params.outputToken.scale)\n  );\n  expect(quote.getExpectedOutputAmount()).toEqual(\n    new OrcaU64(new u64(\"670432580208\"), params.outputToken.scale)\n  );\n});\n\ntest(\"Output Token Count is zero\", () => {\n  const params = Builder<QuotePoolParams>(defaultQuotePoolParams)\n    .outputTokenCount(new u64(\"0\"))\n    .build();\n\n  const quote = builder.buildQuote(\n    params,\n    DecimalUtil.toU64(new Decimal(10), params.inputToken.scale)\n  );\n\n  expect(quote.getRate()).toEqual(new Decimal(0));\n  expect(quote.getPriceImpact()).toEqual(new Decimal(0));\n  expect(quote.getLPFees()).toEqual(new OrcaU64(new u64(\"30000000\"), params.inputToken.scale));\n  expect(quote.getNetworkFees()).toEqual(new OrcaU64(new u64(\"10000\")));\n  expect(quote.getMinOutputAmount()).toEqual(new OrcaU64(new u64(\"0\"), params.outputToken.scale));\n  expect(quote.getExpectedOutputAmount()).toEqual(\n    new OrcaU64(new u64(\"0\"), params.outputToken.scale)\n  );\n});\n\ntest(\"Minimum fee of one token\", () => {\n  const params = Builder<QuotePoolParams>(defaultQuotePoolParams)\n    // 1,000,000 defaultUSDCToken = 10,000 defaultSOLToken\n    .inputToken(defaultUsdcToken)\n    .inputTokenCount(new u64(\"1000000000000\"))\n    .outputToken(defaultSOLToken)\n    .outputTokenCount(new u64(\"10000000000000\"))\n    .build();\n\n  const quote = builder.buildQuote(\n    params,\n    DecimalUtil.toU64(new Decimal(\"0.0001\"), params.inputToken.scale)\n  );\n\n  expect(quote.getRate()).toEqual(new Decimal(0.00979));\n  expect(quote.getPriceImpact()).toEqual(new Decimal(0.102040816));\n  expect(quote.getLPFees()).toEqual(new OrcaU64(new u64(\"2\"), params.inputToken.scale));\n  expect(quote.getNetworkFees()).toEqual(new OrcaU64(new u64(\"10000\")));\n  expect(quote.getMinOutputAmount()).toEqual(new OrcaU64(new u64(\"978\"), params.outputToken.scale));\n  expect(quote.getExpectedOutputAmount()).toEqual(\n    new OrcaU64(new u64(\"979\"), params.outputToken.scale)\n  );\n});\n\ndescribe(\"Too small inputTradeAmount\", () => {\n  test(\"Too small inputTradeAmount (1 unit)\", () => {\n    const params = Builder<QuotePoolParams>(defaultQuotePoolParams)\n      // 1,000,000 defaultUSDCToken = 10,000 defaultSOLToken\n      .inputToken(defaultUsdcToken)\n      .inputTokenCount(new u64(\"1000000000000\"))\n      .outputToken(defaultSOLToken)\n      .outputTokenCount(new u64(\"10000000000000\"))\n      .build();\n\n    const quote = builder.buildQuote(\n      params,\n      DecimalUtil.toU64(new Decimal(\"0.000001\"), params.inputToken.scale)\n    );\n\n    expect(quote.getRate()).toEqual(new Decimal(0));\n    expect(quote.getPriceImpact()).toEqual(new Decimal(0));\n    expect(quote.getLPFees()).toEqual(new OrcaU64(new u64(\"2\"), params.inputToken.scale));\n    expect(quote.getNetworkFees()).toEqual(new OrcaU64(new u64(\"10000\")));\n    expect(quote.getMinOutputAmount()).toEqual(new OrcaU64(new u64(\"0\"), params.outputToken.scale));\n    expect(quote.getExpectedOutputAmount()).toEqual(\n      new OrcaU64(new u64(\"0\"), params.outputToken.scale)\n    );\n  });\n\n  test(\"Too small inputTradeAmount (2 unit)\", () => {\n    const params = Builder<QuotePoolParams>(defaultQuotePoolParams)\n      // 1,000,000 defaultUSDCToken = 10,000 defaultSOLToken\n      .inputToken(defaultUsdcToken)\n      .inputTokenCount(new u64(\"1000000000000\"))\n      .outputToken(defaultSOLToken)\n      .outputTokenCount(new u64(\"10000000000000\"))\n      .build();\n\n    const quote = builder.buildQuote(\n      params,\n      DecimalUtil.toU64(new Decimal(\"0.000002\"), params.inputToken.scale)\n    );\n\n    expect(quote.getRate()).toEqual(new Decimal(0));\n    expect(quote.getPriceImpact()).toEqual(new Decimal(0));\n    expect(quote.getLPFees()).toEqual(new OrcaU64(new u64(\"2\"), params.inputToken.scale));\n    expect(quote.getNetworkFees()).toEqual(new OrcaU64(new u64(\"10000\")));\n    expect(quote.getMinOutputAmount()).toEqual(new OrcaU64(new u64(\"0\"), params.outputToken.scale));\n    expect(quote.getExpectedOutputAmount()).toEqual(\n      new OrcaU64(new u64(\"0\"), params.outputToken.scale)\n    );\n  });\n\n  test(\"Too small inputTradeAmount (3 unit)\", () => {\n    const params = Builder<QuotePoolParams>(defaultQuotePoolParams)\n      // 1,000,000 defaultUSDCToken = 10,000 defaultSOLToken\n      .inputToken(defaultUsdcToken)\n      .inputTokenCount(new u64(\"1000000000000\"))\n      .outputToken(defaultSOLToken)\n      .outputTokenCount(new u64(\"10000000000000\"))\n      .build();\n\n    const quote = builder.buildQuote(\n      params,\n      DecimalUtil.toU64(new Decimal(\"0.000003\"), params.inputToken.scale)\n    );\n\n    expect(quote.getRate()).toEqual(new Decimal(0.003));\n    expect(quote.getPriceImpact()).toEqual(new Decimal(10.0));\n    expect(quote.getLPFees()).toEqual(new OrcaU64(new u64(\"2\"), params.inputToken.scale));\n    expect(quote.getNetworkFees()).toEqual(new OrcaU64(new u64(\"10000\")));\n    expect(quote.getMinOutputAmount()).toEqual(new OrcaU64(new u64(\"8\"), params.outputToken.scale));\n    expect(quote.getExpectedOutputAmount()).toEqual(\n      new OrcaU64(new u64(\"9\"), params.outputToken.scale)\n    );\n  });\n});\n\ndescribe(\"Slippage tolerance\", () => {\n  test(\"tolerance equal 0\", () => {\n    const params = Builder<QuotePoolParams>(defaultQuotePoolParams)\n      .slippageTolerance(Percentage.fromDecimal(new Decimal(0)))\n      .build();\n    const quote = builder.buildQuote(\n      params,\n      DecimalUtil.toU64(new Decimal(10), params.inputToken.scale)\n    );\n\n    expect(quote.getRate()).toEqual(new Decimal(24.175536));\n    expect(quote.getPriceImpact()).toEqual(new Decimal(0.036059));\n    expect(quote.getLPFees()).toEqual(new OrcaU64(new u64(\"30000000\"), params.inputToken.scale));\n    expect(quote.getNetworkFees()).toEqual(new OrcaU64(new u64(\"10000\")));\n    expect(quote.getMinOutputAmount()).toEqual(\n      new OrcaU64(new u64(\"241755364\"), params.outputToken.scale)\n    );\n    expect(quote.getExpectedOutputAmount()).toEqual(\n      new OrcaU64(new u64(\"241755364\"), params.outputToken.scale)\n    );\n  });\n\n  test(\"tolerance equals 0.1\", () => {\n    const params = Builder<QuotePoolParams>(defaultQuotePoolParams)\n      .slippageTolerance(Percentage.fromDecimal(new Decimal(0.1)))\n      .build();\n    const quote = builder.buildQuote(\n      params,\n      DecimalUtil.toU64(new Decimal(10), params.inputToken.scale)\n    );\n\n    expect(quote.getRate()).toEqual(new Decimal(24.175536));\n    expect(quote.getPriceImpact()).toEqual(new Decimal(0.036059));\n    expect(quote.getLPFees()).toEqual(new OrcaU64(new u64(\"30000000\"), params.inputToken.scale));\n    expect(quote.getNetworkFees()).toEqual(new OrcaU64(new u64(\"10000\")));\n    expect(quote.getMinOutputAmount()).toEqual(\n      new OrcaU64(new u64(\"241513608\"), params.outputToken.scale)\n    );\n    expect(quote.getExpectedOutputAmount()).toEqual(\n      new OrcaU64(new u64(\"241755364\"), params.outputToken.scale)\n    );\n  });\n\n  test(\"tolerance equals 1 \", () => {\n    const params = Builder<QuotePoolParams>(defaultQuotePoolParams)\n      .slippageTolerance(Percentage.fromDecimal(new Decimal(1)))\n      .build();\n    const quote = builder.buildQuote(\n      params,\n      DecimalUtil.toU64(new Decimal(10), params.inputToken.scale)\n    );\n\n    expect(quote.getRate()).toEqual(new Decimal(24.175536));\n    expect(quote.getPriceImpact()).toEqual(new Decimal(0.036059));\n    expect(quote.getLPFees()).toEqual(new OrcaU64(new u64(\"30000000\"), params.inputToken.scale));\n    expect(quote.getNetworkFees()).toEqual(new OrcaU64(new u64(\"10000\")));\n    expect(quote.getMinOutputAmount()).toEqual(\n      new OrcaU64(new u64(\"239337810\"), params.outputToken.scale)\n    );\n    expect(quote.getExpectedOutputAmount()).toEqual(\n      new OrcaU64(new u64(\"241755364\"), params.outputToken.scale)\n    );\n  });\n});\n"
  },
  {
    "path": "test/model/orca/quote/stable-quote.test.ts",
    "content": "import { u64 } from \"@solana/spl-token\";\nimport Decimal from \"decimal.js\";\nimport { CurveType } from \"../../../../src/model/orca/pool/pool-types\";\nimport {\n  QuoteBuilder,\n  QuoteBuilderFactory,\n  QuotePoolParams,\n} from \"../../../../src/model/quote/quote-builder\";\nimport { DecimalUtil, OrcaU64, Percentage } from \"../../../../src/public\";\nimport { stableQuotePoolParams } from \"../../../test-utils\";\nimport { Builder } from \"builder-pattern\";\n\nconst builder: QuoteBuilder = QuoteBuilderFactory.getBuilder(CurveType.Stable) as QuoteBuilder;\n\ntest(\"Input & Output tokens have same scale\", () => {\n  const params = Builder<QuotePoolParams>(stableQuotePoolParams).build();\n\n  const quote = builder.buildQuote(\n    params,\n    DecimalUtil.toU64(new Decimal(1e6), params.inputToken.scale)\n  );\n\n  expect(quote.getRate()).toEqual(new Decimal(0.9987));\n  expect(quote.getPriceImpact()).toEqual(new Decimal(0.055222));\n  expect(quote.getLPFees()).toEqual(new OrcaU64(new u64(\"700000000\"), params.inputToken.scale));\n  expect(quote.getNetworkFees()).toEqual(new OrcaU64(new u64(\"10000\")));\n  expect(quote.getMinOutputAmount()).toEqual(\n    new OrcaU64(new u64(\"997701271318\"), params.outputToken.scale)\n  );\n  expect(quote.getExpectedOutputAmount()).toEqual(\n    new OrcaU64(new u64(\"998699971290\"), params.outputToken.scale)\n  );\n});\n\ntest(\"Input trade amount equal 0 \", () => {\n  const params = Builder<QuotePoolParams>(stableQuotePoolParams).build();\n\n  const quote = builder.buildQuote(\n    params,\n    DecimalUtil.toU64(new Decimal(0), params.inputToken.scale)\n  );\n\n  expect(quote.getRate()).toEqual(new Decimal(0));\n  expect(quote.getPriceImpact()).toEqual(new Decimal(0));\n  expect(quote.getLPFees()).toEqual(new OrcaU64(new u64(\"0\"), params.inputToken.scale));\n  expect(quote.getNetworkFees()).toEqual(new OrcaU64(new u64(\"10000\")));\n  expect(quote.getMinOutputAmount()).toEqual(new OrcaU64(new u64(\"0\"), params.outputToken.scale));\n  expect(quote.getExpectedOutputAmount()).toEqual(\n    new OrcaU64(new u64(\"0\"), params.outputToken.scale)\n  );\n});\n\ntest(\"Input Token Count is zero\", () => {\n  const params = Builder<QuotePoolParams>(stableQuotePoolParams)\n    .inputTokenCount(new u64(\"0\"))\n    .build();\n\n  const quote = builder.buildQuote(\n    params,\n    DecimalUtil.toU64(new Decimal(1e6), params.inputToken.scale)\n  );\n\n  expect(quote.getRate()).toEqual(new Decimal(19.577821));\n  expect(quote.getPriceImpact()).toEqual(new Decimal(0));\n  expect(quote.getLPFees()).toEqual(new OrcaU64(new u64(\"700000000\"), params.inputToken.scale));\n  expect(quote.getNetworkFees()).toEqual(new OrcaU64(new u64(\"10000\")));\n\n  // Recreating `OrcaU64` objects for the following checks to prevent the BN vs u64 mismatch error\n  const minOutputAmount = quote.getMinOutputAmount();\n  expect(new OrcaU64(minOutputAmount.toU64(), minOutputAmount.scale)).toEqual(\n    new OrcaU64(new u64(\"19558243405204\"), params.outputToken.scale)\n  );\n\n  const expectedOutputAmount = quote.getExpectedOutputAmount();\n  expect(new OrcaU64(expectedOutputAmount.toU64(), expectedOutputAmount.scale)).toEqual(\n    new OrcaU64(new u64(\"19577821226431\"), params.outputToken.scale)\n  );\n});\n\ntest(\"Output Token Count is zero\", () => {\n  const params = Builder<QuotePoolParams>(stableQuotePoolParams)\n    .outputTokenCount(new u64(\"0\"))\n    .build();\n\n  const quote = builder.buildQuote(\n    params,\n    DecimalUtil.toU64(new Decimal(1e6), params.inputToken.scale)\n  );\n\n  expect(quote.getRate()).toEqual(new Decimal(0));\n  expect(quote.getPriceImpact()).toEqual(new Decimal(0));\n  expect(quote.getLPFees()).toEqual(new OrcaU64(new u64(\"700000000\"), params.inputToken.scale));\n  expect(quote.getNetworkFees()).toEqual(new OrcaU64(new u64(\"10000\")));\n  expect(quote.getMinOutputAmount()).toEqual(new OrcaU64(new u64(\"0\"), params.outputToken.scale));\n  expect(quote.getExpectedOutputAmount()).toEqual(\n    new OrcaU64(new u64(\"0\"), params.outputToken.scale)\n  );\n});\n\ndescribe(\"Slippage tolerance\", () => {\n  test(\"tolerance equal 0%\", () => {\n    const params = Builder<QuotePoolParams>(stableQuotePoolParams)\n      .slippageTolerance(Percentage.fromDecimal(new Decimal(0)))\n      .build();\n    const quote = builder.buildQuote(\n      params,\n      DecimalUtil.toU64(new Decimal(1e6), params.inputToken.scale)\n    );\n\n    expect(quote.getRate()).toEqual(new Decimal(0.9987));\n    expect(quote.getPriceImpact()).toEqual(new Decimal(0.055222));\n    expect(quote.getLPFees()).toEqual(new OrcaU64(new u64(\"700000000\"), params.inputToken.scale));\n    expect(quote.getNetworkFees()).toEqual(new OrcaU64(new u64(\"10000\")));\n    expect(quote.getMinOutputAmount()).toEqual(\n      new OrcaU64(new u64(\"998699971290\"), params.outputToken.scale)\n    );\n    expect(quote.getExpectedOutputAmount()).toEqual(\n      new OrcaU64(new u64(\"998699971290\"), params.outputToken.scale)\n    );\n  });\n\n  test(\"tolerance equals 0.1%\", () => {\n    const params = Builder<QuotePoolParams>(stableQuotePoolParams)\n      .slippageTolerance(Percentage.fromDecimal(new Decimal(0.1)))\n      .build();\n    const quote = builder.buildQuote(\n      params,\n      DecimalUtil.toU64(new Decimal(1e6), params.inputToken.scale)\n    );\n\n    expect(quote.getRate()).toEqual(new Decimal(0.9987));\n    expect(quote.getPriceImpact()).toEqual(new Decimal(0.055222));\n    expect(quote.getLPFees()).toEqual(new OrcaU64(new u64(\"700000000\"), params.inputToken.scale));\n    expect(quote.getNetworkFees()).toEqual(new OrcaU64(new u64(\"10000\")));\n    expect(quote.getMinOutputAmount()).toEqual(\n      new OrcaU64(new u64(\"997701271318\"), params.outputToken.scale)\n    );\n    expect(quote.getExpectedOutputAmount()).toEqual(\n      new OrcaU64(new u64(\"998699971290\"), params.outputToken.scale)\n    );\n  });\n\n  test(\"tolerance equals 1%\", () => {\n    const params = Builder<QuotePoolParams>(stableQuotePoolParams)\n      .slippageTolerance(Percentage.fromDecimal(new Decimal(1)))\n      .build();\n    const quote = builder.buildQuote(\n      params,\n      DecimalUtil.toU64(new Decimal(1e6), params.inputToken.scale)\n    );\n\n    expect(quote.getRate()).toEqual(new Decimal(0.9987));\n    expect(quote.getPriceImpact()).toEqual(new Decimal(0.055222));\n    expect(quote.getLPFees()).toEqual(new OrcaU64(new u64(\"700000000\"), params.inputToken.scale));\n    expect(quote.getNetworkFees()).toEqual(new OrcaU64(new u64(\"10000\")));\n    expect(quote.getMinOutputAmount()).toEqual(\n      new OrcaU64(new u64(\"988712971577\"), params.outputToken.scale)\n    );\n    expect(quote.getExpectedOutputAmount()).toEqual(\n      new OrcaU64(new u64(\"998699971290\"), params.outputToken.scale)\n    );\n  });\n});\n\n// Make sure that as amp goes up, a better price is quoted and price impact is lower\ndescribe(\"Amplification Coefficient\", () => {\n  test(\"amp is undefined\", () => {\n    const params = Builder<QuotePoolParams>(stableQuotePoolParams).amp(undefined).build();\n\n    expect(() =>\n      builder.buildQuote(params, DecimalUtil.toU64(new Decimal(1e6), params.inputToken.scale))\n    ).toThrow(\"amp param required for stable pool\");\n  });\n\n  test(\"amp equals 10\", () => {\n    const params = Builder<QuotePoolParams>(stableQuotePoolParams).amp(new u64(10)).build();\n\n    const quote = builder.buildQuote(\n      params,\n      DecimalUtil.toU64(new Decimal(1e6), params.inputToken.scale)\n    );\n\n    expect(quote.getRate()).toEqual(new Decimal(0.993818));\n    expect(quote.getPriceImpact()).toEqual(new Decimal(0.502629));\n    expect(quote.getLPFees()).toEqual(new OrcaU64(new u64(\"700000000\"), params.inputToken.scale));\n    expect(quote.getNetworkFees()).toEqual(new OrcaU64(new u64(\"10000\")));\n    expect(quote.getMinOutputAmount()).toEqual(\n      new OrcaU64(new u64(\"992824297062\"), params.outputToken.scale)\n    );\n    expect(quote.getExpectedOutputAmount()).toEqual(\n      new OrcaU64(new u64(\"993818115178\"), params.outputToken.scale)\n    );\n  });\n\n  test(\"amp equals 100\", () => {\n    const params = Builder<QuotePoolParams>(stableQuotePoolParams).amp(new u64(100)).build();\n\n    const quote = builder.buildQuote(\n      params,\n      DecimalUtil.toU64(new Decimal(1e6), params.inputToken.scale)\n    );\n\n    expect(quote.getRate()).toEqual(new Decimal(0.9987));\n    expect(quote.getPriceImpact()).toEqual(new Decimal(0.055222));\n    expect(quote.getLPFees()).toEqual(new OrcaU64(new u64(\"700000000\"), params.inputToken.scale));\n    expect(quote.getNetworkFees()).toEqual(new OrcaU64(new u64(\"10000\")));\n    expect(quote.getMinOutputAmount()).toEqual(\n      new OrcaU64(new u64(\"997701271318\"), params.outputToken.scale)\n    );\n    expect(quote.getExpectedOutputAmount()).toEqual(\n      new OrcaU64(new u64(\"998699971290\"), params.outputToken.scale)\n    );\n  });\n});\n\ndescribe(\"Fee Structure\", () => {\n  test(\"both owner and trader fees are non-zero\", () => {\n    const params = Builder<QuotePoolParams>(stableQuotePoolParams)\n      .feeStructure({\n        traderFee: Percentage.fromFraction(6, 10000),\n        ownerFee: Percentage.fromFraction(1, 10000),\n      })\n      .build();\n\n    const quote = builder.buildQuote(\n      params,\n      DecimalUtil.toU64(new Decimal(1e6), params.inputToken.scale)\n    );\n\n    expect(quote.getRate()).toEqual(new Decimal(0.9987));\n    expect(quote.getPriceImpact()).toEqual(new Decimal(0.055222));\n    expect(quote.getLPFees()).toEqual(new OrcaU64(new u64(\"700000000\"), params.inputToken.scale));\n    expect(quote.getNetworkFees()).toEqual(new OrcaU64(new u64(\"10000\")));\n    expect(quote.getMinOutputAmount()).toEqual(\n      new OrcaU64(new u64(\"997701271318\"), params.outputToken.scale)\n    );\n    expect(quote.getExpectedOutputAmount()).toEqual(\n      new OrcaU64(new u64(\"998699971290\"), params.outputToken.scale)\n    );\n  });\n\n  test(\"owner fee is non-zero, trader fee is 0\", () => {\n    const params = Builder<QuotePoolParams>(stableQuotePoolParams)\n      .feeStructure({\n        traderFee: Percentage.fromFraction(0, 10000),\n        ownerFee: Percentage.fromFraction(1, 10000),\n      })\n      .build();\n\n    const quote = builder.buildQuote(\n      params,\n      DecimalUtil.toU64(new Decimal(1e6), params.inputToken.scale)\n    );\n\n    expect(quote.getRate()).toEqual(new Decimal(0.999299));\n    expect(quote.getPriceImpact()).toEqual(new Decimal(0.055253));\n    expect(quote.getLPFees()).toEqual(new OrcaU64(new u64(\"100000000\"), params.inputToken.scale));\n    expect(quote.getNetworkFees()).toEqual(new OrcaU64(new u64(\"10000\")));\n    expect(quote.getMinOutputAmount()).toEqual(\n      new OrcaU64(new u64(\"998300007201\"), params.outputToken.scale)\n    );\n    expect(quote.getExpectedOutputAmount()).toEqual(\n      new OrcaU64(new u64(\"999299306508\"), params.outputToken.scale)\n    );\n  });\n\n  test(\"trader fee is non-zero, owner fee is 0\", () => {\n    const params = Builder<QuotePoolParams>(stableQuotePoolParams)\n      .feeStructure({\n        traderFee: Percentage.fromFraction(6, 10000),\n        ownerFee: Percentage.fromFraction(0, 10000),\n      })\n      .build();\n\n    const quote = builder.buildQuote(\n      params,\n      DecimalUtil.toU64(new Decimal(1e6), params.inputToken.scale)\n    );\n\n    expect(quote.getRate()).toEqual(new Decimal(0.9988));\n    expect(quote.getPriceImpact()).toEqual(new Decimal(0.055227));\n    expect(quote.getLPFees()).toEqual(new OrcaU64(new u64(\"600000000\"), params.inputToken.scale));\n    expect(quote.getNetworkFees()).toEqual(new OrcaU64(new u64(\"10000\")));\n    expect(quote.getMinOutputAmount()).toEqual(\n      new OrcaU64(new u64(\"997801060657\"), params.outputToken.scale)\n    );\n    expect(quote.getExpectedOutputAmount()).toEqual(\n      new OrcaU64(new u64(\"998799860518\"), params.outputToken.scale)\n    );\n  });\n\n  test(\"both owner and trader fees are 0\", () => {\n    const params = Builder<QuotePoolParams>(stableQuotePoolParams)\n      .feeStructure({\n        traderFee: Percentage.fromFraction(0, 10000),\n        ownerFee: Percentage.fromFraction(0, 10000),\n      })\n      .build();\n\n    const quote = builder.buildQuote(\n      params,\n      DecimalUtil.toU64(new Decimal(1e6), params.inputToken.scale)\n    );\n\n    expect(quote.getRate()).toEqual(new Decimal(0.999399));\n    expect(quote.getPriceImpact()).toEqual(new Decimal(0.055258));\n    expect(quote.getLPFees()).toEqual(new OrcaU64(new u64(0), params.inputToken.scale));\n    expect(quote.getNetworkFees()).toEqual(new OrcaU64(new u64(\"10000\")));\n    expect(quote.getMinOutputAmount()).toEqual(\n      new OrcaU64(new u64(\"998399796479\"), params.outputToken.scale)\n    );\n    expect(quote.getExpectedOutputAmount()).toEqual(\n      new OrcaU64(new u64(\"999399195675\"), params.outputToken.scale)\n    );\n  });\n\n  test(\"Minimum fee of one token\", () => {\n    const params = Builder<QuotePoolParams>(stableQuotePoolParams).build();\n\n    const quote = builder.buildQuote(\n      params,\n      DecimalUtil.toU64(new Decimal(\"0.0001\"), params.inputToken.scale)\n    );\n\n    expect(quote.getRate()).toEqual(new Decimal(0.98));\n    expect(quote.getPriceImpact()).toEqual(new Decimal(-1.030928));\n    expect(quote.getLPFees()).toEqual(new OrcaU64(new u64(\"2\"), params.inputToken.scale));\n    expect(quote.getNetworkFees()).toEqual(new OrcaU64(new u64(\"10000\")));\n    expect(quote.getMinOutputAmount()).toEqual(\n      new OrcaU64(new u64(\"97\"), params.outputToken.scale)\n    );\n    expect(quote.getExpectedOutputAmount()).toEqual(\n      new OrcaU64(new u64(\"98\"), params.outputToken.scale)\n    );\n  });\n});\n\ndescribe(\"Too small inputTradeAmount\", () => {\n  test(\"Too small inputTradeAmount (1 unit)\", () => {\n    const params = Builder<QuotePoolParams>(stableQuotePoolParams).build();\n\n    const quote = builder.buildQuote(\n      params,\n      DecimalUtil.toU64(new Decimal(\"0.000001\"), params.inputToken.scale)\n    );\n\n    expect(quote.getRate()).toEqual(new Decimal(0));\n    expect(quote.getPriceImpact()).toEqual(new Decimal(0));\n    expect(quote.getLPFees()).toEqual(new OrcaU64(new u64(\"2\"), params.inputToken.scale));\n    expect(quote.getNetworkFees()).toEqual(new OrcaU64(new u64(\"10000\")));\n    expect(quote.getMinOutputAmount()).toEqual(new OrcaU64(new u64(\"0\"), params.outputToken.scale));\n    expect(quote.getExpectedOutputAmount()).toEqual(\n      new OrcaU64(new u64(\"0\"), params.outputToken.scale)\n    );\n  });\n\n  test(\"Too small inputTradeAmount (2 unit)\", () => {\n    const params = Builder<QuotePoolParams>(stableQuotePoolParams).build();\n\n    const quote = builder.buildQuote(\n      params,\n      DecimalUtil.toU64(new Decimal(\"0.000002\"), params.inputToken.scale)\n    );\n\n    expect(quote.getRate()).toEqual(new Decimal(0));\n    expect(quote.getPriceImpact()).toEqual(new Decimal(0));\n    expect(quote.getLPFees()).toEqual(new OrcaU64(new u64(\"2\"), params.inputToken.scale));\n    expect(quote.getNetworkFees()).toEqual(new OrcaU64(new u64(\"10000\")));\n    expect(quote.getMinOutputAmount()).toEqual(new OrcaU64(new u64(\"0\"), params.outputToken.scale));\n    expect(quote.getExpectedOutputAmount()).toEqual(\n      new OrcaU64(new u64(\"0\"), params.outputToken.scale)\n    );\n  });\n\n  test(\"Too small inputTradeAmount (3 unit)\", () => {\n    const params = Builder<QuotePoolParams>(stableQuotePoolParams).build();\n\n    const quote = builder.buildQuote(\n      params,\n      DecimalUtil.toU64(new Decimal(\"0.000003\"), params.inputToken.scale)\n    );\n\n    expect(quote.getRate()).toEqual(new Decimal(0.333333));\n    expect(quote.getPriceImpact()).toEqual(new Decimal(0));\n    expect(quote.getLPFees()).toEqual(new OrcaU64(new u64(\"2\"), params.inputToken.scale));\n    expect(quote.getNetworkFees()).toEqual(new OrcaU64(new u64(\"10000\")));\n    expect(quote.getMinOutputAmount()).toEqual(new OrcaU64(new u64(\"0\"), params.outputToken.scale));\n    expect(quote.getExpectedOutputAmount()).toEqual(\n      new OrcaU64(new u64(\"1\"), params.outputToken.scale)\n    );\n  });\n});\n"
  },
  {
    "path": "test/public/utils/orca-u64.test.ts",
    "content": "import { u64 } from \"@solana/spl-token\";\nimport Decimal from \"decimal.js\";\nimport { OrcaU64 } from \"../../../src/public\";\n\n// OrcaU64.fromDecimal\ndescribe.each([\n  { value: 0, scale: 9, expectedValue: new u64(\"0\"), expectedScale: 9 },\n  { value: 25000, scale: 5, expectedValue: new u64(\"2500000000\"), expectedScale: 5 },\n  { value: 15.58942, scale: 6, expectedValue: new u64(\"15589420\"), expectedScale: 6 },\n  { value: 15.58942, scale: 6.7, expectedValue: new u64(\"15589420\"), expectedScale: 6 },\n])(\"fromDecimal($value, $decimals)\", ({ value, scale: decimals, expectedValue, expectedScale }) => {\n  test(`returns {${expectedValue}, ${expectedScale}}`, () => {\n    expect(OrcaU64.fromDecimal(new Decimal(value), decimals)).toEqual(\n      new OrcaU64(expectedValue, expectedScale)\n    );\n  });\n});\n\n// OrcaU64.fromNumber\ndescribe.each([\n  { value: 0, scale: 9, expectedValue: new u64(\"0\"), expectedScale: 9 },\n  { value: 25000, scale: 5, expectedValue: new u64(\"2500000000\"), expectedScale: 5 },\n  { value: 15.58942, scale: 6, expectedValue: new u64(\"15589420\"), expectedScale: 6 },\n  { value: 15.58942, scale: 6.7, expectedValue: new u64(\"15589420\"), expectedScale: 6 },\n])(\"fromNumber($value, $decimals)\", ({ value, scale: decimals, expectedValue, expectedScale }) => {\n  test(`returns {${expectedValue}, ${expectedScale}}`, () => {\n    expect(OrcaU64.fromNumber(value, decimals)).toEqual(new OrcaU64(expectedValue, expectedScale));\n  });\n});\n\n// OrcaU64.fromU64\ndescribe.each([\n  { value: new u64(0), scale: 9, expectedValue: new u64(\"0\"), expectedScale: 9 },\n  { value: new u64(25000), scale: 5, expectedValue: new u64(\"25000\"), expectedScale: 5 },\n  { value: new u64(15589420), scale: 6, expectedValue: new u64(\"15589420\"), expectedScale: 6 },\n  {\n    value: new u64(1),\n    scale: 6.7,\n    expectedValue: new u64(\"1\"),\n    expectedScale: 6,\n  },\n])(\"fromU64($value, $decimals)\", ({ value, scale: decimals, expectedValue, expectedScale }) => {\n  test(`returns {${expectedValue}, ${expectedScale}}`, () => {\n    expect(OrcaU64.fromU64(value, decimals)).toEqual(new OrcaU64(expectedValue, expectedScale));\n  });\n});\n\n// OrcaU64.toDecimal\ndescribe.each([\n  { value: OrcaU64.fromNumber(0, 9), expectedValue: 0 },\n  { value: OrcaU64.fromNumber(25000, 5), expectedValue: 25000 },\n  { value: OrcaU64.fromNumber(15.58942, 6), expectedValue: 15.58942 },\n])(\"toDecimal($value)\", ({ value, expectedValue }) => {\n  test(`returns {${expectedValue}}`, () => {\n    expect(value.toDecimal()).toEqual(new Decimal(expectedValue));\n  });\n});\n\n// OrcaU64.toNumber\ndescribe.each([\n  { value: OrcaU64.fromNumber(0, 9), expectedValue: 0 },\n  { value: OrcaU64.fromNumber(25000, 5), expectedValue: 25000 },\n  { value: OrcaU64.fromNumber(15.58942, 6), expectedValue: 15.58942 },\n])(\"toNumber($value)\", ({ value, expectedValue }) => {\n  test(`returns {${expectedValue}}`, () => {\n    expect(value.toNumber()).toEqual(expectedValue);\n  });\n});\n\n// OrcaU64.toU64\ndescribe.each([\n  { value: OrcaU64.fromU64(new u64(0), 5), expectedValue: new u64(0) },\n  { value: OrcaU64.fromU64(new u64(25000), 5), expectedValue: new u64(25000) },\n  { value: OrcaU64.fromU64(new u64(15589420), 6), expectedValue: new u64(15589420) },\n])(\"toU64($value)\", ({ value, expectedValue }) => {\n  test(`returns {${expectedValue}}`, () => {\n    expect(value.toU64()).toEqual(expectedValue);\n  });\n});\n"
  },
  {
    "path": "test/test-utils.ts",
    "content": "import { u64 } from \"@solana/spl-token\";\nimport { PublicKey } from \"@solana/web3.js\";\nimport Decimal from \"decimal.js\";\nimport { OrcaToken } from \"../src\";\nimport { FeeStructure } from \"../src/model/orca/pool/pool-types\";\nimport { QuotePoolParams } from \"../src/model/quote/quote-builder\";\nimport { Percentage } from \"../src/public\";\n\nexport const defaultSOLToken: OrcaToken = {\n  tag: \"SOL\",\n  name: \"Solana\",\n  mint: new PublicKey(\"So11111111111111111111111111111111111111112\"),\n  scale: 9,\n};\n\nexport const defaultUsdcToken: OrcaToken = {\n  tag: \"USDC\",\n  name: \"USD Coin\",\n  mint: new PublicKey(\"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\"),\n  scale: 6,\n};\n\nexport const defaultUsdtToken: OrcaToken = {\n  tag: \"USDT\",\n  name: \"Tether USD\",\n  mint: new PublicKey(\"Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB\"),\n  scale: 6,\n};\n\nexport const defaultEthToken: OrcaToken = {\n  tag: \"ETH\",\n  name: \"Ethereum\",\n  mint: new PublicKey(\"2FPyTwcZLUg1MDrwsyoP4D6s1tM7hAkHYRjkNb5w6Pxk\"),\n  scale: 6,\n};\n\nexport const defaultFeeStructure: FeeStructure = {\n  traderFee: Percentage.fromDecimal(new Decimal(0.2)),\n  ownerFee: Percentage.fromDecimal(new Decimal(0.1)),\n};\n\nexport const defaultLamportsPerSignature: number = 5000;\n\nexport const defaultQuotePoolParams: QuotePoolParams = {\n  inputTokenCount: new u64(\"27638693975460\"),\n  outputTokenCount: new u64(\"670432580208\"),\n  inputToken: defaultSOLToken,\n  outputToken: defaultUsdcToken,\n  feeStructure: defaultFeeStructure,\n  slippageTolerance: Percentage.fromDecimal(new Decimal(0.1)),\n  lamportsPerSignature: defaultLamportsPerSignature,\n};\n\nexport const stableQuotePoolParams: QuotePoolParams = {\n  inputTokenCount: new u64(\"19768621149413\"),\n  outputTokenCount: new u64(\"19577821226623\"),\n  inputToken: defaultUsdcToken,\n  outputToken: defaultUsdtToken,\n  feeStructure: {\n    traderFee: Percentage.fromFraction(6, 10000),\n    ownerFee: Percentage.fromFraction(1, 10000),\n  },\n  slippageTolerance: Percentage.fromDecimal(new Decimal(0.1)),\n  lamportsPerSignature: defaultLamportsPerSignature,\n  amp: new u64(100),\n};\n"
  },
  {
    "path": "test/tsconfig.json",
    "content": "{\n  \"extends\": \"../tsconfig-base.json\",\n  \"references\": [\n    {\n      \"path\": \"../src\"\n    }\n  ]\n}"
  },
  {
    "path": "test/utils/models/percentage.test.ts",
    "content": "import Decimal from \"decimal.js\";\nimport { Percentage } from \"../../../src\";\n\nconst oneOverThousand: Percentage = Percentage.fromFraction(1, 1000);\nconst tenOverTenThousand: Percentage = Percentage.fromFraction(1, 10000);\n\ndescribe.each([\n  {\n    p1: Percentage.fromFraction(1, 1000),\n    p2: Percentage.fromFraction(1, 10000),\n    expected: Percentage.fromFraction(11, 10000),\n  },\n  {\n    p1: Percentage.fromFraction(1, 3),\n    p2: Percentage.fromFraction(1, 7),\n    expected: Percentage.fromFraction(10, 21),\n  },\n  {\n    p1: Percentage.fromFraction(5, 10000),\n    p2: Percentage.fromFraction(7, 10000),\n    expected: Percentage.fromFraction(12, 10000),\n  },\n  {\n    p1: Percentage.fromFraction(0, 1000),\n    p2: Percentage.fromFraction(0, 10000),\n    expected: Percentage.fromFraction(0, 10000),\n  },\n  {\n    p1: Percentage.fromFraction(30, 10000),\n    p2: Percentage.fromFraction(5, 10000),\n    expected: Percentage.fromFraction(35, 10000),\n  },\n])(\"Percentage.add\", ({ p1, p2, expected }) => {\n  test(`add(${p1.toString()}, ${p2.toString()}}) returns {${expected.toString()}}`, () => {\n    expect(p1.add(p2).toString()).toEqual(expected.toString());\n  });\n});\n\ndescribe.each([\n  {\n    p1: Percentage.fromFraction(1, 1000),\n    expected: new Decimal(1).div(new Decimal(1000)),\n  },\n  {\n    p1: Percentage.fromFraction(1, 3),\n    expected: new Decimal(1).div(new Decimal(3)),\n  },\n  {\n    p1: Percentage.fromFraction(5, 10000),\n    expected: new Decimal(5).div(new Decimal(10000)),\n  },\n  {\n    p1: Percentage.fromFraction(0, 1000),\n    expected: new Decimal(0).div(new Decimal(1000)),\n  },\n  {\n    p1: Percentage.fromFraction(30, 0),\n    expected: new Decimal(0),\n  },\n])(\"Percentage.toDecimal\", ({ p1, expected }) => {\n  test(`toDecimal(${p1.toString()}) returns {${expected.toString()}}`, () => {\n    expect(p1.toDecimal()).toEqual(expected);\n  });\n});\n"
  },
  {
    "path": "test/utils/numbers/decimal-utils.test.ts",
    "content": "import { u64 } from \"@solana/spl-token\";\nimport Decimal from \"decimal.js\";\nimport { DecimalUtil } from \"../../../src/public\";\n\n/**\n * DecimalUtil.fromU64\n */\ndescribe.each([\n  { input: new u64(\"10\"), shift: 1, expectedValue: new Decimal(1) },\n  { input: new u64(\"14250748290\"), shift: 9, expectedValue: new Decimal(14.25074829) },\n  { input: new u64(\"5\"), shift: 3, expectedValue: new Decimal(0.005) },\n  { input: new u64(\"0\"), shift: 9, expectedValue: new Decimal(0) },\n  { input: new u64(\"10\"), shift: -1, expectedValue: new Decimal(100) },\n])(\"DecimalUtil.fromU64\", ({ input, shift, expectedValue }) => {\n  test(`fromU64(${input.toString()}, ${shift}) returns {${expectedValue}}`, () => {\n    expect(DecimalUtil.fromU64(input, shift)).toEqual(expectedValue);\n  });\n});\n\ndescribe.each([\n  { input: new u64(\"10\"), expectedValue: new Decimal(10) },\n  { input: new u64(\"0\"), expectedValue: new Decimal(0) },\n  { input: new u64(\"5\"), expectedValue: new Decimal(5) },\n])(\"DecimalUtil.fromU64\", ({ input, expectedValue }) => {\n  test(`fromU64(${input.toString()}) returns {${expectedValue}}`, () => {\n    expect(DecimalUtil.fromU64(input)).toEqual(expectedValue);\n  });\n});\n\n/**\n * DecimalUtil.toU64\n */\ndescribe.each([\n  { input: new Decimal(10), shift: 0, expectedValue: new u64(\"10\") },\n  { input: new Decimal(10), shift: 1, expectedValue: new u64(\"100\") },\n  { input: new Decimal(10.5), shift: 1, expectedValue: new u64(\"105\") },\n  { input: new Decimal(10.5242425252), shift: 6, expectedValue: new u64(\"10524242\") },\n])(\"DecimalUtil.toU64\", ({ input, shift, expectedValue }) => {\n  test(`toU64(${input}, ${shift}) returns {${expectedValue.toString()}}`, () => {\n    expect(DecimalUtil.toU64(input, shift)).toEqual(expectedValue);\n  });\n});\n\ndescribe.each([\n  { input: new Decimal(10), expectedValue: new u64(\"10\") },\n  { input: new Decimal(10.5), expectedValue: new u64(\"10\") },\n])(\"DecimalUtil.toU64\", ({ input, expectedValue }) => {\n  test(`toU64(${input}) returns {${expectedValue.toString()}}`, () => {\n    expect(DecimalUtil.toU64(input)).toEqual(expectedValue);\n  });\n});\n\ndescribe.each([{ input: new Decimal(-15) }])(\"DecimalUtil.toU64\", ({ input }) => {\n  test(`toU64(${input}) throws error }`, () => {\n    expect(() => DecimalUtil.toU64(input)).toThrow();\n  });\n});\n"
  },
  {
    "path": "test/utils/numbers/u64-utils.test.ts",
    "content": "import { u64 } from \"@solana/spl-token\";\nimport { PublicKey } from \"@solana/web3.js\";\nimport Decimal from \"decimal.js\";\nimport { OrcaToken } from \"../../../src\";\nimport { OrcaU64, U64Utils } from \"../../../src/public\";\n\nconst tokenWithScale6: OrcaToken = {\n  tag: \"tag5\",\n  scale: 6,\n  name: \"name\",\n  mint: new PublicKey(\"Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB\"),\n};\n\nconst tokenWithScale8: OrcaToken = {\n  ...tokenWithScale6,\n  scale: 8,\n};\n\n/**\n * U64Utils.toTokenU64\n */\ndescribe.each([\n  { input: new Decimal(10), token: tokenWithScale6, expectedValue: new u64(\"10000000\") },\n  { input: new Decimal(10.5233), token: tokenWithScale6, expectedValue: new u64(\"10523300\") },\n  {\n    input: new OrcaU64(new u64(\"105234058\"), 8),\n    token: tokenWithScale8,\n    expectedValue: new u64(\"105234058\"),\n  },\n])(\"U64Utils.toTokenU64\", ({ input, token, expectedValue }) => {\n  test(`toTokenU64(${input.toString()}, ${token.tag} with dec ${\n    token.scale\n  }) returns {${expectedValue}}`, () => {\n    expect(U64Utils.toTokenU64(input, token, \"someVarName\")).toEqual(expectedValue);\n  });\n});\n\ndescribe.each([\n  { input: new Decimal(-15), token: tokenWithScale6 },\n  { input: new OrcaU64(new u64(\"15\"), 4), token: tokenWithScale6 },\n])(\"U64Utils.toTokenU64\", ({ input, token }) => {\n  test(`toTokenU64(${input}) throws error }`, () => {\n    expect(() => U64Utils.toTokenU64(input, token, \"someVarName\")).toThrow();\n  });\n});\n"
  },
  {
    "path": "tsconfig-base.json",
    "content": "{\n  \"compilerOptions\": {\n    /* Visit https://aka.ms/tsconfig.json to read more about this file */\n\n    /* Basic Options */\n    // \"incremental\": true,                         /* Enable incremental compilation */\n    \"target\": \"es6\",                                /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019', 'ES2020', or 'ESNEXT'. */\n    \"module\": \"commonjs\",                           /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', 'es2020', or 'ESNext'. */\n    // \"lib\": [],                                   /* Specify library files to be included in the compilation. */\n    \"allowJs\": true,                             /* Allow javascript files to be compiled. */\n    // \"checkJs\": true,                             /* Report errors in .js files. */\n    // \"jsx\": \"preserve\",                           /* Specify JSX code generation: 'preserve', 'react-native', 'react', 'react-jsx' or 'react-jsxdev'. */\n    \"declaration\": true,                         /* Generates corresponding '.d.ts' file. */\n    // \"declarationMap\": true,                      /* Generates a sourcemap for each corresponding '.d.ts' file. */\n    // \"sourceMap\": true,                           /* Generates corresponding '.map' file. */\n    // \"outFile\": \"./\",                             /* Concatenate and emit output to single file. */\n    \"outDir\": \"./dist\",                              /* Redirect output structure to the directory. */\n    // \"rootDir\": \"./src\",                             /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */\n    // \"composite\": true,                           /* Enable project compilation */\n    // \"tsBuildInfoFile\": \"./\",                     /* Specify file to store incremental compilation information */\n    // \"removeComments\": true,                      /* Do not emit comments to output. */\n    // \"noEmit\": true,                              /* Do not emit outputs. */\n    // \"importHelpers\": true,                       /* Import emit helpers from 'tslib'. */\n    // \"downlevelIteration\": true,                  /* Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'. */\n    // \"isolatedModules\": true,                     /* Transpile each file as a separate module (similar to 'ts.transpileModule'). */\n\n    /* Strict Type-Checking Options */\n    \"strict\": true,                                 /* Enable all strict type-checking options. */\n    // \"noImplicitAny\": true,                       /* Raise error on expressions and declarations with an implied 'any' type. */\n    // \"strictNullChecks\": true,                    /* Enable strict null checks. */\n    // \"strictFunctionTypes\": true,                 /* Enable strict checking of function types. */\n    // \"strictBindCallApply\": true,                 /* Enable strict 'bind', 'call', and 'apply' methods on functions. */\n    // \"strictPropertyInitialization\": true,        /* Enable strict checking of property initialization in classes. */\n    // \"noImplicitThis\": true,                      /* Raise error on 'this' expressions with an implied 'any' type. */\n    // \"alwaysStrict\": true,                        /* Parse in strict mode and emit \"use strict\" for each source file. */\n\n    /* Additional Checks */\n    // \"noUnusedLocals\": true,                      /* Report errors on unused locals. */\n    // \"noUnusedParameters\": true,                  /* Report errors on unused parameters. */\n    // \"noImplicitReturns\": true,                   /* Report error when not all code paths in function return a value. */\n    // \"noFallthroughCasesInSwitch\": true,          /* Report errors for fallthrough cases in switch statement. */\n    // \"noUncheckedIndexedAccess\": true,            /* Include 'undefined' in index signature results */\n    // \"noPropertyAccessFromIndexSignature\": true,  /* Require undeclared properties from index signatures to use element accesses. */\n\n    /* Module Resolution Options */\n    // \"moduleResolution\": \"node\",                  /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */\n    // \"baseUrl\": \"./\",                             /* Base directory to resolve non-absolute module names. */\n    // \"paths\": {},                                 /* A series of entries which re-map imports to lookup locations relative to the 'baseUrl'. */\n    // \"rootDirs\": [],                              /* List of root folders whose combined content represents the structure of the project at runtime. */\n    // \"types\": [],                                 /* Type declaration files to be included in compilation. */\n    // \"allowSyntheticDefaultImports\": true,        /* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */\n    \"esModuleInterop\": true,                        /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */\n    // \"preserveSymlinks\": true,                    /* Do not resolve the real path of symlinks. */\n    // \"allowUmdGlobalAccess\": true,                /* Allow accessing UMD globals from modules. */\n\n    /* Source Map Options */\n    // \"sourceRoot\": \"\",                            /* Specify the location where debugger should locate TypeScript files instead of source locations. */\n    // \"mapRoot\": \"\",                               /* Specify the location where debugger should locate map files instead of generated locations. */\n    // \"inlineSourceMap\": true,                     /* Emit a single file with source maps instead of having a separate file. */\n    // \"inlineSources\": true,                       /* Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set. */\n\n    /* Experimental Options */\n    // \"experimentalDecorators\": true,              /* Enables experimental support for ES7 decorators. */\n    // \"emitDecoratorMetadata\": true,               /* Enables experimental support for emitting type metadata for decorators. */\n\n    /* Advanced Options */\n    \"skipLibCheck\": true,                           /* Skip type checking of declaration files. */\n    \"forceConsistentCasingInFileNames\": true        /* Disallow inconsistently-cased references to the same file. */\n  }\n}\n"
  }
]