{"version":3,"sources":["../../src/solana/cpmm/index.ts","../../src/solana/core/tokenMetadata.ts","../../src/solana/core/marketCapHelpers.ts","../../src/solana/core/errors.ts","../../src/solana/instructions/swapExactIn.ts","../../src/solana/client/config.ts","../../src/solana/dopplerLaunchHookV1/index.ts","../../src/solana/generated/dopplerLaunchHookV1/accounts/cosignerConfig.ts","../../src/solana/generated/dopplerLaunchHookV1/instructions/addCosigner.ts","../../src/solana/generated/dopplerLaunchHookV1/instructions/initializeConfig.ts","../../src/solana/generated/dopplerLaunchHookV1/instructions/removeCosigner.ts","../../src/solana/generated/dopplerLaunchHookV1/instructions/setAuthority.ts","../../src/solana/generated/dopplerLaunchHookV1/programs/dopplerLaunchHookV1.ts","../../src/solana/generated/dopplerLaunchHookV1/errors/dopplerLaunchHookV1.ts","../../src/solana/generated/dopplerLaunchHookV1/types/cosignerArg.ts","../../src/solana/generated/dopplerLaunchHookV1/types/initializeConfigArgs.ts","../../src/solana/generated/dopplerLaunchHookV1/types/setAuthorityArgs.ts","../../src/solana/dopplerLaunchHookV1/constants.ts","../../src/solana/dopplerLaunchHookV1/pda.ts","../../src/solana/dopplerLaunchHookV1/config.ts","../../src/solana/dopplerLaunchHookV1/gate.ts","../../src/solana/initializer/constants.ts","../../src/solana/initializer/helpers.ts","../../src/solana/dopplerLaunchHookV1/payload.ts","../../src/solana/dopplerLaunchHookV2/index.ts","../../src/solana/generated/dopplerLaunchHookV2/accounts/hookConfig.ts","../../src/solana/generated/dopplerLaunchHookV2/instructions/addCosigner.ts","../../src/solana/generated/dopplerLaunchHookV2/instructions/initializeConfig.ts","../../src/solana/generated/dopplerLaunchHookV2/instructions/removeCosigner.ts","../../src/solana/generated/dopplerLaunchHookV2/instructions/setAuthority.ts","../../src/solana/generated/dopplerLaunchHookV2/programs/dopplerLaunchHookV2.ts","../../src/solana/generated/dopplerLaunchHookV2/errors/dopplerLaunchHookV2.ts","../../src/solana/generated/dopplerLaunchHookV2/types/cosignerArg.ts","../../src/solana/generated/dopplerLaunchHookV2/types/initializeConfigArgs.ts","../../src/solana/generated/dopplerLaunchHookV2/types/setAuthorityArgs.ts","../../src/solana/initializer/index.ts","../../src/solana/generated/initializer/accounts/initConfig.ts","../../src/solana/generated/initializer/types/feeBeneficiary.ts","../../src/solana/generated/initializer/types/feeBeneficiaryInput.ts","../../src/solana/generated/initializer/types/feeClaimRole.ts","../../src/solana/generated/initializer/types/initializeConfigArgs.ts","../../src/solana/generated/initializer/types/initializeLaunchArgs.ts","../../src/solana/generated/initializer/types/payloadBuf.ts","../../src/solana/generated/initializer/accounts/launch.ts","../../src/solana/generated/initializer/accounts/launchFeeState.ts","../../src/solana/generated/initializer/instructions/claimFees.ts","../../src/solana/generated/initializer/instructions/curveSwapExactIn.ts","../../src/solana/generated/initializer/instructions/fundVesting.ts","../../src/solana/generated/initializer/instructions/harvestMigratedFees.ts","../../src/solana/generated/initializer/instructions/initializeConfig.ts","../../src/solana/generated/initializer/instructions/initializeLaunch.ts","../../src/solana/generated/initializer/instructions/previewSwapExactIn.ts","../../src/solana/generated/initializer/instructions/replaceFeeBeneficiary.ts","../../src/solana/generated/initializer/instructions/setFeePolicy.ts","../../src/solana/generated/initializer/instructions/setHookAllowlist.ts","../../src/solana/generated/initializer/instructions/setMigratorAllowlist.ts","../../src/solana/generated/initializer/programs/initializer.ts","../../src/solana/generated/initializer/errors/initializer.ts","../../src/solana/initializer/pda.ts","../../src/solana/initializer/instructions/initializeConfig.ts","../../src/solana/initializer/instructions/setMigratorAllowlist.ts","../../src/solana/initializer/instructions/setHookAllowlist.ts","../../src/solana/migrators/cpmmMigrator/constants.ts","../../src/solana/migrators/cpmmMigrator/pda.ts","../../src/solana/generated/predictionMigrator/accounts/claimReceipt.ts","../../src/solana/generated/predictionMigrator/accounts/entry.ts","../../src/solana/generated/predictionMigrator/accounts/entryByMint.ts","../../src/solana/generated/predictionMigrator/accounts/initConfig.ts","../../src/solana/generated/predictionMigrator/types/entryMigrated.ts","../../src/solana/generated/predictionMigrator/types/entryRegistered.ts","../../src/solana/generated/predictionMigrator/types/marketCreated.ts","../../src/solana/generated/predictionMigrator/types/marketResolved.ts","../../src/solana/generated/predictionMigrator/types/migrateEntryArgs.ts","../../src/solana/generated/predictionMigrator/types/payloadBuf.ts","../../src/solana/generated/predictionMigrator/types/previewPayoutIfWinnerArgs.ts","../../src/solana/generated/predictionMigrator/types/registerEntryArgs.ts","../../src/solana/generated/predictionMigrator/types/rewardsClaimed.ts","../../src/solana/generated/predictionMigrator/accounts/launch.ts","../../src/solana/generated/predictionMigrator/accounts/market.ts","../../src/solana/generated/predictionMigrator/accounts/oracleState.ts","../../src/solana/generated/predictionMigrator/instructions/claim.ts","../../src/solana/generated/predictionMigrator/instructions/migrateEntry.ts","../../src/solana/generated/predictionMigrator/instructions/previewPayoutIfWinner.ts","../../src/solana/generated/predictionMigrator/instructions/registerEntry.ts","../../src/solana/generated/predictionMigrator/programs/predictionMigrator.ts","../../src/solana/migrators/predictionMigrator/pda.ts","../../src/solana/initializer/instructions/initializeLaunch.ts","../../src/solana/initializer/instructions/curveSwapExactIn.ts","../../src/solana/initializer/instructions/migrateLaunch.ts","../../src/solana/initializer/instructions/previewSwapExactIn.ts","../../src/solana/initializer/instructions/previewMigration.ts","../../src/solana/migrators/cpmmMigrator/index.ts","../../src/solana/generated/cpmmMigrator/types/createSpotPoolArgs.ts","../../src/solana/generated/cpmmMigrator/types/migrateArgs.ts","../../src/solana/generated/cpmmMigrator/types/migratedPoolHookConfig.ts","../../src/solana/generated/cpmmMigrator/types/recipient.ts","../../src/solana/generated/cpmmMigrator/types/registerLaunchArgs.ts","../../src/solana/generated/cpmmMigrator/accounts/cpmmMigratorState.ts","../../src/solana/generated/cpmmMigrator/instructions/createSpotPool.ts","../../src/solana/generated/cpmmMigrator/programs/cpmmMigrator.ts","../../src/solana/generated/cpmmMigrator/errors/cpmmMigrator.ts","../../src/solana/migrators/cpmmMigrator/spotPool.ts","../../src/solana/migrators/cpmmMigrator/client.ts","../../src/solana/migrators/cpmmMigrator/remainingAccounts.ts","../../src/solana/initializer/createLaunch.ts","../../src/solana/initializer/addressLookupTables.ts","../../src/solana/initializer/transactionSize.ts","../../src/solana/initializer/client/launch.ts","../../src/solana/generated/dopplerRehypeRouterV1/accounts/ammConfig.ts","../../src/solana/generated/dopplerRehypeRouterV1/accounts/initConfig.ts","../../src/solana/generated/dopplerRehypeRouterV1/types/feeBeneficiary.ts","../../src/solana/generated/dopplerRehypeRouterV1/types/feeRoute.ts","../../src/solana/generated/dopplerRehypeRouterV1/types/feeRoutingMatrix.ts","../../src/solana/generated/dopplerRehypeRouterV1/types/initializeRehypeArgs.ts","../../src/solana/generated/dopplerRehypeRouterV1/types/lpRebalanceArgs.ts","../../src/solana/generated/dopplerRehypeRouterV1/types/payloadBuf.ts","../../src/solana/generated/dopplerRehypeRouterV1/types/rehypeBeneficiary.ts","../../src/solana/generated/dopplerRehypeRouterV1/types/rehypeBeneficiaryInput.ts","../../src/solana/generated/dopplerRehypeRouterV1/types/rehypeBeneficiaryReplaced.ts","../../src/solana/generated/dopplerRehypeRouterV1/types/rehypeFeesClaimed.ts","../../src/solana/generated/dopplerRehypeRouterV1/types/rehypeInitialized.ts","../../src/solana/generated/dopplerRehypeRouterV1/types/rehypeSettled.ts","../../src/solana/generated/dopplerRehypeRouterV1/types/settleFeesArgs.ts","../../src/solana/generated/dopplerRehypeRouterV1/types/settleMigratedFeesArgs.ts","../../src/solana/generated/dopplerRehypeRouterV1/accounts/launch.ts","../../src/solana/generated/dopplerRehypeRouterV1/accounts/launchFeeState.ts","../../src/solana/generated/dopplerRehypeRouterV1/accounts/pool.ts","../../src/solana/generated/dopplerRehypeRouterV1/accounts/position.ts","../../src/solana/generated/dopplerRehypeRouterV1/accounts/rehypeState.ts","../../src/solana/generated/dopplerRehypeRouterV1/instructions/claimFees.ts","../../src/solana/generated/dopplerRehypeRouterV1/instructions/initializeRehype.ts","../../src/solana/generated/dopplerRehypeRouterV1/instructions/replaceBeneficiary.ts","../../src/solana/generated/dopplerRehypeRouterV1/instructions/settleFees.ts","../../src/solana/generated/dopplerRehypeRouterV1/instructions/settleMigratedFees.ts","../../src/solana/generated/dopplerRehypeRouterV1/programs/dopplerRehypeRouterV1.ts","../../src/solana/generated/dopplerRehypeRouterV1/errors/dopplerRehypeRouterV1.ts","../../src/solana/dopplerLaunchHookV2/constants.ts","../../src/solana/dopplerLaunchHookV2/pda.ts","../../src/solana/dopplerLaunchHookV2/config.ts","../../src/solana/dopplerLaunchHookV2/payload.ts","../../src/solana/dopplerRehypeRouterV1/index.ts","../../src/solana/feeRehypothecation/index.ts","../../src/solana/deployment.ts","../../src/solana/feeRehypothecation/math.ts","../../src/solana/feeRehypothecation/pda.ts","../../src/solana/feeRehypothecation/claim.ts","../../src/solana/feeRehypothecation/strategies.ts","../../src/solana/generated/dopplerVesting/types/claimArgs.ts","../../src/solana/generated/dopplerVesting/types/initializeVestingArgs.ts","../../src/solana/generated/dopplerVesting/types/payloadBuf.ts","../../src/solana/generated/dopplerVesting/types/tokensReleased.ts","../../src/solana/generated/dopplerVesting/types/vestingAllocation.ts","../../src/solana/generated/dopplerVesting/types/vestingAllocationInput.ts","../../src/solana/generated/dopplerVesting/types/vestingInitialized.ts","../../src/solana/generated/dopplerVesting/types/vestingSchedule.ts","../../src/solana/generated/dopplerVesting/accounts/launch.ts","../../src/solana/generated/dopplerVesting/accounts/vestingConfig.ts","../../src/solana/generated/dopplerVesting/instructions/claim.ts","../../src/solana/generated/dopplerVesting/instructions/initializeVesting.ts","../../src/solana/generated/dopplerVesting/programs/dopplerVesting.ts","../../src/solana/generated/dopplerVesting/errors/dopplerVesting.ts","../../src/solana/vesting/constants.ts","../../src/solana/vesting/pda.ts","../../src/solana/vesting/internal.ts","../../src/solana/feeRehypothecation/launch.ts","../../src/solana/feeRehypothecation/settlement.ts","../../src/solana/vesting/index.ts","../../src/solana/vesting/claim.ts","../../src/solana/vesting/launch.ts","../../src/solana/migrators/predictionMigrator/index.ts","../../src/solana/generated/predictionMigrator/errors/predictionMigrator.ts","../../src/solana/trustedOracle/index.ts","../../src/solana/generated/trustedOracle/accounts/oracleState.ts","../../src/solana/generated/trustedOracle/instructions/finalize.ts","../../src/solana/generated/trustedOracle/instructions/initializeOracle.ts","../../src/solana/generated/trustedOracle/programs/trustedOracle.ts","../../src/solana/generated/trustedOracle/errors/trustedOracle.ts","../../src/solana/generated/trustedOracle/types/initializeOracleArgs.ts","../../src/solana/trustedOracle/pda.ts","../../src/solana/swaps.ts","../../src/solana/migrateLaunch.ts"],"names":["__export","ACCOUNT_DISCRIMINATORS","ACCOUNT_VERSION","ADD_LIQUIDITY_DISCRIMINATOR","BPS_DENOM","CLOSE_POSITION_DISCRIMINATOR","COLLECT_FEES_DISCRIMINATOR","COLLECT_PROTOCOL_FEES_DISCRIMINATOR","CPMM_PROGRAM_ID","CREATE_POSITION_DISCRIMINATOR","HF_AFTER_ADD_LIQ","HF_AFTER_REMOVE_LIQ","HF_AFTER_SWAP","HF_BEFORE_ADD_LIQ","HF_BEFORE_REMOVE_LIQ","HF_BEFORE_SWAP","HF_FORWARD_READONLY_SIGNERS","HF_REQUIRE_ORACLE","HOOK_NO_CHANGE","INITIALIZE_CONFIG_DISCRIMINATOR","INITIALIZE_ORACLE_DISCRIMINATOR","INITIALIZE_POOL_DISCRIMINATOR","INITIALIZE_SPOT_POOL_DISCRIMINATOR","INITIALIZE_SPOT_POOL_WITH_HOOK_DISCRIMINATOR","INSTRUCTION_DISCRIMINATORS","MAX_HOOK_ALLOWLIST","MAX_ORACLE_OBSERVATIONS","ORACLE_CONSULT_DISCRIMINATOR","ORACLE_UPDATE_DISCRIMINATOR","PAUSE_DISCRIMINATOR","PREVIEW_SWAP_EXACT_IN_DISCRIMINATOR","Q64_ONE","REDEEM_PROTOCOL_SHARES_DISCRIMINATOR","REMOVE_LIQUIDITY_DISCRIMINATOR","SEED_AUTHORITY","SEED_CONFIG","SEED_ORACLE","SEED_POOL","SEED_POSITION","SEED_PROTOCOL_FEE_OWNER","SEED_SPOT_POOL","SET_FEES_DISCRIMINATOR","SET_HOOK_DISCRIMINATOR","SPOT_HOOK_FLAG_MASK","SWAP_EXACT_IN_DISCRIMINATOR","TOKEN_METADATA_PROGRAM_ID","TRANSFER_ADMIN_DISCRIMINATOR","UNPAUSE_DISCRIMINATOR","UPDATE_CONFIG_DISCRIMINATOR","WITHDRAW_VAULT_EXCESS_DISCRIMINATOR","addLiquidityArgsCodec","addressToBase58EncodedBytes","ammConfigDataCodec","areMintsOrdered","base64ToBytes","bytesToBase64","bytesToBase64EncodedBytes","calculateAccruedFees","calculateTwap","calculateTwapNumber","ceilDiv","collectFeesArgsCodec","collectProtocolFeesArgsCodec","comparePoolAndOraclePrices","computePrice0Q64","computePrice1Q64","consultTwap","createAccountMeta","getAddLiquidityInstruction","getClosePositionInstruction","getCollectFeesInstruction","getCollectProtocolFeesInstruction","getCreatePositionInstruction","getInitializeConfigInstruction","getInitializeOracleInstruction","getInitializePoolInstruction","getOracleConsultInstruction","getOracleUpdateInstruction","getPauseInstruction","createPositionArgsCodec","createReadonlyRemainingAccountMeta","getRemoveLiquidityInstruction","getSetFeesInstruction","getSetHookInstruction","getSwapExactInInstruction","getTransferAdminInstruction","getUnpauseInstruction","getWithdrawVaultExcessInstruction","decodeAmmConfig","decodeOracleState","decodePool","decodePosition","encodeAddLiquidityArgs","encodeCollectFeesArgs","encodeCollectProtocolFeesArgs","encodeCreatePositionArgs","encodeInitializeConfigArgs","encodeInitializeOracleArgs","encodeInitializePoolArgs","encodeInstructionData","encodeOracleConsultArgs","encodeRemoveLiquidityArgs","encodeSetFeesArgs","encodeSetHookArgs","encodeSwapExactInArgs","encodeTransferAdminArgs","fetchAllPools","fetchOracle","fetchOraclesBatch","fetchPool","fetchPoolPositions","fetchPoolsBatch","fetchPosition","fetchPositionByParams","fetchPositionsBatch","fetchUserPositions","filterActivePositions","filterPoolsByMint","getAddLiquidityDiscriminatorBytes","getAddLiquidityInstructionAsync","getAddLiquidityInstructionDataCodec","getAddLiquidityInstructionDataDecoder","getAddLiquidityInstructionDataEncoder","getAddLiquidityQuote","getAddressFromAddressOrSigner","getAddressFromRemainingAccount","getClosePositionDiscriminatorBytes","getClosePositionInstructionDataCodec","getClosePositionInstructionDataDecoder","getClosePositionInstructionDataEncoder","getCollectFeesDiscriminatorBytes","getCollectFeesInstructionAsync","getCollectFeesInstructionDataCodec","getCollectFeesInstructionDataDecoder","getCollectFeesInstructionDataEncoder","getCollectProtocolFeesDiscriminatorBytes","getCollectProtocolFeesInstructionAsync","getCollectProtocolFeesInstructionDataCodec","getCollectProtocolFeesInstructionDataDecoder","getCollectProtocolFeesInstructionDataEncoder","getConfigAddress","getCreatePositionDiscriminatorBytes","getCreatePositionInstructionAsync","getCreatePositionInstructionDataCodec","getCreatePositionInstructionDataDecoder","getCreatePositionInstructionDataEncoder","getHookedSpotPoolAddress","getInitializeConfigDiscriminatorBytes","getInitializeConfigInstructionAsync","getInitializeConfigInstructionDataCodec","getInitializeConfigInstructionDataDecoder","getInitializeConfigInstructionDataEncoder","getInitializeOracleDiscriminatorBytes","getInitializeOracleInstructionAsync","getInitializeOracleInstructionDataCodec","getInitializeOracleInstructionDataDecoder","getInitializeOracleInstructionDataEncoder","getInitializePoolDiscriminatorBytes","getInitializePoolInstructionAsync","getInitializePoolInstructionDataCodec","getInitializePoolInstructionDataDecoder","getInitializePoolInstructionDataEncoder","getInitializeSpotPoolDiscriminatorBytes","getInitializeSpotPoolInstruction","getInitializeSpotPoolInstructionAsync","getInitializeSpotPoolInstructionDataCodec","getInitializeSpotPoolInstructionDataDecoder","getInitializeSpotPoolInstructionDataEncoder","getInitializeSpotPoolWithHookDiscriminatorBytes","getInitializeSpotPoolWithHookInstruction","getInitializeSpotPoolWithHookInstructionAsync","getInitializeSpotPoolWithHookInstructionDataCodec","getInitializeSpotPoolWithHookInstructionDataDecoder","getInitializeSpotPoolWithHookInstructionDataEncoder","getK","getLiquidityAddresses","getOracleAddress","getOracleAddressFromPool","getOracleAge","getOracleBufferStats","getOracleConsultDiscriminatorBytes","getOracleConsultInstructionAsync","getOracleConsultInstructionDataCodec","getOracleConsultInstructionDataDecoder","getOracleConsultInstructionDataEncoder","getOracleDeviation","getOracleForPool","getOracleSpotPrices","getOracleUpdateDiscriminatorBytes","getOracleUpdateInstructionAsync","getOracleUpdateInstructionDataCodec","getOracleUpdateInstructionDataDecoder","getOracleUpdateInstructionDataEncoder","getPauseDiscriminatorBytes","getPauseInstructionDataCodec","getPauseInstructionDataDecoder","getPauseInstructionDataEncoder","getPendingFees","getPoolAddress","getPoolAddressFromMints","getPoolAuthorityAddress","getPoolByMints","getPoolInitAddresses","getPoolVault0Address","getPoolVault1Address","getPositionAddress","getPositionAddressFromParams","getPositionValue","getPreviewSwapExactInDiscriminatorBytes","getPreviewSwapExactInInstruction","getPreviewSwapExactInInstructionDataCodec","getPreviewSwapExactInInstructionDataDecoder","getPreviewSwapExactInInstructionDataEncoder","getProtocolFeeOwnerAddress","getProtocolFeePositionAddress","getRedeemProtocolSharesDiscriminatorBytes","getRedeemProtocolSharesInstruction","getRedeemProtocolSharesInstructionAsync","getRedeemProtocolSharesInstructionDataCodec","getRedeemProtocolSharesInstructionDataDecoder","getRedeemProtocolSharesInstructionDataEncoder","getRemoveLiquidityDiscriminatorBytes","getRemoveLiquidityInstructionAsync","getRemoveLiquidityInstructionDataCodec","getRemoveLiquidityInstructionDataDecoder","getRemoveLiquidityInstructionDataEncoder","getRemoveLiquidityQuote","getSetFeesDiscriminatorBytes","getSetFeesInstructionDataCodec","getSetFeesInstructionDataDecoder","getSetFeesInstructionDataEncoder","getSetHookDiscriminatorBytes","getSetHookInstructionDataCodec","getSetHookInstructionDataDecoder","getSetHookInstructionDataEncoder","getSpotPoolAddress","getSpotPrice0","getSpotPrice1","getSwapAddresses","getSwapExactInDiscriminatorBytes","getSwapExactInInstructionAsync","getSwapExactInInstructionDataCodec","getSwapExactInInstructionDataDecoder","getSwapExactInInstructionDataEncoder","getSwapQuote","getSwapQuoteExactOut","getTransferAdminDiscriminatorBytes","getTransferAdminInstructionDataCodec","getTransferAdminInstructionDataDecoder","getTransferAdminInstructionDataEncoder","getTvl","getUnpauseDiscriminatorBytes","getUnpauseInstructionDataCodec","getUnpauseInstructionDataDecoder","getUnpauseInstructionDataEncoder","getUpdateConfigDiscriminatorBytes","getUpdateConfigInstruction","getUpdateConfigInstructionDataCodec","getUpdateConfigInstructionDataDecoder","getUpdateConfigInstructionDataEncoder","getWithdrawVaultExcessDiscriminatorBytes","getWithdrawVaultExcessInstructionAsync","getWithdrawVaultExcessInstructionDataCodec","getWithdrawVaultExcessInstructionDataDecoder","getWithdrawVaultExcessInstructionDataEncoder","initializeConfigArgsCodec","initializeOracleArgsCodec","initializePoolArgsCodec","isOracleStale","isTransactionSigner","isqrt","maxBigInt","minBigInt","normalizeProgramAccountsResponse","numberToQ64","observationCodec","oracleConsultArgsCodec","oracleStateDataCodec","parseAddLiquidityInstruction","parseClosePositionInstruction","parseCollectFeesInstruction","parseCollectProtocolFeesInstruction","parseCreatePositionInstruction","parseInitializeConfigInstruction","parseInitializeOracleInstruction","parseInitializePoolInstruction","parseInitializeSpotPoolInstruction","parseInitializeSpotPoolWithHookInstruction","parseOracleConsultInstruction","parseOracleUpdateInstruction","parsePauseInstruction","parsePreviewSwapExactInInstruction","parseRedeemProtocolSharesInstruction","parseRemoveLiquidityInstruction","parseSetFeesInstruction","parseSetHookInstruction","parseSwapExactInInstruction","parseTransferAdminInstruction","parseUnpauseInstruction","parseUpdateConfigInstruction","parseWithdrawVaultExcessInstruction","poolDataCodec","poolExists","positionDataCodec","q64Div","q64Mul","q64ToNumber","ratioToNumber","removeLiquidityArgsCodec","setFeesArgsCodec","setHookArgsCodec","sortMints","sortPoolsByReserves","sortPositionsByShares","swapExactInArgsCodec","transferAdminArgsCodec","warnAccountDecodeFailure","getAddressCodec","getProgramDerivedAddress","CpmmErrorCode","CPMM_PROGRAM_ADDRESS","createNoopSigner","TOKEN_PROGRAM_ADDRESS","fixEncoderSize","getBytesEncoder","transformEncoder","getStructEncoder","getAddressEncoder","getU8Encoder","getArrayEncoder","getStructDecoder","fixDecoderSize","getBytesDecoder","getAddressDecoder","getU8Decoder","getArrayDecoder","combineCodec","decodeAccount","address","assertAccountExists","fetchEncodedAccount","assertAccountsExist","fetchEncodedAccounts","getAccountMetaFactory","SolanaError","SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS","accountMeta","DopplerLaunchHookV1Account","containsBytes","SOLANA_ERROR__PROGRAM_CLIENTS__FAILED_TO_IDENTIFY_ACCOUNT","DopplerLaunchHookV1Instruction","SOLANA_ERROR__PROGRAM_CLIENTS__FAILED_TO_IDENTIFY_INSTRUCTION","assertIsInstructionWithAccounts","SOLANA_ERROR__PROGRAM_CLIENTS__UNRECOGNIZED_INSTRUCTION_TYPE","addSelfFetchFunctions","addSelfPlanAndSendFunctions","isProgramError","textEncoder","SYSTEM_PROGRAM_ADDRESS","keccak_256","toBigInt","ADD_COSIGNER_DISCRIMINATOR","REMOVE_COSIGNER_DISCRIMINATOR","SET_AUTHORITY_DISCRIMINATOR","getAddCosignerDiscriminatorBytes","getAddCosignerInstruction","getAddCosignerInstructionAsync","getAddCosignerInstructionDataCodec","getAddCosignerInstructionDataDecoder","getAddCosignerInstructionDataEncoder","getCosignerArgCodec","getCosignerArgDecoder","getCosignerArgEncoder","getInitializeConfigArgsCodec","getInitializeConfigArgsDecoder","getInitializeConfigArgsEncoder","getRemoveCosignerDiscriminatorBytes","getRemoveCosignerInstruction","getRemoveCosignerInstructionAsync","getRemoveCosignerInstructionDataCodec","getRemoveCosignerInstructionDataDecoder","getRemoveCosignerInstructionDataEncoder","getSetAuthorityArgsCodec","getSetAuthorityArgsDecoder","getSetAuthorityArgsEncoder","getSetAuthorityDiscriminatorBytes","getSetAuthorityInstruction","getSetAuthorityInstructionAsync","getSetAuthorityInstructionDataCodec","getSetAuthorityInstructionDataDecoder","getSetAuthorityInstructionDataEncoder","parseAddCosignerInstruction","parseRemoveCosignerInstruction","parseSetAuthorityInstruction","resolveManagedCosignerGate","DopplerLaunchHookV2Account","DopplerLaunchHookV2Instruction","fetchLaunch","getU16Encoder","getU16Decoder","FeeClaimRole","getEnumEncoder","getU64Encoder","addEncoderSizePrefix","getU32Encoder","getUtf8Encoder","getU64Decoder","addDecoderSizePrefix","getU32Decoder","getUtf8Decoder","getI64Encoder","getI64Decoder","getAddressFromResolvedInstructionAccount","addressCodec","AccountRole","getU128Encoder","getU128Decoder","getBooleanEncoder","getBooleanDecoder","INIT_CONFIG_DISCRIMINATOR","getInitConfigEncoder","getInitConfigDecoder","getInitConfigCodec","getInitConfigSize","getPayloadBufEncoder","getPayloadBufDecoder","LAUNCH_DISCRIMINATOR","getLaunchEncoder","getLaunchDecoder","getLaunchCodec","decodeLaunch","fetchMaybeLaunch","PredictionMigratorAccount","PredictionMigratorInstruction","TOKEN_2022_PROGRAM_ADDRESS","SYSVAR_INSTRUCTIONS_ADDRESS","getStructCodec","getU64Codec","getOptionEncoder","getOptionDecoder","findAssociatedTokenPda","SEED_VAULT0","SEED_VAULT1","SYSVAR_RENT_ADDRESS","mergeBytes","findAddressLookupTablePda","getCreateLookupTableInstruction","getExtendLookupTableInstruction","compressTransactionMessageUsingAddressLookupTables","getTransactionMessageSize","AMM_CONFIG_DISCRIMINATOR","getAmmConfigCodec","getInitConfigDiscriminatorBytes","decodeInitConfig","fetchInitConfig","fetchMaybeInitConfig","fetchAllInitConfig","fetchAllMaybeInitConfig","getFeeBeneficiaryEncoder","getFeeBeneficiaryDecoder","getPayloadBufCodec","getLaunchDiscriminatorBytes","fetchAllLaunch","fetchAllMaybeLaunch","getLaunchSize","LAUNCH_FEE_STATE_DISCRIMINATOR","getLaunchFeeStateEncoder","getLaunchFeeStateDecoder","getLaunchFeeStateCodec","decodeLaunchFeeState","POOL_DISCRIMINATOR","getPoolCodec","POSITION_DISCRIMINATOR","getPositionCodec","CLAIM_FEES_DISCRIMINATOR","getClaimFeesInstructionDataEncoder","getClaimFeesInstructionAsync","parseClaimFeesInstruction","DopplerRehypeRouterV1Account","DopplerRehypeRouterV1Instruction","MAX_U64","route","seed","addressSeed","getVestingScheduleEncoder","getVestingScheduleDecoder","getVestingAllocationEncoder","getVestingAllocationDecoder","VESTING_CONFIG_DISCRIMINATOR","getVestingConfigCodec","CLAIM_DISCRIMINATOR","getClaimDiscriminatorBytes","getClaimInstructionDataEncoder","getClaimInstructionDataDecoder","getClaimInstructionDataCodec","getClaimInstructionAsync","getClaimInstruction","parseClaimInstruction","DopplerVestingAccount","DopplerVestingInstruction","decodeToken","prepareClaim","prepareLaunch","ORACLE_STATE_DISCRIMINATOR","fetchAllMaybeOracleState","fetchAllOracleState","fetchMaybeOracleState","fetchOracleState","getOracleStateCodec","getOracleStateDecoder","getOracleStateDiscriminatorBytes","getOracleStateEncoder","getOracleStateSize","TrustedOracleAccount","TrustedOracleInstruction","BPS_DENOMINATOR","getAssociatedTokenAddress","getCreateAssociatedTokenIdempotentInstruction","getTransferSolInstruction","getSyncNativeInstruction"],"mappings":"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","file":"index.cjs","sourcesContent":["export * from '../core/index.js';\nexport * from '../instructions/index.js';\nexport * from '../client/index.js';\n","import {\n  getAddressCodec,\n  getProgramDerivedAddress,\n  type Address,\n  type ProgramDerivedAddress,\n} from '@solana/kit';\nimport { TOKEN_METADATA_PROGRAM_ID } from './constants.js';\n\nconst addressCodec = getAddressCodec();\nconst textEncoder = new TextEncoder();\n\n/**\n * Derive Metaplex Token Metadata PDA for a given mint.\n *\n * Seeds: ['metadata', token_metadata_program_id, mint]\n */\nexport async function getMetadataAddress(\n  mint: Address,\n): Promise<ProgramDerivedAddress> {\n  return getProgramDerivedAddress({\n    programAddress: TOKEN_METADATA_PROGRAM_ID,\n    seeds: [\n      textEncoder.encode('metadata'),\n      addressCodec.encode(TOKEN_METADATA_PROGRAM_ID),\n      addressCodec.encode(mint),\n    ],\n  });\n}\n","/**\n * Market cap conversion utilities for Solana token launches.\n *\n * Converts between human-readable market cap values (USD) and the raw\n * curve parameters used by the initializer program.\n *\n * For an XYK bonding curve the marginal spot price at any point is:\n *\n *   spotPrice (quote/base, raw units) = (quoteReserve + curveVirtualQuote)\n *                                     / (baseReserve  + curveVirtualBase)\n *\n * At launch open (quoteReserve = 0, baseReserve = baseForCurve):\n *\n *   spotPrice = curveVirtualQuote / (baseForCurve + curveVirtualBase)\n *\n * Adjusted for decimals and numeraire price:\n *\n *   spotPriceUSD = spotPrice * 10^(baseDecimals - quoteDecimals) * numerairePriceUSD\n *\n * Market cap (FDV) is then:\n *\n *   marketCap = spotPriceUSD * (baseTotalSupply / 10^baseDecimals)\n */\n\nimport type {\n  MarketCapValidationResult,\n  CurveParams,\n  MarketCapToCurveParamsInput,\n  CurveParamsToMarketCapInput,\n} from './types.js';\n\nexport type {\n  MarketCapValidationResult,\n  CurveParams,\n  MarketCapToCurveParamsInput,\n  CurveParamsToMarketCapInput,\n};\n\n// ============================================================================\n// Primitive helpers\n// ============================================================================\n\n/**\n * Convert a market cap (USD) and total supply to a per-token price (USD).\n *\n * @example\n * // $1M market cap, 1B tokens with 6 decimals\n * marketCapToTokenPrice(1_000_000, 1_000_000_000n * 10n**6n, 6)\n * // => 0.001\n */\nexport function marketCapToTokenPrice(\n  marketCapUSD: number,\n  baseTotalSupply: bigint,\n  baseDecimals: number,\n): number {\n  if (marketCapUSD <= 0) {\n    throw new Error('Market cap must be positive');\n  }\n  if (baseTotalSupply <= 0n) {\n    throw new Error('Token supply must be positive');\n  }\n\n  const supplyNum = Number(baseTotalSupply) / 10 ** baseDecimals;\n  return marketCapUSD / supplyNum;\n}\n\n/**\n * Validate market cap parameters and return warnings for unusual values.\n * Does not throw — callers can decide whether to surface warnings to users.\n *\n * @example\n * const { valid, warnings } = validateMarketCapParameters(500, supply, 6);\n * if (!valid) console.warn(warnings);\n */\nexport function validateMarketCapParameters(\n  marketCapUSD: number,\n  baseTotalSupply: bigint,\n  baseDecimals: number,\n): MarketCapValidationResult {\n  const warnings: string[] = [];\n\n  if (marketCapUSD < 1_000) {\n    warnings.push(\n      `Market cap $${marketCapUSD.toLocaleString()} is very small. Verify this is intentional.`,\n    );\n  }\n\n  if (marketCapUSD > 1_000_000_000_000) {\n    warnings.push(\n      `Market cap $${marketCapUSD.toLocaleString()} exceeds $1T. Verify this is correct.`,\n    );\n  }\n\n  const tokenPriceUSD = marketCapToTokenPrice(\n    marketCapUSD,\n    baseTotalSupply,\n    baseDecimals,\n  );\n\n  if (tokenPriceUSD < 0.000_001) {\n    warnings.push(\n      `Implied token price $${tokenPriceUSD.toExponential(2)} is very small. This may cause precision issues.`,\n    );\n  }\n\n  if (tokenPriceUSD > 1_000_000) {\n    warnings.push(\n      `Implied token price $${tokenPriceUSD.toLocaleString()} is very large. Verify token supply and market cap.`,\n    );\n  }\n\n  return { valid: warnings.length === 0, warnings };\n}\n\n// ============================================================================\n// Market cap ↔ curve virtual reserves\n// ============================================================================\n\n/**\n * Convert a market cap range (USD) to XYK curve virtual reserve parameters.\n *\n * Returns `{ curveVirtualBase, curveVirtualQuote }` for both the start (open)\n * and end (graduation) prices, ready to pass into `InitializeLaunchArgs`.\n *\n * `baseForCurve` is the number of base tokens allocated to the curve vault\n * (baseTotalSupply - baseForDistribution - baseForLiquidity). It determines\n * the correct initial spot price alongside the virtual reserves.\n *\n * `virtualBase` defaults to `baseForCurve`. A larger value gives finer price\n * granularity at the cost of a proportionally larger `curveVirtualQuote`.\n *\n * @example\n * const totalSupply = 1_000_000_000n * 10n ** 6n;\n * const { start, end } = marketCapToCurveParams({\n *   startMarketCapUSD: 100_000,\n *   endMarketCapUSD:   5_000_000,\n *   baseTotalSupply:   totalSupply,\n *   baseForCurve:      totalSupply,   // no distribution or liquidity allocation\n *   baseDecimals:      6,\n *   quoteDecimals:     9,             // SOL\n *   numerairePriceUSD: 150,\n * });\n * // Use start.curveVirtualBase / start.curveVirtualQuote in InitializeLaunchArgs\n */\nexport function marketCapToCurveParams(input: MarketCapToCurveParamsInput): {\n  start: CurveParams;\n  end: CurveParams;\n} {\n  const {\n    startMarketCapUSD,\n    endMarketCapUSD,\n    baseTotalSupply,\n    baseForCurve,\n    baseDecimals,\n    quoteDecimals,\n    numerairePriceUSD,\n    virtualBase,\n  } = input;\n\n  if (startMarketCapUSD <= 0)\n    throw new Error('startMarketCapUSD must be positive');\n  if (endMarketCapUSD <= 0) throw new Error('endMarketCapUSD must be positive');\n  if (startMarketCapUSD >= endMarketCapUSD) {\n    throw new Error('startMarketCapUSD must be less than endMarketCapUSD');\n  }\n  if (baseForCurve <= 0n) throw new Error('baseForCurve must be positive');\n  if (baseForCurve > baseTotalSupply)\n    throw new Error('baseForCurve cannot exceed baseTotalSupply');\n  if (numerairePriceUSD <= 0)\n    throw new Error('numerairePriceUSD must be positive');\n\n  const canonicalVirtualBase =\n    virtualBase !== undefined && virtualBase > 0n ? virtualBase : baseForCurve;\n\n  return {\n    start: _marketCapToCurveParams(\n      startMarketCapUSD,\n      baseTotalSupply,\n      baseForCurve,\n      baseDecimals,\n      quoteDecimals,\n      numerairePriceUSD,\n      canonicalVirtualBase,\n    ),\n    end: _marketCapToCurveParams(\n      endMarketCapUSD,\n      baseTotalSupply,\n      baseForCurve,\n      baseDecimals,\n      quoteDecimals,\n      numerairePriceUSD,\n      canonicalVirtualBase,\n    ),\n  };\n}\n\n/**\n * Convert a single market cap (USD) to XYK curve virtual reserve parameters.\n * Use `marketCapToCurveParams` for a full start/end range.\n */\nexport function marketCapToSingleCurveParams(\n  marketCapUSD: number,\n  baseTotalSupply: bigint,\n  baseForCurve: bigint,\n  baseDecimals: number,\n  quoteDecimals: number,\n  numerairePriceUSD: number,\n  virtualBase?: bigint,\n): CurveParams {\n  if (marketCapUSD <= 0) throw new Error('marketCapUSD must be positive');\n  if (baseForCurve <= 0n) throw new Error('baseForCurve must be positive');\n  if (baseForCurve > baseTotalSupply)\n    throw new Error('baseForCurve cannot exceed baseTotalSupply');\n  if (numerairePriceUSD <= 0)\n    throw new Error('numerairePriceUSD must be positive');\n\n  const canonicalVirtualBase =\n    virtualBase !== undefined && virtualBase > 0n ? virtualBase : baseForCurve;\n\n  return _marketCapToCurveParams(\n    marketCapUSD,\n    baseTotalSupply,\n    baseForCurve,\n    baseDecimals,\n    quoteDecimals,\n    numerairePriceUSD,\n    canonicalVirtualBase,\n  );\n}\n\n/**\n * Derive the current market cap (USD) from live XYK curve state.\n *\n * Pass the virtual reserves from the `Launch` account and the current token\n * vault balances (`baseReserve`, `quoteReserve`) to get the live spot price.\n *\n * @example\n * const launch = await fetchLaunch(connection, launchAddress);\n * const [baseVaultBalance, quoteVaultBalance] = await Promise.all([\n *   getTokenAccountBalance(connection, launch.baseVault),\n *   getTokenAccountBalance(connection, launch.quoteVault),\n * ]);\n * // baseReserve is the curve-available portion, excluding reserved allocations\n * const baseReserve = baseVaultBalance - launch.baseForDistribution - launch.baseForLiquidity;\n * const mcap = curveParamsToMarketCap({\n *   curveVirtualBase:  launch.curveVirtualBase,\n *   curveVirtualQuote: launch.curveVirtualQuote,\n *   baseReserve,\n *   quoteReserve:      quoteVaultBalance,\n *   baseTotalSupply:   launch.baseTotalSupply,\n *   baseDecimals:      6,\n *   quoteDecimals:     9,\n *   numerairePriceUSD: 150,\n * });\n */\nexport function curveParamsToMarketCap(\n  input: CurveParamsToMarketCapInput,\n): number {\n  const {\n    curveVirtualBase,\n    curveVirtualQuote,\n    baseReserve,\n    quoteReserve,\n    baseTotalSupply,\n    baseDecimals,\n    quoteDecimals,\n    numerairePriceUSD,\n  } = input;\n\n  if (curveVirtualBase <= 0n)\n    throw new Error('curveVirtualBase must be positive');\n  if (curveVirtualQuote <= 0n)\n    throw new Error('curveVirtualQuote must be positive');\n  if (baseReserve < 0n) throw new Error('baseReserve must be non-negative');\n  if (quoteReserve < 0n) throw new Error('quoteReserve must be non-negative');\n\n  const spotPriceUSD = _spotPriceUSD(\n    curveVirtualBase,\n    curveVirtualQuote,\n    baseReserve,\n    quoteReserve,\n    baseDecimals,\n    quoteDecimals,\n    numerairePriceUSD,\n  );\n\n  const supplyHuman = Number(baseTotalSupply) / 10 ** baseDecimals;\n  return spotPriceUSD * supplyHuman;\n}\n\n// ============================================================================\n// Internal\n// ============================================================================\n\nfunction _marketCapToCurveParams(\n  marketCapUSD: number,\n  baseTotalSupply: bigint,\n  baseForCurve: bigint,\n  baseDecimals: number,\n  quoteDecimals: number,\n  numerairePriceUSD: number,\n  curveVirtualBase: bigint,\n): CurveParams {\n  const tokenPriceUSD = marketCapToTokenPrice(\n    marketCapUSD,\n    baseTotalSupply,\n    baseDecimals,\n  );\n  const priceInNumeraire = tokenPriceUSD / numerairePriceUSD;\n\n  // Convert to raw units: quote_units / base_units\n  const decimalScale = 10 ** (quoteDecimals - baseDecimals);\n  const rawPriceQuotePerBase = priceInNumeraire * decimalScale;\n\n  // spot price = virtual_quote / (baseForCurve + virtual_base)\n  // => virtual_quote = rawPrice * (baseForCurve + virtual_base)\n  const effectiveDenominator = baseForCurve + curveVirtualBase;\n\n  const PRECISION = 1_000_000_000n;\n  const rawPriceScaled = BigInt(\n    Math.round(rawPriceQuotePerBase * Number(PRECISION)),\n  );\n  const curveVirtualQuote = (effectiveDenominator * rawPriceScaled) / PRECISION;\n\n  if (curveVirtualQuote <= 0n) {\n    throw new Error(\n      `Computed curveVirtualQuote is zero or negative for marketCap=$${marketCapUSD.toLocaleString()}. ` +\n        `Try a higher market cap or larger virtualBase.`,\n    );\n  }\n\n  return { curveVirtualBase, curveVirtualQuote };\n}\n\nfunction _spotPriceUSD(\n  curveVirtualBase: bigint,\n  curveVirtualQuote: bigint,\n  baseReserve: bigint,\n  quoteReserve: bigint,\n  baseDecimals: number,\n  quoteDecimals: number,\n  numerairePriceUSD: number,\n): number {\n  // spot price (quote/base) = (quoteReserve + virtualQuote) / (baseReserve + virtualBase)\n  const effBase = Number(baseReserve + curveVirtualBase);\n  const effQuote = Number(quoteReserve + curveVirtualQuote);\n  const rawRatio = effQuote / effBase;\n\n  // adjust for decimals → numeraire per token (human units)\n  const decimalScale = 10 ** (baseDecimals - quoteDecimals);\n  return rawRatio * decimalScale * numerairePriceUSD;\n}\n","/**\n * CPMM program error codes\n *\n * These correspond to the CpmmError enum in the on-chain program.\n * Anchor errors start at 6000 (0x1770).\n */\nexport enum CpmmErrorCode {\n  /** Unauthorized - caller lacks required authority */\n  Unauthorized = 6000,\n  /** Pool is currently locked (reentrancy protection) */\n  PoolLocked = 6001,\n  /** Invalid fee value (exceeds max or invalid range) */\n  InvalidFee = 6002,\n  /** Invalid fee split value (exceeds max or invalid range) */\n  InvalidFeeSplit = 6003,\n  /** Invalid trade direction (must be 0 or 1) */\n  InvalidTradeDirection = 6004,\n  /** Insufficient liquidity for operation */\n  InsufficientLiquidity = 6005,\n  /** Output amount less than minimum (slippage exceeded) */\n  SlippageExceeded = 6006,\n  /** Math operation overflowed */\n  MathOverflow = 6007,\n  /** Mints not in canonical order */\n  InvalidMintOrder = 6008,\n  /** Cannot create pool with identical tokens */\n  SameMintPair = 6009,\n  /** Vault account invalid or mismatch */\n  InvalidVault = 6010,\n  /** Position account invalid or mismatch */\n  InvalidPosition = 6011,\n  /** Cannot close position with non-zero shares or fees */\n  PositionNotEmpty = 6012,\n  /** Invalid route configuration */\n  InvalidRoute = 6013,\n  /** Not supported in v0.1 */\n  NotSupportedInV0_1 = 6014,\n  /** Oracle not initialized for this pool */\n  OracleNotInitialized = 6015,\n  /** Zero shares out */\n  ZeroSharesOut = 6016,\n  /** Hook rejected the operation */\n  HookRejected = 6017,\n  /** Hook CPI call failed */\n  HookCpiFailed = 6018,\n  /** Hook program account not provided */\n  HookProgramNotProvided = 6019,\n  /** Hook program account is not executable */\n  HookProgramNotExecutable = 6020,\n  /** Hook return data missing or wrong program id */\n  HookReturnDataMissing = 6021,\n  /** Hook return data invalid length or could not deserialize */\n  HookReturnDataInvalid = 6022,\n  /** Hook program not in allowlist */\n  HookNotAllowlisted = 6023,\n  /** Pool has zero shares (no liquidity) */\n  TotalSharesZero = 6024,\n  /** Amount cannot be zero */\n  AmountZero = 6025,\n  /** Pool is paused by admin */\n  Paused = 6026,\n  /** Internal invariant violation */\n  InvariantViolation = 6027,\n  /** Invalid mint address */\n  InvalidMint = 6028,\n  /** Invalid input parameter */\n  InvalidInput = 6029,\n  /** Reentrancy detected */\n  Reentrancy = 6030,\n  /** CPI calls into this program are forbidden */\n  CpiForbidden = 6031,\n  /** Protocol fee position must be claimed via collect_protocol_fees */\n  UseCollectProtocolFees = 6032,\n}\n\n/**\n * Human-readable error messages\n */\nexport const CPMM_ERROR_MESSAGES: Record<CpmmErrorCode, string> = {\n  [CpmmErrorCode.Unauthorized]: 'Unauthorized: Caller lacks required authority',\n  [CpmmErrorCode.PoolLocked]:\n    'Pool is currently locked (reentrancy protection)',\n  [CpmmErrorCode.InvalidFee]:\n    'Invalid fee value (exceeds max or invalid range)',\n  [CpmmErrorCode.InvalidFeeSplit]:\n    'Invalid fee split value (exceeds max or invalid range)',\n  [CpmmErrorCode.InvalidTradeDirection]:\n    'Invalid trade direction (must be 0 or 1)',\n  [CpmmErrorCode.InsufficientLiquidity]:\n    'Insufficient liquidity for this operation',\n  [CpmmErrorCode.SlippageExceeded]:\n    'Slippage exceeded: Output amount less than minimum',\n  [CpmmErrorCode.MathOverflow]: 'Math operation overflowed',\n  [CpmmErrorCode.InvalidMintOrder]: 'Token mints not in canonical order',\n  [CpmmErrorCode.SameMintPair]: 'Cannot create pool with identical tokens',\n  [CpmmErrorCode.InvalidVault]: 'Vault account is invalid or does not match',\n  [CpmmErrorCode.InvalidPosition]:\n    'Position account is invalid or does not match',\n  [CpmmErrorCode.PositionNotEmpty]:\n    'Cannot close position with non-zero shares or fees',\n  [CpmmErrorCode.InvalidRoute]: 'Invalid route configuration',\n  [CpmmErrorCode.NotSupportedInV0_1]: 'Not supported in v0.1',\n  [CpmmErrorCode.OracleNotInitialized]: 'Oracle not initialized for this pool',\n  [CpmmErrorCode.ZeroSharesOut]: 'Zero shares out',\n  [CpmmErrorCode.HookRejected]: 'Hook rejected',\n  [CpmmErrorCode.HookCpiFailed]: 'Hook CPI failed',\n  [CpmmErrorCode.HookProgramNotProvided]: 'Hook program account not provided',\n  [CpmmErrorCode.HookProgramNotExecutable]:\n    'Hook program account is not executable',\n  [CpmmErrorCode.HookReturnDataMissing]:\n    'Hook return data missing or wrong program id',\n  [CpmmErrorCode.HookReturnDataInvalid]:\n    'Hook return data invalid length or could not deserialize',\n  [CpmmErrorCode.HookNotAllowlisted]: 'Hook not allowlisted',\n  [CpmmErrorCode.TotalSharesZero]: 'Pool has zero shares (no liquidity)',\n  [CpmmErrorCode.AmountZero]: 'Amount cannot be zero',\n  [CpmmErrorCode.Paused]: 'Pool is paused by admin',\n  [CpmmErrorCode.InvariantViolation]: 'Internal invariant violation',\n  [CpmmErrorCode.InvalidMint]: 'Invalid mint address',\n  [CpmmErrorCode.InvalidInput]: 'Invalid input parameter',\n  [CpmmErrorCode.Reentrancy]: 'Reentrancy detected',\n  [CpmmErrorCode.CpiForbidden]: 'CPI calls into this program are forbidden',\n  [CpmmErrorCode.UseCollectProtocolFees]:\n    'Protocol fee position must be claimed via collect_protocol_fees',\n};\n\n/**\n * Custom error class for CPMM program errors\n */\nexport class CpmmError extends Error {\n  constructor(\n    public readonly code: CpmmErrorCode,\n    public readonly logs?: string[],\n  ) {\n    super(CPMM_ERROR_MESSAGES[code] || `Unknown CPMM error: ${code}`);\n    this.name = 'CpmmError';\n  }\n\n  /**\n   * Get the error code name\n   */\n  get codeName(): string {\n    return CpmmErrorCode[this.code] || 'Unknown';\n  }\n}\n\n/**\n * Parse error code from transaction logs\n */\nexport function parseErrorFromLogs(logs: string[]): CpmmError | null {\n  // Look for Anchor error pattern: \"Program log: AnchorError ...\"\n  // or custom error pattern: \"Program log: Error Code: ...\"\n  for (const log of logs) {\n    // Pattern 1: Anchor error with code\n    const anchorMatch = log.match(\n      /AnchorError.*Error Code:\\s*(\\w+)\\.\\s*Error Number:\\s*(\\d+)/,\n    );\n    if (anchorMatch) {\n      const errorNumber = parseInt(anchorMatch[2], 10);\n      if (errorNumber >= 6000 && errorNumber <= 6032) {\n        return new CpmmError(errorNumber as CpmmErrorCode, logs);\n      }\n    }\n\n    // Pattern 2: Error number in hex\n    const hexMatch = log.match(/Error Number:\\s*0x([0-9a-fA-F]+)/);\n    if (hexMatch) {\n      const errorNumber = parseInt(hexMatch[1], 16);\n      if (errorNumber >= 6000 && errorNumber <= 6032) {\n        return new CpmmError(errorNumber as CpmmErrorCode, logs);\n      }\n    }\n\n    // Pattern 3: Custom error message\n    const customMatch = log.match(/Error Message:\\s*(.+)/);\n    if (customMatch) {\n      const message = customMatch[1].toLowerCase();\n      // Try to match message to error code\n      for (const [code, msg] of Object.entries(CPMM_ERROR_MESSAGES)) {\n        if (\n          msg.toLowerCase().includes(message) ||\n          message.includes(msg.toLowerCase())\n        ) {\n          return new CpmmError(parseInt(code) as CpmmErrorCode, logs);\n        }\n      }\n    }\n  }\n\n  return null;\n}\n\n/**\n * Check if an error code is a CPMM error\n */\nexport function isCpmmError(code: number): code is CpmmErrorCode {\n  return code >= 6000 && code <= 6032;\n}\n\n/**\n * Get error message from code\n */\nexport function getErrorMessage(code: number): string {\n  if (isCpmmError(code)) {\n    return CPMM_ERROR_MESSAGES[code];\n  }\n  return `Unknown error code: ${code}`;\n}\n","import type { Address, Instruction, TransactionSigner } from '@solana/kit';\nimport { createNoopSigner } from '@solana/kit';\nimport { CPMM_PROGRAM_ADDRESS } from '../generated/cpmm/programs/index.js';\nimport { getSwapExactInInstruction } from '../generated/cpmm/instructions/index.js';\nimport { TOKEN_PROGRAM_ADDRESS } from '../core/constants.js';\nimport type { TradeDirection } from '../core/types.js';\nimport {\n  createReadonlyRemainingAccountMeta,\n  type RemainingAccount,\n} from '../core/accounts.js';\n\n/**\n * Helper to create swap instruction with simplified parameters\n */\nexport function createSwapInstruction(params: {\n  config: Address;\n  pool: Address;\n  authority: Address;\n  vault0: Address;\n  vault1: Address;\n  token0Mint: Address;\n  token1Mint: Address;\n  userToken0: Address;\n  userToken1: Address;\n  user: Address | TransactionSigner;\n  amountIn: bigint;\n  minAmountOut: bigint;\n  tradeDirection: TradeDirection;\n  oracle?: Address;\n  remainingAccounts?: RemainingAccount[];\n  updateOracle?: boolean;\n  token0Program?: Address;\n  token1Program?: Address;\n  tokenProgram?: Address;\n  programId?: Address;\n}): Instruction {\n  const {\n    config,\n    pool,\n    authority,\n    vault0,\n    vault1,\n    token0Mint,\n    token1Mint,\n    userToken0,\n    userToken1,\n    user,\n    amountIn,\n    minAmountOut,\n    tradeDirection,\n    oracle,\n    remainingAccounts = [],\n    updateOracle = false,\n    token0Program,\n    token1Program,\n    tokenProgram,\n    programId = CPMM_PROGRAM_ADDRESS,\n  } = params;\n  const trader = typeof user === 'string' ? createNoopSigner(user) : user;\n\n  // Determine vaults and user accounts based on trade direction\n  const [vaultIn, vaultOut] =\n    tradeDirection === 0 ? [vault0, vault1] : [vault1, vault0];\n  const [userIn, userOut] =\n    tradeDirection === 0 ? [userToken0, userToken1] : [userToken1, userToken0];\n\n  const instruction = getSwapExactInInstruction(\n    {\n      config,\n      pool,\n      authority,\n      vaultIn,\n      vaultOut,\n      token0Mint,\n      token1Mint,\n      userIn,\n      userOut,\n      trader,\n      token0Program: token0Program ?? tokenProgram ?? TOKEN_PROGRAM_ADDRESS,\n      token1Program: token1Program ?? tokenProgram ?? TOKEN_PROGRAM_ADDRESS,\n      oracle,\n      amountIn,\n      minAmountOut,\n      tradeDirection,\n      updateOracle,\n    },\n    { programAddress: programId },\n  );\n\n  return {\n    ...instruction,\n    accounts: [\n      ...(instruction.accounts ?? []),\n      ...remainingAccounts.map(createReadonlyRemainingAccountMeta),\n    ],\n  };\n}\n\nexport const MAX_FEE_AMOUNT = BigInt('18446744073709551615');\n","/**\n * Config fetching and utilities for the CPMM SDK\n */\n\nimport type { Address } from '@solana/kit';\nimport type { Rpc, GetAccountInfoApi } from '@solana/kit';\nimport type { AmmConfig } from '../core/types.js';\nimport { decodeAmmConfig } from '../core/codecs.js';\nimport { CPMM_PROGRAM_ID } from '../core/constants.js';\nimport { getConfigAddress } from '../core/pda.js';\nimport { base64ToBytes } from '../core/accounts.js';\n\n/**\n * Fetch and decode the AmmConfig account\n *\n * @param rpc - Solana RPC client\n * @param programId - Program ID (defaults to CPMM program)\n * @param commitment - Optional commitment level\n * @returns Decoded config data or null if not found\n */\nexport async function fetchConfig(\n  rpc: Rpc<GetAccountInfoApi>,\n  programId: Address = CPMM_PROGRAM_ID,\n  commitment?: 'processed' | 'confirmed' | 'finalized',\n): Promise<AmmConfig | null> {\n  const [configAddress] = await getConfigAddress(programId);\n  const response = await rpc\n    .getAccountInfo(configAddress, {\n      encoding: 'base64',\n      commitment,\n    })\n    .send();\n\n  if (!response.value) {\n    return null;\n  }\n\n  return decodeAmmConfig(base64ToBytes(response.value.data[0]));\n}\n\n/**\n * Fetch config with its PDA address\n */\nexport async function fetchConfigWithAddress(\n  rpc: Rpc<GetAccountInfoApi>,\n  programId: Address = CPMM_PROGRAM_ID,\n  commitment?: 'processed' | 'confirmed' | 'finalized',\n): Promise<{ address: Address; account: AmmConfig } | null> {\n  const [configAddress] = await getConfigAddress(programId);\n  const account = await fetchConfig(rpc, programId, commitment);\n  if (!account) {\n    return null;\n  }\n  return { address: configAddress, account };\n}\n","export * from '../generated/dopplerLaunchHookV1/index.js';\nexport * from './config.js';\nexport * from './constants.js';\nexport * from './gate.js';\nexport * from './payload.js';\nexport * from './pda.js';\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  assertAccountExists,\n  assertAccountsExist,\n  combineCodec,\n  decodeAccount,\n  fetchEncodedAccount,\n  fetchEncodedAccounts,\n  fixDecoderSize,\n  fixEncoderSize,\n  getAddressDecoder,\n  getAddressEncoder,\n  getArrayDecoder,\n  getArrayEncoder,\n  getBytesDecoder,\n  getBytesEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU8Decoder,\n  getU8Encoder,\n  transformEncoder,\n  type Account,\n  type Address,\n  type EncodedAccount,\n  type FetchAccountConfig,\n  type FetchAccountsConfig,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n  type MaybeAccount,\n  type MaybeEncodedAccount,\n  type ReadonlyUint8Array,\n} from '@solana/kit';\n\nexport const COSIGNER_CONFIG_DISCRIMINATOR = new Uint8Array([\n  133, 227, 177, 74, 145, 74, 247, 183,\n]);\n\nexport function getCosignerConfigDiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(\n    COSIGNER_CONFIG_DISCRIMINATOR,\n  );\n}\n\nexport type CosignerConfig = {\n  discriminator: ReadonlyUint8Array;\n  adminAuthority: Address;\n  cosignerCount: number;\n  bump: number;\n  version: number;\n  reserved: ReadonlyUint8Array;\n  cosigners: Array<Address>;\n};\n\nexport type CosignerConfigArgs = {\n  adminAuthority: Address;\n  cosignerCount: number;\n  bump: number;\n  version: number;\n  reserved: ReadonlyUint8Array;\n  cosigners: Array<Address>;\n};\n\n/** Gets the encoder for {@link CosignerConfigArgs} account data. */\nexport function getCosignerConfigEncoder(): FixedSizeEncoder<CosignerConfigArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['adminAuthority', getAddressEncoder()],\n      ['cosignerCount', getU8Encoder()],\n      ['bump', getU8Encoder()],\n      ['version', getU8Encoder()],\n      ['reserved', fixEncoderSize(getBytesEncoder(), 37)],\n      ['cosigners', getArrayEncoder(getAddressEncoder(), { size: 32 })],\n    ]),\n    (value) => ({ ...value, discriminator: COSIGNER_CONFIG_DISCRIMINATOR }),\n  );\n}\n\n/** Gets the decoder for {@link CosignerConfig} account data. */\nexport function getCosignerConfigDecoder(): FixedSizeDecoder<CosignerConfig> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['adminAuthority', getAddressDecoder()],\n    ['cosignerCount', getU8Decoder()],\n    ['bump', getU8Decoder()],\n    ['version', getU8Decoder()],\n    ['reserved', fixDecoderSize(getBytesDecoder(), 37)],\n    ['cosigners', getArrayDecoder(getAddressDecoder(), { size: 32 })],\n  ]);\n}\n\n/** Gets the codec for {@link CosignerConfig} account data. */\nexport function getCosignerConfigCodec(): FixedSizeCodec<\n  CosignerConfigArgs,\n  CosignerConfig\n> {\n  return combineCodec(getCosignerConfigEncoder(), getCosignerConfigDecoder());\n}\n\nexport function decodeCosignerConfig<TAddress extends string = string>(\n  encodedAccount: EncodedAccount<TAddress>,\n): Account<CosignerConfig, TAddress>;\nexport function decodeCosignerConfig<TAddress extends string = string>(\n  encodedAccount: MaybeEncodedAccount<TAddress>,\n): MaybeAccount<CosignerConfig, TAddress>;\nexport function decodeCosignerConfig<TAddress extends string = string>(\n  encodedAccount: EncodedAccount<TAddress> | MaybeEncodedAccount<TAddress>,\n): Account<CosignerConfig, TAddress> | MaybeAccount<CosignerConfig, TAddress> {\n  return decodeAccount(\n    encodedAccount as MaybeEncodedAccount<TAddress>,\n    getCosignerConfigDecoder(),\n  );\n}\n\nexport async function fetchCosignerConfig<TAddress extends string = string>(\n  rpc: Parameters<typeof fetchEncodedAccount>[0],\n  address: Address<TAddress>,\n  config?: FetchAccountConfig,\n): Promise<Account<CosignerConfig, TAddress>> {\n  const maybeAccount = await fetchMaybeCosignerConfig(rpc, address, config);\n  assertAccountExists(maybeAccount);\n  return maybeAccount;\n}\n\nexport async function fetchMaybeCosignerConfig<\n  TAddress extends string = string,\n>(\n  rpc: Parameters<typeof fetchEncodedAccount>[0],\n  address: Address<TAddress>,\n  config?: FetchAccountConfig,\n): Promise<MaybeAccount<CosignerConfig, TAddress>> {\n  const maybeAccount = await fetchEncodedAccount(rpc, address, config);\n  return decodeCosignerConfig(maybeAccount);\n}\n\nexport async function fetchAllCosignerConfig(\n  rpc: Parameters<typeof fetchEncodedAccounts>[0],\n  addresses: Array<Address>,\n  config?: FetchAccountsConfig,\n): Promise<Account<CosignerConfig>[]> {\n  const maybeAccounts = await fetchAllMaybeCosignerConfig(\n    rpc,\n    addresses,\n    config,\n  );\n  assertAccountsExist(maybeAccounts);\n  return maybeAccounts;\n}\n\nexport async function fetchAllMaybeCosignerConfig(\n  rpc: Parameters<typeof fetchEncodedAccounts>[0],\n  addresses: Array<Address>,\n  config?: FetchAccountsConfig,\n): Promise<MaybeAccount<CosignerConfig>[]> {\n  const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config);\n  return maybeAccounts.map((maybeAccount) =>\n    decodeCosignerConfig(maybeAccount),\n  );\n}\n\nexport function getCosignerConfigSize(): number {\n  return 1104;\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getAddressDecoder,\n  getAddressEncoder,\n  getBytesDecoder,\n  getBytesEncoder,\n  getProgramDerivedAddress,\n  getStructDecoder,\n  getStructEncoder,\n  SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS,\n  SolanaError,\n  transformEncoder,\n  type AccountMeta,\n  type AccountSignerMeta,\n  type Address,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n  type Instruction,\n  type InstructionWithAccounts,\n  type InstructionWithData,\n  type ReadonlySignerAccount,\n  type ReadonlyUint8Array,\n  type TransactionSigner,\n  type WritableAccount,\n} from '@solana/kit';\nimport {\n  getAccountMetaFactory,\n  type ResolvedInstructionAccount,\n} from '@solana/program-client-core';\nimport { DOPPLER_LAUNCH_HOOK_V1_PROGRAM_ADDRESS } from '../programs';\n\nexport const ADD_COSIGNER_DISCRIMINATOR = new Uint8Array([\n  17, 34, 183, 119, 202, 255, 218, 233,\n]);\n\nexport function getAddCosignerDiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(\n    ADD_COSIGNER_DISCRIMINATOR,\n  );\n}\n\nexport type AddCosignerInstruction<\n  TProgram extends string = typeof DOPPLER_LAUNCH_HOOK_V1_PROGRAM_ADDRESS,\n  TAccountAdminAuthority extends string | AccountMeta<string> = string,\n  TAccountConfig extends string | AccountMeta<string> = string,\n  TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n  InstructionWithData<ReadonlyUint8Array> &\n  InstructionWithAccounts<\n    [\n      TAccountAdminAuthority extends string\n        ? ReadonlySignerAccount<TAccountAdminAuthority> &\n            AccountSignerMeta<TAccountAdminAuthority>\n        : TAccountAdminAuthority,\n      TAccountConfig extends string\n        ? WritableAccount<TAccountConfig>\n        : TAccountConfig,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type AddCosignerInstructionData = {\n  discriminator: ReadonlyUint8Array;\n  cosigner: Address;\n};\n\nexport type AddCosignerInstructionDataArgs = { cosigner: Address };\n\nexport function getAddCosignerInstructionDataEncoder(): FixedSizeEncoder<AddCosignerInstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['cosigner', getAddressEncoder()],\n    ]),\n    (value) => ({ ...value, discriminator: ADD_COSIGNER_DISCRIMINATOR }),\n  );\n}\n\nexport function getAddCosignerInstructionDataDecoder(): FixedSizeDecoder<AddCosignerInstructionData> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['cosigner', getAddressDecoder()],\n  ]);\n}\n\nexport function getAddCosignerInstructionDataCodec(): FixedSizeCodec<\n  AddCosignerInstructionDataArgs,\n  AddCosignerInstructionData\n> {\n  return combineCodec(\n    getAddCosignerInstructionDataEncoder(),\n    getAddCosignerInstructionDataDecoder(),\n  );\n}\n\nexport type AddCosignerAsyncInput<\n  TAccountAdminAuthority extends string = string,\n  TAccountConfig extends string = string,\n> = {\n  adminAuthority: TransactionSigner<TAccountAdminAuthority>;\n  config?: Address<TAccountConfig>;\n  cosigner: AddCosignerInstructionDataArgs['cosigner'];\n};\n\nexport async function getAddCosignerInstructionAsync<\n  TAccountAdminAuthority extends string,\n  TAccountConfig extends string,\n  TProgramAddress extends Address =\n    typeof DOPPLER_LAUNCH_HOOK_V1_PROGRAM_ADDRESS,\n>(\n  input: AddCosignerAsyncInput<TAccountAdminAuthority, TAccountConfig>,\n  config?: { programAddress?: TProgramAddress },\n): Promise<\n  AddCosignerInstruction<\n    TProgramAddress,\n    TAccountAdminAuthority,\n    TAccountConfig\n  >\n> {\n  // Program address.\n  const programAddress =\n    config?.programAddress ?? DOPPLER_LAUNCH_HOOK_V1_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    adminAuthority: { value: input.adminAuthority ?? null, isWritable: false },\n    config: { value: input.config ?? null, isWritable: true },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedInstructionAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolve default values.\n  if (!accounts.config.value) {\n    accounts.config.value = await getProgramDerivedAddress({\n      programAddress,\n      seeds: [\n        getBytesEncoder().encode(\n          new Uint8Array([\n            99, 111, 115, 105, 103, 110, 101, 114, 95, 104, 111, 111, 107, 95,\n            99, 111, 110, 102, 105, 103,\n          ]),\n        ),\n      ],\n    });\n  }\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta('adminAuthority', accounts.adminAuthority),\n      getAccountMeta('config', accounts.config),\n    ],\n    data: getAddCosignerInstructionDataEncoder().encode(\n      args as AddCosignerInstructionDataArgs,\n    ),\n    programAddress,\n  } as AddCosignerInstruction<\n    TProgramAddress,\n    TAccountAdminAuthority,\n    TAccountConfig\n  >);\n}\n\nexport type AddCosignerInput<\n  TAccountAdminAuthority extends string = string,\n  TAccountConfig extends string = string,\n> = {\n  adminAuthority: TransactionSigner<TAccountAdminAuthority>;\n  config: Address<TAccountConfig>;\n  cosigner: AddCosignerInstructionDataArgs['cosigner'];\n};\n\nexport function getAddCosignerInstruction<\n  TAccountAdminAuthority extends string,\n  TAccountConfig extends string,\n  TProgramAddress extends Address =\n    typeof DOPPLER_LAUNCH_HOOK_V1_PROGRAM_ADDRESS,\n>(\n  input: AddCosignerInput<TAccountAdminAuthority, TAccountConfig>,\n  config?: { programAddress?: TProgramAddress },\n): AddCosignerInstruction<\n  TProgramAddress,\n  TAccountAdminAuthority,\n  TAccountConfig\n> {\n  // Program address.\n  const programAddress =\n    config?.programAddress ?? DOPPLER_LAUNCH_HOOK_V1_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    adminAuthority: { value: input.adminAuthority ?? null, isWritable: false },\n    config: { value: input.config ?? null, isWritable: true },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedInstructionAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta('adminAuthority', accounts.adminAuthority),\n      getAccountMeta('config', accounts.config),\n    ],\n    data: getAddCosignerInstructionDataEncoder().encode(\n      args as AddCosignerInstructionDataArgs,\n    ),\n    programAddress,\n  } as AddCosignerInstruction<\n    TProgramAddress,\n    TAccountAdminAuthority,\n    TAccountConfig\n  >);\n}\n\nexport type ParsedAddCosignerInstruction<\n  TProgram extends string = typeof DOPPLER_LAUNCH_HOOK_V1_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    adminAuthority: TAccountMetas[0];\n    config: TAccountMetas[1];\n  };\n  data: AddCosignerInstructionData;\n};\n\nexport function parseAddCosignerInstruction<\n  TProgram extends string,\n  TAccountMetas extends readonly AccountMeta[],\n>(\n  instruction: Instruction<TProgram> &\n    InstructionWithAccounts<TAccountMetas> &\n    InstructionWithData<ReadonlyUint8Array>,\n): ParsedAddCosignerInstruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 2) {\n    throw new SolanaError(\n      SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS,\n      {\n        actualAccountMetas: instruction.accounts.length,\n        expectedAccountMetas: 2,\n      },\n    );\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: { adminAuthority: getNextAccount(), config: getNextAccount() },\n    data: getAddCosignerInstructionDataDecoder().decode(instruction.data),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getAddressDecoder,\n  getAddressEncoder,\n  getArrayDecoder,\n  getArrayEncoder,\n  getBytesDecoder,\n  getBytesEncoder,\n  getProgramDerivedAddress,\n  getStructDecoder,\n  getStructEncoder,\n  SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS,\n  SolanaError,\n  transformEncoder,\n  type AccountMeta,\n  type AccountSignerMeta,\n  type Address,\n  type Codec,\n  type Decoder,\n  type Encoder,\n  type Instruction,\n  type InstructionWithAccounts,\n  type InstructionWithData,\n  type ReadonlyAccount,\n  type ReadonlySignerAccount,\n  type ReadonlyUint8Array,\n  type TransactionSigner,\n  type WritableAccount,\n  type WritableSignerAccount,\n} from '@solana/kit';\nimport {\n  getAccountMetaFactory,\n  type ResolvedInstructionAccount,\n} from '@solana/program-client-core';\nimport { DOPPLER_LAUNCH_HOOK_V1_PROGRAM_ADDRESS } from '../programs';\n\nexport const INITIALIZE_CONFIG_DISCRIMINATOR = new Uint8Array([\n  208, 127, 21, 1, 194, 190, 196, 70,\n]);\n\nexport function getInitializeConfigDiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(\n    INITIALIZE_CONFIG_DISCRIMINATOR,\n  );\n}\n\nexport type InitializeConfigInstruction<\n  TProgram extends string = typeof DOPPLER_LAUNCH_HOOK_V1_PROGRAM_ADDRESS,\n  TAccountPayer extends string | AccountMeta<string> = string,\n  TAccountAdminAuthority extends string | AccountMeta<string> = string,\n  TAccountConfig extends string | AccountMeta<string> = string,\n  TAccountProgramData extends string | AccountMeta<string> = string,\n  TAccountSystemProgram extends string | AccountMeta<string> =\n    '11111111111111111111111111111111',\n  TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n  InstructionWithData<ReadonlyUint8Array> &\n  InstructionWithAccounts<\n    [\n      TAccountPayer extends string\n        ? WritableSignerAccount<TAccountPayer> &\n            AccountSignerMeta<TAccountPayer>\n        : TAccountPayer,\n      TAccountAdminAuthority extends string\n        ? ReadonlySignerAccount<TAccountAdminAuthority> &\n            AccountSignerMeta<TAccountAdminAuthority>\n        : TAccountAdminAuthority,\n      TAccountConfig extends string\n        ? WritableAccount<TAccountConfig>\n        : TAccountConfig,\n      TAccountProgramData extends string\n        ? ReadonlyAccount<TAccountProgramData>\n        : TAccountProgramData,\n      TAccountSystemProgram extends string\n        ? ReadonlyAccount<TAccountSystemProgram>\n        : TAccountSystemProgram,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type InitializeConfigInstructionData = {\n  discriminator: ReadonlyUint8Array;\n  cosigners: Array<Address>;\n};\n\nexport type InitializeConfigInstructionDataArgs = { cosigners: Array<Address> };\n\nexport function getInitializeConfigInstructionDataEncoder(): Encoder<InitializeConfigInstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['cosigners', getArrayEncoder(getAddressEncoder())],\n    ]),\n    (value) => ({ ...value, discriminator: INITIALIZE_CONFIG_DISCRIMINATOR }),\n  );\n}\n\nexport function getInitializeConfigInstructionDataDecoder(): Decoder<InitializeConfigInstructionData> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['cosigners', getArrayDecoder(getAddressDecoder())],\n  ]);\n}\n\nexport function getInitializeConfigInstructionDataCodec(): Codec<\n  InitializeConfigInstructionDataArgs,\n  InitializeConfigInstructionData\n> {\n  return combineCodec(\n    getInitializeConfigInstructionDataEncoder(),\n    getInitializeConfigInstructionDataDecoder(),\n  );\n}\n\nexport type InitializeConfigAsyncInput<\n  TAccountPayer extends string = string,\n  TAccountAdminAuthority extends string = string,\n  TAccountConfig extends string = string,\n  TAccountProgramData extends string = string,\n  TAccountSystemProgram extends string = string,\n> = {\n  payer: TransactionSigner<TAccountPayer>;\n  adminAuthority: TransactionSigner<TAccountAdminAuthority>;\n  config?: Address<TAccountConfig>;\n  programData: Address<TAccountProgramData>;\n  systemProgram?: Address<TAccountSystemProgram>;\n  cosigners: InitializeConfigInstructionDataArgs['cosigners'];\n};\n\nexport async function getInitializeConfigInstructionAsync<\n  TAccountPayer extends string,\n  TAccountAdminAuthority extends string,\n  TAccountConfig extends string,\n  TAccountProgramData extends string,\n  TAccountSystemProgram extends string,\n  TProgramAddress extends Address =\n    typeof DOPPLER_LAUNCH_HOOK_V1_PROGRAM_ADDRESS,\n>(\n  input: InitializeConfigAsyncInput<\n    TAccountPayer,\n    TAccountAdminAuthority,\n    TAccountConfig,\n    TAccountProgramData,\n    TAccountSystemProgram\n  >,\n  config?: { programAddress?: TProgramAddress },\n): Promise<\n  InitializeConfigInstruction<\n    TProgramAddress,\n    TAccountPayer,\n    TAccountAdminAuthority,\n    TAccountConfig,\n    TAccountProgramData,\n    TAccountSystemProgram\n  >\n> {\n  // Program address.\n  const programAddress =\n    config?.programAddress ?? DOPPLER_LAUNCH_HOOK_V1_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    payer: { value: input.payer ?? null, isWritable: true },\n    adminAuthority: { value: input.adminAuthority ?? null, isWritable: false },\n    config: { value: input.config ?? null, isWritable: true },\n    programData: { value: input.programData ?? null, isWritable: false },\n    systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedInstructionAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolve default values.\n  if (!accounts.config.value) {\n    accounts.config.value = await getProgramDerivedAddress({\n      programAddress,\n      seeds: [\n        getBytesEncoder().encode(\n          new Uint8Array([\n            99, 111, 115, 105, 103, 110, 101, 114, 95, 104, 111, 111, 107, 95,\n            99, 111, 110, 102, 105, 103,\n          ]),\n        ),\n      ],\n    });\n  }\n  if (!accounts.systemProgram.value) {\n    accounts.systemProgram.value =\n      '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n  }\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta('payer', accounts.payer),\n      getAccountMeta('adminAuthority', accounts.adminAuthority),\n      getAccountMeta('config', accounts.config),\n      getAccountMeta('programData', accounts.programData),\n      getAccountMeta('systemProgram', accounts.systemProgram),\n    ],\n    data: getInitializeConfigInstructionDataEncoder().encode(\n      args as InitializeConfigInstructionDataArgs,\n    ),\n    programAddress,\n  } as InitializeConfigInstruction<\n    TProgramAddress,\n    TAccountPayer,\n    TAccountAdminAuthority,\n    TAccountConfig,\n    TAccountProgramData,\n    TAccountSystemProgram\n  >);\n}\n\nexport type InitializeConfigInput<\n  TAccountPayer extends string = string,\n  TAccountAdminAuthority extends string = string,\n  TAccountConfig extends string = string,\n  TAccountProgramData extends string = string,\n  TAccountSystemProgram extends string = string,\n> = {\n  payer: TransactionSigner<TAccountPayer>;\n  adminAuthority: TransactionSigner<TAccountAdminAuthority>;\n  config: Address<TAccountConfig>;\n  programData: Address<TAccountProgramData>;\n  systemProgram?: Address<TAccountSystemProgram>;\n  cosigners: InitializeConfigInstructionDataArgs['cosigners'];\n};\n\nexport function getInitializeConfigInstruction<\n  TAccountPayer extends string,\n  TAccountAdminAuthority extends string,\n  TAccountConfig extends string,\n  TAccountProgramData extends string,\n  TAccountSystemProgram extends string,\n  TProgramAddress extends Address =\n    typeof DOPPLER_LAUNCH_HOOK_V1_PROGRAM_ADDRESS,\n>(\n  input: InitializeConfigInput<\n    TAccountPayer,\n    TAccountAdminAuthority,\n    TAccountConfig,\n    TAccountProgramData,\n    TAccountSystemProgram\n  >,\n  config?: { programAddress?: TProgramAddress },\n): InitializeConfigInstruction<\n  TProgramAddress,\n  TAccountPayer,\n  TAccountAdminAuthority,\n  TAccountConfig,\n  TAccountProgramData,\n  TAccountSystemProgram\n> {\n  // Program address.\n  const programAddress =\n    config?.programAddress ?? DOPPLER_LAUNCH_HOOK_V1_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    payer: { value: input.payer ?? null, isWritable: true },\n    adminAuthority: { value: input.adminAuthority ?? null, isWritable: false },\n    config: { value: input.config ?? null, isWritable: true },\n    programData: { value: input.programData ?? null, isWritable: false },\n    systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedInstructionAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolve default values.\n  if (!accounts.systemProgram.value) {\n    accounts.systemProgram.value =\n      '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n  }\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta('payer', accounts.payer),\n      getAccountMeta('adminAuthority', accounts.adminAuthority),\n      getAccountMeta('config', accounts.config),\n      getAccountMeta('programData', accounts.programData),\n      getAccountMeta('systemProgram', accounts.systemProgram),\n    ],\n    data: getInitializeConfigInstructionDataEncoder().encode(\n      args as InitializeConfigInstructionDataArgs,\n    ),\n    programAddress,\n  } as InitializeConfigInstruction<\n    TProgramAddress,\n    TAccountPayer,\n    TAccountAdminAuthority,\n    TAccountConfig,\n    TAccountProgramData,\n    TAccountSystemProgram\n  >);\n}\n\nexport type ParsedInitializeConfigInstruction<\n  TProgram extends string = typeof DOPPLER_LAUNCH_HOOK_V1_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    payer: TAccountMetas[0];\n    adminAuthority: TAccountMetas[1];\n    config: TAccountMetas[2];\n    programData: TAccountMetas[3];\n    systemProgram: TAccountMetas[4];\n  };\n  data: InitializeConfigInstructionData;\n};\n\nexport function parseInitializeConfigInstruction<\n  TProgram extends string,\n  TAccountMetas extends readonly AccountMeta[],\n>(\n  instruction: Instruction<TProgram> &\n    InstructionWithAccounts<TAccountMetas> &\n    InstructionWithData<ReadonlyUint8Array>,\n): ParsedInitializeConfigInstruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 5) {\n    throw new SolanaError(\n      SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS,\n      {\n        actualAccountMetas: instruction.accounts.length,\n        expectedAccountMetas: 5,\n      },\n    );\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: {\n      payer: getNextAccount(),\n      adminAuthority: getNextAccount(),\n      config: getNextAccount(),\n      programData: getNextAccount(),\n      systemProgram: getNextAccount(),\n    },\n    data: getInitializeConfigInstructionDataDecoder().decode(instruction.data),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getAddressDecoder,\n  getAddressEncoder,\n  getBytesDecoder,\n  getBytesEncoder,\n  getProgramDerivedAddress,\n  getStructDecoder,\n  getStructEncoder,\n  SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS,\n  SolanaError,\n  transformEncoder,\n  type AccountMeta,\n  type AccountSignerMeta,\n  type Address,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n  type Instruction,\n  type InstructionWithAccounts,\n  type InstructionWithData,\n  type ReadonlySignerAccount,\n  type ReadonlyUint8Array,\n  type TransactionSigner,\n  type WritableAccount,\n} from '@solana/kit';\nimport {\n  getAccountMetaFactory,\n  type ResolvedInstructionAccount,\n} from '@solana/program-client-core';\nimport { DOPPLER_LAUNCH_HOOK_V1_PROGRAM_ADDRESS } from '../programs';\n\nexport const REMOVE_COSIGNER_DISCRIMINATOR = new Uint8Array([\n  174, 11, 171, 252, 179, 99, 220, 27,\n]);\n\nexport function getRemoveCosignerDiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(\n    REMOVE_COSIGNER_DISCRIMINATOR,\n  );\n}\n\nexport type RemoveCosignerInstruction<\n  TProgram extends string = typeof DOPPLER_LAUNCH_HOOK_V1_PROGRAM_ADDRESS,\n  TAccountAdminAuthority extends string | AccountMeta<string> = string,\n  TAccountConfig extends string | AccountMeta<string> = string,\n  TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n  InstructionWithData<ReadonlyUint8Array> &\n  InstructionWithAccounts<\n    [\n      TAccountAdminAuthority extends string\n        ? ReadonlySignerAccount<TAccountAdminAuthority> &\n            AccountSignerMeta<TAccountAdminAuthority>\n        : TAccountAdminAuthority,\n      TAccountConfig extends string\n        ? WritableAccount<TAccountConfig>\n        : TAccountConfig,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type RemoveCosignerInstructionData = {\n  discriminator: ReadonlyUint8Array;\n  cosigner: Address;\n};\n\nexport type RemoveCosignerInstructionDataArgs = { cosigner: Address };\n\nexport function getRemoveCosignerInstructionDataEncoder(): FixedSizeEncoder<RemoveCosignerInstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['cosigner', getAddressEncoder()],\n    ]),\n    (value) => ({ ...value, discriminator: REMOVE_COSIGNER_DISCRIMINATOR }),\n  );\n}\n\nexport function getRemoveCosignerInstructionDataDecoder(): FixedSizeDecoder<RemoveCosignerInstructionData> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['cosigner', getAddressDecoder()],\n  ]);\n}\n\nexport function getRemoveCosignerInstructionDataCodec(): FixedSizeCodec<\n  RemoveCosignerInstructionDataArgs,\n  RemoveCosignerInstructionData\n> {\n  return combineCodec(\n    getRemoveCosignerInstructionDataEncoder(),\n    getRemoveCosignerInstructionDataDecoder(),\n  );\n}\n\nexport type RemoveCosignerAsyncInput<\n  TAccountAdminAuthority extends string = string,\n  TAccountConfig extends string = string,\n> = {\n  adminAuthority: TransactionSigner<TAccountAdminAuthority>;\n  config?: Address<TAccountConfig>;\n  cosigner: RemoveCosignerInstructionDataArgs['cosigner'];\n};\n\nexport async function getRemoveCosignerInstructionAsync<\n  TAccountAdminAuthority extends string,\n  TAccountConfig extends string,\n  TProgramAddress extends Address =\n    typeof DOPPLER_LAUNCH_HOOK_V1_PROGRAM_ADDRESS,\n>(\n  input: RemoveCosignerAsyncInput<TAccountAdminAuthority, TAccountConfig>,\n  config?: { programAddress?: TProgramAddress },\n): Promise<\n  RemoveCosignerInstruction<\n    TProgramAddress,\n    TAccountAdminAuthority,\n    TAccountConfig\n  >\n> {\n  // Program address.\n  const programAddress =\n    config?.programAddress ?? DOPPLER_LAUNCH_HOOK_V1_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    adminAuthority: { value: input.adminAuthority ?? null, isWritable: false },\n    config: { value: input.config ?? null, isWritable: true },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedInstructionAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolve default values.\n  if (!accounts.config.value) {\n    accounts.config.value = await getProgramDerivedAddress({\n      programAddress,\n      seeds: [\n        getBytesEncoder().encode(\n          new Uint8Array([\n            99, 111, 115, 105, 103, 110, 101, 114, 95, 104, 111, 111, 107, 95,\n            99, 111, 110, 102, 105, 103,\n          ]),\n        ),\n      ],\n    });\n  }\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta('adminAuthority', accounts.adminAuthority),\n      getAccountMeta('config', accounts.config),\n    ],\n    data: getRemoveCosignerInstructionDataEncoder().encode(\n      args as RemoveCosignerInstructionDataArgs,\n    ),\n    programAddress,\n  } as RemoveCosignerInstruction<\n    TProgramAddress,\n    TAccountAdminAuthority,\n    TAccountConfig\n  >);\n}\n\nexport type RemoveCosignerInput<\n  TAccountAdminAuthority extends string = string,\n  TAccountConfig extends string = string,\n> = {\n  adminAuthority: TransactionSigner<TAccountAdminAuthority>;\n  config: Address<TAccountConfig>;\n  cosigner: RemoveCosignerInstructionDataArgs['cosigner'];\n};\n\nexport function getRemoveCosignerInstruction<\n  TAccountAdminAuthority extends string,\n  TAccountConfig extends string,\n  TProgramAddress extends Address =\n    typeof DOPPLER_LAUNCH_HOOK_V1_PROGRAM_ADDRESS,\n>(\n  input: RemoveCosignerInput<TAccountAdminAuthority, TAccountConfig>,\n  config?: { programAddress?: TProgramAddress },\n): RemoveCosignerInstruction<\n  TProgramAddress,\n  TAccountAdminAuthority,\n  TAccountConfig\n> {\n  // Program address.\n  const programAddress =\n    config?.programAddress ?? DOPPLER_LAUNCH_HOOK_V1_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    adminAuthority: { value: input.adminAuthority ?? null, isWritable: false },\n    config: { value: input.config ?? null, isWritable: true },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedInstructionAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta('adminAuthority', accounts.adminAuthority),\n      getAccountMeta('config', accounts.config),\n    ],\n    data: getRemoveCosignerInstructionDataEncoder().encode(\n      args as RemoveCosignerInstructionDataArgs,\n    ),\n    programAddress,\n  } as RemoveCosignerInstruction<\n    TProgramAddress,\n    TAccountAdminAuthority,\n    TAccountConfig\n  >);\n}\n\nexport type ParsedRemoveCosignerInstruction<\n  TProgram extends string = typeof DOPPLER_LAUNCH_HOOK_V1_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    adminAuthority: TAccountMetas[0];\n    config: TAccountMetas[1];\n  };\n  data: RemoveCosignerInstructionData;\n};\n\nexport function parseRemoveCosignerInstruction<\n  TProgram extends string,\n  TAccountMetas extends readonly AccountMeta[],\n>(\n  instruction: Instruction<TProgram> &\n    InstructionWithAccounts<TAccountMetas> &\n    InstructionWithData<ReadonlyUint8Array>,\n): ParsedRemoveCosignerInstruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 2) {\n    throw new SolanaError(\n      SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS,\n      {\n        actualAccountMetas: instruction.accounts.length,\n        expectedAccountMetas: 2,\n      },\n    );\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: { adminAuthority: getNextAccount(), config: getNextAccount() },\n    data: getRemoveCosignerInstructionDataDecoder().decode(instruction.data),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getAddressDecoder,\n  getAddressEncoder,\n  getBytesDecoder,\n  getBytesEncoder,\n  getProgramDerivedAddress,\n  getStructDecoder,\n  getStructEncoder,\n  SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS,\n  SolanaError,\n  transformEncoder,\n  type AccountMeta,\n  type AccountSignerMeta,\n  type Address,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n  type Instruction,\n  type InstructionWithAccounts,\n  type InstructionWithData,\n  type ReadonlySignerAccount,\n  type ReadonlyUint8Array,\n  type TransactionSigner,\n  type WritableAccount,\n} from '@solana/kit';\nimport {\n  getAccountMetaFactory,\n  type ResolvedInstructionAccount,\n} from '@solana/program-client-core';\nimport { DOPPLER_LAUNCH_HOOK_V1_PROGRAM_ADDRESS } from '../programs';\n\nexport const SET_AUTHORITY_DISCRIMINATOR = new Uint8Array([\n  133, 250, 37, 21, 110, 163, 26, 121,\n]);\n\nexport function getSetAuthorityDiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(\n    SET_AUTHORITY_DISCRIMINATOR,\n  );\n}\n\nexport type SetAuthorityInstruction<\n  TProgram extends string = typeof DOPPLER_LAUNCH_HOOK_V1_PROGRAM_ADDRESS,\n  TAccountAdminAuthority extends string | AccountMeta<string> = string,\n  TAccountConfig extends string | AccountMeta<string> = string,\n  TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n  InstructionWithData<ReadonlyUint8Array> &\n  InstructionWithAccounts<\n    [\n      TAccountAdminAuthority extends string\n        ? ReadonlySignerAccount<TAccountAdminAuthority> &\n            AccountSignerMeta<TAccountAdminAuthority>\n        : TAccountAdminAuthority,\n      TAccountConfig extends string\n        ? WritableAccount<TAccountConfig>\n        : TAccountConfig,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type SetAuthorityInstructionData = {\n  discriminator: ReadonlyUint8Array;\n  adminAuthority: Address;\n};\n\nexport type SetAuthorityInstructionDataArgs = { adminAuthority: Address };\n\nexport function getSetAuthorityInstructionDataEncoder(): FixedSizeEncoder<SetAuthorityInstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['adminAuthority', getAddressEncoder()],\n    ]),\n    (value) => ({ ...value, discriminator: SET_AUTHORITY_DISCRIMINATOR }),\n  );\n}\n\nexport function getSetAuthorityInstructionDataDecoder(): FixedSizeDecoder<SetAuthorityInstructionData> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['adminAuthority', getAddressDecoder()],\n  ]);\n}\n\nexport function getSetAuthorityInstructionDataCodec(): FixedSizeCodec<\n  SetAuthorityInstructionDataArgs,\n  SetAuthorityInstructionData\n> {\n  return combineCodec(\n    getSetAuthorityInstructionDataEncoder(),\n    getSetAuthorityInstructionDataDecoder(),\n  );\n}\n\nexport type SetAuthorityAsyncInput<\n  TAccountAdminAuthority extends string = string,\n  TAccountConfig extends string = string,\n> = {\n  adminAuthority: TransactionSigner<TAccountAdminAuthority>;\n  config?: Address<TAccountConfig>;\n  adminAuthorityArg: SetAuthorityInstructionDataArgs['adminAuthority'];\n};\n\nexport async function getSetAuthorityInstructionAsync<\n  TAccountAdminAuthority extends string,\n  TAccountConfig extends string,\n  TProgramAddress extends Address =\n    typeof DOPPLER_LAUNCH_HOOK_V1_PROGRAM_ADDRESS,\n>(\n  input: SetAuthorityAsyncInput<TAccountAdminAuthority, TAccountConfig>,\n  config?: { programAddress?: TProgramAddress },\n): Promise<\n  SetAuthorityInstruction<\n    TProgramAddress,\n    TAccountAdminAuthority,\n    TAccountConfig\n  >\n> {\n  // Program address.\n  const programAddress =\n    config?.programAddress ?? DOPPLER_LAUNCH_HOOK_V1_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    adminAuthority: { value: input.adminAuthority ?? null, isWritable: false },\n    config: { value: input.config ?? null, isWritable: true },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedInstructionAccount\n  >;\n\n  // Original args.\n  const args = { ...input, adminAuthority: input.adminAuthorityArg };\n\n  // Resolve default values.\n  if (!accounts.config.value) {\n    accounts.config.value = await getProgramDerivedAddress({\n      programAddress,\n      seeds: [\n        getBytesEncoder().encode(\n          new Uint8Array([\n            99, 111, 115, 105, 103, 110, 101, 114, 95, 104, 111, 111, 107, 95,\n            99, 111, 110, 102, 105, 103,\n          ]),\n        ),\n      ],\n    });\n  }\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta('adminAuthority', accounts.adminAuthority),\n      getAccountMeta('config', accounts.config),\n    ],\n    data: getSetAuthorityInstructionDataEncoder().encode(\n      args as SetAuthorityInstructionDataArgs,\n    ),\n    programAddress,\n  } as SetAuthorityInstruction<\n    TProgramAddress,\n    TAccountAdminAuthority,\n    TAccountConfig\n  >);\n}\n\nexport type SetAuthorityInput<\n  TAccountAdminAuthority extends string = string,\n  TAccountConfig extends string = string,\n> = {\n  adminAuthority: TransactionSigner<TAccountAdminAuthority>;\n  config: Address<TAccountConfig>;\n  adminAuthorityArg: SetAuthorityInstructionDataArgs['adminAuthority'];\n};\n\nexport function getSetAuthorityInstruction<\n  TAccountAdminAuthority extends string,\n  TAccountConfig extends string,\n  TProgramAddress extends Address =\n    typeof DOPPLER_LAUNCH_HOOK_V1_PROGRAM_ADDRESS,\n>(\n  input: SetAuthorityInput<TAccountAdminAuthority, TAccountConfig>,\n  config?: { programAddress?: TProgramAddress },\n): SetAuthorityInstruction<\n  TProgramAddress,\n  TAccountAdminAuthority,\n  TAccountConfig\n> {\n  // Program address.\n  const programAddress =\n    config?.programAddress ?? DOPPLER_LAUNCH_HOOK_V1_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    adminAuthority: { value: input.adminAuthority ?? null, isWritable: false },\n    config: { value: input.config ?? null, isWritable: true },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedInstructionAccount\n  >;\n\n  // Original args.\n  const args = { ...input, adminAuthority: input.adminAuthorityArg };\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta('adminAuthority', accounts.adminAuthority),\n      getAccountMeta('config', accounts.config),\n    ],\n    data: getSetAuthorityInstructionDataEncoder().encode(\n      args as SetAuthorityInstructionDataArgs,\n    ),\n    programAddress,\n  } as SetAuthorityInstruction<\n    TProgramAddress,\n    TAccountAdminAuthority,\n    TAccountConfig\n  >);\n}\n\nexport type ParsedSetAuthorityInstruction<\n  TProgram extends string = typeof DOPPLER_LAUNCH_HOOK_V1_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    adminAuthority: TAccountMetas[0];\n    config: TAccountMetas[1];\n  };\n  data: SetAuthorityInstructionData;\n};\n\nexport function parseSetAuthorityInstruction<\n  TProgram extends string,\n  TAccountMetas extends readonly AccountMeta[],\n>(\n  instruction: Instruction<TProgram> &\n    InstructionWithAccounts<TAccountMetas> &\n    InstructionWithData<ReadonlyUint8Array>,\n): ParsedSetAuthorityInstruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 2) {\n    throw new SolanaError(\n      SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS,\n      {\n        actualAccountMetas: instruction.accounts.length,\n        expectedAccountMetas: 2,\n      },\n    );\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: { adminAuthority: getNextAccount(), config: getNextAccount() },\n    data: getSetAuthorityInstructionDataDecoder().decode(instruction.data),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  assertIsInstructionWithAccounts,\n  containsBytes,\n  fixEncoderSize,\n  getBytesEncoder,\n  SOLANA_ERROR__PROGRAM_CLIENTS__FAILED_TO_IDENTIFY_ACCOUNT,\n  SOLANA_ERROR__PROGRAM_CLIENTS__FAILED_TO_IDENTIFY_INSTRUCTION,\n  SOLANA_ERROR__PROGRAM_CLIENTS__UNRECOGNIZED_INSTRUCTION_TYPE,\n  SolanaError,\n  type Address,\n  type ClientWithPayer,\n  type ClientWithRpc,\n  type ClientWithTransactionPlanning,\n  type ClientWithTransactionSending,\n  type GetAccountInfoApi,\n  type GetMultipleAccountsApi,\n  type Instruction,\n  type InstructionWithData,\n  type ReadonlyUint8Array,\n} from '@solana/kit';\nimport {\n  addSelfFetchFunctions,\n  addSelfPlanAndSendFunctions,\n  type SelfFetchFunctions,\n  type SelfPlanAndSendFunctions,\n} from '@solana/program-client-core';\nimport {\n  getCosignerConfigCodec,\n  type CosignerConfig,\n  type CosignerConfigArgs,\n} from '../accounts';\nimport {\n  getAddCosignerInstructionAsync,\n  getInitializeConfigInstructionAsync,\n  getRemoveCosignerInstructionAsync,\n  getSetAuthorityInstructionAsync,\n  parseAddCosignerInstruction,\n  parseInitializeConfigInstruction,\n  parseRemoveCosignerInstruction,\n  parseSetAuthorityInstruction,\n  type AddCosignerAsyncInput,\n  type InitializeConfigAsyncInput,\n  type ParsedAddCosignerInstruction,\n  type ParsedInitializeConfigInstruction,\n  type ParsedRemoveCosignerInstruction,\n  type ParsedSetAuthorityInstruction,\n  type RemoveCosignerAsyncInput,\n  type SetAuthorityAsyncInput,\n} from '../instructions';\n\nexport const DOPPLER_LAUNCH_HOOK_V1_PROGRAM_ADDRESS =\n  'HVsPNZh98TgChUXHwKrUG47SUqvGQHxUy5wZwcQLFD4i' as Address<'HVsPNZh98TgChUXHwKrUG47SUqvGQHxUy5wZwcQLFD4i'>;\n\nexport enum DopplerLaunchHookV1Account {\n  CosignerConfig,\n}\n\nexport function identifyDopplerLaunchHookV1Account(\n  account: { data: ReadonlyUint8Array } | ReadonlyUint8Array,\n): DopplerLaunchHookV1Account {\n  const data = 'data' in account ? account.data : account;\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([133, 227, 177, 74, 145, 74, 247, 183]),\n      ),\n      0,\n    )\n  ) {\n    return DopplerLaunchHookV1Account.CosignerConfig;\n  }\n  throw new SolanaError(\n    SOLANA_ERROR__PROGRAM_CLIENTS__FAILED_TO_IDENTIFY_ACCOUNT,\n    { accountData: data, programName: 'dopplerLaunchHookV1' },\n  );\n}\n\nexport enum DopplerLaunchHookV1Instruction {\n  AddCosigner,\n  InitializeConfig,\n  RemoveCosigner,\n  SetAuthority,\n}\n\nexport function identifyDopplerLaunchHookV1Instruction(\n  instruction: { data: ReadonlyUint8Array } | ReadonlyUint8Array,\n): DopplerLaunchHookV1Instruction {\n  const data = 'data' in instruction ? instruction.data : instruction;\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([17, 34, 183, 119, 202, 255, 218, 233]),\n      ),\n      0,\n    )\n  ) {\n    return DopplerLaunchHookV1Instruction.AddCosigner;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([208, 127, 21, 1, 194, 190, 196, 70]),\n      ),\n      0,\n    )\n  ) {\n    return DopplerLaunchHookV1Instruction.InitializeConfig;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([174, 11, 171, 252, 179, 99, 220, 27]),\n      ),\n      0,\n    )\n  ) {\n    return DopplerLaunchHookV1Instruction.RemoveCosigner;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([133, 250, 37, 21, 110, 163, 26, 121]),\n      ),\n      0,\n    )\n  ) {\n    return DopplerLaunchHookV1Instruction.SetAuthority;\n  }\n  throw new SolanaError(\n    SOLANA_ERROR__PROGRAM_CLIENTS__FAILED_TO_IDENTIFY_INSTRUCTION,\n    { instructionData: data, programName: 'dopplerLaunchHookV1' },\n  );\n}\n\nexport type ParsedDopplerLaunchHookV1Instruction<\n  TProgram extends string = 'HVsPNZh98TgChUXHwKrUG47SUqvGQHxUy5wZwcQLFD4i',\n> =\n  | ({\n      instructionType: DopplerLaunchHookV1Instruction.AddCosigner;\n    } & ParsedAddCosignerInstruction<TProgram>)\n  | ({\n      instructionType: DopplerLaunchHookV1Instruction.InitializeConfig;\n    } & ParsedInitializeConfigInstruction<TProgram>)\n  | ({\n      instructionType: DopplerLaunchHookV1Instruction.RemoveCosigner;\n    } & ParsedRemoveCosignerInstruction<TProgram>)\n  | ({\n      instructionType: DopplerLaunchHookV1Instruction.SetAuthority;\n    } & ParsedSetAuthorityInstruction<TProgram>);\n\nexport function parseDopplerLaunchHookV1Instruction<TProgram extends string>(\n  instruction: Instruction<TProgram> & InstructionWithData<ReadonlyUint8Array>,\n): ParsedDopplerLaunchHookV1Instruction<TProgram> {\n  const instructionType = identifyDopplerLaunchHookV1Instruction(instruction);\n  switch (instructionType) {\n    case DopplerLaunchHookV1Instruction.AddCosigner: {\n      assertIsInstructionWithAccounts(instruction);\n      return {\n        instructionType: DopplerLaunchHookV1Instruction.AddCosigner,\n        ...parseAddCosignerInstruction(instruction),\n      };\n    }\n    case DopplerLaunchHookV1Instruction.InitializeConfig: {\n      assertIsInstructionWithAccounts(instruction);\n      return {\n        instructionType: DopplerLaunchHookV1Instruction.InitializeConfig,\n        ...parseInitializeConfigInstruction(instruction),\n      };\n    }\n    case DopplerLaunchHookV1Instruction.RemoveCosigner: {\n      assertIsInstructionWithAccounts(instruction);\n      return {\n        instructionType: DopplerLaunchHookV1Instruction.RemoveCosigner,\n        ...parseRemoveCosignerInstruction(instruction),\n      };\n    }\n    case DopplerLaunchHookV1Instruction.SetAuthority: {\n      assertIsInstructionWithAccounts(instruction);\n      return {\n        instructionType: DopplerLaunchHookV1Instruction.SetAuthority,\n        ...parseSetAuthorityInstruction(instruction),\n      };\n    }\n    default:\n      throw new SolanaError(\n        SOLANA_ERROR__PROGRAM_CLIENTS__UNRECOGNIZED_INSTRUCTION_TYPE,\n        {\n          instructionType: instructionType as string,\n          programName: 'dopplerLaunchHookV1',\n        },\n      );\n  }\n}\n\nexport type DopplerLaunchHookV1Plugin = {\n  accounts: DopplerLaunchHookV1PluginAccounts;\n  instructions: DopplerLaunchHookV1PluginInstructions;\n};\n\nexport type DopplerLaunchHookV1PluginAccounts = {\n  cosignerConfig: ReturnType<typeof getCosignerConfigCodec> &\n    SelfFetchFunctions<CosignerConfigArgs, CosignerConfig>;\n};\n\nexport type DopplerLaunchHookV1PluginInstructions = {\n  addCosigner: (\n    input: AddCosignerAsyncInput,\n  ) => ReturnType<typeof getAddCosignerInstructionAsync> &\n    SelfPlanAndSendFunctions;\n  initializeConfig: (\n    input: MakeOptional<InitializeConfigAsyncInput, 'payer'>,\n  ) => ReturnType<typeof getInitializeConfigInstructionAsync> &\n    SelfPlanAndSendFunctions;\n  removeCosigner: (\n    input: RemoveCosignerAsyncInput,\n  ) => ReturnType<typeof getRemoveCosignerInstructionAsync> &\n    SelfPlanAndSendFunctions;\n  setAuthority: (\n    input: SetAuthorityAsyncInput,\n  ) => ReturnType<typeof getSetAuthorityInstructionAsync> &\n    SelfPlanAndSendFunctions;\n};\n\nexport type DopplerLaunchHookV1PluginRequirements = ClientWithRpc<\n  GetAccountInfoApi & GetMultipleAccountsApi\n> &\n  ClientWithPayer &\n  ClientWithTransactionPlanning &\n  ClientWithTransactionSending;\n\nexport function dopplerLaunchHookV1Program() {\n  return <T extends DopplerLaunchHookV1PluginRequirements>(client: T) => {\n    return {\n      ...client,\n      dopplerLaunchHookV1: <DopplerLaunchHookV1Plugin>{\n        accounts: {\n          cosignerConfig: addSelfFetchFunctions(\n            client,\n            getCosignerConfigCodec(),\n          ),\n        },\n        instructions: {\n          addCosigner: (input) =>\n            addSelfPlanAndSendFunctions(\n              client,\n              getAddCosignerInstructionAsync(input),\n            ),\n          initializeConfig: (input) =>\n            addSelfPlanAndSendFunctions(\n              client,\n              getInitializeConfigInstructionAsync({\n                ...input,\n                payer: input.payer ?? client.payer,\n              }),\n            ),\n          removeCosigner: (input) =>\n            addSelfPlanAndSendFunctions(\n              client,\n              getRemoveCosignerInstructionAsync(input),\n            ),\n          setAuthority: (input) =>\n            addSelfPlanAndSendFunctions(\n              client,\n              getSetAuthorityInstructionAsync(input),\n            ),\n        },\n      },\n    };\n  };\n}\n\ntype MakeOptional<T, K extends keyof T> = Omit<T, K> & Partial<Pick<T, K>>;\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  isProgramError,\n  type Address,\n  type SOLANA_ERROR__INSTRUCTION_ERROR__CUSTOM,\n  type SolanaError,\n} from '@solana/kit';\nimport { DOPPLER_LAUNCH_HOOK_V1_PROGRAM_ADDRESS } from '../programs';\n\n/** InvalidInstructionData: Invalid instruction data */\nexport const DOPPLER_LAUNCH_HOOK_V1_ERROR__INVALID_INSTRUCTION_DATA = 0x1770; // 6000\n/** InvalidScheduleData: Invalid schedule payload */\nexport const DOPPLER_LAUNCH_HOOK_V1_ERROR__INVALID_SCHEDULE_DATA = 0x1771; // 6001\n/** InvalidFee: Invalid fee */\nexport const DOPPLER_LAUNCH_HOOK_V1_ERROR__INVALID_FEE = 0x1772; // 6002\n/** InvalidDuration: Invalid fee duration */\nexport const DOPPLER_LAUNCH_HOOK_V1_ERROR__INVALID_DURATION = 0x1773; // 6003\n/** ArithmeticOverflow: Arithmetic overflow */\nexport const DOPPLER_LAUNCH_HOOK_V1_ERROR__ARITHMETIC_OVERFLOW = 0x1774; // 6004\n/** InvalidAuthority: Invalid hook authority */\nexport const DOPPLER_LAUNCH_HOOK_V1_ERROR__INVALID_AUTHORITY = 0x1775; // 6005\n/** InvalidConfig: Invalid cosigner hook config */\nexport const DOPPLER_LAUNCH_HOOK_V1_ERROR__INVALID_CONFIG = 0x1776; // 6006\n/** InvalidCosigner: Invalid cosigner key */\nexport const DOPPLER_LAUNCH_HOOK_V1_ERROR__INVALID_COSIGNER = 0x1777; // 6007\n/** CosignerAlreadyExists: Cosigner already exists */\nexport const DOPPLER_LAUNCH_HOOK_V1_ERROR__COSIGNER_ALREADY_EXISTS = 0x1778; // 6008\n/** CosignerNotFound: Cosigner not found */\nexport const DOPPLER_LAUNCH_HOOK_V1_ERROR__COSIGNER_NOT_FOUND = 0x1779; // 6009\n/** CosignerListFull: Cosigner list is full */\nexport const DOPPLER_LAUNCH_HOOK_V1_ERROR__COSIGNER_LIST_FULL = 0x177a; // 6010\n\nexport type DopplerLaunchHookV1Error =\n  | typeof DOPPLER_LAUNCH_HOOK_V1_ERROR__ARITHMETIC_OVERFLOW\n  | typeof DOPPLER_LAUNCH_HOOK_V1_ERROR__COSIGNER_ALREADY_EXISTS\n  | typeof DOPPLER_LAUNCH_HOOK_V1_ERROR__COSIGNER_LIST_FULL\n  | typeof DOPPLER_LAUNCH_HOOK_V1_ERROR__COSIGNER_NOT_FOUND\n  | typeof DOPPLER_LAUNCH_HOOK_V1_ERROR__INVALID_AUTHORITY\n  | typeof DOPPLER_LAUNCH_HOOK_V1_ERROR__INVALID_CONFIG\n  | typeof DOPPLER_LAUNCH_HOOK_V1_ERROR__INVALID_COSIGNER\n  | typeof DOPPLER_LAUNCH_HOOK_V1_ERROR__INVALID_DURATION\n  | typeof DOPPLER_LAUNCH_HOOK_V1_ERROR__INVALID_FEE\n  | typeof DOPPLER_LAUNCH_HOOK_V1_ERROR__INVALID_INSTRUCTION_DATA\n  | typeof DOPPLER_LAUNCH_HOOK_V1_ERROR__INVALID_SCHEDULE_DATA;\n\nlet dopplerLaunchHookV1ErrorMessages:\n  | Record<DopplerLaunchHookV1Error, string>\n  | undefined;\nif (process.env.NODE_ENV !== 'production') {\n  dopplerLaunchHookV1ErrorMessages = {\n    [DOPPLER_LAUNCH_HOOK_V1_ERROR__ARITHMETIC_OVERFLOW]: `Arithmetic overflow`,\n    [DOPPLER_LAUNCH_HOOK_V1_ERROR__COSIGNER_ALREADY_EXISTS]: `Cosigner already exists`,\n    [DOPPLER_LAUNCH_HOOK_V1_ERROR__COSIGNER_LIST_FULL]: `Cosigner list is full`,\n    [DOPPLER_LAUNCH_HOOK_V1_ERROR__COSIGNER_NOT_FOUND]: `Cosigner not found`,\n    [DOPPLER_LAUNCH_HOOK_V1_ERROR__INVALID_AUTHORITY]: `Invalid hook authority`,\n    [DOPPLER_LAUNCH_HOOK_V1_ERROR__INVALID_CONFIG]: `Invalid cosigner hook config`,\n    [DOPPLER_LAUNCH_HOOK_V1_ERROR__INVALID_COSIGNER]: `Invalid cosigner key`,\n    [DOPPLER_LAUNCH_HOOK_V1_ERROR__INVALID_DURATION]: `Invalid fee duration`,\n    [DOPPLER_LAUNCH_HOOK_V1_ERROR__INVALID_FEE]: `Invalid fee`,\n    [DOPPLER_LAUNCH_HOOK_V1_ERROR__INVALID_INSTRUCTION_DATA]: `Invalid instruction data`,\n    [DOPPLER_LAUNCH_HOOK_V1_ERROR__INVALID_SCHEDULE_DATA]: `Invalid schedule payload`,\n  };\n}\n\nexport function getDopplerLaunchHookV1ErrorMessage(\n  code: DopplerLaunchHookV1Error,\n): string {\n  if (process.env.NODE_ENV !== 'production') {\n    return (\n      dopplerLaunchHookV1ErrorMessages as Record<\n        DopplerLaunchHookV1Error,\n        string\n      >\n    )[code];\n  }\n\n  return 'Error message not available in production bundles.';\n}\n\nexport function isDopplerLaunchHookV1Error<\n  TProgramErrorCode extends DopplerLaunchHookV1Error,\n>(\n  error: unknown,\n  transactionMessage: {\n    instructions: Record<number, { programAddress: Address }>;\n  },\n  code?: TProgramErrorCode,\n): error is SolanaError<typeof SOLANA_ERROR__INSTRUCTION_ERROR__CUSTOM> &\n  Readonly<{ context: Readonly<{ code: TProgramErrorCode }> }> {\n  return isProgramError<TProgramErrorCode>(\n    error,\n    transactionMessage,\n    DOPPLER_LAUNCH_HOOK_V1_PROGRAM_ADDRESS,\n    code,\n  );\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  getAddressDecoder,\n  getAddressEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  type Address,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n} from '@solana/kit';\n\nexport type CosignerArg = { cosigner: Address };\n\nexport type CosignerArgArgs = CosignerArg;\n\nexport function getCosignerArgEncoder(): FixedSizeEncoder<CosignerArgArgs> {\n  return getStructEncoder([['cosigner', getAddressEncoder()]]);\n}\n\nexport function getCosignerArgDecoder(): FixedSizeDecoder<CosignerArg> {\n  return getStructDecoder([['cosigner', getAddressDecoder()]]);\n}\n\nexport function getCosignerArgCodec(): FixedSizeCodec<\n  CosignerArgArgs,\n  CosignerArg\n> {\n  return combineCodec(getCosignerArgEncoder(), getCosignerArgDecoder());\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  getAddressDecoder,\n  getAddressEncoder,\n  getArrayDecoder,\n  getArrayEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  type Address,\n  type Codec,\n  type Decoder,\n  type Encoder,\n} from '@solana/kit';\n\nexport type InitializeConfigArgs = { cosigners: Array<Address> };\n\nexport type InitializeConfigArgsArgs = InitializeConfigArgs;\n\nexport function getInitializeConfigArgsEncoder(): Encoder<InitializeConfigArgsArgs> {\n  return getStructEncoder([\n    ['cosigners', getArrayEncoder(getAddressEncoder())],\n  ]);\n}\n\nexport function getInitializeConfigArgsDecoder(): Decoder<InitializeConfigArgs> {\n  return getStructDecoder([\n    ['cosigners', getArrayDecoder(getAddressDecoder())],\n  ]);\n}\n\nexport function getInitializeConfigArgsCodec(): Codec<\n  InitializeConfigArgsArgs,\n  InitializeConfigArgs\n> {\n  return combineCodec(\n    getInitializeConfigArgsEncoder(),\n    getInitializeConfigArgsDecoder(),\n  );\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  getAddressDecoder,\n  getAddressEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  type Address,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n} from '@solana/kit';\n\nexport type SetAuthorityArgs = { adminAuthority: Address };\n\nexport type SetAuthorityArgsArgs = SetAuthorityArgs;\n\nexport function getSetAuthorityArgsEncoder(): FixedSizeEncoder<SetAuthorityArgsArgs> {\n  return getStructEncoder([['adminAuthority', getAddressEncoder()]]);\n}\n\nexport function getSetAuthorityArgsDecoder(): FixedSizeDecoder<SetAuthorityArgs> {\n  return getStructDecoder([['adminAuthority', getAddressDecoder()]]);\n}\n\nexport function getSetAuthorityArgsCodec(): FixedSizeCodec<\n  SetAuthorityArgsArgs,\n  SetAuthorityArgs\n> {\n  return combineCodec(\n    getSetAuthorityArgsEncoder(),\n    getSetAuthorityArgsDecoder(),\n  );\n}\n","import type { Address } from '@solana/kit';\n\nimport { DOPPLER_LAUNCH_HOOK_V1_PROGRAM_ADDRESS } from '../generated/dopplerLaunchHookV1/index.js';\n\n/** Default Doppler launch hook v1 program for devnet deployments. */\nexport const DEVNET_DOPPLER_LAUNCH_HOOK_V1_PROGRAM_ID: Address =\n  DOPPLER_LAUNCH_HOOK_V1_PROGRAM_ADDRESS;\n\nexport const DOPPLER_LAUNCH_HOOK_V1_PROGRAM_ID =\n  DEVNET_DOPPLER_LAUNCH_HOOK_V1_PROGRAM_ID;\n\nexport const SEED_DOPPLER_LAUNCH_HOOK_V1_CONFIG = 'cosigner_hook_config';\nexport const MAX_COSIGNERS = 32;\n\nexport const GATE_EXPIRY_DISABLED = 0;\nexport const GATE_EXPIRY_UNIX_TIMESTAMP = 1;\nexport const GATE_EXPIRY_SLOT = 2;\nexport const GATE_EXPIRY_PAYLOAD_VERSION = 1;\nexport const GATE_EXPIRY_HEADER_LEN = 10;\nexport const GATE_EXPIRY_PAYLOAD_LEN = 42;\n\nexport const DYNAMIC_FEE_SCHEDULE_MAGIC = new Uint8Array([\n  0x44, 0x46, 0x45, 0x45, 0x56, 0x31, 0x5f, 0x5f,\n]);\nexport const DYNAMIC_FEE_SCHEDULE_VERSION = 1;\nexport const DYNAMIC_FEE_SCHEDULE_LEN = 32;\nexport const DYNAMIC_FEE_SCHEDULE_HEADER_LEN = 16;\nexport const DYNAMIC_FEE_SCHEDULE_MAX_BPS = 10_000;\n","import {\n  type Address,\n  type ProgramDerivedAddress,\n  getProgramDerivedAddress,\n} from '@solana/kit';\n\nimport {\n  DOPPLER_LAUNCH_HOOK_V1_PROGRAM_ID,\n  SEED_DOPPLER_LAUNCH_HOOK_V1_CONFIG,\n} from './constants.js';\n\nconst textEncoder = new TextEncoder();\n\nexport async function getDopplerLaunchHookV1ConfigAddress(\n  programId: Address = DOPPLER_LAUNCH_HOOK_V1_PROGRAM_ID,\n): Promise<ProgramDerivedAddress> {\n  return getProgramDerivedAddress({\n    programAddress: programId,\n    seeds: [textEncoder.encode(SEED_DOPPLER_LAUNCH_HOOK_V1_CONFIG)],\n  });\n}\n","import type { Address, GetAccountInfoApi, Rpc } from '@solana/kit';\nimport { SYSTEM_PROGRAM_ADDRESS } from '@solana-program/system';\n\nimport { fetchMaybeCosignerConfig } from '../generated/dopplerLaunchHookV1/index.js';\nimport {\n  DOPPLER_LAUNCH_HOOK_V1_PROGRAM_ID,\n  MAX_COSIGNERS,\n} from './constants.js';\nimport { getDopplerLaunchHookV1ConfigAddress } from './pda.js';\n\nconst resolvedManagedCosignerGateBrand: unique symbol = Symbol(\n  'resolvedManagedCosignerGate',\n);\n\nexport type ResolveManagedCosignerGateInput = {\n  /**\n   * Unix timestamp after which swaps no longer require the managed cosigner.\n   * Omit or set to null for an indefinite gate.\n   */\n  expiresAt?: bigint | number | null;\n  programId?: Address;\n};\n\nexport type ResolvedManagedCosignerGate = {\n  readonly programId: Address;\n  readonly config: Address;\n  readonly cosigner: Address;\n  readonly activeCosigners: readonly Address[];\n  readonly expiresAt?: bigint | number | null;\n  readonly [resolvedManagedCosignerGateBrand]: true;\n};\n\nexport function isResolvedManagedCosignerGate(\n  value: unknown,\n): value is ResolvedManagedCosignerGate {\n  return (\n    typeof value === 'object' &&\n    value !== null &&\n    (value as { [resolvedManagedCosignerGateBrand]?: unknown })[\n      resolvedManagedCosignerGateBrand\n    ] === true\n  );\n}\n\n/**\n * Resolves a Doppler-managed cosigner gate for launch construction.\n *\n * Each launch commits one signer account for deterministic swap account\n * reconstruction. The first active config entry is the deployment's canonical\n * signer for newly created launches.\n */\nexport async function resolveManagedCosignerGate(\n  rpc: Rpc<GetAccountInfoApi>,\n  input: ResolveManagedCosignerGateInput = {},\n): Promise<ResolvedManagedCosignerGate> {\n  const programId = input.programId ?? DOPPLER_LAUNCH_HOOK_V1_PROGRAM_ID;\n  const [config, expectedBump] =\n    await getDopplerLaunchHookV1ConfigAddress(programId);\n  const configAccount = await fetchMaybeCosignerConfig(rpc, config, {\n    commitment: 'confirmed',\n  });\n\n  if (!configAccount.exists) {\n    throw new Error(`Doppler-managed cosigner config ${config} does not exist`);\n  }\n  if (configAccount.programAddress !== programId) {\n    throw new Error(\n      `Doppler-managed cosigner config ${config} is owned by ${configAccount.programAddress}, expected ${programId}`,\n    );\n  }\n\n  const { bump, cosignerCount, cosigners, version } = configAccount.data;\n  if (\n    version !== 1 ||\n    bump !== expectedBump ||\n    cosignerCount === 0 ||\n    cosignerCount > MAX_COSIGNERS ||\n    cosignerCount > cosigners.length\n  ) {\n    throw new Error(\n      `Doppler-managed cosigner config ${config} has no valid active cosigner`,\n    );\n  }\n\n  const activeCosigners = Object.freeze(cosigners.slice(0, cosignerCount));\n  if (\n    activeCosigners.some((candidate) => candidate === SYSTEM_PROGRAM_ADDRESS) ||\n    new Set(activeCosigners).size !== activeCosigners.length\n  ) {\n    throw new Error(\n      `Doppler-managed cosigner config ${config} contains invalid active cosigners`,\n    );\n  }\n\n  const cosigner = activeCosigners[0];\n  if (!cosigner) {\n    throw new Error(\n      `Doppler-managed cosigner config ${config} has no active cosigner`,\n    );\n  }\n\n  const resolvedGate: ResolvedManagedCosignerGate = {\n    [resolvedManagedCosignerGateBrand]: true,\n    programId,\n    config,\n    cosigner,\n    activeCosigners,\n    ...(input.expiresAt !== undefined ? { expiresAt: input.expiresAt } : {}),\n  };\n  Object.defineProperty(resolvedGate, resolvedManagedCosignerGateBrand, {\n    enumerable: false,\n  });\n  return Object.freeze(resolvedGate);\n}\n","import {\n  getAddressDecoder,\n  getAddressEncoder,\n  type Address,\n  type ReadonlyUint8Array,\n} from '@solana/kit';\n\nimport {\n  GATE_EXPIRY_DISABLED,\n  GATE_EXPIRY_HEADER_LEN,\n  GATE_EXPIRY_PAYLOAD_LEN,\n  GATE_EXPIRY_PAYLOAD_VERSION,\n  GATE_EXPIRY_SLOT,\n  GATE_EXPIRY_UNIX_TIMESTAMP,\n} from './constants.js';\n\nconst MAX_U64 = (1n << 64n) - 1n;\n\nexport type CosignerGateClock = {\n  unixTimestamp?: bigint | number;\n  slot?: bigint | number;\n};\n\nexport type CosignerGateExpiry = {\n  mode: number;\n  value: bigint;\n  cosigner?: Address;\n};\n\nexport type CosignerGateExpiryArgs =\n  | {\n      mode: typeof GATE_EXPIRY_DISABLED;\n      value: bigint | number;\n      cosigner?: never;\n    }\n  | {\n      mode: typeof GATE_EXPIRY_UNIX_TIMESTAMP | typeof GATE_EXPIRY_SLOT;\n      value: bigint | number;\n      cosigner: Address;\n    };\n\nexport type CosignerGateStatus = {\n  gateEnforced: boolean;\n  expiryMode: number;\n  expiryValue: bigint;\n  reason:\n    | 'expiry_disabled'\n    | 'timestamp_pending'\n    | 'timestamp_expired'\n    | 'slot_pending'\n    | 'slot_expired'\n    | 'slot_unavailable'\n    | 'invalid_expiry_payload'\n    | 'invalid_expiry_mode';\n};\n\nfunction toBigInt(value: bigint | number): bigint {\n  return typeof value === 'bigint' ? value : BigInt(value);\n}\n\nfunction isValidExpiryMode(mode: number): boolean {\n  return mode === GATE_EXPIRY_UNIX_TIMESTAMP || mode === GATE_EXPIRY_SLOT;\n}\n\nfunction readU64Le(bytes: ReadonlyUint8Array, offset: number): bigint {\n  let value = 0n;\n  for (let i = 0; i < 8; i++) {\n    value |= BigInt(bytes[offset + i] ?? 0) << BigInt(i * 8);\n  }\n  return value;\n}\n\nfunction writeU64Le(bytes: Uint8Array, offset: number, value: bigint): void {\n  for (let i = 0; i < 8; i++) {\n    bytes[offset + i] = Number((value >> BigInt(i * 8)) & 0xffn);\n  }\n}\n\nexport function encodeCosignerGateExpiryPayload(\n  expiry: CosignerGateExpiryArgs,\n): Uint8Array {\n  if (expiry.mode === GATE_EXPIRY_DISABLED) {\n    if (expiry.cosigner !== undefined) {\n      throw new Error('Cosigner hint cannot be encoded for disabled gates');\n    }\n    return new Uint8Array();\n  }\n  if (!isValidExpiryMode(expiry.mode)) {\n    throw new Error(`Invalid cosigner gate expiry mode: ${expiry.mode}`);\n  }\n\n  const value = toBigInt(expiry.value);\n  if (value < 0n || value > MAX_U64) {\n    throw new Error(`Invalid cosigner gate expiry value: ${expiry.value}`);\n  }\n  if (expiry.cosigner === undefined) {\n    throw new Error('Cosigner hint is required for expiring gates');\n  }\n\n  const payload = new Uint8Array(GATE_EXPIRY_PAYLOAD_LEN);\n  payload[0] = GATE_EXPIRY_PAYLOAD_VERSION;\n  payload[1] = expiry.mode;\n  writeU64Le(payload, 2, value);\n  payload.set(\n    getAddressEncoder().encode(expiry.cosigner),\n    GATE_EXPIRY_HEADER_LEN,\n  );\n  return payload;\n}\n\nexport function decodeCosignerGateExpiryPayload(\n  payload: ReadonlyUint8Array | null | undefined,\n): CosignerGateExpiry | null {\n  if (!payload || payload.length === 0) {\n    return { mode: GATE_EXPIRY_DISABLED, value: 0n };\n  }\n  if (\n    payload.length !== GATE_EXPIRY_PAYLOAD_LEN ||\n    payload[0] !== GATE_EXPIRY_PAYLOAD_VERSION\n  ) {\n    return null;\n  }\n\n  const mode = payload[1] ?? GATE_EXPIRY_DISABLED;\n  if (!isValidExpiryMode(mode)) {\n    return null;\n  }\n\n  return {\n    mode,\n    value: readU64Le(payload, 2),\n    cosigner: getAddressDecoder().decode(\n      payload.slice(GATE_EXPIRY_HEADER_LEN, GATE_EXPIRY_PAYLOAD_LEN),\n    ),\n  };\n}\n\nexport function getCosignerGateStatus(\n  hookPayload: ReadonlyUint8Array | null | undefined,\n  clock: CosignerGateClock = {},\n): CosignerGateStatus {\n  const expiry = decodeCosignerGateExpiryPayload(hookPayload);\n  if (!expiry) {\n    return {\n      gateEnforced: true,\n      expiryMode: GATE_EXPIRY_DISABLED,\n      expiryValue: 0n,\n      reason: 'invalid_expiry_payload',\n    };\n  }\n\n  if (expiry.mode === GATE_EXPIRY_DISABLED) {\n    return {\n      gateEnforced: true,\n      expiryMode: expiry.mode,\n      expiryValue: expiry.value,\n      reason: 'expiry_disabled',\n    };\n  }\n\n  if (expiry.mode === GATE_EXPIRY_UNIX_TIMESTAMP) {\n    const unixTimestamp =\n      clock.unixTimestamp === undefined\n        ? BigInt(Math.floor(Date.now() / 1_000))\n        : toBigInt(clock.unixTimestamp);\n    const expired = unixTimestamp >= expiry.value;\n    return {\n      gateEnforced: !expired,\n      expiryMode: expiry.mode,\n      expiryValue: expiry.value,\n      reason: expired ? 'timestamp_expired' : 'timestamp_pending',\n    };\n  }\n\n  if (expiry.mode === GATE_EXPIRY_SLOT) {\n    if (clock.slot === undefined) {\n      return {\n        gateEnforced: true,\n        expiryMode: expiry.mode,\n        expiryValue: expiry.value,\n        reason: 'slot_unavailable',\n      };\n    }\n\n    const expired = toBigInt(clock.slot) >= expiry.value;\n    return {\n      gateEnforced: !expired,\n      expiryMode: expiry.mode,\n      expiryValue: expiry.value,\n      reason: expired ? 'slot_expired' : 'slot_pending',\n    };\n  }\n\n  return {\n    gateEnforced: true,\n    expiryMode: expiry.mode,\n    expiryValue: expiry.value,\n    reason: 'invalid_expiry_mode',\n  };\n}\n\nexport function isCosignerGateEnforced(\n  hookPayload: ReadonlyUint8Array | null | undefined,\n  clock: CosignerGateClock = {},\n): boolean {\n  return getCosignerGateStatus(hookPayload, clock).gateEnforced;\n}\n","import { address, type Address } from '@solana/kit';\n\n/**\n * Program ID for the Initializer program.\n *\n * Source of truth: programs/initializer/src/lib.rs\n */\nexport const INITIALIZER_PROGRAM_ID: Address = address(\n  '4h3Dqyo5qmteJoMxXt3tdtfXELDB6pdRTPU9mWruiKp1',\n);\n\nexport const BPF_LOADER_UPGRADEABLE_PROGRAM_ID: Address = address(\n  'BPFLoaderUpgradeab1e11111111111111111111111',\n);\n\n/**\n * Hook program for prediction market launches.\n * Invoked during bonding curve swaps and previews as a pre/post-swap hook.\n *\n * Source of truth: programs/prediction_hook/src/lib.rs\n */\nexport const PREDICTION_HOOK_PROGRAM_ID: Address = address(\n  '7QcQDANJVC17Jgc6KjjeagSkm2zAphgHVPK5agJzyihB',\n);\n\n// ============================================================================\n// PDA Seeds (must match programs/initializer/src/constants.rs)\n// ============================================================================\n\nexport const SEED_CONFIG = 'config';\nexport const SEED_LAUNCH = 'launch';\nexport const SEED_LAUNCH_AUTHORITY = 'launch_authority';\nexport const SEED_LAUNCH_FEE_STATE = 'launch_fee_state';\n\n// ============================================================================\n// Remaining Accounts Hash\n// ============================================================================\n\n/**\n * Commitment hash for an empty remaining-accounts list — keccak256 of [0,0,0,0].\n * Pass this for hookRemainingAccountsHash and migratorRemainingAccountsHash\n * when no extra accounts are needed at that hook's invocation time.\n */\nexport const EMPTY_REMAINING_ACCOUNTS_HASH = new Uint8Array([\n  232, 231, 118, 38, 88, 111, 115, 185, 85, 54, 76, 123, 75, 191, 11, 183, 247,\n  104, 94, 189, 64, 232, 82, 177, 100, 99, 58, 74, 203, 211, 36, 76,\n]);\n\n// ============================================================================\n// Limits\n// ============================================================================\n\nexport const MAX_MIGRATOR_ALLOWLIST = 32;\nexport const MAX_HOOK_ALLOWLIST = 32;\nexport const MAX_PAYLOAD = 256;\n\n// ============================================================================\n// Phases / Directions / Flags (must match programs/initializer/src/constants.rs)\n// ============================================================================\n\nexport const PHASE_TRADING = 0;\nexport const PHASE_MIGRATED = 1;\nexport const PHASE_ABORTED = 2;\n\nexport const TRADE_DIRECTION_BUY = 0;\nexport const TRADE_DIRECTION_SELL = 1;\n\nexport const CURVE_KIND_XYK = 0;\n\nexport const CURVE_PARAMS_FORMAT_XYK_V0 = 0x00;\n\nexport const HF_BEFORE_SWAP = 1 << 0;\nexport const HF_AFTER_SWAP = 1 << 1;\nexport const HF_BEFORE_CREATE = 1 << 2;\nexport const HF_AFTER_CREATE = 1 << 3;\nexport const HF_BEFORE_MIGRATE = 1 << 4;\nexport const HF_AFTER_MIGRATE = 1 << 5;\nexport const HF_FORWARD_READONLY_SIGNERS = 1 << 6;\nexport const HF_LAUNCH_CONTEXT_V2 = 1 << 7;\n\nexport const HOOK_NO_CHANGE = 0xffff;\n\n// ============================================================================\n// Instruction Discriminators (Anchor 8-byte hashes)\n// ============================================================================\n\nexport const INITIALIZER_INSTRUCTION_DISCRIMINATORS = {\n  // SHA256(\"global:initialize_config\")[0:8]\n  initializeConfig: new Uint8Array([\n    0xd0, 0x7f, 0x15, 0x01, 0xc2, 0xbe, 0xc4, 0x46,\n  ]),\n  // SHA256(\"global:set_migrator_allowlist\")[0:8]\n  setMigratorAllowlist: new Uint8Array([\n    0xd1, 0x5a, 0xb5, 0x68, 0x63, 0x6c, 0xe9, 0xa8,\n  ]),\n  // SHA256(\"global:set_hook_allowlist\")[0:8]\n  setHookAllowlist: new Uint8Array([\n    0xe8, 0x1c, 0x28, 0x8f, 0x79, 0xb6, 0x4d, 0x67,\n  ]),\n  // SHA256(\"global:initialize_launch\")[0:8]\n  initializeLaunch: new Uint8Array([\n    0x5a, 0xc9, 0xdc, 0x8e, 0x70, 0xfd, 0x64, 0x0d,\n  ]),\n  // SHA256(\"global:curve_swap_exact_in\")[0:8]\n  curveSwapExactIn: new Uint8Array([\n    0xc4, 0xf7, 0xc3, 0x7e, 0xe3, 0x1b, 0xa6, 0x5d,\n  ]),\n  // SHA256(\"global:migrate_launch\")[0:8]\n  migrateLaunch: new Uint8Array([\n    0x13, 0xc7, 0x77, 0x67, 0x0d, 0x1e, 0x0c, 0xcd,\n  ]),\n  // SHA256(\"global:preview_swap_exact_in\")[0:8]\n  previewSwapExactIn: new Uint8Array([\n    0x32, 0x82, 0x1f, 0x45, 0x93, 0x3a, 0xde, 0xb2,\n  ]),\n  // SHA256(\"global:preview_migration\")[0:8]\n  previewMigration: new Uint8Array([\n    0xd8, 0xb4, 0xd1, 0x70, 0x3e, 0x10, 0x0f, 0x3f,\n  ]),\n} as const;\n\n// ============================================================================\n// Account Discriminators (Anchor 8-byte hashes)\n// ============================================================================\n\nexport const INITIALIZER_ACCOUNT_DISCRIMINATORS = {\n  // SHA256(\"account:InitConfig\")[0:8]\n  InitConfig: new Uint8Array([0x61, 0xa6, 0x23, 0x07, 0x14, 0x02, 0xa4, 0x7e]),\n  // SHA256(\"account:Launch\")[0:8]\n  Launch: new Uint8Array([0x90, 0x33, 0x33, 0xa3, 0xce, 0x55, 0xd5, 0x26]),\n  // SHA256(\"account:LaunchFeeState\")[0:8]\n  LaunchFeeState: new Uint8Array([\n    0x01, 0x6a, 0x37, 0xf1, 0xb3, 0x12, 0xe6, 0xe8,\n  ]),\n} as const;\n","import { getAddressEncoder, type Address } from '@solana/kit';\nimport { keccak_256 } from '@noble/hashes/sha3.js';\nimport { BPS_DENOM } from '../core/constants.js';\nimport { ceilDiv } from '../core/math.js';\nimport { PHASE_TRADING, PHASE_MIGRATED, PHASE_ABORTED } from './constants.js';\n\n/**\n * Compute the remaining-accounts commitment hash used by the Initializer program.\n *\n * Algorithm: keccak256(u32_len_le || pubkey_0 || ... || pubkey_n)\n *\n * This matches compute_remaining_accounts_hash in\n * programs/initializer/src/instructions/launch_common.rs.\n *\n * Commit the result as hookRemainingAccountsHash or migratorRemainingAccountsHash\n * when calling initializeLaunch. At migrate_launch (or hook invoke) time, pass the\n * same accounts in the same order as remaining accounts — the program verifies they match.\n *\n * For an empty account list use EMPTY_REMAINING_ACCOUNTS_HASH instead.\n */\nexport function computeRemainingAccountsHash(addresses: Address[]): Uint8Array {\n  const addressEncoder = getAddressEncoder();\n  // 4-byte LE count followed by 32 bytes per pubkey\n  const buf = new Uint8Array(4 + addresses.length * 32);\n  new DataView(buf.buffer).setUint32(0, addresses.length, true);\n  for (let i = 0; i < addresses.length; i++) {\n    buf.set(addressEncoder.encode(addresses[i]), 4 + i * 32);\n  }\n  return keccak_256(buf);\n}\n\n/**\n * Compute the fee charged by initializer bonding-curve exact-in swaps.\n *\n * The initializer program rounds swap fees up, so small non-zero trades with a\n * non-zero fee rate still pay at least one atom.\n */\nexport function getCurveSwapFeeAmount(\n  amountIn: bigint,\n  swapFeeBps: number,\n): bigint {\n  if (amountIn < 0n) {\n    throw new Error('amountIn must be non-negative');\n  }\n  if (\n    !Number.isInteger(swapFeeBps) ||\n    swapFeeBps < 0 ||\n    swapFeeBps > Number(BPS_DENOM)\n  ) {\n    throw new Error('swapFeeBps must be an integer from 0 to 10000');\n  }\n\n  return ceilDiv(amountIn * BigInt(swapFeeBps), BPS_DENOM);\n}\n\n/**\n * Returns a human-readable label for a launch phase value.\n * Falls back to the numeric string for any unrecognised phase.\n */\nexport function phaseLabel(phase: number): string {\n  switch (phase) {\n    case PHASE_TRADING:\n      return 'TRADING';\n    case PHASE_MIGRATED:\n      return 'MIGRATED';\n    case PHASE_ABORTED:\n      return 'ABORTED';\n    default:\n      return String(phase);\n  }\n}\n","import type { Address, ReadonlyUint8Array } from '@solana/kit';\n\nimport {\n  getAddressFromRemainingAccount,\n  type AddressOrTransactionSigner,\n  type RemainingAccount,\n} from '../core/accounts.js';\nimport {\n  type CosignerGateExpiryArgs,\n  encodeCosignerGateExpiryPayload,\n} from './gate.js';\nimport { computeRemainingAccountsHash } from '../initializer/helpers.js';\nimport {\n  DYNAMIC_FEE_SCHEDULE_HEADER_LEN,\n  DYNAMIC_FEE_SCHEDULE_LEN,\n  DYNAMIC_FEE_SCHEDULE_MAGIC,\n  DYNAMIC_FEE_SCHEDULE_MAX_BPS,\n  DYNAMIC_FEE_SCHEDULE_VERSION,\n  GATE_EXPIRY_DISABLED,\n} from './constants.js';\n\nconst MAX_I64 = (1n << 63n) - 1n;\nconst MAX_U32 = (1n << 32n) - 1n;\n\nexport type DynamicFeeScheduleArgs = {\n  /**\n   * Unix timestamp for the schedule start. Use 0 to let the hook normalize the\n   * start to the launch creation timestamp during BEFORE_CREATE.\n   */\n  startingTime: bigint | number;\n  startFeeBps: number;\n  endFeeBps: number;\n  durationSeconds: bigint | number;\n};\n\nexport type DopplerLaunchHookV1PayloadArgs = {\n  schedule?: DynamicFeeScheduleArgs | null;\n  gateExpiry?: CosignerGateExpiryArgs | null;\n};\n\nexport type DopplerLaunchHookV1RemainingAccounts = {\n  signedHookRemainingAccounts: RemainingAccount[];\n  unsignedHookRemainingAccounts: Address[];\n  hookRemainingAccountsHash: Uint8Array;\n};\n\nfunction toBigInt(value: bigint | number): bigint {\n  return typeof value === 'bigint' ? value : BigInt(value);\n}\n\nfunction assertU16Bps(label: string, value: number): void {\n  if (\n    !Number.isInteger(value) ||\n    value < 0 ||\n    value > DYNAMIC_FEE_SCHEDULE_MAX_BPS\n  ) {\n    throw new Error(`${label} must be an integer between 0 and 10000`);\n  }\n}\n\nfunction writeI64Le(bytes: Uint8Array, offset: number, value: bigint): void {\n  const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);\n  view.setBigInt64(offset, value, true);\n}\n\nfunction writeU16Le(bytes: Uint8Array, offset: number, value: number): void {\n  const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);\n  view.setUint16(offset, value, true);\n}\n\nfunction writeU32Le(bytes: Uint8Array, offset: number, value: bigint): void {\n  const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);\n  view.setUint32(offset, Number(value), true);\n}\n\nexport function validateDynamicFeeScheduleArgs(\n  schedule: DynamicFeeScheduleArgs,\n): {\n  startingTime: bigint;\n  durationSeconds: bigint;\n} {\n  const startingTime = toBigInt(schedule.startingTime);\n  if (startingTime < 0n || startingTime > MAX_I64) {\n    throw new Error('startingTime must be between 0 and i64::MAX');\n  }\n  assertU16Bps('startFeeBps', schedule.startFeeBps);\n  assertU16Bps('endFeeBps', schedule.endFeeBps);\n  if (schedule.endFeeBps > schedule.startFeeBps) {\n    throw new Error('endFeeBps must be less than or equal to startFeeBps');\n  }\n\n  const durationSeconds = toBigInt(schedule.durationSeconds);\n  if (durationSeconds < 0n || durationSeconds > MAX_U32) {\n    throw new Error('durationSeconds must be between 0 and u32::MAX');\n  }\n  if (schedule.startFeeBps > schedule.endFeeBps && durationSeconds === 0n) {\n    throw new Error('durationSeconds must be nonzero for decaying schedules');\n  }\n\n  return { startingTime, durationSeconds };\n}\n\nexport function encodeDynamicFeeSchedule(\n  schedule: DynamicFeeScheduleArgs,\n): Uint8Array {\n  const { startingTime, durationSeconds } =\n    validateDynamicFeeScheduleArgs(schedule);\n  const payload = new Uint8Array(DYNAMIC_FEE_SCHEDULE_LEN);\n\n  payload.set(DYNAMIC_FEE_SCHEDULE_MAGIC, 0);\n  payload[8] = DYNAMIC_FEE_SCHEDULE_VERSION;\n  writeI64Le(payload, DYNAMIC_FEE_SCHEDULE_HEADER_LEN, startingTime);\n  writeU16Le(payload, 24, schedule.startFeeBps);\n  writeU16Le(payload, 26, schedule.endFeeBps);\n  writeU32Le(payload, 28, durationSeconds);\n\n  return payload;\n}\n\nexport function encodeDopplerLaunchHookV1Payload(\n  args: DopplerLaunchHookV1PayloadArgs = {},\n): Uint8Array {\n  const schedulePayload = args.schedule\n    ? encodeDynamicFeeSchedule(args.schedule)\n    : new Uint8Array();\n  const gatePayload = args.gateExpiry\n    ? encodeCosignerGateExpiryPayload(args.gateExpiry)\n    : new Uint8Array();\n\n  const payload = new Uint8Array(schedulePayload.length + gatePayload.length);\n  payload.set(schedulePayload, 0);\n  payload.set(gatePayload, schedulePayload.length);\n  return payload;\n}\n\nexport function encodeDynamicFeeCosignerGatePayload(args: {\n  value: bigint | number;\n  mode: Exclude<CosignerGateExpiryArgs['mode'], typeof GATE_EXPIRY_DISABLED>;\n  cosigner: Address;\n}): Uint8Array {\n  return encodeCosignerGateExpiryPayload(args);\n}\n\nexport function getDopplerLaunchHookV1RemainingAccounts({\n  namespace,\n  config,\n  cosigner,\n}: {\n  namespace: Address;\n  config?: Address;\n  cosigner?: AddressOrTransactionSigner;\n}): DopplerLaunchHookV1RemainingAccounts {\n  const signedHookRemainingAccounts: RemainingAccount[] = [namespace];\n  if (config && config !== namespace) {\n    signedHookRemainingAccounts.push(config);\n  }\n  if (cosigner) {\n    signedHookRemainingAccounts.push(cosigner);\n  }\n\n  const unsignedHookRemainingAccounts = signedHookRemainingAccounts.map(\n    getAddressFromRemainingAccount,\n  );\n\n  return {\n    signedHookRemainingAccounts,\n    unsignedHookRemainingAccounts,\n    hookRemainingAccountsHash: computeRemainingAccountsHash(\n      unsignedHookRemainingAccounts,\n    ),\n  };\n}\n\nexport function getDopplerLaunchHookV1RemainingAccountAddresses({\n  namespace,\n  config,\n  cosigner,\n}: {\n  namespace: Address;\n  config?: Address;\n  cosigner?: AddressOrTransactionSigner;\n}): Address[] {\n  return getDopplerLaunchHookV1RemainingAccounts({\n    namespace,\n    config,\n    cosigner,\n  }).unsignedHookRemainingAccounts;\n}\n\nexport function isDynamicFeeSchedulePayload(\n  payload: ReadonlyUint8Array,\n): boolean {\n  return (\n    payload.length >= DYNAMIC_FEE_SCHEDULE_LEN &&\n    DYNAMIC_FEE_SCHEDULE_MAGIC.every((byte, index) => payload[index] === byte)\n  );\n}\n","export * from '../generated/dopplerLaunchHookV2/index.js';\nexport * from './config.js';\nexport * from './constants.js';\nexport * from './payload.js';\nexport * from './pda.js';\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  assertAccountExists,\n  assertAccountsExist,\n  combineCodec,\n  decodeAccount,\n  fetchEncodedAccount,\n  fetchEncodedAccounts,\n  fixDecoderSize,\n  fixEncoderSize,\n  getAddressDecoder,\n  getAddressEncoder,\n  getArrayDecoder,\n  getArrayEncoder,\n  getBytesDecoder,\n  getBytesEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU8Decoder,\n  getU8Encoder,\n  transformEncoder,\n  type Account,\n  type Address,\n  type EncodedAccount,\n  type FetchAccountConfig,\n  type FetchAccountsConfig,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n  type MaybeAccount,\n  type MaybeEncodedAccount,\n  type ReadonlyUint8Array,\n} from '@solana/kit';\n\nexport const HOOK_CONFIG_DISCRIMINATOR = new Uint8Array([\n  137, 155, 101, 95, 138, 72, 8, 182,\n]);\n\nexport function getHookConfigDiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(HOOK_CONFIG_DISCRIMINATOR);\n}\n\nexport type HookConfig = {\n  discriminator: ReadonlyUint8Array;\n  adminAuthority: Address;\n  initializerProgram: Address;\n  rehypeRouterProgram: Address;\n  cosignerCount: number;\n  bump: number;\n  version: number;\n  reserved: ReadonlyUint8Array;\n  cosigners: Array<Address>;\n};\n\nexport type HookConfigArgs = {\n  adminAuthority: Address;\n  initializerProgram: Address;\n  rehypeRouterProgram: Address;\n  cosignerCount: number;\n  bump: number;\n  version: number;\n  reserved: ReadonlyUint8Array;\n  cosigners: Array<Address>;\n};\n\n/** Gets the encoder for {@link HookConfigArgs} account data. */\nexport function getHookConfigEncoder(): FixedSizeEncoder<HookConfigArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['adminAuthority', getAddressEncoder()],\n      ['initializerProgram', getAddressEncoder()],\n      ['rehypeRouterProgram', getAddressEncoder()],\n      ['cosignerCount', getU8Encoder()],\n      ['bump', getU8Encoder()],\n      ['version', getU8Encoder()],\n      ['reserved', fixEncoderSize(getBytesEncoder(), 29)],\n      ['cosigners', getArrayEncoder(getAddressEncoder(), { size: 32 })],\n    ]),\n    (value) => ({ ...value, discriminator: HOOK_CONFIG_DISCRIMINATOR }),\n  );\n}\n\n/** Gets the decoder for {@link HookConfig} account data. */\nexport function getHookConfigDecoder(): FixedSizeDecoder<HookConfig> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['adminAuthority', getAddressDecoder()],\n    ['initializerProgram', getAddressDecoder()],\n    ['rehypeRouterProgram', getAddressDecoder()],\n    ['cosignerCount', getU8Decoder()],\n    ['bump', getU8Decoder()],\n    ['version', getU8Decoder()],\n    ['reserved', fixDecoderSize(getBytesDecoder(), 29)],\n    ['cosigners', getArrayDecoder(getAddressDecoder(), { size: 32 })],\n  ]);\n}\n\n/** Gets the codec for {@link HookConfig} account data. */\nexport function getHookConfigCodec(): FixedSizeCodec<\n  HookConfigArgs,\n  HookConfig\n> {\n  return combineCodec(getHookConfigEncoder(), getHookConfigDecoder());\n}\n\nexport function decodeHookConfig<TAddress extends string = string>(\n  encodedAccount: EncodedAccount<TAddress>,\n): Account<HookConfig, TAddress>;\nexport function decodeHookConfig<TAddress extends string = string>(\n  encodedAccount: MaybeEncodedAccount<TAddress>,\n): MaybeAccount<HookConfig, TAddress>;\nexport function decodeHookConfig<TAddress extends string = string>(\n  encodedAccount: EncodedAccount<TAddress> | MaybeEncodedAccount<TAddress>,\n): Account<HookConfig, TAddress> | MaybeAccount<HookConfig, TAddress> {\n  return decodeAccount(\n    encodedAccount as MaybeEncodedAccount<TAddress>,\n    getHookConfigDecoder(),\n  );\n}\n\nexport async function fetchHookConfig<TAddress extends string = string>(\n  rpc: Parameters<typeof fetchEncodedAccount>[0],\n  address: Address<TAddress>,\n  config?: FetchAccountConfig,\n): Promise<Account<HookConfig, TAddress>> {\n  const maybeAccount = await fetchMaybeHookConfig(rpc, address, config);\n  assertAccountExists(maybeAccount);\n  return maybeAccount;\n}\n\nexport async function fetchMaybeHookConfig<TAddress extends string = string>(\n  rpc: Parameters<typeof fetchEncodedAccount>[0],\n  address: Address<TAddress>,\n  config?: FetchAccountConfig,\n): Promise<MaybeAccount<HookConfig, TAddress>> {\n  const maybeAccount = await fetchEncodedAccount(rpc, address, config);\n  return decodeHookConfig(maybeAccount);\n}\n\nexport async function fetchAllHookConfig(\n  rpc: Parameters<typeof fetchEncodedAccounts>[0],\n  addresses: Array<Address>,\n  config?: FetchAccountsConfig,\n): Promise<Account<HookConfig>[]> {\n  const maybeAccounts = await fetchAllMaybeHookConfig(rpc, addresses, config);\n  assertAccountsExist(maybeAccounts);\n  return maybeAccounts;\n}\n\nexport async function fetchAllMaybeHookConfig(\n  rpc: Parameters<typeof fetchEncodedAccounts>[0],\n  addresses: Array<Address>,\n  config?: FetchAccountsConfig,\n): Promise<MaybeAccount<HookConfig>[]> {\n  const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config);\n  return maybeAccounts.map((maybeAccount) => decodeHookConfig(maybeAccount));\n}\n\nexport function getHookConfigSize(): number {\n  return 1160;\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getAddressDecoder,\n  getAddressEncoder,\n  getBytesDecoder,\n  getBytesEncoder,\n  getProgramDerivedAddress,\n  getStructDecoder,\n  getStructEncoder,\n  SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS,\n  SolanaError,\n  transformEncoder,\n  type AccountMeta,\n  type AccountSignerMeta,\n  type Address,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n  type Instruction,\n  type InstructionWithAccounts,\n  type InstructionWithData,\n  type ReadonlySignerAccount,\n  type ReadonlyUint8Array,\n  type TransactionSigner,\n  type WritableAccount,\n} from '@solana/kit';\nimport {\n  getAccountMetaFactory,\n  type ResolvedInstructionAccount,\n} from '@solana/program-client-core';\nimport { DOPPLER_LAUNCH_HOOK_V2_PROGRAM_ADDRESS } from '../programs';\n\nexport const ADD_COSIGNER_DISCRIMINATOR = new Uint8Array([\n  17, 34, 183, 119, 202, 255, 218, 233,\n]);\n\nexport function getAddCosignerDiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(\n    ADD_COSIGNER_DISCRIMINATOR,\n  );\n}\n\nexport type AddCosignerInstruction<\n  TProgram extends string = typeof DOPPLER_LAUNCH_HOOK_V2_PROGRAM_ADDRESS,\n  TAccountAdminAuthority extends string | AccountMeta<string> = string,\n  TAccountConfig extends string | AccountMeta<string> = string,\n  TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n  InstructionWithData<ReadonlyUint8Array> &\n  InstructionWithAccounts<\n    [\n      TAccountAdminAuthority extends string\n        ? ReadonlySignerAccount<TAccountAdminAuthority> &\n            AccountSignerMeta<TAccountAdminAuthority>\n        : TAccountAdminAuthority,\n      TAccountConfig extends string\n        ? WritableAccount<TAccountConfig>\n        : TAccountConfig,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type AddCosignerInstructionData = {\n  discriminator: ReadonlyUint8Array;\n  cosigner: Address;\n};\n\nexport type AddCosignerInstructionDataArgs = { cosigner: Address };\n\nexport function getAddCosignerInstructionDataEncoder(): FixedSizeEncoder<AddCosignerInstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['cosigner', getAddressEncoder()],\n    ]),\n    (value) => ({ ...value, discriminator: ADD_COSIGNER_DISCRIMINATOR }),\n  );\n}\n\nexport function getAddCosignerInstructionDataDecoder(): FixedSizeDecoder<AddCosignerInstructionData> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['cosigner', getAddressDecoder()],\n  ]);\n}\n\nexport function getAddCosignerInstructionDataCodec(): FixedSizeCodec<\n  AddCosignerInstructionDataArgs,\n  AddCosignerInstructionData\n> {\n  return combineCodec(\n    getAddCosignerInstructionDataEncoder(),\n    getAddCosignerInstructionDataDecoder(),\n  );\n}\n\nexport type AddCosignerAsyncInput<\n  TAccountAdminAuthority extends string = string,\n  TAccountConfig extends string = string,\n> = {\n  adminAuthority: TransactionSigner<TAccountAdminAuthority>;\n  config?: Address<TAccountConfig>;\n  cosigner: AddCosignerInstructionDataArgs['cosigner'];\n};\n\nexport async function getAddCosignerInstructionAsync<\n  TAccountAdminAuthority extends string,\n  TAccountConfig extends string,\n  TProgramAddress extends Address =\n    typeof DOPPLER_LAUNCH_HOOK_V2_PROGRAM_ADDRESS,\n>(\n  input: AddCosignerAsyncInput<TAccountAdminAuthority, TAccountConfig>,\n  config?: { programAddress?: TProgramAddress },\n): Promise<\n  AddCosignerInstruction<\n    TProgramAddress,\n    TAccountAdminAuthority,\n    TAccountConfig\n  >\n> {\n  // Program address.\n  const programAddress =\n    config?.programAddress ?? DOPPLER_LAUNCH_HOOK_V2_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    adminAuthority: { value: input.adminAuthority ?? null, isWritable: false },\n    config: { value: input.config ?? null, isWritable: true },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedInstructionAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolve default values.\n  if (!accounts.config.value) {\n    accounts.config.value = await getProgramDerivedAddress({\n      programAddress,\n      seeds: [\n        getBytesEncoder().encode(\n          new Uint8Array([\n            100, 111, 112, 112, 108, 101, 114, 95, 108, 97, 117, 110, 99, 104,\n            95, 104, 111, 111, 107, 95, 118, 50,\n          ]),\n        ),\n      ],\n    });\n  }\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta('adminAuthority', accounts.adminAuthority),\n      getAccountMeta('config', accounts.config),\n    ],\n    data: getAddCosignerInstructionDataEncoder().encode(\n      args as AddCosignerInstructionDataArgs,\n    ),\n    programAddress,\n  } as AddCosignerInstruction<\n    TProgramAddress,\n    TAccountAdminAuthority,\n    TAccountConfig\n  >);\n}\n\nexport type AddCosignerInput<\n  TAccountAdminAuthority extends string = string,\n  TAccountConfig extends string = string,\n> = {\n  adminAuthority: TransactionSigner<TAccountAdminAuthority>;\n  config: Address<TAccountConfig>;\n  cosigner: AddCosignerInstructionDataArgs['cosigner'];\n};\n\nexport function getAddCosignerInstruction<\n  TAccountAdminAuthority extends string,\n  TAccountConfig extends string,\n  TProgramAddress extends Address =\n    typeof DOPPLER_LAUNCH_HOOK_V2_PROGRAM_ADDRESS,\n>(\n  input: AddCosignerInput<TAccountAdminAuthority, TAccountConfig>,\n  config?: { programAddress?: TProgramAddress },\n): AddCosignerInstruction<\n  TProgramAddress,\n  TAccountAdminAuthority,\n  TAccountConfig\n> {\n  // Program address.\n  const programAddress =\n    config?.programAddress ?? DOPPLER_LAUNCH_HOOK_V2_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    adminAuthority: { value: input.adminAuthority ?? null, isWritable: false },\n    config: { value: input.config ?? null, isWritable: true },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedInstructionAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta('adminAuthority', accounts.adminAuthority),\n      getAccountMeta('config', accounts.config),\n    ],\n    data: getAddCosignerInstructionDataEncoder().encode(\n      args as AddCosignerInstructionDataArgs,\n    ),\n    programAddress,\n  } as AddCosignerInstruction<\n    TProgramAddress,\n    TAccountAdminAuthority,\n    TAccountConfig\n  >);\n}\n\nexport type ParsedAddCosignerInstruction<\n  TProgram extends string = typeof DOPPLER_LAUNCH_HOOK_V2_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    adminAuthority: TAccountMetas[0];\n    config: TAccountMetas[1];\n  };\n  data: AddCosignerInstructionData;\n};\n\nexport function parseAddCosignerInstruction<\n  TProgram extends string,\n  TAccountMetas extends readonly AccountMeta[],\n>(\n  instruction: Instruction<TProgram> &\n    InstructionWithAccounts<TAccountMetas> &\n    InstructionWithData<ReadonlyUint8Array>,\n): ParsedAddCosignerInstruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 2) {\n    throw new SolanaError(\n      SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS,\n      {\n        actualAccountMetas: instruction.accounts.length,\n        expectedAccountMetas: 2,\n      },\n    );\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: { adminAuthority: getNextAccount(), config: getNextAccount() },\n    data: getAddCosignerInstructionDataDecoder().decode(instruction.data),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getAddressDecoder,\n  getAddressEncoder,\n  getArrayDecoder,\n  getArrayEncoder,\n  getBytesDecoder,\n  getBytesEncoder,\n  getProgramDerivedAddress,\n  getStructDecoder,\n  getStructEncoder,\n  SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS,\n  SolanaError,\n  transformEncoder,\n  type AccountMeta,\n  type AccountSignerMeta,\n  type Address,\n  type Codec,\n  type Decoder,\n  type Encoder,\n  type Instruction,\n  type InstructionWithAccounts,\n  type InstructionWithData,\n  type ReadonlyAccount,\n  type ReadonlySignerAccount,\n  type ReadonlyUint8Array,\n  type TransactionSigner,\n  type WritableAccount,\n  type WritableSignerAccount,\n} from '@solana/kit';\nimport {\n  getAccountMetaFactory,\n  type ResolvedInstructionAccount,\n} from '@solana/program-client-core';\nimport { DOPPLER_LAUNCH_HOOK_V2_PROGRAM_ADDRESS } from '../programs';\n\nexport const INITIALIZE_CONFIG_DISCRIMINATOR = new Uint8Array([\n  208, 127, 21, 1, 194, 190, 196, 70,\n]);\n\nexport function getInitializeConfigDiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(\n    INITIALIZE_CONFIG_DISCRIMINATOR,\n  );\n}\n\nexport type InitializeConfigInstruction<\n  TProgram extends string = typeof DOPPLER_LAUNCH_HOOK_V2_PROGRAM_ADDRESS,\n  TAccountPayer extends string | AccountMeta<string> = string,\n  TAccountAdminAuthority extends string | AccountMeta<string> = string,\n  TAccountInitializerProgram extends string | AccountMeta<string> = string,\n  TAccountRehypeRouterProgram extends string | AccountMeta<string> = string,\n  TAccountConfig extends string | AccountMeta<string> = string,\n  TAccountProgramData extends string | AccountMeta<string> = string,\n  TAccountSystemProgram extends string | AccountMeta<string> =\n    '11111111111111111111111111111111',\n  TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n  InstructionWithData<ReadonlyUint8Array> &\n  InstructionWithAccounts<\n    [\n      TAccountPayer extends string\n        ? WritableSignerAccount<TAccountPayer> &\n            AccountSignerMeta<TAccountPayer>\n        : TAccountPayer,\n      TAccountAdminAuthority extends string\n        ? ReadonlySignerAccount<TAccountAdminAuthority> &\n            AccountSignerMeta<TAccountAdminAuthority>\n        : TAccountAdminAuthority,\n      TAccountInitializerProgram extends string\n        ? ReadonlyAccount<TAccountInitializerProgram>\n        : TAccountInitializerProgram,\n      TAccountRehypeRouterProgram extends string\n        ? ReadonlyAccount<TAccountRehypeRouterProgram>\n        : TAccountRehypeRouterProgram,\n      TAccountConfig extends string\n        ? WritableAccount<TAccountConfig>\n        : TAccountConfig,\n      TAccountProgramData extends string\n        ? ReadonlyAccount<TAccountProgramData>\n        : TAccountProgramData,\n      TAccountSystemProgram extends string\n        ? ReadonlyAccount<TAccountSystemProgram>\n        : TAccountSystemProgram,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type InitializeConfigInstructionData = {\n  discriminator: ReadonlyUint8Array;\n  cosigners: Array<Address>;\n};\n\nexport type InitializeConfigInstructionDataArgs = { cosigners: Array<Address> };\n\nexport function getInitializeConfigInstructionDataEncoder(): Encoder<InitializeConfigInstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['cosigners', getArrayEncoder(getAddressEncoder())],\n    ]),\n    (value) => ({ ...value, discriminator: INITIALIZE_CONFIG_DISCRIMINATOR }),\n  );\n}\n\nexport function getInitializeConfigInstructionDataDecoder(): Decoder<InitializeConfigInstructionData> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['cosigners', getArrayDecoder(getAddressDecoder())],\n  ]);\n}\n\nexport function getInitializeConfigInstructionDataCodec(): Codec<\n  InitializeConfigInstructionDataArgs,\n  InitializeConfigInstructionData\n> {\n  return combineCodec(\n    getInitializeConfigInstructionDataEncoder(),\n    getInitializeConfigInstructionDataDecoder(),\n  );\n}\n\nexport type InitializeConfigAsyncInput<\n  TAccountPayer extends string = string,\n  TAccountAdminAuthority extends string = string,\n  TAccountInitializerProgram extends string = string,\n  TAccountRehypeRouterProgram extends string = string,\n  TAccountConfig extends string = string,\n  TAccountProgramData extends string = string,\n  TAccountSystemProgram extends string = string,\n> = {\n  payer: TransactionSigner<TAccountPayer>;\n  adminAuthority: TransactionSigner<TAccountAdminAuthority>;\n  initializerProgram: Address<TAccountInitializerProgram>;\n  rehypeRouterProgram: Address<TAccountRehypeRouterProgram>;\n  config?: Address<TAccountConfig>;\n  programData: Address<TAccountProgramData>;\n  systemProgram?: Address<TAccountSystemProgram>;\n  cosigners: InitializeConfigInstructionDataArgs['cosigners'];\n};\n\nexport async function getInitializeConfigInstructionAsync<\n  TAccountPayer extends string,\n  TAccountAdminAuthority extends string,\n  TAccountInitializerProgram extends string,\n  TAccountRehypeRouterProgram extends string,\n  TAccountConfig extends string,\n  TAccountProgramData extends string,\n  TAccountSystemProgram extends string,\n  TProgramAddress extends Address =\n    typeof DOPPLER_LAUNCH_HOOK_V2_PROGRAM_ADDRESS,\n>(\n  input: InitializeConfigAsyncInput<\n    TAccountPayer,\n    TAccountAdminAuthority,\n    TAccountInitializerProgram,\n    TAccountRehypeRouterProgram,\n    TAccountConfig,\n    TAccountProgramData,\n    TAccountSystemProgram\n  >,\n  config?: { programAddress?: TProgramAddress },\n): Promise<\n  InitializeConfigInstruction<\n    TProgramAddress,\n    TAccountPayer,\n    TAccountAdminAuthority,\n    TAccountInitializerProgram,\n    TAccountRehypeRouterProgram,\n    TAccountConfig,\n    TAccountProgramData,\n    TAccountSystemProgram\n  >\n> {\n  // Program address.\n  const programAddress =\n    config?.programAddress ?? DOPPLER_LAUNCH_HOOK_V2_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    payer: { value: input.payer ?? null, isWritable: true },\n    adminAuthority: { value: input.adminAuthority ?? null, isWritable: false },\n    initializerProgram: {\n      value: input.initializerProgram ?? null,\n      isWritable: false,\n    },\n    rehypeRouterProgram: {\n      value: input.rehypeRouterProgram ?? null,\n      isWritable: false,\n    },\n    config: { value: input.config ?? null, isWritable: true },\n    programData: { value: input.programData ?? null, isWritable: false },\n    systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedInstructionAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolve default values.\n  if (!accounts.config.value) {\n    accounts.config.value = await getProgramDerivedAddress({\n      programAddress,\n      seeds: [\n        getBytesEncoder().encode(\n          new Uint8Array([\n            100, 111, 112, 112, 108, 101, 114, 95, 108, 97, 117, 110, 99, 104,\n            95, 104, 111, 111, 107, 95, 118, 50,\n          ]),\n        ),\n      ],\n    });\n  }\n  if (!accounts.systemProgram.value) {\n    accounts.systemProgram.value =\n      '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n  }\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta('payer', accounts.payer),\n      getAccountMeta('adminAuthority', accounts.adminAuthority),\n      getAccountMeta('initializerProgram', accounts.initializerProgram),\n      getAccountMeta('rehypeRouterProgram', accounts.rehypeRouterProgram),\n      getAccountMeta('config', accounts.config),\n      getAccountMeta('programData', accounts.programData),\n      getAccountMeta('systemProgram', accounts.systemProgram),\n    ],\n    data: getInitializeConfigInstructionDataEncoder().encode(\n      args as InitializeConfigInstructionDataArgs,\n    ),\n    programAddress,\n  } as InitializeConfigInstruction<\n    TProgramAddress,\n    TAccountPayer,\n    TAccountAdminAuthority,\n    TAccountInitializerProgram,\n    TAccountRehypeRouterProgram,\n    TAccountConfig,\n    TAccountProgramData,\n    TAccountSystemProgram\n  >);\n}\n\nexport type InitializeConfigInput<\n  TAccountPayer extends string = string,\n  TAccountAdminAuthority extends string = string,\n  TAccountInitializerProgram extends string = string,\n  TAccountRehypeRouterProgram extends string = string,\n  TAccountConfig extends string = string,\n  TAccountProgramData extends string = string,\n  TAccountSystemProgram extends string = string,\n> = {\n  payer: TransactionSigner<TAccountPayer>;\n  adminAuthority: TransactionSigner<TAccountAdminAuthority>;\n  initializerProgram: Address<TAccountInitializerProgram>;\n  rehypeRouterProgram: Address<TAccountRehypeRouterProgram>;\n  config: Address<TAccountConfig>;\n  programData: Address<TAccountProgramData>;\n  systemProgram?: Address<TAccountSystemProgram>;\n  cosigners: InitializeConfigInstructionDataArgs['cosigners'];\n};\n\nexport function getInitializeConfigInstruction<\n  TAccountPayer extends string,\n  TAccountAdminAuthority extends string,\n  TAccountInitializerProgram extends string,\n  TAccountRehypeRouterProgram extends string,\n  TAccountConfig extends string,\n  TAccountProgramData extends string,\n  TAccountSystemProgram extends string,\n  TProgramAddress extends Address =\n    typeof DOPPLER_LAUNCH_HOOK_V2_PROGRAM_ADDRESS,\n>(\n  input: InitializeConfigInput<\n    TAccountPayer,\n    TAccountAdminAuthority,\n    TAccountInitializerProgram,\n    TAccountRehypeRouterProgram,\n    TAccountConfig,\n    TAccountProgramData,\n    TAccountSystemProgram\n  >,\n  config?: { programAddress?: TProgramAddress },\n): InitializeConfigInstruction<\n  TProgramAddress,\n  TAccountPayer,\n  TAccountAdminAuthority,\n  TAccountInitializerProgram,\n  TAccountRehypeRouterProgram,\n  TAccountConfig,\n  TAccountProgramData,\n  TAccountSystemProgram\n> {\n  // Program address.\n  const programAddress =\n    config?.programAddress ?? DOPPLER_LAUNCH_HOOK_V2_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    payer: { value: input.payer ?? null, isWritable: true },\n    adminAuthority: { value: input.adminAuthority ?? null, isWritable: false },\n    initializerProgram: {\n      value: input.initializerProgram ?? null,\n      isWritable: false,\n    },\n    rehypeRouterProgram: {\n      value: input.rehypeRouterProgram ?? null,\n      isWritable: false,\n    },\n    config: { value: input.config ?? null, isWritable: true },\n    programData: { value: input.programData ?? null, isWritable: false },\n    systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedInstructionAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolve default values.\n  if (!accounts.systemProgram.value) {\n    accounts.systemProgram.value =\n      '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n  }\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta('payer', accounts.payer),\n      getAccountMeta('adminAuthority', accounts.adminAuthority),\n      getAccountMeta('initializerProgram', accounts.initializerProgram),\n      getAccountMeta('rehypeRouterProgram', accounts.rehypeRouterProgram),\n      getAccountMeta('config', accounts.config),\n      getAccountMeta('programData', accounts.programData),\n      getAccountMeta('systemProgram', accounts.systemProgram),\n    ],\n    data: getInitializeConfigInstructionDataEncoder().encode(\n      args as InitializeConfigInstructionDataArgs,\n    ),\n    programAddress,\n  } as InitializeConfigInstruction<\n    TProgramAddress,\n    TAccountPayer,\n    TAccountAdminAuthority,\n    TAccountInitializerProgram,\n    TAccountRehypeRouterProgram,\n    TAccountConfig,\n    TAccountProgramData,\n    TAccountSystemProgram\n  >);\n}\n\nexport type ParsedInitializeConfigInstruction<\n  TProgram extends string = typeof DOPPLER_LAUNCH_HOOK_V2_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    payer: TAccountMetas[0];\n    adminAuthority: TAccountMetas[1];\n    initializerProgram: TAccountMetas[2];\n    rehypeRouterProgram: TAccountMetas[3];\n    config: TAccountMetas[4];\n    programData: TAccountMetas[5];\n    systemProgram: TAccountMetas[6];\n  };\n  data: InitializeConfigInstructionData;\n};\n\nexport function parseInitializeConfigInstruction<\n  TProgram extends string,\n  TAccountMetas extends readonly AccountMeta[],\n>(\n  instruction: Instruction<TProgram> &\n    InstructionWithAccounts<TAccountMetas> &\n    InstructionWithData<ReadonlyUint8Array>,\n): ParsedInitializeConfigInstruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 7) {\n    throw new SolanaError(\n      SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS,\n      {\n        actualAccountMetas: instruction.accounts.length,\n        expectedAccountMetas: 7,\n      },\n    );\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: {\n      payer: getNextAccount(),\n      adminAuthority: getNextAccount(),\n      initializerProgram: getNextAccount(),\n      rehypeRouterProgram: getNextAccount(),\n      config: getNextAccount(),\n      programData: getNextAccount(),\n      systemProgram: getNextAccount(),\n    },\n    data: getInitializeConfigInstructionDataDecoder().decode(instruction.data),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getAddressDecoder,\n  getAddressEncoder,\n  getBytesDecoder,\n  getBytesEncoder,\n  getProgramDerivedAddress,\n  getStructDecoder,\n  getStructEncoder,\n  SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS,\n  SolanaError,\n  transformEncoder,\n  type AccountMeta,\n  type AccountSignerMeta,\n  type Address,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n  type Instruction,\n  type InstructionWithAccounts,\n  type InstructionWithData,\n  type ReadonlySignerAccount,\n  type ReadonlyUint8Array,\n  type TransactionSigner,\n  type WritableAccount,\n} from '@solana/kit';\nimport {\n  getAccountMetaFactory,\n  type ResolvedInstructionAccount,\n} from '@solana/program-client-core';\nimport { DOPPLER_LAUNCH_HOOK_V2_PROGRAM_ADDRESS } from '../programs';\n\nexport const REMOVE_COSIGNER_DISCRIMINATOR = new Uint8Array([\n  174, 11, 171, 252, 179, 99, 220, 27,\n]);\n\nexport function getRemoveCosignerDiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(\n    REMOVE_COSIGNER_DISCRIMINATOR,\n  );\n}\n\nexport type RemoveCosignerInstruction<\n  TProgram extends string = typeof DOPPLER_LAUNCH_HOOK_V2_PROGRAM_ADDRESS,\n  TAccountAdminAuthority extends string | AccountMeta<string> = string,\n  TAccountConfig extends string | AccountMeta<string> = string,\n  TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n  InstructionWithData<ReadonlyUint8Array> &\n  InstructionWithAccounts<\n    [\n      TAccountAdminAuthority extends string\n        ? ReadonlySignerAccount<TAccountAdminAuthority> &\n            AccountSignerMeta<TAccountAdminAuthority>\n        : TAccountAdminAuthority,\n      TAccountConfig extends string\n        ? WritableAccount<TAccountConfig>\n        : TAccountConfig,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type RemoveCosignerInstructionData = {\n  discriminator: ReadonlyUint8Array;\n  cosigner: Address;\n};\n\nexport type RemoveCosignerInstructionDataArgs = { cosigner: Address };\n\nexport function getRemoveCosignerInstructionDataEncoder(): FixedSizeEncoder<RemoveCosignerInstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['cosigner', getAddressEncoder()],\n    ]),\n    (value) => ({ ...value, discriminator: REMOVE_COSIGNER_DISCRIMINATOR }),\n  );\n}\n\nexport function getRemoveCosignerInstructionDataDecoder(): FixedSizeDecoder<RemoveCosignerInstructionData> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['cosigner', getAddressDecoder()],\n  ]);\n}\n\nexport function getRemoveCosignerInstructionDataCodec(): FixedSizeCodec<\n  RemoveCosignerInstructionDataArgs,\n  RemoveCosignerInstructionData\n> {\n  return combineCodec(\n    getRemoveCosignerInstructionDataEncoder(),\n    getRemoveCosignerInstructionDataDecoder(),\n  );\n}\n\nexport type RemoveCosignerAsyncInput<\n  TAccountAdminAuthority extends string = string,\n  TAccountConfig extends string = string,\n> = {\n  adminAuthority: TransactionSigner<TAccountAdminAuthority>;\n  config?: Address<TAccountConfig>;\n  cosigner: RemoveCosignerInstructionDataArgs['cosigner'];\n};\n\nexport async function getRemoveCosignerInstructionAsync<\n  TAccountAdminAuthority extends string,\n  TAccountConfig extends string,\n  TProgramAddress extends Address =\n    typeof DOPPLER_LAUNCH_HOOK_V2_PROGRAM_ADDRESS,\n>(\n  input: RemoveCosignerAsyncInput<TAccountAdminAuthority, TAccountConfig>,\n  config?: { programAddress?: TProgramAddress },\n): Promise<\n  RemoveCosignerInstruction<\n    TProgramAddress,\n    TAccountAdminAuthority,\n    TAccountConfig\n  >\n> {\n  // Program address.\n  const programAddress =\n    config?.programAddress ?? DOPPLER_LAUNCH_HOOK_V2_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    adminAuthority: { value: input.adminAuthority ?? null, isWritable: false },\n    config: { value: input.config ?? null, isWritable: true },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedInstructionAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolve default values.\n  if (!accounts.config.value) {\n    accounts.config.value = await getProgramDerivedAddress({\n      programAddress,\n      seeds: [\n        getBytesEncoder().encode(\n          new Uint8Array([\n            100, 111, 112, 112, 108, 101, 114, 95, 108, 97, 117, 110, 99, 104,\n            95, 104, 111, 111, 107, 95, 118, 50,\n          ]),\n        ),\n      ],\n    });\n  }\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta('adminAuthority', accounts.adminAuthority),\n      getAccountMeta('config', accounts.config),\n    ],\n    data: getRemoveCosignerInstructionDataEncoder().encode(\n      args as RemoveCosignerInstructionDataArgs,\n    ),\n    programAddress,\n  } as RemoveCosignerInstruction<\n    TProgramAddress,\n    TAccountAdminAuthority,\n    TAccountConfig\n  >);\n}\n\nexport type RemoveCosignerInput<\n  TAccountAdminAuthority extends string = string,\n  TAccountConfig extends string = string,\n> = {\n  adminAuthority: TransactionSigner<TAccountAdminAuthority>;\n  config: Address<TAccountConfig>;\n  cosigner: RemoveCosignerInstructionDataArgs['cosigner'];\n};\n\nexport function getRemoveCosignerInstruction<\n  TAccountAdminAuthority extends string,\n  TAccountConfig extends string,\n  TProgramAddress extends Address =\n    typeof DOPPLER_LAUNCH_HOOK_V2_PROGRAM_ADDRESS,\n>(\n  input: RemoveCosignerInput<TAccountAdminAuthority, TAccountConfig>,\n  config?: { programAddress?: TProgramAddress },\n): RemoveCosignerInstruction<\n  TProgramAddress,\n  TAccountAdminAuthority,\n  TAccountConfig\n> {\n  // Program address.\n  const programAddress =\n    config?.programAddress ?? DOPPLER_LAUNCH_HOOK_V2_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    adminAuthority: { value: input.adminAuthority ?? null, isWritable: false },\n    config: { value: input.config ?? null, isWritable: true },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedInstructionAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta('adminAuthority', accounts.adminAuthority),\n      getAccountMeta('config', accounts.config),\n    ],\n    data: getRemoveCosignerInstructionDataEncoder().encode(\n      args as RemoveCosignerInstructionDataArgs,\n    ),\n    programAddress,\n  } as RemoveCosignerInstruction<\n    TProgramAddress,\n    TAccountAdminAuthority,\n    TAccountConfig\n  >);\n}\n\nexport type ParsedRemoveCosignerInstruction<\n  TProgram extends string = typeof DOPPLER_LAUNCH_HOOK_V2_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    adminAuthority: TAccountMetas[0];\n    config: TAccountMetas[1];\n  };\n  data: RemoveCosignerInstructionData;\n};\n\nexport function parseRemoveCosignerInstruction<\n  TProgram extends string,\n  TAccountMetas extends readonly AccountMeta[],\n>(\n  instruction: Instruction<TProgram> &\n    InstructionWithAccounts<TAccountMetas> &\n    InstructionWithData<ReadonlyUint8Array>,\n): ParsedRemoveCosignerInstruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 2) {\n    throw new SolanaError(\n      SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS,\n      {\n        actualAccountMetas: instruction.accounts.length,\n        expectedAccountMetas: 2,\n      },\n    );\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: { adminAuthority: getNextAccount(), config: getNextAccount() },\n    data: getRemoveCosignerInstructionDataDecoder().decode(instruction.data),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getAddressDecoder,\n  getAddressEncoder,\n  getBytesDecoder,\n  getBytesEncoder,\n  getProgramDerivedAddress,\n  getStructDecoder,\n  getStructEncoder,\n  SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS,\n  SolanaError,\n  transformEncoder,\n  type AccountMeta,\n  type AccountSignerMeta,\n  type Address,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n  type Instruction,\n  type InstructionWithAccounts,\n  type InstructionWithData,\n  type ReadonlySignerAccount,\n  type ReadonlyUint8Array,\n  type TransactionSigner,\n  type WritableAccount,\n} from '@solana/kit';\nimport {\n  getAccountMetaFactory,\n  type ResolvedInstructionAccount,\n} from '@solana/program-client-core';\nimport { DOPPLER_LAUNCH_HOOK_V2_PROGRAM_ADDRESS } from '../programs';\n\nexport const SET_AUTHORITY_DISCRIMINATOR = new Uint8Array([\n  133, 250, 37, 21, 110, 163, 26, 121,\n]);\n\nexport function getSetAuthorityDiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(\n    SET_AUTHORITY_DISCRIMINATOR,\n  );\n}\n\nexport type SetAuthorityInstruction<\n  TProgram extends string = typeof DOPPLER_LAUNCH_HOOK_V2_PROGRAM_ADDRESS,\n  TAccountAdminAuthority extends string | AccountMeta<string> = string,\n  TAccountConfig extends string | AccountMeta<string> = string,\n  TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n  InstructionWithData<ReadonlyUint8Array> &\n  InstructionWithAccounts<\n    [\n      TAccountAdminAuthority extends string\n        ? ReadonlySignerAccount<TAccountAdminAuthority> &\n            AccountSignerMeta<TAccountAdminAuthority>\n        : TAccountAdminAuthority,\n      TAccountConfig extends string\n        ? WritableAccount<TAccountConfig>\n        : TAccountConfig,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type SetAuthorityInstructionData = {\n  discriminator: ReadonlyUint8Array;\n  adminAuthority: Address;\n};\n\nexport type SetAuthorityInstructionDataArgs = { adminAuthority: Address };\n\nexport function getSetAuthorityInstructionDataEncoder(): FixedSizeEncoder<SetAuthorityInstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['adminAuthority', getAddressEncoder()],\n    ]),\n    (value) => ({ ...value, discriminator: SET_AUTHORITY_DISCRIMINATOR }),\n  );\n}\n\nexport function getSetAuthorityInstructionDataDecoder(): FixedSizeDecoder<SetAuthorityInstructionData> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['adminAuthority', getAddressDecoder()],\n  ]);\n}\n\nexport function getSetAuthorityInstructionDataCodec(): FixedSizeCodec<\n  SetAuthorityInstructionDataArgs,\n  SetAuthorityInstructionData\n> {\n  return combineCodec(\n    getSetAuthorityInstructionDataEncoder(),\n    getSetAuthorityInstructionDataDecoder(),\n  );\n}\n\nexport type SetAuthorityAsyncInput<\n  TAccountAdminAuthority extends string = string,\n  TAccountConfig extends string = string,\n> = {\n  adminAuthority: TransactionSigner<TAccountAdminAuthority>;\n  config?: Address<TAccountConfig>;\n  adminAuthorityArg: SetAuthorityInstructionDataArgs['adminAuthority'];\n};\n\nexport async function getSetAuthorityInstructionAsync<\n  TAccountAdminAuthority extends string,\n  TAccountConfig extends string,\n  TProgramAddress extends Address =\n    typeof DOPPLER_LAUNCH_HOOK_V2_PROGRAM_ADDRESS,\n>(\n  input: SetAuthorityAsyncInput<TAccountAdminAuthority, TAccountConfig>,\n  config?: { programAddress?: TProgramAddress },\n): Promise<\n  SetAuthorityInstruction<\n    TProgramAddress,\n    TAccountAdminAuthority,\n    TAccountConfig\n  >\n> {\n  // Program address.\n  const programAddress =\n    config?.programAddress ?? DOPPLER_LAUNCH_HOOK_V2_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    adminAuthority: { value: input.adminAuthority ?? null, isWritable: false },\n    config: { value: input.config ?? null, isWritable: true },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedInstructionAccount\n  >;\n\n  // Original args.\n  const args = { ...input, adminAuthority: input.adminAuthorityArg };\n\n  // Resolve default values.\n  if (!accounts.config.value) {\n    accounts.config.value = await getProgramDerivedAddress({\n      programAddress,\n      seeds: [\n        getBytesEncoder().encode(\n          new Uint8Array([\n            100, 111, 112, 112, 108, 101, 114, 95, 108, 97, 117, 110, 99, 104,\n            95, 104, 111, 111, 107, 95, 118, 50,\n          ]),\n        ),\n      ],\n    });\n  }\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta('adminAuthority', accounts.adminAuthority),\n      getAccountMeta('config', accounts.config),\n    ],\n    data: getSetAuthorityInstructionDataEncoder().encode(\n      args as SetAuthorityInstructionDataArgs,\n    ),\n    programAddress,\n  } as SetAuthorityInstruction<\n    TProgramAddress,\n    TAccountAdminAuthority,\n    TAccountConfig\n  >);\n}\n\nexport type SetAuthorityInput<\n  TAccountAdminAuthority extends string = string,\n  TAccountConfig extends string = string,\n> = {\n  adminAuthority: TransactionSigner<TAccountAdminAuthority>;\n  config: Address<TAccountConfig>;\n  adminAuthorityArg: SetAuthorityInstructionDataArgs['adminAuthority'];\n};\n\nexport function getSetAuthorityInstruction<\n  TAccountAdminAuthority extends string,\n  TAccountConfig extends string,\n  TProgramAddress extends Address =\n    typeof DOPPLER_LAUNCH_HOOK_V2_PROGRAM_ADDRESS,\n>(\n  input: SetAuthorityInput<TAccountAdminAuthority, TAccountConfig>,\n  config?: { programAddress?: TProgramAddress },\n): SetAuthorityInstruction<\n  TProgramAddress,\n  TAccountAdminAuthority,\n  TAccountConfig\n> {\n  // Program address.\n  const programAddress =\n    config?.programAddress ?? DOPPLER_LAUNCH_HOOK_V2_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    adminAuthority: { value: input.adminAuthority ?? null, isWritable: false },\n    config: { value: input.config ?? null, isWritable: true },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedInstructionAccount\n  >;\n\n  // Original args.\n  const args = { ...input, adminAuthority: input.adminAuthorityArg };\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta('adminAuthority', accounts.adminAuthority),\n      getAccountMeta('config', accounts.config),\n    ],\n    data: getSetAuthorityInstructionDataEncoder().encode(\n      args as SetAuthorityInstructionDataArgs,\n    ),\n    programAddress,\n  } as SetAuthorityInstruction<\n    TProgramAddress,\n    TAccountAdminAuthority,\n    TAccountConfig\n  >);\n}\n\nexport type ParsedSetAuthorityInstruction<\n  TProgram extends string = typeof DOPPLER_LAUNCH_HOOK_V2_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    adminAuthority: TAccountMetas[0];\n    config: TAccountMetas[1];\n  };\n  data: SetAuthorityInstructionData;\n};\n\nexport function parseSetAuthorityInstruction<\n  TProgram extends string,\n  TAccountMetas extends readonly AccountMeta[],\n>(\n  instruction: Instruction<TProgram> &\n    InstructionWithAccounts<TAccountMetas> &\n    InstructionWithData<ReadonlyUint8Array>,\n): ParsedSetAuthorityInstruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 2) {\n    throw new SolanaError(\n      SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS,\n      {\n        actualAccountMetas: instruction.accounts.length,\n        expectedAccountMetas: 2,\n      },\n    );\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: { adminAuthority: getNextAccount(), config: getNextAccount() },\n    data: getSetAuthorityInstructionDataDecoder().decode(instruction.data),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  assertIsInstructionWithAccounts,\n  containsBytes,\n  fixEncoderSize,\n  getBytesEncoder,\n  SOLANA_ERROR__PROGRAM_CLIENTS__FAILED_TO_IDENTIFY_ACCOUNT,\n  SOLANA_ERROR__PROGRAM_CLIENTS__FAILED_TO_IDENTIFY_INSTRUCTION,\n  SOLANA_ERROR__PROGRAM_CLIENTS__UNRECOGNIZED_INSTRUCTION_TYPE,\n  SolanaError,\n  type Address,\n  type ClientWithPayer,\n  type ClientWithRpc,\n  type ClientWithTransactionPlanning,\n  type ClientWithTransactionSending,\n  type GetAccountInfoApi,\n  type GetMultipleAccountsApi,\n  type Instruction,\n  type InstructionWithData,\n  type ReadonlyUint8Array,\n} from '@solana/kit';\nimport {\n  addSelfFetchFunctions,\n  addSelfPlanAndSendFunctions,\n  type SelfFetchFunctions,\n  type SelfPlanAndSendFunctions,\n} from '@solana/program-client-core';\nimport {\n  getHookConfigCodec,\n  type HookConfig,\n  type HookConfigArgs,\n} from '../accounts';\nimport {\n  getAddCosignerInstructionAsync,\n  getInitializeConfigInstructionAsync,\n  getRemoveCosignerInstructionAsync,\n  getSetAuthorityInstructionAsync,\n  parseAddCosignerInstruction,\n  parseInitializeConfigInstruction,\n  parseRemoveCosignerInstruction,\n  parseSetAuthorityInstruction,\n  type AddCosignerAsyncInput,\n  type InitializeConfigAsyncInput,\n  type ParsedAddCosignerInstruction,\n  type ParsedInitializeConfigInstruction,\n  type ParsedRemoveCosignerInstruction,\n  type ParsedSetAuthorityInstruction,\n  type RemoveCosignerAsyncInput,\n  type SetAuthorityAsyncInput,\n} from '../instructions';\n\nexport const DOPPLER_LAUNCH_HOOK_V2_PROGRAM_ADDRESS =\n  '7ZueM1Tef2QA5zrFtVJMDM8MFqkoeG8fog1mXPgmLGH1' as Address<'7ZueM1Tef2QA5zrFtVJMDM8MFqkoeG8fog1mXPgmLGH1'>;\n\nexport enum DopplerLaunchHookV2Account {\n  HookConfig,\n}\n\nexport function identifyDopplerLaunchHookV2Account(\n  account: { data: ReadonlyUint8Array } | ReadonlyUint8Array,\n): DopplerLaunchHookV2Account {\n  const data = 'data' in account ? account.data : account;\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([137, 155, 101, 95, 138, 72, 8, 182]),\n      ),\n      0,\n    )\n  ) {\n    return DopplerLaunchHookV2Account.HookConfig;\n  }\n  throw new SolanaError(\n    SOLANA_ERROR__PROGRAM_CLIENTS__FAILED_TO_IDENTIFY_ACCOUNT,\n    { accountData: data, programName: 'dopplerLaunchHookV2' },\n  );\n}\n\nexport enum DopplerLaunchHookV2Instruction {\n  AddCosigner,\n  InitializeConfig,\n  RemoveCosigner,\n  SetAuthority,\n}\n\nexport function identifyDopplerLaunchHookV2Instruction(\n  instruction: { data: ReadonlyUint8Array } | ReadonlyUint8Array,\n): DopplerLaunchHookV2Instruction {\n  const data = 'data' in instruction ? instruction.data : instruction;\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([17, 34, 183, 119, 202, 255, 218, 233]),\n      ),\n      0,\n    )\n  ) {\n    return DopplerLaunchHookV2Instruction.AddCosigner;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([208, 127, 21, 1, 194, 190, 196, 70]),\n      ),\n      0,\n    )\n  ) {\n    return DopplerLaunchHookV2Instruction.InitializeConfig;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([174, 11, 171, 252, 179, 99, 220, 27]),\n      ),\n      0,\n    )\n  ) {\n    return DopplerLaunchHookV2Instruction.RemoveCosigner;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([133, 250, 37, 21, 110, 163, 26, 121]),\n      ),\n      0,\n    )\n  ) {\n    return DopplerLaunchHookV2Instruction.SetAuthority;\n  }\n  throw new SolanaError(\n    SOLANA_ERROR__PROGRAM_CLIENTS__FAILED_TO_IDENTIFY_INSTRUCTION,\n    { instructionData: data, programName: 'dopplerLaunchHookV2' },\n  );\n}\n\nexport type ParsedDopplerLaunchHookV2Instruction<\n  TProgram extends string = '7ZueM1Tef2QA5zrFtVJMDM8MFqkoeG8fog1mXPgmLGH1',\n> =\n  | ({\n      instructionType: DopplerLaunchHookV2Instruction.AddCosigner;\n    } & ParsedAddCosignerInstruction<TProgram>)\n  | ({\n      instructionType: DopplerLaunchHookV2Instruction.InitializeConfig;\n    } & ParsedInitializeConfigInstruction<TProgram>)\n  | ({\n      instructionType: DopplerLaunchHookV2Instruction.RemoveCosigner;\n    } & ParsedRemoveCosignerInstruction<TProgram>)\n  | ({\n      instructionType: DopplerLaunchHookV2Instruction.SetAuthority;\n    } & ParsedSetAuthorityInstruction<TProgram>);\n\nexport function parseDopplerLaunchHookV2Instruction<TProgram extends string>(\n  instruction: Instruction<TProgram> & InstructionWithData<ReadonlyUint8Array>,\n): ParsedDopplerLaunchHookV2Instruction<TProgram> {\n  const instructionType = identifyDopplerLaunchHookV2Instruction(instruction);\n  switch (instructionType) {\n    case DopplerLaunchHookV2Instruction.AddCosigner: {\n      assertIsInstructionWithAccounts(instruction);\n      return {\n        instructionType: DopplerLaunchHookV2Instruction.AddCosigner,\n        ...parseAddCosignerInstruction(instruction),\n      };\n    }\n    case DopplerLaunchHookV2Instruction.InitializeConfig: {\n      assertIsInstructionWithAccounts(instruction);\n      return {\n        instructionType: DopplerLaunchHookV2Instruction.InitializeConfig,\n        ...parseInitializeConfigInstruction(instruction),\n      };\n    }\n    case DopplerLaunchHookV2Instruction.RemoveCosigner: {\n      assertIsInstructionWithAccounts(instruction);\n      return {\n        instructionType: DopplerLaunchHookV2Instruction.RemoveCosigner,\n        ...parseRemoveCosignerInstruction(instruction),\n      };\n    }\n    case DopplerLaunchHookV2Instruction.SetAuthority: {\n      assertIsInstructionWithAccounts(instruction);\n      return {\n        instructionType: DopplerLaunchHookV2Instruction.SetAuthority,\n        ...parseSetAuthorityInstruction(instruction),\n      };\n    }\n    default:\n      throw new SolanaError(\n        SOLANA_ERROR__PROGRAM_CLIENTS__UNRECOGNIZED_INSTRUCTION_TYPE,\n        {\n          instructionType: instructionType as string,\n          programName: 'dopplerLaunchHookV2',\n        },\n      );\n  }\n}\n\nexport type DopplerLaunchHookV2Plugin = {\n  accounts: DopplerLaunchHookV2PluginAccounts;\n  instructions: DopplerLaunchHookV2PluginInstructions;\n};\n\nexport type DopplerLaunchHookV2PluginAccounts = {\n  hookConfig: ReturnType<typeof getHookConfigCodec> &\n    SelfFetchFunctions<HookConfigArgs, HookConfig>;\n};\n\nexport type DopplerLaunchHookV2PluginInstructions = {\n  addCosigner: (\n    input: AddCosignerAsyncInput,\n  ) => ReturnType<typeof getAddCosignerInstructionAsync> &\n    SelfPlanAndSendFunctions;\n  initializeConfig: (\n    input: MakeOptional<InitializeConfigAsyncInput, 'payer'>,\n  ) => ReturnType<typeof getInitializeConfigInstructionAsync> &\n    SelfPlanAndSendFunctions;\n  removeCosigner: (\n    input: RemoveCosignerAsyncInput,\n  ) => ReturnType<typeof getRemoveCosignerInstructionAsync> &\n    SelfPlanAndSendFunctions;\n  setAuthority: (\n    input: SetAuthorityAsyncInput,\n  ) => ReturnType<typeof getSetAuthorityInstructionAsync> &\n    SelfPlanAndSendFunctions;\n};\n\nexport type DopplerLaunchHookV2PluginRequirements = ClientWithRpc<\n  GetAccountInfoApi & GetMultipleAccountsApi\n> &\n  ClientWithPayer &\n  ClientWithTransactionPlanning &\n  ClientWithTransactionSending;\n\nexport function dopplerLaunchHookV2Program() {\n  return <T extends DopplerLaunchHookV2PluginRequirements>(client: T) => {\n    return {\n      ...client,\n      dopplerLaunchHookV2: <DopplerLaunchHookV2Plugin>{\n        accounts: {\n          hookConfig: addSelfFetchFunctions(client, getHookConfigCodec()),\n        },\n        instructions: {\n          addCosigner: (input) =>\n            addSelfPlanAndSendFunctions(\n              client,\n              getAddCosignerInstructionAsync(input),\n            ),\n          initializeConfig: (input) =>\n            addSelfPlanAndSendFunctions(\n              client,\n              getInitializeConfigInstructionAsync({\n                ...input,\n                payer: input.payer ?? client.payer,\n              }),\n            ),\n          removeCosigner: (input) =>\n            addSelfPlanAndSendFunctions(\n              client,\n              getRemoveCosignerInstructionAsync(input),\n            ),\n          setAuthority: (input) =>\n            addSelfPlanAndSendFunctions(\n              client,\n              getSetAuthorityInstructionAsync(input),\n            ),\n        },\n      },\n    };\n  };\n}\n\ntype MakeOptional<T, K extends keyof T> = Omit<T, K> & Partial<Pick<T, K>>;\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  isProgramError,\n  type Address,\n  type SOLANA_ERROR__INSTRUCTION_ERROR__CUSTOM,\n  type SolanaError,\n} from '@solana/kit';\nimport { DOPPLER_LAUNCH_HOOK_V2_PROGRAM_ADDRESS } from '../programs';\n\n/** InvalidInstructionData: Invalid instruction data */\nexport const DOPPLER_LAUNCH_HOOK_V2_ERROR__INVALID_INSTRUCTION_DATA = 0x1770; // 6000\n/** InvalidPayload: Invalid hook payload */\nexport const DOPPLER_LAUNCH_HOOK_V2_ERROR__INVALID_PAYLOAD = 0x1771; // 6001\n/** InvalidFeeSchedule: Invalid dynamic fee schedule */\nexport const DOPPLER_LAUNCH_HOOK_V2_ERROR__INVALID_FEE_SCHEDULE = 0x1772; // 6002\n/** InvalidFee: Invalid swap fee */\nexport const DOPPLER_LAUNCH_HOOK_V2_ERROR__INVALID_FEE = 0x1773; // 6003\n/** ArithmeticOverflow: Arithmetic overflow */\nexport const DOPPLER_LAUNCH_HOOK_V2_ERROR__ARITHMETIC_OVERFLOW = 0x1774; // 6004\n/** InvalidAuthority: Invalid hook authority */\nexport const DOPPLER_LAUNCH_HOOK_V2_ERROR__INVALID_AUTHORITY = 0x1775; // 6005\n/** InvalidConfig: Invalid hook config */\nexport const DOPPLER_LAUNCH_HOOK_V2_ERROR__INVALID_CONFIG = 0x1776; // 6006\n/** InvalidCosigner: Invalid cosigner */\nexport const DOPPLER_LAUNCH_HOOK_V2_ERROR__INVALID_COSIGNER = 0x1777; // 6007\n/** CosignerAlreadyExists: Cosigner already exists */\nexport const DOPPLER_LAUNCH_HOOK_V2_ERROR__COSIGNER_ALREADY_EXISTS = 0x1778; // 6008\n/** CosignerNotFound: Cosigner not found */\nexport const DOPPLER_LAUNCH_HOOK_V2_ERROR__COSIGNER_NOT_FOUND = 0x1779; // 6009\n/** CosignerListFull: Cosigner list is full */\nexport const DOPPLER_LAUNCH_HOOK_V2_ERROR__COSIGNER_LIST_FULL = 0x177a; // 6010\n/** MissingAccount: Missing hook account */\nexport const DOPPLER_LAUNCH_HOOK_V2_ERROR__MISSING_ACCOUNT = 0x177b; // 6011\n/** UnexpectedAccount: Unexpected hook account */\nexport const DOPPLER_LAUNCH_HOOK_V2_ERROR__UNEXPECTED_ACCOUNT = 0x177c; // 6012\n/** InvalidLaunchContext: Invalid initializer launch context */\nexport const DOPPLER_LAUNCH_HOOK_V2_ERROR__INVALID_LAUNCH_CONTEXT = 0x177d; // 6013\n/** InvalidRehypeState: Invalid Rehype state */\nexport const DOPPLER_LAUNCH_HOOK_V2_ERROR__INVALID_REHYPE_STATE = 0x177e; // 6014\n/** SettlementIncomplete: Rehype settlement is incomplete */\nexport const DOPPLER_LAUNCH_HOOK_V2_ERROR__SETTLEMENT_INCOMPLETE = 0x177f; // 6015\n/** CosignerRequired: Cosigner approval is required */\nexport const DOPPLER_LAUNCH_HOOK_V2_ERROR__COSIGNER_REQUIRED = 0x1780; // 6016\n\nexport type DopplerLaunchHookV2Error =\n  | typeof DOPPLER_LAUNCH_HOOK_V2_ERROR__ARITHMETIC_OVERFLOW\n  | typeof DOPPLER_LAUNCH_HOOK_V2_ERROR__COSIGNER_ALREADY_EXISTS\n  | typeof DOPPLER_LAUNCH_HOOK_V2_ERROR__COSIGNER_LIST_FULL\n  | typeof DOPPLER_LAUNCH_HOOK_V2_ERROR__COSIGNER_NOT_FOUND\n  | typeof DOPPLER_LAUNCH_HOOK_V2_ERROR__COSIGNER_REQUIRED\n  | typeof DOPPLER_LAUNCH_HOOK_V2_ERROR__INVALID_AUTHORITY\n  | typeof DOPPLER_LAUNCH_HOOK_V2_ERROR__INVALID_CONFIG\n  | typeof DOPPLER_LAUNCH_HOOK_V2_ERROR__INVALID_COSIGNER\n  | typeof DOPPLER_LAUNCH_HOOK_V2_ERROR__INVALID_FEE\n  | typeof DOPPLER_LAUNCH_HOOK_V2_ERROR__INVALID_FEE_SCHEDULE\n  | typeof DOPPLER_LAUNCH_HOOK_V2_ERROR__INVALID_INSTRUCTION_DATA\n  | typeof DOPPLER_LAUNCH_HOOK_V2_ERROR__INVALID_LAUNCH_CONTEXT\n  | typeof DOPPLER_LAUNCH_HOOK_V2_ERROR__INVALID_PAYLOAD\n  | typeof DOPPLER_LAUNCH_HOOK_V2_ERROR__INVALID_REHYPE_STATE\n  | typeof DOPPLER_LAUNCH_HOOK_V2_ERROR__MISSING_ACCOUNT\n  | typeof DOPPLER_LAUNCH_HOOK_V2_ERROR__SETTLEMENT_INCOMPLETE\n  | typeof DOPPLER_LAUNCH_HOOK_V2_ERROR__UNEXPECTED_ACCOUNT;\n\nlet dopplerLaunchHookV2ErrorMessages:\n  | Record<DopplerLaunchHookV2Error, string>\n  | undefined;\nif (process.env.NODE_ENV !== 'production') {\n  dopplerLaunchHookV2ErrorMessages = {\n    [DOPPLER_LAUNCH_HOOK_V2_ERROR__ARITHMETIC_OVERFLOW]: `Arithmetic overflow`,\n    [DOPPLER_LAUNCH_HOOK_V2_ERROR__COSIGNER_ALREADY_EXISTS]: `Cosigner already exists`,\n    [DOPPLER_LAUNCH_HOOK_V2_ERROR__COSIGNER_LIST_FULL]: `Cosigner list is full`,\n    [DOPPLER_LAUNCH_HOOK_V2_ERROR__COSIGNER_NOT_FOUND]: `Cosigner not found`,\n    [DOPPLER_LAUNCH_HOOK_V2_ERROR__COSIGNER_REQUIRED]: `Cosigner approval is required`,\n    [DOPPLER_LAUNCH_HOOK_V2_ERROR__INVALID_AUTHORITY]: `Invalid hook authority`,\n    [DOPPLER_LAUNCH_HOOK_V2_ERROR__INVALID_CONFIG]: `Invalid hook config`,\n    [DOPPLER_LAUNCH_HOOK_V2_ERROR__INVALID_COSIGNER]: `Invalid cosigner`,\n    [DOPPLER_LAUNCH_HOOK_V2_ERROR__INVALID_FEE]: `Invalid swap fee`,\n    [DOPPLER_LAUNCH_HOOK_V2_ERROR__INVALID_FEE_SCHEDULE]: `Invalid dynamic fee schedule`,\n    [DOPPLER_LAUNCH_HOOK_V2_ERROR__INVALID_INSTRUCTION_DATA]: `Invalid instruction data`,\n    [DOPPLER_LAUNCH_HOOK_V2_ERROR__INVALID_LAUNCH_CONTEXT]: `Invalid initializer launch context`,\n    [DOPPLER_LAUNCH_HOOK_V2_ERROR__INVALID_PAYLOAD]: `Invalid hook payload`,\n    [DOPPLER_LAUNCH_HOOK_V2_ERROR__INVALID_REHYPE_STATE]: `Invalid Rehype state`,\n    [DOPPLER_LAUNCH_HOOK_V2_ERROR__MISSING_ACCOUNT]: `Missing hook account`,\n    [DOPPLER_LAUNCH_HOOK_V2_ERROR__SETTLEMENT_INCOMPLETE]: `Rehype settlement is incomplete`,\n    [DOPPLER_LAUNCH_HOOK_V2_ERROR__UNEXPECTED_ACCOUNT]: `Unexpected hook account`,\n  };\n}\n\nexport function getDopplerLaunchHookV2ErrorMessage(\n  code: DopplerLaunchHookV2Error,\n): string {\n  if (process.env.NODE_ENV !== 'production') {\n    return (\n      dopplerLaunchHookV2ErrorMessages as Record<\n        DopplerLaunchHookV2Error,\n        string\n      >\n    )[code];\n  }\n\n  return 'Error message not available in production bundles.';\n}\n\nexport function isDopplerLaunchHookV2Error<\n  TProgramErrorCode extends DopplerLaunchHookV2Error,\n>(\n  error: unknown,\n  transactionMessage: {\n    instructions: Record<number, { programAddress: Address }>;\n  },\n  code?: TProgramErrorCode,\n): error is SolanaError<typeof SOLANA_ERROR__INSTRUCTION_ERROR__CUSTOM> &\n  Readonly<{ context: Readonly<{ code: TProgramErrorCode }> }> {\n  return isProgramError<TProgramErrorCode>(\n    error,\n    transactionMessage,\n    DOPPLER_LAUNCH_HOOK_V2_PROGRAM_ADDRESS,\n    code,\n  );\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  getAddressDecoder,\n  getAddressEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  type Address,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n} from '@solana/kit';\n\nexport type CosignerArg = { cosigner: Address };\n\nexport type CosignerArgArgs = CosignerArg;\n\nexport function getCosignerArgEncoder(): FixedSizeEncoder<CosignerArgArgs> {\n  return getStructEncoder([['cosigner', getAddressEncoder()]]);\n}\n\nexport function getCosignerArgDecoder(): FixedSizeDecoder<CosignerArg> {\n  return getStructDecoder([['cosigner', getAddressDecoder()]]);\n}\n\nexport function getCosignerArgCodec(): FixedSizeCodec<\n  CosignerArgArgs,\n  CosignerArg\n> {\n  return combineCodec(getCosignerArgEncoder(), getCosignerArgDecoder());\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  getAddressDecoder,\n  getAddressEncoder,\n  getArrayDecoder,\n  getArrayEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  type Address,\n  type Codec,\n  type Decoder,\n  type Encoder,\n} from '@solana/kit';\n\nexport type InitializeConfigArgs = { cosigners: Array<Address> };\n\nexport type InitializeConfigArgsArgs = InitializeConfigArgs;\n\nexport function getInitializeConfigArgsEncoder(): Encoder<InitializeConfigArgsArgs> {\n  return getStructEncoder([\n    ['cosigners', getArrayEncoder(getAddressEncoder())],\n  ]);\n}\n\nexport function getInitializeConfigArgsDecoder(): Decoder<InitializeConfigArgs> {\n  return getStructDecoder([\n    ['cosigners', getArrayDecoder(getAddressDecoder())],\n  ]);\n}\n\nexport function getInitializeConfigArgsCodec(): Codec<\n  InitializeConfigArgsArgs,\n  InitializeConfigArgs\n> {\n  return combineCodec(\n    getInitializeConfigArgsEncoder(),\n    getInitializeConfigArgsDecoder(),\n  );\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  getAddressDecoder,\n  getAddressEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  type Address,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n} from '@solana/kit';\n\nexport type SetAuthorityArgs = { adminAuthority: Address };\n\nexport type SetAuthorityArgsArgs = SetAuthorityArgs;\n\nexport function getSetAuthorityArgsEncoder(): FixedSizeEncoder<SetAuthorityArgsArgs> {\n  return getStructEncoder([['adminAuthority', getAddressEncoder()]]);\n}\n\nexport function getSetAuthorityArgsDecoder(): FixedSizeDecoder<SetAuthorityArgs> {\n  return getStructDecoder([['adminAuthority', getAddressDecoder()]]);\n}\n\nexport function getSetAuthorityArgsCodec(): FixedSizeCodec<\n  SetAuthorityArgsArgs,\n  SetAuthorityArgs\n> {\n  return combineCodec(\n    getSetAuthorityArgsEncoder(),\n    getSetAuthorityArgsDecoder(),\n  );\n}\n","// Constants\nexport {\n  INITIALIZER_PROGRAM_ID,\n  BPF_LOADER_UPGRADEABLE_PROGRAM_ID,\n  PREDICTION_HOOK_PROGRAM_ID,\n  SEED_CONFIG,\n  SEED_LAUNCH,\n  SEED_LAUNCH_AUTHORITY,\n  SEED_LAUNCH_FEE_STATE,\n  MAX_MIGRATOR_ALLOWLIST,\n  MAX_HOOK_ALLOWLIST,\n  MAX_PAYLOAD,\n  EMPTY_REMAINING_ACCOUNTS_HASH,\n  PHASE_TRADING,\n  PHASE_MIGRATED,\n  PHASE_ABORTED,\n  TRADE_DIRECTION_BUY,\n  TRADE_DIRECTION_SELL,\n  CURVE_KIND_XYK,\n  CURVE_PARAMS_FORMAT_XYK_V0,\n  HF_BEFORE_SWAP,\n  HF_AFTER_SWAP,\n  HF_BEFORE_CREATE,\n  HF_AFTER_CREATE,\n  HF_BEFORE_MIGRATE,\n  HF_AFTER_MIGRATE,\n  HF_FORWARD_READONLY_SIGNERS,\n  HF_LAUNCH_CONTEXT_V2,\n  HOOK_NO_CHANGE,\n  INITIALIZER_INSTRUCTION_DISCRIMINATORS,\n  INITIALIZER_ACCOUNT_DISCRIMINATORS,\n} from './constants.js';\n\n// Generated types and codec factories\nexport type {\n  InitConfig,\n  InitConfigArgs,\n  Launch,\n  LaunchArgs,\n  LaunchFeeState,\n  LaunchFeeStateArgs,\n  FeeBeneficiary,\n  FeeBeneficiaryArgs,\n  FeeBeneficiaryInput,\n  FeeBeneficiaryInputArgs,\n  InitializeConfigArgs,\n  InitializeConfigArgsArgs,\n  InitializeLaunchArgs,\n  InitializeLaunchArgsArgs,\n  ClaimFeesAsyncInput,\n  FundVestingAsyncInput,\n  HarvestMigratedFeesAsyncInput,\n  ReplaceFeeBeneficiaryAsyncInput,\n  SetFeePolicyAsyncInput,\n  PayloadBuf,\n} from '../generated/initializer/index.js';\n\nexport {\n  getInitConfigDecoder,\n  getInitConfigEncoder,\n  getInitConfigCodec,\n  getInitConfigSize,\n  getLaunchDecoder,\n  getLaunchEncoder,\n  getLaunchCodec,\n  getLaunchFeeStateDecoder,\n  getLaunchFeeStateEncoder,\n  getLaunchFeeStateCodec,\n  getInitializeConfigArgsEncoder,\n  getInitializeConfigArgsDecoder,\n  getInitializeConfigArgsCodec,\n  getInitializeLaunchArgsEncoder,\n  getInitializeLaunchArgsDecoder,\n  getInitializeLaunchArgsCodec,\n  getClaimFeesInstructionAsync,\n  getFundVestingInstructionAsync,\n  getHarvestMigratedFeesInstructionAsync,\n  getReplaceFeeBeneficiaryInstructionAsync,\n  getSetFeePolicyInstructionAsync,\n} from '../generated/initializer/index.js';\n\n// PDA helpers\nexport {\n  getConfigAddress,\n  getProgramDataAddress,\n  getLaunchAddress,\n  getLaunchAuthorityAddress,\n  getLaunchFeeStateAddress,\n  encodeU64LE,\n  launchIdFromU64,\n} from './pda.js';\n\n// Instruction builders\nexport {\n  createInitializeConfigInstruction,\n  type InitializeConfigAccounts,\n  createSetMigratorAllowlistInstruction,\n  type SetMigratorAllowlistAccounts,\n  createSetHookAllowlistInstruction,\n  type SetHookAllowlistAccounts,\n  createInitializeLaunchInstruction,\n  getTokenMetadataAddress,\n  type InitializeLaunchAccounts,\n  createCurveSwapExactInInstruction,\n  type CurveSwapExactInAccounts,\n  createMigrateLaunchInstruction,\n  type MigrateLaunchAccounts,\n  createPreviewSwapExactInInstruction,\n  decodePreviewSwapExactInResult,\n  type PreviewSwapExactInAccounts,\n  type PreviewSwapExactInResult,\n  createPreviewMigrationInstruction,\n  decodePreviewMigrationResult,\n  type PreviewMigrationAccounts,\n  type PreviewMigrationResult,\n} from './instructions/index.js';\n\n// High-level launch helpers\nexport {\n  createLaunchId,\n  deriveCreateLaunchAddresses,\n  launchTokenPrograms,\n} from './createLaunch.js';\nexport type {\n  CreateLaunchAccountSigners,\n  CreateLaunchAddresses,\n  CreateLaunchCpmmMigrationConfig,\n  CreateLaunchCustomMigrationConfig,\n  CreateLaunchInput,\n  CreateLaunchMigrationConfig,\n  CreateLaunchResult,\n  DeriveCreateLaunchAddressesInput,\n  LaunchMetadata,\n  LaunchSupply,\n  LaunchTokenPrograms,\n  XykCurveConfig,\n} from './createLaunch.js';\n\n// Helpers\nexport {\n  computeRemainingAccountsHash,\n  getCurveSwapFeeAmount,\n  phaseLabel,\n} from './helpers.js';\nexport {\n  DEFAULT_LOOKUP_TABLE_ADDRESSES_PER_EXTEND,\n  getInstructionLookupTableAddresses,\n  buildAddressLookupTableSetupInstructions,\n  compressTransactionMessageWithLookupTable,\n} from './addressLookupTables.js';\nexport type {\n  BuildAddressLookupTableSetupInstructionsInput,\n  BuildAddressLookupTableSetupInstructionsResult,\n} from './addressLookupTables.js';\nexport {\n  SOLANA_TRANSACTION_SIZE_LIMIT,\n  measureTransactionMessageSize,\n  measureTransactionMessageSizeWithLookupTable,\n  assertTransactionMessageFits,\n  assertTransactionMessageFitsWithLookupTable,\n} from './transactionSize.js';\nexport type {\n  TransactionSizeAssertOptions,\n  TransactionSizeReport,\n} from './transactionSize.js';\n\n// Client helpers\nexport {\n  fetchLaunch,\n  fetchAllLaunches,\n  fetchLaunchesByAuthority,\n  launchExists,\n  type FetchLaunchesConfig,\n  type LaunchWithAddress,\n} from './client/index.js';\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  assertAccountExists,\n  assertAccountsExist,\n  combineCodec,\n  decodeAccount,\n  fetchEncodedAccount,\n  fetchEncodedAccounts,\n  fixDecoderSize,\n  fixEncoderSize,\n  getAddressDecoder,\n  getAddressEncoder,\n  getArrayDecoder,\n  getArrayEncoder,\n  getBytesDecoder,\n  getBytesEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU16Decoder,\n  getU16Encoder,\n  getU8Decoder,\n  getU8Encoder,\n  transformEncoder,\n  type Account,\n  type Address,\n  type EncodedAccount,\n  type FetchAccountConfig,\n  type FetchAccountsConfig,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n  type MaybeAccount,\n  type MaybeEncodedAccount,\n  type ReadonlyUint8Array,\n} from '@solana/kit';\n\nexport const INIT_CONFIG_DISCRIMINATOR = new Uint8Array([\n  97, 166, 35, 7, 20, 2, 164, 126,\n]);\n\nexport function getInitConfigDiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(INIT_CONFIG_DISCRIMINATOR);\n}\n\nexport type InitConfig = {\n  discriminator: ReadonlyUint8Array;\n  admin: Address;\n  migratorAllowlistLen: number;\n  migratorAllowlist: Array<Address>;\n  hookAllowlistLen: number;\n  hookAllowlist: Array<Address>;\n  bump: number;\n  version: number;\n  protocolFeeBps: number;\n  minSwapFeeBps: number;\n  maxSwapFeeBps: number;\n  reserved: ReadonlyUint8Array;\n};\n\nexport type InitConfigArgs = {\n  admin: Address;\n  migratorAllowlistLen: number;\n  migratorAllowlist: Array<Address>;\n  hookAllowlistLen: number;\n  hookAllowlist: Array<Address>;\n  bump: number;\n  version: number;\n  protocolFeeBps: number;\n  minSwapFeeBps: number;\n  maxSwapFeeBps: number;\n  reserved: ReadonlyUint8Array;\n};\n\n/** Gets the encoder for {@link InitConfigArgs} account data. */\nexport function getInitConfigEncoder(): FixedSizeEncoder<InitConfigArgs> {\n  return fixEncoderSize(\n    transformEncoder(\n      getStructEncoder([\n        ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n        ['admin', getAddressEncoder()],\n        ['migratorAllowlistLen', getU8Encoder()],\n        [\n          'migratorAllowlist',\n          getArrayEncoder(getAddressEncoder(), { size: 32 }),\n        ],\n        ['hookAllowlistLen', getU8Encoder()],\n        ['hookAllowlist', getArrayEncoder(getAddressEncoder(), { size: 32 })],\n        ['bump', getU8Encoder()],\n        ['version', getU8Encoder()],\n        ['protocolFeeBps', getU16Encoder()],\n        ['minSwapFeeBps', getU16Encoder()],\n        ['maxSwapFeeBps', getU16Encoder()],\n        ['reserved', fixEncoderSize(getBytesEncoder(), 24)],\n      ]),\n      (value) => ({ ...value, discriminator: INIT_CONFIG_DISCRIMINATOR }),\n    ),\n    2123,\n  );\n}\n\n/** Gets the decoder for {@link InitConfig} account data. */\nexport function getInitConfigDecoder(): FixedSizeDecoder<InitConfig> {\n  return fixDecoderSize(\n    getStructDecoder([\n      ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n      ['admin', getAddressDecoder()],\n      ['migratorAllowlistLen', getU8Decoder()],\n      ['migratorAllowlist', getArrayDecoder(getAddressDecoder(), { size: 32 })],\n      ['hookAllowlistLen', getU8Decoder()],\n      ['hookAllowlist', getArrayDecoder(getAddressDecoder(), { size: 32 })],\n      ['bump', getU8Decoder()],\n      ['version', getU8Decoder()],\n      ['protocolFeeBps', getU16Decoder()],\n      ['minSwapFeeBps', getU16Decoder()],\n      ['maxSwapFeeBps', getU16Decoder()],\n      ['reserved', fixDecoderSize(getBytesDecoder(), 24)],\n    ]),\n    2123,\n  );\n}\n\n/** Gets the codec for {@link InitConfig} account data. */\nexport function getInitConfigCodec(): FixedSizeCodec<\n  InitConfigArgs,\n  InitConfig\n> {\n  return combineCodec(getInitConfigEncoder(), getInitConfigDecoder());\n}\n\nexport function decodeInitConfig<TAddress extends string = string>(\n  encodedAccount: EncodedAccount<TAddress>,\n): Account<InitConfig, TAddress>;\nexport function decodeInitConfig<TAddress extends string = string>(\n  encodedAccount: MaybeEncodedAccount<TAddress>,\n): MaybeAccount<InitConfig, TAddress>;\nexport function decodeInitConfig<TAddress extends string = string>(\n  encodedAccount: EncodedAccount<TAddress> | MaybeEncodedAccount<TAddress>,\n): Account<InitConfig, TAddress> | MaybeAccount<InitConfig, TAddress> {\n  return decodeAccount(\n    encodedAccount as MaybeEncodedAccount<TAddress>,\n    getInitConfigDecoder(),\n  );\n}\n\nexport async function fetchInitConfig<TAddress extends string = string>(\n  rpc: Parameters<typeof fetchEncodedAccount>[0],\n  address: Address<TAddress>,\n  config?: FetchAccountConfig,\n): Promise<Account<InitConfig, TAddress>> {\n  const maybeAccount = await fetchMaybeInitConfig(rpc, address, config);\n  assertAccountExists(maybeAccount);\n  return maybeAccount;\n}\n\nexport async function fetchMaybeInitConfig<TAddress extends string = string>(\n  rpc: Parameters<typeof fetchEncodedAccount>[0],\n  address: Address<TAddress>,\n  config?: FetchAccountConfig,\n): Promise<MaybeAccount<InitConfig, TAddress>> {\n  const maybeAccount = await fetchEncodedAccount(rpc, address, config);\n  return decodeInitConfig(maybeAccount);\n}\n\nexport async function fetchAllInitConfig(\n  rpc: Parameters<typeof fetchEncodedAccounts>[0],\n  addresses: Array<Address>,\n  config?: FetchAccountsConfig,\n): Promise<Account<InitConfig>[]> {\n  const maybeAccounts = await fetchAllMaybeInitConfig(rpc, addresses, config);\n  assertAccountsExist(maybeAccounts);\n  return maybeAccounts;\n}\n\nexport async function fetchAllMaybeInitConfig(\n  rpc: Parameters<typeof fetchEncodedAccounts>[0],\n  addresses: Array<Address>,\n  config?: FetchAccountsConfig,\n): Promise<MaybeAccount<InitConfig>[]> {\n  const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config);\n  return maybeAccounts.map((maybeAccount) => decodeInitConfig(maybeAccount));\n}\n\nexport function getInitConfigSize(): number {\n  return 2123;\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getAddressDecoder,\n  getAddressEncoder,\n  getBytesDecoder,\n  getBytesEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU16Decoder,\n  getU16Encoder,\n  type Address,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n  type ReadonlyUint8Array,\n} from '@solana/kit';\n\nexport type FeeBeneficiary = {\n  wallet: Address;\n  shareBps: number;\n  pad: ReadonlyUint8Array;\n};\n\nexport type FeeBeneficiaryArgs = FeeBeneficiary;\n\nexport function getFeeBeneficiaryEncoder(): FixedSizeEncoder<FeeBeneficiaryArgs> {\n  return getStructEncoder([\n    ['wallet', getAddressEncoder()],\n    ['shareBps', getU16Encoder()],\n    ['pad', fixEncoderSize(getBytesEncoder(), 6)],\n  ]);\n}\n\nexport function getFeeBeneficiaryDecoder(): FixedSizeDecoder<FeeBeneficiary> {\n  return getStructDecoder([\n    ['wallet', getAddressDecoder()],\n    ['shareBps', getU16Decoder()],\n    ['pad', fixDecoderSize(getBytesDecoder(), 6)],\n  ]);\n}\n\nexport function getFeeBeneficiaryCodec(): FixedSizeCodec<\n  FeeBeneficiaryArgs,\n  FeeBeneficiary\n> {\n  return combineCodec(getFeeBeneficiaryEncoder(), getFeeBeneficiaryDecoder());\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  getAddressDecoder,\n  getAddressEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU16Decoder,\n  getU16Encoder,\n  type Address,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n} from '@solana/kit';\n\nexport type FeeBeneficiaryInput = { wallet: Address; shareBps: number };\n\nexport type FeeBeneficiaryInputArgs = FeeBeneficiaryInput;\n\nexport function getFeeBeneficiaryInputEncoder(): FixedSizeEncoder<FeeBeneficiaryInputArgs> {\n  return getStructEncoder([\n    ['wallet', getAddressEncoder()],\n    ['shareBps', getU16Encoder()],\n  ]);\n}\n\nexport function getFeeBeneficiaryInputDecoder(): FixedSizeDecoder<FeeBeneficiaryInput> {\n  return getStructDecoder([\n    ['wallet', getAddressDecoder()],\n    ['shareBps', getU16Decoder()],\n  ]);\n}\n\nexport function getFeeBeneficiaryInputCodec(): FixedSizeCodec<\n  FeeBeneficiaryInputArgs,\n  FeeBeneficiaryInput\n> {\n  return combineCodec(\n    getFeeBeneficiaryInputEncoder(),\n    getFeeBeneficiaryInputDecoder(),\n  );\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  getEnumDecoder,\n  getEnumEncoder,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n} from '@solana/kit';\n\nexport enum FeeClaimRole {\n  Protocol,\n  Beneficiary,\n}\n\nexport type FeeClaimRoleArgs = FeeClaimRole;\n\nexport function getFeeClaimRoleEncoder(): FixedSizeEncoder<FeeClaimRoleArgs> {\n  return getEnumEncoder(FeeClaimRole);\n}\n\nexport function getFeeClaimRoleDecoder(): FixedSizeDecoder<FeeClaimRole> {\n  return getEnumDecoder(FeeClaimRole);\n}\n\nexport function getFeeClaimRoleCodec(): FixedSizeCodec<\n  FeeClaimRoleArgs,\n  FeeClaimRole\n> {\n  return combineCodec(getFeeClaimRoleEncoder(), getFeeClaimRoleDecoder());\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  getAddressDecoder,\n  getAddressEncoder,\n  getArrayDecoder,\n  getArrayEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU16Decoder,\n  getU16Encoder,\n  type Address,\n  type Codec,\n  type Decoder,\n  type Encoder,\n} from '@solana/kit';\n\nexport type InitializeConfigArgs = {\n  migratorAllowlist: Array<Address>;\n  hookAllowlist: Array<Address>;\n  protocolFeeBps: number;\n  minSwapFeeBps: number;\n  maxSwapFeeBps: number;\n};\n\nexport type InitializeConfigArgsArgs = InitializeConfigArgs;\n\nexport function getInitializeConfigArgsEncoder(): Encoder<InitializeConfigArgsArgs> {\n  return getStructEncoder([\n    ['migratorAllowlist', getArrayEncoder(getAddressEncoder())],\n    ['hookAllowlist', getArrayEncoder(getAddressEncoder())],\n    ['protocolFeeBps', getU16Encoder()],\n    ['minSwapFeeBps', getU16Encoder()],\n    ['maxSwapFeeBps', getU16Encoder()],\n  ]);\n}\n\nexport function getInitializeConfigArgsDecoder(): Decoder<InitializeConfigArgs> {\n  return getStructDecoder([\n    ['migratorAllowlist', getArrayDecoder(getAddressDecoder())],\n    ['hookAllowlist', getArrayDecoder(getAddressDecoder())],\n    ['protocolFeeBps', getU16Decoder()],\n    ['minSwapFeeBps', getU16Decoder()],\n    ['maxSwapFeeBps', getU16Decoder()],\n  ]);\n}\n\nexport function getInitializeConfigArgsCodec(): Codec<\n  InitializeConfigArgsArgs,\n  InitializeConfigArgs\n> {\n  return combineCodec(\n    getInitializeConfigArgsEncoder(),\n    getInitializeConfigArgsDecoder(),\n  );\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  addDecoderSizePrefix,\n  addEncoderSizePrefix,\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getAddressDecoder,\n  getAddressEncoder,\n  getArrayDecoder,\n  getArrayEncoder,\n  getBytesDecoder,\n  getBytesEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU16Decoder,\n  getU16Encoder,\n  getU32Decoder,\n  getU32Encoder,\n  getU64Decoder,\n  getU64Encoder,\n  getU8Decoder,\n  getU8Encoder,\n  getUtf8Decoder,\n  getUtf8Encoder,\n  type Address,\n  type Codec,\n  type Decoder,\n  type Encoder,\n  type ReadonlyUint8Array,\n} from '@solana/kit';\nimport {\n  getFeeBeneficiaryInputDecoder,\n  getFeeBeneficiaryInputEncoder,\n  type FeeBeneficiaryInput,\n  type FeeBeneficiaryInputArgs,\n} from '.';\n\nexport type InitializeLaunchArgs = {\n  namespace: Address;\n  launchId: ReadonlyUint8Array;\n  baseDecimals: number;\n  baseTotalSupply: bigint;\n  baseForDistribution: bigint;\n  baseForLiquidity: bigint;\n  curveVirtualBase: bigint;\n  curveVirtualQuote: bigint;\n  swapFeeBps: number;\n  curveKind: number;\n  curveParams: ReadonlyUint8Array;\n  allowBuy: number;\n  allowSell: number;\n  hookFlags: number;\n  hookPayload: ReadonlyUint8Array;\n  hookCreateRemainingAccountsLen: number;\n  migratorInitPayload: ReadonlyUint8Array;\n  migratorMigratePayload: ReadonlyUint8Array;\n  /**\n   * Commitment hash for initialize_launch hook remaining accounts.\n   * Computed as hash(u32_len || pubkey_0 || ... || pubkey_n).\n   */\n  hookCreateRemainingAccountsHash: ReadonlyUint8Array;\n  /**\n   * Commitment hash for swap/preview hook remaining accounts.\n   * Computed as hash(u32_len || pubkey_0 || ... || pubkey_n).\n   */\n  hookRemainingAccountsHash: ReadonlyUint8Array;\n  /**\n   * Commitment hash for migrator-init remaining accounts.\n   * Computed as hash(u32_len || pubkey_0 || ... || pubkey_n).\n   */\n  migratorInitRemainingAccountsHash: ReadonlyUint8Array;\n  /**\n   * Commitment hash for migrator-migrate remaining accounts.\n   * Computed as hash(u32_len || pubkey_0 || ... || pubkey_n).\n   */\n  migratorRemainingAccountsHash: ReadonlyUint8Array;\n  /** Token name for on-chain metadata. If empty, metadata creation is skipped. */\n  metadataName: string;\n  /** Token symbol for on-chain metadata. */\n  metadataSymbol: string;\n  /** Metadata JSON URI for on-chain metadata. */\n  metadataUri: string;\n  feeBeneficiaries: Array<FeeBeneficiaryInput>;\n};\n\nexport type InitializeLaunchArgsArgs = {\n  namespace: Address;\n  launchId: ReadonlyUint8Array;\n  baseDecimals: number;\n  baseTotalSupply: number | bigint;\n  baseForDistribution: number | bigint;\n  baseForLiquidity: number | bigint;\n  curveVirtualBase: number | bigint;\n  curveVirtualQuote: number | bigint;\n  swapFeeBps: number;\n  curveKind: number;\n  curveParams: ReadonlyUint8Array;\n  allowBuy: number;\n  allowSell: number;\n  hookFlags: number;\n  hookPayload: ReadonlyUint8Array;\n  hookCreateRemainingAccountsLen: number;\n  migratorInitPayload: ReadonlyUint8Array;\n  migratorMigratePayload: ReadonlyUint8Array;\n  /**\n   * Commitment hash for initialize_launch hook remaining accounts.\n   * Computed as hash(u32_len || pubkey_0 || ... || pubkey_n).\n   */\n  hookCreateRemainingAccountsHash: ReadonlyUint8Array;\n  /**\n   * Commitment hash for swap/preview hook remaining accounts.\n   * Computed as hash(u32_len || pubkey_0 || ... || pubkey_n).\n   */\n  hookRemainingAccountsHash: ReadonlyUint8Array;\n  /**\n   * Commitment hash for migrator-init remaining accounts.\n   * Computed as hash(u32_len || pubkey_0 || ... || pubkey_n).\n   */\n  migratorInitRemainingAccountsHash: ReadonlyUint8Array;\n  /**\n   * Commitment hash for migrator-migrate remaining accounts.\n   * Computed as hash(u32_len || pubkey_0 || ... || pubkey_n).\n   */\n  migratorRemainingAccountsHash: ReadonlyUint8Array;\n  /** Token name for on-chain metadata. If empty, metadata creation is skipped. */\n  metadataName: string;\n  /** Token symbol for on-chain metadata. */\n  metadataSymbol: string;\n  /** Metadata JSON URI for on-chain metadata. */\n  metadataUri: string;\n  feeBeneficiaries: Array<FeeBeneficiaryInputArgs>;\n};\n\nexport function getInitializeLaunchArgsEncoder(): Encoder<InitializeLaunchArgsArgs> {\n  return getStructEncoder([\n    ['namespace', getAddressEncoder()],\n    ['launchId', fixEncoderSize(getBytesEncoder(), 32)],\n    ['baseDecimals', getU8Encoder()],\n    ['baseTotalSupply', getU64Encoder()],\n    ['baseForDistribution', getU64Encoder()],\n    ['baseForLiquidity', getU64Encoder()],\n    ['curveVirtualBase', getU64Encoder()],\n    ['curveVirtualQuote', getU64Encoder()],\n    ['swapFeeBps', getU16Encoder()],\n    ['curveKind', getU8Encoder()],\n    ['curveParams', addEncoderSizePrefix(getBytesEncoder(), getU32Encoder())],\n    ['allowBuy', getU8Encoder()],\n    ['allowSell', getU8Encoder()],\n    ['hookFlags', getU32Encoder()],\n    ['hookPayload', addEncoderSizePrefix(getBytesEncoder(), getU32Encoder())],\n    ['hookCreateRemainingAccountsLen', getU32Encoder()],\n    [\n      'migratorInitPayload',\n      addEncoderSizePrefix(getBytesEncoder(), getU32Encoder()),\n    ],\n    [\n      'migratorMigratePayload',\n      addEncoderSizePrefix(getBytesEncoder(), getU32Encoder()),\n    ],\n    ['hookCreateRemainingAccountsHash', fixEncoderSize(getBytesEncoder(), 32)],\n    ['hookRemainingAccountsHash', fixEncoderSize(getBytesEncoder(), 32)],\n    [\n      'migratorInitRemainingAccountsHash',\n      fixEncoderSize(getBytesEncoder(), 32),\n    ],\n    ['migratorRemainingAccountsHash', fixEncoderSize(getBytesEncoder(), 32)],\n    ['metadataName', addEncoderSizePrefix(getUtf8Encoder(), getU32Encoder())],\n    ['metadataSymbol', addEncoderSizePrefix(getUtf8Encoder(), getU32Encoder())],\n    ['metadataUri', addEncoderSizePrefix(getUtf8Encoder(), getU32Encoder())],\n    ['feeBeneficiaries', getArrayEncoder(getFeeBeneficiaryInputEncoder())],\n  ]);\n}\n\nexport function getInitializeLaunchArgsDecoder(): Decoder<InitializeLaunchArgs> {\n  return getStructDecoder([\n    ['namespace', getAddressDecoder()],\n    ['launchId', fixDecoderSize(getBytesDecoder(), 32)],\n    ['baseDecimals', getU8Decoder()],\n    ['baseTotalSupply', getU64Decoder()],\n    ['baseForDistribution', getU64Decoder()],\n    ['baseForLiquidity', getU64Decoder()],\n    ['curveVirtualBase', getU64Decoder()],\n    ['curveVirtualQuote', getU64Decoder()],\n    ['swapFeeBps', getU16Decoder()],\n    ['curveKind', getU8Decoder()],\n    ['curveParams', addDecoderSizePrefix(getBytesDecoder(), getU32Decoder())],\n    ['allowBuy', getU8Decoder()],\n    ['allowSell', getU8Decoder()],\n    ['hookFlags', getU32Decoder()],\n    ['hookPayload', addDecoderSizePrefix(getBytesDecoder(), getU32Decoder())],\n    ['hookCreateRemainingAccountsLen', getU32Decoder()],\n    [\n      'migratorInitPayload',\n      addDecoderSizePrefix(getBytesDecoder(), getU32Decoder()),\n    ],\n    [\n      'migratorMigratePayload',\n      addDecoderSizePrefix(getBytesDecoder(), getU32Decoder()),\n    ],\n    ['hookCreateRemainingAccountsHash', fixDecoderSize(getBytesDecoder(), 32)],\n    ['hookRemainingAccountsHash', fixDecoderSize(getBytesDecoder(), 32)],\n    [\n      'migratorInitRemainingAccountsHash',\n      fixDecoderSize(getBytesDecoder(), 32),\n    ],\n    ['migratorRemainingAccountsHash', fixDecoderSize(getBytesDecoder(), 32)],\n    ['metadataName', addDecoderSizePrefix(getUtf8Decoder(), getU32Decoder())],\n    ['metadataSymbol', addDecoderSizePrefix(getUtf8Decoder(), getU32Decoder())],\n    ['metadataUri', addDecoderSizePrefix(getUtf8Decoder(), getU32Decoder())],\n    ['feeBeneficiaries', getArrayDecoder(getFeeBeneficiaryInputDecoder())],\n  ]);\n}\n\nexport function getInitializeLaunchArgsCodec(): Codec<\n  InitializeLaunchArgsArgs,\n  InitializeLaunchArgs\n> {\n  return combineCodec(\n    getInitializeLaunchArgsEncoder(),\n    getInitializeLaunchArgsDecoder(),\n  );\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getBytesDecoder,\n  getBytesEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU16Decoder,\n  getU16Encoder,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n  type ReadonlyUint8Array,\n} from '@solana/kit';\n\nexport type PayloadBuf = { len: number; bytes: ReadonlyUint8Array };\n\nexport type PayloadBufArgs = PayloadBuf;\n\nexport function getPayloadBufEncoder(): FixedSizeEncoder<PayloadBufArgs> {\n  return getStructEncoder([\n    ['len', getU16Encoder()],\n    ['bytes', fixEncoderSize(getBytesEncoder(), 256)],\n  ]);\n}\n\nexport function getPayloadBufDecoder(): FixedSizeDecoder<PayloadBuf> {\n  return getStructDecoder([\n    ['len', getU16Decoder()],\n    ['bytes', fixDecoderSize(getBytesDecoder(), 256)],\n  ]);\n}\n\nexport function getPayloadBufCodec(): FixedSizeCodec<\n  PayloadBufArgs,\n  PayloadBuf\n> {\n  return combineCodec(getPayloadBufEncoder(), getPayloadBufDecoder());\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  assertAccountExists,\n  assertAccountsExist,\n  combineCodec,\n  decodeAccount,\n  fetchEncodedAccount,\n  fetchEncodedAccounts,\n  fixDecoderSize,\n  fixEncoderSize,\n  getAddressDecoder,\n  getAddressEncoder,\n  getBytesDecoder,\n  getBytesEncoder,\n  getI64Decoder,\n  getI64Encoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU16Decoder,\n  getU16Encoder,\n  getU32Decoder,\n  getU32Encoder,\n  getU64Decoder,\n  getU64Encoder,\n  getU8Decoder,\n  getU8Encoder,\n  transformEncoder,\n  type Account,\n  type Address,\n  type EncodedAccount,\n  type FetchAccountConfig,\n  type FetchAccountsConfig,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n  type MaybeAccount,\n  type MaybeEncodedAccount,\n  type ReadonlyUint8Array,\n} from '@solana/kit';\nimport {\n  getPayloadBufDecoder,\n  getPayloadBufEncoder,\n  type PayloadBuf,\n  type PayloadBufArgs,\n} from '../types';\n\nexport const LAUNCH_DISCRIMINATOR = new Uint8Array([\n  144, 51, 51, 163, 206, 85, 213, 38,\n]);\n\nexport function getLaunchDiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(LAUNCH_DISCRIMINATOR);\n}\n\nexport type Launch = {\n  discriminator: ReadonlyUint8Array;\n  authority: Address;\n  namespace: Address;\n  launchId: ReadonlyUint8Array;\n  phase: number;\n  bump: number;\n  launchAuthorityBump: number;\n  pad0: ReadonlyUint8Array;\n  baseMint: Address;\n  quoteMint: Address;\n  baseVault: Address;\n  quoteVault: Address;\n  baseTotalSupply: bigint;\n  baseForDistribution: bigint;\n  baseForLiquidity: bigint;\n  baseForCurve: bigint;\n  curveVirtualBase: bigint;\n  curveVirtualQuote: bigint;\n  swapFeeBps: number;\n  pad1: ReadonlyUint8Array;\n  allowBuy: number;\n  allowSell: number;\n  pad2: ReadonlyUint8Array;\n  hookProgram: Address;\n  hookFlags: number;\n  pad3: ReadonlyUint8Array;\n  hookPayload: PayloadBuf;\n  migratorProgram: Address;\n  migratorInitPayload: PayloadBuf;\n  migratorMigratePayload: PayloadBuf;\n  curveKind: number;\n  swapLock: number;\n  vestingEnabled: number;\n  pad4: ReadonlyUint8Array;\n  curveParams: PayloadBuf;\n  createdAt: bigint;\n  reserved: ReadonlyUint8Array;\n};\n\nexport type LaunchArgs = {\n  authority: Address;\n  namespace: Address;\n  launchId: ReadonlyUint8Array;\n  phase: number;\n  bump: number;\n  launchAuthorityBump: number;\n  pad0: ReadonlyUint8Array;\n  baseMint: Address;\n  quoteMint: Address;\n  baseVault: Address;\n  quoteVault: Address;\n  baseTotalSupply: number | bigint;\n  baseForDistribution: number | bigint;\n  baseForLiquidity: number | bigint;\n  baseForCurve: number | bigint;\n  curveVirtualBase: number | bigint;\n  curveVirtualQuote: number | bigint;\n  swapFeeBps: number;\n  pad1: ReadonlyUint8Array;\n  allowBuy: number;\n  allowSell: number;\n  pad2: ReadonlyUint8Array;\n  hookProgram: Address;\n  hookFlags: number;\n  pad3: ReadonlyUint8Array;\n  hookPayload: PayloadBufArgs;\n  migratorProgram: Address;\n  migratorInitPayload: PayloadBufArgs;\n  migratorMigratePayload: PayloadBufArgs;\n  curveKind: number;\n  swapLock: number;\n  vestingEnabled: number;\n  pad4: ReadonlyUint8Array;\n  curveParams: PayloadBufArgs;\n  createdAt: number | bigint;\n  reserved: ReadonlyUint8Array;\n};\n\n/** Gets the encoder for {@link LaunchArgs} account data. */\nexport function getLaunchEncoder(): FixedSizeEncoder<LaunchArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['authority', getAddressEncoder()],\n      ['namespace', getAddressEncoder()],\n      ['launchId', fixEncoderSize(getBytesEncoder(), 32)],\n      ['phase', getU8Encoder()],\n      ['bump', getU8Encoder()],\n      ['launchAuthorityBump', getU8Encoder()],\n      ['pad0', fixEncoderSize(getBytesEncoder(), 5)],\n      ['baseMint', getAddressEncoder()],\n      ['quoteMint', getAddressEncoder()],\n      ['baseVault', getAddressEncoder()],\n      ['quoteVault', getAddressEncoder()],\n      ['baseTotalSupply', getU64Encoder()],\n      ['baseForDistribution', getU64Encoder()],\n      ['baseForLiquidity', getU64Encoder()],\n      ['baseForCurve', getU64Encoder()],\n      ['curveVirtualBase', getU64Encoder()],\n      ['curveVirtualQuote', getU64Encoder()],\n      ['swapFeeBps', getU16Encoder()],\n      ['pad1', fixEncoderSize(getBytesEncoder(), 6)],\n      ['allowBuy', getU8Encoder()],\n      ['allowSell', getU8Encoder()],\n      ['pad2', fixEncoderSize(getBytesEncoder(), 6)],\n      ['hookProgram', getAddressEncoder()],\n      ['hookFlags', getU32Encoder()],\n      ['pad3', fixEncoderSize(getBytesEncoder(), 4)],\n      ['hookPayload', getPayloadBufEncoder()],\n      ['migratorProgram', getAddressEncoder()],\n      ['migratorInitPayload', getPayloadBufEncoder()],\n      ['migratorMigratePayload', getPayloadBufEncoder()],\n      ['curveKind', getU8Encoder()],\n      ['swapLock', getU8Encoder()],\n      ['vestingEnabled', getU8Encoder()],\n      ['pad4', fixEncoderSize(getBytesEncoder(), 5)],\n      ['curveParams', getPayloadBufEncoder()],\n      ['createdAt', getI64Encoder()],\n      ['reserved', fixEncoderSize(getBytesEncoder(), 64)],\n    ]),\n    (value) => ({ ...value, discriminator: LAUNCH_DISCRIMINATOR }),\n  );\n}\n\n/** Gets the decoder for {@link Launch} account data. */\nexport function getLaunchDecoder(): FixedSizeDecoder<Launch> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['authority', getAddressDecoder()],\n    ['namespace', getAddressDecoder()],\n    ['launchId', fixDecoderSize(getBytesDecoder(), 32)],\n    ['phase', getU8Decoder()],\n    ['bump', getU8Decoder()],\n    ['launchAuthorityBump', getU8Decoder()],\n    ['pad0', fixDecoderSize(getBytesDecoder(), 5)],\n    ['baseMint', getAddressDecoder()],\n    ['quoteMint', getAddressDecoder()],\n    ['baseVault', getAddressDecoder()],\n    ['quoteVault', getAddressDecoder()],\n    ['baseTotalSupply', getU64Decoder()],\n    ['baseForDistribution', getU64Decoder()],\n    ['baseForLiquidity', getU64Decoder()],\n    ['baseForCurve', getU64Decoder()],\n    ['curveVirtualBase', getU64Decoder()],\n    ['curveVirtualQuote', getU64Decoder()],\n    ['swapFeeBps', getU16Decoder()],\n    ['pad1', fixDecoderSize(getBytesDecoder(), 6)],\n    ['allowBuy', getU8Decoder()],\n    ['allowSell', getU8Decoder()],\n    ['pad2', fixDecoderSize(getBytesDecoder(), 6)],\n    ['hookProgram', getAddressDecoder()],\n    ['hookFlags', getU32Decoder()],\n    ['pad3', fixDecoderSize(getBytesDecoder(), 4)],\n    ['hookPayload', getPayloadBufDecoder()],\n    ['migratorProgram', getAddressDecoder()],\n    ['migratorInitPayload', getPayloadBufDecoder()],\n    ['migratorMigratePayload', getPayloadBufDecoder()],\n    ['curveKind', getU8Decoder()],\n    ['swapLock', getU8Decoder()],\n    ['vestingEnabled', getU8Decoder()],\n    ['pad4', fixDecoderSize(getBytesDecoder(), 5)],\n    ['curveParams', getPayloadBufDecoder()],\n    ['createdAt', getI64Decoder()],\n    ['reserved', fixDecoderSize(getBytesDecoder(), 64)],\n  ]);\n}\n\n/** Gets the codec for {@link Launch} account data. */\nexport function getLaunchCodec(): FixedSizeCodec<LaunchArgs, Launch> {\n  return combineCodec(getLaunchEncoder(), getLaunchDecoder());\n}\n\nexport function decodeLaunch<TAddress extends string = string>(\n  encodedAccount: EncodedAccount<TAddress>,\n): Account<Launch, TAddress>;\nexport function decodeLaunch<TAddress extends string = string>(\n  encodedAccount: MaybeEncodedAccount<TAddress>,\n): MaybeAccount<Launch, TAddress>;\nexport function decodeLaunch<TAddress extends string = string>(\n  encodedAccount: EncodedAccount<TAddress> | MaybeEncodedAccount<TAddress>,\n): Account<Launch, TAddress> | MaybeAccount<Launch, TAddress> {\n  return decodeAccount(\n    encodedAccount as MaybeEncodedAccount<TAddress>,\n    getLaunchDecoder(),\n  );\n}\n\nexport async function fetchLaunch<TAddress extends string = string>(\n  rpc: Parameters<typeof fetchEncodedAccount>[0],\n  address: Address<TAddress>,\n  config?: FetchAccountConfig,\n): Promise<Account<Launch, TAddress>> {\n  const maybeAccount = await fetchMaybeLaunch(rpc, address, config);\n  assertAccountExists(maybeAccount);\n  return maybeAccount;\n}\n\nexport async function fetchMaybeLaunch<TAddress extends string = string>(\n  rpc: Parameters<typeof fetchEncodedAccount>[0],\n  address: Address<TAddress>,\n  config?: FetchAccountConfig,\n): Promise<MaybeAccount<Launch, TAddress>> {\n  const maybeAccount = await fetchEncodedAccount(rpc, address, config);\n  return decodeLaunch(maybeAccount);\n}\n\nexport async function fetchAllLaunch(\n  rpc: Parameters<typeof fetchEncodedAccounts>[0],\n  addresses: Array<Address>,\n  config?: FetchAccountsConfig,\n): Promise<Account<Launch>[]> {\n  const maybeAccounts = await fetchAllMaybeLaunch(rpc, addresses, config);\n  assertAccountsExist(maybeAccounts);\n  return maybeAccounts;\n}\n\nexport async function fetchAllMaybeLaunch(\n  rpc: Parameters<typeof fetchEncodedAccounts>[0],\n  addresses: Array<Address>,\n  config?: FetchAccountsConfig,\n): Promise<MaybeAccount<Launch>[]> {\n  const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config);\n  return maybeAccounts.map((maybeAccount) => decodeLaunch(maybeAccount));\n}\n\nexport function getLaunchSize(): number {\n  return 1488;\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  assertAccountExists,\n  assertAccountsExist,\n  combineCodec,\n  decodeAccount,\n  fetchEncodedAccount,\n  fetchEncodedAccounts,\n  fixDecoderSize,\n  fixEncoderSize,\n  getAddressDecoder,\n  getAddressEncoder,\n  getArrayDecoder,\n  getArrayEncoder,\n  getBytesDecoder,\n  getBytesEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU16Decoder,\n  getU16Encoder,\n  getU64Decoder,\n  getU64Encoder,\n  getU8Decoder,\n  getU8Encoder,\n  transformEncoder,\n  type Account,\n  type Address,\n  type EncodedAccount,\n  type FetchAccountConfig,\n  type FetchAccountsConfig,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n  type MaybeAccount,\n  type MaybeEncodedAccount,\n  type ReadonlyUint8Array,\n} from '@solana/kit';\nimport {\n  getFeeBeneficiaryDecoder,\n  getFeeBeneficiaryEncoder,\n  type FeeBeneficiary,\n  type FeeBeneficiaryArgs,\n} from '../types';\n\nexport const LAUNCH_FEE_STATE_DISCRIMINATOR = new Uint8Array([\n  1, 106, 55, 241, 179, 18, 230, 232,\n]);\n\nexport function getLaunchFeeStateDiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(\n    LAUNCH_FEE_STATE_DISCRIMINATOR,\n  );\n}\n\nexport type LaunchFeeState = {\n  discriminator: ReadonlyUint8Array;\n  launch: Address;\n  beneficiaryLen: number;\n  bump: number;\n  protocolFeeBps: number;\n  swapFeeBps: number;\n  version: number;\n  pad0: ReadonlyUint8Array;\n  beneficiaries: Array<FeeBeneficiary>;\n  cumulatedBaseFees: bigint;\n  cumulatedQuoteFees: bigint;\n  distributedProtocolBaseFees: bigint;\n  distributedProtocolQuoteFees: bigint;\n  distributedBaseByBeneficiary: Array<bigint>;\n  distributedQuoteByBeneficiary: Array<bigint>;\n  reserved: ReadonlyUint8Array;\n};\n\nexport type LaunchFeeStateArgs = {\n  launch: Address;\n  beneficiaryLen: number;\n  bump: number;\n  protocolFeeBps: number;\n  swapFeeBps: number;\n  version: number;\n  pad0: ReadonlyUint8Array;\n  beneficiaries: Array<FeeBeneficiaryArgs>;\n  cumulatedBaseFees: number | bigint;\n  cumulatedQuoteFees: number | bigint;\n  distributedProtocolBaseFees: number | bigint;\n  distributedProtocolQuoteFees: number | bigint;\n  distributedBaseByBeneficiary: Array<number | bigint>;\n  distributedQuoteByBeneficiary: Array<number | bigint>;\n  reserved: ReadonlyUint8Array;\n};\n\n/** Gets the encoder for {@link LaunchFeeStateArgs} account data. */\nexport function getLaunchFeeStateEncoder(): FixedSizeEncoder<LaunchFeeStateArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['launch', getAddressEncoder()],\n      ['beneficiaryLen', getU8Encoder()],\n      ['bump', getU8Encoder()],\n      ['protocolFeeBps', getU16Encoder()],\n      ['swapFeeBps', getU16Encoder()],\n      ['version', getU8Encoder()],\n      ['pad0', fixEncoderSize(getBytesEncoder(), 1)],\n      [\n        'beneficiaries',\n        getArrayEncoder(getFeeBeneficiaryEncoder(), { size: 8 }),\n      ],\n      ['cumulatedBaseFees', getU64Encoder()],\n      ['cumulatedQuoteFees', getU64Encoder()],\n      ['distributedProtocolBaseFees', getU64Encoder()],\n      ['distributedProtocolQuoteFees', getU64Encoder()],\n      [\n        'distributedBaseByBeneficiary',\n        getArrayEncoder(getU64Encoder(), { size: 8 }),\n      ],\n      [\n        'distributedQuoteByBeneficiary',\n        getArrayEncoder(getU64Encoder(), { size: 8 }),\n      ],\n      ['reserved', fixEncoderSize(getBytesEncoder(), 128)],\n    ]),\n    (value) => ({ ...value, discriminator: LAUNCH_FEE_STATE_DISCRIMINATOR }),\n  );\n}\n\n/** Gets the decoder for {@link LaunchFeeState} account data. */\nexport function getLaunchFeeStateDecoder(): FixedSizeDecoder<LaunchFeeState> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['launch', getAddressDecoder()],\n    ['beneficiaryLen', getU8Decoder()],\n    ['bump', getU8Decoder()],\n    ['protocolFeeBps', getU16Decoder()],\n    ['swapFeeBps', getU16Decoder()],\n    ['version', getU8Decoder()],\n    ['pad0', fixDecoderSize(getBytesDecoder(), 1)],\n    ['beneficiaries', getArrayDecoder(getFeeBeneficiaryDecoder(), { size: 8 })],\n    ['cumulatedBaseFees', getU64Decoder()],\n    ['cumulatedQuoteFees', getU64Decoder()],\n    ['distributedProtocolBaseFees', getU64Decoder()],\n    ['distributedProtocolQuoteFees', getU64Decoder()],\n    [\n      'distributedBaseByBeneficiary',\n      getArrayDecoder(getU64Decoder(), { size: 8 }),\n    ],\n    [\n      'distributedQuoteByBeneficiary',\n      getArrayDecoder(getU64Decoder(), { size: 8 }),\n    ],\n    ['reserved', fixDecoderSize(getBytesDecoder(), 128)],\n  ]);\n}\n\n/** Gets the codec for {@link LaunchFeeState} account data. */\nexport function getLaunchFeeStateCodec(): FixedSizeCodec<\n  LaunchFeeStateArgs,\n  LaunchFeeState\n> {\n  return combineCodec(getLaunchFeeStateEncoder(), getLaunchFeeStateDecoder());\n}\n\nexport function decodeLaunchFeeState<TAddress extends string = string>(\n  encodedAccount: EncodedAccount<TAddress>,\n): Account<LaunchFeeState, TAddress>;\nexport function decodeLaunchFeeState<TAddress extends string = string>(\n  encodedAccount: MaybeEncodedAccount<TAddress>,\n): MaybeAccount<LaunchFeeState, TAddress>;\nexport function decodeLaunchFeeState<TAddress extends string = string>(\n  encodedAccount: EncodedAccount<TAddress> | MaybeEncodedAccount<TAddress>,\n): Account<LaunchFeeState, TAddress> | MaybeAccount<LaunchFeeState, TAddress> {\n  return decodeAccount(\n    encodedAccount as MaybeEncodedAccount<TAddress>,\n    getLaunchFeeStateDecoder(),\n  );\n}\n\nexport async function fetchLaunchFeeState<TAddress extends string = string>(\n  rpc: Parameters<typeof fetchEncodedAccount>[0],\n  address: Address<TAddress>,\n  config?: FetchAccountConfig,\n): Promise<Account<LaunchFeeState, TAddress>> {\n  const maybeAccount = await fetchMaybeLaunchFeeState(rpc, address, config);\n  assertAccountExists(maybeAccount);\n  return maybeAccount;\n}\n\nexport async function fetchMaybeLaunchFeeState<\n  TAddress extends string = string,\n>(\n  rpc: Parameters<typeof fetchEncodedAccount>[0],\n  address: Address<TAddress>,\n  config?: FetchAccountConfig,\n): Promise<MaybeAccount<LaunchFeeState, TAddress>> {\n  const maybeAccount = await fetchEncodedAccount(rpc, address, config);\n  return decodeLaunchFeeState(maybeAccount);\n}\n\nexport async function fetchAllLaunchFeeState(\n  rpc: Parameters<typeof fetchEncodedAccounts>[0],\n  addresses: Array<Address>,\n  config?: FetchAccountsConfig,\n): Promise<Account<LaunchFeeState>[]> {\n  const maybeAccounts = await fetchAllMaybeLaunchFeeState(\n    rpc,\n    addresses,\n    config,\n  );\n  assertAccountsExist(maybeAccounts);\n  return maybeAccounts;\n}\n\nexport async function fetchAllMaybeLaunchFeeState(\n  rpc: Parameters<typeof fetchEncodedAccounts>[0],\n  addresses: Array<Address>,\n  config?: FetchAccountsConfig,\n): Promise<MaybeAccount<LaunchFeeState>[]> {\n  const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config);\n  return maybeAccounts.map((maybeAccount) =>\n    decodeLaunchFeeState(maybeAccount),\n  );\n}\n\nexport function getLaunchFeeStateSize(): number {\n  return 656;\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getAddressEncoder,\n  getBytesDecoder,\n  getBytesEncoder,\n  getProgramDerivedAddress,\n  getStructDecoder,\n  getStructEncoder,\n  SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS,\n  SolanaError,\n  transformEncoder,\n  type AccountMeta,\n  type Address,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n  type Instruction,\n  type InstructionWithAccounts,\n  type InstructionWithData,\n  type ReadonlyAccount,\n  type ReadonlyUint8Array,\n  type WritableAccount,\n} from '@solana/kit';\nimport {\n  getAccountMetaFactory,\n  getAddressFromResolvedInstructionAccount,\n  type ResolvedInstructionAccount,\n} from '@solana/program-client-core';\nimport { INITIALIZER_PROGRAM_ADDRESS } from '../programs';\nimport {\n  getFeeClaimRoleDecoder,\n  getFeeClaimRoleEncoder,\n  type FeeClaimRole,\n  type FeeClaimRoleArgs,\n} from '../types';\n\nexport const CLAIM_FEES_DISCRIMINATOR = new Uint8Array([\n  82, 251, 233, 156, 12, 52, 184, 202,\n]);\n\nexport function getClaimFeesDiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(CLAIM_FEES_DISCRIMINATOR);\n}\n\nexport type ClaimFeesInstruction<\n  TProgram extends string = typeof INITIALIZER_PROGRAM_ADDRESS,\n  TAccountConfig extends string | AccountMeta<string> = string,\n  TAccountLaunch extends string | AccountMeta<string> = string,\n  TAccountLaunchFeeState extends string | AccountMeta<string> = string,\n  TAccountLaunchAuthority extends string | AccountMeta<string> = string,\n  TAccountBaseMint extends string | AccountMeta<string> = string,\n  TAccountQuoteMint extends string | AccountMeta<string> = string,\n  TAccountBaseVault extends string | AccountMeta<string> = string,\n  TAccountQuoteVault extends string | AccountMeta<string> = string,\n  TAccountRecipientBaseAta extends string | AccountMeta<string> = string,\n  TAccountRecipientQuoteAta extends string | AccountMeta<string> = string,\n  TAccountBaseTokenProgram extends string | AccountMeta<string> = string,\n  TAccountQuoteTokenProgram extends string | AccountMeta<string> = string,\n  TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n  InstructionWithData<ReadonlyUint8Array> &\n  InstructionWithAccounts<\n    [\n      TAccountConfig extends string\n        ? ReadonlyAccount<TAccountConfig>\n        : TAccountConfig,\n      TAccountLaunch extends string\n        ? ReadonlyAccount<TAccountLaunch>\n        : TAccountLaunch,\n      TAccountLaunchFeeState extends string\n        ? WritableAccount<TAccountLaunchFeeState>\n        : TAccountLaunchFeeState,\n      TAccountLaunchAuthority extends string\n        ? ReadonlyAccount<TAccountLaunchAuthority>\n        : TAccountLaunchAuthority,\n      TAccountBaseMint extends string\n        ? ReadonlyAccount<TAccountBaseMint>\n        : TAccountBaseMint,\n      TAccountQuoteMint extends string\n        ? ReadonlyAccount<TAccountQuoteMint>\n        : TAccountQuoteMint,\n      TAccountBaseVault extends string\n        ? WritableAccount<TAccountBaseVault>\n        : TAccountBaseVault,\n      TAccountQuoteVault extends string\n        ? WritableAccount<TAccountQuoteVault>\n        : TAccountQuoteVault,\n      TAccountRecipientBaseAta extends string\n        ? WritableAccount<TAccountRecipientBaseAta>\n        : TAccountRecipientBaseAta,\n      TAccountRecipientQuoteAta extends string\n        ? WritableAccount<TAccountRecipientQuoteAta>\n        : TAccountRecipientQuoteAta,\n      TAccountBaseTokenProgram extends string\n        ? ReadonlyAccount<TAccountBaseTokenProgram>\n        : TAccountBaseTokenProgram,\n      TAccountQuoteTokenProgram extends string\n        ? ReadonlyAccount<TAccountQuoteTokenProgram>\n        : TAccountQuoteTokenProgram,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type ClaimFeesInstructionData = {\n  discriminator: ReadonlyUint8Array;\n  role: FeeClaimRole;\n};\n\nexport type ClaimFeesInstructionDataArgs = { role: FeeClaimRoleArgs };\n\nexport function getClaimFeesInstructionDataEncoder(): FixedSizeEncoder<ClaimFeesInstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['role', getFeeClaimRoleEncoder()],\n    ]),\n    (value) => ({ ...value, discriminator: CLAIM_FEES_DISCRIMINATOR }),\n  );\n}\n\nexport function getClaimFeesInstructionDataDecoder(): FixedSizeDecoder<ClaimFeesInstructionData> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['role', getFeeClaimRoleDecoder()],\n  ]);\n}\n\nexport function getClaimFeesInstructionDataCodec(): FixedSizeCodec<\n  ClaimFeesInstructionDataArgs,\n  ClaimFeesInstructionData\n> {\n  return combineCodec(\n    getClaimFeesInstructionDataEncoder(),\n    getClaimFeesInstructionDataDecoder(),\n  );\n}\n\nexport type ClaimFeesAsyncInput<\n  TAccountConfig extends string = string,\n  TAccountLaunch extends string = string,\n  TAccountLaunchFeeState extends string = string,\n  TAccountLaunchAuthority extends string = string,\n  TAccountBaseMint extends string = string,\n  TAccountQuoteMint extends string = string,\n  TAccountBaseVault extends string = string,\n  TAccountQuoteVault extends string = string,\n  TAccountRecipientBaseAta extends string = string,\n  TAccountRecipientQuoteAta extends string = string,\n  TAccountBaseTokenProgram extends string = string,\n  TAccountQuoteTokenProgram extends string = string,\n> = {\n  config?: Address<TAccountConfig>;\n  launch: Address<TAccountLaunch>;\n  launchFeeState?: Address<TAccountLaunchFeeState>;\n  launchAuthority?: Address<TAccountLaunchAuthority>;\n  baseMint: Address<TAccountBaseMint>;\n  quoteMint: Address<TAccountQuoteMint>;\n  baseVault: Address<TAccountBaseVault>;\n  quoteVault: Address<TAccountQuoteVault>;\n  recipientBaseAta: Address<TAccountRecipientBaseAta>;\n  recipientQuoteAta: Address<TAccountRecipientQuoteAta>;\n  baseTokenProgram: Address<TAccountBaseTokenProgram>;\n  quoteTokenProgram: Address<TAccountQuoteTokenProgram>;\n  role: ClaimFeesInstructionDataArgs['role'];\n};\n\nexport async function getClaimFeesInstructionAsync<\n  TAccountConfig extends string,\n  TAccountLaunch extends string,\n  TAccountLaunchFeeState extends string,\n  TAccountLaunchAuthority extends string,\n  TAccountBaseMint extends string,\n  TAccountQuoteMint extends string,\n  TAccountBaseVault extends string,\n  TAccountQuoteVault extends string,\n  TAccountRecipientBaseAta extends string,\n  TAccountRecipientQuoteAta extends string,\n  TAccountBaseTokenProgram extends string,\n  TAccountQuoteTokenProgram extends string,\n  TProgramAddress extends Address = typeof INITIALIZER_PROGRAM_ADDRESS,\n>(\n  input: ClaimFeesAsyncInput<\n    TAccountConfig,\n    TAccountLaunch,\n    TAccountLaunchFeeState,\n    TAccountLaunchAuthority,\n    TAccountBaseMint,\n    TAccountQuoteMint,\n    TAccountBaseVault,\n    TAccountQuoteVault,\n    TAccountRecipientBaseAta,\n    TAccountRecipientQuoteAta,\n    TAccountBaseTokenProgram,\n    TAccountQuoteTokenProgram\n  >,\n  config?: { programAddress?: TProgramAddress },\n): Promise<\n  ClaimFeesInstruction<\n    TProgramAddress,\n    TAccountConfig,\n    TAccountLaunch,\n    TAccountLaunchFeeState,\n    TAccountLaunchAuthority,\n    TAccountBaseMint,\n    TAccountQuoteMint,\n    TAccountBaseVault,\n    TAccountQuoteVault,\n    TAccountRecipientBaseAta,\n    TAccountRecipientQuoteAta,\n    TAccountBaseTokenProgram,\n    TAccountQuoteTokenProgram\n  >\n> {\n  // Program address.\n  const programAddress = config?.programAddress ?? INITIALIZER_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    config: { value: input.config ?? null, isWritable: false },\n    launch: { value: input.launch ?? null, isWritable: false },\n    launchFeeState: { value: input.launchFeeState ?? null, isWritable: true },\n    launchAuthority: {\n      value: input.launchAuthority ?? null,\n      isWritable: false,\n    },\n    baseMint: { value: input.baseMint ?? null, isWritable: false },\n    quoteMint: { value: input.quoteMint ?? null, isWritable: false },\n    baseVault: { value: input.baseVault ?? null, isWritable: true },\n    quoteVault: { value: input.quoteVault ?? null, isWritable: true },\n    recipientBaseAta: {\n      value: input.recipientBaseAta ?? null,\n      isWritable: true,\n    },\n    recipientQuoteAta: {\n      value: input.recipientQuoteAta ?? null,\n      isWritable: true,\n    },\n    baseTokenProgram: {\n      value: input.baseTokenProgram ?? null,\n      isWritable: false,\n    },\n    quoteTokenProgram: {\n      value: input.quoteTokenProgram ?? null,\n      isWritable: false,\n    },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedInstructionAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolve default values.\n  if (!accounts.config.value) {\n    accounts.config.value = await getProgramDerivedAddress({\n      programAddress,\n      seeds: [\n        getBytesEncoder().encode(new Uint8Array([99, 111, 110, 102, 105, 103])),\n      ],\n    });\n  }\n  if (!accounts.launchFeeState.value) {\n    accounts.launchFeeState.value = await getProgramDerivedAddress({\n      programAddress,\n      seeds: [\n        getBytesEncoder().encode(\n          new Uint8Array([\n            108, 97, 117, 110, 99, 104, 95, 102, 101, 101, 95, 115, 116, 97,\n            116, 101,\n          ]),\n        ),\n        getAddressEncoder().encode(\n          getAddressFromResolvedInstructionAccount(\n            'launch',\n            accounts.launch.value,\n          ),\n        ),\n      ],\n    });\n  }\n  if (!accounts.launchAuthority.value) {\n    accounts.launchAuthority.value = await getProgramDerivedAddress({\n      programAddress,\n      seeds: [\n        getBytesEncoder().encode(\n          new Uint8Array([\n            108, 97, 117, 110, 99, 104, 95, 97, 117, 116, 104, 111, 114, 105,\n            116, 121,\n          ]),\n        ),\n        getAddressEncoder().encode(\n          getAddressFromResolvedInstructionAccount(\n            'launch',\n            accounts.launch.value,\n          ),\n        ),\n      ],\n    });\n  }\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta('config', accounts.config),\n      getAccountMeta('launch', accounts.launch),\n      getAccountMeta('launchFeeState', accounts.launchFeeState),\n      getAccountMeta('launchAuthority', accounts.launchAuthority),\n      getAccountMeta('baseMint', accounts.baseMint),\n      getAccountMeta('quoteMint', accounts.quoteMint),\n      getAccountMeta('baseVault', accounts.baseVault),\n      getAccountMeta('quoteVault', accounts.quoteVault),\n      getAccountMeta('recipientBaseAta', accounts.recipientBaseAta),\n      getAccountMeta('recipientQuoteAta', accounts.recipientQuoteAta),\n      getAccountMeta('baseTokenProgram', accounts.baseTokenProgram),\n      getAccountMeta('quoteTokenProgram', accounts.quoteTokenProgram),\n    ],\n    data: getClaimFeesInstructionDataEncoder().encode(\n      args as ClaimFeesInstructionDataArgs,\n    ),\n    programAddress,\n  } as ClaimFeesInstruction<\n    TProgramAddress,\n    TAccountConfig,\n    TAccountLaunch,\n    TAccountLaunchFeeState,\n    TAccountLaunchAuthority,\n    TAccountBaseMint,\n    TAccountQuoteMint,\n    TAccountBaseVault,\n    TAccountQuoteVault,\n    TAccountRecipientBaseAta,\n    TAccountRecipientQuoteAta,\n    TAccountBaseTokenProgram,\n    TAccountQuoteTokenProgram\n  >);\n}\n\nexport type ClaimFeesInput<\n  TAccountConfig extends string = string,\n  TAccountLaunch extends string = string,\n  TAccountLaunchFeeState extends string = string,\n  TAccountLaunchAuthority extends string = string,\n  TAccountBaseMint extends string = string,\n  TAccountQuoteMint extends string = string,\n  TAccountBaseVault extends string = string,\n  TAccountQuoteVault extends string = string,\n  TAccountRecipientBaseAta extends string = string,\n  TAccountRecipientQuoteAta extends string = string,\n  TAccountBaseTokenProgram extends string = string,\n  TAccountQuoteTokenProgram extends string = string,\n> = {\n  config: Address<TAccountConfig>;\n  launch: Address<TAccountLaunch>;\n  launchFeeState: Address<TAccountLaunchFeeState>;\n  launchAuthority: Address<TAccountLaunchAuthority>;\n  baseMint: Address<TAccountBaseMint>;\n  quoteMint: Address<TAccountQuoteMint>;\n  baseVault: Address<TAccountBaseVault>;\n  quoteVault: Address<TAccountQuoteVault>;\n  recipientBaseAta: Address<TAccountRecipientBaseAta>;\n  recipientQuoteAta: Address<TAccountRecipientQuoteAta>;\n  baseTokenProgram: Address<TAccountBaseTokenProgram>;\n  quoteTokenProgram: Address<TAccountQuoteTokenProgram>;\n  role: ClaimFeesInstructionDataArgs['role'];\n};\n\nexport function getClaimFeesInstruction<\n  TAccountConfig extends string,\n  TAccountLaunch extends string,\n  TAccountLaunchFeeState extends string,\n  TAccountLaunchAuthority extends string,\n  TAccountBaseMint extends string,\n  TAccountQuoteMint extends string,\n  TAccountBaseVault extends string,\n  TAccountQuoteVault extends string,\n  TAccountRecipientBaseAta extends string,\n  TAccountRecipientQuoteAta extends string,\n  TAccountBaseTokenProgram extends string,\n  TAccountQuoteTokenProgram extends string,\n  TProgramAddress extends Address = typeof INITIALIZER_PROGRAM_ADDRESS,\n>(\n  input: ClaimFeesInput<\n    TAccountConfig,\n    TAccountLaunch,\n    TAccountLaunchFeeState,\n    TAccountLaunchAuthority,\n    TAccountBaseMint,\n    TAccountQuoteMint,\n    TAccountBaseVault,\n    TAccountQuoteVault,\n    TAccountRecipientBaseAta,\n    TAccountRecipientQuoteAta,\n    TAccountBaseTokenProgram,\n    TAccountQuoteTokenProgram\n  >,\n  config?: { programAddress?: TProgramAddress },\n): ClaimFeesInstruction<\n  TProgramAddress,\n  TAccountConfig,\n  TAccountLaunch,\n  TAccountLaunchFeeState,\n  TAccountLaunchAuthority,\n  TAccountBaseMint,\n  TAccountQuoteMint,\n  TAccountBaseVault,\n  TAccountQuoteVault,\n  TAccountRecipientBaseAta,\n  TAccountRecipientQuoteAta,\n  TAccountBaseTokenProgram,\n  TAccountQuoteTokenProgram\n> {\n  // Program address.\n  const programAddress = config?.programAddress ?? INITIALIZER_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    config: { value: input.config ?? null, isWritable: false },\n    launch: { value: input.launch ?? null, isWritable: false },\n    launchFeeState: { value: input.launchFeeState ?? null, isWritable: true },\n    launchAuthority: {\n      value: input.launchAuthority ?? null,\n      isWritable: false,\n    },\n    baseMint: { value: input.baseMint ?? null, isWritable: false },\n    quoteMint: { value: input.quoteMint ?? null, isWritable: false },\n    baseVault: { value: input.baseVault ?? null, isWritable: true },\n    quoteVault: { value: input.quoteVault ?? null, isWritable: true },\n    recipientBaseAta: {\n      value: input.recipientBaseAta ?? null,\n      isWritable: true,\n    },\n    recipientQuoteAta: {\n      value: input.recipientQuoteAta ?? null,\n      isWritable: true,\n    },\n    baseTokenProgram: {\n      value: input.baseTokenProgram ?? null,\n      isWritable: false,\n    },\n    quoteTokenProgram: {\n      value: input.quoteTokenProgram ?? null,\n      isWritable: false,\n    },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedInstructionAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta('config', accounts.config),\n      getAccountMeta('launch', accounts.launch),\n      getAccountMeta('launchFeeState', accounts.launchFeeState),\n      getAccountMeta('launchAuthority', accounts.launchAuthority),\n      getAccountMeta('baseMint', accounts.baseMint),\n      getAccountMeta('quoteMint', accounts.quoteMint),\n      getAccountMeta('baseVault', accounts.baseVault),\n      getAccountMeta('quoteVault', accounts.quoteVault),\n      getAccountMeta('recipientBaseAta', accounts.recipientBaseAta),\n      getAccountMeta('recipientQuoteAta', accounts.recipientQuoteAta),\n      getAccountMeta('baseTokenProgram', accounts.baseTokenProgram),\n      getAccountMeta('quoteTokenProgram', accounts.quoteTokenProgram),\n    ],\n    data: getClaimFeesInstructionDataEncoder().encode(\n      args as ClaimFeesInstructionDataArgs,\n    ),\n    programAddress,\n  } as ClaimFeesInstruction<\n    TProgramAddress,\n    TAccountConfig,\n    TAccountLaunch,\n    TAccountLaunchFeeState,\n    TAccountLaunchAuthority,\n    TAccountBaseMint,\n    TAccountQuoteMint,\n    TAccountBaseVault,\n    TAccountQuoteVault,\n    TAccountRecipientBaseAta,\n    TAccountRecipientQuoteAta,\n    TAccountBaseTokenProgram,\n    TAccountQuoteTokenProgram\n  >);\n}\n\nexport type ParsedClaimFeesInstruction<\n  TProgram extends string = typeof INITIALIZER_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    config: TAccountMetas[0];\n    launch: TAccountMetas[1];\n    launchFeeState: TAccountMetas[2];\n    launchAuthority: TAccountMetas[3];\n    baseMint: TAccountMetas[4];\n    quoteMint: TAccountMetas[5];\n    baseVault: TAccountMetas[6];\n    quoteVault: TAccountMetas[7];\n    recipientBaseAta: TAccountMetas[8];\n    recipientQuoteAta: TAccountMetas[9];\n    baseTokenProgram: TAccountMetas[10];\n    quoteTokenProgram: TAccountMetas[11];\n  };\n  data: ClaimFeesInstructionData;\n};\n\nexport function parseClaimFeesInstruction<\n  TProgram extends string,\n  TAccountMetas extends readonly AccountMeta[],\n>(\n  instruction: Instruction<TProgram> &\n    InstructionWithAccounts<TAccountMetas> &\n    InstructionWithData<ReadonlyUint8Array>,\n): ParsedClaimFeesInstruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 12) {\n    throw new SolanaError(\n      SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS,\n      {\n        actualAccountMetas: instruction.accounts.length,\n        expectedAccountMetas: 12,\n      },\n    );\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: {\n      config: getNextAccount(),\n      launch: getNextAccount(),\n      launchFeeState: getNextAccount(),\n      launchAuthority: getNextAccount(),\n      baseMint: getNextAccount(),\n      quoteMint: getNextAccount(),\n      baseVault: getNextAccount(),\n      quoteVault: getNextAccount(),\n      recipientBaseAta: getNextAccount(),\n      recipientQuoteAta: getNextAccount(),\n      baseTokenProgram: getNextAccount(),\n      quoteTokenProgram: getNextAccount(),\n    },\n    data: getClaimFeesInstructionDataDecoder().decode(instruction.data),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getAddressEncoder,\n  getBytesDecoder,\n  getBytesEncoder,\n  getProgramDerivedAddress,\n  getStructDecoder,\n  getStructEncoder,\n  getU64Decoder,\n  getU64Encoder,\n  getU8Decoder,\n  getU8Encoder,\n  SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS,\n  SolanaError,\n  transformEncoder,\n  type AccountMeta,\n  type AccountSignerMeta,\n  type Address,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n  type Instruction,\n  type InstructionWithAccounts,\n  type InstructionWithData,\n  type ReadonlyAccount,\n  type ReadonlySignerAccount,\n  type ReadonlyUint8Array,\n  type TransactionSigner,\n  type WritableAccount,\n} from '@solana/kit';\nimport {\n  getAccountMetaFactory,\n  getAddressFromResolvedInstructionAccount,\n  type ResolvedInstructionAccount,\n} from '@solana/program-client-core';\nimport { INITIALIZER_PROGRAM_ADDRESS } from '../programs';\n\nexport const CURVE_SWAP_EXACT_IN_DISCRIMINATOR = new Uint8Array([\n  196, 247, 195, 126, 227, 27, 166, 93,\n]);\n\nexport function getCurveSwapExactInDiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(\n    CURVE_SWAP_EXACT_IN_DISCRIMINATOR,\n  );\n}\n\nexport type CurveSwapExactInInstruction<\n  TProgram extends string = typeof INITIALIZER_PROGRAM_ADDRESS,\n  TAccountLaunch extends string | AccountMeta<string> = string,\n  TAccountLaunchAuthority extends string | AccountMeta<string> = string,\n  TAccountBaseVault extends string | AccountMeta<string> = string,\n  TAccountQuoteVault extends string | AccountMeta<string> = string,\n  TAccountUserBaseAccount extends string | AccountMeta<string> = string,\n  TAccountUserQuoteAccount extends string | AccountMeta<string> = string,\n  TAccountBaseMint extends string | AccountMeta<string> = string,\n  TAccountQuoteMint extends string | AccountMeta<string> = string,\n  TAccountUser extends string | AccountMeta<string> = string,\n  TAccountHookProgram extends string | AccountMeta<string> = string,\n  TAccountLaunchFeeState extends string | AccountMeta<string> = string,\n  TAccountBaseTokenProgram extends string | AccountMeta<string> = string,\n  TAccountQuoteTokenProgram extends string | AccountMeta<string> = string,\n  TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n  InstructionWithData<ReadonlyUint8Array> &\n  InstructionWithAccounts<\n    [\n      TAccountLaunch extends string\n        ? WritableAccount<TAccountLaunch>\n        : TAccountLaunch,\n      TAccountLaunchAuthority extends string\n        ? ReadonlyAccount<TAccountLaunchAuthority>\n        : TAccountLaunchAuthority,\n      TAccountBaseVault extends string\n        ? WritableAccount<TAccountBaseVault>\n        : TAccountBaseVault,\n      TAccountQuoteVault extends string\n        ? WritableAccount<TAccountQuoteVault>\n        : TAccountQuoteVault,\n      TAccountUserBaseAccount extends string\n        ? WritableAccount<TAccountUserBaseAccount>\n        : TAccountUserBaseAccount,\n      TAccountUserQuoteAccount extends string\n        ? WritableAccount<TAccountUserQuoteAccount>\n        : TAccountUserQuoteAccount,\n      TAccountBaseMint extends string\n        ? ReadonlyAccount<TAccountBaseMint>\n        : TAccountBaseMint,\n      TAccountQuoteMint extends string\n        ? ReadonlyAccount<TAccountQuoteMint>\n        : TAccountQuoteMint,\n      TAccountUser extends string\n        ? ReadonlySignerAccount<TAccountUser> & AccountSignerMeta<TAccountUser>\n        : TAccountUser,\n      TAccountHookProgram extends string\n        ? ReadonlyAccount<TAccountHookProgram>\n        : TAccountHookProgram,\n      TAccountLaunchFeeState extends string\n        ? WritableAccount<TAccountLaunchFeeState>\n        : TAccountLaunchFeeState,\n      TAccountBaseTokenProgram extends string\n        ? ReadonlyAccount<TAccountBaseTokenProgram>\n        : TAccountBaseTokenProgram,\n      TAccountQuoteTokenProgram extends string\n        ? ReadonlyAccount<TAccountQuoteTokenProgram>\n        : TAccountQuoteTokenProgram,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type CurveSwapExactInInstructionData = {\n  discriminator: ReadonlyUint8Array;\n  amountIn: bigint;\n  minAmountOut: bigint;\n  tradeDirection: number;\n};\n\nexport type CurveSwapExactInInstructionDataArgs = {\n  amountIn: number | bigint;\n  minAmountOut: number | bigint;\n  tradeDirection: number;\n};\n\nexport function getCurveSwapExactInInstructionDataEncoder(): FixedSizeEncoder<CurveSwapExactInInstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['amountIn', getU64Encoder()],\n      ['minAmountOut', getU64Encoder()],\n      ['tradeDirection', getU8Encoder()],\n    ]),\n    (value) => ({ ...value, discriminator: CURVE_SWAP_EXACT_IN_DISCRIMINATOR }),\n  );\n}\n\nexport function getCurveSwapExactInInstructionDataDecoder(): FixedSizeDecoder<CurveSwapExactInInstructionData> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['amountIn', getU64Decoder()],\n    ['minAmountOut', getU64Decoder()],\n    ['tradeDirection', getU8Decoder()],\n  ]);\n}\n\nexport function getCurveSwapExactInInstructionDataCodec(): FixedSizeCodec<\n  CurveSwapExactInInstructionDataArgs,\n  CurveSwapExactInInstructionData\n> {\n  return combineCodec(\n    getCurveSwapExactInInstructionDataEncoder(),\n    getCurveSwapExactInInstructionDataDecoder(),\n  );\n}\n\nexport type CurveSwapExactInAsyncInput<\n  TAccountLaunch extends string = string,\n  TAccountLaunchAuthority extends string = string,\n  TAccountBaseVault extends string = string,\n  TAccountQuoteVault extends string = string,\n  TAccountUserBaseAccount extends string = string,\n  TAccountUserQuoteAccount extends string = string,\n  TAccountBaseMint extends string = string,\n  TAccountQuoteMint extends string = string,\n  TAccountUser extends string = string,\n  TAccountHookProgram extends string = string,\n  TAccountLaunchFeeState extends string = string,\n  TAccountBaseTokenProgram extends string = string,\n  TAccountQuoteTokenProgram extends string = string,\n> = {\n  launch: Address<TAccountLaunch>;\n  launchAuthority: Address<TAccountLaunchAuthority>;\n  baseVault: Address<TAccountBaseVault>;\n  quoteVault: Address<TAccountQuoteVault>;\n  userBaseAccount: Address<TAccountUserBaseAccount>;\n  userQuoteAccount: Address<TAccountUserQuoteAccount>;\n  baseMint: Address<TAccountBaseMint>;\n  quoteMint: Address<TAccountQuoteMint>;\n  user: TransactionSigner<TAccountUser>;\n  /** Optional hook program (must match launch.hook_program if set) */\n  hookProgram?: Address<TAccountHookProgram>;\n  launchFeeState?: Address<TAccountLaunchFeeState>;\n  baseTokenProgram: Address<TAccountBaseTokenProgram>;\n  quoteTokenProgram: Address<TAccountQuoteTokenProgram>;\n  amountIn: CurveSwapExactInInstructionDataArgs['amountIn'];\n  minAmountOut: CurveSwapExactInInstructionDataArgs['minAmountOut'];\n  tradeDirection: CurveSwapExactInInstructionDataArgs['tradeDirection'];\n};\n\nexport async function getCurveSwapExactInInstructionAsync<\n  TAccountLaunch extends string,\n  TAccountLaunchAuthority extends string,\n  TAccountBaseVault extends string,\n  TAccountQuoteVault extends string,\n  TAccountUserBaseAccount extends string,\n  TAccountUserQuoteAccount extends string,\n  TAccountBaseMint extends string,\n  TAccountQuoteMint extends string,\n  TAccountUser extends string,\n  TAccountHookProgram extends string,\n  TAccountLaunchFeeState extends string,\n  TAccountBaseTokenProgram extends string,\n  TAccountQuoteTokenProgram extends string,\n  TProgramAddress extends Address = typeof INITIALIZER_PROGRAM_ADDRESS,\n>(\n  input: CurveSwapExactInAsyncInput<\n    TAccountLaunch,\n    TAccountLaunchAuthority,\n    TAccountBaseVault,\n    TAccountQuoteVault,\n    TAccountUserBaseAccount,\n    TAccountUserQuoteAccount,\n    TAccountBaseMint,\n    TAccountQuoteMint,\n    TAccountUser,\n    TAccountHookProgram,\n    TAccountLaunchFeeState,\n    TAccountBaseTokenProgram,\n    TAccountQuoteTokenProgram\n  >,\n  config?: { programAddress?: TProgramAddress },\n): Promise<\n  CurveSwapExactInInstruction<\n    TProgramAddress,\n    TAccountLaunch,\n    TAccountLaunchAuthority,\n    TAccountBaseVault,\n    TAccountQuoteVault,\n    TAccountUserBaseAccount,\n    TAccountUserQuoteAccount,\n    TAccountBaseMint,\n    TAccountQuoteMint,\n    TAccountUser,\n    TAccountHookProgram,\n    TAccountLaunchFeeState,\n    TAccountBaseTokenProgram,\n    TAccountQuoteTokenProgram\n  >\n> {\n  // Program address.\n  const programAddress = config?.programAddress ?? INITIALIZER_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    launch: { value: input.launch ?? null, isWritable: true },\n    launchAuthority: {\n      value: input.launchAuthority ?? null,\n      isWritable: false,\n    },\n    baseVault: { value: input.baseVault ?? null, isWritable: true },\n    quoteVault: { value: input.quoteVault ?? null, isWritable: true },\n    userBaseAccount: { value: input.userBaseAccount ?? null, isWritable: true },\n    userQuoteAccount: {\n      value: input.userQuoteAccount ?? null,\n      isWritable: true,\n    },\n    baseMint: { value: input.baseMint ?? null, isWritable: false },\n    quoteMint: { value: input.quoteMint ?? null, isWritable: false },\n    user: { value: input.user ?? null, isWritable: false },\n    hookProgram: { value: input.hookProgram ?? null, isWritable: false },\n    launchFeeState: { value: input.launchFeeState ?? null, isWritable: true },\n    baseTokenProgram: {\n      value: input.baseTokenProgram ?? null,\n      isWritable: false,\n    },\n    quoteTokenProgram: {\n      value: input.quoteTokenProgram ?? null,\n      isWritable: false,\n    },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedInstructionAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolve default values.\n  if (!accounts.launchFeeState.value) {\n    accounts.launchFeeState.value = await getProgramDerivedAddress({\n      programAddress,\n      seeds: [\n        getBytesEncoder().encode(\n          new Uint8Array([\n            108, 97, 117, 110, 99, 104, 95, 102, 101, 101, 95, 115, 116, 97,\n            116, 101,\n          ]),\n        ),\n        getAddressEncoder().encode(\n          getAddressFromResolvedInstructionAccount(\n            'launch',\n            accounts.launch.value,\n          ),\n        ),\n      ],\n    });\n  }\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta('launch', accounts.launch),\n      getAccountMeta('launchAuthority', accounts.launchAuthority),\n      getAccountMeta('baseVault', accounts.baseVault),\n      getAccountMeta('quoteVault', accounts.quoteVault),\n      getAccountMeta('userBaseAccount', accounts.userBaseAccount),\n      getAccountMeta('userQuoteAccount', accounts.userQuoteAccount),\n      getAccountMeta('baseMint', accounts.baseMint),\n      getAccountMeta('quoteMint', accounts.quoteMint),\n      getAccountMeta('user', accounts.user),\n      getAccountMeta('hookProgram', accounts.hookProgram),\n      getAccountMeta('launchFeeState', accounts.launchFeeState),\n      getAccountMeta('baseTokenProgram', accounts.baseTokenProgram),\n      getAccountMeta('quoteTokenProgram', accounts.quoteTokenProgram),\n    ],\n    data: getCurveSwapExactInInstructionDataEncoder().encode(\n      args as CurveSwapExactInInstructionDataArgs,\n    ),\n    programAddress,\n  } as CurveSwapExactInInstruction<\n    TProgramAddress,\n    TAccountLaunch,\n    TAccountLaunchAuthority,\n    TAccountBaseVault,\n    TAccountQuoteVault,\n    TAccountUserBaseAccount,\n    TAccountUserQuoteAccount,\n    TAccountBaseMint,\n    TAccountQuoteMint,\n    TAccountUser,\n    TAccountHookProgram,\n    TAccountLaunchFeeState,\n    TAccountBaseTokenProgram,\n    TAccountQuoteTokenProgram\n  >);\n}\n\nexport type CurveSwapExactInInput<\n  TAccountLaunch extends string = string,\n  TAccountLaunchAuthority extends string = string,\n  TAccountBaseVault extends string = string,\n  TAccountQuoteVault extends string = string,\n  TAccountUserBaseAccount extends string = string,\n  TAccountUserQuoteAccount extends string = string,\n  TAccountBaseMint extends string = string,\n  TAccountQuoteMint extends string = string,\n  TAccountUser extends string = string,\n  TAccountHookProgram extends string = string,\n  TAccountLaunchFeeState extends string = string,\n  TAccountBaseTokenProgram extends string = string,\n  TAccountQuoteTokenProgram extends string = string,\n> = {\n  launch: Address<TAccountLaunch>;\n  launchAuthority: Address<TAccountLaunchAuthority>;\n  baseVault: Address<TAccountBaseVault>;\n  quoteVault: Address<TAccountQuoteVault>;\n  userBaseAccount: Address<TAccountUserBaseAccount>;\n  userQuoteAccount: Address<TAccountUserQuoteAccount>;\n  baseMint: Address<TAccountBaseMint>;\n  quoteMint: Address<TAccountQuoteMint>;\n  user: TransactionSigner<TAccountUser>;\n  /** Optional hook program (must match launch.hook_program if set) */\n  hookProgram?: Address<TAccountHookProgram>;\n  launchFeeState: Address<TAccountLaunchFeeState>;\n  baseTokenProgram: Address<TAccountBaseTokenProgram>;\n  quoteTokenProgram: Address<TAccountQuoteTokenProgram>;\n  amountIn: CurveSwapExactInInstructionDataArgs['amountIn'];\n  minAmountOut: CurveSwapExactInInstructionDataArgs['minAmountOut'];\n  tradeDirection: CurveSwapExactInInstructionDataArgs['tradeDirection'];\n};\n\nexport function getCurveSwapExactInInstruction<\n  TAccountLaunch extends string,\n  TAccountLaunchAuthority extends string,\n  TAccountBaseVault extends string,\n  TAccountQuoteVault extends string,\n  TAccountUserBaseAccount extends string,\n  TAccountUserQuoteAccount extends string,\n  TAccountBaseMint extends string,\n  TAccountQuoteMint extends string,\n  TAccountUser extends string,\n  TAccountHookProgram extends string,\n  TAccountLaunchFeeState extends string,\n  TAccountBaseTokenProgram extends string,\n  TAccountQuoteTokenProgram extends string,\n  TProgramAddress extends Address = typeof INITIALIZER_PROGRAM_ADDRESS,\n>(\n  input: CurveSwapExactInInput<\n    TAccountLaunch,\n    TAccountLaunchAuthority,\n    TAccountBaseVault,\n    TAccountQuoteVault,\n    TAccountUserBaseAccount,\n    TAccountUserQuoteAccount,\n    TAccountBaseMint,\n    TAccountQuoteMint,\n    TAccountUser,\n    TAccountHookProgram,\n    TAccountLaunchFeeState,\n    TAccountBaseTokenProgram,\n    TAccountQuoteTokenProgram\n  >,\n  config?: { programAddress?: TProgramAddress },\n): CurveSwapExactInInstruction<\n  TProgramAddress,\n  TAccountLaunch,\n  TAccountLaunchAuthority,\n  TAccountBaseVault,\n  TAccountQuoteVault,\n  TAccountUserBaseAccount,\n  TAccountUserQuoteAccount,\n  TAccountBaseMint,\n  TAccountQuoteMint,\n  TAccountUser,\n  TAccountHookProgram,\n  TAccountLaunchFeeState,\n  TAccountBaseTokenProgram,\n  TAccountQuoteTokenProgram\n> {\n  // Program address.\n  const programAddress = config?.programAddress ?? INITIALIZER_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    launch: { value: input.launch ?? null, isWritable: true },\n    launchAuthority: {\n      value: input.launchAuthority ?? null,\n      isWritable: false,\n    },\n    baseVault: { value: input.baseVault ?? null, isWritable: true },\n    quoteVault: { value: input.quoteVault ?? null, isWritable: true },\n    userBaseAccount: { value: input.userBaseAccount ?? null, isWritable: true },\n    userQuoteAccount: {\n      value: input.userQuoteAccount ?? null,\n      isWritable: true,\n    },\n    baseMint: { value: input.baseMint ?? null, isWritable: false },\n    quoteMint: { value: input.quoteMint ?? null, isWritable: false },\n    user: { value: input.user ?? null, isWritable: false },\n    hookProgram: { value: input.hookProgram ?? null, isWritable: false },\n    launchFeeState: { value: input.launchFeeState ?? null, isWritable: true },\n    baseTokenProgram: {\n      value: input.baseTokenProgram ?? null,\n      isWritable: false,\n    },\n    quoteTokenProgram: {\n      value: input.quoteTokenProgram ?? null,\n      isWritable: false,\n    },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedInstructionAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta('launch', accounts.launch),\n      getAccountMeta('launchAuthority', accounts.launchAuthority),\n      getAccountMeta('baseVault', accounts.baseVault),\n      getAccountMeta('quoteVault', accounts.quoteVault),\n      getAccountMeta('userBaseAccount', accounts.userBaseAccount),\n      getAccountMeta('userQuoteAccount', accounts.userQuoteAccount),\n      getAccountMeta('baseMint', accounts.baseMint),\n      getAccountMeta('quoteMint', accounts.quoteMint),\n      getAccountMeta('user', accounts.user),\n      getAccountMeta('hookProgram', accounts.hookProgram),\n      getAccountMeta('launchFeeState', accounts.launchFeeState),\n      getAccountMeta('baseTokenProgram', accounts.baseTokenProgram),\n      getAccountMeta('quoteTokenProgram', accounts.quoteTokenProgram),\n    ],\n    data: getCurveSwapExactInInstructionDataEncoder().encode(\n      args as CurveSwapExactInInstructionDataArgs,\n    ),\n    programAddress,\n  } as CurveSwapExactInInstruction<\n    TProgramAddress,\n    TAccountLaunch,\n    TAccountLaunchAuthority,\n    TAccountBaseVault,\n    TAccountQuoteVault,\n    TAccountUserBaseAccount,\n    TAccountUserQuoteAccount,\n    TAccountBaseMint,\n    TAccountQuoteMint,\n    TAccountUser,\n    TAccountHookProgram,\n    TAccountLaunchFeeState,\n    TAccountBaseTokenProgram,\n    TAccountQuoteTokenProgram\n  >);\n}\n\nexport type ParsedCurveSwapExactInInstruction<\n  TProgram extends string = typeof INITIALIZER_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    launch: TAccountMetas[0];\n    launchAuthority: TAccountMetas[1];\n    baseVault: TAccountMetas[2];\n    quoteVault: TAccountMetas[3];\n    userBaseAccount: TAccountMetas[4];\n    userQuoteAccount: TAccountMetas[5];\n    baseMint: TAccountMetas[6];\n    quoteMint: TAccountMetas[7];\n    user: TAccountMetas[8];\n    /** Optional hook program (must match launch.hook_program if set) */\n    hookProgram?: TAccountMetas[9] | undefined;\n    launchFeeState: TAccountMetas[10];\n    baseTokenProgram: TAccountMetas[11];\n    quoteTokenProgram: TAccountMetas[12];\n  };\n  data: CurveSwapExactInInstructionData;\n};\n\nexport function parseCurveSwapExactInInstruction<\n  TProgram extends string,\n  TAccountMetas extends readonly AccountMeta[],\n>(\n  instruction: Instruction<TProgram> &\n    InstructionWithAccounts<TAccountMetas> &\n    InstructionWithData<ReadonlyUint8Array>,\n): ParsedCurveSwapExactInInstruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 13) {\n    throw new SolanaError(\n      SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS,\n      {\n        actualAccountMetas: instruction.accounts.length,\n        expectedAccountMetas: 13,\n      },\n    );\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  const getNextOptionalAccount = () => {\n    const accountMeta = getNextAccount();\n    return accountMeta.address === INITIALIZER_PROGRAM_ADDRESS\n      ? undefined\n      : accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: {\n      launch: getNextAccount(),\n      launchAuthority: getNextAccount(),\n      baseVault: getNextAccount(),\n      quoteVault: getNextAccount(),\n      userBaseAccount: getNextAccount(),\n      userQuoteAccount: getNextAccount(),\n      baseMint: getNextAccount(),\n      quoteMint: getNextAccount(),\n      user: getNextAccount(),\n      hookProgram: getNextOptionalAccount(),\n      launchFeeState: getNextAccount(),\n      baseTokenProgram: getNextAccount(),\n      quoteTokenProgram: getNextAccount(),\n    },\n    data: getCurveSwapExactInInstructionDataDecoder().decode(instruction.data),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getAddressEncoder,\n  getBytesDecoder,\n  getBytesEncoder,\n  getProgramDerivedAddress,\n  getStructDecoder,\n  getStructEncoder,\n  SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS,\n  SolanaError,\n  transformEncoder,\n  type AccountMeta,\n  type AccountSignerMeta,\n  type Address,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n  type Instruction,\n  type InstructionWithAccounts,\n  type InstructionWithData,\n  type ReadonlyAccount,\n  type ReadonlyUint8Array,\n  type TransactionSigner,\n  type WritableAccount,\n  type WritableSignerAccount,\n} from '@solana/kit';\nimport {\n  getAccountMetaFactory,\n  getAddressFromResolvedInstructionAccount,\n  type ResolvedInstructionAccount,\n} from '@solana/program-client-core';\nimport { INITIALIZER_PROGRAM_ADDRESS } from '../programs';\n\nexport const FUND_VESTING_DISCRIMINATOR = new Uint8Array([\n  57, 58, 127, 28, 175, 154, 17, 125,\n]);\n\nexport function getFundVestingDiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(\n    FUND_VESTING_DISCRIMINATOR,\n  );\n}\n\nexport type FundVestingInstruction<\n  TProgram extends string = typeof INITIALIZER_PROGRAM_ADDRESS,\n  TAccountLaunch extends string | AccountMeta<string> = string,\n  TAccountLaunchAuthority extends string | AccountMeta<string> = string,\n  TAccountVestingConfig extends string | AccountMeta<string> = string,\n  TAccountBaseMint extends string | AccountMeta<string> = string,\n  TAccountBaseVault extends string | AccountMeta<string> = string,\n  TAccountVestingVault extends string | AccountMeta<string> = string,\n  TAccountPayer extends string | AccountMeta<string> = string,\n  TAccountBaseTokenProgram extends string | AccountMeta<string> = string,\n  TAccountAssociatedTokenProgram extends string | AccountMeta<string> =\n    'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL',\n  TAccountSystemProgram extends string | AccountMeta<string> =\n    '11111111111111111111111111111111',\n  TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n  InstructionWithData<ReadonlyUint8Array> &\n  InstructionWithAccounts<\n    [\n      TAccountLaunch extends string\n        ? WritableAccount<TAccountLaunch>\n        : TAccountLaunch,\n      TAccountLaunchAuthority extends string\n        ? ReadonlyAccount<TAccountLaunchAuthority>\n        : TAccountLaunchAuthority,\n      TAccountVestingConfig extends string\n        ? ReadonlyAccount<TAccountVestingConfig>\n        : TAccountVestingConfig,\n      TAccountBaseMint extends string\n        ? ReadonlyAccount<TAccountBaseMint>\n        : TAccountBaseMint,\n      TAccountBaseVault extends string\n        ? WritableAccount<TAccountBaseVault>\n        : TAccountBaseVault,\n      TAccountVestingVault extends string\n        ? WritableAccount<TAccountVestingVault>\n        : TAccountVestingVault,\n      TAccountPayer extends string\n        ? WritableSignerAccount<TAccountPayer> &\n            AccountSignerMeta<TAccountPayer>\n        : TAccountPayer,\n      TAccountBaseTokenProgram extends string\n        ? ReadonlyAccount<TAccountBaseTokenProgram>\n        : TAccountBaseTokenProgram,\n      TAccountAssociatedTokenProgram extends string\n        ? ReadonlyAccount<TAccountAssociatedTokenProgram>\n        : TAccountAssociatedTokenProgram,\n      TAccountSystemProgram extends string\n        ? ReadonlyAccount<TAccountSystemProgram>\n        : TAccountSystemProgram,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type FundVestingInstructionData = { discriminator: ReadonlyUint8Array };\n\nexport type FundVestingInstructionDataArgs = {};\n\nexport function getFundVestingInstructionDataEncoder(): FixedSizeEncoder<FundVestingInstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([['discriminator', fixEncoderSize(getBytesEncoder(), 8)]]),\n    (value) => ({ ...value, discriminator: FUND_VESTING_DISCRIMINATOR }),\n  );\n}\n\nexport function getFundVestingInstructionDataDecoder(): FixedSizeDecoder<FundVestingInstructionData> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n  ]);\n}\n\nexport function getFundVestingInstructionDataCodec(): FixedSizeCodec<\n  FundVestingInstructionDataArgs,\n  FundVestingInstructionData\n> {\n  return combineCodec(\n    getFundVestingInstructionDataEncoder(),\n    getFundVestingInstructionDataDecoder(),\n  );\n}\n\nexport type FundVestingAsyncInput<\n  TAccountLaunch extends string = string,\n  TAccountLaunchAuthority extends string = string,\n  TAccountVestingConfig extends string = string,\n  TAccountBaseMint extends string = string,\n  TAccountBaseVault extends string = string,\n  TAccountVestingVault extends string = string,\n  TAccountPayer extends string = string,\n  TAccountBaseTokenProgram extends string = string,\n  TAccountAssociatedTokenProgram extends string = string,\n  TAccountSystemProgram extends string = string,\n> = {\n  launch: Address<TAccountLaunch>;\n  launchAuthority: Address<TAccountLaunchAuthority>;\n  vestingConfig?: Address<TAccountVestingConfig>;\n  baseMint: Address<TAccountBaseMint>;\n  baseVault: Address<TAccountBaseVault>;\n  vestingVault?: Address<TAccountVestingVault>;\n  payer: TransactionSigner<TAccountPayer>;\n  baseTokenProgram: Address<TAccountBaseTokenProgram>;\n  associatedTokenProgram?: Address<TAccountAssociatedTokenProgram>;\n  systemProgram?: Address<TAccountSystemProgram>;\n};\n\nexport async function getFundVestingInstructionAsync<\n  TAccountLaunch extends string,\n  TAccountLaunchAuthority extends string,\n  TAccountVestingConfig extends string,\n  TAccountBaseMint extends string,\n  TAccountBaseVault extends string,\n  TAccountVestingVault extends string,\n  TAccountPayer extends string,\n  TAccountBaseTokenProgram extends string,\n  TAccountAssociatedTokenProgram extends string,\n  TAccountSystemProgram extends string,\n  TProgramAddress extends Address = typeof INITIALIZER_PROGRAM_ADDRESS,\n>(\n  input: FundVestingAsyncInput<\n    TAccountLaunch,\n    TAccountLaunchAuthority,\n    TAccountVestingConfig,\n    TAccountBaseMint,\n    TAccountBaseVault,\n    TAccountVestingVault,\n    TAccountPayer,\n    TAccountBaseTokenProgram,\n    TAccountAssociatedTokenProgram,\n    TAccountSystemProgram\n  >,\n  config?: { programAddress?: TProgramAddress },\n): Promise<\n  FundVestingInstruction<\n    TProgramAddress,\n    TAccountLaunch,\n    TAccountLaunchAuthority,\n    TAccountVestingConfig,\n    TAccountBaseMint,\n    TAccountBaseVault,\n    TAccountVestingVault,\n    TAccountPayer,\n    TAccountBaseTokenProgram,\n    TAccountAssociatedTokenProgram,\n    TAccountSystemProgram\n  >\n> {\n  // Program address.\n  const programAddress = config?.programAddress ?? INITIALIZER_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    launch: { value: input.launch ?? null, isWritable: true },\n    launchAuthority: {\n      value: input.launchAuthority ?? null,\n      isWritable: false,\n    },\n    vestingConfig: { value: input.vestingConfig ?? null, isWritable: false },\n    baseMint: { value: input.baseMint ?? null, isWritable: false },\n    baseVault: { value: input.baseVault ?? null, isWritable: true },\n    vestingVault: { value: input.vestingVault ?? null, isWritable: true },\n    payer: { value: input.payer ?? null, isWritable: true },\n    baseTokenProgram: {\n      value: input.baseTokenProgram ?? null,\n      isWritable: false,\n    },\n    associatedTokenProgram: {\n      value: input.associatedTokenProgram ?? null,\n      isWritable: false,\n    },\n    systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedInstructionAccount\n  >;\n\n  // Resolve default values.\n  if (!accounts.vestingConfig.value) {\n    accounts.vestingConfig.value = await getProgramDerivedAddress({\n      programAddress:\n        '2dhWRsojcuJbEJ2uaB6ayGwXz6PcFaPGpjnqP9Bawead' as Address<'2dhWRsojcuJbEJ2uaB6ayGwXz6PcFaPGpjnqP9Bawead'>,\n      seeds: [\n        getBytesEncoder().encode(\n          new Uint8Array([\n            118, 101, 115, 116, 105, 110, 103, 95, 99, 111, 110, 102, 105, 103,\n          ]),\n        ),\n        getAddressEncoder().encode(\n          getAddressFromResolvedInstructionAccount(\n            'launch',\n            accounts.launch.value,\n          ),\n        ),\n        getAddressEncoder().encode(\n          getAddressFromResolvedInstructionAccount(\n            'baseMint',\n            accounts.baseMint.value,\n          ),\n        ),\n      ],\n    });\n  }\n  if (!accounts.vestingVault.value) {\n    accounts.vestingVault.value = await getProgramDerivedAddress({\n      programAddress:\n        'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL' as Address<'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL'>,\n      seeds: [\n        getAddressEncoder().encode(\n          getAddressFromResolvedInstructionAccount(\n            'vestingConfig',\n            accounts.vestingConfig.value,\n          ),\n        ),\n        getAddressEncoder().encode(\n          getAddressFromResolvedInstructionAccount(\n            'baseTokenProgram',\n            accounts.baseTokenProgram.value,\n          ),\n        ),\n        getAddressEncoder().encode(\n          getAddressFromResolvedInstructionAccount(\n            'baseMint',\n            accounts.baseMint.value,\n          ),\n        ),\n      ],\n    });\n  }\n  if (!accounts.associatedTokenProgram.value) {\n    accounts.associatedTokenProgram.value =\n      'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL' as Address<'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL'>;\n  }\n  if (!accounts.systemProgram.value) {\n    accounts.systemProgram.value =\n      '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n  }\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta('launch', accounts.launch),\n      getAccountMeta('launchAuthority', accounts.launchAuthority),\n      getAccountMeta('vestingConfig', accounts.vestingConfig),\n      getAccountMeta('baseMint', accounts.baseMint),\n      getAccountMeta('baseVault', accounts.baseVault),\n      getAccountMeta('vestingVault', accounts.vestingVault),\n      getAccountMeta('payer', accounts.payer),\n      getAccountMeta('baseTokenProgram', accounts.baseTokenProgram),\n      getAccountMeta('associatedTokenProgram', accounts.associatedTokenProgram),\n      getAccountMeta('systemProgram', accounts.systemProgram),\n    ],\n    data: getFundVestingInstructionDataEncoder().encode({}),\n    programAddress,\n  } as FundVestingInstruction<\n    TProgramAddress,\n    TAccountLaunch,\n    TAccountLaunchAuthority,\n    TAccountVestingConfig,\n    TAccountBaseMint,\n    TAccountBaseVault,\n    TAccountVestingVault,\n    TAccountPayer,\n    TAccountBaseTokenProgram,\n    TAccountAssociatedTokenProgram,\n    TAccountSystemProgram\n  >);\n}\n\nexport type FundVestingInput<\n  TAccountLaunch extends string = string,\n  TAccountLaunchAuthority extends string = string,\n  TAccountVestingConfig extends string = string,\n  TAccountBaseMint extends string = string,\n  TAccountBaseVault extends string = string,\n  TAccountVestingVault extends string = string,\n  TAccountPayer extends string = string,\n  TAccountBaseTokenProgram extends string = string,\n  TAccountAssociatedTokenProgram extends string = string,\n  TAccountSystemProgram extends string = string,\n> = {\n  launch: Address<TAccountLaunch>;\n  launchAuthority: Address<TAccountLaunchAuthority>;\n  vestingConfig: Address<TAccountVestingConfig>;\n  baseMint: Address<TAccountBaseMint>;\n  baseVault: Address<TAccountBaseVault>;\n  vestingVault: Address<TAccountVestingVault>;\n  payer: TransactionSigner<TAccountPayer>;\n  baseTokenProgram: Address<TAccountBaseTokenProgram>;\n  associatedTokenProgram?: Address<TAccountAssociatedTokenProgram>;\n  systemProgram?: Address<TAccountSystemProgram>;\n};\n\nexport function getFundVestingInstruction<\n  TAccountLaunch extends string,\n  TAccountLaunchAuthority extends string,\n  TAccountVestingConfig extends string,\n  TAccountBaseMint extends string,\n  TAccountBaseVault extends string,\n  TAccountVestingVault extends string,\n  TAccountPayer extends string,\n  TAccountBaseTokenProgram extends string,\n  TAccountAssociatedTokenProgram extends string,\n  TAccountSystemProgram extends string,\n  TProgramAddress extends Address = typeof INITIALIZER_PROGRAM_ADDRESS,\n>(\n  input: FundVestingInput<\n    TAccountLaunch,\n    TAccountLaunchAuthority,\n    TAccountVestingConfig,\n    TAccountBaseMint,\n    TAccountBaseVault,\n    TAccountVestingVault,\n    TAccountPayer,\n    TAccountBaseTokenProgram,\n    TAccountAssociatedTokenProgram,\n    TAccountSystemProgram\n  >,\n  config?: { programAddress?: TProgramAddress },\n): FundVestingInstruction<\n  TProgramAddress,\n  TAccountLaunch,\n  TAccountLaunchAuthority,\n  TAccountVestingConfig,\n  TAccountBaseMint,\n  TAccountBaseVault,\n  TAccountVestingVault,\n  TAccountPayer,\n  TAccountBaseTokenProgram,\n  TAccountAssociatedTokenProgram,\n  TAccountSystemProgram\n> {\n  // Program address.\n  const programAddress = config?.programAddress ?? INITIALIZER_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    launch: { value: input.launch ?? null, isWritable: true },\n    launchAuthority: {\n      value: input.launchAuthority ?? null,\n      isWritable: false,\n    },\n    vestingConfig: { value: input.vestingConfig ?? null, isWritable: false },\n    baseMint: { value: input.baseMint ?? null, isWritable: false },\n    baseVault: { value: input.baseVault ?? null, isWritable: true },\n    vestingVault: { value: input.vestingVault ?? null, isWritable: true },\n    payer: { value: input.payer ?? null, isWritable: true },\n    baseTokenProgram: {\n      value: input.baseTokenProgram ?? null,\n      isWritable: false,\n    },\n    associatedTokenProgram: {\n      value: input.associatedTokenProgram ?? null,\n      isWritable: false,\n    },\n    systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedInstructionAccount\n  >;\n\n  // Resolve default values.\n  if (!accounts.associatedTokenProgram.value) {\n    accounts.associatedTokenProgram.value =\n      'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL' as Address<'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL'>;\n  }\n  if (!accounts.systemProgram.value) {\n    accounts.systemProgram.value =\n      '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n  }\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta('launch', accounts.launch),\n      getAccountMeta('launchAuthority', accounts.launchAuthority),\n      getAccountMeta('vestingConfig', accounts.vestingConfig),\n      getAccountMeta('baseMint', accounts.baseMint),\n      getAccountMeta('baseVault', accounts.baseVault),\n      getAccountMeta('vestingVault', accounts.vestingVault),\n      getAccountMeta('payer', accounts.payer),\n      getAccountMeta('baseTokenProgram', accounts.baseTokenProgram),\n      getAccountMeta('associatedTokenProgram', accounts.associatedTokenProgram),\n      getAccountMeta('systemProgram', accounts.systemProgram),\n    ],\n    data: getFundVestingInstructionDataEncoder().encode({}),\n    programAddress,\n  } as FundVestingInstruction<\n    TProgramAddress,\n    TAccountLaunch,\n    TAccountLaunchAuthority,\n    TAccountVestingConfig,\n    TAccountBaseMint,\n    TAccountBaseVault,\n    TAccountVestingVault,\n    TAccountPayer,\n    TAccountBaseTokenProgram,\n    TAccountAssociatedTokenProgram,\n    TAccountSystemProgram\n  >);\n}\n\nexport type ParsedFundVestingInstruction<\n  TProgram extends string = typeof INITIALIZER_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    launch: TAccountMetas[0];\n    launchAuthority: TAccountMetas[1];\n    vestingConfig: TAccountMetas[2];\n    baseMint: TAccountMetas[3];\n    baseVault: TAccountMetas[4];\n    vestingVault: TAccountMetas[5];\n    payer: TAccountMetas[6];\n    baseTokenProgram: TAccountMetas[7];\n    associatedTokenProgram: TAccountMetas[8];\n    systemProgram: TAccountMetas[9];\n  };\n  data: FundVestingInstructionData;\n};\n\nexport function parseFundVestingInstruction<\n  TProgram extends string,\n  TAccountMetas extends readonly AccountMeta[],\n>(\n  instruction: Instruction<TProgram> &\n    InstructionWithAccounts<TAccountMetas> &\n    InstructionWithData<ReadonlyUint8Array>,\n): ParsedFundVestingInstruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 10) {\n    throw new SolanaError(\n      SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS,\n      {\n        actualAccountMetas: instruction.accounts.length,\n        expectedAccountMetas: 10,\n      },\n    );\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: {\n      launch: getNextAccount(),\n      launchAuthority: getNextAccount(),\n      vestingConfig: getNextAccount(),\n      baseMint: getNextAccount(),\n      baseVault: getNextAccount(),\n      vestingVault: getNextAccount(),\n      payer: getNextAccount(),\n      baseTokenProgram: getNextAccount(),\n      associatedTokenProgram: getNextAccount(),\n      systemProgram: getNextAccount(),\n    },\n    data: getFundVestingInstructionDataDecoder().decode(instruction.data),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getAddressEncoder,\n  getBytesDecoder,\n  getBytesEncoder,\n  getProgramDerivedAddress,\n  getStructDecoder,\n  getStructEncoder,\n  SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS,\n  SolanaError,\n  transformEncoder,\n  type AccountMeta,\n  type Address,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n  type Instruction,\n  type InstructionWithAccounts,\n  type InstructionWithData,\n  type ReadonlyAccount,\n  type ReadonlyUint8Array,\n  type WritableAccount,\n} from '@solana/kit';\nimport {\n  getAccountMetaFactory,\n  getAddressFromResolvedInstructionAccount,\n  type ResolvedInstructionAccount,\n} from '@solana/program-client-core';\nimport { INITIALIZER_PROGRAM_ADDRESS } from '../programs';\n\nexport const HARVEST_MIGRATED_FEES_DISCRIMINATOR = new Uint8Array([\n  63, 77, 73, 117, 2, 43, 255, 176,\n]);\n\nexport function getHarvestMigratedFeesDiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(\n    HARVEST_MIGRATED_FEES_DISCRIMINATOR,\n  );\n}\n\nexport type HarvestMigratedFeesInstruction<\n  TProgram extends string = typeof INITIALIZER_PROGRAM_ADDRESS,\n  TAccountLaunch extends string | AccountMeta<string> = string,\n  TAccountLaunchFeeState extends string | AccountMeta<string> = string,\n  TAccountLaunchAuthority extends string | AccountMeta<string> = string,\n  TAccountBaseMint extends string | AccountMeta<string> = string,\n  TAccountQuoteMint extends string | AccountMeta<string> = string,\n  TAccountBaseVault extends string | AccountMeta<string> = string,\n  TAccountQuoteVault extends string | AccountMeta<string> = string,\n  TAccountPool extends string | AccountMeta<string> = string,\n  TAccountLaunchLpPosition extends string | AccountMeta<string> = string,\n  TAccountPoolAuthority extends string | AccountMeta<string> = string,\n  TAccountPoolVault0 extends string | AccountMeta<string> = string,\n  TAccountPoolVault1 extends string | AccountMeta<string> = string,\n  TAccountToken0Mint extends string | AccountMeta<string> = string,\n  TAccountToken1Mint extends string | AccountMeta<string> = string,\n  TAccountCpmmProgram extends string | AccountMeta<string> =\n    '9PSxVPoPfnbZ8Q1uQhgS6ZxvBjFboZtebNsu34umxkgQ',\n  TAccountBaseTokenProgram extends string | AccountMeta<string> = string,\n  TAccountQuoteTokenProgram extends string | AccountMeta<string> = string,\n  TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n  InstructionWithData<ReadonlyUint8Array> &\n  InstructionWithAccounts<\n    [\n      TAccountLaunch extends string\n        ? ReadonlyAccount<TAccountLaunch>\n        : TAccountLaunch,\n      TAccountLaunchFeeState extends string\n        ? WritableAccount<TAccountLaunchFeeState>\n        : TAccountLaunchFeeState,\n      TAccountLaunchAuthority extends string\n        ? ReadonlyAccount<TAccountLaunchAuthority>\n        : TAccountLaunchAuthority,\n      TAccountBaseMint extends string\n        ? ReadonlyAccount<TAccountBaseMint>\n        : TAccountBaseMint,\n      TAccountQuoteMint extends string\n        ? ReadonlyAccount<TAccountQuoteMint>\n        : TAccountQuoteMint,\n      TAccountBaseVault extends string\n        ? WritableAccount<TAccountBaseVault>\n        : TAccountBaseVault,\n      TAccountQuoteVault extends string\n        ? WritableAccount<TAccountQuoteVault>\n        : TAccountQuoteVault,\n      TAccountPool extends string\n        ? WritableAccount<TAccountPool>\n        : TAccountPool,\n      TAccountLaunchLpPosition extends string\n        ? WritableAccount<TAccountLaunchLpPosition>\n        : TAccountLaunchLpPosition,\n      TAccountPoolAuthority extends string\n        ? ReadonlyAccount<TAccountPoolAuthority>\n        : TAccountPoolAuthority,\n      TAccountPoolVault0 extends string\n        ? WritableAccount<TAccountPoolVault0>\n        : TAccountPoolVault0,\n      TAccountPoolVault1 extends string\n        ? WritableAccount<TAccountPoolVault1>\n        : TAccountPoolVault1,\n      TAccountToken0Mint extends string\n        ? ReadonlyAccount<TAccountToken0Mint>\n        : TAccountToken0Mint,\n      TAccountToken1Mint extends string\n        ? ReadonlyAccount<TAccountToken1Mint>\n        : TAccountToken1Mint,\n      TAccountCpmmProgram extends string\n        ? ReadonlyAccount<TAccountCpmmProgram>\n        : TAccountCpmmProgram,\n      TAccountBaseTokenProgram extends string\n        ? ReadonlyAccount<TAccountBaseTokenProgram>\n        : TAccountBaseTokenProgram,\n      TAccountQuoteTokenProgram extends string\n        ? ReadonlyAccount<TAccountQuoteTokenProgram>\n        : TAccountQuoteTokenProgram,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type HarvestMigratedFeesInstructionData = {\n  discriminator: ReadonlyUint8Array;\n};\n\nexport type HarvestMigratedFeesInstructionDataArgs = {};\n\nexport function getHarvestMigratedFeesInstructionDataEncoder(): FixedSizeEncoder<HarvestMigratedFeesInstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([['discriminator', fixEncoderSize(getBytesEncoder(), 8)]]),\n    (value) => ({\n      ...value,\n      discriminator: HARVEST_MIGRATED_FEES_DISCRIMINATOR,\n    }),\n  );\n}\n\nexport function getHarvestMigratedFeesInstructionDataDecoder(): FixedSizeDecoder<HarvestMigratedFeesInstructionData> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n  ]);\n}\n\nexport function getHarvestMigratedFeesInstructionDataCodec(): FixedSizeCodec<\n  HarvestMigratedFeesInstructionDataArgs,\n  HarvestMigratedFeesInstructionData\n> {\n  return combineCodec(\n    getHarvestMigratedFeesInstructionDataEncoder(),\n    getHarvestMigratedFeesInstructionDataDecoder(),\n  );\n}\n\nexport type HarvestMigratedFeesAsyncInput<\n  TAccountLaunch extends string = string,\n  TAccountLaunchFeeState extends string = string,\n  TAccountLaunchAuthority extends string = string,\n  TAccountBaseMint extends string = string,\n  TAccountQuoteMint extends string = string,\n  TAccountBaseVault extends string = string,\n  TAccountQuoteVault extends string = string,\n  TAccountPool extends string = string,\n  TAccountLaunchLpPosition extends string = string,\n  TAccountPoolAuthority extends string = string,\n  TAccountPoolVault0 extends string = string,\n  TAccountPoolVault1 extends string = string,\n  TAccountToken0Mint extends string = string,\n  TAccountToken1Mint extends string = string,\n  TAccountCpmmProgram extends string = string,\n  TAccountBaseTokenProgram extends string = string,\n  TAccountQuoteTokenProgram extends string = string,\n> = {\n  launch: Address<TAccountLaunch>;\n  launchFeeState?: Address<TAccountLaunchFeeState>;\n  launchAuthority?: Address<TAccountLaunchAuthority>;\n  baseMint: Address<TAccountBaseMint>;\n  quoteMint: Address<TAccountQuoteMint>;\n  baseVault: Address<TAccountBaseVault>;\n  quoteVault: Address<TAccountQuoteVault>;\n  pool: Address<TAccountPool>;\n  launchLpPosition: Address<TAccountLaunchLpPosition>;\n  poolAuthority: Address<TAccountPoolAuthority>;\n  poolVault0: Address<TAccountPoolVault0>;\n  poolVault1: Address<TAccountPoolVault1>;\n  token0Mint: Address<TAccountToken0Mint>;\n  token1Mint: Address<TAccountToken1Mint>;\n  cpmmProgram?: Address<TAccountCpmmProgram>;\n  baseTokenProgram: Address<TAccountBaseTokenProgram>;\n  quoteTokenProgram: Address<TAccountQuoteTokenProgram>;\n};\n\nexport async function getHarvestMigratedFeesInstructionAsync<\n  TAccountLaunch extends string,\n  TAccountLaunchFeeState extends string,\n  TAccountLaunchAuthority extends string,\n  TAccountBaseMint extends string,\n  TAccountQuoteMint extends string,\n  TAccountBaseVault extends string,\n  TAccountQuoteVault extends string,\n  TAccountPool extends string,\n  TAccountLaunchLpPosition extends string,\n  TAccountPoolAuthority extends string,\n  TAccountPoolVault0 extends string,\n  TAccountPoolVault1 extends string,\n  TAccountToken0Mint extends string,\n  TAccountToken1Mint extends string,\n  TAccountCpmmProgram extends string,\n  TAccountBaseTokenProgram extends string,\n  TAccountQuoteTokenProgram extends string,\n  TProgramAddress extends Address = typeof INITIALIZER_PROGRAM_ADDRESS,\n>(\n  input: HarvestMigratedFeesAsyncInput<\n    TAccountLaunch,\n    TAccountLaunchFeeState,\n    TAccountLaunchAuthority,\n    TAccountBaseMint,\n    TAccountQuoteMint,\n    TAccountBaseVault,\n    TAccountQuoteVault,\n    TAccountPool,\n    TAccountLaunchLpPosition,\n    TAccountPoolAuthority,\n    TAccountPoolVault0,\n    TAccountPoolVault1,\n    TAccountToken0Mint,\n    TAccountToken1Mint,\n    TAccountCpmmProgram,\n    TAccountBaseTokenProgram,\n    TAccountQuoteTokenProgram\n  >,\n  config?: { programAddress?: TProgramAddress },\n): Promise<\n  HarvestMigratedFeesInstruction<\n    TProgramAddress,\n    TAccountLaunch,\n    TAccountLaunchFeeState,\n    TAccountLaunchAuthority,\n    TAccountBaseMint,\n    TAccountQuoteMint,\n    TAccountBaseVault,\n    TAccountQuoteVault,\n    TAccountPool,\n    TAccountLaunchLpPosition,\n    TAccountPoolAuthority,\n    TAccountPoolVault0,\n    TAccountPoolVault1,\n    TAccountToken0Mint,\n    TAccountToken1Mint,\n    TAccountCpmmProgram,\n    TAccountBaseTokenProgram,\n    TAccountQuoteTokenProgram\n  >\n> {\n  // Program address.\n  const programAddress = config?.programAddress ?? INITIALIZER_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    launch: { value: input.launch ?? null, isWritable: false },\n    launchFeeState: { value: input.launchFeeState ?? null, isWritable: true },\n    launchAuthority: {\n      value: input.launchAuthority ?? null,\n      isWritable: false,\n    },\n    baseMint: { value: input.baseMint ?? null, isWritable: false },\n    quoteMint: { value: input.quoteMint ?? null, isWritable: false },\n    baseVault: { value: input.baseVault ?? null, isWritable: true },\n    quoteVault: { value: input.quoteVault ?? null, isWritable: true },\n    pool: { value: input.pool ?? null, isWritable: true },\n    launchLpPosition: {\n      value: input.launchLpPosition ?? null,\n      isWritable: true,\n    },\n    poolAuthority: { value: input.poolAuthority ?? null, isWritable: false },\n    poolVault0: { value: input.poolVault0 ?? null, isWritable: true },\n    poolVault1: { value: input.poolVault1 ?? null, isWritable: true },\n    token0Mint: { value: input.token0Mint ?? null, isWritable: false },\n    token1Mint: { value: input.token1Mint ?? null, isWritable: false },\n    cpmmProgram: { value: input.cpmmProgram ?? null, isWritable: false },\n    baseTokenProgram: {\n      value: input.baseTokenProgram ?? null,\n      isWritable: false,\n    },\n    quoteTokenProgram: {\n      value: input.quoteTokenProgram ?? null,\n      isWritable: false,\n    },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedInstructionAccount\n  >;\n\n  // Resolve default values.\n  if (!accounts.launchFeeState.value) {\n    accounts.launchFeeState.value = await getProgramDerivedAddress({\n      programAddress,\n      seeds: [\n        getBytesEncoder().encode(\n          new Uint8Array([\n            108, 97, 117, 110, 99, 104, 95, 102, 101, 101, 95, 115, 116, 97,\n            116, 101,\n          ]),\n        ),\n        getAddressEncoder().encode(\n          getAddressFromResolvedInstructionAccount(\n            'launch',\n            accounts.launch.value,\n          ),\n        ),\n      ],\n    });\n  }\n  if (!accounts.launchAuthority.value) {\n    accounts.launchAuthority.value = await getProgramDerivedAddress({\n      programAddress,\n      seeds: [\n        getBytesEncoder().encode(\n          new Uint8Array([\n            108, 97, 117, 110, 99, 104, 95, 97, 117, 116, 104, 111, 114, 105,\n            116, 121,\n          ]),\n        ),\n        getAddressEncoder().encode(\n          getAddressFromResolvedInstructionAccount(\n            'launch',\n            accounts.launch.value,\n          ),\n        ),\n      ],\n    });\n  }\n  if (!accounts.cpmmProgram.value) {\n    accounts.cpmmProgram.value =\n      '9PSxVPoPfnbZ8Q1uQhgS6ZxvBjFboZtebNsu34umxkgQ' as Address<'9PSxVPoPfnbZ8Q1uQhgS6ZxvBjFboZtebNsu34umxkgQ'>;\n  }\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta('launch', accounts.launch),\n      getAccountMeta('launchFeeState', accounts.launchFeeState),\n      getAccountMeta('launchAuthority', accounts.launchAuthority),\n      getAccountMeta('baseMint', accounts.baseMint),\n      getAccountMeta('quoteMint', accounts.quoteMint),\n      getAccountMeta('baseVault', accounts.baseVault),\n      getAccountMeta('quoteVault', accounts.quoteVault),\n      getAccountMeta('pool', accounts.pool),\n      getAccountMeta('launchLpPosition', accounts.launchLpPosition),\n      getAccountMeta('poolAuthority', accounts.poolAuthority),\n      getAccountMeta('poolVault0', accounts.poolVault0),\n      getAccountMeta('poolVault1', accounts.poolVault1),\n      getAccountMeta('token0Mint', accounts.token0Mint),\n      getAccountMeta('token1Mint', accounts.token1Mint),\n      getAccountMeta('cpmmProgram', accounts.cpmmProgram),\n      getAccountMeta('baseTokenProgram', accounts.baseTokenProgram),\n      getAccountMeta('quoteTokenProgram', accounts.quoteTokenProgram),\n    ],\n    data: getHarvestMigratedFeesInstructionDataEncoder().encode({}),\n    programAddress,\n  } as HarvestMigratedFeesInstruction<\n    TProgramAddress,\n    TAccountLaunch,\n    TAccountLaunchFeeState,\n    TAccountLaunchAuthority,\n    TAccountBaseMint,\n    TAccountQuoteMint,\n    TAccountBaseVault,\n    TAccountQuoteVault,\n    TAccountPool,\n    TAccountLaunchLpPosition,\n    TAccountPoolAuthority,\n    TAccountPoolVault0,\n    TAccountPoolVault1,\n    TAccountToken0Mint,\n    TAccountToken1Mint,\n    TAccountCpmmProgram,\n    TAccountBaseTokenProgram,\n    TAccountQuoteTokenProgram\n  >);\n}\n\nexport type HarvestMigratedFeesInput<\n  TAccountLaunch extends string = string,\n  TAccountLaunchFeeState extends string = string,\n  TAccountLaunchAuthority extends string = string,\n  TAccountBaseMint extends string = string,\n  TAccountQuoteMint extends string = string,\n  TAccountBaseVault extends string = string,\n  TAccountQuoteVault extends string = string,\n  TAccountPool extends string = string,\n  TAccountLaunchLpPosition extends string = string,\n  TAccountPoolAuthority extends string = string,\n  TAccountPoolVault0 extends string = string,\n  TAccountPoolVault1 extends string = string,\n  TAccountToken0Mint extends string = string,\n  TAccountToken1Mint extends string = string,\n  TAccountCpmmProgram extends string = string,\n  TAccountBaseTokenProgram extends string = string,\n  TAccountQuoteTokenProgram extends string = string,\n> = {\n  launch: Address<TAccountLaunch>;\n  launchFeeState: Address<TAccountLaunchFeeState>;\n  launchAuthority: Address<TAccountLaunchAuthority>;\n  baseMint: Address<TAccountBaseMint>;\n  quoteMint: Address<TAccountQuoteMint>;\n  baseVault: Address<TAccountBaseVault>;\n  quoteVault: Address<TAccountQuoteVault>;\n  pool: Address<TAccountPool>;\n  launchLpPosition: Address<TAccountLaunchLpPosition>;\n  poolAuthority: Address<TAccountPoolAuthority>;\n  poolVault0: Address<TAccountPoolVault0>;\n  poolVault1: Address<TAccountPoolVault1>;\n  token0Mint: Address<TAccountToken0Mint>;\n  token1Mint: Address<TAccountToken1Mint>;\n  cpmmProgram?: Address<TAccountCpmmProgram>;\n  baseTokenProgram: Address<TAccountBaseTokenProgram>;\n  quoteTokenProgram: Address<TAccountQuoteTokenProgram>;\n};\n\nexport function getHarvestMigratedFeesInstruction<\n  TAccountLaunch extends string,\n  TAccountLaunchFeeState extends string,\n  TAccountLaunchAuthority extends string,\n  TAccountBaseMint extends string,\n  TAccountQuoteMint extends string,\n  TAccountBaseVault extends string,\n  TAccountQuoteVault extends string,\n  TAccountPool extends string,\n  TAccountLaunchLpPosition extends string,\n  TAccountPoolAuthority extends string,\n  TAccountPoolVault0 extends string,\n  TAccountPoolVault1 extends string,\n  TAccountToken0Mint extends string,\n  TAccountToken1Mint extends string,\n  TAccountCpmmProgram extends string,\n  TAccountBaseTokenProgram extends string,\n  TAccountQuoteTokenProgram extends string,\n  TProgramAddress extends Address = typeof INITIALIZER_PROGRAM_ADDRESS,\n>(\n  input: HarvestMigratedFeesInput<\n    TAccountLaunch,\n    TAccountLaunchFeeState,\n    TAccountLaunchAuthority,\n    TAccountBaseMint,\n    TAccountQuoteMint,\n    TAccountBaseVault,\n    TAccountQuoteVault,\n    TAccountPool,\n    TAccountLaunchLpPosition,\n    TAccountPoolAuthority,\n    TAccountPoolVault0,\n    TAccountPoolVault1,\n    TAccountToken0Mint,\n    TAccountToken1Mint,\n    TAccountCpmmProgram,\n    TAccountBaseTokenProgram,\n    TAccountQuoteTokenProgram\n  >,\n  config?: { programAddress?: TProgramAddress },\n): HarvestMigratedFeesInstruction<\n  TProgramAddress,\n  TAccountLaunch,\n  TAccountLaunchFeeState,\n  TAccountLaunchAuthority,\n  TAccountBaseMint,\n  TAccountQuoteMint,\n  TAccountBaseVault,\n  TAccountQuoteVault,\n  TAccountPool,\n  TAccountLaunchLpPosition,\n  TAccountPoolAuthority,\n  TAccountPoolVault0,\n  TAccountPoolVault1,\n  TAccountToken0Mint,\n  TAccountToken1Mint,\n  TAccountCpmmProgram,\n  TAccountBaseTokenProgram,\n  TAccountQuoteTokenProgram\n> {\n  // Program address.\n  const programAddress = config?.programAddress ?? INITIALIZER_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    launch: { value: input.launch ?? null, isWritable: false },\n    launchFeeState: { value: input.launchFeeState ?? null, isWritable: true },\n    launchAuthority: {\n      value: input.launchAuthority ?? null,\n      isWritable: false,\n    },\n    baseMint: { value: input.baseMint ?? null, isWritable: false },\n    quoteMint: { value: input.quoteMint ?? null, isWritable: false },\n    baseVault: { value: input.baseVault ?? null, isWritable: true },\n    quoteVault: { value: input.quoteVault ?? null, isWritable: true },\n    pool: { value: input.pool ?? null, isWritable: true },\n    launchLpPosition: {\n      value: input.launchLpPosition ?? null,\n      isWritable: true,\n    },\n    poolAuthority: { value: input.poolAuthority ?? null, isWritable: false },\n    poolVault0: { value: input.poolVault0 ?? null, isWritable: true },\n    poolVault1: { value: input.poolVault1 ?? null, isWritable: true },\n    token0Mint: { value: input.token0Mint ?? null, isWritable: false },\n    token1Mint: { value: input.token1Mint ?? null, isWritable: false },\n    cpmmProgram: { value: input.cpmmProgram ?? null, isWritable: false },\n    baseTokenProgram: {\n      value: input.baseTokenProgram ?? null,\n      isWritable: false,\n    },\n    quoteTokenProgram: {\n      value: input.quoteTokenProgram ?? null,\n      isWritable: false,\n    },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedInstructionAccount\n  >;\n\n  // Resolve default values.\n  if (!accounts.cpmmProgram.value) {\n    accounts.cpmmProgram.value =\n      '9PSxVPoPfnbZ8Q1uQhgS6ZxvBjFboZtebNsu34umxkgQ' as Address<'9PSxVPoPfnbZ8Q1uQhgS6ZxvBjFboZtebNsu34umxkgQ'>;\n  }\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta('launch', accounts.launch),\n      getAccountMeta('launchFeeState', accounts.launchFeeState),\n      getAccountMeta('launchAuthority', accounts.launchAuthority),\n      getAccountMeta('baseMint', accounts.baseMint),\n      getAccountMeta('quoteMint', accounts.quoteMint),\n      getAccountMeta('baseVault', accounts.baseVault),\n      getAccountMeta('quoteVault', accounts.quoteVault),\n      getAccountMeta('pool', accounts.pool),\n      getAccountMeta('launchLpPosition', accounts.launchLpPosition),\n      getAccountMeta('poolAuthority', accounts.poolAuthority),\n      getAccountMeta('poolVault0', accounts.poolVault0),\n      getAccountMeta('poolVault1', accounts.poolVault1),\n      getAccountMeta('token0Mint', accounts.token0Mint),\n      getAccountMeta('token1Mint', accounts.token1Mint),\n      getAccountMeta('cpmmProgram', accounts.cpmmProgram),\n      getAccountMeta('baseTokenProgram', accounts.baseTokenProgram),\n      getAccountMeta('quoteTokenProgram', accounts.quoteTokenProgram),\n    ],\n    data: getHarvestMigratedFeesInstructionDataEncoder().encode({}),\n    programAddress,\n  } as HarvestMigratedFeesInstruction<\n    TProgramAddress,\n    TAccountLaunch,\n    TAccountLaunchFeeState,\n    TAccountLaunchAuthority,\n    TAccountBaseMint,\n    TAccountQuoteMint,\n    TAccountBaseVault,\n    TAccountQuoteVault,\n    TAccountPool,\n    TAccountLaunchLpPosition,\n    TAccountPoolAuthority,\n    TAccountPoolVault0,\n    TAccountPoolVault1,\n    TAccountToken0Mint,\n    TAccountToken1Mint,\n    TAccountCpmmProgram,\n    TAccountBaseTokenProgram,\n    TAccountQuoteTokenProgram\n  >);\n}\n\nexport type ParsedHarvestMigratedFeesInstruction<\n  TProgram extends string = typeof INITIALIZER_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    launch: TAccountMetas[0];\n    launchFeeState: TAccountMetas[1];\n    launchAuthority: TAccountMetas[2];\n    baseMint: TAccountMetas[3];\n    quoteMint: TAccountMetas[4];\n    baseVault: TAccountMetas[5];\n    quoteVault: TAccountMetas[6];\n    pool: TAccountMetas[7];\n    launchLpPosition: TAccountMetas[8];\n    poolAuthority: TAccountMetas[9];\n    poolVault0: TAccountMetas[10];\n    poolVault1: TAccountMetas[11];\n    token0Mint: TAccountMetas[12];\n    token1Mint: TAccountMetas[13];\n    cpmmProgram: TAccountMetas[14];\n    baseTokenProgram: TAccountMetas[15];\n    quoteTokenProgram: TAccountMetas[16];\n  };\n  data: HarvestMigratedFeesInstructionData;\n};\n\nexport function parseHarvestMigratedFeesInstruction<\n  TProgram extends string,\n  TAccountMetas extends readonly AccountMeta[],\n>(\n  instruction: Instruction<TProgram> &\n    InstructionWithAccounts<TAccountMetas> &\n    InstructionWithData<ReadonlyUint8Array>,\n): ParsedHarvestMigratedFeesInstruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 17) {\n    throw new SolanaError(\n      SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS,\n      {\n        actualAccountMetas: instruction.accounts.length,\n        expectedAccountMetas: 17,\n      },\n    );\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: {\n      launch: getNextAccount(),\n      launchFeeState: getNextAccount(),\n      launchAuthority: getNextAccount(),\n      baseMint: getNextAccount(),\n      quoteMint: getNextAccount(),\n      baseVault: getNextAccount(),\n      quoteVault: getNextAccount(),\n      pool: getNextAccount(),\n      launchLpPosition: getNextAccount(),\n      poolAuthority: getNextAccount(),\n      poolVault0: getNextAccount(),\n      poolVault1: getNextAccount(),\n      token0Mint: getNextAccount(),\n      token1Mint: getNextAccount(),\n      cpmmProgram: getNextAccount(),\n      baseTokenProgram: getNextAccount(),\n      quoteTokenProgram: getNextAccount(),\n    },\n    data: getHarvestMigratedFeesInstructionDataDecoder().decode(\n      instruction.data,\n    ),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getAddressDecoder,\n  getAddressEncoder,\n  getArrayDecoder,\n  getArrayEncoder,\n  getBytesDecoder,\n  getBytesEncoder,\n  getProgramDerivedAddress,\n  getStructDecoder,\n  getStructEncoder,\n  getU16Decoder,\n  getU16Encoder,\n  SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS,\n  SolanaError,\n  transformEncoder,\n  type AccountMeta,\n  type AccountSignerMeta,\n  type Address,\n  type Codec,\n  type Decoder,\n  type Encoder,\n  type Instruction,\n  type InstructionWithAccounts,\n  type InstructionWithData,\n  type ReadonlyAccount,\n  type ReadonlyUint8Array,\n  type TransactionSigner,\n  type WritableAccount,\n  type WritableSignerAccount,\n} from '@solana/kit';\nimport {\n  getAccountMetaFactory,\n  type ResolvedInstructionAccount,\n} from '@solana/program-client-core';\nimport { INITIALIZER_PROGRAM_ADDRESS } from '../programs';\n\nexport const INITIALIZE_CONFIG_DISCRIMINATOR = new Uint8Array([\n  208, 127, 21, 1, 194, 190, 196, 70,\n]);\n\nexport function getInitializeConfigDiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(\n    INITIALIZE_CONFIG_DISCRIMINATOR,\n  );\n}\n\nexport type InitializeConfigInstruction<\n  TProgram extends string = typeof INITIALIZER_PROGRAM_ADDRESS,\n  TAccountAdmin extends string | AccountMeta<string> = string,\n  TAccountConfig extends string | AccountMeta<string> = string,\n  TAccountProgramData extends string | AccountMeta<string> = string,\n  TAccountSystemProgram extends string | AccountMeta<string> =\n    '11111111111111111111111111111111',\n  TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n  InstructionWithData<ReadonlyUint8Array> &\n  InstructionWithAccounts<\n    [\n      TAccountAdmin extends string\n        ? WritableSignerAccount<TAccountAdmin> &\n            AccountSignerMeta<TAccountAdmin>\n        : TAccountAdmin,\n      TAccountConfig extends string\n        ? WritableAccount<TAccountConfig>\n        : TAccountConfig,\n      TAccountProgramData extends string\n        ? ReadonlyAccount<TAccountProgramData>\n        : TAccountProgramData,\n      TAccountSystemProgram extends string\n        ? ReadonlyAccount<TAccountSystemProgram>\n        : TAccountSystemProgram,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type InitializeConfigInstructionData = {\n  discriminator: ReadonlyUint8Array;\n  migratorAllowlist: Array<Address>;\n  hookAllowlist: Array<Address>;\n  protocolFeeBps: number;\n  minSwapFeeBps: number;\n  maxSwapFeeBps: number;\n};\n\nexport type InitializeConfigInstructionDataArgs = {\n  migratorAllowlist: Array<Address>;\n  hookAllowlist: Array<Address>;\n  protocolFeeBps: number;\n  minSwapFeeBps: number;\n  maxSwapFeeBps: number;\n};\n\nexport function getInitializeConfigInstructionDataEncoder(): Encoder<InitializeConfigInstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['migratorAllowlist', getArrayEncoder(getAddressEncoder())],\n      ['hookAllowlist', getArrayEncoder(getAddressEncoder())],\n      ['protocolFeeBps', getU16Encoder()],\n      ['minSwapFeeBps', getU16Encoder()],\n      ['maxSwapFeeBps', getU16Encoder()],\n    ]),\n    (value) => ({ ...value, discriminator: INITIALIZE_CONFIG_DISCRIMINATOR }),\n  );\n}\n\nexport function getInitializeConfigInstructionDataDecoder(): Decoder<InitializeConfigInstructionData> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['migratorAllowlist', getArrayDecoder(getAddressDecoder())],\n    ['hookAllowlist', getArrayDecoder(getAddressDecoder())],\n    ['protocolFeeBps', getU16Decoder()],\n    ['minSwapFeeBps', getU16Decoder()],\n    ['maxSwapFeeBps', getU16Decoder()],\n  ]);\n}\n\nexport function getInitializeConfigInstructionDataCodec(): Codec<\n  InitializeConfigInstructionDataArgs,\n  InitializeConfigInstructionData\n> {\n  return combineCodec(\n    getInitializeConfigInstructionDataEncoder(),\n    getInitializeConfigInstructionDataDecoder(),\n  );\n}\n\nexport type InitializeConfigAsyncInput<\n  TAccountAdmin extends string = string,\n  TAccountConfig extends string = string,\n  TAccountProgramData extends string = string,\n  TAccountSystemProgram extends string = string,\n> = {\n  admin: TransactionSigner<TAccountAdmin>;\n  config?: Address<TAccountConfig>;\n  programData: Address<TAccountProgramData>;\n  systemProgram?: Address<TAccountSystemProgram>;\n  migratorAllowlist: InitializeConfigInstructionDataArgs['migratorAllowlist'];\n  hookAllowlist: InitializeConfigInstructionDataArgs['hookAllowlist'];\n  protocolFeeBps: InitializeConfigInstructionDataArgs['protocolFeeBps'];\n  minSwapFeeBps: InitializeConfigInstructionDataArgs['minSwapFeeBps'];\n  maxSwapFeeBps: InitializeConfigInstructionDataArgs['maxSwapFeeBps'];\n};\n\nexport async function getInitializeConfigInstructionAsync<\n  TAccountAdmin extends string,\n  TAccountConfig extends string,\n  TAccountProgramData extends string,\n  TAccountSystemProgram extends string,\n  TProgramAddress extends Address = typeof INITIALIZER_PROGRAM_ADDRESS,\n>(\n  input: InitializeConfigAsyncInput<\n    TAccountAdmin,\n    TAccountConfig,\n    TAccountProgramData,\n    TAccountSystemProgram\n  >,\n  config?: { programAddress?: TProgramAddress },\n): Promise<\n  InitializeConfigInstruction<\n    TProgramAddress,\n    TAccountAdmin,\n    TAccountConfig,\n    TAccountProgramData,\n    TAccountSystemProgram\n  >\n> {\n  // Program address.\n  const programAddress = config?.programAddress ?? INITIALIZER_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    admin: { value: input.admin ?? null, isWritable: true },\n    config: { value: input.config ?? null, isWritable: true },\n    programData: { value: input.programData ?? null, isWritable: false },\n    systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedInstructionAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolve default values.\n  if (!accounts.config.value) {\n    accounts.config.value = await getProgramDerivedAddress({\n      programAddress,\n      seeds: [\n        getBytesEncoder().encode(new Uint8Array([99, 111, 110, 102, 105, 103])),\n      ],\n    });\n  }\n  if (!accounts.systemProgram.value) {\n    accounts.systemProgram.value =\n      '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n  }\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta('admin', accounts.admin),\n      getAccountMeta('config', accounts.config),\n      getAccountMeta('programData', accounts.programData),\n      getAccountMeta('systemProgram', accounts.systemProgram),\n    ],\n    data: getInitializeConfigInstructionDataEncoder().encode(\n      args as InitializeConfigInstructionDataArgs,\n    ),\n    programAddress,\n  } as InitializeConfigInstruction<\n    TProgramAddress,\n    TAccountAdmin,\n    TAccountConfig,\n    TAccountProgramData,\n    TAccountSystemProgram\n  >);\n}\n\nexport type InitializeConfigInput<\n  TAccountAdmin extends string = string,\n  TAccountConfig extends string = string,\n  TAccountProgramData extends string = string,\n  TAccountSystemProgram extends string = string,\n> = {\n  admin: TransactionSigner<TAccountAdmin>;\n  config: Address<TAccountConfig>;\n  programData: Address<TAccountProgramData>;\n  systemProgram?: Address<TAccountSystemProgram>;\n  migratorAllowlist: InitializeConfigInstructionDataArgs['migratorAllowlist'];\n  hookAllowlist: InitializeConfigInstructionDataArgs['hookAllowlist'];\n  protocolFeeBps: InitializeConfigInstructionDataArgs['protocolFeeBps'];\n  minSwapFeeBps: InitializeConfigInstructionDataArgs['minSwapFeeBps'];\n  maxSwapFeeBps: InitializeConfigInstructionDataArgs['maxSwapFeeBps'];\n};\n\nexport function getInitializeConfigInstruction<\n  TAccountAdmin extends string,\n  TAccountConfig extends string,\n  TAccountProgramData extends string,\n  TAccountSystemProgram extends string,\n  TProgramAddress extends Address = typeof INITIALIZER_PROGRAM_ADDRESS,\n>(\n  input: InitializeConfigInput<\n    TAccountAdmin,\n    TAccountConfig,\n    TAccountProgramData,\n    TAccountSystemProgram\n  >,\n  config?: { programAddress?: TProgramAddress },\n): InitializeConfigInstruction<\n  TProgramAddress,\n  TAccountAdmin,\n  TAccountConfig,\n  TAccountProgramData,\n  TAccountSystemProgram\n> {\n  // Program address.\n  const programAddress = config?.programAddress ?? INITIALIZER_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    admin: { value: input.admin ?? null, isWritable: true },\n    config: { value: input.config ?? null, isWritable: true },\n    programData: { value: input.programData ?? null, isWritable: false },\n    systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedInstructionAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolve default values.\n  if (!accounts.systemProgram.value) {\n    accounts.systemProgram.value =\n      '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n  }\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta('admin', accounts.admin),\n      getAccountMeta('config', accounts.config),\n      getAccountMeta('programData', accounts.programData),\n      getAccountMeta('systemProgram', accounts.systemProgram),\n    ],\n    data: getInitializeConfigInstructionDataEncoder().encode(\n      args as InitializeConfigInstructionDataArgs,\n    ),\n    programAddress,\n  } as InitializeConfigInstruction<\n    TProgramAddress,\n    TAccountAdmin,\n    TAccountConfig,\n    TAccountProgramData,\n    TAccountSystemProgram\n  >);\n}\n\nexport type ParsedInitializeConfigInstruction<\n  TProgram extends string = typeof INITIALIZER_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    admin: TAccountMetas[0];\n    config: TAccountMetas[1];\n    programData: TAccountMetas[2];\n    systemProgram: TAccountMetas[3];\n  };\n  data: InitializeConfigInstructionData;\n};\n\nexport function parseInitializeConfigInstruction<\n  TProgram extends string,\n  TAccountMetas extends readonly AccountMeta[],\n>(\n  instruction: Instruction<TProgram> &\n    InstructionWithAccounts<TAccountMetas> &\n    InstructionWithData<ReadonlyUint8Array>,\n): ParsedInitializeConfigInstruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 4) {\n    throw new SolanaError(\n      SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS,\n      {\n        actualAccountMetas: instruction.accounts.length,\n        expectedAccountMetas: 4,\n      },\n    );\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: {\n      admin: getNextAccount(),\n      config: getNextAccount(),\n      programData: getNextAccount(),\n      systemProgram: getNextAccount(),\n    },\n    data: getInitializeConfigInstructionDataDecoder().decode(instruction.data),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  addDecoderSizePrefix,\n  addEncoderSizePrefix,\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getAddressDecoder,\n  getAddressEncoder,\n  getArrayDecoder,\n  getArrayEncoder,\n  getBytesDecoder,\n  getBytesEncoder,\n  getProgramDerivedAddress,\n  getStructDecoder,\n  getStructEncoder,\n  getU16Decoder,\n  getU16Encoder,\n  getU32Decoder,\n  getU32Encoder,\n  getU64Decoder,\n  getU64Encoder,\n  getU8Decoder,\n  getU8Encoder,\n  getUtf8Decoder,\n  getUtf8Encoder,\n  SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS,\n  SolanaError,\n  transformEncoder,\n  type AccountMeta,\n  type AccountSignerMeta,\n  type Address,\n  type Codec,\n  type Decoder,\n  type Encoder,\n  type Instruction,\n  type InstructionWithAccounts,\n  type InstructionWithData,\n  type ReadonlyAccount,\n  type ReadonlySignerAccount,\n  type ReadonlyUint8Array,\n  type TransactionSigner,\n  type WritableAccount,\n  type WritableSignerAccount,\n} from '@solana/kit';\nimport {\n  getAccountMetaFactory,\n  getAddressFromResolvedInstructionAccount,\n  type ResolvedInstructionAccount,\n} from '@solana/program-client-core';\nimport { INITIALIZER_PROGRAM_ADDRESS } from '../programs';\nimport {\n  getFeeBeneficiaryInputDecoder,\n  getFeeBeneficiaryInputEncoder,\n  type FeeBeneficiaryInput,\n  type FeeBeneficiaryInputArgs,\n} from '../types';\n\nexport const INITIALIZE_LAUNCH_DISCRIMINATOR = new Uint8Array([\n  90, 201, 220, 142, 112, 253, 100, 13,\n]);\n\nexport function getInitializeLaunchDiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(\n    INITIALIZE_LAUNCH_DISCRIMINATOR,\n  );\n}\n\nexport type InitializeLaunchInstruction<\n  TProgram extends string = typeof INITIALIZER_PROGRAM_ADDRESS,\n  TAccountConfig extends string | AccountMeta<string> = string,\n  TAccountLaunch extends string | AccountMeta<string> = string,\n  TAccountLaunchAuthority extends string | AccountMeta<string> = string,\n  TAccountBaseMint extends string | AccountMeta<string> = string,\n  TAccountQuoteMint extends string | AccountMeta<string> = string,\n  TAccountBaseVault extends string | AccountMeta<string> = string,\n  TAccountQuoteVault extends string | AccountMeta<string> = string,\n  TAccountLaunchFeeState extends string | AccountMeta<string> = string,\n  TAccountPayer extends string | AccountMeta<string> = string,\n  TAccountAuthority extends string | AccountMeta<string> = string,\n  TAccountHookProgram extends string | AccountMeta<string> = string,\n  TAccountMigratorProgram extends string | AccountMeta<string> = string,\n  TAccountBaseTokenProgram extends string | AccountMeta<string> = string,\n  TAccountQuoteTokenProgram extends string | AccountMeta<string> = string,\n  TAccountSystemProgram extends string | AccountMeta<string> =\n    '11111111111111111111111111111111',\n  TAccountRent extends string | AccountMeta<string> =\n    'SysvarRent111111111111111111111111111111111',\n  TAccountMetadataAccount extends string | AccountMeta<string> = string,\n  TAccountMetadataProgram extends string | AccountMeta<string> = string,\n  TAccountVestingConfig extends string | AccountMeta<string> = string,\n  TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n  InstructionWithData<ReadonlyUint8Array> &\n  InstructionWithAccounts<\n    [\n      TAccountConfig extends string\n        ? ReadonlyAccount<TAccountConfig>\n        : TAccountConfig,\n      TAccountLaunch extends string\n        ? WritableAccount<TAccountLaunch>\n        : TAccountLaunch,\n      TAccountLaunchAuthority extends string\n        ? ReadonlyAccount<TAccountLaunchAuthority>\n        : TAccountLaunchAuthority,\n      TAccountBaseMint extends string\n        ? WritableSignerAccount<TAccountBaseMint> &\n            AccountSignerMeta<TAccountBaseMint>\n        : TAccountBaseMint,\n      TAccountQuoteMint extends string\n        ? ReadonlyAccount<TAccountQuoteMint>\n        : TAccountQuoteMint,\n      TAccountBaseVault extends string\n        ? WritableSignerAccount<TAccountBaseVault> &\n            AccountSignerMeta<TAccountBaseVault>\n        : TAccountBaseVault,\n      TAccountQuoteVault extends string\n        ? WritableSignerAccount<TAccountQuoteVault> &\n            AccountSignerMeta<TAccountQuoteVault>\n        : TAccountQuoteVault,\n      TAccountLaunchFeeState extends string\n        ? WritableAccount<TAccountLaunchFeeState>\n        : TAccountLaunchFeeState,\n      TAccountPayer extends string\n        ? WritableSignerAccount<TAccountPayer> &\n            AccountSignerMeta<TAccountPayer>\n        : TAccountPayer,\n      TAccountAuthority extends string\n        ? ReadonlySignerAccount<TAccountAuthority> &\n            AccountSignerMeta<TAccountAuthority>\n        : TAccountAuthority,\n      TAccountHookProgram extends string\n        ? ReadonlyAccount<TAccountHookProgram>\n        : TAccountHookProgram,\n      TAccountMigratorProgram extends string\n        ? ReadonlyAccount<TAccountMigratorProgram>\n        : TAccountMigratorProgram,\n      TAccountBaseTokenProgram extends string\n        ? ReadonlyAccount<TAccountBaseTokenProgram>\n        : TAccountBaseTokenProgram,\n      TAccountQuoteTokenProgram extends string\n        ? ReadonlyAccount<TAccountQuoteTokenProgram>\n        : TAccountQuoteTokenProgram,\n      TAccountSystemProgram extends string\n        ? ReadonlyAccount<TAccountSystemProgram>\n        : TAccountSystemProgram,\n      TAccountRent extends string\n        ? ReadonlyAccount<TAccountRent>\n        : TAccountRent,\n      TAccountMetadataAccount extends string\n        ? WritableAccount<TAccountMetadataAccount>\n        : TAccountMetadataAccount,\n      TAccountMetadataProgram extends string\n        ? ReadonlyAccount<TAccountMetadataProgram>\n        : TAccountMetadataProgram,\n      TAccountVestingConfig extends string\n        ? ReadonlyAccount<TAccountVestingConfig>\n        : TAccountVestingConfig,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type InitializeLaunchInstructionData = {\n  discriminator: ReadonlyUint8Array;\n  namespace: Address;\n  launchId: ReadonlyUint8Array;\n  baseDecimals: number;\n  baseTotalSupply: bigint;\n  baseForDistribution: bigint;\n  baseForLiquidity: bigint;\n  curveVirtualBase: bigint;\n  curveVirtualQuote: bigint;\n  swapFeeBps: number;\n  curveKind: number;\n  curveParams: ReadonlyUint8Array;\n  allowBuy: number;\n  allowSell: number;\n  hookFlags: number;\n  hookPayload: ReadonlyUint8Array;\n  hookCreateRemainingAccountsLen: number;\n  migratorInitPayload: ReadonlyUint8Array;\n  migratorMigratePayload: ReadonlyUint8Array;\n  /**\n   * Commitment hash for initialize_launch hook remaining accounts.\n   * Computed as hash(u32_len || pubkey_0 || ... || pubkey_n).\n   */\n  hookCreateRemainingAccountsHash: ReadonlyUint8Array;\n  /**\n   * Commitment hash for swap/preview hook remaining accounts.\n   * Computed as hash(u32_len || pubkey_0 || ... || pubkey_n).\n   */\n  hookRemainingAccountsHash: ReadonlyUint8Array;\n  /**\n   * Commitment hash for migrator-init remaining accounts.\n   * Computed as hash(u32_len || pubkey_0 || ... || pubkey_n).\n   */\n  migratorInitRemainingAccountsHash: ReadonlyUint8Array;\n  /**\n   * Commitment hash for migrator-migrate remaining accounts.\n   * Computed as hash(u32_len || pubkey_0 || ... || pubkey_n).\n   */\n  migratorRemainingAccountsHash: ReadonlyUint8Array;\n  /** Token name for on-chain metadata. If empty, metadata creation is skipped. */\n  metadataName: string;\n  /** Token symbol for on-chain metadata. */\n  metadataSymbol: string;\n  /** Metadata JSON URI for on-chain metadata. */\n  metadataUri: string;\n  feeBeneficiaries: Array<FeeBeneficiaryInput>;\n};\n\nexport type InitializeLaunchInstructionDataArgs = {\n  namespace: Address;\n  launchId: ReadonlyUint8Array;\n  baseDecimals: number;\n  baseTotalSupply: number | bigint;\n  baseForDistribution: number | bigint;\n  baseForLiquidity: number | bigint;\n  curveVirtualBase: number | bigint;\n  curveVirtualQuote: number | bigint;\n  swapFeeBps: number;\n  curveKind: number;\n  curveParams: ReadonlyUint8Array;\n  allowBuy: number;\n  allowSell: number;\n  hookFlags: number;\n  hookPayload: ReadonlyUint8Array;\n  hookCreateRemainingAccountsLen: number;\n  migratorInitPayload: ReadonlyUint8Array;\n  migratorMigratePayload: ReadonlyUint8Array;\n  /**\n   * Commitment hash for initialize_launch hook remaining accounts.\n   * Computed as hash(u32_len || pubkey_0 || ... || pubkey_n).\n   */\n  hookCreateRemainingAccountsHash: ReadonlyUint8Array;\n  /**\n   * Commitment hash for swap/preview hook remaining accounts.\n   * Computed as hash(u32_len || pubkey_0 || ... || pubkey_n).\n   */\n  hookRemainingAccountsHash: ReadonlyUint8Array;\n  /**\n   * Commitment hash for migrator-init remaining accounts.\n   * Computed as hash(u32_len || pubkey_0 || ... || pubkey_n).\n   */\n  migratorInitRemainingAccountsHash: ReadonlyUint8Array;\n  /**\n   * Commitment hash for migrator-migrate remaining accounts.\n   * Computed as hash(u32_len || pubkey_0 || ... || pubkey_n).\n   */\n  migratorRemainingAccountsHash: ReadonlyUint8Array;\n  /** Token name for on-chain metadata. If empty, metadata creation is skipped. */\n  metadataName: string;\n  /** Token symbol for on-chain metadata. */\n  metadataSymbol: string;\n  /** Metadata JSON URI for on-chain metadata. */\n  metadataUri: string;\n  feeBeneficiaries: Array<FeeBeneficiaryInputArgs>;\n};\n\nexport function getInitializeLaunchInstructionDataEncoder(): Encoder<InitializeLaunchInstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['namespace', getAddressEncoder()],\n      ['launchId', fixEncoderSize(getBytesEncoder(), 32)],\n      ['baseDecimals', getU8Encoder()],\n      ['baseTotalSupply', getU64Encoder()],\n      ['baseForDistribution', getU64Encoder()],\n      ['baseForLiquidity', getU64Encoder()],\n      ['curveVirtualBase', getU64Encoder()],\n      ['curveVirtualQuote', getU64Encoder()],\n      ['swapFeeBps', getU16Encoder()],\n      ['curveKind', getU8Encoder()],\n      ['curveParams', addEncoderSizePrefix(getBytesEncoder(), getU32Encoder())],\n      ['allowBuy', getU8Encoder()],\n      ['allowSell', getU8Encoder()],\n      ['hookFlags', getU32Encoder()],\n      ['hookPayload', addEncoderSizePrefix(getBytesEncoder(), getU32Encoder())],\n      ['hookCreateRemainingAccountsLen', getU32Encoder()],\n      [\n        'migratorInitPayload',\n        addEncoderSizePrefix(getBytesEncoder(), getU32Encoder()),\n      ],\n      [\n        'migratorMigratePayload',\n        addEncoderSizePrefix(getBytesEncoder(), getU32Encoder()),\n      ],\n      [\n        'hookCreateRemainingAccountsHash',\n        fixEncoderSize(getBytesEncoder(), 32),\n      ],\n      ['hookRemainingAccountsHash', fixEncoderSize(getBytesEncoder(), 32)],\n      [\n        'migratorInitRemainingAccountsHash',\n        fixEncoderSize(getBytesEncoder(), 32),\n      ],\n      ['migratorRemainingAccountsHash', fixEncoderSize(getBytesEncoder(), 32)],\n      ['metadataName', addEncoderSizePrefix(getUtf8Encoder(), getU32Encoder())],\n      [\n        'metadataSymbol',\n        addEncoderSizePrefix(getUtf8Encoder(), getU32Encoder()),\n      ],\n      ['metadataUri', addEncoderSizePrefix(getUtf8Encoder(), getU32Encoder())],\n      ['feeBeneficiaries', getArrayEncoder(getFeeBeneficiaryInputEncoder())],\n    ]),\n    (value) => ({ ...value, discriminator: INITIALIZE_LAUNCH_DISCRIMINATOR }),\n  );\n}\n\nexport function getInitializeLaunchInstructionDataDecoder(): Decoder<InitializeLaunchInstructionData> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['namespace', getAddressDecoder()],\n    ['launchId', fixDecoderSize(getBytesDecoder(), 32)],\n    ['baseDecimals', getU8Decoder()],\n    ['baseTotalSupply', getU64Decoder()],\n    ['baseForDistribution', getU64Decoder()],\n    ['baseForLiquidity', getU64Decoder()],\n    ['curveVirtualBase', getU64Decoder()],\n    ['curveVirtualQuote', getU64Decoder()],\n    ['swapFeeBps', getU16Decoder()],\n    ['curveKind', getU8Decoder()],\n    ['curveParams', addDecoderSizePrefix(getBytesDecoder(), getU32Decoder())],\n    ['allowBuy', getU8Decoder()],\n    ['allowSell', getU8Decoder()],\n    ['hookFlags', getU32Decoder()],\n    ['hookPayload', addDecoderSizePrefix(getBytesDecoder(), getU32Decoder())],\n    ['hookCreateRemainingAccountsLen', getU32Decoder()],\n    [\n      'migratorInitPayload',\n      addDecoderSizePrefix(getBytesDecoder(), getU32Decoder()),\n    ],\n    [\n      'migratorMigratePayload',\n      addDecoderSizePrefix(getBytesDecoder(), getU32Decoder()),\n    ],\n    ['hookCreateRemainingAccountsHash', fixDecoderSize(getBytesDecoder(), 32)],\n    ['hookRemainingAccountsHash', fixDecoderSize(getBytesDecoder(), 32)],\n    [\n      'migratorInitRemainingAccountsHash',\n      fixDecoderSize(getBytesDecoder(), 32),\n    ],\n    ['migratorRemainingAccountsHash', fixDecoderSize(getBytesDecoder(), 32)],\n    ['metadataName', addDecoderSizePrefix(getUtf8Decoder(), getU32Decoder())],\n    ['metadataSymbol', addDecoderSizePrefix(getUtf8Decoder(), getU32Decoder())],\n    ['metadataUri', addDecoderSizePrefix(getUtf8Decoder(), getU32Decoder())],\n    ['feeBeneficiaries', getArrayDecoder(getFeeBeneficiaryInputDecoder())],\n  ]);\n}\n\nexport function getInitializeLaunchInstructionDataCodec(): Codec<\n  InitializeLaunchInstructionDataArgs,\n  InitializeLaunchInstructionData\n> {\n  return combineCodec(\n    getInitializeLaunchInstructionDataEncoder(),\n    getInitializeLaunchInstructionDataDecoder(),\n  );\n}\n\nexport type InitializeLaunchAsyncInput<\n  TAccountConfig extends string = string,\n  TAccountLaunch extends string = string,\n  TAccountLaunchAuthority extends string = string,\n  TAccountBaseMint extends string = string,\n  TAccountQuoteMint extends string = string,\n  TAccountBaseVault extends string = string,\n  TAccountQuoteVault extends string = string,\n  TAccountLaunchFeeState extends string = string,\n  TAccountPayer extends string = string,\n  TAccountAuthority extends string = string,\n  TAccountHookProgram extends string = string,\n  TAccountMigratorProgram extends string = string,\n  TAccountBaseTokenProgram extends string = string,\n  TAccountQuoteTokenProgram extends string = string,\n  TAccountSystemProgram extends string = string,\n  TAccountRent extends string = string,\n  TAccountMetadataAccount extends string = string,\n  TAccountMetadataProgram extends string = string,\n  TAccountVestingConfig extends string = string,\n> = {\n  config?: Address<TAccountConfig>;\n  launch: Address<TAccountLaunch>;\n  /** System-owned PDA authority for launch vaults. */\n  launchAuthority?: Address<TAccountLaunchAuthority>;\n  baseMint: TransactionSigner<TAccountBaseMint>;\n  quoteMint: Address<TAccountQuoteMint>;\n  baseVault: TransactionSigner<TAccountBaseVault>;\n  quoteVault: TransactionSigner<TAccountQuoteVault>;\n  launchFeeState?: Address<TAccountLaunchFeeState>;\n  payer: TransactionSigner<TAccountPayer>;\n  /** Optional authority (creator/admin). If not provided, launch is permissionless. */\n  authority?: TransactionSigner<TAccountAuthority>;\n  /** Optional hook program for launch hooks. */\n  hookProgram?: Address<TAccountHookProgram>;\n  /** Optional migrator program. */\n  migratorProgram?: Address<TAccountMigratorProgram>;\n  baseTokenProgram: Address<TAccountBaseTokenProgram>;\n  quoteTokenProgram: Address<TAccountQuoteTokenProgram>;\n  systemProgram?: Address<TAccountSystemProgram>;\n  rent?: Address<TAccountRent>;\n  /** Metadata account (PDA derived from base_mint via Metaplex Token Metadata). */\n  metadataAccount?: Address<TAccountMetadataAccount>;\n  /** Metaplex Token Metadata program. */\n  metadataProgram?: Address<TAccountMetadataProgram>;\n  /** Optional immutable vesting configuration for the reserved base allocation. */\n  vestingConfig?: Address<TAccountVestingConfig>;\n  namespace: InitializeLaunchInstructionDataArgs['namespace'];\n  launchId: InitializeLaunchInstructionDataArgs['launchId'];\n  baseDecimals: InitializeLaunchInstructionDataArgs['baseDecimals'];\n  baseTotalSupply: InitializeLaunchInstructionDataArgs['baseTotalSupply'];\n  baseForDistribution: InitializeLaunchInstructionDataArgs['baseForDistribution'];\n  baseForLiquidity: InitializeLaunchInstructionDataArgs['baseForLiquidity'];\n  curveVirtualBase: InitializeLaunchInstructionDataArgs['curveVirtualBase'];\n  curveVirtualQuote: InitializeLaunchInstructionDataArgs['curveVirtualQuote'];\n  swapFeeBps: InitializeLaunchInstructionDataArgs['swapFeeBps'];\n  curveKind: InitializeLaunchInstructionDataArgs['curveKind'];\n  curveParams: InitializeLaunchInstructionDataArgs['curveParams'];\n  allowBuy: InitializeLaunchInstructionDataArgs['allowBuy'];\n  allowSell: InitializeLaunchInstructionDataArgs['allowSell'];\n  hookFlags: InitializeLaunchInstructionDataArgs['hookFlags'];\n  hookPayload: InitializeLaunchInstructionDataArgs['hookPayload'];\n  hookCreateRemainingAccountsLen: InitializeLaunchInstructionDataArgs['hookCreateRemainingAccountsLen'];\n  migratorInitPayload: InitializeLaunchInstructionDataArgs['migratorInitPayload'];\n  migratorMigratePayload: InitializeLaunchInstructionDataArgs['migratorMigratePayload'];\n  hookCreateRemainingAccountsHash: InitializeLaunchInstructionDataArgs['hookCreateRemainingAccountsHash'];\n  hookRemainingAccountsHash: InitializeLaunchInstructionDataArgs['hookRemainingAccountsHash'];\n  migratorInitRemainingAccountsHash: InitializeLaunchInstructionDataArgs['migratorInitRemainingAccountsHash'];\n  migratorRemainingAccountsHash: InitializeLaunchInstructionDataArgs['migratorRemainingAccountsHash'];\n  metadataName: InitializeLaunchInstructionDataArgs['metadataName'];\n  metadataSymbol: InitializeLaunchInstructionDataArgs['metadataSymbol'];\n  metadataUri: InitializeLaunchInstructionDataArgs['metadataUri'];\n  feeBeneficiaries: InitializeLaunchInstructionDataArgs['feeBeneficiaries'];\n};\n\nexport async function getInitializeLaunchInstructionAsync<\n  TAccountConfig extends string,\n  TAccountLaunch extends string,\n  TAccountLaunchAuthority extends string,\n  TAccountBaseMint extends string,\n  TAccountQuoteMint extends string,\n  TAccountBaseVault extends string,\n  TAccountQuoteVault extends string,\n  TAccountLaunchFeeState extends string,\n  TAccountPayer extends string,\n  TAccountAuthority extends string,\n  TAccountHookProgram extends string,\n  TAccountMigratorProgram extends string,\n  TAccountBaseTokenProgram extends string,\n  TAccountQuoteTokenProgram extends string,\n  TAccountSystemProgram extends string,\n  TAccountRent extends string,\n  TAccountMetadataAccount extends string,\n  TAccountMetadataProgram extends string,\n  TAccountVestingConfig extends string,\n  TProgramAddress extends Address = typeof INITIALIZER_PROGRAM_ADDRESS,\n>(\n  input: InitializeLaunchAsyncInput<\n    TAccountConfig,\n    TAccountLaunch,\n    TAccountLaunchAuthority,\n    TAccountBaseMint,\n    TAccountQuoteMint,\n    TAccountBaseVault,\n    TAccountQuoteVault,\n    TAccountLaunchFeeState,\n    TAccountPayer,\n    TAccountAuthority,\n    TAccountHookProgram,\n    TAccountMigratorProgram,\n    TAccountBaseTokenProgram,\n    TAccountQuoteTokenProgram,\n    TAccountSystemProgram,\n    TAccountRent,\n    TAccountMetadataAccount,\n    TAccountMetadataProgram,\n    TAccountVestingConfig\n  >,\n  config?: { programAddress?: TProgramAddress },\n): Promise<\n  InitializeLaunchInstruction<\n    TProgramAddress,\n    TAccountConfig,\n    TAccountLaunch,\n    TAccountLaunchAuthority,\n    TAccountBaseMint,\n    TAccountQuoteMint,\n    TAccountBaseVault,\n    TAccountQuoteVault,\n    TAccountLaunchFeeState,\n    TAccountPayer,\n    TAccountAuthority,\n    TAccountHookProgram,\n    TAccountMigratorProgram,\n    TAccountBaseTokenProgram,\n    TAccountQuoteTokenProgram,\n    TAccountSystemProgram,\n    TAccountRent,\n    TAccountMetadataAccount,\n    TAccountMetadataProgram,\n    TAccountVestingConfig\n  >\n> {\n  // Program address.\n  const programAddress = config?.programAddress ?? INITIALIZER_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    config: { value: input.config ?? null, isWritable: false },\n    launch: { value: input.launch ?? null, isWritable: true },\n    launchAuthority: {\n      value: input.launchAuthority ?? null,\n      isWritable: false,\n    },\n    baseMint: { value: input.baseMint ?? null, isWritable: true },\n    quoteMint: { value: input.quoteMint ?? null, isWritable: false },\n    baseVault: { value: input.baseVault ?? null, isWritable: true },\n    quoteVault: { value: input.quoteVault ?? null, isWritable: true },\n    launchFeeState: { value: input.launchFeeState ?? null, isWritable: true },\n    payer: { value: input.payer ?? null, isWritable: true },\n    authority: { value: input.authority ?? null, isWritable: false },\n    hookProgram: { value: input.hookProgram ?? null, isWritable: false },\n    migratorProgram: {\n      value: input.migratorProgram ?? null,\n      isWritable: false,\n    },\n    baseTokenProgram: {\n      value: input.baseTokenProgram ?? null,\n      isWritable: false,\n    },\n    quoteTokenProgram: {\n      value: input.quoteTokenProgram ?? null,\n      isWritable: false,\n    },\n    systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n    rent: { value: input.rent ?? null, isWritable: false },\n    metadataAccount: { value: input.metadataAccount ?? null, isWritable: true },\n    metadataProgram: {\n      value: input.metadataProgram ?? null,\n      isWritable: false,\n    },\n    vestingConfig: { value: input.vestingConfig ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedInstructionAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolve default values.\n  if (!accounts.config.value) {\n    accounts.config.value = await getProgramDerivedAddress({\n      programAddress,\n      seeds: [\n        getBytesEncoder().encode(new Uint8Array([99, 111, 110, 102, 105, 103])),\n      ],\n    });\n  }\n  if (!accounts.launchAuthority.value) {\n    accounts.launchAuthority.value = await getProgramDerivedAddress({\n      programAddress,\n      seeds: [\n        getBytesEncoder().encode(\n          new Uint8Array([\n            108, 97, 117, 110, 99, 104, 95, 97, 117, 116, 104, 111, 114, 105,\n            116, 121,\n          ]),\n        ),\n        getAddressEncoder().encode(\n          getAddressFromResolvedInstructionAccount(\n            'launch',\n            accounts.launch.value,\n          ),\n        ),\n      ],\n    });\n  }\n  if (!accounts.launchFeeState.value) {\n    accounts.launchFeeState.value = await getProgramDerivedAddress({\n      programAddress,\n      seeds: [\n        getBytesEncoder().encode(\n          new Uint8Array([\n            108, 97, 117, 110, 99, 104, 95, 102, 101, 101, 95, 115, 116, 97,\n            116, 101,\n          ]),\n        ),\n        getAddressEncoder().encode(\n          getAddressFromResolvedInstructionAccount(\n            'launch',\n            accounts.launch.value,\n          ),\n        ),\n      ],\n    });\n  }\n  if (!accounts.systemProgram.value) {\n    accounts.systemProgram.value =\n      '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n  }\n  if (!accounts.rent.value) {\n    accounts.rent.value =\n      'SysvarRent111111111111111111111111111111111' as Address<'SysvarRent111111111111111111111111111111111'>;\n  }\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta('config', accounts.config),\n      getAccountMeta('launch', accounts.launch),\n      getAccountMeta('launchAuthority', accounts.launchAuthority),\n      getAccountMeta('baseMint', accounts.baseMint),\n      getAccountMeta('quoteMint', accounts.quoteMint),\n      getAccountMeta('baseVault', accounts.baseVault),\n      getAccountMeta('quoteVault', accounts.quoteVault),\n      getAccountMeta('launchFeeState', accounts.launchFeeState),\n      getAccountMeta('payer', accounts.payer),\n      getAccountMeta('authority', accounts.authority),\n      getAccountMeta('hookProgram', accounts.hookProgram),\n      getAccountMeta('migratorProgram', accounts.migratorProgram),\n      getAccountMeta('baseTokenProgram', accounts.baseTokenProgram),\n      getAccountMeta('quoteTokenProgram', accounts.quoteTokenProgram),\n      getAccountMeta('systemProgram', accounts.systemProgram),\n      getAccountMeta('rent', accounts.rent),\n      getAccountMeta('metadataAccount', accounts.metadataAccount),\n      getAccountMeta('metadataProgram', accounts.metadataProgram),\n      getAccountMeta('vestingConfig', accounts.vestingConfig),\n    ],\n    data: getInitializeLaunchInstructionDataEncoder().encode(\n      args as InitializeLaunchInstructionDataArgs,\n    ),\n    programAddress,\n  } as InitializeLaunchInstruction<\n    TProgramAddress,\n    TAccountConfig,\n    TAccountLaunch,\n    TAccountLaunchAuthority,\n    TAccountBaseMint,\n    TAccountQuoteMint,\n    TAccountBaseVault,\n    TAccountQuoteVault,\n    TAccountLaunchFeeState,\n    TAccountPayer,\n    TAccountAuthority,\n    TAccountHookProgram,\n    TAccountMigratorProgram,\n    TAccountBaseTokenProgram,\n    TAccountQuoteTokenProgram,\n    TAccountSystemProgram,\n    TAccountRent,\n    TAccountMetadataAccount,\n    TAccountMetadataProgram,\n    TAccountVestingConfig\n  >);\n}\n\nexport type InitializeLaunchInput<\n  TAccountConfig extends string = string,\n  TAccountLaunch extends string = string,\n  TAccountLaunchAuthority extends string = string,\n  TAccountBaseMint extends string = string,\n  TAccountQuoteMint extends string = string,\n  TAccountBaseVault extends string = string,\n  TAccountQuoteVault extends string = string,\n  TAccountLaunchFeeState extends string = string,\n  TAccountPayer extends string = string,\n  TAccountAuthority extends string = string,\n  TAccountHookProgram extends string = string,\n  TAccountMigratorProgram extends string = string,\n  TAccountBaseTokenProgram extends string = string,\n  TAccountQuoteTokenProgram extends string = string,\n  TAccountSystemProgram extends string = string,\n  TAccountRent extends string = string,\n  TAccountMetadataAccount extends string = string,\n  TAccountMetadataProgram extends string = string,\n  TAccountVestingConfig extends string = string,\n> = {\n  config: Address<TAccountConfig>;\n  launch: Address<TAccountLaunch>;\n  /** System-owned PDA authority for launch vaults. */\n  launchAuthority: Address<TAccountLaunchAuthority>;\n  baseMint: TransactionSigner<TAccountBaseMint>;\n  quoteMint: Address<TAccountQuoteMint>;\n  baseVault: TransactionSigner<TAccountBaseVault>;\n  quoteVault: TransactionSigner<TAccountQuoteVault>;\n  launchFeeState: Address<TAccountLaunchFeeState>;\n  payer: TransactionSigner<TAccountPayer>;\n  /** Optional authority (creator/admin). If not provided, launch is permissionless. */\n  authority?: TransactionSigner<TAccountAuthority>;\n  /** Optional hook program for launch hooks. */\n  hookProgram?: Address<TAccountHookProgram>;\n  /** Optional migrator program. */\n  migratorProgram?: Address<TAccountMigratorProgram>;\n  baseTokenProgram: Address<TAccountBaseTokenProgram>;\n  quoteTokenProgram: Address<TAccountQuoteTokenProgram>;\n  systemProgram?: Address<TAccountSystemProgram>;\n  rent?: Address<TAccountRent>;\n  /** Metadata account (PDA derived from base_mint via Metaplex Token Metadata). */\n  metadataAccount?: Address<TAccountMetadataAccount>;\n  /** Metaplex Token Metadata program. */\n  metadataProgram?: Address<TAccountMetadataProgram>;\n  /** Optional immutable vesting configuration for the reserved base allocation. */\n  vestingConfig?: Address<TAccountVestingConfig>;\n  namespace: InitializeLaunchInstructionDataArgs['namespace'];\n  launchId: InitializeLaunchInstructionDataArgs['launchId'];\n  baseDecimals: InitializeLaunchInstructionDataArgs['baseDecimals'];\n  baseTotalSupply: InitializeLaunchInstructionDataArgs['baseTotalSupply'];\n  baseForDistribution: InitializeLaunchInstructionDataArgs['baseForDistribution'];\n  baseForLiquidity: InitializeLaunchInstructionDataArgs['baseForLiquidity'];\n  curveVirtualBase: InitializeLaunchInstructionDataArgs['curveVirtualBase'];\n  curveVirtualQuote: InitializeLaunchInstructionDataArgs['curveVirtualQuote'];\n  swapFeeBps: InitializeLaunchInstructionDataArgs['swapFeeBps'];\n  curveKind: InitializeLaunchInstructionDataArgs['curveKind'];\n  curveParams: InitializeLaunchInstructionDataArgs['curveParams'];\n  allowBuy: InitializeLaunchInstructionDataArgs['allowBuy'];\n  allowSell: InitializeLaunchInstructionDataArgs['allowSell'];\n  hookFlags: InitializeLaunchInstructionDataArgs['hookFlags'];\n  hookPayload: InitializeLaunchInstructionDataArgs['hookPayload'];\n  hookCreateRemainingAccountsLen: InitializeLaunchInstructionDataArgs['hookCreateRemainingAccountsLen'];\n  migratorInitPayload: InitializeLaunchInstructionDataArgs['migratorInitPayload'];\n  migratorMigratePayload: InitializeLaunchInstructionDataArgs['migratorMigratePayload'];\n  hookCreateRemainingAccountsHash: InitializeLaunchInstructionDataArgs['hookCreateRemainingAccountsHash'];\n  hookRemainingAccountsHash: InitializeLaunchInstructionDataArgs['hookRemainingAccountsHash'];\n  migratorInitRemainingAccountsHash: InitializeLaunchInstructionDataArgs['migratorInitRemainingAccountsHash'];\n  migratorRemainingAccountsHash: InitializeLaunchInstructionDataArgs['migratorRemainingAccountsHash'];\n  metadataName: InitializeLaunchInstructionDataArgs['metadataName'];\n  metadataSymbol: InitializeLaunchInstructionDataArgs['metadataSymbol'];\n  metadataUri: InitializeLaunchInstructionDataArgs['metadataUri'];\n  feeBeneficiaries: InitializeLaunchInstructionDataArgs['feeBeneficiaries'];\n};\n\nexport function getInitializeLaunchInstruction<\n  TAccountConfig extends string,\n  TAccountLaunch extends string,\n  TAccountLaunchAuthority extends string,\n  TAccountBaseMint extends string,\n  TAccountQuoteMint extends string,\n  TAccountBaseVault extends string,\n  TAccountQuoteVault extends string,\n  TAccountLaunchFeeState extends string,\n  TAccountPayer extends string,\n  TAccountAuthority extends string,\n  TAccountHookProgram extends string,\n  TAccountMigratorProgram extends string,\n  TAccountBaseTokenProgram extends string,\n  TAccountQuoteTokenProgram extends string,\n  TAccountSystemProgram extends string,\n  TAccountRent extends string,\n  TAccountMetadataAccount extends string,\n  TAccountMetadataProgram extends string,\n  TAccountVestingConfig extends string,\n  TProgramAddress extends Address = typeof INITIALIZER_PROGRAM_ADDRESS,\n>(\n  input: InitializeLaunchInput<\n    TAccountConfig,\n    TAccountLaunch,\n    TAccountLaunchAuthority,\n    TAccountBaseMint,\n    TAccountQuoteMint,\n    TAccountBaseVault,\n    TAccountQuoteVault,\n    TAccountLaunchFeeState,\n    TAccountPayer,\n    TAccountAuthority,\n    TAccountHookProgram,\n    TAccountMigratorProgram,\n    TAccountBaseTokenProgram,\n    TAccountQuoteTokenProgram,\n    TAccountSystemProgram,\n    TAccountRent,\n    TAccountMetadataAccount,\n    TAccountMetadataProgram,\n    TAccountVestingConfig\n  >,\n  config?: { programAddress?: TProgramAddress },\n): InitializeLaunchInstruction<\n  TProgramAddress,\n  TAccountConfig,\n  TAccountLaunch,\n  TAccountLaunchAuthority,\n  TAccountBaseMint,\n  TAccountQuoteMint,\n  TAccountBaseVault,\n  TAccountQuoteVault,\n  TAccountLaunchFeeState,\n  TAccountPayer,\n  TAccountAuthority,\n  TAccountHookProgram,\n  TAccountMigratorProgram,\n  TAccountBaseTokenProgram,\n  TAccountQuoteTokenProgram,\n  TAccountSystemProgram,\n  TAccountRent,\n  TAccountMetadataAccount,\n  TAccountMetadataProgram,\n  TAccountVestingConfig\n> {\n  // Program address.\n  const programAddress = config?.programAddress ?? INITIALIZER_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    config: { value: input.config ?? null, isWritable: false },\n    launch: { value: input.launch ?? null, isWritable: true },\n    launchAuthority: {\n      value: input.launchAuthority ?? null,\n      isWritable: false,\n    },\n    baseMint: { value: input.baseMint ?? null, isWritable: true },\n    quoteMint: { value: input.quoteMint ?? null, isWritable: false },\n    baseVault: { value: input.baseVault ?? null, isWritable: true },\n    quoteVault: { value: input.quoteVault ?? null, isWritable: true },\n    launchFeeState: { value: input.launchFeeState ?? null, isWritable: true },\n    payer: { value: input.payer ?? null, isWritable: true },\n    authority: { value: input.authority ?? null, isWritable: false },\n    hookProgram: { value: input.hookProgram ?? null, isWritable: false },\n    migratorProgram: {\n      value: input.migratorProgram ?? null,\n      isWritable: false,\n    },\n    baseTokenProgram: {\n      value: input.baseTokenProgram ?? null,\n      isWritable: false,\n    },\n    quoteTokenProgram: {\n      value: input.quoteTokenProgram ?? null,\n      isWritable: false,\n    },\n    systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n    rent: { value: input.rent ?? null, isWritable: false },\n    metadataAccount: { value: input.metadataAccount ?? null, isWritable: true },\n    metadataProgram: {\n      value: input.metadataProgram ?? null,\n      isWritable: false,\n    },\n    vestingConfig: { value: input.vestingConfig ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedInstructionAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolve default values.\n  if (!accounts.systemProgram.value) {\n    accounts.systemProgram.value =\n      '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n  }\n  if (!accounts.rent.value) {\n    accounts.rent.value =\n      'SysvarRent111111111111111111111111111111111' as Address<'SysvarRent111111111111111111111111111111111'>;\n  }\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta('config', accounts.config),\n      getAccountMeta('launch', accounts.launch),\n      getAccountMeta('launchAuthority', accounts.launchAuthority),\n      getAccountMeta('baseMint', accounts.baseMint),\n      getAccountMeta('quoteMint', accounts.quoteMint),\n      getAccountMeta('baseVault', accounts.baseVault),\n      getAccountMeta('quoteVault', accounts.quoteVault),\n      getAccountMeta('launchFeeState', accounts.launchFeeState),\n      getAccountMeta('payer', accounts.payer),\n      getAccountMeta('authority', accounts.authority),\n      getAccountMeta('hookProgram', accounts.hookProgram),\n      getAccountMeta('migratorProgram', accounts.migratorProgram),\n      getAccountMeta('baseTokenProgram', accounts.baseTokenProgram),\n      getAccountMeta('quoteTokenProgram', accounts.quoteTokenProgram),\n      getAccountMeta('systemProgram', accounts.systemProgram),\n      getAccountMeta('rent', accounts.rent),\n      getAccountMeta('metadataAccount', accounts.metadataAccount),\n      getAccountMeta('metadataProgram', accounts.metadataProgram),\n      getAccountMeta('vestingConfig', accounts.vestingConfig),\n    ],\n    data: getInitializeLaunchInstructionDataEncoder().encode(\n      args as InitializeLaunchInstructionDataArgs,\n    ),\n    programAddress,\n  } as InitializeLaunchInstruction<\n    TProgramAddress,\n    TAccountConfig,\n    TAccountLaunch,\n    TAccountLaunchAuthority,\n    TAccountBaseMint,\n    TAccountQuoteMint,\n    TAccountBaseVault,\n    TAccountQuoteVault,\n    TAccountLaunchFeeState,\n    TAccountPayer,\n    TAccountAuthority,\n    TAccountHookProgram,\n    TAccountMigratorProgram,\n    TAccountBaseTokenProgram,\n    TAccountQuoteTokenProgram,\n    TAccountSystemProgram,\n    TAccountRent,\n    TAccountMetadataAccount,\n    TAccountMetadataProgram,\n    TAccountVestingConfig\n  >);\n}\n\nexport type ParsedInitializeLaunchInstruction<\n  TProgram extends string = typeof INITIALIZER_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    config: TAccountMetas[0];\n    launch: TAccountMetas[1];\n    /** System-owned PDA authority for launch vaults. */\n    launchAuthority: TAccountMetas[2];\n    baseMint: TAccountMetas[3];\n    quoteMint: TAccountMetas[4];\n    baseVault: TAccountMetas[5];\n    quoteVault: TAccountMetas[6];\n    launchFeeState: TAccountMetas[7];\n    payer: TAccountMetas[8];\n    /** Optional authority (creator/admin). If not provided, launch is permissionless. */\n    authority?: TAccountMetas[9] | undefined;\n    /** Optional hook program for launch hooks. */\n    hookProgram?: TAccountMetas[10] | undefined;\n    /** Optional migrator program. */\n    migratorProgram?: TAccountMetas[11] | undefined;\n    baseTokenProgram: TAccountMetas[12];\n    quoteTokenProgram: TAccountMetas[13];\n    systemProgram: TAccountMetas[14];\n    rent: TAccountMetas[15];\n    /** Metadata account (PDA derived from base_mint via Metaplex Token Metadata). */\n    metadataAccount?: TAccountMetas[16] | undefined;\n    /** Metaplex Token Metadata program. */\n    metadataProgram?: TAccountMetas[17] | undefined;\n    /** Optional immutable vesting configuration for the reserved base allocation. */\n    vestingConfig?: TAccountMetas[18] | undefined;\n  };\n  data: InitializeLaunchInstructionData;\n};\n\nexport function parseInitializeLaunchInstruction<\n  TProgram extends string,\n  TAccountMetas extends readonly AccountMeta[],\n>(\n  instruction: Instruction<TProgram> &\n    InstructionWithAccounts<TAccountMetas> &\n    InstructionWithData<ReadonlyUint8Array>,\n): ParsedInitializeLaunchInstruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 19) {\n    throw new SolanaError(\n      SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS,\n      {\n        actualAccountMetas: instruction.accounts.length,\n        expectedAccountMetas: 19,\n      },\n    );\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  const getNextOptionalAccount = () => {\n    const accountMeta = getNextAccount();\n    return accountMeta.address === INITIALIZER_PROGRAM_ADDRESS\n      ? undefined\n      : accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: {\n      config: getNextAccount(),\n      launch: getNextAccount(),\n      launchAuthority: getNextAccount(),\n      baseMint: getNextAccount(),\n      quoteMint: getNextAccount(),\n      baseVault: getNextAccount(),\n      quoteVault: getNextAccount(),\n      launchFeeState: getNextAccount(),\n      payer: getNextAccount(),\n      authority: getNextOptionalAccount(),\n      hookProgram: getNextOptionalAccount(),\n      migratorProgram: getNextOptionalAccount(),\n      baseTokenProgram: getNextAccount(),\n      quoteTokenProgram: getNextAccount(),\n      systemProgram: getNextAccount(),\n      rent: getNextAccount(),\n      metadataAccount: getNextOptionalAccount(),\n      metadataProgram: getNextOptionalAccount(),\n      vestingConfig: getNextOptionalAccount(),\n    },\n    data: getInitializeLaunchInstructionDataDecoder().decode(instruction.data),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getAddressEncoder,\n  getBytesDecoder,\n  getBytesEncoder,\n  getProgramDerivedAddress,\n  getStructDecoder,\n  getStructEncoder,\n  getU64Decoder,\n  getU64Encoder,\n  getU8Decoder,\n  getU8Encoder,\n  SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS,\n  SolanaError,\n  transformEncoder,\n  type AccountMeta,\n  type Address,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n  type Instruction,\n  type InstructionWithAccounts,\n  type InstructionWithData,\n  type ReadonlyAccount,\n  type ReadonlyUint8Array,\n} from '@solana/kit';\nimport {\n  getAccountMetaFactory,\n  getAddressFromResolvedInstructionAccount,\n  type ResolvedInstructionAccount,\n} from '@solana/program-client-core';\nimport { INITIALIZER_PROGRAM_ADDRESS } from '../programs';\n\nexport const PREVIEW_SWAP_EXACT_IN_DISCRIMINATOR = new Uint8Array([\n  50, 130, 31, 69, 147, 58, 222, 178,\n]);\n\nexport function getPreviewSwapExactInDiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(\n    PREVIEW_SWAP_EXACT_IN_DISCRIMINATOR,\n  );\n}\n\nexport type PreviewSwapExactInInstruction<\n  TProgram extends string = typeof INITIALIZER_PROGRAM_ADDRESS,\n  TAccountLaunch extends string | AccountMeta<string> = string,\n  TAccountLaunchFeeState extends string | AccountMeta<string> = string,\n  TAccountBaseVault extends string | AccountMeta<string> = string,\n  TAccountQuoteVault extends string | AccountMeta<string> = string,\n  TAccountHookProgram extends string | AccountMeta<string> = string,\n  TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n  InstructionWithData<ReadonlyUint8Array> &\n  InstructionWithAccounts<\n    [\n      TAccountLaunch extends string\n        ? ReadonlyAccount<TAccountLaunch>\n        : TAccountLaunch,\n      TAccountLaunchFeeState extends string\n        ? ReadonlyAccount<TAccountLaunchFeeState>\n        : TAccountLaunchFeeState,\n      TAccountBaseVault extends string\n        ? ReadonlyAccount<TAccountBaseVault>\n        : TAccountBaseVault,\n      TAccountQuoteVault extends string\n        ? ReadonlyAccount<TAccountQuoteVault>\n        : TAccountQuoteVault,\n      TAccountHookProgram extends string\n        ? ReadonlyAccount<TAccountHookProgram>\n        : TAccountHookProgram,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type PreviewSwapExactInInstructionData = {\n  discriminator: ReadonlyUint8Array;\n  amountIn: bigint;\n  tradeDirection: number;\n};\n\nexport type PreviewSwapExactInInstructionDataArgs = {\n  amountIn: number | bigint;\n  tradeDirection: number;\n};\n\nexport function getPreviewSwapExactInInstructionDataEncoder(): FixedSizeEncoder<PreviewSwapExactInInstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['amountIn', getU64Encoder()],\n      ['tradeDirection', getU8Encoder()],\n    ]),\n    (value) => ({\n      ...value,\n      discriminator: PREVIEW_SWAP_EXACT_IN_DISCRIMINATOR,\n    }),\n  );\n}\n\nexport function getPreviewSwapExactInInstructionDataDecoder(): FixedSizeDecoder<PreviewSwapExactInInstructionData> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['amountIn', getU64Decoder()],\n    ['tradeDirection', getU8Decoder()],\n  ]);\n}\n\nexport function getPreviewSwapExactInInstructionDataCodec(): FixedSizeCodec<\n  PreviewSwapExactInInstructionDataArgs,\n  PreviewSwapExactInInstructionData\n> {\n  return combineCodec(\n    getPreviewSwapExactInInstructionDataEncoder(),\n    getPreviewSwapExactInInstructionDataDecoder(),\n  );\n}\n\nexport type PreviewSwapExactInAsyncInput<\n  TAccountLaunch extends string = string,\n  TAccountLaunchFeeState extends string = string,\n  TAccountBaseVault extends string = string,\n  TAccountQuoteVault extends string = string,\n  TAccountHookProgram extends string = string,\n> = {\n  launch: Address<TAccountLaunch>;\n  launchFeeState?: Address<TAccountLaunchFeeState>;\n  baseVault: Address<TAccountBaseVault>;\n  quoteVault: Address<TAccountQuoteVault>;\n  /** Optional hook program (must match launch.hook_program if set) */\n  hookProgram?: Address<TAccountHookProgram>;\n  amountIn: PreviewSwapExactInInstructionDataArgs['amountIn'];\n  tradeDirection: PreviewSwapExactInInstructionDataArgs['tradeDirection'];\n};\n\nexport async function getPreviewSwapExactInInstructionAsync<\n  TAccountLaunch extends string,\n  TAccountLaunchFeeState extends string,\n  TAccountBaseVault extends string,\n  TAccountQuoteVault extends string,\n  TAccountHookProgram extends string,\n  TProgramAddress extends Address = typeof INITIALIZER_PROGRAM_ADDRESS,\n>(\n  input: PreviewSwapExactInAsyncInput<\n    TAccountLaunch,\n    TAccountLaunchFeeState,\n    TAccountBaseVault,\n    TAccountQuoteVault,\n    TAccountHookProgram\n  >,\n  config?: { programAddress?: TProgramAddress },\n): Promise<\n  PreviewSwapExactInInstruction<\n    TProgramAddress,\n    TAccountLaunch,\n    TAccountLaunchFeeState,\n    TAccountBaseVault,\n    TAccountQuoteVault,\n    TAccountHookProgram\n  >\n> {\n  // Program address.\n  const programAddress = config?.programAddress ?? INITIALIZER_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    launch: { value: input.launch ?? null, isWritable: false },\n    launchFeeState: { value: input.launchFeeState ?? null, isWritable: false },\n    baseVault: { value: input.baseVault ?? null, isWritable: false },\n    quoteVault: { value: input.quoteVault ?? null, isWritable: false },\n    hookProgram: { value: input.hookProgram ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedInstructionAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolve default values.\n  if (!accounts.launchFeeState.value) {\n    accounts.launchFeeState.value = await getProgramDerivedAddress({\n      programAddress,\n      seeds: [\n        getBytesEncoder().encode(\n          new Uint8Array([\n            108, 97, 117, 110, 99, 104, 95, 102, 101, 101, 95, 115, 116, 97,\n            116, 101,\n          ]),\n        ),\n        getAddressEncoder().encode(\n          getAddressFromResolvedInstructionAccount(\n            'launch',\n            accounts.launch.value,\n          ),\n        ),\n      ],\n    });\n  }\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta('launch', accounts.launch),\n      getAccountMeta('launchFeeState', accounts.launchFeeState),\n      getAccountMeta('baseVault', accounts.baseVault),\n      getAccountMeta('quoteVault', accounts.quoteVault),\n      getAccountMeta('hookProgram', accounts.hookProgram),\n    ],\n    data: getPreviewSwapExactInInstructionDataEncoder().encode(\n      args as PreviewSwapExactInInstructionDataArgs,\n    ),\n    programAddress,\n  } as PreviewSwapExactInInstruction<\n    TProgramAddress,\n    TAccountLaunch,\n    TAccountLaunchFeeState,\n    TAccountBaseVault,\n    TAccountQuoteVault,\n    TAccountHookProgram\n  >);\n}\n\nexport type PreviewSwapExactInInput<\n  TAccountLaunch extends string = string,\n  TAccountLaunchFeeState extends string = string,\n  TAccountBaseVault extends string = string,\n  TAccountQuoteVault extends string = string,\n  TAccountHookProgram extends string = string,\n> = {\n  launch: Address<TAccountLaunch>;\n  launchFeeState: Address<TAccountLaunchFeeState>;\n  baseVault: Address<TAccountBaseVault>;\n  quoteVault: Address<TAccountQuoteVault>;\n  /** Optional hook program (must match launch.hook_program if set) */\n  hookProgram?: Address<TAccountHookProgram>;\n  amountIn: PreviewSwapExactInInstructionDataArgs['amountIn'];\n  tradeDirection: PreviewSwapExactInInstructionDataArgs['tradeDirection'];\n};\n\nexport function getPreviewSwapExactInInstruction<\n  TAccountLaunch extends string,\n  TAccountLaunchFeeState extends string,\n  TAccountBaseVault extends string,\n  TAccountQuoteVault extends string,\n  TAccountHookProgram extends string,\n  TProgramAddress extends Address = typeof INITIALIZER_PROGRAM_ADDRESS,\n>(\n  input: PreviewSwapExactInInput<\n    TAccountLaunch,\n    TAccountLaunchFeeState,\n    TAccountBaseVault,\n    TAccountQuoteVault,\n    TAccountHookProgram\n  >,\n  config?: { programAddress?: TProgramAddress },\n): PreviewSwapExactInInstruction<\n  TProgramAddress,\n  TAccountLaunch,\n  TAccountLaunchFeeState,\n  TAccountBaseVault,\n  TAccountQuoteVault,\n  TAccountHookProgram\n> {\n  // Program address.\n  const programAddress = config?.programAddress ?? INITIALIZER_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    launch: { value: input.launch ?? null, isWritable: false },\n    launchFeeState: { value: input.launchFeeState ?? null, isWritable: false },\n    baseVault: { value: input.baseVault ?? null, isWritable: false },\n    quoteVault: { value: input.quoteVault ?? null, isWritable: false },\n    hookProgram: { value: input.hookProgram ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedInstructionAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta('launch', accounts.launch),\n      getAccountMeta('launchFeeState', accounts.launchFeeState),\n      getAccountMeta('baseVault', accounts.baseVault),\n      getAccountMeta('quoteVault', accounts.quoteVault),\n      getAccountMeta('hookProgram', accounts.hookProgram),\n    ],\n    data: getPreviewSwapExactInInstructionDataEncoder().encode(\n      args as PreviewSwapExactInInstructionDataArgs,\n    ),\n    programAddress,\n  } as PreviewSwapExactInInstruction<\n    TProgramAddress,\n    TAccountLaunch,\n    TAccountLaunchFeeState,\n    TAccountBaseVault,\n    TAccountQuoteVault,\n    TAccountHookProgram\n  >);\n}\n\nexport type ParsedPreviewSwapExactInInstruction<\n  TProgram extends string = typeof INITIALIZER_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    launch: TAccountMetas[0];\n    launchFeeState: TAccountMetas[1];\n    baseVault: TAccountMetas[2];\n    quoteVault: TAccountMetas[3];\n    /** Optional hook program (must match launch.hook_program if set) */\n    hookProgram?: TAccountMetas[4] | undefined;\n  };\n  data: PreviewSwapExactInInstructionData;\n};\n\nexport function parsePreviewSwapExactInInstruction<\n  TProgram extends string,\n  TAccountMetas extends readonly AccountMeta[],\n>(\n  instruction: Instruction<TProgram> &\n    InstructionWithAccounts<TAccountMetas> &\n    InstructionWithData<ReadonlyUint8Array>,\n): ParsedPreviewSwapExactInInstruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 5) {\n    throw new SolanaError(\n      SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS,\n      {\n        actualAccountMetas: instruction.accounts.length,\n        expectedAccountMetas: 5,\n      },\n    );\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  const getNextOptionalAccount = () => {\n    const accountMeta = getNextAccount();\n    return accountMeta.address === INITIALIZER_PROGRAM_ADDRESS\n      ? undefined\n      : accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: {\n      launch: getNextAccount(),\n      launchFeeState: getNextAccount(),\n      baseVault: getNextAccount(),\n      quoteVault: getNextAccount(),\n      hookProgram: getNextOptionalAccount(),\n    },\n    data: getPreviewSwapExactInInstructionDataDecoder().decode(\n      instruction.data,\n    ),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getAddressDecoder,\n  getAddressEncoder,\n  getBytesDecoder,\n  getBytesEncoder,\n  getProgramDerivedAddress,\n  getStructDecoder,\n  getStructEncoder,\n  SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS,\n  SolanaError,\n  transformEncoder,\n  type AccountMeta,\n  type AccountSignerMeta,\n  type Address,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n  type Instruction,\n  type InstructionWithAccounts,\n  type InstructionWithData,\n  type ReadonlyAccount,\n  type ReadonlySignerAccount,\n  type ReadonlyUint8Array,\n  type TransactionSigner,\n  type WritableAccount,\n} from '@solana/kit';\nimport {\n  getAccountMetaFactory,\n  getAddressFromResolvedInstructionAccount,\n  type ResolvedInstructionAccount,\n} from '@solana/program-client-core';\nimport { INITIALIZER_PROGRAM_ADDRESS } from '../programs';\n\nexport const REPLACE_FEE_BENEFICIARY_DISCRIMINATOR = new Uint8Array([\n  125, 194, 227, 81, 175, 100, 78, 200,\n]);\n\nexport function getReplaceFeeBeneficiaryDiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(\n    REPLACE_FEE_BENEFICIARY_DISCRIMINATOR,\n  );\n}\n\nexport type ReplaceFeeBeneficiaryInstruction<\n  TProgram extends string = typeof INITIALIZER_PROGRAM_ADDRESS,\n  TAccountConfig extends string | AccountMeta<string> = string,\n  TAccountLaunch extends string | AccountMeta<string> = string,\n  TAccountLaunchFeeState extends string | AccountMeta<string> = string,\n  TAccountCurrentBeneficiary extends string | AccountMeta<string> = string,\n  TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n  InstructionWithData<ReadonlyUint8Array> &\n  InstructionWithAccounts<\n    [\n      TAccountConfig extends string\n        ? ReadonlyAccount<TAccountConfig>\n        : TAccountConfig,\n      TAccountLaunch extends string\n        ? ReadonlyAccount<TAccountLaunch>\n        : TAccountLaunch,\n      TAccountLaunchFeeState extends string\n        ? WritableAccount<TAccountLaunchFeeState>\n        : TAccountLaunchFeeState,\n      TAccountCurrentBeneficiary extends string\n        ? ReadonlySignerAccount<TAccountCurrentBeneficiary> &\n            AccountSignerMeta<TAccountCurrentBeneficiary>\n        : TAccountCurrentBeneficiary,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type ReplaceFeeBeneficiaryInstructionData = {\n  discriminator: ReadonlyUint8Array;\n  newBeneficiary: Address;\n};\n\nexport type ReplaceFeeBeneficiaryInstructionDataArgs = {\n  newBeneficiary: Address;\n};\n\nexport function getReplaceFeeBeneficiaryInstructionDataEncoder(): FixedSizeEncoder<ReplaceFeeBeneficiaryInstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['newBeneficiary', getAddressEncoder()],\n    ]),\n    (value) => ({\n      ...value,\n      discriminator: REPLACE_FEE_BENEFICIARY_DISCRIMINATOR,\n    }),\n  );\n}\n\nexport function getReplaceFeeBeneficiaryInstructionDataDecoder(): FixedSizeDecoder<ReplaceFeeBeneficiaryInstructionData> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['newBeneficiary', getAddressDecoder()],\n  ]);\n}\n\nexport function getReplaceFeeBeneficiaryInstructionDataCodec(): FixedSizeCodec<\n  ReplaceFeeBeneficiaryInstructionDataArgs,\n  ReplaceFeeBeneficiaryInstructionData\n> {\n  return combineCodec(\n    getReplaceFeeBeneficiaryInstructionDataEncoder(),\n    getReplaceFeeBeneficiaryInstructionDataDecoder(),\n  );\n}\n\nexport type ReplaceFeeBeneficiaryAsyncInput<\n  TAccountConfig extends string = string,\n  TAccountLaunch extends string = string,\n  TAccountLaunchFeeState extends string = string,\n  TAccountCurrentBeneficiary extends string = string,\n> = {\n  config?: Address<TAccountConfig>;\n  launch: Address<TAccountLaunch>;\n  launchFeeState?: Address<TAccountLaunchFeeState>;\n  currentBeneficiary: TransactionSigner<TAccountCurrentBeneficiary>;\n  newBeneficiary: ReplaceFeeBeneficiaryInstructionDataArgs['newBeneficiary'];\n};\n\nexport async function getReplaceFeeBeneficiaryInstructionAsync<\n  TAccountConfig extends string,\n  TAccountLaunch extends string,\n  TAccountLaunchFeeState extends string,\n  TAccountCurrentBeneficiary extends string,\n  TProgramAddress extends Address = typeof INITIALIZER_PROGRAM_ADDRESS,\n>(\n  input: ReplaceFeeBeneficiaryAsyncInput<\n    TAccountConfig,\n    TAccountLaunch,\n    TAccountLaunchFeeState,\n    TAccountCurrentBeneficiary\n  >,\n  config?: { programAddress?: TProgramAddress },\n): Promise<\n  ReplaceFeeBeneficiaryInstruction<\n    TProgramAddress,\n    TAccountConfig,\n    TAccountLaunch,\n    TAccountLaunchFeeState,\n    TAccountCurrentBeneficiary\n  >\n> {\n  // Program address.\n  const programAddress = config?.programAddress ?? INITIALIZER_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    config: { value: input.config ?? null, isWritable: false },\n    launch: { value: input.launch ?? null, isWritable: false },\n    launchFeeState: { value: input.launchFeeState ?? null, isWritable: true },\n    currentBeneficiary: {\n      value: input.currentBeneficiary ?? null,\n      isWritable: false,\n    },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedInstructionAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolve default values.\n  if (!accounts.config.value) {\n    accounts.config.value = await getProgramDerivedAddress({\n      programAddress,\n      seeds: [\n        getBytesEncoder().encode(new Uint8Array([99, 111, 110, 102, 105, 103])),\n      ],\n    });\n  }\n  if (!accounts.launchFeeState.value) {\n    accounts.launchFeeState.value = await getProgramDerivedAddress({\n      programAddress,\n      seeds: [\n        getBytesEncoder().encode(\n          new Uint8Array([\n            108, 97, 117, 110, 99, 104, 95, 102, 101, 101, 95, 115, 116, 97,\n            116, 101,\n          ]),\n        ),\n        getAddressEncoder().encode(\n          getAddressFromResolvedInstructionAccount(\n            'launch',\n            accounts.launch.value,\n          ),\n        ),\n      ],\n    });\n  }\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta('config', accounts.config),\n      getAccountMeta('launch', accounts.launch),\n      getAccountMeta('launchFeeState', accounts.launchFeeState),\n      getAccountMeta('currentBeneficiary', accounts.currentBeneficiary),\n    ],\n    data: getReplaceFeeBeneficiaryInstructionDataEncoder().encode(\n      args as ReplaceFeeBeneficiaryInstructionDataArgs,\n    ),\n    programAddress,\n  } as ReplaceFeeBeneficiaryInstruction<\n    TProgramAddress,\n    TAccountConfig,\n    TAccountLaunch,\n    TAccountLaunchFeeState,\n    TAccountCurrentBeneficiary\n  >);\n}\n\nexport type ReplaceFeeBeneficiaryInput<\n  TAccountConfig extends string = string,\n  TAccountLaunch extends string = string,\n  TAccountLaunchFeeState extends string = string,\n  TAccountCurrentBeneficiary extends string = string,\n> = {\n  config: Address<TAccountConfig>;\n  launch: Address<TAccountLaunch>;\n  launchFeeState: Address<TAccountLaunchFeeState>;\n  currentBeneficiary: TransactionSigner<TAccountCurrentBeneficiary>;\n  newBeneficiary: ReplaceFeeBeneficiaryInstructionDataArgs['newBeneficiary'];\n};\n\nexport function getReplaceFeeBeneficiaryInstruction<\n  TAccountConfig extends string,\n  TAccountLaunch extends string,\n  TAccountLaunchFeeState extends string,\n  TAccountCurrentBeneficiary extends string,\n  TProgramAddress extends Address = typeof INITIALIZER_PROGRAM_ADDRESS,\n>(\n  input: ReplaceFeeBeneficiaryInput<\n    TAccountConfig,\n    TAccountLaunch,\n    TAccountLaunchFeeState,\n    TAccountCurrentBeneficiary\n  >,\n  config?: { programAddress?: TProgramAddress },\n): ReplaceFeeBeneficiaryInstruction<\n  TProgramAddress,\n  TAccountConfig,\n  TAccountLaunch,\n  TAccountLaunchFeeState,\n  TAccountCurrentBeneficiary\n> {\n  // Program address.\n  const programAddress = config?.programAddress ?? INITIALIZER_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    config: { value: input.config ?? null, isWritable: false },\n    launch: { value: input.launch ?? null, isWritable: false },\n    launchFeeState: { value: input.launchFeeState ?? null, isWritable: true },\n    currentBeneficiary: {\n      value: input.currentBeneficiary ?? null,\n      isWritable: false,\n    },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedInstructionAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta('config', accounts.config),\n      getAccountMeta('launch', accounts.launch),\n      getAccountMeta('launchFeeState', accounts.launchFeeState),\n      getAccountMeta('currentBeneficiary', accounts.currentBeneficiary),\n    ],\n    data: getReplaceFeeBeneficiaryInstructionDataEncoder().encode(\n      args as ReplaceFeeBeneficiaryInstructionDataArgs,\n    ),\n    programAddress,\n  } as ReplaceFeeBeneficiaryInstruction<\n    TProgramAddress,\n    TAccountConfig,\n    TAccountLaunch,\n    TAccountLaunchFeeState,\n    TAccountCurrentBeneficiary\n  >);\n}\n\nexport type ParsedReplaceFeeBeneficiaryInstruction<\n  TProgram extends string = typeof INITIALIZER_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    config: TAccountMetas[0];\n    launch: TAccountMetas[1];\n    launchFeeState: TAccountMetas[2];\n    currentBeneficiary: TAccountMetas[3];\n  };\n  data: ReplaceFeeBeneficiaryInstructionData;\n};\n\nexport function parseReplaceFeeBeneficiaryInstruction<\n  TProgram extends string,\n  TAccountMetas extends readonly AccountMeta[],\n>(\n  instruction: Instruction<TProgram> &\n    InstructionWithAccounts<TAccountMetas> &\n    InstructionWithData<ReadonlyUint8Array>,\n): ParsedReplaceFeeBeneficiaryInstruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 4) {\n    throw new SolanaError(\n      SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS,\n      {\n        actualAccountMetas: instruction.accounts.length,\n        expectedAccountMetas: 4,\n      },\n    );\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: {\n      config: getNextAccount(),\n      launch: getNextAccount(),\n      launchFeeState: getNextAccount(),\n      currentBeneficiary: getNextAccount(),\n    },\n    data: getReplaceFeeBeneficiaryInstructionDataDecoder().decode(\n      instruction.data,\n    ),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getBytesDecoder,\n  getBytesEncoder,\n  getProgramDerivedAddress,\n  getStructDecoder,\n  getStructEncoder,\n  getU16Decoder,\n  getU16Encoder,\n  SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS,\n  SolanaError,\n  transformEncoder,\n  type AccountMeta,\n  type AccountSignerMeta,\n  type Address,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n  type Instruction,\n  type InstructionWithAccounts,\n  type InstructionWithData,\n  type ReadonlySignerAccount,\n  type ReadonlyUint8Array,\n  type TransactionSigner,\n  type WritableAccount,\n} from '@solana/kit';\nimport {\n  getAccountMetaFactory,\n  type ResolvedInstructionAccount,\n} from '@solana/program-client-core';\nimport { INITIALIZER_PROGRAM_ADDRESS } from '../programs';\n\nexport const SET_FEE_POLICY_DISCRIMINATOR = new Uint8Array([\n  91, 32, 224, 109, 147, 98, 71, 132,\n]);\n\nexport function getSetFeePolicyDiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(\n    SET_FEE_POLICY_DISCRIMINATOR,\n  );\n}\n\nexport type SetFeePolicyInstruction<\n  TProgram extends string = typeof INITIALIZER_PROGRAM_ADDRESS,\n  TAccountConfig extends string | AccountMeta<string> = string,\n  TAccountAdmin extends string | AccountMeta<string> = string,\n  TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n  InstructionWithData<ReadonlyUint8Array> &\n  InstructionWithAccounts<\n    [\n      TAccountConfig extends string\n        ? WritableAccount<TAccountConfig>\n        : TAccountConfig,\n      TAccountAdmin extends string\n        ? ReadonlySignerAccount<TAccountAdmin> &\n            AccountSignerMeta<TAccountAdmin>\n        : TAccountAdmin,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type SetFeePolicyInstructionData = {\n  discriminator: ReadonlyUint8Array;\n  protocolFeeBps: number;\n  minSwapFeeBps: number;\n  maxSwapFeeBps: number;\n};\n\nexport type SetFeePolicyInstructionDataArgs = {\n  protocolFeeBps: number;\n  minSwapFeeBps: number;\n  maxSwapFeeBps: number;\n};\n\nexport function getSetFeePolicyInstructionDataEncoder(): FixedSizeEncoder<SetFeePolicyInstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['protocolFeeBps', getU16Encoder()],\n      ['minSwapFeeBps', getU16Encoder()],\n      ['maxSwapFeeBps', getU16Encoder()],\n    ]),\n    (value) => ({ ...value, discriminator: SET_FEE_POLICY_DISCRIMINATOR }),\n  );\n}\n\nexport function getSetFeePolicyInstructionDataDecoder(): FixedSizeDecoder<SetFeePolicyInstructionData> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['protocolFeeBps', getU16Decoder()],\n    ['minSwapFeeBps', getU16Decoder()],\n    ['maxSwapFeeBps', getU16Decoder()],\n  ]);\n}\n\nexport function getSetFeePolicyInstructionDataCodec(): FixedSizeCodec<\n  SetFeePolicyInstructionDataArgs,\n  SetFeePolicyInstructionData\n> {\n  return combineCodec(\n    getSetFeePolicyInstructionDataEncoder(),\n    getSetFeePolicyInstructionDataDecoder(),\n  );\n}\n\nexport type SetFeePolicyAsyncInput<\n  TAccountConfig extends string = string,\n  TAccountAdmin extends string = string,\n> = {\n  config?: Address<TAccountConfig>;\n  admin: TransactionSigner<TAccountAdmin>;\n  protocolFeeBps: SetFeePolicyInstructionDataArgs['protocolFeeBps'];\n  minSwapFeeBps: SetFeePolicyInstructionDataArgs['minSwapFeeBps'];\n  maxSwapFeeBps: SetFeePolicyInstructionDataArgs['maxSwapFeeBps'];\n};\n\nexport async function getSetFeePolicyInstructionAsync<\n  TAccountConfig extends string,\n  TAccountAdmin extends string,\n  TProgramAddress extends Address = typeof INITIALIZER_PROGRAM_ADDRESS,\n>(\n  input: SetFeePolicyAsyncInput<TAccountConfig, TAccountAdmin>,\n  config?: { programAddress?: TProgramAddress },\n): Promise<\n  SetFeePolicyInstruction<TProgramAddress, TAccountConfig, TAccountAdmin>\n> {\n  // Program address.\n  const programAddress = config?.programAddress ?? INITIALIZER_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    config: { value: input.config ?? null, isWritable: true },\n    admin: { value: input.admin ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedInstructionAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolve default values.\n  if (!accounts.config.value) {\n    accounts.config.value = await getProgramDerivedAddress({\n      programAddress,\n      seeds: [\n        getBytesEncoder().encode(new Uint8Array([99, 111, 110, 102, 105, 103])),\n      ],\n    });\n  }\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta('config', accounts.config),\n      getAccountMeta('admin', accounts.admin),\n    ],\n    data: getSetFeePolicyInstructionDataEncoder().encode(\n      args as SetFeePolicyInstructionDataArgs,\n    ),\n    programAddress,\n  } as SetFeePolicyInstruction<TProgramAddress, TAccountConfig, TAccountAdmin>);\n}\n\nexport type SetFeePolicyInput<\n  TAccountConfig extends string = string,\n  TAccountAdmin extends string = string,\n> = {\n  config: Address<TAccountConfig>;\n  admin: TransactionSigner<TAccountAdmin>;\n  protocolFeeBps: SetFeePolicyInstructionDataArgs['protocolFeeBps'];\n  minSwapFeeBps: SetFeePolicyInstructionDataArgs['minSwapFeeBps'];\n  maxSwapFeeBps: SetFeePolicyInstructionDataArgs['maxSwapFeeBps'];\n};\n\nexport function getSetFeePolicyInstruction<\n  TAccountConfig extends string,\n  TAccountAdmin extends string,\n  TProgramAddress extends Address = typeof INITIALIZER_PROGRAM_ADDRESS,\n>(\n  input: SetFeePolicyInput<TAccountConfig, TAccountAdmin>,\n  config?: { programAddress?: TProgramAddress },\n): SetFeePolicyInstruction<TProgramAddress, TAccountConfig, TAccountAdmin> {\n  // Program address.\n  const programAddress = config?.programAddress ?? INITIALIZER_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    config: { value: input.config ?? null, isWritable: true },\n    admin: { value: input.admin ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedInstructionAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta('config', accounts.config),\n      getAccountMeta('admin', accounts.admin),\n    ],\n    data: getSetFeePolicyInstructionDataEncoder().encode(\n      args as SetFeePolicyInstructionDataArgs,\n    ),\n    programAddress,\n  } as SetFeePolicyInstruction<TProgramAddress, TAccountConfig, TAccountAdmin>);\n}\n\nexport type ParsedSetFeePolicyInstruction<\n  TProgram extends string = typeof INITIALIZER_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    config: TAccountMetas[0];\n    admin: TAccountMetas[1];\n  };\n  data: SetFeePolicyInstructionData;\n};\n\nexport function parseSetFeePolicyInstruction<\n  TProgram extends string,\n  TAccountMetas extends readonly AccountMeta[],\n>(\n  instruction: Instruction<TProgram> &\n    InstructionWithAccounts<TAccountMetas> &\n    InstructionWithData<ReadonlyUint8Array>,\n): ParsedSetFeePolicyInstruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 2) {\n    throw new SolanaError(\n      SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS,\n      {\n        actualAccountMetas: instruction.accounts.length,\n        expectedAccountMetas: 2,\n      },\n    );\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: { config: getNextAccount(), admin: getNextAccount() },\n    data: getSetFeePolicyInstructionDataDecoder().decode(instruction.data),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getAddressDecoder,\n  getAddressEncoder,\n  getArrayDecoder,\n  getArrayEncoder,\n  getBytesDecoder,\n  getBytesEncoder,\n  getProgramDerivedAddress,\n  getStructDecoder,\n  getStructEncoder,\n  SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS,\n  SolanaError,\n  transformEncoder,\n  type AccountMeta,\n  type AccountSignerMeta,\n  type Address,\n  type Codec,\n  type Decoder,\n  type Encoder,\n  type Instruction,\n  type InstructionWithAccounts,\n  type InstructionWithData,\n  type ReadonlySignerAccount,\n  type ReadonlyUint8Array,\n  type TransactionSigner,\n  type WritableAccount,\n} from '@solana/kit';\nimport {\n  getAccountMetaFactory,\n  type ResolvedInstructionAccount,\n} from '@solana/program-client-core';\nimport { INITIALIZER_PROGRAM_ADDRESS } from '../programs';\n\nexport const SET_HOOK_ALLOWLIST_DISCRIMINATOR = new Uint8Array([\n  232, 28, 40, 143, 121, 182, 77, 103,\n]);\n\nexport function getSetHookAllowlistDiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(\n    SET_HOOK_ALLOWLIST_DISCRIMINATOR,\n  );\n}\n\nexport type SetHookAllowlistInstruction<\n  TProgram extends string = typeof INITIALIZER_PROGRAM_ADDRESS,\n  TAccountAdmin extends string | AccountMeta<string> = string,\n  TAccountConfig extends string | AccountMeta<string> = string,\n  TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n  InstructionWithData<ReadonlyUint8Array> &\n  InstructionWithAccounts<\n    [\n      TAccountAdmin extends string\n        ? ReadonlySignerAccount<TAccountAdmin> &\n            AccountSignerMeta<TAccountAdmin>\n        : TAccountAdmin,\n      TAccountConfig extends string\n        ? WritableAccount<TAccountConfig>\n        : TAccountConfig,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type SetHookAllowlistInstructionData = {\n  discriminator: ReadonlyUint8Array;\n  allowlist: Array<Address>;\n};\n\nexport type SetHookAllowlistInstructionDataArgs = { allowlist: Array<Address> };\n\nexport function getSetHookAllowlistInstructionDataEncoder(): Encoder<SetHookAllowlistInstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['allowlist', getArrayEncoder(getAddressEncoder())],\n    ]),\n    (value) => ({ ...value, discriminator: SET_HOOK_ALLOWLIST_DISCRIMINATOR }),\n  );\n}\n\nexport function getSetHookAllowlistInstructionDataDecoder(): Decoder<SetHookAllowlistInstructionData> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['allowlist', getArrayDecoder(getAddressDecoder())],\n  ]);\n}\n\nexport function getSetHookAllowlistInstructionDataCodec(): Codec<\n  SetHookAllowlistInstructionDataArgs,\n  SetHookAllowlistInstructionData\n> {\n  return combineCodec(\n    getSetHookAllowlistInstructionDataEncoder(),\n    getSetHookAllowlistInstructionDataDecoder(),\n  );\n}\n\nexport type SetHookAllowlistAsyncInput<\n  TAccountAdmin extends string = string,\n  TAccountConfig extends string = string,\n> = {\n  admin: TransactionSigner<TAccountAdmin>;\n  config?: Address<TAccountConfig>;\n  allowlist: SetHookAllowlistInstructionDataArgs['allowlist'];\n};\n\nexport async function getSetHookAllowlistInstructionAsync<\n  TAccountAdmin extends string,\n  TAccountConfig extends string,\n  TProgramAddress extends Address = typeof INITIALIZER_PROGRAM_ADDRESS,\n>(\n  input: SetHookAllowlistAsyncInput<TAccountAdmin, TAccountConfig>,\n  config?: { programAddress?: TProgramAddress },\n): Promise<\n  SetHookAllowlistInstruction<TProgramAddress, TAccountAdmin, TAccountConfig>\n> {\n  // Program address.\n  const programAddress = config?.programAddress ?? INITIALIZER_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    admin: { value: input.admin ?? null, isWritable: false },\n    config: { value: input.config ?? null, isWritable: true },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedInstructionAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolve default values.\n  if (!accounts.config.value) {\n    accounts.config.value = await getProgramDerivedAddress({\n      programAddress,\n      seeds: [\n        getBytesEncoder().encode(new Uint8Array([99, 111, 110, 102, 105, 103])),\n      ],\n    });\n  }\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta('admin', accounts.admin),\n      getAccountMeta('config', accounts.config),\n    ],\n    data: getSetHookAllowlistInstructionDataEncoder().encode(\n      args as SetHookAllowlistInstructionDataArgs,\n    ),\n    programAddress,\n  } as SetHookAllowlistInstruction<\n    TProgramAddress,\n    TAccountAdmin,\n    TAccountConfig\n  >);\n}\n\nexport type SetHookAllowlistInput<\n  TAccountAdmin extends string = string,\n  TAccountConfig extends string = string,\n> = {\n  admin: TransactionSigner<TAccountAdmin>;\n  config: Address<TAccountConfig>;\n  allowlist: SetHookAllowlistInstructionDataArgs['allowlist'];\n};\n\nexport function getSetHookAllowlistInstruction<\n  TAccountAdmin extends string,\n  TAccountConfig extends string,\n  TProgramAddress extends Address = typeof INITIALIZER_PROGRAM_ADDRESS,\n>(\n  input: SetHookAllowlistInput<TAccountAdmin, TAccountConfig>,\n  config?: { programAddress?: TProgramAddress },\n): SetHookAllowlistInstruction<TProgramAddress, TAccountAdmin, TAccountConfig> {\n  // Program address.\n  const programAddress = config?.programAddress ?? INITIALIZER_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    admin: { value: input.admin ?? null, isWritable: false },\n    config: { value: input.config ?? null, isWritable: true },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedInstructionAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta('admin', accounts.admin),\n      getAccountMeta('config', accounts.config),\n    ],\n    data: getSetHookAllowlistInstructionDataEncoder().encode(\n      args as SetHookAllowlistInstructionDataArgs,\n    ),\n    programAddress,\n  } as SetHookAllowlistInstruction<\n    TProgramAddress,\n    TAccountAdmin,\n    TAccountConfig\n  >);\n}\n\nexport type ParsedSetHookAllowlistInstruction<\n  TProgram extends string = typeof INITIALIZER_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    admin: TAccountMetas[0];\n    config: TAccountMetas[1];\n  };\n  data: SetHookAllowlistInstructionData;\n};\n\nexport function parseSetHookAllowlistInstruction<\n  TProgram extends string,\n  TAccountMetas extends readonly AccountMeta[],\n>(\n  instruction: Instruction<TProgram> &\n    InstructionWithAccounts<TAccountMetas> &\n    InstructionWithData<ReadonlyUint8Array>,\n): ParsedSetHookAllowlistInstruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 2) {\n    throw new SolanaError(\n      SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS,\n      {\n        actualAccountMetas: instruction.accounts.length,\n        expectedAccountMetas: 2,\n      },\n    );\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: { admin: getNextAccount(), config: getNextAccount() },\n    data: getSetHookAllowlistInstructionDataDecoder().decode(instruction.data),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getAddressDecoder,\n  getAddressEncoder,\n  getArrayDecoder,\n  getArrayEncoder,\n  getBytesDecoder,\n  getBytesEncoder,\n  getProgramDerivedAddress,\n  getStructDecoder,\n  getStructEncoder,\n  SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS,\n  SolanaError,\n  transformEncoder,\n  type AccountMeta,\n  type AccountSignerMeta,\n  type Address,\n  type Codec,\n  type Decoder,\n  type Encoder,\n  type Instruction,\n  type InstructionWithAccounts,\n  type InstructionWithData,\n  type ReadonlySignerAccount,\n  type ReadonlyUint8Array,\n  type TransactionSigner,\n  type WritableAccount,\n} from '@solana/kit';\nimport {\n  getAccountMetaFactory,\n  type ResolvedInstructionAccount,\n} from '@solana/program-client-core';\nimport { INITIALIZER_PROGRAM_ADDRESS } from '../programs';\n\nexport const SET_MIGRATOR_ALLOWLIST_DISCRIMINATOR = new Uint8Array([\n  209, 90, 181, 104, 99, 108, 233, 168,\n]);\n\nexport function getSetMigratorAllowlistDiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(\n    SET_MIGRATOR_ALLOWLIST_DISCRIMINATOR,\n  );\n}\n\nexport type SetMigratorAllowlistInstruction<\n  TProgram extends string = typeof INITIALIZER_PROGRAM_ADDRESS,\n  TAccountAdmin extends string | AccountMeta<string> = string,\n  TAccountConfig extends string | AccountMeta<string> = string,\n  TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n  InstructionWithData<ReadonlyUint8Array> &\n  InstructionWithAccounts<\n    [\n      TAccountAdmin extends string\n        ? ReadonlySignerAccount<TAccountAdmin> &\n            AccountSignerMeta<TAccountAdmin>\n        : TAccountAdmin,\n      TAccountConfig extends string\n        ? WritableAccount<TAccountConfig>\n        : TAccountConfig,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type SetMigratorAllowlistInstructionData = {\n  discriminator: ReadonlyUint8Array;\n  allowlist: Array<Address>;\n};\n\nexport type SetMigratorAllowlistInstructionDataArgs = {\n  allowlist: Array<Address>;\n};\n\nexport function getSetMigratorAllowlistInstructionDataEncoder(): Encoder<SetMigratorAllowlistInstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['allowlist', getArrayEncoder(getAddressEncoder())],\n    ]),\n    (value) => ({\n      ...value,\n      discriminator: SET_MIGRATOR_ALLOWLIST_DISCRIMINATOR,\n    }),\n  );\n}\n\nexport function getSetMigratorAllowlistInstructionDataDecoder(): Decoder<SetMigratorAllowlistInstructionData> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['allowlist', getArrayDecoder(getAddressDecoder())],\n  ]);\n}\n\nexport function getSetMigratorAllowlistInstructionDataCodec(): Codec<\n  SetMigratorAllowlistInstructionDataArgs,\n  SetMigratorAllowlistInstructionData\n> {\n  return combineCodec(\n    getSetMigratorAllowlistInstructionDataEncoder(),\n    getSetMigratorAllowlistInstructionDataDecoder(),\n  );\n}\n\nexport type SetMigratorAllowlistAsyncInput<\n  TAccountAdmin extends string = string,\n  TAccountConfig extends string = string,\n> = {\n  admin: TransactionSigner<TAccountAdmin>;\n  config?: Address<TAccountConfig>;\n  allowlist: SetMigratorAllowlistInstructionDataArgs['allowlist'];\n};\n\nexport async function getSetMigratorAllowlistInstructionAsync<\n  TAccountAdmin extends string,\n  TAccountConfig extends string,\n  TProgramAddress extends Address = typeof INITIALIZER_PROGRAM_ADDRESS,\n>(\n  input: SetMigratorAllowlistAsyncInput<TAccountAdmin, TAccountConfig>,\n  config?: { programAddress?: TProgramAddress },\n): Promise<\n  SetMigratorAllowlistInstruction<\n    TProgramAddress,\n    TAccountAdmin,\n    TAccountConfig\n  >\n> {\n  // Program address.\n  const programAddress = config?.programAddress ?? INITIALIZER_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    admin: { value: input.admin ?? null, isWritable: false },\n    config: { value: input.config ?? null, isWritable: true },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedInstructionAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolve default values.\n  if (!accounts.config.value) {\n    accounts.config.value = await getProgramDerivedAddress({\n      programAddress,\n      seeds: [\n        getBytesEncoder().encode(new Uint8Array([99, 111, 110, 102, 105, 103])),\n      ],\n    });\n  }\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta('admin', accounts.admin),\n      getAccountMeta('config', accounts.config),\n    ],\n    data: getSetMigratorAllowlistInstructionDataEncoder().encode(\n      args as SetMigratorAllowlistInstructionDataArgs,\n    ),\n    programAddress,\n  } as SetMigratorAllowlistInstruction<\n    TProgramAddress,\n    TAccountAdmin,\n    TAccountConfig\n  >);\n}\n\nexport type SetMigratorAllowlistInput<\n  TAccountAdmin extends string = string,\n  TAccountConfig extends string = string,\n> = {\n  admin: TransactionSigner<TAccountAdmin>;\n  config: Address<TAccountConfig>;\n  allowlist: SetMigratorAllowlistInstructionDataArgs['allowlist'];\n};\n\nexport function getSetMigratorAllowlistInstruction<\n  TAccountAdmin extends string,\n  TAccountConfig extends string,\n  TProgramAddress extends Address = typeof INITIALIZER_PROGRAM_ADDRESS,\n>(\n  input: SetMigratorAllowlistInput<TAccountAdmin, TAccountConfig>,\n  config?: { programAddress?: TProgramAddress },\n): SetMigratorAllowlistInstruction<\n  TProgramAddress,\n  TAccountAdmin,\n  TAccountConfig\n> {\n  // Program address.\n  const programAddress = config?.programAddress ?? INITIALIZER_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    admin: { value: input.admin ?? null, isWritable: false },\n    config: { value: input.config ?? null, isWritable: true },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedInstructionAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta('admin', accounts.admin),\n      getAccountMeta('config', accounts.config),\n    ],\n    data: getSetMigratorAllowlistInstructionDataEncoder().encode(\n      args as SetMigratorAllowlistInstructionDataArgs,\n    ),\n    programAddress,\n  } as SetMigratorAllowlistInstruction<\n    TProgramAddress,\n    TAccountAdmin,\n    TAccountConfig\n  >);\n}\n\nexport type ParsedSetMigratorAllowlistInstruction<\n  TProgram extends string = typeof INITIALIZER_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    admin: TAccountMetas[0];\n    config: TAccountMetas[1];\n  };\n  data: SetMigratorAllowlistInstructionData;\n};\n\nexport function parseSetMigratorAllowlistInstruction<\n  TProgram extends string,\n  TAccountMetas extends readonly AccountMeta[],\n>(\n  instruction: Instruction<TProgram> &\n    InstructionWithAccounts<TAccountMetas> &\n    InstructionWithData<ReadonlyUint8Array>,\n): ParsedSetMigratorAllowlistInstruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 2) {\n    throw new SolanaError(\n      SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS,\n      {\n        actualAccountMetas: instruction.accounts.length,\n        expectedAccountMetas: 2,\n      },\n    );\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: { admin: getNextAccount(), config: getNextAccount() },\n    data: getSetMigratorAllowlistInstructionDataDecoder().decode(\n      instruction.data,\n    ),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  assertIsInstructionWithAccounts,\n  containsBytes,\n  fixEncoderSize,\n  getBytesEncoder,\n  SOLANA_ERROR__PROGRAM_CLIENTS__FAILED_TO_IDENTIFY_ACCOUNT,\n  SOLANA_ERROR__PROGRAM_CLIENTS__FAILED_TO_IDENTIFY_INSTRUCTION,\n  SOLANA_ERROR__PROGRAM_CLIENTS__UNRECOGNIZED_INSTRUCTION_TYPE,\n  SolanaError,\n  type Address,\n  type ClientWithPayer,\n  type ClientWithRpc,\n  type ClientWithTransactionPlanning,\n  type ClientWithTransactionSending,\n  type GetAccountInfoApi,\n  type GetMultipleAccountsApi,\n  type Instruction,\n  type InstructionWithData,\n  type ReadonlyUint8Array,\n} from '@solana/kit';\nimport {\n  addSelfFetchFunctions,\n  addSelfPlanAndSendFunctions,\n  type SelfFetchFunctions,\n  type SelfPlanAndSendFunctions,\n} from '@solana/program-client-core';\nimport {\n  getInitConfigCodec,\n  getLaunchCodec,\n  getLaunchFeeStateCodec,\n  getPoolCodec,\n  getPositionCodec,\n  getVestingConfigCodec,\n  type InitConfig,\n  type InitConfigArgs,\n  type Launch,\n  type LaunchArgs,\n  type LaunchFeeState,\n  type LaunchFeeStateArgs,\n  type Pool,\n  type PoolArgs,\n  type Position,\n  type PositionArgs,\n  type VestingConfig,\n  type VestingConfigArgs,\n} from '../accounts';\nimport {\n  getClaimFeesInstructionAsync,\n  getCurveSwapExactInInstructionAsync,\n  getDistributeBaseAllocationNoMigrationInstructionAsync,\n  getFundVestingInstructionAsync,\n  getHarvestMigratedFeesInstructionAsync,\n  getInitializeConfigInstructionAsync,\n  getInitializeLaunchInstructionAsync,\n  getMigrateLaunchInstructionAsync,\n  getMigratorInitInstructionAsync,\n  getPreviewMigrationInstructionAsync,\n  getPreviewSwapExactInInstructionAsync,\n  getReplaceFeeBeneficiaryInstructionAsync,\n  getSetFeePolicyInstructionAsync,\n  getSetHookAllowlistInstructionAsync,\n  getSetMigratorAllowlistInstructionAsync,\n  getTransferAdminInstructionAsync,\n  getUpdateTradingFlagsInstructionAsync,\n  parseClaimFeesInstruction,\n  parseCurveSwapExactInInstruction,\n  parseDistributeBaseAllocationNoMigrationInstruction,\n  parseFundVestingInstruction,\n  parseHarvestMigratedFeesInstruction,\n  parseInitializeConfigInstruction,\n  parseInitializeLaunchInstruction,\n  parseMigrateLaunchInstruction,\n  parseMigratorInitInstruction,\n  parsePreviewMigrationInstruction,\n  parsePreviewSwapExactInInstruction,\n  parseReplaceFeeBeneficiaryInstruction,\n  parseSetFeePolicyInstruction,\n  parseSetHookAllowlistInstruction,\n  parseSetMigratorAllowlistInstruction,\n  parseTransferAdminInstruction,\n  parseUpdateTradingFlagsInstruction,\n  type ClaimFeesAsyncInput,\n  type CurveSwapExactInAsyncInput,\n  type DistributeBaseAllocationNoMigrationAsyncInput,\n  type FundVestingAsyncInput,\n  type HarvestMigratedFeesAsyncInput,\n  type InitializeConfigAsyncInput,\n  type InitializeLaunchAsyncInput,\n  type MigrateLaunchAsyncInput,\n  type MigratorInitAsyncInput,\n  type ParsedClaimFeesInstruction,\n  type ParsedCurveSwapExactInInstruction,\n  type ParsedDistributeBaseAllocationNoMigrationInstruction,\n  type ParsedFundVestingInstruction,\n  type ParsedHarvestMigratedFeesInstruction,\n  type ParsedInitializeConfigInstruction,\n  type ParsedInitializeLaunchInstruction,\n  type ParsedMigrateLaunchInstruction,\n  type ParsedMigratorInitInstruction,\n  type ParsedPreviewMigrationInstruction,\n  type ParsedPreviewSwapExactInInstruction,\n  type ParsedReplaceFeeBeneficiaryInstruction,\n  type ParsedSetFeePolicyInstruction,\n  type ParsedSetHookAllowlistInstruction,\n  type ParsedSetMigratorAllowlistInstruction,\n  type ParsedTransferAdminInstruction,\n  type ParsedUpdateTradingFlagsInstruction,\n  type PreviewMigrationAsyncInput,\n  type PreviewSwapExactInAsyncInput,\n  type ReplaceFeeBeneficiaryAsyncInput,\n  type SetFeePolicyAsyncInput,\n  type SetHookAllowlistAsyncInput,\n  type SetMigratorAllowlistAsyncInput,\n  type TransferAdminAsyncInput,\n  type UpdateTradingFlagsAsyncInput,\n} from '../instructions';\n\nexport const INITIALIZER_PROGRAM_ADDRESS =\n  '4h3Dqyo5qmteJoMxXt3tdtfXELDB6pdRTPU9mWruiKp1' as Address<'4h3Dqyo5qmteJoMxXt3tdtfXELDB6pdRTPU9mWruiKp1'>;\n\nexport enum InitializerAccount {\n  InitConfig,\n  Launch,\n  LaunchFeeState,\n  Pool,\n  Position,\n  VestingConfig,\n}\n\nexport function identifyInitializerAccount(\n  account: { data: ReadonlyUint8Array } | ReadonlyUint8Array,\n): InitializerAccount {\n  const data = 'data' in account ? account.data : account;\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([97, 166, 35, 7, 20, 2, 164, 126]),\n      ),\n      0,\n    )\n  ) {\n    return InitializerAccount.InitConfig;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([144, 51, 51, 163, 206, 85, 213, 38]),\n      ),\n      0,\n    )\n  ) {\n    return InitializerAccount.Launch;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([1, 106, 55, 241, 179, 18, 230, 232]),\n      ),\n      0,\n    )\n  ) {\n    return InitializerAccount.LaunchFeeState;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([241, 154, 109, 4, 17, 177, 109, 188]),\n      ),\n      0,\n    )\n  ) {\n    return InitializerAccount.Pool;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([170, 188, 143, 228, 122, 64, 247, 208]),\n      ),\n      0,\n    )\n  ) {\n    return InitializerAccount.Position;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([0, 138, 71, 135, 26, 29, 43, 125]),\n      ),\n      0,\n    )\n  ) {\n    return InitializerAccount.VestingConfig;\n  }\n  throw new SolanaError(\n    SOLANA_ERROR__PROGRAM_CLIENTS__FAILED_TO_IDENTIFY_ACCOUNT,\n    { accountData: data, programName: 'initializer' },\n  );\n}\n\nexport enum InitializerInstruction {\n  ClaimFees,\n  CurveSwapExactIn,\n  DistributeBaseAllocationNoMigration,\n  FundVesting,\n  HarvestMigratedFees,\n  InitializeConfig,\n  InitializeLaunch,\n  MigrateLaunch,\n  MigratorInit,\n  PreviewMigration,\n  PreviewSwapExactIn,\n  ReplaceFeeBeneficiary,\n  SetFeePolicy,\n  SetHookAllowlist,\n  SetMigratorAllowlist,\n  TransferAdmin,\n  UpdateTradingFlags,\n}\n\nexport function identifyInitializerInstruction(\n  instruction: { data: ReadonlyUint8Array } | ReadonlyUint8Array,\n): InitializerInstruction {\n  const data = 'data' in instruction ? instruction.data : instruction;\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([82, 251, 233, 156, 12, 52, 184, 202]),\n      ),\n      0,\n    )\n  ) {\n    return InitializerInstruction.ClaimFees;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([196, 247, 195, 126, 227, 27, 166, 93]),\n      ),\n      0,\n    )\n  ) {\n    return InitializerInstruction.CurveSwapExactIn;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([107, 200, 114, 3, 143, 2, 169, 56]),\n      ),\n      0,\n    )\n  ) {\n    return InitializerInstruction.DistributeBaseAllocationNoMigration;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([57, 58, 127, 28, 175, 154, 17, 125]),\n      ),\n      0,\n    )\n  ) {\n    return InitializerInstruction.FundVesting;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([63, 77, 73, 117, 2, 43, 255, 176]),\n      ),\n      0,\n    )\n  ) {\n    return InitializerInstruction.HarvestMigratedFees;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([208, 127, 21, 1, 194, 190, 196, 70]),\n      ),\n      0,\n    )\n  ) {\n    return InitializerInstruction.InitializeConfig;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([90, 201, 220, 142, 112, 253, 100, 13]),\n      ),\n      0,\n    )\n  ) {\n    return InitializerInstruction.InitializeLaunch;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([19, 199, 119, 103, 13, 30, 12, 205]),\n      ),\n      0,\n    )\n  ) {\n    return InitializerInstruction.MigrateLaunch;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([184, 104, 5, 97, 50, 28, 253, 16]),\n      ),\n      0,\n    )\n  ) {\n    return InitializerInstruction.MigratorInit;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([216, 180, 209, 112, 62, 16, 15, 63]),\n      ),\n      0,\n    )\n  ) {\n    return InitializerInstruction.PreviewMigration;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([50, 130, 31, 69, 147, 58, 222, 178]),\n      ),\n      0,\n    )\n  ) {\n    return InitializerInstruction.PreviewSwapExactIn;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([125, 194, 227, 81, 175, 100, 78, 200]),\n      ),\n      0,\n    )\n  ) {\n    return InitializerInstruction.ReplaceFeeBeneficiary;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([91, 32, 224, 109, 147, 98, 71, 132]),\n      ),\n      0,\n    )\n  ) {\n    return InitializerInstruction.SetFeePolicy;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([232, 28, 40, 143, 121, 182, 77, 103]),\n      ),\n      0,\n    )\n  ) {\n    return InitializerInstruction.SetHookAllowlist;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([209, 90, 181, 104, 99, 108, 233, 168]),\n      ),\n      0,\n    )\n  ) {\n    return InitializerInstruction.SetMigratorAllowlist;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([42, 242, 66, 106, 228, 10, 111, 156]),\n      ),\n      0,\n    )\n  ) {\n    return InitializerInstruction.TransferAdmin;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([40, 204, 40, 16, 219, 190, 133, 78]),\n      ),\n      0,\n    )\n  ) {\n    return InitializerInstruction.UpdateTradingFlags;\n  }\n  throw new SolanaError(\n    SOLANA_ERROR__PROGRAM_CLIENTS__FAILED_TO_IDENTIFY_INSTRUCTION,\n    { instructionData: data, programName: 'initializer' },\n  );\n}\n\nexport type ParsedInitializerInstruction<\n  TProgram extends string = '4h3Dqyo5qmteJoMxXt3tdtfXELDB6pdRTPU9mWruiKp1',\n> =\n  | ({\n      instructionType: InitializerInstruction.ClaimFees;\n    } & ParsedClaimFeesInstruction<TProgram>)\n  | ({\n      instructionType: InitializerInstruction.CurveSwapExactIn;\n    } & ParsedCurveSwapExactInInstruction<TProgram>)\n  | ({\n      instructionType: InitializerInstruction.DistributeBaseAllocationNoMigration;\n    } & ParsedDistributeBaseAllocationNoMigrationInstruction<TProgram>)\n  | ({\n      instructionType: InitializerInstruction.FundVesting;\n    } & ParsedFundVestingInstruction<TProgram>)\n  | ({\n      instructionType: InitializerInstruction.HarvestMigratedFees;\n    } & ParsedHarvestMigratedFeesInstruction<TProgram>)\n  | ({\n      instructionType: InitializerInstruction.InitializeConfig;\n    } & ParsedInitializeConfigInstruction<TProgram>)\n  | ({\n      instructionType: InitializerInstruction.InitializeLaunch;\n    } & ParsedInitializeLaunchInstruction<TProgram>)\n  | ({\n      instructionType: InitializerInstruction.MigrateLaunch;\n    } & ParsedMigrateLaunchInstruction<TProgram>)\n  | ({\n      instructionType: InitializerInstruction.MigratorInit;\n    } & ParsedMigratorInitInstruction<TProgram>)\n  | ({\n      instructionType: InitializerInstruction.PreviewMigration;\n    } & ParsedPreviewMigrationInstruction<TProgram>)\n  | ({\n      instructionType: InitializerInstruction.PreviewSwapExactIn;\n    } & ParsedPreviewSwapExactInInstruction<TProgram>)\n  | ({\n      instructionType: InitializerInstruction.ReplaceFeeBeneficiary;\n    } & ParsedReplaceFeeBeneficiaryInstruction<TProgram>)\n  | ({\n      instructionType: InitializerInstruction.SetFeePolicy;\n    } & ParsedSetFeePolicyInstruction<TProgram>)\n  | ({\n      instructionType: InitializerInstruction.SetHookAllowlist;\n    } & ParsedSetHookAllowlistInstruction<TProgram>)\n  | ({\n      instructionType: InitializerInstruction.SetMigratorAllowlist;\n    } & ParsedSetMigratorAllowlistInstruction<TProgram>)\n  | ({\n      instructionType: InitializerInstruction.TransferAdmin;\n    } & ParsedTransferAdminInstruction<TProgram>)\n  | ({\n      instructionType: InitializerInstruction.UpdateTradingFlags;\n    } & ParsedUpdateTradingFlagsInstruction<TProgram>);\n\nexport function parseInitializerInstruction<TProgram extends string>(\n  instruction: Instruction<TProgram> & InstructionWithData<ReadonlyUint8Array>,\n): ParsedInitializerInstruction<TProgram> {\n  const instructionType = identifyInitializerInstruction(instruction);\n  switch (instructionType) {\n    case InitializerInstruction.ClaimFees: {\n      assertIsInstructionWithAccounts(instruction);\n      return {\n        instructionType: InitializerInstruction.ClaimFees,\n        ...parseClaimFeesInstruction(instruction),\n      };\n    }\n    case InitializerInstruction.CurveSwapExactIn: {\n      assertIsInstructionWithAccounts(instruction);\n      return {\n        instructionType: InitializerInstruction.CurveSwapExactIn,\n        ...parseCurveSwapExactInInstruction(instruction),\n      };\n    }\n    case InitializerInstruction.DistributeBaseAllocationNoMigration: {\n      assertIsInstructionWithAccounts(instruction);\n      return {\n        instructionType:\n          InitializerInstruction.DistributeBaseAllocationNoMigration,\n        ...parseDistributeBaseAllocationNoMigrationInstruction(instruction),\n      };\n    }\n    case InitializerInstruction.FundVesting: {\n      assertIsInstructionWithAccounts(instruction);\n      return {\n        instructionType: InitializerInstruction.FundVesting,\n        ...parseFundVestingInstruction(instruction),\n      };\n    }\n    case InitializerInstruction.HarvestMigratedFees: {\n      assertIsInstructionWithAccounts(instruction);\n      return {\n        instructionType: InitializerInstruction.HarvestMigratedFees,\n        ...parseHarvestMigratedFeesInstruction(instruction),\n      };\n    }\n    case InitializerInstruction.InitializeConfig: {\n      assertIsInstructionWithAccounts(instruction);\n      return {\n        instructionType: InitializerInstruction.InitializeConfig,\n        ...parseInitializeConfigInstruction(instruction),\n      };\n    }\n    case InitializerInstruction.InitializeLaunch: {\n      assertIsInstructionWithAccounts(instruction);\n      return {\n        instructionType: InitializerInstruction.InitializeLaunch,\n        ...parseInitializeLaunchInstruction(instruction),\n      };\n    }\n    case InitializerInstruction.MigrateLaunch: {\n      assertIsInstructionWithAccounts(instruction);\n      return {\n        instructionType: InitializerInstruction.MigrateLaunch,\n        ...parseMigrateLaunchInstruction(instruction),\n      };\n    }\n    case InitializerInstruction.MigratorInit: {\n      assertIsInstructionWithAccounts(instruction);\n      return {\n        instructionType: InitializerInstruction.MigratorInit,\n        ...parseMigratorInitInstruction(instruction),\n      };\n    }\n    case InitializerInstruction.PreviewMigration: {\n      assertIsInstructionWithAccounts(instruction);\n      return {\n        instructionType: InitializerInstruction.PreviewMigration,\n        ...parsePreviewMigrationInstruction(instruction),\n      };\n    }\n    case InitializerInstruction.PreviewSwapExactIn: {\n      assertIsInstructionWithAccounts(instruction);\n      return {\n        instructionType: InitializerInstruction.PreviewSwapExactIn,\n        ...parsePreviewSwapExactInInstruction(instruction),\n      };\n    }\n    case InitializerInstruction.ReplaceFeeBeneficiary: {\n      assertIsInstructionWithAccounts(instruction);\n      return {\n        instructionType: InitializerInstruction.ReplaceFeeBeneficiary,\n        ...parseReplaceFeeBeneficiaryInstruction(instruction),\n      };\n    }\n    case InitializerInstruction.SetFeePolicy: {\n      assertIsInstructionWithAccounts(instruction);\n      return {\n        instructionType: InitializerInstruction.SetFeePolicy,\n        ...parseSetFeePolicyInstruction(instruction),\n      };\n    }\n    case InitializerInstruction.SetHookAllowlist: {\n      assertIsInstructionWithAccounts(instruction);\n      return {\n        instructionType: InitializerInstruction.SetHookAllowlist,\n        ...parseSetHookAllowlistInstruction(instruction),\n      };\n    }\n    case InitializerInstruction.SetMigratorAllowlist: {\n      assertIsInstructionWithAccounts(instruction);\n      return {\n        instructionType: InitializerInstruction.SetMigratorAllowlist,\n        ...parseSetMigratorAllowlistInstruction(instruction),\n      };\n    }\n    case InitializerInstruction.TransferAdmin: {\n      assertIsInstructionWithAccounts(instruction);\n      return {\n        instructionType: InitializerInstruction.TransferAdmin,\n        ...parseTransferAdminInstruction(instruction),\n      };\n    }\n    case InitializerInstruction.UpdateTradingFlags: {\n      assertIsInstructionWithAccounts(instruction);\n      return {\n        instructionType: InitializerInstruction.UpdateTradingFlags,\n        ...parseUpdateTradingFlagsInstruction(instruction),\n      };\n    }\n    default:\n      throw new SolanaError(\n        SOLANA_ERROR__PROGRAM_CLIENTS__UNRECOGNIZED_INSTRUCTION_TYPE,\n        {\n          instructionType: instructionType as string,\n          programName: 'initializer',\n        },\n      );\n  }\n}\n\nexport type InitializerPlugin = {\n  accounts: InitializerPluginAccounts;\n  instructions: InitializerPluginInstructions;\n};\n\nexport type InitializerPluginAccounts = {\n  initConfig: ReturnType<typeof getInitConfigCodec> &\n    SelfFetchFunctions<InitConfigArgs, InitConfig>;\n  launch: ReturnType<typeof getLaunchCodec> &\n    SelfFetchFunctions<LaunchArgs, Launch>;\n  launchFeeState: ReturnType<typeof getLaunchFeeStateCodec> &\n    SelfFetchFunctions<LaunchFeeStateArgs, LaunchFeeState>;\n  pool: ReturnType<typeof getPoolCodec> & SelfFetchFunctions<PoolArgs, Pool>;\n  position: ReturnType<typeof getPositionCodec> &\n    SelfFetchFunctions<PositionArgs, Position>;\n  vestingConfig: ReturnType<typeof getVestingConfigCodec> &\n    SelfFetchFunctions<VestingConfigArgs, VestingConfig>;\n};\n\nexport type InitializerPluginInstructions = {\n  claimFees: (\n    input: ClaimFeesAsyncInput,\n  ) => ReturnType<typeof getClaimFeesInstructionAsync> &\n    SelfPlanAndSendFunctions;\n  curveSwapExactIn: (\n    input: CurveSwapExactInAsyncInput,\n  ) => ReturnType<typeof getCurveSwapExactInInstructionAsync> &\n    SelfPlanAndSendFunctions;\n  distributeBaseAllocationNoMigration: (\n    input: DistributeBaseAllocationNoMigrationAsyncInput,\n  ) => ReturnType<\n    typeof getDistributeBaseAllocationNoMigrationInstructionAsync\n  > &\n    SelfPlanAndSendFunctions;\n  fundVesting: (\n    input: MakeOptional<FundVestingAsyncInput, 'payer'>,\n  ) => ReturnType<typeof getFundVestingInstructionAsync> &\n    SelfPlanAndSendFunctions;\n  harvestMigratedFees: (\n    input: HarvestMigratedFeesAsyncInput,\n  ) => ReturnType<typeof getHarvestMigratedFeesInstructionAsync> &\n    SelfPlanAndSendFunctions;\n  initializeConfig: (\n    input: InitializeConfigAsyncInput,\n  ) => ReturnType<typeof getInitializeConfigInstructionAsync> &\n    SelfPlanAndSendFunctions;\n  initializeLaunch: (\n    input: MakeOptional<InitializeLaunchAsyncInput, 'payer'>,\n  ) => ReturnType<typeof getInitializeLaunchInstructionAsync> &\n    SelfPlanAndSendFunctions;\n  migrateLaunch: (\n    input: MakeOptional<MigrateLaunchAsyncInput, 'payer'>,\n  ) => ReturnType<typeof getMigrateLaunchInstructionAsync> &\n    SelfPlanAndSendFunctions;\n  migratorInit: (\n    input: MakeOptional<MigratorInitAsyncInput, 'payer'>,\n  ) => ReturnType<typeof getMigratorInitInstructionAsync> &\n    SelfPlanAndSendFunctions;\n  previewMigration: (\n    input: PreviewMigrationAsyncInput,\n  ) => ReturnType<typeof getPreviewMigrationInstructionAsync> &\n    SelfPlanAndSendFunctions;\n  previewSwapExactIn: (\n    input: PreviewSwapExactInAsyncInput,\n  ) => ReturnType<typeof getPreviewSwapExactInInstructionAsync> &\n    SelfPlanAndSendFunctions;\n  replaceFeeBeneficiary: (\n    input: ReplaceFeeBeneficiaryAsyncInput,\n  ) => ReturnType<typeof getReplaceFeeBeneficiaryInstructionAsync> &\n    SelfPlanAndSendFunctions;\n  setFeePolicy: (\n    input: SetFeePolicyAsyncInput,\n  ) => ReturnType<typeof getSetFeePolicyInstructionAsync> &\n    SelfPlanAndSendFunctions;\n  setHookAllowlist: (\n    input: SetHookAllowlistAsyncInput,\n  ) => ReturnType<typeof getSetHookAllowlistInstructionAsync> &\n    SelfPlanAndSendFunctions;\n  setMigratorAllowlist: (\n    input: SetMigratorAllowlistAsyncInput,\n  ) => ReturnType<typeof getSetMigratorAllowlistInstructionAsync> &\n    SelfPlanAndSendFunctions;\n  transferAdmin: (\n    input: TransferAdminAsyncInput,\n  ) => ReturnType<typeof getTransferAdminInstructionAsync> &\n    SelfPlanAndSendFunctions;\n  updateTradingFlags: (\n    input: UpdateTradingFlagsAsyncInput,\n  ) => ReturnType<typeof getUpdateTradingFlagsInstructionAsync> &\n    SelfPlanAndSendFunctions;\n};\n\nexport type InitializerPluginRequirements = ClientWithRpc<\n  GetAccountInfoApi & GetMultipleAccountsApi\n> &\n  ClientWithPayer &\n  ClientWithTransactionPlanning &\n  ClientWithTransactionSending;\n\nexport function initializerProgram() {\n  return <T extends InitializerPluginRequirements>(client: T) => {\n    return {\n      ...client,\n      initializer: <InitializerPlugin>{\n        accounts: {\n          initConfig: addSelfFetchFunctions(client, getInitConfigCodec()),\n          launch: addSelfFetchFunctions(client, getLaunchCodec()),\n          launchFeeState: addSelfFetchFunctions(\n            client,\n            getLaunchFeeStateCodec(),\n          ),\n          pool: addSelfFetchFunctions(client, getPoolCodec()),\n          position: addSelfFetchFunctions(client, getPositionCodec()),\n          vestingConfig: addSelfFetchFunctions(client, getVestingConfigCodec()),\n        },\n        instructions: {\n          claimFees: (input) =>\n            addSelfPlanAndSendFunctions(\n              client,\n              getClaimFeesInstructionAsync(input),\n            ),\n          curveSwapExactIn: (input) =>\n            addSelfPlanAndSendFunctions(\n              client,\n              getCurveSwapExactInInstructionAsync(input),\n            ),\n          distributeBaseAllocationNoMigration: (input) =>\n            addSelfPlanAndSendFunctions(\n              client,\n              getDistributeBaseAllocationNoMigrationInstructionAsync(input),\n            ),\n          fundVesting: (input) =>\n            addSelfPlanAndSendFunctions(\n              client,\n              getFundVestingInstructionAsync({\n                ...input,\n                payer: input.payer ?? client.payer,\n              }),\n            ),\n          harvestMigratedFees: (input) =>\n            addSelfPlanAndSendFunctions(\n              client,\n              getHarvestMigratedFeesInstructionAsync(input),\n            ),\n          initializeConfig: (input) =>\n            addSelfPlanAndSendFunctions(\n              client,\n              getInitializeConfigInstructionAsync(input),\n            ),\n          initializeLaunch: (input) =>\n            addSelfPlanAndSendFunctions(\n              client,\n              getInitializeLaunchInstructionAsync({\n                ...input,\n                payer: input.payer ?? client.payer,\n              }),\n            ),\n          migrateLaunch: (input) =>\n            addSelfPlanAndSendFunctions(\n              client,\n              getMigrateLaunchInstructionAsync({\n                ...input,\n                payer: input.payer ?? client.payer,\n              }),\n            ),\n          migratorInit: (input) =>\n            addSelfPlanAndSendFunctions(\n              client,\n              getMigratorInitInstructionAsync({\n                ...input,\n                payer: input.payer ?? client.payer,\n              }),\n            ),\n          previewMigration: (input) =>\n            addSelfPlanAndSendFunctions(\n              client,\n              getPreviewMigrationInstructionAsync(input),\n            ),\n          previewSwapExactIn: (input) =>\n            addSelfPlanAndSendFunctions(\n              client,\n              getPreviewSwapExactInInstructionAsync(input),\n            ),\n          replaceFeeBeneficiary: (input) =>\n            addSelfPlanAndSendFunctions(\n              client,\n              getReplaceFeeBeneficiaryInstructionAsync(input),\n            ),\n          setFeePolicy: (input) =>\n            addSelfPlanAndSendFunctions(\n              client,\n              getSetFeePolicyInstructionAsync(input),\n            ),\n          setHookAllowlist: (input) =>\n            addSelfPlanAndSendFunctions(\n              client,\n              getSetHookAllowlistInstructionAsync(input),\n            ),\n          setMigratorAllowlist: (input) =>\n            addSelfPlanAndSendFunctions(\n              client,\n              getSetMigratorAllowlistInstructionAsync(input),\n            ),\n          transferAdmin: (input) =>\n            addSelfPlanAndSendFunctions(\n              client,\n              getTransferAdminInstructionAsync(input),\n            ),\n          updateTradingFlags: (input) =>\n            addSelfPlanAndSendFunctions(\n              client,\n              getUpdateTradingFlagsInstructionAsync(input),\n            ),\n        },\n      },\n    };\n  };\n}\n\ntype MakeOptional<T, K extends keyof T> = Omit<T, K> & Partial<Pick<T, K>>;\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  isProgramError,\n  type Address,\n  type SOLANA_ERROR__INSTRUCTION_ERROR__CUSTOM,\n  type SolanaError,\n} from '@solana/kit';\nimport { INITIALIZER_PROGRAM_ADDRESS } from '../programs';\n\n/** Unauthorized: Unauthorized */\nexport const INITIALIZER_ERROR__UNAUTHORIZED = 0x1770; // 6000\n/** InvalidPhase: Invalid phase */\nexport const INITIALIZER_ERROR__INVALID_PHASE = 0x1771; // 6001\n/** InvalidAmount: Invalid amount */\nexport const INITIALIZER_ERROR__INVALID_AMOUNT = 0x1772; // 6002\n/** InvalidVault: Invalid vault */\nexport const INITIALIZER_ERROR__INVALID_VAULT = 0x1773; // 6003\n/** InvalidMint: Invalid mint */\nexport const INITIALIZER_ERROR__INVALID_MINT = 0x1774; // 6004\n/** MathOverflow: Math overflow */\nexport const INITIALIZER_ERROR__MATH_OVERFLOW = 0x1775; // 6005\n/** InvalidCurveParams: Invalid curve params */\nexport const INITIALIZER_ERROR__INVALID_CURVE_PARAMS = 0x1776; // 6006\n/** SlippageExceeded: Slippage exceeded */\nexport const INITIALIZER_ERROR__SLIPPAGE_EXCEEDED = 0x1777; // 6007\n/** CurveLiquidityInsufficient: Curve liquidity insufficient */\nexport const INITIALIZER_ERROR__CURVE_LIQUIDITY_INSUFFICIENT = 0x1778; // 6008\n/** PayloadTooLarge: Payload too large */\nexport const INITIALIZER_ERROR__PAYLOAD_TOO_LARGE = 0x1779; // 6009\n/** MigratorNotAllowlisted: Migrator not allowlisted */\nexport const INITIALIZER_ERROR__MIGRATOR_NOT_ALLOWLISTED = 0x177a; // 6010\n/** HookNotAllowlisted: Hook not allowlisted */\nexport const INITIALIZER_ERROR__HOOK_NOT_ALLOWLISTED = 0x177b; // 6011\n/** WrongMigrator: Wrong migrator program */\nexport const INITIALIZER_ERROR__WRONG_MIGRATOR = 0x177c; // 6012\n/** WrongHook: Wrong hook program */\nexport const INITIALIZER_ERROR__WRONG_HOOK = 0x177d; // 6013\n/** MigratorCpiFailed: Migrator CPI failed */\nexport const INITIALIZER_ERROR__MIGRATOR_CPI_FAILED = 0x177e; // 6014\n/** HookCpiFailed: Hook CPI failed */\nexport const INITIALIZER_ERROR__HOOK_CPI_FAILED = 0x177f; // 6015\n/** HookRejected: Hook rejected */\nexport const INITIALIZER_ERROR__HOOK_REJECTED = 0x1780; // 6016\n/** BuyNotAllowed: Buy not allowed */\nexport const INITIALIZER_ERROR__BUY_NOT_ALLOWED = 0x1781; // 6017\n/** SellNotAllowed: Sell not allowed */\nexport const INITIALIZER_ERROR__SELL_NOT_ALLOWED = 0x1782; // 6018\n/** SellDisableNotAllowed: Sell disable not allowed once enabled */\nexport const INITIALIZER_ERROR__SELL_DISABLE_NOT_ALLOWED = 0x1783; // 6019\n/** InvalidTradeDirection: Invalid trade direction */\nexport const INITIALIZER_ERROR__INVALID_TRADE_DIRECTION = 0x1784; // 6020\n/** AllowlistFull: Allowlist full */\nexport const INITIALIZER_ERROR__ALLOWLIST_FULL = 0x1785; // 6021\n/** InvalidInput: Invalid input */\nexport const INITIALIZER_ERROR__INVALID_INPUT = 0x1786; // 6022\n/** LaunchLocked: Launch locked */\nexport const INITIALIZER_ERROR__LAUNCH_LOCKED = 0x1789; // 6025\n/** InvalidCurveKind: Invalid curve kind */\nexport const INITIALIZER_ERROR__INVALID_CURVE_KIND = 0x178a; // 6026\n/** CurveParamsInvalid: Curve params invalid */\nexport const INITIALIZER_ERROR__CURVE_PARAMS_INVALID = 0x178b; // 6027\n/** RemainingAccountOverlap: Remaining account overlaps with protocol account */\nexport const INITIALIZER_ERROR__REMAINING_ACCOUNT_OVERLAP = 0x178c; // 6028\n/** MissingRemainingAccountsCommitment: Missing remaining accounts commitment */\nexport const INITIALIZER_ERROR__MISSING_REMAINING_ACCOUNTS_COMMITMENT = 0x178d; // 6029\n/** RemainingAccountsCommitmentMismatch: Remaining accounts commitment mismatch */\nexport const INITIALIZER_ERROR__REMAINING_ACCOUNTS_COMMITMENT_MISMATCH = 0x178e; // 6030\n/** InvalidOracle: Invalid oracle account */\nexport const INITIALIZER_ERROR__INVALID_ORACLE = 0x178f; // 6031\n/** MissingMetadataAccounts: Missing metadata accounts */\nexport const INITIALIZER_ERROR__MISSING_METADATA_ACCOUNTS = 0x1790; // 6032\n/** InvalidMetadataProgram: Invalid metadata program */\nexport const INITIALIZER_ERROR__INVALID_METADATA_PROGRAM = 0x1791; // 6033\n/** InvalidMetadataAccount: Invalid metadata account */\nexport const INITIALIZER_ERROR__INVALID_METADATA_ACCOUNT = 0x1792; // 6034\n/** MetadataCpiFailed: Metadata CPI failed */\nexport const INITIALIZER_ERROR__METADATA_CPI_FAILED = 0x1793; // 6035\n/** RemainingAccountSigner: Remaining accounts must not be signers */\nexport const INITIALIZER_ERROR__REMAINING_ACCOUNT_SIGNER = 0x1795; // 6037\n/** RemainingAccountWritable: Remaining accounts must be readonly */\nexport const INITIALIZER_ERROR__REMAINING_ACCOUNT_WRITABLE = 0x1796; // 6038\n/** MigrationIncomplete: Migration left vault funds behind */\nexport const INITIALIZER_ERROR__MIGRATION_INCOMPLETE = 0x1797; // 6039\n/** InvalidFeeBeneficiary: Invalid fee beneficiary */\nexport const INITIALIZER_ERROR__INVALID_FEE_BENEFICIARY = 0x1798; // 6040\n/** InvalidFeeShares: Invalid fee shares */\nexport const INITIALIZER_ERROR__INVALID_FEE_SHARES = 0x1799; // 6041\n/** InvalidSwapFee: Invalid swap fee */\nexport const INITIALIZER_ERROR__INVALID_SWAP_FEE = 0x179a; // 6042\n/** InvalidLaunchFeeState: Invalid launch fee state */\nexport const INITIALIZER_ERROR__INVALID_LAUNCH_FEE_STATE = 0x179b; // 6043\n/** NoFeesToDistribute: No fees to distribute */\nexport const INITIALIZER_ERROR__NO_FEES_TO_DISTRIBUTE = 0x179c; // 6044\n/** InvalidVestingConfig: Invalid vesting configuration */\nexport const INITIALIZER_ERROR__INVALID_VESTING_CONFIG = 0x179d; // 6045\n/** VestingBalanceMismatch: Vesting vault balance changed by an unexpected amount */\nexport const INITIALIZER_ERROR__VESTING_BALANCE_MISMATCH = 0x179e; // 6046\n\nexport type InitializerError =\n  | typeof INITIALIZER_ERROR__ALLOWLIST_FULL\n  | typeof INITIALIZER_ERROR__BUY_NOT_ALLOWED\n  | typeof INITIALIZER_ERROR__CURVE_LIQUIDITY_INSUFFICIENT\n  | typeof INITIALIZER_ERROR__CURVE_PARAMS_INVALID\n  | typeof INITIALIZER_ERROR__HOOK_CPI_FAILED\n  | typeof INITIALIZER_ERROR__HOOK_NOT_ALLOWLISTED\n  | typeof INITIALIZER_ERROR__HOOK_REJECTED\n  | typeof INITIALIZER_ERROR__INVALID_AMOUNT\n  | typeof INITIALIZER_ERROR__INVALID_CURVE_KIND\n  | typeof INITIALIZER_ERROR__INVALID_CURVE_PARAMS\n  | typeof INITIALIZER_ERROR__INVALID_FEE_BENEFICIARY\n  | typeof INITIALIZER_ERROR__INVALID_FEE_SHARES\n  | typeof INITIALIZER_ERROR__INVALID_INPUT\n  | typeof INITIALIZER_ERROR__INVALID_LAUNCH_FEE_STATE\n  | typeof INITIALIZER_ERROR__INVALID_METADATA_ACCOUNT\n  | typeof INITIALIZER_ERROR__INVALID_METADATA_PROGRAM\n  | typeof INITIALIZER_ERROR__INVALID_MINT\n  | typeof INITIALIZER_ERROR__INVALID_ORACLE\n  | typeof INITIALIZER_ERROR__INVALID_PHASE\n  | typeof INITIALIZER_ERROR__INVALID_SWAP_FEE\n  | typeof INITIALIZER_ERROR__INVALID_TRADE_DIRECTION\n  | typeof INITIALIZER_ERROR__INVALID_VAULT\n  | typeof INITIALIZER_ERROR__INVALID_VESTING_CONFIG\n  | typeof INITIALIZER_ERROR__LAUNCH_LOCKED\n  | typeof INITIALIZER_ERROR__MATH_OVERFLOW\n  | typeof INITIALIZER_ERROR__METADATA_CPI_FAILED\n  | typeof INITIALIZER_ERROR__MIGRATION_INCOMPLETE\n  | typeof INITIALIZER_ERROR__MIGRATOR_CPI_FAILED\n  | typeof INITIALIZER_ERROR__MIGRATOR_NOT_ALLOWLISTED\n  | typeof INITIALIZER_ERROR__MISSING_METADATA_ACCOUNTS\n  | typeof INITIALIZER_ERROR__MISSING_REMAINING_ACCOUNTS_COMMITMENT\n  | typeof INITIALIZER_ERROR__NO_FEES_TO_DISTRIBUTE\n  | typeof INITIALIZER_ERROR__PAYLOAD_TOO_LARGE\n  | typeof INITIALIZER_ERROR__REMAINING_ACCOUNT_OVERLAP\n  | typeof INITIALIZER_ERROR__REMAINING_ACCOUNTS_COMMITMENT_MISMATCH\n  | typeof INITIALIZER_ERROR__REMAINING_ACCOUNT_SIGNER\n  | typeof INITIALIZER_ERROR__REMAINING_ACCOUNT_WRITABLE\n  | typeof INITIALIZER_ERROR__SELL_DISABLE_NOT_ALLOWED\n  | typeof INITIALIZER_ERROR__SELL_NOT_ALLOWED\n  | typeof INITIALIZER_ERROR__SLIPPAGE_EXCEEDED\n  | typeof INITIALIZER_ERROR__UNAUTHORIZED\n  | typeof INITIALIZER_ERROR__VESTING_BALANCE_MISMATCH\n  | typeof INITIALIZER_ERROR__WRONG_HOOK\n  | typeof INITIALIZER_ERROR__WRONG_MIGRATOR;\n\nlet initializerErrorMessages: Record<InitializerError, string> | undefined;\nif (process.env.NODE_ENV !== 'production') {\n  initializerErrorMessages = {\n    [INITIALIZER_ERROR__ALLOWLIST_FULL]: `Allowlist full`,\n    [INITIALIZER_ERROR__BUY_NOT_ALLOWED]: `Buy not allowed`,\n    [INITIALIZER_ERROR__CURVE_LIQUIDITY_INSUFFICIENT]: `Curve liquidity insufficient`,\n    [INITIALIZER_ERROR__CURVE_PARAMS_INVALID]: `Curve params invalid`,\n    [INITIALIZER_ERROR__HOOK_CPI_FAILED]: `Hook CPI failed`,\n    [INITIALIZER_ERROR__HOOK_NOT_ALLOWLISTED]: `Hook not allowlisted`,\n    [INITIALIZER_ERROR__HOOK_REJECTED]: `Hook rejected`,\n    [INITIALIZER_ERROR__INVALID_AMOUNT]: `Invalid amount`,\n    [INITIALIZER_ERROR__INVALID_CURVE_KIND]: `Invalid curve kind`,\n    [INITIALIZER_ERROR__INVALID_CURVE_PARAMS]: `Invalid curve params`,\n    [INITIALIZER_ERROR__INVALID_FEE_BENEFICIARY]: `Invalid fee beneficiary`,\n    [INITIALIZER_ERROR__INVALID_FEE_SHARES]: `Invalid fee shares`,\n    [INITIALIZER_ERROR__INVALID_INPUT]: `Invalid input`,\n    [INITIALIZER_ERROR__INVALID_LAUNCH_FEE_STATE]: `Invalid launch fee state`,\n    [INITIALIZER_ERROR__INVALID_METADATA_ACCOUNT]: `Invalid metadata account`,\n    [INITIALIZER_ERROR__INVALID_METADATA_PROGRAM]: `Invalid metadata program`,\n    [INITIALIZER_ERROR__INVALID_MINT]: `Invalid mint`,\n    [INITIALIZER_ERROR__INVALID_ORACLE]: `Invalid oracle account`,\n    [INITIALIZER_ERROR__INVALID_PHASE]: `Invalid phase`,\n    [INITIALIZER_ERROR__INVALID_SWAP_FEE]: `Invalid swap fee`,\n    [INITIALIZER_ERROR__INVALID_TRADE_DIRECTION]: `Invalid trade direction`,\n    [INITIALIZER_ERROR__INVALID_VAULT]: `Invalid vault`,\n    [INITIALIZER_ERROR__INVALID_VESTING_CONFIG]: `Invalid vesting configuration`,\n    [INITIALIZER_ERROR__LAUNCH_LOCKED]: `Launch locked`,\n    [INITIALIZER_ERROR__MATH_OVERFLOW]: `Math overflow`,\n    [INITIALIZER_ERROR__METADATA_CPI_FAILED]: `Metadata CPI failed`,\n    [INITIALIZER_ERROR__MIGRATION_INCOMPLETE]: `Migration left vault funds behind`,\n    [INITIALIZER_ERROR__MIGRATOR_CPI_FAILED]: `Migrator CPI failed`,\n    [INITIALIZER_ERROR__MIGRATOR_NOT_ALLOWLISTED]: `Migrator not allowlisted`,\n    [INITIALIZER_ERROR__MISSING_METADATA_ACCOUNTS]: `Missing metadata accounts`,\n    [INITIALIZER_ERROR__MISSING_REMAINING_ACCOUNTS_COMMITMENT]: `Missing remaining accounts commitment`,\n    [INITIALIZER_ERROR__NO_FEES_TO_DISTRIBUTE]: `No fees to distribute`,\n    [INITIALIZER_ERROR__PAYLOAD_TOO_LARGE]: `Payload too large`,\n    [INITIALIZER_ERROR__REMAINING_ACCOUNT_OVERLAP]: `Remaining account overlaps with protocol account`,\n    [INITIALIZER_ERROR__REMAINING_ACCOUNTS_COMMITMENT_MISMATCH]: `Remaining accounts commitment mismatch`,\n    [INITIALIZER_ERROR__REMAINING_ACCOUNT_SIGNER]: `Remaining accounts must not be signers`,\n    [INITIALIZER_ERROR__REMAINING_ACCOUNT_WRITABLE]: `Remaining accounts must be readonly`,\n    [INITIALIZER_ERROR__SELL_DISABLE_NOT_ALLOWED]: `Sell disable not allowed once enabled`,\n    [INITIALIZER_ERROR__SELL_NOT_ALLOWED]: `Sell not allowed`,\n    [INITIALIZER_ERROR__SLIPPAGE_EXCEEDED]: `Slippage exceeded`,\n    [INITIALIZER_ERROR__UNAUTHORIZED]: `Unauthorized`,\n    [INITIALIZER_ERROR__VESTING_BALANCE_MISMATCH]: `Vesting vault balance changed by an unexpected amount`,\n    [INITIALIZER_ERROR__WRONG_HOOK]: `Wrong hook program`,\n    [INITIALIZER_ERROR__WRONG_MIGRATOR]: `Wrong migrator program`,\n  };\n}\n\nexport function getInitializerErrorMessage(code: InitializerError): string {\n  if (process.env.NODE_ENV !== 'production') {\n    return (initializerErrorMessages as Record<InitializerError, string>)[code];\n  }\n\n  return 'Error message not available in production bundles.';\n}\n\nexport function isInitializerError<TProgramErrorCode extends InitializerError>(\n  error: unknown,\n  transactionMessage: {\n    instructions: Record<number, { programAddress: Address }>;\n  },\n  code?: TProgramErrorCode,\n): error is SolanaError<typeof SOLANA_ERROR__INSTRUCTION_ERROR__CUSTOM> &\n  Readonly<{ context: Readonly<{ code: TProgramErrorCode }> }> {\n  return isProgramError<TProgramErrorCode>(\n    error,\n    transactionMessage,\n    INITIALIZER_PROGRAM_ADDRESS,\n    code,\n  );\n}\n","import {\n  type Address,\n  type ProgramDerivedAddress,\n  getAddressCodec,\n  getProgramDerivedAddress,\n} from '@solana/kit';\nimport {\n  BPF_LOADER_UPGRADEABLE_PROGRAM_ID,\n  INITIALIZER_PROGRAM_ID,\n  SEED_CONFIG,\n  SEED_LAUNCH,\n  SEED_LAUNCH_AUTHORITY,\n  SEED_LAUNCH_FEE_STATE,\n} from './constants.js';\n\nconst addressCodec = getAddressCodec();\nconst textEncoder = new TextEncoder();\n\nexport function encodeU64LE(value: bigint): Uint8Array {\n  const bytes = new Uint8Array(8);\n  const view = new DataView(bytes.buffer);\n  view.setBigUint64(0, value, true);\n  return bytes;\n}\n\n/**\n * Derive the InitConfig PDA address.\n * Seeds: ['config']\n */\nexport async function getConfigAddress(\n  programId: Address = INITIALIZER_PROGRAM_ID,\n): Promise<ProgramDerivedAddress> {\n  return getProgramDerivedAddress({\n    programAddress: programId,\n    seeds: [textEncoder.encode(SEED_CONFIG)],\n  });\n}\n\n/**\n * Derive the ProgramData PDA for an upgradeable program.\n * Seeds: [initializer_program_id] with program = BPFLoaderUpgradeable.\n */\nexport async function getProgramDataAddress(\n  programId: Address = INITIALIZER_PROGRAM_ID,\n): Promise<ProgramDerivedAddress> {\n  return getProgramDerivedAddress({\n    programAddress: BPF_LOADER_UPGRADEABLE_PROGRAM_ID,\n    seeds: [addressCodec.encode(programId)],\n  });\n}\n\n/**\n * Derive the Launch PDA address.\n * Seeds: ['launch', namespace, launch_id_bytes_32]\n */\nexport async function getLaunchAddress(\n  namespace: Address,\n  launchId: Uint8Array,\n  programId: Address = INITIALIZER_PROGRAM_ID,\n): Promise<ProgramDerivedAddress> {\n  if (launchId.length !== 32) {\n    throw new Error('launchId must be 32 bytes');\n  }\n  return getProgramDerivedAddress({\n    programAddress: programId,\n    seeds: [\n      textEncoder.encode(SEED_LAUNCH),\n      addressCodec.encode(namespace),\n      launchId,\n    ],\n  });\n}\n\n/**\n * Derive the Launch authority PDA address.\n * Seeds: ['launch_authority', launch]\n */\nexport async function getLaunchAuthorityAddress(\n  launch: Address,\n  programId: Address = INITIALIZER_PROGRAM_ID,\n): Promise<ProgramDerivedAddress> {\n  return getProgramDerivedAddress({\n    programAddress: programId,\n    seeds: [\n      textEncoder.encode(SEED_LAUNCH_AUTHORITY),\n      addressCodec.encode(launch),\n    ],\n  });\n}\n\n/**\n * Derive the LaunchFeeState PDA address.\n * Seeds: ['launch_fee_state', launch]\n */\nexport async function getLaunchFeeStateAddress(\n  launch: Address,\n  programId: Address = INITIALIZER_PROGRAM_ID,\n): Promise<ProgramDerivedAddress> {\n  return getProgramDerivedAddress({\n    programAddress: programId,\n    seeds: [\n      textEncoder.encode(SEED_LAUNCH_FEE_STATE),\n      addressCodec.encode(launch),\n    ],\n  });\n}\n\n/**\n * Convenience helper for the common pattern: embed a u64 into a 32-byte launch_id.\n */\nexport function launchIdFromU64(launchId: bigint): Uint8Array {\n  const out = new Uint8Array(32);\n  out.set(encodeU64LE(launchId), 0);\n  return out;\n}\n","import type {\n  Address,\n  Instruction,\n  AccountMeta,\n  AccountSignerMeta,\n} from '@solana/kit';\nimport { AccountRole } from '@solana/kit';\nimport { SYSTEM_PROGRAM_ADDRESS } from '../../core/constants.js';\nimport {\n  createAccountMeta,\n  type AddressOrTransactionSigner,\n} from '../../core/accounts.js';\nimport { INITIALIZER_PROGRAM_ID } from '../constants.js';\nimport type { InitializeConfigArgsArgs } from '../../generated/initializer/index.js';\nimport { getInitializeConfigInstructionDataEncoder } from '../../generated/initializer/index.js';\n\ntype AddressOrSigner = AddressOrTransactionSigner;\n\nexport interface InitializeConfigAccounts {\n  admin: AddressOrSigner;\n  config: Address;\n  programData: Address;\n  systemProgram?: Address;\n}\n\nexport function createInitializeConfigInstruction(\n  accounts: InitializeConfigAccounts,\n  args: InitializeConfigArgsArgs,\n  programId: Address = INITIALIZER_PROGRAM_ID,\n): Instruction {\n  const {\n    admin,\n    config,\n    programData,\n    systemProgram = SYSTEM_PROGRAM_ADDRESS,\n  } = accounts;\n\n  const keys: (AccountMeta | AccountSignerMeta)[] = [\n    createAccountMeta(admin, AccountRole.WRITABLE_SIGNER),\n    { address: config, role: AccountRole.WRITABLE },\n    { address: programData, role: AccountRole.READONLY },\n    { address: systemProgram, role: AccountRole.READONLY },\n  ];\n\n  const data = new Uint8Array(\n    getInitializeConfigInstructionDataEncoder().encode(args),\n  );\n\n  return { programAddress: programId, accounts: keys, data };\n}\n","import type {\n  Address,\n  Instruction,\n  AccountMeta,\n  AccountSignerMeta,\n} from '@solana/kit';\nimport { AccountRole } from '@solana/kit';\nimport {\n  createAccountMeta,\n  type AddressOrTransactionSigner,\n} from '../../core/accounts.js';\nimport { INITIALIZER_PROGRAM_ID } from '../constants.js';\nimport { getSetMigratorAllowlistInstructionDataEncoder } from '../../generated/initializer/index.js';\n\ntype AddressOrSigner = AddressOrTransactionSigner;\n\nexport interface SetMigratorAllowlistAccounts {\n  admin: AddressOrSigner;\n  config: Address;\n}\n\nexport function createSetMigratorAllowlistInstruction(\n  accounts: SetMigratorAllowlistAccounts,\n  allowlist: Address[],\n  programId: Address = INITIALIZER_PROGRAM_ID,\n): Instruction {\n  const { admin, config } = accounts;\n\n  const keys: (AccountMeta | AccountSignerMeta)[] = [\n    createAccountMeta(admin, AccountRole.WRITABLE_SIGNER),\n    { address: config, role: AccountRole.WRITABLE },\n  ];\n\n  const data = new Uint8Array(\n    getSetMigratorAllowlistInstructionDataEncoder().encode({ allowlist }),\n  );\n\n  return { programAddress: programId, accounts: keys, data };\n}\n","import type {\n  Address,\n  Instruction,\n  AccountMeta,\n  AccountSignerMeta,\n} from '@solana/kit';\nimport { AccountRole } from '@solana/kit';\nimport {\n  createAccountMeta,\n  type AddressOrTransactionSigner,\n} from '../../core/accounts.js';\nimport { INITIALIZER_PROGRAM_ID } from '../constants.js';\nimport { getSetHookAllowlistInstructionDataEncoder } from '../../generated/initializer/index.js';\n\ntype AddressOrSigner = AddressOrTransactionSigner;\n\nexport interface SetHookAllowlistAccounts {\n  admin: AddressOrSigner;\n  config: Address;\n}\n\nexport function createSetHookAllowlistInstruction(\n  accounts: SetHookAllowlistAccounts,\n  allowlist: Address[],\n  programId: Address = INITIALIZER_PROGRAM_ID,\n): Instruction {\n  const { admin, config } = accounts;\n\n  const keys: (AccountMeta | AccountSignerMeta)[] = [\n    createAccountMeta(admin, AccountRole.WRITABLE_SIGNER),\n    { address: config, role: AccountRole.WRITABLE },\n  ];\n\n  const data = new Uint8Array(\n    getSetHookAllowlistInstructionDataEncoder().encode({ allowlist }),\n  );\n\n  return { programAddress: programId, accounts: keys, data };\n}\n","import { address, type Address } from '@solana/kit';\n\n// Source of truth: programs/cpmm_migrator/src/lib.rs\nexport const CPMM_MIGRATOR_PROGRAM_ID: Address = address(\n  '7WMUTNC41eMCo6eGH5Sy2xbgE3AycvLbFPo95AU9CSUd',\n);\n\nexport const SEED_STATE = 'state';\nexport const SEED_MIGRATION_AUTHORITY = 'migration_authority';\n\n// Source of truth: programs/cpmm_migrator/src/constants.rs\nexport const MAX_RECIPIENTS = 2;\n\nexport const CPMM_MIGRATOR_INSTRUCTION_DISCRIMINATORS = {\n  // SHA256(\"global:create_spot_pool\")[0:8]\n  createSpotPool: new Uint8Array([\n    0x0d, 0x89, 0x10, 0x1a, 0x28, 0x24, 0x6e, 0x1a,\n  ]),\n  // SHA256(\"global:register_launch\")[0:8]\n  registerLaunch: new Uint8Array([\n    0x72, 0x72, 0x43, 0x17, 0x29, 0x46, 0x00, 0xe1,\n  ]),\n  // SHA256(\"global:migrate\")[0:8]\n  migrate: new Uint8Array([0x9b, 0xea, 0xe7, 0x92, 0xec, 0x9e, 0xa2, 0x1e]),\n} as const;\n\nexport const CPMM_MIGRATOR_ACCOUNT_DISCRIMINATORS = {\n  // SHA256(\"account:CpmmMigratorState\")[0:8]\n  CpmmMigratorState: new Uint8Array([\n    0xa9, 0x56, 0xff, 0xbb, 0x25, 0xf8, 0x0b, 0xb0,\n  ]),\n} as const;\n","import {\n  type Address,\n  type ProgramDerivedAddress,\n  getAddressCodec,\n  getProgramDerivedAddress,\n} from '@solana/kit';\nimport {\n  CPMM_MIGRATOR_PROGRAM_ID,\n  SEED_MIGRATION_AUTHORITY,\n  SEED_STATE,\n} from './constants.js';\n\nconst addressCodec = getAddressCodec();\nconst textEncoder = new TextEncoder();\n\nexport async function getCpmmMigratorStateAddress(\n  launch: Address,\n  programId: Address = CPMM_MIGRATOR_PROGRAM_ID,\n): Promise<ProgramDerivedAddress> {\n  return getProgramDerivedAddress({\n    programAddress: programId,\n    seeds: [textEncoder.encode(SEED_STATE), addressCodec.encode(launch)],\n  });\n}\n\nexport async function getCpmmMigrationAuthorityAddress(\n  programId: Address = CPMM_MIGRATOR_PROGRAM_ID,\n): Promise<ProgramDerivedAddress> {\n  return getProgramDerivedAddress({\n    programAddress: programId,\n    seeds: [textEncoder.encode(SEED_MIGRATION_AUTHORITY)],\n  });\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  assertAccountExists,\n  assertAccountsExist,\n  combineCodec,\n  decodeAccount,\n  fetchEncodedAccount,\n  fetchEncodedAccounts,\n  fixDecoderSize,\n  fixEncoderSize,\n  getAddressDecoder,\n  getAddressEncoder,\n  getBytesDecoder,\n  getBytesEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU128Decoder,\n  getU128Encoder,\n  getU64Decoder,\n  getU64Encoder,\n  getU8Decoder,\n  getU8Encoder,\n  transformEncoder,\n  type Account,\n  type Address,\n  type EncodedAccount,\n  type FetchAccountConfig,\n  type FetchAccountsConfig,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n  type MaybeAccount,\n  type MaybeEncodedAccount,\n  type ReadonlyUint8Array,\n} from '@solana/kit';\n\nexport const CLAIM_RECEIPT_DISCRIMINATOR = new Uint8Array([\n  223, 233, 11, 229, 124, 165, 207, 28,\n]);\n\nexport function getClaimReceiptDiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(\n    CLAIM_RECEIPT_DISCRIMINATOR,\n  );\n}\n\nexport type ClaimReceipt = {\n  discriminator: ReadonlyUint8Array;\n  /** The market this receipt belongs to */\n  market: Address;\n  /** The claimer's wallet */\n  claimer: Address;\n  /** Total winner tokens burned by this user */\n  burnedAmount: bigint;\n  /** Raw quote already paid to this receipt */\n  rewardDebt: bigint;\n  /** Bump seed for this PDA */\n  bump: number;\n  /** Reserved for future use */\n  reserved: ReadonlyUint8Array;\n};\n\nexport type ClaimReceiptArgs = {\n  /** The market this receipt belongs to */\n  market: Address;\n  /** The claimer's wallet */\n  claimer: Address;\n  /** Total winner tokens burned by this user */\n  burnedAmount: number | bigint;\n  /** Raw quote already paid to this receipt */\n  rewardDebt: number | bigint;\n  /** Bump seed for this PDA */\n  bump: number;\n  /** Reserved for future use */\n  reserved: ReadonlyUint8Array;\n};\n\n/** Gets the encoder for {@link ClaimReceiptArgs} account data. */\nexport function getClaimReceiptEncoder(): FixedSizeEncoder<ClaimReceiptArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['market', getAddressEncoder()],\n      ['claimer', getAddressEncoder()],\n      ['burnedAmount', getU64Encoder()],\n      ['rewardDebt', getU128Encoder()],\n      ['bump', getU8Encoder()],\n      ['reserved', fixEncoderSize(getBytesEncoder(), 7)],\n    ]),\n    (value) => ({ ...value, discriminator: CLAIM_RECEIPT_DISCRIMINATOR }),\n  );\n}\n\n/** Gets the decoder for {@link ClaimReceipt} account data. */\nexport function getClaimReceiptDecoder(): FixedSizeDecoder<ClaimReceipt> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['market', getAddressDecoder()],\n    ['claimer', getAddressDecoder()],\n    ['burnedAmount', getU64Decoder()],\n    ['rewardDebt', getU128Decoder()],\n    ['bump', getU8Decoder()],\n    ['reserved', fixDecoderSize(getBytesDecoder(), 7)],\n  ]);\n}\n\n/** Gets the codec for {@link ClaimReceipt} account data. */\nexport function getClaimReceiptCodec(): FixedSizeCodec<\n  ClaimReceiptArgs,\n  ClaimReceipt\n> {\n  return combineCodec(getClaimReceiptEncoder(), getClaimReceiptDecoder());\n}\n\nexport function decodeClaimReceipt<TAddress extends string = string>(\n  encodedAccount: EncodedAccount<TAddress>,\n): Account<ClaimReceipt, TAddress>;\nexport function decodeClaimReceipt<TAddress extends string = string>(\n  encodedAccount: MaybeEncodedAccount<TAddress>,\n): MaybeAccount<ClaimReceipt, TAddress>;\nexport function decodeClaimReceipt<TAddress extends string = string>(\n  encodedAccount: EncodedAccount<TAddress> | MaybeEncodedAccount<TAddress>,\n): Account<ClaimReceipt, TAddress> | MaybeAccount<ClaimReceipt, TAddress> {\n  return decodeAccount(\n    encodedAccount as MaybeEncodedAccount<TAddress>,\n    getClaimReceiptDecoder(),\n  );\n}\n\nexport async function fetchClaimReceipt<TAddress extends string = string>(\n  rpc: Parameters<typeof fetchEncodedAccount>[0],\n  address: Address<TAddress>,\n  config?: FetchAccountConfig,\n): Promise<Account<ClaimReceipt, TAddress>> {\n  const maybeAccount = await fetchMaybeClaimReceipt(rpc, address, config);\n  assertAccountExists(maybeAccount);\n  return maybeAccount;\n}\n\nexport async function fetchMaybeClaimReceipt<TAddress extends string = string>(\n  rpc: Parameters<typeof fetchEncodedAccount>[0],\n  address: Address<TAddress>,\n  config?: FetchAccountConfig,\n): Promise<MaybeAccount<ClaimReceipt, TAddress>> {\n  const maybeAccount = await fetchEncodedAccount(rpc, address, config);\n  return decodeClaimReceipt(maybeAccount);\n}\n\nexport async function fetchAllClaimReceipt(\n  rpc: Parameters<typeof fetchEncodedAccounts>[0],\n  addresses: Array<Address>,\n  config?: FetchAccountsConfig,\n): Promise<Account<ClaimReceipt>[]> {\n  const maybeAccounts = await fetchAllMaybeClaimReceipt(rpc, addresses, config);\n  assertAccountsExist(maybeAccounts);\n  return maybeAccounts;\n}\n\nexport async function fetchAllMaybeClaimReceipt(\n  rpc: Parameters<typeof fetchEncodedAccounts>[0],\n  addresses: Array<Address>,\n  config?: FetchAccountsConfig,\n): Promise<MaybeAccount<ClaimReceipt>[]> {\n  const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config);\n  return maybeAccounts.map((maybeAccount) => decodeClaimReceipt(maybeAccount));\n}\n\nexport function getClaimReceiptSize(): number {\n  return 104;\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  assertAccountExists,\n  assertAccountsExist,\n  combineCodec,\n  decodeAccount,\n  fetchEncodedAccount,\n  fetchEncodedAccounts,\n  fixDecoderSize,\n  fixEncoderSize,\n  getAddressDecoder,\n  getAddressEncoder,\n  getBooleanDecoder,\n  getBooleanEncoder,\n  getBytesDecoder,\n  getBytesEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU64Decoder,\n  getU64Encoder,\n  getU8Decoder,\n  getU8Encoder,\n  transformEncoder,\n  type Account,\n  type Address,\n  type EncodedAccount,\n  type FetchAccountConfig,\n  type FetchAccountsConfig,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n  type MaybeAccount,\n  type MaybeEncodedAccount,\n  type ReadonlyUint8Array,\n} from '@solana/kit';\n\nexport const ENTRY_DISCRIMINATOR = new Uint8Array([\n  63, 18, 152, 113, 215, 246, 221, 250,\n]);\n\nexport function getEntryDiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(ENTRY_DISCRIMINATOR);\n}\n\nexport type Entry = {\n  discriminator: ReadonlyUint8Array;\n  /** The market this entry belongs to */\n  market: Address;\n  /** Unique identifier for this entry within the market */\n  entryId: ReadonlyUint8Array;\n  /** The token mint for this entry */\n  baseMint: Address;\n  /** Quote contributed when this entry was migrated */\n  contribution: bigint;\n  /** Whether this entry has been migrated */\n  isMigrated: boolean;\n  /** Bump seed for this PDA */\n  bump: number;\n  /** Reserved for future use */\n  reserved: ReadonlyUint8Array;\n};\n\nexport type EntryArgs = {\n  /** The market this entry belongs to */\n  market: Address;\n  /** Unique identifier for this entry within the market */\n  entryId: ReadonlyUint8Array;\n  /** The token mint for this entry */\n  baseMint: Address;\n  /** Quote contributed when this entry was migrated */\n  contribution: number | bigint;\n  /** Whether this entry has been migrated */\n  isMigrated: boolean;\n  /** Bump seed for this PDA */\n  bump: number;\n  /** Reserved for future use */\n  reserved: ReadonlyUint8Array;\n};\n\n/** Gets the encoder for {@link EntryArgs} account data. */\nexport function getEntryEncoder(): FixedSizeEncoder<EntryArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['market', getAddressEncoder()],\n      ['entryId', fixEncoderSize(getBytesEncoder(), 32)],\n      ['baseMint', getAddressEncoder()],\n      ['contribution', getU64Encoder()],\n      ['isMigrated', getBooleanEncoder()],\n      ['bump', getU8Encoder()],\n      ['reserved', fixEncoderSize(getBytesEncoder(), 14)],\n    ]),\n    (value) => ({ ...value, discriminator: ENTRY_DISCRIMINATOR }),\n  );\n}\n\n/** Gets the decoder for {@link Entry} account data. */\nexport function getEntryDecoder(): FixedSizeDecoder<Entry> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['market', getAddressDecoder()],\n    ['entryId', fixDecoderSize(getBytesDecoder(), 32)],\n    ['baseMint', getAddressDecoder()],\n    ['contribution', getU64Decoder()],\n    ['isMigrated', getBooleanDecoder()],\n    ['bump', getU8Decoder()],\n    ['reserved', fixDecoderSize(getBytesDecoder(), 14)],\n  ]);\n}\n\n/** Gets the codec for {@link Entry} account data. */\nexport function getEntryCodec(): FixedSizeCodec<EntryArgs, Entry> {\n  return combineCodec(getEntryEncoder(), getEntryDecoder());\n}\n\nexport function decodeEntry<TAddress extends string = string>(\n  encodedAccount: EncodedAccount<TAddress>,\n): Account<Entry, TAddress>;\nexport function decodeEntry<TAddress extends string = string>(\n  encodedAccount: MaybeEncodedAccount<TAddress>,\n): MaybeAccount<Entry, TAddress>;\nexport function decodeEntry<TAddress extends string = string>(\n  encodedAccount: EncodedAccount<TAddress> | MaybeEncodedAccount<TAddress>,\n): Account<Entry, TAddress> | MaybeAccount<Entry, TAddress> {\n  return decodeAccount(\n    encodedAccount as MaybeEncodedAccount<TAddress>,\n    getEntryDecoder(),\n  );\n}\n\nexport async function fetchEntry<TAddress extends string = string>(\n  rpc: Parameters<typeof fetchEncodedAccount>[0],\n  address: Address<TAddress>,\n  config?: FetchAccountConfig,\n): Promise<Account<Entry, TAddress>> {\n  const maybeAccount = await fetchMaybeEntry(rpc, address, config);\n  assertAccountExists(maybeAccount);\n  return maybeAccount;\n}\n\nexport async function fetchMaybeEntry<TAddress extends string = string>(\n  rpc: Parameters<typeof fetchEncodedAccount>[0],\n  address: Address<TAddress>,\n  config?: FetchAccountConfig,\n): Promise<MaybeAccount<Entry, TAddress>> {\n  const maybeAccount = await fetchEncodedAccount(rpc, address, config);\n  return decodeEntry(maybeAccount);\n}\n\nexport async function fetchAllEntry(\n  rpc: Parameters<typeof fetchEncodedAccounts>[0],\n  addresses: Array<Address>,\n  config?: FetchAccountsConfig,\n): Promise<Account<Entry>[]> {\n  const maybeAccounts = await fetchAllMaybeEntry(rpc, addresses, config);\n  assertAccountsExist(maybeAccounts);\n  return maybeAccounts;\n}\n\nexport async function fetchAllMaybeEntry(\n  rpc: Parameters<typeof fetchEncodedAccounts>[0],\n  addresses: Array<Address>,\n  config?: FetchAccountsConfig,\n): Promise<MaybeAccount<Entry>[]> {\n  const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config);\n  return maybeAccounts.map((maybeAccount) => decodeEntry(maybeAccount));\n}\n\nexport function getEntrySize(): number {\n  return 128;\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  assertAccountExists,\n  assertAccountsExist,\n  combineCodec,\n  decodeAccount,\n  fetchEncodedAccount,\n  fetchEncodedAccounts,\n  fixDecoderSize,\n  fixEncoderSize,\n  getAddressDecoder,\n  getAddressEncoder,\n  getBytesDecoder,\n  getBytesEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU8Decoder,\n  getU8Encoder,\n  transformEncoder,\n  type Account,\n  type Address,\n  type EncodedAccount,\n  type FetchAccountConfig,\n  type FetchAccountsConfig,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n  type MaybeAccount,\n  type MaybeEncodedAccount,\n  type ReadonlyUint8Array,\n} from '@solana/kit';\n\nexport const ENTRY_BY_MINT_DISCRIMINATOR = new Uint8Array([\n  188, 191, 157, 194, 68, 82, 181, 126,\n]);\n\nexport function getEntryByMintDiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(\n    ENTRY_BY_MINT_DISCRIMINATOR,\n  );\n}\n\nexport type EntryByMint = {\n  discriminator: ReadonlyUint8Array;\n  /** The market this entry belongs to */\n  market: Address;\n  /** The base mint */\n  baseMint: Address;\n  /** The entry_id for reverse lookup */\n  entryId: ReadonlyUint8Array;\n  /** Bump seed for this PDA */\n  bump: number;\n  /** Reserved for future use */\n  reserved: ReadonlyUint8Array;\n};\n\nexport type EntryByMintArgs = {\n  /** The market this entry belongs to */\n  market: Address;\n  /** The base mint */\n  baseMint: Address;\n  /** The entry_id for reverse lookup */\n  entryId: ReadonlyUint8Array;\n  /** Bump seed for this PDA */\n  bump: number;\n  /** Reserved for future use */\n  reserved: ReadonlyUint8Array;\n};\n\n/** Gets the encoder for {@link EntryByMintArgs} account data. */\nexport function getEntryByMintEncoder(): FixedSizeEncoder<EntryByMintArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['market', getAddressEncoder()],\n      ['baseMint', getAddressEncoder()],\n      ['entryId', fixEncoderSize(getBytesEncoder(), 32)],\n      ['bump', getU8Encoder()],\n      ['reserved', fixEncoderSize(getBytesEncoder(), 7)],\n    ]),\n    (value) => ({ ...value, discriminator: ENTRY_BY_MINT_DISCRIMINATOR }),\n  );\n}\n\n/** Gets the decoder for {@link EntryByMint} account data. */\nexport function getEntryByMintDecoder(): FixedSizeDecoder<EntryByMint> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['market', getAddressDecoder()],\n    ['baseMint', getAddressDecoder()],\n    ['entryId', fixDecoderSize(getBytesDecoder(), 32)],\n    ['bump', getU8Decoder()],\n    ['reserved', fixDecoderSize(getBytesDecoder(), 7)],\n  ]);\n}\n\n/** Gets the codec for {@link EntryByMint} account data. */\nexport function getEntryByMintCodec(): FixedSizeCodec<\n  EntryByMintArgs,\n  EntryByMint\n> {\n  return combineCodec(getEntryByMintEncoder(), getEntryByMintDecoder());\n}\n\nexport function decodeEntryByMint<TAddress extends string = string>(\n  encodedAccount: EncodedAccount<TAddress>,\n): Account<EntryByMint, TAddress>;\nexport function decodeEntryByMint<TAddress extends string = string>(\n  encodedAccount: MaybeEncodedAccount<TAddress>,\n): MaybeAccount<EntryByMint, TAddress>;\nexport function decodeEntryByMint<TAddress extends string = string>(\n  encodedAccount: EncodedAccount<TAddress> | MaybeEncodedAccount<TAddress>,\n): Account<EntryByMint, TAddress> | MaybeAccount<EntryByMint, TAddress> {\n  return decodeAccount(\n    encodedAccount as MaybeEncodedAccount<TAddress>,\n    getEntryByMintDecoder(),\n  );\n}\n\nexport async function fetchEntryByMint<TAddress extends string = string>(\n  rpc: Parameters<typeof fetchEncodedAccount>[0],\n  address: Address<TAddress>,\n  config?: FetchAccountConfig,\n): Promise<Account<EntryByMint, TAddress>> {\n  const maybeAccount = await fetchMaybeEntryByMint(rpc, address, config);\n  assertAccountExists(maybeAccount);\n  return maybeAccount;\n}\n\nexport async function fetchMaybeEntryByMint<TAddress extends string = string>(\n  rpc: Parameters<typeof fetchEncodedAccount>[0],\n  address: Address<TAddress>,\n  config?: FetchAccountConfig,\n): Promise<MaybeAccount<EntryByMint, TAddress>> {\n  const maybeAccount = await fetchEncodedAccount(rpc, address, config);\n  return decodeEntryByMint(maybeAccount);\n}\n\nexport async function fetchAllEntryByMint(\n  rpc: Parameters<typeof fetchEncodedAccounts>[0],\n  addresses: Array<Address>,\n  config?: FetchAccountsConfig,\n): Promise<Account<EntryByMint>[]> {\n  const maybeAccounts = await fetchAllMaybeEntryByMint(rpc, addresses, config);\n  assertAccountsExist(maybeAccounts);\n  return maybeAccounts;\n}\n\nexport async function fetchAllMaybeEntryByMint(\n  rpc: Parameters<typeof fetchEncodedAccounts>[0],\n  addresses: Array<Address>,\n  config?: FetchAccountsConfig,\n): Promise<MaybeAccount<EntryByMint>[]> {\n  const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config);\n  return maybeAccounts.map((maybeAccount) => decodeEntryByMint(maybeAccount));\n}\n\nexport function getEntryByMintSize(): number {\n  return 112;\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  assertAccountExists,\n  assertAccountsExist,\n  combineCodec,\n  decodeAccount,\n  fetchEncodedAccount,\n  fetchEncodedAccounts,\n  fixDecoderSize,\n  fixEncoderSize,\n  getAddressDecoder,\n  getAddressEncoder,\n  getArrayDecoder,\n  getArrayEncoder,\n  getBytesDecoder,\n  getBytesEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU16Decoder,\n  getU16Encoder,\n  getU8Decoder,\n  getU8Encoder,\n  transformEncoder,\n  type Account,\n  type Address,\n  type EncodedAccount,\n  type FetchAccountConfig,\n  type FetchAccountsConfig,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n  type MaybeAccount,\n  type MaybeEncodedAccount,\n  type ReadonlyUint8Array,\n} from '@solana/kit';\n\nexport const INIT_CONFIG_DISCRIMINATOR = new Uint8Array([\n  97, 166, 35, 7, 20, 2, 164, 126,\n]);\n\nexport function getInitConfigDiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(INIT_CONFIG_DISCRIMINATOR);\n}\n\nexport type InitConfig = {\n  discriminator: ReadonlyUint8Array;\n  admin: Address;\n  migratorAllowlistLen: number;\n  migratorAllowlist: Array<Address>;\n  hookAllowlistLen: number;\n  hookAllowlist: Array<Address>;\n  bump: number;\n  version: number;\n  protocolFeeBps: number;\n  minSwapFeeBps: number;\n  maxSwapFeeBps: number;\n  reserved: ReadonlyUint8Array;\n};\n\nexport type InitConfigArgs = {\n  admin: Address;\n  migratorAllowlistLen: number;\n  migratorAllowlist: Array<Address>;\n  hookAllowlistLen: number;\n  hookAllowlist: Array<Address>;\n  bump: number;\n  version: number;\n  protocolFeeBps: number;\n  minSwapFeeBps: number;\n  maxSwapFeeBps: number;\n  reserved: ReadonlyUint8Array;\n};\n\n/** Gets the encoder for {@link InitConfigArgs} account data. */\nexport function getInitConfigEncoder(): FixedSizeEncoder<InitConfigArgs> {\n  return fixEncoderSize(\n    transformEncoder(\n      getStructEncoder([\n        ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n        ['admin', getAddressEncoder()],\n        ['migratorAllowlistLen', getU8Encoder()],\n        [\n          'migratorAllowlist',\n          getArrayEncoder(getAddressEncoder(), { size: 32 }),\n        ],\n        ['hookAllowlistLen', getU8Encoder()],\n        ['hookAllowlist', getArrayEncoder(getAddressEncoder(), { size: 32 })],\n        ['bump', getU8Encoder()],\n        ['version', getU8Encoder()],\n        ['protocolFeeBps', getU16Encoder()],\n        ['minSwapFeeBps', getU16Encoder()],\n        ['maxSwapFeeBps', getU16Encoder()],\n        ['reserved', fixEncoderSize(getBytesEncoder(), 24)],\n      ]),\n      (value) => ({ ...value, discriminator: INIT_CONFIG_DISCRIMINATOR }),\n    ),\n    2123,\n  );\n}\n\n/** Gets the decoder for {@link InitConfig} account data. */\nexport function getInitConfigDecoder(): FixedSizeDecoder<InitConfig> {\n  return fixDecoderSize(\n    getStructDecoder([\n      ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n      ['admin', getAddressDecoder()],\n      ['migratorAllowlistLen', getU8Decoder()],\n      ['migratorAllowlist', getArrayDecoder(getAddressDecoder(), { size: 32 })],\n      ['hookAllowlistLen', getU8Decoder()],\n      ['hookAllowlist', getArrayDecoder(getAddressDecoder(), { size: 32 })],\n      ['bump', getU8Decoder()],\n      ['version', getU8Decoder()],\n      ['protocolFeeBps', getU16Decoder()],\n      ['minSwapFeeBps', getU16Decoder()],\n      ['maxSwapFeeBps', getU16Decoder()],\n      ['reserved', fixDecoderSize(getBytesDecoder(), 24)],\n    ]),\n    2123,\n  );\n}\n\n/** Gets the codec for {@link InitConfig} account data. */\nexport function getInitConfigCodec(): FixedSizeCodec<\n  InitConfigArgs,\n  InitConfig\n> {\n  return combineCodec(getInitConfigEncoder(), getInitConfigDecoder());\n}\n\nexport function decodeInitConfig<TAddress extends string = string>(\n  encodedAccount: EncodedAccount<TAddress>,\n): Account<InitConfig, TAddress>;\nexport function decodeInitConfig<TAddress extends string = string>(\n  encodedAccount: MaybeEncodedAccount<TAddress>,\n): MaybeAccount<InitConfig, TAddress>;\nexport function decodeInitConfig<TAddress extends string = string>(\n  encodedAccount: EncodedAccount<TAddress> | MaybeEncodedAccount<TAddress>,\n): Account<InitConfig, TAddress> | MaybeAccount<InitConfig, TAddress> {\n  return decodeAccount(\n    encodedAccount as MaybeEncodedAccount<TAddress>,\n    getInitConfigDecoder(),\n  );\n}\n\nexport async function fetchInitConfig<TAddress extends string = string>(\n  rpc: Parameters<typeof fetchEncodedAccount>[0],\n  address: Address<TAddress>,\n  config?: FetchAccountConfig,\n): Promise<Account<InitConfig, TAddress>> {\n  const maybeAccount = await fetchMaybeInitConfig(rpc, address, config);\n  assertAccountExists(maybeAccount);\n  return maybeAccount;\n}\n\nexport async function fetchMaybeInitConfig<TAddress extends string = string>(\n  rpc: Parameters<typeof fetchEncodedAccount>[0],\n  address: Address<TAddress>,\n  config?: FetchAccountConfig,\n): Promise<MaybeAccount<InitConfig, TAddress>> {\n  const maybeAccount = await fetchEncodedAccount(rpc, address, config);\n  return decodeInitConfig(maybeAccount);\n}\n\nexport async function fetchAllInitConfig(\n  rpc: Parameters<typeof fetchEncodedAccounts>[0],\n  addresses: Array<Address>,\n  config?: FetchAccountsConfig,\n): Promise<Account<InitConfig>[]> {\n  const maybeAccounts = await fetchAllMaybeInitConfig(rpc, addresses, config);\n  assertAccountsExist(maybeAccounts);\n  return maybeAccounts;\n}\n\nexport async function fetchAllMaybeInitConfig(\n  rpc: Parameters<typeof fetchEncodedAccounts>[0],\n  addresses: Array<Address>,\n  config?: FetchAccountsConfig,\n): Promise<MaybeAccount<InitConfig>[]> {\n  const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config);\n  return maybeAccounts.map((maybeAccount) => decodeInitConfig(maybeAccount));\n}\n\nexport function getInitConfigSize(): number {\n  return 2123;\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getAddressDecoder,\n  getAddressEncoder,\n  getBooleanDecoder,\n  getBooleanEncoder,\n  getBytesDecoder,\n  getBytesEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU64Decoder,\n  getU64Encoder,\n  type Address,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n  type ReadonlyUint8Array,\n} from '@solana/kit';\n\nexport type EntryMigrated = {\n  market: Address;\n  oracle: Address;\n  entryId: ReadonlyUint8Array;\n  baseMint: Address;\n  contribution: bigint;\n  isWinner: boolean;\n};\n\nexport type EntryMigratedArgs = {\n  market: Address;\n  oracle: Address;\n  entryId: ReadonlyUint8Array;\n  baseMint: Address;\n  contribution: number | bigint;\n  isWinner: boolean;\n};\n\nexport function getEntryMigratedEncoder(): FixedSizeEncoder<EntryMigratedArgs> {\n  return getStructEncoder([\n    ['market', getAddressEncoder()],\n    ['oracle', getAddressEncoder()],\n    ['entryId', fixEncoderSize(getBytesEncoder(), 32)],\n    ['baseMint', getAddressEncoder()],\n    ['contribution', getU64Encoder()],\n    ['isWinner', getBooleanEncoder()],\n  ]);\n}\n\nexport function getEntryMigratedDecoder(): FixedSizeDecoder<EntryMigrated> {\n  return getStructDecoder([\n    ['market', getAddressDecoder()],\n    ['oracle', getAddressDecoder()],\n    ['entryId', fixDecoderSize(getBytesDecoder(), 32)],\n    ['baseMint', getAddressDecoder()],\n    ['contribution', getU64Decoder()],\n    ['isWinner', getBooleanDecoder()],\n  ]);\n}\n\nexport function getEntryMigratedCodec(): FixedSizeCodec<\n  EntryMigratedArgs,\n  EntryMigrated\n> {\n  return combineCodec(getEntryMigratedEncoder(), getEntryMigratedDecoder());\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getAddressDecoder,\n  getAddressEncoder,\n  getBytesDecoder,\n  getBytesEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  type Address,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n  type ReadonlyUint8Array,\n} from '@solana/kit';\n\nexport type EntryRegistered = {\n  market: Address;\n  oracle: Address;\n  entryId: ReadonlyUint8Array;\n  baseMint: Address;\n};\n\nexport type EntryRegisteredArgs = EntryRegistered;\n\nexport function getEntryRegisteredEncoder(): FixedSizeEncoder<EntryRegisteredArgs> {\n  return getStructEncoder([\n    ['market', getAddressEncoder()],\n    ['oracle', getAddressEncoder()],\n    ['entryId', fixEncoderSize(getBytesEncoder(), 32)],\n    ['baseMint', getAddressEncoder()],\n  ]);\n}\n\nexport function getEntryRegisteredDecoder(): FixedSizeDecoder<EntryRegistered> {\n  return getStructDecoder([\n    ['market', getAddressDecoder()],\n    ['oracle', getAddressDecoder()],\n    ['entryId', fixDecoderSize(getBytesDecoder(), 32)],\n    ['baseMint', getAddressDecoder()],\n  ]);\n}\n\nexport function getEntryRegisteredCodec(): FixedSizeCodec<\n  EntryRegisteredArgs,\n  EntryRegistered\n> {\n  return combineCodec(getEntryRegisteredEncoder(), getEntryRegisteredDecoder());\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  getAddressDecoder,\n  getAddressEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  type Address,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n} from '@solana/kit';\n\nexport type MarketCreated = {\n  market: Address;\n  oracle: Address;\n  quoteMint: Address;\n};\n\nexport type MarketCreatedArgs = MarketCreated;\n\nexport function getMarketCreatedEncoder(): FixedSizeEncoder<MarketCreatedArgs> {\n  return getStructEncoder([\n    ['market', getAddressEncoder()],\n    ['oracle', getAddressEncoder()],\n    ['quoteMint', getAddressEncoder()],\n  ]);\n}\n\nexport function getMarketCreatedDecoder(): FixedSizeDecoder<MarketCreated> {\n  return getStructDecoder([\n    ['market', getAddressDecoder()],\n    ['oracle', getAddressDecoder()],\n    ['quoteMint', getAddressDecoder()],\n  ]);\n}\n\nexport function getMarketCreatedCodec(): FixedSizeCodec<\n  MarketCreatedArgs,\n  MarketCreated\n> {\n  return combineCodec(getMarketCreatedEncoder(), getMarketCreatedDecoder());\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  getAddressDecoder,\n  getAddressEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU64Decoder,\n  getU64Encoder,\n  type Address,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n} from '@solana/kit';\n\nexport type MarketResolved = {\n  market: Address;\n  oracle: Address;\n  winnerMint: Address;\n  claimableSupply: bigint;\n  totalPot: bigint;\n};\n\nexport type MarketResolvedArgs = {\n  market: Address;\n  oracle: Address;\n  winnerMint: Address;\n  claimableSupply: number | bigint;\n  totalPot: number | bigint;\n};\n\nexport function getMarketResolvedEncoder(): FixedSizeEncoder<MarketResolvedArgs> {\n  return getStructEncoder([\n    ['market', getAddressEncoder()],\n    ['oracle', getAddressEncoder()],\n    ['winnerMint', getAddressEncoder()],\n    ['claimableSupply', getU64Encoder()],\n    ['totalPot', getU64Encoder()],\n  ]);\n}\n\nexport function getMarketResolvedDecoder(): FixedSizeDecoder<MarketResolved> {\n  return getStructDecoder([\n    ['market', getAddressDecoder()],\n    ['oracle', getAddressDecoder()],\n    ['winnerMint', getAddressDecoder()],\n    ['claimableSupply', getU64Decoder()],\n    ['totalPot', getU64Decoder()],\n  ]);\n}\n\nexport function getMarketResolvedCodec(): FixedSizeCodec<\n  MarketResolvedArgs,\n  MarketResolved\n> {\n  return combineCodec(getMarketResolvedEncoder(), getMarketResolvedDecoder());\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getBytesDecoder,\n  getBytesEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n  type ReadonlyUint8Array,\n} from '@solana/kit';\n\n/**\n * Arguments for migrate_entry instruction.\n * This is decoded from migrator_migrate_payload passed by initializer.\n */\nexport type MigrateEntryArgs = { entryId: ReadonlyUint8Array };\n\nexport type MigrateEntryArgsArgs = MigrateEntryArgs;\n\nexport function getMigrateEntryArgsEncoder(): FixedSizeEncoder<MigrateEntryArgsArgs> {\n  return getStructEncoder([['entryId', fixEncoderSize(getBytesEncoder(), 32)]]);\n}\n\nexport function getMigrateEntryArgsDecoder(): FixedSizeDecoder<MigrateEntryArgs> {\n  return getStructDecoder([['entryId', fixDecoderSize(getBytesDecoder(), 32)]]);\n}\n\nexport function getMigrateEntryArgsCodec(): FixedSizeCodec<\n  MigrateEntryArgsArgs,\n  MigrateEntryArgs\n> {\n  return combineCodec(\n    getMigrateEntryArgsEncoder(),\n    getMigrateEntryArgsDecoder(),\n  );\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getBytesDecoder,\n  getBytesEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU16Decoder,\n  getU16Encoder,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n  type ReadonlyUint8Array,\n} from '@solana/kit';\n\n/** Variable-length payload buffer. */\nexport type PayloadBuf = { len: number; bytes: ReadonlyUint8Array };\n\nexport type PayloadBufArgs = PayloadBuf;\n\nexport function getPayloadBufEncoder(): FixedSizeEncoder<PayloadBufArgs> {\n  return getStructEncoder([\n    ['len', getU16Encoder()],\n    ['bytes', fixEncoderSize(getBytesEncoder(), 256)],\n  ]);\n}\n\nexport function getPayloadBufDecoder(): FixedSizeDecoder<PayloadBuf> {\n  return getStructDecoder([\n    ['len', getU16Decoder()],\n    ['bytes', fixDecoderSize(getBytesDecoder(), 256)],\n  ]);\n}\n\nexport function getPayloadBufCodec(): FixedSizeCodec<\n  PayloadBufArgs,\n  PayloadBuf\n> {\n  return combineCodec(getPayloadBufEncoder(), getPayloadBufDecoder());\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  getAddressDecoder,\n  getAddressEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU64Decoder,\n  getU64Encoder,\n  type Address,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n} from '@solana/kit';\n\nexport type PreviewPayoutIfWinnerArgs = {\n  candidateWinnerMint: Address;\n  tokenAmount: bigint;\n};\n\nexport type PreviewPayoutIfWinnerArgsArgs = {\n  candidateWinnerMint: Address;\n  tokenAmount: number | bigint;\n};\n\nexport function getPreviewPayoutIfWinnerArgsEncoder(): FixedSizeEncoder<PreviewPayoutIfWinnerArgsArgs> {\n  return getStructEncoder([\n    ['candidateWinnerMint', getAddressEncoder()],\n    ['tokenAmount', getU64Encoder()],\n  ]);\n}\n\nexport function getPreviewPayoutIfWinnerArgsDecoder(): FixedSizeDecoder<PreviewPayoutIfWinnerArgs> {\n  return getStructDecoder([\n    ['candidateWinnerMint', getAddressDecoder()],\n    ['tokenAmount', getU64Decoder()],\n  ]);\n}\n\nexport function getPreviewPayoutIfWinnerArgsCodec(): FixedSizeCodec<\n  PreviewPayoutIfWinnerArgsArgs,\n  PreviewPayoutIfWinnerArgs\n> {\n  return combineCodec(\n    getPreviewPayoutIfWinnerArgsEncoder(),\n    getPreviewPayoutIfWinnerArgsDecoder(),\n  );\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getBytesDecoder,\n  getBytesEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n  type ReadonlyUint8Array,\n} from '@solana/kit';\n\n/**\n * Arguments for register_entry instruction.\n * This is decoded from migrator_init_payload passed by initializer.\n */\nexport type RegisterEntryArgs = { entryId: ReadonlyUint8Array };\n\nexport type RegisterEntryArgsArgs = RegisterEntryArgs;\n\nexport function getRegisterEntryArgsEncoder(): FixedSizeEncoder<RegisterEntryArgsArgs> {\n  return getStructEncoder([['entryId', fixEncoderSize(getBytesEncoder(), 32)]]);\n}\n\nexport function getRegisterEntryArgsDecoder(): FixedSizeDecoder<RegisterEntryArgs> {\n  return getStructDecoder([['entryId', fixDecoderSize(getBytesDecoder(), 32)]]);\n}\n\nexport function getRegisterEntryArgsCodec(): FixedSizeCodec<\n  RegisterEntryArgsArgs,\n  RegisterEntryArgs\n> {\n  return combineCodec(\n    getRegisterEntryArgsEncoder(),\n    getRegisterEntryArgsDecoder(),\n  );\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  getAddressDecoder,\n  getAddressEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU64Decoder,\n  getU64Encoder,\n  type Address,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n} from '@solana/kit';\n\nexport type RewardsClaimed = {\n  market: Address;\n  claimer: Address;\n  burnedAmount: bigint;\n  rewardAmount: bigint;\n  totalBurned: bigint;\n};\n\nexport type RewardsClaimedArgs = {\n  market: Address;\n  claimer: Address;\n  burnedAmount: number | bigint;\n  rewardAmount: number | bigint;\n  totalBurned: number | bigint;\n};\n\nexport function getRewardsClaimedEncoder(): FixedSizeEncoder<RewardsClaimedArgs> {\n  return getStructEncoder([\n    ['market', getAddressEncoder()],\n    ['claimer', getAddressEncoder()],\n    ['burnedAmount', getU64Encoder()],\n    ['rewardAmount', getU64Encoder()],\n    ['totalBurned', getU64Encoder()],\n  ]);\n}\n\nexport function getRewardsClaimedDecoder(): FixedSizeDecoder<RewardsClaimed> {\n  return getStructDecoder([\n    ['market', getAddressDecoder()],\n    ['claimer', getAddressDecoder()],\n    ['burnedAmount', getU64Decoder()],\n    ['rewardAmount', getU64Decoder()],\n    ['totalBurned', getU64Decoder()],\n  ]);\n}\n\nexport function getRewardsClaimedCodec(): FixedSizeCodec<\n  RewardsClaimedArgs,\n  RewardsClaimed\n> {\n  return combineCodec(getRewardsClaimedEncoder(), getRewardsClaimedDecoder());\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  assertAccountExists,\n  assertAccountsExist,\n  combineCodec,\n  decodeAccount,\n  fetchEncodedAccount,\n  fetchEncodedAccounts,\n  fixDecoderSize,\n  fixEncoderSize,\n  getAddressDecoder,\n  getAddressEncoder,\n  getBytesDecoder,\n  getBytesEncoder,\n  getI64Decoder,\n  getI64Encoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU16Decoder,\n  getU16Encoder,\n  getU32Decoder,\n  getU32Encoder,\n  getU64Decoder,\n  getU64Encoder,\n  getU8Decoder,\n  getU8Encoder,\n  transformEncoder,\n  type Account,\n  type Address,\n  type EncodedAccount,\n  type FetchAccountConfig,\n  type FetchAccountsConfig,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n  type MaybeAccount,\n  type MaybeEncodedAccount,\n  type ReadonlyUint8Array,\n} from '@solana/kit';\nimport {\n  getPayloadBufDecoder,\n  getPayloadBufEncoder,\n  type PayloadBuf,\n  type PayloadBufArgs,\n} from '../types';\n\nexport const LAUNCH_DISCRIMINATOR = new Uint8Array([\n  144, 51, 51, 163, 206, 85, 213, 38,\n]);\n\nexport function getLaunchDiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(LAUNCH_DISCRIMINATOR);\n}\n\nexport type Launch = {\n  discriminator: ReadonlyUint8Array;\n  authority: Address;\n  namespace: Address;\n  launchId: ReadonlyUint8Array;\n  phase: number;\n  bump: number;\n  launchAuthorityBump: number;\n  pad0: ReadonlyUint8Array;\n  baseMint: Address;\n  quoteMint: Address;\n  baseVault: Address;\n  quoteVault: Address;\n  baseTotalSupply: bigint;\n  baseForDistribution: bigint;\n  baseForLiquidity: bigint;\n  baseForCurve: bigint;\n  curveVirtualBase: bigint;\n  curveVirtualQuote: bigint;\n  swapFeeBps: number;\n  pad1: ReadonlyUint8Array;\n  allowBuy: number;\n  allowSell: number;\n  pad2: ReadonlyUint8Array;\n  hookProgram: Address;\n  hookFlags: number;\n  pad3: ReadonlyUint8Array;\n  hookPayload: PayloadBuf;\n  migratorProgram: Address;\n  migratorInitPayload: PayloadBuf;\n  migratorMigratePayload: PayloadBuf;\n  curveKind: number;\n  swapLock: number;\n  vestingEnabled: number;\n  pad4: ReadonlyUint8Array;\n  curveParams: PayloadBuf;\n  createdAt: bigint;\n  reserved: ReadonlyUint8Array;\n};\n\nexport type LaunchArgs = {\n  authority: Address;\n  namespace: Address;\n  launchId: ReadonlyUint8Array;\n  phase: number;\n  bump: number;\n  launchAuthorityBump: number;\n  pad0: ReadonlyUint8Array;\n  baseMint: Address;\n  quoteMint: Address;\n  baseVault: Address;\n  quoteVault: Address;\n  baseTotalSupply: number | bigint;\n  baseForDistribution: number | bigint;\n  baseForLiquidity: number | bigint;\n  baseForCurve: number | bigint;\n  curveVirtualBase: number | bigint;\n  curveVirtualQuote: number | bigint;\n  swapFeeBps: number;\n  pad1: ReadonlyUint8Array;\n  allowBuy: number;\n  allowSell: number;\n  pad2: ReadonlyUint8Array;\n  hookProgram: Address;\n  hookFlags: number;\n  pad3: ReadonlyUint8Array;\n  hookPayload: PayloadBufArgs;\n  migratorProgram: Address;\n  migratorInitPayload: PayloadBufArgs;\n  migratorMigratePayload: PayloadBufArgs;\n  curveKind: number;\n  swapLock: number;\n  vestingEnabled: number;\n  pad4: ReadonlyUint8Array;\n  curveParams: PayloadBufArgs;\n  createdAt: number | bigint;\n  reserved: ReadonlyUint8Array;\n};\n\n/** Gets the encoder for {@link LaunchArgs} account data. */\nexport function getLaunchEncoder(): FixedSizeEncoder<LaunchArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['authority', getAddressEncoder()],\n      ['namespace', getAddressEncoder()],\n      ['launchId', fixEncoderSize(getBytesEncoder(), 32)],\n      ['phase', getU8Encoder()],\n      ['bump', getU8Encoder()],\n      ['launchAuthorityBump', getU8Encoder()],\n      ['pad0', fixEncoderSize(getBytesEncoder(), 5)],\n      ['baseMint', getAddressEncoder()],\n      ['quoteMint', getAddressEncoder()],\n      ['baseVault', getAddressEncoder()],\n      ['quoteVault', getAddressEncoder()],\n      ['baseTotalSupply', getU64Encoder()],\n      ['baseForDistribution', getU64Encoder()],\n      ['baseForLiquidity', getU64Encoder()],\n      ['baseForCurve', getU64Encoder()],\n      ['curveVirtualBase', getU64Encoder()],\n      ['curveVirtualQuote', getU64Encoder()],\n      ['swapFeeBps', getU16Encoder()],\n      ['pad1', fixEncoderSize(getBytesEncoder(), 6)],\n      ['allowBuy', getU8Encoder()],\n      ['allowSell', getU8Encoder()],\n      ['pad2', fixEncoderSize(getBytesEncoder(), 6)],\n      ['hookProgram', getAddressEncoder()],\n      ['hookFlags', getU32Encoder()],\n      ['pad3', fixEncoderSize(getBytesEncoder(), 4)],\n      ['hookPayload', getPayloadBufEncoder()],\n      ['migratorProgram', getAddressEncoder()],\n      ['migratorInitPayload', getPayloadBufEncoder()],\n      ['migratorMigratePayload', getPayloadBufEncoder()],\n      ['curveKind', getU8Encoder()],\n      ['swapLock', getU8Encoder()],\n      ['vestingEnabled', getU8Encoder()],\n      ['pad4', fixEncoderSize(getBytesEncoder(), 5)],\n      ['curveParams', getPayloadBufEncoder()],\n      ['createdAt', getI64Encoder()],\n      ['reserved', fixEncoderSize(getBytesEncoder(), 64)],\n    ]),\n    (value) => ({ ...value, discriminator: LAUNCH_DISCRIMINATOR }),\n  );\n}\n\n/** Gets the decoder for {@link Launch} account data. */\nexport function getLaunchDecoder(): FixedSizeDecoder<Launch> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['authority', getAddressDecoder()],\n    ['namespace', getAddressDecoder()],\n    ['launchId', fixDecoderSize(getBytesDecoder(), 32)],\n    ['phase', getU8Decoder()],\n    ['bump', getU8Decoder()],\n    ['launchAuthorityBump', getU8Decoder()],\n    ['pad0', fixDecoderSize(getBytesDecoder(), 5)],\n    ['baseMint', getAddressDecoder()],\n    ['quoteMint', getAddressDecoder()],\n    ['baseVault', getAddressDecoder()],\n    ['quoteVault', getAddressDecoder()],\n    ['baseTotalSupply', getU64Decoder()],\n    ['baseForDistribution', getU64Decoder()],\n    ['baseForLiquidity', getU64Decoder()],\n    ['baseForCurve', getU64Decoder()],\n    ['curveVirtualBase', getU64Decoder()],\n    ['curveVirtualQuote', getU64Decoder()],\n    ['swapFeeBps', getU16Decoder()],\n    ['pad1', fixDecoderSize(getBytesDecoder(), 6)],\n    ['allowBuy', getU8Decoder()],\n    ['allowSell', getU8Decoder()],\n    ['pad2', fixDecoderSize(getBytesDecoder(), 6)],\n    ['hookProgram', getAddressDecoder()],\n    ['hookFlags', getU32Decoder()],\n    ['pad3', fixDecoderSize(getBytesDecoder(), 4)],\n    ['hookPayload', getPayloadBufDecoder()],\n    ['migratorProgram', getAddressDecoder()],\n    ['migratorInitPayload', getPayloadBufDecoder()],\n    ['migratorMigratePayload', getPayloadBufDecoder()],\n    ['curveKind', getU8Decoder()],\n    ['swapLock', getU8Decoder()],\n    ['vestingEnabled', getU8Decoder()],\n    ['pad4', fixDecoderSize(getBytesDecoder(), 5)],\n    ['curveParams', getPayloadBufDecoder()],\n    ['createdAt', getI64Decoder()],\n    ['reserved', fixDecoderSize(getBytesDecoder(), 64)],\n  ]);\n}\n\n/** Gets the codec for {@link Launch} account data. */\nexport function getLaunchCodec(): FixedSizeCodec<LaunchArgs, Launch> {\n  return combineCodec(getLaunchEncoder(), getLaunchDecoder());\n}\n\nexport function decodeLaunch<TAddress extends string = string>(\n  encodedAccount: EncodedAccount<TAddress>,\n): Account<Launch, TAddress>;\nexport function decodeLaunch<TAddress extends string = string>(\n  encodedAccount: MaybeEncodedAccount<TAddress>,\n): MaybeAccount<Launch, TAddress>;\nexport function decodeLaunch<TAddress extends string = string>(\n  encodedAccount: EncodedAccount<TAddress> | MaybeEncodedAccount<TAddress>,\n): Account<Launch, TAddress> | MaybeAccount<Launch, TAddress> {\n  return decodeAccount(\n    encodedAccount as MaybeEncodedAccount<TAddress>,\n    getLaunchDecoder(),\n  );\n}\n\nexport async function fetchLaunch<TAddress extends string = string>(\n  rpc: Parameters<typeof fetchEncodedAccount>[0],\n  address: Address<TAddress>,\n  config?: FetchAccountConfig,\n): Promise<Account<Launch, TAddress>> {\n  const maybeAccount = await fetchMaybeLaunch(rpc, address, config);\n  assertAccountExists(maybeAccount);\n  return maybeAccount;\n}\n\nexport async function fetchMaybeLaunch<TAddress extends string = string>(\n  rpc: Parameters<typeof fetchEncodedAccount>[0],\n  address: Address<TAddress>,\n  config?: FetchAccountConfig,\n): Promise<MaybeAccount<Launch, TAddress>> {\n  const maybeAccount = await fetchEncodedAccount(rpc, address, config);\n  return decodeLaunch(maybeAccount);\n}\n\nexport async function fetchAllLaunch(\n  rpc: Parameters<typeof fetchEncodedAccounts>[0],\n  addresses: Array<Address>,\n  config?: FetchAccountsConfig,\n): Promise<Account<Launch>[]> {\n  const maybeAccounts = await fetchAllMaybeLaunch(rpc, addresses, config);\n  assertAccountsExist(maybeAccounts);\n  return maybeAccounts;\n}\n\nexport async function fetchAllMaybeLaunch(\n  rpc: Parameters<typeof fetchEncodedAccounts>[0],\n  addresses: Array<Address>,\n  config?: FetchAccountsConfig,\n): Promise<MaybeAccount<Launch>[]> {\n  const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config);\n  return maybeAccounts.map((maybeAccount) => decodeLaunch(maybeAccount));\n}\n\nexport function getLaunchSize(): number {\n  return 1488;\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  assertAccountExists,\n  assertAccountsExist,\n  combineCodec,\n  decodeAccount,\n  fetchEncodedAccount,\n  fetchEncodedAccounts,\n  fixDecoderSize,\n  fixEncoderSize,\n  getAddressDecoder,\n  getAddressEncoder,\n  getBooleanDecoder,\n  getBooleanEncoder,\n  getBytesDecoder,\n  getBytesEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU64Decoder,\n  getU64Encoder,\n  getU8Decoder,\n  getU8Encoder,\n  transformEncoder,\n  type Account,\n  type Address,\n  type EncodedAccount,\n  type FetchAccountConfig,\n  type FetchAccountsConfig,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n  type MaybeAccount,\n  type MaybeEncodedAccount,\n  type ReadonlyUint8Array,\n} from '@solana/kit';\n\nexport const MARKET_DISCRIMINATOR = new Uint8Array([\n  219, 190, 213, 55, 0, 227, 198, 154,\n]);\n\nexport function getMarketDiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(MARKET_DISCRIMINATOR);\n}\n\nexport type Market = {\n  discriminator: ReadonlyUint8Array;\n  /** The oracle that determines the winner */\n  oracle: Address;\n  /** Quote mint for this market (e.g., USDC) */\n  quoteMint: Address;\n  /** The pot vault holding quote tokens */\n  potVault: Address;\n  /** Total quote migrated into pot (cumulative) */\n  totalPot: bigint;\n  /** Total quote claimed/paid out (cumulative) */\n  totalClaimed: bigint;\n  /** Winner mint (set when market resolves) */\n  winnerMint: Address;\n  /** Claimable supply of winner token (fixed after winning entry migrates) */\n  claimableSupply: bigint;\n  /** Whether the market has been resolved (winner determined) */\n  isResolved: boolean;\n  /** Bump seed for this PDA */\n  bump: number;\n  /** Bump seed for market authority PDA */\n  marketAuthorityBump: number;\n  /** Reserved for future use */\n  reserved: ReadonlyUint8Array;\n};\n\nexport type MarketArgs = {\n  /** The oracle that determines the winner */\n  oracle: Address;\n  /** Quote mint for this market (e.g., USDC) */\n  quoteMint: Address;\n  /** The pot vault holding quote tokens */\n  potVault: Address;\n  /** Total quote migrated into pot (cumulative) */\n  totalPot: number | bigint;\n  /** Total quote claimed/paid out (cumulative) */\n  totalClaimed: number | bigint;\n  /** Winner mint (set when market resolves) */\n  winnerMint: Address;\n  /** Claimable supply of winner token (fixed after winning entry migrates) */\n  claimableSupply: number | bigint;\n  /** Whether the market has been resolved (winner determined) */\n  isResolved: boolean;\n  /** Bump seed for this PDA */\n  bump: number;\n  /** Bump seed for market authority PDA */\n  marketAuthorityBump: number;\n  /** Reserved for future use */\n  reserved: ReadonlyUint8Array;\n};\n\n/** Gets the encoder for {@link MarketArgs} account data. */\nexport function getMarketEncoder(): FixedSizeEncoder<MarketArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['oracle', getAddressEncoder()],\n      ['quoteMint', getAddressEncoder()],\n      ['potVault', getAddressEncoder()],\n      ['totalPot', getU64Encoder()],\n      ['totalClaimed', getU64Encoder()],\n      ['winnerMint', getAddressEncoder()],\n      ['claimableSupply', getU64Encoder()],\n      ['isResolved', getBooleanEncoder()],\n      ['bump', getU8Encoder()],\n      ['marketAuthorityBump', getU8Encoder()],\n      ['reserved', fixEncoderSize(getBytesEncoder(), 29)],\n    ]),\n    (value) => ({ ...value, discriminator: MARKET_DISCRIMINATOR }),\n  );\n}\n\n/** Gets the decoder for {@link Market} account data. */\nexport function getMarketDecoder(): FixedSizeDecoder<Market> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['oracle', getAddressDecoder()],\n    ['quoteMint', getAddressDecoder()],\n    ['potVault', getAddressDecoder()],\n    ['totalPot', getU64Decoder()],\n    ['totalClaimed', getU64Decoder()],\n    ['winnerMint', getAddressDecoder()],\n    ['claimableSupply', getU64Decoder()],\n    ['isResolved', getBooleanDecoder()],\n    ['bump', getU8Decoder()],\n    ['marketAuthorityBump', getU8Decoder()],\n    ['reserved', fixDecoderSize(getBytesDecoder(), 29)],\n  ]);\n}\n\n/** Gets the codec for {@link Market} account data. */\nexport function getMarketCodec(): FixedSizeCodec<MarketArgs, Market> {\n  return combineCodec(getMarketEncoder(), getMarketDecoder());\n}\n\nexport function decodeMarket<TAddress extends string = string>(\n  encodedAccount: EncodedAccount<TAddress>,\n): Account<Market, TAddress>;\nexport function decodeMarket<TAddress extends string = string>(\n  encodedAccount: MaybeEncodedAccount<TAddress>,\n): MaybeAccount<Market, TAddress>;\nexport function decodeMarket<TAddress extends string = string>(\n  encodedAccount: EncodedAccount<TAddress> | MaybeEncodedAccount<TAddress>,\n): Account<Market, TAddress> | MaybeAccount<Market, TAddress> {\n  return decodeAccount(\n    encodedAccount as MaybeEncodedAccount<TAddress>,\n    getMarketDecoder(),\n  );\n}\n\nexport async function fetchMarket<TAddress extends string = string>(\n  rpc: Parameters<typeof fetchEncodedAccount>[0],\n  address: Address<TAddress>,\n  config?: FetchAccountConfig,\n): Promise<Account<Market, TAddress>> {\n  const maybeAccount = await fetchMaybeMarket(rpc, address, config);\n  assertAccountExists(maybeAccount);\n  return maybeAccount;\n}\n\nexport async function fetchMaybeMarket<TAddress extends string = string>(\n  rpc: Parameters<typeof fetchEncodedAccount>[0],\n  address: Address<TAddress>,\n  config?: FetchAccountConfig,\n): Promise<MaybeAccount<Market, TAddress>> {\n  const maybeAccount = await fetchEncodedAccount(rpc, address, config);\n  return decodeMarket(maybeAccount);\n}\n\nexport async function fetchAllMarket(\n  rpc: Parameters<typeof fetchEncodedAccounts>[0],\n  addresses: Array<Address>,\n  config?: FetchAccountsConfig,\n): Promise<Account<Market>[]> {\n  const maybeAccounts = await fetchAllMaybeMarket(rpc, addresses, config);\n  assertAccountsExist(maybeAccounts);\n  return maybeAccounts;\n}\n\nexport async function fetchAllMaybeMarket(\n  rpc: Parameters<typeof fetchEncodedAccounts>[0],\n  addresses: Array<Address>,\n  config?: FetchAccountsConfig,\n): Promise<MaybeAccount<Market>[]> {\n  const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config);\n  return maybeAccounts.map((maybeAccount) => decodeMarket(maybeAccount));\n}\n\nexport function getMarketSize(): number {\n  return 192;\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  assertAccountExists,\n  assertAccountsExist,\n  combineCodec,\n  decodeAccount,\n  fetchEncodedAccount,\n  fetchEncodedAccounts,\n  fixDecoderSize,\n  fixEncoderSize,\n  getAddressDecoder,\n  getAddressEncoder,\n  getBooleanDecoder,\n  getBooleanEncoder,\n  getBytesDecoder,\n  getBytesEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU64Decoder,\n  getU64Encoder,\n  getU8Decoder,\n  getU8Encoder,\n  transformEncoder,\n  type Account,\n  type Address,\n  type EncodedAccount,\n  type FetchAccountConfig,\n  type FetchAccountsConfig,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n  type MaybeAccount,\n  type MaybeEncodedAccount,\n  type ReadonlyUint8Array,\n} from '@solana/kit';\n\nexport const ORACLE_STATE_DISCRIMINATOR = new Uint8Array([\n  97, 156, 157, 189, 194, 73, 8, 15,\n]);\n\nexport function getOracleStateDiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(\n    ORACLE_STATE_DISCRIMINATOR,\n  );\n}\n\nexport type OracleState = {\n  discriminator: ReadonlyUint8Array;\n  /** The authority that can finalize this oracle. */\n  oracleAuthority: Address;\n  /** Optional quote mint for validation (Pubkey::default() if not used). */\n  quoteMint: Address;\n  /** Whether the oracle has been finalized with a winner. */\n  isFinalized: boolean;\n  /** The winning mint (only valid if is_finalized == true). */\n  winningMint: Address;\n  /** Nonce used in PDA derivation. */\n  nonce: bigint;\n  /** PDA bump seed. */\n  bump: number;\n  /** Reserved for future use. */\n  reserved: ReadonlyUint8Array;\n};\n\nexport type OracleStateArgs = {\n  /** The authority that can finalize this oracle. */\n  oracleAuthority: Address;\n  /** Optional quote mint for validation (Pubkey::default() if not used). */\n  quoteMint: Address;\n  /** Whether the oracle has been finalized with a winner. */\n  isFinalized: boolean;\n  /** The winning mint (only valid if is_finalized == true). */\n  winningMint: Address;\n  /** Nonce used in PDA derivation. */\n  nonce: number | bigint;\n  /** PDA bump seed. */\n  bump: number;\n  /** Reserved for future use. */\n  reserved: ReadonlyUint8Array;\n};\n\n/** Gets the encoder for {@link OracleStateArgs} account data. */\nexport function getOracleStateEncoder(): FixedSizeEncoder<OracleStateArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['oracleAuthority', getAddressEncoder()],\n      ['quoteMint', getAddressEncoder()],\n      ['isFinalized', getBooleanEncoder()],\n      ['winningMint', getAddressEncoder()],\n      ['nonce', getU64Encoder()],\n      ['bump', getU8Encoder()],\n      ['reserved', fixEncoderSize(getBytesEncoder(), 31)],\n    ]),\n    (value) => ({ ...value, discriminator: ORACLE_STATE_DISCRIMINATOR }),\n  );\n}\n\n/** Gets the decoder for {@link OracleState} account data. */\nexport function getOracleStateDecoder(): FixedSizeDecoder<OracleState> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['oracleAuthority', getAddressDecoder()],\n    ['quoteMint', getAddressDecoder()],\n    ['isFinalized', getBooleanDecoder()],\n    ['winningMint', getAddressDecoder()],\n    ['nonce', getU64Decoder()],\n    ['bump', getU8Decoder()],\n    ['reserved', fixDecoderSize(getBytesDecoder(), 31)],\n  ]);\n}\n\n/** Gets the codec for {@link OracleState} account data. */\nexport function getOracleStateCodec(): FixedSizeCodec<\n  OracleStateArgs,\n  OracleState\n> {\n  return combineCodec(getOracleStateEncoder(), getOracleStateDecoder());\n}\n\nexport function decodeOracleState<TAddress extends string = string>(\n  encodedAccount: EncodedAccount<TAddress>,\n): Account<OracleState, TAddress>;\nexport function decodeOracleState<TAddress extends string = string>(\n  encodedAccount: MaybeEncodedAccount<TAddress>,\n): MaybeAccount<OracleState, TAddress>;\nexport function decodeOracleState<TAddress extends string = string>(\n  encodedAccount: EncodedAccount<TAddress> | MaybeEncodedAccount<TAddress>,\n): Account<OracleState, TAddress> | MaybeAccount<OracleState, TAddress> {\n  return decodeAccount(\n    encodedAccount as MaybeEncodedAccount<TAddress>,\n    getOracleStateDecoder(),\n  );\n}\n\nexport async function fetchOracleState<TAddress extends string = string>(\n  rpc: Parameters<typeof fetchEncodedAccount>[0],\n  address: Address<TAddress>,\n  config?: FetchAccountConfig,\n): Promise<Account<OracleState, TAddress>> {\n  const maybeAccount = await fetchMaybeOracleState(rpc, address, config);\n  assertAccountExists(maybeAccount);\n  return maybeAccount;\n}\n\nexport async function fetchMaybeOracleState<TAddress extends string = string>(\n  rpc: Parameters<typeof fetchEncodedAccount>[0],\n  address: Address<TAddress>,\n  config?: FetchAccountConfig,\n): Promise<MaybeAccount<OracleState, TAddress>> {\n  const maybeAccount = await fetchEncodedAccount(rpc, address, config);\n  return decodeOracleState(maybeAccount);\n}\n\nexport async function fetchAllOracleState(\n  rpc: Parameters<typeof fetchEncodedAccounts>[0],\n  addresses: Array<Address>,\n  config?: FetchAccountsConfig,\n): Promise<Account<OracleState>[]> {\n  const maybeAccounts = await fetchAllMaybeOracleState(rpc, addresses, config);\n  assertAccountsExist(maybeAccounts);\n  return maybeAccounts;\n}\n\nexport async function fetchAllMaybeOracleState(\n  rpc: Parameters<typeof fetchEncodedAccounts>[0],\n  addresses: Array<Address>,\n  config?: FetchAccountsConfig,\n): Promise<MaybeAccount<OracleState>[]> {\n  const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config);\n  return maybeAccounts.map((maybeAccount) => decodeOracleState(maybeAccount));\n}\n\nexport function getOracleStateSize(): number {\n  return 145;\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getAddressEncoder,\n  getBytesDecoder,\n  getBytesEncoder,\n  getProgramDerivedAddress,\n  getStructDecoder,\n  getStructEncoder,\n  getU64Decoder,\n  getU64Encoder,\n  SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS,\n  SolanaError,\n  transformEncoder,\n  type AccountMeta,\n  type AccountSignerMeta,\n  type Address,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n  type Instruction,\n  type InstructionWithAccounts,\n  type InstructionWithData,\n  type ReadonlyAccount,\n  type ReadonlySignerAccount,\n  type ReadonlyUint8Array,\n  type TransactionSigner,\n  type WritableAccount,\n  type WritableSignerAccount,\n} from '@solana/kit';\nimport {\n  getAccountMetaFactory,\n  getAddressFromResolvedInstructionAccount,\n  type ResolvedInstructionAccount,\n} from '@solana/program-client-core';\nimport { PREDICTION_MIGRATOR_PROGRAM_ADDRESS } from '../programs';\n\nexport const CLAIM_DISCRIMINATOR = new Uint8Array([\n  62, 198, 214, 193, 213, 159, 108, 210,\n]);\n\nexport function getClaimDiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(CLAIM_DISCRIMINATOR);\n}\n\nexport type ClaimInstruction<\n  TProgram extends string = typeof PREDICTION_MIGRATOR_PROGRAM_ADDRESS,\n  TAccountMarket extends string | AccountMeta<string> = string,\n  TAccountMarketAuthority extends string | AccountMeta<string> = string,\n  TAccountPotVault extends string | AccountMeta<string> = string,\n  TAccountWinnerMint extends string | AccountMeta<string> = string,\n  TAccountQuoteMint extends string | AccountMeta<string> = string,\n  TAccountEntryByMint extends string | AccountMeta<string> = string,\n  TAccountClaimerWinnerAta extends string | AccountMeta<string> = string,\n  TAccountClaimerQuoteAta extends string | AccountMeta<string> = string,\n  TAccountClaimer extends string | AccountMeta<string> = string,\n  TAccountReceipt extends string | AccountMeta<string> = string,\n  TAccountPayer extends string | AccountMeta<string> = string,\n  TAccountBaseTokenProgram extends string | AccountMeta<string> = string,\n  TAccountQuoteTokenProgram extends string | AccountMeta<string> = string,\n  TAccountSystemProgram extends string | AccountMeta<string> =\n    '11111111111111111111111111111111',\n  TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n  InstructionWithData<ReadonlyUint8Array> &\n  InstructionWithAccounts<\n    [\n      TAccountMarket extends string\n        ? WritableAccount<TAccountMarket>\n        : TAccountMarket,\n      TAccountMarketAuthority extends string\n        ? ReadonlyAccount<TAccountMarketAuthority>\n        : TAccountMarketAuthority,\n      TAccountPotVault extends string\n        ? WritableAccount<TAccountPotVault>\n        : TAccountPotVault,\n      TAccountWinnerMint extends string\n        ? WritableAccount<TAccountWinnerMint>\n        : TAccountWinnerMint,\n      TAccountQuoteMint extends string\n        ? ReadonlyAccount<TAccountQuoteMint>\n        : TAccountQuoteMint,\n      TAccountEntryByMint extends string\n        ? ReadonlyAccount<TAccountEntryByMint>\n        : TAccountEntryByMint,\n      TAccountClaimerWinnerAta extends string\n        ? WritableAccount<TAccountClaimerWinnerAta>\n        : TAccountClaimerWinnerAta,\n      TAccountClaimerQuoteAta extends string\n        ? WritableAccount<TAccountClaimerQuoteAta>\n        : TAccountClaimerQuoteAta,\n      TAccountClaimer extends string\n        ? ReadonlySignerAccount<TAccountClaimer> &\n            AccountSignerMeta<TAccountClaimer>\n        : TAccountClaimer,\n      TAccountReceipt extends string\n        ? WritableAccount<TAccountReceipt>\n        : TAccountReceipt,\n      TAccountPayer extends string\n        ? WritableSignerAccount<TAccountPayer> &\n            AccountSignerMeta<TAccountPayer>\n        : TAccountPayer,\n      TAccountBaseTokenProgram extends string\n        ? ReadonlyAccount<TAccountBaseTokenProgram>\n        : TAccountBaseTokenProgram,\n      TAccountQuoteTokenProgram extends string\n        ? ReadonlyAccount<TAccountQuoteTokenProgram>\n        : TAccountQuoteTokenProgram,\n      TAccountSystemProgram extends string\n        ? ReadonlyAccount<TAccountSystemProgram>\n        : TAccountSystemProgram,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type ClaimInstructionData = {\n  discriminator: ReadonlyUint8Array;\n  burnAmount: bigint;\n};\n\nexport type ClaimInstructionDataArgs = { burnAmount: number | bigint };\n\nexport function getClaimInstructionDataEncoder(): FixedSizeEncoder<ClaimInstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['burnAmount', getU64Encoder()],\n    ]),\n    (value) => ({ ...value, discriminator: CLAIM_DISCRIMINATOR }),\n  );\n}\n\nexport function getClaimInstructionDataDecoder(): FixedSizeDecoder<ClaimInstructionData> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['burnAmount', getU64Decoder()],\n  ]);\n}\n\nexport function getClaimInstructionDataCodec(): FixedSizeCodec<\n  ClaimInstructionDataArgs,\n  ClaimInstructionData\n> {\n  return combineCodec(\n    getClaimInstructionDataEncoder(),\n    getClaimInstructionDataDecoder(),\n  );\n}\n\nexport type ClaimAsyncInput<\n  TAccountMarket extends string = string,\n  TAccountMarketAuthority extends string = string,\n  TAccountPotVault extends string = string,\n  TAccountWinnerMint extends string = string,\n  TAccountQuoteMint extends string = string,\n  TAccountEntryByMint extends string = string,\n  TAccountClaimerWinnerAta extends string = string,\n  TAccountClaimerQuoteAta extends string = string,\n  TAccountClaimer extends string = string,\n  TAccountReceipt extends string = string,\n  TAccountPayer extends string = string,\n  TAccountBaseTokenProgram extends string = string,\n  TAccountQuoteTokenProgram extends string = string,\n  TAccountSystemProgram extends string = string,\n> = {\n  /** Market PDA */\n  market: Address<TAccountMarket>;\n  marketAuthority?: Address<TAccountMarketAuthority>;\n  /** Pot vault holding quote tokens */\n  potVault: Address<TAccountPotVault>;\n  /** Winner mint (must match market.winner_mint) */\n  winnerMint: Address<TAccountWinnerMint>;\n  /** Quote mint used for reward payouts */\n  quoteMint: Address<TAccountQuoteMint>;\n  /** EntryByMint for validation that this mint belongs to this market */\n  entryByMint?: Address<TAccountEntryByMint>;\n  /** Claimer's winner token account (source for burn) */\n  claimerWinnerAta: Address<TAccountClaimerWinnerAta>;\n  /** Claimer's quote token account (destination for rewards) */\n  claimerQuoteAta: Address<TAccountClaimerQuoteAta>;\n  /** Claimer wallet (signer) */\n  claimer: TransactionSigner<TAccountClaimer>;\n  /** Claim receipt PDA (created if first claim) */\n  receipt?: Address<TAccountReceipt>;\n  /** Payer for receipt creation (can be same as claimer) */\n  payer: TransactionSigner<TAccountPayer>;\n  baseTokenProgram: Address<TAccountBaseTokenProgram>;\n  quoteTokenProgram: Address<TAccountQuoteTokenProgram>;\n  systemProgram?: Address<TAccountSystemProgram>;\n  burnAmount: ClaimInstructionDataArgs['burnAmount'];\n};\n\nexport async function getClaimInstructionAsync<\n  TAccountMarket extends string,\n  TAccountMarketAuthority extends string,\n  TAccountPotVault extends string,\n  TAccountWinnerMint extends string,\n  TAccountQuoteMint extends string,\n  TAccountEntryByMint extends string,\n  TAccountClaimerWinnerAta extends string,\n  TAccountClaimerQuoteAta extends string,\n  TAccountClaimer extends string,\n  TAccountReceipt extends string,\n  TAccountPayer extends string,\n  TAccountBaseTokenProgram extends string,\n  TAccountQuoteTokenProgram extends string,\n  TAccountSystemProgram extends string,\n  TProgramAddress extends Address = typeof PREDICTION_MIGRATOR_PROGRAM_ADDRESS,\n>(\n  input: ClaimAsyncInput<\n    TAccountMarket,\n    TAccountMarketAuthority,\n    TAccountPotVault,\n    TAccountWinnerMint,\n    TAccountQuoteMint,\n    TAccountEntryByMint,\n    TAccountClaimerWinnerAta,\n    TAccountClaimerQuoteAta,\n    TAccountClaimer,\n    TAccountReceipt,\n    TAccountPayer,\n    TAccountBaseTokenProgram,\n    TAccountQuoteTokenProgram,\n    TAccountSystemProgram\n  >,\n  config?: { programAddress?: TProgramAddress },\n): Promise<\n  ClaimInstruction<\n    TProgramAddress,\n    TAccountMarket,\n    TAccountMarketAuthority,\n    TAccountPotVault,\n    TAccountWinnerMint,\n    TAccountQuoteMint,\n    TAccountEntryByMint,\n    TAccountClaimerWinnerAta,\n    TAccountClaimerQuoteAta,\n    TAccountClaimer,\n    TAccountReceipt,\n    TAccountPayer,\n    TAccountBaseTokenProgram,\n    TAccountQuoteTokenProgram,\n    TAccountSystemProgram\n  >\n> {\n  // Program address.\n  const programAddress =\n    config?.programAddress ?? PREDICTION_MIGRATOR_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    market: { value: input.market ?? null, isWritable: true },\n    marketAuthority: {\n      value: input.marketAuthority ?? null,\n      isWritable: false,\n    },\n    potVault: { value: input.potVault ?? null, isWritable: true },\n    winnerMint: { value: input.winnerMint ?? null, isWritable: true },\n    quoteMint: { value: input.quoteMint ?? null, isWritable: false },\n    entryByMint: { value: input.entryByMint ?? null, isWritable: false },\n    claimerWinnerAta: {\n      value: input.claimerWinnerAta ?? null,\n      isWritable: true,\n    },\n    claimerQuoteAta: { value: input.claimerQuoteAta ?? null, isWritable: true },\n    claimer: { value: input.claimer ?? null, isWritable: false },\n    receipt: { value: input.receipt ?? null, isWritable: true },\n    payer: { value: input.payer ?? null, isWritable: true },\n    baseTokenProgram: {\n      value: input.baseTokenProgram ?? null,\n      isWritable: false,\n    },\n    quoteTokenProgram: {\n      value: input.quoteTokenProgram ?? null,\n      isWritable: false,\n    },\n    systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedInstructionAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolve default values.\n  if (!accounts.marketAuthority.value) {\n    accounts.marketAuthority.value = await getProgramDerivedAddress({\n      programAddress,\n      seeds: [\n        getBytesEncoder().encode(\n          new Uint8Array([\n            109, 97, 114, 107, 101, 116, 95, 97, 117, 116, 104, 111, 114, 105,\n            116, 121,\n          ]),\n        ),\n        getAddressEncoder().encode(\n          getAddressFromResolvedInstructionAccount(\n            'market',\n            accounts.market.value,\n          ),\n        ),\n      ],\n    });\n  }\n  if (!accounts.entryByMint.value) {\n    accounts.entryByMint.value = await getProgramDerivedAddress({\n      programAddress,\n      seeds: [\n        getBytesEncoder().encode(\n          new Uint8Array([\n            101, 110, 116, 114, 121, 95, 98, 121, 95, 109, 105, 110, 116,\n          ]),\n        ),\n        getAddressEncoder().encode(\n          getAddressFromResolvedInstructionAccount(\n            'market',\n            accounts.market.value,\n          ),\n        ),\n        getAddressEncoder().encode(\n          getAddressFromResolvedInstructionAccount(\n            'winnerMint',\n            accounts.winnerMint.value,\n          ),\n        ),\n      ],\n    });\n  }\n  if (!accounts.receipt.value) {\n    accounts.receipt.value = await getProgramDerivedAddress({\n      programAddress,\n      seeds: [\n        getBytesEncoder().encode(\n          new Uint8Array([114, 101, 99, 101, 105, 112, 116]),\n        ),\n        getAddressEncoder().encode(\n          getAddressFromResolvedInstructionAccount(\n            'market',\n            accounts.market.value,\n          ),\n        ),\n        getAddressEncoder().encode(\n          getAddressFromResolvedInstructionAccount(\n            'claimer',\n            accounts.claimer.value,\n          ),\n        ),\n      ],\n    });\n  }\n  if (!accounts.systemProgram.value) {\n    accounts.systemProgram.value =\n      '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n  }\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta('market', accounts.market),\n      getAccountMeta('marketAuthority', accounts.marketAuthority),\n      getAccountMeta('potVault', accounts.potVault),\n      getAccountMeta('winnerMint', accounts.winnerMint),\n      getAccountMeta('quoteMint', accounts.quoteMint),\n      getAccountMeta('entryByMint', accounts.entryByMint),\n      getAccountMeta('claimerWinnerAta', accounts.claimerWinnerAta),\n      getAccountMeta('claimerQuoteAta', accounts.claimerQuoteAta),\n      getAccountMeta('claimer', accounts.claimer),\n      getAccountMeta('receipt', accounts.receipt),\n      getAccountMeta('payer', accounts.payer),\n      getAccountMeta('baseTokenProgram', accounts.baseTokenProgram),\n      getAccountMeta('quoteTokenProgram', accounts.quoteTokenProgram),\n      getAccountMeta('systemProgram', accounts.systemProgram),\n    ],\n    data: getClaimInstructionDataEncoder().encode(\n      args as ClaimInstructionDataArgs,\n    ),\n    programAddress,\n  } as ClaimInstruction<\n    TProgramAddress,\n    TAccountMarket,\n    TAccountMarketAuthority,\n    TAccountPotVault,\n    TAccountWinnerMint,\n    TAccountQuoteMint,\n    TAccountEntryByMint,\n    TAccountClaimerWinnerAta,\n    TAccountClaimerQuoteAta,\n    TAccountClaimer,\n    TAccountReceipt,\n    TAccountPayer,\n    TAccountBaseTokenProgram,\n    TAccountQuoteTokenProgram,\n    TAccountSystemProgram\n  >);\n}\n\nexport type ClaimInput<\n  TAccountMarket extends string = string,\n  TAccountMarketAuthority extends string = string,\n  TAccountPotVault extends string = string,\n  TAccountWinnerMint extends string = string,\n  TAccountQuoteMint extends string = string,\n  TAccountEntryByMint extends string = string,\n  TAccountClaimerWinnerAta extends string = string,\n  TAccountClaimerQuoteAta extends string = string,\n  TAccountClaimer extends string = string,\n  TAccountReceipt extends string = string,\n  TAccountPayer extends string = string,\n  TAccountBaseTokenProgram extends string = string,\n  TAccountQuoteTokenProgram extends string = string,\n  TAccountSystemProgram extends string = string,\n> = {\n  /** Market PDA */\n  market: Address<TAccountMarket>;\n  marketAuthority: Address<TAccountMarketAuthority>;\n  /** Pot vault holding quote tokens */\n  potVault: Address<TAccountPotVault>;\n  /** Winner mint (must match market.winner_mint) */\n  winnerMint: Address<TAccountWinnerMint>;\n  /** Quote mint used for reward payouts */\n  quoteMint: Address<TAccountQuoteMint>;\n  /** EntryByMint for validation that this mint belongs to this market */\n  entryByMint: Address<TAccountEntryByMint>;\n  /** Claimer's winner token account (source for burn) */\n  claimerWinnerAta: Address<TAccountClaimerWinnerAta>;\n  /** Claimer's quote token account (destination for rewards) */\n  claimerQuoteAta: Address<TAccountClaimerQuoteAta>;\n  /** Claimer wallet (signer) */\n  claimer: TransactionSigner<TAccountClaimer>;\n  /** Claim receipt PDA (created if first claim) */\n  receipt: Address<TAccountReceipt>;\n  /** Payer for receipt creation (can be same as claimer) */\n  payer: TransactionSigner<TAccountPayer>;\n  baseTokenProgram: Address<TAccountBaseTokenProgram>;\n  quoteTokenProgram: Address<TAccountQuoteTokenProgram>;\n  systemProgram?: Address<TAccountSystemProgram>;\n  burnAmount: ClaimInstructionDataArgs['burnAmount'];\n};\n\nexport function getClaimInstruction<\n  TAccountMarket extends string,\n  TAccountMarketAuthority extends string,\n  TAccountPotVault extends string,\n  TAccountWinnerMint extends string,\n  TAccountQuoteMint extends string,\n  TAccountEntryByMint extends string,\n  TAccountClaimerWinnerAta extends string,\n  TAccountClaimerQuoteAta extends string,\n  TAccountClaimer extends string,\n  TAccountReceipt extends string,\n  TAccountPayer extends string,\n  TAccountBaseTokenProgram extends string,\n  TAccountQuoteTokenProgram extends string,\n  TAccountSystemProgram extends string,\n  TProgramAddress extends Address = typeof PREDICTION_MIGRATOR_PROGRAM_ADDRESS,\n>(\n  input: ClaimInput<\n    TAccountMarket,\n    TAccountMarketAuthority,\n    TAccountPotVault,\n    TAccountWinnerMint,\n    TAccountQuoteMint,\n    TAccountEntryByMint,\n    TAccountClaimerWinnerAta,\n    TAccountClaimerQuoteAta,\n    TAccountClaimer,\n    TAccountReceipt,\n    TAccountPayer,\n    TAccountBaseTokenProgram,\n    TAccountQuoteTokenProgram,\n    TAccountSystemProgram\n  >,\n  config?: { programAddress?: TProgramAddress },\n): ClaimInstruction<\n  TProgramAddress,\n  TAccountMarket,\n  TAccountMarketAuthority,\n  TAccountPotVault,\n  TAccountWinnerMint,\n  TAccountQuoteMint,\n  TAccountEntryByMint,\n  TAccountClaimerWinnerAta,\n  TAccountClaimerQuoteAta,\n  TAccountClaimer,\n  TAccountReceipt,\n  TAccountPayer,\n  TAccountBaseTokenProgram,\n  TAccountQuoteTokenProgram,\n  TAccountSystemProgram\n> {\n  // Program address.\n  const programAddress =\n    config?.programAddress ?? PREDICTION_MIGRATOR_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    market: { value: input.market ?? null, isWritable: true },\n    marketAuthority: {\n      value: input.marketAuthority ?? null,\n      isWritable: false,\n    },\n    potVault: { value: input.potVault ?? null, isWritable: true },\n    winnerMint: { value: input.winnerMint ?? null, isWritable: true },\n    quoteMint: { value: input.quoteMint ?? null, isWritable: false },\n    entryByMint: { value: input.entryByMint ?? null, isWritable: false },\n    claimerWinnerAta: {\n      value: input.claimerWinnerAta ?? null,\n      isWritable: true,\n    },\n    claimerQuoteAta: { value: input.claimerQuoteAta ?? null, isWritable: true },\n    claimer: { value: input.claimer ?? null, isWritable: false },\n    receipt: { value: input.receipt ?? null, isWritable: true },\n    payer: { value: input.payer ?? null, isWritable: true },\n    baseTokenProgram: {\n      value: input.baseTokenProgram ?? null,\n      isWritable: false,\n    },\n    quoteTokenProgram: {\n      value: input.quoteTokenProgram ?? null,\n      isWritable: false,\n    },\n    systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedInstructionAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolve default values.\n  if (!accounts.systemProgram.value) {\n    accounts.systemProgram.value =\n      '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n  }\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta('market', accounts.market),\n      getAccountMeta('marketAuthority', accounts.marketAuthority),\n      getAccountMeta('potVault', accounts.potVault),\n      getAccountMeta('winnerMint', accounts.winnerMint),\n      getAccountMeta('quoteMint', accounts.quoteMint),\n      getAccountMeta('entryByMint', accounts.entryByMint),\n      getAccountMeta('claimerWinnerAta', accounts.claimerWinnerAta),\n      getAccountMeta('claimerQuoteAta', accounts.claimerQuoteAta),\n      getAccountMeta('claimer', accounts.claimer),\n      getAccountMeta('receipt', accounts.receipt),\n      getAccountMeta('payer', accounts.payer),\n      getAccountMeta('baseTokenProgram', accounts.baseTokenProgram),\n      getAccountMeta('quoteTokenProgram', accounts.quoteTokenProgram),\n      getAccountMeta('systemProgram', accounts.systemProgram),\n    ],\n    data: getClaimInstructionDataEncoder().encode(\n      args as ClaimInstructionDataArgs,\n    ),\n    programAddress,\n  } as ClaimInstruction<\n    TProgramAddress,\n    TAccountMarket,\n    TAccountMarketAuthority,\n    TAccountPotVault,\n    TAccountWinnerMint,\n    TAccountQuoteMint,\n    TAccountEntryByMint,\n    TAccountClaimerWinnerAta,\n    TAccountClaimerQuoteAta,\n    TAccountClaimer,\n    TAccountReceipt,\n    TAccountPayer,\n    TAccountBaseTokenProgram,\n    TAccountQuoteTokenProgram,\n    TAccountSystemProgram\n  >);\n}\n\nexport type ParsedClaimInstruction<\n  TProgram extends string = typeof PREDICTION_MIGRATOR_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    /** Market PDA */\n    market: TAccountMetas[0];\n    marketAuthority: TAccountMetas[1];\n    /** Pot vault holding quote tokens */\n    potVault: TAccountMetas[2];\n    /** Winner mint (must match market.winner_mint) */\n    winnerMint: TAccountMetas[3];\n    /** Quote mint used for reward payouts */\n    quoteMint: TAccountMetas[4];\n    /** EntryByMint for validation that this mint belongs to this market */\n    entryByMint: TAccountMetas[5];\n    /** Claimer's winner token account (source for burn) */\n    claimerWinnerAta: TAccountMetas[6];\n    /** Claimer's quote token account (destination for rewards) */\n    claimerQuoteAta: TAccountMetas[7];\n    /** Claimer wallet (signer) */\n    claimer: TAccountMetas[8];\n    /** Claim receipt PDA (created if first claim) */\n    receipt: TAccountMetas[9];\n    /** Payer for receipt creation (can be same as claimer) */\n    payer: TAccountMetas[10];\n    baseTokenProgram: TAccountMetas[11];\n    quoteTokenProgram: TAccountMetas[12];\n    systemProgram: TAccountMetas[13];\n  };\n  data: ClaimInstructionData;\n};\n\nexport function parseClaimInstruction<\n  TProgram extends string,\n  TAccountMetas extends readonly AccountMeta[],\n>(\n  instruction: Instruction<TProgram> &\n    InstructionWithAccounts<TAccountMetas> &\n    InstructionWithData<ReadonlyUint8Array>,\n): ParsedClaimInstruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 14) {\n    throw new SolanaError(\n      SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS,\n      {\n        actualAccountMetas: instruction.accounts.length,\n        expectedAccountMetas: 14,\n      },\n    );\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: {\n      market: getNextAccount(),\n      marketAuthority: getNextAccount(),\n      potVault: getNextAccount(),\n      winnerMint: getNextAccount(),\n      quoteMint: getNextAccount(),\n      entryByMint: getNextAccount(),\n      claimerWinnerAta: getNextAccount(),\n      claimerQuoteAta: getNextAccount(),\n      claimer: getNextAccount(),\n      receipt: getNextAccount(),\n      payer: getNextAccount(),\n      baseTokenProgram: getNextAccount(),\n      quoteTokenProgram: getNextAccount(),\n      systemProgram: getNextAccount(),\n    },\n    data: getClaimInstructionDataDecoder().decode(instruction.data),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getAddressEncoder,\n  getBytesDecoder,\n  getBytesEncoder,\n  getProgramDerivedAddress,\n  getStructDecoder,\n  getStructEncoder,\n  SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS,\n  SolanaError,\n  transformEncoder,\n  type AccountMeta,\n  type AccountSignerMeta,\n  type Address,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n  type Instruction,\n  type InstructionWithAccounts,\n  type InstructionWithData,\n  type ReadonlyAccount,\n  type ReadonlySignerAccount,\n  type ReadonlyUint8Array,\n  type TransactionSigner,\n  type WritableAccount,\n  type WritableSignerAccount,\n} from '@solana/kit';\nimport {\n  getAccountMetaFactory,\n  getAddressFromResolvedInstructionAccount,\n  type ResolvedInstructionAccount,\n} from '@solana/program-client-core';\nimport { PREDICTION_MIGRATOR_PROGRAM_ADDRESS } from '../programs';\n\nexport const MIGRATE_ENTRY_DISCRIMINATOR = new Uint8Array([\n  239, 154, 55, 173, 110, 36, 188, 214,\n]);\n\nexport function getMigrateEntryDiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(\n    MIGRATE_ENTRY_DISCRIMINATOR,\n  );\n}\n\nexport type MigrateEntryInstruction<\n  TProgram extends string = typeof PREDICTION_MIGRATOR_PROGRAM_ADDRESS,\n  TAccountInitializerConfig extends string | AccountMeta<string> = string,\n  TAccountLaunch extends string | AccountMeta<string> = string,\n  TAccountLaunchAuthority extends string | AccountMeta<string> = string,\n  TAccountBaseMint extends string | AccountMeta<string> = string,\n  TAccountQuoteMint extends string | AccountMeta<string> = string,\n  TAccountBaseVault extends string | AccountMeta<string> = string,\n  TAccountQuoteVault extends string | AccountMeta<string> = string,\n  TAccountPayer extends string | AccountMeta<string> = string,\n  TAccountBaseTokenProgram extends string | AccountMeta<string> = string,\n  TAccountQuoteTokenProgram extends string | AccountMeta<string> = string,\n  TAccountSystemProgram extends string | AccountMeta<string> =\n    '11111111111111111111111111111111',\n  TAccountRent extends string | AccountMeta<string> =\n    'SysvarRent111111111111111111111111111111111',\n  TAccountOracle extends string | AccountMeta<string> = string,\n  TAccountMarket extends string | AccountMeta<string> = string,\n  TAccountPotVault extends string | AccountMeta<string> = string,\n  TAccountMarketAuthority extends string | AccountMeta<string> = string,\n  TAccountEntry extends string | AccountMeta<string> = string,\n  TAccountEntryByMint extends string | AccountMeta<string> = string,\n  TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n  InstructionWithData<ReadonlyUint8Array> &\n  InstructionWithAccounts<\n    [\n      TAccountInitializerConfig extends string\n        ? ReadonlyAccount<TAccountInitializerConfig>\n        : TAccountInitializerConfig,\n      TAccountLaunch extends string\n        ? ReadonlyAccount<TAccountLaunch>\n        : TAccountLaunch,\n      TAccountLaunchAuthority extends string\n        ? ReadonlySignerAccount<TAccountLaunchAuthority> &\n            AccountSignerMeta<TAccountLaunchAuthority>\n        : TAccountLaunchAuthority,\n      TAccountBaseMint extends string\n        ? WritableAccount<TAccountBaseMint>\n        : TAccountBaseMint,\n      TAccountQuoteMint extends string\n        ? ReadonlyAccount<TAccountQuoteMint>\n        : TAccountQuoteMint,\n      TAccountBaseVault extends string\n        ? WritableAccount<TAccountBaseVault>\n        : TAccountBaseVault,\n      TAccountQuoteVault extends string\n        ? WritableAccount<TAccountQuoteVault>\n        : TAccountQuoteVault,\n      TAccountPayer extends string\n        ? WritableSignerAccount<TAccountPayer> &\n            AccountSignerMeta<TAccountPayer>\n        : TAccountPayer,\n      TAccountBaseTokenProgram extends string\n        ? ReadonlyAccount<TAccountBaseTokenProgram>\n        : TAccountBaseTokenProgram,\n      TAccountQuoteTokenProgram extends string\n        ? ReadonlyAccount<TAccountQuoteTokenProgram>\n        : TAccountQuoteTokenProgram,\n      TAccountSystemProgram extends string\n        ? ReadonlyAccount<TAccountSystemProgram>\n        : TAccountSystemProgram,\n      TAccountRent extends string\n        ? ReadonlyAccount<TAccountRent>\n        : TAccountRent,\n      TAccountOracle extends string\n        ? ReadonlyAccount<TAccountOracle>\n        : TAccountOracle,\n      TAccountMarket extends string\n        ? WritableAccount<TAccountMarket>\n        : TAccountMarket,\n      TAccountPotVault extends string\n        ? WritableAccount<TAccountPotVault>\n        : TAccountPotVault,\n      TAccountMarketAuthority extends string\n        ? ReadonlyAccount<TAccountMarketAuthority>\n        : TAccountMarketAuthority,\n      TAccountEntry extends string\n        ? WritableAccount<TAccountEntry>\n        : TAccountEntry,\n      TAccountEntryByMint extends string\n        ? ReadonlyAccount<TAccountEntryByMint>\n        : TAccountEntryByMint,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type MigrateEntryInstructionData = {\n  discriminator: ReadonlyUint8Array;\n  entryId: ReadonlyUint8Array;\n};\n\nexport type MigrateEntryInstructionDataArgs = { entryId: ReadonlyUint8Array };\n\nexport function getMigrateEntryInstructionDataEncoder(): FixedSizeEncoder<MigrateEntryInstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['entryId', fixEncoderSize(getBytesEncoder(), 32)],\n    ]),\n    (value) => ({ ...value, discriminator: MIGRATE_ENTRY_DISCRIMINATOR }),\n  );\n}\n\nexport function getMigrateEntryInstructionDataDecoder(): FixedSizeDecoder<MigrateEntryInstructionData> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['entryId', fixDecoderSize(getBytesDecoder(), 32)],\n  ]);\n}\n\nexport function getMigrateEntryInstructionDataCodec(): FixedSizeCodec<\n  MigrateEntryInstructionDataArgs,\n  MigrateEntryInstructionData\n> {\n  return combineCodec(\n    getMigrateEntryInstructionDataEncoder(),\n    getMigrateEntryInstructionDataDecoder(),\n  );\n}\n\nexport type MigrateEntryAsyncInput<\n  TAccountInitializerConfig extends string = string,\n  TAccountLaunch extends string = string,\n  TAccountLaunchAuthority extends string = string,\n  TAccountBaseMint extends string = string,\n  TAccountQuoteMint extends string = string,\n  TAccountBaseVault extends string = string,\n  TAccountQuoteVault extends string = string,\n  TAccountPayer extends string = string,\n  TAccountBaseTokenProgram extends string = string,\n  TAccountQuoteTokenProgram extends string = string,\n  TAccountSystemProgram extends string = string,\n  TAccountRent extends string = string,\n  TAccountOracle extends string = string,\n  TAccountMarket extends string = string,\n  TAccountPotVault extends string = string,\n  TAccountMarketAuthority extends string = string,\n  TAccountEntry extends string = string,\n  TAccountEntryByMint extends string = string,\n> = {\n  /** Standard initializer module-call prefix account. */\n  initializerConfig: Address<TAccountInitializerConfig>;\n  /** Launch account from initializer */\n  launch: Address<TAccountLaunch>;\n  /** Launch authority PDA - signed by initializer */\n  launchAuthority: TransactionSigner<TAccountLaunchAuthority>;\n  /** Base mint for this entry (will burn unsold) */\n  baseMint: Address<TAccountBaseMint>;\n  /** Quote mint for this market */\n  quoteMint: Address<TAccountQuoteMint>;\n  /** Base vault from launch (source for burn) */\n  baseVault: Address<TAccountBaseVault>;\n  /** Quote vault from launch (source for transfer) */\n  quoteVault: Address<TAccountQuoteVault>;\n  payer: TransactionSigner<TAccountPayer>;\n  baseTokenProgram: Address<TAccountBaseTokenProgram>;\n  quoteTokenProgram: Address<TAccountQuoteTokenProgram>;\n  systemProgram?: Address<TAccountSystemProgram>;\n  rent?: Address<TAccountRent>;\n  /**\n   * The oracle that determines the winner.\n   * Anchor enforces owner + discriminator (trusted_oracle_interface).\n   */\n  oracle: Address<TAccountOracle>;\n  /** Market PDA */\n  market?: Address<TAccountMarket>;\n  /** Pot vault for holding quote tokens */\n  potVault: Address<TAccountPotVault>;\n  /** Market authority PDA used as the pot vault owner. */\n  marketAuthority?: Address<TAccountMarketAuthority>;\n  /** Entry PDA */\n  entry: Address<TAccountEntry>;\n  /** EntryByMint PDA (for validation) */\n  entryByMint?: Address<TAccountEntryByMint>;\n  entryId: MigrateEntryInstructionDataArgs['entryId'];\n};\n\nexport async function getMigrateEntryInstructionAsync<\n  TAccountInitializerConfig extends string,\n  TAccountLaunch extends string,\n  TAccountLaunchAuthority extends string,\n  TAccountBaseMint extends string,\n  TAccountQuoteMint extends string,\n  TAccountBaseVault extends string,\n  TAccountQuoteVault extends string,\n  TAccountPayer extends string,\n  TAccountBaseTokenProgram extends string,\n  TAccountQuoteTokenProgram extends string,\n  TAccountSystemProgram extends string,\n  TAccountRent extends string,\n  TAccountOracle extends string,\n  TAccountMarket extends string,\n  TAccountPotVault extends string,\n  TAccountMarketAuthority extends string,\n  TAccountEntry extends string,\n  TAccountEntryByMint extends string,\n  TProgramAddress extends Address = typeof PREDICTION_MIGRATOR_PROGRAM_ADDRESS,\n>(\n  input: MigrateEntryAsyncInput<\n    TAccountInitializerConfig,\n    TAccountLaunch,\n    TAccountLaunchAuthority,\n    TAccountBaseMint,\n    TAccountQuoteMint,\n    TAccountBaseVault,\n    TAccountQuoteVault,\n    TAccountPayer,\n    TAccountBaseTokenProgram,\n    TAccountQuoteTokenProgram,\n    TAccountSystemProgram,\n    TAccountRent,\n    TAccountOracle,\n    TAccountMarket,\n    TAccountPotVault,\n    TAccountMarketAuthority,\n    TAccountEntry,\n    TAccountEntryByMint\n  >,\n  config?: { programAddress?: TProgramAddress },\n): Promise<\n  MigrateEntryInstruction<\n    TProgramAddress,\n    TAccountInitializerConfig,\n    TAccountLaunch,\n    TAccountLaunchAuthority,\n    TAccountBaseMint,\n    TAccountQuoteMint,\n    TAccountBaseVault,\n    TAccountQuoteVault,\n    TAccountPayer,\n    TAccountBaseTokenProgram,\n    TAccountQuoteTokenProgram,\n    TAccountSystemProgram,\n    TAccountRent,\n    TAccountOracle,\n    TAccountMarket,\n    TAccountPotVault,\n    TAccountMarketAuthority,\n    TAccountEntry,\n    TAccountEntryByMint\n  >\n> {\n  // Program address.\n  const programAddress =\n    config?.programAddress ?? PREDICTION_MIGRATOR_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    initializerConfig: {\n      value: input.initializerConfig ?? null,\n      isWritable: false,\n    },\n    launch: { value: input.launch ?? null, isWritable: false },\n    launchAuthority: {\n      value: input.launchAuthority ?? null,\n      isWritable: false,\n    },\n    baseMint: { value: input.baseMint ?? null, isWritable: true },\n    quoteMint: { value: input.quoteMint ?? null, isWritable: false },\n    baseVault: { value: input.baseVault ?? null, isWritable: true },\n    quoteVault: { value: input.quoteVault ?? null, isWritable: true },\n    payer: { value: input.payer ?? null, isWritable: true },\n    baseTokenProgram: {\n      value: input.baseTokenProgram ?? null,\n      isWritable: false,\n    },\n    quoteTokenProgram: {\n      value: input.quoteTokenProgram ?? null,\n      isWritable: false,\n    },\n    systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n    rent: { value: input.rent ?? null, isWritable: false },\n    oracle: { value: input.oracle ?? null, isWritable: false },\n    market: { value: input.market ?? null, isWritable: true },\n    potVault: { value: input.potVault ?? null, isWritable: true },\n    marketAuthority: {\n      value: input.marketAuthority ?? null,\n      isWritable: false,\n    },\n    entry: { value: input.entry ?? null, isWritable: true },\n    entryByMint: { value: input.entryByMint ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedInstructionAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolve default values.\n  if (!accounts.systemProgram.value) {\n    accounts.systemProgram.value =\n      '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n  }\n  if (!accounts.rent.value) {\n    accounts.rent.value =\n      'SysvarRent111111111111111111111111111111111' as Address<'SysvarRent111111111111111111111111111111111'>;\n  }\n  if (!accounts.market.value) {\n    accounts.market.value = await getProgramDerivedAddress({\n      programAddress,\n      seeds: [\n        getBytesEncoder().encode(new Uint8Array([109, 97, 114, 107, 101, 116])),\n        getAddressEncoder().encode(\n          getAddressFromResolvedInstructionAccount(\n            'oracle',\n            accounts.oracle.value,\n          ),\n        ),\n        getAddressEncoder().encode(\n          getAddressFromResolvedInstructionAccount(\n            'quoteMint',\n            accounts.quoteMint.value,\n          ),\n        ),\n      ],\n    });\n  }\n  if (!accounts.marketAuthority.value) {\n    accounts.marketAuthority.value = await getProgramDerivedAddress({\n      programAddress,\n      seeds: [\n        getBytesEncoder().encode(\n          new Uint8Array([\n            109, 97, 114, 107, 101, 116, 95, 97, 117, 116, 104, 111, 114, 105,\n            116, 121,\n          ]),\n        ),\n        getAddressEncoder().encode(\n          getAddressFromResolvedInstructionAccount(\n            'market',\n            accounts.market.value,\n          ),\n        ),\n      ],\n    });\n  }\n  if (!accounts.entryByMint.value) {\n    accounts.entryByMint.value = await getProgramDerivedAddress({\n      programAddress,\n      seeds: [\n        getBytesEncoder().encode(\n          new Uint8Array([\n            101, 110, 116, 114, 121, 95, 98, 121, 95, 109, 105, 110, 116,\n          ]),\n        ),\n        getAddressEncoder().encode(\n          getAddressFromResolvedInstructionAccount(\n            'market',\n            accounts.market.value,\n          ),\n        ),\n        getAddressEncoder().encode(\n          getAddressFromResolvedInstructionAccount(\n            'baseMint',\n            accounts.baseMint.value,\n          ),\n        ),\n      ],\n    });\n  }\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta('initializerConfig', accounts.initializerConfig),\n      getAccountMeta('launch', accounts.launch),\n      getAccountMeta('launchAuthority', accounts.launchAuthority),\n      getAccountMeta('baseMint', accounts.baseMint),\n      getAccountMeta('quoteMint', accounts.quoteMint),\n      getAccountMeta('baseVault', accounts.baseVault),\n      getAccountMeta('quoteVault', accounts.quoteVault),\n      getAccountMeta('payer', accounts.payer),\n      getAccountMeta('baseTokenProgram', accounts.baseTokenProgram),\n      getAccountMeta('quoteTokenProgram', accounts.quoteTokenProgram),\n      getAccountMeta('systemProgram', accounts.systemProgram),\n      getAccountMeta('rent', accounts.rent),\n      getAccountMeta('oracle', accounts.oracle),\n      getAccountMeta('market', accounts.market),\n      getAccountMeta('potVault', accounts.potVault),\n      getAccountMeta('marketAuthority', accounts.marketAuthority),\n      getAccountMeta('entry', accounts.entry),\n      getAccountMeta('entryByMint', accounts.entryByMint),\n    ],\n    data: getMigrateEntryInstructionDataEncoder().encode(\n      args as MigrateEntryInstructionDataArgs,\n    ),\n    programAddress,\n  } as MigrateEntryInstruction<\n    TProgramAddress,\n    TAccountInitializerConfig,\n    TAccountLaunch,\n    TAccountLaunchAuthority,\n    TAccountBaseMint,\n    TAccountQuoteMint,\n    TAccountBaseVault,\n    TAccountQuoteVault,\n    TAccountPayer,\n    TAccountBaseTokenProgram,\n    TAccountQuoteTokenProgram,\n    TAccountSystemProgram,\n    TAccountRent,\n    TAccountOracle,\n    TAccountMarket,\n    TAccountPotVault,\n    TAccountMarketAuthority,\n    TAccountEntry,\n    TAccountEntryByMint\n  >);\n}\n\nexport type MigrateEntryInput<\n  TAccountInitializerConfig extends string = string,\n  TAccountLaunch extends string = string,\n  TAccountLaunchAuthority extends string = string,\n  TAccountBaseMint extends string = string,\n  TAccountQuoteMint extends string = string,\n  TAccountBaseVault extends string = string,\n  TAccountQuoteVault extends string = string,\n  TAccountPayer extends string = string,\n  TAccountBaseTokenProgram extends string = string,\n  TAccountQuoteTokenProgram extends string = string,\n  TAccountSystemProgram extends string = string,\n  TAccountRent extends string = string,\n  TAccountOracle extends string = string,\n  TAccountMarket extends string = string,\n  TAccountPotVault extends string = string,\n  TAccountMarketAuthority extends string = string,\n  TAccountEntry extends string = string,\n  TAccountEntryByMint extends string = string,\n> = {\n  /** Standard initializer module-call prefix account. */\n  initializerConfig: Address<TAccountInitializerConfig>;\n  /** Launch account from initializer */\n  launch: Address<TAccountLaunch>;\n  /** Launch authority PDA - signed by initializer */\n  launchAuthority: TransactionSigner<TAccountLaunchAuthority>;\n  /** Base mint for this entry (will burn unsold) */\n  baseMint: Address<TAccountBaseMint>;\n  /** Quote mint for this market */\n  quoteMint: Address<TAccountQuoteMint>;\n  /** Base vault from launch (source for burn) */\n  baseVault: Address<TAccountBaseVault>;\n  /** Quote vault from launch (source for transfer) */\n  quoteVault: Address<TAccountQuoteVault>;\n  payer: TransactionSigner<TAccountPayer>;\n  baseTokenProgram: Address<TAccountBaseTokenProgram>;\n  quoteTokenProgram: Address<TAccountQuoteTokenProgram>;\n  systemProgram?: Address<TAccountSystemProgram>;\n  rent?: Address<TAccountRent>;\n  /**\n   * The oracle that determines the winner.\n   * Anchor enforces owner + discriminator (trusted_oracle_interface).\n   */\n  oracle: Address<TAccountOracle>;\n  /** Market PDA */\n  market: Address<TAccountMarket>;\n  /** Pot vault for holding quote tokens */\n  potVault: Address<TAccountPotVault>;\n  /** Market authority PDA used as the pot vault owner. */\n  marketAuthority: Address<TAccountMarketAuthority>;\n  /** Entry PDA */\n  entry: Address<TAccountEntry>;\n  /** EntryByMint PDA (for validation) */\n  entryByMint: Address<TAccountEntryByMint>;\n  entryId: MigrateEntryInstructionDataArgs['entryId'];\n};\n\nexport function getMigrateEntryInstruction<\n  TAccountInitializerConfig extends string,\n  TAccountLaunch extends string,\n  TAccountLaunchAuthority extends string,\n  TAccountBaseMint extends string,\n  TAccountQuoteMint extends string,\n  TAccountBaseVault extends string,\n  TAccountQuoteVault extends string,\n  TAccountPayer extends string,\n  TAccountBaseTokenProgram extends string,\n  TAccountQuoteTokenProgram extends string,\n  TAccountSystemProgram extends string,\n  TAccountRent extends string,\n  TAccountOracle extends string,\n  TAccountMarket extends string,\n  TAccountPotVault extends string,\n  TAccountMarketAuthority extends string,\n  TAccountEntry extends string,\n  TAccountEntryByMint extends string,\n  TProgramAddress extends Address = typeof PREDICTION_MIGRATOR_PROGRAM_ADDRESS,\n>(\n  input: MigrateEntryInput<\n    TAccountInitializerConfig,\n    TAccountLaunch,\n    TAccountLaunchAuthority,\n    TAccountBaseMint,\n    TAccountQuoteMint,\n    TAccountBaseVault,\n    TAccountQuoteVault,\n    TAccountPayer,\n    TAccountBaseTokenProgram,\n    TAccountQuoteTokenProgram,\n    TAccountSystemProgram,\n    TAccountRent,\n    TAccountOracle,\n    TAccountMarket,\n    TAccountPotVault,\n    TAccountMarketAuthority,\n    TAccountEntry,\n    TAccountEntryByMint\n  >,\n  config?: { programAddress?: TProgramAddress },\n): MigrateEntryInstruction<\n  TProgramAddress,\n  TAccountInitializerConfig,\n  TAccountLaunch,\n  TAccountLaunchAuthority,\n  TAccountBaseMint,\n  TAccountQuoteMint,\n  TAccountBaseVault,\n  TAccountQuoteVault,\n  TAccountPayer,\n  TAccountBaseTokenProgram,\n  TAccountQuoteTokenProgram,\n  TAccountSystemProgram,\n  TAccountRent,\n  TAccountOracle,\n  TAccountMarket,\n  TAccountPotVault,\n  TAccountMarketAuthority,\n  TAccountEntry,\n  TAccountEntryByMint\n> {\n  // Program address.\n  const programAddress =\n    config?.programAddress ?? PREDICTION_MIGRATOR_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    initializerConfig: {\n      value: input.initializerConfig ?? null,\n      isWritable: false,\n    },\n    launch: { value: input.launch ?? null, isWritable: false },\n    launchAuthority: {\n      value: input.launchAuthority ?? null,\n      isWritable: false,\n    },\n    baseMint: { value: input.baseMint ?? null, isWritable: true },\n    quoteMint: { value: input.quoteMint ?? null, isWritable: false },\n    baseVault: { value: input.baseVault ?? null, isWritable: true },\n    quoteVault: { value: input.quoteVault ?? null, isWritable: true },\n    payer: { value: input.payer ?? null, isWritable: true },\n    baseTokenProgram: {\n      value: input.baseTokenProgram ?? null,\n      isWritable: false,\n    },\n    quoteTokenProgram: {\n      value: input.quoteTokenProgram ?? null,\n      isWritable: false,\n    },\n    systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n    rent: { value: input.rent ?? null, isWritable: false },\n    oracle: { value: input.oracle ?? null, isWritable: false },\n    market: { value: input.market ?? null, isWritable: true },\n    potVault: { value: input.potVault ?? null, isWritable: true },\n    marketAuthority: {\n      value: input.marketAuthority ?? null,\n      isWritable: false,\n    },\n    entry: { value: input.entry ?? null, isWritable: true },\n    entryByMint: { value: input.entryByMint ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedInstructionAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolve default values.\n  if (!accounts.systemProgram.value) {\n    accounts.systemProgram.value =\n      '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n  }\n  if (!accounts.rent.value) {\n    accounts.rent.value =\n      'SysvarRent111111111111111111111111111111111' as Address<'SysvarRent111111111111111111111111111111111'>;\n  }\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta('initializerConfig', accounts.initializerConfig),\n      getAccountMeta('launch', accounts.launch),\n      getAccountMeta('launchAuthority', accounts.launchAuthority),\n      getAccountMeta('baseMint', accounts.baseMint),\n      getAccountMeta('quoteMint', accounts.quoteMint),\n      getAccountMeta('baseVault', accounts.baseVault),\n      getAccountMeta('quoteVault', accounts.quoteVault),\n      getAccountMeta('payer', accounts.payer),\n      getAccountMeta('baseTokenProgram', accounts.baseTokenProgram),\n      getAccountMeta('quoteTokenProgram', accounts.quoteTokenProgram),\n      getAccountMeta('systemProgram', accounts.systemProgram),\n      getAccountMeta('rent', accounts.rent),\n      getAccountMeta('oracle', accounts.oracle),\n      getAccountMeta('market', accounts.market),\n      getAccountMeta('potVault', accounts.potVault),\n      getAccountMeta('marketAuthority', accounts.marketAuthority),\n      getAccountMeta('entry', accounts.entry),\n      getAccountMeta('entryByMint', accounts.entryByMint),\n    ],\n    data: getMigrateEntryInstructionDataEncoder().encode(\n      args as MigrateEntryInstructionDataArgs,\n    ),\n    programAddress,\n  } as MigrateEntryInstruction<\n    TProgramAddress,\n    TAccountInitializerConfig,\n    TAccountLaunch,\n    TAccountLaunchAuthority,\n    TAccountBaseMint,\n    TAccountQuoteMint,\n    TAccountBaseVault,\n    TAccountQuoteVault,\n    TAccountPayer,\n    TAccountBaseTokenProgram,\n    TAccountQuoteTokenProgram,\n    TAccountSystemProgram,\n    TAccountRent,\n    TAccountOracle,\n    TAccountMarket,\n    TAccountPotVault,\n    TAccountMarketAuthority,\n    TAccountEntry,\n    TAccountEntryByMint\n  >);\n}\n\nexport type ParsedMigrateEntryInstruction<\n  TProgram extends string = typeof PREDICTION_MIGRATOR_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    /** Standard initializer module-call prefix account. */\n    initializerConfig: TAccountMetas[0];\n    /** Launch account from initializer */\n    launch: TAccountMetas[1];\n    /** Launch authority PDA - signed by initializer */\n    launchAuthority: TAccountMetas[2];\n    /** Base mint for this entry (will burn unsold) */\n    baseMint: TAccountMetas[3];\n    /** Quote mint for this market */\n    quoteMint: TAccountMetas[4];\n    /** Base vault from launch (source for burn) */\n    baseVault: TAccountMetas[5];\n    /** Quote vault from launch (source for transfer) */\n    quoteVault: TAccountMetas[6];\n    payer: TAccountMetas[7];\n    baseTokenProgram: TAccountMetas[8];\n    quoteTokenProgram: TAccountMetas[9];\n    systemProgram: TAccountMetas[10];\n    rent: TAccountMetas[11];\n    /**\n     * The oracle that determines the winner.\n     * Anchor enforces owner + discriminator (trusted_oracle_interface).\n     */\n    oracle: TAccountMetas[12];\n    /** Market PDA */\n    market: TAccountMetas[13];\n    /** Pot vault for holding quote tokens */\n    potVault: TAccountMetas[14];\n    /** Market authority PDA used as the pot vault owner. */\n    marketAuthority: TAccountMetas[15];\n    /** Entry PDA */\n    entry: TAccountMetas[16];\n    /** EntryByMint PDA (for validation) */\n    entryByMint: TAccountMetas[17];\n  };\n  data: MigrateEntryInstructionData;\n};\n\nexport function parseMigrateEntryInstruction<\n  TProgram extends string,\n  TAccountMetas extends readonly AccountMeta[],\n>(\n  instruction: Instruction<TProgram> &\n    InstructionWithAccounts<TAccountMetas> &\n    InstructionWithData<ReadonlyUint8Array>,\n): ParsedMigrateEntryInstruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 18) {\n    throw new SolanaError(\n      SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS,\n      {\n        actualAccountMetas: instruction.accounts.length,\n        expectedAccountMetas: 18,\n      },\n    );\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: {\n      initializerConfig: getNextAccount(),\n      launch: getNextAccount(),\n      launchAuthority: getNextAccount(),\n      baseMint: getNextAccount(),\n      quoteMint: getNextAccount(),\n      baseVault: getNextAccount(),\n      quoteVault: getNextAccount(),\n      payer: getNextAccount(),\n      baseTokenProgram: getNextAccount(),\n      quoteTokenProgram: getNextAccount(),\n      systemProgram: getNextAccount(),\n      rent: getNextAccount(),\n      oracle: getNextAccount(),\n      market: getNextAccount(),\n      potVault: getNextAccount(),\n      marketAuthority: getNextAccount(),\n      entry: getNextAccount(),\n      entryByMint: getNextAccount(),\n    },\n    data: getMigrateEntryInstructionDataDecoder().decode(instruction.data),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getAddressDecoder,\n  getAddressEncoder,\n  getBytesDecoder,\n  getBytesEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU64Decoder,\n  getU64Encoder,\n  SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS,\n  SolanaError,\n  transformEncoder,\n  type AccountMeta,\n  type Address,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n  type Instruction,\n  type InstructionWithAccounts,\n  type InstructionWithData,\n  type ReadonlyAccount,\n  type ReadonlyUint8Array,\n} from '@solana/kit';\nimport {\n  getAccountMetaFactory,\n  type ResolvedInstructionAccount,\n} from '@solana/program-client-core';\nimport { PREDICTION_MIGRATOR_PROGRAM_ADDRESS } from '../programs';\n\nexport const PREVIEW_PAYOUT_IF_WINNER_DISCRIMINATOR = new Uint8Array([\n  228, 144, 72, 185, 234, 186, 183, 143,\n]);\n\nexport function getPreviewPayoutIfWinnerDiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(\n    PREVIEW_PAYOUT_IF_WINNER_DISCRIMINATOR,\n  );\n}\n\nexport type PreviewPayoutIfWinnerInstruction<\n  TProgram extends string = typeof PREDICTION_MIGRATOR_PROGRAM_ADDRESS,\n  TAccountMarket extends string | AccountMeta<string> = string,\n  TAccountCandidateMint extends string | AccountMeta<string> = string,\n  TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n  InstructionWithData<ReadonlyUint8Array> &\n  InstructionWithAccounts<\n    [\n      TAccountMarket extends string\n        ? ReadonlyAccount<TAccountMarket>\n        : TAccountMarket,\n      TAccountCandidateMint extends string\n        ? ReadonlyAccount<TAccountCandidateMint>\n        : TAccountCandidateMint,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type PreviewPayoutIfWinnerInstructionData = {\n  discriminator: ReadonlyUint8Array;\n  candidateWinnerMint: Address;\n  tokenAmount: bigint;\n};\n\nexport type PreviewPayoutIfWinnerInstructionDataArgs = {\n  candidateWinnerMint: Address;\n  tokenAmount: number | bigint;\n};\n\nexport function getPreviewPayoutIfWinnerInstructionDataEncoder(): FixedSizeEncoder<PreviewPayoutIfWinnerInstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['candidateWinnerMint', getAddressEncoder()],\n      ['tokenAmount', getU64Encoder()],\n    ]),\n    (value) => ({\n      ...value,\n      discriminator: PREVIEW_PAYOUT_IF_WINNER_DISCRIMINATOR,\n    }),\n  );\n}\n\nexport function getPreviewPayoutIfWinnerInstructionDataDecoder(): FixedSizeDecoder<PreviewPayoutIfWinnerInstructionData> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['candidateWinnerMint', getAddressDecoder()],\n    ['tokenAmount', getU64Decoder()],\n  ]);\n}\n\nexport function getPreviewPayoutIfWinnerInstructionDataCodec(): FixedSizeCodec<\n  PreviewPayoutIfWinnerInstructionDataArgs,\n  PreviewPayoutIfWinnerInstructionData\n> {\n  return combineCodec(\n    getPreviewPayoutIfWinnerInstructionDataEncoder(),\n    getPreviewPayoutIfWinnerInstructionDataDecoder(),\n  );\n}\n\nexport type PreviewPayoutIfWinnerInput<\n  TAccountMarket extends string = string,\n  TAccountCandidateMint extends string = string,\n> = {\n  /** Market PDA */\n  market: Address<TAccountMarket>;\n  /** Candidate winner mint (may or may not match oracle winner) */\n  candidateMint: Address<TAccountCandidateMint>;\n  candidateWinnerMint: PreviewPayoutIfWinnerInstructionDataArgs['candidateWinnerMint'];\n  tokenAmount: PreviewPayoutIfWinnerInstructionDataArgs['tokenAmount'];\n};\n\nexport function getPreviewPayoutIfWinnerInstruction<\n  TAccountMarket extends string,\n  TAccountCandidateMint extends string,\n  TProgramAddress extends Address = typeof PREDICTION_MIGRATOR_PROGRAM_ADDRESS,\n>(\n  input: PreviewPayoutIfWinnerInput<TAccountMarket, TAccountCandidateMint>,\n  config?: { programAddress?: TProgramAddress },\n): PreviewPayoutIfWinnerInstruction<\n  TProgramAddress,\n  TAccountMarket,\n  TAccountCandidateMint\n> {\n  // Program address.\n  const programAddress =\n    config?.programAddress ?? PREDICTION_MIGRATOR_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    market: { value: input.market ?? null, isWritable: false },\n    candidateMint: { value: input.candidateMint ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedInstructionAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta('market', accounts.market),\n      getAccountMeta('candidateMint', accounts.candidateMint),\n    ],\n    data: getPreviewPayoutIfWinnerInstructionDataEncoder().encode(\n      args as PreviewPayoutIfWinnerInstructionDataArgs,\n    ),\n    programAddress,\n  } as PreviewPayoutIfWinnerInstruction<\n    TProgramAddress,\n    TAccountMarket,\n    TAccountCandidateMint\n  >);\n}\n\nexport type ParsedPreviewPayoutIfWinnerInstruction<\n  TProgram extends string = typeof PREDICTION_MIGRATOR_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    /** Market PDA */\n    market: TAccountMetas[0];\n    /** Candidate winner mint (may or may not match oracle winner) */\n    candidateMint: TAccountMetas[1];\n  };\n  data: PreviewPayoutIfWinnerInstructionData;\n};\n\nexport function parsePreviewPayoutIfWinnerInstruction<\n  TProgram extends string,\n  TAccountMetas extends readonly AccountMeta[],\n>(\n  instruction: Instruction<TProgram> &\n    InstructionWithAccounts<TAccountMetas> &\n    InstructionWithData<ReadonlyUint8Array>,\n): ParsedPreviewPayoutIfWinnerInstruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 2) {\n    throw new SolanaError(\n      SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS,\n      {\n        actualAccountMetas: instruction.accounts.length,\n        expectedAccountMetas: 2,\n      },\n    );\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: { market: getNextAccount(), candidateMint: getNextAccount() },\n    data: getPreviewPayoutIfWinnerInstructionDataDecoder().decode(\n      instruction.data,\n    ),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getAddressEncoder,\n  getBytesDecoder,\n  getBytesEncoder,\n  getProgramDerivedAddress,\n  getStructDecoder,\n  getStructEncoder,\n  SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS,\n  SolanaError,\n  transformEncoder,\n  type AccountMeta,\n  type AccountSignerMeta,\n  type Address,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n  type Instruction,\n  type InstructionWithAccounts,\n  type InstructionWithData,\n  type ReadonlyAccount,\n  type ReadonlySignerAccount,\n  type ReadonlyUint8Array,\n  type TransactionSigner,\n  type WritableAccount,\n  type WritableSignerAccount,\n} from '@solana/kit';\nimport {\n  getAccountMetaFactory,\n  getAddressFromResolvedInstructionAccount,\n  type ResolvedInstructionAccount,\n} from '@solana/program-client-core';\nimport { PREDICTION_MIGRATOR_PROGRAM_ADDRESS } from '../programs';\n\nexport const REGISTER_ENTRY_DISCRIMINATOR = new Uint8Array([\n  198, 25, 1, 183, 73, 219, 215, 14,\n]);\n\nexport function getRegisterEntryDiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(\n    REGISTER_ENTRY_DISCRIMINATOR,\n  );\n}\n\nexport type RegisterEntryInstruction<\n  TProgram extends string = typeof PREDICTION_MIGRATOR_PROGRAM_ADDRESS,\n  TAccountInitializerConfig extends string | AccountMeta<string> = string,\n  TAccountLaunch extends string | AccountMeta<string> = string,\n  TAccountLaunchAuthority extends string | AccountMeta<string> = string,\n  TAccountBaseMint extends string | AccountMeta<string> = string,\n  TAccountQuoteMint extends string | AccountMeta<string> = string,\n  TAccountBaseVault extends string | AccountMeta<string> = string,\n  TAccountQuoteVault extends string | AccountMeta<string> = string,\n  TAccountPayer extends string | AccountMeta<string> = string,\n  TAccountBaseTokenProgram extends string | AccountMeta<string> = string,\n  TAccountQuoteTokenProgram extends string | AccountMeta<string> = string,\n  TAccountSystemProgram extends string | AccountMeta<string> =\n    '11111111111111111111111111111111',\n  TAccountRent extends string | AccountMeta<string> =\n    'SysvarRent111111111111111111111111111111111',\n  TAccountOracle extends string | AccountMeta<string> = string,\n  TAccountMarket extends string | AccountMeta<string> = string,\n  TAccountPotVault extends string | AccountMeta<string> = string,\n  TAccountMarketAuthority extends string | AccountMeta<string> = string,\n  TAccountEntry extends string | AccountMeta<string> = string,\n  TAccountEntryByMint extends string | AccountMeta<string> = string,\n  TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n  InstructionWithData<ReadonlyUint8Array> &\n  InstructionWithAccounts<\n    [\n      TAccountInitializerConfig extends string\n        ? ReadonlyAccount<TAccountInitializerConfig>\n        : TAccountInitializerConfig,\n      TAccountLaunch extends string\n        ? ReadonlyAccount<TAccountLaunch>\n        : TAccountLaunch,\n      TAccountLaunchAuthority extends string\n        ? ReadonlySignerAccount<TAccountLaunchAuthority> &\n            AccountSignerMeta<TAccountLaunchAuthority>\n        : TAccountLaunchAuthority,\n      TAccountBaseMint extends string\n        ? ReadonlyAccount<TAccountBaseMint>\n        : TAccountBaseMint,\n      TAccountQuoteMint extends string\n        ? ReadonlyAccount<TAccountQuoteMint>\n        : TAccountQuoteMint,\n      TAccountBaseVault extends string\n        ? ReadonlyAccount<TAccountBaseVault>\n        : TAccountBaseVault,\n      TAccountQuoteVault extends string\n        ? ReadonlyAccount<TAccountQuoteVault>\n        : TAccountQuoteVault,\n      TAccountPayer extends string\n        ? WritableSignerAccount<TAccountPayer> &\n            AccountSignerMeta<TAccountPayer>\n        : TAccountPayer,\n      TAccountBaseTokenProgram extends string\n        ? ReadonlyAccount<TAccountBaseTokenProgram>\n        : TAccountBaseTokenProgram,\n      TAccountQuoteTokenProgram extends string\n        ? ReadonlyAccount<TAccountQuoteTokenProgram>\n        : TAccountQuoteTokenProgram,\n      TAccountSystemProgram extends string\n        ? ReadonlyAccount<TAccountSystemProgram>\n        : TAccountSystemProgram,\n      TAccountRent extends string\n        ? ReadonlyAccount<TAccountRent>\n        : TAccountRent,\n      TAccountOracle extends string\n        ? ReadonlyAccount<TAccountOracle>\n        : TAccountOracle,\n      TAccountMarket extends string\n        ? WritableAccount<TAccountMarket>\n        : TAccountMarket,\n      TAccountPotVault extends string\n        ? WritableAccount<TAccountPotVault>\n        : TAccountPotVault,\n      TAccountMarketAuthority extends string\n        ? ReadonlyAccount<TAccountMarketAuthority>\n        : TAccountMarketAuthority,\n      TAccountEntry extends string\n        ? WritableAccount<TAccountEntry>\n        : TAccountEntry,\n      TAccountEntryByMint extends string\n        ? WritableAccount<TAccountEntryByMint>\n        : TAccountEntryByMint,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type RegisterEntryInstructionData = {\n  discriminator: ReadonlyUint8Array;\n  entryId: ReadonlyUint8Array;\n};\n\nexport type RegisterEntryInstructionDataArgs = { entryId: ReadonlyUint8Array };\n\nexport function getRegisterEntryInstructionDataEncoder(): FixedSizeEncoder<RegisterEntryInstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['entryId', fixEncoderSize(getBytesEncoder(), 32)],\n    ]),\n    (value) => ({ ...value, discriminator: REGISTER_ENTRY_DISCRIMINATOR }),\n  );\n}\n\nexport function getRegisterEntryInstructionDataDecoder(): FixedSizeDecoder<RegisterEntryInstructionData> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['entryId', fixDecoderSize(getBytesDecoder(), 32)],\n  ]);\n}\n\nexport function getRegisterEntryInstructionDataCodec(): FixedSizeCodec<\n  RegisterEntryInstructionDataArgs,\n  RegisterEntryInstructionData\n> {\n  return combineCodec(\n    getRegisterEntryInstructionDataEncoder(),\n    getRegisterEntryInstructionDataDecoder(),\n  );\n}\n\nexport type RegisterEntryAsyncInput<\n  TAccountInitializerConfig extends string = string,\n  TAccountLaunch extends string = string,\n  TAccountLaunchAuthority extends string = string,\n  TAccountBaseMint extends string = string,\n  TAccountQuoteMint extends string = string,\n  TAccountBaseVault extends string = string,\n  TAccountQuoteVault extends string = string,\n  TAccountPayer extends string = string,\n  TAccountBaseTokenProgram extends string = string,\n  TAccountQuoteTokenProgram extends string = string,\n  TAccountSystemProgram extends string = string,\n  TAccountRent extends string = string,\n  TAccountOracle extends string = string,\n  TAccountMarket extends string = string,\n  TAccountPotVault extends string = string,\n  TAccountMarketAuthority extends string = string,\n  TAccountEntry extends string = string,\n  TAccountEntryByMint extends string = string,\n> = {\n  initializerConfig: Address<TAccountInitializerConfig>;\n  /** Launch account from initializer */\n  launch: Address<TAccountLaunch>;\n  /** Launch authority PDA - signed by initializer */\n  launchAuthority: TransactionSigner<TAccountLaunchAuthority>;\n  /** Base mint for this entry */\n  baseMint: Address<TAccountBaseMint>;\n  /** Quote mint for this market */\n  quoteMint: Address<TAccountQuoteMint>;\n  /** Base vault from launch */\n  baseVault: Address<TAccountBaseVault>;\n  /** Quote vault from launch */\n  quoteVault: Address<TAccountQuoteVault>;\n  payer: TransactionSigner<TAccountPayer>;\n  baseTokenProgram: Address<TAccountBaseTokenProgram>;\n  quoteTokenProgram: Address<TAccountQuoteTokenProgram>;\n  systemProgram?: Address<TAccountSystemProgram>;\n  rent?: Address<TAccountRent>;\n  /** The oracle that this market is tied to */\n  oracle: Address<TAccountOracle>;\n  /** Market PDA - created if first entry */\n  market?: Address<TAccountMarket>;\n  /** Pot vault for holding quote tokens */\n  potVault?: Address<TAccountPotVault>;\n  marketAuthority?: Address<TAccountMarketAuthority>;\n  /** Entry PDA for this entry */\n  entry: Address<TAccountEntry>;\n  /** EntryByMint PDA for reverse lookup */\n  entryByMint?: Address<TAccountEntryByMint>;\n  entryId: RegisterEntryInstructionDataArgs['entryId'];\n};\n\nexport async function getRegisterEntryInstructionAsync<\n  TAccountInitializerConfig extends string,\n  TAccountLaunch extends string,\n  TAccountLaunchAuthority extends string,\n  TAccountBaseMint extends string,\n  TAccountQuoteMint extends string,\n  TAccountBaseVault extends string,\n  TAccountQuoteVault extends string,\n  TAccountPayer extends string,\n  TAccountBaseTokenProgram extends string,\n  TAccountQuoteTokenProgram extends string,\n  TAccountSystemProgram extends string,\n  TAccountRent extends string,\n  TAccountOracle extends string,\n  TAccountMarket extends string,\n  TAccountPotVault extends string,\n  TAccountMarketAuthority extends string,\n  TAccountEntry extends string,\n  TAccountEntryByMint extends string,\n  TProgramAddress extends Address = typeof PREDICTION_MIGRATOR_PROGRAM_ADDRESS,\n>(\n  input: RegisterEntryAsyncInput<\n    TAccountInitializerConfig,\n    TAccountLaunch,\n    TAccountLaunchAuthority,\n    TAccountBaseMint,\n    TAccountQuoteMint,\n    TAccountBaseVault,\n    TAccountQuoteVault,\n    TAccountPayer,\n    TAccountBaseTokenProgram,\n    TAccountQuoteTokenProgram,\n    TAccountSystemProgram,\n    TAccountRent,\n    TAccountOracle,\n    TAccountMarket,\n    TAccountPotVault,\n    TAccountMarketAuthority,\n    TAccountEntry,\n    TAccountEntryByMint\n  >,\n  config?: { programAddress?: TProgramAddress },\n): Promise<\n  RegisterEntryInstruction<\n    TProgramAddress,\n    TAccountInitializerConfig,\n    TAccountLaunch,\n    TAccountLaunchAuthority,\n    TAccountBaseMint,\n    TAccountQuoteMint,\n    TAccountBaseVault,\n    TAccountQuoteVault,\n    TAccountPayer,\n    TAccountBaseTokenProgram,\n    TAccountQuoteTokenProgram,\n    TAccountSystemProgram,\n    TAccountRent,\n    TAccountOracle,\n    TAccountMarket,\n    TAccountPotVault,\n    TAccountMarketAuthority,\n    TAccountEntry,\n    TAccountEntryByMint\n  >\n> {\n  // Program address.\n  const programAddress =\n    config?.programAddress ?? PREDICTION_MIGRATOR_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    initializerConfig: {\n      value: input.initializerConfig ?? null,\n      isWritable: false,\n    },\n    launch: { value: input.launch ?? null, isWritable: false },\n    launchAuthority: {\n      value: input.launchAuthority ?? null,\n      isWritable: false,\n    },\n    baseMint: { value: input.baseMint ?? null, isWritable: false },\n    quoteMint: { value: input.quoteMint ?? null, isWritable: false },\n    baseVault: { value: input.baseVault ?? null, isWritable: false },\n    quoteVault: { value: input.quoteVault ?? null, isWritable: false },\n    payer: { value: input.payer ?? null, isWritable: true },\n    baseTokenProgram: {\n      value: input.baseTokenProgram ?? null,\n      isWritable: false,\n    },\n    quoteTokenProgram: {\n      value: input.quoteTokenProgram ?? null,\n      isWritable: false,\n    },\n    systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n    rent: { value: input.rent ?? null, isWritable: false },\n    oracle: { value: input.oracle ?? null, isWritable: false },\n    market: { value: input.market ?? null, isWritable: true },\n    potVault: { value: input.potVault ?? null, isWritable: true },\n    marketAuthority: {\n      value: input.marketAuthority ?? null,\n      isWritable: false,\n    },\n    entry: { value: input.entry ?? null, isWritable: true },\n    entryByMint: { value: input.entryByMint ?? null, isWritable: true },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedInstructionAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolve default values.\n  if (!accounts.systemProgram.value) {\n    accounts.systemProgram.value =\n      '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n  }\n  if (!accounts.rent.value) {\n    accounts.rent.value =\n      'SysvarRent111111111111111111111111111111111' as Address<'SysvarRent111111111111111111111111111111111'>;\n  }\n  if (!accounts.market.value) {\n    accounts.market.value = await getProgramDerivedAddress({\n      programAddress,\n      seeds: [\n        getBytesEncoder().encode(new Uint8Array([109, 97, 114, 107, 101, 116])),\n        getAddressEncoder().encode(\n          getAddressFromResolvedInstructionAccount(\n            'oracle',\n            accounts.oracle.value,\n          ),\n        ),\n        getAddressEncoder().encode(\n          getAddressFromResolvedInstructionAccount(\n            'quoteMint',\n            accounts.quoteMint.value,\n          ),\n        ),\n      ],\n    });\n  }\n  if (!accounts.potVault.value) {\n    accounts.potVault.value = await getProgramDerivedAddress({\n      programAddress,\n      seeds: [\n        getBytesEncoder().encode(\n          new Uint8Array([112, 111, 116, 95, 118, 97, 117, 108, 116]),\n        ),\n        getAddressEncoder().encode(\n          getAddressFromResolvedInstructionAccount(\n            'market',\n            accounts.market.value,\n          ),\n        ),\n      ],\n    });\n  }\n  if (!accounts.marketAuthority.value) {\n    accounts.marketAuthority.value = await getProgramDerivedAddress({\n      programAddress,\n      seeds: [\n        getBytesEncoder().encode(\n          new Uint8Array([\n            109, 97, 114, 107, 101, 116, 95, 97, 117, 116, 104, 111, 114, 105,\n            116, 121,\n          ]),\n        ),\n        getAddressEncoder().encode(\n          getAddressFromResolvedInstructionAccount(\n            'market',\n            accounts.market.value,\n          ),\n        ),\n      ],\n    });\n  }\n  if (!accounts.entryByMint.value) {\n    accounts.entryByMint.value = await getProgramDerivedAddress({\n      programAddress,\n      seeds: [\n        getBytesEncoder().encode(\n          new Uint8Array([\n            101, 110, 116, 114, 121, 95, 98, 121, 95, 109, 105, 110, 116,\n          ]),\n        ),\n        getAddressEncoder().encode(\n          getAddressFromResolvedInstructionAccount(\n            'market',\n            accounts.market.value,\n          ),\n        ),\n        getAddressEncoder().encode(\n          getAddressFromResolvedInstructionAccount(\n            'baseMint',\n            accounts.baseMint.value,\n          ),\n        ),\n      ],\n    });\n  }\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta('initializerConfig', accounts.initializerConfig),\n      getAccountMeta('launch', accounts.launch),\n      getAccountMeta('launchAuthority', accounts.launchAuthority),\n      getAccountMeta('baseMint', accounts.baseMint),\n      getAccountMeta('quoteMint', accounts.quoteMint),\n      getAccountMeta('baseVault', accounts.baseVault),\n      getAccountMeta('quoteVault', accounts.quoteVault),\n      getAccountMeta('payer', accounts.payer),\n      getAccountMeta('baseTokenProgram', accounts.baseTokenProgram),\n      getAccountMeta('quoteTokenProgram', accounts.quoteTokenProgram),\n      getAccountMeta('systemProgram', accounts.systemProgram),\n      getAccountMeta('rent', accounts.rent),\n      getAccountMeta('oracle', accounts.oracle),\n      getAccountMeta('market', accounts.market),\n      getAccountMeta('potVault', accounts.potVault),\n      getAccountMeta('marketAuthority', accounts.marketAuthority),\n      getAccountMeta('entry', accounts.entry),\n      getAccountMeta('entryByMint', accounts.entryByMint),\n    ],\n    data: getRegisterEntryInstructionDataEncoder().encode(\n      args as RegisterEntryInstructionDataArgs,\n    ),\n    programAddress,\n  } as RegisterEntryInstruction<\n    TProgramAddress,\n    TAccountInitializerConfig,\n    TAccountLaunch,\n    TAccountLaunchAuthority,\n    TAccountBaseMint,\n    TAccountQuoteMint,\n    TAccountBaseVault,\n    TAccountQuoteVault,\n    TAccountPayer,\n    TAccountBaseTokenProgram,\n    TAccountQuoteTokenProgram,\n    TAccountSystemProgram,\n    TAccountRent,\n    TAccountOracle,\n    TAccountMarket,\n    TAccountPotVault,\n    TAccountMarketAuthority,\n    TAccountEntry,\n    TAccountEntryByMint\n  >);\n}\n\nexport type RegisterEntryInput<\n  TAccountInitializerConfig extends string = string,\n  TAccountLaunch extends string = string,\n  TAccountLaunchAuthority extends string = string,\n  TAccountBaseMint extends string = string,\n  TAccountQuoteMint extends string = string,\n  TAccountBaseVault extends string = string,\n  TAccountQuoteVault extends string = string,\n  TAccountPayer extends string = string,\n  TAccountBaseTokenProgram extends string = string,\n  TAccountQuoteTokenProgram extends string = string,\n  TAccountSystemProgram extends string = string,\n  TAccountRent extends string = string,\n  TAccountOracle extends string = string,\n  TAccountMarket extends string = string,\n  TAccountPotVault extends string = string,\n  TAccountMarketAuthority extends string = string,\n  TAccountEntry extends string = string,\n  TAccountEntryByMint extends string = string,\n> = {\n  initializerConfig: Address<TAccountInitializerConfig>;\n  /** Launch account from initializer */\n  launch: Address<TAccountLaunch>;\n  /** Launch authority PDA - signed by initializer */\n  launchAuthority: TransactionSigner<TAccountLaunchAuthority>;\n  /** Base mint for this entry */\n  baseMint: Address<TAccountBaseMint>;\n  /** Quote mint for this market */\n  quoteMint: Address<TAccountQuoteMint>;\n  /** Base vault from launch */\n  baseVault: Address<TAccountBaseVault>;\n  /** Quote vault from launch */\n  quoteVault: Address<TAccountQuoteVault>;\n  payer: TransactionSigner<TAccountPayer>;\n  baseTokenProgram: Address<TAccountBaseTokenProgram>;\n  quoteTokenProgram: Address<TAccountQuoteTokenProgram>;\n  systemProgram?: Address<TAccountSystemProgram>;\n  rent?: Address<TAccountRent>;\n  /** The oracle that this market is tied to */\n  oracle: Address<TAccountOracle>;\n  /** Market PDA - created if first entry */\n  market: Address<TAccountMarket>;\n  /** Pot vault for holding quote tokens */\n  potVault: Address<TAccountPotVault>;\n  marketAuthority: Address<TAccountMarketAuthority>;\n  /** Entry PDA for this entry */\n  entry: Address<TAccountEntry>;\n  /** EntryByMint PDA for reverse lookup */\n  entryByMint: Address<TAccountEntryByMint>;\n  entryId: RegisterEntryInstructionDataArgs['entryId'];\n};\n\nexport function getRegisterEntryInstruction<\n  TAccountInitializerConfig extends string,\n  TAccountLaunch extends string,\n  TAccountLaunchAuthority extends string,\n  TAccountBaseMint extends string,\n  TAccountQuoteMint extends string,\n  TAccountBaseVault extends string,\n  TAccountQuoteVault extends string,\n  TAccountPayer extends string,\n  TAccountBaseTokenProgram extends string,\n  TAccountQuoteTokenProgram extends string,\n  TAccountSystemProgram extends string,\n  TAccountRent extends string,\n  TAccountOracle extends string,\n  TAccountMarket extends string,\n  TAccountPotVault extends string,\n  TAccountMarketAuthority extends string,\n  TAccountEntry extends string,\n  TAccountEntryByMint extends string,\n  TProgramAddress extends Address = typeof PREDICTION_MIGRATOR_PROGRAM_ADDRESS,\n>(\n  input: RegisterEntryInput<\n    TAccountInitializerConfig,\n    TAccountLaunch,\n    TAccountLaunchAuthority,\n    TAccountBaseMint,\n    TAccountQuoteMint,\n    TAccountBaseVault,\n    TAccountQuoteVault,\n    TAccountPayer,\n    TAccountBaseTokenProgram,\n    TAccountQuoteTokenProgram,\n    TAccountSystemProgram,\n    TAccountRent,\n    TAccountOracle,\n    TAccountMarket,\n    TAccountPotVault,\n    TAccountMarketAuthority,\n    TAccountEntry,\n    TAccountEntryByMint\n  >,\n  config?: { programAddress?: TProgramAddress },\n): RegisterEntryInstruction<\n  TProgramAddress,\n  TAccountInitializerConfig,\n  TAccountLaunch,\n  TAccountLaunchAuthority,\n  TAccountBaseMint,\n  TAccountQuoteMint,\n  TAccountBaseVault,\n  TAccountQuoteVault,\n  TAccountPayer,\n  TAccountBaseTokenProgram,\n  TAccountQuoteTokenProgram,\n  TAccountSystemProgram,\n  TAccountRent,\n  TAccountOracle,\n  TAccountMarket,\n  TAccountPotVault,\n  TAccountMarketAuthority,\n  TAccountEntry,\n  TAccountEntryByMint\n> {\n  // Program address.\n  const programAddress =\n    config?.programAddress ?? PREDICTION_MIGRATOR_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    initializerConfig: {\n      value: input.initializerConfig ?? null,\n      isWritable: false,\n    },\n    launch: { value: input.launch ?? null, isWritable: false },\n    launchAuthority: {\n      value: input.launchAuthority ?? null,\n      isWritable: false,\n    },\n    baseMint: { value: input.baseMint ?? null, isWritable: false },\n    quoteMint: { value: input.quoteMint ?? null, isWritable: false },\n    baseVault: { value: input.baseVault ?? null, isWritable: false },\n    quoteVault: { value: input.quoteVault ?? null, isWritable: false },\n    payer: { value: input.payer ?? null, isWritable: true },\n    baseTokenProgram: {\n      value: input.baseTokenProgram ?? null,\n      isWritable: false,\n    },\n    quoteTokenProgram: {\n      value: input.quoteTokenProgram ?? null,\n      isWritable: false,\n    },\n    systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n    rent: { value: input.rent ?? null, isWritable: false },\n    oracle: { value: input.oracle ?? null, isWritable: false },\n    market: { value: input.market ?? null, isWritable: true },\n    potVault: { value: input.potVault ?? null, isWritable: true },\n    marketAuthority: {\n      value: input.marketAuthority ?? null,\n      isWritable: false,\n    },\n    entry: { value: input.entry ?? null, isWritable: true },\n    entryByMint: { value: input.entryByMint ?? null, isWritable: true },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedInstructionAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolve default values.\n  if (!accounts.systemProgram.value) {\n    accounts.systemProgram.value =\n      '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n  }\n  if (!accounts.rent.value) {\n    accounts.rent.value =\n      'SysvarRent111111111111111111111111111111111' as Address<'SysvarRent111111111111111111111111111111111'>;\n  }\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta('initializerConfig', accounts.initializerConfig),\n      getAccountMeta('launch', accounts.launch),\n      getAccountMeta('launchAuthority', accounts.launchAuthority),\n      getAccountMeta('baseMint', accounts.baseMint),\n      getAccountMeta('quoteMint', accounts.quoteMint),\n      getAccountMeta('baseVault', accounts.baseVault),\n      getAccountMeta('quoteVault', accounts.quoteVault),\n      getAccountMeta('payer', accounts.payer),\n      getAccountMeta('baseTokenProgram', accounts.baseTokenProgram),\n      getAccountMeta('quoteTokenProgram', accounts.quoteTokenProgram),\n      getAccountMeta('systemProgram', accounts.systemProgram),\n      getAccountMeta('rent', accounts.rent),\n      getAccountMeta('oracle', accounts.oracle),\n      getAccountMeta('market', accounts.market),\n      getAccountMeta('potVault', accounts.potVault),\n      getAccountMeta('marketAuthority', accounts.marketAuthority),\n      getAccountMeta('entry', accounts.entry),\n      getAccountMeta('entryByMint', accounts.entryByMint),\n    ],\n    data: getRegisterEntryInstructionDataEncoder().encode(\n      args as RegisterEntryInstructionDataArgs,\n    ),\n    programAddress,\n  } as RegisterEntryInstruction<\n    TProgramAddress,\n    TAccountInitializerConfig,\n    TAccountLaunch,\n    TAccountLaunchAuthority,\n    TAccountBaseMint,\n    TAccountQuoteMint,\n    TAccountBaseVault,\n    TAccountQuoteVault,\n    TAccountPayer,\n    TAccountBaseTokenProgram,\n    TAccountQuoteTokenProgram,\n    TAccountSystemProgram,\n    TAccountRent,\n    TAccountOracle,\n    TAccountMarket,\n    TAccountPotVault,\n    TAccountMarketAuthority,\n    TAccountEntry,\n    TAccountEntryByMint\n  >);\n}\n\nexport type ParsedRegisterEntryInstruction<\n  TProgram extends string = typeof PREDICTION_MIGRATOR_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    initializerConfig: TAccountMetas[0];\n    /** Launch account from initializer */\n    launch: TAccountMetas[1];\n    /** Launch authority PDA - signed by initializer */\n    launchAuthority: TAccountMetas[2];\n    /** Base mint for this entry */\n    baseMint: TAccountMetas[3];\n    /** Quote mint for this market */\n    quoteMint: TAccountMetas[4];\n    /** Base vault from launch */\n    baseVault: TAccountMetas[5];\n    /** Quote vault from launch */\n    quoteVault: TAccountMetas[6];\n    payer: TAccountMetas[7];\n    baseTokenProgram: TAccountMetas[8];\n    quoteTokenProgram: TAccountMetas[9];\n    systemProgram: TAccountMetas[10];\n    rent: TAccountMetas[11];\n    /** The oracle that this market is tied to */\n    oracle: TAccountMetas[12];\n    /** Market PDA - created if first entry */\n    market: TAccountMetas[13];\n    /** Pot vault for holding quote tokens */\n    potVault: TAccountMetas[14];\n    marketAuthority: TAccountMetas[15];\n    /** Entry PDA for this entry */\n    entry: TAccountMetas[16];\n    /** EntryByMint PDA for reverse lookup */\n    entryByMint: TAccountMetas[17];\n  };\n  data: RegisterEntryInstructionData;\n};\n\nexport function parseRegisterEntryInstruction<\n  TProgram extends string,\n  TAccountMetas extends readonly AccountMeta[],\n>(\n  instruction: Instruction<TProgram> &\n    InstructionWithAccounts<TAccountMetas> &\n    InstructionWithData<ReadonlyUint8Array>,\n): ParsedRegisterEntryInstruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 18) {\n    throw new SolanaError(\n      SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS,\n      {\n        actualAccountMetas: instruction.accounts.length,\n        expectedAccountMetas: 18,\n      },\n    );\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: {\n      initializerConfig: getNextAccount(),\n      launch: getNextAccount(),\n      launchAuthority: getNextAccount(),\n      baseMint: getNextAccount(),\n      quoteMint: getNextAccount(),\n      baseVault: getNextAccount(),\n      quoteVault: getNextAccount(),\n      payer: getNextAccount(),\n      baseTokenProgram: getNextAccount(),\n      quoteTokenProgram: getNextAccount(),\n      systemProgram: getNextAccount(),\n      rent: getNextAccount(),\n      oracle: getNextAccount(),\n      market: getNextAccount(),\n      potVault: getNextAccount(),\n      marketAuthority: getNextAccount(),\n      entry: getNextAccount(),\n      entryByMint: getNextAccount(),\n    },\n    data: getRegisterEntryInstructionDataDecoder().decode(instruction.data),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  assertIsInstructionWithAccounts,\n  containsBytes,\n  fixEncoderSize,\n  getBytesEncoder,\n  SOLANA_ERROR__PROGRAM_CLIENTS__FAILED_TO_IDENTIFY_ACCOUNT,\n  SOLANA_ERROR__PROGRAM_CLIENTS__FAILED_TO_IDENTIFY_INSTRUCTION,\n  SOLANA_ERROR__PROGRAM_CLIENTS__UNRECOGNIZED_INSTRUCTION_TYPE,\n  SolanaError,\n  type Address,\n  type ClientWithPayer,\n  type ClientWithRpc,\n  type ClientWithTransactionPlanning,\n  type ClientWithTransactionSending,\n  type GetAccountInfoApi,\n  type GetMultipleAccountsApi,\n  type Instruction,\n  type InstructionWithData,\n  type ReadonlyUint8Array,\n} from '@solana/kit';\nimport {\n  addSelfFetchFunctions,\n  addSelfPlanAndSendFunctions,\n  type SelfFetchFunctions,\n  type SelfPlanAndSendFunctions,\n} from '@solana/program-client-core';\nimport {\n  getClaimReceiptCodec,\n  getEntryByMintCodec,\n  getEntryCodec,\n  getInitConfigCodec,\n  getLaunchCodec,\n  getMarketCodec,\n  getOracleStateCodec,\n  type ClaimReceipt,\n  type ClaimReceiptArgs,\n  type Entry,\n  type EntryArgs,\n  type EntryByMint,\n  type EntryByMintArgs,\n  type InitConfig,\n  type InitConfigArgs,\n  type Launch,\n  type LaunchArgs,\n  type Market,\n  type MarketArgs,\n  type OracleState,\n  type OracleStateArgs,\n} from '../accounts';\nimport {\n  getClaimInstructionAsync,\n  getMigrateEntryInstructionAsync,\n  getPreviewPayoutIfWinnerInstruction,\n  getRegisterEntryInstructionAsync,\n  parseClaimInstruction,\n  parseMigrateEntryInstruction,\n  parsePreviewPayoutIfWinnerInstruction,\n  parseRegisterEntryInstruction,\n  type ClaimAsyncInput,\n  type MigrateEntryAsyncInput,\n  type ParsedClaimInstruction,\n  type ParsedMigrateEntryInstruction,\n  type ParsedPreviewPayoutIfWinnerInstruction,\n  type ParsedRegisterEntryInstruction,\n  type PreviewPayoutIfWinnerInput,\n  type RegisterEntryAsyncInput,\n} from '../instructions';\n\nexport const PREDICTION_MIGRATOR_PROGRAM_ADDRESS =\n  'HYHdyy7QZg8Ucky9Z97xNtSCvrZxVNkeoney8xEPXjiZ' as Address<'HYHdyy7QZg8Ucky9Z97xNtSCvrZxVNkeoney8xEPXjiZ'>;\n\nexport enum PredictionMigratorAccount {\n  ClaimReceipt,\n  Entry,\n  EntryByMint,\n  InitConfig,\n  Launch,\n  Market,\n  OracleState,\n}\n\nexport function identifyPredictionMigratorAccount(\n  account: { data: ReadonlyUint8Array } | ReadonlyUint8Array,\n): PredictionMigratorAccount {\n  const data = 'data' in account ? account.data : account;\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([223, 233, 11, 229, 124, 165, 207, 28]),\n      ),\n      0,\n    )\n  ) {\n    return PredictionMigratorAccount.ClaimReceipt;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([63, 18, 152, 113, 215, 246, 221, 250]),\n      ),\n      0,\n    )\n  ) {\n    return PredictionMigratorAccount.Entry;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([188, 191, 157, 194, 68, 82, 181, 126]),\n      ),\n      0,\n    )\n  ) {\n    return PredictionMigratorAccount.EntryByMint;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([97, 166, 35, 7, 20, 2, 164, 126]),\n      ),\n      0,\n    )\n  ) {\n    return PredictionMigratorAccount.InitConfig;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([144, 51, 51, 163, 206, 85, 213, 38]),\n      ),\n      0,\n    )\n  ) {\n    return PredictionMigratorAccount.Launch;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([219, 190, 213, 55, 0, 227, 198, 154]),\n      ),\n      0,\n    )\n  ) {\n    return PredictionMigratorAccount.Market;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([97, 156, 157, 189, 194, 73, 8, 15]),\n      ),\n      0,\n    )\n  ) {\n    return PredictionMigratorAccount.OracleState;\n  }\n  throw new SolanaError(\n    SOLANA_ERROR__PROGRAM_CLIENTS__FAILED_TO_IDENTIFY_ACCOUNT,\n    { accountData: data, programName: 'predictionMigrator' },\n  );\n}\n\nexport enum PredictionMigratorInstruction {\n  Claim,\n  MigrateEntry,\n  PreviewPayoutIfWinner,\n  RegisterEntry,\n}\n\nexport function identifyPredictionMigratorInstruction(\n  instruction: { data: ReadonlyUint8Array } | ReadonlyUint8Array,\n): PredictionMigratorInstruction {\n  const data = 'data' in instruction ? instruction.data : instruction;\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([62, 198, 214, 193, 213, 159, 108, 210]),\n      ),\n      0,\n    )\n  ) {\n    return PredictionMigratorInstruction.Claim;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([239, 154, 55, 173, 110, 36, 188, 214]),\n      ),\n      0,\n    )\n  ) {\n    return PredictionMigratorInstruction.MigrateEntry;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([228, 144, 72, 185, 234, 186, 183, 143]),\n      ),\n      0,\n    )\n  ) {\n    return PredictionMigratorInstruction.PreviewPayoutIfWinner;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([198, 25, 1, 183, 73, 219, 215, 14]),\n      ),\n      0,\n    )\n  ) {\n    return PredictionMigratorInstruction.RegisterEntry;\n  }\n  throw new SolanaError(\n    SOLANA_ERROR__PROGRAM_CLIENTS__FAILED_TO_IDENTIFY_INSTRUCTION,\n    { instructionData: data, programName: 'predictionMigrator' },\n  );\n}\n\nexport type ParsedPredictionMigratorInstruction<\n  TProgram extends string = 'HYHdyy7QZg8Ucky9Z97xNtSCvrZxVNkeoney8xEPXjiZ',\n> =\n  | ({\n      instructionType: PredictionMigratorInstruction.Claim;\n    } & ParsedClaimInstruction<TProgram>)\n  | ({\n      instructionType: PredictionMigratorInstruction.MigrateEntry;\n    } & ParsedMigrateEntryInstruction<TProgram>)\n  | ({\n      instructionType: PredictionMigratorInstruction.PreviewPayoutIfWinner;\n    } & ParsedPreviewPayoutIfWinnerInstruction<TProgram>)\n  | ({\n      instructionType: PredictionMigratorInstruction.RegisterEntry;\n    } & ParsedRegisterEntryInstruction<TProgram>);\n\nexport function parsePredictionMigratorInstruction<TProgram extends string>(\n  instruction: Instruction<TProgram> & InstructionWithData<ReadonlyUint8Array>,\n): ParsedPredictionMigratorInstruction<TProgram> {\n  const instructionType = identifyPredictionMigratorInstruction(instruction);\n  switch (instructionType) {\n    case PredictionMigratorInstruction.Claim: {\n      assertIsInstructionWithAccounts(instruction);\n      return {\n        instructionType: PredictionMigratorInstruction.Claim,\n        ...parseClaimInstruction(instruction),\n      };\n    }\n    case PredictionMigratorInstruction.MigrateEntry: {\n      assertIsInstructionWithAccounts(instruction);\n      return {\n        instructionType: PredictionMigratorInstruction.MigrateEntry,\n        ...parseMigrateEntryInstruction(instruction),\n      };\n    }\n    case PredictionMigratorInstruction.PreviewPayoutIfWinner: {\n      assertIsInstructionWithAccounts(instruction);\n      return {\n        instructionType: PredictionMigratorInstruction.PreviewPayoutIfWinner,\n        ...parsePreviewPayoutIfWinnerInstruction(instruction),\n      };\n    }\n    case PredictionMigratorInstruction.RegisterEntry: {\n      assertIsInstructionWithAccounts(instruction);\n      return {\n        instructionType: PredictionMigratorInstruction.RegisterEntry,\n        ...parseRegisterEntryInstruction(instruction),\n      };\n    }\n    default:\n      throw new SolanaError(\n        SOLANA_ERROR__PROGRAM_CLIENTS__UNRECOGNIZED_INSTRUCTION_TYPE,\n        {\n          instructionType: instructionType as string,\n          programName: 'predictionMigrator',\n        },\n      );\n  }\n}\n\nexport type PredictionMigratorPlugin = {\n  accounts: PredictionMigratorPluginAccounts;\n  instructions: PredictionMigratorPluginInstructions;\n};\n\nexport type PredictionMigratorPluginAccounts = {\n  claimReceipt: ReturnType<typeof getClaimReceiptCodec> &\n    SelfFetchFunctions<ClaimReceiptArgs, ClaimReceipt>;\n  entry: ReturnType<typeof getEntryCodec> &\n    SelfFetchFunctions<EntryArgs, Entry>;\n  entryByMint: ReturnType<typeof getEntryByMintCodec> &\n    SelfFetchFunctions<EntryByMintArgs, EntryByMint>;\n  initConfig: ReturnType<typeof getInitConfigCodec> &\n    SelfFetchFunctions<InitConfigArgs, InitConfig>;\n  launch: ReturnType<typeof getLaunchCodec> &\n    SelfFetchFunctions<LaunchArgs, Launch>;\n  market: ReturnType<typeof getMarketCodec> &\n    SelfFetchFunctions<MarketArgs, Market>;\n  oracleState: ReturnType<typeof getOracleStateCodec> &\n    SelfFetchFunctions<OracleStateArgs, OracleState>;\n};\n\nexport type PredictionMigratorPluginInstructions = {\n  claim: (\n    input: MakeOptional<ClaimAsyncInput, 'payer'>,\n  ) => ReturnType<typeof getClaimInstructionAsync> & SelfPlanAndSendFunctions;\n  migrateEntry: (\n    input: MakeOptional<MigrateEntryAsyncInput, 'payer'>,\n  ) => ReturnType<typeof getMigrateEntryInstructionAsync> &\n    SelfPlanAndSendFunctions;\n  previewPayoutIfWinner: (\n    input: PreviewPayoutIfWinnerInput,\n  ) => ReturnType<typeof getPreviewPayoutIfWinnerInstruction> &\n    SelfPlanAndSendFunctions;\n  registerEntry: (\n    input: MakeOptional<RegisterEntryAsyncInput, 'payer'>,\n  ) => ReturnType<typeof getRegisterEntryInstructionAsync> &\n    SelfPlanAndSendFunctions;\n};\n\nexport type PredictionMigratorPluginRequirements = ClientWithRpc<\n  GetAccountInfoApi & GetMultipleAccountsApi\n> &\n  ClientWithPayer &\n  ClientWithTransactionPlanning &\n  ClientWithTransactionSending;\n\nexport function predictionMigratorProgram() {\n  return <T extends PredictionMigratorPluginRequirements>(client: T) => {\n    return {\n      ...client,\n      predictionMigrator: <PredictionMigratorPlugin>{\n        accounts: {\n          claimReceipt: addSelfFetchFunctions(client, getClaimReceiptCodec()),\n          entry: addSelfFetchFunctions(client, getEntryCodec()),\n          entryByMint: addSelfFetchFunctions(client, getEntryByMintCodec()),\n          initConfig: addSelfFetchFunctions(client, getInitConfigCodec()),\n          launch: addSelfFetchFunctions(client, getLaunchCodec()),\n          market: addSelfFetchFunctions(client, getMarketCodec()),\n          oracleState: addSelfFetchFunctions(client, getOracleStateCodec()),\n        },\n        instructions: {\n          claim: (input) =>\n            addSelfPlanAndSendFunctions(\n              client,\n              getClaimInstructionAsync({\n                ...input,\n                payer: input.payer ?? client.payer,\n              }),\n            ),\n          migrateEntry: (input) =>\n            addSelfPlanAndSendFunctions(\n              client,\n              getMigrateEntryInstructionAsync({\n                ...input,\n                payer: input.payer ?? client.payer,\n              }),\n            ),\n          previewPayoutIfWinner: (input) =>\n            addSelfPlanAndSendFunctions(\n              client,\n              getPreviewPayoutIfWinnerInstruction(input),\n            ),\n          registerEntry: (input) =>\n            addSelfPlanAndSendFunctions(\n              client,\n              getRegisterEntryInstructionAsync({\n                ...input,\n                payer: input.payer ?? client.payer,\n              }),\n            ),\n        },\n      },\n    };\n  };\n}\n\ntype MakeOptional<T, K extends keyof T> = Omit<T, K> & Partial<Pick<T, K>>;\n","import {\n  type Address,\n  type ProgramDerivedAddress,\n  type ReadonlyUint8Array,\n  getAddressCodec,\n  getProgramDerivedAddress,\n} from '@solana/kit';\nimport { PREDICTION_MIGRATOR_PROGRAM_ADDRESS } from '../../generated/predictionMigrator/programs/predictionMigrator.js';\n\nconst addressCodec = getAddressCodec();\nconst textEncoder = new TextEncoder();\n\nexport async function getPredictionMarketAddress(\n  oracleState: Address,\n  quoteMint: Address,\n  programId: Address = PREDICTION_MIGRATOR_PROGRAM_ADDRESS,\n): Promise<ProgramDerivedAddress> {\n  return getProgramDerivedAddress({\n    programAddress: programId,\n    seeds: [\n      textEncoder.encode('market'),\n      addressCodec.encode(oracleState),\n      addressCodec.encode(quoteMint),\n    ],\n  });\n}\n\nexport async function getPredictionMarketAuthorityAddress(\n  market: Address,\n  programId: Address = PREDICTION_MIGRATOR_PROGRAM_ADDRESS,\n): Promise<ProgramDerivedAddress> {\n  return getProgramDerivedAddress({\n    programAddress: programId,\n    seeds: [\n      textEncoder.encode('market_authority'),\n      addressCodec.encode(market),\n    ],\n  });\n}\n\nexport async function getPredictionPotVaultAddress(\n  market: Address,\n  programId: Address = PREDICTION_MIGRATOR_PROGRAM_ADDRESS,\n): Promise<ProgramDerivedAddress> {\n  return getProgramDerivedAddress({\n    programAddress: programId,\n    seeds: [textEncoder.encode('pot_vault'), addressCodec.encode(market)],\n  });\n}\n\nexport async function getPredictionEntryAddress(\n  market: Address,\n  entryId: ReadonlyUint8Array | Uint8Array,\n  programId: Address = PREDICTION_MIGRATOR_PROGRAM_ADDRESS,\n): Promise<ProgramDerivedAddress> {\n  return getProgramDerivedAddress({\n    programAddress: programId,\n    seeds: [textEncoder.encode('entry'), addressCodec.encode(market), entryId],\n  });\n}\n\nexport async function getPredictionEntryByMintAddress(\n  market: Address,\n  mint: Address,\n  programId: Address = PREDICTION_MIGRATOR_PROGRAM_ADDRESS,\n): Promise<ProgramDerivedAddress> {\n  return getProgramDerivedAddress({\n    programAddress: programId,\n    seeds: [\n      textEncoder.encode('entry_by_mint'),\n      addressCodec.encode(market),\n      addressCodec.encode(mint),\n    ],\n  });\n}\n","import type {\n  Address,\n  Instruction,\n  AccountMeta,\n  AccountSignerMeta,\n  ReadonlyUint8Array,\n} from '@solana/kit';\nimport {\n  AccountRole,\n  getProgramDerivedAddress,\n  getAddressEncoder,\n} from '@solana/kit';\nimport {\n  SYSTEM_PROGRAM_ADDRESS,\n  SYSVAR_INSTRUCTIONS_ADDRESS,\n  TOKEN_2022_PROGRAM_ADDRESS,\n  TOKEN_PROGRAM_ADDRESS,\n  TOKEN_METADATA_PROGRAM_ID,\n} from '../../core/constants.js';\nimport {\n  createAccountMeta,\n  getAddressFromAddressOrSigner,\n  isTransactionSigner,\n  type AddressOrTransactionSigner,\n} from '../../core/accounts.js';\nimport {\n  CURVE_KIND_XYK,\n  CURVE_PARAMS_FORMAT_XYK_V0,\n  INITIALIZER_PROGRAM_ID,\n  HF_AFTER_CREATE,\n  HF_BEFORE_CREATE,\n} from '../constants.js';\nimport { computeRemainingAccountsHash } from '../helpers.js';\nimport { CPMM_MIGRATOR_PROGRAM_ID } from '../../migrators/cpmmMigrator/constants.js';\nimport { getCpmmMigratorStateAddress } from '../../migrators/cpmmMigrator/pda.js';\nimport { PREDICTION_MIGRATOR_PROGRAM_ADDRESS } from '../../generated/predictionMigrator/programs/predictionMigrator.js';\nimport {\n  getPredictionMarketAddress,\n  getPredictionMarketAuthorityAddress,\n  getPredictionPotVaultAddress,\n  getPredictionEntryAddress,\n  getPredictionEntryByMintAddress,\n} from '../../migrators/predictionMigrator/pda.js';\nimport { getLaunchFeeStateAddress } from '../pda.js';\nimport type { InitializeLaunchArgsArgs } from '../../generated/initializer/index.js';\nimport { getInitializeLaunchInstructionDataEncoder } from '../../generated/initializer/index.js';\n\n/**\n * Public params for createInitializeLaunchInstruction.\n * - allowBuy / allowSell are boolean; converted to u8 wire format (1/0).\n * - migratorProgram is omitted — it is derived from accounts.migratorProgram\n *   so callers do not need to repeat it in both the accounts object and args.\n */\nexport type InitializeLaunchParams = Omit<\n  InitializeLaunchArgsArgs,\n  | 'allowBuy'\n  | 'allowSell'\n  | 'hookProgram'\n  | 'migratorProgram'\n  | 'hookCreateRemainingAccountsLen'\n  | 'hookCreateRemainingAccountsHash'\n  | 'swapFeeBps'\n  | 'feeBeneficiaries'\n> & {\n  allowBuy: boolean;\n  allowSell: boolean;\n  swapFeeBps?: number;\n  /** @deprecated Use swapFeeBps. */\n  curveFeeBps?: number;\n  feeBeneficiaries?: InitializeLaunchArgsArgs['feeBeneficiaries'];\n  hookCreateRemainingAccountsLen?: number;\n  hookCreateRemainingAccountsHash?: ReadonlyUint8Array;\n};\n\ntype AddressOrSigner = AddressOrTransactionSigner;\ntype ReadonlyRemainingAccount = AddressOrSigner;\n\n/**\n * Derive the Metaplex token metadata PDA for a given mint.\n * Seeds: [\"metadata\", TOKEN_METADATA_PROGRAM_ID, mint]\n *\n * Pass the result as `metadataAccount` in InitializeLaunchAccounts\n * whenever `metadataName` is non-empty.\n */\nexport async function getTokenMetadataAddress(mint: Address): Promise<Address> {\n  const encoder = getAddressEncoder();\n  const [metadataAddress] = await getProgramDerivedAddress({\n    programAddress: TOKEN_METADATA_PROGRAM_ID,\n    seeds: [\n      new TextEncoder().encode('metadata'),\n      encoder.encode(TOKEN_METADATA_PROGRAM_ID),\n      encoder.encode(mint),\n    ],\n  });\n  return metadataAddress;\n}\n\nexport interface InitializeLaunchAccounts {\n  config: Address;\n  launch: Address;\n  launchAuthority: Address;\n  baseMint: AddressOrSigner;\n  quoteMint: Address;\n  baseVault: AddressOrSigner;\n  quoteVault: AddressOrSigner;\n  launchFeeState?: Address;\n  payer: AddressOrSigner;\n  authority?: AddressOrSigner;\n  hookProgram?: Address;\n  migratorProgram?: Address;\n  baseTokenProgram?: Address;\n  quoteTokenProgram?: Address;\n  systemProgram?: Address;\n  rent: Address;\n  /** Required when args.metadataName is non-empty. Derive with getTokenMetadataAddress(baseMint). */\n  metadataAccount?: Address;\n  metadataProgram?: Address;\n  /** Immutable vesting config committed to this launch. */\n  vestingConfig?: Address;\n  /** Required when migratorProgram is the CPMM migrator. */\n  cpmmConfig?: Address;\n  /**\n   * Remaining accounts committed to initialize_launch create hooks.\n   * These are forwarded as readonly metas; TransactionSigner values are\n   * forwarded as readonly signers.\n   */\n  hookCreateRemainingAccounts?: ReadonlyArray<ReadonlyRemainingAccount>;\n}\n\nfunction validateInitializeLaunchCurveParams(\n  args: InitializeLaunchParams,\n): void {\n  if (args.curveKind !== CURVE_KIND_XYK) {\n    throw new Error(\n      `unsupported curve kind: ${args.curveKind}; only CURVE_KIND_XYK is currently enabled`,\n    );\n  }\n  if (\n    args.curveParams.length !== 1 ||\n    args.curveParams[0] !== CURVE_PARAMS_FORMAT_XYK_V0\n  ) {\n    throw new Error('xyk curve params must be [CURVE_PARAMS_FORMAT_XYK_V0]');\n  }\n}\n\nexport async function createInitializeLaunchInstruction(\n  accounts: InitializeLaunchAccounts,\n  args: InitializeLaunchParams,\n  programId: Address = INITIALIZER_PROGRAM_ID,\n): Promise<Instruction> {\n  validateInitializeLaunchCurveParams(args);\n\n  const {\n    config,\n    launch,\n    launchAuthority,\n    baseMint,\n    quoteMint,\n    baseVault,\n    quoteVault,\n    launchFeeState,\n    payer,\n    authority,\n    hookProgram,\n    migratorProgram,\n    baseTokenProgram = TOKEN_PROGRAM_ADDRESS,\n    quoteTokenProgram = TOKEN_PROGRAM_ADDRESS,\n    systemProgram = SYSTEM_PROGRAM_ADDRESS,\n    rent,\n    metadataAccount,\n    metadataProgram = TOKEN_METADATA_PROGRAM_ID,\n    vestingConfig,\n    hookCreateRemainingAccounts = [],\n  } = accounts;\n\n  const withMetadata = Boolean(\n    args.metadataName && args.metadataName.length > 0,\n  );\n  const withToken2022Metadata =\n    withMetadata && baseTokenProgram === TOKEN_2022_PROGRAM_ADDRESS;\n\n  if (withMetadata && !metadataAccount) {\n    throw new Error(\n      'metadataName is set but metadataAccount was not provided. ' +\n        'Derive it with await initializer.getTokenMetadataAddress(baseMintAddress).',\n    );\n  }\n\n  const createHooksEnabled =\n    (args.hookFlags & (HF_BEFORE_CREATE | HF_AFTER_CREATE)) !== 0;\n  const hookCreateRemainingAccountAddresses = hookCreateRemainingAccounts.map(\n    getAddressFromAddressOrSigner,\n  );\n  const swapFeeBps = args.swapFeeBps ?? args.curveFeeBps;\n  if (swapFeeBps === undefined) {\n    throw new Error('swapFeeBps is required');\n  }\n\n  const keys: (AccountMeta | AccountSignerMeta)[] = [\n    { address: config, role: AccountRole.READONLY },\n    { address: launch, role: AccountRole.WRITABLE },\n    { address: launchAuthority, role: AccountRole.READONLY },\n    createAccountMeta(baseMint, AccountRole.WRITABLE_SIGNER),\n    { address: quoteMint, role: AccountRole.READONLY },\n    createAccountMeta(baseVault, AccountRole.WRITABLE_SIGNER),\n    createAccountMeta(quoteVault, AccountRole.WRITABLE_SIGNER),\n    {\n      address:\n        launchFeeState ??\n        (await getLaunchFeeStateAddress(launch, programId))[0],\n      role: AccountRole.WRITABLE,\n    },\n    createAccountMeta(payer, AccountRole.WRITABLE_SIGNER),\n  ];\n\n  keys.push(\n    authority\n      ? createAccountMeta(authority, AccountRole.READONLY_SIGNER)\n      : { address: programId, role: AccountRole.READONLY },\n  );\n  keys.push(\n    hookProgram\n      ? { address: hookProgram, role: AccountRole.READONLY }\n      : { address: programId, role: AccountRole.READONLY },\n  );\n  keys.push(\n    migratorProgram\n      ? { address: migratorProgram, role: AccountRole.READONLY }\n      : { address: programId, role: AccountRole.READONLY },\n  );\n\n  keys.push({ address: baseTokenProgram, role: AccountRole.READONLY });\n  keys.push({ address: quoteTokenProgram, role: AccountRole.READONLY });\n  keys.push({ address: systemProgram, role: AccountRole.READONLY });\n  keys.push({ address: rent, role: AccountRole.READONLY });\n\n  if (withMetadata) {\n    keys.push({ address: metadataAccount!, role: AccountRole.WRITABLE });\n    keys.push({ address: metadataProgram, role: AccountRole.READONLY });\n  } else {\n    keys.push({ address: programId, role: AccountRole.READONLY });\n    keys.push({ address: programId, role: AccountRole.READONLY });\n  }\n\n  // Older Initializer deployments do not have the optional vesting account.\n  // A supplied config identifies the current layout for custom deployments.\n  if (programId === INITIALIZER_PROGRAM_ID || vestingConfig) {\n    keys.push(\n      vestingConfig\n        ? { address: vestingConfig, role: AccountRole.READONLY }\n        : { address: programId, role: AccountRole.READONLY },\n    );\n  }\n\n  const encoderArgs: InitializeLaunchArgsArgs = {\n    ...args,\n    swapFeeBps,\n    feeBeneficiaries: args.feeBeneficiaries ?? [],\n    allowBuy: args.allowBuy ? 1 : 0,\n    allowSell: args.allowSell ? 1 : 0,\n    hookCreateRemainingAccountsLen:\n      args.hookCreateRemainingAccountsLen ?? hookCreateRemainingAccounts.length,\n    hookCreateRemainingAccountsHash:\n      args.hookCreateRemainingAccountsHash ??\n      (createHooksEnabled\n        ? computeRemainingAccountsHash(hookCreateRemainingAccountAddresses)\n        : new Uint8Array(32)),\n  };\n\n  const data = new Uint8Array(\n    getInitializeLaunchInstructionDataEncoder().encode(encoderArgs),\n  );\n\n  if (withToken2022Metadata) {\n    keys.push({\n      address: SYSVAR_INSTRUCTIONS_ADDRESS,\n      role: AccountRole.READONLY,\n    });\n  }\n\n  keys.push(\n    ...hookCreateRemainingAccounts.map((account) =>\n      createAccountMeta(\n        account,\n        isTransactionSigner(account)\n          ? AccountRole.READONLY_SIGNER\n          : AccountRole.READONLY,\n      ),\n    ),\n  );\n\n  // When using the CPMM migrator, append the module-specific accounts required\n  // by register_launch. Custom deployments identify this path by passing\n  // cpmmConfig alongside their custom migrator program ID.\n  const shouldAppendCpmmMigratorAccounts =\n    accounts.cpmmConfig !== undefined ||\n    migratorProgram === CPMM_MIGRATOR_PROGRAM_ID;\n  if (shouldAppendCpmmMigratorAccounts) {\n    if (!migratorProgram) {\n      throw new Error(\n        'migratorProgram is required when cpmmConfig is provided',\n      );\n    }\n    if (!accounts.cpmmConfig) {\n      throw new Error('cpmmConfig is required when using the CPMM migrator');\n    }\n    const [cpmmMigrationState] = await getCpmmMigratorStateAddress(\n      launch,\n      migratorProgram,\n    );\n    keys.push({ address: cpmmMigrationState, role: AccountRole.WRITABLE });\n    keys.push({ address: accounts.cpmmConfig, role: AccountRole.READONLY });\n  }\n\n  // When using the prediction migrator, automatically derive and append the 6\n  // remaining accounts required by register_entry:\n  //   [oracle_state, market, pot_vault, market_authority, entry, entry_by_mint]\n  // namespace === oracle_state and launchId === entryId per program validation.\n  if (migratorProgram === PREDICTION_MIGRATOR_PROGRAM_ADDRESS) {\n    const oracleState = args.namespace as Address;\n    const entryId = args.launchId;\n    const baseMintAddress = getAddressFromAddressOrSigner(baseMint);\n\n    const [market] = await getPredictionMarketAddress(oracleState, quoteMint);\n    const [potVault] = await getPredictionPotVaultAddress(market);\n    const [marketAuthority] = await getPredictionMarketAuthorityAddress(market);\n    const [entry] = await getPredictionEntryAddress(market, entryId);\n    const [entryByMint] = await getPredictionEntryByMintAddress(\n      market,\n      baseMintAddress,\n    );\n\n    keys.push({ address: oracleState, role: AccountRole.READONLY });\n    keys.push({ address: market, role: AccountRole.WRITABLE });\n    keys.push({ address: potVault, role: AccountRole.WRITABLE });\n    keys.push({ address: marketAuthority, role: AccountRole.READONLY });\n    keys.push({ address: entry, role: AccountRole.WRITABLE });\n    keys.push({ address: entryByMint, role: AccountRole.WRITABLE });\n  }\n\n  return { programAddress: programId, accounts: keys, data };\n}\n","import type {\n  AccountMeta,\n  AccountSignerMeta,\n  Address,\n  Instruction,\n} from '@solana/kit';\nimport { AccountRole } from '@solana/kit';\nimport {\n  SYSTEM_PROGRAM_ADDRESS,\n  TOKEN_PROGRAM_ADDRESS,\n} from '../../core/constants.js';\nimport {\n  createAccountMeta,\n  createReadonlyRemainingAccountMeta,\n  type AddressOrTransactionSigner,\n  type RemainingAccount,\n} from '../../core/accounts.js';\nimport { INITIALIZER_PROGRAM_ID } from '../constants.js';\nimport { getCurveSwapExactInInstructionDataEncoder } from '../../generated/initializer/index.js';\n\nexport interface CurveSwapExactInAccounts {\n  launch: Address;\n  launchAuthority: Address;\n  baseVault: Address;\n  quoteVault: Address;\n  userBaseAccount: Address;\n  userQuoteAccount: Address;\n  baseMint: Address;\n  quoteMint: Address;\n  user: AddressOrTransactionSigner;\n  /** Pass the actual hook program address, or omit to use System Program as a no-op placeholder. */\n  hookProgram?: Address;\n  launchFeeState: Address;\n  baseTokenProgram?: Address;\n  quoteTokenProgram?: Address;\n  remainingAccounts?: RemainingAccount[];\n}\n\nexport function createCurveSwapExactInInstruction(\n  accounts: CurveSwapExactInAccounts,\n  args: { amountIn: bigint; minAmountOut: bigint; tradeDirection: number },\n  programId: Address = INITIALIZER_PROGRAM_ID,\n): Instruction {\n  const {\n    launch,\n    launchAuthority,\n    baseVault,\n    quoteVault,\n    userBaseAccount,\n    userQuoteAccount,\n    baseMint,\n    quoteMint,\n    user,\n    hookProgram = SYSTEM_PROGRAM_ADDRESS,\n    launchFeeState,\n    baseTokenProgram = TOKEN_PROGRAM_ADDRESS,\n    quoteTokenProgram = TOKEN_PROGRAM_ADDRESS,\n    remainingAccounts = [],\n  } = accounts;\n\n  const keys: (AccountMeta | AccountSignerMeta)[] = [\n    { address: launch, role: AccountRole.WRITABLE },\n    { address: launchAuthority, role: AccountRole.READONLY },\n    { address: baseVault, role: AccountRole.WRITABLE },\n    { address: quoteVault, role: AccountRole.WRITABLE },\n    { address: userBaseAccount, role: AccountRole.WRITABLE },\n    { address: userQuoteAccount, role: AccountRole.WRITABLE },\n    { address: baseMint, role: AccountRole.READONLY },\n    { address: quoteMint, role: AccountRole.READONLY },\n    createAccountMeta(user, AccountRole.READONLY_SIGNER),\n    // hook_program is Optional in the on-chain struct but still occupies a fixed\n    // slot (token_program follows it).  Always emit it — use SYSTEM_PROGRAM_ADDRESS as the\n    // no-op placeholder when no real hook is configured.\n    { address: hookProgram, role: AccountRole.READONLY },\n    { address: launchFeeState, role: AccountRole.WRITABLE },\n    { address: baseTokenProgram, role: AccountRole.READONLY },\n    { address: quoteTokenProgram, role: AccountRole.READONLY },\n    ...remainingAccounts.map(createReadonlyRemainingAccountMeta),\n  ];\n\n  const data = new Uint8Array(\n    getCurveSwapExactInInstructionDataEncoder().encode(args),\n  );\n\n  return { programAddress: programId, accounts: keys, data };\n}\n","import type {\n  Address,\n  Instruction,\n  AccountMeta,\n  AccountSignerMeta,\n} from '@solana/kit';\nimport { AccountRole } from '@solana/kit';\nimport {\n  SYSTEM_PROGRAM_ADDRESS,\n  TOKEN_PROGRAM_ADDRESS,\n} from '../../core/constants.js';\nimport {\n  createAccountMeta,\n  type AddressOrTransactionSigner,\n} from '../../core/accounts.js';\nimport {\n  INITIALIZER_INSTRUCTION_DISCRIMINATORS,\n  INITIALIZER_PROGRAM_ID,\n} from '../constants.js';\nimport { encodeInstructionData } from '../../core/codecs.js';\n\ntype AddressOrSigner = AddressOrTransactionSigner;\n\nexport interface MigrateLaunchAccounts {\n  config: Address;\n  launch: Address;\n  launchAuthority: Address;\n  baseMint: Address;\n  quoteMint: Address;\n  baseVault: Address;\n  quoteVault: Address;\n  launchFeeState: Address;\n  migratorProgram: Address;\n  payer: AddressOrSigner;\n  baseTokenProgram?: Address;\n  quoteTokenProgram?: Address;\n  systemProgram?: Address;\n  rent: Address;\n}\n\nexport function createMigrateLaunchInstruction(\n  accounts: MigrateLaunchAccounts,\n  programId: Address = INITIALIZER_PROGRAM_ID,\n): Instruction {\n  const {\n    config,\n    launch,\n    launchAuthority,\n    baseMint,\n    quoteMint,\n    baseVault,\n    quoteVault,\n    launchFeeState,\n    migratorProgram,\n    payer,\n    baseTokenProgram = TOKEN_PROGRAM_ADDRESS,\n    quoteTokenProgram = TOKEN_PROGRAM_ADDRESS,\n    systemProgram = SYSTEM_PROGRAM_ADDRESS,\n    rent,\n  } = accounts;\n\n  const keys: (AccountMeta | AccountSignerMeta)[] = [\n    { address: config, role: AccountRole.READONLY },\n    { address: launch, role: AccountRole.WRITABLE },\n    { address: launchAuthority, role: AccountRole.READONLY },\n    { address: baseMint, role: AccountRole.READONLY },\n    { address: quoteMint, role: AccountRole.READONLY },\n    { address: baseVault, role: AccountRole.WRITABLE },\n    { address: quoteVault, role: AccountRole.WRITABLE },\n    { address: launchFeeState, role: AccountRole.READONLY },\n    { address: migratorProgram, role: AccountRole.READONLY },\n    createAccountMeta(payer, AccountRole.WRITABLE_SIGNER),\n    { address: baseTokenProgram, role: AccountRole.READONLY },\n    { address: quoteTokenProgram, role: AccountRole.READONLY },\n    { address: systemProgram, role: AccountRole.READONLY },\n    { address: rent, role: AccountRole.READONLY },\n  ];\n\n  const data = encodeInstructionData(\n    INITIALIZER_INSTRUCTION_DISCRIMINATORS.migrateLaunch,\n  );\n\n  return { programAddress: programId, accounts: keys, data };\n}\n","import type { Address, Instruction } from '@solana/kit';\nimport { getStructCodec, getU64Codec, AccountRole } from '@solana/kit';\nimport {\n  createReadonlyRemainingAccountMeta,\n  type RemainingAccount,\n} from '../../core/accounts.js';\nimport { INITIALIZER_PROGRAM_ID } from '../constants.js';\nimport { getPreviewSwapExactInInstructionDataEncoder } from '../../generated/initializer/index.js';\n\nexport interface PreviewSwapExactInResult {\n  amountOut: bigint;\n  feePaid: bigint;\n}\n\nconst previewSwapExactInResultCodec = getStructCodec([\n  ['amountOut', getU64Codec()],\n  ['feePaid', getU64Codec()],\n]);\n\nexport interface PreviewSwapExactInAccounts {\n  launch: Address;\n  launchFeeState: Address;\n  baseVault: Address;\n  quoteVault: Address;\n  hookProgram?: Address;\n  remainingAccounts?: RemainingAccount[];\n}\n\nexport function createPreviewSwapExactInInstruction(\n  accounts: PreviewSwapExactInAccounts,\n  args: { amountIn: bigint; tradeDirection: number },\n  programId: Address = INITIALIZER_PROGRAM_ID,\n): Instruction {\n  const {\n    launch,\n    launchFeeState,\n    baseVault,\n    quoteVault,\n    hookProgram,\n    remainingAccounts = [],\n  } = accounts;\n\n  const keys = [\n    { address: launch, role: AccountRole.READONLY },\n    { address: launchFeeState, role: AccountRole.READONLY },\n    { address: baseVault, role: AccountRole.READONLY },\n    { address: quoteVault, role: AccountRole.READONLY },\n  ] as const;\n\n  const accountsList = hookProgram\n    ? [...keys, { address: hookProgram, role: AccountRole.READONLY }]\n    : keys;\n\n  const accountsWithRemaining = [\n    ...accountsList,\n    ...remainingAccounts.map(createReadonlyRemainingAccountMeta),\n  ];\n\n  const data = new Uint8Array(\n    getPreviewSwapExactInInstructionDataEncoder().encode(args),\n  );\n\n  return { programAddress: programId, accounts: accountsWithRemaining, data };\n}\n\nexport function decodePreviewSwapExactInResult(\n  data: Uint8Array,\n): PreviewSwapExactInResult {\n  return previewSwapExactInResultCodec.decode(data);\n}\n","import type { Address, Instruction } from '@solana/kit';\nimport { getStructCodec, getU64Codec, AccountRole } from '@solana/kit';\nimport {\n  INITIALIZER_INSTRUCTION_DISCRIMINATORS,\n  INITIALIZER_PROGRAM_ID,\n} from '../constants.js';\nimport { encodeInstructionData } from '../../core/codecs.js';\n\nexport interface PreviewMigrationResult {\n  baseVaultAmount: bigint;\n  quoteVaultAmount: bigint;\n  baseMintSupply: bigint;\n}\n\nconst previewMigrationResultCodec = getStructCodec([\n  ['baseVaultAmount', getU64Codec()],\n  ['quoteVaultAmount', getU64Codec()],\n  ['baseMintSupply', getU64Codec()],\n]);\n\nexport interface PreviewMigrationAccounts {\n  launch: Address;\n  baseMint: Address;\n  baseVault: Address;\n  quoteVault: Address;\n}\n\nexport function createPreviewMigrationInstruction(\n  accounts: PreviewMigrationAccounts,\n  programId: Address = INITIALIZER_PROGRAM_ID,\n): Instruction {\n  const { launch, baseMint, baseVault, quoteVault } = accounts;\n\n  const keys = [\n    { address: launch, role: AccountRole.READONLY },\n    { address: baseMint, role: AccountRole.READONLY },\n    { address: baseVault, role: AccountRole.READONLY },\n    { address: quoteVault, role: AccountRole.READONLY },\n  ];\n\n  const data = encodeInstructionData(\n    INITIALIZER_INSTRUCTION_DISCRIMINATORS.previewMigration,\n  );\n\n  return { programAddress: programId, accounts: keys, data };\n}\n\nexport function decodePreviewMigrationResult(\n  data: Uint8Array,\n): PreviewMigrationResult {\n  return previewMigrationResultCodec.decode(data);\n}\n","import { mergeBytes } from '@solana/kit';\nimport { SYSTEM_PROGRAM_ADDRESS } from '@solana-program/system';\nimport {\n  getRegisterLaunchArgsEncoder,\n  getMigrateArgsEncoder,\n  getCreateSpotPoolArgsEncoder,\n  type RegisterLaunchArgsArgs,\n  type MigrateArgsArgs,\n  type CreateSpotPoolArgsArgs,\n} from '../../generated/cpmmMigrator/index.js';\nimport { CPMM_MIGRATOR_INSTRUCTION_DISCRIMINATORS } from './constants.js';\nimport { assertSafeInteger } from './spotPool.js';\n\nexport {\n  CPMM_MIGRATOR_PROGRAM_ID,\n  SEED_STATE,\n  SEED_MIGRATION_AUTHORITY,\n  MAX_RECIPIENTS,\n  CPMM_MIGRATOR_INSTRUCTION_DISCRIMINATORS,\n  CPMM_MIGRATOR_ACCOUNT_DISCRIMINATORS,\n} from './constants.js';\n\nexport type {\n  Recipient,\n  RecipientArgs,\n  RegisterLaunchArgs,\n  RegisterLaunchArgsArgs,\n  MigratedPoolHookConfig,\n  MigratedPoolHookConfigArgs,\n  MigrateArgs,\n  MigrateArgsArgs,\n  CreateSpotPoolArgs,\n  CreateSpotPoolArgsArgs,\n  CpmmMigratorState,\n  CpmmMigratorStateArgs,\n  SpotPoolCreated,\n  SpotPoolCreatedArgs,\n} from '../../generated/cpmmMigrator/index.js';\n\nexport {\n  getCreateSpotPoolInstruction,\n  getCreateSpotPoolInstructionAsync,\n  getCreateSpotPoolInstructionDataEncoder,\n  getCreateSpotPoolInstructionDataDecoder,\n  getCreateSpotPoolInstructionDataCodec,\n  getCreateSpotPoolArgsEncoder,\n  getCreateSpotPoolArgsDecoder,\n  getCreateSpotPoolArgsCodec,\n  getRecipientEncoder,\n  getRecipientDecoder,\n  getRecipientCodec,\n  getRegisterLaunchArgsEncoder,\n  getRegisterLaunchArgsDecoder,\n  getRegisterLaunchArgsCodec,\n  getMigrateArgsEncoder,\n  getMigrateArgsDecoder,\n  getMigrateArgsCodec,\n  getCpmmMigratorStateEncoder,\n  getCpmmMigratorStateDecoder,\n  getCpmmMigratorStateCodec,\n} from '../../generated/cpmmMigrator/index.js';\n\nexport {\n  getCpmmMigrationAuthorityAddress,\n  getCpmmMigratorStateAddress,\n} from './pda.js';\n\nexport { fetchCpmmMigratorState } from './client.js';\nexport {\n  deriveSpotPoolAccounts,\n  createSpotPoolInstruction,\n  type DeriveSpotPoolAccountsInput,\n  type SpotPoolAccounts,\n  type AddressOrSigner,\n  type CreateSpotPoolInstruction,\n  type CreateSpotPoolInstructionInput,\n} from './spotPool.js';\n\nexport {\n  buildCpmmMigrationRemainingAccounts,\n  buildCpmmMigrationRemainingAccountsHash,\n  type CpmmMigrationRemainingAccounts,\n  type CpmmMigrationRemainingAccountsInput,\n} from './remainingAccounts.js';\n\nexport type RegisterLaunchPayloadArgs = Omit<\n  RegisterLaunchArgsArgs,\n  'migratedPoolHookConfig'\n> &\n  Partial<Pick<RegisterLaunchArgsArgs, 'migratedPoolHookConfig'>>;\n\nexport type CreateSpotPoolPayloadArgs = Omit<\n  CreateSpotPoolArgsArgs,\n  'hookProgram' | 'hookFlags'\n> &\n  Partial<Pick<CreateSpotPoolArgsArgs, 'hookProgram' | 'hookFlags'>>;\n\nexport function encodeCreateSpotPoolPayload(\n  args: CreateSpotPoolPayloadArgs,\n): Uint8Array {\n  assertSafeInteger('positionId', args.positionId);\n  assertSafeInteger('amount0Max', args.amount0Max);\n  assertSafeInteger('amount1Max', args.amount1Max);\n  assertSafeInteger('minSharesOut', args.minSharesOut);\n  const encoded = new Uint8Array(\n    getCreateSpotPoolArgsEncoder().encode({\n      ...args,\n      hookProgram: args.hookProgram ?? SYSTEM_PROGRAM_ADDRESS,\n      hookFlags: args.hookFlags ?? 0,\n    }),\n  );\n  return mergeBytes([\n    CPMM_MIGRATOR_INSTRUCTION_DISCRIMINATORS.createSpotPool,\n    encoded,\n  ]);\n}\n\nexport function encodeRegisterLaunchPayload(\n  args: RegisterLaunchPayloadArgs,\n): Uint8Array {\n  const encoded = new Uint8Array(\n    getRegisterLaunchArgsEncoder().encode({\n      ...args,\n      migratedPoolHookConfig: args.migratedPoolHookConfig ?? null,\n    }),\n  );\n  return mergeBytes([\n    CPMM_MIGRATOR_INSTRUCTION_DISCRIMINATORS.registerLaunch,\n    encoded,\n  ]);\n}\n\nexport function encodeMigratePayload(args: MigrateArgsArgs): Uint8Array {\n  const encoded = new Uint8Array(getMigrateArgsEncoder().encode(args));\n  return mergeBytes([\n    CPMM_MIGRATOR_INSTRUCTION_DISCRIMINATORS.migrate,\n    encoded,\n  ]);\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  getAddressDecoder,\n  getAddressEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU128Decoder,\n  getU128Encoder,\n  getU16Decoder,\n  getU16Encoder,\n  getU32Decoder,\n  getU32Encoder,\n  getU64Decoder,\n  getU64Encoder,\n  type Address,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n} from '@solana/kit';\n\nexport type CreateSpotPoolArgs = {\n  swapFeeBps: number;\n  positionId: bigint;\n  amount0Max: bigint;\n  amount1Max: bigint;\n  minSharesOut: bigint;\n  /**\n   * `Pubkey::default()` creates a hookless spot pool (unchanged legacy path).\n   * Any other value creates a hooked spot pool whose address commits to the\n   * hook program and flags.\n   */\n  hookProgram: Address;\n  hookFlags: number;\n};\n\nexport type CreateSpotPoolArgsArgs = {\n  swapFeeBps: number;\n  positionId: number | bigint;\n  amount0Max: number | bigint;\n  amount1Max: number | bigint;\n  minSharesOut: number | bigint;\n  /**\n   * `Pubkey::default()` creates a hookless spot pool (unchanged legacy path).\n   * Any other value creates a hooked spot pool whose address commits to the\n   * hook program and flags.\n   */\n  hookProgram: Address;\n  hookFlags: number;\n};\n\nexport function getCreateSpotPoolArgsEncoder(): FixedSizeEncoder<CreateSpotPoolArgsArgs> {\n  return getStructEncoder([\n    ['swapFeeBps', getU16Encoder()],\n    ['positionId', getU64Encoder()],\n    ['amount0Max', getU64Encoder()],\n    ['amount1Max', getU64Encoder()],\n    ['minSharesOut', getU128Encoder()],\n    ['hookProgram', getAddressEncoder()],\n    ['hookFlags', getU32Encoder()],\n  ]);\n}\n\nexport function getCreateSpotPoolArgsDecoder(): FixedSizeDecoder<CreateSpotPoolArgs> {\n  return getStructDecoder([\n    ['swapFeeBps', getU16Decoder()],\n    ['positionId', getU64Decoder()],\n    ['amount0Max', getU64Decoder()],\n    ['amount1Max', getU64Decoder()],\n    ['minSharesOut', getU128Decoder()],\n    ['hookProgram', getAddressDecoder()],\n    ['hookFlags', getU32Decoder()],\n  ]);\n}\n\nexport function getCreateSpotPoolArgsCodec(): FixedSizeCodec<\n  CreateSpotPoolArgsArgs,\n  CreateSpotPoolArgs\n> {\n  return combineCodec(\n    getCreateSpotPoolArgsEncoder(),\n    getCreateSpotPoolArgsDecoder(),\n  );\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  getStructDecoder,\n  getStructEncoder,\n  getU64Decoder,\n  getU64Encoder,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n} from '@solana/kit';\n\n/**\n * Arguments for migrate instruction.\n * These are deserialized from the migrator_migrate_payload passed by initializer.\n */\nexport type MigrateArgs = {\n  /** Base tokens reserved for distribution to recipients */\n  baseForDistribution: bigint;\n  /** Base tokens reserved for CPMM liquidity */\n  baseForLiquidity: bigint;\n};\n\nexport type MigrateArgsArgs = {\n  /** Base tokens reserved for distribution to recipients */\n  baseForDistribution: number | bigint;\n  /** Base tokens reserved for CPMM liquidity */\n  baseForLiquidity: number | bigint;\n};\n\nexport function getMigrateArgsEncoder(): FixedSizeEncoder<MigrateArgsArgs> {\n  return getStructEncoder([\n    ['baseForDistribution', getU64Encoder()],\n    ['baseForLiquidity', getU64Encoder()],\n  ]);\n}\n\nexport function getMigrateArgsDecoder(): FixedSizeDecoder<MigrateArgs> {\n  return getStructDecoder([\n    ['baseForDistribution', getU64Decoder()],\n    ['baseForLiquidity', getU64Decoder()],\n  ]);\n}\n\nexport function getMigrateArgsCodec(): FixedSizeCodec<\n  MigrateArgsArgs,\n  MigrateArgs\n> {\n  return combineCodec(getMigrateArgsEncoder(), getMigrateArgsDecoder());\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  getAddressDecoder,\n  getAddressEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU32Decoder,\n  getU32Encoder,\n  type Address,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n} from '@solana/kit';\n\nexport type MigratedPoolHookConfig = {\n  hookProgram: Address;\n  hookFlags: number;\n};\n\nexport type MigratedPoolHookConfigArgs = MigratedPoolHookConfig;\n\nexport function getMigratedPoolHookConfigEncoder(): FixedSizeEncoder<MigratedPoolHookConfigArgs> {\n  return getStructEncoder([\n    ['hookProgram', getAddressEncoder()],\n    ['hookFlags', getU32Encoder()],\n  ]);\n}\n\nexport function getMigratedPoolHookConfigDecoder(): FixedSizeDecoder<MigratedPoolHookConfig> {\n  return getStructDecoder([\n    ['hookProgram', getAddressDecoder()],\n    ['hookFlags', getU32Decoder()],\n  ]);\n}\n\nexport function getMigratedPoolHookConfigCodec(): FixedSizeCodec<\n  MigratedPoolHookConfigArgs,\n  MigratedPoolHookConfig\n> {\n  return combineCodec(\n    getMigratedPoolHookConfigEncoder(),\n    getMigratedPoolHookConfigDecoder(),\n  );\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  getAddressDecoder,\n  getAddressEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU64Decoder,\n  getU64Encoder,\n  type Address,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n} from '@solana/kit';\n\nexport type Recipient = { wallet: Address; amount: bigint };\n\nexport type RecipientArgs = { wallet: Address; amount: number | bigint };\n\nexport function getRecipientEncoder(): FixedSizeEncoder<RecipientArgs> {\n  return getStructEncoder([\n    ['wallet', getAddressEncoder()],\n    ['amount', getU64Encoder()],\n  ]);\n}\n\nexport function getRecipientDecoder(): FixedSizeDecoder<Recipient> {\n  return getStructDecoder([\n    ['wallet', getAddressDecoder()],\n    ['amount', getU64Decoder()],\n  ]);\n}\n\nexport function getRecipientCodec(): FixedSizeCodec<RecipientArgs, Recipient> {\n  return combineCodec(getRecipientEncoder(), getRecipientDecoder());\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  getAddressDecoder,\n  getAddressEncoder,\n  getArrayDecoder,\n  getArrayEncoder,\n  getOptionDecoder,\n  getOptionEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU128Decoder,\n  getU128Encoder,\n  getU16Decoder,\n  getU16Encoder,\n  getU64Decoder,\n  getU64Encoder,\n  type Address,\n  type Codec,\n  type Decoder,\n  type Encoder,\n  type Option,\n  type OptionOrNullable,\n} from '@solana/kit';\nimport {\n  getMigratedPoolHookConfigDecoder,\n  getMigratedPoolHookConfigEncoder,\n  getRecipientDecoder,\n  getRecipientEncoder,\n  type MigratedPoolHookConfig,\n  type MigratedPoolHookConfigArgs,\n  type Recipient,\n  type RecipientArgs,\n} from '.';\n\n/**\n * Arguments for register_launch instruction.\n * These are deserialized from the migrator_init_payload passed by initializer.\n */\nexport type RegisterLaunchArgs = {\n  cpmmConfig: Address;\n  initialSwapFeeBps: number;\n  initialFeeSplitBps: number;\n  recipients: Array<Recipient>;\n  minRaiseQuote: bigint;\n  minMigrationPriceQ64Opt: Option<bigint>;\n  migratedPoolHookConfig: Option<MigratedPoolHookConfig>;\n};\n\nexport type RegisterLaunchArgsArgs = {\n  cpmmConfig: Address;\n  initialSwapFeeBps: number;\n  initialFeeSplitBps: number;\n  recipients: Array<RecipientArgs>;\n  minRaiseQuote: number | bigint;\n  minMigrationPriceQ64Opt: OptionOrNullable<number | bigint>;\n  migratedPoolHookConfig: OptionOrNullable<MigratedPoolHookConfigArgs>;\n};\n\nexport function getRegisterLaunchArgsEncoder(): Encoder<RegisterLaunchArgsArgs> {\n  return getStructEncoder([\n    ['cpmmConfig', getAddressEncoder()],\n    ['initialSwapFeeBps', getU16Encoder()],\n    ['initialFeeSplitBps', getU16Encoder()],\n    ['recipients', getArrayEncoder(getRecipientEncoder())],\n    ['minRaiseQuote', getU64Encoder()],\n    ['minMigrationPriceQ64Opt', getOptionEncoder(getU128Encoder())],\n    [\n      'migratedPoolHookConfig',\n      getOptionEncoder(getMigratedPoolHookConfigEncoder()),\n    ],\n  ]);\n}\n\nexport function getRegisterLaunchArgsDecoder(): Decoder<RegisterLaunchArgs> {\n  return getStructDecoder([\n    ['cpmmConfig', getAddressDecoder()],\n    ['initialSwapFeeBps', getU16Decoder()],\n    ['initialFeeSplitBps', getU16Decoder()],\n    ['recipients', getArrayDecoder(getRecipientDecoder())],\n    ['minRaiseQuote', getU64Decoder()],\n    ['minMigrationPriceQ64Opt', getOptionDecoder(getU128Decoder())],\n    [\n      'migratedPoolHookConfig',\n      getOptionDecoder(getMigratedPoolHookConfigDecoder()),\n    ],\n  ]);\n}\n\nexport function getRegisterLaunchArgsCodec(): Codec<\n  RegisterLaunchArgsArgs,\n  RegisterLaunchArgs\n> {\n  return combineCodec(\n    getRegisterLaunchArgsEncoder(),\n    getRegisterLaunchArgsDecoder(),\n  );\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  assertAccountExists,\n  assertAccountsExist,\n  combineCodec,\n  decodeAccount,\n  fetchEncodedAccount,\n  fetchEncodedAccounts,\n  fixDecoderSize,\n  fixEncoderSize,\n  getAddressDecoder,\n  getAddressEncoder,\n  getArrayDecoder,\n  getArrayEncoder,\n  getBooleanDecoder,\n  getBooleanEncoder,\n  getBytesDecoder,\n  getBytesEncoder,\n  getOptionDecoder,\n  getOptionEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU128Decoder,\n  getU128Encoder,\n  getU16Decoder,\n  getU16Encoder,\n  getU32Decoder,\n  getU32Encoder,\n  getU64Decoder,\n  getU64Encoder,\n  getU8Decoder,\n  getU8Encoder,\n  transformEncoder,\n  type Account,\n  type Address,\n  type Codec,\n  type Decoder,\n  type EncodedAccount,\n  type Encoder,\n  type FetchAccountConfig,\n  type FetchAccountsConfig,\n  type MaybeAccount,\n  type MaybeEncodedAccount,\n  type Option,\n  type OptionOrNullable,\n  type ReadonlyUint8Array,\n} from '@solana/kit';\nimport {\n  getRecipientDecoder,\n  getRecipientEncoder,\n  type Recipient,\n  type RecipientArgs,\n} from '../types';\n\nexport const CPMM_MIGRATOR_STATE_DISCRIMINATOR = new Uint8Array([\n  169, 86, 255, 187, 37, 248, 11, 176,\n]);\n\nexport function getCpmmMigratorStateDiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(\n    CPMM_MIGRATOR_STATE_DISCRIMINATOR,\n  );\n}\n\nexport type CpmmMigratorState = {\n  discriminator: ReadonlyUint8Array;\n  /** The launch this state is associated with */\n  launch: Address;\n  /** Admin who registered this launch (receives unsold curve base tokens) */\n  admin: Address;\n  /** CPMM config to use for pool initialization */\n  cpmmConfig: Address;\n  /** Initial swap fee for the CPMM pool (basis points) */\n  initialSwapFeeBps: number;\n  /** Initial fee split for the CPMM pool (basis points) */\n  initialFeeSplitBps: number;\n  /** Padding for alignment */\n  pad0: ReadonlyUint8Array;\n  /** Hook program to set on the migrated CPMM pool */\n  migratedPoolHookProgram: Address;\n  /** Hook flags to set on the migrated CPMM pool */\n  migratedPoolHookFlags: number;\n  /** Recipients for base token distribution at migration */\n  recipients: Array<Recipient>;\n  /** Minimum quote tokens required to migrate */\n  minRaiseQuote: bigint;\n  /** Optional minimum price floor (Q64 fixed point) */\n  minMigrationPriceQ64Opt: Option<bigint>;\n  /** Whether this launch has been migrated */\n  isMigrated: boolean;\n  /** Bump seed for this PDA */\n  bump: number;\n  /** Reserved for future use */\n  reserved: ReadonlyUint8Array;\n};\n\nexport type CpmmMigratorStateArgs = {\n  /** The launch this state is associated with */\n  launch: Address;\n  /** Admin who registered this launch (receives unsold curve base tokens) */\n  admin: Address;\n  /** CPMM config to use for pool initialization */\n  cpmmConfig: Address;\n  /** Initial swap fee for the CPMM pool (basis points) */\n  initialSwapFeeBps: number;\n  /** Initial fee split for the CPMM pool (basis points) */\n  initialFeeSplitBps: number;\n  /** Padding for alignment */\n  pad0: ReadonlyUint8Array;\n  /** Hook program to set on the migrated CPMM pool */\n  migratedPoolHookProgram: Address;\n  /** Hook flags to set on the migrated CPMM pool */\n  migratedPoolHookFlags: number;\n  /** Recipients for base token distribution at migration */\n  recipients: Array<RecipientArgs>;\n  /** Minimum quote tokens required to migrate */\n  minRaiseQuote: number | bigint;\n  /** Optional minimum price floor (Q64 fixed point) */\n  minMigrationPriceQ64Opt: OptionOrNullable<number | bigint>;\n  /** Whether this launch has been migrated */\n  isMigrated: boolean;\n  /** Bump seed for this PDA */\n  bump: number;\n  /** Reserved for future use */\n  reserved: ReadonlyUint8Array;\n};\n\n/** Gets the encoder for {@link CpmmMigratorStateArgs} account data. */\nexport function getCpmmMigratorStateEncoder(): Encoder<CpmmMigratorStateArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['launch', getAddressEncoder()],\n      ['admin', getAddressEncoder()],\n      ['cpmmConfig', getAddressEncoder()],\n      ['initialSwapFeeBps', getU16Encoder()],\n      ['initialFeeSplitBps', getU16Encoder()],\n      ['pad0', fixEncoderSize(getBytesEncoder(), 4)],\n      ['migratedPoolHookProgram', getAddressEncoder()],\n      ['migratedPoolHookFlags', getU32Encoder()],\n      ['recipients', getArrayEncoder(getRecipientEncoder(), { size: 2 })],\n      ['minRaiseQuote', getU64Encoder()],\n      ['minMigrationPriceQ64Opt', getOptionEncoder(getU128Encoder())],\n      ['isMigrated', getBooleanEncoder()],\n      ['bump', getU8Encoder()],\n      ['reserved', fixEncoderSize(getBytesEncoder(), 14)],\n    ]),\n    (value) => ({ ...value, discriminator: CPMM_MIGRATOR_STATE_DISCRIMINATOR }),\n  );\n}\n\n/** Gets the decoder for {@link CpmmMigratorState} account data. */\nexport function getCpmmMigratorStateDecoder(): Decoder<CpmmMigratorState> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['launch', getAddressDecoder()],\n    ['admin', getAddressDecoder()],\n    ['cpmmConfig', getAddressDecoder()],\n    ['initialSwapFeeBps', getU16Decoder()],\n    ['initialFeeSplitBps', getU16Decoder()],\n    ['pad0', fixDecoderSize(getBytesDecoder(), 4)],\n    ['migratedPoolHookProgram', getAddressDecoder()],\n    ['migratedPoolHookFlags', getU32Decoder()],\n    ['recipients', getArrayDecoder(getRecipientDecoder(), { size: 2 })],\n    ['minRaiseQuote', getU64Decoder()],\n    ['minMigrationPriceQ64Opt', getOptionDecoder(getU128Decoder())],\n    ['isMigrated', getBooleanDecoder()],\n    ['bump', getU8Decoder()],\n    ['reserved', fixDecoderSize(getBytesDecoder(), 14)],\n  ]);\n}\n\n/** Gets the codec for {@link CpmmMigratorState} account data. */\nexport function getCpmmMigratorStateCodec(): Codec<\n  CpmmMigratorStateArgs,\n  CpmmMigratorState\n> {\n  return combineCodec(\n    getCpmmMigratorStateEncoder(),\n    getCpmmMigratorStateDecoder(),\n  );\n}\n\nexport function decodeCpmmMigratorState<TAddress extends string = string>(\n  encodedAccount: EncodedAccount<TAddress>,\n): Account<CpmmMigratorState, TAddress>;\nexport function decodeCpmmMigratorState<TAddress extends string = string>(\n  encodedAccount: MaybeEncodedAccount<TAddress>,\n): MaybeAccount<CpmmMigratorState, TAddress>;\nexport function decodeCpmmMigratorState<TAddress extends string = string>(\n  encodedAccount: EncodedAccount<TAddress> | MaybeEncodedAccount<TAddress>,\n):\n  | Account<CpmmMigratorState, TAddress>\n  | MaybeAccount<CpmmMigratorState, TAddress> {\n  return decodeAccount(\n    encodedAccount as MaybeEncodedAccount<TAddress>,\n    getCpmmMigratorStateDecoder(),\n  );\n}\n\nexport async function fetchCpmmMigratorState<TAddress extends string = string>(\n  rpc: Parameters<typeof fetchEncodedAccount>[0],\n  address: Address<TAddress>,\n  config?: FetchAccountConfig,\n): Promise<Account<CpmmMigratorState, TAddress>> {\n  const maybeAccount = await fetchMaybeCpmmMigratorState(rpc, address, config);\n  assertAccountExists(maybeAccount);\n  return maybeAccount;\n}\n\nexport async function fetchMaybeCpmmMigratorState<\n  TAddress extends string = string,\n>(\n  rpc: Parameters<typeof fetchEncodedAccount>[0],\n  address: Address<TAddress>,\n  config?: FetchAccountConfig,\n): Promise<MaybeAccount<CpmmMigratorState, TAddress>> {\n  const maybeAccount = await fetchEncodedAccount(rpc, address, config);\n  return decodeCpmmMigratorState(maybeAccount);\n}\n\nexport async function fetchAllCpmmMigratorState(\n  rpc: Parameters<typeof fetchEncodedAccounts>[0],\n  addresses: Array<Address>,\n  config?: FetchAccountsConfig,\n): Promise<Account<CpmmMigratorState>[]> {\n  const maybeAccounts = await fetchAllMaybeCpmmMigratorState(\n    rpc,\n    addresses,\n    config,\n  );\n  assertAccountsExist(maybeAccounts);\n  return maybeAccounts;\n}\n\nexport async function fetchAllMaybeCpmmMigratorState(\n  rpc: Parameters<typeof fetchEncodedAccounts>[0],\n  addresses: Array<Address>,\n  config?: FetchAccountsConfig,\n): Promise<MaybeAccount<CpmmMigratorState>[]> {\n  const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config);\n  return maybeAccounts.map((maybeAccount) =>\n    decodeCpmmMigratorState(maybeAccount),\n  );\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getAddressDecoder,\n  getAddressEncoder,\n  getBytesDecoder,\n  getBytesEncoder,\n  getProgramDerivedAddress,\n  getStructDecoder,\n  getStructEncoder,\n  getU128Decoder,\n  getU128Encoder,\n  getU16Decoder,\n  getU16Encoder,\n  getU32Decoder,\n  getU32Encoder,\n  getU64Decoder,\n  getU64Encoder,\n  SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS,\n  SolanaError,\n  transformEncoder,\n  type AccountMeta,\n  type AccountSignerMeta,\n  type Address,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n  type Instruction,\n  type InstructionWithAccounts,\n  type InstructionWithData,\n  type ReadonlyAccount,\n  type ReadonlySignerAccount,\n  type ReadonlyUint8Array,\n  type TransactionSigner,\n  type WritableAccount,\n  type WritableSignerAccount,\n} from '@solana/kit';\nimport {\n  getAccountMetaFactory,\n  type ResolvedInstructionAccount,\n} from '@solana/program-client-core';\nimport { CPMM_MIGRATOR_PROGRAM_ADDRESS } from '../programs';\n\nexport const CREATE_SPOT_POOL_DISCRIMINATOR = new Uint8Array([\n  13, 137, 16, 26, 40, 36, 110, 26,\n]);\n\nexport function getCreateSpotPoolDiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(\n    CREATE_SPOT_POOL_DISCRIMINATOR,\n  );\n}\n\nexport type CreateSpotPoolInstruction<\n  TProgram extends string = typeof CPMM_MIGRATOR_PROGRAM_ADDRESS,\n  TAccountCpmmConfig extends string | AccountMeta<string> = string,\n  TAccountPayer extends string | AccountMeta<string> = string,\n  TAccountLiquidityOwner extends string | AccountMeta<string> = string,\n  TAccountToken0Mint extends string | AccountMeta<string> = string,\n  TAccountToken1Mint extends string | AccountMeta<string> = string,\n  TAccountPool extends string | AccountMeta<string> = string,\n  TAccountPoolAuthority extends string | AccountMeta<string> = string,\n  TAccountPoolVault0 extends string | AccountMeta<string> = string,\n  TAccountPoolVault1 extends string | AccountMeta<string> = string,\n  TAccountProtocolFeeOwner extends string | AccountMeta<string> = string,\n  TAccountProtocolFeePosition extends string | AccountMeta<string> = string,\n  TAccountPosition extends string | AccountMeta<string> = string,\n  TAccountUser0 extends string | AccountMeta<string> = string,\n  TAccountUser1 extends string | AccountMeta<string> = string,\n  TAccountCpmmProgram extends string | AccountMeta<string> =\n    '9PSxVPoPfnbZ8Q1uQhgS6ZxvBjFboZtebNsu34umxkgQ',\n  TAccountMigrationAuthority extends string | AccountMeta<string> = string,\n  TAccountToken0Program extends string | AccountMeta<string> = string,\n  TAccountToken1Program extends string | AccountMeta<string> = string,\n  TAccountSystemProgram extends string | AccountMeta<string> =\n    '11111111111111111111111111111111',\n  TAccountRent extends string | AccountMeta<string> =\n    'SysvarRent111111111111111111111111111111111',\n  TAccountHookProgram extends string | AccountMeta<string> = string,\n  TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n  InstructionWithData<ReadonlyUint8Array> &\n  InstructionWithAccounts<\n    [\n      TAccountCpmmConfig extends string\n        ? ReadonlyAccount<TAccountCpmmConfig>\n        : TAccountCpmmConfig,\n      TAccountPayer extends string\n        ? WritableSignerAccount<TAccountPayer> &\n            AccountSignerMeta<TAccountPayer>\n        : TAccountPayer,\n      TAccountLiquidityOwner extends string\n        ? ReadonlySignerAccount<TAccountLiquidityOwner> &\n            AccountSignerMeta<TAccountLiquidityOwner>\n        : TAccountLiquidityOwner,\n      TAccountToken0Mint extends string\n        ? ReadonlyAccount<TAccountToken0Mint>\n        : TAccountToken0Mint,\n      TAccountToken1Mint extends string\n        ? ReadonlyAccount<TAccountToken1Mint>\n        : TAccountToken1Mint,\n      TAccountPool extends string\n        ? WritableAccount<TAccountPool>\n        : TAccountPool,\n      TAccountPoolAuthority extends string\n        ? ReadonlyAccount<TAccountPoolAuthority>\n        : TAccountPoolAuthority,\n      TAccountPoolVault0 extends string\n        ? WritableAccount<TAccountPoolVault0>\n        : TAccountPoolVault0,\n      TAccountPoolVault1 extends string\n        ? WritableAccount<TAccountPoolVault1>\n        : TAccountPoolVault1,\n      TAccountProtocolFeeOwner extends string\n        ? ReadonlyAccount<TAccountProtocolFeeOwner>\n        : TAccountProtocolFeeOwner,\n      TAccountProtocolFeePosition extends string\n        ? WritableAccount<TAccountProtocolFeePosition>\n        : TAccountProtocolFeePosition,\n      TAccountPosition extends string\n        ? WritableAccount<TAccountPosition>\n        : TAccountPosition,\n      TAccountUser0 extends string\n        ? WritableAccount<TAccountUser0>\n        : TAccountUser0,\n      TAccountUser1 extends string\n        ? WritableAccount<TAccountUser1>\n        : TAccountUser1,\n      TAccountCpmmProgram extends string\n        ? ReadonlyAccount<TAccountCpmmProgram>\n        : TAccountCpmmProgram,\n      TAccountMigrationAuthority extends string\n        ? ReadonlyAccount<TAccountMigrationAuthority>\n        : TAccountMigrationAuthority,\n      TAccountToken0Program extends string\n        ? ReadonlyAccount<TAccountToken0Program>\n        : TAccountToken0Program,\n      TAccountToken1Program extends string\n        ? ReadonlyAccount<TAccountToken1Program>\n        : TAccountToken1Program,\n      TAccountSystemProgram extends string\n        ? ReadonlyAccount<TAccountSystemProgram>\n        : TAccountSystemProgram,\n      TAccountRent extends string\n        ? ReadonlyAccount<TAccountRent>\n        : TAccountRent,\n      TAccountHookProgram extends string\n        ? ReadonlyAccount<TAccountHookProgram>\n        : TAccountHookProgram,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type CreateSpotPoolInstructionData = {\n  discriminator: ReadonlyUint8Array;\n  swapFeeBps: number;\n  positionId: bigint;\n  amount0Max: bigint;\n  amount1Max: bigint;\n  minSharesOut: bigint;\n  /**\n   * `Pubkey::default()` creates a hookless spot pool (unchanged legacy path).\n   * Any other value creates a hooked spot pool whose address commits to the\n   * hook program and flags.\n   */\n  hookProgram: Address;\n  hookFlags: number;\n};\n\nexport type CreateSpotPoolInstructionDataArgs = {\n  swapFeeBps: number;\n  positionId: number | bigint;\n  amount0Max: number | bigint;\n  amount1Max: number | bigint;\n  minSharesOut: number | bigint;\n  /**\n   * `Pubkey::default()` creates a hookless spot pool (unchanged legacy path).\n   * Any other value creates a hooked spot pool whose address commits to the\n   * hook program and flags.\n   */\n  hookProgram: Address;\n  hookFlags: number;\n};\n\nexport function getCreateSpotPoolInstructionDataEncoder(): FixedSizeEncoder<CreateSpotPoolInstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['swapFeeBps', getU16Encoder()],\n      ['positionId', getU64Encoder()],\n      ['amount0Max', getU64Encoder()],\n      ['amount1Max', getU64Encoder()],\n      ['minSharesOut', getU128Encoder()],\n      ['hookProgram', getAddressEncoder()],\n      ['hookFlags', getU32Encoder()],\n    ]),\n    (value) => ({ ...value, discriminator: CREATE_SPOT_POOL_DISCRIMINATOR }),\n  );\n}\n\nexport function getCreateSpotPoolInstructionDataDecoder(): FixedSizeDecoder<CreateSpotPoolInstructionData> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['swapFeeBps', getU16Decoder()],\n    ['positionId', getU64Decoder()],\n    ['amount0Max', getU64Decoder()],\n    ['amount1Max', getU64Decoder()],\n    ['minSharesOut', getU128Decoder()],\n    ['hookProgram', getAddressDecoder()],\n    ['hookFlags', getU32Decoder()],\n  ]);\n}\n\nexport function getCreateSpotPoolInstructionDataCodec(): FixedSizeCodec<\n  CreateSpotPoolInstructionDataArgs,\n  CreateSpotPoolInstructionData\n> {\n  return combineCodec(\n    getCreateSpotPoolInstructionDataEncoder(),\n    getCreateSpotPoolInstructionDataDecoder(),\n  );\n}\n\nexport type CreateSpotPoolAsyncInput<\n  TAccountCpmmConfig extends string = string,\n  TAccountPayer extends string = string,\n  TAccountLiquidityOwner extends string = string,\n  TAccountToken0Mint extends string = string,\n  TAccountToken1Mint extends string = string,\n  TAccountPool extends string = string,\n  TAccountPoolAuthority extends string = string,\n  TAccountPoolVault0 extends string = string,\n  TAccountPoolVault1 extends string = string,\n  TAccountProtocolFeeOwner extends string = string,\n  TAccountProtocolFeePosition extends string = string,\n  TAccountPosition extends string = string,\n  TAccountUser0 extends string = string,\n  TAccountUser1 extends string = string,\n  TAccountCpmmProgram extends string = string,\n  TAccountMigrationAuthority extends string = string,\n  TAccountToken0Program extends string = string,\n  TAccountToken1Program extends string = string,\n  TAccountSystemProgram extends string = string,\n  TAccountRent extends string = string,\n  TAccountHookProgram extends string = string,\n> = {\n  cpmmConfig: Address<TAccountCpmmConfig>;\n  payer: TransactionSigner<TAccountPayer>;\n  liquidityOwner: TransactionSigner<TAccountLiquidityOwner>;\n  token0Mint: Address<TAccountToken0Mint>;\n  token1Mint: Address<TAccountToken1Mint>;\n  pool: Address<TAccountPool>;\n  poolAuthority: Address<TAccountPoolAuthority>;\n  poolVault0: Address<TAccountPoolVault0>;\n  poolVault1: Address<TAccountPoolVault1>;\n  protocolFeeOwner: Address<TAccountProtocolFeeOwner>;\n  protocolFeePosition: Address<TAccountProtocolFeePosition>;\n  position: Address<TAccountPosition>;\n  user0: Address<TAccountUser0>;\n  user1: Address<TAccountUser1>;\n  cpmmProgram?: Address<TAccountCpmmProgram>;\n  migrationAuthority?: Address<TAccountMigrationAuthority>;\n  token0Program: Address<TAccountToken0Program>;\n  token1Program: Address<TAccountToken1Program>;\n  systemProgram?: Address<TAccountSystemProgram>;\n  rent?: Address<TAccountRent>;\n  /**\n   * Omit it entirely for a hookless pool. When present it must equal\n   * `args.hook_program`; CPMM additionally requires it to be executable.\n   */\n  hookProgram?: Address<TAccountHookProgram>;\n  swapFeeBps: CreateSpotPoolInstructionDataArgs['swapFeeBps'];\n  positionId: CreateSpotPoolInstructionDataArgs['positionId'];\n  amount0Max: CreateSpotPoolInstructionDataArgs['amount0Max'];\n  amount1Max: CreateSpotPoolInstructionDataArgs['amount1Max'];\n  minSharesOut: CreateSpotPoolInstructionDataArgs['minSharesOut'];\n  hookProgramArg: CreateSpotPoolInstructionDataArgs['hookProgram'];\n  hookFlags: CreateSpotPoolInstructionDataArgs['hookFlags'];\n};\n\nexport async function getCreateSpotPoolInstructionAsync<\n  TAccountCpmmConfig extends string,\n  TAccountPayer extends string,\n  TAccountLiquidityOwner extends string,\n  TAccountToken0Mint extends string,\n  TAccountToken1Mint extends string,\n  TAccountPool extends string,\n  TAccountPoolAuthority extends string,\n  TAccountPoolVault0 extends string,\n  TAccountPoolVault1 extends string,\n  TAccountProtocolFeeOwner extends string,\n  TAccountProtocolFeePosition extends string,\n  TAccountPosition extends string,\n  TAccountUser0 extends string,\n  TAccountUser1 extends string,\n  TAccountCpmmProgram extends string,\n  TAccountMigrationAuthority extends string,\n  TAccountToken0Program extends string,\n  TAccountToken1Program extends string,\n  TAccountSystemProgram extends string,\n  TAccountRent extends string,\n  TAccountHookProgram extends string,\n  TProgramAddress extends Address = typeof CPMM_MIGRATOR_PROGRAM_ADDRESS,\n>(\n  input: CreateSpotPoolAsyncInput<\n    TAccountCpmmConfig,\n    TAccountPayer,\n    TAccountLiquidityOwner,\n    TAccountToken0Mint,\n    TAccountToken1Mint,\n    TAccountPool,\n    TAccountPoolAuthority,\n    TAccountPoolVault0,\n    TAccountPoolVault1,\n    TAccountProtocolFeeOwner,\n    TAccountProtocolFeePosition,\n    TAccountPosition,\n    TAccountUser0,\n    TAccountUser1,\n    TAccountCpmmProgram,\n    TAccountMigrationAuthority,\n    TAccountToken0Program,\n    TAccountToken1Program,\n    TAccountSystemProgram,\n    TAccountRent,\n    TAccountHookProgram\n  >,\n  config?: { programAddress?: TProgramAddress },\n): Promise<\n  CreateSpotPoolInstruction<\n    TProgramAddress,\n    TAccountCpmmConfig,\n    TAccountPayer,\n    TAccountLiquidityOwner,\n    TAccountToken0Mint,\n    TAccountToken1Mint,\n    TAccountPool,\n    TAccountPoolAuthority,\n    TAccountPoolVault0,\n    TAccountPoolVault1,\n    TAccountProtocolFeeOwner,\n    TAccountProtocolFeePosition,\n    TAccountPosition,\n    TAccountUser0,\n    TAccountUser1,\n    TAccountCpmmProgram,\n    TAccountMigrationAuthority,\n    TAccountToken0Program,\n    TAccountToken1Program,\n    TAccountSystemProgram,\n    TAccountRent,\n    TAccountHookProgram\n  >\n> {\n  // Program address.\n  const programAddress =\n    config?.programAddress ?? CPMM_MIGRATOR_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    cpmmConfig: { value: input.cpmmConfig ?? null, isWritable: false },\n    payer: { value: input.payer ?? null, isWritable: true },\n    liquidityOwner: { value: input.liquidityOwner ?? null, isWritable: false },\n    token0Mint: { value: input.token0Mint ?? null, isWritable: false },\n    token1Mint: { value: input.token1Mint ?? null, isWritable: false },\n    pool: { value: input.pool ?? null, isWritable: true },\n    poolAuthority: { value: input.poolAuthority ?? null, isWritable: false },\n    poolVault0: { value: input.poolVault0 ?? null, isWritable: true },\n    poolVault1: { value: input.poolVault1 ?? null, isWritable: true },\n    protocolFeeOwner: {\n      value: input.protocolFeeOwner ?? null,\n      isWritable: false,\n    },\n    protocolFeePosition: {\n      value: input.protocolFeePosition ?? null,\n      isWritable: true,\n    },\n    position: { value: input.position ?? null, isWritable: true },\n    user0: { value: input.user0 ?? null, isWritable: true },\n    user1: { value: input.user1 ?? null, isWritable: true },\n    cpmmProgram: { value: input.cpmmProgram ?? null, isWritable: false },\n    migrationAuthority: {\n      value: input.migrationAuthority ?? null,\n      isWritable: false,\n    },\n    token0Program: { value: input.token0Program ?? null, isWritable: false },\n    token1Program: { value: input.token1Program ?? null, isWritable: false },\n    systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n    rent: { value: input.rent ?? null, isWritable: false },\n    hookProgram: { value: input.hookProgram ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedInstructionAccount\n  >;\n\n  // Original args.\n  const args = { ...input, hookProgram: input.hookProgramArg };\n\n  // Resolve default values.\n  if (!accounts.cpmmProgram.value) {\n    accounts.cpmmProgram.value =\n      '9PSxVPoPfnbZ8Q1uQhgS6ZxvBjFboZtebNsu34umxkgQ' as Address<'9PSxVPoPfnbZ8Q1uQhgS6ZxvBjFboZtebNsu34umxkgQ'>;\n  }\n  if (!accounts.migrationAuthority.value) {\n    accounts.migrationAuthority.value = await getProgramDerivedAddress({\n      programAddress,\n      seeds: [\n        getBytesEncoder().encode(\n          new Uint8Array([\n            109, 105, 103, 114, 97, 116, 105, 111, 110, 95, 97, 117, 116, 104,\n            111, 114, 105, 116, 121,\n          ]),\n        ),\n      ],\n    });\n  }\n  if (!accounts.systemProgram.value) {\n    accounts.systemProgram.value =\n      '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n  }\n  if (!accounts.rent.value) {\n    accounts.rent.value =\n      'SysvarRent111111111111111111111111111111111' as Address<'SysvarRent111111111111111111111111111111111'>;\n  }\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta('cpmmConfig', accounts.cpmmConfig),\n      getAccountMeta('payer', accounts.payer),\n      getAccountMeta('liquidityOwner', accounts.liquidityOwner),\n      getAccountMeta('token0Mint', accounts.token0Mint),\n      getAccountMeta('token1Mint', accounts.token1Mint),\n      getAccountMeta('pool', accounts.pool),\n      getAccountMeta('poolAuthority', accounts.poolAuthority),\n      getAccountMeta('poolVault0', accounts.poolVault0),\n      getAccountMeta('poolVault1', accounts.poolVault1),\n      getAccountMeta('protocolFeeOwner', accounts.protocolFeeOwner),\n      getAccountMeta('protocolFeePosition', accounts.protocolFeePosition),\n      getAccountMeta('position', accounts.position),\n      getAccountMeta('user0', accounts.user0),\n      getAccountMeta('user1', accounts.user1),\n      getAccountMeta('cpmmProgram', accounts.cpmmProgram),\n      getAccountMeta('migrationAuthority', accounts.migrationAuthority),\n      getAccountMeta('token0Program', accounts.token0Program),\n      getAccountMeta('token1Program', accounts.token1Program),\n      getAccountMeta('systemProgram', accounts.systemProgram),\n      getAccountMeta('rent', accounts.rent),\n      getAccountMeta('hookProgram', accounts.hookProgram),\n    ],\n    data: getCreateSpotPoolInstructionDataEncoder().encode(\n      args as CreateSpotPoolInstructionDataArgs,\n    ),\n    programAddress,\n  } as CreateSpotPoolInstruction<\n    TProgramAddress,\n    TAccountCpmmConfig,\n    TAccountPayer,\n    TAccountLiquidityOwner,\n    TAccountToken0Mint,\n    TAccountToken1Mint,\n    TAccountPool,\n    TAccountPoolAuthority,\n    TAccountPoolVault0,\n    TAccountPoolVault1,\n    TAccountProtocolFeeOwner,\n    TAccountProtocolFeePosition,\n    TAccountPosition,\n    TAccountUser0,\n    TAccountUser1,\n    TAccountCpmmProgram,\n    TAccountMigrationAuthority,\n    TAccountToken0Program,\n    TAccountToken1Program,\n    TAccountSystemProgram,\n    TAccountRent,\n    TAccountHookProgram\n  >);\n}\n\nexport type CreateSpotPoolInput<\n  TAccountCpmmConfig extends string = string,\n  TAccountPayer extends string = string,\n  TAccountLiquidityOwner extends string = string,\n  TAccountToken0Mint extends string = string,\n  TAccountToken1Mint extends string = string,\n  TAccountPool extends string = string,\n  TAccountPoolAuthority extends string = string,\n  TAccountPoolVault0 extends string = string,\n  TAccountPoolVault1 extends string = string,\n  TAccountProtocolFeeOwner extends string = string,\n  TAccountProtocolFeePosition extends string = string,\n  TAccountPosition extends string = string,\n  TAccountUser0 extends string = string,\n  TAccountUser1 extends string = string,\n  TAccountCpmmProgram extends string = string,\n  TAccountMigrationAuthority extends string = string,\n  TAccountToken0Program extends string = string,\n  TAccountToken1Program extends string = string,\n  TAccountSystemProgram extends string = string,\n  TAccountRent extends string = string,\n  TAccountHookProgram extends string = string,\n> = {\n  cpmmConfig: Address<TAccountCpmmConfig>;\n  payer: TransactionSigner<TAccountPayer>;\n  liquidityOwner: TransactionSigner<TAccountLiquidityOwner>;\n  token0Mint: Address<TAccountToken0Mint>;\n  token1Mint: Address<TAccountToken1Mint>;\n  pool: Address<TAccountPool>;\n  poolAuthority: Address<TAccountPoolAuthority>;\n  poolVault0: Address<TAccountPoolVault0>;\n  poolVault1: Address<TAccountPoolVault1>;\n  protocolFeeOwner: Address<TAccountProtocolFeeOwner>;\n  protocolFeePosition: Address<TAccountProtocolFeePosition>;\n  position: Address<TAccountPosition>;\n  user0: Address<TAccountUser0>;\n  user1: Address<TAccountUser1>;\n  cpmmProgram?: Address<TAccountCpmmProgram>;\n  migrationAuthority: Address<TAccountMigrationAuthority>;\n  token0Program: Address<TAccountToken0Program>;\n  token1Program: Address<TAccountToken1Program>;\n  systemProgram?: Address<TAccountSystemProgram>;\n  rent?: Address<TAccountRent>;\n  /**\n   * Omit it entirely for a hookless pool. When present it must equal\n   * `args.hook_program`; CPMM additionally requires it to be executable.\n   */\n  hookProgram?: Address<TAccountHookProgram>;\n  swapFeeBps: CreateSpotPoolInstructionDataArgs['swapFeeBps'];\n  positionId: CreateSpotPoolInstructionDataArgs['positionId'];\n  amount0Max: CreateSpotPoolInstructionDataArgs['amount0Max'];\n  amount1Max: CreateSpotPoolInstructionDataArgs['amount1Max'];\n  minSharesOut: CreateSpotPoolInstructionDataArgs['minSharesOut'];\n  hookProgramArg: CreateSpotPoolInstructionDataArgs['hookProgram'];\n  hookFlags: CreateSpotPoolInstructionDataArgs['hookFlags'];\n};\n\nexport function getCreateSpotPoolInstruction<\n  TAccountCpmmConfig extends string,\n  TAccountPayer extends string,\n  TAccountLiquidityOwner extends string,\n  TAccountToken0Mint extends string,\n  TAccountToken1Mint extends string,\n  TAccountPool extends string,\n  TAccountPoolAuthority extends string,\n  TAccountPoolVault0 extends string,\n  TAccountPoolVault1 extends string,\n  TAccountProtocolFeeOwner extends string,\n  TAccountProtocolFeePosition extends string,\n  TAccountPosition extends string,\n  TAccountUser0 extends string,\n  TAccountUser1 extends string,\n  TAccountCpmmProgram extends string,\n  TAccountMigrationAuthority extends string,\n  TAccountToken0Program extends string,\n  TAccountToken1Program extends string,\n  TAccountSystemProgram extends string,\n  TAccountRent extends string,\n  TAccountHookProgram extends string,\n  TProgramAddress extends Address = typeof CPMM_MIGRATOR_PROGRAM_ADDRESS,\n>(\n  input: CreateSpotPoolInput<\n    TAccountCpmmConfig,\n    TAccountPayer,\n    TAccountLiquidityOwner,\n    TAccountToken0Mint,\n    TAccountToken1Mint,\n    TAccountPool,\n    TAccountPoolAuthority,\n    TAccountPoolVault0,\n    TAccountPoolVault1,\n    TAccountProtocolFeeOwner,\n    TAccountProtocolFeePosition,\n    TAccountPosition,\n    TAccountUser0,\n    TAccountUser1,\n    TAccountCpmmProgram,\n    TAccountMigrationAuthority,\n    TAccountToken0Program,\n    TAccountToken1Program,\n    TAccountSystemProgram,\n    TAccountRent,\n    TAccountHookProgram\n  >,\n  config?: { programAddress?: TProgramAddress },\n): CreateSpotPoolInstruction<\n  TProgramAddress,\n  TAccountCpmmConfig,\n  TAccountPayer,\n  TAccountLiquidityOwner,\n  TAccountToken0Mint,\n  TAccountToken1Mint,\n  TAccountPool,\n  TAccountPoolAuthority,\n  TAccountPoolVault0,\n  TAccountPoolVault1,\n  TAccountProtocolFeeOwner,\n  TAccountProtocolFeePosition,\n  TAccountPosition,\n  TAccountUser0,\n  TAccountUser1,\n  TAccountCpmmProgram,\n  TAccountMigrationAuthority,\n  TAccountToken0Program,\n  TAccountToken1Program,\n  TAccountSystemProgram,\n  TAccountRent,\n  TAccountHookProgram\n> {\n  // Program address.\n  const programAddress =\n    config?.programAddress ?? CPMM_MIGRATOR_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    cpmmConfig: { value: input.cpmmConfig ?? null, isWritable: false },\n    payer: { value: input.payer ?? null, isWritable: true },\n    liquidityOwner: { value: input.liquidityOwner ?? null, isWritable: false },\n    token0Mint: { value: input.token0Mint ?? null, isWritable: false },\n    token1Mint: { value: input.token1Mint ?? null, isWritable: false },\n    pool: { value: input.pool ?? null, isWritable: true },\n    poolAuthority: { value: input.poolAuthority ?? null, isWritable: false },\n    poolVault0: { value: input.poolVault0 ?? null, isWritable: true },\n    poolVault1: { value: input.poolVault1 ?? null, isWritable: true },\n    protocolFeeOwner: {\n      value: input.protocolFeeOwner ?? null,\n      isWritable: false,\n    },\n    protocolFeePosition: {\n      value: input.protocolFeePosition ?? null,\n      isWritable: true,\n    },\n    position: { value: input.position ?? null, isWritable: true },\n    user0: { value: input.user0 ?? null, isWritable: true },\n    user1: { value: input.user1 ?? null, isWritable: true },\n    cpmmProgram: { value: input.cpmmProgram ?? null, isWritable: false },\n    migrationAuthority: {\n      value: input.migrationAuthority ?? null,\n      isWritable: false,\n    },\n    token0Program: { value: input.token0Program ?? null, isWritable: false },\n    token1Program: { value: input.token1Program ?? null, isWritable: false },\n    systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n    rent: { value: input.rent ?? null, isWritable: false },\n    hookProgram: { value: input.hookProgram ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedInstructionAccount\n  >;\n\n  // Original args.\n  const args = { ...input, hookProgram: input.hookProgramArg };\n\n  // Resolve default values.\n  if (!accounts.cpmmProgram.value) {\n    accounts.cpmmProgram.value =\n      '9PSxVPoPfnbZ8Q1uQhgS6ZxvBjFboZtebNsu34umxkgQ' as Address<'9PSxVPoPfnbZ8Q1uQhgS6ZxvBjFboZtebNsu34umxkgQ'>;\n  }\n  if (!accounts.systemProgram.value) {\n    accounts.systemProgram.value =\n      '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n  }\n  if (!accounts.rent.value) {\n    accounts.rent.value =\n      'SysvarRent111111111111111111111111111111111' as Address<'SysvarRent111111111111111111111111111111111'>;\n  }\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta('cpmmConfig', accounts.cpmmConfig),\n      getAccountMeta('payer', accounts.payer),\n      getAccountMeta('liquidityOwner', accounts.liquidityOwner),\n      getAccountMeta('token0Mint', accounts.token0Mint),\n      getAccountMeta('token1Mint', accounts.token1Mint),\n      getAccountMeta('pool', accounts.pool),\n      getAccountMeta('poolAuthority', accounts.poolAuthority),\n      getAccountMeta('poolVault0', accounts.poolVault0),\n      getAccountMeta('poolVault1', accounts.poolVault1),\n      getAccountMeta('protocolFeeOwner', accounts.protocolFeeOwner),\n      getAccountMeta('protocolFeePosition', accounts.protocolFeePosition),\n      getAccountMeta('position', accounts.position),\n      getAccountMeta('user0', accounts.user0),\n      getAccountMeta('user1', accounts.user1),\n      getAccountMeta('cpmmProgram', accounts.cpmmProgram),\n      getAccountMeta('migrationAuthority', accounts.migrationAuthority),\n      getAccountMeta('token0Program', accounts.token0Program),\n      getAccountMeta('token1Program', accounts.token1Program),\n      getAccountMeta('systemProgram', accounts.systemProgram),\n      getAccountMeta('rent', accounts.rent),\n      getAccountMeta('hookProgram', accounts.hookProgram),\n    ],\n    data: getCreateSpotPoolInstructionDataEncoder().encode(\n      args as CreateSpotPoolInstructionDataArgs,\n    ),\n    programAddress,\n  } as CreateSpotPoolInstruction<\n    TProgramAddress,\n    TAccountCpmmConfig,\n    TAccountPayer,\n    TAccountLiquidityOwner,\n    TAccountToken0Mint,\n    TAccountToken1Mint,\n    TAccountPool,\n    TAccountPoolAuthority,\n    TAccountPoolVault0,\n    TAccountPoolVault1,\n    TAccountProtocolFeeOwner,\n    TAccountProtocolFeePosition,\n    TAccountPosition,\n    TAccountUser0,\n    TAccountUser1,\n    TAccountCpmmProgram,\n    TAccountMigrationAuthority,\n    TAccountToken0Program,\n    TAccountToken1Program,\n    TAccountSystemProgram,\n    TAccountRent,\n    TAccountHookProgram\n  >);\n}\n\nexport type ParsedCreateSpotPoolInstruction<\n  TProgram extends string = typeof CPMM_MIGRATOR_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    cpmmConfig: TAccountMetas[0];\n    payer: TAccountMetas[1];\n    liquidityOwner: TAccountMetas[2];\n    token0Mint: TAccountMetas[3];\n    token1Mint: TAccountMetas[4];\n    pool: TAccountMetas[5];\n    poolAuthority: TAccountMetas[6];\n    poolVault0: TAccountMetas[7];\n    poolVault1: TAccountMetas[8];\n    protocolFeeOwner: TAccountMetas[9];\n    protocolFeePosition: TAccountMetas[10];\n    position: TAccountMetas[11];\n    user0: TAccountMetas[12];\n    user1: TAccountMetas[13];\n    cpmmProgram: TAccountMetas[14];\n    migrationAuthority: TAccountMetas[15];\n    token0Program: TAccountMetas[16];\n    token1Program: TAccountMetas[17];\n    systemProgram: TAccountMetas[18];\n    rent: TAccountMetas[19];\n    /**\n     * Omit it entirely for a hookless pool. When present it must equal\n     * `args.hook_program`; CPMM additionally requires it to be executable.\n     */\n    hookProgram?: TAccountMetas[20] | undefined;\n  };\n  data: CreateSpotPoolInstructionData;\n};\n\nexport function parseCreateSpotPoolInstruction<\n  TProgram extends string,\n  TAccountMetas extends readonly AccountMeta[],\n>(\n  instruction: Instruction<TProgram> &\n    InstructionWithAccounts<TAccountMetas> &\n    InstructionWithData<ReadonlyUint8Array>,\n): ParsedCreateSpotPoolInstruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 21) {\n    throw new SolanaError(\n      SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS,\n      {\n        actualAccountMetas: instruction.accounts.length,\n        expectedAccountMetas: 21,\n      },\n    );\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  const getNextOptionalAccount = () => {\n    const accountMeta = getNextAccount();\n    return accountMeta.address === CPMM_MIGRATOR_PROGRAM_ADDRESS\n      ? undefined\n      : accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: {\n      cpmmConfig: getNextAccount(),\n      payer: getNextAccount(),\n      liquidityOwner: getNextAccount(),\n      token0Mint: getNextAccount(),\n      token1Mint: getNextAccount(),\n      pool: getNextAccount(),\n      poolAuthority: getNextAccount(),\n      poolVault0: getNextAccount(),\n      poolVault1: getNextAccount(),\n      protocolFeeOwner: getNextAccount(),\n      protocolFeePosition: getNextAccount(),\n      position: getNextAccount(),\n      user0: getNextAccount(),\n      user1: getNextAccount(),\n      cpmmProgram: getNextAccount(),\n      migrationAuthority: getNextAccount(),\n      token0Program: getNextAccount(),\n      token1Program: getNextAccount(),\n      systemProgram: getNextAccount(),\n      rent: getNextAccount(),\n      hookProgram: getNextOptionalAccount(),\n    },\n    data: getCreateSpotPoolInstructionDataDecoder().decode(instruction.data),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  assertIsInstructionWithAccounts,\n  containsBytes,\n  fixEncoderSize,\n  getBytesEncoder,\n  SOLANA_ERROR__PROGRAM_CLIENTS__FAILED_TO_IDENTIFY_ACCOUNT,\n  SOLANA_ERROR__PROGRAM_CLIENTS__FAILED_TO_IDENTIFY_INSTRUCTION,\n  SOLANA_ERROR__PROGRAM_CLIENTS__UNRECOGNIZED_INSTRUCTION_TYPE,\n  SolanaError,\n  type Address,\n  type ClientWithPayer,\n  type ClientWithRpc,\n  type ClientWithTransactionPlanning,\n  type ClientWithTransactionSending,\n  type GetAccountInfoApi,\n  type GetMultipleAccountsApi,\n  type Instruction,\n  type InstructionWithData,\n  type ReadonlyUint8Array,\n} from '@solana/kit';\nimport {\n  addSelfFetchFunctions,\n  addSelfPlanAndSendFunctions,\n  type SelfFetchFunctions,\n  type SelfPlanAndSendFunctions,\n} from '@solana/program-client-core';\nimport {\n  getAmmConfigCodec,\n  getCpmmMigratorStateCodec,\n  getInitConfigCodec,\n  getLaunchCodec,\n  type AmmConfig,\n  type AmmConfigArgs,\n  type CpmmMigratorState,\n  type CpmmMigratorStateArgs,\n  type InitConfig,\n  type InitConfigArgs,\n  type Launch,\n  type LaunchArgs,\n} from '../accounts';\nimport {\n  getCreateSpotPoolInstructionAsync,\n  getMigrateInstructionAsync,\n  getRegisterLaunchInstructionAsync,\n  parseCreateSpotPoolInstruction,\n  parseMigrateInstruction,\n  parseRegisterLaunchInstruction,\n  type CreateSpotPoolAsyncInput,\n  type MigrateAsyncInput,\n  type ParsedCreateSpotPoolInstruction,\n  type ParsedMigrateInstruction,\n  type ParsedRegisterLaunchInstruction,\n  type RegisterLaunchAsyncInput,\n} from '../instructions';\n\nexport const CPMM_MIGRATOR_PROGRAM_ADDRESS =\n  '7WMUTNC41eMCo6eGH5Sy2xbgE3AycvLbFPo95AU9CSUd' as Address<'7WMUTNC41eMCo6eGH5Sy2xbgE3AycvLbFPo95AU9CSUd'>;\n\nexport enum CpmmMigratorAccount {\n  AmmConfig,\n  CpmmMigratorState,\n  InitConfig,\n  Launch,\n}\n\nexport function identifyCpmmMigratorAccount(\n  account: { data: ReadonlyUint8Array } | ReadonlyUint8Array,\n): CpmmMigratorAccount {\n  const data = 'data' in account ? account.data : account;\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([218, 244, 33, 104, 203, 203, 43, 111]),\n      ),\n      0,\n    )\n  ) {\n    return CpmmMigratorAccount.AmmConfig;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([169, 86, 255, 187, 37, 248, 11, 176]),\n      ),\n      0,\n    )\n  ) {\n    return CpmmMigratorAccount.CpmmMigratorState;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([97, 166, 35, 7, 20, 2, 164, 126]),\n      ),\n      0,\n    )\n  ) {\n    return CpmmMigratorAccount.InitConfig;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([144, 51, 51, 163, 206, 85, 213, 38]),\n      ),\n      0,\n    )\n  ) {\n    return CpmmMigratorAccount.Launch;\n  }\n  throw new SolanaError(\n    SOLANA_ERROR__PROGRAM_CLIENTS__FAILED_TO_IDENTIFY_ACCOUNT,\n    { accountData: data, programName: 'cpmmMigrator' },\n  );\n}\n\nexport enum CpmmMigratorInstruction {\n  CreateSpotPool,\n  Migrate,\n  RegisterLaunch,\n}\n\nexport function identifyCpmmMigratorInstruction(\n  instruction: { data: ReadonlyUint8Array } | ReadonlyUint8Array,\n): CpmmMigratorInstruction {\n  const data = 'data' in instruction ? instruction.data : instruction;\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([13, 137, 16, 26, 40, 36, 110, 26]),\n      ),\n      0,\n    )\n  ) {\n    return CpmmMigratorInstruction.CreateSpotPool;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([155, 234, 231, 146, 236, 158, 162, 30]),\n      ),\n      0,\n    )\n  ) {\n    return CpmmMigratorInstruction.Migrate;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([114, 114, 67, 23, 41, 70, 0, 225]),\n      ),\n      0,\n    )\n  ) {\n    return CpmmMigratorInstruction.RegisterLaunch;\n  }\n  throw new SolanaError(\n    SOLANA_ERROR__PROGRAM_CLIENTS__FAILED_TO_IDENTIFY_INSTRUCTION,\n    { instructionData: data, programName: 'cpmmMigrator' },\n  );\n}\n\nexport type ParsedCpmmMigratorInstruction<\n  TProgram extends string = '7WMUTNC41eMCo6eGH5Sy2xbgE3AycvLbFPo95AU9CSUd',\n> =\n  | ({\n      instructionType: CpmmMigratorInstruction.CreateSpotPool;\n    } & ParsedCreateSpotPoolInstruction<TProgram>)\n  | ({\n      instructionType: CpmmMigratorInstruction.Migrate;\n    } & ParsedMigrateInstruction<TProgram>)\n  | ({\n      instructionType: CpmmMigratorInstruction.RegisterLaunch;\n    } & ParsedRegisterLaunchInstruction<TProgram>);\n\nexport function parseCpmmMigratorInstruction<TProgram extends string>(\n  instruction: Instruction<TProgram> & InstructionWithData<ReadonlyUint8Array>,\n): ParsedCpmmMigratorInstruction<TProgram> {\n  const instructionType = identifyCpmmMigratorInstruction(instruction);\n  switch (instructionType) {\n    case CpmmMigratorInstruction.CreateSpotPool: {\n      assertIsInstructionWithAccounts(instruction);\n      return {\n        instructionType: CpmmMigratorInstruction.CreateSpotPool,\n        ...parseCreateSpotPoolInstruction(instruction),\n      };\n    }\n    case CpmmMigratorInstruction.Migrate: {\n      assertIsInstructionWithAccounts(instruction);\n      return {\n        instructionType: CpmmMigratorInstruction.Migrate,\n        ...parseMigrateInstruction(instruction),\n      };\n    }\n    case CpmmMigratorInstruction.RegisterLaunch: {\n      assertIsInstructionWithAccounts(instruction);\n      return {\n        instructionType: CpmmMigratorInstruction.RegisterLaunch,\n        ...parseRegisterLaunchInstruction(instruction),\n      };\n    }\n    default:\n      throw new SolanaError(\n        SOLANA_ERROR__PROGRAM_CLIENTS__UNRECOGNIZED_INSTRUCTION_TYPE,\n        {\n          instructionType: instructionType as string,\n          programName: 'cpmmMigrator',\n        },\n      );\n  }\n}\n\nexport type CpmmMigratorPlugin = {\n  accounts: CpmmMigratorPluginAccounts;\n  instructions: CpmmMigratorPluginInstructions;\n};\n\nexport type CpmmMigratorPluginAccounts = {\n  ammConfig: ReturnType<typeof getAmmConfigCodec> &\n    SelfFetchFunctions<AmmConfigArgs, AmmConfig>;\n  cpmmMigratorState: ReturnType<typeof getCpmmMigratorStateCodec> &\n    SelfFetchFunctions<CpmmMigratorStateArgs, CpmmMigratorState>;\n  initConfig: ReturnType<typeof getInitConfigCodec> &\n    SelfFetchFunctions<InitConfigArgs, InitConfig>;\n  launch: ReturnType<typeof getLaunchCodec> &\n    SelfFetchFunctions<LaunchArgs, Launch>;\n};\n\nexport type CpmmMigratorPluginInstructions = {\n  createSpotPool: (\n    input: MakeOptional<CreateSpotPoolAsyncInput, 'payer'>,\n  ) => ReturnType<typeof getCreateSpotPoolInstructionAsync> &\n    SelfPlanAndSendFunctions;\n  migrate: (\n    input: MakeOptional<MigrateAsyncInput, 'payer'>,\n  ) => ReturnType<typeof getMigrateInstructionAsync> & SelfPlanAndSendFunctions;\n  registerLaunch: (\n    input: MakeOptional<RegisterLaunchAsyncInput, 'payer'>,\n  ) => ReturnType<typeof getRegisterLaunchInstructionAsync> &\n    SelfPlanAndSendFunctions;\n};\n\nexport type CpmmMigratorPluginRequirements = ClientWithRpc<\n  GetAccountInfoApi & GetMultipleAccountsApi\n> &\n  ClientWithPayer &\n  ClientWithTransactionPlanning &\n  ClientWithTransactionSending;\n\nexport function cpmmMigratorProgram() {\n  return <T extends CpmmMigratorPluginRequirements>(client: T) => {\n    return {\n      ...client,\n      cpmmMigrator: <CpmmMigratorPlugin>{\n        accounts: {\n          ammConfig: addSelfFetchFunctions(client, getAmmConfigCodec()),\n          cpmmMigratorState: addSelfFetchFunctions(\n            client,\n            getCpmmMigratorStateCodec(),\n          ),\n          initConfig: addSelfFetchFunctions(client, getInitConfigCodec()),\n          launch: addSelfFetchFunctions(client, getLaunchCodec()),\n        },\n        instructions: {\n          createSpotPool: (input) =>\n            addSelfPlanAndSendFunctions(\n              client,\n              getCreateSpotPoolInstructionAsync({\n                ...input,\n                payer: input.payer ?? client.payer,\n              }),\n            ),\n          migrate: (input) =>\n            addSelfPlanAndSendFunctions(\n              client,\n              getMigrateInstructionAsync({\n                ...input,\n                payer: input.payer ?? client.payer,\n              }),\n            ),\n          registerLaunch: (input) =>\n            addSelfPlanAndSendFunctions(\n              client,\n              getRegisterLaunchInstructionAsync({\n                ...input,\n                payer: input.payer ?? client.payer,\n              }),\n            ),\n        },\n      },\n    };\n  };\n}\n\ntype MakeOptional<T, K extends keyof T> = Omit<T, K> & Partial<Pick<T, K>>;\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  isProgramError,\n  type Address,\n  type SOLANA_ERROR__INSTRUCTION_ERROR__CUSTOM,\n  type SolanaError,\n} from '@solana/kit';\nimport { CPMM_MIGRATOR_PROGRAM_ADDRESS } from '../programs';\n\n/** Unauthorized: Unauthorized */\nexport const CPMM_MIGRATOR_ERROR__UNAUTHORIZED = 0x1770; // 6000\n/** InvalidPhase: Invalid phase */\nexport const CPMM_MIGRATOR_ERROR__INVALID_PHASE = 0x1771; // 6001\n/** InvalidAmount: Invalid amount */\nexport const CPMM_MIGRATOR_ERROR__INVALID_AMOUNT = 0x1772; // 6002\n/** InvalidVault: Invalid vault */\nexport const CPMM_MIGRATOR_ERROR__INVALID_VAULT = 0x1773; // 6003\n/** InvalidMint: Invalid mint */\nexport const CPMM_MIGRATOR_ERROR__INVALID_MINT = 0x1774; // 6004\n/** MathOverflow: Math overflow */\nexport const CPMM_MIGRATOR_ERROR__MATH_OVERFLOW = 0x1775; // 6005\n/** InvalidConfig: Invalid config */\nexport const CPMM_MIGRATOR_ERROR__INVALID_CONFIG = 0x1776; // 6006\n/** MinRaiseNotMet: Minimum raise not met */\nexport const CPMM_MIGRATOR_ERROR__MIN_RAISE_NOT_MET = 0x1777; // 6007\n/** PriceFloorNotMet: Price floor not met */\nexport const CPMM_MIGRATOR_ERROR__PRICE_FLOOR_NOT_MET = 0x1778; // 6008\n/** MissingRecipientAccount: Missing recipient account */\nexport const CPMM_MIGRATOR_ERROR__MISSING_RECIPIENT_ACCOUNT = 0x1779; // 6009\n/** InvalidRecipientAccount: Invalid recipient account */\nexport const CPMM_MIGRATOR_ERROR__INVALID_RECIPIENT_ACCOUNT = 0x177a; // 6010\n/** ExtraRecipientAccounts: Extra recipient accounts */\nexport const CPMM_MIGRATOR_ERROR__EXTRA_RECIPIENT_ACCOUNTS = 0x177b; // 6011\n/** PoolAlreadyInitialized: Pool already initialized */\nexport const CPMM_MIGRATOR_ERROR__POOL_ALREADY_INITIALIZED = 0x177c; // 6012\n/** PositionAlreadyInitialized: Position already initialized */\nexport const CPMM_MIGRATOR_ERROR__POSITION_ALREADY_INITIALIZED = 0x177d; // 6013\n/** AlreadyMigrated: Already migrated */\nexport const CPMM_MIGRATOR_ERROR__ALREADY_MIGRATED = 0x177e; // 6014\n/** TooManyRecipients: Too many recipients */\nexport const CPMM_MIGRATOR_ERROR__TOO_MANY_RECIPIENTS = 0x177f; // 6015\n/** InvalidRecipient: Invalid recipient */\nexport const CPMM_MIGRATOR_ERROR__INVALID_RECIPIENT = 0x1780; // 6016\n/** InvalidLaunch: Invalid launch */\nexport const CPMM_MIGRATOR_ERROR__INVALID_LAUNCH = 0x1781; // 6017\n/** LaunchConfigMismatch: Launch configuration mismatch */\nexport const CPMM_MIGRATOR_ERROR__LAUNCH_CONFIG_MISMATCH = 0x1782; // 6018\n/** InvalidPool: Invalid pool */\nexport const CPMM_MIGRATOR_ERROR__INVALID_POOL = 0x1784; // 6020\n/** InvalidPoolAuthority: Invalid pool authority */\nexport const CPMM_MIGRATOR_ERROR__INVALID_POOL_AUTHORITY = 0x1785; // 6021\n/** InvalidPosition: Invalid position */\nexport const CPMM_MIGRATOR_ERROR__INVALID_POSITION = 0x1786; // 6022\n/** InvalidFee: Invalid fee */\nexport const CPMM_MIGRATOR_ERROR__INVALID_FEE = 0x1787; // 6023\n/** InvalidHookProgram: Missing or mismatched hook program account */\nexport const CPMM_MIGRATOR_ERROR__INVALID_HOOK_PROGRAM = 0x1788; // 6024\n/** VestingNotFunded: Vesting must be funded before migration */\nexport const CPMM_MIGRATOR_ERROR__VESTING_NOT_FUNDED = 0x1789; // 6025\n\nexport type CpmmMigratorError =\n  | typeof CPMM_MIGRATOR_ERROR__ALREADY_MIGRATED\n  | typeof CPMM_MIGRATOR_ERROR__EXTRA_RECIPIENT_ACCOUNTS\n  | typeof CPMM_MIGRATOR_ERROR__INVALID_AMOUNT\n  | typeof CPMM_MIGRATOR_ERROR__INVALID_CONFIG\n  | typeof CPMM_MIGRATOR_ERROR__INVALID_FEE\n  | typeof CPMM_MIGRATOR_ERROR__INVALID_HOOK_PROGRAM\n  | typeof CPMM_MIGRATOR_ERROR__INVALID_LAUNCH\n  | typeof CPMM_MIGRATOR_ERROR__INVALID_MINT\n  | typeof CPMM_MIGRATOR_ERROR__INVALID_PHASE\n  | typeof CPMM_MIGRATOR_ERROR__INVALID_POOL\n  | typeof CPMM_MIGRATOR_ERROR__INVALID_POOL_AUTHORITY\n  | typeof CPMM_MIGRATOR_ERROR__INVALID_POSITION\n  | typeof CPMM_MIGRATOR_ERROR__INVALID_RECIPIENT\n  | typeof CPMM_MIGRATOR_ERROR__INVALID_RECIPIENT_ACCOUNT\n  | typeof CPMM_MIGRATOR_ERROR__INVALID_VAULT\n  | typeof CPMM_MIGRATOR_ERROR__LAUNCH_CONFIG_MISMATCH\n  | typeof CPMM_MIGRATOR_ERROR__MATH_OVERFLOW\n  | typeof CPMM_MIGRATOR_ERROR__MIN_RAISE_NOT_MET\n  | typeof CPMM_MIGRATOR_ERROR__MISSING_RECIPIENT_ACCOUNT\n  | typeof CPMM_MIGRATOR_ERROR__POOL_ALREADY_INITIALIZED\n  | typeof CPMM_MIGRATOR_ERROR__POSITION_ALREADY_INITIALIZED\n  | typeof CPMM_MIGRATOR_ERROR__PRICE_FLOOR_NOT_MET\n  | typeof CPMM_MIGRATOR_ERROR__TOO_MANY_RECIPIENTS\n  | typeof CPMM_MIGRATOR_ERROR__UNAUTHORIZED\n  | typeof CPMM_MIGRATOR_ERROR__VESTING_NOT_FUNDED;\n\nlet cpmmMigratorErrorMessages: Record<CpmmMigratorError, string> | undefined;\nif (process.env.NODE_ENV !== 'production') {\n  cpmmMigratorErrorMessages = {\n    [CPMM_MIGRATOR_ERROR__ALREADY_MIGRATED]: `Already migrated`,\n    [CPMM_MIGRATOR_ERROR__EXTRA_RECIPIENT_ACCOUNTS]: `Extra recipient accounts`,\n    [CPMM_MIGRATOR_ERROR__INVALID_AMOUNT]: `Invalid amount`,\n    [CPMM_MIGRATOR_ERROR__INVALID_CONFIG]: `Invalid config`,\n    [CPMM_MIGRATOR_ERROR__INVALID_FEE]: `Invalid fee`,\n    [CPMM_MIGRATOR_ERROR__INVALID_HOOK_PROGRAM]: `Missing or mismatched hook program account`,\n    [CPMM_MIGRATOR_ERROR__INVALID_LAUNCH]: `Invalid launch`,\n    [CPMM_MIGRATOR_ERROR__INVALID_MINT]: `Invalid mint`,\n    [CPMM_MIGRATOR_ERROR__INVALID_PHASE]: `Invalid phase`,\n    [CPMM_MIGRATOR_ERROR__INVALID_POOL]: `Invalid pool`,\n    [CPMM_MIGRATOR_ERROR__INVALID_POOL_AUTHORITY]: `Invalid pool authority`,\n    [CPMM_MIGRATOR_ERROR__INVALID_POSITION]: `Invalid position`,\n    [CPMM_MIGRATOR_ERROR__INVALID_RECIPIENT]: `Invalid recipient`,\n    [CPMM_MIGRATOR_ERROR__INVALID_RECIPIENT_ACCOUNT]: `Invalid recipient account`,\n    [CPMM_MIGRATOR_ERROR__INVALID_VAULT]: `Invalid vault`,\n    [CPMM_MIGRATOR_ERROR__LAUNCH_CONFIG_MISMATCH]: `Launch configuration mismatch`,\n    [CPMM_MIGRATOR_ERROR__MATH_OVERFLOW]: `Math overflow`,\n    [CPMM_MIGRATOR_ERROR__MIN_RAISE_NOT_MET]: `Minimum raise not met`,\n    [CPMM_MIGRATOR_ERROR__MISSING_RECIPIENT_ACCOUNT]: `Missing recipient account`,\n    [CPMM_MIGRATOR_ERROR__POOL_ALREADY_INITIALIZED]: `Pool already initialized`,\n    [CPMM_MIGRATOR_ERROR__POSITION_ALREADY_INITIALIZED]: `Position already initialized`,\n    [CPMM_MIGRATOR_ERROR__PRICE_FLOOR_NOT_MET]: `Price floor not met`,\n    [CPMM_MIGRATOR_ERROR__TOO_MANY_RECIPIENTS]: `Too many recipients`,\n    [CPMM_MIGRATOR_ERROR__UNAUTHORIZED]: `Unauthorized`,\n    [CPMM_MIGRATOR_ERROR__VESTING_NOT_FUNDED]: `Vesting must be funded before migration`,\n  };\n}\n\nexport function getCpmmMigratorErrorMessage(code: CpmmMigratorError): string {\n  if (process.env.NODE_ENV !== 'production') {\n    return (cpmmMigratorErrorMessages as Record<CpmmMigratorError, string>)[\n      code\n    ];\n  }\n\n  return 'Error message not available in production bundles.';\n}\n\nexport function isCpmmMigratorError<\n  TProgramErrorCode extends CpmmMigratorError,\n>(\n  error: unknown,\n  transactionMessage: {\n    instructions: Record<number, { programAddress: Address }>;\n  },\n  code?: TProgramErrorCode,\n): error is SolanaError<typeof SOLANA_ERROR__INSTRUCTION_ERROR__CUSTOM> &\n  Readonly<{ context: Readonly<{ code: TProgramErrorCode }> }> {\n  return isProgramError<TProgramErrorCode>(\n    error,\n    transactionMessage,\n    CPMM_MIGRATOR_PROGRAM_ADDRESS,\n    code,\n  );\n}\n","import {\n  findAssociatedTokenPda,\n  TOKEN_PROGRAM_ADDRESS,\n} from '@solana-program/token';\nimport { SYSTEM_PROGRAM_ADDRESS } from '@solana-program/system';\nimport { SYSVAR_RENT_ADDRESS } from '@solana/sysvars';\nimport {\n  AccountRole,\n  getAddressCodec,\n  getProgramDerivedAddress,\n  type AccountMeta,\n  type AccountSignerMeta,\n  type Address,\n  type Instruction,\n  type InstructionWithAccounts,\n  type InstructionWithData,\n  type ReadonlyUint8Array,\n  type TransactionSigner,\n} from '@solana/kit';\nimport {\n  CPMM_PROGRAM_ID,\n  SEED_AUTHORITY,\n  SEED_CONFIG,\n  SEED_POSITION,\n  getHookedSpotPoolAddress,\n  getSpotPoolAddress,\n  sortMints,\n} from '../../core/index.js';\nimport {\n  SEED_PROTOCOL_FEE_OWNER,\n  SEED_VAULT0,\n  SEED_VAULT1,\n} from '../../core/constants.js';\nimport {\n  getCreateSpotPoolInstructionDataEncoder,\n  type CreateSpotPoolInstructionDataArgs,\n} from '../../generated/cpmmMigrator/index.js';\nimport {\n  CPMM_MIGRATOR_PROGRAM_ID,\n  SEED_MIGRATION_AUTHORITY,\n} from './constants.js';\n\nconst addressCodec = getAddressCodec();\nconst textEncoder = new TextEncoder();\nconst U64_MAX = (1n << 64n) - 1n;\nconst PROTOCOL_FEE_POSITION_ID = 0n;\n\nexport type DeriveSpotPoolAccountsInput = {\n  tokenAMint: Address;\n  tokenBMint: Address;\n  swapFeeBps: number;\n  liquidityOwner: Address;\n  tokenAProgram?: Address;\n  tokenBProgram?: Address;\n  tokenAAccount?: Address;\n  tokenBAccount?: Address;\n  token0Account?: Address;\n  token1Account?: Address;\n  positionId?: number | bigint;\n  /** Optional allowlisted hook program. Set hookFlags when provided. */\n  hookProgram?: Address;\n  /** Immutable swap-phase flags: HF_BEFORE_SWAP, HF_AFTER_SWAP, or both. */\n  hookFlags?: number;\n  cpmmProgram?: Address;\n  cpmmMigratorProgram?: Address;\n};\n\nexport type SpotPoolAccounts = {\n  cpmmConfig: Address;\n  token0Mint: Address;\n  token1Mint: Address;\n  token0Program: Address;\n  token1Program: Address;\n  pool: Address;\n  poolAuthority: Address;\n  poolVault0: Address;\n  poolVault1: Address;\n  protocolFeeOwner: Address;\n  protocolFeePosition: Address;\n  position: Address;\n  user0: Address;\n  user1: Address;\n  migrationAuthority: Address;\n};\n\nexport type AddressOrSigner = Address | TransactionSigner;\n\nexport type CreateSpotPoolInstructionInput = Omit<\n  DeriveSpotPoolAccountsInput,\n  'liquidityOwner' | 'swapFeeBps'\n> & {\n  payer: AddressOrSigner;\n  tokenAAmount: CreateSpotPoolInstructionDataArgs['amount0Max'];\n  tokenBAmount: CreateSpotPoolInstructionDataArgs['amount1Max'];\n  swapFeeBps: CreateSpotPoolInstructionDataArgs['swapFeeBps'];\n  minSharesOut?: CreateSpotPoolInstructionDataArgs['minSharesOut'];\n  liquidityOwner?: AddressOrSigner;\n  systemProgram?: Address;\n  rent?: Address;\n};\n\nexport type CreateSpotPoolInstruction = Instruction &\n  InstructionWithAccounts<(AccountMeta | AccountSignerMeta)[]> &\n  InstructionWithData<ReadonlyUint8Array>;\n\nasync function pda(\n  programAddress: Address,\n  seeds: ReadonlyUint8Array[],\n): Promise<Address> {\n  const [derived] = await getProgramDerivedAddress({\n    programAddress,\n    seeds,\n  });\n  return derived;\n}\n\nfunction seed(value: string): Uint8Array {\n  return textEncoder.encode(value);\n}\n\nfunction addressSeed(value: Address): ReadonlyUint8Array {\n  return addressCodec.encode(value);\n}\n\nexport function assertSafeInteger(name: string, value: number | bigint): void {\n  if (typeof value === 'number' && !Number.isSafeInteger(value)) {\n    throw new RangeError(\n      `${name} must be a safe integer when provided as a number; use bigint for values above Number.MAX_SAFE_INTEGER`,\n    );\n  }\n}\n\nfunction u64Seed(value: number | bigint): Uint8Array {\n  assertSafeInteger('positionId', value);\n\n  const bigintValue = BigInt(value);\n  if (bigintValue < 0n || bigintValue > U64_MAX) {\n    throw new RangeError('u64 position ID must be between 0 and 2^64 - 1');\n  }\n\n  const bytes = new Uint8Array(8);\n  new DataView(bytes.buffer).setBigUint64(0, bigintValue, true);\n  return bytes;\n}\n\nfunction addressOf(value: AddressOrSigner): Address {\n  return typeof value === 'string' ? value : value.address;\n}\n\nfunction accountMeta(\n  value: AddressOrSigner,\n  role: typeof AccountRole.READONLY_SIGNER | typeof AccountRole.WRITABLE_SIGNER,\n): AccountMeta | AccountSignerMeta {\n  if (typeof value === 'string') {\n    return { address: value, role };\n  }\n  return { address: value.address, role, signer: value };\n}\n\nexport async function deriveSpotPoolAccounts({\n  tokenAMint,\n  tokenBMint,\n  swapFeeBps,\n  liquidityOwner,\n  tokenAProgram = TOKEN_PROGRAM_ADDRESS,\n  tokenBProgram = TOKEN_PROGRAM_ADDRESS,\n  tokenAAccount,\n  tokenBAccount,\n  token0Account,\n  token1Account,\n  positionId = 0n,\n  hookProgram = SYSTEM_PROGRAM_ADDRESS,\n  hookFlags = 0,\n  cpmmProgram = CPMM_PROGRAM_ID,\n  cpmmMigratorProgram = CPMM_MIGRATOR_PROGRAM_ID,\n}: DeriveSpotPoolAccountsInput): Promise<SpotPoolAccounts> {\n  const [token0Mint, token1Mint] = sortMints(tokenAMint, tokenBMint);\n  const token0IsA = token0Mint === tokenAMint;\n  const token0Program = token0IsA ? tokenAProgram : tokenBProgram;\n  const token1Program = token0IsA ? tokenBProgram : tokenAProgram;\n  const [userA] = await findAssociatedTokenPda({\n    owner: liquidityOwner,\n    mint: tokenAMint,\n    tokenProgram: tokenAProgram,\n  });\n  const [userB] = await findAssociatedTokenPda({\n    owner: liquidityOwner,\n    mint: tokenBMint,\n    tokenProgram: tokenBProgram,\n  });\n  const user0 =\n    token0Account ??\n    (token0IsA ? (tokenAAccount ?? userA) : (tokenBAccount ?? userB));\n  const user1 =\n    token1Account ??\n    (token0IsA ? (tokenBAccount ?? userB) : (tokenAAccount ?? userA));\n  const hasHook = hookProgram !== SYSTEM_PROGRAM_ADDRESS;\n  if (!hasHook && hookFlags !== 0) {\n    throw new Error('hookFlags must be zero when hookProgram is not provided');\n  }\n  if (\n    hasHook &&\n    (hookProgram === token0Program || hookProgram === token1Program)\n  ) {\n    throw new Error('hookProgram cannot be one of the pool token programs');\n  }\n\n  const [pool] = hasHook\n    ? await getHookedSpotPoolAddress(\n        token0Mint,\n        token1Mint,\n        swapFeeBps,\n        hookProgram,\n        hookFlags,\n        cpmmProgram,\n      )\n    : await getSpotPoolAddress(token0Mint, token1Mint, swapFeeBps, cpmmProgram);\n  const protocolFeeOwner = await pda(cpmmProgram, [\n    seed(SEED_PROTOCOL_FEE_OWNER),\n    addressSeed(pool),\n  ]);\n\n  return {\n    cpmmConfig: await pda(cpmmProgram, [seed(SEED_CONFIG)]),\n    token0Mint,\n    token1Mint,\n    token0Program,\n    token1Program,\n    pool,\n    poolAuthority: await pda(cpmmProgram, [\n      seed(SEED_AUTHORITY),\n      addressSeed(pool),\n    ]),\n    poolVault0: await pda(cpmmProgram, [seed(SEED_VAULT0), addressSeed(pool)]),\n    poolVault1: await pda(cpmmProgram, [seed(SEED_VAULT1), addressSeed(pool)]),\n    protocolFeeOwner,\n    protocolFeePosition: await pda(cpmmProgram, [\n      seed(SEED_POSITION),\n      addressSeed(pool),\n      addressSeed(protocolFeeOwner),\n      u64Seed(PROTOCOL_FEE_POSITION_ID),\n    ]),\n    position: await pda(cpmmProgram, [\n      seed(SEED_POSITION),\n      addressSeed(pool),\n      addressSeed(liquidityOwner),\n      u64Seed(positionId),\n    ]),\n    user0,\n    user1,\n    migrationAuthority: await pda(cpmmMigratorProgram, [\n      seed(SEED_MIGRATION_AUTHORITY),\n    ]),\n  };\n}\n\nexport async function createSpotPoolInstruction(\n  input: CreateSpotPoolInstructionInput,\n): Promise<CreateSpotPoolInstruction> {\n  const payer = input.payer;\n  const liquidityOwner = input.liquidityOwner ?? payer;\n  const positionId = input.positionId ?? 0n;\n  const minSharesOut = input.minSharesOut ?? 1n;\n  assertSafeInteger('positionId', positionId);\n  assertSafeInteger('tokenAAmount', input.tokenAAmount);\n  assertSafeInteger('tokenBAmount', input.tokenBAmount);\n  assertSafeInteger('minSharesOut', minSharesOut);\n  const cpmmProgram = input.cpmmProgram ?? CPMM_PROGRAM_ID;\n  const cpmmMigratorProgram =\n    input.cpmmMigratorProgram ?? CPMM_MIGRATOR_PROGRAM_ID;\n  const accounts = await deriveSpotPoolAccounts({\n    ...input,\n    liquidityOwner: addressOf(liquidityOwner),\n    cpmmProgram,\n    cpmmMigratorProgram,\n    positionId,\n  });\n  const token0IsA = accounts.token0Mint === input.tokenAMint;\n  const hookProgram = input.hookProgram ?? SYSTEM_PROGRAM_ADDRESS;\n  const hookFlags = input.hookFlags ?? 0;\n  const hookProgramAccount =\n    hookProgram === SYSTEM_PROGRAM_ADDRESS\n      ? []\n      : [{ address: hookProgram, role: AccountRole.READONLY }];\n\n  return {\n    programAddress: cpmmMigratorProgram,\n    accounts: [\n      { address: accounts.cpmmConfig, role: AccountRole.READONLY },\n      accountMeta(payer, AccountRole.WRITABLE_SIGNER),\n      accountMeta(liquidityOwner, AccountRole.READONLY_SIGNER),\n      { address: accounts.token0Mint, role: AccountRole.READONLY },\n      { address: accounts.token1Mint, role: AccountRole.READONLY },\n      { address: accounts.pool, role: AccountRole.WRITABLE },\n      { address: accounts.poolAuthority, role: AccountRole.READONLY },\n      { address: accounts.poolVault0, role: AccountRole.WRITABLE },\n      { address: accounts.poolVault1, role: AccountRole.WRITABLE },\n      { address: accounts.protocolFeeOwner, role: AccountRole.READONLY },\n      { address: accounts.protocolFeePosition, role: AccountRole.WRITABLE },\n      { address: accounts.position, role: AccountRole.WRITABLE },\n      { address: accounts.user0, role: AccountRole.WRITABLE },\n      { address: accounts.user1, role: AccountRole.WRITABLE },\n      { address: cpmmProgram, role: AccountRole.READONLY },\n      { address: accounts.migrationAuthority, role: AccountRole.READONLY },\n      { address: accounts.token0Program, role: AccountRole.READONLY },\n      { address: accounts.token1Program, role: AccountRole.READONLY },\n      {\n        address: input.systemProgram ?? SYSTEM_PROGRAM_ADDRESS,\n        role: AccountRole.READONLY,\n      },\n      {\n        address: input.rent ?? SYSVAR_RENT_ADDRESS,\n        role: AccountRole.READONLY,\n      },\n      ...hookProgramAccount,\n    ],\n    data: getCreateSpotPoolInstructionDataEncoder().encode({\n      swapFeeBps: input.swapFeeBps,\n      positionId,\n      amount0Max: token0IsA ? input.tokenAAmount : input.tokenBAmount,\n      amount1Max: token0IsA ? input.tokenBAmount : input.tokenAAmount,\n      minSharesOut,\n      hookProgram,\n      hookFlags,\n    }),\n  };\n}\n","import type { Address } from '@solana/kit';\nimport type { Rpc, GetAccountInfoApi } from '@solana/kit';\nimport { base64ToBytes } from '../../core/accounts.js';\nimport {\n  getCpmmMigratorStateDecoder,\n  type CpmmMigratorState,\n} from '../../generated/cpmmMigrator/index.js';\n\nexport async function fetchCpmmMigratorState(\n  rpc: Rpc<GetAccountInfoApi>,\n  address: Address,\n): Promise<CpmmMigratorState | null> {\n  const response = await rpc\n    .getAccountInfo(address, { encoding: 'base64' })\n    .send();\n  if (!response.value) return null;\n  return getCpmmMigratorStateDecoder().decode(\n    base64ToBytes(response.value.data[0]),\n  );\n}\n","import { AccountRole, type AccountMeta, type Address } from '@solana/kit';\n\nimport {\n  CPMM_PROGRAM_ID,\n  getPoolInitAddresses,\n  getPositionAddress,\n} from '../../core/index.js';\nimport { computeRemainingAccountsHash } from '../../initializer/helpers.js';\nimport {\n  getCpmmMigrationAuthorityAddress,\n  getCpmmMigratorStateAddress,\n} from './pda.js';\nimport { CPMM_MIGRATOR_PROGRAM_ID } from './constants.js';\n\nexport interface CpmmMigrationRemainingAccountsInput {\n  launch: Address;\n  baseMint: Address;\n  quoteMint: Address;\n  launchAuthority: Address;\n  adminBaseAta: Address;\n  adminQuoteAta: Address;\n  recipientAtas: Address[];\n  cpmmProgram?: Address;\n  cpmmMigratorProgram?: Address;\n}\n\nexport interface CpmmMigrationRemainingAccounts {\n  addresses: Address[];\n  metas: AccountMeta[];\n  hash: Uint8Array;\n  cpmmMigrationState: Address;\n  cpmmConfig: Address;\n  adminBaseAta: Address;\n  adminQuoteAta: Address;\n  recipientAtas: Address[];\n  pool: Address;\n  poolAuthority: Address;\n  poolVault0: Address;\n  poolVault1: Address;\n  protocolFeeOwner: Address;\n  protocolFeePosition: Address;\n  launchLpPosition: Address;\n  migrationAuthority: Address;\n}\n\nexport async function buildCpmmMigrationRemainingAccounts({\n  launch,\n  baseMint,\n  quoteMint,\n  launchAuthority,\n  adminBaseAta,\n  adminQuoteAta,\n  recipientAtas,\n  cpmmProgram = CPMM_PROGRAM_ID,\n  cpmmMigratorProgram = CPMM_MIGRATOR_PROGRAM_ID,\n}: CpmmMigrationRemainingAccountsInput): Promise<CpmmMigrationRemainingAccounts> {\n  const [cpmmMigrationState] = await getCpmmMigratorStateAddress(\n    launch,\n    cpmmMigratorProgram,\n  );\n  const [migrationAuthority] =\n    await getCpmmMigrationAuthorityAddress(cpmmMigratorProgram);\n  const poolInit = await getPoolInitAddresses(baseMint, quoteMint, cpmmProgram);\n  const pool = poolInit.pool[0];\n  const [launchLpPosition] = await getPositionAddress(\n    pool,\n    launchAuthority,\n    0n,\n    cpmmProgram,\n  );\n\n  const addresses = [\n    cpmmMigrationState,\n    poolInit.config[0],\n    pool,\n    poolInit.authority[0],\n    poolInit.vault0[0],\n    poolInit.vault1[0],\n    poolInit.protocolFeeOwner[0],\n    poolInit.protocolFeePosition[0],\n    launchLpPosition,\n    cpmmProgram,\n    migrationAuthority,\n    adminBaseAta,\n    adminQuoteAta,\n    ...recipientAtas,\n  ];\n\n  return {\n    addresses,\n    hash: computeRemainingAccountsHash(addresses),\n    metas: [\n      { address: cpmmMigrationState, role: AccountRole.WRITABLE },\n      { address: poolInit.config[0], role: AccountRole.READONLY },\n      { address: pool, role: AccountRole.WRITABLE },\n      { address: poolInit.authority[0], role: AccountRole.READONLY },\n      { address: poolInit.vault0[0], role: AccountRole.WRITABLE },\n      { address: poolInit.vault1[0], role: AccountRole.WRITABLE },\n      { address: poolInit.protocolFeeOwner[0], role: AccountRole.READONLY },\n      { address: poolInit.protocolFeePosition[0], role: AccountRole.WRITABLE },\n      { address: launchLpPosition, role: AccountRole.WRITABLE },\n      { address: cpmmProgram, role: AccountRole.READONLY },\n      { address: migrationAuthority, role: AccountRole.READONLY },\n      { address: adminBaseAta, role: AccountRole.WRITABLE },\n      { address: adminQuoteAta, role: AccountRole.WRITABLE },\n      ...recipientAtas.map((address) => ({\n        address,\n        role: AccountRole.WRITABLE,\n      })),\n    ],\n    cpmmMigrationState,\n    cpmmConfig: poolInit.config[0],\n    adminBaseAta,\n    adminQuoteAta,\n    recipientAtas,\n    pool,\n    poolAuthority: poolInit.authority[0],\n    poolVault0: poolInit.vault0[0],\n    poolVault1: poolInit.vault1[0],\n    protocolFeeOwner: poolInit.protocolFeeOwner[0],\n    protocolFeePosition: poolInit.protocolFeePosition[0],\n    launchLpPosition,\n    migrationAuthority,\n  };\n}\n\nexport async function buildCpmmMigrationRemainingAccountsHash(\n  input: CpmmMigrationRemainingAccountsInput,\n): Promise<Uint8Array> {\n  return (await buildCpmmMigrationRemainingAccounts(input)).hash;\n}\n","import {\n  type Address,\n  type Instruction,\n  type ReadonlyUint8Array,\n} from '@solana/kit';\nimport { findAssociatedTokenPda } from '@solana-program/token';\nimport {\n  SYSVAR_RENT_ADDRESS,\n  SYSTEM_PROGRAM_ADDRESS,\n  TOKEN_2022_PROGRAM_ADDRESS,\n  TOKEN_PROGRAM_ADDRESS,\n  TOKEN_METADATA_PROGRAM_ID,\n} from '../core/constants.js';\nimport {\n  DOPPLER_LAUNCH_HOOK_V1_PROGRAM_ID,\n  GATE_EXPIRY_UNIX_TIMESTAMP,\n  encodeDopplerLaunchHookV1Payload,\n  getDopplerLaunchHookV1RemainingAccounts,\n  isResolvedManagedCosignerGate,\n  type DopplerLaunchHookV1PayloadArgs,\n  type DynamicFeeScheduleArgs,\n  type ResolvedManagedCosignerGate,\n} from '../dopplerLaunchHookV1/index.js';\nimport type { SolanaCpmmDeployment } from '../deployment.js';\nimport {\n  buildCpmmMigrationRemainingAccounts,\n  encodeMigratePayload,\n  encodeRegisterLaunchPayload,\n  type CpmmMigrationRemainingAccounts,\n  type MigratedPoolHookConfigArgs,\n  type RecipientArgs,\n} from '../migrators/cpmmMigrator/index.js';\nimport { CPMM_MIGRATOR_PROGRAM_ID } from '../migrators/cpmmMigrator/constants.js';\nimport { getCpmmMigratorStateAddress } from '../migrators/cpmmMigrator/pda.js';\nimport {\n  CURVE_KIND_XYK,\n  CURVE_PARAMS_FORMAT_XYK_V0,\n  EMPTY_REMAINING_ACCOUNTS_HASH,\n  HF_BEFORE_CREATE,\n  HF_BEFORE_SWAP,\n  HF_FORWARD_READONLY_SIGNERS,\n  INITIALIZER_PROGRAM_ID,\n} from './constants.js';\nimport {\n  createInitializeLaunchInstruction,\n  getTokenMetadataAddress,\n  type InitializeLaunchAccounts,\n  type InitializeLaunchParams,\n} from './instructions/initializeLaunch.js';\nimport {\n  getConfigAddress,\n  getLaunchAddress,\n  getLaunchAuthorityAddress,\n  getLaunchFeeStateAddress,\n} from './pda.js';\nimport { computeRemainingAccountsHash } from './helpers.js';\nimport {\n  createReadonlyRemainingAccountMeta,\n  getAddressFromAddressOrSigner,\n  getAddressFromRemainingAccount,\n  type RemainingAccount,\n} from '../core/accounts.js';\n\ntype AddressOrSigner = InitializeLaunchAccounts['baseMint'];\n\nconst DEFAULT_CPMM_MIGRATION_FEE_SPLIT_BPS = 10_000;\n\nexport type LaunchTokenPrograms = {\n  baseTokenProgram: Address;\n  quoteTokenProgram: Address;\n};\n\nexport type LaunchSupply = {\n  baseDecimals: number;\n  baseTotalSupply: bigint;\n  baseForDistribution: bigint;\n  baseForLiquidity: bigint;\n};\n\nexport type XykCurveConfig = {\n  curveVirtualBase: bigint;\n  curveVirtualQuote: bigint;\n  swapFeeBps: number;\n};\n\nexport type LaunchMetadata = {\n  metadataName: string;\n  metadataSymbol: string;\n  metadataUri: string;\n};\n\nexport type CreateLaunchAccountSigners = {\n  baseMint: AddressOrSigner;\n  quoteMint: Address;\n  baseVault: AddressOrSigner;\n  quoteVault: AddressOrSigner;\n};\n\nexport type CreateLaunchCpmmMigrationConfig = {\n  enabled?: true;\n  kind?: 'cpmm';\n  program?: Address;\n  cpmmProgram?: Address;\n  admin?: Address;\n  adminBaseAta?: Address;\n  adminQuoteAta?: Address;\n  recipientAtas?: ReadonlyArray<Address>;\n  recipients?: ReadonlyArray<RecipientArgs>;\n  minRaiseQuote?: number | bigint;\n  minMigrationPriceQ64Opt?: number | bigint | null;\n  migratedPoolHookConfig?: MigratedPoolHookConfigArgs | null;\n  initialSwapFeeBps?: number;\n  initialFeeSplitBps?: number;\n  baseForDistribution?: number | bigint;\n  baseForLiquidity?: number | bigint;\n};\n\nexport type CreateLaunchCustomMigrationConfig = {\n  enabled?: true;\n  kind: 'custom';\n  program: Address;\n  initPayload?: ReadonlyUint8Array;\n  migratePayload?: ReadonlyUint8Array;\n  cpmmConfig?: Address;\n  initRemainingAccounts?: ReadonlyArray<RemainingAccount>;\n  initRemainingAccountsHash?: ReadonlyUint8Array;\n  remainingAccounts?: ReadonlyArray<RemainingAccount>;\n  remainingAccountsHash?: ReadonlyUint8Array;\n};\n\nexport type CreateLaunchMigrationConfig =\n  | CreateLaunchCpmmMigrationConfig\n  | CreateLaunchCustomMigrationConfig;\n\nexport type CreateLaunchAddresses = {\n  config: Address;\n  launch: Address;\n  launchAuthority: Address;\n  launchFeeState: Address;\n  metadataAccount?: Address;\n};\n\nexport type DeriveCreateLaunchAddressesInput = {\n  deployment?: Pick<\n    SolanaCpmmDeployment,\n    'initializerConfig' | 'initializerProgram'\n  >;\n  programId?: Address;\n  config?: Address;\n  namespace: Address;\n  launchId: Uint8Array;\n  baseMint: AddressOrSigner;\n  metadata?: LaunchMetadata | null;\n  metadataAccount?: Address;\n};\n\nexport type CreateLaunchInput = {\n  deployment?: Pick<\n    SolanaCpmmDeployment,\n    'initializerConfig' | 'initializerProgram'\n  > &\n    Partial<\n      Pick<\n        SolanaCpmmDeployment,\n        'cpmmMigratorProgram' | 'cpmmProgram' | 'dopplerLaunchHookV1Program'\n      >\n    >;\n  programId?: Address;\n  config?: Address;\n  namespace?: Address;\n  launchId?: Uint8Array;\n  addresses?: CreateLaunchAddresses;\n  launchAccounts: CreateLaunchAccountSigners;\n  payer: AddressOrSigner;\n  authority?: AddressOrSigner;\n  supply: LaunchSupply;\n  curve: XykCurveConfig;\n  tokenPrograms?: Partial<LaunchTokenPrograms>;\n  /**\n   * Enables the Doppler-managed cosigner gate. Resolve this value with\n   * `dopplerLaunchHookV1.resolveManagedCosignerGate` before constructing the launch.\n   */\n  cosignerGate?: ResolvedManagedCosignerGate | null;\n  dynamicFee?: DynamicFeeScheduleArgs | null;\n  migration?: boolean | CreateLaunchMigrationConfig | null;\n  metadata?: LaunchMetadata | null;\n  /** Pre-initialized immutable vesting config for the reserved base allocation. */\n  vestingConfig?: Address;\n  feeBeneficiaries?: InitializeLaunchParams['feeBeneficiaries'];\n  allowBuy?: boolean;\n  allowSell?: boolean;\n  systemProgram?: Address;\n  rent?: Address;\n  metadataProgram?: Address;\n};\n\nexport type CreateLaunchResult = {\n  namespace: Address;\n  launchId: Uint8Array;\n  addresses: CreateLaunchAddresses;\n  instruction: Instruction;\n  cpmmMigration?: CpmmMigrationRemainingAccounts;\n  cosignerGate?: ResolvedManagedCosignerGate;\n};\n\ntype ResolvedCreateLaunchMigration = {\n  program: Address;\n  initPayload?: ReadonlyUint8Array;\n  migratePayload?: ReadonlyUint8Array;\n  cpmmConfig?: Address;\n  initRemainingAccounts?: ReadonlyArray<RemainingAccount>;\n  initRemainingAccountsHash?: ReadonlyUint8Array;\n  remainingAccounts?: ReadonlyArray<RemainingAccount>;\n  remainingAccountsHash?: ReadonlyUint8Array;\n  cpmmMigration?: CpmmMigrationRemainingAccounts;\n};\n\ntype CreateLaunchHookContext = {\n  program: Address;\n  cosignerGate?: ResolvedManagedCosignerGate;\n};\n\nexport type ResolvedCreateLaunchHook = {\n  program: Address;\n  flags: number;\n  payload: ReadonlyUint8Array;\n  remainingAccountsHash: ReadonlyUint8Array;\n  createRemainingAccounts?: ReadonlyArray<AddressOrSigner>;\n};\n\nlet launchIdCounter = 0n;\n\nexport const launchTokenPrograms = {\n  splToken(): LaunchTokenPrograms {\n    return {\n      baseTokenProgram: TOKEN_PROGRAM_ADDRESS,\n      quoteTokenProgram: TOKEN_PROGRAM_ADDRESS,\n    };\n  },\n  token2022Base(): LaunchTokenPrograms {\n    return {\n      baseTokenProgram: TOKEN_2022_PROGRAM_ADDRESS,\n      quoteTokenProgram: TOKEN_PROGRAM_ADDRESS,\n    };\n  },\n} as const;\n\nexport function createLaunchId(): Uint8Array {\n  const bytes = new Uint8Array(32);\n  const view = new DataView(bytes.buffer);\n  view.setBigUint64(0, BigInt(Date.now()), true);\n  view.setBigUint64(8, launchIdCounter, true);\n  launchIdCounter += 1n;\n  bytes.set([0x44, 0x4f, 0x50, 0x4c], 28);\n  return bytes;\n}\n\nfunction getSignerAddress(value: AddressOrSigner): Address {\n  return getAddressFromAddressOrSigner(value);\n}\n\nfunction hasMetadata(metadata: LaunchMetadata | null | undefined): boolean {\n  return Boolean(metadata?.metadataName);\n}\n\nfunction getInitializerProgramId(\n  input: Pick<CreateLaunchInput, 'deployment' | 'programId'>,\n): Address {\n  return (\n    input.programId ??\n    input.deployment?.initializerProgram ??\n    INITIALIZER_PROGRAM_ID\n  );\n}\n\nfunction getInitializerConfig(\n  input: Pick<CreateLaunchInput, 'deployment' | 'config'>,\n): Address | undefined {\n  return input.config ?? input.deployment?.initializerConfig;\n}\n\nfunction hashRemainingAccounts(\n  accounts: ReadonlyArray<RemainingAccount> | undefined,\n): Uint8Array | undefined {\n  if (!accounts) {\n    return undefined;\n  }\n  return computeRemainingAccountsHash(\n    accounts.map(getAddressFromRemainingAccount),\n  );\n}\n\nfunction isCustomMigrationConfig(\n  migration: CreateLaunchMigrationConfig,\n): migration is CreateLaunchCustomMigrationConfig {\n  return migration.kind === 'custom';\n}\n\nfunction getCreateLaunchHookContext(\n  input: CreateLaunchInput,\n): CreateLaunchHookContext {\n  const program =\n    input.deployment?.dopplerLaunchHookV1Program ??\n    DOPPLER_LAUNCH_HOOK_V1_PROGRAM_ID;\n  if (!input.cosignerGate) {\n    return { program };\n  }\n  if (!isResolvedManagedCosignerGate(input.cosignerGate)) {\n    throw new Error(\n      'cosignerGate must be returned by dopplerLaunchHookV1.resolveManagedCosignerGate',\n    );\n  }\n  if (input.cosignerGate.programId !== program) {\n    throw new Error(\n      `managed cosigner gate was resolved for ${input.cosignerGate.programId}, expected ${program}`,\n    );\n  }\n\n  return { program, cosignerGate: input.cosignerGate };\n}\n\nfunction resolveDopplerLaunchHookV1Payload(\n  input: CreateLaunchInput,\n  hookContext: CreateLaunchHookContext,\n): ReadonlyUint8Array {\n  let gateExpiry: DopplerLaunchHookV1PayloadArgs['gateExpiry'] = null;\n  const cosignerGate = hookContext.cosignerGate;\n  const expiresAt = cosignerGate?.expiresAt;\n  if (cosignerGate && expiresAt !== undefined && expiresAt !== null) {\n    gateExpiry = {\n      mode: GATE_EXPIRY_UNIX_TIMESTAMP,\n      value: expiresAt,\n      cosigner: cosignerGate.cosigner,\n    };\n  }\n\n  return encodeDopplerLaunchHookV1Payload({\n    schedule: input.dynamicFee ?? null,\n    gateExpiry,\n  });\n}\n\nfunction resolveCreateLaunchHook({\n  input,\n  namespace,\n  hookContext,\n}: {\n  input: CreateLaunchInput;\n  namespace: Address;\n  hookContext: CreateLaunchHookContext;\n}): ResolvedCreateLaunchHook {\n  const hasCosigner = hookContext.cosignerGate !== undefined;\n  const hasSchedule = Boolean(input.dynamicFee);\n  const remainingAccounts = getDopplerLaunchHookV1RemainingAccounts({\n    namespace,\n    config: hookContext.cosignerGate?.config,\n    cosigner: hookContext.cosignerGate?.cosigner,\n  });\n\n  return {\n    program: hookContext.program,\n    flags:\n      HF_BEFORE_SWAP |\n      (hasSchedule ? HF_BEFORE_CREATE : 0) |\n      (hasCosigner ? HF_FORWARD_READONLY_SIGNERS : 0),\n    payload: resolveDopplerLaunchHookV1Payload(input, hookContext),\n    remainingAccountsHash: remainingAccounts.hookRemainingAccountsHash,\n  };\n}\n\nasync function getAssociatedTokenAddress({\n  owner,\n  mint,\n  tokenProgram,\n}: {\n  owner: Address;\n  mint: Address;\n  tokenProgram: Address;\n}): Promise<Address> {\n  const [ata] = await findAssociatedTokenPda({\n    owner,\n    mint,\n    tokenProgram,\n  });\n  return ata;\n}\n\nasync function resolveCreateLaunchMigration({\n  addresses,\n  input,\n  tokenPrograms,\n}: {\n  addresses: CreateLaunchAddresses;\n  input: CreateLaunchInput;\n  tokenPrograms: LaunchTokenPrograms;\n}): Promise<ResolvedCreateLaunchMigration | null> {\n  const migration = input.migration === undefined ? true : input.migration;\n  if (migration === false || migration === null) {\n    return null;\n  }\n\n  const cpmmMigratorProgram =\n    input.deployment?.cpmmMigratorProgram ?? CPMM_MIGRATOR_PROGRAM_ID;\n  if (migration !== true && isCustomMigrationConfig(migration)) {\n    if (!migration.program) {\n      throw new Error('custom launch migration requires a migrator program');\n    }\n    return migration;\n  }\n\n  const cpmmMigration = migration === true ? {} : migration;\n  const admin = cpmmMigration.admin ?? getSignerAddress(input.payer);\n  const baseMint = getSignerAddress(input.launchAccounts.baseMint);\n  const adminBaseAta =\n    cpmmMigration.adminBaseAta ??\n    (await getAssociatedTokenAddress({\n      owner: admin,\n      mint: baseMint,\n      tokenProgram: tokenPrograms.baseTokenProgram,\n    }));\n  const adminQuoteAta =\n    cpmmMigration.adminQuoteAta ??\n    (await getAssociatedTokenAddress({\n      owner: admin,\n      mint: input.launchAccounts.quoteMint,\n      tokenProgram: tokenPrograms.quoteTokenProgram,\n    }));\n  const recipients = [...(cpmmMigration.recipients ?? [])];\n  const recipientAtas =\n    cpmmMigration.recipientAtas ??\n    (await Promise.all(\n      recipients.map(({ wallet }) =>\n        getAssociatedTokenAddress({\n          owner: wallet,\n          mint: baseMint,\n          tokenProgram: tokenPrograms.baseTokenProgram,\n        }),\n      ),\n    ));\n  const migrationAccounts = await buildCpmmMigrationRemainingAccounts({\n    launch: addresses.launch,\n    baseMint,\n    quoteMint: input.launchAccounts.quoteMint,\n    launchAuthority: addresses.launchAuthority,\n    adminBaseAta,\n    adminQuoteAta,\n    recipientAtas: [...recipientAtas],\n    cpmmProgram: cpmmMigration.cpmmProgram ?? input.deployment?.cpmmProgram,\n    cpmmMigratorProgram: cpmmMigration.program ?? cpmmMigratorProgram,\n  });\n  const initPayload = encodeRegisterLaunchPayload({\n    cpmmConfig: migrationAccounts.cpmmConfig,\n    initialSwapFeeBps:\n      cpmmMigration.initialSwapFeeBps ?? input.curve.swapFeeBps,\n    initialFeeSplitBps:\n      cpmmMigration.initialFeeSplitBps ?? DEFAULT_CPMM_MIGRATION_FEE_SPLIT_BPS,\n    recipients,\n    minRaiseQuote: cpmmMigration.minRaiseQuote ?? 0n,\n    minMigrationPriceQ64Opt: cpmmMigration.minMigrationPriceQ64Opt ?? null,\n    migratedPoolHookConfig: cpmmMigration.migratedPoolHookConfig ?? null,\n  });\n  const migratePayload = encodeMigratePayload({\n    baseForDistribution:\n      cpmmMigration.baseForDistribution ?? input.supply.baseForDistribution,\n    baseForLiquidity:\n      cpmmMigration.baseForLiquidity ?? input.supply.baseForLiquidity,\n  });\n\n  return {\n    program: cpmmMigration.program ?? cpmmMigratorProgram,\n    initPayload,\n    migratePayload,\n    cpmmConfig: migrationAccounts.cpmmConfig,\n    remainingAccounts: migrationAccounts.addresses,\n    remainingAccountsHash: migrationAccounts.hash,\n    cpmmMigration: migrationAccounts,\n  };\n}\n\nexport async function deriveCreateLaunchAddresses(\n  input: DeriveCreateLaunchAddressesInput,\n): Promise<CreateLaunchAddresses> {\n  const programId =\n    input.programId ??\n    input.deployment?.initializerProgram ??\n    INITIALIZER_PROGRAM_ID;\n  const config =\n    input.config ??\n    input.deployment?.initializerConfig ??\n    (await getConfigAddress(programId))[0];\n  const [launch] = await getLaunchAddress(\n    input.namespace,\n    input.launchId,\n    programId,\n  );\n  const [launchAuthority] = await getLaunchAuthorityAddress(launch, programId);\n  const [launchFeeState] = await getLaunchFeeStateAddress(launch, programId);\n  const metadataAccount = hasMetadata(input.metadata)\n    ? (input.metadataAccount ??\n      (await getTokenMetadataAddress(getSignerAddress(input.baseMint))))\n    : input.metadataAccount;\n\n  return {\n    config,\n    launch,\n    launchAuthority,\n    launchFeeState,\n    metadataAccount,\n  };\n}\n\nasync function getMigrationInitRemainingAccountsHash({\n  launch,\n  migration,\n}: {\n  launch: Address;\n  migration: ResolvedCreateLaunchMigration | null | undefined;\n}): Promise<ReadonlyUint8Array> {\n  if (!migration) {\n    return EMPTY_REMAINING_ACCOUNTS_HASH;\n  }\n  if (migration.initRemainingAccountsHash) {\n    return migration.initRemainingAccountsHash;\n  }\n  const initHash = hashRemainingAccounts(migration.initRemainingAccounts);\n  if (initHash) {\n    return initHash;\n  }\n  if (migration.cpmmConfig) {\n    const migratorProgram = migration.program ?? CPMM_MIGRATOR_PROGRAM_ID;\n    const [cpmmMigrationState] = await getCpmmMigratorStateAddress(\n      launch,\n      migratorProgram,\n    );\n    return computeRemainingAccountsHash([\n      cpmmMigrationState,\n      migration.cpmmConfig,\n    ]);\n  }\n  return EMPTY_REMAINING_ACCOUNTS_HASH;\n}\n\nexport async function createLaunch(\n  input: CreateLaunchInput,\n): Promise<CreateLaunchResult> {\n  const hookContext = getCreateLaunchHookContext(input);\n  const namespace = input.namespace ?? SYSTEM_PROGRAM_ADDRESS;\n  const hook = resolveCreateLaunchHook({\n    input,\n    namespace,\n    hookContext,\n  });\n\n  return createLaunchWithResolvedHook(input, hook, hookContext.cosignerGate);\n}\n\n/** @internal Used by feature-specific launch builders after resolving a hook. */\nexport async function createLaunchWithResolvedHook(\n  input: CreateLaunchInput,\n  hook: ResolvedCreateLaunchHook,\n  cosignerGate?: ResolvedManagedCosignerGate,\n): Promise<CreateLaunchResult> {\n  const programId = getInitializerProgramId(input);\n  const launchId = input.launchId ?? createLaunchId();\n  const namespace = input.namespace ?? SYSTEM_PROGRAM_ADDRESS;\n  const tokenPrograms = {\n    ...launchTokenPrograms.splToken(),\n    ...input.tokenPrograms,\n  };\n  const addresses =\n    input.addresses ??\n    (await deriveCreateLaunchAddresses({\n      deployment: input.deployment,\n      programId,\n      config: getInitializerConfig(input),\n      namespace,\n      launchId,\n      baseMint: input.launchAccounts.baseMint,\n      metadata: input.metadata,\n    }));\n  const migration = await resolveCreateLaunchMigration({\n    addresses,\n    input,\n    tokenPrograms,\n  });\n  const migratorInitRemainingAccountsHash =\n    await getMigrationInitRemainingAccountsHash({\n      launch: addresses.launch,\n      migration,\n    });\n  const migratorRemainingAccountsHash =\n    migration?.remainingAccountsHash ??\n    hashRemainingAccounts(migration?.remainingAccounts) ??\n    EMPTY_REMAINING_ACCOUNTS_HASH;\n\n  const instruction = await createInitializeLaunchInstruction(\n    {\n      config: addresses.config,\n      launch: addresses.launch,\n      launchAuthority: addresses.launchAuthority,\n      baseMint: input.launchAccounts.baseMint,\n      quoteMint: input.launchAccounts.quoteMint,\n      baseVault: input.launchAccounts.baseVault,\n      quoteVault: input.launchAccounts.quoteVault,\n      launchFeeState: addresses.launchFeeState,\n      payer: input.payer,\n      authority: input.authority,\n      hookProgram: hook.program,\n      migratorProgram: migration?.program,\n      cpmmConfig: migration?.cpmmConfig,\n      baseTokenProgram: tokenPrograms.baseTokenProgram,\n      quoteTokenProgram: tokenPrograms.quoteTokenProgram,\n      systemProgram: input.systemProgram ?? SYSTEM_PROGRAM_ADDRESS,\n      rent: input.rent ?? SYSVAR_RENT_ADDRESS,\n      metadataAccount: addresses.metadataAccount,\n      metadataProgram: input.metadataProgram ?? TOKEN_METADATA_PROGRAM_ID,\n      vestingConfig: input.vestingConfig,\n      hookCreateRemainingAccounts: hook.createRemainingAccounts,\n    },\n    {\n      namespace,\n      launchId,\n      baseDecimals: input.supply.baseDecimals,\n      baseTotalSupply: input.supply.baseTotalSupply,\n      baseForDistribution: input.supply.baseForDistribution,\n      baseForLiquidity: input.supply.baseForLiquidity,\n      curveVirtualBase: input.curve.curveVirtualBase,\n      curveVirtualQuote: input.curve.curveVirtualQuote,\n      swapFeeBps: input.curve.swapFeeBps,\n      curveKind: CURVE_KIND_XYK,\n      curveParams: new Uint8Array([CURVE_PARAMS_FORMAT_XYK_V0]),\n      allowBuy: input.allowBuy ?? true,\n      allowSell: input.allowSell ?? true,\n      hookFlags: hook.flags,\n      hookPayload: hook.payload,\n      migratorInitPayload: migration?.initPayload ?? new Uint8Array(),\n      migratorMigratePayload: migration?.migratePayload ?? new Uint8Array(),\n      hookRemainingAccountsHash: hook.remainingAccountsHash,\n      migratorInitRemainingAccountsHash,\n      migratorRemainingAccountsHash,\n      feeBeneficiaries: input.feeBeneficiaries ?? [],\n      metadataName: input.metadata?.metadataName ?? '',\n      metadataSymbol: input.metadata?.metadataSymbol ?? '',\n      metadataUri: input.metadata?.metadataUri ?? '',\n    },\n    programId,\n  );\n\n  const preparedInstruction = migration?.initRemainingAccounts\n    ? {\n        ...instruction,\n        accounts: [\n          ...(instruction.accounts ?? []),\n          ...(migration?.initRemainingAccounts ?? []).map(\n            createReadonlyRemainingAccountMeta,\n          ),\n        ],\n      }\n    : instruction;\n\n  return {\n    namespace,\n    launchId,\n    addresses,\n    instruction: preparedInstruction,\n    cpmmMigration: migration?.cpmmMigration,\n    ...(cosignerGate ? { cosignerGate } : {}),\n  };\n}\n","import {\n  getCreateLookupTableInstruction,\n  getExtendLookupTableInstruction,\n  findAddressLookupTablePda,\n} from '@solana-program/address-lookup-table';\nimport {\n  AccountRole,\n  compressTransactionMessageUsingAddressLookupTables,\n  type Address,\n  type Instruction,\n  type TransactionMessage,\n  type TransactionSigner,\n} from '@solana/kit';\n\nexport const DEFAULT_LOOKUP_TABLE_ADDRESSES_PER_EXTEND = 20;\n\nexport function getInstructionLookupTableAddresses(\n  instructions: Instruction | readonly Instruction[],\n): Address[] {\n  const seen = new Set<Address>();\n  const addresses: Address[] = [];\n\n  for (const instruction of Array.isArray(instructions)\n    ? instructions\n    : [instructions]) {\n    for (const account of instruction.accounts ?? []) {\n      if (\n        'signer' in account ||\n        account.role === AccountRole.READONLY_SIGNER ||\n        account.role === AccountRole.WRITABLE_SIGNER\n      ) {\n        continue;\n      }\n\n      if (!seen.has(account.address)) {\n        seen.add(account.address);\n        addresses.push(account.address);\n      }\n    }\n  }\n\n  return addresses;\n}\n\nexport interface BuildAddressLookupTableSetupInstructionsInput {\n  authority: TransactionSigner;\n  payer: TransactionSigner;\n  recentSlot: number | bigint;\n  addresses: readonly Address[];\n  addressesPerExtendInstruction?: number;\n}\n\nexport interface BuildAddressLookupTableSetupInstructionsResult {\n  lookupTableAddress: Address;\n  createInstruction: Instruction;\n  extendInstructions: Instruction[];\n  addresses: Address[];\n}\n\nexport async function buildAddressLookupTableSetupInstructions({\n  authority,\n  payer,\n  recentSlot,\n  addresses,\n  addressesPerExtendInstruction = DEFAULT_LOOKUP_TABLE_ADDRESSES_PER_EXTEND,\n}: BuildAddressLookupTableSetupInstructionsInput): Promise<BuildAddressLookupTableSetupInstructionsResult> {\n  if (addressesPerExtendInstruction <= 0) {\n    throw new Error('addressesPerExtendInstruction must be greater than zero');\n  }\n\n  const dedupedAddresses = [...new Set(addresses)];\n  const lookupTablePda = await findAddressLookupTablePda({\n    authority: authority.address,\n    recentSlot,\n  });\n  const [lookupTableAddress] = lookupTablePda;\n  const createInstruction = getCreateLookupTableInstruction({\n    address: lookupTablePda,\n    authority: authority.address,\n    payer,\n    recentSlot,\n  });\n\n  const extendInstructions = [];\n  for (\n    let start = 0;\n    start < dedupedAddresses.length;\n    start += addressesPerExtendInstruction\n  ) {\n    extendInstructions.push(\n      getExtendLookupTableInstruction({\n        address: lookupTableAddress,\n        authority,\n        payer,\n        addresses: dedupedAddresses.slice(\n          start,\n          start + addressesPerExtendInstruction,\n        ),\n      }),\n    );\n  }\n\n  return {\n    lookupTableAddress,\n    createInstruction,\n    extendInstructions,\n    addresses: dedupedAddresses,\n  };\n}\n\nexport function compressTransactionMessageWithLookupTable<\n  TTransactionMessage extends Exclude<\n    TransactionMessage,\n    { version: 'legacy' }\n  >,\n>(\n  transactionMessage: TTransactionMessage,\n  {\n    lookupTableAddress,\n    addresses,\n  }: {\n    lookupTableAddress: Address;\n    addresses: readonly Address[];\n  },\n) {\n  return compressTransactionMessageUsingAddressLookupTables(\n    transactionMessage,\n    {\n      [lookupTableAddress]: [...addresses],\n    },\n  );\n}\n","import {\n  getTransactionMessageSize,\n  type Address,\n  type TransactionMessage,\n  type TransactionMessageWithFeePayer,\n} from '@solana/kit';\n\nimport { compressTransactionMessageWithLookupTable } from './addressLookupTables.js';\n\nexport const SOLANA_TRANSACTION_SIZE_LIMIT = 1232;\n\nexport interface TransactionSizeReport {\n  size: number;\n  limit: number;\n  overBy: number;\n  fits: boolean;\n}\n\nexport interface TransactionSizeAssertOptions {\n  label?: string;\n  metadataBytes?: number;\n}\n\nexport type SizedTransactionMessage = TransactionMessage &\n  TransactionMessageWithFeePayer;\n\nexport function measureTransactionMessageSize(\n  transactionMessage: SizedTransactionMessage,\n): TransactionSizeReport {\n  const size = getTransactionMessageSize(transactionMessage);\n  const overBy = Math.max(0, size - SOLANA_TRANSACTION_SIZE_LIMIT);\n\n  return {\n    size,\n    limit: SOLANA_TRANSACTION_SIZE_LIMIT,\n    overBy,\n    fits: overBy === 0,\n  };\n}\n\nexport function measureTransactionMessageSizeWithLookupTable<\n  TTransactionMessage extends Exclude<\n    SizedTransactionMessage,\n    { version: 'legacy' }\n  >,\n>(\n  transactionMessage: TTransactionMessage,\n  lookupTable: {\n    lookupTableAddress: Address;\n    addresses: readonly Address[];\n  },\n): TransactionSizeReport {\n  return measureTransactionMessageSize(\n    compressTransactionMessageWithLookupTable(transactionMessage, lookupTable),\n  );\n}\n\nexport function assertTransactionMessageFits(\n  transactionMessage: SizedTransactionMessage,\n  { label = 'Transaction', metadataBytes }: TransactionSizeAssertOptions = {},\n): TransactionSizeReport {\n  const report = measureTransactionMessageSize(transactionMessage);\n  if (report.fits) {\n    return report;\n  }\n\n  const metadataHint =\n    metadataBytes && metadataBytes > 0\n      ? ` Metadata contributes ${metadataBytes} instruction-data bytes; address lookup tables do not compress metadata strings.`\n      : '';\n\n  throw new Error(\n    `${label} is ${report.size} bytes, exceeding Solana's ${report.limit}-byte transaction limit by ${report.overBy} bytes.${metadataHint}`,\n  );\n}\n\nexport function assertTransactionMessageFitsWithLookupTable<\n  TTransactionMessage extends Exclude<\n    SizedTransactionMessage,\n    { version: 'legacy' }\n  >,\n>(\n  transactionMessage: TTransactionMessage,\n  lookupTable: {\n    lookupTableAddress: Address;\n    addresses: readonly Address[];\n  },\n  options: TransactionSizeAssertOptions = {},\n): TransactionSizeReport {\n  const compressedMessage = compressTransactionMessageWithLookupTable(\n    transactionMessage,\n    lookupTable,\n  );\n  return assertTransactionMessageFits(compressedMessage, options);\n}\n","/**\n * Launch fetching functions for the Initializer SDK\n */\n\nimport { getAddressCodec, type Address } from '@solana/kit';\nimport type { Rpc, GetAccountInfoApi } from '@solana/kit';\nimport type { GetProgramAccountsRpc } from '../../core/rpc.js';\nimport {\n  getLaunchDecoder,\n  type Launch,\n} from '../../generated/initializer/index.js';\nimport {\n  base64ToBytes,\n  bytesToBase64EncodedBytes,\n  normalizeProgramAccountsResponse,\n  warnAccountDecodeFailure,\n} from '../../core/accounts.js';\nimport {\n  INITIALIZER_PROGRAM_ID,\n  INITIALIZER_ACCOUNT_DISCRIMINATORS,\n} from '../constants.js';\nimport { getLaunchAddress } from '../pda.js';\n\nconst addressCodec = getAddressCodec();\n\nexport interface FetchLaunchesConfig {\n  programId?: Address;\n  commitment?: 'processed' | 'confirmed' | 'finalized';\n}\n\nexport interface LaunchWithAddress {\n  address: Address;\n  account: Launch;\n}\n\nexport async function fetchLaunch(\n  rpc: Rpc<GetAccountInfoApi>,\n  address: Address,\n  config?: FetchLaunchesConfig,\n): Promise<Launch | null> {\n  const response = await rpc\n    .getAccountInfo(address, {\n      encoding: 'base64',\n      commitment: config?.commitment,\n    })\n    .send();\n\n  if (!response.value) {\n    return null;\n  }\n\n  return getLaunchDecoder().decode(base64ToBytes(response.value.data[0]));\n}\n\nexport async function fetchAllLaunches(\n  rpc: GetProgramAccountsRpc,\n  config?: FetchLaunchesConfig,\n): Promise<LaunchWithAddress[]> {\n  const programId = config?.programId ?? INITIALIZER_PROGRAM_ID;\n\n  const discriminatorFilter = {\n    memcmp: {\n      offset: 0n,\n      bytes: bytesToBase64EncodedBytes(\n        INITIALIZER_ACCOUNT_DISCRIMINATORS.Launch,\n      ),\n      encoding: 'base64' as const,\n    },\n  };\n\n  const response = await rpc\n    .getProgramAccounts(programId, {\n      encoding: 'base64',\n      commitment: config?.commitment,\n      filters: [discriminatorFilter],\n    })\n    .send();\n  const accounts = normalizeProgramAccountsResponse(response);\n\n  const launches: LaunchWithAddress[] = [];\n  const decoder = getLaunchDecoder();\n\n  for (const account of accounts) {\n    try {\n      const launch = decoder.decode(base64ToBytes(account.account.data[0]));\n      launches.push({ address: account.pubkey, account: launch });\n    } catch {\n      warnAccountDecodeFailure('launch', account.pubkey);\n    }\n  }\n\n  return launches;\n}\n\n/**\n * Fetch launches filtered by Launch.authority (offset 8).\n * Note: Permissionless launches have authority == Pubkey::default().\n */\nexport async function fetchLaunchesByAuthority(\n  rpc: GetProgramAccountsRpc,\n  authority: Address,\n  config?: FetchLaunchesConfig,\n): Promise<LaunchWithAddress[]> {\n  const programId = config?.programId ?? INITIALIZER_PROGRAM_ID;\n\n  const discriminatorFilter = {\n    memcmp: {\n      offset: 0n,\n      bytes: bytesToBase64EncodedBytes(\n        INITIALIZER_ACCOUNT_DISCRIMINATORS.Launch,\n      ),\n      encoding: 'base64' as const,\n    },\n  };\n\n  const authorityFilter = {\n    memcmp: {\n      offset: 8n,\n      bytes: bytesToBase64EncodedBytes(addressCodec.encode(authority)),\n      encoding: 'base64' as const,\n    },\n  };\n\n  const response = await rpc\n    .getProgramAccounts(programId, {\n      encoding: 'base64',\n      commitment: config?.commitment,\n      filters: [discriminatorFilter, authorityFilter],\n    })\n    .send();\n  const accounts = normalizeProgramAccountsResponse(response);\n\n  const launches: LaunchWithAddress[] = [];\n  const decoder = getLaunchDecoder();\n\n  for (const account of accounts) {\n    try {\n      const launch = decoder.decode(base64ToBytes(account.account.data[0]));\n      launches.push({ address: account.pubkey, account: launch });\n    } catch {\n      warnAccountDecodeFailure('launch', account.pubkey);\n    }\n  }\n\n  return launches;\n}\n\nexport async function launchExists(\n  rpc: Rpc<GetAccountInfoApi>,\n  namespace: Address,\n  launchId: Uint8Array,\n  config?: FetchLaunchesConfig,\n): Promise<boolean> {\n  const programId = config?.programId ?? INITIALIZER_PROGRAM_ID;\n  const [launchAddress] = await getLaunchAddress(\n    namespace,\n    launchId,\n    programId,\n  );\n  const launch = await fetchLaunch(rpc, launchAddress, config);\n  return launch !== null;\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  assertAccountExists,\n  assertAccountsExist,\n  combineCodec,\n  decodeAccount,\n  fetchEncodedAccount,\n  fetchEncodedAccounts,\n  fixDecoderSize,\n  fixEncoderSize,\n  getAddressDecoder,\n  getAddressEncoder,\n  getArrayDecoder,\n  getArrayEncoder,\n  getBooleanDecoder,\n  getBooleanEncoder,\n  getBytesDecoder,\n  getBytesEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU16Decoder,\n  getU16Encoder,\n  getU8Decoder,\n  getU8Encoder,\n  transformEncoder,\n  type Account,\n  type Address,\n  type EncodedAccount,\n  type FetchAccountConfig,\n  type FetchAccountsConfig,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n  type MaybeAccount,\n  type MaybeEncodedAccount,\n  type ReadonlyUint8Array,\n} from '@solana/kit';\n\nexport const AMM_CONFIG_DISCRIMINATOR = new Uint8Array([\n  218, 244, 33, 104, 203, 203, 43, 111,\n]);\n\nexport function getAmmConfigDiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(AMM_CONFIG_DISCRIMINATOR);\n}\n\nexport type AmmConfig = {\n  discriminator: ReadonlyUint8Array;\n  admin: Address;\n  paused: boolean;\n  hookAllowlistLen: number;\n  hookAllowlist: Array<Address>;\n  maxSwapFeeBps: number;\n  maxFeeSplitBps: number;\n  protocolFeeEnabled: boolean;\n  protocolFeeBps: number;\n  version: number;\n  reserved: ReadonlyUint8Array;\n};\n\nexport type AmmConfigArgs = {\n  admin: Address;\n  paused: boolean;\n  hookAllowlistLen: number;\n  hookAllowlist: Array<Address>;\n  maxSwapFeeBps: number;\n  maxFeeSplitBps: number;\n  protocolFeeEnabled: boolean;\n  protocolFeeBps: number;\n  version: number;\n  reserved: ReadonlyUint8Array;\n};\n\n/** Gets the encoder for {@link AmmConfigArgs} account data. */\nexport function getAmmConfigEncoder(): FixedSizeEncoder<AmmConfigArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['admin', getAddressEncoder()],\n      ['paused', getBooleanEncoder()],\n      ['hookAllowlistLen', getU8Encoder()],\n      ['hookAllowlist', getArrayEncoder(getAddressEncoder(), { size: 32 })],\n      ['maxSwapFeeBps', getU16Encoder()],\n      ['maxFeeSplitBps', getU16Encoder()],\n      ['protocolFeeEnabled', getBooleanEncoder()],\n      ['protocolFeeBps', getU16Encoder()],\n      ['version', getU8Encoder()],\n      ['reserved', fixEncoderSize(getBytesEncoder(), 7)],\n    ]),\n    (value) => ({ ...value, discriminator: AMM_CONFIG_DISCRIMINATOR }),\n  );\n}\n\n/** Gets the decoder for {@link AmmConfig} account data. */\nexport function getAmmConfigDecoder(): FixedSizeDecoder<AmmConfig> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['admin', getAddressDecoder()],\n    ['paused', getBooleanDecoder()],\n    ['hookAllowlistLen', getU8Decoder()],\n    ['hookAllowlist', getArrayDecoder(getAddressDecoder(), { size: 32 })],\n    ['maxSwapFeeBps', getU16Decoder()],\n    ['maxFeeSplitBps', getU16Decoder()],\n    ['protocolFeeEnabled', getBooleanDecoder()],\n    ['protocolFeeBps', getU16Decoder()],\n    ['version', getU8Decoder()],\n    ['reserved', fixDecoderSize(getBytesDecoder(), 7)],\n  ]);\n}\n\n/** Gets the codec for {@link AmmConfig} account data. */\nexport function getAmmConfigCodec(): FixedSizeCodec<AmmConfigArgs, AmmConfig> {\n  return combineCodec(getAmmConfigEncoder(), getAmmConfigDecoder());\n}\n\nexport function decodeAmmConfig<TAddress extends string = string>(\n  encodedAccount: EncodedAccount<TAddress>,\n): Account<AmmConfig, TAddress>;\nexport function decodeAmmConfig<TAddress extends string = string>(\n  encodedAccount: MaybeEncodedAccount<TAddress>,\n): MaybeAccount<AmmConfig, TAddress>;\nexport function decodeAmmConfig<TAddress extends string = string>(\n  encodedAccount: EncodedAccount<TAddress> | MaybeEncodedAccount<TAddress>,\n): Account<AmmConfig, TAddress> | MaybeAccount<AmmConfig, TAddress> {\n  return decodeAccount(\n    encodedAccount as MaybeEncodedAccount<TAddress>,\n    getAmmConfigDecoder(),\n  );\n}\n\nexport async function fetchAmmConfig<TAddress extends string = string>(\n  rpc: Parameters<typeof fetchEncodedAccount>[0],\n  address: Address<TAddress>,\n  config?: FetchAccountConfig,\n): Promise<Account<AmmConfig, TAddress>> {\n  const maybeAccount = await fetchMaybeAmmConfig(rpc, address, config);\n  assertAccountExists(maybeAccount);\n  return maybeAccount;\n}\n\nexport async function fetchMaybeAmmConfig<TAddress extends string = string>(\n  rpc: Parameters<typeof fetchEncodedAccount>[0],\n  address: Address<TAddress>,\n  config?: FetchAccountConfig,\n): Promise<MaybeAccount<AmmConfig, TAddress>> {\n  const maybeAccount = await fetchEncodedAccount(rpc, address, config);\n  return decodeAmmConfig(maybeAccount);\n}\n\nexport async function fetchAllAmmConfig(\n  rpc: Parameters<typeof fetchEncodedAccounts>[0],\n  addresses: Array<Address>,\n  config?: FetchAccountsConfig,\n): Promise<Account<AmmConfig>[]> {\n  const maybeAccounts = await fetchAllMaybeAmmConfig(rpc, addresses, config);\n  assertAccountsExist(maybeAccounts);\n  return maybeAccounts;\n}\n\nexport async function fetchAllMaybeAmmConfig(\n  rpc: Parameters<typeof fetchEncodedAccounts>[0],\n  addresses: Array<Address>,\n  config?: FetchAccountsConfig,\n): Promise<MaybeAccount<AmmConfig>[]> {\n  const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config);\n  return maybeAccounts.map((maybeAccount) => decodeAmmConfig(maybeAccount));\n}\n\nexport function getAmmConfigSize(): number {\n  return 1081;\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  assertAccountExists,\n  assertAccountsExist,\n  combineCodec,\n  decodeAccount,\n  fetchEncodedAccount,\n  fetchEncodedAccounts,\n  fixDecoderSize,\n  fixEncoderSize,\n  getAddressDecoder,\n  getAddressEncoder,\n  getArrayDecoder,\n  getArrayEncoder,\n  getBytesDecoder,\n  getBytesEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU16Decoder,\n  getU16Encoder,\n  getU8Decoder,\n  getU8Encoder,\n  transformEncoder,\n  type Account,\n  type Address,\n  type EncodedAccount,\n  type FetchAccountConfig,\n  type FetchAccountsConfig,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n  type MaybeAccount,\n  type MaybeEncodedAccount,\n  type ReadonlyUint8Array,\n} from '@solana/kit';\n\nexport const INIT_CONFIG_DISCRIMINATOR = new Uint8Array([\n  97, 166, 35, 7, 20, 2, 164, 126,\n]);\n\nexport function getInitConfigDiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(INIT_CONFIG_DISCRIMINATOR);\n}\n\nexport type InitConfig = {\n  discriminator: ReadonlyUint8Array;\n  admin: Address;\n  migratorAllowlistLen: number;\n  migratorAllowlist: Array<Address>;\n  hookAllowlistLen: number;\n  hookAllowlist: Array<Address>;\n  bump: number;\n  version: number;\n  protocolFeeBps: number;\n  minSwapFeeBps: number;\n  maxSwapFeeBps: number;\n  reserved: ReadonlyUint8Array;\n};\n\nexport type InitConfigArgs = {\n  admin: Address;\n  migratorAllowlistLen: number;\n  migratorAllowlist: Array<Address>;\n  hookAllowlistLen: number;\n  hookAllowlist: Array<Address>;\n  bump: number;\n  version: number;\n  protocolFeeBps: number;\n  minSwapFeeBps: number;\n  maxSwapFeeBps: number;\n  reserved: ReadonlyUint8Array;\n};\n\n/** Gets the encoder for {@link InitConfigArgs} account data. */\nexport function getInitConfigEncoder(): FixedSizeEncoder<InitConfigArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['admin', getAddressEncoder()],\n      ['migratorAllowlistLen', getU8Encoder()],\n      ['migratorAllowlist', getArrayEncoder(getAddressEncoder(), { size: 32 })],\n      ['hookAllowlistLen', getU8Encoder()],\n      ['hookAllowlist', getArrayEncoder(getAddressEncoder(), { size: 32 })],\n      ['bump', getU8Encoder()],\n      ['version', getU8Encoder()],\n      ['protocolFeeBps', getU16Encoder()],\n      ['minSwapFeeBps', getU16Encoder()],\n      ['maxSwapFeeBps', getU16Encoder()],\n      ['reserved', fixEncoderSize(getBytesEncoder(), 24)],\n    ]),\n    (value) => ({ ...value, discriminator: INIT_CONFIG_DISCRIMINATOR }),\n  );\n}\n\n/** Gets the decoder for {@link InitConfig} account data. */\nexport function getInitConfigDecoder(): FixedSizeDecoder<InitConfig> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['admin', getAddressDecoder()],\n    ['migratorAllowlistLen', getU8Decoder()],\n    ['migratorAllowlist', getArrayDecoder(getAddressDecoder(), { size: 32 })],\n    ['hookAllowlistLen', getU8Decoder()],\n    ['hookAllowlist', getArrayDecoder(getAddressDecoder(), { size: 32 })],\n    ['bump', getU8Decoder()],\n    ['version', getU8Decoder()],\n    ['protocolFeeBps', getU16Decoder()],\n    ['minSwapFeeBps', getU16Decoder()],\n    ['maxSwapFeeBps', getU16Decoder()],\n    ['reserved', fixDecoderSize(getBytesDecoder(), 24)],\n  ]);\n}\n\n/** Gets the codec for {@link InitConfig} account data. */\nexport function getInitConfigCodec(): FixedSizeCodec<\n  InitConfigArgs,\n  InitConfig\n> {\n  return combineCodec(getInitConfigEncoder(), getInitConfigDecoder());\n}\n\nexport function decodeInitConfig<TAddress extends string = string>(\n  encodedAccount: EncodedAccount<TAddress>,\n): Account<InitConfig, TAddress>;\nexport function decodeInitConfig<TAddress extends string = string>(\n  encodedAccount: MaybeEncodedAccount<TAddress>,\n): MaybeAccount<InitConfig, TAddress>;\nexport function decodeInitConfig<TAddress extends string = string>(\n  encodedAccount: EncodedAccount<TAddress> | MaybeEncodedAccount<TAddress>,\n): Account<InitConfig, TAddress> | MaybeAccount<InitConfig, TAddress> {\n  return decodeAccount(\n    encodedAccount as MaybeEncodedAccount<TAddress>,\n    getInitConfigDecoder(),\n  );\n}\n\nexport async function fetchInitConfig<TAddress extends string = string>(\n  rpc: Parameters<typeof fetchEncodedAccount>[0],\n  address: Address<TAddress>,\n  config?: FetchAccountConfig,\n): Promise<Account<InitConfig, TAddress>> {\n  const maybeAccount = await fetchMaybeInitConfig(rpc, address, config);\n  assertAccountExists(maybeAccount);\n  return maybeAccount;\n}\n\nexport async function fetchMaybeInitConfig<TAddress extends string = string>(\n  rpc: Parameters<typeof fetchEncodedAccount>[0],\n  address: Address<TAddress>,\n  config?: FetchAccountConfig,\n): Promise<MaybeAccount<InitConfig, TAddress>> {\n  const maybeAccount = await fetchEncodedAccount(rpc, address, config);\n  return decodeInitConfig(maybeAccount);\n}\n\nexport async function fetchAllInitConfig(\n  rpc: Parameters<typeof fetchEncodedAccounts>[0],\n  addresses: Array<Address>,\n  config?: FetchAccountsConfig,\n): Promise<Account<InitConfig>[]> {\n  const maybeAccounts = await fetchAllMaybeInitConfig(rpc, addresses, config);\n  assertAccountsExist(maybeAccounts);\n  return maybeAccounts;\n}\n\nexport async function fetchAllMaybeInitConfig(\n  rpc: Parameters<typeof fetchEncodedAccounts>[0],\n  addresses: Array<Address>,\n  config?: FetchAccountsConfig,\n): Promise<MaybeAccount<InitConfig>[]> {\n  const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config);\n  return maybeAccounts.map((maybeAccount) => decodeInitConfig(maybeAccount));\n}\n\nexport function getInitConfigSize(): number {\n  return 2122;\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getAddressDecoder,\n  getAddressEncoder,\n  getBytesDecoder,\n  getBytesEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU16Decoder,\n  getU16Encoder,\n  type Address,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n  type ReadonlyUint8Array,\n} from '@solana/kit';\n\nexport type FeeBeneficiary = {\n  wallet: Address;\n  shareBps: number;\n  pad: ReadonlyUint8Array;\n};\n\nexport type FeeBeneficiaryArgs = FeeBeneficiary;\n\nexport function getFeeBeneficiaryEncoder(): FixedSizeEncoder<FeeBeneficiaryArgs> {\n  return getStructEncoder([\n    ['wallet', getAddressEncoder()],\n    ['shareBps', getU16Encoder()],\n    ['pad', fixEncoderSize(getBytesEncoder(), 6)],\n  ]);\n}\n\nexport function getFeeBeneficiaryDecoder(): FixedSizeDecoder<FeeBeneficiary> {\n  return getStructDecoder([\n    ['wallet', getAddressDecoder()],\n    ['shareBps', getU16Decoder()],\n    ['pad', fixDecoderSize(getBytesDecoder(), 6)],\n  ]);\n}\n\nexport function getFeeBeneficiaryCodec(): FixedSizeCodec<\n  FeeBeneficiaryArgs,\n  FeeBeneficiary\n> {\n  return combineCodec(getFeeBeneficiaryEncoder(), getFeeBeneficiaryDecoder());\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  getStructDecoder,\n  getStructEncoder,\n  getU16Decoder,\n  getU16Encoder,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n} from '@solana/kit';\n\nexport type FeeRoute = {\n  assetBuybackBps: number;\n  numeraireBuybackBps: number;\n  beneficiaryBps: number;\n  lpBps: number;\n};\n\nexport type FeeRouteArgs = FeeRoute;\n\nexport function getFeeRouteEncoder(): FixedSizeEncoder<FeeRouteArgs> {\n  return getStructEncoder([\n    ['assetBuybackBps', getU16Encoder()],\n    ['numeraireBuybackBps', getU16Encoder()],\n    ['beneficiaryBps', getU16Encoder()],\n    ['lpBps', getU16Encoder()],\n  ]);\n}\n\nexport function getFeeRouteDecoder(): FixedSizeDecoder<FeeRoute> {\n  return getStructDecoder([\n    ['assetBuybackBps', getU16Decoder()],\n    ['numeraireBuybackBps', getU16Decoder()],\n    ['beneficiaryBps', getU16Decoder()],\n    ['lpBps', getU16Decoder()],\n  ]);\n}\n\nexport function getFeeRouteCodec(): FixedSizeCodec<FeeRouteArgs, FeeRoute> {\n  return combineCodec(getFeeRouteEncoder(), getFeeRouteDecoder());\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  getStructDecoder,\n  getStructEncoder,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n} from '@solana/kit';\nimport {\n  getFeeRouteDecoder,\n  getFeeRouteEncoder,\n  type FeeRoute,\n  type FeeRouteArgs,\n} from '.';\n\nexport type FeeRoutingMatrix = { assetFees: FeeRoute; numeraireFees: FeeRoute };\n\nexport type FeeRoutingMatrixArgs = {\n  assetFees: FeeRouteArgs;\n  numeraireFees: FeeRouteArgs;\n};\n\nexport function getFeeRoutingMatrixEncoder(): FixedSizeEncoder<FeeRoutingMatrixArgs> {\n  return getStructEncoder([\n    ['assetFees', getFeeRouteEncoder()],\n    ['numeraireFees', getFeeRouteEncoder()],\n  ]);\n}\n\nexport function getFeeRoutingMatrixDecoder(): FixedSizeDecoder<FeeRoutingMatrix> {\n  return getStructDecoder([\n    ['assetFees', getFeeRouteDecoder()],\n    ['numeraireFees', getFeeRouteDecoder()],\n  ]);\n}\n\nexport function getFeeRoutingMatrixCodec(): FixedSizeCodec<\n  FeeRoutingMatrixArgs,\n  FeeRoutingMatrix\n> {\n  return combineCodec(\n    getFeeRoutingMatrixEncoder(),\n    getFeeRoutingMatrixDecoder(),\n  );\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getAddressDecoder,\n  getAddressEncoder,\n  getArrayDecoder,\n  getArrayEncoder,\n  getBytesDecoder,\n  getBytesEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU8Decoder,\n  getU8Encoder,\n  type Address,\n  type Codec,\n  type Decoder,\n  type Encoder,\n  type ReadonlyUint8Array,\n} from '@solana/kit';\nimport {\n  getFeeRoutingMatrixDecoder,\n  getFeeRoutingMatrixEncoder,\n  getRehypeBeneficiaryInputDecoder,\n  getRehypeBeneficiaryInputEncoder,\n  type FeeRoutingMatrix,\n  type FeeRoutingMatrixArgs,\n  type RehypeBeneficiaryInput,\n  type RehypeBeneficiaryInputArgs,\n} from '.';\n\nexport type InitializeRehypeArgs = {\n  namespace: Address;\n  launchId: ReadonlyUint8Array;\n  buybackDestination: Address;\n  settlementAuthority: Address;\n  routingMode: number;\n  feeRouting: FeeRoutingMatrix;\n  beneficiaries: Array<RehypeBeneficiaryInput>;\n};\n\nexport type InitializeRehypeArgsArgs = {\n  namespace: Address;\n  launchId: ReadonlyUint8Array;\n  buybackDestination: Address;\n  settlementAuthority: Address;\n  routingMode: number;\n  feeRouting: FeeRoutingMatrixArgs;\n  beneficiaries: Array<RehypeBeneficiaryInputArgs>;\n};\n\nexport function getInitializeRehypeArgsEncoder(): Encoder<InitializeRehypeArgsArgs> {\n  return getStructEncoder([\n    ['namespace', getAddressEncoder()],\n    ['launchId', fixEncoderSize(getBytesEncoder(), 32)],\n    ['buybackDestination', getAddressEncoder()],\n    ['settlementAuthority', getAddressEncoder()],\n    ['routingMode', getU8Encoder()],\n    ['feeRouting', getFeeRoutingMatrixEncoder()],\n    ['beneficiaries', getArrayEncoder(getRehypeBeneficiaryInputEncoder())],\n  ]);\n}\n\nexport function getInitializeRehypeArgsDecoder(): Decoder<InitializeRehypeArgs> {\n  return getStructDecoder([\n    ['namespace', getAddressDecoder()],\n    ['launchId', fixDecoderSize(getBytesDecoder(), 32)],\n    ['buybackDestination', getAddressDecoder()],\n    ['settlementAuthority', getAddressDecoder()],\n    ['routingMode', getU8Decoder()],\n    ['feeRouting', getFeeRoutingMatrixDecoder()],\n    ['beneficiaries', getArrayDecoder(getRehypeBeneficiaryInputDecoder())],\n  ]);\n}\n\nexport function getInitializeRehypeArgsCodec(): Codec<\n  InitializeRehypeArgsArgs,\n  InitializeRehypeArgs\n> {\n  return combineCodec(\n    getInitializeRehypeArgsEncoder(),\n    getInitializeRehypeArgsDecoder(),\n  );\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  getStructDecoder,\n  getStructEncoder,\n  getU64Decoder,\n  getU64Encoder,\n  getU8Decoder,\n  getU8Encoder,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n} from '@solana/kit';\n\nexport type LpRebalanceArgs = {\n  /** Uses Initializer semantics: buy is quote-to-base and sell is base-to-quote. */\n  tradeDirection: number;\n  amountIn: bigint;\n  minAmountOut: bigint;\n};\n\nexport type LpRebalanceArgsArgs = {\n  /** Uses Initializer semantics: buy is quote-to-base and sell is base-to-quote. */\n  tradeDirection: number;\n  amountIn: number | bigint;\n  minAmountOut: number | bigint;\n};\n\nexport function getLpRebalanceArgsEncoder(): FixedSizeEncoder<LpRebalanceArgsArgs> {\n  return getStructEncoder([\n    ['tradeDirection', getU8Encoder()],\n    ['amountIn', getU64Encoder()],\n    ['minAmountOut', getU64Encoder()],\n  ]);\n}\n\nexport function getLpRebalanceArgsDecoder(): FixedSizeDecoder<LpRebalanceArgs> {\n  return getStructDecoder([\n    ['tradeDirection', getU8Decoder()],\n    ['amountIn', getU64Decoder()],\n    ['minAmountOut', getU64Decoder()],\n  ]);\n}\n\nexport function getLpRebalanceArgsCodec(): FixedSizeCodec<\n  LpRebalanceArgsArgs,\n  LpRebalanceArgs\n> {\n  return combineCodec(getLpRebalanceArgsEncoder(), getLpRebalanceArgsDecoder());\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getBytesDecoder,\n  getBytesEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU16Decoder,\n  getU16Encoder,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n  type ReadonlyUint8Array,\n} from '@solana/kit';\n\n/** Variable-length payload buffer. */\nexport type PayloadBuf = { len: number; bytes: ReadonlyUint8Array };\n\nexport type PayloadBufArgs = PayloadBuf;\n\nexport function getPayloadBufEncoder(): FixedSizeEncoder<PayloadBufArgs> {\n  return getStructEncoder([\n    ['len', getU16Encoder()],\n    ['bytes', fixEncoderSize(getBytesEncoder(), 256)],\n  ]);\n}\n\nexport function getPayloadBufDecoder(): FixedSizeDecoder<PayloadBuf> {\n  return getStructDecoder([\n    ['len', getU16Decoder()],\n    ['bytes', fixDecoderSize(getBytesDecoder(), 256)],\n  ]);\n}\n\nexport function getPayloadBufCodec(): FixedSizeCodec<\n  PayloadBufArgs,\n  PayloadBuf\n> {\n  return combineCodec(getPayloadBufEncoder(), getPayloadBufDecoder());\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getAddressDecoder,\n  getAddressEncoder,\n  getBytesDecoder,\n  getBytesEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU16Decoder,\n  getU16Encoder,\n  type Address,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n  type ReadonlyUint8Array,\n} from '@solana/kit';\n\nexport type RehypeBeneficiary = {\n  wallet: Address;\n  shareBps: number;\n  padding: ReadonlyUint8Array;\n};\n\nexport type RehypeBeneficiaryArgs = RehypeBeneficiary;\n\nexport function getRehypeBeneficiaryEncoder(): FixedSizeEncoder<RehypeBeneficiaryArgs> {\n  return getStructEncoder([\n    ['wallet', getAddressEncoder()],\n    ['shareBps', getU16Encoder()],\n    ['padding', fixEncoderSize(getBytesEncoder(), 6)],\n  ]);\n}\n\nexport function getRehypeBeneficiaryDecoder(): FixedSizeDecoder<RehypeBeneficiary> {\n  return getStructDecoder([\n    ['wallet', getAddressDecoder()],\n    ['shareBps', getU16Decoder()],\n    ['padding', fixDecoderSize(getBytesDecoder(), 6)],\n  ]);\n}\n\nexport function getRehypeBeneficiaryCodec(): FixedSizeCodec<\n  RehypeBeneficiaryArgs,\n  RehypeBeneficiary\n> {\n  return combineCodec(\n    getRehypeBeneficiaryEncoder(),\n    getRehypeBeneficiaryDecoder(),\n  );\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  getAddressDecoder,\n  getAddressEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU16Decoder,\n  getU16Encoder,\n  type Address,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n} from '@solana/kit';\n\nexport type RehypeBeneficiaryInput = { wallet: Address; shareBps: number };\n\nexport type RehypeBeneficiaryInputArgs = RehypeBeneficiaryInput;\n\nexport function getRehypeBeneficiaryInputEncoder(): FixedSizeEncoder<RehypeBeneficiaryInputArgs> {\n  return getStructEncoder([\n    ['wallet', getAddressEncoder()],\n    ['shareBps', getU16Encoder()],\n  ]);\n}\n\nexport function getRehypeBeneficiaryInputDecoder(): FixedSizeDecoder<RehypeBeneficiaryInput> {\n  return getStructDecoder([\n    ['wallet', getAddressDecoder()],\n    ['shareBps', getU16Decoder()],\n  ]);\n}\n\nexport function getRehypeBeneficiaryInputCodec(): FixedSizeCodec<\n  RehypeBeneficiaryInputArgs,\n  RehypeBeneficiaryInput\n> {\n  return combineCodec(\n    getRehypeBeneficiaryInputEncoder(),\n    getRehypeBeneficiaryInputDecoder(),\n  );\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  getAddressDecoder,\n  getAddressEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  type Address,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n} from '@solana/kit';\n\nexport type RehypeBeneficiaryReplaced = {\n  rehypeState: Address;\n  currentWallet: Address;\n  newWallet: Address;\n};\n\nexport type RehypeBeneficiaryReplacedArgs = RehypeBeneficiaryReplaced;\n\nexport function getRehypeBeneficiaryReplacedEncoder(): FixedSizeEncoder<RehypeBeneficiaryReplacedArgs> {\n  return getStructEncoder([\n    ['rehypeState', getAddressEncoder()],\n    ['currentWallet', getAddressEncoder()],\n    ['newWallet', getAddressEncoder()],\n  ]);\n}\n\nexport function getRehypeBeneficiaryReplacedDecoder(): FixedSizeDecoder<RehypeBeneficiaryReplaced> {\n  return getStructDecoder([\n    ['rehypeState', getAddressDecoder()],\n    ['currentWallet', getAddressDecoder()],\n    ['newWallet', getAddressDecoder()],\n  ]);\n}\n\nexport function getRehypeBeneficiaryReplacedCodec(): FixedSizeCodec<\n  RehypeBeneficiaryReplacedArgs,\n  RehypeBeneficiaryReplaced\n> {\n  return combineCodec(\n    getRehypeBeneficiaryReplacedEncoder(),\n    getRehypeBeneficiaryReplacedDecoder(),\n  );\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  getAddressDecoder,\n  getAddressEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU64Decoder,\n  getU64Encoder,\n  type Address,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n} from '@solana/kit';\n\nexport type RehypeFeesClaimed = {\n  rehypeState: Address;\n  beneficiary: Address;\n  baseAmount: bigint;\n  quoteAmount: bigint;\n};\n\nexport type RehypeFeesClaimedArgs = {\n  rehypeState: Address;\n  beneficiary: Address;\n  baseAmount: number | bigint;\n  quoteAmount: number | bigint;\n};\n\nexport function getRehypeFeesClaimedEncoder(): FixedSizeEncoder<RehypeFeesClaimedArgs> {\n  return getStructEncoder([\n    ['rehypeState', getAddressEncoder()],\n    ['beneficiary', getAddressEncoder()],\n    ['baseAmount', getU64Encoder()],\n    ['quoteAmount', getU64Encoder()],\n  ]);\n}\n\nexport function getRehypeFeesClaimedDecoder(): FixedSizeDecoder<RehypeFeesClaimed> {\n  return getStructDecoder([\n    ['rehypeState', getAddressDecoder()],\n    ['beneficiary', getAddressDecoder()],\n    ['baseAmount', getU64Decoder()],\n    ['quoteAmount', getU64Decoder()],\n  ]);\n}\n\nexport function getRehypeFeesClaimedCodec(): FixedSizeCodec<\n  RehypeFeesClaimedArgs,\n  RehypeFeesClaimed\n> {\n  return combineCodec(\n    getRehypeFeesClaimedEncoder(),\n    getRehypeFeesClaimedDecoder(),\n  );\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  getAddressDecoder,\n  getAddressEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  type Address,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n} from '@solana/kit';\n\nexport type RehypeInitialized = {\n  rehypeState: Address;\n  launch: Address;\n  baseMint: Address;\n  quoteMint: Address;\n  hookProgram: Address;\n};\n\nexport type RehypeInitializedArgs = RehypeInitialized;\n\nexport function getRehypeInitializedEncoder(): FixedSizeEncoder<RehypeInitializedArgs> {\n  return getStructEncoder([\n    ['rehypeState', getAddressEncoder()],\n    ['launch', getAddressEncoder()],\n    ['baseMint', getAddressEncoder()],\n    ['quoteMint', getAddressEncoder()],\n    ['hookProgram', getAddressEncoder()],\n  ]);\n}\n\nexport function getRehypeInitializedDecoder(): FixedSizeDecoder<RehypeInitialized> {\n  return getStructDecoder([\n    ['rehypeState', getAddressDecoder()],\n    ['launch', getAddressDecoder()],\n    ['baseMint', getAddressDecoder()],\n    ['quoteMint', getAddressDecoder()],\n    ['hookProgram', getAddressDecoder()],\n  ]);\n}\n\nexport function getRehypeInitializedCodec(): FixedSizeCodec<\n  RehypeInitializedArgs,\n  RehypeInitialized\n> {\n  return combineCodec(\n    getRehypeInitializedEncoder(),\n    getRehypeInitializedDecoder(),\n  );\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  getAddressDecoder,\n  getAddressEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU64Decoder,\n  getU64Encoder,\n  type Address,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n} from '@solana/kit';\n\nexport type RehypeSettled = {\n  rehypeState: Address;\n  launch: Address;\n  claimedBase: bigint;\n  claimedQuote: bigint;\n  beneficiaryBase: bigint;\n  beneficiaryQuote: bigint;\n  lpBase: bigint;\n  lpQuote: bigint;\n};\n\nexport type RehypeSettledArgs = {\n  rehypeState: Address;\n  launch: Address;\n  claimedBase: number | bigint;\n  claimedQuote: number | bigint;\n  beneficiaryBase: number | bigint;\n  beneficiaryQuote: number | bigint;\n  lpBase: number | bigint;\n  lpQuote: number | bigint;\n};\n\nexport function getRehypeSettledEncoder(): FixedSizeEncoder<RehypeSettledArgs> {\n  return getStructEncoder([\n    ['rehypeState', getAddressEncoder()],\n    ['launch', getAddressEncoder()],\n    ['claimedBase', getU64Encoder()],\n    ['claimedQuote', getU64Encoder()],\n    ['beneficiaryBase', getU64Encoder()],\n    ['beneficiaryQuote', getU64Encoder()],\n    ['lpBase', getU64Encoder()],\n    ['lpQuote', getU64Encoder()],\n  ]);\n}\n\nexport function getRehypeSettledDecoder(): FixedSizeDecoder<RehypeSettled> {\n  return getStructDecoder([\n    ['rehypeState', getAddressDecoder()],\n    ['launch', getAddressDecoder()],\n    ['claimedBase', getU64Decoder()],\n    ['claimedQuote', getU64Decoder()],\n    ['beneficiaryBase', getU64Decoder()],\n    ['beneficiaryQuote', getU64Decoder()],\n    ['lpBase', getU64Decoder()],\n    ['lpQuote', getU64Decoder()],\n  ]);\n}\n\nexport function getRehypeSettledCodec(): FixedSizeCodec<\n  RehypeSettledArgs,\n  RehypeSettled\n> {\n  return combineCodec(getRehypeSettledEncoder(), getRehypeSettledDecoder());\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  getStructDecoder,\n  getStructEncoder,\n  getU64Decoder,\n  getU64Encoder,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n} from '@solana/kit';\n\nexport type SettleFeesArgs = {\n  minBaseToQuoteOut: bigint;\n  minQuoteToBaseOut: bigint;\n};\n\nexport type SettleFeesArgsArgs = {\n  minBaseToQuoteOut: number | bigint;\n  minQuoteToBaseOut: number | bigint;\n};\n\nexport function getSettleFeesArgsEncoder(): FixedSizeEncoder<SettleFeesArgsArgs> {\n  return getStructEncoder([\n    ['minBaseToQuoteOut', getU64Encoder()],\n    ['minQuoteToBaseOut', getU64Encoder()],\n  ]);\n}\n\nexport function getSettleFeesArgsDecoder(): FixedSizeDecoder<SettleFeesArgs> {\n  return getStructDecoder([\n    ['minBaseToQuoteOut', getU64Decoder()],\n    ['minQuoteToBaseOut', getU64Decoder()],\n  ]);\n}\n\nexport function getSettleFeesArgsCodec(): FixedSizeCodec<\n  SettleFeesArgsArgs,\n  SettleFeesArgs\n> {\n  return combineCodec(getSettleFeesArgsEncoder(), getSettleFeesArgsDecoder());\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  getOptionDecoder,\n  getOptionEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU128Decoder,\n  getU128Encoder,\n  getU64Decoder,\n  getU64Encoder,\n  type Codec,\n  type Decoder,\n  type Encoder,\n  type Option,\n  type OptionOrNullable,\n} from '@solana/kit';\nimport {\n  getLpRebalanceArgsDecoder,\n  getLpRebalanceArgsEncoder,\n  type LpRebalanceArgs,\n  type LpRebalanceArgsArgs,\n} from '.';\n\nexport type SettleMigratedFeesArgs = {\n  minBaseToQuoteOut: bigint;\n  minQuoteToBaseOut: bigint;\n  lpRebalance: Option<LpRebalanceArgs>;\n  minLpSharesOut: bigint;\n};\n\nexport type SettleMigratedFeesArgsArgs = {\n  minBaseToQuoteOut: number | bigint;\n  minQuoteToBaseOut: number | bigint;\n  lpRebalance: OptionOrNullable<LpRebalanceArgsArgs>;\n  minLpSharesOut: number | bigint;\n};\n\nexport function getSettleMigratedFeesArgsEncoder(): Encoder<SettleMigratedFeesArgsArgs> {\n  return getStructEncoder([\n    ['minBaseToQuoteOut', getU64Encoder()],\n    ['minQuoteToBaseOut', getU64Encoder()],\n    ['lpRebalance', getOptionEncoder(getLpRebalanceArgsEncoder())],\n    ['minLpSharesOut', getU128Encoder()],\n  ]);\n}\n\nexport function getSettleMigratedFeesArgsDecoder(): Decoder<SettleMigratedFeesArgs> {\n  return getStructDecoder([\n    ['minBaseToQuoteOut', getU64Decoder()],\n    ['minQuoteToBaseOut', getU64Decoder()],\n    ['lpRebalance', getOptionDecoder(getLpRebalanceArgsDecoder())],\n    ['minLpSharesOut', getU128Decoder()],\n  ]);\n}\n\nexport function getSettleMigratedFeesArgsCodec(): Codec<\n  SettleMigratedFeesArgsArgs,\n  SettleMigratedFeesArgs\n> {\n  return combineCodec(\n    getSettleMigratedFeesArgsEncoder(),\n    getSettleMigratedFeesArgsDecoder(),\n  );\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  assertAccountExists,\n  assertAccountsExist,\n  combineCodec,\n  decodeAccount,\n  fetchEncodedAccount,\n  fetchEncodedAccounts,\n  fixDecoderSize,\n  fixEncoderSize,\n  getAddressDecoder,\n  getAddressEncoder,\n  getBytesDecoder,\n  getBytesEncoder,\n  getI64Decoder,\n  getI64Encoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU16Decoder,\n  getU16Encoder,\n  getU32Decoder,\n  getU32Encoder,\n  getU64Decoder,\n  getU64Encoder,\n  getU8Decoder,\n  getU8Encoder,\n  transformEncoder,\n  type Account,\n  type Address,\n  type EncodedAccount,\n  type FetchAccountConfig,\n  type FetchAccountsConfig,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n  type MaybeAccount,\n  type MaybeEncodedAccount,\n  type ReadonlyUint8Array,\n} from '@solana/kit';\nimport {\n  getPayloadBufDecoder,\n  getPayloadBufEncoder,\n  type PayloadBuf,\n  type PayloadBufArgs,\n} from '../types';\n\nexport const LAUNCH_DISCRIMINATOR = new Uint8Array([\n  144, 51, 51, 163, 206, 85, 213, 38,\n]);\n\nexport function getLaunchDiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(LAUNCH_DISCRIMINATOR);\n}\n\nexport type Launch = {\n  discriminator: ReadonlyUint8Array;\n  authority: Address;\n  namespace: Address;\n  launchId: ReadonlyUint8Array;\n  phase: number;\n  bump: number;\n  launchAuthorityBump: number;\n  pad0: ReadonlyUint8Array;\n  baseMint: Address;\n  quoteMint: Address;\n  baseVault: Address;\n  quoteVault: Address;\n  baseTotalSupply: bigint;\n  baseForDistribution: bigint;\n  baseForLiquidity: bigint;\n  baseForCurve: bigint;\n  curveVirtualBase: bigint;\n  curveVirtualQuote: bigint;\n  swapFeeBps: number;\n  pad1: ReadonlyUint8Array;\n  allowBuy: number;\n  allowSell: number;\n  pad2: ReadonlyUint8Array;\n  hookProgram: Address;\n  hookFlags: number;\n  pad3: ReadonlyUint8Array;\n  hookPayload: PayloadBuf;\n  migratorProgram: Address;\n  migratorInitPayload: PayloadBuf;\n  migratorMigratePayload: PayloadBuf;\n  curveKind: number;\n  swapLock: number;\n  vestingEnabled: number;\n  pad4: ReadonlyUint8Array;\n  curveParams: PayloadBuf;\n  createdAt: bigint;\n  reserved: ReadonlyUint8Array;\n};\n\nexport type LaunchArgs = {\n  authority: Address;\n  namespace: Address;\n  launchId: ReadonlyUint8Array;\n  phase: number;\n  bump: number;\n  launchAuthorityBump: number;\n  pad0: ReadonlyUint8Array;\n  baseMint: Address;\n  quoteMint: Address;\n  baseVault: Address;\n  quoteVault: Address;\n  baseTotalSupply: number | bigint;\n  baseForDistribution: number | bigint;\n  baseForLiquidity: number | bigint;\n  baseForCurve: number | bigint;\n  curveVirtualBase: number | bigint;\n  curveVirtualQuote: number | bigint;\n  swapFeeBps: number;\n  pad1: ReadonlyUint8Array;\n  allowBuy: number;\n  allowSell: number;\n  pad2: ReadonlyUint8Array;\n  hookProgram: Address;\n  hookFlags: number;\n  pad3: ReadonlyUint8Array;\n  hookPayload: PayloadBufArgs;\n  migratorProgram: Address;\n  migratorInitPayload: PayloadBufArgs;\n  migratorMigratePayload: PayloadBufArgs;\n  curveKind: number;\n  swapLock: number;\n  vestingEnabled: number;\n  pad4: ReadonlyUint8Array;\n  curveParams: PayloadBufArgs;\n  createdAt: number | bigint;\n  reserved: ReadonlyUint8Array;\n};\n\n/** Gets the encoder for {@link LaunchArgs} account data. */\nexport function getLaunchEncoder(): FixedSizeEncoder<LaunchArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['authority', getAddressEncoder()],\n      ['namespace', getAddressEncoder()],\n      ['launchId', fixEncoderSize(getBytesEncoder(), 32)],\n      ['phase', getU8Encoder()],\n      ['bump', getU8Encoder()],\n      ['launchAuthorityBump', getU8Encoder()],\n      ['pad0', fixEncoderSize(getBytesEncoder(), 5)],\n      ['baseMint', getAddressEncoder()],\n      ['quoteMint', getAddressEncoder()],\n      ['baseVault', getAddressEncoder()],\n      ['quoteVault', getAddressEncoder()],\n      ['baseTotalSupply', getU64Encoder()],\n      ['baseForDistribution', getU64Encoder()],\n      ['baseForLiquidity', getU64Encoder()],\n      ['baseForCurve', getU64Encoder()],\n      ['curveVirtualBase', getU64Encoder()],\n      ['curveVirtualQuote', getU64Encoder()],\n      ['swapFeeBps', getU16Encoder()],\n      ['pad1', fixEncoderSize(getBytesEncoder(), 6)],\n      ['allowBuy', getU8Encoder()],\n      ['allowSell', getU8Encoder()],\n      ['pad2', fixEncoderSize(getBytesEncoder(), 6)],\n      ['hookProgram', getAddressEncoder()],\n      ['hookFlags', getU32Encoder()],\n      ['pad3', fixEncoderSize(getBytesEncoder(), 4)],\n      ['hookPayload', getPayloadBufEncoder()],\n      ['migratorProgram', getAddressEncoder()],\n      ['migratorInitPayload', getPayloadBufEncoder()],\n      ['migratorMigratePayload', getPayloadBufEncoder()],\n      ['curveKind', getU8Encoder()],\n      ['swapLock', getU8Encoder()],\n      ['vestingEnabled', getU8Encoder()],\n      ['pad4', fixEncoderSize(getBytesEncoder(), 5)],\n      ['curveParams', getPayloadBufEncoder()],\n      ['createdAt', getI64Encoder()],\n      ['reserved', fixEncoderSize(getBytesEncoder(), 64)],\n    ]),\n    (value) => ({ ...value, discriminator: LAUNCH_DISCRIMINATOR }),\n  );\n}\n\n/** Gets the decoder for {@link Launch} account data. */\nexport function getLaunchDecoder(): FixedSizeDecoder<Launch> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['authority', getAddressDecoder()],\n    ['namespace', getAddressDecoder()],\n    ['launchId', fixDecoderSize(getBytesDecoder(), 32)],\n    ['phase', getU8Decoder()],\n    ['bump', getU8Decoder()],\n    ['launchAuthorityBump', getU8Decoder()],\n    ['pad0', fixDecoderSize(getBytesDecoder(), 5)],\n    ['baseMint', getAddressDecoder()],\n    ['quoteMint', getAddressDecoder()],\n    ['baseVault', getAddressDecoder()],\n    ['quoteVault', getAddressDecoder()],\n    ['baseTotalSupply', getU64Decoder()],\n    ['baseForDistribution', getU64Decoder()],\n    ['baseForLiquidity', getU64Decoder()],\n    ['baseForCurve', getU64Decoder()],\n    ['curveVirtualBase', getU64Decoder()],\n    ['curveVirtualQuote', getU64Decoder()],\n    ['swapFeeBps', getU16Decoder()],\n    ['pad1', fixDecoderSize(getBytesDecoder(), 6)],\n    ['allowBuy', getU8Decoder()],\n    ['allowSell', getU8Decoder()],\n    ['pad2', fixDecoderSize(getBytesDecoder(), 6)],\n    ['hookProgram', getAddressDecoder()],\n    ['hookFlags', getU32Decoder()],\n    ['pad3', fixDecoderSize(getBytesDecoder(), 4)],\n    ['hookPayload', getPayloadBufDecoder()],\n    ['migratorProgram', getAddressDecoder()],\n    ['migratorInitPayload', getPayloadBufDecoder()],\n    ['migratorMigratePayload', getPayloadBufDecoder()],\n    ['curveKind', getU8Decoder()],\n    ['swapLock', getU8Decoder()],\n    ['vestingEnabled', getU8Decoder()],\n    ['pad4', fixDecoderSize(getBytesDecoder(), 5)],\n    ['curveParams', getPayloadBufDecoder()],\n    ['createdAt', getI64Decoder()],\n    ['reserved', fixDecoderSize(getBytesDecoder(), 64)],\n  ]);\n}\n\n/** Gets the codec for {@link Launch} account data. */\nexport function getLaunchCodec(): FixedSizeCodec<LaunchArgs, Launch> {\n  return combineCodec(getLaunchEncoder(), getLaunchDecoder());\n}\n\nexport function decodeLaunch<TAddress extends string = string>(\n  encodedAccount: EncodedAccount<TAddress>,\n): Account<Launch, TAddress>;\nexport function decodeLaunch<TAddress extends string = string>(\n  encodedAccount: MaybeEncodedAccount<TAddress>,\n): MaybeAccount<Launch, TAddress>;\nexport function decodeLaunch<TAddress extends string = string>(\n  encodedAccount: EncodedAccount<TAddress> | MaybeEncodedAccount<TAddress>,\n): Account<Launch, TAddress> | MaybeAccount<Launch, TAddress> {\n  return decodeAccount(\n    encodedAccount as MaybeEncodedAccount<TAddress>,\n    getLaunchDecoder(),\n  );\n}\n\nexport async function fetchLaunch<TAddress extends string = string>(\n  rpc: Parameters<typeof fetchEncodedAccount>[0],\n  address: Address<TAddress>,\n  config?: FetchAccountConfig,\n): Promise<Account<Launch, TAddress>> {\n  const maybeAccount = await fetchMaybeLaunch(rpc, address, config);\n  assertAccountExists(maybeAccount);\n  return maybeAccount;\n}\n\nexport async function fetchMaybeLaunch<TAddress extends string = string>(\n  rpc: Parameters<typeof fetchEncodedAccount>[0],\n  address: Address<TAddress>,\n  config?: FetchAccountConfig,\n): Promise<MaybeAccount<Launch, TAddress>> {\n  const maybeAccount = await fetchEncodedAccount(rpc, address, config);\n  return decodeLaunch(maybeAccount);\n}\n\nexport async function fetchAllLaunch(\n  rpc: Parameters<typeof fetchEncodedAccounts>[0],\n  addresses: Array<Address>,\n  config?: FetchAccountsConfig,\n): Promise<Account<Launch>[]> {\n  const maybeAccounts = await fetchAllMaybeLaunch(rpc, addresses, config);\n  assertAccountsExist(maybeAccounts);\n  return maybeAccounts;\n}\n\nexport async function fetchAllMaybeLaunch(\n  rpc: Parameters<typeof fetchEncodedAccounts>[0],\n  addresses: Array<Address>,\n  config?: FetchAccountsConfig,\n): Promise<MaybeAccount<Launch>[]> {\n  const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config);\n  return maybeAccounts.map((maybeAccount) => decodeLaunch(maybeAccount));\n}\n\nexport function getLaunchSize(): number {\n  return 1488;\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  assertAccountExists,\n  assertAccountsExist,\n  combineCodec,\n  decodeAccount,\n  fetchEncodedAccount,\n  fetchEncodedAccounts,\n  fixDecoderSize,\n  fixEncoderSize,\n  getAddressDecoder,\n  getAddressEncoder,\n  getArrayDecoder,\n  getArrayEncoder,\n  getBytesDecoder,\n  getBytesEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU16Decoder,\n  getU16Encoder,\n  getU64Decoder,\n  getU64Encoder,\n  getU8Decoder,\n  getU8Encoder,\n  transformEncoder,\n  type Account,\n  type Address,\n  type EncodedAccount,\n  type FetchAccountConfig,\n  type FetchAccountsConfig,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n  type MaybeAccount,\n  type MaybeEncodedAccount,\n  type ReadonlyUint8Array,\n} from '@solana/kit';\nimport {\n  getFeeBeneficiaryDecoder,\n  getFeeBeneficiaryEncoder,\n  type FeeBeneficiary,\n  type FeeBeneficiaryArgs,\n} from '../types';\n\nexport const LAUNCH_FEE_STATE_DISCRIMINATOR = new Uint8Array([\n  1, 106, 55, 241, 179, 18, 230, 232,\n]);\n\nexport function getLaunchFeeStateDiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(\n    LAUNCH_FEE_STATE_DISCRIMINATOR,\n  );\n}\n\nexport type LaunchFeeState = {\n  discriminator: ReadonlyUint8Array;\n  launch: Address;\n  beneficiaryLen: number;\n  bump: number;\n  protocolFeeBps: number;\n  swapFeeBps: number;\n  version: number;\n  pad0: ReadonlyUint8Array;\n  beneficiaries: Array<FeeBeneficiary>;\n  cumulatedBaseFees: bigint;\n  cumulatedQuoteFees: bigint;\n  distributedProtocolBaseFees: bigint;\n  distributedProtocolQuoteFees: bigint;\n  distributedBaseByBeneficiary: Array<bigint>;\n  distributedQuoteByBeneficiary: Array<bigint>;\n  reserved: ReadonlyUint8Array;\n};\n\nexport type LaunchFeeStateArgs = {\n  launch: Address;\n  beneficiaryLen: number;\n  bump: number;\n  protocolFeeBps: number;\n  swapFeeBps: number;\n  version: number;\n  pad0: ReadonlyUint8Array;\n  beneficiaries: Array<FeeBeneficiaryArgs>;\n  cumulatedBaseFees: number | bigint;\n  cumulatedQuoteFees: number | bigint;\n  distributedProtocolBaseFees: number | bigint;\n  distributedProtocolQuoteFees: number | bigint;\n  distributedBaseByBeneficiary: Array<number | bigint>;\n  distributedQuoteByBeneficiary: Array<number | bigint>;\n  reserved: ReadonlyUint8Array;\n};\n\n/** Gets the encoder for {@link LaunchFeeStateArgs} account data. */\nexport function getLaunchFeeStateEncoder(): FixedSizeEncoder<LaunchFeeStateArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['launch', getAddressEncoder()],\n      ['beneficiaryLen', getU8Encoder()],\n      ['bump', getU8Encoder()],\n      ['protocolFeeBps', getU16Encoder()],\n      ['swapFeeBps', getU16Encoder()],\n      ['version', getU8Encoder()],\n      ['pad0', fixEncoderSize(getBytesEncoder(), 1)],\n      [\n        'beneficiaries',\n        getArrayEncoder(getFeeBeneficiaryEncoder(), { size: 8 }),\n      ],\n      ['cumulatedBaseFees', getU64Encoder()],\n      ['cumulatedQuoteFees', getU64Encoder()],\n      ['distributedProtocolBaseFees', getU64Encoder()],\n      ['distributedProtocolQuoteFees', getU64Encoder()],\n      [\n        'distributedBaseByBeneficiary',\n        getArrayEncoder(getU64Encoder(), { size: 8 }),\n      ],\n      [\n        'distributedQuoteByBeneficiary',\n        getArrayEncoder(getU64Encoder(), { size: 8 }),\n      ],\n      ['reserved', fixEncoderSize(getBytesEncoder(), 128)],\n    ]),\n    (value) => ({ ...value, discriminator: LAUNCH_FEE_STATE_DISCRIMINATOR }),\n  );\n}\n\n/** Gets the decoder for {@link LaunchFeeState} account data. */\nexport function getLaunchFeeStateDecoder(): FixedSizeDecoder<LaunchFeeState> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['launch', getAddressDecoder()],\n    ['beneficiaryLen', getU8Decoder()],\n    ['bump', getU8Decoder()],\n    ['protocolFeeBps', getU16Decoder()],\n    ['swapFeeBps', getU16Decoder()],\n    ['version', getU8Decoder()],\n    ['pad0', fixDecoderSize(getBytesDecoder(), 1)],\n    ['beneficiaries', getArrayDecoder(getFeeBeneficiaryDecoder(), { size: 8 })],\n    ['cumulatedBaseFees', getU64Decoder()],\n    ['cumulatedQuoteFees', getU64Decoder()],\n    ['distributedProtocolBaseFees', getU64Decoder()],\n    ['distributedProtocolQuoteFees', getU64Decoder()],\n    [\n      'distributedBaseByBeneficiary',\n      getArrayDecoder(getU64Decoder(), { size: 8 }),\n    ],\n    [\n      'distributedQuoteByBeneficiary',\n      getArrayDecoder(getU64Decoder(), { size: 8 }),\n    ],\n    ['reserved', fixDecoderSize(getBytesDecoder(), 128)],\n  ]);\n}\n\n/** Gets the codec for {@link LaunchFeeState} account data. */\nexport function getLaunchFeeStateCodec(): FixedSizeCodec<\n  LaunchFeeStateArgs,\n  LaunchFeeState\n> {\n  return combineCodec(getLaunchFeeStateEncoder(), getLaunchFeeStateDecoder());\n}\n\nexport function decodeLaunchFeeState<TAddress extends string = string>(\n  encodedAccount: EncodedAccount<TAddress>,\n): Account<LaunchFeeState, TAddress>;\nexport function decodeLaunchFeeState<TAddress extends string = string>(\n  encodedAccount: MaybeEncodedAccount<TAddress>,\n): MaybeAccount<LaunchFeeState, TAddress>;\nexport function decodeLaunchFeeState<TAddress extends string = string>(\n  encodedAccount: EncodedAccount<TAddress> | MaybeEncodedAccount<TAddress>,\n): Account<LaunchFeeState, TAddress> | MaybeAccount<LaunchFeeState, TAddress> {\n  return decodeAccount(\n    encodedAccount as MaybeEncodedAccount<TAddress>,\n    getLaunchFeeStateDecoder(),\n  );\n}\n\nexport async function fetchLaunchFeeState<TAddress extends string = string>(\n  rpc: Parameters<typeof fetchEncodedAccount>[0],\n  address: Address<TAddress>,\n  config?: FetchAccountConfig,\n): Promise<Account<LaunchFeeState, TAddress>> {\n  const maybeAccount = await fetchMaybeLaunchFeeState(rpc, address, config);\n  assertAccountExists(maybeAccount);\n  return maybeAccount;\n}\n\nexport async function fetchMaybeLaunchFeeState<\n  TAddress extends string = string,\n>(\n  rpc: Parameters<typeof fetchEncodedAccount>[0],\n  address: Address<TAddress>,\n  config?: FetchAccountConfig,\n): Promise<MaybeAccount<LaunchFeeState, TAddress>> {\n  const maybeAccount = await fetchEncodedAccount(rpc, address, config);\n  return decodeLaunchFeeState(maybeAccount);\n}\n\nexport async function fetchAllLaunchFeeState(\n  rpc: Parameters<typeof fetchEncodedAccounts>[0],\n  addresses: Array<Address>,\n  config?: FetchAccountsConfig,\n): Promise<Account<LaunchFeeState>[]> {\n  const maybeAccounts = await fetchAllMaybeLaunchFeeState(\n    rpc,\n    addresses,\n    config,\n  );\n  assertAccountsExist(maybeAccounts);\n  return maybeAccounts;\n}\n\nexport async function fetchAllMaybeLaunchFeeState(\n  rpc: Parameters<typeof fetchEncodedAccounts>[0],\n  addresses: Array<Address>,\n  config?: FetchAccountsConfig,\n): Promise<MaybeAccount<LaunchFeeState>[]> {\n  const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config);\n  return maybeAccounts.map((maybeAccount) =>\n    decodeLaunchFeeState(maybeAccount),\n  );\n}\n\nexport function getLaunchFeeStateSize(): number {\n  return 656;\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  assertAccountExists,\n  assertAccountsExist,\n  combineCodec,\n  decodeAccount,\n  fetchEncodedAccount,\n  fetchEncodedAccounts,\n  fixDecoderSize,\n  fixEncoderSize,\n  getAddressDecoder,\n  getAddressEncoder,\n  getBytesDecoder,\n  getBytesEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU128Decoder,\n  getU128Encoder,\n  getU16Decoder,\n  getU16Encoder,\n  getU32Decoder,\n  getU32Encoder,\n  getU64Decoder,\n  getU64Encoder,\n  getU8Decoder,\n  getU8Encoder,\n  transformEncoder,\n  type Account,\n  type Address,\n  type EncodedAccount,\n  type FetchAccountConfig,\n  type FetchAccountsConfig,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n  type MaybeAccount,\n  type MaybeEncodedAccount,\n  type ReadonlyUint8Array,\n} from '@solana/kit';\n\nexport const POOL_DISCRIMINATOR = new Uint8Array([\n  241, 154, 109, 4, 17, 177, 109, 188,\n]);\n\nexport function getPoolDiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(POOL_DISCRIMINATOR);\n}\n\nexport type Pool = {\n  discriminator: ReadonlyUint8Array;\n  config: Address;\n  token0Mint: Address;\n  token1Mint: Address;\n  vault0: Address;\n  vault1: Address;\n  authority: Address;\n  bump: number;\n  reserve0: bigint;\n  reserve1: bigint;\n  totalShares: bigint;\n  swapFeeBps: number;\n  feeSplitBps: number;\n  feeGrowthGlobal0Q64: bigint;\n  feeGrowthGlobal1Q64: bigint;\n  feesUnclaimed0: bigint;\n  feesUnclaimed1: bigint;\n  hookProgram: Address;\n  hookFlags: number;\n  liquidityMeasureTokenIndex: number;\n  kLast: bigint;\n  protocolFeePosition: Address;\n  locked: number;\n  version: number;\n  reserved: ReadonlyUint8Array;\n};\n\nexport type PoolArgs = {\n  config: Address;\n  token0Mint: Address;\n  token1Mint: Address;\n  vault0: Address;\n  vault1: Address;\n  authority: Address;\n  bump: number;\n  reserve0: number | bigint;\n  reserve1: number | bigint;\n  totalShares: number | bigint;\n  swapFeeBps: number;\n  feeSplitBps: number;\n  feeGrowthGlobal0Q64: number | bigint;\n  feeGrowthGlobal1Q64: number | bigint;\n  feesUnclaimed0: number | bigint;\n  feesUnclaimed1: number | bigint;\n  hookProgram: Address;\n  hookFlags: number;\n  liquidityMeasureTokenIndex: number;\n  kLast: number | bigint;\n  protocolFeePosition: Address;\n  locked: number;\n  version: number;\n  reserved: ReadonlyUint8Array;\n};\n\n/** Gets the encoder for {@link PoolArgs} account data. */\nexport function getPoolEncoder(): FixedSizeEncoder<PoolArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['config', getAddressEncoder()],\n      ['token0Mint', getAddressEncoder()],\n      ['token1Mint', getAddressEncoder()],\n      ['vault0', getAddressEncoder()],\n      ['vault1', getAddressEncoder()],\n      ['authority', getAddressEncoder()],\n      ['bump', getU8Encoder()],\n      ['reserve0', getU64Encoder()],\n      ['reserve1', getU64Encoder()],\n      ['totalShares', getU128Encoder()],\n      ['swapFeeBps', getU16Encoder()],\n      ['feeSplitBps', getU16Encoder()],\n      ['feeGrowthGlobal0Q64', getU128Encoder()],\n      ['feeGrowthGlobal1Q64', getU128Encoder()],\n      ['feesUnclaimed0', getU64Encoder()],\n      ['feesUnclaimed1', getU64Encoder()],\n      ['hookProgram', getAddressEncoder()],\n      ['hookFlags', getU32Encoder()],\n      ['liquidityMeasureTokenIndex', getU8Encoder()],\n      ['kLast', getU128Encoder()],\n      ['protocolFeePosition', getAddressEncoder()],\n      ['locked', getU8Encoder()],\n      ['version', getU8Encoder()],\n      ['reserved', fixEncoderSize(getBytesEncoder(), 7)],\n    ]),\n    (value) => ({ ...value, discriminator: POOL_DISCRIMINATOR }),\n  );\n}\n\n/** Gets the decoder for {@link Pool} account data. */\nexport function getPoolDecoder(): FixedSizeDecoder<Pool> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['config', getAddressDecoder()],\n    ['token0Mint', getAddressDecoder()],\n    ['token1Mint', getAddressDecoder()],\n    ['vault0', getAddressDecoder()],\n    ['vault1', getAddressDecoder()],\n    ['authority', getAddressDecoder()],\n    ['bump', getU8Decoder()],\n    ['reserve0', getU64Decoder()],\n    ['reserve1', getU64Decoder()],\n    ['totalShares', getU128Decoder()],\n    ['swapFeeBps', getU16Decoder()],\n    ['feeSplitBps', getU16Decoder()],\n    ['feeGrowthGlobal0Q64', getU128Decoder()],\n    ['feeGrowthGlobal1Q64', getU128Decoder()],\n    ['feesUnclaimed0', getU64Decoder()],\n    ['feesUnclaimed1', getU64Decoder()],\n    ['hookProgram', getAddressDecoder()],\n    ['hookFlags', getU32Decoder()],\n    ['liquidityMeasureTokenIndex', getU8Decoder()],\n    ['kLast', getU128Decoder()],\n    ['protocolFeePosition', getAddressDecoder()],\n    ['locked', getU8Decoder()],\n    ['version', getU8Decoder()],\n    ['reserved', fixDecoderSize(getBytesDecoder(), 7)],\n  ]);\n}\n\n/** Gets the codec for {@link Pool} account data. */\nexport function getPoolCodec(): FixedSizeCodec<PoolArgs, Pool> {\n  return combineCodec(getPoolEncoder(), getPoolDecoder());\n}\n\nexport function decodePool<TAddress extends string = string>(\n  encodedAccount: EncodedAccount<TAddress>,\n): Account<Pool, TAddress>;\nexport function decodePool<TAddress extends string = string>(\n  encodedAccount: MaybeEncodedAccount<TAddress>,\n): MaybeAccount<Pool, TAddress>;\nexport function decodePool<TAddress extends string = string>(\n  encodedAccount: EncodedAccount<TAddress> | MaybeEncodedAccount<TAddress>,\n): Account<Pool, TAddress> | MaybeAccount<Pool, TAddress> {\n  return decodeAccount(\n    encodedAccount as MaybeEncodedAccount<TAddress>,\n    getPoolDecoder(),\n  );\n}\n\nexport async function fetchPool<TAddress extends string = string>(\n  rpc: Parameters<typeof fetchEncodedAccount>[0],\n  address: Address<TAddress>,\n  config?: FetchAccountConfig,\n): Promise<Account<Pool, TAddress>> {\n  const maybeAccount = await fetchMaybePool(rpc, address, config);\n  assertAccountExists(maybeAccount);\n  return maybeAccount;\n}\n\nexport async function fetchMaybePool<TAddress extends string = string>(\n  rpc: Parameters<typeof fetchEncodedAccount>[0],\n  address: Address<TAddress>,\n  config?: FetchAccountConfig,\n): Promise<MaybeAccount<Pool, TAddress>> {\n  const maybeAccount = await fetchEncodedAccount(rpc, address, config);\n  return decodePool(maybeAccount);\n}\n\nexport async function fetchAllPool(\n  rpc: Parameters<typeof fetchEncodedAccounts>[0],\n  addresses: Array<Address>,\n  config?: FetchAccountsConfig,\n): Promise<Account<Pool>[]> {\n  const maybeAccounts = await fetchAllMaybePool(rpc, addresses, config);\n  assertAccountsExist(maybeAccounts);\n  return maybeAccounts;\n}\n\nexport async function fetchAllMaybePool(\n  rpc: Parameters<typeof fetchEncodedAccounts>[0],\n  addresses: Array<Address>,\n  config?: FetchAccountsConfig,\n): Promise<MaybeAccount<Pool>[]> {\n  const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config);\n  return maybeAccounts.map((maybeAccount) => decodePool(maybeAccount));\n}\n\nexport function getPoolSize(): number {\n  return 379;\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  assertAccountExists,\n  assertAccountsExist,\n  combineCodec,\n  decodeAccount,\n  fetchEncodedAccount,\n  fetchEncodedAccounts,\n  fixDecoderSize,\n  fixEncoderSize,\n  getAddressDecoder,\n  getAddressEncoder,\n  getBytesDecoder,\n  getBytesEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU128Decoder,\n  getU128Encoder,\n  getU64Decoder,\n  getU64Encoder,\n  getU8Decoder,\n  getU8Encoder,\n  transformEncoder,\n  type Account,\n  type Address,\n  type EncodedAccount,\n  type FetchAccountConfig,\n  type FetchAccountsConfig,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n  type MaybeAccount,\n  type MaybeEncodedAccount,\n  type ReadonlyUint8Array,\n} from '@solana/kit';\n\nexport const POSITION_DISCRIMINATOR = new Uint8Array([\n  170, 188, 143, 228, 122, 64, 247, 208,\n]);\n\nexport function getPositionDiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(POSITION_DISCRIMINATOR);\n}\n\nexport type Position = {\n  discriminator: ReadonlyUint8Array;\n  pool: Address;\n  owner: Address;\n  positionId: bigint;\n  shares: bigint;\n  feeGrowthLast0Q64: bigint;\n  feeGrowthLast1Q64: bigint;\n  feeOwed0: bigint;\n  feeOwed1: bigint;\n  version: number;\n  reserved: ReadonlyUint8Array;\n};\n\nexport type PositionArgs = {\n  pool: Address;\n  owner: Address;\n  positionId: number | bigint;\n  shares: number | bigint;\n  feeGrowthLast0Q64: number | bigint;\n  feeGrowthLast1Q64: number | bigint;\n  feeOwed0: number | bigint;\n  feeOwed1: number | bigint;\n  version: number;\n  reserved: ReadonlyUint8Array;\n};\n\n/** Gets the encoder for {@link PositionArgs} account data. */\nexport function getPositionEncoder(): FixedSizeEncoder<PositionArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['pool', getAddressEncoder()],\n      ['owner', getAddressEncoder()],\n      ['positionId', getU64Encoder()],\n      ['shares', getU128Encoder()],\n      ['feeGrowthLast0Q64', getU128Encoder()],\n      ['feeGrowthLast1Q64', getU128Encoder()],\n      ['feeOwed0', getU64Encoder()],\n      ['feeOwed1', getU64Encoder()],\n      ['version', getU8Encoder()],\n      ['reserved', fixEncoderSize(getBytesEncoder(), 7)],\n    ]),\n    (value) => ({ ...value, discriminator: POSITION_DISCRIMINATOR }),\n  );\n}\n\n/** Gets the decoder for {@link Position} account data. */\nexport function getPositionDecoder(): FixedSizeDecoder<Position> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['pool', getAddressDecoder()],\n    ['owner', getAddressDecoder()],\n    ['positionId', getU64Decoder()],\n    ['shares', getU128Decoder()],\n    ['feeGrowthLast0Q64', getU128Decoder()],\n    ['feeGrowthLast1Q64', getU128Decoder()],\n    ['feeOwed0', getU64Decoder()],\n    ['feeOwed1', getU64Decoder()],\n    ['version', getU8Decoder()],\n    ['reserved', fixDecoderSize(getBytesDecoder(), 7)],\n  ]);\n}\n\n/** Gets the codec for {@link Position} account data. */\nexport function getPositionCodec(): FixedSizeCodec<PositionArgs, Position> {\n  return combineCodec(getPositionEncoder(), getPositionDecoder());\n}\n\nexport function decodePosition<TAddress extends string = string>(\n  encodedAccount: EncodedAccount<TAddress>,\n): Account<Position, TAddress>;\nexport function decodePosition<TAddress extends string = string>(\n  encodedAccount: MaybeEncodedAccount<TAddress>,\n): MaybeAccount<Position, TAddress>;\nexport function decodePosition<TAddress extends string = string>(\n  encodedAccount: EncodedAccount<TAddress> | MaybeEncodedAccount<TAddress>,\n): Account<Position, TAddress> | MaybeAccount<Position, TAddress> {\n  return decodeAccount(\n    encodedAccount as MaybeEncodedAccount<TAddress>,\n    getPositionDecoder(),\n  );\n}\n\nexport async function fetchPosition<TAddress extends string = string>(\n  rpc: Parameters<typeof fetchEncodedAccount>[0],\n  address: Address<TAddress>,\n  config?: FetchAccountConfig,\n): Promise<Account<Position, TAddress>> {\n  const maybeAccount = await fetchMaybePosition(rpc, address, config);\n  assertAccountExists(maybeAccount);\n  return maybeAccount;\n}\n\nexport async function fetchMaybePosition<TAddress extends string = string>(\n  rpc: Parameters<typeof fetchEncodedAccount>[0],\n  address: Address<TAddress>,\n  config?: FetchAccountConfig,\n): Promise<MaybeAccount<Position, TAddress>> {\n  const maybeAccount = await fetchEncodedAccount(rpc, address, config);\n  return decodePosition(maybeAccount);\n}\n\nexport async function fetchAllPosition(\n  rpc: Parameters<typeof fetchEncodedAccounts>[0],\n  addresses: Array<Address>,\n  config?: FetchAccountsConfig,\n): Promise<Account<Position>[]> {\n  const maybeAccounts = await fetchAllMaybePosition(rpc, addresses, config);\n  assertAccountsExist(maybeAccounts);\n  return maybeAccounts;\n}\n\nexport async function fetchAllMaybePosition(\n  rpc: Parameters<typeof fetchEncodedAccounts>[0],\n  addresses: Array<Address>,\n  config?: FetchAccountsConfig,\n): Promise<MaybeAccount<Position>[]> {\n  const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config);\n  return maybeAccounts.map((maybeAccount) => decodePosition(maybeAccount));\n}\n\nexport function getPositionSize(): number {\n  return 152;\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  assertAccountExists,\n  assertAccountsExist,\n  combineCodec,\n  decodeAccount,\n  fetchEncodedAccount,\n  fetchEncodedAccounts,\n  fixDecoderSize,\n  fixEncoderSize,\n  getAddressDecoder,\n  getAddressEncoder,\n  getArrayDecoder,\n  getArrayEncoder,\n  getBytesDecoder,\n  getBytesEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU64Decoder,\n  getU64Encoder,\n  getU8Decoder,\n  getU8Encoder,\n  transformEncoder,\n  type Account,\n  type Address,\n  type EncodedAccount,\n  type FetchAccountConfig,\n  type FetchAccountsConfig,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n  type MaybeAccount,\n  type MaybeEncodedAccount,\n  type ReadonlyUint8Array,\n} from '@solana/kit';\nimport {\n  getFeeRoutingMatrixDecoder,\n  getFeeRoutingMatrixEncoder,\n  getRehypeBeneficiaryDecoder,\n  getRehypeBeneficiaryEncoder,\n  type FeeRoutingMatrix,\n  type FeeRoutingMatrixArgs,\n  type RehypeBeneficiary,\n  type RehypeBeneficiaryArgs,\n} from '../types';\n\nexport const REHYPE_STATE_DISCRIMINATOR = new Uint8Array([\n  189, 101, 117, 1, 189, 167, 250, 225,\n]);\n\nexport function getRehypeStateDiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(\n    REHYPE_STATE_DISCRIMINATOR,\n  );\n}\n\nexport type RehypeState = {\n  discriminator: ReadonlyUint8Array;\n  launch: Address;\n  baseMint: Address;\n  quoteMint: Address;\n  hookProgram: Address;\n  buybackDestination: Address;\n  feeRouting: FeeRoutingMatrix;\n  beneficiaries: Array<RehypeBeneficiary>;\n  cumulativeBeneficiaryBase: bigint;\n  cumulativeBeneficiaryQuote: bigint;\n  distributedBaseByBeneficiary: Array<bigint>;\n  distributedQuoteByBeneficiary: Array<bigint>;\n  pendingCrossBase: bigint;\n  pendingCrossQuote: bigint;\n  pendingLpBase: bigint;\n  pendingLpQuote: bigint;\n  inflightAmountIn: bigint;\n  inflightExpectedAmountOut: bigint;\n  version: number;\n  bump: number;\n  authorityBump: number;\n  settlementSignerBump: number;\n  routingMode: number;\n  beneficiaryCount: number;\n  inflightKind: number;\n  inflightDirection: number;\n  settlementAuthority: Address;\n  cumulativeRoutedBaseFees: bigint;\n  cumulativeRoutedQuoteFees: bigint;\n  reserved: ReadonlyUint8Array;\n};\n\nexport type RehypeStateArgs = {\n  launch: Address;\n  baseMint: Address;\n  quoteMint: Address;\n  hookProgram: Address;\n  buybackDestination: Address;\n  feeRouting: FeeRoutingMatrixArgs;\n  beneficiaries: Array<RehypeBeneficiaryArgs>;\n  cumulativeBeneficiaryBase: number | bigint;\n  cumulativeBeneficiaryQuote: number | bigint;\n  distributedBaseByBeneficiary: Array<number | bigint>;\n  distributedQuoteByBeneficiary: Array<number | bigint>;\n  pendingCrossBase: number | bigint;\n  pendingCrossQuote: number | bigint;\n  pendingLpBase: number | bigint;\n  pendingLpQuote: number | bigint;\n  inflightAmountIn: number | bigint;\n  inflightExpectedAmountOut: number | bigint;\n  version: number;\n  bump: number;\n  authorityBump: number;\n  settlementSignerBump: number;\n  routingMode: number;\n  beneficiaryCount: number;\n  inflightKind: number;\n  inflightDirection: number;\n  settlementAuthority: Address;\n  cumulativeRoutedBaseFees: number | bigint;\n  cumulativeRoutedQuoteFees: number | bigint;\n  reserved: ReadonlyUint8Array;\n};\n\n/** Gets the encoder for {@link RehypeStateArgs} account data. */\nexport function getRehypeStateEncoder(): FixedSizeEncoder<RehypeStateArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['launch', getAddressEncoder()],\n      ['baseMint', getAddressEncoder()],\n      ['quoteMint', getAddressEncoder()],\n      ['hookProgram', getAddressEncoder()],\n      ['buybackDestination', getAddressEncoder()],\n      ['feeRouting', getFeeRoutingMatrixEncoder()],\n      [\n        'beneficiaries',\n        getArrayEncoder(getRehypeBeneficiaryEncoder(), { size: 8 }),\n      ],\n      ['cumulativeBeneficiaryBase', getU64Encoder()],\n      ['cumulativeBeneficiaryQuote', getU64Encoder()],\n      [\n        'distributedBaseByBeneficiary',\n        getArrayEncoder(getU64Encoder(), { size: 8 }),\n      ],\n      [\n        'distributedQuoteByBeneficiary',\n        getArrayEncoder(getU64Encoder(), { size: 8 }),\n      ],\n      ['pendingCrossBase', getU64Encoder()],\n      ['pendingCrossQuote', getU64Encoder()],\n      ['pendingLpBase', getU64Encoder()],\n      ['pendingLpQuote', getU64Encoder()],\n      ['inflightAmountIn', getU64Encoder()],\n      ['inflightExpectedAmountOut', getU64Encoder()],\n      ['version', getU8Encoder()],\n      ['bump', getU8Encoder()],\n      ['authorityBump', getU8Encoder()],\n      ['settlementSignerBump', getU8Encoder()],\n      ['routingMode', getU8Encoder()],\n      ['beneficiaryCount', getU8Encoder()],\n      ['inflightKind', getU8Encoder()],\n      ['inflightDirection', getU8Encoder()],\n      ['settlementAuthority', getAddressEncoder()],\n      ['cumulativeRoutedBaseFees', getU64Encoder()],\n      ['cumulativeRoutedQuoteFees', getU64Encoder()],\n      ['reserved', fixEncoderSize(getBytesEncoder(), 24)],\n    ]),\n    (value) => ({ ...value, discriminator: REHYPE_STATE_DISCRIMINATOR }),\n  );\n}\n\n/** Gets the decoder for {@link RehypeState} account data. */\nexport function getRehypeStateDecoder(): FixedSizeDecoder<RehypeState> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['launch', getAddressDecoder()],\n    ['baseMint', getAddressDecoder()],\n    ['quoteMint', getAddressDecoder()],\n    ['hookProgram', getAddressDecoder()],\n    ['buybackDestination', getAddressDecoder()],\n    ['feeRouting', getFeeRoutingMatrixDecoder()],\n    [\n      'beneficiaries',\n      getArrayDecoder(getRehypeBeneficiaryDecoder(), { size: 8 }),\n    ],\n    ['cumulativeBeneficiaryBase', getU64Decoder()],\n    ['cumulativeBeneficiaryQuote', getU64Decoder()],\n    [\n      'distributedBaseByBeneficiary',\n      getArrayDecoder(getU64Decoder(), { size: 8 }),\n    ],\n    [\n      'distributedQuoteByBeneficiary',\n      getArrayDecoder(getU64Decoder(), { size: 8 }),\n    ],\n    ['pendingCrossBase', getU64Decoder()],\n    ['pendingCrossQuote', getU64Decoder()],\n    ['pendingLpBase', getU64Decoder()],\n    ['pendingLpQuote', getU64Decoder()],\n    ['inflightAmountIn', getU64Decoder()],\n    ['inflightExpectedAmountOut', getU64Decoder()],\n    ['version', getU8Decoder()],\n    ['bump', getU8Decoder()],\n    ['authorityBump', getU8Decoder()],\n    ['settlementSignerBump', getU8Decoder()],\n    ['routingMode', getU8Decoder()],\n    ['beneficiaryCount', getU8Decoder()],\n    ['inflightKind', getU8Decoder()],\n    ['inflightDirection', getU8Decoder()],\n    ['settlementAuthority', getAddressDecoder()],\n    ['cumulativeRoutedBaseFees', getU64Decoder()],\n    ['cumulativeRoutedQuoteFees', getU64Decoder()],\n    ['reserved', fixDecoderSize(getBytesDecoder(), 24)],\n  ]);\n}\n\n/** Gets the codec for {@link RehypeState} account data. */\nexport function getRehypeStateCodec(): FixedSizeCodec<\n  RehypeStateArgs,\n  RehypeState\n> {\n  return combineCodec(getRehypeStateEncoder(), getRehypeStateDecoder());\n}\n\nexport function decodeRehypeState<TAddress extends string = string>(\n  encodedAccount: EncodedAccount<TAddress>,\n): Account<RehypeState, TAddress>;\nexport function decodeRehypeState<TAddress extends string = string>(\n  encodedAccount: MaybeEncodedAccount<TAddress>,\n): MaybeAccount<RehypeState, TAddress>;\nexport function decodeRehypeState<TAddress extends string = string>(\n  encodedAccount: EncodedAccount<TAddress> | MaybeEncodedAccount<TAddress>,\n): Account<RehypeState, TAddress> | MaybeAccount<RehypeState, TAddress> {\n  return decodeAccount(\n    encodedAccount as MaybeEncodedAccount<TAddress>,\n    getRehypeStateDecoder(),\n  );\n}\n\nexport async function fetchRehypeState<TAddress extends string = string>(\n  rpc: Parameters<typeof fetchEncodedAccount>[0],\n  address: Address<TAddress>,\n  config?: FetchAccountConfig,\n): Promise<Account<RehypeState, TAddress>> {\n  const maybeAccount = await fetchMaybeRehypeState(rpc, address, config);\n  assertAccountExists(maybeAccount);\n  return maybeAccount;\n}\n\nexport async function fetchMaybeRehypeState<TAddress extends string = string>(\n  rpc: Parameters<typeof fetchEncodedAccount>[0],\n  address: Address<TAddress>,\n  config?: FetchAccountConfig,\n): Promise<MaybeAccount<RehypeState, TAddress>> {\n  const maybeAccount = await fetchEncodedAccount(rpc, address, config);\n  return decodeRehypeState(maybeAccount);\n}\n\nexport async function fetchAllRehypeState(\n  rpc: Parameters<typeof fetchEncodedAccounts>[0],\n  addresses: Array<Address>,\n  config?: FetchAccountsConfig,\n): Promise<Account<RehypeState>[]> {\n  const maybeAccounts = await fetchAllMaybeRehypeState(rpc, addresses, config);\n  assertAccountsExist(maybeAccounts);\n  return maybeAccounts;\n}\n\nexport async function fetchAllMaybeRehypeState(\n  rpc: Parameters<typeof fetchEncodedAccounts>[0],\n  addresses: Array<Address>,\n  config?: FetchAccountsConfig,\n): Promise<MaybeAccount<RehypeState>[]> {\n  const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config);\n  return maybeAccounts.map((maybeAccount) => decodeRehypeState(maybeAccount));\n}\n\nexport function getRehypeStateSize(): number {\n  return 776;\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getAddressEncoder,\n  getBytesDecoder,\n  getBytesEncoder,\n  getProgramDerivedAddress,\n  getStructDecoder,\n  getStructEncoder,\n  getU8Decoder,\n  getU8Encoder,\n  SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS,\n  SolanaError,\n  transformEncoder,\n  type AccountMeta,\n  type AccountSignerMeta,\n  type Address,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n  type Instruction,\n  type InstructionWithAccounts,\n  type InstructionWithData,\n  type ReadonlyAccount,\n  type ReadonlyUint8Array,\n  type TransactionSigner,\n  type WritableAccount,\n  type WritableSignerAccount,\n} from '@solana/kit';\nimport {\n  getAccountMetaFactory,\n  getAddressFromResolvedInstructionAccount,\n  type ResolvedInstructionAccount,\n} from '@solana/program-client-core';\nimport { DOPPLER_REHYPE_ROUTER_V1_PROGRAM_ADDRESS } from '../programs';\n\nexport const CLAIM_FEES_DISCRIMINATOR = new Uint8Array([\n  82, 251, 233, 156, 12, 52, 184, 202,\n]);\n\nexport function getClaimFeesDiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(CLAIM_FEES_DISCRIMINATOR);\n}\n\nexport type ClaimFeesInstruction<\n  TProgram extends string = typeof DOPPLER_REHYPE_ROUTER_V1_PROGRAM_ADDRESS,\n  TAccountPayer extends string | AccountMeta<string> = string,\n  TAccountBeneficiary extends string | AccountMeta<string> = string,\n  TAccountRehypeState extends string | AccountMeta<string> = string,\n  TAccountRehypeAuthority extends string | AccountMeta<string> = string,\n  TAccountBaseMint extends string | AccountMeta<string> = string,\n  TAccountQuoteMint extends string | AccountMeta<string> = string,\n  TAccountRouterBaseAta extends string | AccountMeta<string> = string,\n  TAccountRouterQuoteAta extends string | AccountMeta<string> = string,\n  TAccountBeneficiaryBaseAta extends string | AccountMeta<string> = string,\n  TAccountBeneficiaryQuoteAta extends string | AccountMeta<string> = string,\n  TAccountBaseTokenProgram extends string | AccountMeta<string> = string,\n  TAccountQuoteTokenProgram extends string | AccountMeta<string> = string,\n  TAccountAssociatedTokenProgram extends string | AccountMeta<string> =\n    'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL',\n  TAccountSystemProgram extends string | AccountMeta<string> =\n    '11111111111111111111111111111111',\n  TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n  InstructionWithData<ReadonlyUint8Array> &\n  InstructionWithAccounts<\n    [\n      TAccountPayer extends string\n        ? WritableSignerAccount<TAccountPayer> &\n            AccountSignerMeta<TAccountPayer>\n        : TAccountPayer,\n      TAccountBeneficiary extends string\n        ? ReadonlyAccount<TAccountBeneficiary>\n        : TAccountBeneficiary,\n      TAccountRehypeState extends string\n        ? WritableAccount<TAccountRehypeState>\n        : TAccountRehypeState,\n      TAccountRehypeAuthority extends string\n        ? ReadonlyAccount<TAccountRehypeAuthority>\n        : TAccountRehypeAuthority,\n      TAccountBaseMint extends string\n        ? ReadonlyAccount<TAccountBaseMint>\n        : TAccountBaseMint,\n      TAccountQuoteMint extends string\n        ? ReadonlyAccount<TAccountQuoteMint>\n        : TAccountQuoteMint,\n      TAccountRouterBaseAta extends string\n        ? WritableAccount<TAccountRouterBaseAta>\n        : TAccountRouterBaseAta,\n      TAccountRouterQuoteAta extends string\n        ? WritableAccount<TAccountRouterQuoteAta>\n        : TAccountRouterQuoteAta,\n      TAccountBeneficiaryBaseAta extends string\n        ? WritableAccount<TAccountBeneficiaryBaseAta>\n        : TAccountBeneficiaryBaseAta,\n      TAccountBeneficiaryQuoteAta extends string\n        ? WritableAccount<TAccountBeneficiaryQuoteAta>\n        : TAccountBeneficiaryQuoteAta,\n      TAccountBaseTokenProgram extends string\n        ? ReadonlyAccount<TAccountBaseTokenProgram>\n        : TAccountBaseTokenProgram,\n      TAccountQuoteTokenProgram extends string\n        ? ReadonlyAccount<TAccountQuoteTokenProgram>\n        : TAccountQuoteTokenProgram,\n      TAccountAssociatedTokenProgram extends string\n        ? ReadonlyAccount<TAccountAssociatedTokenProgram>\n        : TAccountAssociatedTokenProgram,\n      TAccountSystemProgram extends string\n        ? ReadonlyAccount<TAccountSystemProgram>\n        : TAccountSystemProgram,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type ClaimFeesInstructionData = {\n  discriminator: ReadonlyUint8Array;\n  beneficiaryIndex: number;\n};\n\nexport type ClaimFeesInstructionDataArgs = { beneficiaryIndex: number };\n\nexport function getClaimFeesInstructionDataEncoder(): FixedSizeEncoder<ClaimFeesInstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['beneficiaryIndex', getU8Encoder()],\n    ]),\n    (value) => ({ ...value, discriminator: CLAIM_FEES_DISCRIMINATOR }),\n  );\n}\n\nexport function getClaimFeesInstructionDataDecoder(): FixedSizeDecoder<ClaimFeesInstructionData> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['beneficiaryIndex', getU8Decoder()],\n  ]);\n}\n\nexport function getClaimFeesInstructionDataCodec(): FixedSizeCodec<\n  ClaimFeesInstructionDataArgs,\n  ClaimFeesInstructionData\n> {\n  return combineCodec(\n    getClaimFeesInstructionDataEncoder(),\n    getClaimFeesInstructionDataDecoder(),\n  );\n}\n\nexport type ClaimFeesAsyncInput<\n  TAccountPayer extends string = string,\n  TAccountBeneficiary extends string = string,\n  TAccountRehypeState extends string = string,\n  TAccountRehypeAuthority extends string = string,\n  TAccountBaseMint extends string = string,\n  TAccountQuoteMint extends string = string,\n  TAccountRouterBaseAta extends string = string,\n  TAccountRouterQuoteAta extends string = string,\n  TAccountBeneficiaryBaseAta extends string = string,\n  TAccountBeneficiaryQuoteAta extends string = string,\n  TAccountBaseTokenProgram extends string = string,\n  TAccountQuoteTokenProgram extends string = string,\n  TAccountAssociatedTokenProgram extends string = string,\n  TAccountSystemProgram extends string = string,\n> = {\n  payer: TransactionSigner<TAccountPayer>;\n  beneficiary: Address<TAccountBeneficiary>;\n  rehypeState?: Address<TAccountRehypeState>;\n  rehypeAuthority?: Address<TAccountRehypeAuthority>;\n  baseMint: Address<TAccountBaseMint>;\n  quoteMint: Address<TAccountQuoteMint>;\n  routerBaseAta?: Address<TAccountRouterBaseAta>;\n  routerQuoteAta?: Address<TAccountRouterQuoteAta>;\n  beneficiaryBaseAta?: Address<TAccountBeneficiaryBaseAta>;\n  beneficiaryQuoteAta?: Address<TAccountBeneficiaryQuoteAta>;\n  baseTokenProgram: Address<TAccountBaseTokenProgram>;\n  quoteTokenProgram: Address<TAccountQuoteTokenProgram>;\n  associatedTokenProgram?: Address<TAccountAssociatedTokenProgram>;\n  systemProgram?: Address<TAccountSystemProgram>;\n  beneficiaryIndex: ClaimFeesInstructionDataArgs['beneficiaryIndex'];\n};\n\nexport async function getClaimFeesInstructionAsync<\n  TAccountPayer extends string,\n  TAccountBeneficiary extends string,\n  TAccountRehypeState extends string,\n  TAccountRehypeAuthority extends string,\n  TAccountBaseMint extends string,\n  TAccountQuoteMint extends string,\n  TAccountRouterBaseAta extends string,\n  TAccountRouterQuoteAta extends string,\n  TAccountBeneficiaryBaseAta extends string,\n  TAccountBeneficiaryQuoteAta extends string,\n  TAccountBaseTokenProgram extends string,\n  TAccountQuoteTokenProgram extends string,\n  TAccountAssociatedTokenProgram extends string,\n  TAccountSystemProgram extends string,\n  TProgramAddress extends Address =\n    typeof DOPPLER_REHYPE_ROUTER_V1_PROGRAM_ADDRESS,\n>(\n  input: ClaimFeesAsyncInput<\n    TAccountPayer,\n    TAccountBeneficiary,\n    TAccountRehypeState,\n    TAccountRehypeAuthority,\n    TAccountBaseMint,\n    TAccountQuoteMint,\n    TAccountRouterBaseAta,\n    TAccountRouterQuoteAta,\n    TAccountBeneficiaryBaseAta,\n    TAccountBeneficiaryQuoteAta,\n    TAccountBaseTokenProgram,\n    TAccountQuoteTokenProgram,\n    TAccountAssociatedTokenProgram,\n    TAccountSystemProgram\n  >,\n  config?: { programAddress?: TProgramAddress },\n): Promise<\n  ClaimFeesInstruction<\n    TProgramAddress,\n    TAccountPayer,\n    TAccountBeneficiary,\n    TAccountRehypeState,\n    TAccountRehypeAuthority,\n    TAccountBaseMint,\n    TAccountQuoteMint,\n    TAccountRouterBaseAta,\n    TAccountRouterQuoteAta,\n    TAccountBeneficiaryBaseAta,\n    TAccountBeneficiaryQuoteAta,\n    TAccountBaseTokenProgram,\n    TAccountQuoteTokenProgram,\n    TAccountAssociatedTokenProgram,\n    TAccountSystemProgram\n  >\n> {\n  // Program address.\n  const programAddress =\n    config?.programAddress ?? DOPPLER_REHYPE_ROUTER_V1_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    payer: { value: input.payer ?? null, isWritable: true },\n    beneficiary: { value: input.beneficiary ?? null, isWritable: false },\n    rehypeState: { value: input.rehypeState ?? null, isWritable: true },\n    rehypeAuthority: {\n      value: input.rehypeAuthority ?? null,\n      isWritable: false,\n    },\n    baseMint: { value: input.baseMint ?? null, isWritable: false },\n    quoteMint: { value: input.quoteMint ?? null, isWritable: false },\n    routerBaseAta: { value: input.routerBaseAta ?? null, isWritable: true },\n    routerQuoteAta: { value: input.routerQuoteAta ?? null, isWritable: true },\n    beneficiaryBaseAta: {\n      value: input.beneficiaryBaseAta ?? null,\n      isWritable: true,\n    },\n    beneficiaryQuoteAta: {\n      value: input.beneficiaryQuoteAta ?? null,\n      isWritable: true,\n    },\n    baseTokenProgram: {\n      value: input.baseTokenProgram ?? null,\n      isWritable: false,\n    },\n    quoteTokenProgram: {\n      value: input.quoteTokenProgram ?? null,\n      isWritable: false,\n    },\n    associatedTokenProgram: {\n      value: input.associatedTokenProgram ?? null,\n      isWritable: false,\n    },\n    systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedInstructionAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolve default values.\n  if (!accounts.rehypeState.value) {\n    accounts.rehypeState.value = await getProgramDerivedAddress({\n      programAddress,\n      seeds: [\n        getBytesEncoder().encode(\n          new Uint8Array([\n            114, 101, 104, 121, 112, 101, 95, 115, 116, 97, 116, 101,\n          ]),\n        ),\n        getAddressEncoder().encode(\n          getAddressFromResolvedInstructionAccount(\n            'baseMint',\n            accounts.baseMint.value,\n          ),\n        ),\n      ],\n    });\n  }\n  if (!accounts.rehypeAuthority.value) {\n    accounts.rehypeAuthority.value = await getProgramDerivedAddress({\n      programAddress,\n      seeds: [\n        getBytesEncoder().encode(\n          new Uint8Array([\n            114, 101, 104, 121, 112, 101, 95, 97, 117, 116, 104, 111, 114, 105,\n            116, 121,\n          ]),\n        ),\n        getAddressEncoder().encode(\n          getAddressFromResolvedInstructionAccount(\n            'rehypeState',\n            accounts.rehypeState.value,\n          ),\n        ),\n      ],\n    });\n  }\n  if (!accounts.routerBaseAta.value) {\n    accounts.routerBaseAta.value = await getProgramDerivedAddress({\n      programAddress:\n        'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL' as Address<'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL'>,\n      seeds: [\n        getAddressEncoder().encode(\n          getAddressFromResolvedInstructionAccount(\n            'rehypeAuthority',\n            accounts.rehypeAuthority.value,\n          ),\n        ),\n        getAddressEncoder().encode(\n          getAddressFromResolvedInstructionAccount(\n            'baseTokenProgram',\n            accounts.baseTokenProgram.value,\n          ),\n        ),\n        getAddressEncoder().encode(\n          getAddressFromResolvedInstructionAccount(\n            'baseMint',\n            accounts.baseMint.value,\n          ),\n        ),\n      ],\n    });\n  }\n  if (!accounts.routerQuoteAta.value) {\n    accounts.routerQuoteAta.value = await getProgramDerivedAddress({\n      programAddress:\n        'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL' as Address<'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL'>,\n      seeds: [\n        getAddressEncoder().encode(\n          getAddressFromResolvedInstructionAccount(\n            'rehypeAuthority',\n            accounts.rehypeAuthority.value,\n          ),\n        ),\n        getAddressEncoder().encode(\n          getAddressFromResolvedInstructionAccount(\n            'quoteTokenProgram',\n            accounts.quoteTokenProgram.value,\n          ),\n        ),\n        getAddressEncoder().encode(\n          getAddressFromResolvedInstructionAccount(\n            'quoteMint',\n            accounts.quoteMint.value,\n          ),\n        ),\n      ],\n    });\n  }\n  if (!accounts.beneficiaryBaseAta.value) {\n    accounts.beneficiaryBaseAta.value = await getProgramDerivedAddress({\n      programAddress:\n        'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL' as Address<'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL'>,\n      seeds: [\n        getAddressEncoder().encode(\n          getAddressFromResolvedInstructionAccount(\n            'beneficiary',\n            accounts.beneficiary.value,\n          ),\n        ),\n        getAddressEncoder().encode(\n          getAddressFromResolvedInstructionAccount(\n            'baseTokenProgram',\n            accounts.baseTokenProgram.value,\n          ),\n        ),\n        getAddressEncoder().encode(\n          getAddressFromResolvedInstructionAccount(\n            'baseMint',\n            accounts.baseMint.value,\n          ),\n        ),\n      ],\n    });\n  }\n  if (!accounts.beneficiaryQuoteAta.value) {\n    accounts.beneficiaryQuoteAta.value = await getProgramDerivedAddress({\n      programAddress:\n        'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL' as Address<'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL'>,\n      seeds: [\n        getAddressEncoder().encode(\n          getAddressFromResolvedInstructionAccount(\n            'beneficiary',\n            accounts.beneficiary.value,\n          ),\n        ),\n        getAddressEncoder().encode(\n          getAddressFromResolvedInstructionAccount(\n            'quoteTokenProgram',\n            accounts.quoteTokenProgram.value,\n          ),\n        ),\n        getAddressEncoder().encode(\n          getAddressFromResolvedInstructionAccount(\n            'quoteMint',\n            accounts.quoteMint.value,\n          ),\n        ),\n      ],\n    });\n  }\n  if (!accounts.associatedTokenProgram.value) {\n    accounts.associatedTokenProgram.value =\n      'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL' as Address<'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL'>;\n  }\n  if (!accounts.systemProgram.value) {\n    accounts.systemProgram.value =\n      '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n  }\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta('payer', accounts.payer),\n      getAccountMeta('beneficiary', accounts.beneficiary),\n      getAccountMeta('rehypeState', accounts.rehypeState),\n      getAccountMeta('rehypeAuthority', accounts.rehypeAuthority),\n      getAccountMeta('baseMint', accounts.baseMint),\n      getAccountMeta('quoteMint', accounts.quoteMint),\n      getAccountMeta('routerBaseAta', accounts.routerBaseAta),\n      getAccountMeta('routerQuoteAta', accounts.routerQuoteAta),\n      getAccountMeta('beneficiaryBaseAta', accounts.beneficiaryBaseAta),\n      getAccountMeta('beneficiaryQuoteAta', accounts.beneficiaryQuoteAta),\n      getAccountMeta('baseTokenProgram', accounts.baseTokenProgram),\n      getAccountMeta('quoteTokenProgram', accounts.quoteTokenProgram),\n      getAccountMeta('associatedTokenProgram', accounts.associatedTokenProgram),\n      getAccountMeta('systemProgram', accounts.systemProgram),\n    ],\n    data: getClaimFeesInstructionDataEncoder().encode(\n      args as ClaimFeesInstructionDataArgs,\n    ),\n    programAddress,\n  } as ClaimFeesInstruction<\n    TProgramAddress,\n    TAccountPayer,\n    TAccountBeneficiary,\n    TAccountRehypeState,\n    TAccountRehypeAuthority,\n    TAccountBaseMint,\n    TAccountQuoteMint,\n    TAccountRouterBaseAta,\n    TAccountRouterQuoteAta,\n    TAccountBeneficiaryBaseAta,\n    TAccountBeneficiaryQuoteAta,\n    TAccountBaseTokenProgram,\n    TAccountQuoteTokenProgram,\n    TAccountAssociatedTokenProgram,\n    TAccountSystemProgram\n  >);\n}\n\nexport type ClaimFeesInput<\n  TAccountPayer extends string = string,\n  TAccountBeneficiary extends string = string,\n  TAccountRehypeState extends string = string,\n  TAccountRehypeAuthority extends string = string,\n  TAccountBaseMint extends string = string,\n  TAccountQuoteMint extends string = string,\n  TAccountRouterBaseAta extends string = string,\n  TAccountRouterQuoteAta extends string = string,\n  TAccountBeneficiaryBaseAta extends string = string,\n  TAccountBeneficiaryQuoteAta extends string = string,\n  TAccountBaseTokenProgram extends string = string,\n  TAccountQuoteTokenProgram extends string = string,\n  TAccountAssociatedTokenProgram extends string = string,\n  TAccountSystemProgram extends string = string,\n> = {\n  payer: TransactionSigner<TAccountPayer>;\n  beneficiary: Address<TAccountBeneficiary>;\n  rehypeState: Address<TAccountRehypeState>;\n  rehypeAuthority: Address<TAccountRehypeAuthority>;\n  baseMint: Address<TAccountBaseMint>;\n  quoteMint: Address<TAccountQuoteMint>;\n  routerBaseAta: Address<TAccountRouterBaseAta>;\n  routerQuoteAta: Address<TAccountRouterQuoteAta>;\n  beneficiaryBaseAta: Address<TAccountBeneficiaryBaseAta>;\n  beneficiaryQuoteAta: Address<TAccountBeneficiaryQuoteAta>;\n  baseTokenProgram: Address<TAccountBaseTokenProgram>;\n  quoteTokenProgram: Address<TAccountQuoteTokenProgram>;\n  associatedTokenProgram?: Address<TAccountAssociatedTokenProgram>;\n  systemProgram?: Address<TAccountSystemProgram>;\n  beneficiaryIndex: ClaimFeesInstructionDataArgs['beneficiaryIndex'];\n};\n\nexport function getClaimFeesInstruction<\n  TAccountPayer extends string,\n  TAccountBeneficiary extends string,\n  TAccountRehypeState extends string,\n  TAccountRehypeAuthority extends string,\n  TAccountBaseMint extends string,\n  TAccountQuoteMint extends string,\n  TAccountRouterBaseAta extends string,\n  TAccountRouterQuoteAta extends string,\n  TAccountBeneficiaryBaseAta extends string,\n  TAccountBeneficiaryQuoteAta extends string,\n  TAccountBaseTokenProgram extends string,\n  TAccountQuoteTokenProgram extends string,\n  TAccountAssociatedTokenProgram extends string,\n  TAccountSystemProgram extends string,\n  TProgramAddress extends Address =\n    typeof DOPPLER_REHYPE_ROUTER_V1_PROGRAM_ADDRESS,\n>(\n  input: ClaimFeesInput<\n    TAccountPayer,\n    TAccountBeneficiary,\n    TAccountRehypeState,\n    TAccountRehypeAuthority,\n    TAccountBaseMint,\n    TAccountQuoteMint,\n    TAccountRouterBaseAta,\n    TAccountRouterQuoteAta,\n    TAccountBeneficiaryBaseAta,\n    TAccountBeneficiaryQuoteAta,\n    TAccountBaseTokenProgram,\n    TAccountQuoteTokenProgram,\n    TAccountAssociatedTokenProgram,\n    TAccountSystemProgram\n  >,\n  config?: { programAddress?: TProgramAddress },\n): ClaimFeesInstruction<\n  TProgramAddress,\n  TAccountPayer,\n  TAccountBeneficiary,\n  TAccountRehypeState,\n  TAccountRehypeAuthority,\n  TAccountBaseMint,\n  TAccountQuoteMint,\n  TAccountRouterBaseAta,\n  TAccountRouterQuoteAta,\n  TAccountBeneficiaryBaseAta,\n  TAccountBeneficiaryQuoteAta,\n  TAccountBaseTokenProgram,\n  TAccountQuoteTokenProgram,\n  TAccountAssociatedTokenProgram,\n  TAccountSystemProgram\n> {\n  // Program address.\n  const programAddress =\n    config?.programAddress ?? DOPPLER_REHYPE_ROUTER_V1_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    payer: { value: input.payer ?? null, isWritable: true },\n    beneficiary: { value: input.beneficiary ?? null, isWritable: false },\n    rehypeState: { value: input.rehypeState ?? null, isWritable: true },\n    rehypeAuthority: {\n      value: input.rehypeAuthority ?? null,\n      isWritable: false,\n    },\n    baseMint: { value: input.baseMint ?? null, isWritable: false },\n    quoteMint: { value: input.quoteMint ?? null, isWritable: false },\n    routerBaseAta: { value: input.routerBaseAta ?? null, isWritable: true },\n    routerQuoteAta: { value: input.routerQuoteAta ?? null, isWritable: true },\n    beneficiaryBaseAta: {\n      value: input.beneficiaryBaseAta ?? null,\n      isWritable: true,\n    },\n    beneficiaryQuoteAta: {\n      value: input.beneficiaryQuoteAta ?? null,\n      isWritable: true,\n    },\n    baseTokenProgram: {\n      value: input.baseTokenProgram ?? null,\n      isWritable: false,\n    },\n    quoteTokenProgram: {\n      value: input.quoteTokenProgram ?? null,\n      isWritable: false,\n    },\n    associatedTokenProgram: {\n      value: input.associatedTokenProgram ?? null,\n      isWritable: false,\n    },\n    systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedInstructionAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolve default values.\n  if (!accounts.associatedTokenProgram.value) {\n    accounts.associatedTokenProgram.value =\n      'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL' as Address<'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL'>;\n  }\n  if (!accounts.systemProgram.value) {\n    accounts.systemProgram.value =\n      '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n  }\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta('payer', accounts.payer),\n      getAccountMeta('beneficiary', accounts.beneficiary),\n      getAccountMeta('rehypeState', accounts.rehypeState),\n      getAccountMeta('rehypeAuthority', accounts.rehypeAuthority),\n      getAccountMeta('baseMint', accounts.baseMint),\n      getAccountMeta('quoteMint', accounts.quoteMint),\n      getAccountMeta('routerBaseAta', accounts.routerBaseAta),\n      getAccountMeta('routerQuoteAta', accounts.routerQuoteAta),\n      getAccountMeta('beneficiaryBaseAta', accounts.beneficiaryBaseAta),\n      getAccountMeta('beneficiaryQuoteAta', accounts.beneficiaryQuoteAta),\n      getAccountMeta('baseTokenProgram', accounts.baseTokenProgram),\n      getAccountMeta('quoteTokenProgram', accounts.quoteTokenProgram),\n      getAccountMeta('associatedTokenProgram', accounts.associatedTokenProgram),\n      getAccountMeta('systemProgram', accounts.systemProgram),\n    ],\n    data: getClaimFeesInstructionDataEncoder().encode(\n      args as ClaimFeesInstructionDataArgs,\n    ),\n    programAddress,\n  } as ClaimFeesInstruction<\n    TProgramAddress,\n    TAccountPayer,\n    TAccountBeneficiary,\n    TAccountRehypeState,\n    TAccountRehypeAuthority,\n    TAccountBaseMint,\n    TAccountQuoteMint,\n    TAccountRouterBaseAta,\n    TAccountRouterQuoteAta,\n    TAccountBeneficiaryBaseAta,\n    TAccountBeneficiaryQuoteAta,\n    TAccountBaseTokenProgram,\n    TAccountQuoteTokenProgram,\n    TAccountAssociatedTokenProgram,\n    TAccountSystemProgram\n  >);\n}\n\nexport type ParsedClaimFeesInstruction<\n  TProgram extends string = typeof DOPPLER_REHYPE_ROUTER_V1_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    payer: TAccountMetas[0];\n    beneficiary: TAccountMetas[1];\n    rehypeState: TAccountMetas[2];\n    rehypeAuthority: TAccountMetas[3];\n    baseMint: TAccountMetas[4];\n    quoteMint: TAccountMetas[5];\n    routerBaseAta: TAccountMetas[6];\n    routerQuoteAta: TAccountMetas[7];\n    beneficiaryBaseAta: TAccountMetas[8];\n    beneficiaryQuoteAta: TAccountMetas[9];\n    baseTokenProgram: TAccountMetas[10];\n    quoteTokenProgram: TAccountMetas[11];\n    associatedTokenProgram: TAccountMetas[12];\n    systemProgram: TAccountMetas[13];\n  };\n  data: ClaimFeesInstructionData;\n};\n\nexport function parseClaimFeesInstruction<\n  TProgram extends string,\n  TAccountMetas extends readonly AccountMeta[],\n>(\n  instruction: Instruction<TProgram> &\n    InstructionWithAccounts<TAccountMetas> &\n    InstructionWithData<ReadonlyUint8Array>,\n): ParsedClaimFeesInstruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 14) {\n    throw new SolanaError(\n      SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS,\n      {\n        actualAccountMetas: instruction.accounts.length,\n        expectedAccountMetas: 14,\n      },\n    );\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: {\n      payer: getNextAccount(),\n      beneficiary: getNextAccount(),\n      rehypeState: getNextAccount(),\n      rehypeAuthority: getNextAccount(),\n      baseMint: getNextAccount(),\n      quoteMint: getNextAccount(),\n      routerBaseAta: getNextAccount(),\n      routerQuoteAta: getNextAccount(),\n      beneficiaryBaseAta: getNextAccount(),\n      beneficiaryQuoteAta: getNextAccount(),\n      baseTokenProgram: getNextAccount(),\n      quoteTokenProgram: getNextAccount(),\n      associatedTokenProgram: getNextAccount(),\n      systemProgram: getNextAccount(),\n    },\n    data: getClaimFeesInstructionDataDecoder().decode(instruction.data),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getAddressDecoder,\n  getAddressEncoder,\n  getArrayDecoder,\n  getArrayEncoder,\n  getBytesDecoder,\n  getBytesEncoder,\n  getProgramDerivedAddress,\n  getStructDecoder,\n  getStructEncoder,\n  getU8Decoder,\n  getU8Encoder,\n  SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS,\n  SolanaError,\n  transformEncoder,\n  type AccountMeta,\n  type AccountSignerMeta,\n  type Address,\n  type Codec,\n  type Decoder,\n  type Encoder,\n  type Instruction,\n  type InstructionWithAccounts,\n  type InstructionWithData,\n  type ReadonlyAccount,\n  type ReadonlySignerAccount,\n  type ReadonlyUint8Array,\n  type TransactionSigner,\n  type WritableAccount,\n  type WritableSignerAccount,\n} from '@solana/kit';\nimport {\n  getAccountMetaFactory,\n  getAddressFromResolvedInstructionAccount,\n  type ResolvedInstructionAccount,\n} from '@solana/program-client-core';\nimport { DOPPLER_REHYPE_ROUTER_V1_PROGRAM_ADDRESS } from '../programs';\nimport {\n  getFeeRoutingMatrixDecoder,\n  getFeeRoutingMatrixEncoder,\n  getRehypeBeneficiaryInputDecoder,\n  getRehypeBeneficiaryInputEncoder,\n  type FeeRoutingMatrix,\n  type FeeRoutingMatrixArgs,\n  type RehypeBeneficiaryInput,\n  type RehypeBeneficiaryInputArgs,\n} from '../types';\n\nexport const INITIALIZE_REHYPE_DISCRIMINATOR = new Uint8Array([\n  52, 224, 165, 199, 71, 188, 192, 155,\n]);\n\nexport function getInitializeRehypeDiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(\n    INITIALIZE_REHYPE_DISCRIMINATOR,\n  );\n}\n\nexport type InitializeRehypeInstruction<\n  TProgram extends string = typeof DOPPLER_REHYPE_ROUTER_V1_PROGRAM_ADDRESS,\n  TAccountPayer extends string | AccountMeta<string> = string,\n  TAccountBaseMint extends string | AccountMeta<string> = string,\n  TAccountQuoteMint extends string | AccountMeta<string> = string,\n  TAccountHookProgram extends string | AccountMeta<string> = string,\n  TAccountInitializerProgram extends string | AccountMeta<string> =\n    '4h3Dqyo5qmteJoMxXt3tdtfXELDB6pdRTPU9mWruiKp1',\n  TAccountRehypeState extends string | AccountMeta<string> = string,\n  TAccountRehypeAuthority extends string | AccountMeta<string> = string,\n  TAccountSettlementSigner extends string | AccountMeta<string> = string,\n  TAccountSystemProgram extends string | AccountMeta<string> =\n    '11111111111111111111111111111111',\n  TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n  InstructionWithData<ReadonlyUint8Array> &\n  InstructionWithAccounts<\n    [\n      TAccountPayer extends string\n        ? WritableSignerAccount<TAccountPayer> &\n            AccountSignerMeta<TAccountPayer>\n        : TAccountPayer,\n      TAccountBaseMint extends string\n        ? ReadonlySignerAccount<TAccountBaseMint> &\n            AccountSignerMeta<TAccountBaseMint>\n        : TAccountBaseMint,\n      TAccountQuoteMint extends string\n        ? ReadonlyAccount<TAccountQuoteMint>\n        : TAccountQuoteMint,\n      TAccountHookProgram extends string\n        ? ReadonlyAccount<TAccountHookProgram>\n        : TAccountHookProgram,\n      TAccountInitializerProgram extends string\n        ? ReadonlyAccount<TAccountInitializerProgram>\n        : TAccountInitializerProgram,\n      TAccountRehypeState extends string\n        ? WritableAccount<TAccountRehypeState>\n        : TAccountRehypeState,\n      TAccountRehypeAuthority extends string\n        ? ReadonlyAccount<TAccountRehypeAuthority>\n        : TAccountRehypeAuthority,\n      TAccountSettlementSigner extends string\n        ? ReadonlyAccount<TAccountSettlementSigner>\n        : TAccountSettlementSigner,\n      TAccountSystemProgram extends string\n        ? ReadonlyAccount<TAccountSystemProgram>\n        : TAccountSystemProgram,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type InitializeRehypeInstructionData = {\n  discriminator: ReadonlyUint8Array;\n  namespace: Address;\n  launchId: ReadonlyUint8Array;\n  buybackDestination: Address;\n  settlementAuthority: Address;\n  routingMode: number;\n  feeRouting: FeeRoutingMatrix;\n  beneficiaries: Array<RehypeBeneficiaryInput>;\n};\n\nexport type InitializeRehypeInstructionDataArgs = {\n  namespace: Address;\n  launchId: ReadonlyUint8Array;\n  buybackDestination: Address;\n  settlementAuthority: Address;\n  routingMode: number;\n  feeRouting: FeeRoutingMatrixArgs;\n  beneficiaries: Array<RehypeBeneficiaryInputArgs>;\n};\n\nexport function getInitializeRehypeInstructionDataEncoder(): Encoder<InitializeRehypeInstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['namespace', getAddressEncoder()],\n      ['launchId', fixEncoderSize(getBytesEncoder(), 32)],\n      ['buybackDestination', getAddressEncoder()],\n      ['settlementAuthority', getAddressEncoder()],\n      ['routingMode', getU8Encoder()],\n      ['feeRouting', getFeeRoutingMatrixEncoder()],\n      ['beneficiaries', getArrayEncoder(getRehypeBeneficiaryInputEncoder())],\n    ]),\n    (value) => ({ ...value, discriminator: INITIALIZE_REHYPE_DISCRIMINATOR }),\n  );\n}\n\nexport function getInitializeRehypeInstructionDataDecoder(): Decoder<InitializeRehypeInstructionData> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['namespace', getAddressDecoder()],\n    ['launchId', fixDecoderSize(getBytesDecoder(), 32)],\n    ['buybackDestination', getAddressDecoder()],\n    ['settlementAuthority', getAddressDecoder()],\n    ['routingMode', getU8Decoder()],\n    ['feeRouting', getFeeRoutingMatrixDecoder()],\n    ['beneficiaries', getArrayDecoder(getRehypeBeneficiaryInputDecoder())],\n  ]);\n}\n\nexport function getInitializeRehypeInstructionDataCodec(): Codec<\n  InitializeRehypeInstructionDataArgs,\n  InitializeRehypeInstructionData\n> {\n  return combineCodec(\n    getInitializeRehypeInstructionDataEncoder(),\n    getInitializeRehypeInstructionDataDecoder(),\n  );\n}\n\nexport type InitializeRehypeAsyncInput<\n  TAccountPayer extends string = string,\n  TAccountBaseMint extends string = string,\n  TAccountQuoteMint extends string = string,\n  TAccountHookProgram extends string = string,\n  TAccountInitializerProgram extends string = string,\n  TAccountRehypeState extends string = string,\n  TAccountRehypeAuthority extends string = string,\n  TAccountSettlementSigner extends string = string,\n  TAccountSystemProgram extends string = string,\n> = {\n  payer: TransactionSigner<TAccountPayer>;\n  /** Future launch mint. Its signature prevents another caller from claiming this state PDA. */\n  baseMint: TransactionSigner<TAccountBaseMint>;\n  quoteMint: Address<TAccountQuoteMint>;\n  hookProgram: Address<TAccountHookProgram>;\n  initializerProgram?: Address<TAccountInitializerProgram>;\n  rehypeState?: Address<TAccountRehypeState>;\n  rehypeAuthority?: Address<TAccountRehypeAuthority>;\n  settlementSigner?: Address<TAccountSettlementSigner>;\n  systemProgram?: Address<TAccountSystemProgram>;\n  namespace: InitializeRehypeInstructionDataArgs['namespace'];\n  launchId: InitializeRehypeInstructionDataArgs['launchId'];\n  buybackDestination: InitializeRehypeInstructionDataArgs['buybackDestination'];\n  settlementAuthority: InitializeRehypeInstructionDataArgs['settlementAuthority'];\n  routingMode: InitializeRehypeInstructionDataArgs['routingMode'];\n  feeRouting: InitializeRehypeInstructionDataArgs['feeRouting'];\n  beneficiaries: InitializeRehypeInstructionDataArgs['beneficiaries'];\n};\n\nexport async function getInitializeRehypeInstructionAsync<\n  TAccountPayer extends string,\n  TAccountBaseMint extends string,\n  TAccountQuoteMint extends string,\n  TAccountHookProgram extends string,\n  TAccountInitializerProgram extends string,\n  TAccountRehypeState extends string,\n  TAccountRehypeAuthority extends string,\n  TAccountSettlementSigner extends string,\n  TAccountSystemProgram extends string,\n  TProgramAddress extends Address =\n    typeof DOPPLER_REHYPE_ROUTER_V1_PROGRAM_ADDRESS,\n>(\n  input: InitializeRehypeAsyncInput<\n    TAccountPayer,\n    TAccountBaseMint,\n    TAccountQuoteMint,\n    TAccountHookProgram,\n    TAccountInitializerProgram,\n    TAccountRehypeState,\n    TAccountRehypeAuthority,\n    TAccountSettlementSigner,\n    TAccountSystemProgram\n  >,\n  config?: { programAddress?: TProgramAddress },\n): Promise<\n  InitializeRehypeInstruction<\n    TProgramAddress,\n    TAccountPayer,\n    TAccountBaseMint,\n    TAccountQuoteMint,\n    TAccountHookProgram,\n    TAccountInitializerProgram,\n    TAccountRehypeState,\n    TAccountRehypeAuthority,\n    TAccountSettlementSigner,\n    TAccountSystemProgram\n  >\n> {\n  // Program address.\n  const programAddress =\n    config?.programAddress ?? DOPPLER_REHYPE_ROUTER_V1_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    payer: { value: input.payer ?? null, isWritable: true },\n    baseMint: { value: input.baseMint ?? null, isWritable: false },\n    quoteMint: { value: input.quoteMint ?? null, isWritable: false },\n    hookProgram: { value: input.hookProgram ?? null, isWritable: false },\n    initializerProgram: {\n      value: input.initializerProgram ?? null,\n      isWritable: false,\n    },\n    rehypeState: { value: input.rehypeState ?? null, isWritable: true },\n    rehypeAuthority: {\n      value: input.rehypeAuthority ?? null,\n      isWritable: false,\n    },\n    settlementSigner: {\n      value: input.settlementSigner ?? null,\n      isWritable: false,\n    },\n    systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedInstructionAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolve default values.\n  if (!accounts.initializerProgram.value) {\n    accounts.initializerProgram.value =\n      '4h3Dqyo5qmteJoMxXt3tdtfXELDB6pdRTPU9mWruiKp1' as Address<'4h3Dqyo5qmteJoMxXt3tdtfXELDB6pdRTPU9mWruiKp1'>;\n  }\n  if (!accounts.rehypeState.value) {\n    accounts.rehypeState.value = await getProgramDerivedAddress({\n      programAddress,\n      seeds: [\n        getBytesEncoder().encode(\n          new Uint8Array([\n            114, 101, 104, 121, 112, 101, 95, 115, 116, 97, 116, 101,\n          ]),\n        ),\n        getAddressEncoder().encode(\n          getAddressFromResolvedInstructionAccount(\n            'baseMint',\n            accounts.baseMint.value,\n          ),\n        ),\n      ],\n    });\n  }\n  if (!accounts.rehypeAuthority.value) {\n    accounts.rehypeAuthority.value = await getProgramDerivedAddress({\n      programAddress,\n      seeds: [\n        getBytesEncoder().encode(\n          new Uint8Array([\n            114, 101, 104, 121, 112, 101, 95, 97, 117, 116, 104, 111, 114, 105,\n            116, 121,\n          ]),\n        ),\n        getAddressEncoder().encode(\n          getAddressFromResolvedInstructionAccount(\n            'rehypeState',\n            accounts.rehypeState.value,\n          ),\n        ),\n      ],\n    });\n  }\n  if (!accounts.settlementSigner.value) {\n    accounts.settlementSigner.value = await getProgramDerivedAddress({\n      programAddress,\n      seeds: [\n        getBytesEncoder().encode(\n          new Uint8Array([\n            115, 101, 116, 116, 108, 101, 109, 101, 110, 116, 95, 115, 105, 103,\n            110, 101, 114,\n          ]),\n        ),\n        getAddressEncoder().encode(\n          getAddressFromResolvedInstructionAccount(\n            'rehypeState',\n            accounts.rehypeState.value,\n          ),\n        ),\n      ],\n    });\n  }\n  if (!accounts.systemProgram.value) {\n    accounts.systemProgram.value =\n      '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n  }\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta('payer', accounts.payer),\n      getAccountMeta('baseMint', accounts.baseMint),\n      getAccountMeta('quoteMint', accounts.quoteMint),\n      getAccountMeta('hookProgram', accounts.hookProgram),\n      getAccountMeta('initializerProgram', accounts.initializerProgram),\n      getAccountMeta('rehypeState', accounts.rehypeState),\n      getAccountMeta('rehypeAuthority', accounts.rehypeAuthority),\n      getAccountMeta('settlementSigner', accounts.settlementSigner),\n      getAccountMeta('systemProgram', accounts.systemProgram),\n    ],\n    data: getInitializeRehypeInstructionDataEncoder().encode(\n      args as InitializeRehypeInstructionDataArgs,\n    ),\n    programAddress,\n  } as InitializeRehypeInstruction<\n    TProgramAddress,\n    TAccountPayer,\n    TAccountBaseMint,\n    TAccountQuoteMint,\n    TAccountHookProgram,\n    TAccountInitializerProgram,\n    TAccountRehypeState,\n    TAccountRehypeAuthority,\n    TAccountSettlementSigner,\n    TAccountSystemProgram\n  >);\n}\n\nexport type InitializeRehypeInput<\n  TAccountPayer extends string = string,\n  TAccountBaseMint extends string = string,\n  TAccountQuoteMint extends string = string,\n  TAccountHookProgram extends string = string,\n  TAccountInitializerProgram extends string = string,\n  TAccountRehypeState extends string = string,\n  TAccountRehypeAuthority extends string = string,\n  TAccountSettlementSigner extends string = string,\n  TAccountSystemProgram extends string = string,\n> = {\n  payer: TransactionSigner<TAccountPayer>;\n  /** Future launch mint. Its signature prevents another caller from claiming this state PDA. */\n  baseMint: TransactionSigner<TAccountBaseMint>;\n  quoteMint: Address<TAccountQuoteMint>;\n  hookProgram: Address<TAccountHookProgram>;\n  initializerProgram?: Address<TAccountInitializerProgram>;\n  rehypeState: Address<TAccountRehypeState>;\n  rehypeAuthority: Address<TAccountRehypeAuthority>;\n  settlementSigner: Address<TAccountSettlementSigner>;\n  systemProgram?: Address<TAccountSystemProgram>;\n  namespace: InitializeRehypeInstructionDataArgs['namespace'];\n  launchId: InitializeRehypeInstructionDataArgs['launchId'];\n  buybackDestination: InitializeRehypeInstructionDataArgs['buybackDestination'];\n  settlementAuthority: InitializeRehypeInstructionDataArgs['settlementAuthority'];\n  routingMode: InitializeRehypeInstructionDataArgs['routingMode'];\n  feeRouting: InitializeRehypeInstructionDataArgs['feeRouting'];\n  beneficiaries: InitializeRehypeInstructionDataArgs['beneficiaries'];\n};\n\nexport function getInitializeRehypeInstruction<\n  TAccountPayer extends string,\n  TAccountBaseMint extends string,\n  TAccountQuoteMint extends string,\n  TAccountHookProgram extends string,\n  TAccountInitializerProgram extends string,\n  TAccountRehypeState extends string,\n  TAccountRehypeAuthority extends string,\n  TAccountSettlementSigner extends string,\n  TAccountSystemProgram extends string,\n  TProgramAddress extends Address =\n    typeof DOPPLER_REHYPE_ROUTER_V1_PROGRAM_ADDRESS,\n>(\n  input: InitializeRehypeInput<\n    TAccountPayer,\n    TAccountBaseMint,\n    TAccountQuoteMint,\n    TAccountHookProgram,\n    TAccountInitializerProgram,\n    TAccountRehypeState,\n    TAccountRehypeAuthority,\n    TAccountSettlementSigner,\n    TAccountSystemProgram\n  >,\n  config?: { programAddress?: TProgramAddress },\n): InitializeRehypeInstruction<\n  TProgramAddress,\n  TAccountPayer,\n  TAccountBaseMint,\n  TAccountQuoteMint,\n  TAccountHookProgram,\n  TAccountInitializerProgram,\n  TAccountRehypeState,\n  TAccountRehypeAuthority,\n  TAccountSettlementSigner,\n  TAccountSystemProgram\n> {\n  // Program address.\n  const programAddress =\n    config?.programAddress ?? DOPPLER_REHYPE_ROUTER_V1_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    payer: { value: input.payer ?? null, isWritable: true },\n    baseMint: { value: input.baseMint ?? null, isWritable: false },\n    quoteMint: { value: input.quoteMint ?? null, isWritable: false },\n    hookProgram: { value: input.hookProgram ?? null, isWritable: false },\n    initializerProgram: {\n      value: input.initializerProgram ?? null,\n      isWritable: false,\n    },\n    rehypeState: { value: input.rehypeState ?? null, isWritable: true },\n    rehypeAuthority: {\n      value: input.rehypeAuthority ?? null,\n      isWritable: false,\n    },\n    settlementSigner: {\n      value: input.settlementSigner ?? null,\n      isWritable: false,\n    },\n    systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedInstructionAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolve default values.\n  if (!accounts.initializerProgram.value) {\n    accounts.initializerProgram.value =\n      '4h3Dqyo5qmteJoMxXt3tdtfXELDB6pdRTPU9mWruiKp1' as Address<'4h3Dqyo5qmteJoMxXt3tdtfXELDB6pdRTPU9mWruiKp1'>;\n  }\n  if (!accounts.systemProgram.value) {\n    accounts.systemProgram.value =\n      '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n  }\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta('payer', accounts.payer),\n      getAccountMeta('baseMint', accounts.baseMint),\n      getAccountMeta('quoteMint', accounts.quoteMint),\n      getAccountMeta('hookProgram', accounts.hookProgram),\n      getAccountMeta('initializerProgram', accounts.initializerProgram),\n      getAccountMeta('rehypeState', accounts.rehypeState),\n      getAccountMeta('rehypeAuthority', accounts.rehypeAuthority),\n      getAccountMeta('settlementSigner', accounts.settlementSigner),\n      getAccountMeta('systemProgram', accounts.systemProgram),\n    ],\n    data: getInitializeRehypeInstructionDataEncoder().encode(\n      args as InitializeRehypeInstructionDataArgs,\n    ),\n    programAddress,\n  } as InitializeRehypeInstruction<\n    TProgramAddress,\n    TAccountPayer,\n    TAccountBaseMint,\n    TAccountQuoteMint,\n    TAccountHookProgram,\n    TAccountInitializerProgram,\n    TAccountRehypeState,\n    TAccountRehypeAuthority,\n    TAccountSettlementSigner,\n    TAccountSystemProgram\n  >);\n}\n\nexport type ParsedInitializeRehypeInstruction<\n  TProgram extends string = typeof DOPPLER_REHYPE_ROUTER_V1_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    payer: TAccountMetas[0];\n    /** Future launch mint. Its signature prevents another caller from claiming this state PDA. */\n    baseMint: TAccountMetas[1];\n    quoteMint: TAccountMetas[2];\n    hookProgram: TAccountMetas[3];\n    initializerProgram: TAccountMetas[4];\n    rehypeState: TAccountMetas[5];\n    rehypeAuthority: TAccountMetas[6];\n    settlementSigner: TAccountMetas[7];\n    systemProgram: TAccountMetas[8];\n  };\n  data: InitializeRehypeInstructionData;\n};\n\nexport function parseInitializeRehypeInstruction<\n  TProgram extends string,\n  TAccountMetas extends readonly AccountMeta[],\n>(\n  instruction: Instruction<TProgram> &\n    InstructionWithAccounts<TAccountMetas> &\n    InstructionWithData<ReadonlyUint8Array>,\n): ParsedInitializeRehypeInstruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 9) {\n    throw new SolanaError(\n      SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS,\n      {\n        actualAccountMetas: instruction.accounts.length,\n        expectedAccountMetas: 9,\n      },\n    );\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: {\n      payer: getNextAccount(),\n      baseMint: getNextAccount(),\n      quoteMint: getNextAccount(),\n      hookProgram: getNextAccount(),\n      initializerProgram: getNextAccount(),\n      rehypeState: getNextAccount(),\n      rehypeAuthority: getNextAccount(),\n      settlementSigner: getNextAccount(),\n      systemProgram: getNextAccount(),\n    },\n    data: getInitializeRehypeInstructionDataDecoder().decode(instruction.data),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getAddressDecoder,\n  getAddressEncoder,\n  getBytesDecoder,\n  getBytesEncoder,\n  getProgramDerivedAddress,\n  getStructDecoder,\n  getStructEncoder,\n  SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS,\n  SolanaError,\n  transformEncoder,\n  type AccountMeta,\n  type AccountSignerMeta,\n  type Address,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n  type Instruction,\n  type InstructionWithAccounts,\n  type InstructionWithData,\n  type ReadonlyAccount,\n  type ReadonlySignerAccount,\n  type ReadonlyUint8Array,\n  type TransactionSigner,\n  type WritableAccount,\n} from '@solana/kit';\nimport {\n  getAccountMetaFactory,\n  getAddressFromResolvedInstructionAccount,\n  type ResolvedInstructionAccount,\n} from '@solana/program-client-core';\nimport { DOPPLER_REHYPE_ROUTER_V1_PROGRAM_ADDRESS } from '../programs';\n\nexport const REPLACE_BENEFICIARY_DISCRIMINATOR = new Uint8Array([\n  255, 125, 195, 81, 143, 176, 242, 22,\n]);\n\nexport function getReplaceBeneficiaryDiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(\n    REPLACE_BENEFICIARY_DISCRIMINATOR,\n  );\n}\n\nexport type ReplaceBeneficiaryInstruction<\n  TProgram extends string = typeof DOPPLER_REHYPE_ROUTER_V1_PROGRAM_ADDRESS,\n  TAccountCurrentBeneficiary extends string | AccountMeta<string> = string,\n  TAccountBaseMint extends string | AccountMeta<string> = string,\n  TAccountRehypeState extends string | AccountMeta<string> = string,\n  TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n  InstructionWithData<ReadonlyUint8Array> &\n  InstructionWithAccounts<\n    [\n      TAccountCurrentBeneficiary extends string\n        ? ReadonlySignerAccount<TAccountCurrentBeneficiary> &\n            AccountSignerMeta<TAccountCurrentBeneficiary>\n        : TAccountCurrentBeneficiary,\n      TAccountBaseMint extends string\n        ? ReadonlyAccount<TAccountBaseMint>\n        : TAccountBaseMint,\n      TAccountRehypeState extends string\n        ? WritableAccount<TAccountRehypeState>\n        : TAccountRehypeState,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type ReplaceBeneficiaryInstructionData = {\n  discriminator: ReadonlyUint8Array;\n  newWallet: Address;\n};\n\nexport type ReplaceBeneficiaryInstructionDataArgs = { newWallet: Address };\n\nexport function getReplaceBeneficiaryInstructionDataEncoder(): FixedSizeEncoder<ReplaceBeneficiaryInstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['newWallet', getAddressEncoder()],\n    ]),\n    (value) => ({ ...value, discriminator: REPLACE_BENEFICIARY_DISCRIMINATOR }),\n  );\n}\n\nexport function getReplaceBeneficiaryInstructionDataDecoder(): FixedSizeDecoder<ReplaceBeneficiaryInstructionData> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['newWallet', getAddressDecoder()],\n  ]);\n}\n\nexport function getReplaceBeneficiaryInstructionDataCodec(): FixedSizeCodec<\n  ReplaceBeneficiaryInstructionDataArgs,\n  ReplaceBeneficiaryInstructionData\n> {\n  return combineCodec(\n    getReplaceBeneficiaryInstructionDataEncoder(),\n    getReplaceBeneficiaryInstructionDataDecoder(),\n  );\n}\n\nexport type ReplaceBeneficiaryAsyncInput<\n  TAccountCurrentBeneficiary extends string = string,\n  TAccountBaseMint extends string = string,\n  TAccountRehypeState extends string = string,\n> = {\n  currentBeneficiary: TransactionSigner<TAccountCurrentBeneficiary>;\n  /** Used to derive and validate the canonical Rehype state PDA. */\n  baseMint: Address<TAccountBaseMint>;\n  rehypeState?: Address<TAccountRehypeState>;\n  newWallet: ReplaceBeneficiaryInstructionDataArgs['newWallet'];\n};\n\nexport async function getReplaceBeneficiaryInstructionAsync<\n  TAccountCurrentBeneficiary extends string,\n  TAccountBaseMint extends string,\n  TAccountRehypeState extends string,\n  TProgramAddress extends Address =\n    typeof DOPPLER_REHYPE_ROUTER_V1_PROGRAM_ADDRESS,\n>(\n  input: ReplaceBeneficiaryAsyncInput<\n    TAccountCurrentBeneficiary,\n    TAccountBaseMint,\n    TAccountRehypeState\n  >,\n  config?: { programAddress?: TProgramAddress },\n): Promise<\n  ReplaceBeneficiaryInstruction<\n    TProgramAddress,\n    TAccountCurrentBeneficiary,\n    TAccountBaseMint,\n    TAccountRehypeState\n  >\n> {\n  // Program address.\n  const programAddress =\n    config?.programAddress ?? DOPPLER_REHYPE_ROUTER_V1_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    currentBeneficiary: {\n      value: input.currentBeneficiary ?? null,\n      isWritable: false,\n    },\n    baseMint: { value: input.baseMint ?? null, isWritable: false },\n    rehypeState: { value: input.rehypeState ?? null, isWritable: true },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedInstructionAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolve default values.\n  if (!accounts.rehypeState.value) {\n    accounts.rehypeState.value = await getProgramDerivedAddress({\n      programAddress,\n      seeds: [\n        getBytesEncoder().encode(\n          new Uint8Array([\n            114, 101, 104, 121, 112, 101, 95, 115, 116, 97, 116, 101,\n          ]),\n        ),\n        getAddressEncoder().encode(\n          getAddressFromResolvedInstructionAccount(\n            'baseMint',\n            accounts.baseMint.value,\n          ),\n        ),\n      ],\n    });\n  }\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta('currentBeneficiary', accounts.currentBeneficiary),\n      getAccountMeta('baseMint', accounts.baseMint),\n      getAccountMeta('rehypeState', accounts.rehypeState),\n    ],\n    data: getReplaceBeneficiaryInstructionDataEncoder().encode(\n      args as ReplaceBeneficiaryInstructionDataArgs,\n    ),\n    programAddress,\n  } as ReplaceBeneficiaryInstruction<\n    TProgramAddress,\n    TAccountCurrentBeneficiary,\n    TAccountBaseMint,\n    TAccountRehypeState\n  >);\n}\n\nexport type ReplaceBeneficiaryInput<\n  TAccountCurrentBeneficiary extends string = string,\n  TAccountBaseMint extends string = string,\n  TAccountRehypeState extends string = string,\n> = {\n  currentBeneficiary: TransactionSigner<TAccountCurrentBeneficiary>;\n  /** Used to derive and validate the canonical Rehype state PDA. */\n  baseMint: Address<TAccountBaseMint>;\n  rehypeState: Address<TAccountRehypeState>;\n  newWallet: ReplaceBeneficiaryInstructionDataArgs['newWallet'];\n};\n\nexport function getReplaceBeneficiaryInstruction<\n  TAccountCurrentBeneficiary extends string,\n  TAccountBaseMint extends string,\n  TAccountRehypeState extends string,\n  TProgramAddress extends Address =\n    typeof DOPPLER_REHYPE_ROUTER_V1_PROGRAM_ADDRESS,\n>(\n  input: ReplaceBeneficiaryInput<\n    TAccountCurrentBeneficiary,\n    TAccountBaseMint,\n    TAccountRehypeState\n  >,\n  config?: { programAddress?: TProgramAddress },\n): ReplaceBeneficiaryInstruction<\n  TProgramAddress,\n  TAccountCurrentBeneficiary,\n  TAccountBaseMint,\n  TAccountRehypeState\n> {\n  // Program address.\n  const programAddress =\n    config?.programAddress ?? DOPPLER_REHYPE_ROUTER_V1_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    currentBeneficiary: {\n      value: input.currentBeneficiary ?? null,\n      isWritable: false,\n    },\n    baseMint: { value: input.baseMint ?? null, isWritable: false },\n    rehypeState: { value: input.rehypeState ?? null, isWritable: true },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedInstructionAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta('currentBeneficiary', accounts.currentBeneficiary),\n      getAccountMeta('baseMint', accounts.baseMint),\n      getAccountMeta('rehypeState', accounts.rehypeState),\n    ],\n    data: getReplaceBeneficiaryInstructionDataEncoder().encode(\n      args as ReplaceBeneficiaryInstructionDataArgs,\n    ),\n    programAddress,\n  } as ReplaceBeneficiaryInstruction<\n    TProgramAddress,\n    TAccountCurrentBeneficiary,\n    TAccountBaseMint,\n    TAccountRehypeState\n  >);\n}\n\nexport type ParsedReplaceBeneficiaryInstruction<\n  TProgram extends string = typeof DOPPLER_REHYPE_ROUTER_V1_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    currentBeneficiary: TAccountMetas[0];\n    /** Used to derive and validate the canonical Rehype state PDA. */\n    baseMint: TAccountMetas[1];\n    rehypeState: TAccountMetas[2];\n  };\n  data: ReplaceBeneficiaryInstructionData;\n};\n\nexport function parseReplaceBeneficiaryInstruction<\n  TProgram extends string,\n  TAccountMetas extends readonly AccountMeta[],\n>(\n  instruction: Instruction<TProgram> &\n    InstructionWithAccounts<TAccountMetas> &\n    InstructionWithData<ReadonlyUint8Array>,\n): ParsedReplaceBeneficiaryInstruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 3) {\n    throw new SolanaError(\n      SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS,\n      {\n        actualAccountMetas: instruction.accounts.length,\n        expectedAccountMetas: 3,\n      },\n    );\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: {\n      currentBeneficiary: getNextAccount(),\n      baseMint: getNextAccount(),\n      rehypeState: getNextAccount(),\n    },\n    data: getReplaceBeneficiaryInstructionDataDecoder().decode(\n      instruction.data,\n    ),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getAddressEncoder,\n  getBytesDecoder,\n  getBytesEncoder,\n  getProgramDerivedAddress,\n  getStructDecoder,\n  getStructEncoder,\n  getU64Decoder,\n  getU64Encoder,\n  SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS,\n  SolanaError,\n  transformEncoder,\n  type AccountMeta,\n  type AccountSignerMeta,\n  type Address,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n  type Instruction,\n  type InstructionWithAccounts,\n  type InstructionWithData,\n  type ReadonlyAccount,\n  type ReadonlyUint8Array,\n  type TransactionSigner,\n  type WritableAccount,\n  type WritableSignerAccount,\n} from '@solana/kit';\nimport {\n  getAccountMetaFactory,\n  getAddressFromResolvedInstructionAccount,\n  type ResolvedInstructionAccount,\n} from '@solana/program-client-core';\nimport { DOPPLER_REHYPE_ROUTER_V1_PROGRAM_ADDRESS } from '../programs';\n\nexport const SETTLE_FEES_DISCRIMINATOR = new Uint8Array([\n  60, 221, 130, 229, 183, 234, 6, 159,\n]);\n\nexport function getSettleFeesDiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(SETTLE_FEES_DISCRIMINATOR);\n}\n\nexport type SettleFeesInstruction<\n  TProgram extends string = typeof DOPPLER_REHYPE_ROUTER_V1_PROGRAM_ADDRESS,\n  TAccountSettlementAuthority extends string | AccountMeta<string> = string,\n  TAccountInitializerProgram extends string | AccountMeta<string> =\n    '4h3Dqyo5qmteJoMxXt3tdtfXELDB6pdRTPU9mWruiKp1',\n  TAccountInitializerConfig extends string | AccountMeta<string> = string,\n  TAccountLaunch extends string | AccountMeta<string> = string,\n  TAccountLaunchFeeState extends string | AccountMeta<string> = string,\n  TAccountLaunchAuthority extends string | AccountMeta<string> = string,\n  TAccountBaseMint extends string | AccountMeta<string> = string,\n  TAccountQuoteMint extends string | AccountMeta<string> = string,\n  TAccountBaseVault extends string | AccountMeta<string> = string,\n  TAccountQuoteVault extends string | AccountMeta<string> = string,\n  TAccountRehypeState extends string | AccountMeta<string> = string,\n  TAccountRehypeAuthority extends string | AccountMeta<string> = string,\n  TAccountSettlementSigner extends string | AccountMeta<string> = string,\n  TAccountRouterBaseAta extends string | AccountMeta<string> = string,\n  TAccountRouterQuoteAta extends string | AccountMeta<string> = string,\n  TAccountBuybackDestination extends string | AccountMeta<string> = string,\n  TAccountBuybackBaseAta extends string | AccountMeta<string> = string,\n  TAccountBuybackQuoteAta extends string | AccountMeta<string> = string,\n  TAccountNamespace extends string | AccountMeta<string> = string,\n  TAccountHookConfig extends string | AccountMeta<string> = string,\n  TAccountHookProgram extends string | AccountMeta<string> = string,\n  TAccountBaseTokenProgram extends string | AccountMeta<string> = string,\n  TAccountQuoteTokenProgram extends string | AccountMeta<string> = string,\n  TAccountAssociatedTokenProgram extends string | AccountMeta<string> =\n    'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL',\n  TAccountSystemProgram extends string | AccountMeta<string> =\n    '11111111111111111111111111111111',\n  TAccountGateCosigner extends string | AccountMeta<string> = string,\n  TAccountCosignGateControl extends string | AccountMeta<string> = string,\n  TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n  InstructionWithData<ReadonlyUint8Array> &\n  InstructionWithAccounts<\n    [\n      TAccountSettlementAuthority extends string\n        ? WritableSignerAccount<TAccountSettlementAuthority> &\n            AccountSignerMeta<TAccountSettlementAuthority>\n        : TAccountSettlementAuthority,\n      TAccountInitializerProgram extends string\n        ? ReadonlyAccount<TAccountInitializerProgram>\n        : TAccountInitializerProgram,\n      TAccountInitializerConfig extends string\n        ? ReadonlyAccount<TAccountInitializerConfig>\n        : TAccountInitializerConfig,\n      TAccountLaunch extends string\n        ? WritableAccount<TAccountLaunch>\n        : TAccountLaunch,\n      TAccountLaunchFeeState extends string\n        ? WritableAccount<TAccountLaunchFeeState>\n        : TAccountLaunchFeeState,\n      TAccountLaunchAuthority extends string\n        ? ReadonlyAccount<TAccountLaunchAuthority>\n        : TAccountLaunchAuthority,\n      TAccountBaseMint extends string\n        ? ReadonlyAccount<TAccountBaseMint>\n        : TAccountBaseMint,\n      TAccountQuoteMint extends string\n        ? ReadonlyAccount<TAccountQuoteMint>\n        : TAccountQuoteMint,\n      TAccountBaseVault extends string\n        ? WritableAccount<TAccountBaseVault>\n        : TAccountBaseVault,\n      TAccountQuoteVault extends string\n        ? WritableAccount<TAccountQuoteVault>\n        : TAccountQuoteVault,\n      TAccountRehypeState extends string\n        ? WritableAccount<TAccountRehypeState>\n        : TAccountRehypeState,\n      TAccountRehypeAuthority extends string\n        ? ReadonlyAccount<TAccountRehypeAuthority>\n        : TAccountRehypeAuthority,\n      TAccountSettlementSigner extends string\n        ? ReadonlyAccount<TAccountSettlementSigner>\n        : TAccountSettlementSigner,\n      TAccountRouterBaseAta extends string\n        ? WritableAccount<TAccountRouterBaseAta>\n        : TAccountRouterBaseAta,\n      TAccountRouterQuoteAta extends string\n        ? WritableAccount<TAccountRouterQuoteAta>\n        : TAccountRouterQuoteAta,\n      TAccountBuybackDestination extends string\n        ? ReadonlyAccount<TAccountBuybackDestination>\n        : TAccountBuybackDestination,\n      TAccountBuybackBaseAta extends string\n        ? WritableAccount<TAccountBuybackBaseAta>\n        : TAccountBuybackBaseAta,\n      TAccountBuybackQuoteAta extends string\n        ? WritableAccount<TAccountBuybackQuoteAta>\n        : TAccountBuybackQuoteAta,\n      TAccountNamespace extends string\n        ? ReadonlyAccount<TAccountNamespace>\n        : TAccountNamespace,\n      TAccountHookConfig extends string\n        ? ReadonlyAccount<TAccountHookConfig>\n        : TAccountHookConfig,\n      TAccountHookProgram extends string\n        ? ReadonlyAccount<TAccountHookProgram>\n        : TAccountHookProgram,\n      TAccountBaseTokenProgram extends string\n        ? ReadonlyAccount<TAccountBaseTokenProgram>\n        : TAccountBaseTokenProgram,\n      TAccountQuoteTokenProgram extends string\n        ? ReadonlyAccount<TAccountQuoteTokenProgram>\n        : TAccountQuoteTokenProgram,\n      TAccountAssociatedTokenProgram extends string\n        ? ReadonlyAccount<TAccountAssociatedTokenProgram>\n        : TAccountAssociatedTokenProgram,\n      TAccountSystemProgram extends string\n        ? ReadonlyAccount<TAccountSystemProgram>\n        : TAccountSystemProgram,\n      TAccountGateCosigner extends string\n        ? ReadonlyAccount<TAccountGateCosigner>\n        : TAccountGateCosigner,\n      TAccountCosignGateControl extends string\n        ? ReadonlyAccount<TAccountCosignGateControl>\n        : TAccountCosignGateControl,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type SettleFeesInstructionData = {\n  discriminator: ReadonlyUint8Array;\n  minBaseToQuoteOut: bigint;\n  minQuoteToBaseOut: bigint;\n};\n\nexport type SettleFeesInstructionDataArgs = {\n  minBaseToQuoteOut: number | bigint;\n  minQuoteToBaseOut: number | bigint;\n};\n\nexport function getSettleFeesInstructionDataEncoder(): FixedSizeEncoder<SettleFeesInstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['minBaseToQuoteOut', getU64Encoder()],\n      ['minQuoteToBaseOut', getU64Encoder()],\n    ]),\n    (value) => ({ ...value, discriminator: SETTLE_FEES_DISCRIMINATOR }),\n  );\n}\n\nexport function getSettleFeesInstructionDataDecoder(): FixedSizeDecoder<SettleFeesInstructionData> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['minBaseToQuoteOut', getU64Decoder()],\n    ['minQuoteToBaseOut', getU64Decoder()],\n  ]);\n}\n\nexport function getSettleFeesInstructionDataCodec(): FixedSizeCodec<\n  SettleFeesInstructionDataArgs,\n  SettleFeesInstructionData\n> {\n  return combineCodec(\n    getSettleFeesInstructionDataEncoder(),\n    getSettleFeesInstructionDataDecoder(),\n  );\n}\n\nexport type SettleFeesAsyncInput<\n  TAccountSettlementAuthority extends string = string,\n  TAccountInitializerProgram extends string = string,\n  TAccountInitializerConfig extends string = string,\n  TAccountLaunch extends string = string,\n  TAccountLaunchFeeState extends string = string,\n  TAccountLaunchAuthority extends string = string,\n  TAccountBaseMint extends string = string,\n  TAccountQuoteMint extends string = string,\n  TAccountBaseVault extends string = string,\n  TAccountQuoteVault extends string = string,\n  TAccountRehypeState extends string = string,\n  TAccountRehypeAuthority extends string = string,\n  TAccountSettlementSigner extends string = string,\n  TAccountRouterBaseAta extends string = string,\n  TAccountRouterQuoteAta extends string = string,\n  TAccountBuybackDestination extends string = string,\n  TAccountBuybackBaseAta extends string = string,\n  TAccountBuybackQuoteAta extends string = string,\n  TAccountNamespace extends string = string,\n  TAccountHookConfig extends string = string,\n  TAccountHookProgram extends string = string,\n  TAccountBaseTokenProgram extends string = string,\n  TAccountQuoteTokenProgram extends string = string,\n  TAccountAssociatedTokenProgram extends string = string,\n  TAccountSystemProgram extends string = string,\n  TAccountGateCosigner extends string = string,\n  TAccountCosignGateControl extends string = string,\n> = {\n  settlementAuthority: TransactionSigner<TAccountSettlementAuthority>;\n  initializerProgram?: Address<TAccountInitializerProgram>;\n  initializerConfig: Address<TAccountInitializerConfig>;\n  launch: Address<TAccountLaunch>;\n  launchFeeState: Address<TAccountLaunchFeeState>;\n  launchAuthority: Address<TAccountLaunchAuthority>;\n  baseMint: Address<TAccountBaseMint>;\n  quoteMint: Address<TAccountQuoteMint>;\n  baseVault: Address<TAccountBaseVault>;\n  quoteVault: Address<TAccountQuoteVault>;\n  rehypeState?: Address<TAccountRehypeState>;\n  rehypeAuthority?: Address<TAccountRehypeAuthority>;\n  settlementSigner?: Address<TAccountSettlementSigner>;\n  routerBaseAta?: Address<TAccountRouterBaseAta>;\n  routerQuoteAta?: Address<TAccountRouterQuoteAta>;\n  buybackDestination: Address<TAccountBuybackDestination>;\n  buybackBaseAta: Address<TAccountBuybackBaseAta>;\n  buybackQuoteAta: Address<TAccountBuybackQuoteAta>;\n  namespace: Address<TAccountNamespace>;\n  hookConfig: Address<TAccountHookConfig>;\n  hookProgram: Address<TAccountHookProgram>;\n  baseTokenProgram: Address<TAccountBaseTokenProgram>;\n  quoteTokenProgram: Address<TAccountQuoteTokenProgram>;\n  associatedTokenProgram?: Address<TAccountAssociatedTokenProgram>;\n  systemProgram?: Address<TAccountSystemProgram>;\n  gateCosigner?: Address<TAccountGateCosigner>;\n  cosignGateControl?: Address<TAccountCosignGateControl>;\n  minBaseToQuoteOut: SettleFeesInstructionDataArgs['minBaseToQuoteOut'];\n  minQuoteToBaseOut: SettleFeesInstructionDataArgs['minQuoteToBaseOut'];\n};\n\nexport async function getSettleFeesInstructionAsync<\n  TAccountSettlementAuthority extends string,\n  TAccountInitializerProgram extends string,\n  TAccountInitializerConfig extends string,\n  TAccountLaunch extends string,\n  TAccountLaunchFeeState extends string,\n  TAccountLaunchAuthority extends string,\n  TAccountBaseMint extends string,\n  TAccountQuoteMint extends string,\n  TAccountBaseVault extends string,\n  TAccountQuoteVault extends string,\n  TAccountRehypeState extends string,\n  TAccountRehypeAuthority extends string,\n  TAccountSettlementSigner extends string,\n  TAccountRouterBaseAta extends string,\n  TAccountRouterQuoteAta extends string,\n  TAccountBuybackDestination extends string,\n  TAccountBuybackBaseAta extends string,\n  TAccountBuybackQuoteAta extends string,\n  TAccountNamespace extends string,\n  TAccountHookConfig extends string,\n  TAccountHookProgram extends string,\n  TAccountBaseTokenProgram extends string,\n  TAccountQuoteTokenProgram extends string,\n  TAccountAssociatedTokenProgram extends string,\n  TAccountSystemProgram extends string,\n  TAccountGateCosigner extends string,\n  TAccountCosignGateControl extends string,\n  TProgramAddress extends Address =\n    typeof DOPPLER_REHYPE_ROUTER_V1_PROGRAM_ADDRESS,\n>(\n  input: SettleFeesAsyncInput<\n    TAccountSettlementAuthority,\n    TAccountInitializerProgram,\n    TAccountInitializerConfig,\n    TAccountLaunch,\n    TAccountLaunchFeeState,\n    TAccountLaunchAuthority,\n    TAccountBaseMint,\n    TAccountQuoteMint,\n    TAccountBaseVault,\n    TAccountQuoteVault,\n    TAccountRehypeState,\n    TAccountRehypeAuthority,\n    TAccountSettlementSigner,\n    TAccountRouterBaseAta,\n    TAccountRouterQuoteAta,\n    TAccountBuybackDestination,\n    TAccountBuybackBaseAta,\n    TAccountBuybackQuoteAta,\n    TAccountNamespace,\n    TAccountHookConfig,\n    TAccountHookProgram,\n    TAccountBaseTokenProgram,\n    TAccountQuoteTokenProgram,\n    TAccountAssociatedTokenProgram,\n    TAccountSystemProgram,\n    TAccountGateCosigner,\n    TAccountCosignGateControl\n  >,\n  config?: { programAddress?: TProgramAddress },\n): Promise<\n  SettleFeesInstruction<\n    TProgramAddress,\n    TAccountSettlementAuthority,\n    TAccountInitializerProgram,\n    TAccountInitializerConfig,\n    TAccountLaunch,\n    TAccountLaunchFeeState,\n    TAccountLaunchAuthority,\n    TAccountBaseMint,\n    TAccountQuoteMint,\n    TAccountBaseVault,\n    TAccountQuoteVault,\n    TAccountRehypeState,\n    TAccountRehypeAuthority,\n    TAccountSettlementSigner,\n    TAccountRouterBaseAta,\n    TAccountRouterQuoteAta,\n    TAccountBuybackDestination,\n    TAccountBuybackBaseAta,\n    TAccountBuybackQuoteAta,\n    TAccountNamespace,\n    TAccountHookConfig,\n    TAccountHookProgram,\n    TAccountBaseTokenProgram,\n    TAccountQuoteTokenProgram,\n    TAccountAssociatedTokenProgram,\n    TAccountSystemProgram,\n    TAccountGateCosigner,\n    TAccountCosignGateControl\n  >\n> {\n  // Program address.\n  const programAddress =\n    config?.programAddress ?? DOPPLER_REHYPE_ROUTER_V1_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    settlementAuthority: {\n      value: input.settlementAuthority ?? null,\n      isWritable: true,\n    },\n    initializerProgram: {\n      value: input.initializerProgram ?? null,\n      isWritable: false,\n    },\n    initializerConfig: {\n      value: input.initializerConfig ?? null,\n      isWritable: false,\n    },\n    launch: { value: input.launch ?? null, isWritable: true },\n    launchFeeState: { value: input.launchFeeState ?? null, isWritable: true },\n    launchAuthority: {\n      value: input.launchAuthority ?? null,\n      isWritable: false,\n    },\n    baseMint: { value: input.baseMint ?? null, isWritable: false },\n    quoteMint: { value: input.quoteMint ?? null, isWritable: false },\n    baseVault: { value: input.baseVault ?? null, isWritable: true },\n    quoteVault: { value: input.quoteVault ?? null, isWritable: true },\n    rehypeState: { value: input.rehypeState ?? null, isWritable: true },\n    rehypeAuthority: {\n      value: input.rehypeAuthority ?? null,\n      isWritable: false,\n    },\n    settlementSigner: {\n      value: input.settlementSigner ?? null,\n      isWritable: false,\n    },\n    routerBaseAta: { value: input.routerBaseAta ?? null, isWritable: true },\n    routerQuoteAta: { value: input.routerQuoteAta ?? null, isWritable: true },\n    buybackDestination: {\n      value: input.buybackDestination ?? null,\n      isWritable: false,\n    },\n    buybackBaseAta: { value: input.buybackBaseAta ?? null, isWritable: true },\n    buybackQuoteAta: { value: input.buybackQuoteAta ?? null, isWritable: true },\n    namespace: { value: input.namespace ?? null, isWritable: false },\n    hookConfig: { value: input.hookConfig ?? null, isWritable: false },\n    hookProgram: { value: input.hookProgram ?? null, isWritable: false },\n    baseTokenProgram: {\n      value: input.baseTokenProgram ?? null,\n      isWritable: false,\n    },\n    quoteTokenProgram: {\n      value: input.quoteTokenProgram ?? null,\n      isWritable: false,\n    },\n    associatedTokenProgram: {\n      value: input.associatedTokenProgram ?? null,\n      isWritable: false,\n    },\n    systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n    gateCosigner: { value: input.gateCosigner ?? null, isWritable: false },\n    cosignGateControl: {\n      value: input.cosignGateControl ?? null,\n      isWritable: false,\n    },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedInstructionAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolve default values.\n  if (!accounts.initializerProgram.value) {\n    accounts.initializerProgram.value =\n      '4h3Dqyo5qmteJoMxXt3tdtfXELDB6pdRTPU9mWruiKp1' as Address<'4h3Dqyo5qmteJoMxXt3tdtfXELDB6pdRTPU9mWruiKp1'>;\n  }\n  if (!accounts.rehypeState.value) {\n    accounts.rehypeState.value = await getProgramDerivedAddress({\n      programAddress,\n      seeds: [\n        getBytesEncoder().encode(\n          new Uint8Array([\n            114, 101, 104, 121, 112, 101, 95, 115, 116, 97, 116, 101,\n          ]),\n        ),\n        getAddressEncoder().encode(\n          getAddressFromResolvedInstructionAccount(\n            'baseMint',\n            accounts.baseMint.value,\n          ),\n        ),\n      ],\n    });\n  }\n  if (!accounts.rehypeAuthority.value) {\n    accounts.rehypeAuthority.value = await getProgramDerivedAddress({\n      programAddress,\n      seeds: [\n        getBytesEncoder().encode(\n          new Uint8Array([\n            114, 101, 104, 121, 112, 101, 95, 97, 117, 116, 104, 111, 114, 105,\n            116, 121,\n          ]),\n        ),\n        getAddressEncoder().encode(\n          getAddressFromResolvedInstructionAccount(\n            'rehypeState',\n            accounts.rehypeState.value,\n          ),\n        ),\n      ],\n    });\n  }\n  if (!accounts.settlementSigner.value) {\n    accounts.settlementSigner.value = await getProgramDerivedAddress({\n      programAddress,\n      seeds: [\n        getBytesEncoder().encode(\n          new Uint8Array([\n            115, 101, 116, 116, 108, 101, 109, 101, 110, 116, 95, 115, 105, 103,\n            110, 101, 114,\n          ]),\n        ),\n        getAddressEncoder().encode(\n          getAddressFromResolvedInstructionAccount(\n            'rehypeState',\n            accounts.rehypeState.value,\n          ),\n        ),\n      ],\n    });\n  }\n  if (!accounts.routerBaseAta.value) {\n    accounts.routerBaseAta.value = await getProgramDerivedAddress({\n      programAddress:\n        'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL' as Address<'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL'>,\n      seeds: [\n        getAddressEncoder().encode(\n          getAddressFromResolvedInstructionAccount(\n            'rehypeAuthority',\n            accounts.rehypeAuthority.value,\n          ),\n        ),\n        getAddressEncoder().encode(\n          getAddressFromResolvedInstructionAccount(\n            'baseTokenProgram',\n            accounts.baseTokenProgram.value,\n          ),\n        ),\n        getAddressEncoder().encode(\n          getAddressFromResolvedInstructionAccount(\n            'baseMint',\n            accounts.baseMint.value,\n          ),\n        ),\n      ],\n    });\n  }\n  if (!accounts.routerQuoteAta.value) {\n    accounts.routerQuoteAta.value = await getProgramDerivedAddress({\n      programAddress:\n        'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL' as Address<'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL'>,\n      seeds: [\n        getAddressEncoder().encode(\n          getAddressFromResolvedInstructionAccount(\n            'rehypeAuthority',\n            accounts.rehypeAuthority.value,\n          ),\n        ),\n        getAddressEncoder().encode(\n          getAddressFromResolvedInstructionAccount(\n            'quoteTokenProgram',\n            accounts.quoteTokenProgram.value,\n          ),\n        ),\n        getAddressEncoder().encode(\n          getAddressFromResolvedInstructionAccount(\n            'quoteMint',\n            accounts.quoteMint.value,\n          ),\n        ),\n      ],\n    });\n  }\n  if (!accounts.associatedTokenProgram.value) {\n    accounts.associatedTokenProgram.value =\n      'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL' as Address<'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL'>;\n  }\n  if (!accounts.systemProgram.value) {\n    accounts.systemProgram.value =\n      '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n  }\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta('settlementAuthority', accounts.settlementAuthority),\n      getAccountMeta('initializerProgram', accounts.initializerProgram),\n      getAccountMeta('initializerConfig', accounts.initializerConfig),\n      getAccountMeta('launch', accounts.launch),\n      getAccountMeta('launchFeeState', accounts.launchFeeState),\n      getAccountMeta('launchAuthority', accounts.launchAuthority),\n      getAccountMeta('baseMint', accounts.baseMint),\n      getAccountMeta('quoteMint', accounts.quoteMint),\n      getAccountMeta('baseVault', accounts.baseVault),\n      getAccountMeta('quoteVault', accounts.quoteVault),\n      getAccountMeta('rehypeState', accounts.rehypeState),\n      getAccountMeta('rehypeAuthority', accounts.rehypeAuthority),\n      getAccountMeta('settlementSigner', accounts.settlementSigner),\n      getAccountMeta('routerBaseAta', accounts.routerBaseAta),\n      getAccountMeta('routerQuoteAta', accounts.routerQuoteAta),\n      getAccountMeta('buybackDestination', accounts.buybackDestination),\n      getAccountMeta('buybackBaseAta', accounts.buybackBaseAta),\n      getAccountMeta('buybackQuoteAta', accounts.buybackQuoteAta),\n      getAccountMeta('namespace', accounts.namespace),\n      getAccountMeta('hookConfig', accounts.hookConfig),\n      getAccountMeta('hookProgram', accounts.hookProgram),\n      getAccountMeta('baseTokenProgram', accounts.baseTokenProgram),\n      getAccountMeta('quoteTokenProgram', accounts.quoteTokenProgram),\n      getAccountMeta('associatedTokenProgram', accounts.associatedTokenProgram),\n      getAccountMeta('systemProgram', accounts.systemProgram),\n      getAccountMeta('gateCosigner', accounts.gateCosigner),\n      getAccountMeta('cosignGateControl', accounts.cosignGateControl),\n    ],\n    data: getSettleFeesInstructionDataEncoder().encode(\n      args as SettleFeesInstructionDataArgs,\n    ),\n    programAddress,\n  } as SettleFeesInstruction<\n    TProgramAddress,\n    TAccountSettlementAuthority,\n    TAccountInitializerProgram,\n    TAccountInitializerConfig,\n    TAccountLaunch,\n    TAccountLaunchFeeState,\n    TAccountLaunchAuthority,\n    TAccountBaseMint,\n    TAccountQuoteMint,\n    TAccountBaseVault,\n    TAccountQuoteVault,\n    TAccountRehypeState,\n    TAccountRehypeAuthority,\n    TAccountSettlementSigner,\n    TAccountRouterBaseAta,\n    TAccountRouterQuoteAta,\n    TAccountBuybackDestination,\n    TAccountBuybackBaseAta,\n    TAccountBuybackQuoteAta,\n    TAccountNamespace,\n    TAccountHookConfig,\n    TAccountHookProgram,\n    TAccountBaseTokenProgram,\n    TAccountQuoteTokenProgram,\n    TAccountAssociatedTokenProgram,\n    TAccountSystemProgram,\n    TAccountGateCosigner,\n    TAccountCosignGateControl\n  >);\n}\n\nexport type SettleFeesInput<\n  TAccountSettlementAuthority extends string = string,\n  TAccountInitializerProgram extends string = string,\n  TAccountInitializerConfig extends string = string,\n  TAccountLaunch extends string = string,\n  TAccountLaunchFeeState extends string = string,\n  TAccountLaunchAuthority extends string = string,\n  TAccountBaseMint extends string = string,\n  TAccountQuoteMint extends string = string,\n  TAccountBaseVault extends string = string,\n  TAccountQuoteVault extends string = string,\n  TAccountRehypeState extends string = string,\n  TAccountRehypeAuthority extends string = string,\n  TAccountSettlementSigner extends string = string,\n  TAccountRouterBaseAta extends string = string,\n  TAccountRouterQuoteAta extends string = string,\n  TAccountBuybackDestination extends string = string,\n  TAccountBuybackBaseAta extends string = string,\n  TAccountBuybackQuoteAta extends string = string,\n  TAccountNamespace extends string = string,\n  TAccountHookConfig extends string = string,\n  TAccountHookProgram extends string = string,\n  TAccountBaseTokenProgram extends string = string,\n  TAccountQuoteTokenProgram extends string = string,\n  TAccountAssociatedTokenProgram extends string = string,\n  TAccountSystemProgram extends string = string,\n  TAccountGateCosigner extends string = string,\n  TAccountCosignGateControl extends string = string,\n> = {\n  settlementAuthority: TransactionSigner<TAccountSettlementAuthority>;\n  initializerProgram?: Address<TAccountInitializerProgram>;\n  initializerConfig: Address<TAccountInitializerConfig>;\n  launch: Address<TAccountLaunch>;\n  launchFeeState: Address<TAccountLaunchFeeState>;\n  launchAuthority: Address<TAccountLaunchAuthority>;\n  baseMint: Address<TAccountBaseMint>;\n  quoteMint: Address<TAccountQuoteMint>;\n  baseVault: Address<TAccountBaseVault>;\n  quoteVault: Address<TAccountQuoteVault>;\n  rehypeState: Address<TAccountRehypeState>;\n  rehypeAuthority: Address<TAccountRehypeAuthority>;\n  settlementSigner: Address<TAccountSettlementSigner>;\n  routerBaseAta: Address<TAccountRouterBaseAta>;\n  routerQuoteAta: Address<TAccountRouterQuoteAta>;\n  buybackDestination: Address<TAccountBuybackDestination>;\n  buybackBaseAta: Address<TAccountBuybackBaseAta>;\n  buybackQuoteAta: Address<TAccountBuybackQuoteAta>;\n  namespace: Address<TAccountNamespace>;\n  hookConfig: Address<TAccountHookConfig>;\n  hookProgram: Address<TAccountHookProgram>;\n  baseTokenProgram: Address<TAccountBaseTokenProgram>;\n  quoteTokenProgram: Address<TAccountQuoteTokenProgram>;\n  associatedTokenProgram?: Address<TAccountAssociatedTokenProgram>;\n  systemProgram?: Address<TAccountSystemProgram>;\n  gateCosigner?: Address<TAccountGateCosigner>;\n  cosignGateControl?: Address<TAccountCosignGateControl>;\n  minBaseToQuoteOut: SettleFeesInstructionDataArgs['minBaseToQuoteOut'];\n  minQuoteToBaseOut: SettleFeesInstructionDataArgs['minQuoteToBaseOut'];\n};\n\nexport function getSettleFeesInstruction<\n  TAccountSettlementAuthority extends string,\n  TAccountInitializerProgram extends string,\n  TAccountInitializerConfig extends string,\n  TAccountLaunch extends string,\n  TAccountLaunchFeeState extends string,\n  TAccountLaunchAuthority extends string,\n  TAccountBaseMint extends string,\n  TAccountQuoteMint extends string,\n  TAccountBaseVault extends string,\n  TAccountQuoteVault extends string,\n  TAccountRehypeState extends string,\n  TAccountRehypeAuthority extends string,\n  TAccountSettlementSigner extends string,\n  TAccountRouterBaseAta extends string,\n  TAccountRouterQuoteAta extends string,\n  TAccountBuybackDestination extends string,\n  TAccountBuybackBaseAta extends string,\n  TAccountBuybackQuoteAta extends string,\n  TAccountNamespace extends string,\n  TAccountHookConfig extends string,\n  TAccountHookProgram extends string,\n  TAccountBaseTokenProgram extends string,\n  TAccountQuoteTokenProgram extends string,\n  TAccountAssociatedTokenProgram extends string,\n  TAccountSystemProgram extends string,\n  TAccountGateCosigner extends string,\n  TAccountCosignGateControl extends string,\n  TProgramAddress extends Address =\n    typeof DOPPLER_REHYPE_ROUTER_V1_PROGRAM_ADDRESS,\n>(\n  input: SettleFeesInput<\n    TAccountSettlementAuthority,\n    TAccountInitializerProgram,\n    TAccountInitializerConfig,\n    TAccountLaunch,\n    TAccountLaunchFeeState,\n    TAccountLaunchAuthority,\n    TAccountBaseMint,\n    TAccountQuoteMint,\n    TAccountBaseVault,\n    TAccountQuoteVault,\n    TAccountRehypeState,\n    TAccountRehypeAuthority,\n    TAccountSettlementSigner,\n    TAccountRouterBaseAta,\n    TAccountRouterQuoteAta,\n    TAccountBuybackDestination,\n    TAccountBuybackBaseAta,\n    TAccountBuybackQuoteAta,\n    TAccountNamespace,\n    TAccountHookConfig,\n    TAccountHookProgram,\n    TAccountBaseTokenProgram,\n    TAccountQuoteTokenProgram,\n    TAccountAssociatedTokenProgram,\n    TAccountSystemProgram,\n    TAccountGateCosigner,\n    TAccountCosignGateControl\n  >,\n  config?: { programAddress?: TProgramAddress },\n): SettleFeesInstruction<\n  TProgramAddress,\n  TAccountSettlementAuthority,\n  TAccountInitializerProgram,\n  TAccountInitializerConfig,\n  TAccountLaunch,\n  TAccountLaunchFeeState,\n  TAccountLaunchAuthority,\n  TAccountBaseMint,\n  TAccountQuoteMint,\n  TAccountBaseVault,\n  TAccountQuoteVault,\n  TAccountRehypeState,\n  TAccountRehypeAuthority,\n  TAccountSettlementSigner,\n  TAccountRouterBaseAta,\n  TAccountRouterQuoteAta,\n  TAccountBuybackDestination,\n  TAccountBuybackBaseAta,\n  TAccountBuybackQuoteAta,\n  TAccountNamespace,\n  TAccountHookConfig,\n  TAccountHookProgram,\n  TAccountBaseTokenProgram,\n  TAccountQuoteTokenProgram,\n  TAccountAssociatedTokenProgram,\n  TAccountSystemProgram,\n  TAccountGateCosigner,\n  TAccountCosignGateControl\n> {\n  // Program address.\n  const programAddress =\n    config?.programAddress ?? DOPPLER_REHYPE_ROUTER_V1_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    settlementAuthority: {\n      value: input.settlementAuthority ?? null,\n      isWritable: true,\n    },\n    initializerProgram: {\n      value: input.initializerProgram ?? null,\n      isWritable: false,\n    },\n    initializerConfig: {\n      value: input.initializerConfig ?? null,\n      isWritable: false,\n    },\n    launch: { value: input.launch ?? null, isWritable: true },\n    launchFeeState: { value: input.launchFeeState ?? null, isWritable: true },\n    launchAuthority: {\n      value: input.launchAuthority ?? null,\n      isWritable: false,\n    },\n    baseMint: { value: input.baseMint ?? null, isWritable: false },\n    quoteMint: { value: input.quoteMint ?? null, isWritable: false },\n    baseVault: { value: input.baseVault ?? null, isWritable: true },\n    quoteVault: { value: input.quoteVault ?? null, isWritable: true },\n    rehypeState: { value: input.rehypeState ?? null, isWritable: true },\n    rehypeAuthority: {\n      value: input.rehypeAuthority ?? null,\n      isWritable: false,\n    },\n    settlementSigner: {\n      value: input.settlementSigner ?? null,\n      isWritable: false,\n    },\n    routerBaseAta: { value: input.routerBaseAta ?? null, isWritable: true },\n    routerQuoteAta: { value: input.routerQuoteAta ?? null, isWritable: true },\n    buybackDestination: {\n      value: input.buybackDestination ?? null,\n      isWritable: false,\n    },\n    buybackBaseAta: { value: input.buybackBaseAta ?? null, isWritable: true },\n    buybackQuoteAta: { value: input.buybackQuoteAta ?? null, isWritable: true },\n    namespace: { value: input.namespace ?? null, isWritable: false },\n    hookConfig: { value: input.hookConfig ?? null, isWritable: false },\n    hookProgram: { value: input.hookProgram ?? null, isWritable: false },\n    baseTokenProgram: {\n      value: input.baseTokenProgram ?? null,\n      isWritable: false,\n    },\n    quoteTokenProgram: {\n      value: input.quoteTokenProgram ?? null,\n      isWritable: false,\n    },\n    associatedTokenProgram: {\n      value: input.associatedTokenProgram ?? null,\n      isWritable: false,\n    },\n    systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n    gateCosigner: { value: input.gateCosigner ?? null, isWritable: false },\n    cosignGateControl: {\n      value: input.cosignGateControl ?? null,\n      isWritable: false,\n    },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedInstructionAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolve default values.\n  if (!accounts.initializerProgram.value) {\n    accounts.initializerProgram.value =\n      '4h3Dqyo5qmteJoMxXt3tdtfXELDB6pdRTPU9mWruiKp1' as Address<'4h3Dqyo5qmteJoMxXt3tdtfXELDB6pdRTPU9mWruiKp1'>;\n  }\n  if (!accounts.associatedTokenProgram.value) {\n    accounts.associatedTokenProgram.value =\n      'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL' as Address<'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL'>;\n  }\n  if (!accounts.systemProgram.value) {\n    accounts.systemProgram.value =\n      '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n  }\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta('settlementAuthority', accounts.settlementAuthority),\n      getAccountMeta('initializerProgram', accounts.initializerProgram),\n      getAccountMeta('initializerConfig', accounts.initializerConfig),\n      getAccountMeta('launch', accounts.launch),\n      getAccountMeta('launchFeeState', accounts.launchFeeState),\n      getAccountMeta('launchAuthority', accounts.launchAuthority),\n      getAccountMeta('baseMint', accounts.baseMint),\n      getAccountMeta('quoteMint', accounts.quoteMint),\n      getAccountMeta('baseVault', accounts.baseVault),\n      getAccountMeta('quoteVault', accounts.quoteVault),\n      getAccountMeta('rehypeState', accounts.rehypeState),\n      getAccountMeta('rehypeAuthority', accounts.rehypeAuthority),\n      getAccountMeta('settlementSigner', accounts.settlementSigner),\n      getAccountMeta('routerBaseAta', accounts.routerBaseAta),\n      getAccountMeta('routerQuoteAta', accounts.routerQuoteAta),\n      getAccountMeta('buybackDestination', accounts.buybackDestination),\n      getAccountMeta('buybackBaseAta', accounts.buybackBaseAta),\n      getAccountMeta('buybackQuoteAta', accounts.buybackQuoteAta),\n      getAccountMeta('namespace', accounts.namespace),\n      getAccountMeta('hookConfig', accounts.hookConfig),\n      getAccountMeta('hookProgram', accounts.hookProgram),\n      getAccountMeta('baseTokenProgram', accounts.baseTokenProgram),\n      getAccountMeta('quoteTokenProgram', accounts.quoteTokenProgram),\n      getAccountMeta('associatedTokenProgram', accounts.associatedTokenProgram),\n      getAccountMeta('systemProgram', accounts.systemProgram),\n      getAccountMeta('gateCosigner', accounts.gateCosigner),\n      getAccountMeta('cosignGateControl', accounts.cosignGateControl),\n    ],\n    data: getSettleFeesInstructionDataEncoder().encode(\n      args as SettleFeesInstructionDataArgs,\n    ),\n    programAddress,\n  } as SettleFeesInstruction<\n    TProgramAddress,\n    TAccountSettlementAuthority,\n    TAccountInitializerProgram,\n    TAccountInitializerConfig,\n    TAccountLaunch,\n    TAccountLaunchFeeState,\n    TAccountLaunchAuthority,\n    TAccountBaseMint,\n    TAccountQuoteMint,\n    TAccountBaseVault,\n    TAccountQuoteVault,\n    TAccountRehypeState,\n    TAccountRehypeAuthority,\n    TAccountSettlementSigner,\n    TAccountRouterBaseAta,\n    TAccountRouterQuoteAta,\n    TAccountBuybackDestination,\n    TAccountBuybackBaseAta,\n    TAccountBuybackQuoteAta,\n    TAccountNamespace,\n    TAccountHookConfig,\n    TAccountHookProgram,\n    TAccountBaseTokenProgram,\n    TAccountQuoteTokenProgram,\n    TAccountAssociatedTokenProgram,\n    TAccountSystemProgram,\n    TAccountGateCosigner,\n    TAccountCosignGateControl\n  >);\n}\n\nexport type ParsedSettleFeesInstruction<\n  TProgram extends string = typeof DOPPLER_REHYPE_ROUTER_V1_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    settlementAuthority: TAccountMetas[0];\n    initializerProgram: TAccountMetas[1];\n    initializerConfig: TAccountMetas[2];\n    launch: TAccountMetas[3];\n    launchFeeState: TAccountMetas[4];\n    launchAuthority: TAccountMetas[5];\n    baseMint: TAccountMetas[6];\n    quoteMint: TAccountMetas[7];\n    baseVault: TAccountMetas[8];\n    quoteVault: TAccountMetas[9];\n    rehypeState: TAccountMetas[10];\n    rehypeAuthority: TAccountMetas[11];\n    settlementSigner: TAccountMetas[12];\n    routerBaseAta: TAccountMetas[13];\n    routerQuoteAta: TAccountMetas[14];\n    buybackDestination: TAccountMetas[15];\n    buybackBaseAta: TAccountMetas[16];\n    buybackQuoteAta: TAccountMetas[17];\n    namespace: TAccountMetas[18];\n    hookConfig: TAccountMetas[19];\n    hookProgram: TAccountMetas[20];\n    baseTokenProgram: TAccountMetas[21];\n    quoteTokenProgram: TAccountMetas[22];\n    associatedTokenProgram: TAccountMetas[23];\n    systemProgram: TAccountMetas[24];\n    gateCosigner?: TAccountMetas[25] | undefined;\n    cosignGateControl?: TAccountMetas[26] | undefined;\n  };\n  data: SettleFeesInstructionData;\n};\n\nexport function parseSettleFeesInstruction<\n  TProgram extends string,\n  TAccountMetas extends readonly AccountMeta[],\n>(\n  instruction: Instruction<TProgram> &\n    InstructionWithAccounts<TAccountMetas> &\n    InstructionWithData<ReadonlyUint8Array>,\n): ParsedSettleFeesInstruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 27) {\n    throw new SolanaError(\n      SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS,\n      {\n        actualAccountMetas: instruction.accounts.length,\n        expectedAccountMetas: 27,\n      },\n    );\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  const getNextOptionalAccount = () => {\n    const accountMeta = getNextAccount();\n    return accountMeta.address === DOPPLER_REHYPE_ROUTER_V1_PROGRAM_ADDRESS\n      ? undefined\n      : accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: {\n      settlementAuthority: getNextAccount(),\n      initializerProgram: getNextAccount(),\n      initializerConfig: getNextAccount(),\n      launch: getNextAccount(),\n      launchFeeState: getNextAccount(),\n      launchAuthority: getNextAccount(),\n      baseMint: getNextAccount(),\n      quoteMint: getNextAccount(),\n      baseVault: getNextAccount(),\n      quoteVault: getNextAccount(),\n      rehypeState: getNextAccount(),\n      rehypeAuthority: getNextAccount(),\n      settlementSigner: getNextAccount(),\n      routerBaseAta: getNextAccount(),\n      routerQuoteAta: getNextAccount(),\n      buybackDestination: getNextAccount(),\n      buybackBaseAta: getNextAccount(),\n      buybackQuoteAta: getNextAccount(),\n      namespace: getNextAccount(),\n      hookConfig: getNextAccount(),\n      hookProgram: getNextAccount(),\n      baseTokenProgram: getNextAccount(),\n      quoteTokenProgram: getNextAccount(),\n      associatedTokenProgram: getNextAccount(),\n      systemProgram: getNextAccount(),\n      gateCosigner: getNextOptionalAccount(),\n      cosignGateControl: getNextOptionalAccount(),\n    },\n    data: getSettleFeesInstructionDataDecoder().decode(instruction.data),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getAddressEncoder,\n  getBytesDecoder,\n  getBytesEncoder,\n  getOptionDecoder,\n  getOptionEncoder,\n  getProgramDerivedAddress,\n  getStructDecoder,\n  getStructEncoder,\n  getU128Decoder,\n  getU128Encoder,\n  getU64Decoder,\n  getU64Encoder,\n  SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS,\n  SolanaError,\n  transformEncoder,\n  type AccountMeta,\n  type AccountSignerMeta,\n  type Address,\n  type Codec,\n  type Decoder,\n  type Encoder,\n  type Instruction,\n  type InstructionWithAccounts,\n  type InstructionWithData,\n  type Option,\n  type OptionOrNullable,\n  type ReadonlyAccount,\n  type ReadonlyUint8Array,\n  type TransactionSigner,\n  type WritableAccount,\n  type WritableSignerAccount,\n} from '@solana/kit';\nimport {\n  getAccountMetaFactory,\n  getAddressFromResolvedInstructionAccount,\n  type ResolvedInstructionAccount,\n} from '@solana/program-client-core';\nimport { DOPPLER_REHYPE_ROUTER_V1_PROGRAM_ADDRESS } from '../programs';\nimport {\n  getLpRebalanceArgsDecoder,\n  getLpRebalanceArgsEncoder,\n  type LpRebalanceArgs,\n  type LpRebalanceArgsArgs,\n} from '../types';\n\nexport const SETTLE_MIGRATED_FEES_DISCRIMINATOR = new Uint8Array([\n  73, 177, 82, 102, 67, 4, 231, 200,\n]);\n\nexport function getSettleMigratedFeesDiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(\n    SETTLE_MIGRATED_FEES_DISCRIMINATOR,\n  );\n}\n\nexport type SettleMigratedFeesInstruction<\n  TProgram extends string = typeof DOPPLER_REHYPE_ROUTER_V1_PROGRAM_ADDRESS,\n  TAccountSettlementAuthority extends string | AccountMeta<string> = string,\n  TAccountInitializerProgram extends string | AccountMeta<string> =\n    '4h3Dqyo5qmteJoMxXt3tdtfXELDB6pdRTPU9mWruiKp1',\n  TAccountInitializerConfig extends string | AccountMeta<string> = string,\n  TAccountLaunch extends string | AccountMeta<string> = string,\n  TAccountLaunchFeeState extends string | AccountMeta<string> = string,\n  TAccountLaunchAuthority extends string | AccountMeta<string> = string,\n  TAccountBaseMint extends string | AccountMeta<string> = string,\n  TAccountQuoteMint extends string | AccountMeta<string> = string,\n  TAccountLaunchBaseVault extends string | AccountMeta<string> = string,\n  TAccountLaunchQuoteVault extends string | AccountMeta<string> = string,\n  TAccountRehypeState extends string | AccountMeta<string> = string,\n  TAccountRehypeAuthority extends string | AccountMeta<string> = string,\n  TAccountRouterBaseAta extends string | AccountMeta<string> = string,\n  TAccountRouterQuoteAta extends string | AccountMeta<string> = string,\n  TAccountBuybackDestination extends string | AccountMeta<string> = string,\n  TAccountBuybackBaseAta extends string | AccountMeta<string> = string,\n  TAccountBuybackQuoteAta extends string | AccountMeta<string> = string,\n  TAccountCpmmProgram extends string | AccountMeta<string> =\n    '9PSxVPoPfnbZ8Q1uQhgS6ZxvBjFboZtebNsu34umxkgQ',\n  TAccountCpmmConfig extends string | AccountMeta<string> = string,\n  TAccountPool extends string | AccountMeta<string> = string,\n  TAccountPoolAuthority extends string | AccountMeta<string> = string,\n  TAccountPoolVault0 extends string | AccountMeta<string> = string,\n  TAccountPoolVault1 extends string | AccountMeta<string> = string,\n  TAccountProtocolFeePosition extends string | AccountMeta<string> = string,\n  TAccountRouterLpPosition extends string | AccountMeta<string> = string,\n  TAccountBaseTokenProgram extends string | AccountMeta<string> = string,\n  TAccountQuoteTokenProgram extends string | AccountMeta<string> = string,\n  TAccountAssociatedTokenProgram extends string | AccountMeta<string> =\n    'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL',\n  TAccountSystemProgram extends string | AccountMeta<string> =\n    '11111111111111111111111111111111',\n  TAccountOracle extends string | AccountMeta<string> = string,\n  TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n  InstructionWithData<ReadonlyUint8Array> &\n  InstructionWithAccounts<\n    [\n      TAccountSettlementAuthority extends string\n        ? WritableSignerAccount<TAccountSettlementAuthority> &\n            AccountSignerMeta<TAccountSettlementAuthority>\n        : TAccountSettlementAuthority,\n      TAccountInitializerProgram extends string\n        ? ReadonlyAccount<TAccountInitializerProgram>\n        : TAccountInitializerProgram,\n      TAccountInitializerConfig extends string\n        ? ReadonlyAccount<TAccountInitializerConfig>\n        : TAccountInitializerConfig,\n      TAccountLaunch extends string\n        ? WritableAccount<TAccountLaunch>\n        : TAccountLaunch,\n      TAccountLaunchFeeState extends string\n        ? WritableAccount<TAccountLaunchFeeState>\n        : TAccountLaunchFeeState,\n      TAccountLaunchAuthority extends string\n        ? ReadonlyAccount<TAccountLaunchAuthority>\n        : TAccountLaunchAuthority,\n      TAccountBaseMint extends string\n        ? ReadonlyAccount<TAccountBaseMint>\n        : TAccountBaseMint,\n      TAccountQuoteMint extends string\n        ? ReadonlyAccount<TAccountQuoteMint>\n        : TAccountQuoteMint,\n      TAccountLaunchBaseVault extends string\n        ? WritableAccount<TAccountLaunchBaseVault>\n        : TAccountLaunchBaseVault,\n      TAccountLaunchQuoteVault extends string\n        ? WritableAccount<TAccountLaunchQuoteVault>\n        : TAccountLaunchQuoteVault,\n      TAccountRehypeState extends string\n        ? WritableAccount<TAccountRehypeState>\n        : TAccountRehypeState,\n      TAccountRehypeAuthority extends string\n        ? ReadonlyAccount<TAccountRehypeAuthority>\n        : TAccountRehypeAuthority,\n      TAccountRouterBaseAta extends string\n        ? WritableAccount<TAccountRouterBaseAta>\n        : TAccountRouterBaseAta,\n      TAccountRouterQuoteAta extends string\n        ? WritableAccount<TAccountRouterQuoteAta>\n        : TAccountRouterQuoteAta,\n      TAccountBuybackDestination extends string\n        ? ReadonlyAccount<TAccountBuybackDestination>\n        : TAccountBuybackDestination,\n      TAccountBuybackBaseAta extends string\n        ? WritableAccount<TAccountBuybackBaseAta>\n        : TAccountBuybackBaseAta,\n      TAccountBuybackQuoteAta extends string\n        ? WritableAccount<TAccountBuybackQuoteAta>\n        : TAccountBuybackQuoteAta,\n      TAccountCpmmProgram extends string\n        ? ReadonlyAccount<TAccountCpmmProgram>\n        : TAccountCpmmProgram,\n      TAccountCpmmConfig extends string\n        ? ReadonlyAccount<TAccountCpmmConfig>\n        : TAccountCpmmConfig,\n      TAccountPool extends string\n        ? WritableAccount<TAccountPool>\n        : TAccountPool,\n      TAccountPoolAuthority extends string\n        ? ReadonlyAccount<TAccountPoolAuthority>\n        : TAccountPoolAuthority,\n      TAccountPoolVault0 extends string\n        ? WritableAccount<TAccountPoolVault0>\n        : TAccountPoolVault0,\n      TAccountPoolVault1 extends string\n        ? WritableAccount<TAccountPoolVault1>\n        : TAccountPoolVault1,\n      TAccountProtocolFeePosition extends string\n        ? WritableAccount<TAccountProtocolFeePosition>\n        : TAccountProtocolFeePosition,\n      TAccountRouterLpPosition extends string\n        ? WritableAccount<TAccountRouterLpPosition>\n        : TAccountRouterLpPosition,\n      TAccountBaseTokenProgram extends string\n        ? ReadonlyAccount<TAccountBaseTokenProgram>\n        : TAccountBaseTokenProgram,\n      TAccountQuoteTokenProgram extends string\n        ? ReadonlyAccount<TAccountQuoteTokenProgram>\n        : TAccountQuoteTokenProgram,\n      TAccountAssociatedTokenProgram extends string\n        ? ReadonlyAccount<TAccountAssociatedTokenProgram>\n        : TAccountAssociatedTokenProgram,\n      TAccountSystemProgram extends string\n        ? ReadonlyAccount<TAccountSystemProgram>\n        : TAccountSystemProgram,\n      TAccountOracle extends string\n        ? WritableAccount<TAccountOracle>\n        : TAccountOracle,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type SettleMigratedFeesInstructionData = {\n  discriminator: ReadonlyUint8Array;\n  minBaseToQuoteOut: bigint;\n  minQuoteToBaseOut: bigint;\n  lpRebalance: Option<LpRebalanceArgs>;\n  minLpSharesOut: bigint;\n};\n\nexport type SettleMigratedFeesInstructionDataArgs = {\n  minBaseToQuoteOut: number | bigint;\n  minQuoteToBaseOut: number | bigint;\n  lpRebalance: OptionOrNullable<LpRebalanceArgsArgs>;\n  minLpSharesOut: number | bigint;\n};\n\nexport function getSettleMigratedFeesInstructionDataEncoder(): Encoder<SettleMigratedFeesInstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['minBaseToQuoteOut', getU64Encoder()],\n      ['minQuoteToBaseOut', getU64Encoder()],\n      ['lpRebalance', getOptionEncoder(getLpRebalanceArgsEncoder())],\n      ['minLpSharesOut', getU128Encoder()],\n    ]),\n    (value) => ({\n      ...value,\n      discriminator: SETTLE_MIGRATED_FEES_DISCRIMINATOR,\n    }),\n  );\n}\n\nexport function getSettleMigratedFeesInstructionDataDecoder(): Decoder<SettleMigratedFeesInstructionData> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['minBaseToQuoteOut', getU64Decoder()],\n    ['minQuoteToBaseOut', getU64Decoder()],\n    ['lpRebalance', getOptionDecoder(getLpRebalanceArgsDecoder())],\n    ['minLpSharesOut', getU128Decoder()],\n  ]);\n}\n\nexport function getSettleMigratedFeesInstructionDataCodec(): Codec<\n  SettleMigratedFeesInstructionDataArgs,\n  SettleMigratedFeesInstructionData\n> {\n  return combineCodec(\n    getSettleMigratedFeesInstructionDataEncoder(),\n    getSettleMigratedFeesInstructionDataDecoder(),\n  );\n}\n\nexport type SettleMigratedFeesAsyncInput<\n  TAccountSettlementAuthority extends string = string,\n  TAccountInitializerProgram extends string = string,\n  TAccountInitializerConfig extends string = string,\n  TAccountLaunch extends string = string,\n  TAccountLaunchFeeState extends string = string,\n  TAccountLaunchAuthority extends string = string,\n  TAccountBaseMint extends string = string,\n  TAccountQuoteMint extends string = string,\n  TAccountLaunchBaseVault extends string = string,\n  TAccountLaunchQuoteVault extends string = string,\n  TAccountRehypeState extends string = string,\n  TAccountRehypeAuthority extends string = string,\n  TAccountRouterBaseAta extends string = string,\n  TAccountRouterQuoteAta extends string = string,\n  TAccountBuybackDestination extends string = string,\n  TAccountBuybackBaseAta extends string = string,\n  TAccountBuybackQuoteAta extends string = string,\n  TAccountCpmmProgram extends string = string,\n  TAccountCpmmConfig extends string = string,\n  TAccountPool extends string = string,\n  TAccountPoolAuthority extends string = string,\n  TAccountPoolVault0 extends string = string,\n  TAccountPoolVault1 extends string = string,\n  TAccountProtocolFeePosition extends string = string,\n  TAccountRouterLpPosition extends string = string,\n  TAccountBaseTokenProgram extends string = string,\n  TAccountQuoteTokenProgram extends string = string,\n  TAccountAssociatedTokenProgram extends string = string,\n  TAccountSystemProgram extends string = string,\n  TAccountOracle extends string = string,\n> = {\n  settlementAuthority: TransactionSigner<TAccountSettlementAuthority>;\n  initializerProgram?: Address<TAccountInitializerProgram>;\n  initializerConfig: Address<TAccountInitializerConfig>;\n  launch: Address<TAccountLaunch>;\n  launchFeeState: Address<TAccountLaunchFeeState>;\n  launchAuthority: Address<TAccountLaunchAuthority>;\n  baseMint: Address<TAccountBaseMint>;\n  quoteMint: Address<TAccountQuoteMint>;\n  launchBaseVault: Address<TAccountLaunchBaseVault>;\n  launchQuoteVault: Address<TAccountLaunchQuoteVault>;\n  rehypeState?: Address<TAccountRehypeState>;\n  rehypeAuthority?: Address<TAccountRehypeAuthority>;\n  routerBaseAta?: Address<TAccountRouterBaseAta>;\n  routerQuoteAta?: Address<TAccountRouterQuoteAta>;\n  buybackDestination: Address<TAccountBuybackDestination>;\n  buybackBaseAta: Address<TAccountBuybackBaseAta>;\n  buybackQuoteAta: Address<TAccountBuybackQuoteAta>;\n  cpmmProgram?: Address<TAccountCpmmProgram>;\n  cpmmConfig: Address<TAccountCpmmConfig>;\n  pool: Address<TAccountPool>;\n  poolAuthority: Address<TAccountPoolAuthority>;\n  poolVault0: Address<TAccountPoolVault0>;\n  poolVault1: Address<TAccountPoolVault1>;\n  protocolFeePosition: Address<TAccountProtocolFeePosition>;\n  routerLpPosition: Address<TAccountRouterLpPosition>;\n  baseTokenProgram: Address<TAccountBaseTokenProgram>;\n  quoteTokenProgram: Address<TAccountQuoteTokenProgram>;\n  associatedTokenProgram?: Address<TAccountAssociatedTokenProgram>;\n  systemProgram?: Address<TAccountSystemProgram>;\n  oracle?: Address<TAccountOracle>;\n  minBaseToQuoteOut: SettleMigratedFeesInstructionDataArgs['minBaseToQuoteOut'];\n  minQuoteToBaseOut: SettleMigratedFeesInstructionDataArgs['minQuoteToBaseOut'];\n  lpRebalance: SettleMigratedFeesInstructionDataArgs['lpRebalance'];\n  minLpSharesOut: SettleMigratedFeesInstructionDataArgs['minLpSharesOut'];\n};\n\nexport async function getSettleMigratedFeesInstructionAsync<\n  TAccountSettlementAuthority extends string,\n  TAccountInitializerProgram extends string,\n  TAccountInitializerConfig extends string,\n  TAccountLaunch extends string,\n  TAccountLaunchFeeState extends string,\n  TAccountLaunchAuthority extends string,\n  TAccountBaseMint extends string,\n  TAccountQuoteMint extends string,\n  TAccountLaunchBaseVault extends string,\n  TAccountLaunchQuoteVault extends string,\n  TAccountRehypeState extends string,\n  TAccountRehypeAuthority extends string,\n  TAccountRouterBaseAta extends string,\n  TAccountRouterQuoteAta extends string,\n  TAccountBuybackDestination extends string,\n  TAccountBuybackBaseAta extends string,\n  TAccountBuybackQuoteAta extends string,\n  TAccountCpmmProgram extends string,\n  TAccountCpmmConfig extends string,\n  TAccountPool extends string,\n  TAccountPoolAuthority extends string,\n  TAccountPoolVault0 extends string,\n  TAccountPoolVault1 extends string,\n  TAccountProtocolFeePosition extends string,\n  TAccountRouterLpPosition extends string,\n  TAccountBaseTokenProgram extends string,\n  TAccountQuoteTokenProgram extends string,\n  TAccountAssociatedTokenProgram extends string,\n  TAccountSystemProgram extends string,\n  TAccountOracle extends string,\n  TProgramAddress extends Address =\n    typeof DOPPLER_REHYPE_ROUTER_V1_PROGRAM_ADDRESS,\n>(\n  input: SettleMigratedFeesAsyncInput<\n    TAccountSettlementAuthority,\n    TAccountInitializerProgram,\n    TAccountInitializerConfig,\n    TAccountLaunch,\n    TAccountLaunchFeeState,\n    TAccountLaunchAuthority,\n    TAccountBaseMint,\n    TAccountQuoteMint,\n    TAccountLaunchBaseVault,\n    TAccountLaunchQuoteVault,\n    TAccountRehypeState,\n    TAccountRehypeAuthority,\n    TAccountRouterBaseAta,\n    TAccountRouterQuoteAta,\n    TAccountBuybackDestination,\n    TAccountBuybackBaseAta,\n    TAccountBuybackQuoteAta,\n    TAccountCpmmProgram,\n    TAccountCpmmConfig,\n    TAccountPool,\n    TAccountPoolAuthority,\n    TAccountPoolVault0,\n    TAccountPoolVault1,\n    TAccountProtocolFeePosition,\n    TAccountRouterLpPosition,\n    TAccountBaseTokenProgram,\n    TAccountQuoteTokenProgram,\n    TAccountAssociatedTokenProgram,\n    TAccountSystemProgram,\n    TAccountOracle\n  >,\n  config?: { programAddress?: TProgramAddress },\n): Promise<\n  SettleMigratedFeesInstruction<\n    TProgramAddress,\n    TAccountSettlementAuthority,\n    TAccountInitializerProgram,\n    TAccountInitializerConfig,\n    TAccountLaunch,\n    TAccountLaunchFeeState,\n    TAccountLaunchAuthority,\n    TAccountBaseMint,\n    TAccountQuoteMint,\n    TAccountLaunchBaseVault,\n    TAccountLaunchQuoteVault,\n    TAccountRehypeState,\n    TAccountRehypeAuthority,\n    TAccountRouterBaseAta,\n    TAccountRouterQuoteAta,\n    TAccountBuybackDestination,\n    TAccountBuybackBaseAta,\n    TAccountBuybackQuoteAta,\n    TAccountCpmmProgram,\n    TAccountCpmmConfig,\n    TAccountPool,\n    TAccountPoolAuthority,\n    TAccountPoolVault0,\n    TAccountPoolVault1,\n    TAccountProtocolFeePosition,\n    TAccountRouterLpPosition,\n    TAccountBaseTokenProgram,\n    TAccountQuoteTokenProgram,\n    TAccountAssociatedTokenProgram,\n    TAccountSystemProgram,\n    TAccountOracle\n  >\n> {\n  // Program address.\n  const programAddress =\n    config?.programAddress ?? DOPPLER_REHYPE_ROUTER_V1_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    settlementAuthority: {\n      value: input.settlementAuthority ?? null,\n      isWritable: true,\n    },\n    initializerProgram: {\n      value: input.initializerProgram ?? null,\n      isWritable: false,\n    },\n    initializerConfig: {\n      value: input.initializerConfig ?? null,\n      isWritable: false,\n    },\n    launch: { value: input.launch ?? null, isWritable: true },\n    launchFeeState: { value: input.launchFeeState ?? null, isWritable: true },\n    launchAuthority: {\n      value: input.launchAuthority ?? null,\n      isWritable: false,\n    },\n    baseMint: { value: input.baseMint ?? null, isWritable: false },\n    quoteMint: { value: input.quoteMint ?? null, isWritable: false },\n    launchBaseVault: { value: input.launchBaseVault ?? null, isWritable: true },\n    launchQuoteVault: {\n      value: input.launchQuoteVault ?? null,\n      isWritable: true,\n    },\n    rehypeState: { value: input.rehypeState ?? null, isWritable: true },\n    rehypeAuthority: {\n      value: input.rehypeAuthority ?? null,\n      isWritable: false,\n    },\n    routerBaseAta: { value: input.routerBaseAta ?? null, isWritable: true },\n    routerQuoteAta: { value: input.routerQuoteAta ?? null, isWritable: true },\n    buybackDestination: {\n      value: input.buybackDestination ?? null,\n      isWritable: false,\n    },\n    buybackBaseAta: { value: input.buybackBaseAta ?? null, isWritable: true },\n    buybackQuoteAta: { value: input.buybackQuoteAta ?? null, isWritable: true },\n    cpmmProgram: { value: input.cpmmProgram ?? null, isWritable: false },\n    cpmmConfig: { value: input.cpmmConfig ?? null, isWritable: false },\n    pool: { value: input.pool ?? null, isWritable: true },\n    poolAuthority: { value: input.poolAuthority ?? null, isWritable: false },\n    poolVault0: { value: input.poolVault0 ?? null, isWritable: true },\n    poolVault1: { value: input.poolVault1 ?? null, isWritable: true },\n    protocolFeePosition: {\n      value: input.protocolFeePosition ?? null,\n      isWritable: true,\n    },\n    routerLpPosition: {\n      value: input.routerLpPosition ?? null,\n      isWritable: true,\n    },\n    baseTokenProgram: {\n      value: input.baseTokenProgram ?? null,\n      isWritable: false,\n    },\n    quoteTokenProgram: {\n      value: input.quoteTokenProgram ?? null,\n      isWritable: false,\n    },\n    associatedTokenProgram: {\n      value: input.associatedTokenProgram ?? null,\n      isWritable: false,\n    },\n    systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n    oracle: { value: input.oracle ?? null, isWritable: true },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedInstructionAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolve default values.\n  if (!accounts.initializerProgram.value) {\n    accounts.initializerProgram.value =\n      '4h3Dqyo5qmteJoMxXt3tdtfXELDB6pdRTPU9mWruiKp1' as Address<'4h3Dqyo5qmteJoMxXt3tdtfXELDB6pdRTPU9mWruiKp1'>;\n  }\n  if (!accounts.rehypeState.value) {\n    accounts.rehypeState.value = await getProgramDerivedAddress({\n      programAddress,\n      seeds: [\n        getBytesEncoder().encode(\n          new Uint8Array([\n            114, 101, 104, 121, 112, 101, 95, 115, 116, 97, 116, 101,\n          ]),\n        ),\n        getAddressEncoder().encode(\n          getAddressFromResolvedInstructionAccount(\n            'baseMint',\n            accounts.baseMint.value,\n          ),\n        ),\n      ],\n    });\n  }\n  if (!accounts.rehypeAuthority.value) {\n    accounts.rehypeAuthority.value = await getProgramDerivedAddress({\n      programAddress,\n      seeds: [\n        getBytesEncoder().encode(\n          new Uint8Array([\n            114, 101, 104, 121, 112, 101, 95, 97, 117, 116, 104, 111, 114, 105,\n            116, 121,\n          ]),\n        ),\n        getAddressEncoder().encode(\n          getAddressFromResolvedInstructionAccount(\n            'rehypeState',\n            accounts.rehypeState.value,\n          ),\n        ),\n      ],\n    });\n  }\n  if (!accounts.routerBaseAta.value) {\n    accounts.routerBaseAta.value = await getProgramDerivedAddress({\n      programAddress:\n        'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL' as Address<'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL'>,\n      seeds: [\n        getAddressEncoder().encode(\n          getAddressFromResolvedInstructionAccount(\n            'rehypeAuthority',\n            accounts.rehypeAuthority.value,\n          ),\n        ),\n        getAddressEncoder().encode(\n          getAddressFromResolvedInstructionAccount(\n            'baseTokenProgram',\n            accounts.baseTokenProgram.value,\n          ),\n        ),\n        getAddressEncoder().encode(\n          getAddressFromResolvedInstructionAccount(\n            'baseMint',\n            accounts.baseMint.value,\n          ),\n        ),\n      ],\n    });\n  }\n  if (!accounts.routerQuoteAta.value) {\n    accounts.routerQuoteAta.value = await getProgramDerivedAddress({\n      programAddress:\n        'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL' as Address<'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL'>,\n      seeds: [\n        getAddressEncoder().encode(\n          getAddressFromResolvedInstructionAccount(\n            'rehypeAuthority',\n            accounts.rehypeAuthority.value,\n          ),\n        ),\n        getAddressEncoder().encode(\n          getAddressFromResolvedInstructionAccount(\n            'quoteTokenProgram',\n            accounts.quoteTokenProgram.value,\n          ),\n        ),\n        getAddressEncoder().encode(\n          getAddressFromResolvedInstructionAccount(\n            'quoteMint',\n            accounts.quoteMint.value,\n          ),\n        ),\n      ],\n    });\n  }\n  if (!accounts.cpmmProgram.value) {\n    accounts.cpmmProgram.value =\n      '9PSxVPoPfnbZ8Q1uQhgS6ZxvBjFboZtebNsu34umxkgQ' as Address<'9PSxVPoPfnbZ8Q1uQhgS6ZxvBjFboZtebNsu34umxkgQ'>;\n  }\n  if (!accounts.associatedTokenProgram.value) {\n    accounts.associatedTokenProgram.value =\n      'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL' as Address<'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL'>;\n  }\n  if (!accounts.systemProgram.value) {\n    accounts.systemProgram.value =\n      '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n  }\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta('settlementAuthority', accounts.settlementAuthority),\n      getAccountMeta('initializerProgram', accounts.initializerProgram),\n      getAccountMeta('initializerConfig', accounts.initializerConfig),\n      getAccountMeta('launch', accounts.launch),\n      getAccountMeta('launchFeeState', accounts.launchFeeState),\n      getAccountMeta('launchAuthority', accounts.launchAuthority),\n      getAccountMeta('baseMint', accounts.baseMint),\n      getAccountMeta('quoteMint', accounts.quoteMint),\n      getAccountMeta('launchBaseVault', accounts.launchBaseVault),\n      getAccountMeta('launchQuoteVault', accounts.launchQuoteVault),\n      getAccountMeta('rehypeState', accounts.rehypeState),\n      getAccountMeta('rehypeAuthority', accounts.rehypeAuthority),\n      getAccountMeta('routerBaseAta', accounts.routerBaseAta),\n      getAccountMeta('routerQuoteAta', accounts.routerQuoteAta),\n      getAccountMeta('buybackDestination', accounts.buybackDestination),\n      getAccountMeta('buybackBaseAta', accounts.buybackBaseAta),\n      getAccountMeta('buybackQuoteAta', accounts.buybackQuoteAta),\n      getAccountMeta('cpmmProgram', accounts.cpmmProgram),\n      getAccountMeta('cpmmConfig', accounts.cpmmConfig),\n      getAccountMeta('pool', accounts.pool),\n      getAccountMeta('poolAuthority', accounts.poolAuthority),\n      getAccountMeta('poolVault0', accounts.poolVault0),\n      getAccountMeta('poolVault1', accounts.poolVault1),\n      getAccountMeta('protocolFeePosition', accounts.protocolFeePosition),\n      getAccountMeta('routerLpPosition', accounts.routerLpPosition),\n      getAccountMeta('baseTokenProgram', accounts.baseTokenProgram),\n      getAccountMeta('quoteTokenProgram', accounts.quoteTokenProgram),\n      getAccountMeta('associatedTokenProgram', accounts.associatedTokenProgram),\n      getAccountMeta('systemProgram', accounts.systemProgram),\n      getAccountMeta('oracle', accounts.oracle),\n    ],\n    data: getSettleMigratedFeesInstructionDataEncoder().encode(\n      args as SettleMigratedFeesInstructionDataArgs,\n    ),\n    programAddress,\n  } as SettleMigratedFeesInstruction<\n    TProgramAddress,\n    TAccountSettlementAuthority,\n    TAccountInitializerProgram,\n    TAccountInitializerConfig,\n    TAccountLaunch,\n    TAccountLaunchFeeState,\n    TAccountLaunchAuthority,\n    TAccountBaseMint,\n    TAccountQuoteMint,\n    TAccountLaunchBaseVault,\n    TAccountLaunchQuoteVault,\n    TAccountRehypeState,\n    TAccountRehypeAuthority,\n    TAccountRouterBaseAta,\n    TAccountRouterQuoteAta,\n    TAccountBuybackDestination,\n    TAccountBuybackBaseAta,\n    TAccountBuybackQuoteAta,\n    TAccountCpmmProgram,\n    TAccountCpmmConfig,\n    TAccountPool,\n    TAccountPoolAuthority,\n    TAccountPoolVault0,\n    TAccountPoolVault1,\n    TAccountProtocolFeePosition,\n    TAccountRouterLpPosition,\n    TAccountBaseTokenProgram,\n    TAccountQuoteTokenProgram,\n    TAccountAssociatedTokenProgram,\n    TAccountSystemProgram,\n    TAccountOracle\n  >);\n}\n\nexport type SettleMigratedFeesInput<\n  TAccountSettlementAuthority extends string = string,\n  TAccountInitializerProgram extends string = string,\n  TAccountInitializerConfig extends string = string,\n  TAccountLaunch extends string = string,\n  TAccountLaunchFeeState extends string = string,\n  TAccountLaunchAuthority extends string = string,\n  TAccountBaseMint extends string = string,\n  TAccountQuoteMint extends string = string,\n  TAccountLaunchBaseVault extends string = string,\n  TAccountLaunchQuoteVault extends string = string,\n  TAccountRehypeState extends string = string,\n  TAccountRehypeAuthority extends string = string,\n  TAccountRouterBaseAta extends string = string,\n  TAccountRouterQuoteAta extends string = string,\n  TAccountBuybackDestination extends string = string,\n  TAccountBuybackBaseAta extends string = string,\n  TAccountBuybackQuoteAta extends string = string,\n  TAccountCpmmProgram extends string = string,\n  TAccountCpmmConfig extends string = string,\n  TAccountPool extends string = string,\n  TAccountPoolAuthority extends string = string,\n  TAccountPoolVault0 extends string = string,\n  TAccountPoolVault1 extends string = string,\n  TAccountProtocolFeePosition extends string = string,\n  TAccountRouterLpPosition extends string = string,\n  TAccountBaseTokenProgram extends string = string,\n  TAccountQuoteTokenProgram extends string = string,\n  TAccountAssociatedTokenProgram extends string = string,\n  TAccountSystemProgram extends string = string,\n  TAccountOracle extends string = string,\n> = {\n  settlementAuthority: TransactionSigner<TAccountSettlementAuthority>;\n  initializerProgram?: Address<TAccountInitializerProgram>;\n  initializerConfig: Address<TAccountInitializerConfig>;\n  launch: Address<TAccountLaunch>;\n  launchFeeState: Address<TAccountLaunchFeeState>;\n  launchAuthority: Address<TAccountLaunchAuthority>;\n  baseMint: Address<TAccountBaseMint>;\n  quoteMint: Address<TAccountQuoteMint>;\n  launchBaseVault: Address<TAccountLaunchBaseVault>;\n  launchQuoteVault: Address<TAccountLaunchQuoteVault>;\n  rehypeState: Address<TAccountRehypeState>;\n  rehypeAuthority: Address<TAccountRehypeAuthority>;\n  routerBaseAta: Address<TAccountRouterBaseAta>;\n  routerQuoteAta: Address<TAccountRouterQuoteAta>;\n  buybackDestination: Address<TAccountBuybackDestination>;\n  buybackBaseAta: Address<TAccountBuybackBaseAta>;\n  buybackQuoteAta: Address<TAccountBuybackQuoteAta>;\n  cpmmProgram?: Address<TAccountCpmmProgram>;\n  cpmmConfig: Address<TAccountCpmmConfig>;\n  pool: Address<TAccountPool>;\n  poolAuthority: Address<TAccountPoolAuthority>;\n  poolVault0: Address<TAccountPoolVault0>;\n  poolVault1: Address<TAccountPoolVault1>;\n  protocolFeePosition: Address<TAccountProtocolFeePosition>;\n  routerLpPosition: Address<TAccountRouterLpPosition>;\n  baseTokenProgram: Address<TAccountBaseTokenProgram>;\n  quoteTokenProgram: Address<TAccountQuoteTokenProgram>;\n  associatedTokenProgram?: Address<TAccountAssociatedTokenProgram>;\n  systemProgram?: Address<TAccountSystemProgram>;\n  oracle?: Address<TAccountOracle>;\n  minBaseToQuoteOut: SettleMigratedFeesInstructionDataArgs['minBaseToQuoteOut'];\n  minQuoteToBaseOut: SettleMigratedFeesInstructionDataArgs['minQuoteToBaseOut'];\n  lpRebalance: SettleMigratedFeesInstructionDataArgs['lpRebalance'];\n  minLpSharesOut: SettleMigratedFeesInstructionDataArgs['minLpSharesOut'];\n};\n\nexport function getSettleMigratedFeesInstruction<\n  TAccountSettlementAuthority extends string,\n  TAccountInitializerProgram extends string,\n  TAccountInitializerConfig extends string,\n  TAccountLaunch extends string,\n  TAccountLaunchFeeState extends string,\n  TAccountLaunchAuthority extends string,\n  TAccountBaseMint extends string,\n  TAccountQuoteMint extends string,\n  TAccountLaunchBaseVault extends string,\n  TAccountLaunchQuoteVault extends string,\n  TAccountRehypeState extends string,\n  TAccountRehypeAuthority extends string,\n  TAccountRouterBaseAta extends string,\n  TAccountRouterQuoteAta extends string,\n  TAccountBuybackDestination extends string,\n  TAccountBuybackBaseAta extends string,\n  TAccountBuybackQuoteAta extends string,\n  TAccountCpmmProgram extends string,\n  TAccountCpmmConfig extends string,\n  TAccountPool extends string,\n  TAccountPoolAuthority extends string,\n  TAccountPoolVault0 extends string,\n  TAccountPoolVault1 extends string,\n  TAccountProtocolFeePosition extends string,\n  TAccountRouterLpPosition extends string,\n  TAccountBaseTokenProgram extends string,\n  TAccountQuoteTokenProgram extends string,\n  TAccountAssociatedTokenProgram extends string,\n  TAccountSystemProgram extends string,\n  TAccountOracle extends string,\n  TProgramAddress extends Address =\n    typeof DOPPLER_REHYPE_ROUTER_V1_PROGRAM_ADDRESS,\n>(\n  input: SettleMigratedFeesInput<\n    TAccountSettlementAuthority,\n    TAccountInitializerProgram,\n    TAccountInitializerConfig,\n    TAccountLaunch,\n    TAccountLaunchFeeState,\n    TAccountLaunchAuthority,\n    TAccountBaseMint,\n    TAccountQuoteMint,\n    TAccountLaunchBaseVault,\n    TAccountLaunchQuoteVault,\n    TAccountRehypeState,\n    TAccountRehypeAuthority,\n    TAccountRouterBaseAta,\n    TAccountRouterQuoteAta,\n    TAccountBuybackDestination,\n    TAccountBuybackBaseAta,\n    TAccountBuybackQuoteAta,\n    TAccountCpmmProgram,\n    TAccountCpmmConfig,\n    TAccountPool,\n    TAccountPoolAuthority,\n    TAccountPoolVault0,\n    TAccountPoolVault1,\n    TAccountProtocolFeePosition,\n    TAccountRouterLpPosition,\n    TAccountBaseTokenProgram,\n    TAccountQuoteTokenProgram,\n    TAccountAssociatedTokenProgram,\n    TAccountSystemProgram,\n    TAccountOracle\n  >,\n  config?: { programAddress?: TProgramAddress },\n): SettleMigratedFeesInstruction<\n  TProgramAddress,\n  TAccountSettlementAuthority,\n  TAccountInitializerProgram,\n  TAccountInitializerConfig,\n  TAccountLaunch,\n  TAccountLaunchFeeState,\n  TAccountLaunchAuthority,\n  TAccountBaseMint,\n  TAccountQuoteMint,\n  TAccountLaunchBaseVault,\n  TAccountLaunchQuoteVault,\n  TAccountRehypeState,\n  TAccountRehypeAuthority,\n  TAccountRouterBaseAta,\n  TAccountRouterQuoteAta,\n  TAccountBuybackDestination,\n  TAccountBuybackBaseAta,\n  TAccountBuybackQuoteAta,\n  TAccountCpmmProgram,\n  TAccountCpmmConfig,\n  TAccountPool,\n  TAccountPoolAuthority,\n  TAccountPoolVault0,\n  TAccountPoolVault1,\n  TAccountProtocolFeePosition,\n  TAccountRouterLpPosition,\n  TAccountBaseTokenProgram,\n  TAccountQuoteTokenProgram,\n  TAccountAssociatedTokenProgram,\n  TAccountSystemProgram,\n  TAccountOracle\n> {\n  // Program address.\n  const programAddress =\n    config?.programAddress ?? DOPPLER_REHYPE_ROUTER_V1_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    settlementAuthority: {\n      value: input.settlementAuthority ?? null,\n      isWritable: true,\n    },\n    initializerProgram: {\n      value: input.initializerProgram ?? null,\n      isWritable: false,\n    },\n    initializerConfig: {\n      value: input.initializerConfig ?? null,\n      isWritable: false,\n    },\n    launch: { value: input.launch ?? null, isWritable: true },\n    launchFeeState: { value: input.launchFeeState ?? null, isWritable: true },\n    launchAuthority: {\n      value: input.launchAuthority ?? null,\n      isWritable: false,\n    },\n    baseMint: { value: input.baseMint ?? null, isWritable: false },\n    quoteMint: { value: input.quoteMint ?? null, isWritable: false },\n    launchBaseVault: { value: input.launchBaseVault ?? null, isWritable: true },\n    launchQuoteVault: {\n      value: input.launchQuoteVault ?? null,\n      isWritable: true,\n    },\n    rehypeState: { value: input.rehypeState ?? null, isWritable: true },\n    rehypeAuthority: {\n      value: input.rehypeAuthority ?? null,\n      isWritable: false,\n    },\n    routerBaseAta: { value: input.routerBaseAta ?? null, isWritable: true },\n    routerQuoteAta: { value: input.routerQuoteAta ?? null, isWritable: true },\n    buybackDestination: {\n      value: input.buybackDestination ?? null,\n      isWritable: false,\n    },\n    buybackBaseAta: { value: input.buybackBaseAta ?? null, isWritable: true },\n    buybackQuoteAta: { value: input.buybackQuoteAta ?? null, isWritable: true },\n    cpmmProgram: { value: input.cpmmProgram ?? null, isWritable: false },\n    cpmmConfig: { value: input.cpmmConfig ?? null, isWritable: false },\n    pool: { value: input.pool ?? null, isWritable: true },\n    poolAuthority: { value: input.poolAuthority ?? null, isWritable: false },\n    poolVault0: { value: input.poolVault0 ?? null, isWritable: true },\n    poolVault1: { value: input.poolVault1 ?? null, isWritable: true },\n    protocolFeePosition: {\n      value: input.protocolFeePosition ?? null,\n      isWritable: true,\n    },\n    routerLpPosition: {\n      value: input.routerLpPosition ?? null,\n      isWritable: true,\n    },\n    baseTokenProgram: {\n      value: input.baseTokenProgram ?? null,\n      isWritable: false,\n    },\n    quoteTokenProgram: {\n      value: input.quoteTokenProgram ?? null,\n      isWritable: false,\n    },\n    associatedTokenProgram: {\n      value: input.associatedTokenProgram ?? null,\n      isWritable: false,\n    },\n    systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n    oracle: { value: input.oracle ?? null, isWritable: true },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedInstructionAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolve default values.\n  if (!accounts.initializerProgram.value) {\n    accounts.initializerProgram.value =\n      '4h3Dqyo5qmteJoMxXt3tdtfXELDB6pdRTPU9mWruiKp1' as Address<'4h3Dqyo5qmteJoMxXt3tdtfXELDB6pdRTPU9mWruiKp1'>;\n  }\n  if (!accounts.cpmmProgram.value) {\n    accounts.cpmmProgram.value =\n      '9PSxVPoPfnbZ8Q1uQhgS6ZxvBjFboZtebNsu34umxkgQ' as Address<'9PSxVPoPfnbZ8Q1uQhgS6ZxvBjFboZtebNsu34umxkgQ'>;\n  }\n  if (!accounts.associatedTokenProgram.value) {\n    accounts.associatedTokenProgram.value =\n      'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL' as Address<'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL'>;\n  }\n  if (!accounts.systemProgram.value) {\n    accounts.systemProgram.value =\n      '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n  }\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta('settlementAuthority', accounts.settlementAuthority),\n      getAccountMeta('initializerProgram', accounts.initializerProgram),\n      getAccountMeta('initializerConfig', accounts.initializerConfig),\n      getAccountMeta('launch', accounts.launch),\n      getAccountMeta('launchFeeState', accounts.launchFeeState),\n      getAccountMeta('launchAuthority', accounts.launchAuthority),\n      getAccountMeta('baseMint', accounts.baseMint),\n      getAccountMeta('quoteMint', accounts.quoteMint),\n      getAccountMeta('launchBaseVault', accounts.launchBaseVault),\n      getAccountMeta('launchQuoteVault', accounts.launchQuoteVault),\n      getAccountMeta('rehypeState', accounts.rehypeState),\n      getAccountMeta('rehypeAuthority', accounts.rehypeAuthority),\n      getAccountMeta('routerBaseAta', accounts.routerBaseAta),\n      getAccountMeta('routerQuoteAta', accounts.routerQuoteAta),\n      getAccountMeta('buybackDestination', accounts.buybackDestination),\n      getAccountMeta('buybackBaseAta', accounts.buybackBaseAta),\n      getAccountMeta('buybackQuoteAta', accounts.buybackQuoteAta),\n      getAccountMeta('cpmmProgram', accounts.cpmmProgram),\n      getAccountMeta('cpmmConfig', accounts.cpmmConfig),\n      getAccountMeta('pool', accounts.pool),\n      getAccountMeta('poolAuthority', accounts.poolAuthority),\n      getAccountMeta('poolVault0', accounts.poolVault0),\n      getAccountMeta('poolVault1', accounts.poolVault1),\n      getAccountMeta('protocolFeePosition', accounts.protocolFeePosition),\n      getAccountMeta('routerLpPosition', accounts.routerLpPosition),\n      getAccountMeta('baseTokenProgram', accounts.baseTokenProgram),\n      getAccountMeta('quoteTokenProgram', accounts.quoteTokenProgram),\n      getAccountMeta('associatedTokenProgram', accounts.associatedTokenProgram),\n      getAccountMeta('systemProgram', accounts.systemProgram),\n      getAccountMeta('oracle', accounts.oracle),\n    ],\n    data: getSettleMigratedFeesInstructionDataEncoder().encode(\n      args as SettleMigratedFeesInstructionDataArgs,\n    ),\n    programAddress,\n  } as SettleMigratedFeesInstruction<\n    TProgramAddress,\n    TAccountSettlementAuthority,\n    TAccountInitializerProgram,\n    TAccountInitializerConfig,\n    TAccountLaunch,\n    TAccountLaunchFeeState,\n    TAccountLaunchAuthority,\n    TAccountBaseMint,\n    TAccountQuoteMint,\n    TAccountLaunchBaseVault,\n    TAccountLaunchQuoteVault,\n    TAccountRehypeState,\n    TAccountRehypeAuthority,\n    TAccountRouterBaseAta,\n    TAccountRouterQuoteAta,\n    TAccountBuybackDestination,\n    TAccountBuybackBaseAta,\n    TAccountBuybackQuoteAta,\n    TAccountCpmmProgram,\n    TAccountCpmmConfig,\n    TAccountPool,\n    TAccountPoolAuthority,\n    TAccountPoolVault0,\n    TAccountPoolVault1,\n    TAccountProtocolFeePosition,\n    TAccountRouterLpPosition,\n    TAccountBaseTokenProgram,\n    TAccountQuoteTokenProgram,\n    TAccountAssociatedTokenProgram,\n    TAccountSystemProgram,\n    TAccountOracle\n  >);\n}\n\nexport type ParsedSettleMigratedFeesInstruction<\n  TProgram extends string = typeof DOPPLER_REHYPE_ROUTER_V1_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    settlementAuthority: TAccountMetas[0];\n    initializerProgram: TAccountMetas[1];\n    initializerConfig: TAccountMetas[2];\n    launch: TAccountMetas[3];\n    launchFeeState: TAccountMetas[4];\n    launchAuthority: TAccountMetas[5];\n    baseMint: TAccountMetas[6];\n    quoteMint: TAccountMetas[7];\n    launchBaseVault: TAccountMetas[8];\n    launchQuoteVault: TAccountMetas[9];\n    rehypeState: TAccountMetas[10];\n    rehypeAuthority: TAccountMetas[11];\n    routerBaseAta: TAccountMetas[12];\n    routerQuoteAta: TAccountMetas[13];\n    buybackDestination: TAccountMetas[14];\n    buybackBaseAta: TAccountMetas[15];\n    buybackQuoteAta: TAccountMetas[16];\n    cpmmProgram: TAccountMetas[17];\n    cpmmConfig: TAccountMetas[18];\n    pool: TAccountMetas[19];\n    poolAuthority: TAccountMetas[20];\n    poolVault0: TAccountMetas[21];\n    poolVault1: TAccountMetas[22];\n    protocolFeePosition: TAccountMetas[23];\n    routerLpPosition: TAccountMetas[24];\n    baseTokenProgram: TAccountMetas[25];\n    quoteTokenProgram: TAccountMetas[26];\n    associatedTokenProgram: TAccountMetas[27];\n    systemProgram: TAccountMetas[28];\n    oracle?: TAccountMetas[29] | undefined;\n  };\n  data: SettleMigratedFeesInstructionData;\n};\n\nexport function parseSettleMigratedFeesInstruction<\n  TProgram extends string,\n  TAccountMetas extends readonly AccountMeta[],\n>(\n  instruction: Instruction<TProgram> &\n    InstructionWithAccounts<TAccountMetas> &\n    InstructionWithData<ReadonlyUint8Array>,\n): ParsedSettleMigratedFeesInstruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 30) {\n    throw new SolanaError(\n      SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS,\n      {\n        actualAccountMetas: instruction.accounts.length,\n        expectedAccountMetas: 30,\n      },\n    );\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  const getNextOptionalAccount = () => {\n    const accountMeta = getNextAccount();\n    return accountMeta.address === DOPPLER_REHYPE_ROUTER_V1_PROGRAM_ADDRESS\n      ? undefined\n      : accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: {\n      settlementAuthority: getNextAccount(),\n      initializerProgram: getNextAccount(),\n      initializerConfig: getNextAccount(),\n      launch: getNextAccount(),\n      launchFeeState: getNextAccount(),\n      launchAuthority: getNextAccount(),\n      baseMint: getNextAccount(),\n      quoteMint: getNextAccount(),\n      launchBaseVault: getNextAccount(),\n      launchQuoteVault: getNextAccount(),\n      rehypeState: getNextAccount(),\n      rehypeAuthority: getNextAccount(),\n      routerBaseAta: getNextAccount(),\n      routerQuoteAta: getNextAccount(),\n      buybackDestination: getNextAccount(),\n      buybackBaseAta: getNextAccount(),\n      buybackQuoteAta: getNextAccount(),\n      cpmmProgram: getNextAccount(),\n      cpmmConfig: getNextAccount(),\n      pool: getNextAccount(),\n      poolAuthority: getNextAccount(),\n      poolVault0: getNextAccount(),\n      poolVault1: getNextAccount(),\n      protocolFeePosition: getNextAccount(),\n      routerLpPosition: getNextAccount(),\n      baseTokenProgram: getNextAccount(),\n      quoteTokenProgram: getNextAccount(),\n      associatedTokenProgram: getNextAccount(),\n      systemProgram: getNextAccount(),\n      oracle: getNextOptionalAccount(),\n    },\n    data: getSettleMigratedFeesInstructionDataDecoder().decode(\n      instruction.data,\n    ),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  assertIsInstructionWithAccounts,\n  containsBytes,\n  fixEncoderSize,\n  getBytesEncoder,\n  SOLANA_ERROR__PROGRAM_CLIENTS__FAILED_TO_IDENTIFY_ACCOUNT,\n  SOLANA_ERROR__PROGRAM_CLIENTS__FAILED_TO_IDENTIFY_INSTRUCTION,\n  SOLANA_ERROR__PROGRAM_CLIENTS__UNRECOGNIZED_INSTRUCTION_TYPE,\n  SolanaError,\n  type Address,\n  type ClientWithPayer,\n  type ClientWithRpc,\n  type ClientWithTransactionPlanning,\n  type ClientWithTransactionSending,\n  type GetAccountInfoApi,\n  type GetMultipleAccountsApi,\n  type Instruction,\n  type InstructionWithData,\n  type ReadonlyUint8Array,\n} from '@solana/kit';\nimport {\n  addSelfFetchFunctions,\n  addSelfPlanAndSendFunctions,\n  type SelfFetchFunctions,\n  type SelfPlanAndSendFunctions,\n} from '@solana/program-client-core';\nimport {\n  getAmmConfigCodec,\n  getInitConfigCodec,\n  getLaunchCodec,\n  getLaunchFeeStateCodec,\n  getPoolCodec,\n  getPositionCodec,\n  getRehypeStateCodec,\n  type AmmConfig,\n  type AmmConfigArgs,\n  type InitConfig,\n  type InitConfigArgs,\n  type Launch,\n  type LaunchArgs,\n  type LaunchFeeState,\n  type LaunchFeeStateArgs,\n  type Pool,\n  type PoolArgs,\n  type Position,\n  type PositionArgs,\n  type RehypeState,\n  type RehypeStateArgs,\n} from '../accounts';\nimport {\n  getClaimFeesInstructionAsync,\n  getInitializeRehypeInstructionAsync,\n  getReplaceBeneficiaryInstructionAsync,\n  getSettleFeesInstructionAsync,\n  getSettleMigratedFeesInstructionAsync,\n  parseClaimFeesInstruction,\n  parseInitializeRehypeInstruction,\n  parseReplaceBeneficiaryInstruction,\n  parseSettleFeesInstruction,\n  parseSettleMigratedFeesInstruction,\n  type ClaimFeesAsyncInput,\n  type InitializeRehypeAsyncInput,\n  type ParsedClaimFeesInstruction,\n  type ParsedInitializeRehypeInstruction,\n  type ParsedReplaceBeneficiaryInstruction,\n  type ParsedSettleFeesInstruction,\n  type ParsedSettleMigratedFeesInstruction,\n  type ReplaceBeneficiaryAsyncInput,\n  type SettleFeesAsyncInput,\n  type SettleMigratedFeesAsyncInput,\n} from '../instructions';\n\nexport const DOPPLER_REHYPE_ROUTER_V1_PROGRAM_ADDRESS =\n  'BpHX6orJ73qCvsfKkSMARQtqJvSPfqXNUfoes5rMND1D' as Address<'BpHX6orJ73qCvsfKkSMARQtqJvSPfqXNUfoes5rMND1D'>;\n\nexport enum DopplerRehypeRouterV1Account {\n  AmmConfig,\n  InitConfig,\n  Launch,\n  LaunchFeeState,\n  Pool,\n  Position,\n  RehypeState,\n}\n\nexport function identifyDopplerRehypeRouterV1Account(\n  account: { data: ReadonlyUint8Array } | ReadonlyUint8Array,\n): DopplerRehypeRouterV1Account {\n  const data = 'data' in account ? account.data : account;\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([218, 244, 33, 104, 203, 203, 43, 111]),\n      ),\n      0,\n    )\n  ) {\n    return DopplerRehypeRouterV1Account.AmmConfig;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([97, 166, 35, 7, 20, 2, 164, 126]),\n      ),\n      0,\n    )\n  ) {\n    return DopplerRehypeRouterV1Account.InitConfig;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([144, 51, 51, 163, 206, 85, 213, 38]),\n      ),\n      0,\n    )\n  ) {\n    return DopplerRehypeRouterV1Account.Launch;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([1, 106, 55, 241, 179, 18, 230, 232]),\n      ),\n      0,\n    )\n  ) {\n    return DopplerRehypeRouterV1Account.LaunchFeeState;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([241, 154, 109, 4, 17, 177, 109, 188]),\n      ),\n      0,\n    )\n  ) {\n    return DopplerRehypeRouterV1Account.Pool;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([170, 188, 143, 228, 122, 64, 247, 208]),\n      ),\n      0,\n    )\n  ) {\n    return DopplerRehypeRouterV1Account.Position;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([189, 101, 117, 1, 189, 167, 250, 225]),\n      ),\n      0,\n    )\n  ) {\n    return DopplerRehypeRouterV1Account.RehypeState;\n  }\n  throw new SolanaError(\n    SOLANA_ERROR__PROGRAM_CLIENTS__FAILED_TO_IDENTIFY_ACCOUNT,\n    { accountData: data, programName: 'dopplerRehypeRouterV1' },\n  );\n}\n\nexport enum DopplerRehypeRouterV1Instruction {\n  ClaimFees,\n  InitializeRehype,\n  ReplaceBeneficiary,\n  SettleFees,\n  SettleMigratedFees,\n}\n\nexport function identifyDopplerRehypeRouterV1Instruction(\n  instruction: { data: ReadonlyUint8Array } | ReadonlyUint8Array,\n): DopplerRehypeRouterV1Instruction {\n  const data = 'data' in instruction ? instruction.data : instruction;\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([82, 251, 233, 156, 12, 52, 184, 202]),\n      ),\n      0,\n    )\n  ) {\n    return DopplerRehypeRouterV1Instruction.ClaimFees;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([52, 224, 165, 199, 71, 188, 192, 155]),\n      ),\n      0,\n    )\n  ) {\n    return DopplerRehypeRouterV1Instruction.InitializeRehype;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([255, 125, 195, 81, 143, 176, 242, 22]),\n      ),\n      0,\n    )\n  ) {\n    return DopplerRehypeRouterV1Instruction.ReplaceBeneficiary;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([60, 221, 130, 229, 183, 234, 6, 159]),\n      ),\n      0,\n    )\n  ) {\n    return DopplerRehypeRouterV1Instruction.SettleFees;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([73, 177, 82, 102, 67, 4, 231, 200]),\n      ),\n      0,\n    )\n  ) {\n    return DopplerRehypeRouterV1Instruction.SettleMigratedFees;\n  }\n  throw new SolanaError(\n    SOLANA_ERROR__PROGRAM_CLIENTS__FAILED_TO_IDENTIFY_INSTRUCTION,\n    { instructionData: data, programName: 'dopplerRehypeRouterV1' },\n  );\n}\n\nexport type ParsedDopplerRehypeRouterV1Instruction<\n  TProgram extends string = 'BpHX6orJ73qCvsfKkSMARQtqJvSPfqXNUfoes5rMND1D',\n> =\n  | ({\n      instructionType: DopplerRehypeRouterV1Instruction.ClaimFees;\n    } & ParsedClaimFeesInstruction<TProgram>)\n  | ({\n      instructionType: DopplerRehypeRouterV1Instruction.InitializeRehype;\n    } & ParsedInitializeRehypeInstruction<TProgram>)\n  | ({\n      instructionType: DopplerRehypeRouterV1Instruction.ReplaceBeneficiary;\n    } & ParsedReplaceBeneficiaryInstruction<TProgram>)\n  | ({\n      instructionType: DopplerRehypeRouterV1Instruction.SettleFees;\n    } & ParsedSettleFeesInstruction<TProgram>)\n  | ({\n      instructionType: DopplerRehypeRouterV1Instruction.SettleMigratedFees;\n    } & ParsedSettleMigratedFeesInstruction<TProgram>);\n\nexport function parseDopplerRehypeRouterV1Instruction<TProgram extends string>(\n  instruction: Instruction<TProgram> & InstructionWithData<ReadonlyUint8Array>,\n): ParsedDopplerRehypeRouterV1Instruction<TProgram> {\n  const instructionType = identifyDopplerRehypeRouterV1Instruction(instruction);\n  switch (instructionType) {\n    case DopplerRehypeRouterV1Instruction.ClaimFees: {\n      assertIsInstructionWithAccounts(instruction);\n      return {\n        instructionType: DopplerRehypeRouterV1Instruction.ClaimFees,\n        ...parseClaimFeesInstruction(instruction),\n      };\n    }\n    case DopplerRehypeRouterV1Instruction.InitializeRehype: {\n      assertIsInstructionWithAccounts(instruction);\n      return {\n        instructionType: DopplerRehypeRouterV1Instruction.InitializeRehype,\n        ...parseInitializeRehypeInstruction(instruction),\n      };\n    }\n    case DopplerRehypeRouterV1Instruction.ReplaceBeneficiary: {\n      assertIsInstructionWithAccounts(instruction);\n      return {\n        instructionType: DopplerRehypeRouterV1Instruction.ReplaceBeneficiary,\n        ...parseReplaceBeneficiaryInstruction(instruction),\n      };\n    }\n    case DopplerRehypeRouterV1Instruction.SettleFees: {\n      assertIsInstructionWithAccounts(instruction);\n      return {\n        instructionType: DopplerRehypeRouterV1Instruction.SettleFees,\n        ...parseSettleFeesInstruction(instruction),\n      };\n    }\n    case DopplerRehypeRouterV1Instruction.SettleMigratedFees: {\n      assertIsInstructionWithAccounts(instruction);\n      return {\n        instructionType: DopplerRehypeRouterV1Instruction.SettleMigratedFees,\n        ...parseSettleMigratedFeesInstruction(instruction),\n      };\n    }\n    default:\n      throw new SolanaError(\n        SOLANA_ERROR__PROGRAM_CLIENTS__UNRECOGNIZED_INSTRUCTION_TYPE,\n        {\n          instructionType: instructionType as string,\n          programName: 'dopplerRehypeRouterV1',\n        },\n      );\n  }\n}\n\nexport type DopplerRehypeRouterV1Plugin = {\n  accounts: DopplerRehypeRouterV1PluginAccounts;\n  instructions: DopplerRehypeRouterV1PluginInstructions;\n};\n\nexport type DopplerRehypeRouterV1PluginAccounts = {\n  ammConfig: ReturnType<typeof getAmmConfigCodec> &\n    SelfFetchFunctions<AmmConfigArgs, AmmConfig>;\n  initConfig: ReturnType<typeof getInitConfigCodec> &\n    SelfFetchFunctions<InitConfigArgs, InitConfig>;\n  launch: ReturnType<typeof getLaunchCodec> &\n    SelfFetchFunctions<LaunchArgs, Launch>;\n  launchFeeState: ReturnType<typeof getLaunchFeeStateCodec> &\n    SelfFetchFunctions<LaunchFeeStateArgs, LaunchFeeState>;\n  pool: ReturnType<typeof getPoolCodec> & SelfFetchFunctions<PoolArgs, Pool>;\n  position: ReturnType<typeof getPositionCodec> &\n    SelfFetchFunctions<PositionArgs, Position>;\n  rehypeState: ReturnType<typeof getRehypeStateCodec> &\n    SelfFetchFunctions<RehypeStateArgs, RehypeState>;\n};\n\nexport type DopplerRehypeRouterV1PluginInstructions = {\n  claimFees: (\n    input: MakeOptional<ClaimFeesAsyncInput, 'payer'>,\n  ) => ReturnType<typeof getClaimFeesInstructionAsync> &\n    SelfPlanAndSendFunctions;\n  initializeRehype: (\n    input: MakeOptional<InitializeRehypeAsyncInput, 'payer'>,\n  ) => ReturnType<typeof getInitializeRehypeInstructionAsync> &\n    SelfPlanAndSendFunctions;\n  replaceBeneficiary: (\n    input: ReplaceBeneficiaryAsyncInput,\n  ) => ReturnType<typeof getReplaceBeneficiaryInstructionAsync> &\n    SelfPlanAndSendFunctions;\n  settleFees: (\n    input: SettleFeesAsyncInput,\n  ) => ReturnType<typeof getSettleFeesInstructionAsync> &\n    SelfPlanAndSendFunctions;\n  settleMigratedFees: (\n    input: SettleMigratedFeesAsyncInput,\n  ) => ReturnType<typeof getSettleMigratedFeesInstructionAsync> &\n    SelfPlanAndSendFunctions;\n};\n\nexport type DopplerRehypeRouterV1PluginRequirements = ClientWithRpc<\n  GetAccountInfoApi & GetMultipleAccountsApi\n> &\n  ClientWithPayer &\n  ClientWithTransactionPlanning &\n  ClientWithTransactionSending;\n\nexport function dopplerRehypeRouterV1Program() {\n  return <T extends DopplerRehypeRouterV1PluginRequirements>(client: T) => {\n    return {\n      ...client,\n      dopplerRehypeRouterV1: <DopplerRehypeRouterV1Plugin>{\n        accounts: {\n          ammConfig: addSelfFetchFunctions(client, getAmmConfigCodec()),\n          initConfig: addSelfFetchFunctions(client, getInitConfigCodec()),\n          launch: addSelfFetchFunctions(client, getLaunchCodec()),\n          launchFeeState: addSelfFetchFunctions(\n            client,\n            getLaunchFeeStateCodec(),\n          ),\n          pool: addSelfFetchFunctions(client, getPoolCodec()),\n          position: addSelfFetchFunctions(client, getPositionCodec()),\n          rehypeState: addSelfFetchFunctions(client, getRehypeStateCodec()),\n        },\n        instructions: {\n          claimFees: (input) =>\n            addSelfPlanAndSendFunctions(\n              client,\n              getClaimFeesInstructionAsync({\n                ...input,\n                payer: input.payer ?? client.payer,\n              }),\n            ),\n          initializeRehype: (input) =>\n            addSelfPlanAndSendFunctions(\n              client,\n              getInitializeRehypeInstructionAsync({\n                ...input,\n                payer: input.payer ?? client.payer,\n              }),\n            ),\n          replaceBeneficiary: (input) =>\n            addSelfPlanAndSendFunctions(\n              client,\n              getReplaceBeneficiaryInstructionAsync(input),\n            ),\n          settleFees: (input) =>\n            addSelfPlanAndSendFunctions(\n              client,\n              getSettleFeesInstructionAsync(input),\n            ),\n          settleMigratedFees: (input) =>\n            addSelfPlanAndSendFunctions(\n              client,\n              getSettleMigratedFeesInstructionAsync(input),\n            ),\n        },\n      },\n    };\n  };\n}\n\ntype MakeOptional<T, K extends keyof T> = Omit<T, K> & Partial<Pick<T, K>>;\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  isProgramError,\n  type Address,\n  type SOLANA_ERROR__INSTRUCTION_ERROR__CUSTOM,\n  type SolanaError,\n} from '@solana/kit';\nimport { DOPPLER_REHYPE_ROUTER_V1_PROGRAM_ADDRESS } from '../programs';\n\n/** InvalidConfig: Invalid Rehype configuration */\nexport const DOPPLER_REHYPE_ROUTER_V1_ERROR__INVALID_CONFIG = 0x1770; // 6000\n/** InvalidBeneficiary: Invalid Rehype beneficiary */\nexport const DOPPLER_REHYPE_ROUTER_V1_ERROR__INVALID_BENEFICIARY = 0x1771; // 6001\n/** InvalidFeeRouting: Invalid fee routing matrix */\nexport const DOPPLER_REHYPE_ROUTER_V1_ERROR__INVALID_FEE_ROUTING = 0x1772; // 6002\n/** InvalidRoutingMode: Invalid routing mode */\nexport const DOPPLER_REHYPE_ROUTER_V1_ERROR__INVALID_ROUTING_MODE = 0x1773; // 6003\n/** InvalidLaunch: Invalid Initializer launch */\nexport const DOPPLER_REHYPE_ROUTER_V1_ERROR__INVALID_LAUNCH = 0x1774; // 6004\n/** InvalidLaunchFeeState: Invalid launch fee state */\nexport const DOPPLER_REHYPE_ROUTER_V1_ERROR__INVALID_LAUNCH_FEE_STATE = 0x1775; // 6005\n/** InvalidMint: Invalid mint */\nexport const DOPPLER_REHYPE_ROUTER_V1_ERROR__INVALID_MINT = 0x1776; // 6006\n/** InvalidTokenAccount: Invalid token account */\nexport const DOPPLER_REHYPE_ROUTER_V1_ERROR__INVALID_TOKEN_ACCOUNT = 0x1777; // 6007\n/** InvalidHookAccounts: Invalid hook remaining accounts */\nexport const DOPPLER_REHYPE_ROUTER_V1_ERROR__INVALID_HOOK_ACCOUNTS = 0x1778; // 6008\n/** ArithmeticOverflow: Arithmetic overflow */\nexport const DOPPLER_REHYPE_ROUTER_V1_ERROR__ARITHMETIC_OVERFLOW = 0x1779; // 6009\n/** NoFeesAvailable: No fees are available */\nexport const DOPPLER_REHYPE_ROUTER_V1_ERROR__NO_FEES_AVAILABLE = 0x177a; // 6010\n/** SettlementInProgress: Rehype settlement is already in progress */\nexport const DOPPLER_REHYPE_ROUTER_V1_ERROR__SETTLEMENT_IN_PROGRESS = 0x177b; // 6011\n/** QuoteMismatch: Internal swap quote mismatch */\nexport const DOPPLER_REHYPE_ROUTER_V1_ERROR__QUOTE_MISMATCH = 0x177c; // 6012\n/** BalanceMismatch: Internal swap balance mismatch */\nexport const DOPPLER_REHYPE_ROUTER_V1_ERROR__BALANCE_MISMATCH = 0x177d; // 6013\n/** InvalidPhase: Launch phase does not support this settlement */\nexport const DOPPLER_REHYPE_ROUTER_V1_ERROR__INVALID_PHASE = 0x177e; // 6014\n/** UnclaimedFees: Beneficiary has unclaimed fees */\nexport const DOPPLER_REHYPE_ROUTER_V1_ERROR__UNCLAIMED_FEES = 0x177f; // 6015\n/** UnauthorizedSettlement: Only the configured settlement authority may settle fees */\nexport const DOPPLER_REHYPE_ROUTER_V1_ERROR__UNAUTHORIZED_SETTLEMENT = 0x1780; // 6016\n/** SlippageProtectionRequired: A positive minimum output is required for a fillable conversion */\nexport const DOPPLER_REHYPE_ROUTER_V1_ERROR__SLIPPAGE_PROTECTION_REQUIRED = 0x1781; // 6017\n/** SlippageExceeded: Settlement conversion output is below the requested minimum */\nexport const DOPPLER_REHYPE_ROUTER_V1_ERROR__SLIPPAGE_EXCEEDED = 0x1782; // 6018\n/** InvalidPool: Invalid migrated CPMM pool accounts */\nexport const DOPPLER_REHYPE_ROUTER_V1_ERROR__INVALID_POOL = 0x1783; // 6019\n/** InvalidPosition: Invalid Router CPMM position */\nexport const DOPPLER_REHYPE_ROUTER_V1_ERROR__INVALID_POSITION = 0x1784; // 6020\n/** InvalidLpRebalance: Invalid LP rebalance parameters */\nexport const DOPPLER_REHYPE_ROUTER_V1_ERROR__INVALID_LP_REBALANCE = 0x1785; // 6021\n/** LpRebalanceWorsened: LP rebalance reduced the amount of liquidity that can be added */\nexport const DOPPLER_REHYPE_ROUTER_V1_ERROR__LP_REBALANCE_WORSENED = 0x1786; // 6022\n\nexport type DopplerRehypeRouterV1Error =\n  | typeof DOPPLER_REHYPE_ROUTER_V1_ERROR__ARITHMETIC_OVERFLOW\n  | typeof DOPPLER_REHYPE_ROUTER_V1_ERROR__BALANCE_MISMATCH\n  | typeof DOPPLER_REHYPE_ROUTER_V1_ERROR__INVALID_BENEFICIARY\n  | typeof DOPPLER_REHYPE_ROUTER_V1_ERROR__INVALID_CONFIG\n  | typeof DOPPLER_REHYPE_ROUTER_V1_ERROR__INVALID_FEE_ROUTING\n  | typeof DOPPLER_REHYPE_ROUTER_V1_ERROR__INVALID_HOOK_ACCOUNTS\n  | typeof DOPPLER_REHYPE_ROUTER_V1_ERROR__INVALID_LAUNCH\n  | typeof DOPPLER_REHYPE_ROUTER_V1_ERROR__INVALID_LAUNCH_FEE_STATE\n  | typeof DOPPLER_REHYPE_ROUTER_V1_ERROR__INVALID_LP_REBALANCE\n  | typeof DOPPLER_REHYPE_ROUTER_V1_ERROR__INVALID_MINT\n  | typeof DOPPLER_REHYPE_ROUTER_V1_ERROR__INVALID_PHASE\n  | typeof DOPPLER_REHYPE_ROUTER_V1_ERROR__INVALID_POOL\n  | typeof DOPPLER_REHYPE_ROUTER_V1_ERROR__INVALID_POSITION\n  | typeof DOPPLER_REHYPE_ROUTER_V1_ERROR__INVALID_ROUTING_MODE\n  | typeof DOPPLER_REHYPE_ROUTER_V1_ERROR__INVALID_TOKEN_ACCOUNT\n  | typeof DOPPLER_REHYPE_ROUTER_V1_ERROR__LP_REBALANCE_WORSENED\n  | typeof DOPPLER_REHYPE_ROUTER_V1_ERROR__NO_FEES_AVAILABLE\n  | typeof DOPPLER_REHYPE_ROUTER_V1_ERROR__QUOTE_MISMATCH\n  | typeof DOPPLER_REHYPE_ROUTER_V1_ERROR__SETTLEMENT_IN_PROGRESS\n  | typeof DOPPLER_REHYPE_ROUTER_V1_ERROR__SLIPPAGE_EXCEEDED\n  | typeof DOPPLER_REHYPE_ROUTER_V1_ERROR__SLIPPAGE_PROTECTION_REQUIRED\n  | typeof DOPPLER_REHYPE_ROUTER_V1_ERROR__UNAUTHORIZED_SETTLEMENT\n  | typeof DOPPLER_REHYPE_ROUTER_V1_ERROR__UNCLAIMED_FEES;\n\nlet dopplerRehypeRouterV1ErrorMessages:\n  | Record<DopplerRehypeRouterV1Error, string>\n  | undefined;\nif (process.env.NODE_ENV !== 'production') {\n  dopplerRehypeRouterV1ErrorMessages = {\n    [DOPPLER_REHYPE_ROUTER_V1_ERROR__ARITHMETIC_OVERFLOW]: `Arithmetic overflow`,\n    [DOPPLER_REHYPE_ROUTER_V1_ERROR__BALANCE_MISMATCH]: `Internal swap balance mismatch`,\n    [DOPPLER_REHYPE_ROUTER_V1_ERROR__INVALID_BENEFICIARY]: `Invalid Rehype beneficiary`,\n    [DOPPLER_REHYPE_ROUTER_V1_ERROR__INVALID_CONFIG]: `Invalid Rehype configuration`,\n    [DOPPLER_REHYPE_ROUTER_V1_ERROR__INVALID_FEE_ROUTING]: `Invalid fee routing matrix`,\n    [DOPPLER_REHYPE_ROUTER_V1_ERROR__INVALID_HOOK_ACCOUNTS]: `Invalid hook remaining accounts`,\n    [DOPPLER_REHYPE_ROUTER_V1_ERROR__INVALID_LAUNCH]: `Invalid Initializer launch`,\n    [DOPPLER_REHYPE_ROUTER_V1_ERROR__INVALID_LAUNCH_FEE_STATE]: `Invalid launch fee state`,\n    [DOPPLER_REHYPE_ROUTER_V1_ERROR__INVALID_LP_REBALANCE]: `Invalid LP rebalance parameters`,\n    [DOPPLER_REHYPE_ROUTER_V1_ERROR__INVALID_MINT]: `Invalid mint`,\n    [DOPPLER_REHYPE_ROUTER_V1_ERROR__INVALID_PHASE]: `Launch phase does not support this settlement`,\n    [DOPPLER_REHYPE_ROUTER_V1_ERROR__INVALID_POOL]: `Invalid migrated CPMM pool accounts`,\n    [DOPPLER_REHYPE_ROUTER_V1_ERROR__INVALID_POSITION]: `Invalid Router CPMM position`,\n    [DOPPLER_REHYPE_ROUTER_V1_ERROR__INVALID_ROUTING_MODE]: `Invalid routing mode`,\n    [DOPPLER_REHYPE_ROUTER_V1_ERROR__INVALID_TOKEN_ACCOUNT]: `Invalid token account`,\n    [DOPPLER_REHYPE_ROUTER_V1_ERROR__LP_REBALANCE_WORSENED]: `LP rebalance reduced the amount of liquidity that can be added`,\n    [DOPPLER_REHYPE_ROUTER_V1_ERROR__NO_FEES_AVAILABLE]: `No fees are available`,\n    [DOPPLER_REHYPE_ROUTER_V1_ERROR__QUOTE_MISMATCH]: `Internal swap quote mismatch`,\n    [DOPPLER_REHYPE_ROUTER_V1_ERROR__SETTLEMENT_IN_PROGRESS]: `Rehype settlement is already in progress`,\n    [DOPPLER_REHYPE_ROUTER_V1_ERROR__SLIPPAGE_EXCEEDED]: `Settlement conversion output is below the requested minimum`,\n    [DOPPLER_REHYPE_ROUTER_V1_ERROR__SLIPPAGE_PROTECTION_REQUIRED]: `A positive minimum output is required for a fillable conversion`,\n    [DOPPLER_REHYPE_ROUTER_V1_ERROR__UNAUTHORIZED_SETTLEMENT]: `Only the configured settlement authority may settle fees`,\n    [DOPPLER_REHYPE_ROUTER_V1_ERROR__UNCLAIMED_FEES]: `Beneficiary has unclaimed fees`,\n  };\n}\n\nexport function getDopplerRehypeRouterV1ErrorMessage(\n  code: DopplerRehypeRouterV1Error,\n): string {\n  if (process.env.NODE_ENV !== 'production') {\n    return (\n      dopplerRehypeRouterV1ErrorMessages as Record<\n        DopplerRehypeRouterV1Error,\n        string\n      >\n    )[code];\n  }\n\n  return 'Error message not available in production bundles.';\n}\n\nexport function isDopplerRehypeRouterV1Error<\n  TProgramErrorCode extends DopplerRehypeRouterV1Error,\n>(\n  error: unknown,\n  transactionMessage: {\n    instructions: Record<number, { programAddress: Address }>;\n  },\n  code?: TProgramErrorCode,\n): error is SolanaError<typeof SOLANA_ERROR__INSTRUCTION_ERROR__CUSTOM> &\n  Readonly<{ context: Readonly<{ code: TProgramErrorCode }> }> {\n  return isProgramError<TProgramErrorCode>(\n    error,\n    transactionMessage,\n    DOPPLER_REHYPE_ROUTER_V1_PROGRAM_ADDRESS,\n    code,\n  );\n}\n","import type { Address } from '@solana/kit';\n\nimport { DOPPLER_LAUNCH_HOOK_V2_PROGRAM_ADDRESS } from '../generated/dopplerLaunchHookV2/index.js';\n\nexport const DEVNET_DOPPLER_LAUNCH_HOOK_V2_PROGRAM_ID: Address =\n  DOPPLER_LAUNCH_HOOK_V2_PROGRAM_ADDRESS;\nexport const DOPPLER_LAUNCH_HOOK_V2_PROGRAM_ID =\n  DEVNET_DOPPLER_LAUNCH_HOOK_V2_PROGRAM_ID;\n\nexport const DOPPLER_LAUNCH_HOOK_V2_CONFIG_SEED = 'doppler_launch_hook_v2';\nexport const DOPPLER_LAUNCH_HOOK_V2_MAX_COSIGNERS = 32;\n\nexport const DOPPLER_LAUNCH_HOOK_V2_PAYLOAD_MAGIC = new Uint8Array([\n  0x44, 0x4c, 0x48, 0x56, 0x32, 0x5f, 0x5f, 0x5f,\n]);\nexport const DOPPLER_LAUNCH_HOOK_V2_PAYLOAD_VERSION = 2;\nexport const DOPPLER_LAUNCH_HOOK_V2_PAYLOAD_LEN = 112;\n\nexport const DOPPLER_LAUNCH_HOOK_V2_FEATURE_DYNAMIC_FEE = 1 << 0;\nexport const DOPPLER_LAUNCH_HOOK_V2_FEATURE_COSIGN_GATE = 1 << 1;\nexport const DOPPLER_LAUNCH_HOOK_V2_FEATURE_FEE_REHYPOTHECATION = 1 << 2;\nexport const DOPPLER_LAUNCH_HOOK_V2_FEATURE_MASK =\n  DOPPLER_LAUNCH_HOOK_V2_FEATURE_DYNAMIC_FEE |\n  DOPPLER_LAUNCH_HOOK_V2_FEATURE_COSIGN_GATE |\n  DOPPLER_LAUNCH_HOOK_V2_FEATURE_FEE_REHYPOTHECATION;\n\nexport const DOPPLER_LAUNCH_HOOK_V2_GATE_DISABLED = 0;\nexport const DOPPLER_LAUNCH_HOOK_V2_GATE_UNIX_TIMESTAMP = 1;\nexport const DOPPLER_LAUNCH_HOOK_V2_GATE_SLOT = 2;\n","import {\n  getProgramDerivedAddress,\n  type Address,\n  type ProgramDerivedAddress,\n} from '@solana/kit';\n\nimport {\n  DOPPLER_LAUNCH_HOOK_V2_CONFIG_SEED,\n  DOPPLER_LAUNCH_HOOK_V2_PROGRAM_ID,\n} from './constants.js';\n\nconst textEncoder = new TextEncoder();\n\nexport async function getDopplerLaunchHookV2ConfigAddress(\n  programId: Address = DOPPLER_LAUNCH_HOOK_V2_PROGRAM_ID,\n): Promise<ProgramDerivedAddress> {\n  return getProgramDerivedAddress({\n    programAddress: programId,\n    seeds: [textEncoder.encode(DOPPLER_LAUNCH_HOOK_V2_CONFIG_SEED)],\n  });\n}\n","import type { Address, GetAccountInfoApi, Rpc } from '@solana/kit';\nimport { SYSTEM_PROGRAM_ADDRESS } from '@solana-program/system';\n\nimport { INITIALIZER_PROGRAM_ID } from '../initializer/index.js';\nimport { DOPPLER_REHYPE_ROUTER_V1_PROGRAM_ADDRESS } from '../generated/dopplerRehypeRouterV1/index.js';\nimport { fetchMaybeHookConfig } from '../generated/dopplerLaunchHookV2/index.js';\nimport {\n  DOPPLER_LAUNCH_HOOK_V2_MAX_COSIGNERS,\n  DOPPLER_LAUNCH_HOOK_V2_PROGRAM_ID,\n} from './constants.js';\nimport { getDopplerLaunchHookV2ConfigAddress } from './pda.js';\n\nconst resolvedManagedCosignerGateV2Brand: unique symbol = Symbol(\n  'resolvedManagedCosignerGateV2',\n);\nconst MAX_U64 = (1n << 64n) - 1n;\n\nexport type ResolveManagedCosignerGateV2Input = {\n  /** Unix timestamp after which the gate is inactive. Omit for no expiry. */\n  expiresAt?: bigint | number | null;\n  programId?: Address;\n  initializerProgram?: Address;\n  feeRehypothecationRouterProgram?: Address;\n};\n\nexport type ResolvedManagedCosignerGateV2 = {\n  readonly programId: Address;\n  readonly config: Address;\n  readonly cosigner: Address;\n  readonly activeCosigners: readonly Address[];\n  readonly expiresAt: bigint;\n  readonly [resolvedManagedCosignerGateV2Brand]: true;\n};\n\nexport function isResolvedManagedCosignerGateV2(\n  value: unknown,\n): value is ResolvedManagedCosignerGateV2 {\n  return (\n    typeof value === 'object' &&\n    value !== null &&\n    (value as { [resolvedManagedCosignerGateV2Brand]?: unknown })[\n      resolvedManagedCosignerGateV2Brand\n    ] === true\n  );\n}\n\nexport async function resolveManagedCosignerGate(\n  rpc: Rpc<GetAccountInfoApi>,\n  input: ResolveManagedCosignerGateV2Input = {},\n): Promise<ResolvedManagedCosignerGateV2> {\n  const programId = input.programId ?? DOPPLER_LAUNCH_HOOK_V2_PROGRAM_ID;\n  const initializerProgram = input.initializerProgram ?? INITIALIZER_PROGRAM_ID;\n  const feeRehypothecationRouterProgram =\n    input.feeRehypothecationRouterProgram ??\n    DOPPLER_REHYPE_ROUTER_V1_PROGRAM_ADDRESS;\n  const [config, expectedBump] =\n    await getDopplerLaunchHookV2ConfigAddress(programId);\n  const configAccount = await fetchMaybeHookConfig(rpc, config, {\n    commitment: 'confirmed',\n  });\n\n  if (!configAccount.exists) {\n    throw new Error(`Doppler launch hook v2 config ${config} does not exist`);\n  }\n  if (configAccount.programAddress !== programId) {\n    throw new Error(\n      `Doppler launch hook v2 config ${config} is owned by ${configAccount.programAddress}, expected ${programId}`,\n    );\n  }\n\n  const {\n    bump,\n    cosignerCount,\n    cosigners,\n    initializerProgram: configuredInitializer,\n    rehypeRouterProgram,\n    version,\n  } = configAccount.data;\n  if (\n    version !== 1 ||\n    bump !== expectedBump ||\n    configuredInitializer !== initializerProgram ||\n    rehypeRouterProgram !== feeRehypothecationRouterProgram ||\n    cosignerCount === 0 ||\n    cosignerCount > DOPPLER_LAUNCH_HOOK_V2_MAX_COSIGNERS ||\n    cosignerCount > cosigners.length\n  ) {\n    throw new Error(\n      `Doppler launch hook v2 config ${config} is not valid for this deployment`,\n    );\n  }\n\n  const activeCosigners = Object.freeze(cosigners.slice(0, cosignerCount));\n  if (\n    activeCosigners.some((candidate) => candidate === SYSTEM_PROGRAM_ADDRESS) ||\n    new Set(activeCosigners).size !== activeCosigners.length\n  ) {\n    throw new Error(\n      `Doppler launch hook v2 config ${config} contains invalid active cosigners`,\n    );\n  }\n  const cosigner = activeCosigners[0];\n  if (!cosigner) {\n    throw new Error(\n      `Doppler launch hook v2 config ${config} has no active cosigner`,\n    );\n  }\n\n  if (\n    typeof input.expiresAt === 'number' &&\n    !Number.isSafeInteger(input.expiresAt)\n  ) {\n    throw new Error('expiresAt must be a safe integer or bigint');\n  }\n  const expiresAt =\n    input.expiresAt === undefined || input.expiresAt === null\n      ? MAX_U64\n      : BigInt(input.expiresAt);\n  if (expiresAt < 0n || expiresAt > MAX_U64) {\n    throw new Error('expiresAt must be between 0 and u64::MAX');\n  }\n\n  const resolvedGate: ResolvedManagedCosignerGateV2 = {\n    [resolvedManagedCosignerGateV2Brand]: true,\n    programId,\n    config,\n    cosigner,\n    activeCosigners,\n    expiresAt,\n  };\n  Object.defineProperty(resolvedGate, resolvedManagedCosignerGateV2Brand, {\n    enumerable: false,\n  });\n  return Object.freeze(resolvedGate);\n}\n","import {\n  getAddressDecoder,\n  getAddressEncoder,\n  type Address,\n  type ReadonlyUint8Array,\n} from '@solana/kit';\n\nimport {\n  getAddressFromRemainingAccount,\n  type AddressOrTransactionSigner,\n  type RemainingAccount,\n} from '../core/accounts.js';\nimport type { DynamicFeeScheduleArgs } from '../dopplerLaunchHookV1/index.js';\nimport { validateDynamicFeeScheduleArgs } from '../dopplerLaunchHookV1/index.js';\nimport { computeRemainingAccountsHash } from '../initializer/helpers.js';\nimport {\n  DOPPLER_LAUNCH_HOOK_V2_FEATURE_COSIGN_GATE,\n  DOPPLER_LAUNCH_HOOK_V2_FEATURE_DYNAMIC_FEE,\n  DOPPLER_LAUNCH_HOOK_V2_FEATURE_FEE_REHYPOTHECATION,\n  DOPPLER_LAUNCH_HOOK_V2_FEATURE_MASK,\n  DOPPLER_LAUNCH_HOOK_V2_GATE_DISABLED,\n  DOPPLER_LAUNCH_HOOK_V2_GATE_SLOT,\n  DOPPLER_LAUNCH_HOOK_V2_GATE_UNIX_TIMESTAMP,\n  DOPPLER_LAUNCH_HOOK_V2_PAYLOAD_LEN,\n  DOPPLER_LAUNCH_HOOK_V2_PAYLOAD_MAGIC,\n  DOPPLER_LAUNCH_HOOK_V2_PAYLOAD_VERSION,\n} from './constants.js';\n\nconst MAX_U64 = (1n << 64n) - 1n;\nconst ZERO_ADDRESS = '11111111111111111111111111111111' as Address;\n\nexport type DopplerLaunchHookV2GateArgs = {\n  mode:\n    | typeof DOPPLER_LAUNCH_HOOK_V2_GATE_UNIX_TIMESTAMP\n    | typeof DOPPLER_LAUNCH_HOOK_V2_GATE_SLOT;\n  value: bigint | number;\n  cosigner: Address;\n};\n\nexport type DopplerLaunchHookV2PayloadArgs = {\n  dynamicFee?: DynamicFeeScheduleArgs | null;\n  cosignerGate?: DopplerLaunchHookV2GateArgs | null;\n  feeRehypothecationState?: Address | null;\n};\n\nexport type DecodedDopplerLaunchHookV2Payload = {\n  featureFlags: number;\n  dynamicFee: DynamicFeeScheduleArgs | null;\n  cosignerGate: DopplerLaunchHookV2GateArgs | null;\n  feeRehypothecationState: Address | null;\n};\n\nexport type DopplerLaunchHookV2RemainingAccounts = {\n  signedHookRemainingAccounts: RemainingAccount[];\n  unsignedHookRemainingAccounts: Address[];\n  hookRemainingAccountsHash: Uint8Array;\n};\n\nfunction toBigInt(value: bigint | number): bigint {\n  return typeof value === 'bigint' ? value : BigInt(value);\n}\n\nfunction assertU64(label: string, value: bigint | number): bigint {\n  if (typeof value === 'number' && !Number.isSafeInteger(value)) {\n    throw new Error(`${label} must be a safe integer or bigint`);\n  }\n  const parsed = toBigInt(value);\n  if (parsed < 0n || parsed > MAX_U64) {\n    throw new Error(`${label} must be between 0 and u64::MAX`);\n  }\n  return parsed;\n}\n\nfunction writeAddress(\n  payload: Uint8Array,\n  offset: number,\n  value: Address,\n): void {\n  payload.set(getAddressEncoder().encode(value), offset);\n}\n\nfunction readAddress(payload: ReadonlyUint8Array, offset: number): Address {\n  return getAddressDecoder().decode(payload.slice(offset, offset + 32));\n}\n\nfunction isZeroFilled(\n  payload: ReadonlyUint8Array,\n  start: number,\n  end: number,\n): boolean {\n  return payload.slice(start, end).every((byte) => byte === 0);\n}\n\nexport function encodeDopplerLaunchHookV2Payload(\n  args: DopplerLaunchHookV2PayloadArgs = {},\n): Uint8Array {\n  const payload = new Uint8Array(DOPPLER_LAUNCH_HOOK_V2_PAYLOAD_LEN);\n  const view = new DataView(\n    payload.buffer,\n    payload.byteOffset,\n    payload.byteLength,\n  );\n  let featureFlags = 0;\n\n  payload.set(DOPPLER_LAUNCH_HOOK_V2_PAYLOAD_MAGIC, 0);\n  payload[8] = DOPPLER_LAUNCH_HOOK_V2_PAYLOAD_VERSION;\n\n  if (args.dynamicFee) {\n    const { startingTime, durationSeconds } = validateDynamicFeeScheduleArgs(\n      args.dynamicFee,\n    );\n    featureFlags |= DOPPLER_LAUNCH_HOOK_V2_FEATURE_DYNAMIC_FEE;\n    view.setBigInt64(16, startingTime, true);\n    view.setUint16(24, args.dynamicFee.startFeeBps, true);\n    view.setUint16(26, args.dynamicFee.endFeeBps, true);\n    view.setUint32(28, Number(durationSeconds), true);\n  }\n\n  if (args.cosignerGate) {\n    if (\n      args.cosignerGate.mode !== DOPPLER_LAUNCH_HOOK_V2_GATE_UNIX_TIMESTAMP &&\n      args.cosignerGate.mode !== DOPPLER_LAUNCH_HOOK_V2_GATE_SLOT\n    ) {\n      throw new Error('invalid Doppler launch hook v2 cosigner gate mode');\n    }\n    const gateValue = assertU64('cosigner gate value', args.cosignerGate.value);\n    featureFlags |= DOPPLER_LAUNCH_HOOK_V2_FEATURE_COSIGN_GATE;\n    payload[32] = args.cosignerGate.mode;\n    view.setBigUint64(40, gateValue, true);\n    writeAddress(payload, 48, args.cosignerGate.cosigner);\n  }\n\n  if (args.feeRehypothecationState) {\n    featureFlags |= DOPPLER_LAUNCH_HOOK_V2_FEATURE_FEE_REHYPOTHECATION;\n    writeAddress(payload, 80, args.feeRehypothecationState);\n  }\n\n  payload[9] = featureFlags;\n  return payload;\n}\n\nexport function decodeDopplerLaunchHookV2Payload(\n  payload: ReadonlyUint8Array,\n): DecodedDopplerLaunchHookV2Payload {\n  if (\n    payload.length !== DOPPLER_LAUNCH_HOOK_V2_PAYLOAD_LEN ||\n    !DOPPLER_LAUNCH_HOOK_V2_PAYLOAD_MAGIC.every(\n      (byte, index) => payload[index] === byte,\n    ) ||\n    payload[8] !== DOPPLER_LAUNCH_HOOK_V2_PAYLOAD_VERSION\n  ) {\n    throw new Error('invalid Doppler launch hook v2 payload');\n  }\n\n  const featureFlags = payload[9] ?? 0;\n  if (\n    (featureFlags & ~DOPPLER_LAUNCH_HOOK_V2_FEATURE_MASK) !== 0 ||\n    !isZeroFilled(payload, 10, 16) ||\n    !isZeroFilled(payload, 33, 40)\n  ) {\n    throw new Error('invalid Doppler launch hook v2 payload header');\n  }\n  const view = new DataView(\n    payload.buffer,\n    payload.byteOffset,\n    payload.byteLength,\n  );\n  const hasDynamicFee =\n    (featureFlags & DOPPLER_LAUNCH_HOOK_V2_FEATURE_DYNAMIC_FEE) !== 0;\n  const hasCosignerGate =\n    (featureFlags & DOPPLER_LAUNCH_HOOK_V2_FEATURE_COSIGN_GATE) !== 0;\n  const hasFeeRehypothecation =\n    (featureFlags & DOPPLER_LAUNCH_HOOK_V2_FEATURE_FEE_REHYPOTHECATION) !== 0;\n\n  const dynamicFee = hasDynamicFee\n    ? {\n        startingTime: view.getBigInt64(16, true),\n        startFeeBps: view.getUint16(24, true),\n        endFeeBps: view.getUint16(26, true),\n        durationSeconds: BigInt(view.getUint32(28, true)),\n      }\n    : null;\n  if (dynamicFee) {\n    validateDynamicFeeScheduleArgs(dynamicFee);\n  } else if (!isZeroFilled(payload, 16, 32)) {\n    throw new Error('invalid disabled Doppler launch hook v2 dynamic fee');\n  }\n\n  const gateMode = payload[32] ?? DOPPLER_LAUNCH_HOOK_V2_GATE_DISABLED;\n  const gateValue = view.getBigUint64(40, true);\n  if (\n    hasCosignerGate &&\n    gateMode !== DOPPLER_LAUNCH_HOOK_V2_GATE_UNIX_TIMESTAMP &&\n    gateMode !== DOPPLER_LAUNCH_HOOK_V2_GATE_SLOT\n  ) {\n    throw new Error('invalid Doppler launch hook v2 cosigner gate mode');\n  }\n  const gateCosigner = readAddress(payload, 48);\n  if (hasCosignerGate && gateCosigner === ZERO_ADDRESS) {\n    throw new Error('invalid Doppler launch hook v2 cosigner');\n  }\n  const cosignerGate = hasCosignerGate\n    ? {\n        mode: gateMode as DopplerLaunchHookV2GateArgs['mode'],\n        value: gateValue,\n        cosigner: gateCosigner,\n      }\n    : null;\n  if (\n    !hasCosignerGate &&\n    (gateMode !== 0 || gateValue !== 0n || gateCosigner !== ZERO_ADDRESS)\n  ) {\n    throw new Error('invalid disabled Doppler launch hook v2 cosigner gate');\n  }\n\n  const feeRehypothecationState = readAddress(payload, 80);\n  if (hasFeeRehypothecation === (feeRehypothecationState === ZERO_ADDRESS)) {\n    throw new Error('invalid Doppler launch hook v2 router state');\n  }\n\n  return {\n    featureFlags,\n    dynamicFee,\n    cosignerGate,\n    feeRehypothecationState: hasFeeRehypothecation\n      ? feeRehypothecationState\n      : null,\n  };\n}\n\nexport function getDopplerLaunchHookV2RemainingAccounts({\n  namespace,\n  config,\n  feeRehypothecationState,\n  settlementSigner,\n  cosigner,\n}: {\n  namespace: Address;\n  config: Address;\n  feeRehypothecationState?: Address;\n  settlementSigner?: Address;\n  cosigner?: AddressOrTransactionSigner;\n}): DopplerLaunchHookV2RemainingAccounts {\n  if (Boolean(feeRehypothecationState) !== Boolean(settlementSigner)) {\n    throw new Error(\n      'feeRehypothecationState and settlementSigner must be provided together',\n    );\n  }\n\n  const signedHookRemainingAccounts: RemainingAccount[] = [namespace, config];\n  if (feeRehypothecationState && settlementSigner) {\n    signedHookRemainingAccounts.push(feeRehypothecationState, settlementSigner);\n  }\n  if (cosigner) {\n    signedHookRemainingAccounts.push(cosigner);\n  }\n  const unsignedHookRemainingAccounts = signedHookRemainingAccounts.map(\n    getAddressFromRemainingAccount,\n  );\n\n  return {\n    signedHookRemainingAccounts,\n    unsignedHookRemainingAccounts,\n    hookRemainingAccountsHash: computeRemainingAccountsHash(\n      unsignedHookRemainingAccounts,\n    ),\n  };\n}\n","export * from '../generated/dopplerRehypeRouterV1/index.js';\n","export * from './claim.js';\nexport * from './launch.js';\nexport * from './math.js';\nexport * from './pda.js';\nexport * from './settlement.js';\nexport * from './strategies.js';\n","import { address, type Address } from '@solana/kit';\n\nimport {\n  CPMM_PROGRAM_ID,\n  getConfigAddress as getCpmmConfigAddress,\n} from './core/index.js';\nimport {\n  INITIALIZER_PROGRAM_ID,\n  getConfigAddress as getInitializerConfigAddress,\n} from './initializer/index.js';\nimport { DOPPLER_LAUNCH_HOOK_V1_PROGRAM_ID } from './dopplerLaunchHookV1/index.js';\nimport {\n  DOPPLER_LAUNCH_HOOK_V2_PROGRAM_ID,\n  getDopplerLaunchHookV2ConfigAddress,\n} from './dopplerLaunchHookV2/index.js';\nimport { DOPPLER_REHYPE_ROUTER_V1_PROGRAM_ADDRESS } from './dopplerRehypeRouterV1/index.js';\nimport { CPMM_MIGRATOR_PROGRAM_ID } from './migrators/cpmmMigrator/index.js';\n\nexport interface SolanaCpmmProgramAddresses {\n  cpmmProgram: Address;\n  initializerProgram: Address;\n  cpmmMigratorProgram: Address;\n  dopplerLaunchHookV1Program: Address;\n}\n\nexport interface SolanaCpmmDeployment extends SolanaCpmmProgramAddresses {\n  cpmmConfig: Address;\n  initializerConfig: Address;\n}\n\nexport interface SolanaFeeRehypothecationProgramAddresses {\n  initializerProgram: Address;\n  dopplerLaunchHookV2Program: Address;\n  dopplerRehypeRouterV1Program: Address;\n}\n\nexport interface SolanaFeeRehypothecationDeployment extends SolanaFeeRehypothecationProgramAddresses {\n  initializerConfig: Address;\n  dopplerLaunchHookV2Config: Address;\n}\n\nexport const DOPPLER_SOLANA_DEVNET_PROGRAM_ADDRESSES: SolanaCpmmProgramAddresses =\n  {\n    cpmmProgram: CPMM_PROGRAM_ID,\n    initializerProgram: INITIALIZER_PROGRAM_ID,\n    cpmmMigratorProgram: CPMM_MIGRATOR_PROGRAM_ID,\n    dopplerLaunchHookV1Program: DOPPLER_LAUNCH_HOOK_V1_PROGRAM_ID,\n  };\n\nexport const DOPPLER_SOLANA_MAINNET_PROGRAM_ADDRESSES: SolanaCpmmProgramAddresses =\n  {\n    cpmmProgram: address('5pXzd9UiWrVxATCYWmgo5EbfxzXqHYhfSKGdCPXPz7vK'),\n    initializerProgram: address('4carc9eePfE7jKUXdCAYMhcPf4awEFpZPrz1sTykdss1'),\n    cpmmMigratorProgram: address(\n      'H71WD4tsiCCipro4urykWHySH1ryvLTmqEdNbHTGwb3o',\n    ),\n    dopplerLaunchHookV1Program: address(\n      'BeyqffXEVgLpM3fQ1zjk8YnZzQN9sMVrCKtNKwSxNATr',\n    ),\n  };\n\nexport const DOPPLER_SOLANA_DEVNET_FEE_REHYPOTHECATION_PROGRAM_ADDRESSES: SolanaFeeRehypothecationProgramAddresses =\n  {\n    initializerProgram: INITIALIZER_PROGRAM_ID,\n    dopplerLaunchHookV2Program: DOPPLER_LAUNCH_HOOK_V2_PROGRAM_ID,\n    dopplerRehypeRouterV1Program: DOPPLER_REHYPE_ROUTER_V1_PROGRAM_ADDRESS,\n  };\n\nexport async function deriveSolanaCpmmDeployment(\n  programs: SolanaCpmmProgramAddresses = DOPPLER_SOLANA_DEVNET_PROGRAM_ADDRESSES,\n): Promise<SolanaCpmmDeployment> {\n  const [cpmmConfig] = await getCpmmConfigAddress(programs.cpmmProgram);\n  const [initializerConfig] = await getInitializerConfigAddress(\n    programs.initializerProgram,\n  );\n\n  return {\n    ...programs,\n    cpmmConfig,\n    initializerConfig,\n  };\n}\n\nexport async function deriveSolanaFeeRehypothecationDeployment(\n  programs: SolanaFeeRehypothecationProgramAddresses = DOPPLER_SOLANA_DEVNET_FEE_REHYPOTHECATION_PROGRAM_ADDRESSES,\n): Promise<SolanaFeeRehypothecationDeployment> {\n  const [initializerConfig] = await getInitializerConfigAddress(\n    programs.initializerProgram,\n  );\n  const [dopplerLaunchHookV2Config] = await getDopplerLaunchHookV2ConfigAddress(\n    programs.dopplerLaunchHookV2Program,\n  );\n\n  return {\n    ...programs,\n    initializerConfig,\n    dopplerLaunchHookV2Config,\n  };\n}\n","import type { FeeRouteArgs } from '../dopplerRehypeRouterV1/index.js';\n\nconst BPS_DENOMINATOR = 10_000n;\nconst MAX_U64 = (1n << 64n) - 1n;\n\nfunction assertNonnegative(label: string, value: bigint): void {\n  if (value < 0n) {\n    throw new Error(`${label} must be nonnegative`);\n  }\n}\n\nexport function calculateFeeEntitlement(\n  cumulativeFees: bigint,\n  shareBps: number,\n): bigint {\n  assertNonnegative('cumulativeFees', cumulativeFees);\n  if (!Number.isInteger(shareBps) || shareBps < 0 || shareBps > 10_000) {\n    throw new Error('shareBps must be an integer between 0 and 10000');\n  }\n  return (cumulativeFees * BigInt(shareBps)) / BPS_DENOMINATOR;\n}\n\nexport function calculateInitializerBeneficiaryEntitlement(\n  cumulativeFees: bigint,\n  protocolFeeBps: number,\n  beneficiaryShareBps: number,\n): bigint {\n  const protocolFees = calculateFeeEntitlement(cumulativeFees, protocolFeeBps);\n  return calculateFeeEntitlement(\n    cumulativeFees - protocolFees,\n    beneficiaryShareBps,\n  );\n}\n\nexport function calculatePendingInitializerFees({\n  cumulativeFees,\n  distributedProtocolFees,\n  distributedBeneficiaryFees,\n}: {\n  cumulativeFees: bigint;\n  distributedProtocolFees: bigint;\n  distributedBeneficiaryFees: ReadonlyArray<bigint>;\n}): bigint {\n  const distributed = distributedBeneficiaryFees.reduce(\n    (total, amount) => total + amount,\n    distributedProtocolFees,\n  );\n  if (distributed > cumulativeFees) {\n    throw new Error('distributed fees exceed cumulative fees');\n  }\n  return cumulativeFees - distributed;\n}\n\nexport function splitCumulativeFeeIncrement(\n  route: FeeRouteArgs,\n  cumulativeFees: bigint,\n  claimedFees: bigint,\n): readonly [bigint, bigint, bigint, bigint] {\n  assertNonnegative('cumulativeFees', cumulativeFees);\n  assertNonnegative('claimedFees', claimedFees);\n  const weights = [\n    route.assetBuybackBps,\n    route.numeraireBuybackBps,\n    route.beneficiaryBps,\n    route.lpBps,\n  ];\n  if (\n    weights.some(\n      (weight) => !Number.isInteger(weight) || weight < 0 || weight > 10_000,\n    ) ||\n    weights.reduce((sum, weight) => sum + weight, 0) !== 10_000\n  ) {\n    throw new Error('fee route must sum to 10000 bps');\n  }\n\n  const nextCumulativeFees = cumulativeFees + claimedFees;\n  return weights.map((weight) => {\n    const previous = (cumulativeFees * BigInt(weight)) / BPS_DENOMINATOR;\n    const next = (nextCumulativeFees * BigInt(weight)) / BPS_DENOMINATOR;\n    return next - previous;\n  }) as unknown as readonly [bigint, bigint, bigint, bigint];\n}\n\nexport function quoteZeroFeeExactIn({\n  amountIn,\n  reserveIn,\n  reserveOut,\n  virtualIn,\n  virtualOut,\n}: {\n  amountIn: bigint;\n  reserveIn: bigint;\n  reserveOut: bigint;\n  virtualIn: bigint;\n  virtualOut: bigint;\n}): bigint {\n  for (const [label, value] of [\n    ['amountIn', amountIn],\n    ['reserveIn', reserveIn],\n    ['reserveOut', reserveOut],\n    ['virtualIn', virtualIn],\n    ['virtualOut', virtualOut],\n  ] as const) {\n    if (value < 0n || value > MAX_U64) {\n      throw new Error(`${label} must be between 0 and u64::MAX`);\n    }\n  }\n  if (amountIn === 0n) {\n    throw new Error('amountIn must be positive');\n  }\n  if (reserveOut === 0n) {\n    return 0n;\n  }\n\n  const amountOut =\n    ((reserveOut + virtualOut) * amountIn) / (reserveIn + virtualIn + amountIn);\n  if (amountOut > MAX_U64) {\n    throw new Error('amountOut exceeds u64::MAX');\n  }\n  return amountOut > reserveOut ? 0n : amountOut;\n}\n\nexport function calculateMinimumOutput(\n  expectedAmountOut: bigint,\n  slippageBps = 50,\n): bigint {\n  assertNonnegative('expectedAmountOut', expectedAmountOut);\n  if (\n    !Number.isInteger(slippageBps) ||\n    slippageBps < 0 ||\n    slippageBps >= 10_000\n  ) {\n    throw new Error('slippageBps must be an integer between 0 and 9999');\n  }\n  if (expectedAmountOut === 0n) {\n    return 0n;\n  }\n  const minimum =\n    (expectedAmountOut * BigInt(10_000 - slippageBps)) / BPS_DENOMINATOR;\n  return minimum > 0n ? minimum : 1n;\n}\n\nexport function resolveProtectedMinimumOutput({\n  expectedAmountOut,\n  minimumAmountOut,\n  slippageBps,\n}: {\n  expectedAmountOut: bigint;\n  minimumAmountOut?: bigint;\n  slippageBps?: number;\n}): bigint {\n  if (minimumAmountOut === undefined) {\n    return calculateMinimumOutput(expectedAmountOut, slippageBps);\n  }\n  assertNonnegative('minimumAmountOut', minimumAmountOut);\n  if (\n    (expectedAmountOut === 0n && minimumAmountOut !== 0n) ||\n    (expectedAmountOut > 0n &&\n      (minimumAmountOut === 0n || minimumAmountOut > expectedAmountOut))\n  ) {\n    throw new Error('minimumAmountOut is incompatible with the current quote');\n  }\n  return minimumAmountOut;\n}\n\nexport function calculateBeneficiaryEntitlement({\n  cumulativeFees,\n  beneficiarySharesBps,\n  beneficiaryIndex,\n}: {\n  cumulativeFees: bigint;\n  beneficiarySharesBps: ReadonlyArray<number>;\n  beneficiaryIndex: number;\n}): bigint {\n  if (\n    beneficiarySharesBps.length === 0 ||\n    beneficiaryIndex < 0 ||\n    beneficiaryIndex >= beneficiarySharesBps.length\n  ) {\n    throw new Error('invalid beneficiary index');\n  }\n  const finalIndex = beneficiarySharesBps.length - 1;\n  if (beneficiaryIndex === finalIndex) {\n    const priorEntitlements = beneficiarySharesBps\n      .slice(0, finalIndex)\n      .reduce(\n        (total, shareBps) =>\n          total + calculateFeeEntitlement(cumulativeFees, shareBps),\n        0n,\n      );\n    return cumulativeFees - priorEntitlements;\n  }\n  return calculateFeeEntitlement(\n    cumulativeFees,\n    beneficiarySharesBps[beneficiaryIndex] ?? 0,\n  );\n}\n","import {\n  getAddressEncoder,\n  getProgramDerivedAddress,\n  type Address,\n  type ProgramDerivedAddress,\n} from '@solana/kit';\n\nimport { DOPPLER_REHYPE_ROUTER_V1_PROGRAM_ADDRESS } from '../dopplerRehypeRouterV1/index.js';\n\nconst textEncoder = new TextEncoder();\n\nfunction deriveAddress(\n  seed: string,\n  addressSeed: Address,\n  programId: Address,\n): Promise<ProgramDerivedAddress> {\n  return getProgramDerivedAddress({\n    programAddress: programId,\n    seeds: [textEncoder.encode(seed), getAddressEncoder().encode(addressSeed)],\n  });\n}\n\nexport function getFeeRehypothecationStateAddress(\n  baseMint: Address,\n  programId: Address = DOPPLER_REHYPE_ROUTER_V1_PROGRAM_ADDRESS,\n): Promise<ProgramDerivedAddress> {\n  return deriveAddress('rehype_state', baseMint, programId);\n}\n\nexport function getFeeRehypothecationAuthorityAddress(\n  state: Address,\n  programId: Address = DOPPLER_REHYPE_ROUTER_V1_PROGRAM_ADDRESS,\n): Promise<ProgramDerivedAddress> {\n  return deriveAddress('rehype_authority', state, programId);\n}\n\nexport function getFeeRehypothecationSettlementSignerAddress(\n  state: Address,\n  programId: Address = DOPPLER_REHYPE_ROUTER_V1_PROGRAM_ADDRESS,\n): Promise<ProgramDerivedAddress> {\n  return deriveAddress('settlement_signer', state, programId);\n}\n\nexport type FeeRehypothecationAddresses = {\n  state: Address;\n  authority: Address;\n  settlementSigner: Address;\n};\n\nexport async function deriveFeeRehypothecationAddresses(\n  baseMint: Address,\n  programId: Address = DOPPLER_REHYPE_ROUTER_V1_PROGRAM_ADDRESS,\n): Promise<FeeRehypothecationAddresses> {\n  const [state] = await getFeeRehypothecationStateAddress(baseMint, programId);\n  const [[authority], [settlementSigner]] = await Promise.all([\n    getFeeRehypothecationAuthorityAddress(state, programId),\n    getFeeRehypothecationSettlementSignerAddress(state, programId),\n  ]);\n\n  return { state, authority, settlementSigner };\n}\n","import {\n  fetchEncodedAccount,\n  type Address,\n  type GetAccountInfoApi,\n  type Instruction,\n  type Rpc,\n  type TransactionSigner,\n} from '@solana/kit';\n\nimport {\n  fetchRehypeState,\n  getClaimFeesInstructionAsync,\n} from '../dopplerRehypeRouterV1/index.js';\nimport {\n  DOPPLER_SOLANA_DEVNET_FEE_REHYPOTHECATION_PROGRAM_ADDRESSES,\n  deriveSolanaFeeRehypothecationDeployment,\n  type SolanaFeeRehypothecationDeployment,\n} from '../deployment.js';\nimport { calculateBeneficiaryEntitlement } from './math.js';\nimport { deriveFeeRehypothecationAddresses } from './pda.js';\n\nexport type PrepareFeeRehypothecationClaimInput = {\n  rpc: Rpc<GetAccountInfoApi>;\n  baseMint: Address;\n  beneficiary: Address;\n  payer: TransactionSigner;\n  deployment?: SolanaFeeRehypothecationDeployment;\n};\n\nexport type PrepareFeeRehypothecationClaimResult = {\n  instruction: Instruction;\n  beneficiaryIndex: number;\n  pendingBaseFees: bigint;\n  pendingQuoteFees: bigint;\n};\n\nasync function getMintProgram(\n  rpc: Rpc<GetAccountInfoApi>,\n  mint: Address,\n): Promise<Address> {\n  const account = await fetchEncodedAccount(rpc, mint, {\n    commitment: 'confirmed',\n  });\n  if (!account.exists) {\n    throw new Error(`mint ${mint} does not exist`);\n  }\n  return account.programAddress;\n}\n\nexport async function prepareClaim(\n  input: PrepareFeeRehypothecationClaimInput,\n): Promise<PrepareFeeRehypothecationClaimResult> {\n  const deployment =\n    input.deployment ??\n    (await deriveSolanaFeeRehypothecationDeployment(\n      DOPPLER_SOLANA_DEVNET_FEE_REHYPOTHECATION_PROGRAM_ADDRESSES,\n    ));\n  const addresses = await deriveFeeRehypothecationAddresses(\n    input.baseMint,\n    deployment.dopplerRehypeRouterV1Program,\n  );\n  const stateAccount = await fetchRehypeState(input.rpc, addresses.state, {\n    commitment: 'confirmed',\n  });\n  const state = stateAccount.data;\n  if (\n    state.baseMint !== input.baseMint ||\n    state.hookProgram !== deployment.dopplerLaunchHookV2Program\n  ) {\n    throw new Error('fee rehypothecation state does not match the deployment');\n  }\n\n  const beneficiaries = state.beneficiaries.slice(0, state.beneficiaryCount);\n  const beneficiaryIndex = beneficiaries.findIndex(\n    ({ wallet }) => wallet === input.beneficiary,\n  );\n  if (beneficiaryIndex < 0) {\n    throw new Error(`${input.beneficiary} is not a fee beneficiary`);\n  }\n  const shares = beneficiaries.map(({ shareBps }) => shareBps);\n  const pendingBaseFees =\n    calculateBeneficiaryEntitlement({\n      cumulativeFees: state.cumulativeBeneficiaryBase,\n      beneficiarySharesBps: shares,\n      beneficiaryIndex,\n    }) - state.distributedBaseByBeneficiary[beneficiaryIndex]!;\n  const pendingQuoteFees =\n    calculateBeneficiaryEntitlement({\n      cumulativeFees: state.cumulativeBeneficiaryQuote,\n      beneficiarySharesBps: shares,\n      beneficiaryIndex,\n    }) - state.distributedQuoteByBeneficiary[beneficiaryIndex]!;\n  if (pendingBaseFees < 0n || pendingQuoteFees < 0n) {\n    throw new Error('distributed fees exceed the beneficiary entitlement');\n  }\n  if (pendingBaseFees === 0n && pendingQuoteFees === 0n) {\n    throw new Error('no fees are available to claim');\n  }\n\n  const [baseTokenProgram, quoteTokenProgram] = await Promise.all([\n    getMintProgram(input.rpc, state.baseMint),\n    getMintProgram(input.rpc, state.quoteMint),\n  ]);\n  const instruction = await getClaimFeesInstructionAsync(\n    {\n      payer: input.payer,\n      beneficiary: input.beneficiary,\n      rehypeState: addresses.state,\n      rehypeAuthority: addresses.authority,\n      baseMint: state.baseMint,\n      quoteMint: state.quoteMint,\n      baseTokenProgram,\n      quoteTokenProgram,\n      beneficiaryIndex,\n    },\n    { programAddress: deployment.dopplerRehypeRouterV1Program },\n  );\n\n  return {\n    instruction,\n    beneficiaryIndex,\n    pendingBaseFees,\n    pendingQuoteFees,\n  };\n}\n","import { getAddressEncoder, type Address } from '@solana/kit';\n\nimport type {\n  FeeRouteArgs,\n  FeeRoutingMatrixArgs,\n  RehypeBeneficiaryInputArgs,\n} from '../dopplerRehypeRouterV1/index.js';\n\nexport const FEE_REHYPOTHECATION_BPS_DENOMINATOR = 10_000;\nexport const MAX_FEE_REHYPOTHECATION_BENEFICIARIES = 8;\nexport const FEE_REHYPOTHECATION_ROUTING_MODE_DIRECT_BUYBACK = 0;\nexport const FEE_REHYPOTHECATION_ROUTING_MODE_TO_BENEFICIARIES = 1;\n\nexport type FeeRehypothecationStrategy = {\n  routingMode:\n    | typeof FEE_REHYPOTHECATION_ROUTING_MODE_DIRECT_BUYBACK\n    | typeof FEE_REHYPOTHECATION_ROUTING_MODE_TO_BENEFICIARIES;\n  feeRouting: FeeRoutingMatrixArgs;\n};\n\nfunction route(\n  assetBuybackBps: number,\n  numeraireBuybackBps: number,\n  beneficiaryBps: number,\n  lpBps: number,\n): FeeRouteArgs {\n  return {\n    assetBuybackBps,\n    numeraireBuybackBps,\n    beneficiaryBps,\n    lpBps,\n  };\n}\n\nexport function allFeesToBeneficiariesInAsset(): FeeRehypothecationStrategy {\n  return {\n    routingMode: FEE_REHYPOTHECATION_ROUTING_MODE_TO_BENEFICIARIES,\n    feeRouting: {\n      assetFees: route(10_000, 0, 0, 0),\n      numeraireFees: route(10_000, 0, 0, 0),\n    },\n  };\n}\n\nexport function allFeesToBeneficiariesInNumeraire(): FeeRehypothecationStrategy {\n  return {\n    routingMode: FEE_REHYPOTHECATION_ROUTING_MODE_TO_BENEFICIARIES,\n    feeRouting: {\n      assetFees: route(0, 10_000, 0, 0),\n      numeraireFees: route(0, 10_000, 0, 0),\n    },\n  };\n}\n\nexport function inKindBeneficiaryFees(): FeeRehypothecationStrategy {\n  return {\n    routingMode: FEE_REHYPOTHECATION_ROUTING_MODE_TO_BENEFICIARIES,\n    feeRouting: {\n      assetFees: route(0, 0, 10_000, 0),\n      numeraireFees: route(0, 0, 10_000, 0),\n    },\n  };\n}\n\nexport function balancedFourBucket(): FeeRehypothecationStrategy {\n  return {\n    routingMode: FEE_REHYPOTHECATION_ROUTING_MODE_DIRECT_BUYBACK,\n    feeRouting: {\n      assetFees: route(2_500, 2_500, 2_500, 2_500),\n      numeraireFees: route(2_500, 2_500, 2_500, 2_500),\n    },\n  };\n}\n\nfunction validateRoute(label: string, value: FeeRouteArgs): void {\n  const weights = [\n    value.assetBuybackBps,\n    value.numeraireBuybackBps,\n    value.beneficiaryBps,\n    value.lpBps,\n  ];\n  if (\n    weights.some(\n      (weight) =>\n        !Number.isInteger(weight) ||\n        weight < 0 ||\n        weight > FEE_REHYPOTHECATION_BPS_DENOMINATOR,\n    ) ||\n    weights.reduce((sum, weight) => sum + weight, 0) !==\n      FEE_REHYPOTHECATION_BPS_DENOMINATOR\n  ) {\n    throw new Error(`${label} routing weights must sum to 10000 bps`);\n  }\n}\n\nexport function validateFeeRehypothecationStrategy(\n  strategy: FeeRehypothecationStrategy,\n): void {\n  if (\n    strategy.routingMode !== FEE_REHYPOTHECATION_ROUTING_MODE_DIRECT_BUYBACK &&\n    strategy.routingMode !== FEE_REHYPOTHECATION_ROUTING_MODE_TO_BENEFICIARIES\n  ) {\n    throw new Error('unsupported fee rehypothecation routing mode');\n  }\n  validateRoute('asset fee', strategy.feeRouting.assetFees);\n  validateRoute('numeraire fee', strategy.feeRouting.numeraireFees);\n}\n\nexport function feeRehypothecationRequiresBeneficiaries(\n  strategy: FeeRehypothecationStrategy,\n): boolean {\n  const { assetFees, numeraireFees } = strategy.feeRouting;\n  return (\n    strategy.routingMode ===\n      FEE_REHYPOTHECATION_ROUTING_MODE_TO_BENEFICIARIES ||\n    assetFees.beneficiaryBps > 0 ||\n    assetFees.numeraireBuybackBps > 0 ||\n    assetFees.lpBps > 0 ||\n    numeraireFees.beneficiaryBps > 0 ||\n    numeraireFees.assetBuybackBps > 0 ||\n    numeraireFees.lpBps > 0\n  );\n}\n\nfunction compareAddressBytes(left: Address, right: Address): number {\n  const encoder = getAddressEncoder();\n  const leftBytes = encoder.encode(left);\n  const rightBytes = encoder.encode(right);\n  for (let index = 0; index < leftBytes.length; index += 1) {\n    const difference = (leftBytes[index] ?? 0) - (rightBytes[index] ?? 0);\n    if (difference !== 0) {\n      return difference;\n    }\n  }\n  return 0;\n}\n\nexport function validateAndSortFeeRehypothecationBeneficiaries(\n  beneficiaries: ReadonlyArray<RehypeBeneficiaryInputArgs>,\n  strategy?: FeeRehypothecationStrategy,\n): RehypeBeneficiaryInputArgs[] {\n  const beneficiariesRequired =\n    strategy === undefined || feeRehypothecationRequiresBeneficiaries(strategy);\n  if (\n    (beneficiariesRequired && beneficiaries.length === 0) ||\n    beneficiaries.length > MAX_FEE_REHYPOTHECATION_BENEFICIARIES\n  ) {\n    throw new Error(\n      beneficiariesRequired\n        ? 'fee rehypothecation requires between 1 and 8 beneficiaries'\n        : 'fee rehypothecation supports at most 8 beneficiaries',\n    );\n  }\n\n  const sorted = [...beneficiaries].sort((left, right) =>\n    compareAddressBytes(left.wallet, right.wallet),\n  );\n  let shareTotal = 0;\n  for (const [index, beneficiary] of sorted.entries()) {\n    if (\n      !Number.isInteger(beneficiary.shareBps) ||\n      beneficiary.shareBps <= 0 ||\n      beneficiary.shareBps > FEE_REHYPOTHECATION_BPS_DENOMINATOR\n    ) {\n      throw new Error('beneficiary shares must be positive integer bps');\n    }\n    if (index > 0 && beneficiary.wallet === sorted[index - 1]?.wallet) {\n      throw new Error(`duplicate beneficiary ${beneficiary.wallet}`);\n    }\n    shareTotal += beneficiary.shareBps;\n  }\n  if (\n    beneficiaries.length > 0 &&\n    shareTotal !== FEE_REHYPOTHECATION_BPS_DENOMINATOR\n  ) {\n    throw new Error('beneficiary shares must sum to 10000 bps');\n  }\n\n  return sorted;\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  getOptionDecoder,\n  getOptionEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU64Decoder,\n  getU64Encoder,\n  getU8Decoder,\n  getU8Encoder,\n  type Codec,\n  type Decoder,\n  type Encoder,\n  type Option,\n  type OptionOrNullable,\n} from '@solana/kit';\n\nexport type ClaimArgs = { scheduleId: Option<number>; amount: bigint };\n\nexport type ClaimArgsArgs = {\n  scheduleId: OptionOrNullable<number>;\n  amount: number | bigint;\n};\n\nexport function getClaimArgsEncoder(): Encoder<ClaimArgsArgs> {\n  return getStructEncoder([\n    ['scheduleId', getOptionEncoder(getU8Encoder())],\n    ['amount', getU64Encoder()],\n  ]);\n}\n\nexport function getClaimArgsDecoder(): Decoder<ClaimArgs> {\n  return getStructDecoder([\n    ['scheduleId', getOptionDecoder(getU8Decoder())],\n    ['amount', getU64Decoder()],\n  ]);\n}\n\nexport function getClaimArgsCodec(): Codec<ClaimArgsArgs, ClaimArgs> {\n  return combineCodec(getClaimArgsEncoder(), getClaimArgsDecoder());\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  getArrayDecoder,\n  getArrayEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU64Decoder,\n  getU64Encoder,\n  type Codec,\n  type Decoder,\n  type Encoder,\n} from '@solana/kit';\nimport {\n  getVestingAllocationInputDecoder,\n  getVestingAllocationInputEncoder,\n  getVestingScheduleDecoder,\n  getVestingScheduleEncoder,\n  type VestingAllocationInput,\n  type VestingAllocationInputArgs,\n  type VestingSchedule,\n  type VestingScheduleArgs,\n} from '.';\n\nexport type InitializeVestingArgs = {\n  initialSupply: bigint;\n  schedules: Array<VestingSchedule>;\n  allocations: Array<VestingAllocationInput>;\n};\n\nexport type InitializeVestingArgsArgs = {\n  initialSupply: number | bigint;\n  schedules: Array<VestingScheduleArgs>;\n  allocations: Array<VestingAllocationInputArgs>;\n};\n\nexport function getInitializeVestingArgsEncoder(): Encoder<InitializeVestingArgsArgs> {\n  return getStructEncoder([\n    ['initialSupply', getU64Encoder()],\n    ['schedules', getArrayEncoder(getVestingScheduleEncoder())],\n    ['allocations', getArrayEncoder(getVestingAllocationInputEncoder())],\n  ]);\n}\n\nexport function getInitializeVestingArgsDecoder(): Decoder<InitializeVestingArgs> {\n  return getStructDecoder([\n    ['initialSupply', getU64Decoder()],\n    ['schedules', getArrayDecoder(getVestingScheduleDecoder())],\n    ['allocations', getArrayDecoder(getVestingAllocationInputDecoder())],\n  ]);\n}\n\nexport function getInitializeVestingArgsCodec(): Codec<\n  InitializeVestingArgsArgs,\n  InitializeVestingArgs\n> {\n  return combineCodec(\n    getInitializeVestingArgsEncoder(),\n    getInitializeVestingArgsDecoder(),\n  );\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getBytesDecoder,\n  getBytesEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU16Decoder,\n  getU16Encoder,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n  type ReadonlyUint8Array,\n} from '@solana/kit';\n\n/** Variable-length payload buffer. */\nexport type PayloadBuf = { len: number; bytes: ReadonlyUint8Array };\n\nexport type PayloadBufArgs = PayloadBuf;\n\nexport function getPayloadBufEncoder(): FixedSizeEncoder<PayloadBufArgs> {\n  return getStructEncoder([\n    ['len', getU16Encoder()],\n    ['bytes', fixEncoderSize(getBytesEncoder(), 256)],\n  ]);\n}\n\nexport function getPayloadBufDecoder(): FixedSizeDecoder<PayloadBuf> {\n  return getStructDecoder([\n    ['len', getU16Decoder()],\n    ['bytes', fixDecoderSize(getBytesDecoder(), 256)],\n  ]);\n}\n\nexport function getPayloadBufCodec(): FixedSizeCodec<\n  PayloadBufArgs,\n  PayloadBuf\n> {\n  return combineCodec(getPayloadBufEncoder(), getPayloadBufDecoder());\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  getAddressDecoder,\n  getAddressEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU64Decoder,\n  getU64Encoder,\n  getU8Decoder,\n  getU8Encoder,\n  type Address,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n} from '@solana/kit';\n\nexport type TokensReleased = {\n  vestingConfig: Address;\n  launch: Address;\n  beneficiary: Address;\n  scheduleId: number;\n  amount: bigint;\n};\n\nexport type TokensReleasedArgs = {\n  vestingConfig: Address;\n  launch: Address;\n  beneficiary: Address;\n  scheduleId: number;\n  amount: number | bigint;\n};\n\nexport function getTokensReleasedEncoder(): FixedSizeEncoder<TokensReleasedArgs> {\n  return getStructEncoder([\n    ['vestingConfig', getAddressEncoder()],\n    ['launch', getAddressEncoder()],\n    ['beneficiary', getAddressEncoder()],\n    ['scheduleId', getU8Encoder()],\n    ['amount', getU64Encoder()],\n  ]);\n}\n\nexport function getTokensReleasedDecoder(): FixedSizeDecoder<TokensReleased> {\n  return getStructDecoder([\n    ['vestingConfig', getAddressDecoder()],\n    ['launch', getAddressDecoder()],\n    ['beneficiary', getAddressDecoder()],\n    ['scheduleId', getU8Decoder()],\n    ['amount', getU64Decoder()],\n  ]);\n}\n\nexport function getTokensReleasedCodec(): FixedSizeCodec<\n  TokensReleasedArgs,\n  TokensReleased\n> {\n  return combineCodec(getTokensReleasedEncoder(), getTokensReleasedDecoder());\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getAddressDecoder,\n  getAddressEncoder,\n  getBytesDecoder,\n  getBytesEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU64Decoder,\n  getU64Encoder,\n  getU8Decoder,\n  getU8Encoder,\n  type Address,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n  type ReadonlyUint8Array,\n} from '@solana/kit';\n\nexport type VestingAllocation = {\n  beneficiary: Address;\n  scheduleId: number;\n  padding: ReadonlyUint8Array;\n  totalAmount: bigint;\n  releasedAmount: bigint;\n};\n\nexport type VestingAllocationArgs = {\n  beneficiary: Address;\n  scheduleId: number;\n  padding: ReadonlyUint8Array;\n  totalAmount: number | bigint;\n  releasedAmount: number | bigint;\n};\n\nexport function getVestingAllocationEncoder(): FixedSizeEncoder<VestingAllocationArgs> {\n  return getStructEncoder([\n    ['beneficiary', getAddressEncoder()],\n    ['scheduleId', getU8Encoder()],\n    ['padding', fixEncoderSize(getBytesEncoder(), 7)],\n    ['totalAmount', getU64Encoder()],\n    ['releasedAmount', getU64Encoder()],\n  ]);\n}\n\nexport function getVestingAllocationDecoder(): FixedSizeDecoder<VestingAllocation> {\n  return getStructDecoder([\n    ['beneficiary', getAddressDecoder()],\n    ['scheduleId', getU8Decoder()],\n    ['padding', fixDecoderSize(getBytesDecoder(), 7)],\n    ['totalAmount', getU64Decoder()],\n    ['releasedAmount', getU64Decoder()],\n  ]);\n}\n\nexport function getVestingAllocationCodec(): FixedSizeCodec<\n  VestingAllocationArgs,\n  VestingAllocation\n> {\n  return combineCodec(\n    getVestingAllocationEncoder(),\n    getVestingAllocationDecoder(),\n  );\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  getAddressDecoder,\n  getAddressEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU64Decoder,\n  getU64Encoder,\n  getU8Decoder,\n  getU8Encoder,\n  type Address,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n} from '@solana/kit';\n\nexport type VestingAllocationInput = {\n  beneficiary: Address;\n  scheduleId: number;\n  amount: bigint;\n};\n\nexport type VestingAllocationInputArgs = {\n  beneficiary: Address;\n  scheduleId: number;\n  amount: number | bigint;\n};\n\nexport function getVestingAllocationInputEncoder(): FixedSizeEncoder<VestingAllocationInputArgs> {\n  return getStructEncoder([\n    ['beneficiary', getAddressEncoder()],\n    ['scheduleId', getU8Encoder()],\n    ['amount', getU64Encoder()],\n  ]);\n}\n\nexport function getVestingAllocationInputDecoder(): FixedSizeDecoder<VestingAllocationInput> {\n  return getStructDecoder([\n    ['beneficiary', getAddressDecoder()],\n    ['scheduleId', getU8Decoder()],\n    ['amount', getU64Decoder()],\n  ]);\n}\n\nexport function getVestingAllocationInputCodec(): FixedSizeCodec<\n  VestingAllocationInputArgs,\n  VestingAllocationInput\n> {\n  return combineCodec(\n    getVestingAllocationInputEncoder(),\n    getVestingAllocationInputDecoder(),\n  );\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  getAddressDecoder,\n  getAddressEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU64Decoder,\n  getU64Encoder,\n  getU8Decoder,\n  getU8Encoder,\n  type Address,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n} from '@solana/kit';\n\nexport type VestingInitialized = {\n  vestingConfig: Address;\n  launch: Address;\n  baseMint: Address;\n  totalAllocation: bigint;\n  scheduleCount: number;\n  allocationCount: number;\n};\n\nexport type VestingInitializedArgs = {\n  vestingConfig: Address;\n  launch: Address;\n  baseMint: Address;\n  totalAllocation: number | bigint;\n  scheduleCount: number;\n  allocationCount: number;\n};\n\nexport function getVestingInitializedEncoder(): FixedSizeEncoder<VestingInitializedArgs> {\n  return getStructEncoder([\n    ['vestingConfig', getAddressEncoder()],\n    ['launch', getAddressEncoder()],\n    ['baseMint', getAddressEncoder()],\n    ['totalAllocation', getU64Encoder()],\n    ['scheduleCount', getU8Encoder()],\n    ['allocationCount', getU8Encoder()],\n  ]);\n}\n\nexport function getVestingInitializedDecoder(): FixedSizeDecoder<VestingInitialized> {\n  return getStructDecoder([\n    ['vestingConfig', getAddressDecoder()],\n    ['launch', getAddressDecoder()],\n    ['baseMint', getAddressDecoder()],\n    ['totalAllocation', getU64Decoder()],\n    ['scheduleCount', getU8Decoder()],\n    ['allocationCount', getU8Decoder()],\n  ]);\n}\n\nexport function getVestingInitializedCodec(): FixedSizeCodec<\n  VestingInitializedArgs,\n  VestingInitialized\n> {\n  return combineCodec(\n    getVestingInitializedEncoder(),\n    getVestingInitializedDecoder(),\n  );\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  getStructDecoder,\n  getStructEncoder,\n  getU64Decoder,\n  getU64Encoder,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n} from '@solana/kit';\n\nexport type VestingSchedule = { cliffSeconds: bigint; durationSeconds: bigint };\n\nexport type VestingScheduleArgs = {\n  cliffSeconds: number | bigint;\n  durationSeconds: number | bigint;\n};\n\nexport function getVestingScheduleEncoder(): FixedSizeEncoder<VestingScheduleArgs> {\n  return getStructEncoder([\n    ['cliffSeconds', getU64Encoder()],\n    ['durationSeconds', getU64Encoder()],\n  ]);\n}\n\nexport function getVestingScheduleDecoder(): FixedSizeDecoder<VestingSchedule> {\n  return getStructDecoder([\n    ['cliffSeconds', getU64Decoder()],\n    ['durationSeconds', getU64Decoder()],\n  ]);\n}\n\nexport function getVestingScheduleCodec(): FixedSizeCodec<\n  VestingScheduleArgs,\n  VestingSchedule\n> {\n  return combineCodec(getVestingScheduleEncoder(), getVestingScheduleDecoder());\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  assertAccountExists,\n  assertAccountsExist,\n  combineCodec,\n  decodeAccount,\n  fetchEncodedAccount,\n  fetchEncodedAccounts,\n  fixDecoderSize,\n  fixEncoderSize,\n  getAddressDecoder,\n  getAddressEncoder,\n  getBytesDecoder,\n  getBytesEncoder,\n  getI64Decoder,\n  getI64Encoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU16Decoder,\n  getU16Encoder,\n  getU32Decoder,\n  getU32Encoder,\n  getU64Decoder,\n  getU64Encoder,\n  getU8Decoder,\n  getU8Encoder,\n  transformEncoder,\n  type Account,\n  type Address,\n  type EncodedAccount,\n  type FetchAccountConfig,\n  type FetchAccountsConfig,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n  type MaybeAccount,\n  type MaybeEncodedAccount,\n  type ReadonlyUint8Array,\n} from '@solana/kit';\nimport {\n  getPayloadBufDecoder,\n  getPayloadBufEncoder,\n  type PayloadBuf,\n  type PayloadBufArgs,\n} from '../types';\n\nexport const LAUNCH_DISCRIMINATOR = new Uint8Array([\n  144, 51, 51, 163, 206, 85, 213, 38,\n]);\n\nexport function getLaunchDiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(LAUNCH_DISCRIMINATOR);\n}\n\nexport type Launch = {\n  discriminator: ReadonlyUint8Array;\n  authority: Address;\n  namespace: Address;\n  launchId: ReadonlyUint8Array;\n  phase: number;\n  bump: number;\n  launchAuthorityBump: number;\n  pad0: ReadonlyUint8Array;\n  baseMint: Address;\n  quoteMint: Address;\n  baseVault: Address;\n  quoteVault: Address;\n  baseTotalSupply: bigint;\n  baseForDistribution: bigint;\n  baseForLiquidity: bigint;\n  baseForCurve: bigint;\n  curveVirtualBase: bigint;\n  curveVirtualQuote: bigint;\n  swapFeeBps: number;\n  pad1: ReadonlyUint8Array;\n  allowBuy: number;\n  allowSell: number;\n  pad2: ReadonlyUint8Array;\n  hookProgram: Address;\n  hookFlags: number;\n  pad3: ReadonlyUint8Array;\n  hookPayload: PayloadBuf;\n  migratorProgram: Address;\n  migratorInitPayload: PayloadBuf;\n  migratorMigratePayload: PayloadBuf;\n  curveKind: number;\n  swapLock: number;\n  vestingEnabled: number;\n  pad4: ReadonlyUint8Array;\n  curveParams: PayloadBuf;\n  createdAt: bigint;\n  reserved: ReadonlyUint8Array;\n};\n\nexport type LaunchArgs = {\n  authority: Address;\n  namespace: Address;\n  launchId: ReadonlyUint8Array;\n  phase: number;\n  bump: number;\n  launchAuthorityBump: number;\n  pad0: ReadonlyUint8Array;\n  baseMint: Address;\n  quoteMint: Address;\n  baseVault: Address;\n  quoteVault: Address;\n  baseTotalSupply: number | bigint;\n  baseForDistribution: number | bigint;\n  baseForLiquidity: number | bigint;\n  baseForCurve: number | bigint;\n  curveVirtualBase: number | bigint;\n  curveVirtualQuote: number | bigint;\n  swapFeeBps: number;\n  pad1: ReadonlyUint8Array;\n  allowBuy: number;\n  allowSell: number;\n  pad2: ReadonlyUint8Array;\n  hookProgram: Address;\n  hookFlags: number;\n  pad3: ReadonlyUint8Array;\n  hookPayload: PayloadBufArgs;\n  migratorProgram: Address;\n  migratorInitPayload: PayloadBufArgs;\n  migratorMigratePayload: PayloadBufArgs;\n  curveKind: number;\n  swapLock: number;\n  vestingEnabled: number;\n  pad4: ReadonlyUint8Array;\n  curveParams: PayloadBufArgs;\n  createdAt: number | bigint;\n  reserved: ReadonlyUint8Array;\n};\n\n/** Gets the encoder for {@link LaunchArgs} account data. */\nexport function getLaunchEncoder(): FixedSizeEncoder<LaunchArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['authority', getAddressEncoder()],\n      ['namespace', getAddressEncoder()],\n      ['launchId', fixEncoderSize(getBytesEncoder(), 32)],\n      ['phase', getU8Encoder()],\n      ['bump', getU8Encoder()],\n      ['launchAuthorityBump', getU8Encoder()],\n      ['pad0', fixEncoderSize(getBytesEncoder(), 5)],\n      ['baseMint', getAddressEncoder()],\n      ['quoteMint', getAddressEncoder()],\n      ['baseVault', getAddressEncoder()],\n      ['quoteVault', getAddressEncoder()],\n      ['baseTotalSupply', getU64Encoder()],\n      ['baseForDistribution', getU64Encoder()],\n      ['baseForLiquidity', getU64Encoder()],\n      ['baseForCurve', getU64Encoder()],\n      ['curveVirtualBase', getU64Encoder()],\n      ['curveVirtualQuote', getU64Encoder()],\n      ['swapFeeBps', getU16Encoder()],\n      ['pad1', fixEncoderSize(getBytesEncoder(), 6)],\n      ['allowBuy', getU8Encoder()],\n      ['allowSell', getU8Encoder()],\n      ['pad2', fixEncoderSize(getBytesEncoder(), 6)],\n      ['hookProgram', getAddressEncoder()],\n      ['hookFlags', getU32Encoder()],\n      ['pad3', fixEncoderSize(getBytesEncoder(), 4)],\n      ['hookPayload', getPayloadBufEncoder()],\n      ['migratorProgram', getAddressEncoder()],\n      ['migratorInitPayload', getPayloadBufEncoder()],\n      ['migratorMigratePayload', getPayloadBufEncoder()],\n      ['curveKind', getU8Encoder()],\n      ['swapLock', getU8Encoder()],\n      ['vestingEnabled', getU8Encoder()],\n      ['pad4', fixEncoderSize(getBytesEncoder(), 5)],\n      ['curveParams', getPayloadBufEncoder()],\n      ['createdAt', getI64Encoder()],\n      ['reserved', fixEncoderSize(getBytesEncoder(), 64)],\n    ]),\n    (value) => ({ ...value, discriminator: LAUNCH_DISCRIMINATOR }),\n  );\n}\n\n/** Gets the decoder for {@link Launch} account data. */\nexport function getLaunchDecoder(): FixedSizeDecoder<Launch> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['authority', getAddressDecoder()],\n    ['namespace', getAddressDecoder()],\n    ['launchId', fixDecoderSize(getBytesDecoder(), 32)],\n    ['phase', getU8Decoder()],\n    ['bump', getU8Decoder()],\n    ['launchAuthorityBump', getU8Decoder()],\n    ['pad0', fixDecoderSize(getBytesDecoder(), 5)],\n    ['baseMint', getAddressDecoder()],\n    ['quoteMint', getAddressDecoder()],\n    ['baseVault', getAddressDecoder()],\n    ['quoteVault', getAddressDecoder()],\n    ['baseTotalSupply', getU64Decoder()],\n    ['baseForDistribution', getU64Decoder()],\n    ['baseForLiquidity', getU64Decoder()],\n    ['baseForCurve', getU64Decoder()],\n    ['curveVirtualBase', getU64Decoder()],\n    ['curveVirtualQuote', getU64Decoder()],\n    ['swapFeeBps', getU16Decoder()],\n    ['pad1', fixDecoderSize(getBytesDecoder(), 6)],\n    ['allowBuy', getU8Decoder()],\n    ['allowSell', getU8Decoder()],\n    ['pad2', fixDecoderSize(getBytesDecoder(), 6)],\n    ['hookProgram', getAddressDecoder()],\n    ['hookFlags', getU32Decoder()],\n    ['pad3', fixDecoderSize(getBytesDecoder(), 4)],\n    ['hookPayload', getPayloadBufDecoder()],\n    ['migratorProgram', getAddressDecoder()],\n    ['migratorInitPayload', getPayloadBufDecoder()],\n    ['migratorMigratePayload', getPayloadBufDecoder()],\n    ['curveKind', getU8Decoder()],\n    ['swapLock', getU8Decoder()],\n    ['vestingEnabled', getU8Decoder()],\n    ['pad4', fixDecoderSize(getBytesDecoder(), 5)],\n    ['curveParams', getPayloadBufDecoder()],\n    ['createdAt', getI64Decoder()],\n    ['reserved', fixDecoderSize(getBytesDecoder(), 64)],\n  ]);\n}\n\n/** Gets the codec for {@link Launch} account data. */\nexport function getLaunchCodec(): FixedSizeCodec<LaunchArgs, Launch> {\n  return combineCodec(getLaunchEncoder(), getLaunchDecoder());\n}\n\nexport function decodeLaunch<TAddress extends string = string>(\n  encodedAccount: EncodedAccount<TAddress>,\n): Account<Launch, TAddress>;\nexport function decodeLaunch<TAddress extends string = string>(\n  encodedAccount: MaybeEncodedAccount<TAddress>,\n): MaybeAccount<Launch, TAddress>;\nexport function decodeLaunch<TAddress extends string = string>(\n  encodedAccount: EncodedAccount<TAddress> | MaybeEncodedAccount<TAddress>,\n): Account<Launch, TAddress> | MaybeAccount<Launch, TAddress> {\n  return decodeAccount(\n    encodedAccount as MaybeEncodedAccount<TAddress>,\n    getLaunchDecoder(),\n  );\n}\n\nexport async function fetchLaunch<TAddress extends string = string>(\n  rpc: Parameters<typeof fetchEncodedAccount>[0],\n  address: Address<TAddress>,\n  config?: FetchAccountConfig,\n): Promise<Account<Launch, TAddress>> {\n  const maybeAccount = await fetchMaybeLaunch(rpc, address, config);\n  assertAccountExists(maybeAccount);\n  return maybeAccount;\n}\n\nexport async function fetchMaybeLaunch<TAddress extends string = string>(\n  rpc: Parameters<typeof fetchEncodedAccount>[0],\n  address: Address<TAddress>,\n  config?: FetchAccountConfig,\n): Promise<MaybeAccount<Launch, TAddress>> {\n  const maybeAccount = await fetchEncodedAccount(rpc, address, config);\n  return decodeLaunch(maybeAccount);\n}\n\nexport async function fetchAllLaunch(\n  rpc: Parameters<typeof fetchEncodedAccounts>[0],\n  addresses: Array<Address>,\n  config?: FetchAccountsConfig,\n): Promise<Account<Launch>[]> {\n  const maybeAccounts = await fetchAllMaybeLaunch(rpc, addresses, config);\n  assertAccountsExist(maybeAccounts);\n  return maybeAccounts;\n}\n\nexport async function fetchAllMaybeLaunch(\n  rpc: Parameters<typeof fetchEncodedAccounts>[0],\n  addresses: Array<Address>,\n  config?: FetchAccountsConfig,\n): Promise<MaybeAccount<Launch>[]> {\n  const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config);\n  return maybeAccounts.map((maybeAccount) => decodeLaunch(maybeAccount));\n}\n\nexport function getLaunchSize(): number {\n  return 1488;\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  assertAccountExists,\n  assertAccountsExist,\n  combineCodec,\n  decodeAccount,\n  fetchEncodedAccount,\n  fetchEncodedAccounts,\n  fixDecoderSize,\n  fixEncoderSize,\n  getAddressDecoder,\n  getAddressEncoder,\n  getArrayDecoder,\n  getArrayEncoder,\n  getBytesDecoder,\n  getBytesEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU64Decoder,\n  getU64Encoder,\n  getU8Decoder,\n  getU8Encoder,\n  transformEncoder,\n  type Account,\n  type Address,\n  type EncodedAccount,\n  type FetchAccountConfig,\n  type FetchAccountsConfig,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n  type MaybeAccount,\n  type MaybeEncodedAccount,\n  type ReadonlyUint8Array,\n} from '@solana/kit';\nimport {\n  getVestingAllocationDecoder,\n  getVestingAllocationEncoder,\n  getVestingScheduleDecoder,\n  getVestingScheduleEncoder,\n  type VestingAllocation,\n  type VestingAllocationArgs,\n  type VestingSchedule,\n  type VestingScheduleArgs,\n} from '../types';\n\nexport const VESTING_CONFIG_DISCRIMINATOR = new Uint8Array([\n  0, 138, 71, 135, 26, 29, 43, 125,\n]);\n\nexport function getVestingConfigDiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(\n    VESTING_CONFIG_DISCRIMINATOR,\n  );\n}\n\nexport type VestingConfig = {\n  discriminator: ReadonlyUint8Array;\n  launch: Address;\n  baseMint: Address;\n  baseTokenProgram: Address;\n  initialSupply: bigint;\n  totalAllocation: bigint;\n  schedules: Array<VestingSchedule>;\n  allocations: Array<VestingAllocation>;\n  version: number;\n  bump: number;\n  scheduleCount: number;\n  allocationCount: number;\n  reserved: ReadonlyUint8Array;\n};\n\nexport type VestingConfigArgs = {\n  launch: Address;\n  baseMint: Address;\n  baseTokenProgram: Address;\n  initialSupply: number | bigint;\n  totalAllocation: number | bigint;\n  schedules: Array<VestingScheduleArgs>;\n  allocations: Array<VestingAllocationArgs>;\n  version: number;\n  bump: number;\n  scheduleCount: number;\n  allocationCount: number;\n  reserved: ReadonlyUint8Array;\n};\n\n/** Gets the encoder for {@link VestingConfigArgs} account data. */\nexport function getVestingConfigEncoder(): FixedSizeEncoder<VestingConfigArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['launch', getAddressEncoder()],\n      ['baseMint', getAddressEncoder()],\n      ['baseTokenProgram', getAddressEncoder()],\n      ['initialSupply', getU64Encoder()],\n      ['totalAllocation', getU64Encoder()],\n      ['schedules', getArrayEncoder(getVestingScheduleEncoder(), { size: 8 })],\n      [\n        'allocations',\n        getArrayEncoder(getVestingAllocationEncoder(), { size: 16 }),\n      ],\n      ['version', getU8Encoder()],\n      ['bump', getU8Encoder()],\n      ['scheduleCount', getU8Encoder()],\n      ['allocationCount', getU8Encoder()],\n      ['reserved', fixEncoderSize(getBytesEncoder(), 60)],\n    ]),\n    (value) => ({ ...value, discriminator: VESTING_CONFIG_DISCRIMINATOR }),\n  );\n}\n\n/** Gets the decoder for {@link VestingConfig} account data. */\nexport function getVestingConfigDecoder(): FixedSizeDecoder<VestingConfig> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['launch', getAddressDecoder()],\n    ['baseMint', getAddressDecoder()],\n    ['baseTokenProgram', getAddressDecoder()],\n    ['initialSupply', getU64Decoder()],\n    ['totalAllocation', getU64Decoder()],\n    ['schedules', getArrayDecoder(getVestingScheduleDecoder(), { size: 8 })],\n    [\n      'allocations',\n      getArrayDecoder(getVestingAllocationDecoder(), { size: 16 }),\n    ],\n    ['version', getU8Decoder()],\n    ['bump', getU8Decoder()],\n    ['scheduleCount', getU8Decoder()],\n    ['allocationCount', getU8Decoder()],\n    ['reserved', fixDecoderSize(getBytesDecoder(), 60)],\n  ]);\n}\n\n/** Gets the codec for {@link VestingConfig} account data. */\nexport function getVestingConfigCodec(): FixedSizeCodec<\n  VestingConfigArgs,\n  VestingConfig\n> {\n  return combineCodec(getVestingConfigEncoder(), getVestingConfigDecoder());\n}\n\nexport function decodeVestingConfig<TAddress extends string = string>(\n  encodedAccount: EncodedAccount<TAddress>,\n): Account<VestingConfig, TAddress>;\nexport function decodeVestingConfig<TAddress extends string = string>(\n  encodedAccount: MaybeEncodedAccount<TAddress>,\n): MaybeAccount<VestingConfig, TAddress>;\nexport function decodeVestingConfig<TAddress extends string = string>(\n  encodedAccount: EncodedAccount<TAddress> | MaybeEncodedAccount<TAddress>,\n): Account<VestingConfig, TAddress> | MaybeAccount<VestingConfig, TAddress> {\n  return decodeAccount(\n    encodedAccount as MaybeEncodedAccount<TAddress>,\n    getVestingConfigDecoder(),\n  );\n}\n\nexport async function fetchVestingConfig<TAddress extends string = string>(\n  rpc: Parameters<typeof fetchEncodedAccount>[0],\n  address: Address<TAddress>,\n  config?: FetchAccountConfig,\n): Promise<Account<VestingConfig, TAddress>> {\n  const maybeAccount = await fetchMaybeVestingConfig(rpc, address, config);\n  assertAccountExists(maybeAccount);\n  return maybeAccount;\n}\n\nexport async function fetchMaybeVestingConfig<TAddress extends string = string>(\n  rpc: Parameters<typeof fetchEncodedAccount>[0],\n  address: Address<TAddress>,\n  config?: FetchAccountConfig,\n): Promise<MaybeAccount<VestingConfig, TAddress>> {\n  const maybeAccount = await fetchEncodedAccount(rpc, address, config);\n  return decodeVestingConfig(maybeAccount);\n}\n\nexport async function fetchAllVestingConfig(\n  rpc: Parameters<typeof fetchEncodedAccounts>[0],\n  addresses: Array<Address>,\n  config?: FetchAccountsConfig,\n): Promise<Account<VestingConfig>[]> {\n  const maybeAccounts = await fetchAllMaybeVestingConfig(\n    rpc,\n    addresses,\n    config,\n  );\n  assertAccountsExist(maybeAccounts);\n  return maybeAccounts;\n}\n\nexport async function fetchAllMaybeVestingConfig(\n  rpc: Parameters<typeof fetchEncodedAccounts>[0],\n  addresses: Array<Address>,\n  config?: FetchAccountsConfig,\n): Promise<MaybeAccount<VestingConfig>[]> {\n  const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config);\n  return maybeAccounts.map((maybeAccount) => decodeVestingConfig(maybeAccount));\n}\n\nexport function getVestingConfigSize(): number {\n  return 1208;\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getAddressEncoder,\n  getBytesDecoder,\n  getBytesEncoder,\n  getOptionDecoder,\n  getOptionEncoder,\n  getProgramDerivedAddress,\n  getStructDecoder,\n  getStructEncoder,\n  getU64Decoder,\n  getU64Encoder,\n  getU8Decoder,\n  getU8Encoder,\n  SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS,\n  SolanaError,\n  transformEncoder,\n  type AccountMeta,\n  type AccountSignerMeta,\n  type Address,\n  type Codec,\n  type Decoder,\n  type Encoder,\n  type Instruction,\n  type InstructionWithAccounts,\n  type InstructionWithData,\n  type Option,\n  type OptionOrNullable,\n  type ReadonlyAccount,\n  type ReadonlyUint8Array,\n  type TransactionSigner,\n  type WritableAccount,\n  type WritableSignerAccount,\n} from '@solana/kit';\nimport {\n  getAccountMetaFactory,\n  getAddressFromResolvedInstructionAccount,\n  type ResolvedInstructionAccount,\n} from '@solana/program-client-core';\nimport { DOPPLER_VESTING_PROGRAM_ADDRESS } from '../programs';\n\nexport const CLAIM_DISCRIMINATOR = new Uint8Array([\n  62, 198, 214, 193, 213, 159, 108, 210,\n]);\n\nexport function getClaimDiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(CLAIM_DISCRIMINATOR);\n}\n\nexport type ClaimInstruction<\n  TProgram extends string = typeof DOPPLER_VESTING_PROGRAM_ADDRESS,\n  TAccountPayer extends string | AccountMeta<string> = string,\n  TAccountBeneficiary extends string | AccountMeta<string> = string,\n  TAccountLaunch extends string | AccountMeta<string> = string,\n  TAccountVestingConfig extends string | AccountMeta<string> = string,\n  TAccountBaseMint extends string | AccountMeta<string> = string,\n  TAccountVestingVault extends string | AccountMeta<string> = string,\n  TAccountBeneficiaryTokenAccount extends string | AccountMeta<string> = string,\n  TAccountBaseTokenProgram extends string | AccountMeta<string> = string,\n  TAccountAssociatedTokenProgram extends string | AccountMeta<string> =\n    'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL',\n  TAccountSystemProgram extends string | AccountMeta<string> =\n    '11111111111111111111111111111111',\n  TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n  InstructionWithData<ReadonlyUint8Array> &\n  InstructionWithAccounts<\n    [\n      TAccountPayer extends string\n        ? WritableSignerAccount<TAccountPayer> &\n            AccountSignerMeta<TAccountPayer>\n        : TAccountPayer,\n      TAccountBeneficiary extends string\n        ? ReadonlyAccount<TAccountBeneficiary>\n        : TAccountBeneficiary,\n      TAccountLaunch extends string\n        ? ReadonlyAccount<TAccountLaunch>\n        : TAccountLaunch,\n      TAccountVestingConfig extends string\n        ? WritableAccount<TAccountVestingConfig>\n        : TAccountVestingConfig,\n      TAccountBaseMint extends string\n        ? ReadonlyAccount<TAccountBaseMint>\n        : TAccountBaseMint,\n      TAccountVestingVault extends string\n        ? WritableAccount<TAccountVestingVault>\n        : TAccountVestingVault,\n      TAccountBeneficiaryTokenAccount extends string\n        ? WritableAccount<TAccountBeneficiaryTokenAccount>\n        : TAccountBeneficiaryTokenAccount,\n      TAccountBaseTokenProgram extends string\n        ? ReadonlyAccount<TAccountBaseTokenProgram>\n        : TAccountBaseTokenProgram,\n      TAccountAssociatedTokenProgram extends string\n        ? ReadonlyAccount<TAccountAssociatedTokenProgram>\n        : TAccountAssociatedTokenProgram,\n      TAccountSystemProgram extends string\n        ? ReadonlyAccount<TAccountSystemProgram>\n        : TAccountSystemProgram,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type ClaimInstructionData = {\n  discriminator: ReadonlyUint8Array;\n  scheduleId: Option<number>;\n  amount: bigint;\n};\n\nexport type ClaimInstructionDataArgs = {\n  scheduleId: OptionOrNullable<number>;\n  amount: number | bigint;\n};\n\nexport function getClaimInstructionDataEncoder(): Encoder<ClaimInstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['scheduleId', getOptionEncoder(getU8Encoder())],\n      ['amount', getU64Encoder()],\n    ]),\n    (value) => ({ ...value, discriminator: CLAIM_DISCRIMINATOR }),\n  );\n}\n\nexport function getClaimInstructionDataDecoder(): Decoder<ClaimInstructionData> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['scheduleId', getOptionDecoder(getU8Decoder())],\n    ['amount', getU64Decoder()],\n  ]);\n}\n\nexport function getClaimInstructionDataCodec(): Codec<\n  ClaimInstructionDataArgs,\n  ClaimInstructionData\n> {\n  return combineCodec(\n    getClaimInstructionDataEncoder(),\n    getClaimInstructionDataDecoder(),\n  );\n}\n\nexport type ClaimAsyncInput<\n  TAccountPayer extends string = string,\n  TAccountBeneficiary extends string = string,\n  TAccountLaunch extends string = string,\n  TAccountVestingConfig extends string = string,\n  TAccountBaseMint extends string = string,\n  TAccountVestingVault extends string = string,\n  TAccountBeneficiaryTokenAccount extends string = string,\n  TAccountBaseTokenProgram extends string = string,\n  TAccountAssociatedTokenProgram extends string = string,\n  TAccountSystemProgram extends string = string,\n> = {\n  payer: TransactionSigner<TAccountPayer>;\n  beneficiary: Address<TAccountBeneficiary>;\n  launch: Address<TAccountLaunch>;\n  vestingConfig?: Address<TAccountVestingConfig>;\n  baseMint: Address<TAccountBaseMint>;\n  vestingVault?: Address<TAccountVestingVault>;\n  beneficiaryTokenAccount?: Address<TAccountBeneficiaryTokenAccount>;\n  baseTokenProgram: Address<TAccountBaseTokenProgram>;\n  associatedTokenProgram?: Address<TAccountAssociatedTokenProgram>;\n  systemProgram?: Address<TAccountSystemProgram>;\n  scheduleId: ClaimInstructionDataArgs['scheduleId'];\n  amount: ClaimInstructionDataArgs['amount'];\n};\n\nexport async function getClaimInstructionAsync<\n  TAccountPayer extends string,\n  TAccountBeneficiary extends string,\n  TAccountLaunch extends string,\n  TAccountVestingConfig extends string,\n  TAccountBaseMint extends string,\n  TAccountVestingVault extends string,\n  TAccountBeneficiaryTokenAccount extends string,\n  TAccountBaseTokenProgram extends string,\n  TAccountAssociatedTokenProgram extends string,\n  TAccountSystemProgram extends string,\n  TProgramAddress extends Address = typeof DOPPLER_VESTING_PROGRAM_ADDRESS,\n>(\n  input: ClaimAsyncInput<\n    TAccountPayer,\n    TAccountBeneficiary,\n    TAccountLaunch,\n    TAccountVestingConfig,\n    TAccountBaseMint,\n    TAccountVestingVault,\n    TAccountBeneficiaryTokenAccount,\n    TAccountBaseTokenProgram,\n    TAccountAssociatedTokenProgram,\n    TAccountSystemProgram\n  >,\n  config?: { programAddress?: TProgramAddress },\n): Promise<\n  ClaimInstruction<\n    TProgramAddress,\n    TAccountPayer,\n    TAccountBeneficiary,\n    TAccountLaunch,\n    TAccountVestingConfig,\n    TAccountBaseMint,\n    TAccountVestingVault,\n    TAccountBeneficiaryTokenAccount,\n    TAccountBaseTokenProgram,\n    TAccountAssociatedTokenProgram,\n    TAccountSystemProgram\n  >\n> {\n  // Program address.\n  const programAddress =\n    config?.programAddress ?? DOPPLER_VESTING_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    payer: { value: input.payer ?? null, isWritable: true },\n    beneficiary: { value: input.beneficiary ?? null, isWritable: false },\n    launch: { value: input.launch ?? null, isWritable: false },\n    vestingConfig: { value: input.vestingConfig ?? null, isWritable: true },\n    baseMint: { value: input.baseMint ?? null, isWritable: false },\n    vestingVault: { value: input.vestingVault ?? null, isWritable: true },\n    beneficiaryTokenAccount: {\n      value: input.beneficiaryTokenAccount ?? null,\n      isWritable: true,\n    },\n    baseTokenProgram: {\n      value: input.baseTokenProgram ?? null,\n      isWritable: false,\n    },\n    associatedTokenProgram: {\n      value: input.associatedTokenProgram ?? null,\n      isWritable: false,\n    },\n    systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedInstructionAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolve default values.\n  if (!accounts.vestingConfig.value) {\n    accounts.vestingConfig.value = await getProgramDerivedAddress({\n      programAddress,\n      seeds: [\n        getBytesEncoder().encode(\n          new Uint8Array([\n            118, 101, 115, 116, 105, 110, 103, 95, 99, 111, 110, 102, 105, 103,\n          ]),\n        ),\n        getAddressEncoder().encode(\n          getAddressFromResolvedInstructionAccount(\n            'launch',\n            accounts.launch.value,\n          ),\n        ),\n        getAddressEncoder().encode(\n          getAddressFromResolvedInstructionAccount(\n            'baseMint',\n            accounts.baseMint.value,\n          ),\n        ),\n      ],\n    });\n  }\n  if (!accounts.vestingVault.value) {\n    accounts.vestingVault.value = await getProgramDerivedAddress({\n      programAddress:\n        'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL' as Address<'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL'>,\n      seeds: [\n        getAddressEncoder().encode(\n          getAddressFromResolvedInstructionAccount(\n            'vestingConfig',\n            accounts.vestingConfig.value,\n          ),\n        ),\n        getAddressEncoder().encode(\n          getAddressFromResolvedInstructionAccount(\n            'baseTokenProgram',\n            accounts.baseTokenProgram.value,\n          ),\n        ),\n        getAddressEncoder().encode(\n          getAddressFromResolvedInstructionAccount(\n            'baseMint',\n            accounts.baseMint.value,\n          ),\n        ),\n      ],\n    });\n  }\n  if (!accounts.beneficiaryTokenAccount.value) {\n    accounts.beneficiaryTokenAccount.value = await getProgramDerivedAddress({\n      programAddress:\n        'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL' as Address<'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL'>,\n      seeds: [\n        getAddressEncoder().encode(\n          getAddressFromResolvedInstructionAccount(\n            'beneficiary',\n            accounts.beneficiary.value,\n          ),\n        ),\n        getAddressEncoder().encode(\n          getAddressFromResolvedInstructionAccount(\n            'baseTokenProgram',\n            accounts.baseTokenProgram.value,\n          ),\n        ),\n        getAddressEncoder().encode(\n          getAddressFromResolvedInstructionAccount(\n            'baseMint',\n            accounts.baseMint.value,\n          ),\n        ),\n      ],\n    });\n  }\n  if (!accounts.associatedTokenProgram.value) {\n    accounts.associatedTokenProgram.value =\n      'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL' as Address<'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL'>;\n  }\n  if (!accounts.systemProgram.value) {\n    accounts.systemProgram.value =\n      '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n  }\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta('payer', accounts.payer),\n      getAccountMeta('beneficiary', accounts.beneficiary),\n      getAccountMeta('launch', accounts.launch),\n      getAccountMeta('vestingConfig', accounts.vestingConfig),\n      getAccountMeta('baseMint', accounts.baseMint),\n      getAccountMeta('vestingVault', accounts.vestingVault),\n      getAccountMeta(\n        'beneficiaryTokenAccount',\n        accounts.beneficiaryTokenAccount,\n      ),\n      getAccountMeta('baseTokenProgram', accounts.baseTokenProgram),\n      getAccountMeta('associatedTokenProgram', accounts.associatedTokenProgram),\n      getAccountMeta('systemProgram', accounts.systemProgram),\n    ],\n    data: getClaimInstructionDataEncoder().encode(\n      args as ClaimInstructionDataArgs,\n    ),\n    programAddress,\n  } as ClaimInstruction<\n    TProgramAddress,\n    TAccountPayer,\n    TAccountBeneficiary,\n    TAccountLaunch,\n    TAccountVestingConfig,\n    TAccountBaseMint,\n    TAccountVestingVault,\n    TAccountBeneficiaryTokenAccount,\n    TAccountBaseTokenProgram,\n    TAccountAssociatedTokenProgram,\n    TAccountSystemProgram\n  >);\n}\n\nexport type ClaimInput<\n  TAccountPayer extends string = string,\n  TAccountBeneficiary extends string = string,\n  TAccountLaunch extends string = string,\n  TAccountVestingConfig extends string = string,\n  TAccountBaseMint extends string = string,\n  TAccountVestingVault extends string = string,\n  TAccountBeneficiaryTokenAccount extends string = string,\n  TAccountBaseTokenProgram extends string = string,\n  TAccountAssociatedTokenProgram extends string = string,\n  TAccountSystemProgram extends string = string,\n> = {\n  payer: TransactionSigner<TAccountPayer>;\n  beneficiary: Address<TAccountBeneficiary>;\n  launch: Address<TAccountLaunch>;\n  vestingConfig: Address<TAccountVestingConfig>;\n  baseMint: Address<TAccountBaseMint>;\n  vestingVault: Address<TAccountVestingVault>;\n  beneficiaryTokenAccount: Address<TAccountBeneficiaryTokenAccount>;\n  baseTokenProgram: Address<TAccountBaseTokenProgram>;\n  associatedTokenProgram?: Address<TAccountAssociatedTokenProgram>;\n  systemProgram?: Address<TAccountSystemProgram>;\n  scheduleId: ClaimInstructionDataArgs['scheduleId'];\n  amount: ClaimInstructionDataArgs['amount'];\n};\n\nexport function getClaimInstruction<\n  TAccountPayer extends string,\n  TAccountBeneficiary extends string,\n  TAccountLaunch extends string,\n  TAccountVestingConfig extends string,\n  TAccountBaseMint extends string,\n  TAccountVestingVault extends string,\n  TAccountBeneficiaryTokenAccount extends string,\n  TAccountBaseTokenProgram extends string,\n  TAccountAssociatedTokenProgram extends string,\n  TAccountSystemProgram extends string,\n  TProgramAddress extends Address = typeof DOPPLER_VESTING_PROGRAM_ADDRESS,\n>(\n  input: ClaimInput<\n    TAccountPayer,\n    TAccountBeneficiary,\n    TAccountLaunch,\n    TAccountVestingConfig,\n    TAccountBaseMint,\n    TAccountVestingVault,\n    TAccountBeneficiaryTokenAccount,\n    TAccountBaseTokenProgram,\n    TAccountAssociatedTokenProgram,\n    TAccountSystemProgram\n  >,\n  config?: { programAddress?: TProgramAddress },\n): ClaimInstruction<\n  TProgramAddress,\n  TAccountPayer,\n  TAccountBeneficiary,\n  TAccountLaunch,\n  TAccountVestingConfig,\n  TAccountBaseMint,\n  TAccountVestingVault,\n  TAccountBeneficiaryTokenAccount,\n  TAccountBaseTokenProgram,\n  TAccountAssociatedTokenProgram,\n  TAccountSystemProgram\n> {\n  // Program address.\n  const programAddress =\n    config?.programAddress ?? DOPPLER_VESTING_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    payer: { value: input.payer ?? null, isWritable: true },\n    beneficiary: { value: input.beneficiary ?? null, isWritable: false },\n    launch: { value: input.launch ?? null, isWritable: false },\n    vestingConfig: { value: input.vestingConfig ?? null, isWritable: true },\n    baseMint: { value: input.baseMint ?? null, isWritable: false },\n    vestingVault: { value: input.vestingVault ?? null, isWritable: true },\n    beneficiaryTokenAccount: {\n      value: input.beneficiaryTokenAccount ?? null,\n      isWritable: true,\n    },\n    baseTokenProgram: {\n      value: input.baseTokenProgram ?? null,\n      isWritable: false,\n    },\n    associatedTokenProgram: {\n      value: input.associatedTokenProgram ?? null,\n      isWritable: false,\n    },\n    systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedInstructionAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolve default values.\n  if (!accounts.associatedTokenProgram.value) {\n    accounts.associatedTokenProgram.value =\n      'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL' as Address<'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL'>;\n  }\n  if (!accounts.systemProgram.value) {\n    accounts.systemProgram.value =\n      '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n  }\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta('payer', accounts.payer),\n      getAccountMeta('beneficiary', accounts.beneficiary),\n      getAccountMeta('launch', accounts.launch),\n      getAccountMeta('vestingConfig', accounts.vestingConfig),\n      getAccountMeta('baseMint', accounts.baseMint),\n      getAccountMeta('vestingVault', accounts.vestingVault),\n      getAccountMeta(\n        'beneficiaryTokenAccount',\n        accounts.beneficiaryTokenAccount,\n      ),\n      getAccountMeta('baseTokenProgram', accounts.baseTokenProgram),\n      getAccountMeta('associatedTokenProgram', accounts.associatedTokenProgram),\n      getAccountMeta('systemProgram', accounts.systemProgram),\n    ],\n    data: getClaimInstructionDataEncoder().encode(\n      args as ClaimInstructionDataArgs,\n    ),\n    programAddress,\n  } as ClaimInstruction<\n    TProgramAddress,\n    TAccountPayer,\n    TAccountBeneficiary,\n    TAccountLaunch,\n    TAccountVestingConfig,\n    TAccountBaseMint,\n    TAccountVestingVault,\n    TAccountBeneficiaryTokenAccount,\n    TAccountBaseTokenProgram,\n    TAccountAssociatedTokenProgram,\n    TAccountSystemProgram\n  >);\n}\n\nexport type ParsedClaimInstruction<\n  TProgram extends string = typeof DOPPLER_VESTING_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    payer: TAccountMetas[0];\n    beneficiary: TAccountMetas[1];\n    launch: TAccountMetas[2];\n    vestingConfig: TAccountMetas[3];\n    baseMint: TAccountMetas[4];\n    vestingVault: TAccountMetas[5];\n    beneficiaryTokenAccount: TAccountMetas[6];\n    baseTokenProgram: TAccountMetas[7];\n    associatedTokenProgram: TAccountMetas[8];\n    systemProgram: TAccountMetas[9];\n  };\n  data: ClaimInstructionData;\n};\n\nexport function parseClaimInstruction<\n  TProgram extends string,\n  TAccountMetas extends readonly AccountMeta[],\n>(\n  instruction: Instruction<TProgram> &\n    InstructionWithAccounts<TAccountMetas> &\n    InstructionWithData<ReadonlyUint8Array>,\n): ParsedClaimInstruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 10) {\n    throw new SolanaError(\n      SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS,\n      {\n        actualAccountMetas: instruction.accounts.length,\n        expectedAccountMetas: 10,\n      },\n    );\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: {\n      payer: getNextAccount(),\n      beneficiary: getNextAccount(),\n      launch: getNextAccount(),\n      vestingConfig: getNextAccount(),\n      baseMint: getNextAccount(),\n      vestingVault: getNextAccount(),\n      beneficiaryTokenAccount: getNextAccount(),\n      baseTokenProgram: getNextAccount(),\n      associatedTokenProgram: getNextAccount(),\n      systemProgram: getNextAccount(),\n    },\n    data: getClaimInstructionDataDecoder().decode(instruction.data),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getAddressEncoder,\n  getArrayDecoder,\n  getArrayEncoder,\n  getBytesDecoder,\n  getBytesEncoder,\n  getProgramDerivedAddress,\n  getStructDecoder,\n  getStructEncoder,\n  getU64Decoder,\n  getU64Encoder,\n  SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS,\n  SolanaError,\n  transformEncoder,\n  type AccountMeta,\n  type AccountSignerMeta,\n  type Address,\n  type Codec,\n  type Decoder,\n  type Encoder,\n  type Instruction,\n  type InstructionWithAccounts,\n  type InstructionWithData,\n  type ReadonlyAccount,\n  type ReadonlySignerAccount,\n  type ReadonlyUint8Array,\n  type TransactionSigner,\n  type WritableAccount,\n  type WritableSignerAccount,\n} from '@solana/kit';\nimport {\n  getAccountMetaFactory,\n  getAddressFromResolvedInstructionAccount,\n  type ResolvedInstructionAccount,\n} from '@solana/program-client-core';\nimport { DOPPLER_VESTING_PROGRAM_ADDRESS } from '../programs';\nimport {\n  getVestingAllocationInputDecoder,\n  getVestingAllocationInputEncoder,\n  getVestingScheduleDecoder,\n  getVestingScheduleEncoder,\n  type VestingAllocationInput,\n  type VestingAllocationInputArgs,\n  type VestingSchedule,\n  type VestingScheduleArgs,\n} from '../types';\n\nexport const INITIALIZE_VESTING_DISCRIMINATOR = new Uint8Array([\n  5, 29, 245, 237, 50, 242, 35, 13,\n]);\n\nexport function getInitializeVestingDiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(\n    INITIALIZE_VESTING_DISCRIMINATOR,\n  );\n}\n\nexport type InitializeVestingInstruction<\n  TProgram extends string = typeof DOPPLER_VESTING_PROGRAM_ADDRESS,\n  TAccountPayer extends string | AccountMeta<string> = string,\n  TAccountLaunch extends string | AccountMeta<string> = string,\n  TAccountBaseMint extends string | AccountMeta<string> = string,\n  TAccountBaseTokenProgram extends string | AccountMeta<string> = string,\n  TAccountVestingConfig extends string | AccountMeta<string> = string,\n  TAccountSystemProgram extends string | AccountMeta<string> =\n    '11111111111111111111111111111111',\n  TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n  InstructionWithData<ReadonlyUint8Array> &\n  InstructionWithAccounts<\n    [\n      TAccountPayer extends string\n        ? WritableSignerAccount<TAccountPayer> &\n            AccountSignerMeta<TAccountPayer>\n        : TAccountPayer,\n      TAccountLaunch extends string\n        ? ReadonlyAccount<TAccountLaunch>\n        : TAccountLaunch,\n      TAccountBaseMint extends string\n        ? ReadonlySignerAccount<TAccountBaseMint> &\n            AccountSignerMeta<TAccountBaseMint>\n        : TAccountBaseMint,\n      TAccountBaseTokenProgram extends string\n        ? ReadonlyAccount<TAccountBaseTokenProgram>\n        : TAccountBaseTokenProgram,\n      TAccountVestingConfig extends string\n        ? WritableAccount<TAccountVestingConfig>\n        : TAccountVestingConfig,\n      TAccountSystemProgram extends string\n        ? ReadonlyAccount<TAccountSystemProgram>\n        : TAccountSystemProgram,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type InitializeVestingInstructionData = {\n  discriminator: ReadonlyUint8Array;\n  initialSupply: bigint;\n  schedules: Array<VestingSchedule>;\n  allocations: Array<VestingAllocationInput>;\n};\n\nexport type InitializeVestingInstructionDataArgs = {\n  initialSupply: number | bigint;\n  schedules: Array<VestingScheduleArgs>;\n  allocations: Array<VestingAllocationInputArgs>;\n};\n\nexport function getInitializeVestingInstructionDataEncoder(): Encoder<InitializeVestingInstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['initialSupply', getU64Encoder()],\n      ['schedules', getArrayEncoder(getVestingScheduleEncoder())],\n      ['allocations', getArrayEncoder(getVestingAllocationInputEncoder())],\n    ]),\n    (value) => ({ ...value, discriminator: INITIALIZE_VESTING_DISCRIMINATOR }),\n  );\n}\n\nexport function getInitializeVestingInstructionDataDecoder(): Decoder<InitializeVestingInstructionData> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['initialSupply', getU64Decoder()],\n    ['schedules', getArrayDecoder(getVestingScheduleDecoder())],\n    ['allocations', getArrayDecoder(getVestingAllocationInputDecoder())],\n  ]);\n}\n\nexport function getInitializeVestingInstructionDataCodec(): Codec<\n  InitializeVestingInstructionDataArgs,\n  InitializeVestingInstructionData\n> {\n  return combineCodec(\n    getInitializeVestingInstructionDataEncoder(),\n    getInitializeVestingInstructionDataDecoder(),\n  );\n}\n\nexport type InitializeVestingAsyncInput<\n  TAccountPayer extends string = string,\n  TAccountLaunch extends string = string,\n  TAccountBaseMint extends string = string,\n  TAccountBaseTokenProgram extends string = string,\n  TAccountVestingConfig extends string = string,\n  TAccountSystemProgram extends string = string,\n> = {\n  payer: TransactionSigner<TAccountPayer>;\n  launch: Address<TAccountLaunch>;\n  /** Future launch mint. Its signature prevents another caller from claiming this config PDA. */\n  baseMint: TransactionSigner<TAccountBaseMint>;\n  baseTokenProgram: Address<TAccountBaseTokenProgram>;\n  vestingConfig?: Address<TAccountVestingConfig>;\n  systemProgram?: Address<TAccountSystemProgram>;\n  initialSupply: InitializeVestingInstructionDataArgs['initialSupply'];\n  schedules: InitializeVestingInstructionDataArgs['schedules'];\n  allocations: InitializeVestingInstructionDataArgs['allocations'];\n};\n\nexport async function getInitializeVestingInstructionAsync<\n  TAccountPayer extends string,\n  TAccountLaunch extends string,\n  TAccountBaseMint extends string,\n  TAccountBaseTokenProgram extends string,\n  TAccountVestingConfig extends string,\n  TAccountSystemProgram extends string,\n  TProgramAddress extends Address = typeof DOPPLER_VESTING_PROGRAM_ADDRESS,\n>(\n  input: InitializeVestingAsyncInput<\n    TAccountPayer,\n    TAccountLaunch,\n    TAccountBaseMint,\n    TAccountBaseTokenProgram,\n    TAccountVestingConfig,\n    TAccountSystemProgram\n  >,\n  config?: { programAddress?: TProgramAddress },\n): Promise<\n  InitializeVestingInstruction<\n    TProgramAddress,\n    TAccountPayer,\n    TAccountLaunch,\n    TAccountBaseMint,\n    TAccountBaseTokenProgram,\n    TAccountVestingConfig,\n    TAccountSystemProgram\n  >\n> {\n  // Program address.\n  const programAddress =\n    config?.programAddress ?? DOPPLER_VESTING_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    payer: { value: input.payer ?? null, isWritable: true },\n    launch: { value: input.launch ?? null, isWritable: false },\n    baseMint: { value: input.baseMint ?? null, isWritable: false },\n    baseTokenProgram: {\n      value: input.baseTokenProgram ?? null,\n      isWritable: false,\n    },\n    vestingConfig: { value: input.vestingConfig ?? null, isWritable: true },\n    systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedInstructionAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolve default values.\n  if (!accounts.vestingConfig.value) {\n    accounts.vestingConfig.value = await getProgramDerivedAddress({\n      programAddress,\n      seeds: [\n        getBytesEncoder().encode(\n          new Uint8Array([\n            118, 101, 115, 116, 105, 110, 103, 95, 99, 111, 110, 102, 105, 103,\n          ]),\n        ),\n        getAddressEncoder().encode(\n          getAddressFromResolvedInstructionAccount(\n            'launch',\n            accounts.launch.value,\n          ),\n        ),\n        getAddressEncoder().encode(\n          getAddressFromResolvedInstructionAccount(\n            'baseMint',\n            accounts.baseMint.value,\n          ),\n        ),\n      ],\n    });\n  }\n  if (!accounts.systemProgram.value) {\n    accounts.systemProgram.value =\n      '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n  }\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta('payer', accounts.payer),\n      getAccountMeta('launch', accounts.launch),\n      getAccountMeta('baseMint', accounts.baseMint),\n      getAccountMeta('baseTokenProgram', accounts.baseTokenProgram),\n      getAccountMeta('vestingConfig', accounts.vestingConfig),\n      getAccountMeta('systemProgram', accounts.systemProgram),\n    ],\n    data: getInitializeVestingInstructionDataEncoder().encode(\n      args as InitializeVestingInstructionDataArgs,\n    ),\n    programAddress,\n  } as InitializeVestingInstruction<\n    TProgramAddress,\n    TAccountPayer,\n    TAccountLaunch,\n    TAccountBaseMint,\n    TAccountBaseTokenProgram,\n    TAccountVestingConfig,\n    TAccountSystemProgram\n  >);\n}\n\nexport type InitializeVestingInput<\n  TAccountPayer extends string = string,\n  TAccountLaunch extends string = string,\n  TAccountBaseMint extends string = string,\n  TAccountBaseTokenProgram extends string = string,\n  TAccountVestingConfig extends string = string,\n  TAccountSystemProgram extends string = string,\n> = {\n  payer: TransactionSigner<TAccountPayer>;\n  launch: Address<TAccountLaunch>;\n  /** Future launch mint. Its signature prevents another caller from claiming this config PDA. */\n  baseMint: TransactionSigner<TAccountBaseMint>;\n  baseTokenProgram: Address<TAccountBaseTokenProgram>;\n  vestingConfig: Address<TAccountVestingConfig>;\n  systemProgram?: Address<TAccountSystemProgram>;\n  initialSupply: InitializeVestingInstructionDataArgs['initialSupply'];\n  schedules: InitializeVestingInstructionDataArgs['schedules'];\n  allocations: InitializeVestingInstructionDataArgs['allocations'];\n};\n\nexport function getInitializeVestingInstruction<\n  TAccountPayer extends string,\n  TAccountLaunch extends string,\n  TAccountBaseMint extends string,\n  TAccountBaseTokenProgram extends string,\n  TAccountVestingConfig extends string,\n  TAccountSystemProgram extends string,\n  TProgramAddress extends Address = typeof DOPPLER_VESTING_PROGRAM_ADDRESS,\n>(\n  input: InitializeVestingInput<\n    TAccountPayer,\n    TAccountLaunch,\n    TAccountBaseMint,\n    TAccountBaseTokenProgram,\n    TAccountVestingConfig,\n    TAccountSystemProgram\n  >,\n  config?: { programAddress?: TProgramAddress },\n): InitializeVestingInstruction<\n  TProgramAddress,\n  TAccountPayer,\n  TAccountLaunch,\n  TAccountBaseMint,\n  TAccountBaseTokenProgram,\n  TAccountVestingConfig,\n  TAccountSystemProgram\n> {\n  // Program address.\n  const programAddress =\n    config?.programAddress ?? DOPPLER_VESTING_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    payer: { value: input.payer ?? null, isWritable: true },\n    launch: { value: input.launch ?? null, isWritable: false },\n    baseMint: { value: input.baseMint ?? null, isWritable: false },\n    baseTokenProgram: {\n      value: input.baseTokenProgram ?? null,\n      isWritable: false,\n    },\n    vestingConfig: { value: input.vestingConfig ?? null, isWritable: true },\n    systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedInstructionAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolve default values.\n  if (!accounts.systemProgram.value) {\n    accounts.systemProgram.value =\n      '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n  }\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta('payer', accounts.payer),\n      getAccountMeta('launch', accounts.launch),\n      getAccountMeta('baseMint', accounts.baseMint),\n      getAccountMeta('baseTokenProgram', accounts.baseTokenProgram),\n      getAccountMeta('vestingConfig', accounts.vestingConfig),\n      getAccountMeta('systemProgram', accounts.systemProgram),\n    ],\n    data: getInitializeVestingInstructionDataEncoder().encode(\n      args as InitializeVestingInstructionDataArgs,\n    ),\n    programAddress,\n  } as InitializeVestingInstruction<\n    TProgramAddress,\n    TAccountPayer,\n    TAccountLaunch,\n    TAccountBaseMint,\n    TAccountBaseTokenProgram,\n    TAccountVestingConfig,\n    TAccountSystemProgram\n  >);\n}\n\nexport type ParsedInitializeVestingInstruction<\n  TProgram extends string = typeof DOPPLER_VESTING_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    payer: TAccountMetas[0];\n    launch: TAccountMetas[1];\n    /** Future launch mint. Its signature prevents another caller from claiming this config PDA. */\n    baseMint: TAccountMetas[2];\n    baseTokenProgram: TAccountMetas[3];\n    vestingConfig: TAccountMetas[4];\n    systemProgram: TAccountMetas[5];\n  };\n  data: InitializeVestingInstructionData;\n};\n\nexport function parseInitializeVestingInstruction<\n  TProgram extends string,\n  TAccountMetas extends readonly AccountMeta[],\n>(\n  instruction: Instruction<TProgram> &\n    InstructionWithAccounts<TAccountMetas> &\n    InstructionWithData<ReadonlyUint8Array>,\n): ParsedInitializeVestingInstruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 6) {\n    throw new SolanaError(\n      SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS,\n      {\n        actualAccountMetas: instruction.accounts.length,\n        expectedAccountMetas: 6,\n      },\n    );\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: {\n      payer: getNextAccount(),\n      launch: getNextAccount(),\n      baseMint: getNextAccount(),\n      baseTokenProgram: getNextAccount(),\n      vestingConfig: getNextAccount(),\n      systemProgram: getNextAccount(),\n    },\n    data: getInitializeVestingInstructionDataDecoder().decode(instruction.data),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  assertIsInstructionWithAccounts,\n  containsBytes,\n  fixEncoderSize,\n  getBytesEncoder,\n  SOLANA_ERROR__PROGRAM_CLIENTS__FAILED_TO_IDENTIFY_ACCOUNT,\n  SOLANA_ERROR__PROGRAM_CLIENTS__FAILED_TO_IDENTIFY_INSTRUCTION,\n  SOLANA_ERROR__PROGRAM_CLIENTS__UNRECOGNIZED_INSTRUCTION_TYPE,\n  SolanaError,\n  type Address,\n  type ClientWithPayer,\n  type ClientWithRpc,\n  type ClientWithTransactionPlanning,\n  type ClientWithTransactionSending,\n  type GetAccountInfoApi,\n  type GetMultipleAccountsApi,\n  type Instruction,\n  type InstructionWithData,\n  type ReadonlyUint8Array,\n} from '@solana/kit';\nimport {\n  addSelfFetchFunctions,\n  addSelfPlanAndSendFunctions,\n  type SelfFetchFunctions,\n  type SelfPlanAndSendFunctions,\n} from '@solana/program-client-core';\nimport {\n  getLaunchCodec,\n  getVestingConfigCodec,\n  type Launch,\n  type LaunchArgs,\n  type VestingConfig,\n  type VestingConfigArgs,\n} from '../accounts';\nimport {\n  getClaimInstructionAsync,\n  getInitializeVestingInstructionAsync,\n  parseClaimInstruction,\n  parseInitializeVestingInstruction,\n  type ClaimAsyncInput,\n  type InitializeVestingAsyncInput,\n  type ParsedClaimInstruction,\n  type ParsedInitializeVestingInstruction,\n} from '../instructions';\n\nexport const DOPPLER_VESTING_PROGRAM_ADDRESS =\n  '2dhWRsojcuJbEJ2uaB6ayGwXz6PcFaPGpjnqP9Bawead' as Address<'2dhWRsojcuJbEJ2uaB6ayGwXz6PcFaPGpjnqP9Bawead'>;\n\nexport enum DopplerVestingAccount {\n  Launch,\n  VestingConfig,\n}\n\nexport function identifyDopplerVestingAccount(\n  account: { data: ReadonlyUint8Array } | ReadonlyUint8Array,\n): DopplerVestingAccount {\n  const data = 'data' in account ? account.data : account;\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([144, 51, 51, 163, 206, 85, 213, 38]),\n      ),\n      0,\n    )\n  ) {\n    return DopplerVestingAccount.Launch;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([0, 138, 71, 135, 26, 29, 43, 125]),\n      ),\n      0,\n    )\n  ) {\n    return DopplerVestingAccount.VestingConfig;\n  }\n  throw new SolanaError(\n    SOLANA_ERROR__PROGRAM_CLIENTS__FAILED_TO_IDENTIFY_ACCOUNT,\n    { accountData: data, programName: 'dopplerVesting' },\n  );\n}\n\nexport enum DopplerVestingInstruction {\n  Claim,\n  InitializeVesting,\n}\n\nexport function identifyDopplerVestingInstruction(\n  instruction: { data: ReadonlyUint8Array } | ReadonlyUint8Array,\n): DopplerVestingInstruction {\n  const data = 'data' in instruction ? instruction.data : instruction;\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([62, 198, 214, 193, 213, 159, 108, 210]),\n      ),\n      0,\n    )\n  ) {\n    return DopplerVestingInstruction.Claim;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([5, 29, 245, 237, 50, 242, 35, 13]),\n      ),\n      0,\n    )\n  ) {\n    return DopplerVestingInstruction.InitializeVesting;\n  }\n  throw new SolanaError(\n    SOLANA_ERROR__PROGRAM_CLIENTS__FAILED_TO_IDENTIFY_INSTRUCTION,\n    { instructionData: data, programName: 'dopplerVesting' },\n  );\n}\n\nexport type ParsedDopplerVestingInstruction<\n  TProgram extends string = '2dhWRsojcuJbEJ2uaB6ayGwXz6PcFaPGpjnqP9Bawead',\n> =\n  | ({\n      instructionType: DopplerVestingInstruction.Claim;\n    } & ParsedClaimInstruction<TProgram>)\n  | ({\n      instructionType: DopplerVestingInstruction.InitializeVesting;\n    } & ParsedInitializeVestingInstruction<TProgram>);\n\nexport function parseDopplerVestingInstruction<TProgram extends string>(\n  instruction: Instruction<TProgram> & InstructionWithData<ReadonlyUint8Array>,\n): ParsedDopplerVestingInstruction<TProgram> {\n  const instructionType = identifyDopplerVestingInstruction(instruction);\n  switch (instructionType) {\n    case DopplerVestingInstruction.Claim: {\n      assertIsInstructionWithAccounts(instruction);\n      return {\n        instructionType: DopplerVestingInstruction.Claim,\n        ...parseClaimInstruction(instruction),\n      };\n    }\n    case DopplerVestingInstruction.InitializeVesting: {\n      assertIsInstructionWithAccounts(instruction);\n      return {\n        instructionType: DopplerVestingInstruction.InitializeVesting,\n        ...parseInitializeVestingInstruction(instruction),\n      };\n    }\n    default:\n      throw new SolanaError(\n        SOLANA_ERROR__PROGRAM_CLIENTS__UNRECOGNIZED_INSTRUCTION_TYPE,\n        {\n          instructionType: instructionType as string,\n          programName: 'dopplerVesting',\n        },\n      );\n  }\n}\n\nexport type DopplerVestingPlugin = {\n  accounts: DopplerVestingPluginAccounts;\n  instructions: DopplerVestingPluginInstructions;\n};\n\nexport type DopplerVestingPluginAccounts = {\n  launch: ReturnType<typeof getLaunchCodec> &\n    SelfFetchFunctions<LaunchArgs, Launch>;\n  vestingConfig: ReturnType<typeof getVestingConfigCodec> &\n    SelfFetchFunctions<VestingConfigArgs, VestingConfig>;\n};\n\nexport type DopplerVestingPluginInstructions = {\n  claim: (\n    input: MakeOptional<ClaimAsyncInput, 'payer'>,\n  ) => ReturnType<typeof getClaimInstructionAsync> & SelfPlanAndSendFunctions;\n  initializeVesting: (\n    input: MakeOptional<InitializeVestingAsyncInput, 'payer'>,\n  ) => ReturnType<typeof getInitializeVestingInstructionAsync> &\n    SelfPlanAndSendFunctions;\n};\n\nexport type DopplerVestingPluginRequirements = ClientWithRpc<\n  GetAccountInfoApi & GetMultipleAccountsApi\n> &\n  ClientWithPayer &\n  ClientWithTransactionPlanning &\n  ClientWithTransactionSending;\n\nexport function dopplerVestingProgram() {\n  return <T extends DopplerVestingPluginRequirements>(client: T) => {\n    return {\n      ...client,\n      dopplerVesting: <DopplerVestingPlugin>{\n        accounts: {\n          launch: addSelfFetchFunctions(client, getLaunchCodec()),\n          vestingConfig: addSelfFetchFunctions(client, getVestingConfigCodec()),\n        },\n        instructions: {\n          claim: (input) =>\n            addSelfPlanAndSendFunctions(\n              client,\n              getClaimInstructionAsync({\n                ...input,\n                payer: input.payer ?? client.payer,\n              }),\n            ),\n          initializeVesting: (input) =>\n            addSelfPlanAndSendFunctions(\n              client,\n              getInitializeVestingInstructionAsync({\n                ...input,\n                payer: input.payer ?? client.payer,\n              }),\n            ),\n        },\n      },\n    };\n  };\n}\n\ntype MakeOptional<T, K extends keyof T> = Omit<T, K> & Partial<Pick<T, K>>;\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  isProgramError,\n  type Address,\n  type SOLANA_ERROR__INSTRUCTION_ERROR__CUSTOM,\n  type SolanaError,\n} from '@solana/kit';\nimport { DOPPLER_VESTING_PROGRAM_ADDRESS } from '../programs';\n\n/** InvalidConfig: Invalid vesting configuration */\nexport const DOPPLER_VESTING_ERROR__INVALID_CONFIG = 0x1770; // 6000\n/** TooManySchedules: Too many vesting schedules */\nexport const DOPPLER_VESTING_ERROR__TOO_MANY_SCHEDULES = 0x1771; // 6001\n/** TooManyAllocations: Too many vesting allocations */\nexport const DOPPLER_VESTING_ERROR__TOO_MANY_ALLOCATIONS = 0x1772; // 6002\n/** InvalidSchedule: Invalid vesting schedule */\nexport const DOPPLER_VESTING_ERROR__INVALID_SCHEDULE = 0x1773; // 6003\n/** InvalidAllocation: Invalid vesting allocation */\nexport const DOPPLER_VESTING_ERROR__INVALID_ALLOCATION = 0x1774; // 6004\n/** AllocationCapExceeded: Vesting allocation exceeds the permitted supply cap */\nexport const DOPPLER_VESTING_ERROR__ALLOCATION_CAP_EXCEEDED = 0x1775; // 6005\n/** ArithmeticOverflow: Arithmetic overflow */\nexport const DOPPLER_VESTING_ERROR__ARITHMETIC_OVERFLOW = 0x1776; // 6006\n/** InvalidLaunch: Invalid Initializer launch */\nexport const DOPPLER_VESTING_ERROR__INVALID_LAUNCH = 0x1777; // 6007\n/** InvalidMint: Invalid base mint */\nexport const DOPPLER_VESTING_ERROR__INVALID_MINT = 0x1778; // 6008\n/** InvalidTokenProgram: Invalid base token program */\nexport const DOPPLER_VESTING_ERROR__INVALID_TOKEN_PROGRAM = 0x1779; // 6009\n/** VestingNotFunded: The launch has not funded vesting */\nexport const DOPPLER_VESTING_ERROR__VESTING_NOT_FUNDED = 0x177a; // 6010\n/** InvalidBeneficiary: Invalid vesting beneficiary */\nexport const DOPPLER_VESTING_ERROR__INVALID_BENEFICIARY = 0x177b; // 6011\n/** UnknownSchedule: Unknown vesting schedule */\nexport const DOPPLER_VESTING_ERROR__UNKNOWN_SCHEDULE = 0x177c; // 6012\n/** NoTokensAvailable: No vested tokens are currently available */\nexport const DOPPLER_VESTING_ERROR__NO_TOKENS_AVAILABLE = 0x177d; // 6013\n/** InsufficientAvailableAmount: Requested amount exceeds the vested amount available */\nexport const DOPPLER_VESTING_ERROR__INSUFFICIENT_AVAILABLE_AMOUNT = 0x177e; // 6014\n\nexport type DopplerVestingError =\n  | typeof DOPPLER_VESTING_ERROR__ALLOCATION_CAP_EXCEEDED\n  | typeof DOPPLER_VESTING_ERROR__ARITHMETIC_OVERFLOW\n  | typeof DOPPLER_VESTING_ERROR__INSUFFICIENT_AVAILABLE_AMOUNT\n  | typeof DOPPLER_VESTING_ERROR__INVALID_ALLOCATION\n  | typeof DOPPLER_VESTING_ERROR__INVALID_BENEFICIARY\n  | typeof DOPPLER_VESTING_ERROR__INVALID_CONFIG\n  | typeof DOPPLER_VESTING_ERROR__INVALID_LAUNCH\n  | typeof DOPPLER_VESTING_ERROR__INVALID_MINT\n  | typeof DOPPLER_VESTING_ERROR__INVALID_SCHEDULE\n  | typeof DOPPLER_VESTING_ERROR__INVALID_TOKEN_PROGRAM\n  | typeof DOPPLER_VESTING_ERROR__NO_TOKENS_AVAILABLE\n  | typeof DOPPLER_VESTING_ERROR__TOO_MANY_ALLOCATIONS\n  | typeof DOPPLER_VESTING_ERROR__TOO_MANY_SCHEDULES\n  | typeof DOPPLER_VESTING_ERROR__UNKNOWN_SCHEDULE\n  | typeof DOPPLER_VESTING_ERROR__VESTING_NOT_FUNDED;\n\nlet dopplerVestingErrorMessages:\n  | Record<DopplerVestingError, string>\n  | undefined;\nif (process.env.NODE_ENV !== 'production') {\n  dopplerVestingErrorMessages = {\n    [DOPPLER_VESTING_ERROR__ALLOCATION_CAP_EXCEEDED]: `Vesting allocation exceeds the permitted supply cap`,\n    [DOPPLER_VESTING_ERROR__ARITHMETIC_OVERFLOW]: `Arithmetic overflow`,\n    [DOPPLER_VESTING_ERROR__INSUFFICIENT_AVAILABLE_AMOUNT]: `Requested amount exceeds the vested amount available`,\n    [DOPPLER_VESTING_ERROR__INVALID_ALLOCATION]: `Invalid vesting allocation`,\n    [DOPPLER_VESTING_ERROR__INVALID_BENEFICIARY]: `Invalid vesting beneficiary`,\n    [DOPPLER_VESTING_ERROR__INVALID_CONFIG]: `Invalid vesting configuration`,\n    [DOPPLER_VESTING_ERROR__INVALID_LAUNCH]: `Invalid Initializer launch`,\n    [DOPPLER_VESTING_ERROR__INVALID_MINT]: `Invalid base mint`,\n    [DOPPLER_VESTING_ERROR__INVALID_SCHEDULE]: `Invalid vesting schedule`,\n    [DOPPLER_VESTING_ERROR__INVALID_TOKEN_PROGRAM]: `Invalid base token program`,\n    [DOPPLER_VESTING_ERROR__NO_TOKENS_AVAILABLE]: `No vested tokens are currently available`,\n    [DOPPLER_VESTING_ERROR__TOO_MANY_ALLOCATIONS]: `Too many vesting allocations`,\n    [DOPPLER_VESTING_ERROR__TOO_MANY_SCHEDULES]: `Too many vesting schedules`,\n    [DOPPLER_VESTING_ERROR__UNKNOWN_SCHEDULE]: `Unknown vesting schedule`,\n    [DOPPLER_VESTING_ERROR__VESTING_NOT_FUNDED]: `The launch has not funded vesting`,\n  };\n}\n\nexport function getDopplerVestingErrorMessage(\n  code: DopplerVestingError,\n): string {\n  if (process.env.NODE_ENV !== 'production') {\n    return (dopplerVestingErrorMessages as Record<DopplerVestingError, string>)[\n      code\n    ];\n  }\n\n  return 'Error message not available in production bundles.';\n}\n\nexport function isDopplerVestingError<\n  TProgramErrorCode extends DopplerVestingError,\n>(\n  error: unknown,\n  transactionMessage: {\n    instructions: Record<number, { programAddress: Address }>;\n  },\n  code?: TProgramErrorCode,\n): error is SolanaError<typeof SOLANA_ERROR__INSTRUCTION_ERROR__CUSTOM> &\n  Readonly<{ context: Readonly<{ code: TProgramErrorCode }> }> {\n  return isProgramError<TProgramErrorCode>(\n    error,\n    transactionMessage,\n    DOPPLER_VESTING_PROGRAM_ADDRESS,\n    code,\n  );\n}\n","export const MAX_VESTING_SCHEDULES = 8;\nexport const MAX_VESTING_ALLOCATIONS = 16;\nexport const MIN_VESTING_DURATION_SECONDS = 86_400n;\nexport const MAX_VESTED_BPS = 8_000n;\nexport const VESTING_BPS_DENOMINATOR = 10_000n;\n","import { findAssociatedTokenPda } from '@solana-program/token';\nimport {\n  getAddressEncoder,\n  getProgramDerivedAddress,\n  type Address,\n  type ProgramDerivedAddress,\n} from '@solana/kit';\n\nimport { DOPPLER_VESTING_PROGRAM_ADDRESS } from '../generated/dopplerVesting/index.js';\n\nconst VESTING_CONFIG_SEED = new TextEncoder().encode('vesting_config');\n\nexport function getVestingConfigAddress(\n  launch: Address,\n  baseMint: Address,\n  programId: Address = DOPPLER_VESTING_PROGRAM_ADDRESS,\n): Promise<ProgramDerivedAddress> {\n  const addressEncoder = getAddressEncoder();\n  return getProgramDerivedAddress({\n    programAddress: programId,\n    seeds: [\n      VESTING_CONFIG_SEED,\n      addressEncoder.encode(launch),\n      addressEncoder.encode(baseMint),\n    ],\n  });\n}\n\nexport function getVestingVaultAddress(\n  vestingConfig: Address,\n  baseMint: Address,\n  baseTokenProgram: Address,\n): Promise<ProgramDerivedAddress> {\n  return findAssociatedTokenPda({\n    owner: vestingConfig,\n    mint: baseMint,\n    tokenProgram: baseTokenProgram,\n  });\n}\n\nexport function getVestingBeneficiaryTokenAccountAddress(\n  beneficiary: Address,\n  baseMint: Address,\n  baseTokenProgram: Address,\n): Promise<ProgramDerivedAddress> {\n  return findAssociatedTokenPda({\n    owner: beneficiary,\n    mint: baseMint,\n    tokenProgram: baseTokenProgram,\n  });\n}\n\nexport type VestingAddresses = {\n  config: Address;\n  vault: Address;\n};\n\nexport async function deriveVestingAddresses(\n  launch: Address,\n  baseMint: Address,\n  baseTokenProgram: Address,\n  programId: Address = DOPPLER_VESTING_PROGRAM_ADDRESS,\n): Promise<VestingAddresses> {\n  const [config] = await getVestingConfigAddress(launch, baseMint, programId);\n  const [vault] = await getVestingVaultAddress(\n    config,\n    baseMint,\n    baseTokenProgram,\n  );\n  return { config, vault };\n}\n","import {\n  type Address,\n  type Instruction,\n  type TransactionSigner,\n} from '@solana/kit';\n\nimport {\n  getAddressFromAddressOrSigner,\n  type AddressOrTransactionSigner,\n} from '../core/accounts.js';\nimport { SYSTEM_PROGRAM_ADDRESS } from '../core/constants.js';\nimport {\n  getInitializeVestingInstructionAsync,\n  type VestingAllocationInputArgs,\n  type VestingScheduleArgs,\n} from '../generated/dopplerVesting/index.js';\nimport { getFundVestingInstructionAsync } from '../generated/initializer/index.js';\nimport {\n  MAX_VESTED_BPS,\n  MAX_VESTING_ALLOCATIONS,\n  MAX_VESTING_SCHEDULES,\n  MIN_VESTING_DURATION_SECONDS,\n  VESTING_BPS_DENOMINATOR,\n} from './constants.js';\nimport { deriveVestingAddresses, type VestingAddresses } from './pda.js';\n\nconst MAX_U64 = (1n << 64n) - 1n;\n\nexport type VestingPlan = {\n  schedules: ReadonlyArray<VestingScheduleArgs>;\n  allocations: ReadonlyArray<VestingAllocationInputArgs>;\n};\n\ntype ValidatedVestingPlan = {\n  schedules: Array<{ cliffSeconds: bigint; durationSeconds: bigint }>;\n  allocations: Array<{\n    beneficiary: Address;\n    scheduleId: number;\n    amount: bigint;\n  }>;\n  totalAllocation: bigint;\n};\n\ntype PrepareVestingConfigurationInput = {\n  payer: TransactionSigner;\n  launch: Address;\n  launchAuthority: Address;\n  baseMint: TransactionSigner;\n  baseVault: AddressOrTransactionSigner;\n  baseTokenProgram: Address;\n  initialSupply: number | bigint;\n  plan: VestingPlan;\n  vestingProgram: Address;\n  initializerProgram: Address;\n};\n\nexport type PreparedVestingConfiguration = {\n  addresses: VestingAddresses;\n  initialSupply: bigint;\n  totalAllocation: bigint;\n  initializeInstruction: Instruction;\n  fundInstruction: Instruction;\n};\n\nexport function normalizeU64(value: number | bigint, label: string): bigint {\n  if (\n    typeof value === 'number' &&\n    (!Number.isSafeInteger(value) || value < 0)\n  ) {\n    throw new Error(`${label} must be a non-negative safe integer`);\n  }\n  const normalized = BigInt(value);\n  if (normalized < 0n || normalized > MAX_U64) {\n    throw new Error(`${label} must fit in a u64`);\n  }\n  return normalized;\n}\n\nfunction validateVestingPlan(\n  plan: VestingPlan,\n  initialSupply: bigint,\n  vestingConfig: Address,\n): ValidatedVestingPlan {\n  if (\n    plan.schedules.length === 0 ||\n    plan.schedules.length > MAX_VESTING_SCHEDULES\n  ) {\n    throw new Error(`vesting requires 1 to ${MAX_VESTING_SCHEDULES} schedules`);\n  }\n  if (\n    plan.allocations.length === 0 ||\n    plan.allocations.length > MAX_VESTING_ALLOCATIONS\n  ) {\n    throw new Error(\n      `vesting requires 1 to ${MAX_VESTING_ALLOCATIONS} allocations`,\n    );\n  }\n\n  const schedules = plan.schedules.map((schedule, index) => {\n    const cliffSeconds = normalizeU64(\n      schedule.cliffSeconds,\n      `vesting schedule ${index} cliffSeconds`,\n    );\n    const durationSeconds = normalizeU64(\n      schedule.durationSeconds,\n      `vesting schedule ${index} durationSeconds`,\n    );\n    if (\n      durationSeconds !== 0n &&\n      durationSeconds < MIN_VESTING_DURATION_SECONDS\n    ) {\n      throw new Error(\n        `vesting schedule ${index} duration must be zero or at least ${MIN_VESTING_DURATION_SECONDS} seconds`,\n      );\n    }\n    if (cliffSeconds > durationSeconds) {\n      throw new Error(\n        `vesting schedule ${index} cliff cannot exceed its duration`,\n      );\n    }\n    return { cliffSeconds, durationSeconds };\n  });\n\n  const beneficiaryTotals = new Map<Address, bigint>();\n  let totalAllocation = 0n;\n  const allocations = plan.allocations.map((allocation, index) => {\n    if (\n      allocation.beneficiary === SYSTEM_PROGRAM_ADDRESS ||\n      allocation.beneficiary === vestingConfig\n    ) {\n      throw new Error(`vesting allocation ${index} has an invalid beneficiary`);\n    }\n    if (\n      !Number.isInteger(allocation.scheduleId) ||\n      allocation.scheduleId < 0 ||\n      allocation.scheduleId >= schedules.length\n    ) {\n      throw new Error(\n        `vesting allocation ${index} references an unknown schedule`,\n      );\n    }\n    const amount = normalizeU64(\n      allocation.amount,\n      `vesting allocation ${index} amount`,\n    );\n    if (amount === 0n) {\n      throw new Error(`vesting allocation ${index} amount must be positive`);\n    }\n\n    totalAllocation += amount;\n    beneficiaryTotals.set(\n      allocation.beneficiary,\n      (beneficiaryTotals.get(allocation.beneficiary) ?? 0n) + amount,\n    );\n    return { ...allocation, amount };\n  });\n\n  const maximumAllocation =\n    (initialSupply * MAX_VESTED_BPS) / VESTING_BPS_DENOMINATOR;\n  if (totalAllocation > maximumAllocation) {\n    throw new Error('total vesting allocation exceeds 80% of initial supply');\n  }\n  for (const [beneficiary, amount] of beneficiaryTotals) {\n    if (amount > maximumAllocation) {\n      throw new Error(\n        `vesting allocation for ${beneficiary} exceeds 80% of initial supply`,\n      );\n    }\n  }\n\n  return { schedules, allocations, totalAllocation };\n}\n\nexport async function prepareVestingConfiguration(\n  input: PrepareVestingConfigurationInput,\n): Promise<PreparedVestingConfiguration> {\n  const initialSupply = normalizeU64(input.initialSupply, 'baseTotalSupply');\n  if (initialSupply === 0n) {\n    throw new Error('baseTotalSupply must be positive');\n  }\n\n  const addresses = await deriveVestingAddresses(\n    input.launch,\n    input.baseMint.address,\n    input.baseTokenProgram,\n    input.vestingProgram,\n  );\n  const plan = validateVestingPlan(input.plan, initialSupply, addresses.config);\n  const initializeInstruction = await getInitializeVestingInstructionAsync(\n    {\n      payer: input.payer,\n      launch: input.launch,\n      baseMint: input.baseMint,\n      baseTokenProgram: input.baseTokenProgram,\n      vestingConfig: addresses.config,\n      initialSupply,\n      schedules: plan.schedules,\n      allocations: plan.allocations,\n    },\n    { programAddress: input.vestingProgram },\n  );\n  const fundInstruction = await getFundVestingInstructionAsync(\n    {\n      launch: input.launch,\n      launchAuthority: input.launchAuthority,\n      vestingConfig: addresses.config,\n      baseMint: input.baseMint.address,\n      baseVault: getAddressFromAddressOrSigner(input.baseVault),\n      vestingVault: addresses.vault,\n      payer: input.payer,\n      baseTokenProgram: input.baseTokenProgram,\n    },\n    { programAddress: input.initializerProgram },\n  );\n\n  return {\n    addresses,\n    initialSupply,\n    totalAllocation: plan.totalAllocation,\n    initializeInstruction,\n    fundInstruction,\n  };\n}\n","import {\n  type Address,\n  type Instruction,\n  type TransactionSigner,\n} from '@solana/kit';\n\nimport type { DynamicFeeScheduleArgs } from '../dopplerLaunchHookV1/index.js';\nimport {\n  DOPPLER_LAUNCH_HOOK_V2_GATE_UNIX_TIMESTAMP,\n  encodeDopplerLaunchHookV2Payload,\n  getDopplerLaunchHookV2RemainingAccounts,\n  isResolvedManagedCosignerGateV2,\n  type ResolvedManagedCosignerGateV2,\n} from '../dopplerLaunchHookV2/index.js';\nimport { getInitializeRehypeInstructionAsync } from '../dopplerRehypeRouterV1/index.js';\nimport { TOKEN_PROGRAM_ADDRESS } from '../core/constants.js';\nimport {\n  DOPPLER_SOLANA_DEVNET_FEE_REHYPOTHECATION_PROGRAM_ADDRESSES,\n  deriveSolanaFeeRehypothecationDeployment,\n  type SolanaFeeRehypothecationDeployment,\n} from '../deployment.js';\nimport {\n  HF_BEFORE_CREATE,\n  HF_BEFORE_MIGRATE,\n  HF_BEFORE_SWAP,\n  HF_FORWARD_READONLY_SIGNERS,\n  HF_LAUNCH_CONTEXT_V2,\n} from '../initializer/constants.js';\nimport {\n  createLaunchId,\n  createLaunchWithResolvedHook,\n  deriveCreateLaunchAddresses,\n  type CreateLaunchAccountSigners,\n  type CreateLaunchAddresses,\n  type CreateLaunchInput,\n} from '../initializer/createLaunch.js';\nimport type { CurveSwapHook } from '../swaps.js';\nimport {\n  deriveFeeRehypothecationAddresses,\n  type FeeRehypothecationAddresses,\n} from './pda.js';\nimport {\n  validateAndSortFeeRehypothecationBeneficiaries,\n  validateFeeRehypothecationStrategy,\n  type FeeRehypothecationStrategy,\n} from './strategies.js';\nimport type { RehypeBeneficiaryInputArgs } from '../dopplerRehypeRouterV1/index.js';\nimport { DOPPLER_VESTING_PROGRAM_ADDRESS } from '../generated/dopplerVesting/index.js';\nimport {\n  prepareVestingConfiguration,\n  type VestingPlan,\n} from '../vesting/internal.js';\nimport type { VestingAddresses } from '../vesting/pda.js';\n\ntype PrepareLaunchBaseInput = Omit<\n  CreateLaunchInput,\n  | 'addresses'\n  | 'authority'\n  | 'config'\n  | 'cosignerGate'\n  | 'deployment'\n  | 'dynamicFee'\n  | 'feeBeneficiaries'\n  | 'launchAccounts'\n  | 'migration'\n  | 'payer'\n  | 'programId'\n  | 'vestingConfig'\n>;\n\nexport type PrepareFeeRehypothecationLaunchInput = PrepareLaunchBaseInput & {\n  deployment?: SolanaFeeRehypothecationDeployment;\n  launchAccounts: Omit<CreateLaunchAccountSigners, 'baseMint'> & {\n    baseMint: TransactionSigner;\n  };\n  payer: TransactionSigner;\n  authority: TransactionSigner;\n  buybackDestination: Address;\n  settlementAuthority: Address;\n  beneficiaries: ReadonlyArray<RehypeBeneficiaryInputArgs>;\n  strategy: FeeRehypothecationStrategy;\n  dynamicFee?: DynamicFeeScheduleArgs | null;\n  cosignerGate?: ResolvedManagedCosignerGateV2 | null;\n  /** Immutable vesting funded from the launch's initial base supply. */\n  vesting?: VestingPlan;\n  /** Vesting deployment override for custom protocol deployments. */\n  vestingProgram?: Address;\n};\n\nexport type PreparedFeeRehypothecationVesting = {\n  addresses: VestingAddresses;\n  totalAllocation: bigint;\n  initializeInstruction: Instruction;\n  fundInstruction: Instruction;\n};\n\nexport type PrepareFeeRehypothecationLaunchResult = {\n  namespace: Address;\n  launchId: Uint8Array;\n  launchAddresses: CreateLaunchAddresses;\n  routingAddresses: FeeRehypothecationAddresses;\n  initializeRoutingInstruction: Instruction;\n  initializeLaunchInstruction: Instruction;\n  vesting?: PreparedFeeRehypothecationVesting;\n  unsignedSwapHook: CurveSwapHook;\n  /** Pass the configured signer while the gate is active; omit it after expiry. */\n  getSwapHook(cosigner?: TransactionSigner): CurveSwapHook;\n};\n\nexport async function prepareLaunch(\n  input: PrepareFeeRehypothecationLaunchInput,\n): Promise<PrepareFeeRehypothecationLaunchResult> {\n  if (\n    input.supply.baseForDistribution !== 0n ||\n    input.supply.baseForLiquidity !== 0n\n  ) {\n    throw new Error(\n      'non-migrating fee rehypothecation launches require zero distribution and liquidity reserves',\n    );\n  }\n  validateFeeRehypothecationStrategy(input.strategy);\n  const beneficiaries = validateAndSortFeeRehypothecationBeneficiaries(\n    input.beneficiaries,\n    input.strategy,\n  );\n  const deployment =\n    input.deployment ??\n    (await deriveSolanaFeeRehypothecationDeployment(\n      DOPPLER_SOLANA_DEVNET_FEE_REHYPOTHECATION_PROGRAM_ADDRESSES,\n    ));\n  const launchId = input.launchId ?? createLaunchId();\n  const namespace = input.namespace ?? deployment.dopplerRehypeRouterV1Program;\n  const launchAddresses = await deriveCreateLaunchAddresses({\n    deployment: {\n      initializerProgram: deployment.initializerProgram,\n      initializerConfig: deployment.initializerConfig,\n    },\n    namespace,\n    launchId,\n    baseMint: input.launchAccounts.baseMint,\n    metadata: input.metadata,\n  });\n  const routingAddresses = await deriveFeeRehypothecationAddresses(\n    input.launchAccounts.baseMint.address,\n    deployment.dopplerRehypeRouterV1Program,\n  );\n  const preparedVesting = input.vesting\n    ? await prepareVestingConfiguration({\n        payer: input.payer,\n        launch: launchAddresses.launch,\n        launchAuthority: launchAddresses.launchAuthority,\n        baseMint: input.launchAccounts.baseMint,\n        baseVault: input.launchAccounts.baseVault,\n        baseTokenProgram:\n          input.tokenPrograms?.baseTokenProgram ?? TOKEN_PROGRAM_ADDRESS,\n        initialSupply: input.supply.baseTotalSupply,\n        plan: input.vesting,\n        vestingProgram: input.vestingProgram ?? DOPPLER_VESTING_PROGRAM_ADDRESS,\n        initializerProgram: deployment.initializerProgram,\n      })\n    : undefined;\n  if (\n    preparedVesting &&\n    preparedVesting.totalAllocation >= preparedVesting.initialSupply\n  ) {\n    throw new Error(\n      'vesting allocations must leave base tokens for the bonding curve',\n    );\n  }\n\n  const gate = input.cosignerGate ?? undefined;\n  if (gate && !isResolvedManagedCosignerGateV2(gate)) {\n    throw new Error(\n      'cosignerGate must be returned by dopplerLaunchHookV2.resolveManagedCosignerGate',\n    );\n  }\n  if (\n    gate &&\n    (gate.programId !== deployment.dopplerLaunchHookV2Program ||\n      gate.config !== deployment.dopplerLaunchHookV2Config)\n  ) {\n    throw new Error('cosignerGate does not match the selected deployment');\n  }\n\n  const remainingAccounts = getDopplerLaunchHookV2RemainingAccounts({\n    namespace,\n    config: deployment.dopplerLaunchHookV2Config,\n    feeRehypothecationState: routingAddresses.state,\n    settlementSigner: routingAddresses.settlementSigner,\n    cosigner: gate?.cosigner,\n  });\n  const payload = encodeDopplerLaunchHookV2Payload({\n    dynamicFee: input.dynamicFee,\n    cosignerGate: gate\n      ? {\n          mode: DOPPLER_LAUNCH_HOOK_V2_GATE_UNIX_TIMESTAMP,\n          value: gate.expiresAt,\n          cosigner: gate.cosigner,\n        }\n      : null,\n    feeRehypothecationState: routingAddresses.state,\n  });\n  const initializeRoutingInstruction =\n    await getInitializeRehypeInstructionAsync(\n      {\n        payer: input.payer,\n        baseMint: input.launchAccounts.baseMint,\n        quoteMint: input.launchAccounts.quoteMint,\n        hookProgram: deployment.dopplerLaunchHookV2Program,\n        initializerProgram: deployment.initializerProgram,\n        rehypeState: routingAddresses.state,\n        rehypeAuthority: routingAddresses.authority,\n        settlementSigner: routingAddresses.settlementSigner,\n        namespace,\n        launchId,\n        buybackDestination: input.buybackDestination,\n        settlementAuthority: input.settlementAuthority,\n        routingMode: input.strategy.routingMode,\n        feeRouting: input.strategy.feeRouting,\n        beneficiaries,\n      },\n      { programAddress: deployment.dopplerRehypeRouterV1Program },\n    );\n  const launchInput: CreateLaunchInput = {\n    deployment: {\n      initializerProgram: deployment.initializerProgram,\n      initializerConfig: deployment.initializerConfig,\n    },\n    namespace,\n    launchId,\n    addresses: launchAddresses,\n    launchAccounts: input.launchAccounts,\n    payer: input.payer,\n    authority: input.authority,\n    supply: {\n      ...input.supply,\n      baseForDistribution: preparedVesting?.totalAllocation ?? 0n,\n    },\n    curve: input.curve,\n    tokenPrograms: input.tokenPrograms,\n    metadata: input.metadata,\n    allowBuy: input.allowBuy,\n    allowSell: input.allowSell,\n    systemProgram: input.systemProgram,\n    rent: input.rent,\n    metadataProgram: input.metadataProgram,\n    migration: false,\n    vestingConfig: preparedVesting?.addresses.config,\n    feeBeneficiaries: [\n      { wallet: routingAddresses.authority, shareBps: 10_000 },\n    ],\n  };\n  const launch = await createLaunchWithResolvedHook(launchInput, {\n    program: deployment.dopplerLaunchHookV2Program,\n    flags:\n      HF_BEFORE_CREATE |\n      HF_BEFORE_SWAP |\n      HF_BEFORE_MIGRATE |\n      HF_FORWARD_READONLY_SIGNERS |\n      HF_LAUNCH_CONTEXT_V2,\n    payload,\n    remainingAccountsHash: remainingAccounts.hookRemainingAccountsHash,\n    createRemainingAccounts: remainingAccounts.unsignedHookRemainingAccounts,\n  });\n\n  const getSwapHook = (cosigner?: TransactionSigner): CurveSwapHook => {\n    if (cosigner && !gate) {\n      throw new Error('this launch does not have a cosigner gate');\n    }\n    if (cosigner && cosigner.address !== gate?.cosigner) {\n      throw new Error(\n        `cosigner ${cosigner.address} does not match the launch cosigner ${gate?.cosigner}`,\n      );\n    }\n    const swapAccounts = getDopplerLaunchHookV2RemainingAccounts({\n      namespace,\n      config: deployment.dopplerLaunchHookV2Config,\n      feeRehypothecationState: routingAddresses.state,\n      settlementSigner: routingAddresses.settlementSigner,\n      cosigner: cosigner ?? gate?.cosigner,\n    });\n    return {\n      program: deployment.dopplerLaunchHookV2Program,\n      remainingAccounts: cosigner\n        ? swapAccounts.signedHookRemainingAccounts\n        : swapAccounts.unsignedHookRemainingAccounts,\n    };\n  };\n  const unsignedSwapHook = getSwapHook();\n\n  return {\n    namespace,\n    launchId,\n    launchAddresses: launch.addresses,\n    routingAddresses,\n    initializeRoutingInstruction,\n    initializeLaunchInstruction: launch.instruction,\n    vesting: preparedVesting\n      ? {\n          addresses: preparedVesting.addresses,\n          totalAllocation: preparedVesting.totalAllocation,\n          initializeInstruction: preparedVesting.initializeInstruction,\n          fundInstruction: preparedVesting.fundInstruction,\n        }\n      : undefined,\n    unsignedSwapHook,\n    getSwapHook,\n  };\n}\n","import {\n  assertAccountsExist,\n  fetchEncodedAccounts,\n  type Address,\n  type GetAccountInfoApi,\n  type GetMultipleAccountsApi,\n  type Instruction,\n  type Rpc,\n  type TransactionSigner,\n} from '@solana/kit';\nimport { decodeToken, findAssociatedTokenPda } from '@solana-program/token';\n\nimport { decodeDopplerLaunchHookV2Payload } from '../dopplerLaunchHookV2/index.js';\nimport {\n  decodeLaunch,\n  decodeLaunchFeeState,\n  fetchLaunch,\n} from '../generated/initializer/index.js';\nimport {\n  decodeRehypeState,\n  getSettleFeesInstructionAsync,\n} from '../dopplerRehypeRouterV1/index.js';\nimport {\n  DOPPLER_SOLANA_DEVNET_FEE_REHYPOTHECATION_PROGRAM_ADDRESSES,\n  deriveSolanaFeeRehypothecationDeployment,\n  type SolanaFeeRehypothecationDeployment,\n} from '../deployment.js';\nimport { PHASE_TRADING } from '../initializer/index.js';\nimport {\n  getLaunchAuthorityAddress,\n  getLaunchFeeStateAddress,\n} from '../initializer/pda.js';\nimport {\n  calculateInitializerBeneficiaryEntitlement,\n  calculatePendingInitializerFees,\n  quoteZeroFeeExactIn,\n  resolveProtectedMinimumOutput,\n  splitCumulativeFeeIncrement,\n} from './math.js';\nimport { deriveFeeRehypothecationAddresses } from './pda.js';\n\ntype Commitment = 'processed' | 'confirmed' | 'finalized';\n\nexport type FeeRehypothecationRpc = Rpc<\n  GetAccountInfoApi & GetMultipleAccountsApi\n>;\n\nexport type PrepareFeeRehypothecationSettlementInput = {\n  rpc: FeeRehypothecationRpc;\n  launch: Address;\n  settlementAuthority: TransactionSigner;\n  deployment?: SolanaFeeRehypothecationDeployment;\n  slippageBps?: number;\n  minBaseToQuoteOut?: bigint;\n  minQuoteToBaseOut?: bigint;\n  commitment?: Commitment;\n};\n\nexport type FeeRehypothecationSettlementQuote = {\n  claimedBaseFees: bigint;\n  claimedQuoteFees: bigint;\n  baseToQuoteAmountIn: bigint;\n  baseToQuoteExpectedAmountOut: bigint;\n  minBaseToQuoteOut: bigint;\n  quoteToBaseAmountIn: bigint;\n  quoteToBaseExpectedAmountOut: bigint;\n  minQuoteToBaseOut: bigint;\n};\n\nexport type PrepareFeeRehypothecationSettlementResult = {\n  instruction: Instruction;\n  quote: FeeRehypothecationSettlementQuote;\n  addresses: {\n    state: Address;\n    authority: Address;\n    settlementSigner: Address;\n    routerBaseAta: Address;\n    routerQuoteAta: Address;\n    buybackBaseAta: Address;\n    buybackQuoteAta: Address;\n  };\n};\n\nfunction activeValues<T>(values: ReadonlyArray<T>, count: number): T[] {\n  return values.slice(0, count);\n}\n\nexport async function prepareSettlement(\n  input: PrepareFeeRehypothecationSettlementInput,\n): Promise<PrepareFeeRehypothecationSettlementResult> {\n  const commitment = input.commitment ?? 'confirmed';\n  const deployment =\n    input.deployment ??\n    (await deriveSolanaFeeRehypothecationDeployment(\n      DOPPLER_SOLANA_DEVNET_FEE_REHYPOTHECATION_PROGRAM_ADDRESSES,\n    ));\n  const discoveredLaunch = await fetchLaunch(input.rpc, input.launch, {\n    commitment,\n  });\n  const routingAddresses = await deriveFeeRehypothecationAddresses(\n    discoveredLaunch.data.baseMint,\n    deployment.dopplerRehypeRouterV1Program,\n  );\n  const [launchFeeState] = await getLaunchFeeStateAddress(\n    input.launch,\n    deployment.initializerProgram,\n  );\n  const [launchAuthority] = await getLaunchAuthorityAddress(\n    input.launch,\n    deployment.initializerProgram,\n  );\n\n  const snapshot = await fetchEncodedAccounts(\n    input.rpc,\n    [\n      input.launch,\n      launchFeeState,\n      routingAddresses.state,\n      discoveredLaunch.data.baseMint,\n      discoveredLaunch.data.quoteMint,\n      discoveredLaunch.data.baseVault,\n      discoveredLaunch.data.quoteVault,\n    ],\n    { commitment },\n  );\n  assertAccountsExist(snapshot);\n  const [\n    launchAccount,\n    encodedFeeState,\n    encodedRoutingState,\n    baseMintAccount,\n    quoteMintAccount,\n    encodedBaseVault,\n    encodedQuoteVault,\n  ] = snapshot;\n  const launch = decodeLaunch(launchAccount).data;\n  const feeStateAccount = decodeLaunchFeeState(encodedFeeState);\n  const routingStateAccount = decodeRehypeState(encodedRoutingState);\n  const baseVaultAccount = decodeToken(encodedBaseVault);\n  const quoteVaultAccount = decodeToken(encodedQuoteVault);\n  const baseTokenProgram = baseMintAccount.programAddress;\n  const quoteTokenProgram = quoteMintAccount.programAddress;\n\n  if (\n    launch.phase !== PHASE_TRADING ||\n    launch.hookProgram !== deployment.dopplerLaunchHookV2Program\n  ) {\n    throw new Error('launch is not an active fee rehypothecation launch');\n  }\n  const payload = decodeDopplerLaunchHookV2Payload(\n    launch.hookPayload.bytes.slice(0, launch.hookPayload.len),\n  );\n  if (payload.feeRehypothecationState !== routingAddresses.state) {\n    throw new Error('launch payload does not match its router state');\n  }\n  const feeState = feeStateAccount.data;\n  const routingState = routingStateAccount.data;\n  if (\n    feeState.launch !== input.launch ||\n    feeState.beneficiaryLen !== 1 ||\n    feeState.beneficiaries[0]?.wallet !== routingAddresses.authority ||\n    feeState.beneficiaries[0]?.shareBps !== 10_000 ||\n    routingState.launch !== input.launch ||\n    routingState.baseMint !== launch.baseMint ||\n    routingState.quoteMint !== launch.quoteMint ||\n    routingState.hookProgram !== launch.hookProgram ||\n    routingState.settlementAuthority !== input.settlementAuthority.address ||\n    baseMintAccount.address !== launch.baseMint ||\n    quoteMintAccount.address !== launch.quoteMint ||\n    baseVaultAccount.address !== launch.baseVault ||\n    quoteVaultAccount.address !== launch.quoteVault ||\n    baseVaultAccount.programAddress !== baseTokenProgram ||\n    quoteVaultAccount.programAddress !== quoteTokenProgram ||\n    baseVaultAccount.data.mint !== launch.baseMint ||\n    quoteVaultAccount.data.mint !== launch.quoteMint ||\n    baseVaultAccount.data.owner !== launchAuthority ||\n    quoteVaultAccount.data.owner !== launchAuthority\n  ) {\n    throw new Error('fee rehypothecation state does not match the launch');\n  }\n  if (\n    routingState.pendingCrossBase !== 0n ||\n    routingState.pendingCrossQuote !== 0n ||\n    routingState.pendingLpBase !== 0n ||\n    routingState.pendingLpQuote !== 0n ||\n    routingState.inflightKind !== 0 ||\n    routingState.inflightAmountIn !== 0n ||\n    routingState.inflightExpectedAmountOut !== 0n\n  ) {\n    throw new Error('fee settlement is already in progress');\n  }\n\n  const beneficiary = feeState.beneficiaries[0];\n  if (!beneficiary) {\n    throw new Error('launch has no router fee beneficiary');\n  }\n  const claimedBaseFees =\n    calculateInitializerBeneficiaryEntitlement(\n      feeState.cumulatedBaseFees,\n      feeState.protocolFeeBps,\n      beneficiary.shareBps,\n    ) - feeState.distributedBaseByBeneficiary[0]!;\n  const claimedQuoteFees =\n    calculateInitializerBeneficiaryEntitlement(\n      feeState.cumulatedQuoteFees,\n      feeState.protocolFeeBps,\n      beneficiary.shareBps,\n    ) - feeState.distributedQuoteByBeneficiary[0]!;\n  if (claimedBaseFees < 0n || claimedQuoteFees < 0n) {\n    throw new Error('distributed router fees exceed its entitlement');\n  }\n  if (claimedBaseFees === 0n && claimedQuoteFees === 0n) {\n    throw new Error('no fees are available to settle');\n  }\n\n  const pendingBaseFees = calculatePendingInitializerFees({\n    cumulativeFees: feeState.cumulatedBaseFees,\n    distributedProtocolFees: feeState.distributedProtocolBaseFees,\n    distributedBeneficiaryFees: activeValues(\n      feeState.distributedBaseByBeneficiary,\n      feeState.beneficiaryLen,\n    ),\n  });\n  const pendingQuoteFees = calculatePendingInitializerFees({\n    cumulativeFees: feeState.cumulatedQuoteFees,\n    distributedProtocolFees: feeState.distributedProtocolQuoteFees,\n    distributedBeneficiaryFees: activeValues(\n      feeState.distributedQuoteByBeneficiary,\n      feeState.beneficiaryLen,\n    ),\n  });\n  let baseReserve =\n    baseVaultAccount.data.amount -\n    launch.baseForDistribution -\n    launch.baseForLiquidity -\n    pendingBaseFees;\n  let quoteReserve = quoteVaultAccount.data.amount - pendingQuoteFees;\n  if (baseReserve < 0n || quoteReserve < 0n) {\n    throw new Error('launch vault balances are inconsistent with fee state');\n  }\n\n  const [, baseToQuoteAmountIn] = splitCumulativeFeeIncrement(\n    routingState.feeRouting.assetFees,\n    routingState.cumulativeRoutedBaseFees,\n    claimedBaseFees,\n  );\n  const [quoteToBaseAmountIn] = splitCumulativeFeeIncrement(\n    routingState.feeRouting.numeraireFees,\n    routingState.cumulativeRoutedQuoteFees,\n    claimedQuoteFees,\n  );\n  const baseToQuoteExpectedAmountOut =\n    baseToQuoteAmountIn === 0n\n      ? 0n\n      : quoteZeroFeeExactIn({\n          amountIn: baseToQuoteAmountIn,\n          reserveIn: baseReserve,\n          reserveOut: quoteReserve,\n          virtualIn: launch.curveVirtualBase,\n          virtualOut: launch.curveVirtualQuote,\n        });\n  if (baseToQuoteExpectedAmountOut > 0n) {\n    baseReserve += baseToQuoteAmountIn;\n    quoteReserve -= baseToQuoteExpectedAmountOut;\n  }\n  const quoteToBaseExpectedAmountOut =\n    quoteToBaseAmountIn === 0n\n      ? 0n\n      : quoteZeroFeeExactIn({\n          amountIn: quoteToBaseAmountIn,\n          reserveIn: quoteReserve,\n          reserveOut: baseReserve,\n          virtualIn: launch.curveVirtualQuote,\n          virtualOut: launch.curveVirtualBase,\n        });\n  const minBaseToQuoteOut = resolveProtectedMinimumOutput({\n    expectedAmountOut: baseToQuoteExpectedAmountOut,\n    minimumAmountOut: input.minBaseToQuoteOut,\n    slippageBps: input.slippageBps,\n  });\n  const minQuoteToBaseOut = resolveProtectedMinimumOutput({\n    expectedAmountOut: quoteToBaseExpectedAmountOut,\n    minimumAmountOut: input.minQuoteToBaseOut,\n    slippageBps: input.slippageBps,\n  });\n\n  const [routerBaseAta] = await findAssociatedTokenPda({\n    owner: routingAddresses.authority,\n    mint: launch.baseMint,\n    tokenProgram: baseTokenProgram,\n  });\n  const [routerQuoteAta] = await findAssociatedTokenPda({\n    owner: routingAddresses.authority,\n    mint: launch.quoteMint,\n    tokenProgram: quoteTokenProgram,\n  });\n  const [buybackBaseAta] = await findAssociatedTokenPda({\n    owner: routingState.buybackDestination,\n    mint: launch.baseMint,\n    tokenProgram: baseTokenProgram,\n  });\n  const [buybackQuoteAta] = await findAssociatedTokenPda({\n    owner: routingState.buybackDestination,\n    mint: launch.quoteMint,\n    tokenProgram: quoteTokenProgram,\n  });\n  const instruction = await getSettleFeesInstructionAsync(\n    {\n      settlementAuthority: input.settlementAuthority,\n      initializerProgram: deployment.initializerProgram,\n      initializerConfig: deployment.initializerConfig,\n      launch: input.launch,\n      launchFeeState: feeStateAccount.address,\n      launchAuthority,\n      baseMint: launch.baseMint,\n      quoteMint: launch.quoteMint,\n      baseVault: launch.baseVault,\n      quoteVault: launch.quoteVault,\n      rehypeState: routingAddresses.state,\n      rehypeAuthority: routingAddresses.authority,\n      settlementSigner: routingAddresses.settlementSigner,\n      routerBaseAta,\n      routerQuoteAta,\n      buybackDestination: routingState.buybackDestination,\n      buybackBaseAta,\n      buybackQuoteAta,\n      namespace: launch.namespace,\n      hookConfig: deployment.dopplerLaunchHookV2Config,\n      hookProgram: deployment.dopplerLaunchHookV2Program,\n      baseTokenProgram,\n      quoteTokenProgram,\n      gateCosigner: payload.cosignerGate?.cosigner,\n      minBaseToQuoteOut,\n      minQuoteToBaseOut,\n    },\n    { programAddress: deployment.dopplerRehypeRouterV1Program },\n  );\n\n  return {\n    instruction,\n    quote: {\n      claimedBaseFees,\n      claimedQuoteFees,\n      baseToQuoteAmountIn,\n      baseToQuoteExpectedAmountOut,\n      minBaseToQuoteOut,\n      quoteToBaseAmountIn,\n      quoteToBaseExpectedAmountOut,\n      minQuoteToBaseOut,\n    },\n    addresses: {\n      ...routingAddresses,\n      routerBaseAta,\n      routerQuoteAta,\n      buybackBaseAta,\n      buybackQuoteAta,\n    },\n  };\n}\n","export * from '../generated/dopplerVesting/index.js';\nexport * from './claim.js';\nexport * from './constants.js';\nexport * from './launch.js';\nexport * from './pda.js';\n","import {\n  type Address,\n  type Instruction,\n  type TransactionSigner,\n} from '@solana/kit';\n\nimport {\n  SYSTEM_PROGRAM_ADDRESS,\n  TOKEN_PROGRAM_ADDRESS,\n} from '../core/constants.js';\nimport {\n  DOPPLER_VESTING_PROGRAM_ADDRESS,\n  getClaimInstructionAsync,\n} from '../generated/dopplerVesting/index.js';\nimport { MAX_VESTING_SCHEDULES } from './constants.js';\nimport {\n  deriveVestingAddresses,\n  getVestingBeneficiaryTokenAccountAddress,\n  type VestingAddresses,\n} from './pda.js';\n\nconst MAX_U64 = (1n << 64n) - 1n;\n\nexport type PrepareVestingClaimInput = {\n  payer: TransactionSigner;\n  beneficiary: Address;\n  launch: Address;\n  baseMint: Address;\n  baseTokenProgram?: Address;\n  scheduleId?: number | null;\n  /** Zero or omitted claims every token currently available. */\n  amount?: bigint;\n  vestingProgram?: Address;\n};\n\nexport type PrepareVestingClaimResult = VestingAddresses & {\n  beneficiaryTokenAccount: Address;\n  instruction: Instruction;\n};\n\nexport async function prepareClaim(\n  input: PrepareVestingClaimInput,\n): Promise<PrepareVestingClaimResult> {\n  if (input.beneficiary === SYSTEM_PROGRAM_ADDRESS) {\n    throw new Error('beneficiary must not be the default address');\n  }\n  if (\n    input.scheduleId !== undefined &&\n    input.scheduleId !== null &&\n    (!Number.isInteger(input.scheduleId) ||\n      input.scheduleId < 0 ||\n      input.scheduleId >= MAX_VESTING_SCHEDULES)\n  ) {\n    throw new Error(\n      `scheduleId must be between 0 and ${MAX_VESTING_SCHEDULES - 1}`,\n    );\n  }\n  const amount = input.amount ?? 0n;\n  if (amount < 0n || amount > MAX_U64) {\n    throw new Error('amount must fit in a u64');\n  }\n\n  const baseTokenProgram = input.baseTokenProgram ?? TOKEN_PROGRAM_ADDRESS;\n  const vestingProgram =\n    input.vestingProgram ?? DOPPLER_VESTING_PROGRAM_ADDRESS;\n  const addresses = await deriveVestingAddresses(\n    input.launch,\n    input.baseMint,\n    baseTokenProgram,\n    vestingProgram,\n  );\n  const [beneficiaryTokenAccount] =\n    await getVestingBeneficiaryTokenAccountAddress(\n      input.beneficiary,\n      input.baseMint,\n      baseTokenProgram,\n    );\n  const instruction = await getClaimInstructionAsync(\n    {\n      payer: input.payer,\n      beneficiary: input.beneficiary,\n      launch: input.launch,\n      vestingConfig: addresses.config,\n      baseMint: input.baseMint,\n      vestingVault: addresses.vault,\n      beneficiaryTokenAccount,\n      baseTokenProgram,\n      scheduleId: input.scheduleId ?? null,\n      amount,\n    },\n    { programAddress: vestingProgram },\n  );\n\n  return { ...addresses, beneficiaryTokenAccount, instruction };\n}\n","import {\n  type Address,\n  type Instruction,\n  type TransactionSigner,\n} from '@solana/kit';\n\nimport {\n  SYSTEM_PROGRAM_ADDRESS,\n  TOKEN_PROGRAM_ADDRESS,\n} from '../core/constants.js';\nimport { DOPPLER_VESTING_PROGRAM_ADDRESS } from '../generated/dopplerVesting/index.js';\nimport {\n  createLaunch,\n  createLaunchId,\n  deriveCreateLaunchAddresses,\n  type CreateLaunchAccountSigners,\n  type CreateLaunchAddresses,\n  type CreateLaunchCpmmMigrationConfig,\n  type CreateLaunchInput,\n  type LaunchSupply,\n} from '../initializer/createLaunch.js';\nimport { INITIALIZER_PROGRAM_ID } from '../initializer/constants.js';\nimport {\n  normalizeU64,\n  prepareVestingConfiguration,\n  type VestingPlan,\n} from './internal.js';\nimport type { VestingAddresses } from './pda.js';\n\nexport type { VestingPlan } from './internal.js';\n\ntype VestingLaunchSupply = Omit<LaunchSupply, 'baseForDistribution'>;\n\nexport type PrepareVestingLaunchInput = Omit<\n  CreateLaunchInput,\n  'launchAccounts' | 'migration' | 'payer' | 'supply' | 'vestingConfig'\n> & {\n  launchAccounts: Omit<CreateLaunchAccountSigners, 'baseMint'> & {\n    baseMint: TransactionSigner;\n  };\n  payer: TransactionSigner;\n  supply: VestingLaunchSupply;\n  vesting: VestingPlan;\n  /** Vesting launches are non-migrating unless a migration is explicitly supplied. */\n  migration?: CreateLaunchInput['migration'];\n  vestingProgram?: Address;\n};\n\nexport type PrepareVestingLaunchResult = {\n  namespace: Address;\n  launchId: Uint8Array;\n  launchAddresses: CreateLaunchAddresses;\n  vestingAddresses: VestingAddresses;\n  totalAllocation: bigint;\n  initializeVestingInstruction: Instruction;\n  initializeLaunchInstruction: Instruction;\n  fundVestingInstruction: Instruction;\n};\n\nfunction resolveVestingMigration(\n  migration: PrepareVestingLaunchInput['migration'],\n  baseForLiquidity: bigint,\n): CreateLaunchInput['migration'] {\n  if (migration === undefined || migration === false || migration === null) {\n    return false;\n  }\n  if (migration === true) {\n    throw new Error(\n      'vesting migration requires an explicit CPMM config with a positive minRaiseQuote',\n    );\n  }\n  if (migration.kind === 'custom') {\n    return migration;\n  }\n\n  const cpmmMigration: CreateLaunchCpmmMigrationConfig = migration;\n  if (\n    (cpmmMigration.recipients?.length ?? 0) !== 0 ||\n    (cpmmMigration.recipientAtas?.length ?? 0) !== 0\n  ) {\n    throw new Error(\n      'vesting CPMM migration does not support migration recipients',\n    );\n  }\n  const minRaiseQuote = normalizeU64(\n    cpmmMigration.minRaiseQuote ?? 0n,\n    'migration minRaiseQuote',\n  );\n  if (minRaiseQuote === 0n) {\n    throw new Error('vesting CPMM migration requires a positive minRaiseQuote');\n  }\n  const baseForDistribution = normalizeU64(\n    cpmmMigration.baseForDistribution ?? 0n,\n    'migration baseForDistribution',\n  );\n  if (baseForDistribution !== 0n) {\n    throw new Error('vesting CPMM migration requires zero baseForDistribution');\n  }\n  const migrationBaseForLiquidity = normalizeU64(\n    cpmmMigration.baseForLiquidity ?? baseForLiquidity,\n    'migration baseForLiquidity',\n  );\n  if (migrationBaseForLiquidity !== baseForLiquidity) {\n    throw new Error(\n      'vesting CPMM migration baseForLiquidity must match the launch supply',\n    );\n  }\n\n  return {\n    ...cpmmMigration,\n    minRaiseQuote,\n    recipients: [],\n    recipientAtas: [],\n    baseForDistribution: 0n,\n    baseForLiquidity,\n  };\n}\n\nexport async function prepareLaunch(\n  input: PrepareVestingLaunchInput,\n): Promise<PrepareVestingLaunchResult> {\n  const {\n    vesting: vestingPlan,\n    vestingProgram: vestingProgramOverride,\n    migration: requestedMigration,\n    ...launchInput\n  } = input;\n  const baseForLiquidity = normalizeU64(\n    input.supply.baseForLiquidity,\n    'baseForLiquidity',\n  );\n  if (\n    (requestedMigration === undefined ||\n      requestedMigration === false ||\n      requestedMigration === null) &&\n    baseForLiquidity !== 0n\n  ) {\n    throw new Error('non-migrating launches require zero baseForLiquidity');\n  }\n  const launchId = input.launchId ?? createLaunchId();\n  const namespace = input.namespace ?? SYSTEM_PROGRAM_ADDRESS;\n  const launchAddresses =\n    input.addresses ??\n    (await deriveCreateLaunchAddresses({\n      deployment: input.deployment,\n      programId: input.programId,\n      config: input.config,\n      namespace,\n      launchId,\n      baseMint: input.launchAccounts.baseMint,\n      metadata: input.metadata,\n    }));\n  const baseTokenProgram =\n    input.tokenPrograms?.baseTokenProgram ?? TOKEN_PROGRAM_ADDRESS;\n  const vestingProgram =\n    vestingProgramOverride ?? DOPPLER_VESTING_PROGRAM_ADDRESS;\n  const initializerProgram =\n    input.programId ??\n    input.deployment?.initializerProgram ??\n    INITIALIZER_PROGRAM_ID;\n  const preparedVesting = await prepareVestingConfiguration({\n    payer: input.payer,\n    launch: launchAddresses.launch,\n    launchAuthority: launchAddresses.launchAuthority,\n    baseMint: input.launchAccounts.baseMint,\n    baseVault: input.launchAccounts.baseVault,\n    baseTokenProgram,\n    initialSupply: input.supply.baseTotalSupply,\n    plan: vestingPlan,\n    vestingProgram,\n    initializerProgram,\n  });\n  if (\n    preparedVesting.totalAllocation + baseForLiquidity >=\n    preparedVesting.initialSupply\n  ) {\n    throw new Error(\n      'vesting and liquidity allocations must leave base tokens for the bonding curve',\n    );\n  }\n  const migration = resolveVestingMigration(\n    requestedMigration,\n    baseForLiquidity,\n  );\n  const launch = await createLaunch({\n    ...launchInput,\n    namespace,\n    launchId,\n    addresses: launchAddresses,\n    supply: {\n      ...input.supply,\n      baseTotalSupply: preparedVesting.initialSupply,\n      baseForDistribution: preparedVesting.totalAllocation,\n      baseForLiquidity,\n    },\n    migration,\n    vestingConfig: preparedVesting.addresses.config,\n  });\n\n  return {\n    namespace,\n    launchId,\n    launchAddresses,\n    vestingAddresses: preparedVesting.addresses,\n    totalAllocation: preparedVesting.totalAllocation,\n    initializeVestingInstruction: preparedVesting.initializeInstruction,\n    initializeLaunchInstruction: launch.instruction,\n    fundVestingInstruction: preparedVesting.fundInstruction,\n  };\n}\n","export * from '../../generated/predictionMigrator/index.js';\nexport {\n  getPredictionMarketAddress,\n  getPredictionMarketAuthorityAddress,\n  getPredictionPotVaultAddress,\n  getPredictionEntryAddress,\n  getPredictionEntryByMintAddress,\n} from './pda.js';\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  isProgramError,\n  type Address,\n  type SOLANA_ERROR__INSTRUCTION_ERROR__CUSTOM,\n  type SolanaError,\n} from '@solana/kit';\nimport { PREDICTION_MIGRATOR_PROGRAM_ADDRESS } from '../programs';\n\n/** Unauthorized: Unauthorized */\nexport const PREDICTION_MIGRATOR_ERROR__UNAUTHORIZED = 0x1770; // 6000\n/** QuoteMintMismatch: Quote mint mismatch */\nexport const PREDICTION_MIGRATOR_ERROR__QUOTE_MINT_MISMATCH = 0x1771; // 6001\n/** EntryAlreadyMigrated: Entry already migrated */\nexport const PREDICTION_MIGRATOR_ERROR__ENTRY_ALREADY_MIGRATED = 0x1774; // 6004\n/** OracleNotFinalized: Oracle not finalized */\nexport const PREDICTION_MIGRATOR_ERROR__ORACLE_NOT_FINALIZED = 0x1776; // 6006\n/** MarketNotResolved: Market not resolved */\nexport const PREDICTION_MIGRATOR_ERROR__MARKET_NOT_RESOLVED = 0x1777; // 6007\n/** InvalidWinnerMint: Invalid winner mint */\nexport const PREDICTION_MIGRATOR_ERROR__INVALID_WINNER_MINT = 0x1778; // 6008\n/** InsufficientBalance: Insufficient balance */\nexport const PREDICTION_MIGRATOR_ERROR__INSUFFICIENT_BALANCE = 0x1779; // 6009\n/** MathOverflow: Math overflow */\nexport const PREDICTION_MIGRATOR_ERROR__MATH_OVERFLOW = 0x177a; // 6010\n/** InvalidEntryId: Invalid entry ID */\nexport const PREDICTION_MIGRATOR_ERROR__INVALID_ENTRY_ID = 0x177b; // 6011\n/** InvalidMarket: Invalid market */\nexport const PREDICTION_MIGRATOR_ERROR__INVALID_MARKET = 0x177c; // 6012\n/** InvalidVault: Invalid vault */\nexport const PREDICTION_MIGRATOR_ERROR__INVALID_VAULT = 0x177d; // 6013\n/** InvalidMint: Invalid mint */\nexport const PREDICTION_MIGRATOR_ERROR__INVALID_MINT = 0x177e; // 6014\n/** WinningEntryNotMigrated: Winning entry not migrated */\nexport const PREDICTION_MIGRATOR_ERROR__WINNING_ENTRY_NOT_MIGRATED = 0x177f; // 6015\n/** InvalidOracle: Invalid oracle */\nexport const PREDICTION_MIGRATOR_ERROR__INVALID_ORACLE = 0x1781; // 6017\n/** ZeroClaimableSupply: Zero claimable supply */\nexport const PREDICTION_MIGRATOR_ERROR__ZERO_CLAIMABLE_SUPPLY = 0x1782; // 6018\n/** InvalidInput: Invalid input */\nexport const PREDICTION_MIGRATOR_ERROR__INVALID_INPUT = 0x1783; // 6019\n/** NoPendingRewards: No pending rewards */\nexport const PREDICTION_MIGRATOR_ERROR__NO_PENDING_REWARDS = 0x1784; // 6020\n/** ClaimableSupplyAlreadySet: Claimable supply already set */\nexport const PREDICTION_MIGRATOR_ERROR__CLAIMABLE_SUPPLY_ALREADY_SET = 0x1785; // 6021\n\nexport type PredictionMigratorError =\n  | typeof PREDICTION_MIGRATOR_ERROR__CLAIMABLE_SUPPLY_ALREADY_SET\n  | typeof PREDICTION_MIGRATOR_ERROR__ENTRY_ALREADY_MIGRATED\n  | typeof PREDICTION_MIGRATOR_ERROR__INSUFFICIENT_BALANCE\n  | typeof PREDICTION_MIGRATOR_ERROR__INVALID_ENTRY_ID\n  | typeof PREDICTION_MIGRATOR_ERROR__INVALID_INPUT\n  | typeof PREDICTION_MIGRATOR_ERROR__INVALID_MARKET\n  | typeof PREDICTION_MIGRATOR_ERROR__INVALID_MINT\n  | typeof PREDICTION_MIGRATOR_ERROR__INVALID_ORACLE\n  | typeof PREDICTION_MIGRATOR_ERROR__INVALID_VAULT\n  | typeof PREDICTION_MIGRATOR_ERROR__INVALID_WINNER_MINT\n  | typeof PREDICTION_MIGRATOR_ERROR__MARKET_NOT_RESOLVED\n  | typeof PREDICTION_MIGRATOR_ERROR__MATH_OVERFLOW\n  | typeof PREDICTION_MIGRATOR_ERROR__NO_PENDING_REWARDS\n  | typeof PREDICTION_MIGRATOR_ERROR__ORACLE_NOT_FINALIZED\n  | typeof PREDICTION_MIGRATOR_ERROR__QUOTE_MINT_MISMATCH\n  | typeof PREDICTION_MIGRATOR_ERROR__UNAUTHORIZED\n  | typeof PREDICTION_MIGRATOR_ERROR__WINNING_ENTRY_NOT_MIGRATED\n  | typeof PREDICTION_MIGRATOR_ERROR__ZERO_CLAIMABLE_SUPPLY;\n\nlet predictionMigratorErrorMessages:\n  | Record<PredictionMigratorError, string>\n  | undefined;\nif (process.env.NODE_ENV !== 'production') {\n  predictionMigratorErrorMessages = {\n    [PREDICTION_MIGRATOR_ERROR__CLAIMABLE_SUPPLY_ALREADY_SET]: `Claimable supply already set`,\n    [PREDICTION_MIGRATOR_ERROR__ENTRY_ALREADY_MIGRATED]: `Entry already migrated`,\n    [PREDICTION_MIGRATOR_ERROR__INSUFFICIENT_BALANCE]: `Insufficient balance`,\n    [PREDICTION_MIGRATOR_ERROR__INVALID_ENTRY_ID]: `Invalid entry ID`,\n    [PREDICTION_MIGRATOR_ERROR__INVALID_INPUT]: `Invalid input`,\n    [PREDICTION_MIGRATOR_ERROR__INVALID_MARKET]: `Invalid market`,\n    [PREDICTION_MIGRATOR_ERROR__INVALID_MINT]: `Invalid mint`,\n    [PREDICTION_MIGRATOR_ERROR__INVALID_ORACLE]: `Invalid oracle`,\n    [PREDICTION_MIGRATOR_ERROR__INVALID_VAULT]: `Invalid vault`,\n    [PREDICTION_MIGRATOR_ERROR__INVALID_WINNER_MINT]: `Invalid winner mint`,\n    [PREDICTION_MIGRATOR_ERROR__MARKET_NOT_RESOLVED]: `Market not resolved`,\n    [PREDICTION_MIGRATOR_ERROR__MATH_OVERFLOW]: `Math overflow`,\n    [PREDICTION_MIGRATOR_ERROR__NO_PENDING_REWARDS]: `No pending rewards`,\n    [PREDICTION_MIGRATOR_ERROR__ORACLE_NOT_FINALIZED]: `Oracle not finalized`,\n    [PREDICTION_MIGRATOR_ERROR__QUOTE_MINT_MISMATCH]: `Quote mint mismatch`,\n    [PREDICTION_MIGRATOR_ERROR__UNAUTHORIZED]: `Unauthorized`,\n    [PREDICTION_MIGRATOR_ERROR__WINNING_ENTRY_NOT_MIGRATED]: `Winning entry not migrated`,\n    [PREDICTION_MIGRATOR_ERROR__ZERO_CLAIMABLE_SUPPLY]: `Zero claimable supply`,\n  };\n}\n\nexport function getPredictionMigratorErrorMessage(\n  code: PredictionMigratorError,\n): string {\n  if (process.env.NODE_ENV !== 'production') {\n    return (\n      predictionMigratorErrorMessages as Record<PredictionMigratorError, string>\n    )[code];\n  }\n\n  return 'Error message not available in production bundles.';\n}\n\nexport function isPredictionMigratorError<\n  TProgramErrorCode extends PredictionMigratorError,\n>(\n  error: unknown,\n  transactionMessage: {\n    instructions: Record<number, { programAddress: Address }>;\n  },\n  code?: TProgramErrorCode,\n): error is SolanaError<typeof SOLANA_ERROR__INSTRUCTION_ERROR__CUSTOM> &\n  Readonly<{ context: Readonly<{ code: TProgramErrorCode }> }> {\n  return isProgramError<TProgramErrorCode>(\n    error,\n    transactionMessage,\n    PREDICTION_MIGRATOR_PROGRAM_ADDRESS,\n    code,\n  );\n}\n","export * from '../generated/trustedOracle/index.js';\nexport { getOracleStateAddress } from './pda.js';\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  assertAccountExists,\n  assertAccountsExist,\n  combineCodec,\n  decodeAccount,\n  fetchEncodedAccount,\n  fetchEncodedAccounts,\n  fixDecoderSize,\n  fixEncoderSize,\n  getAddressDecoder,\n  getAddressEncoder,\n  getBooleanDecoder,\n  getBooleanEncoder,\n  getBytesDecoder,\n  getBytesEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU64Decoder,\n  getU64Encoder,\n  getU8Decoder,\n  getU8Encoder,\n  transformEncoder,\n  type Account,\n  type Address,\n  type EncodedAccount,\n  type FetchAccountConfig,\n  type FetchAccountsConfig,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n  type MaybeAccount,\n  type MaybeEncodedAccount,\n  type ReadonlyUint8Array,\n} from '@solana/kit';\n\nexport const ORACLE_STATE_DISCRIMINATOR = new Uint8Array([\n  97, 156, 157, 189, 194, 73, 8, 15,\n]);\n\nexport function getOracleStateDiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(\n    ORACLE_STATE_DISCRIMINATOR,\n  );\n}\n\nexport type OracleState = {\n  discriminator: ReadonlyUint8Array;\n  /** The authority that can finalize this oracle */\n  oracleAuthority: Address;\n  /** Optional quote mint for validation (Pubkey::default() if not used) */\n  quoteMint: Address;\n  /** Whether the oracle has been finalized with a winner */\n  isFinalized: boolean;\n  /** The winning mint (only valid if is_finalized == true) */\n  winningMint: Address;\n  /** Nonce used in PDA derivation */\n  nonce: bigint;\n  /** PDA bump seed */\n  bump: number;\n  /** Reserved for future use */\n  reserved: ReadonlyUint8Array;\n};\n\nexport type OracleStateArgs = {\n  /** The authority that can finalize this oracle */\n  oracleAuthority: Address;\n  /** Optional quote mint for validation (Pubkey::default() if not used) */\n  quoteMint: Address;\n  /** Whether the oracle has been finalized with a winner */\n  isFinalized: boolean;\n  /** The winning mint (only valid if is_finalized == true) */\n  winningMint: Address;\n  /** Nonce used in PDA derivation */\n  nonce: number | bigint;\n  /** PDA bump seed */\n  bump: number;\n  /** Reserved for future use */\n  reserved: ReadonlyUint8Array;\n};\n\n/** Gets the encoder for {@link OracleStateArgs} account data. */\nexport function getOracleStateEncoder(): FixedSizeEncoder<OracleStateArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['oracleAuthority', getAddressEncoder()],\n      ['quoteMint', getAddressEncoder()],\n      ['isFinalized', getBooleanEncoder()],\n      ['winningMint', getAddressEncoder()],\n      ['nonce', getU64Encoder()],\n      ['bump', getU8Encoder()],\n      ['reserved', fixEncoderSize(getBytesEncoder(), 31)],\n    ]),\n    (value) => ({ ...value, discriminator: ORACLE_STATE_DISCRIMINATOR }),\n  );\n}\n\n/** Gets the decoder for {@link OracleState} account data. */\nexport function getOracleStateDecoder(): FixedSizeDecoder<OracleState> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['oracleAuthority', getAddressDecoder()],\n    ['quoteMint', getAddressDecoder()],\n    ['isFinalized', getBooleanDecoder()],\n    ['winningMint', getAddressDecoder()],\n    ['nonce', getU64Decoder()],\n    ['bump', getU8Decoder()],\n    ['reserved', fixDecoderSize(getBytesDecoder(), 31)],\n  ]);\n}\n\n/** Gets the codec for {@link OracleState} account data. */\nexport function getOracleStateCodec(): FixedSizeCodec<\n  OracleStateArgs,\n  OracleState\n> {\n  return combineCodec(getOracleStateEncoder(), getOracleStateDecoder());\n}\n\nexport function decodeOracleState<TAddress extends string = string>(\n  encodedAccount: EncodedAccount<TAddress>,\n): Account<OracleState, TAddress>;\nexport function decodeOracleState<TAddress extends string = string>(\n  encodedAccount: MaybeEncodedAccount<TAddress>,\n): MaybeAccount<OracleState, TAddress>;\nexport function decodeOracleState<TAddress extends string = string>(\n  encodedAccount: EncodedAccount<TAddress> | MaybeEncodedAccount<TAddress>,\n): Account<OracleState, TAddress> | MaybeAccount<OracleState, TAddress> {\n  return decodeAccount(\n    encodedAccount as MaybeEncodedAccount<TAddress>,\n    getOracleStateDecoder(),\n  );\n}\n\nexport async function fetchOracleState<TAddress extends string = string>(\n  rpc: Parameters<typeof fetchEncodedAccount>[0],\n  address: Address<TAddress>,\n  config?: FetchAccountConfig,\n): Promise<Account<OracleState, TAddress>> {\n  const maybeAccount = await fetchMaybeOracleState(rpc, address, config);\n  assertAccountExists(maybeAccount);\n  return maybeAccount;\n}\n\nexport async function fetchMaybeOracleState<TAddress extends string = string>(\n  rpc: Parameters<typeof fetchEncodedAccount>[0],\n  address: Address<TAddress>,\n  config?: FetchAccountConfig,\n): Promise<MaybeAccount<OracleState, TAddress>> {\n  const maybeAccount = await fetchEncodedAccount(rpc, address, config);\n  return decodeOracleState(maybeAccount);\n}\n\nexport async function fetchAllOracleState(\n  rpc: Parameters<typeof fetchEncodedAccounts>[0],\n  addresses: Array<Address>,\n  config?: FetchAccountsConfig,\n): Promise<Account<OracleState>[]> {\n  const maybeAccounts = await fetchAllMaybeOracleState(rpc, addresses, config);\n  assertAccountsExist(maybeAccounts);\n  return maybeAccounts;\n}\n\nexport async function fetchAllMaybeOracleState(\n  rpc: Parameters<typeof fetchEncodedAccounts>[0],\n  addresses: Array<Address>,\n  config?: FetchAccountsConfig,\n): Promise<MaybeAccount<OracleState>[]> {\n  const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config);\n  return maybeAccounts.map((maybeAccount) => decodeOracleState(maybeAccount));\n}\n\nexport function getOracleStateSize(): number {\n  return 145;\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getAddressDecoder,\n  getAddressEncoder,\n  getBytesDecoder,\n  getBytesEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS,\n  SolanaError,\n  transformEncoder,\n  type AccountMeta,\n  type AccountSignerMeta,\n  type Address,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n  type Instruction,\n  type InstructionWithAccounts,\n  type InstructionWithData,\n  type ReadonlySignerAccount,\n  type ReadonlyUint8Array,\n  type TransactionSigner,\n  type WritableAccount,\n} from '@solana/kit';\nimport {\n  getAccountMetaFactory,\n  type ResolvedInstructionAccount,\n} from '@solana/program-client-core';\nimport { TRUSTED_ORACLE_PROGRAM_ADDRESS } from '../programs';\n\nexport const FINALIZE_DISCRIMINATOR = new Uint8Array([\n  171, 61, 218, 56, 127, 115, 12, 217,\n]);\n\nexport function getFinalizeDiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(FINALIZE_DISCRIMINATOR);\n}\n\nexport type FinalizeInstruction<\n  TProgram extends string = typeof TRUSTED_ORACLE_PROGRAM_ADDRESS,\n  TAccountOracleAuthority extends string | AccountMeta<string> = string,\n  TAccountOracleState extends string | AccountMeta<string> = string,\n  TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n  InstructionWithData<ReadonlyUint8Array> &\n  InstructionWithAccounts<\n    [\n      TAccountOracleAuthority extends string\n        ? ReadonlySignerAccount<TAccountOracleAuthority> &\n            AccountSignerMeta<TAccountOracleAuthority>\n        : TAccountOracleAuthority,\n      TAccountOracleState extends string\n        ? WritableAccount<TAccountOracleState>\n        : TAccountOracleState,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type FinalizeInstructionData = {\n  discriminator: ReadonlyUint8Array;\n  winningMint: Address;\n};\n\nexport type FinalizeInstructionDataArgs = { winningMint: Address };\n\nexport function getFinalizeInstructionDataEncoder(): FixedSizeEncoder<FinalizeInstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['winningMint', getAddressEncoder()],\n    ]),\n    (value) => ({ ...value, discriminator: FINALIZE_DISCRIMINATOR }),\n  );\n}\n\nexport function getFinalizeInstructionDataDecoder(): FixedSizeDecoder<FinalizeInstructionData> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['winningMint', getAddressDecoder()],\n  ]);\n}\n\nexport function getFinalizeInstructionDataCodec(): FixedSizeCodec<\n  FinalizeInstructionDataArgs,\n  FinalizeInstructionData\n> {\n  return combineCodec(\n    getFinalizeInstructionDataEncoder(),\n    getFinalizeInstructionDataDecoder(),\n  );\n}\n\nexport type FinalizeInput<\n  TAccountOracleAuthority extends string = string,\n  TAccountOracleState extends string = string,\n> = {\n  /** The oracle authority - must sign to finalize */\n  oracleAuthority: TransactionSigner<TAccountOracleAuthority>;\n  oracleState: Address<TAccountOracleState>;\n  winningMint: FinalizeInstructionDataArgs['winningMint'];\n};\n\nexport function getFinalizeInstruction<\n  TAccountOracleAuthority extends string,\n  TAccountOracleState extends string,\n  TProgramAddress extends Address = typeof TRUSTED_ORACLE_PROGRAM_ADDRESS,\n>(\n  input: FinalizeInput<TAccountOracleAuthority, TAccountOracleState>,\n  config?: { programAddress?: TProgramAddress },\n): FinalizeInstruction<\n  TProgramAddress,\n  TAccountOracleAuthority,\n  TAccountOracleState\n> {\n  // Program address.\n  const programAddress =\n    config?.programAddress ?? TRUSTED_ORACLE_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    oracleAuthority: {\n      value: input.oracleAuthority ?? null,\n      isWritable: false,\n    },\n    oracleState: { value: input.oracleState ?? null, isWritable: true },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedInstructionAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta('oracleAuthority', accounts.oracleAuthority),\n      getAccountMeta('oracleState', accounts.oracleState),\n    ],\n    data: getFinalizeInstructionDataEncoder().encode(\n      args as FinalizeInstructionDataArgs,\n    ),\n    programAddress,\n  } as FinalizeInstruction<\n    TProgramAddress,\n    TAccountOracleAuthority,\n    TAccountOracleState\n  >);\n}\n\nexport type ParsedFinalizeInstruction<\n  TProgram extends string = typeof TRUSTED_ORACLE_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    /** The oracle authority - must sign to finalize */\n    oracleAuthority: TAccountMetas[0];\n    oracleState: TAccountMetas[1];\n  };\n  data: FinalizeInstructionData;\n};\n\nexport function parseFinalizeInstruction<\n  TProgram extends string,\n  TAccountMetas extends readonly AccountMeta[],\n>(\n  instruction: Instruction<TProgram> &\n    InstructionWithAccounts<TAccountMetas> &\n    InstructionWithData<ReadonlyUint8Array>,\n): ParsedFinalizeInstruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 2) {\n    throw new SolanaError(\n      SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS,\n      {\n        actualAccountMetas: instruction.accounts.length,\n        expectedAccountMetas: 2,\n      },\n    );\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: {\n      oracleAuthority: getNextAccount(),\n      oracleState: getNextAccount(),\n    },\n    data: getFinalizeInstructionDataDecoder().decode(instruction.data),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getAddressDecoder,\n  getAddressEncoder,\n  getBytesDecoder,\n  getBytesEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU64Decoder,\n  getU64Encoder,\n  SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS,\n  SolanaError,\n  transformEncoder,\n  type AccountMeta,\n  type AccountSignerMeta,\n  type Address,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n  type Instruction,\n  type InstructionWithAccounts,\n  type InstructionWithData,\n  type ReadonlyAccount,\n  type ReadonlyUint8Array,\n  type TransactionSigner,\n  type WritableAccount,\n  type WritableSignerAccount,\n} from '@solana/kit';\nimport {\n  getAccountMetaFactory,\n  type ResolvedInstructionAccount,\n} from '@solana/program-client-core';\nimport { TRUSTED_ORACLE_PROGRAM_ADDRESS } from '../programs';\n\nexport const INITIALIZE_ORACLE_DISCRIMINATOR = new Uint8Array([\n  144, 223, 131, 120, 196, 253, 181, 99,\n]);\n\nexport function getInitializeOracleDiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(\n    INITIALIZE_ORACLE_DISCRIMINATOR,\n  );\n}\n\nexport type InitializeOracleInstruction<\n  TProgram extends string = typeof TRUSTED_ORACLE_PROGRAM_ADDRESS,\n  TAccountOracleAuthority extends string | AccountMeta<string> = string,\n  TAccountOracleState extends string | AccountMeta<string> = string,\n  TAccountSystemProgram extends string | AccountMeta<string> =\n    '11111111111111111111111111111111',\n  TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n  InstructionWithData<ReadonlyUint8Array> &\n  InstructionWithAccounts<\n    [\n      TAccountOracleAuthority extends string\n        ? WritableSignerAccount<TAccountOracleAuthority> &\n            AccountSignerMeta<TAccountOracleAuthority>\n        : TAccountOracleAuthority,\n      TAccountOracleState extends string\n        ? WritableAccount<TAccountOracleState>\n        : TAccountOracleState,\n      TAccountSystemProgram extends string\n        ? ReadonlyAccount<TAccountSystemProgram>\n        : TAccountSystemProgram,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type InitializeOracleInstructionData = {\n  discriminator: ReadonlyUint8Array;\n  /** Nonce for PDA derivation (allows multiple oracles per authority) */\n  nonce: bigint;\n  /** Optional quote mint for validation (use Pubkey::default() if not needed) */\n  quoteMint: Address;\n};\n\nexport type InitializeOracleInstructionDataArgs = {\n  /** Nonce for PDA derivation (allows multiple oracles per authority) */\n  nonce: number | bigint;\n  /** Optional quote mint for validation (use Pubkey::default() if not needed) */\n  quoteMint: Address;\n};\n\nexport function getInitializeOracleInstructionDataEncoder(): FixedSizeEncoder<InitializeOracleInstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['nonce', getU64Encoder()],\n      ['quoteMint', getAddressEncoder()],\n    ]),\n    (value) => ({ ...value, discriminator: INITIALIZE_ORACLE_DISCRIMINATOR }),\n  );\n}\n\nexport function getInitializeOracleInstructionDataDecoder(): FixedSizeDecoder<InitializeOracleInstructionData> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['nonce', getU64Decoder()],\n    ['quoteMint', getAddressDecoder()],\n  ]);\n}\n\nexport function getInitializeOracleInstructionDataCodec(): FixedSizeCodec<\n  InitializeOracleInstructionDataArgs,\n  InitializeOracleInstructionData\n> {\n  return combineCodec(\n    getInitializeOracleInstructionDataEncoder(),\n    getInitializeOracleInstructionDataDecoder(),\n  );\n}\n\nexport type InitializeOracleInput<\n  TAccountOracleAuthority extends string = string,\n  TAccountOracleState extends string = string,\n  TAccountSystemProgram extends string = string,\n> = {\n  /** The authority that will be able to finalize this oracle */\n  oracleAuthority: TransactionSigner<TAccountOracleAuthority>;\n  oracleState: Address<TAccountOracleState>;\n  systemProgram?: Address<TAccountSystemProgram>;\n  nonce: InitializeOracleInstructionDataArgs['nonce'];\n  quoteMint: InitializeOracleInstructionDataArgs['quoteMint'];\n};\n\nexport function getInitializeOracleInstruction<\n  TAccountOracleAuthority extends string,\n  TAccountOracleState extends string,\n  TAccountSystemProgram extends string,\n  TProgramAddress extends Address = typeof TRUSTED_ORACLE_PROGRAM_ADDRESS,\n>(\n  input: InitializeOracleInput<\n    TAccountOracleAuthority,\n    TAccountOracleState,\n    TAccountSystemProgram\n  >,\n  config?: { programAddress?: TProgramAddress },\n): InitializeOracleInstruction<\n  TProgramAddress,\n  TAccountOracleAuthority,\n  TAccountOracleState,\n  TAccountSystemProgram\n> {\n  // Program address.\n  const programAddress =\n    config?.programAddress ?? TRUSTED_ORACLE_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    oracleAuthority: { value: input.oracleAuthority ?? null, isWritable: true },\n    oracleState: { value: input.oracleState ?? null, isWritable: true },\n    systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedInstructionAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolve default values.\n  if (!accounts.systemProgram.value) {\n    accounts.systemProgram.value =\n      '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n  }\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta('oracleAuthority', accounts.oracleAuthority),\n      getAccountMeta('oracleState', accounts.oracleState),\n      getAccountMeta('systemProgram', accounts.systemProgram),\n    ],\n    data: getInitializeOracleInstructionDataEncoder().encode(\n      args as InitializeOracleInstructionDataArgs,\n    ),\n    programAddress,\n  } as InitializeOracleInstruction<\n    TProgramAddress,\n    TAccountOracleAuthority,\n    TAccountOracleState,\n    TAccountSystemProgram\n  >);\n}\n\nexport type ParsedInitializeOracleInstruction<\n  TProgram extends string = typeof TRUSTED_ORACLE_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    /** The authority that will be able to finalize this oracle */\n    oracleAuthority: TAccountMetas[0];\n    oracleState: TAccountMetas[1];\n    systemProgram: TAccountMetas[2];\n  };\n  data: InitializeOracleInstructionData;\n};\n\nexport function parseInitializeOracleInstruction<\n  TProgram extends string,\n  TAccountMetas extends readonly AccountMeta[],\n>(\n  instruction: Instruction<TProgram> &\n    InstructionWithAccounts<TAccountMetas> &\n    InstructionWithData<ReadonlyUint8Array>,\n): ParsedInitializeOracleInstruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 3) {\n    throw new SolanaError(\n      SOLANA_ERROR__PROGRAM_CLIENTS__INSUFFICIENT_ACCOUNT_METAS,\n      {\n        actualAccountMetas: instruction.accounts.length,\n        expectedAccountMetas: 3,\n      },\n    );\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: {\n      oracleAuthority: getNextAccount(),\n      oracleState: getNextAccount(),\n      systemProgram: getNextAccount(),\n    },\n    data: getInitializeOracleInstructionDataDecoder().decode(instruction.data),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  assertIsInstructionWithAccounts,\n  containsBytes,\n  fixEncoderSize,\n  getBytesEncoder,\n  SOLANA_ERROR__PROGRAM_CLIENTS__FAILED_TO_IDENTIFY_ACCOUNT,\n  SOLANA_ERROR__PROGRAM_CLIENTS__FAILED_TO_IDENTIFY_INSTRUCTION,\n  SOLANA_ERROR__PROGRAM_CLIENTS__UNRECOGNIZED_INSTRUCTION_TYPE,\n  SolanaError,\n  type Address,\n  type ClientWithRpc,\n  type ClientWithTransactionPlanning,\n  type ClientWithTransactionSending,\n  type GetAccountInfoApi,\n  type GetMultipleAccountsApi,\n  type Instruction,\n  type InstructionWithData,\n  type ReadonlyUint8Array,\n} from '@solana/kit';\nimport {\n  addSelfFetchFunctions,\n  addSelfPlanAndSendFunctions,\n  type SelfFetchFunctions,\n  type SelfPlanAndSendFunctions,\n} from '@solana/program-client-core';\nimport {\n  getOracleStateCodec,\n  type OracleState,\n  type OracleStateArgs,\n} from '../accounts';\nimport {\n  getFinalizeInstruction,\n  getInitializeOracleInstruction,\n  parseFinalizeInstruction,\n  parseInitializeOracleInstruction,\n  type FinalizeInput,\n  type InitializeOracleInput,\n  type ParsedFinalizeInstruction,\n  type ParsedInitializeOracleInstruction,\n} from '../instructions';\n\nexport const TRUSTED_ORACLE_PROGRAM_ADDRESS =\n  'HhUzN7VvonNUevATyugZUepzxpeEZMXQbV92X2xvsp5m' as Address<'HhUzN7VvonNUevATyugZUepzxpeEZMXQbV92X2xvsp5m'>;\n\nexport enum TrustedOracleAccount {\n  OracleState,\n}\n\nexport function identifyTrustedOracleAccount(\n  account: { data: ReadonlyUint8Array } | ReadonlyUint8Array,\n): TrustedOracleAccount {\n  const data = 'data' in account ? account.data : account;\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([97, 156, 157, 189, 194, 73, 8, 15]),\n      ),\n      0,\n    )\n  ) {\n    return TrustedOracleAccount.OracleState;\n  }\n  throw new SolanaError(\n    SOLANA_ERROR__PROGRAM_CLIENTS__FAILED_TO_IDENTIFY_ACCOUNT,\n    { accountData: data, programName: 'trustedOracle' },\n  );\n}\n\nexport enum TrustedOracleInstruction {\n  Finalize,\n  InitializeOracle,\n}\n\nexport function identifyTrustedOracleInstruction(\n  instruction: { data: ReadonlyUint8Array } | ReadonlyUint8Array,\n): TrustedOracleInstruction {\n  const data = 'data' in instruction ? instruction.data : instruction;\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([171, 61, 218, 56, 127, 115, 12, 217]),\n      ),\n      0,\n    )\n  ) {\n    return TrustedOracleInstruction.Finalize;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([144, 223, 131, 120, 196, 253, 181, 99]),\n      ),\n      0,\n    )\n  ) {\n    return TrustedOracleInstruction.InitializeOracle;\n  }\n  throw new SolanaError(\n    SOLANA_ERROR__PROGRAM_CLIENTS__FAILED_TO_IDENTIFY_INSTRUCTION,\n    { instructionData: data, programName: 'trustedOracle' },\n  );\n}\n\nexport type ParsedTrustedOracleInstruction<\n  TProgram extends string = 'HhUzN7VvonNUevATyugZUepzxpeEZMXQbV92X2xvsp5m',\n> =\n  | ({\n      instructionType: TrustedOracleInstruction.Finalize;\n    } & ParsedFinalizeInstruction<TProgram>)\n  | ({\n      instructionType: TrustedOracleInstruction.InitializeOracle;\n    } & ParsedInitializeOracleInstruction<TProgram>);\n\nexport function parseTrustedOracleInstruction<TProgram extends string>(\n  instruction: Instruction<TProgram> & InstructionWithData<ReadonlyUint8Array>,\n): ParsedTrustedOracleInstruction<TProgram> {\n  const instructionType = identifyTrustedOracleInstruction(instruction);\n  switch (instructionType) {\n    case TrustedOracleInstruction.Finalize: {\n      assertIsInstructionWithAccounts(instruction);\n      return {\n        instructionType: TrustedOracleInstruction.Finalize,\n        ...parseFinalizeInstruction(instruction),\n      };\n    }\n    case TrustedOracleInstruction.InitializeOracle: {\n      assertIsInstructionWithAccounts(instruction);\n      return {\n        instructionType: TrustedOracleInstruction.InitializeOracle,\n        ...parseInitializeOracleInstruction(instruction),\n      };\n    }\n    default:\n      throw new SolanaError(\n        SOLANA_ERROR__PROGRAM_CLIENTS__UNRECOGNIZED_INSTRUCTION_TYPE,\n        {\n          instructionType: instructionType as string,\n          programName: 'trustedOracle',\n        },\n      );\n  }\n}\n\nexport type TrustedOraclePlugin = {\n  accounts: TrustedOraclePluginAccounts;\n  instructions: TrustedOraclePluginInstructions;\n};\n\nexport type TrustedOraclePluginAccounts = {\n  oracleState: ReturnType<typeof getOracleStateCodec> &\n    SelfFetchFunctions<OracleStateArgs, OracleState>;\n};\n\nexport type TrustedOraclePluginInstructions = {\n  finalize: (\n    input: FinalizeInput,\n  ) => ReturnType<typeof getFinalizeInstruction> & SelfPlanAndSendFunctions;\n  initializeOracle: (\n    input: InitializeOracleInput,\n  ) => ReturnType<typeof getInitializeOracleInstruction> &\n    SelfPlanAndSendFunctions;\n};\n\nexport type TrustedOraclePluginRequirements = ClientWithRpc<\n  GetAccountInfoApi & GetMultipleAccountsApi\n> &\n  ClientWithTransactionPlanning &\n  ClientWithTransactionSending;\n\nexport function trustedOracleProgram() {\n  return <T extends TrustedOraclePluginRequirements>(client: T) => {\n    return {\n      ...client,\n      trustedOracle: <TrustedOraclePlugin>{\n        accounts: {\n          oracleState: addSelfFetchFunctions(client, getOracleStateCodec()),\n        },\n        instructions: {\n          finalize: (input) =>\n            addSelfPlanAndSendFunctions(client, getFinalizeInstruction(input)),\n          initializeOracle: (input) =>\n            addSelfPlanAndSendFunctions(\n              client,\n              getInitializeOracleInstruction(input),\n            ),\n        },\n      },\n    };\n  };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  isProgramError,\n  type Address,\n  type SOLANA_ERROR__INSTRUCTION_ERROR__CUSTOM,\n  type SolanaError,\n} from '@solana/kit';\nimport { TRUSTED_ORACLE_PROGRAM_ADDRESS } from '../programs';\n\n/** Unauthorized: Unauthorized: only oracle authority can perform this action */\nexport const TRUSTED_ORACLE_ERROR__UNAUTHORIZED = 0x1770; // 6000\n/** AlreadyFinalized: Oracle already finalized */\nexport const TRUSTED_ORACLE_ERROR__ALREADY_FINALIZED = 0x1771; // 6001\n/** InvalidWinningMint: Invalid winning mint */\nexport const TRUSTED_ORACLE_ERROR__INVALID_WINNING_MINT = 0x1773; // 6003\n\nexport type TrustedOracleError =\n  | typeof TRUSTED_ORACLE_ERROR__ALREADY_FINALIZED\n  | typeof TRUSTED_ORACLE_ERROR__INVALID_WINNING_MINT\n  | typeof TRUSTED_ORACLE_ERROR__UNAUTHORIZED;\n\nlet trustedOracleErrorMessages: Record<TrustedOracleError, string> | undefined;\nif (process.env.NODE_ENV !== 'production') {\n  trustedOracleErrorMessages = {\n    [TRUSTED_ORACLE_ERROR__ALREADY_FINALIZED]: `Oracle already finalized`,\n    [TRUSTED_ORACLE_ERROR__INVALID_WINNING_MINT]: `Invalid winning mint`,\n    [TRUSTED_ORACLE_ERROR__UNAUTHORIZED]: `Unauthorized: only oracle authority can perform this action`,\n  };\n}\n\nexport function getTrustedOracleErrorMessage(code: TrustedOracleError): string {\n  if (process.env.NODE_ENV !== 'production') {\n    return (trustedOracleErrorMessages as Record<TrustedOracleError, string>)[\n      code\n    ];\n  }\n\n  return 'Error message not available in production bundles.';\n}\n\nexport function isTrustedOracleError<\n  TProgramErrorCode extends TrustedOracleError,\n>(\n  error: unknown,\n  transactionMessage: {\n    instructions: Record<number, { programAddress: Address }>;\n  },\n  code?: TProgramErrorCode,\n): error is SolanaError<typeof SOLANA_ERROR__INSTRUCTION_ERROR__CUSTOM> &\n  Readonly<{ context: Readonly<{ code: TProgramErrorCode }> }> {\n  return isProgramError<TProgramErrorCode>(\n    error,\n    transactionMessage,\n    TRUSTED_ORACLE_PROGRAM_ADDRESS,\n    code,\n  );\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  getAddressDecoder,\n  getAddressEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU64Decoder,\n  getU64Encoder,\n  type Address,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n} from '@solana/kit';\n\nexport type InitializeOracleArgs = {\n  /** Nonce for PDA derivation (allows multiple oracles per authority) */\n  nonce: bigint;\n  /** Optional quote mint for validation (use Pubkey::default() if not needed) */\n  quoteMint: Address;\n};\n\nexport type InitializeOracleArgsArgs = {\n  /** Nonce for PDA derivation (allows multiple oracles per authority) */\n  nonce: number | bigint;\n  /** Optional quote mint for validation (use Pubkey::default() if not needed) */\n  quoteMint: Address;\n};\n\nexport function getInitializeOracleArgsEncoder(): FixedSizeEncoder<InitializeOracleArgsArgs> {\n  return getStructEncoder([\n    ['nonce', getU64Encoder()],\n    ['quoteMint', getAddressEncoder()],\n  ]);\n}\n\nexport function getInitializeOracleArgsDecoder(): FixedSizeDecoder<InitializeOracleArgs> {\n  return getStructDecoder([\n    ['nonce', getU64Decoder()],\n    ['quoteMint', getAddressDecoder()],\n  ]);\n}\n\nexport function getInitializeOracleArgsCodec(): FixedSizeCodec<\n  InitializeOracleArgsArgs,\n  InitializeOracleArgs\n> {\n  return combineCodec(\n    getInitializeOracleArgsEncoder(),\n    getInitializeOracleArgsDecoder(),\n  );\n}\n","import {\n  getProgramDerivedAddress,\n  getAddressEncoder,\n  type Address,\n  type ProgramDerivedAddress,\n} from '@solana/kit';\nimport { TRUSTED_ORACLE_PROGRAM_ADDRESS } from '../generated/trustedOracle/programs/trustedOracle.js';\n\n/**\n * Derive the OracleState PDA address.\n * Seeds: [\"oracle\", oracleAuthority, nonce_le_u64]\n *\n * The nonce allows a single authority to create multiple independent oracles.\n * Use Date.now() or any unique u64 value.\n */\nexport async function getOracleStateAddress(\n  oracleAuthority: Address,\n  nonce: bigint,\n): Promise<ProgramDerivedAddress> {\n  const nonceBytes = new Uint8Array(8);\n  new DataView(nonceBytes.buffer).setBigUint64(0, nonce, true);\n\n  return getProgramDerivedAddress({\n    programAddress: TRUSTED_ORACLE_PROGRAM_ADDRESS,\n    seeds: [\n      new TextEncoder().encode('oracle'),\n      getAddressEncoder().encode(oracleAuthority),\n      nonceBytes,\n    ],\n  });\n}\n","import {\n  address,\n  type AccountMeta,\n  type AccountSignerMeta,\n  type Address,\n  type GetAccountInfoApi,\n  type Instruction,\n  type Rpc,\n  type TransactionSigner,\n} from '@solana/kit';\nimport {\n  findAssociatedTokenPda,\n  getCreateAssociatedTokenIdempotentInstruction,\n  getSyncNativeInstruction,\n} from '@solana-program/token';\nimport { getTransferSolInstruction } from '@solana-program/system';\n\nimport { type TradeDirection, type SwapQuote } from './core/index.js';\nimport { TOKEN_PROGRAM_ADDRESS } from './core/constants.js';\nimport { getSwapQuote } from './core/math.js';\nimport { getPoolByMints, type PoolWithAddress } from './client/index.js';\nimport { createSwapInstruction } from './instructions/index.js';\nimport type { SolanaCpmmDeployment } from './deployment.js';\nimport { DOPPLER_LAUNCH_HOOK_V1_PROGRAM_ID } from './dopplerLaunchHookV1/index.js';\nimport {\n  INITIALIZER_PROGRAM_ID,\n  TRADE_DIRECTION_BUY,\n  type CurveSwapExactInAccounts,\n  createCurveSwapExactInInstruction,\n} from './initializer/index.js';\n\nexport type SolanaRemainingAccount =\n  | Address\n  | AccountMeta\n  | AccountSignerMeta\n  | TransactionSigner;\n\nexport type CurveSwapHook = {\n  program: Address;\n  remainingAccounts?: ReadonlyArray<SolanaRemainingAccount>;\n};\n\ntype AddressOrSigner = Address | TransactionSigner;\n\nexport type CurveSwapExactInInput = {\n  deployment?: Pick<SolanaCpmmDeployment, 'initializerProgram'> &\n    Partial<Pick<SolanaCpmmDeployment, 'dopplerLaunchHookV1Program'>>;\n  programId?: Address;\n  launch: Address;\n  launchAuthority: Address;\n  baseVault: Address;\n  quoteVault: Address;\n  launchFeeState: Address;\n  baseMint: Address;\n  quoteMint: Address;\n  payer: TransactionSigner;\n  user?: AddressOrSigner;\n  amountIn: bigint;\n  minAmountOut: bigint;\n  tradeDirection: 0 | 1;\n  hook?: CurveSwapHook;\n  remainingAccounts?: ReadonlyArray<SolanaRemainingAccount>;\n  baseTokenProgram?: Address;\n  quoteTokenProgram?: Address;\n  wrapSol?: boolean;\n};\n\nexport type CurveSwapExactInResult = {\n  userBaseAccount: Address;\n  userQuoteAccount: Address;\n  userIn: Address;\n  userOut: Address;\n  setupInstructions: Instruction[];\n  swapInstruction: Instruction;\n  instructions: Instruction[];\n};\n\ntype SwapExactInBaseInput = {\n  deployment?: Pick<SolanaCpmmDeployment, 'cpmmProgram' | 'cpmmConfig'>;\n  programId?: Address;\n  config?: Address;\n  payer: TransactionSigner;\n  user?: AddressOrSigner;\n  amountIn: bigint;\n  tradeDirection: TradeDirection;\n  minAmountOut?: bigint;\n  slippageBps?: number | bigint;\n  token0Program?: Address;\n  token1Program?: Address;\n  tokenProgram?: Address;\n  oracle?: Address;\n  remainingAccounts?: ReadonlyArray<SolanaRemainingAccount>;\n  updateOracle?: boolean;\n};\n\nexport type SwapExactInInput =\n  | (SwapExactInBaseInput & {\n      pool: PoolWithAddress;\n      rpc?: never;\n      mintA?: never;\n      mintB?: never;\n    })\n  | (SwapExactInBaseInput & {\n      rpc: Rpc<GetAccountInfoApi>;\n      mintA: Address;\n      mintB: Address;\n      pool?: never;\n    });\n\nexport type SwapExactInResult = {\n  pool: PoolWithAddress;\n  quote: SwapQuote;\n  minAmountOut: bigint;\n  userToken0: Address;\n  userToken1: Address;\n  userIn: Address;\n  userOut: Address;\n  setupInstructions: Instruction[];\n  swapInstruction: Instruction;\n  instructions: Instruction[];\n};\n\nconst WRAPPED_SOL_MINT = address('So11111111111111111111111111111111111111112');\nconst BPS_DENOMINATOR = 10_000n;\n\nfunction isTransactionSigner(\n  value: AddressOrSigner,\n): value is TransactionSigner {\n  return (\n    typeof value === 'object' &&\n    value !== null &&\n    'address' in value &&\n    'signTransactions' in value\n  );\n}\n\nfunction getAddress(value: AddressOrSigner): Address {\n  return isTransactionSigner(value) ? value.address : value;\n}\n\nasync function getAssociatedTokenAddress({\n  owner,\n  mint,\n  tokenProgram,\n}: {\n  owner: Address;\n  mint: Address;\n  tokenProgram: Address;\n}): Promise<Address> {\n  const [ata] = await findAssociatedTokenPda({\n    owner,\n    mint,\n    tokenProgram,\n  });\n  return ata;\n}\n\nfunction resolveSlippageBps(slippageBps: number | bigint | undefined): bigint {\n  const resolved = slippageBps === undefined ? 50n : BigInt(slippageBps);\n  if (resolved < 0n || resolved > BPS_DENOMINATOR) {\n    throw new Error('slippageBps must be between 0 and 10000');\n  }\n  return resolved;\n}\n\nfunction getMinAmountOut({\n  quotedAmountOut,\n  minAmountOut,\n  slippageBps,\n}: {\n  quotedAmountOut: bigint;\n  minAmountOut?: bigint;\n  slippageBps?: number | bigint;\n}): bigint {\n  if (minAmountOut !== undefined) {\n    return minAmountOut;\n  }\n  const slippage = resolveSlippageBps(slippageBps);\n  return (quotedAmountOut * (BPS_DENOMINATOR - slippage)) / BPS_DENOMINATOR;\n}\n\nexport async function curveSwapExactIn(\n  input: CurveSwapExactInInput,\n): Promise<CurveSwapExactInResult> {\n  if (input.hook && input.remainingAccounts) {\n    throw new Error(\n      'provide remaining accounts through hook.remainingAccounts when hook is set',\n    );\n  }\n  const programId =\n    input.programId ??\n    input.deployment?.initializerProgram ??\n    INITIALIZER_PROGRAM_ID;\n  const user = input.user ?? input.payer;\n  const userAddress = getAddress(user);\n  const baseTokenProgram = input.baseTokenProgram ?? TOKEN_PROGRAM_ADDRESS;\n  const quoteTokenProgram = input.quoteTokenProgram ?? TOKEN_PROGRAM_ADDRESS;\n  const userBaseAccount = await getAssociatedTokenAddress({\n    owner: userAddress,\n    mint: input.baseMint,\n    tokenProgram: baseTokenProgram,\n  });\n  const userQuoteAccount = await getAssociatedTokenAddress({\n    owner: userAddress,\n    mint: input.quoteMint,\n    tokenProgram: quoteTokenProgram,\n  });\n\n  const setupInstructions: Instruction[] = [\n    getCreateAssociatedTokenIdempotentInstruction({\n      payer: input.payer,\n      ata: userBaseAccount,\n      owner: userAddress,\n      mint: input.baseMint,\n      tokenProgram: baseTokenProgram,\n    }),\n    getCreateAssociatedTokenIdempotentInstruction({\n      payer: input.payer,\n      ata: userQuoteAccount,\n      owner: userAddress,\n      mint: input.quoteMint,\n      tokenProgram: quoteTokenProgram,\n    }),\n  ];\n  const shouldWrapSol =\n    input.wrapSol ??\n    (input.quoteMint === WRAPPED_SOL_MINT &&\n      input.tradeDirection === TRADE_DIRECTION_BUY);\n\n  if (shouldWrapSol) {\n    setupInstructions.push(\n      getTransferSolInstruction({\n        source: input.payer,\n        destination: userQuoteAccount,\n        amount: input.amountIn,\n      }),\n      getSyncNativeInstruction({ account: userQuoteAccount }),\n    );\n  }\n\n  const swapAccounts: CurveSwapExactInAccounts = {\n    launch: input.launch,\n    launchAuthority: input.launchAuthority,\n    baseVault: input.baseVault,\n    quoteVault: input.quoteVault,\n    launchFeeState: input.launchFeeState,\n    userBaseAccount,\n    userQuoteAccount,\n    baseMint: input.baseMint,\n    quoteMint: input.quoteMint,\n    user,\n    hookProgram:\n      input.hook?.program ??\n      input.deployment?.dopplerLaunchHookV1Program ??\n      DOPPLER_LAUNCH_HOOK_V1_PROGRAM_ID,\n    baseTokenProgram,\n    quoteTokenProgram,\n    remainingAccounts: input.hook?.remainingAccounts\n      ? [...input.hook.remainingAccounts]\n      : input.remainingAccounts\n        ? [...input.remainingAccounts]\n        : undefined,\n  };\n  const swapInstruction = createCurveSwapExactInInstruction(\n    swapAccounts,\n    {\n      amountIn: input.amountIn,\n      minAmountOut: input.minAmountOut,\n      tradeDirection: input.tradeDirection,\n    },\n    programId,\n  );\n  const userIn =\n    input.tradeDirection === TRADE_DIRECTION_BUY\n      ? userQuoteAccount\n      : userBaseAccount;\n  const userOut =\n    input.tradeDirection === TRADE_DIRECTION_BUY\n      ? userBaseAccount\n      : userQuoteAccount;\n\n  return {\n    userBaseAccount,\n    userQuoteAccount,\n    userIn,\n    userOut,\n    setupInstructions,\n    swapInstruction,\n    instructions: [...setupInstructions, swapInstruction],\n  };\n}\n\nexport async function swapExactIn(\n  input: SwapExactInInput,\n): Promise<SwapExactInResult> {\n  const programId =\n    input.programId ?? input.deployment?.cpmmProgram ?? undefined;\n  const pool =\n    'pool' in input\n      ? input.pool\n      : await getPoolByMints(input.rpc, input.mintA, input.mintB, {\n          programId,\n        });\n  if (!pool) {\n    throw new Error(`No pool found for ${input.mintA} / ${input.mintB}`);\n  }\n\n  const user = input.user ?? input.payer;\n  const userAddress = getAddress(user);\n  const token0Program =\n    input.token0Program ?? input.tokenProgram ?? TOKEN_PROGRAM_ADDRESS;\n  const token1Program =\n    input.token1Program ?? input.tokenProgram ?? TOKEN_PROGRAM_ADDRESS;\n  const quote = getSwapQuote(\n    pool.account,\n    input.amountIn,\n    input.tradeDirection,\n  );\n  const minAmountOut = getMinAmountOut({\n    quotedAmountOut: quote.amountOut,\n    minAmountOut: input.minAmountOut,\n    slippageBps: input.slippageBps,\n  });\n  const userToken0 = await getAssociatedTokenAddress({\n    owner: userAddress,\n    mint: pool.account.token0Mint,\n    tokenProgram: token0Program,\n  });\n  const userToken1 = await getAssociatedTokenAddress({\n    owner: userAddress,\n    mint: pool.account.token1Mint,\n    tokenProgram: token1Program,\n  });\n  const setupInstructions: Instruction[] = [\n    getCreateAssociatedTokenIdempotentInstruction({\n      payer: input.payer,\n      ata: userToken0,\n      owner: userAddress,\n      mint: pool.account.token0Mint,\n      tokenProgram: token0Program,\n    }),\n    getCreateAssociatedTokenIdempotentInstruction({\n      payer: input.payer,\n      ata: userToken1,\n      owner: userAddress,\n      mint: pool.account.token1Mint,\n      tokenProgram: token1Program,\n    }),\n  ];\n  const swapInstruction = createSwapInstruction({\n    config: input.config ?? input.deployment?.cpmmConfig ?? pool.account.config,\n    pool: pool.address,\n    authority: pool.account.authority,\n    vault0: pool.account.vault0,\n    vault1: pool.account.vault1,\n    token0Mint: pool.account.token0Mint,\n    token1Mint: pool.account.token1Mint,\n    userToken0,\n    userToken1,\n    user,\n    amountIn: input.amountIn,\n    minAmountOut,\n    tradeDirection: input.tradeDirection,\n    oracle: input.oracle,\n    remainingAccounts: input.remainingAccounts\n      ? [...input.remainingAccounts]\n      : undefined,\n    updateOracle: input.updateOracle,\n    token0Program,\n    token1Program,\n    programId: programId ?? input.deployment?.cpmmProgram,\n  });\n  const userIn = input.tradeDirection === 0 ? userToken0 : userToken1;\n  const userOut = input.tradeDirection === 0 ? userToken1 : userToken0;\n\n  return {\n    pool,\n    quote,\n    minAmountOut,\n    userToken0,\n    userToken1,\n    userIn,\n    userOut,\n    setupInstructions,\n    swapInstruction,\n    instructions: [...setupInstructions, swapInstruction],\n  };\n}\n","import {\n  address,\n  type Address,\n  type Instruction,\n  type TransactionSigner,\n} from '@solana/kit';\nimport { getCreateAssociatedTokenIdempotentInstruction } from '@solana-program/token';\n\nimport {\n  SYSTEM_PROGRAM_ADDRESS,\n  SYSVAR_RENT_ADDRESS,\n  TOKEN_PROGRAM_ADDRESS,\n} from './core/constants.js';\nimport type { SolanaCpmmDeployment } from './deployment.js';\nimport {\n  CPMM_MIGRATOR_PROGRAM_ID,\n  type CpmmMigrationRemainingAccounts,\n  type RecipientArgs,\n} from './migrators/cpmmMigrator/index.js';\nimport {\n  INITIALIZER_PROGRAM_ID,\n  createMigrateLaunchInstruction,\n} from './initializer/index.js';\n\ntype TokenBalanceRpc = {\n  getTokenAccountBalance(\n    address: Address,\n    config?: { commitment?: 'processed' | 'confirmed' | 'finalized' },\n  ): {\n    send(): Promise<{ value: { amount: string } }>;\n  };\n};\n\nexport type MigrateLaunchInput = {\n  deployment?: Pick<\n    SolanaCpmmDeployment,\n    'initializerProgram' | 'initializerConfig' | 'cpmmMigratorProgram'\n  >;\n  programId?: Address;\n  config?: Address;\n  launch: Address;\n  launchAuthority: Address;\n  baseMint: Address;\n  quoteMint: Address;\n  baseVault: Address;\n  quoteVault: Address;\n  launchFeeState: Address;\n  payer: TransactionSigner;\n  cpmmMigration: CpmmMigrationRemainingAccounts;\n  recipients?: ReadonlyArray<Pick<RecipientArgs, 'wallet'>>;\n  computeUnitLimit?: number | false;\n  baseTokenProgram?: Address;\n  quoteTokenProgram?: Address;\n  systemProgram?: Address;\n  rent?: Address;\n};\n\nexport type MigrateLaunchResult = {\n  recipientAtaInstructions: Instruction[];\n  computeUnitLimitInstruction?: Instruction;\n  migrateInstruction: Instruction;\n  instructions: Instruction[];\n};\n\nexport type MigrationQuoteProgress = {\n  quoteVaultAmount: bigint;\n  pendingQuoteFees: bigint;\n  migrationQuoteAmount: bigint;\n};\n\nconst COMPUTE_BUDGET_PROGRAM_ID = address(\n  'ComputeBudget111111111111111111111111111111',\n);\n\nfunction createSetComputeUnitLimitInstruction(units: number): Instruction {\n  const data = new Uint8Array(5);\n  data[0] = 2;\n  new DataView(data.buffer).setUint32(1, units, true);\n  return {\n    programAddress: COMPUTE_BUDGET_PROGRAM_ID,\n    accounts: [],\n    data,\n  };\n}\n\nfunction getDefaultComputeUnitLimit(\n  cpmmMigration: CpmmMigrationRemainingAccounts,\n): number {\n  return cpmmMigration.recipientAtas.length > 0 ? 800_000 : 400_000;\n}\n\nexport function migrateLaunch(input: MigrateLaunchInput): MigrateLaunchResult {\n  const baseTokenProgram = input.baseTokenProgram ?? TOKEN_PROGRAM_ADDRESS;\n  const quoteTokenProgram = input.quoteTokenProgram ?? TOKEN_PROGRAM_ADDRESS;\n  const recipients = input.recipients ? [...input.recipients] : [];\n  if (\n    recipients.length > 0 &&\n    recipients.length !== input.cpmmMigration.recipientAtas.length\n  ) {\n    throw new Error(\n      'recipients length must match cpmmMigration.recipientAtas length',\n    );\n  }\n  const initializerConfig = input.config ?? input.deployment?.initializerConfig;\n  if (!initializerConfig) {\n    throw new Error('config or deployment.initializerConfig is required');\n  }\n\n  const recipientAtaInstructions = recipients.map((recipient, index) =>\n    getCreateAssociatedTokenIdempotentInstruction({\n      payer: input.payer,\n      ata: input.cpmmMigration.recipientAtas[index],\n      owner: recipient.wallet,\n      mint: input.baseMint,\n      tokenProgram: baseTokenProgram,\n    }),\n  );\n  const migrateLaunchInstruction = createMigrateLaunchInstruction(\n    {\n      config: initializerConfig,\n      launch: input.launch,\n      launchAuthority: input.launchAuthority,\n      baseMint: input.baseMint,\n      quoteMint: input.quoteMint,\n      baseVault: input.baseVault,\n      quoteVault: input.quoteVault,\n      launchFeeState: input.launchFeeState,\n      migratorProgram:\n        input.deployment?.cpmmMigratorProgram ?? CPMM_MIGRATOR_PROGRAM_ID,\n      payer: input.payer,\n      baseTokenProgram,\n      quoteTokenProgram,\n      systemProgram: input.systemProgram ?? SYSTEM_PROGRAM_ADDRESS,\n      rent: input.rent ?? SYSVAR_RENT_ADDRESS,\n    },\n    input.programId ??\n      input.deployment?.initializerProgram ??\n      INITIALIZER_PROGRAM_ID,\n  );\n  const migrateInstruction = {\n    ...migrateLaunchInstruction,\n    accounts: [\n      ...(migrateLaunchInstruction.accounts ?? []),\n      ...input.cpmmMigration.metas,\n    ],\n  };\n  const computeUnitLimit =\n    input.computeUnitLimit === undefined\n      ? getDefaultComputeUnitLimit(input.cpmmMigration)\n      : input.computeUnitLimit;\n  const computeUnitLimitInstruction =\n    computeUnitLimit === false\n      ? undefined\n      : createSetComputeUnitLimitInstruction(computeUnitLimit);\n  const instructions = [\n    ...(computeUnitLimitInstruction ? [computeUnitLimitInstruction] : []),\n    ...recipientAtaInstructions,\n    migrateInstruction,\n  ];\n\n  return {\n    recipientAtaInstructions,\n    computeUnitLimitInstruction,\n    migrateInstruction,\n    instructions,\n  };\n}\n\nexport async function getMigrationQuoteProgress({\n  rpc,\n  quoteVault,\n  pendingQuoteFees,\n  commitment = 'confirmed',\n}: {\n  rpc: TokenBalanceRpc;\n  quoteVault: Address;\n  pendingQuoteFees: bigint;\n  commitment?: 'processed' | 'confirmed' | 'finalized';\n}): Promise<MigrationQuoteProgress> {\n  const vaultBalance = await rpc\n    .getTokenAccountBalance(quoteVault, { commitment })\n    .send();\n  const quoteVaultAmount = BigInt(vaultBalance.value.amount);\n  if (pendingQuoteFees > quoteVaultAmount) {\n    throw new Error(\n      'pendingQuoteFees cannot exceed the quote vault token balance',\n    );\n  }\n\n  return {\n    quoteVaultAmount,\n    pendingQuoteFees,\n    migrationQuoteAmount: quoteVaultAmount - pendingQuoteFees,\n  };\n}\n\nexport async function assertMigrationQuoteThreshold({\n  rpc,\n  quoteVault,\n  pendingQuoteFees,\n  minRaiseQuote,\n  commitment = 'confirmed',\n}: {\n  rpc: TokenBalanceRpc;\n  quoteVault: Address;\n  pendingQuoteFees: bigint;\n  minRaiseQuote: bigint;\n  commitment?: 'processed' | 'confirmed' | 'finalized';\n}): Promise<MigrationQuoteProgress> {\n  const progress = await getMigrationQuoteProgress({\n    rpc,\n    quoteVault,\n    pendingQuoteFees,\n    commitment,\n  });\n\n  if (progress.migrationQuoteAmount < minRaiseQuote) {\n    throw new Error(\n      `Quote available for migration ${progress.migrationQuoteAmount} is below minRaiseQuote ${minRaiseQuote}`,\n    );\n  }\n\n  return progress;\n}\n"]}