{"version":3,"sources":["../../../src/gfx/cpmm/type.ts"],"sourcesContent":["import { EpochInfo, PublicKey } from \"@solana/web3.js\";\nimport { ConfigInfo, PoolInfo, PoolKeys } from \"@/api/type\";\nimport { TxVersion } from \"@/common/txTool/txType\";\nimport BN from \"bn.js\";\nimport { ComputeBudgetConfig, GetTransferAmountFee } from \"@/gfx/type\";\nimport { SwapResult } from \"./curve/calculator\";\nimport { Percent } from \"@/module\";\nimport { Gamma } from \"../idl/gamma.type\";\nimport Decimal from \"decimal.js\";\nimport { IdlAccounts, IdlTypes } from \"@coral-xyz/anchor\";\n\ninterface MintInfo {\n  address: string;\n  decimals: number;\n  programId: string;\n}\n\nexport interface CreateCpmmPoolParam<T> {\n  programId: PublicKey;\n  poolFeeAccount: PublicKey;\n  mintA: MintInfo;\n  mintB: MintInfo;\n  mintAAmount: BN;\n  mintBAmount: BN;\n  startTime: BN;\n  maxTradeFeeRate: BN;\n  volatilityFactor: BN;\n  feeConfig: ConfigInfo;\n\n  associatedOnly: boolean;\n  checkCreateATAOwner?: boolean;\n\n  ownerInfo: {\n    feePayer?: PublicKey;\n    useSOLBalance?: boolean; // if has WSOL mint\n  };\n  computeBudgetConfig?: ComputeBudgetConfig;\n  txVersion?: T;\n}\n\nexport interface CreateCpmmPoolAddress {\n  poolId: PublicKey;\n  configId: PublicKey;\n  authority: PublicKey;\n  lpMint: PublicKey;\n  vaultA: PublicKey;\n  vaultB: PublicKey;\n  observationId: PublicKey;\n  mintA: MintInfo;\n  mintB: MintInfo;\n  programId: PublicKey;\n  poolFeeAccount: PublicKey;\n  feeConfig: ConfigInfo;\n}\n\nexport interface AddCpmmLiquidityParams<T = TxVersion.LEGACY> {\n  poolInfo: PoolInfo;\n  poolKeys?: PoolKeys;\n  payer?: PublicKey;\n  inputAmount: BN;\n  baseSpecified: boolean;\n  slippage: Percent;\n  config?: {\n    bypassAssociatedCheck?: boolean;\n    checkCreateATAOwner?: boolean;\n  };\n  computeBudgetConfig?: ComputeBudgetConfig;\n  txVersion?: T;\n  computeResult?: {\n    inputAmountFee: GetTransferAmountFee;\n    anotherAmount: GetTransferAmountFee;\n    maxAnotherAmount: GetTransferAmountFee;\n    liquidity: BN;\n  };\n  partner?: PublicKey;\n}\n\nexport interface WithdrawCpmmLiquidityParams<T = TxVersion.LEGACY> {\n  poolInfo: PoolInfo;\n  poolKeys?: PoolKeys;\n  payer?: PublicKey;\n  lpAmount: BN;\n  slippage: Percent;\n  computeBudgetConfig?: ComputeBudgetConfig;\n  txVersion?: T;\n}\n\nexport interface CpmmSwapWithOracleParams<T = TxVersion.LEGACY> {\n  poolInfo: PoolInfo;\n  poolKeys?: PoolKeys;\n  payer?: PublicKey;\n  zeroForOne: boolean;\n  slippage?: number;\n  swapResult: Pick<SwapResult, \"sourceAmountSwapped\" | \"destinationAmountSwapped\">;\n\n  config?: {\n    bypassAssociatedCheck?: boolean;\n    checkCreateATAOwner?: boolean;\n    associatedOnly?: boolean;\n  };\n  computeBudgetConfig?: ComputeBudgetConfig;\n  txVersion?: T;\n  wrapSol?: boolean;\n  dflowSegmenterOptions?: {\n    registeredSegmenter: PublicKey;\n    registeredRegistry: PublicKey;\n  } | null;\n  referralAccounts?: {\n    referralAccount: PublicKey;\n    referralTokenAccountWithInputMint: PublicKey;\n  } | null;\n}\n\nexport interface CpmmSwapParams<T = TxVersion.LEGACY> extends CpmmSwapWithOracleParams<T> {\n  baseIn?: boolean;\n}\n\nexport interface ComputePairAmountParams {\n  poolInfo: PoolInfo;\n  baseReserve: BN;\n  quoteReserve: BN;\n  amount: string | Decimal;\n  slippage: Percent;\n  epochInfo: EpochInfo;\n  baseSpecified?: boolean\n}\n\nexport type CpmmObservationState = IdlAccounts<Gamma>[\"observationState\"];\nexport type CpmmConfig = IdlAccounts<Gamma>[\"ammConfig\"];\nexport type CpmmPool = IdlAccounts<Gamma>[\"poolState\"];\nexport type CpmmPoolPartners = IdlAccounts<Gamma>[\"poolPartnerInfos\"];\nexport type CpmmRewardInfo = IdlAccounts<Gamma>[\"rewardInfo\"];\nexport type CpmmUserLiquidityAccount = IdlAccounts<Gamma>[\"userPoolLiquidity\"];\nexport type CpmmUserRewardInfo = IdlAccounts<Gamma>[\"userRewardInfo\"];\nexport type CpmmObservation = IdlTypes<Gamma>[\"observation\"];\nexport type UserLiquidityAccount = IdlAccounts<Gamma>[\"userPoolLiquidity\"];\n\nexport enum CpmmCoder {\n  CPMM_POOL = \"poolState\",\n  CPMM_POOL_PARTNERS = \"poolPartnerInfos\",\n}\n\nexport type CpmmRpcData = CpmmPool & {\n  baseReserve: BN;\n  quoteReserve: BN;\n  vaultAAmount: BN;\n  vaultBAmount: BN;\n  configInfo?: CpmmConfig;\n  partnerInfo: CpmmPoolPartners;\n  observationAccount: CpmmObservationState;\n  poolPrice: Decimal;\n  programId: PublicKey;\n};\n\nexport type CpmmComputeData = {\n  id: PublicKey;\n  version: 7;\n  configInfo: CpmmConfig;\n  mintA: MintInfo;\n  mintB: MintInfo;\n  authority: PublicKey;\n} & Omit<CpmmRpcData, \"configInfo\" | \"mintA\" | \"mintB\">;\n"],"mappings":"AAyIO,IAAKA,OACVA,EAAA,UAAY,YACZA,EAAA,mBAAqB,mBAFXA,OAAA","names":["CpmmCoder"]}