@dropsy/airdrop 0.2.5 → 0.2.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.mts +156 -148
- package/dist/index.d.ts +156 -148
- package/dist/index.js +534 -590
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +325 -386
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/accounts/affiliate.ts","../src/accounts/affiliateMaster.ts","../src/accounts/airdrop.ts","../src/accounts/airdropConfig.ts","../src/accounts/airdropMaster.ts","../src/accounts/claimMap.ts","../src/accounts/master.ts","../src/errors/dropsy.ts","../src/programs/dropsy.ts","../src/instructions/claimAirdrop.ts","../src/shared/index.ts","../src/instructions/createAirdrop.ts","../src/instructions/createClaimMap.ts","../src/instructions/depositTokens.ts","../src/instructions/initializeAirdropMaster.ts","../src/types/advancedFeeConfig.ts","../src/types/airdropBoosted.ts","../src/types/airdropClosed.ts","../src/types/airdropDelegated.ts","../src/types/airdropInitialized.ts","../src/types/airdropUpdated.ts","../src/types/baseDurationConfig.ts","../src/types/baseFeatureFeeConfig.ts","../src/types/baseFeeConfig.ts","../src/types/claimMapClosed.ts","../src/types/claimMapInitialized.ts","../src/types/initAirdropConfigArgs.ts","../src/types/masterInitialized.ts","../src/types/tokensDeposited.ts","../src/types/tokensRedeemed.ts","../src/instructions/initializeMaster.ts","../src/instructions/redeemAirdropTokens.ts","../src/utils/derive.ts","../src/constants/index.ts"],"sourcesContent":["/**\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\nexport * from \"./accounts\";\nexport * from \"./errors\";\nexport * from \"./instructions\";\nexport * from \"./programs\";\nexport * from \"./types\";\nexport * from \"./utils\";\nexport * from \"./constants\";\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 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 AFFILIATE_DISCRIMINATOR = new Uint8Array([\n 136, 95, 107, 149, 36, 195, 146, 35,\n]);\n\nexport function getAffiliateDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(AFFILIATE_DISCRIMINATOR);\n}\n\nexport type Affiliate = {\n discriminator: ReadonlyUint8Array;\n master: Address;\n authority: Address;\n totalEarned: bigint;\n referrals: number;\n level: number;\n bump: number;\n};\n\nexport type AffiliateArgs = {\n master: Address;\n authority: Address;\n totalEarned: number | bigint;\n referrals: number;\n level: number;\n bump: number;\n};\n\n/** Gets the encoder for {@link AffiliateArgs} account data. */\nexport function getAffiliateEncoder(): FixedSizeEncoder<AffiliateArgs> {\n return transformEncoder(\n getStructEncoder([\n [\"discriminator\", fixEncoderSize(getBytesEncoder(), 8)],\n [\"master\", getAddressEncoder()],\n [\"authority\", getAddressEncoder()],\n [\"totalEarned\", getU64Encoder()],\n [\"referrals\", getU32Encoder()],\n [\"level\", getU8Encoder()],\n [\"bump\", getU8Encoder()],\n ]),\n (value) => ({ ...value, discriminator: AFFILIATE_DISCRIMINATOR }),\n );\n}\n\n/** Gets the decoder for {@link Affiliate} account data. */\nexport function getAffiliateDecoder(): FixedSizeDecoder<Affiliate> {\n return getStructDecoder([\n [\"discriminator\", fixDecoderSize(getBytesDecoder(), 8)],\n [\"master\", getAddressDecoder()],\n [\"authority\", getAddressDecoder()],\n [\"totalEarned\", getU64Decoder()],\n [\"referrals\", getU32Decoder()],\n [\"level\", getU8Decoder()],\n [\"bump\", getU8Decoder()],\n ]);\n}\n\n/** Gets the codec for {@link Affiliate} account data. */\nexport function getAffiliateCodec(): FixedSizeCodec<AffiliateArgs, Affiliate> {\n return combineCodec(getAffiliateEncoder(), getAffiliateDecoder());\n}\n\nexport function decodeAffiliate<TAddress extends string = string>(\n encodedAccount: EncodedAccount<TAddress>,\n): Account<Affiliate, TAddress>;\nexport function decodeAffiliate<TAddress extends string = string>(\n encodedAccount: MaybeEncodedAccount<TAddress>,\n): MaybeAccount<Affiliate, TAddress>;\nexport function decodeAffiliate<TAddress extends string = string>(\n encodedAccount: EncodedAccount<TAddress> | MaybeEncodedAccount<TAddress>,\n): Account<Affiliate, TAddress> | MaybeAccount<Affiliate, TAddress> {\n return decodeAccount(\n encodedAccount as MaybeEncodedAccount<TAddress>,\n getAffiliateDecoder(),\n );\n}\n\nexport async function fetchAffiliate<TAddress extends string = string>(\n rpc: Parameters<typeof fetchEncodedAccount>[0],\n address: Address<TAddress>,\n config?: FetchAccountConfig,\n): Promise<Account<Affiliate, TAddress>> {\n const maybeAccount = await fetchMaybeAffiliate(rpc, address, config);\n assertAccountExists(maybeAccount);\n return maybeAccount;\n}\n\nexport async function fetchMaybeAffiliate<TAddress extends string = string>(\n rpc: Parameters<typeof fetchEncodedAccount>[0],\n address: Address<TAddress>,\n config?: FetchAccountConfig,\n): Promise<MaybeAccount<Affiliate, TAddress>> {\n const maybeAccount = await fetchEncodedAccount(rpc, address, config);\n return decodeAffiliate(maybeAccount);\n}\n\nexport async function fetchAllAffiliate(\n rpc: Parameters<typeof fetchEncodedAccounts>[0],\n addresses: Array<Address>,\n config?: FetchAccountsConfig,\n): Promise<Account<Affiliate>[]> {\n const maybeAccounts = await fetchAllMaybeAffiliate(rpc, addresses, config);\n assertAccountsExist(maybeAccounts);\n return maybeAccounts;\n}\n\nexport async function fetchAllMaybeAffiliate(\n rpc: Parameters<typeof fetchEncodedAccounts>[0],\n addresses: Array<Address>,\n config?: FetchAccountsConfig,\n): Promise<MaybeAccount<Affiliate>[]> {\n const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config);\n return maybeAccounts.map((maybeAccount) => decodeAffiliate(maybeAccount));\n}\n\nexport function getAffiliateSize(): number {\n return 86;\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 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\";\n\nexport const AFFILIATE_MASTER_DISCRIMINATOR = new Uint8Array([\n 25, 57, 134, 31, 30, 203, 219, 215,\n]);\n\nexport function getAffiliateMasterDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n AFFILIATE_MASTER_DISCRIMINATOR,\n );\n}\n\nexport type AffiliateMaster = {\n discriminator: ReadonlyUint8Array;\n authority: Address;\n tokenMint: Address;\n affiliatesCreated: bigint;\n maxAffiliatesAllowed: bigint;\n totalFeesCollected: bigint;\n affiliateCreationFee: bigint;\n affiliateUpgradeAmount: bigint;\n affiliateWithdrawFeeBasis: number;\n burnPercentageBasis: number;\n treasuryPercentageBasis: number;\n upgradeRewardPercentageBasis: number;\n bump: number;\n};\n\nexport type AffiliateMasterArgs = {\n authority: Address;\n tokenMint: Address;\n affiliatesCreated: number | bigint;\n maxAffiliatesAllowed: number | bigint;\n totalFeesCollected: number | bigint;\n affiliateCreationFee: number | bigint;\n affiliateUpgradeAmount: number | bigint;\n affiliateWithdrawFeeBasis: number;\n burnPercentageBasis: number;\n treasuryPercentageBasis: number;\n upgradeRewardPercentageBasis: number;\n bump: number;\n};\n\n/** Gets the encoder for {@link AffiliateMasterArgs} account data. */\nexport function getAffiliateMasterEncoder(): FixedSizeEncoder<AffiliateMasterArgs> {\n return transformEncoder(\n getStructEncoder([\n [\"discriminator\", fixEncoderSize(getBytesEncoder(), 8)],\n [\"authority\", getAddressEncoder()],\n [\"tokenMint\", getAddressEncoder()],\n [\"affiliatesCreated\", getU64Encoder()],\n [\"maxAffiliatesAllowed\", getU64Encoder()],\n [\"totalFeesCollected\", getU64Encoder()],\n [\"affiliateCreationFee\", getU64Encoder()],\n [\"affiliateUpgradeAmount\", getU64Encoder()],\n [\"affiliateWithdrawFeeBasis\", getU16Encoder()],\n [\"burnPercentageBasis\", getU16Encoder()],\n [\"treasuryPercentageBasis\", getU16Encoder()],\n [\"upgradeRewardPercentageBasis\", getU16Encoder()],\n [\"bump\", getU8Encoder()],\n ]),\n (value) => ({ ...value, discriminator: AFFILIATE_MASTER_DISCRIMINATOR }),\n );\n}\n\n/** Gets the decoder for {@link AffiliateMaster} account data. */\nexport function getAffiliateMasterDecoder(): FixedSizeDecoder<AffiliateMaster> {\n return getStructDecoder([\n [\"discriminator\", fixDecoderSize(getBytesDecoder(), 8)],\n [\"authority\", getAddressDecoder()],\n [\"tokenMint\", getAddressDecoder()],\n [\"affiliatesCreated\", getU64Decoder()],\n [\"maxAffiliatesAllowed\", getU64Decoder()],\n [\"totalFeesCollected\", getU64Decoder()],\n [\"affiliateCreationFee\", getU64Decoder()],\n [\"affiliateUpgradeAmount\", getU64Decoder()],\n [\"affiliateWithdrawFeeBasis\", getU16Decoder()],\n [\"burnPercentageBasis\", getU16Decoder()],\n [\"treasuryPercentageBasis\", getU16Decoder()],\n [\"upgradeRewardPercentageBasis\", getU16Decoder()],\n [\"bump\", getU8Decoder()],\n ]);\n}\n\n/** Gets the codec for {@link AffiliateMaster} account data. */\nexport function getAffiliateMasterCodec(): FixedSizeCodec<\n AffiliateMasterArgs,\n AffiliateMaster\n> {\n return combineCodec(getAffiliateMasterEncoder(), getAffiliateMasterDecoder());\n}\n\nexport function decodeAffiliateMaster<TAddress extends string = string>(\n encodedAccount: EncodedAccount<TAddress>,\n): Account<AffiliateMaster, TAddress>;\nexport function decodeAffiliateMaster<TAddress extends string = string>(\n encodedAccount: MaybeEncodedAccount<TAddress>,\n): MaybeAccount<AffiliateMaster, TAddress>;\nexport function decodeAffiliateMaster<TAddress extends string = string>(\n encodedAccount: EncodedAccount<TAddress> | MaybeEncodedAccount<TAddress>,\n):\n | Account<AffiliateMaster, TAddress>\n | MaybeAccount<AffiliateMaster, TAddress> {\n return decodeAccount(\n encodedAccount as MaybeEncodedAccount<TAddress>,\n getAffiliateMasterDecoder(),\n );\n}\n\nexport async function fetchAffiliateMaster<TAddress extends string = string>(\n rpc: Parameters<typeof fetchEncodedAccount>[0],\n address: Address<TAddress>,\n config?: FetchAccountConfig,\n): Promise<Account<AffiliateMaster, TAddress>> {\n const maybeAccount = await fetchMaybeAffiliateMaster(rpc, address, config);\n assertAccountExists(maybeAccount);\n return maybeAccount;\n}\n\nexport async function fetchMaybeAffiliateMaster<\n TAddress extends string = string,\n>(\n rpc: Parameters<typeof fetchEncodedAccount>[0],\n address: Address<TAddress>,\n config?: FetchAccountConfig,\n): Promise<MaybeAccount<AffiliateMaster, TAddress>> {\n const maybeAccount = await fetchEncodedAccount(rpc, address, config);\n return decodeAffiliateMaster(maybeAccount);\n}\n\nexport async function fetchAllAffiliateMaster(\n rpc: Parameters<typeof fetchEncodedAccounts>[0],\n addresses: Array<Address>,\n config?: FetchAccountsConfig,\n): Promise<Account<AffiliateMaster>[]> {\n const maybeAccounts = await fetchAllMaybeAffiliateMaster(\n rpc,\n addresses,\n config,\n );\n assertAccountsExist(maybeAccounts);\n return maybeAccounts;\n}\n\nexport async function fetchAllMaybeAffiliateMaster(\n rpc: Parameters<typeof fetchEncodedAccounts>[0],\n addresses: Array<Address>,\n config?: FetchAccountsConfig,\n): Promise<MaybeAccount<AffiliateMaster>[]> {\n const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config);\n return maybeAccounts.map((maybeAccount) =>\n decodeAffiliateMaster(maybeAccount),\n );\n}\n\nexport function getAffiliateMasterSize(): number {\n return 121;\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 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 AIRDROP_DISCRIMINATOR = new Uint8Array([\n 31, 112, 159, 158, 124, 237, 9, 241,\n]);\n\nexport function getAirdropDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(AIRDROP_DISCRIMINATOR);\n}\n\nexport type Airdrop = {\n discriminator: ReadonlyUint8Array;\n master: Address;\n authority: Address;\n mint: Address;\n delegateAuthority: Address;\n presale: Address;\n merkleRoot: ReadonlyUint8Array;\n supply: bigint;\n boost: bigint;\n startsAt: bigint;\n endsAt: bigint;\n bitmapCount: number;\n delegatePermissions: number;\n mutable: number;\n state: number;\n version: number;\n bump: number;\n padding: ReadonlyUint8Array;\n};\n\nexport type AirdropArgs = {\n master: Address;\n authority: Address;\n mint: Address;\n delegateAuthority: Address;\n presale: Address;\n merkleRoot: ReadonlyUint8Array;\n supply: number | bigint;\n boost: number | bigint;\n startsAt: number | bigint;\n endsAt: number | bigint;\n bitmapCount: number;\n delegatePermissions: number;\n mutable: number;\n state: number;\n version: number;\n bump: number;\n padding: ReadonlyUint8Array;\n};\n\n/** Gets the encoder for {@link AirdropArgs} account data. */\nexport function getAirdropEncoder(): FixedSizeEncoder<AirdropArgs> {\n return transformEncoder(\n getStructEncoder([\n [\"discriminator\", fixEncoderSize(getBytesEncoder(), 8)],\n [\"master\", getAddressEncoder()],\n [\"authority\", getAddressEncoder()],\n [\"mint\", getAddressEncoder()],\n [\"delegateAuthority\", getAddressEncoder()],\n [\"presale\", getAddressEncoder()],\n [\"merkleRoot\", fixEncoderSize(getBytesEncoder(), 32)],\n [\"supply\", getU64Encoder()],\n [\"boost\", getU64Encoder()],\n [\"startsAt\", getI64Encoder()],\n [\"endsAt\", getI64Encoder()],\n [\"bitmapCount\", getU16Encoder()],\n [\"delegatePermissions\", getU8Encoder()],\n [\"mutable\", getU8Encoder()],\n [\"state\", getU8Encoder()],\n [\"version\", getU8Encoder()],\n [\"bump\", getU8Encoder()],\n [\"padding\", fixEncoderSize(getBytesEncoder(), 1)],\n ]),\n (value) => ({ ...value, discriminator: AIRDROP_DISCRIMINATOR }),\n );\n}\n\n/** Gets the decoder for {@link Airdrop} account data. */\nexport function getAirdropDecoder(): FixedSizeDecoder<Airdrop> {\n return getStructDecoder([\n [\"discriminator\", fixDecoderSize(getBytesDecoder(), 8)],\n [\"master\", getAddressDecoder()],\n [\"authority\", getAddressDecoder()],\n [\"mint\", getAddressDecoder()],\n [\"delegateAuthority\", getAddressDecoder()],\n [\"presale\", getAddressDecoder()],\n [\"merkleRoot\", fixDecoderSize(getBytesDecoder(), 32)],\n [\"supply\", getU64Decoder()],\n [\"boost\", getU64Decoder()],\n [\"startsAt\", getI64Decoder()],\n [\"endsAt\", getI64Decoder()],\n [\"bitmapCount\", getU16Decoder()],\n [\"delegatePermissions\", getU8Decoder()],\n [\"mutable\", getU8Decoder()],\n [\"state\", getU8Decoder()],\n [\"version\", getU8Decoder()],\n [\"bump\", getU8Decoder()],\n [\"padding\", fixDecoderSize(getBytesDecoder(), 1)],\n ]);\n}\n\n/** Gets the codec for {@link Airdrop} account data. */\nexport function getAirdropCodec(): FixedSizeCodec<AirdropArgs, Airdrop> {\n return combineCodec(getAirdropEncoder(), getAirdropDecoder());\n}\n\nexport function decodeAirdrop<TAddress extends string = string>(\n encodedAccount: EncodedAccount<TAddress>,\n): Account<Airdrop, TAddress>;\nexport function decodeAirdrop<TAddress extends string = string>(\n encodedAccount: MaybeEncodedAccount<TAddress>,\n): MaybeAccount<Airdrop, TAddress>;\nexport function decodeAirdrop<TAddress extends string = string>(\n encodedAccount: EncodedAccount<TAddress> | MaybeEncodedAccount<TAddress>,\n): Account<Airdrop, TAddress> | MaybeAccount<Airdrop, TAddress> {\n return decodeAccount(\n encodedAccount as MaybeEncodedAccount<TAddress>,\n getAirdropDecoder(),\n );\n}\n\nexport async function fetchAirdrop<TAddress extends string = string>(\n rpc: Parameters<typeof fetchEncodedAccount>[0],\n address: Address<TAddress>,\n config?: FetchAccountConfig,\n): Promise<Account<Airdrop, TAddress>> {\n const maybeAccount = await fetchMaybeAirdrop(rpc, address, config);\n assertAccountExists(maybeAccount);\n return maybeAccount;\n}\n\nexport async function fetchMaybeAirdrop<TAddress extends string = string>(\n rpc: Parameters<typeof fetchEncodedAccount>[0],\n address: Address<TAddress>,\n config?: FetchAccountConfig,\n): Promise<MaybeAccount<Airdrop, TAddress>> {\n const maybeAccount = await fetchEncodedAccount(rpc, address, config);\n return decodeAirdrop(maybeAccount);\n}\n\nexport async function fetchAllAirdrop(\n rpc: Parameters<typeof fetchEncodedAccounts>[0],\n addresses: Array<Address>,\n config?: FetchAccountsConfig,\n): Promise<Account<Airdrop>[]> {\n const maybeAccounts = await fetchAllMaybeAirdrop(rpc, addresses, config);\n assertAccountsExist(maybeAccounts);\n return maybeAccounts;\n}\n\nexport async function fetchAllMaybeAirdrop(\n rpc: Parameters<typeof fetchEncodedAccounts>[0],\n addresses: Array<Address>,\n config?: FetchAccountsConfig,\n): Promise<MaybeAccount<Airdrop>[]> {\n const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config);\n return maybeAccounts.map((maybeAccount) => decodeAirdrop(maybeAccount));\n}\n\nexport function getAirdropSize(): number {\n return 240;\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 getBytesDecoder,\n getBytesEncoder,\n getI64Decoder,\n getI64Encoder,\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 AIRDROP_CONFIG_DISCRIMINATOR = new Uint8Array([\n 194, 149, 223, 142, 42, 98, 128, 16,\n]);\n\nexport function getAirdropConfigDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n AIRDROP_CONFIG_DISCRIMINATOR,\n );\n}\n\nexport type AirdropConfig = {\n discriminator: ReadonlyUint8Array;\n merkleRoot: ReadonlyUint8Array;\n minAirdropDuration: bigint;\n maxAirdropDuration: bigint;\n updateGracePeriod: bigint;\n createAirdropMasterFee: bigint;\n upgradeAirdropMasterFee: bigint;\n withdrawFeeBasis: bigint;\n perBoostAmount: bigint;\n bump: number;\n};\n\nexport type AirdropConfigArgs = {\n merkleRoot: ReadonlyUint8Array;\n minAirdropDuration: number | bigint;\n maxAirdropDuration: number | bigint;\n updateGracePeriod: number | bigint;\n createAirdropMasterFee: number | bigint;\n upgradeAirdropMasterFee: number | bigint;\n withdrawFeeBasis: number | bigint;\n perBoostAmount: number | bigint;\n bump: number;\n};\n\n/** Gets the encoder for {@link AirdropConfigArgs} account data. */\nexport function getAirdropConfigEncoder(): FixedSizeEncoder<AirdropConfigArgs> {\n return transformEncoder(\n getStructEncoder([\n [\"discriminator\", fixEncoderSize(getBytesEncoder(), 8)],\n [\"merkleRoot\", fixEncoderSize(getBytesEncoder(), 32)],\n [\"minAirdropDuration\", getI64Encoder()],\n [\"maxAirdropDuration\", getI64Encoder()],\n [\"updateGracePeriod\", getI64Encoder()],\n [\"createAirdropMasterFee\", getU64Encoder()],\n [\"upgradeAirdropMasterFee\", getU64Encoder()],\n [\"withdrawFeeBasis\", getU64Encoder()],\n [\"perBoostAmount\", getU64Encoder()],\n [\"bump\", getU8Encoder()],\n ]),\n (value) => ({ ...value, discriminator: AIRDROP_CONFIG_DISCRIMINATOR }),\n );\n}\n\n/** Gets the decoder for {@link AirdropConfig} account data. */\nexport function getAirdropConfigDecoder(): FixedSizeDecoder<AirdropConfig> {\n return getStructDecoder([\n [\"discriminator\", fixDecoderSize(getBytesDecoder(), 8)],\n [\"merkleRoot\", fixDecoderSize(getBytesDecoder(), 32)],\n [\"minAirdropDuration\", getI64Decoder()],\n [\"maxAirdropDuration\", getI64Decoder()],\n [\"updateGracePeriod\", getI64Decoder()],\n [\"createAirdropMasterFee\", getU64Decoder()],\n [\"upgradeAirdropMasterFee\", getU64Decoder()],\n [\"withdrawFeeBasis\", getU64Decoder()],\n [\"perBoostAmount\", getU64Decoder()],\n [\"bump\", getU8Decoder()],\n ]);\n}\n\n/** Gets the codec for {@link AirdropConfig} account data. */\nexport function getAirdropConfigCodec(): FixedSizeCodec<\n AirdropConfigArgs,\n AirdropConfig\n> {\n return combineCodec(getAirdropConfigEncoder(), getAirdropConfigDecoder());\n}\n\nexport function decodeAirdropConfig<TAddress extends string = string>(\n encodedAccount: EncodedAccount<TAddress>,\n): Account<AirdropConfig, TAddress>;\nexport function decodeAirdropConfig<TAddress extends string = string>(\n encodedAccount: MaybeEncodedAccount<TAddress>,\n): MaybeAccount<AirdropConfig, TAddress>;\nexport function decodeAirdropConfig<TAddress extends string = string>(\n encodedAccount: EncodedAccount<TAddress> | MaybeEncodedAccount<TAddress>,\n): Account<AirdropConfig, TAddress> | MaybeAccount<AirdropConfig, TAddress> {\n return decodeAccount(\n encodedAccount as MaybeEncodedAccount<TAddress>,\n getAirdropConfigDecoder(),\n );\n}\n\nexport async function fetchAirdropConfig<TAddress extends string = string>(\n rpc: Parameters<typeof fetchEncodedAccount>[0],\n address: Address<TAddress>,\n config?: FetchAccountConfig,\n): Promise<Account<AirdropConfig, TAddress>> {\n const maybeAccount = await fetchMaybeAirdropConfig(rpc, address, config);\n assertAccountExists(maybeAccount);\n return maybeAccount;\n}\n\nexport async function fetchMaybeAirdropConfig<TAddress extends string = string>(\n rpc: Parameters<typeof fetchEncodedAccount>[0],\n address: Address<TAddress>,\n config?: FetchAccountConfig,\n): Promise<MaybeAccount<AirdropConfig, TAddress>> {\n const maybeAccount = await fetchEncodedAccount(rpc, address, config);\n return decodeAirdropConfig(maybeAccount);\n}\n\nexport async function fetchAllAirdropConfig(\n rpc: Parameters<typeof fetchEncodedAccounts>[0],\n addresses: Array<Address>,\n config?: FetchAccountsConfig,\n): Promise<Account<AirdropConfig>[]> {\n const maybeAccounts = await fetchAllMaybeAirdropConfig(\n rpc,\n addresses,\n config,\n );\n assertAccountsExist(maybeAccounts);\n return maybeAccounts;\n}\n\nexport async function fetchAllMaybeAirdropConfig(\n rpc: Parameters<typeof fetchEncodedAccounts>[0],\n addresses: Array<Address>,\n config?: FetchAccountsConfig,\n): Promise<MaybeAccount<AirdropConfig>[]> {\n const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config);\n return maybeAccounts.map((maybeAccount) => decodeAirdropConfig(maybeAccount));\n}\n\nexport function getAirdropConfigSize(): number {\n return 97;\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 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 AIRDROP_MASTER_DISCRIMINATOR = new Uint8Array([\n 31, 109, 100, 62, 106, 173, 5, 4,\n]);\n\nexport function getAirdropMasterDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n AIRDROP_MASTER_DISCRIMINATOR,\n );\n}\n\nexport type AirdropMaster = {\n discriminator: ReadonlyUint8Array;\n affiliateMaster: Address;\n authority: Address;\n merkleRoot: ReadonlyUint8Array;\n airdropsCreated: bigint;\n maxAirdropsAllowed: bigint;\n bitmapCreated: bigint;\n maxBitmapAllowed: bigint;\n airdropCreationFee: bigint;\n airdropUpdateFee: bigint;\n airdropCloseFee: bigint;\n airdropClaimFee: bigint;\n airdropDelegateFee: bigint;\n airdropDepositFee: bigint;\n bitmapCreationFee: bigint;\n bitmapCloseFee: bigint;\n bump: number;\n padding: ReadonlyUint8Array;\n};\n\nexport type AirdropMasterArgs = {\n affiliateMaster: Address;\n authority: Address;\n merkleRoot: ReadonlyUint8Array;\n airdropsCreated: number | bigint;\n maxAirdropsAllowed: number | bigint;\n bitmapCreated: number | bigint;\n maxBitmapAllowed: number | bigint;\n airdropCreationFee: number | bigint;\n airdropUpdateFee: number | bigint;\n airdropCloseFee: number | bigint;\n airdropClaimFee: number | bigint;\n airdropDelegateFee: number | bigint;\n airdropDepositFee: number | bigint;\n bitmapCreationFee: number | bigint;\n bitmapCloseFee: number | bigint;\n bump: number;\n padding: ReadonlyUint8Array;\n};\n\n/** Gets the encoder for {@link AirdropMasterArgs} account data. */\nexport function getAirdropMasterEncoder(): FixedSizeEncoder<AirdropMasterArgs> {\n return transformEncoder(\n getStructEncoder([\n [\"discriminator\", fixEncoderSize(getBytesEncoder(), 8)],\n [\"affiliateMaster\", getAddressEncoder()],\n [\"authority\", getAddressEncoder()],\n [\"merkleRoot\", fixEncoderSize(getBytesEncoder(), 32)],\n [\"airdropsCreated\", getU64Encoder()],\n [\"maxAirdropsAllowed\", getU64Encoder()],\n [\"bitmapCreated\", getU64Encoder()],\n [\"maxBitmapAllowed\", getU64Encoder()],\n [\"airdropCreationFee\", getU64Encoder()],\n [\"airdropUpdateFee\", getU64Encoder()],\n [\"airdropCloseFee\", getU64Encoder()],\n [\"airdropClaimFee\", getU64Encoder()],\n [\"airdropDelegateFee\", getU64Encoder()],\n [\"airdropDepositFee\", getU64Encoder()],\n [\"bitmapCreationFee\", getU64Encoder()],\n [\"bitmapCloseFee\", getU64Encoder()],\n [\"bump\", getU8Encoder()],\n [\"padding\", fixEncoderSize(getBytesEncoder(), 7)],\n ]),\n (value) => ({ ...value, discriminator: AIRDROP_MASTER_DISCRIMINATOR }),\n );\n}\n\n/** Gets the decoder for {@link AirdropMaster} account data. */\nexport function getAirdropMasterDecoder(): FixedSizeDecoder<AirdropMaster> {\n return getStructDecoder([\n [\"discriminator\", fixDecoderSize(getBytesDecoder(), 8)],\n [\"affiliateMaster\", getAddressDecoder()],\n [\"authority\", getAddressDecoder()],\n [\"merkleRoot\", fixDecoderSize(getBytesDecoder(), 32)],\n [\"airdropsCreated\", getU64Decoder()],\n [\"maxAirdropsAllowed\", getU64Decoder()],\n [\"bitmapCreated\", getU64Decoder()],\n [\"maxBitmapAllowed\", getU64Decoder()],\n [\"airdropCreationFee\", getU64Decoder()],\n [\"airdropUpdateFee\", getU64Decoder()],\n [\"airdropCloseFee\", getU64Decoder()],\n [\"airdropClaimFee\", getU64Decoder()],\n [\"airdropDelegateFee\", getU64Decoder()],\n [\"airdropDepositFee\", getU64Decoder()],\n [\"bitmapCreationFee\", getU64Decoder()],\n [\"bitmapCloseFee\", getU64Decoder()],\n [\"bump\", getU8Decoder()],\n [\"padding\", fixDecoderSize(getBytesDecoder(), 7)],\n ]);\n}\n\n/** Gets the codec for {@link AirdropMaster} account data. */\nexport function getAirdropMasterCodec(): FixedSizeCodec<\n AirdropMasterArgs,\n AirdropMaster\n> {\n return combineCodec(getAirdropMasterEncoder(), getAirdropMasterDecoder());\n}\n\nexport function decodeAirdropMaster<TAddress extends string = string>(\n encodedAccount: EncodedAccount<TAddress>,\n): Account<AirdropMaster, TAddress>;\nexport function decodeAirdropMaster<TAddress extends string = string>(\n encodedAccount: MaybeEncodedAccount<TAddress>,\n): MaybeAccount<AirdropMaster, TAddress>;\nexport function decodeAirdropMaster<TAddress extends string = string>(\n encodedAccount: EncodedAccount<TAddress> | MaybeEncodedAccount<TAddress>,\n): Account<AirdropMaster, TAddress> | MaybeAccount<AirdropMaster, TAddress> {\n return decodeAccount(\n encodedAccount as MaybeEncodedAccount<TAddress>,\n getAirdropMasterDecoder(),\n );\n}\n\nexport async function fetchAirdropMaster<TAddress extends string = string>(\n rpc: Parameters<typeof fetchEncodedAccount>[0],\n address: Address<TAddress>,\n config?: FetchAccountConfig,\n): Promise<Account<AirdropMaster, TAddress>> {\n const maybeAccount = await fetchMaybeAirdropMaster(rpc, address, config);\n assertAccountExists(maybeAccount);\n return maybeAccount;\n}\n\nexport async function fetchMaybeAirdropMaster<TAddress extends string = string>(\n rpc: Parameters<typeof fetchEncodedAccount>[0],\n address: Address<TAddress>,\n config?: FetchAccountConfig,\n): Promise<MaybeAccount<AirdropMaster, TAddress>> {\n const maybeAccount = await fetchEncodedAccount(rpc, address, config);\n return decodeAirdropMaster(maybeAccount);\n}\n\nexport async function fetchAllAirdropMaster(\n rpc: Parameters<typeof fetchEncodedAccounts>[0],\n addresses: Array<Address>,\n config?: FetchAccountsConfig,\n): Promise<Account<AirdropMaster>[]> {\n const maybeAccounts = await fetchAllMaybeAirdropMaster(\n rpc,\n addresses,\n config,\n );\n assertAccountsExist(maybeAccounts);\n return maybeAccounts;\n}\n\nexport async function fetchAllMaybeAirdropMaster(\n rpc: Parameters<typeof fetchEncodedAccounts>[0],\n addresses: Array<Address>,\n config?: FetchAccountsConfig,\n): Promise<MaybeAccount<AirdropMaster>[]> {\n const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config);\n return maybeAccounts.map((maybeAccount) => decodeAirdropMaster(maybeAccount));\n}\n\nexport function getAirdropMasterSize(): number {\n return 208;\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 getU16Decoder,\n getU16Encoder,\n getU32Decoder,\n getU32Encoder,\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_MAP_DISCRIMINATOR = new Uint8Array([\n 193, 62, 74, 131, 13, 161, 53, 215,\n]);\n\nexport function getClaimMapDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(CLAIM_MAP_DISCRIMINATOR);\n}\n\nexport type ClaimMap = {\n discriminator: ReadonlyUint8Array;\n authority: Address;\n airdrop: Address;\n claimedBitmap: ReadonlyUint8Array;\n total: number;\n id: number;\n version: number;\n bump: number;\n};\n\nexport type ClaimMapArgs = {\n authority: Address;\n airdrop: Address;\n claimedBitmap: ReadonlyUint8Array;\n total: number;\n id: number;\n version: number;\n bump: number;\n};\n\n/** Gets the encoder for {@link ClaimMapArgs} account data. */\nexport function getClaimMapEncoder(): FixedSizeEncoder<ClaimMapArgs> {\n return transformEncoder(\n getStructEncoder([\n [\"discriminator\", fixEncoderSize(getBytesEncoder(), 8)],\n [\"authority\", getAddressEncoder()],\n [\"airdrop\", getAddressEncoder()],\n [\"claimedBitmap\", fixEncoderSize(getBytesEncoder(), 8000)],\n [\"total\", getU32Encoder()],\n [\"id\", getU16Encoder()],\n [\"version\", getU8Encoder()],\n [\"bump\", getU8Encoder()],\n ]),\n (value) => ({ ...value, discriminator: CLAIM_MAP_DISCRIMINATOR }),\n );\n}\n\n/** Gets the decoder for {@link ClaimMap} account data. */\nexport function getClaimMapDecoder(): FixedSizeDecoder<ClaimMap> {\n return getStructDecoder([\n [\"discriminator\", fixDecoderSize(getBytesDecoder(), 8)],\n [\"authority\", getAddressDecoder()],\n [\"airdrop\", getAddressDecoder()],\n [\"claimedBitmap\", fixDecoderSize(getBytesDecoder(), 8000)],\n [\"total\", getU32Decoder()],\n [\"id\", getU16Decoder()],\n [\"version\", getU8Decoder()],\n [\"bump\", getU8Decoder()],\n ]);\n}\n\n/** Gets the codec for {@link ClaimMap} account data. */\nexport function getClaimMapCodec(): FixedSizeCodec<ClaimMapArgs, ClaimMap> {\n return combineCodec(getClaimMapEncoder(), getClaimMapDecoder());\n}\n\nexport function decodeClaimMap<TAddress extends string = string>(\n encodedAccount: EncodedAccount<TAddress>,\n): Account<ClaimMap, TAddress>;\nexport function decodeClaimMap<TAddress extends string = string>(\n encodedAccount: MaybeEncodedAccount<TAddress>,\n): MaybeAccount<ClaimMap, TAddress>;\nexport function decodeClaimMap<TAddress extends string = string>(\n encodedAccount: EncodedAccount<TAddress> | MaybeEncodedAccount<TAddress>,\n): Account<ClaimMap, TAddress> | MaybeAccount<ClaimMap, TAddress> {\n return decodeAccount(\n encodedAccount as MaybeEncodedAccount<TAddress>,\n getClaimMapDecoder(),\n );\n}\n\nexport async function fetchClaimMap<TAddress extends string = string>(\n rpc: Parameters<typeof fetchEncodedAccount>[0],\n address: Address<TAddress>,\n config?: FetchAccountConfig,\n): Promise<Account<ClaimMap, TAddress>> {\n const maybeAccount = await fetchMaybeClaimMap(rpc, address, config);\n assertAccountExists(maybeAccount);\n return maybeAccount;\n}\n\nexport async function fetchMaybeClaimMap<TAddress extends string = string>(\n rpc: Parameters<typeof fetchEncodedAccount>[0],\n address: Address<TAddress>,\n config?: FetchAccountConfig,\n): Promise<MaybeAccount<ClaimMap, TAddress>> {\n const maybeAccount = await fetchEncodedAccount(rpc, address, config);\n return decodeClaimMap(maybeAccount);\n}\n\nexport async function fetchAllClaimMap(\n rpc: Parameters<typeof fetchEncodedAccounts>[0],\n addresses: Array<Address>,\n config?: FetchAccountsConfig,\n): Promise<Account<ClaimMap>[]> {\n const maybeAccounts = await fetchAllMaybeClaimMap(rpc, addresses, config);\n assertAccountsExist(maybeAccounts);\n return maybeAccounts;\n}\n\nexport async function fetchAllMaybeClaimMap(\n rpc: Parameters<typeof fetchEncodedAccounts>[0],\n addresses: Array<Address>,\n config?: FetchAccountsConfig,\n): Promise<MaybeAccount<ClaimMap>[]> {\n const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config);\n return maybeAccounts.map((maybeAccount) => decodeClaimMap(maybeAccount));\n}\n\nexport function getClaimMapSize(): number {\n return 8080;\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 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 MASTER_DISCRIMINATOR = new Uint8Array([\n 168, 213, 193, 12, 77, 162, 58, 235,\n]);\n\nexport function getMasterDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(MASTER_DISCRIMINATOR);\n}\n\nexport type Master = {\n discriminator: ReadonlyUint8Array;\n authority: Address;\n treasury: Address;\n tokenMint: Address;\n protocolFee: bigint;\n bump: number;\n};\n\nexport type MasterArgs = {\n authority: Address;\n treasury: Address;\n tokenMint: Address;\n protocolFee: number | bigint;\n bump: number;\n};\n\n/** Gets the encoder for {@link MasterArgs} account data. */\nexport function getMasterEncoder(): FixedSizeEncoder<MasterArgs> {\n return transformEncoder(\n getStructEncoder([\n [\"discriminator\", fixEncoderSize(getBytesEncoder(), 8)],\n [\"authority\", getAddressEncoder()],\n [\"treasury\", getAddressEncoder()],\n [\"tokenMint\", getAddressEncoder()],\n [\"protocolFee\", getU64Encoder()],\n [\"bump\", getU8Encoder()],\n ]),\n (value) => ({ ...value, discriminator: MASTER_DISCRIMINATOR }),\n );\n}\n\n/** Gets the decoder for {@link Master} account data. */\nexport function getMasterDecoder(): FixedSizeDecoder<Master> {\n return getStructDecoder([\n [\"discriminator\", fixDecoderSize(getBytesDecoder(), 8)],\n [\"authority\", getAddressDecoder()],\n [\"treasury\", getAddressDecoder()],\n [\"tokenMint\", getAddressDecoder()],\n [\"protocolFee\", getU64Decoder()],\n [\"bump\", getU8Decoder()],\n ]);\n}\n\n/** Gets the codec for {@link Master} account data. */\nexport function getMasterCodec(): FixedSizeCodec<MasterArgs, Master> {\n return combineCodec(getMasterEncoder(), getMasterDecoder());\n}\n\nexport function decodeMaster<TAddress extends string = string>(\n encodedAccount: EncodedAccount<TAddress>,\n): Account<Master, TAddress>;\nexport function decodeMaster<TAddress extends string = string>(\n encodedAccount: MaybeEncodedAccount<TAddress>,\n): MaybeAccount<Master, TAddress>;\nexport function decodeMaster<TAddress extends string = string>(\n encodedAccount: EncodedAccount<TAddress> | MaybeEncodedAccount<TAddress>,\n): Account<Master, TAddress> | MaybeAccount<Master, TAddress> {\n return decodeAccount(\n encodedAccount as MaybeEncodedAccount<TAddress>,\n getMasterDecoder(),\n );\n}\n\nexport async function fetchMaster<TAddress extends string = string>(\n rpc: Parameters<typeof fetchEncodedAccount>[0],\n address: Address<TAddress>,\n config?: FetchAccountConfig,\n): Promise<Account<Master, TAddress>> {\n const maybeAccount = await fetchMaybeMaster(rpc, address, config);\n assertAccountExists(maybeAccount);\n return maybeAccount;\n}\n\nexport async function fetchMaybeMaster<TAddress extends string = string>(\n rpc: Parameters<typeof fetchEncodedAccount>[0],\n address: Address<TAddress>,\n config?: FetchAccountConfig,\n): Promise<MaybeAccount<Master, TAddress>> {\n const maybeAccount = await fetchEncodedAccount(rpc, address, config);\n return decodeMaster(maybeAccount);\n}\n\nexport async function fetchAllMaster(\n rpc: Parameters<typeof fetchEncodedAccounts>[0],\n addresses: Array<Address>,\n config?: FetchAccountsConfig,\n): Promise<Account<Master>[]> {\n const maybeAccounts = await fetchAllMaybeMaster(rpc, addresses, config);\n assertAccountsExist(maybeAccounts);\n return maybeAccounts;\n}\n\nexport async function fetchAllMaybeMaster(\n rpc: Parameters<typeof fetchEncodedAccounts>[0],\n addresses: Array<Address>,\n config?: FetchAccountsConfig,\n): Promise<MaybeAccount<Master>[]> {\n const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config);\n return maybeAccounts.map((maybeAccount) => decodeMaster(maybeAccount));\n}\n\nexport function getMasterSize(): number {\n return 113;\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 { DROPSY_PROGRAM_ADDRESS } from \"../programs\";\n\n/** ValueOutOfRange: Value out of range */\nexport const DROPSY_ERROR__VALUE_OUT_OF_RANGE = 0x1771; // 6001\n/** ValueBelowTheMinimum: Value below the minimum */\nexport const DROPSY_ERROR__VALUE_BELOW_THE_MINIMUM = 0x1772; // 6002\n/** ValueExceedsMaximum: Value exceeds the maximum */\nexport const DROPSY_ERROR__VALUE_EXCEEDS_MAXIMUM = 0x1773; // 6003\n/** InvalidPercentage: Invalid percentage (must be 0-100) */\nexport const DROPSY_ERROR__INVALID_PERCENTAGE = 0x1774; // 6004\n/** InvalidTimestamp: Invalid timestamp or duration */\nexport const DROPSY_ERROR__INVALID_TIMESTAMP = 0x1776; // 6006\n/** NonZeroValueRequired: Number must be non-zero */\nexport const DROPSY_ERROR__NON_ZERO_VALUE_REQUIRED = 0x1777; // 6007\n/** InvalidPubKey: Invalid Pubkey provided */\nexport const DROPSY_ERROR__INVALID_PUB_KEY = 0x1778; // 6008\n/** UnAuthorized: Invalid Authority Pubkey */\nexport const DROPSY_ERROR__UN_AUTHORIZED = 0x1779; // 6009\n/** InvalidMutability: Invalid mutability Value */\nexport const DROPSY_ERROR__INVALID_MUTABILITY = 0x177a; // 6010\n/** InvalidDelegatePermission: Invalid delegate permission Value */\nexport const DROPSY_ERROR__INVALID_DELEGATE_PERMISSION = 0x177b; // 6011\n/** AirdropNotStarted: Airdrop has not started yet */\nexport const DROPSY_ERROR__AIRDROP_NOT_STARTED = 0x17d4; // 6100\n/** AirdropEnded: Airdrop has already ended */\nexport const DROPSY_ERROR__AIRDROP_ENDED = 0x17d5; // 6101\n/** AirdropNotEnded: Airdrop not yet ended */\nexport const DROPSY_ERROR__AIRDROP_NOT_ENDED = 0x17d6; // 6102\n/** DurationTooShort: Airdrop duration must be at least 24 hours */\nexport const DROPSY_ERROR__DURATION_TOO_SHORT = 0x17d7; // 6103\n/** InvalidEndTime: Airdrop must end at least 24 hours in the future */\nexport const DROPSY_ERROR__INVALID_END_TIME = 0x17d8; // 6104\n/** InvalidVestingSchedule: Vesting schedule is invalid */\nexport const DROPSY_ERROR__INVALID_VESTING_SCHEDULE = 0x17d9; // 6105\n/** ImmutableAirdrop: Airdrop is immutable */\nexport const DROPSY_ERROR__IMMUTABLE_AIRDROP = 0x17da; // 6106\n/** ImmutableField: The target field is immutable */\nexport const DROPSY_ERROR__IMMUTABLE_FIELD = 0x17db; // 6107\n/** UpdateCutoffTimePassed: Airdrop updates are only allowed until cutoff time before start */\nexport const DROPSY_ERROR__UPDATE_CUTOFF_TIME_PASSED = 0x17dc; // 6108\n/** MaxAirdropsReached: Airdrop quota reached. Upgrade required for Airdrop Master. */\nexport const DROPSY_ERROR__MAX_AIRDROPS_REACHED = 0x17dd; // 6109\n/** MaxClaimMapsReached: ClaimMap quota reached. Upgrade required for Airdrop Master. */\nexport const DROPSY_ERROR__MAX_CLAIM_MAPS_REACHED = 0x17de; // 6110\n/** InvalidAdmin: This Request Requires Admin Privileges */\nexport const DROPSY_ERROR__INVALID_ADMIN = 0x1838; // 6200\n/** OwnerMismatch: Airdrop owner mismatch */\nexport const DROPSY_ERROR__OWNER_MISMATCH = 0x1839; // 6201\n/** InvalidVaultAuthority: Invalid vault authority */\nexport const DROPSY_ERROR__INVALID_VAULT_AUTHORITY = 0x183a; // 6202\n/** InvalidDestinationOwner: Destination account owner is not the signer */\nexport const DROPSY_ERROR__INVALID_DESTINATION_OWNER = 0x183b; // 6203\n/** InvalidAffiliatePda: Mismatched affiliate PDA */\nexport const DROPSY_ERROR__INVALID_AFFILIATE_PDA = 0x183c; // 6204\n/** Unauthorized: Not Authorized */\nexport const DROPSY_ERROR__UNAUTHORIZED = 0x183d; // 6205\n/** InvalidOwner: Transaction sender is not the owner */\nexport const DROPSY_ERROR__INVALID_OWNER = 0x183e; // 6206\n/** InvalidMint: Mint does not match stored state */\nexport const DROPSY_ERROR__INVALID_MINT = 0x189c; // 6300\n/** MintMismatch: Provided mint doesn't match expected mint */\nexport const DROPSY_ERROR__MINT_MISMATCH = 0x189d; // 6301\n/** VaultMintMismatch: Vault mint doesn't match airdrop mint */\nexport const DROPSY_ERROR__VAULT_MINT_MISMATCH = 0x189e; // 6302\n/** DestinationMintMismatch: Destination mint doesn't match */\nexport const DROPSY_ERROR__DESTINATION_MINT_MISMATCH = 0x189f; // 6303\n/** MintIsFrozen: Mint is frozen */\nexport const DROPSY_ERROR__MINT_IS_FROZEN = 0x18a0; // 6304\n/** InvalidMintOwner: Invalid token program owner */\nexport const DROPSY_ERROR__INVALID_MINT_OWNER = 0x18a1; // 6305\n/** MintIsNotInitialized: Mint must be initialized */\nexport const DROPSY_ERROR__MINT_IS_NOT_INITIALIZED = 0x18a2; // 6306\n/** MintHasFreezeAuthority: Mint has freeze authority */\nexport const DROPSY_ERROR__MINT_HAS_FREEZE_AUTHORITY = 0x18a3; // 6307\n/** NftNotAllowed: Fungible tokens only (no NFTs) */\nexport const DROPSY_ERROR__NFT_NOT_ALLOWED = 0x18a4; // 6308\n/** VaultHasDelegate: Vault has delegate set */\nexport const DROPSY_ERROR__VAULT_HAS_DELEGATE = 0x1901; // 6401\n/** VaultFrozen: Vault is frozen */\nexport const DROPSY_ERROR__VAULT_FROZEN = 0x1902; // 6402\n/** VaultHasCloseAuthority: Vault has close authority */\nexport const DROPSY_ERROR__VAULT_HAS_CLOSE_AUTHORITY = 0x1903; // 6403\n/** InvalidAirdropPda: Invalid vault account */\nexport const DROPSY_ERROR__INVALID_AIRDROP_PDA = 0x1904; // 6404\n/** VaultNotInitialized: Vault not initialized */\nexport const DROPSY_ERROR__VAULT_NOT_INITIALIZED = 0x1905; // 6405\n/** InsufficientVaultFunds: Insufficient vault funds */\nexport const DROPSY_ERROR__INSUFFICIENT_VAULT_FUNDS = 0x1906; // 6406\n/** SourceHasDelegate: Source has delegate set */\nexport const DROPSY_ERROR__SOURCE_HAS_DELEGATE = 0x1932; // 6450\n/** SourceAccountFrozen: Source account is frozen */\nexport const DROPSY_ERROR__SOURCE_ACCOUNT_FROZEN = 0x1933; // 6451\n/** SourceHasCloseAuthority: Source has close authority */\nexport const DROPSY_ERROR__SOURCE_HAS_CLOSE_AUTHORITY = 0x1934; // 6452\n/** InvalidProof: Invalid merkle proof */\nexport const DROPSY_ERROR__INVALID_PROOF = 0x1964; // 6500\n/** AlreadyClaimed: Tokens already claimed */\nexport const DROPSY_ERROR__ALREADY_CLAIMED = 0x1965; // 6501\n/** MissingBitmapPda: Missing bitmap PDA */\nexport const DROPSY_ERROR__MISSING_BITMAP_PDA = 0x1966; // 6502\n/** InvalidBitmapAccount: Invalid bitmap account */\nexport const DROPSY_ERROR__INVALID_BITMAP_ACCOUNT = 0x1967; // 6503\n/** InvalidBitmapIndex: Invalid bitmap index */\nexport const DROPSY_ERROR__INVALID_BITMAP_INDEX = 0x1968; // 6504\n/** TooManyBitmaps: Too many bitmap accounts */\nexport const DROPSY_ERROR__TOO_MANY_BITMAPS = 0x1969; // 6505\n/** BitmapTooLarge: Bitmap size exceeds limit */\nexport const DROPSY_ERROR__BITMAP_TOO_LARGE = 0x196a; // 6506\n/** InvalidTotal: Invalid total claimers */\nexport const DROPSY_ERROR__INVALID_TOTAL = 0x196b; // 6507\n/** BitmapAirdropMismatch: Bitmap/airdrop mismatch */\nexport const DROPSY_ERROR__BITMAP_AIRDROP_MISMATCH = 0x196c; // 6508\n/** ActiveBitmapsExist: Active bitmaps exist */\nexport const DROPSY_ERROR__ACTIVE_BITMAPS_EXIST = 0x196d; // 6509\n/** BitmapCountUnderflow: Bitmaps already closed */\nexport const DROPSY_ERROR__BITMAP_COUNT_UNDERFLOW = 0x196e; // 6510\n/** InsufficientDeposit: Insufficient SOL deposit */\nexport const DROPSY_ERROR__INSUFFICIENT_DEPOSIT = 0x19c8; // 6600\n/** CreateFeeTooHigh: Create fee too high (>0.05 SOL) */\nexport const DROPSY_ERROR__CREATE_FEE_TOO_HIGH = 0x19c9; // 6601\n/** ClaimFeeTooHigh: Claim fee too high (>0.005 SOL) */\nexport const DROPSY_ERROR__CLAIM_FEE_TOO_HIGH = 0x19ca; // 6602\n/** InsufficientFundsForFee: Insufficient funds for fee */\nexport const DROPSY_ERROR__INSUFFICIENT_FUNDS_FOR_FEE = 0x19cb; // 6603\n/** InvalidFeeVault: Invalid fee vault */\nexport const DROPSY_ERROR__INVALID_FEE_VAULT = 0x19cc; // 6604\n/** InvalidFeeVaultOwner: Invalid fee vault owner */\nexport const DROPSY_ERROR__INVALID_FEE_VAULT_OWNER = 0x19cd; // 6605\n/** InvalidFeeVaultCurve: Fee vault not in curve */\nexport const DROPSY_ERROR__INVALID_FEE_VAULT_CURVE = 0x19ce; // 6606\n/** InvalidPda: Invalid PDA account */\nexport const DROPSY_ERROR__INVALID_PDA = 0x1a2c; // 6700\n/** InvalidAmount: Invalid amount */\nexport const DROPSY_ERROR__INVALID_AMOUNT = 0x1a2d; // 6701\n/** Overflow: Arithmetic overflow */\nexport const DROPSY_ERROR__OVERFLOW = 0x1a2e; // 6702\n/** VaultNotRentExempt: Vault not rent exempt */\nexport const DROPSY_ERROR__VAULT_NOT_RENT_EXEMPT = 0x1a2f; // 6703\n/** InvalidTreasuryAccount: invalid treasury account */\nexport const DROPSY_ERROR__INVALID_TREASURY_ACCOUNT = 0x1a30; // 6704\n/** InvalidAirdropVersion: invalid airdrop version */\nexport const DROPSY_ERROR__INVALID_AIRDROP_VERSION = 0x1a31; // 6705\n/** InvalidVestingType: Invalid vesting type */\nexport const DROPSY_ERROR__INVALID_VESTING_TYPE = 0x1a33; // 6707\n/** VestingAccountRequired: vesting account required for vested airdrop */\nexport const DROPSY_ERROR__VESTING_ACCOUNT_REQUIRED = 0x1a34; // 6708\n/** InvalidParentAccount: Invalid Parent account provided */\nexport const DROPSY_ERROR__INVALID_PARENT_ACCOUNT = 0x1a35; // 6709\n/** InvalidAirdropVestingVersion: Airdrop version don't support vesting */\nexport const DROPSY_ERROR__INVALID_AIRDROP_VESTING_VERSION = 0x1a36; // 6710\n/** InvalidAirdropMasterAccount: Invalid Airdrop Master */\nexport const DROPSY_ERROR__INVALID_AIRDROP_MASTER_ACCOUNT = 0x1a37; // 6711\n\nexport type DropsyError =\n | typeof DROPSY_ERROR__ACTIVE_BITMAPS_EXIST\n | typeof DROPSY_ERROR__AIRDROP_ENDED\n | typeof DROPSY_ERROR__AIRDROP_NOT_ENDED\n | typeof DROPSY_ERROR__AIRDROP_NOT_STARTED\n | typeof DROPSY_ERROR__ALREADY_CLAIMED\n | typeof DROPSY_ERROR__BITMAP_AIRDROP_MISMATCH\n | typeof DROPSY_ERROR__BITMAP_COUNT_UNDERFLOW\n | typeof DROPSY_ERROR__BITMAP_TOO_LARGE\n | typeof DROPSY_ERROR__CLAIM_FEE_TOO_HIGH\n | typeof DROPSY_ERROR__CREATE_FEE_TOO_HIGH\n | typeof DROPSY_ERROR__DESTINATION_MINT_MISMATCH\n | typeof DROPSY_ERROR__DURATION_TOO_SHORT\n | typeof DROPSY_ERROR__IMMUTABLE_AIRDROP\n | typeof DROPSY_ERROR__IMMUTABLE_FIELD\n | typeof DROPSY_ERROR__INSUFFICIENT_DEPOSIT\n | typeof DROPSY_ERROR__INSUFFICIENT_FUNDS_FOR_FEE\n | typeof DROPSY_ERROR__INSUFFICIENT_VAULT_FUNDS\n | typeof DROPSY_ERROR__INVALID_ADMIN\n | typeof DROPSY_ERROR__INVALID_AFFILIATE_PDA\n | typeof DROPSY_ERROR__INVALID_AIRDROP_MASTER_ACCOUNT\n | typeof DROPSY_ERROR__INVALID_AIRDROP_PDA\n | typeof DROPSY_ERROR__INVALID_AIRDROP_VERSION\n | typeof DROPSY_ERROR__INVALID_AIRDROP_VESTING_VERSION\n | typeof DROPSY_ERROR__INVALID_AMOUNT\n | typeof DROPSY_ERROR__INVALID_BITMAP_ACCOUNT\n | typeof DROPSY_ERROR__INVALID_BITMAP_INDEX\n | typeof DROPSY_ERROR__INVALID_DELEGATE_PERMISSION\n | typeof DROPSY_ERROR__INVALID_DESTINATION_OWNER\n | typeof DROPSY_ERROR__INVALID_END_TIME\n | typeof DROPSY_ERROR__INVALID_FEE_VAULT\n | typeof DROPSY_ERROR__INVALID_FEE_VAULT_CURVE\n | typeof DROPSY_ERROR__INVALID_FEE_VAULT_OWNER\n | typeof DROPSY_ERROR__INVALID_MINT\n | typeof DROPSY_ERROR__INVALID_MINT_OWNER\n | typeof DROPSY_ERROR__INVALID_MUTABILITY\n | typeof DROPSY_ERROR__INVALID_OWNER\n | typeof DROPSY_ERROR__INVALID_PARENT_ACCOUNT\n | typeof DROPSY_ERROR__INVALID_PDA\n | typeof DROPSY_ERROR__INVALID_PERCENTAGE\n | typeof DROPSY_ERROR__INVALID_PROOF\n | typeof DROPSY_ERROR__INVALID_PUB_KEY\n | typeof DROPSY_ERROR__INVALID_TIMESTAMP\n | typeof DROPSY_ERROR__INVALID_TOTAL\n | typeof DROPSY_ERROR__INVALID_TREASURY_ACCOUNT\n | typeof DROPSY_ERROR__INVALID_VAULT_AUTHORITY\n | typeof DROPSY_ERROR__INVALID_VESTING_SCHEDULE\n | typeof DROPSY_ERROR__INVALID_VESTING_TYPE\n | typeof DROPSY_ERROR__MAX_AIRDROPS_REACHED\n | typeof DROPSY_ERROR__MAX_CLAIM_MAPS_REACHED\n | typeof DROPSY_ERROR__MINT_HAS_FREEZE_AUTHORITY\n | typeof DROPSY_ERROR__MINT_IS_FROZEN\n | typeof DROPSY_ERROR__MINT_IS_NOT_INITIALIZED\n | typeof DROPSY_ERROR__MINT_MISMATCH\n | typeof DROPSY_ERROR__MISSING_BITMAP_PDA\n | typeof DROPSY_ERROR__NFT_NOT_ALLOWED\n | typeof DROPSY_ERROR__NON_ZERO_VALUE_REQUIRED\n | typeof DROPSY_ERROR__OVERFLOW\n | typeof DROPSY_ERROR__OWNER_MISMATCH\n | typeof DROPSY_ERROR__SOURCE_ACCOUNT_FROZEN\n | typeof DROPSY_ERROR__SOURCE_HAS_CLOSE_AUTHORITY\n | typeof DROPSY_ERROR__SOURCE_HAS_DELEGATE\n | typeof DROPSY_ERROR__TOO_MANY_BITMAPS\n | typeof DROPSY_ERROR__UNAUTHORIZED\n | typeof DROPSY_ERROR__UN_AUTHORIZED\n | typeof DROPSY_ERROR__UPDATE_CUTOFF_TIME_PASSED\n | typeof DROPSY_ERROR__VALUE_BELOW_THE_MINIMUM\n | typeof DROPSY_ERROR__VALUE_EXCEEDS_MAXIMUM\n | typeof DROPSY_ERROR__VALUE_OUT_OF_RANGE\n | typeof DROPSY_ERROR__VAULT_FROZEN\n | typeof DROPSY_ERROR__VAULT_HAS_CLOSE_AUTHORITY\n | typeof DROPSY_ERROR__VAULT_HAS_DELEGATE\n | typeof DROPSY_ERROR__VAULT_MINT_MISMATCH\n | typeof DROPSY_ERROR__VAULT_NOT_INITIALIZED\n | typeof DROPSY_ERROR__VAULT_NOT_RENT_EXEMPT\n | typeof DROPSY_ERROR__VESTING_ACCOUNT_REQUIRED;\n\nlet dropsyErrorMessages: Record<DropsyError, string> | undefined;\nif (process.env.NODE_ENV !== \"production\") {\n dropsyErrorMessages = {\n [DROPSY_ERROR__ACTIVE_BITMAPS_EXIST]: `Active bitmaps exist`,\n [DROPSY_ERROR__AIRDROP_ENDED]: `Airdrop has already ended`,\n [DROPSY_ERROR__AIRDROP_NOT_ENDED]: `Airdrop not yet ended`,\n [DROPSY_ERROR__AIRDROP_NOT_STARTED]: `Airdrop has not started yet`,\n [DROPSY_ERROR__ALREADY_CLAIMED]: `Tokens already claimed`,\n [DROPSY_ERROR__BITMAP_AIRDROP_MISMATCH]: `Bitmap/airdrop mismatch`,\n [DROPSY_ERROR__BITMAP_COUNT_UNDERFLOW]: `Bitmaps already closed`,\n [DROPSY_ERROR__BITMAP_TOO_LARGE]: `Bitmap size exceeds limit`,\n [DROPSY_ERROR__CLAIM_FEE_TOO_HIGH]: `Claim fee too high (>0.005 SOL)`,\n [DROPSY_ERROR__CREATE_FEE_TOO_HIGH]: `Create fee too high (>0.05 SOL)`,\n [DROPSY_ERROR__DESTINATION_MINT_MISMATCH]: `Destination mint doesn't match`,\n [DROPSY_ERROR__DURATION_TOO_SHORT]: `Airdrop duration must be at least 24 hours`,\n [DROPSY_ERROR__IMMUTABLE_AIRDROP]: `Airdrop is immutable`,\n [DROPSY_ERROR__IMMUTABLE_FIELD]: `The target field is immutable`,\n [DROPSY_ERROR__INSUFFICIENT_DEPOSIT]: `Insufficient SOL deposit`,\n [DROPSY_ERROR__INSUFFICIENT_FUNDS_FOR_FEE]: `Insufficient funds for fee`,\n [DROPSY_ERROR__INSUFFICIENT_VAULT_FUNDS]: `Insufficient vault funds`,\n [DROPSY_ERROR__INVALID_ADMIN]: `This Request Requires Admin Privileges`,\n [DROPSY_ERROR__INVALID_AFFILIATE_PDA]: `Mismatched affiliate PDA`,\n [DROPSY_ERROR__INVALID_AIRDROP_MASTER_ACCOUNT]: `Invalid Airdrop Master`,\n [DROPSY_ERROR__INVALID_AIRDROP_PDA]: `Invalid vault account`,\n [DROPSY_ERROR__INVALID_AIRDROP_VERSION]: `invalid airdrop version`,\n [DROPSY_ERROR__INVALID_AIRDROP_VESTING_VERSION]: `Airdrop version don't support vesting`,\n [DROPSY_ERROR__INVALID_AMOUNT]: `Invalid amount`,\n [DROPSY_ERROR__INVALID_BITMAP_ACCOUNT]: `Invalid bitmap account`,\n [DROPSY_ERROR__INVALID_BITMAP_INDEX]: `Invalid bitmap index`,\n [DROPSY_ERROR__INVALID_DELEGATE_PERMISSION]: `Invalid delegate permission Value`,\n [DROPSY_ERROR__INVALID_DESTINATION_OWNER]: `Destination account owner is not the signer`,\n [DROPSY_ERROR__INVALID_END_TIME]: `Airdrop must end at least 24 hours in the future`,\n [DROPSY_ERROR__INVALID_FEE_VAULT]: `Invalid fee vault`,\n [DROPSY_ERROR__INVALID_FEE_VAULT_CURVE]: `Fee vault not in curve`,\n [DROPSY_ERROR__INVALID_FEE_VAULT_OWNER]: `Invalid fee vault owner`,\n [DROPSY_ERROR__INVALID_MINT]: `Mint does not match stored state`,\n [DROPSY_ERROR__INVALID_MINT_OWNER]: `Invalid token program owner`,\n [DROPSY_ERROR__INVALID_MUTABILITY]: `Invalid mutability Value`,\n [DROPSY_ERROR__INVALID_OWNER]: `Transaction sender is not the owner`,\n [DROPSY_ERROR__INVALID_PARENT_ACCOUNT]: `Invalid Parent account provided`,\n [DROPSY_ERROR__INVALID_PDA]: `Invalid PDA account`,\n [DROPSY_ERROR__INVALID_PERCENTAGE]: `Invalid percentage (must be 0-100)`,\n [DROPSY_ERROR__INVALID_PROOF]: `Invalid merkle proof`,\n [DROPSY_ERROR__INVALID_PUB_KEY]: `Invalid Pubkey provided`,\n [DROPSY_ERROR__INVALID_TIMESTAMP]: `Invalid timestamp or duration`,\n [DROPSY_ERROR__INVALID_TOTAL]: `Invalid total claimers`,\n [DROPSY_ERROR__INVALID_TREASURY_ACCOUNT]: `invalid treasury account`,\n [DROPSY_ERROR__INVALID_VAULT_AUTHORITY]: `Invalid vault authority`,\n [DROPSY_ERROR__INVALID_VESTING_SCHEDULE]: `Vesting schedule is invalid`,\n [DROPSY_ERROR__INVALID_VESTING_TYPE]: `Invalid vesting type`,\n [DROPSY_ERROR__MAX_AIRDROPS_REACHED]: `Airdrop quota reached. Upgrade required for Airdrop Master.`,\n [DROPSY_ERROR__MAX_CLAIM_MAPS_REACHED]: `ClaimMap quota reached. Upgrade required for Airdrop Master.`,\n [DROPSY_ERROR__MINT_HAS_FREEZE_AUTHORITY]: `Mint has freeze authority`,\n [DROPSY_ERROR__MINT_IS_FROZEN]: `Mint is frozen`,\n [DROPSY_ERROR__MINT_IS_NOT_INITIALIZED]: `Mint must be initialized`,\n [DROPSY_ERROR__MINT_MISMATCH]: `Provided mint doesn't match expected mint`,\n [DROPSY_ERROR__MISSING_BITMAP_PDA]: `Missing bitmap PDA`,\n [DROPSY_ERROR__NFT_NOT_ALLOWED]: `Fungible tokens only (no NFTs)`,\n [DROPSY_ERROR__NON_ZERO_VALUE_REQUIRED]: `Number must be non-zero`,\n [DROPSY_ERROR__OVERFLOW]: `Arithmetic overflow`,\n [DROPSY_ERROR__OWNER_MISMATCH]: `Airdrop owner mismatch`,\n [DROPSY_ERROR__SOURCE_ACCOUNT_FROZEN]: `Source account is frozen`,\n [DROPSY_ERROR__SOURCE_HAS_CLOSE_AUTHORITY]: `Source has close authority`,\n [DROPSY_ERROR__SOURCE_HAS_DELEGATE]: `Source has delegate set`,\n [DROPSY_ERROR__TOO_MANY_BITMAPS]: `Too many bitmap accounts`,\n [DROPSY_ERROR__UNAUTHORIZED]: `Not Authorized`,\n [DROPSY_ERROR__UN_AUTHORIZED]: `Invalid Authority Pubkey`,\n [DROPSY_ERROR__UPDATE_CUTOFF_TIME_PASSED]: `Airdrop updates are only allowed until cutoff time before start`,\n [DROPSY_ERROR__VALUE_BELOW_THE_MINIMUM]: `Value below the minimum`,\n [DROPSY_ERROR__VALUE_EXCEEDS_MAXIMUM]: `Value exceeds the maximum`,\n [DROPSY_ERROR__VALUE_OUT_OF_RANGE]: `Value out of range`,\n [DROPSY_ERROR__VAULT_FROZEN]: `Vault is frozen`,\n [DROPSY_ERROR__VAULT_HAS_CLOSE_AUTHORITY]: `Vault has close authority`,\n [DROPSY_ERROR__VAULT_HAS_DELEGATE]: `Vault has delegate set`,\n [DROPSY_ERROR__VAULT_MINT_MISMATCH]: `Vault mint doesn't match airdrop mint`,\n [DROPSY_ERROR__VAULT_NOT_INITIALIZED]: `Vault not initialized`,\n [DROPSY_ERROR__VAULT_NOT_RENT_EXEMPT]: `Vault not rent exempt`,\n [DROPSY_ERROR__VESTING_ACCOUNT_REQUIRED]: `vesting account required for vested airdrop`,\n };\n}\n\nexport function getDropsyErrorMessage(code: DropsyError): string {\n if (process.env.NODE_ENV !== \"production\") {\n return (dropsyErrorMessages as Record<DropsyError, string>)[code];\n }\n\n return \"Error message not available in production bundles.\";\n}\n\nexport function isDropsyError<TProgramErrorCode extends DropsyError>(\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 DROPSY_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 containsBytes,\n fixEncoderSize,\n getBytesEncoder,\n type Address,\n type ReadonlyUint8Array,\n} from \"@solana/kit\";\nimport {\n type ParsedClaimAirdropInstruction,\n type ParsedCreateAirdropInstruction,\n type ParsedCreateClaimMapInstruction,\n type ParsedDepositTokensInstruction,\n type ParsedInitializeAirdropMasterInstruction,\n type ParsedInitializeMasterInstruction,\n type ParsedRedeemAirdropTokensInstruction,\n} from \"../instructions\";\n\nexport const DROPSY_PROGRAM_ADDRESS =\n \"6Bd4YUkwyvZTPMt1bu13zvw9t4TtoMTd6CFVMmaswB2M\" as Address<\"6Bd4YUkwyvZTPMt1bu13zvw9t4TtoMTd6CFVMmaswB2M\">;\n\nexport enum DropsyAccount {\n Affiliate,\n AffiliateMaster,\n Airdrop,\n AirdropConfig,\n AirdropMaster,\n ClaimMap,\n Master,\n}\n\nexport function identifyDropsyAccount(\n account: { data: ReadonlyUint8Array } | ReadonlyUint8Array,\n): DropsyAccount {\n const data = \"data\" in account ? account.data : account;\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([136, 95, 107, 149, 36, 195, 146, 35]),\n ),\n 0,\n )\n ) {\n return DropsyAccount.Affiliate;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([25, 57, 134, 31, 30, 203, 219, 215]),\n ),\n 0,\n )\n ) {\n return DropsyAccount.AffiliateMaster;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([31, 112, 159, 158, 124, 237, 9, 241]),\n ),\n 0,\n )\n ) {\n return DropsyAccount.Airdrop;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([194, 149, 223, 142, 42, 98, 128, 16]),\n ),\n 0,\n )\n ) {\n return DropsyAccount.AirdropConfig;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([31, 109, 100, 62, 106, 173, 5, 4]),\n ),\n 0,\n )\n ) {\n return DropsyAccount.AirdropMaster;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([193, 62, 74, 131, 13, 161, 53, 215]),\n ),\n 0,\n )\n ) {\n return DropsyAccount.ClaimMap;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([168, 213, 193, 12, 77, 162, 58, 235]),\n ),\n 0,\n )\n ) {\n return DropsyAccount.Master;\n }\n throw new Error(\n \"The provided account could not be identified as a dropsy account.\",\n );\n}\n\nexport enum DropsyInstruction {\n ClaimAirdrop,\n CreateAirdrop,\n CreateClaimMap,\n DepositTokens,\n InitializeAirdropMaster,\n InitializeMaster,\n RedeemAirdropTokens,\n}\n\nexport function identifyDropsyInstruction(\n instruction: { data: ReadonlyUint8Array } | ReadonlyUint8Array,\n): DropsyInstruction {\n const data = \"data\" in instruction ? instruction.data : instruction;\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([137, 50, 122, 111, 89, 254, 8, 20]),\n ),\n 0,\n )\n ) {\n return DropsyInstruction.ClaimAirdrop;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([227, 135, 208, 66, 137, 177, 80, 94]),\n ),\n 0,\n )\n ) {\n return DropsyInstruction.CreateAirdrop;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([22, 150, 81, 49, 214, 142, 189, 122]),\n ),\n 0,\n )\n ) {\n return DropsyInstruction.CreateClaimMap;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([176, 83, 229, 18, 191, 143, 176, 150]),\n ),\n 0,\n )\n ) {\n return DropsyInstruction.DepositTokens;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([163, 197, 170, 44, 57, 57, 90, 65]),\n ),\n 0,\n )\n ) {\n return DropsyInstruction.InitializeAirdropMaster;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([206, 91, 246, 30, 216, 101, 134, 166]),\n ),\n 0,\n )\n ) {\n return DropsyInstruction.InitializeMaster;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([102, 70, 115, 13, 97, 198, 59, 103]),\n ),\n 0,\n )\n ) {\n return DropsyInstruction.RedeemAirdropTokens;\n }\n throw new Error(\n \"The provided instruction could not be identified as a dropsy instruction.\",\n );\n}\n\nexport type ParsedDropsyInstruction<\n TProgram extends string = \"6Bd4YUkwyvZTPMt1bu13zvw9t4TtoMTd6CFVMmaswB2M\",\n> =\n | ({\n instructionType: DropsyInstruction.ClaimAirdrop;\n } & ParsedClaimAirdropInstruction<TProgram>)\n | ({\n instructionType: DropsyInstruction.CreateAirdrop;\n } & ParsedCreateAirdropInstruction<TProgram>)\n | ({\n instructionType: DropsyInstruction.CreateClaimMap;\n } & ParsedCreateClaimMapInstruction<TProgram>)\n | ({\n instructionType: DropsyInstruction.DepositTokens;\n } & ParsedDepositTokensInstruction<TProgram>)\n | ({\n instructionType: DropsyInstruction.InitializeAirdropMaster;\n } & ParsedInitializeAirdropMasterInstruction<TProgram>)\n | ({\n instructionType: DropsyInstruction.InitializeMaster;\n } & ParsedInitializeMasterInstruction<TProgram>)\n | ({\n instructionType: DropsyInstruction.RedeemAirdropTokens;\n } & ParsedRedeemAirdropTokensInstruction<TProgram>);\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 getU16Decoder,\n getU16Encoder,\n getU64Decoder,\n getU64Encoder,\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 { DROPSY_PROGRAM_ADDRESS } from \"../programs\";\nimport {\n expectAddress,\n getAccountMetaFactory,\n type ResolvedAccount,\n} from \"../shared\";\n\nexport const CLAIM_AIRDROP_DISCRIMINATOR = new Uint8Array([\n 137, 50, 122, 111, 89, 254, 8, 20,\n]);\n\nexport function getClaimAirdropDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n CLAIM_AIRDROP_DISCRIMINATOR,\n );\n}\n\nexport type ClaimAirdropInstruction<\n TProgram extends string = typeof DROPSY_PROGRAM_ADDRESS,\n TAccountMaster extends string | AccountMeta<string> = string,\n TAccountConfig extends string | AccountMeta<string> = string,\n TAccountTreasury extends string | AccountMeta<string> = string,\n TAccountAirdropMaster extends string | AccountMeta<string> = string,\n TAccountAirdropMasterAuthority extends string | AccountMeta<string> = string,\n TAccountAffiliate extends string | AccountMeta<string> = string,\n TAccountSourceTokenAccount extends string | AccountMeta<string> = string,\n TAccountDestinationTokenAccount extends string | AccountMeta<string> = string,\n TAccountAirdrop extends string | AccountMeta<string> = string,\n TAccountAuthority extends string | AccountMeta<string> = string,\n TAccountBitmap extends string | AccountMeta<string> = string,\n TAccountMint extends string | AccountMeta<string> = string,\n TAccountClaimer extends string | AccountMeta<string> = string,\n TAccountTokenProgram extends string | AccountMeta<string> =\n \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\",\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 TAccountMaster extends string\n ? ReadonlyAccount<TAccountMaster>\n : TAccountMaster,\n TAccountConfig extends string\n ? ReadonlyAccount<TAccountConfig>\n : TAccountConfig,\n TAccountTreasury extends string\n ? WritableAccount<TAccountTreasury>\n : TAccountTreasury,\n TAccountAirdropMaster extends string\n ? ReadonlyAccount<TAccountAirdropMaster>\n : TAccountAirdropMaster,\n TAccountAirdropMasterAuthority extends string\n ? ReadonlyAccount<TAccountAirdropMasterAuthority>\n : TAccountAirdropMasterAuthority,\n TAccountAffiliate extends string\n ? WritableAccount<TAccountAffiliate>\n : TAccountAffiliate,\n TAccountSourceTokenAccount extends string\n ? WritableAccount<TAccountSourceTokenAccount>\n : TAccountSourceTokenAccount,\n TAccountDestinationTokenAccount extends string\n ? WritableAccount<TAccountDestinationTokenAccount>\n : TAccountDestinationTokenAccount,\n TAccountAirdrop extends string\n ? ReadonlyAccount<TAccountAirdrop>\n : TAccountAirdrop,\n TAccountAuthority extends string\n ? ReadonlyAccount<TAccountAuthority>\n : TAccountAuthority,\n TAccountBitmap extends string\n ? WritableAccount<TAccountBitmap>\n : TAccountBitmap,\n TAccountMint extends string\n ? ReadonlyAccount<TAccountMint>\n : TAccountMint,\n TAccountClaimer extends string\n ? WritableSignerAccount<TAccountClaimer> &\n AccountSignerMeta<TAccountClaimer>\n : TAccountClaimer,\n TAccountTokenProgram extends string\n ? ReadonlyAccount<TAccountTokenProgram>\n : TAccountTokenProgram,\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 ClaimAirdropInstructionData = {\n discriminator: ReadonlyUint8Array;\n index: bigint;\n proof: Array<ReadonlyUint8Array>;\n amount: bigint;\n claimMapIndex: number;\n};\n\nexport type ClaimAirdropInstructionDataArgs = {\n index: number | bigint;\n proof: Array<ReadonlyUint8Array>;\n amount: number | bigint;\n claimMapIndex: number;\n};\n\nexport function getClaimAirdropInstructionDataEncoder(): Encoder<ClaimAirdropInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([\n [\"discriminator\", fixEncoderSize(getBytesEncoder(), 8)],\n [\"index\", getU64Encoder()],\n [\"proof\", getArrayEncoder(fixEncoderSize(getBytesEncoder(), 32))],\n [\"amount\", getU64Encoder()],\n [\"claimMapIndex\", getU16Encoder()],\n ]),\n (value) => ({ ...value, discriminator: CLAIM_AIRDROP_DISCRIMINATOR }),\n );\n}\n\nexport function getClaimAirdropInstructionDataDecoder(): Decoder<ClaimAirdropInstructionData> {\n return getStructDecoder([\n [\"discriminator\", fixDecoderSize(getBytesDecoder(), 8)],\n [\"index\", getU64Decoder()],\n [\"proof\", getArrayDecoder(fixDecoderSize(getBytesDecoder(), 32))],\n [\"amount\", getU64Decoder()],\n [\"claimMapIndex\", getU16Decoder()],\n ]);\n}\n\nexport function getClaimAirdropInstructionDataCodec(): Codec<\n ClaimAirdropInstructionDataArgs,\n ClaimAirdropInstructionData\n> {\n return combineCodec(\n getClaimAirdropInstructionDataEncoder(),\n getClaimAirdropInstructionDataDecoder(),\n );\n}\n\nexport type ClaimAirdropAsyncInput<\n TAccountMaster extends string = string,\n TAccountConfig extends string = string,\n TAccountTreasury extends string = string,\n TAccountAirdropMaster extends string = string,\n TAccountAirdropMasterAuthority extends string = string,\n TAccountAffiliate extends string = string,\n TAccountSourceTokenAccount extends string = string,\n TAccountDestinationTokenAccount extends string = string,\n TAccountAirdrop extends string = string,\n TAccountAuthority extends string = string,\n TAccountBitmap extends string = string,\n TAccountMint extends string = string,\n TAccountClaimer extends string = string,\n TAccountTokenProgram extends string = string,\n TAccountAssociatedTokenProgram extends string = string,\n TAccountSystemProgram extends string = string,\n> = {\n master?: Address<TAccountMaster>;\n config?: Address<TAccountConfig>;\n treasury: Address<TAccountTreasury>;\n airdropMaster?: Address<TAccountAirdropMaster>;\n /** Check with authority */\n airdropMasterAuthority: Address<TAccountAirdropMasterAuthority>;\n affiliate?: Address<TAccountAffiliate>;\n sourceTokenAccount: Address<TAccountSourceTokenAccount>;\n destinationTokenAccount?: Address<TAccountDestinationTokenAccount>;\n airdrop?: Address<TAccountAirdrop>;\n authority: Address<TAccountAuthority>;\n bitmap: Address<TAccountBitmap>;\n mint: Address<TAccountMint>;\n claimer: TransactionSigner<TAccountClaimer>;\n tokenProgram?: Address<TAccountTokenProgram>;\n associatedTokenProgram?: Address<TAccountAssociatedTokenProgram>;\n systemProgram?: Address<TAccountSystemProgram>;\n index: ClaimAirdropInstructionDataArgs[\"index\"];\n proof: ClaimAirdropInstructionDataArgs[\"proof\"];\n amount: ClaimAirdropInstructionDataArgs[\"amount\"];\n claimMapIndex: ClaimAirdropInstructionDataArgs[\"claimMapIndex\"];\n};\n\nexport async function getClaimAirdropInstructionAsync<\n TAccountMaster extends string,\n TAccountConfig extends string,\n TAccountTreasury extends string,\n TAccountAirdropMaster extends string,\n TAccountAirdropMasterAuthority extends string,\n TAccountAffiliate extends string,\n TAccountSourceTokenAccount extends string,\n TAccountDestinationTokenAccount extends string,\n TAccountAirdrop extends string,\n TAccountAuthority extends string,\n TAccountBitmap extends string,\n TAccountMint extends string,\n TAccountClaimer extends string,\n TAccountTokenProgram extends string,\n TAccountAssociatedTokenProgram extends string,\n TAccountSystemProgram extends string,\n TProgramAddress extends Address = typeof DROPSY_PROGRAM_ADDRESS,\n>(\n input: ClaimAirdropAsyncInput<\n TAccountMaster,\n TAccountConfig,\n TAccountTreasury,\n TAccountAirdropMaster,\n TAccountAirdropMasterAuthority,\n TAccountAffiliate,\n TAccountSourceTokenAccount,\n TAccountDestinationTokenAccount,\n TAccountAirdrop,\n TAccountAuthority,\n TAccountBitmap,\n TAccountMint,\n TAccountClaimer,\n TAccountTokenProgram,\n TAccountAssociatedTokenProgram,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress },\n): Promise<\n ClaimAirdropInstruction<\n TProgramAddress,\n TAccountMaster,\n TAccountConfig,\n TAccountTreasury,\n TAccountAirdropMaster,\n TAccountAirdropMasterAuthority,\n TAccountAffiliate,\n TAccountSourceTokenAccount,\n TAccountDestinationTokenAccount,\n TAccountAirdrop,\n TAccountAuthority,\n TAccountBitmap,\n TAccountMint,\n TAccountClaimer,\n TAccountTokenProgram,\n TAccountAssociatedTokenProgram,\n TAccountSystemProgram\n >\n> {\n // Program address.\n const programAddress = config?.programAddress ?? DROPSY_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n master: { value: input.master ?? null, isWritable: false },\n config: { value: input.config ?? null, isWritable: false },\n treasury: { value: input.treasury ?? null, isWritable: true },\n airdropMaster: { value: input.airdropMaster ?? null, isWritable: false },\n airdropMasterAuthority: {\n value: input.airdropMasterAuthority ?? null,\n isWritable: false,\n },\n affiliate: { value: input.affiliate ?? null, isWritable: true },\n sourceTokenAccount: {\n value: input.sourceTokenAccount ?? null,\n isWritable: true,\n },\n destinationTokenAccount: {\n value: input.destinationTokenAccount ?? null,\n isWritable: true,\n },\n airdrop: { value: input.airdrop ?? null, isWritable: false },\n authority: { value: input.authority ?? null, isWritable: false },\n bitmap: { value: input.bitmap ?? null, isWritable: true },\n mint: { value: input.mint ?? null, isWritable: false },\n claimer: { value: input.claimer ?? null, isWritable: true },\n tokenProgram: { value: input.tokenProgram ?? null, isWritable: false },\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 ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Resolve default values.\n if (!accounts.master.value) {\n accounts.master.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(new Uint8Array([109, 97, 115, 116, 101, 114])),\n ],\n });\n }\n if (!accounts.config.value) {\n accounts.config.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(\n new Uint8Array([\n 97, 105, 114, 100, 114, 111, 112, 95, 99, 111, 110, 102, 105, 103,\n ]),\n ),\n ],\n });\n }\n if (!accounts.airdropMaster.value) {\n accounts.airdropMaster.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(\n new Uint8Array([\n 97, 105, 114, 100, 114, 111, 112, 95, 109, 97, 115, 116, 101, 114,\n ]),\n ),\n getAddressEncoder().encode(\n expectAddress(accounts.airdropMasterAuthority.value),\n ),\n ],\n });\n }\n if (!accounts.tokenProgram.value) {\n accounts.tokenProgram.value =\n \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\" as Address<\"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\">;\n }\n if (!accounts.destinationTokenAccount.value) {\n accounts.destinationTokenAccount.value = await getProgramDerivedAddress({\n programAddress:\n \"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\" as Address<\"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\">,\n seeds: [\n getAddressEncoder().encode(expectAddress(accounts.claimer.value)),\n getAddressEncoder().encode(expectAddress(accounts.tokenProgram.value)),\n getAddressEncoder().encode(expectAddress(accounts.mint.value)),\n ],\n });\n }\n if (!accounts.airdrop.value) {\n accounts.airdrop.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(\n new Uint8Array([97, 105, 114, 100, 114, 111, 112]),\n ),\n getAddressEncoder().encode(expectAddress(accounts.mint.value)),\n getAddressEncoder().encode(expectAddress(accounts.authority.value)),\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(accounts.master),\n getAccountMeta(accounts.config),\n getAccountMeta(accounts.treasury),\n getAccountMeta(accounts.airdropMaster),\n getAccountMeta(accounts.airdropMasterAuthority),\n getAccountMeta(accounts.affiliate),\n getAccountMeta(accounts.sourceTokenAccount),\n getAccountMeta(accounts.destinationTokenAccount),\n getAccountMeta(accounts.airdrop),\n getAccountMeta(accounts.authority),\n getAccountMeta(accounts.bitmap),\n getAccountMeta(accounts.mint),\n getAccountMeta(accounts.claimer),\n getAccountMeta(accounts.tokenProgram),\n getAccountMeta(accounts.associatedTokenProgram),\n getAccountMeta(accounts.systemProgram),\n ],\n data: getClaimAirdropInstructionDataEncoder().encode(\n args as ClaimAirdropInstructionDataArgs,\n ),\n programAddress,\n } as ClaimAirdropInstruction<\n TProgramAddress,\n TAccountMaster,\n TAccountConfig,\n TAccountTreasury,\n TAccountAirdropMaster,\n TAccountAirdropMasterAuthority,\n TAccountAffiliate,\n TAccountSourceTokenAccount,\n TAccountDestinationTokenAccount,\n TAccountAirdrop,\n TAccountAuthority,\n TAccountBitmap,\n TAccountMint,\n TAccountClaimer,\n TAccountTokenProgram,\n TAccountAssociatedTokenProgram,\n TAccountSystemProgram\n >);\n}\n\nexport type ClaimAirdropInput<\n TAccountMaster extends string = string,\n TAccountConfig extends string = string,\n TAccountTreasury extends string = string,\n TAccountAirdropMaster extends string = string,\n TAccountAirdropMasterAuthority extends string = string,\n TAccountAffiliate extends string = string,\n TAccountSourceTokenAccount extends string = string,\n TAccountDestinationTokenAccount extends string = string,\n TAccountAirdrop extends string = string,\n TAccountAuthority extends string = string,\n TAccountBitmap extends string = string,\n TAccountMint extends string = string,\n TAccountClaimer extends string = string,\n TAccountTokenProgram extends string = string,\n TAccountAssociatedTokenProgram extends string = string,\n TAccountSystemProgram extends string = string,\n> = {\n master: Address<TAccountMaster>;\n config: Address<TAccountConfig>;\n treasury: Address<TAccountTreasury>;\n airdropMaster: Address<TAccountAirdropMaster>;\n /** Check with authority */\n airdropMasterAuthority: Address<TAccountAirdropMasterAuthority>;\n affiliate?: Address<TAccountAffiliate>;\n sourceTokenAccount: Address<TAccountSourceTokenAccount>;\n destinationTokenAccount: Address<TAccountDestinationTokenAccount>;\n airdrop: Address<TAccountAirdrop>;\n authority: Address<TAccountAuthority>;\n bitmap: Address<TAccountBitmap>;\n mint: Address<TAccountMint>;\n claimer: TransactionSigner<TAccountClaimer>;\n tokenProgram?: Address<TAccountTokenProgram>;\n associatedTokenProgram?: Address<TAccountAssociatedTokenProgram>;\n systemProgram?: Address<TAccountSystemProgram>;\n index: ClaimAirdropInstructionDataArgs[\"index\"];\n proof: ClaimAirdropInstructionDataArgs[\"proof\"];\n amount: ClaimAirdropInstructionDataArgs[\"amount\"];\n claimMapIndex: ClaimAirdropInstructionDataArgs[\"claimMapIndex\"];\n};\n\nexport function getClaimAirdropInstruction<\n TAccountMaster extends string,\n TAccountConfig extends string,\n TAccountTreasury extends string,\n TAccountAirdropMaster extends string,\n TAccountAirdropMasterAuthority extends string,\n TAccountAffiliate extends string,\n TAccountSourceTokenAccount extends string,\n TAccountDestinationTokenAccount extends string,\n TAccountAirdrop extends string,\n TAccountAuthority extends string,\n TAccountBitmap extends string,\n TAccountMint extends string,\n TAccountClaimer extends string,\n TAccountTokenProgram extends string,\n TAccountAssociatedTokenProgram extends string,\n TAccountSystemProgram extends string,\n TProgramAddress extends Address = typeof DROPSY_PROGRAM_ADDRESS,\n>(\n input: ClaimAirdropInput<\n TAccountMaster,\n TAccountConfig,\n TAccountTreasury,\n TAccountAirdropMaster,\n TAccountAirdropMasterAuthority,\n TAccountAffiliate,\n TAccountSourceTokenAccount,\n TAccountDestinationTokenAccount,\n TAccountAirdrop,\n TAccountAuthority,\n TAccountBitmap,\n TAccountMint,\n TAccountClaimer,\n TAccountTokenProgram,\n TAccountAssociatedTokenProgram,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress },\n): ClaimAirdropInstruction<\n TProgramAddress,\n TAccountMaster,\n TAccountConfig,\n TAccountTreasury,\n TAccountAirdropMaster,\n TAccountAirdropMasterAuthority,\n TAccountAffiliate,\n TAccountSourceTokenAccount,\n TAccountDestinationTokenAccount,\n TAccountAirdrop,\n TAccountAuthority,\n TAccountBitmap,\n TAccountMint,\n TAccountClaimer,\n TAccountTokenProgram,\n TAccountAssociatedTokenProgram,\n TAccountSystemProgram\n> {\n // Program address.\n const programAddress = config?.programAddress ?? DROPSY_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n master: { value: input.master ?? null, isWritable: false },\n config: { value: input.config ?? null, isWritable: false },\n treasury: { value: input.treasury ?? null, isWritable: true },\n airdropMaster: { value: input.airdropMaster ?? null, isWritable: false },\n airdropMasterAuthority: {\n value: input.airdropMasterAuthority ?? null,\n isWritable: false,\n },\n affiliate: { value: input.affiliate ?? null, isWritable: true },\n sourceTokenAccount: {\n value: input.sourceTokenAccount ?? null,\n isWritable: true,\n },\n destinationTokenAccount: {\n value: input.destinationTokenAccount ?? null,\n isWritable: true,\n },\n airdrop: { value: input.airdrop ?? null, isWritable: false },\n authority: { value: input.authority ?? null, isWritable: false },\n bitmap: { value: input.bitmap ?? null, isWritable: true },\n mint: { value: input.mint ?? null, isWritable: false },\n claimer: { value: input.claimer ?? null, isWritable: true },\n tokenProgram: { value: input.tokenProgram ?? null, isWritable: false },\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 ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Resolve default values.\n if (!accounts.tokenProgram.value) {\n accounts.tokenProgram.value =\n \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\" as Address<\"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\">;\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(accounts.master),\n getAccountMeta(accounts.config),\n getAccountMeta(accounts.treasury),\n getAccountMeta(accounts.airdropMaster),\n getAccountMeta(accounts.airdropMasterAuthority),\n getAccountMeta(accounts.affiliate),\n getAccountMeta(accounts.sourceTokenAccount),\n getAccountMeta(accounts.destinationTokenAccount),\n getAccountMeta(accounts.airdrop),\n getAccountMeta(accounts.authority),\n getAccountMeta(accounts.bitmap),\n getAccountMeta(accounts.mint),\n getAccountMeta(accounts.claimer),\n getAccountMeta(accounts.tokenProgram),\n getAccountMeta(accounts.associatedTokenProgram),\n getAccountMeta(accounts.systemProgram),\n ],\n data: getClaimAirdropInstructionDataEncoder().encode(\n args as ClaimAirdropInstructionDataArgs,\n ),\n programAddress,\n } as ClaimAirdropInstruction<\n TProgramAddress,\n TAccountMaster,\n TAccountConfig,\n TAccountTreasury,\n TAccountAirdropMaster,\n TAccountAirdropMasterAuthority,\n TAccountAffiliate,\n TAccountSourceTokenAccount,\n TAccountDestinationTokenAccount,\n TAccountAirdrop,\n TAccountAuthority,\n TAccountBitmap,\n TAccountMint,\n TAccountClaimer,\n TAccountTokenProgram,\n TAccountAssociatedTokenProgram,\n TAccountSystemProgram\n >);\n}\n\nexport type ParsedClaimAirdropInstruction<\n TProgram extends string = typeof DROPSY_PROGRAM_ADDRESS,\n TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n programAddress: Address<TProgram>;\n accounts: {\n master: TAccountMetas[0];\n config: TAccountMetas[1];\n treasury: TAccountMetas[2];\n airdropMaster: TAccountMetas[3];\n /** Check with authority */\n airdropMasterAuthority: TAccountMetas[4];\n affiliate?: TAccountMetas[5] | undefined;\n sourceTokenAccount: TAccountMetas[6];\n destinationTokenAccount: TAccountMetas[7];\n airdrop: TAccountMetas[8];\n authority: TAccountMetas[9];\n bitmap: TAccountMetas[10];\n mint: TAccountMetas[11];\n claimer: TAccountMetas[12];\n tokenProgram: TAccountMetas[13];\n associatedTokenProgram: TAccountMetas[14];\n systemProgram: TAccountMetas[15];\n };\n data: ClaimAirdropInstructionData;\n};\n\nexport function parseClaimAirdropInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>,\n): ParsedClaimAirdropInstruction<TProgram, TAccountMetas> {\n if (instruction.accounts.length < 16) {\n // TODO: Coded error.\n throw new Error(\"Not enough accounts\");\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 === DROPSY_PROGRAM_ADDRESS\n ? undefined\n : accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n master: getNextAccount(),\n config: getNextAccount(),\n treasury: getNextAccount(),\n airdropMaster: getNextAccount(),\n airdropMasterAuthority: getNextAccount(),\n affiliate: getNextOptionalAccount(),\n sourceTokenAccount: getNextAccount(),\n destinationTokenAccount: getNextAccount(),\n airdrop: getNextAccount(),\n authority: getNextAccount(),\n bitmap: getNextAccount(),\n mint: getNextAccount(),\n claimer: getNextAccount(),\n tokenProgram: getNextAccount(),\n associatedTokenProgram: getNextAccount(),\n systemProgram: getNextAccount(),\n },\n data: getClaimAirdropInstructionDataDecoder().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 AccountRole,\n isProgramDerivedAddress,\n isTransactionSigner as kitIsTransactionSigner,\n type AccountMeta,\n type AccountSignerMeta,\n type Address,\n type ProgramDerivedAddress,\n type TransactionSigner,\n upgradeRoleToSigner,\n} from \"@solana/kit\";\n\n/**\n * Asserts that the given value is not null or undefined.\n * @internal\n */\nexport function expectSome<T>(value: T | null | undefined): T {\n if (value === null || value === undefined) {\n throw new Error(\"Expected a value but received null or undefined.\");\n }\n return value;\n}\n\n/**\n * Asserts that the given value is a PublicKey.\n * @internal\n */\nexport function expectAddress<T extends string = string>(\n value:\n | Address<T>\n | ProgramDerivedAddress<T>\n | TransactionSigner<T>\n | null\n | undefined,\n): Address<T> {\n if (!value) {\n throw new Error(\"Expected a Address.\");\n }\n if (typeof value === \"object\" && \"address\" in value) {\n return value.address;\n }\n if (Array.isArray(value)) {\n return value[0] as Address<T>;\n }\n return value as Address<T>;\n}\n\n/**\n * Asserts that the given value is a PDA.\n * @internal\n */\nexport function expectProgramDerivedAddress<T extends string = string>(\n value:\n | Address<T>\n | ProgramDerivedAddress<T>\n | TransactionSigner<T>\n | null\n | undefined,\n): ProgramDerivedAddress<T> {\n if (!value || !Array.isArray(value) || !isProgramDerivedAddress(value)) {\n throw new Error(\"Expected a ProgramDerivedAddress.\");\n }\n return value;\n}\n\n/**\n * Asserts that the given value is a TransactionSigner.\n * @internal\n */\nexport function expectTransactionSigner<T extends string = string>(\n value:\n | Address<T>\n | ProgramDerivedAddress<T>\n | TransactionSigner<T>\n | null\n | undefined,\n): TransactionSigner<T> {\n if (!value || !isTransactionSigner(value)) {\n throw new Error(\"Expected a TransactionSigner.\");\n }\n return value;\n}\n\n/**\n * Defines an instruction account to resolve.\n * @internal\n */\nexport type ResolvedAccount<\n T extends string = string,\n U extends\n | Address<T>\n | ProgramDerivedAddress<T>\n | TransactionSigner<T>\n | null =\n | Address<T>\n | ProgramDerivedAddress<T>\n | TransactionSigner<T>\n | null,\n> = {\n isWritable: boolean;\n value: U;\n};\n\n/**\n * Defines an instruction that stores additional bytes on-chain.\n * @internal\n */\nexport type InstructionWithByteDelta = {\n byteDelta: number;\n};\n\n/**\n * Get account metas and signers from resolved accounts.\n * @internal\n */\nexport function getAccountMetaFactory(\n programAddress: Address,\n optionalAccountStrategy: \"omitted\" | \"programId\",\n) {\n return (\n account: ResolvedAccount,\n ): AccountMeta | AccountSignerMeta | undefined => {\n if (!account.value) {\n if (optionalAccountStrategy === \"omitted\") return;\n return Object.freeze({\n address: programAddress,\n role: AccountRole.READONLY,\n });\n }\n\n const writableRole = account.isWritable\n ? AccountRole.WRITABLE\n : AccountRole.READONLY;\n return Object.freeze({\n address: expectAddress(account.value),\n role: isTransactionSigner(account.value)\n ? upgradeRoleToSigner(writableRole)\n : writableRole,\n ...(isTransactionSigner(account.value) ? { signer: account.value } : {}),\n });\n };\n}\n\nexport function isTransactionSigner<TAddress extends string = string>(\n value:\n | Address<TAddress>\n | ProgramDerivedAddress<TAddress>\n | TransactionSigner<TAddress>,\n): value is TransactionSigner<TAddress> {\n return (\n !!value &&\n typeof value === \"object\" &&\n \"address\" in value &&\n kitIsTransactionSigner(value)\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 getI64Decoder,\n getI64Encoder,\n getOptionDecoder,\n getOptionEncoder,\n getProgramDerivedAddress,\n getStructDecoder,\n getStructEncoder,\n getU8Decoder,\n getU8Encoder,\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 { DROPSY_PROGRAM_ADDRESS } from \"../programs\";\nimport {\n expectAddress,\n getAccountMetaFactory,\n type ResolvedAccount,\n} from \"../shared\";\n\nexport const CREATE_AIRDROP_DISCRIMINATOR = new Uint8Array([\n 227, 135, 208, 66, 137, 177, 80, 94,\n]);\n\nexport function getCreateAirdropDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n CREATE_AIRDROP_DISCRIMINATOR,\n );\n}\n\nexport type CreateAirdropInstruction<\n TProgram extends string = typeof DROPSY_PROGRAM_ADDRESS,\n TAccountMaster extends string | AccountMeta<string> = string,\n TAccountConfig extends string | AccountMeta<string> = string,\n TAccountTreasury extends string | AccountMeta<string> = string,\n TAccountAirdropMaster extends string | AccountMeta<string> = string,\n TAccountAirdropMasterAuthority extends string | AccountMeta<string> = string,\n TAccountAffiliate extends string | AccountMeta<string> = string,\n TAccountAirdrop extends string | AccountMeta<string> = string,\n TAccountMint extends string | AccountMeta<string> = string,\n TAccountAuthority 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 TAccountMaster extends string\n ? ReadonlyAccount<TAccountMaster>\n : TAccountMaster,\n TAccountConfig extends string\n ? ReadonlyAccount<TAccountConfig>\n : TAccountConfig,\n TAccountTreasury extends string\n ? WritableAccount<TAccountTreasury>\n : TAccountTreasury,\n TAccountAirdropMaster extends string\n ? ReadonlyAccount<TAccountAirdropMaster>\n : TAccountAirdropMaster,\n TAccountAirdropMasterAuthority extends string\n ? ReadonlyAccount<TAccountAirdropMasterAuthority>\n : TAccountAirdropMasterAuthority,\n TAccountAffiliate extends string\n ? WritableAccount<TAccountAffiliate>\n : TAccountAffiliate,\n TAccountAirdrop extends string\n ? WritableAccount<TAccountAirdrop>\n : TAccountAirdrop,\n TAccountMint extends string\n ? ReadonlyAccount<TAccountMint>\n : TAccountMint,\n TAccountAuthority extends string\n ? WritableSignerAccount<TAccountAuthority> &\n AccountSignerMeta<TAccountAuthority>\n : TAccountAuthority,\n TAccountSystemProgram extends string\n ? ReadonlyAccount<TAccountSystemProgram>\n : TAccountSystemProgram,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type CreateAirdropInstructionData = {\n discriminator: ReadonlyUint8Array;\n merkleRoot: Option<ReadonlyUint8Array>;\n startsAt: Option<bigint>;\n endsAt: Option<bigint>;\n version: Option<number>;\n mutable: Option<number>;\n delegateAuthority: Option<Address>;\n delegatePermissions: Option<number>;\n};\n\nexport type CreateAirdropInstructionDataArgs = {\n merkleRoot: OptionOrNullable<ReadonlyUint8Array>;\n startsAt: OptionOrNullable<number | bigint>;\n endsAt: OptionOrNullable<number | bigint>;\n version: OptionOrNullable<number>;\n mutable: OptionOrNullable<number>;\n delegateAuthority: OptionOrNullable<Address>;\n delegatePermissions: OptionOrNullable<number>;\n};\n\nexport function getCreateAirdropInstructionDataEncoder(): Encoder<CreateAirdropInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([\n [\"discriminator\", fixEncoderSize(getBytesEncoder(), 8)],\n [\"merkleRoot\", getOptionEncoder(fixEncoderSize(getBytesEncoder(), 32))],\n [\"startsAt\", getOptionEncoder(getI64Encoder())],\n [\"endsAt\", getOptionEncoder(getI64Encoder())],\n [\"version\", getOptionEncoder(getU8Encoder())],\n [\"mutable\", getOptionEncoder(getU8Encoder())],\n [\"delegateAuthority\", getOptionEncoder(getAddressEncoder())],\n [\"delegatePermissions\", getOptionEncoder(getU8Encoder())],\n ]),\n (value) => ({ ...value, discriminator: CREATE_AIRDROP_DISCRIMINATOR }),\n );\n}\n\nexport function getCreateAirdropInstructionDataDecoder(): Decoder<CreateAirdropInstructionData> {\n return getStructDecoder([\n [\"discriminator\", fixDecoderSize(getBytesDecoder(), 8)],\n [\"merkleRoot\", getOptionDecoder(fixDecoderSize(getBytesDecoder(), 32))],\n [\"startsAt\", getOptionDecoder(getI64Decoder())],\n [\"endsAt\", getOptionDecoder(getI64Decoder())],\n [\"version\", getOptionDecoder(getU8Decoder())],\n [\"mutable\", getOptionDecoder(getU8Decoder())],\n [\"delegateAuthority\", getOptionDecoder(getAddressDecoder())],\n [\"delegatePermissions\", getOptionDecoder(getU8Decoder())],\n ]);\n}\n\nexport function getCreateAirdropInstructionDataCodec(): Codec<\n CreateAirdropInstructionDataArgs,\n CreateAirdropInstructionData\n> {\n return combineCodec(\n getCreateAirdropInstructionDataEncoder(),\n getCreateAirdropInstructionDataDecoder(),\n );\n}\n\nexport type CreateAirdropAsyncInput<\n TAccountMaster extends string = string,\n TAccountConfig extends string = string,\n TAccountTreasury extends string = string,\n TAccountAirdropMaster extends string = string,\n TAccountAirdropMasterAuthority extends string = string,\n TAccountAffiliate extends string = string,\n TAccountAirdrop extends string = string,\n TAccountMint extends string = string,\n TAccountAuthority extends string = string,\n TAccountSystemProgram extends string = string,\n> = {\n master?: Address<TAccountMaster>;\n config?: Address<TAccountConfig>;\n treasury: Address<TAccountTreasury>;\n airdropMaster?: Address<TAccountAirdropMaster>;\n /** Check with authority */\n airdropMasterAuthority: Address<TAccountAirdropMasterAuthority>;\n affiliate?: Address<TAccountAffiliate>;\n airdrop?: Address<TAccountAirdrop>;\n mint: Address<TAccountMint>;\n authority: TransactionSigner<TAccountAuthority>;\n systemProgram?: Address<TAccountSystemProgram>;\n merkleRoot: CreateAirdropInstructionDataArgs[\"merkleRoot\"];\n startsAt: CreateAirdropInstructionDataArgs[\"startsAt\"];\n endsAt: CreateAirdropInstructionDataArgs[\"endsAt\"];\n version: CreateAirdropInstructionDataArgs[\"version\"];\n mutable: CreateAirdropInstructionDataArgs[\"mutable\"];\n delegateAuthority: CreateAirdropInstructionDataArgs[\"delegateAuthority\"];\n delegatePermissions: CreateAirdropInstructionDataArgs[\"delegatePermissions\"];\n};\n\nexport async function getCreateAirdropInstructionAsync<\n TAccountMaster extends string,\n TAccountConfig extends string,\n TAccountTreasury extends string,\n TAccountAirdropMaster extends string,\n TAccountAirdropMasterAuthority extends string,\n TAccountAffiliate extends string,\n TAccountAirdrop extends string,\n TAccountMint extends string,\n TAccountAuthority extends string,\n TAccountSystemProgram extends string,\n TProgramAddress extends Address = typeof DROPSY_PROGRAM_ADDRESS,\n>(\n input: CreateAirdropAsyncInput<\n TAccountMaster,\n TAccountConfig,\n TAccountTreasury,\n TAccountAirdropMaster,\n TAccountAirdropMasterAuthority,\n TAccountAffiliate,\n TAccountAirdrop,\n TAccountMint,\n TAccountAuthority,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress },\n): Promise<\n CreateAirdropInstruction<\n TProgramAddress,\n TAccountMaster,\n TAccountConfig,\n TAccountTreasury,\n TAccountAirdropMaster,\n TAccountAirdropMasterAuthority,\n TAccountAffiliate,\n TAccountAirdrop,\n TAccountMint,\n TAccountAuthority,\n TAccountSystemProgram\n >\n> {\n // Program address.\n const programAddress = config?.programAddress ?? DROPSY_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n master: { value: input.master ?? null, isWritable: false },\n config: { value: input.config ?? null, isWritable: false },\n treasury: { value: input.treasury ?? null, isWritable: true },\n airdropMaster: { value: input.airdropMaster ?? null, isWritable: true },\n airdropMasterAuthority: {\n value: input.airdropMasterAuthority ?? null,\n isWritable: false,\n },\n affiliate: { value: input.affiliate ?? null, isWritable: true },\n airdrop: { value: input.airdrop ?? null, isWritable: true },\n mint: { value: input.mint ?? null, isWritable: false },\n authority: { value: input.authority ?? null, isWritable: true },\n systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Resolve default values.\n if (!accounts.master.value) {\n accounts.master.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(new Uint8Array([109, 97, 115, 116, 101, 114])),\n ],\n });\n }\n if (!accounts.config.value) {\n accounts.config.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(\n new Uint8Array([\n 97, 105, 114, 100, 114, 111, 112, 95, 99, 111, 110, 102, 105, 103,\n ]),\n ),\n ],\n });\n }\n if (!accounts.airdropMaster.value) {\n accounts.airdropMaster.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(\n new Uint8Array([\n 97, 105, 114, 100, 114, 111, 112, 95, 109, 97, 115, 116, 101, 114,\n ]),\n ),\n getAddressEncoder().encode(\n expectAddress(accounts.airdropMasterAuthority.value),\n ),\n ],\n });\n }\n if (!accounts.airdrop.value) {\n accounts.airdrop.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(\n new Uint8Array([97, 105, 114, 100, 114, 111, 112]),\n ),\n getAddressEncoder().encode(expectAddress(accounts.mint.value)),\n getAddressEncoder().encode(expectAddress(accounts.authority.value)),\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(accounts.master),\n getAccountMeta(accounts.config),\n getAccountMeta(accounts.treasury),\n getAccountMeta(accounts.airdropMaster),\n getAccountMeta(accounts.airdropMasterAuthority),\n getAccountMeta(accounts.affiliate),\n getAccountMeta(accounts.airdrop),\n getAccountMeta(accounts.mint),\n getAccountMeta(accounts.authority),\n getAccountMeta(accounts.systemProgram),\n ],\n data: getCreateAirdropInstructionDataEncoder().encode(\n args as CreateAirdropInstructionDataArgs,\n ),\n programAddress,\n } as CreateAirdropInstruction<\n TProgramAddress,\n TAccountMaster,\n TAccountConfig,\n TAccountTreasury,\n TAccountAirdropMaster,\n TAccountAirdropMasterAuthority,\n TAccountAffiliate,\n TAccountAirdrop,\n TAccountMint,\n TAccountAuthority,\n TAccountSystemProgram\n >);\n}\n\nexport type CreateAirdropInput<\n TAccountMaster extends string = string,\n TAccountConfig extends string = string,\n TAccountTreasury extends string = string,\n TAccountAirdropMaster extends string = string,\n TAccountAirdropMasterAuthority extends string = string,\n TAccountAffiliate extends string = string,\n TAccountAirdrop extends string = string,\n TAccountMint extends string = string,\n TAccountAuthority extends string = string,\n TAccountSystemProgram extends string = string,\n> = {\n master: Address<TAccountMaster>;\n config: Address<TAccountConfig>;\n treasury: Address<TAccountTreasury>;\n airdropMaster: Address<TAccountAirdropMaster>;\n /** Check with authority */\n airdropMasterAuthority: Address<TAccountAirdropMasterAuthority>;\n affiliate?: Address<TAccountAffiliate>;\n airdrop: Address<TAccountAirdrop>;\n mint: Address<TAccountMint>;\n authority: TransactionSigner<TAccountAuthority>;\n systemProgram?: Address<TAccountSystemProgram>;\n merkleRoot: CreateAirdropInstructionDataArgs[\"merkleRoot\"];\n startsAt: CreateAirdropInstructionDataArgs[\"startsAt\"];\n endsAt: CreateAirdropInstructionDataArgs[\"endsAt\"];\n version: CreateAirdropInstructionDataArgs[\"version\"];\n mutable: CreateAirdropInstructionDataArgs[\"mutable\"];\n delegateAuthority: CreateAirdropInstructionDataArgs[\"delegateAuthority\"];\n delegatePermissions: CreateAirdropInstructionDataArgs[\"delegatePermissions\"];\n};\n\nexport function getCreateAirdropInstruction<\n TAccountMaster extends string,\n TAccountConfig extends string,\n TAccountTreasury extends string,\n TAccountAirdropMaster extends string,\n TAccountAirdropMasterAuthority extends string,\n TAccountAffiliate extends string,\n TAccountAirdrop extends string,\n TAccountMint extends string,\n TAccountAuthority extends string,\n TAccountSystemProgram extends string,\n TProgramAddress extends Address = typeof DROPSY_PROGRAM_ADDRESS,\n>(\n input: CreateAirdropInput<\n TAccountMaster,\n TAccountConfig,\n TAccountTreasury,\n TAccountAirdropMaster,\n TAccountAirdropMasterAuthority,\n TAccountAffiliate,\n TAccountAirdrop,\n TAccountMint,\n TAccountAuthority,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress },\n): CreateAirdropInstruction<\n TProgramAddress,\n TAccountMaster,\n TAccountConfig,\n TAccountTreasury,\n TAccountAirdropMaster,\n TAccountAirdropMasterAuthority,\n TAccountAffiliate,\n TAccountAirdrop,\n TAccountMint,\n TAccountAuthority,\n TAccountSystemProgram\n> {\n // Program address.\n const programAddress = config?.programAddress ?? DROPSY_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n master: { value: input.master ?? null, isWritable: false },\n config: { value: input.config ?? null, isWritable: false },\n treasury: { value: input.treasury ?? null, isWritable: true },\n airdropMaster: { value: input.airdropMaster ?? null, isWritable: false },\n airdropMasterAuthority: {\n value: input.airdropMasterAuthority ?? null,\n isWritable: false,\n },\n affiliate: { value: input.affiliate ?? null, isWritable: true },\n airdrop: { value: input.airdrop ?? null, isWritable: true },\n mint: { value: input.mint ?? null, isWritable: false },\n authority: { value: input.authority ?? null, isWritable: true },\n systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\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(accounts.master),\n getAccountMeta(accounts.config),\n getAccountMeta(accounts.treasury),\n getAccountMeta(accounts.airdropMaster),\n getAccountMeta(accounts.airdropMasterAuthority),\n getAccountMeta(accounts.affiliate),\n getAccountMeta(accounts.airdrop),\n getAccountMeta(accounts.mint),\n getAccountMeta(accounts.authority),\n getAccountMeta(accounts.systemProgram),\n ],\n data: getCreateAirdropInstructionDataEncoder().encode(\n args as CreateAirdropInstructionDataArgs,\n ),\n programAddress,\n } as CreateAirdropInstruction<\n TProgramAddress,\n TAccountMaster,\n TAccountConfig,\n TAccountTreasury,\n TAccountAirdropMaster,\n TAccountAirdropMasterAuthority,\n TAccountAffiliate,\n TAccountAirdrop,\n TAccountMint,\n TAccountAuthority,\n TAccountSystemProgram\n >);\n}\n\nexport type ParsedCreateAirdropInstruction<\n TProgram extends string = typeof DROPSY_PROGRAM_ADDRESS,\n TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n programAddress: Address<TProgram>;\n accounts: {\n master: TAccountMetas[0];\n config: TAccountMetas[1];\n treasury: TAccountMetas[2];\n airdropMaster: TAccountMetas[3];\n /** Check with authority */\n airdropMasterAuthority: TAccountMetas[4];\n affiliate?: TAccountMetas[5] | undefined;\n airdrop: TAccountMetas[6];\n mint: TAccountMetas[7];\n authority: TAccountMetas[8];\n systemProgram: TAccountMetas[9];\n };\n data: CreateAirdropInstructionData;\n};\n\nexport function parseCreateAirdropInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>,\n): ParsedCreateAirdropInstruction<TProgram, TAccountMetas> {\n if (instruction.accounts.length < 10) {\n // TODO: Coded error.\n throw new Error(\"Not enough accounts\");\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 === DROPSY_PROGRAM_ADDRESS\n ? undefined\n : accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n master: getNextAccount(),\n config: getNextAccount(),\n treasury: getNextAccount(),\n airdropMaster: getNextAccount(),\n airdropMasterAuthority: getNextAccount(),\n affiliate: getNextOptionalAccount(),\n airdrop: getNextAccount(),\n mint: getNextAccount(),\n authority: getNextAccount(),\n systemProgram: getNextAccount(),\n },\n data: getCreateAirdropInstructionDataDecoder().decode(instruction.data),\n };\n}\n\nexport type CreateAirdropV0Input = {\n airdropMasterAuthority: Address;\n treasury: Address;\n airdrop: Address;\n mint: Address;\n authority: TransactionSigner<string>;\n merkleRoot?: ReadonlyUint8Array | null;\n startsAt?: number | null;\n endsAt?: number | null;\n};\n\nexport async function getCreateAirdropV0Instruction(\n input: CreateAirdropV0Input\n) {\n return await getCreateAirdropInstructionAsync({\n airdropMasterAuthority: input.airdropMasterAuthority,\n treasury: input.treasury,\n airdrop: input.airdrop,\n mint: input.mint,\n authority: input.authority,\n\n merkleRoot: input.merkleRoot ?? null,\n startsAt: input.startsAt ?? null,\n endsAt: input.endsAt ?? null,\n\n version: 0,\n mutable: null,\n delegateAuthority: null,\n delegatePermissions: null,\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 getU16Decoder,\n getU16Encoder,\n getU32Decoder,\n getU32Encoder,\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 { DROPSY_PROGRAM_ADDRESS } from \"../programs\";\nimport {\n expectAddress,\n expectSome,\n getAccountMetaFactory,\n type ResolvedAccount,\n} from \"../shared\";\n\nexport const CREATE_CLAIM_MAP_DISCRIMINATOR = new Uint8Array([\n 22, 150, 81, 49, 214, 142, 189, 122,\n]);\n\nexport function getCreateClaimMapDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n CREATE_CLAIM_MAP_DISCRIMINATOR,\n );\n}\n\nexport type CreateClaimMapInstruction<\n TProgram extends string = typeof DROPSY_PROGRAM_ADDRESS,\n TAccountMaster extends string | AccountMeta<string> = string,\n TAccountConfig extends string | AccountMeta<string> = string,\n TAccountTreasury extends string | AccountMeta<string> = string,\n TAccountAirdropMaster extends string | AccountMeta<string> = string,\n TAccountAirdropMasterAuthority extends string | AccountMeta<string> = string,\n TAccountAffiliate extends string | AccountMeta<string> = string,\n TAccountAirdrop extends string | AccountMeta<string> = string,\n TAccountMint extends string | AccountMeta<string> = string,\n TAccountBitmap extends string | AccountMeta<string> = string,\n TAccountAuthority 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 TAccountMaster extends string\n ? ReadonlyAccount<TAccountMaster>\n : TAccountMaster,\n TAccountConfig extends string\n ? ReadonlyAccount<TAccountConfig>\n : TAccountConfig,\n TAccountTreasury extends string\n ? WritableAccount<TAccountTreasury>\n : TAccountTreasury,\n TAccountAirdropMaster extends string\n ? ReadonlyAccount<TAccountAirdropMaster>\n : TAccountAirdropMaster,\n TAccountAirdropMasterAuthority extends string\n ? ReadonlyAccount<TAccountAirdropMasterAuthority>\n : TAccountAirdropMasterAuthority,\n TAccountAffiliate extends string\n ? WritableAccount<TAccountAffiliate>\n : TAccountAffiliate,\n TAccountAirdrop extends string\n ? WritableAccount<TAccountAirdrop>\n : TAccountAirdrop,\n TAccountMint extends string\n ? ReadonlyAccount<TAccountMint>\n : TAccountMint,\n TAccountBitmap extends string\n ? WritableAccount<TAccountBitmap>\n : TAccountBitmap,\n TAccountAuthority extends string\n ? WritableSignerAccount<TAccountAuthority> &\n AccountSignerMeta<TAccountAuthority>\n : TAccountAuthority,\n TAccountSystemProgram extends string\n ? ReadonlyAccount<TAccountSystemProgram>\n : TAccountSystemProgram,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type CreateClaimMapInstructionData = {\n discriminator: ReadonlyUint8Array;\n id: number;\n total: number;\n};\n\nexport type CreateClaimMapInstructionDataArgs = { id: number; total: number };\n\nexport function getCreateClaimMapInstructionDataEncoder(): FixedSizeEncoder<CreateClaimMapInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([\n [\"discriminator\", fixEncoderSize(getBytesEncoder(), 8)],\n [\"id\", getU16Encoder()],\n [\"total\", getU32Encoder()],\n ]),\n (value) => ({ ...value, discriminator: CREATE_CLAIM_MAP_DISCRIMINATOR }),\n );\n}\n\nexport function getCreateClaimMapInstructionDataDecoder(): FixedSizeDecoder<CreateClaimMapInstructionData> {\n return getStructDecoder([\n [\"discriminator\", fixDecoderSize(getBytesDecoder(), 8)],\n [\"id\", getU16Decoder()],\n [\"total\", getU32Decoder()],\n ]);\n}\n\nexport function getCreateClaimMapInstructionDataCodec(): FixedSizeCodec<\n CreateClaimMapInstructionDataArgs,\n CreateClaimMapInstructionData\n> {\n return combineCodec(\n getCreateClaimMapInstructionDataEncoder(),\n getCreateClaimMapInstructionDataDecoder(),\n );\n}\n\nexport type CreateClaimMapAsyncInput<\n TAccountMaster extends string = string,\n TAccountConfig extends string = string,\n TAccountTreasury extends string = string,\n TAccountAirdropMaster extends string = string,\n TAccountAirdropMasterAuthority extends string = string,\n TAccountAffiliate extends string = string,\n TAccountAirdrop extends string = string,\n TAccountMint extends string = string,\n TAccountBitmap extends string = string,\n TAccountAuthority extends string = string,\n TAccountSystemProgram extends string = string,\n> = {\n master?: Address<TAccountMaster>;\n config?: Address<TAccountConfig>;\n treasury: Address<TAccountTreasury>;\n airdropMaster?: Address<TAccountAirdropMaster>;\n /** Check with authority */\n airdropMasterAuthority: Address<TAccountAirdropMasterAuthority>;\n affiliate?: Address<TAccountAffiliate>;\n airdrop?: Address<TAccountAirdrop>;\n mint: Address<TAccountMint>;\n bitmap?: Address<TAccountBitmap>;\n authority: TransactionSigner<TAccountAuthority>;\n systemProgram?: Address<TAccountSystemProgram>;\n id: CreateClaimMapInstructionDataArgs[\"id\"];\n total: CreateClaimMapInstructionDataArgs[\"total\"];\n};\n\nexport async function getCreateClaimMapInstructionAsync<\n TAccountMaster extends string,\n TAccountConfig extends string,\n TAccountTreasury extends string,\n TAccountAirdropMaster extends string,\n TAccountAirdropMasterAuthority extends string,\n TAccountAffiliate extends string,\n TAccountAirdrop extends string,\n TAccountMint extends string,\n TAccountBitmap extends string,\n TAccountAuthority extends string,\n TAccountSystemProgram extends string,\n TProgramAddress extends Address = typeof DROPSY_PROGRAM_ADDRESS,\n>(\n input: CreateClaimMapAsyncInput<\n TAccountMaster,\n TAccountConfig,\n TAccountTreasury,\n TAccountAirdropMaster,\n TAccountAirdropMasterAuthority,\n TAccountAffiliate,\n TAccountAirdrop,\n TAccountMint,\n TAccountBitmap,\n TAccountAuthority,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress },\n): Promise<\n CreateClaimMapInstruction<\n TProgramAddress,\n TAccountMaster,\n TAccountConfig,\n TAccountTreasury,\n TAccountAirdropMaster,\n TAccountAirdropMasterAuthority,\n TAccountAffiliate,\n TAccountAirdrop,\n TAccountMint,\n TAccountBitmap,\n TAccountAuthority,\n TAccountSystemProgram\n >\n> {\n // Program address.\n const programAddress = config?.programAddress ?? DROPSY_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n master: { value: input.master ?? null, isWritable: false },\n config: { value: input.config ?? null, isWritable: false },\n treasury: { value: input.treasury ?? null, isWritable: true },\n airdropMaster: { value: input.airdropMaster ?? null, isWritable: true },\n airdropMasterAuthority: {\n value: input.airdropMasterAuthority ?? null,\n isWritable: false,\n },\n affiliate: { value: input.affiliate ?? null, isWritable: true },\n airdrop: { value: input.airdrop ?? null, isWritable: true },\n mint: { value: input.mint ?? null, isWritable: false },\n bitmap: { value: input.bitmap ?? null, isWritable: true },\n authority: { value: input.authority ?? null, isWritable: true },\n systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Resolve default values.\n if (!accounts.master.value) {\n accounts.master.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(new Uint8Array([109, 97, 115, 116, 101, 114])),\n ],\n });\n }\n if (!accounts.config.value) {\n accounts.config.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(\n new Uint8Array([\n 97, 105, 114, 100, 114, 111, 112, 95, 99, 111, 110, 102, 105, 103,\n ]),\n ),\n ],\n });\n }\n if (!accounts.airdropMaster.value) {\n accounts.airdropMaster.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(\n new Uint8Array([\n 97, 105, 114, 100, 114, 111, 112, 95, 109, 97, 115, 116, 101, 114,\n ]),\n ),\n getAddressEncoder().encode(\n expectAddress(accounts.airdropMasterAuthority.value),\n ),\n ],\n });\n }\n if (!accounts.airdrop.value) {\n accounts.airdrop.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(\n new Uint8Array([97, 105, 114, 100, 114, 111, 112]),\n ),\n getAddressEncoder().encode(expectAddress(accounts.mint.value)),\n getAddressEncoder().encode(expectAddress(accounts.authority.value)),\n ],\n });\n }\n if (!accounts.bitmap.value) {\n accounts.bitmap.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(new Uint8Array([98, 105, 116, 109, 97, 112])),\n getAddressEncoder().encode(expectAddress(accounts.airdrop.value)),\n getU16Encoder().encode(expectSome(args.id)),\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(accounts.master),\n getAccountMeta(accounts.config),\n getAccountMeta(accounts.treasury),\n getAccountMeta(accounts.airdropMaster),\n getAccountMeta(accounts.airdropMasterAuthority),\n getAccountMeta(accounts.affiliate),\n getAccountMeta(accounts.airdrop),\n getAccountMeta(accounts.mint),\n getAccountMeta(accounts.bitmap),\n getAccountMeta(accounts.authority),\n getAccountMeta(accounts.systemProgram),\n ],\n data: getCreateClaimMapInstructionDataEncoder().encode(\n args as CreateClaimMapInstructionDataArgs,\n ),\n programAddress,\n } as CreateClaimMapInstruction<\n TProgramAddress,\n TAccountMaster,\n TAccountConfig,\n TAccountTreasury,\n TAccountAirdropMaster,\n TAccountAirdropMasterAuthority,\n TAccountAffiliate,\n TAccountAirdrop,\n TAccountMint,\n TAccountBitmap,\n TAccountAuthority,\n TAccountSystemProgram\n >);\n}\n\nexport type CreateClaimMapInput<\n TAccountMaster extends string = string,\n TAccountConfig extends string = string,\n TAccountTreasury extends string = string,\n TAccountAirdropMaster extends string = string,\n TAccountAirdropMasterAuthority extends string = string,\n TAccountAffiliate extends string = string,\n TAccountAirdrop extends string = string,\n TAccountMint extends string = string,\n TAccountBitmap extends string = string,\n TAccountAuthority extends string = string,\n TAccountSystemProgram extends string = string,\n> = {\n master: Address<TAccountMaster>;\n config: Address<TAccountConfig>;\n treasury: Address<TAccountTreasury>;\n airdropMaster: Address<TAccountAirdropMaster>;\n /** Check with authority */\n airdropMasterAuthority: Address<TAccountAirdropMasterAuthority>;\n affiliate?: Address<TAccountAffiliate>;\n airdrop: Address<TAccountAirdrop>;\n mint: Address<TAccountMint>;\n bitmap: Address<TAccountBitmap>;\n authority: TransactionSigner<TAccountAuthority>;\n systemProgram?: Address<TAccountSystemProgram>;\n id: CreateClaimMapInstructionDataArgs[\"id\"];\n total: CreateClaimMapInstructionDataArgs[\"total\"];\n};\n\nexport function getCreateClaimMapInstruction<\n TAccountMaster extends string,\n TAccountConfig extends string,\n TAccountTreasury extends string,\n TAccountAirdropMaster extends string,\n TAccountAirdropMasterAuthority extends string,\n TAccountAffiliate extends string,\n TAccountAirdrop extends string,\n TAccountMint extends string,\n TAccountBitmap extends string,\n TAccountAuthority extends string,\n TAccountSystemProgram extends string,\n TProgramAddress extends Address = typeof DROPSY_PROGRAM_ADDRESS,\n>(\n input: CreateClaimMapInput<\n TAccountMaster,\n TAccountConfig,\n TAccountTreasury,\n TAccountAirdropMaster,\n TAccountAirdropMasterAuthority,\n TAccountAffiliate,\n TAccountAirdrop,\n TAccountMint,\n TAccountBitmap,\n TAccountAuthority,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress },\n): CreateClaimMapInstruction<\n TProgramAddress,\n TAccountMaster,\n TAccountConfig,\n TAccountTreasury,\n TAccountAirdropMaster,\n TAccountAirdropMasterAuthority,\n TAccountAffiliate,\n TAccountAirdrop,\n TAccountMint,\n TAccountBitmap,\n TAccountAuthority,\n TAccountSystemProgram\n> {\n // Program address.\n const programAddress = config?.programAddress ?? DROPSY_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n master: { value: input.master ?? null, isWritable: false },\n config: { value: input.config ?? null, isWritable: false },\n treasury: { value: input.treasury ?? null, isWritable: true },\n airdropMaster: { value: input.airdropMaster ?? null, isWritable: true },\n airdropMasterAuthority: {\n value: input.airdropMasterAuthority ?? null,\n isWritable: false,\n },\n affiliate: { value: input.affiliate ?? null, isWritable: true },\n airdrop: { value: input.airdrop ?? null, isWritable: true },\n mint: { value: input.mint ?? null, isWritable: false },\n bitmap: { value: input.bitmap ?? null, isWritable: true },\n authority: { value: input.authority ?? null, isWritable: true },\n systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\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(accounts.master),\n getAccountMeta(accounts.config),\n getAccountMeta(accounts.treasury),\n getAccountMeta(accounts.airdropMaster),\n getAccountMeta(accounts.airdropMasterAuthority),\n getAccountMeta(accounts.affiliate),\n getAccountMeta(accounts.airdrop),\n getAccountMeta(accounts.mint),\n getAccountMeta(accounts.bitmap),\n getAccountMeta(accounts.authority),\n getAccountMeta(accounts.systemProgram),\n ],\n data: getCreateClaimMapInstructionDataEncoder().encode(\n args as CreateClaimMapInstructionDataArgs,\n ),\n programAddress,\n } as CreateClaimMapInstruction<\n TProgramAddress,\n TAccountMaster,\n TAccountConfig,\n TAccountTreasury,\n TAccountAirdropMaster,\n TAccountAirdropMasterAuthority,\n TAccountAffiliate,\n TAccountAirdrop,\n TAccountMint,\n TAccountBitmap,\n TAccountAuthority,\n TAccountSystemProgram\n >);\n}\n\nexport type ParsedCreateClaimMapInstruction<\n TProgram extends string = typeof DROPSY_PROGRAM_ADDRESS,\n TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n programAddress: Address<TProgram>;\n accounts: {\n master: TAccountMetas[0];\n config: TAccountMetas[1];\n treasury: TAccountMetas[2];\n airdropMaster: TAccountMetas[3];\n /** Check with authority */\n airdropMasterAuthority: TAccountMetas[4];\n affiliate?: TAccountMetas[5] | undefined;\n airdrop: TAccountMetas[6];\n mint: TAccountMetas[7];\n bitmap: TAccountMetas[8];\n authority: TAccountMetas[9];\n systemProgram: TAccountMetas[10];\n };\n data: CreateClaimMapInstructionData;\n};\n\nexport function parseCreateClaimMapInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>,\n): ParsedCreateClaimMapInstruction<TProgram, TAccountMetas> {\n if (instruction.accounts.length < 11) {\n // TODO: Coded error.\n throw new Error(\"Not enough accounts\");\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 === DROPSY_PROGRAM_ADDRESS\n ? undefined\n : accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n master: getNextAccount(),\n config: getNextAccount(),\n treasury: getNextAccount(),\n airdropMaster: getNextAccount(),\n airdropMasterAuthority: getNextAccount(),\n affiliate: getNextOptionalAccount(),\n airdrop: getNextAccount(),\n mint: getNextAccount(),\n bitmap: getNextAccount(),\n authority: getNextAccount(),\n systemProgram: getNextAccount(),\n },\n data: getCreateClaimMapInstructionDataDecoder().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 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 { DROPSY_PROGRAM_ADDRESS } from \"../programs\";\nimport {\n expectAddress,\n getAccountMetaFactory,\n type ResolvedAccount,\n} from \"../shared\";\n\nexport const DEPOSIT_TOKENS_DISCRIMINATOR = new Uint8Array([\n 176, 83, 229, 18, 191, 143, 176, 150,\n]);\n\nexport function getDepositTokensDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n DEPOSIT_TOKENS_DISCRIMINATOR,\n );\n}\n\nexport type DepositTokensInstruction<\n TProgram extends string = typeof DROPSY_PROGRAM_ADDRESS,\n TAccountMaster extends string | AccountMeta<string> = string,\n TAccountConfig extends string | AccountMeta<string> = string,\n TAccountTreasury extends string | AccountMeta<string> = string,\n TAccountAirdropMaster extends string | AccountMeta<string> = string,\n TAccountAirdropMasterAuthority extends string | AccountMeta<string> = string,\n TAccountAffiliate extends string | AccountMeta<string> = string,\n TAccountSourceTokenAccount extends string | AccountMeta<string> = string,\n TAccountDestinationTokenAccount extends string | AccountMeta<string> = string,\n TAccountAirdrop extends string | AccountMeta<string> = string,\n TAccountMint extends string | AccountMeta<string> = string,\n TAccountAuthority extends string | AccountMeta<string> = string,\n TAccountTokenProgram extends string | AccountMeta<string> =\n \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\",\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 TAccountMaster extends string\n ? ReadonlyAccount<TAccountMaster>\n : TAccountMaster,\n TAccountConfig extends string\n ? ReadonlyAccount<TAccountConfig>\n : TAccountConfig,\n TAccountTreasury extends string\n ? WritableAccount<TAccountTreasury>\n : TAccountTreasury,\n TAccountAirdropMaster extends string\n ? ReadonlyAccount<TAccountAirdropMaster>\n : TAccountAirdropMaster,\n TAccountAirdropMasterAuthority extends string\n ? ReadonlyAccount<TAccountAirdropMasterAuthority>\n : TAccountAirdropMasterAuthority,\n TAccountAffiliate extends string\n ? WritableAccount<TAccountAffiliate>\n : TAccountAffiliate,\n TAccountSourceTokenAccount extends string\n ? WritableAccount<TAccountSourceTokenAccount>\n : TAccountSourceTokenAccount,\n TAccountDestinationTokenAccount extends string\n ? WritableAccount<TAccountDestinationTokenAccount>\n : TAccountDestinationTokenAccount,\n TAccountAirdrop extends string\n ? WritableAccount<TAccountAirdrop>\n : TAccountAirdrop,\n TAccountMint extends string\n ? ReadonlyAccount<TAccountMint>\n : TAccountMint,\n TAccountAuthority extends string\n ? WritableSignerAccount<TAccountAuthority> &\n AccountSignerMeta<TAccountAuthority>\n : TAccountAuthority,\n TAccountTokenProgram extends string\n ? ReadonlyAccount<TAccountTokenProgram>\n : TAccountTokenProgram,\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 DepositTokensInstructionData = {\n discriminator: ReadonlyUint8Array;\n amount: bigint;\n};\n\nexport type DepositTokensInstructionDataArgs = { amount: number | bigint };\n\nexport function getDepositTokensInstructionDataEncoder(): FixedSizeEncoder<DepositTokensInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([\n [\"discriminator\", fixEncoderSize(getBytesEncoder(), 8)],\n [\"amount\", getU64Encoder()],\n ]),\n (value) => ({ ...value, discriminator: DEPOSIT_TOKENS_DISCRIMINATOR }),\n );\n}\n\nexport function getDepositTokensInstructionDataDecoder(): FixedSizeDecoder<DepositTokensInstructionData> {\n return getStructDecoder([\n [\"discriminator\", fixDecoderSize(getBytesDecoder(), 8)],\n [\"amount\", getU64Decoder()],\n ]);\n}\n\nexport function getDepositTokensInstructionDataCodec(): FixedSizeCodec<\n DepositTokensInstructionDataArgs,\n DepositTokensInstructionData\n> {\n return combineCodec(\n getDepositTokensInstructionDataEncoder(),\n getDepositTokensInstructionDataDecoder(),\n );\n}\n\nexport type DepositTokensAsyncInput<\n TAccountMaster extends string = string,\n TAccountConfig extends string = string,\n TAccountTreasury extends string = string,\n TAccountAirdropMaster extends string = string,\n TAccountAirdropMasterAuthority extends string = string,\n TAccountAffiliate extends string = string,\n TAccountSourceTokenAccount extends string = string,\n TAccountDestinationTokenAccount extends string = string,\n TAccountAirdrop extends string = string,\n TAccountMint extends string = string,\n TAccountAuthority extends string = string,\n TAccountTokenProgram extends string = string,\n TAccountAssociatedTokenProgram extends string = string,\n TAccountSystemProgram extends string = string,\n> = {\n master?: Address<TAccountMaster>;\n config?: Address<TAccountConfig>;\n treasury: Address<TAccountTreasury>;\n airdropMaster?: Address<TAccountAirdropMaster>;\n /** Check with authority */\n airdropMasterAuthority: Address<TAccountAirdropMasterAuthority>;\n affiliate?: Address<TAccountAffiliate>;\n sourceTokenAccount: Address<TAccountSourceTokenAccount>;\n destinationTokenAccount?: Address<TAccountDestinationTokenAccount>;\n airdrop?: Address<TAccountAirdrop>;\n mint: Address<TAccountMint>;\n authority: TransactionSigner<TAccountAuthority>;\n tokenProgram?: Address<TAccountTokenProgram>;\n associatedTokenProgram?: Address<TAccountAssociatedTokenProgram>;\n systemProgram?: Address<TAccountSystemProgram>;\n amount: DepositTokensInstructionDataArgs[\"amount\"];\n};\n\nexport async function getDepositTokensInstructionAsync<\n TAccountMaster extends string,\n TAccountConfig extends string,\n TAccountTreasury extends string,\n TAccountAirdropMaster extends string,\n TAccountAirdropMasterAuthority extends string,\n TAccountAffiliate extends string,\n TAccountSourceTokenAccount extends string,\n TAccountDestinationTokenAccount extends string,\n TAccountAirdrop extends string,\n TAccountMint extends string,\n TAccountAuthority extends string,\n TAccountTokenProgram extends string,\n TAccountAssociatedTokenProgram extends string,\n TAccountSystemProgram extends string,\n TProgramAddress extends Address = typeof DROPSY_PROGRAM_ADDRESS,\n>(\n input: DepositTokensAsyncInput<\n TAccountMaster,\n TAccountConfig,\n TAccountTreasury,\n TAccountAirdropMaster,\n TAccountAirdropMasterAuthority,\n TAccountAffiliate,\n TAccountSourceTokenAccount,\n TAccountDestinationTokenAccount,\n TAccountAirdrop,\n TAccountMint,\n TAccountAuthority,\n TAccountTokenProgram,\n TAccountAssociatedTokenProgram,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress },\n): Promise<\n DepositTokensInstruction<\n TProgramAddress,\n TAccountMaster,\n TAccountConfig,\n TAccountTreasury,\n TAccountAirdropMaster,\n TAccountAirdropMasterAuthority,\n TAccountAffiliate,\n TAccountSourceTokenAccount,\n TAccountDestinationTokenAccount,\n TAccountAirdrop,\n TAccountMint,\n TAccountAuthority,\n TAccountTokenProgram,\n TAccountAssociatedTokenProgram,\n TAccountSystemProgram\n >\n> {\n // Program address.\n const programAddress = config?.programAddress ?? DROPSY_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n master: { value: input.master ?? null, isWritable: false },\n config: { value: input.config ?? null, isWritable: false },\n treasury: { value: input.treasury ?? null, isWritable: true },\n airdropMaster: { value: input.airdropMaster ?? null, isWritable: false },\n airdropMasterAuthority: {\n value: input.airdropMasterAuthority ?? null,\n isWritable: false,\n },\n affiliate: { value: input.affiliate ?? null, isWritable: true },\n sourceTokenAccount: {\n value: input.sourceTokenAccount ?? null,\n isWritable: true,\n },\n destinationTokenAccount: {\n value: input.destinationTokenAccount ?? null,\n isWritable: true,\n },\n airdrop: { value: input.airdrop ?? null, isWritable: true },\n mint: { value: input.mint ?? null, isWritable: false },\n authority: { value: input.authority ?? null, isWritable: true },\n tokenProgram: { value: input.tokenProgram ?? null, isWritable: false },\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 ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Resolve default values.\n if (!accounts.master.value) {\n accounts.master.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(new Uint8Array([109, 97, 115, 116, 101, 114])),\n ],\n });\n }\n if (!accounts.config.value) {\n accounts.config.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(\n new Uint8Array([\n 97, 105, 114, 100, 114, 111, 112, 95, 99, 111, 110, 102, 105, 103,\n ]),\n ),\n ],\n });\n }\n if (!accounts.airdropMaster.value) {\n accounts.airdropMaster.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(\n new Uint8Array([\n 97, 105, 114, 100, 114, 111, 112, 95, 109, 97, 115, 116, 101, 114,\n ]),\n ),\n getAddressEncoder().encode(\n expectAddress(accounts.airdropMasterAuthority.value),\n ),\n ],\n });\n }\n if (!accounts.airdrop.value) {\n accounts.airdrop.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(\n new Uint8Array([97, 105, 114, 100, 114, 111, 112]),\n ),\n getAddressEncoder().encode(expectAddress(accounts.mint.value)),\n getAddressEncoder().encode(expectAddress(accounts.authority.value)),\n ],\n });\n }\n if (!accounts.tokenProgram.value) {\n accounts.tokenProgram.value =\n \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\" as Address<\"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\">;\n }\n if (!accounts.destinationTokenAccount.value) {\n accounts.destinationTokenAccount.value = await getProgramDerivedAddress({\n programAddress:\n \"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\" as Address<\"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\">,\n seeds: [\n getAddressEncoder().encode(expectAddress(accounts.airdrop.value)),\n getAddressEncoder().encode(expectAddress(accounts.tokenProgram.value)),\n getAddressEncoder().encode(expectAddress(accounts.mint.value)),\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(accounts.master),\n getAccountMeta(accounts.config),\n getAccountMeta(accounts.treasury),\n getAccountMeta(accounts.airdropMaster),\n getAccountMeta(accounts.airdropMasterAuthority),\n getAccountMeta(accounts.affiliate),\n getAccountMeta(accounts.sourceTokenAccount),\n getAccountMeta(accounts.destinationTokenAccount),\n getAccountMeta(accounts.airdrop),\n getAccountMeta(accounts.mint),\n getAccountMeta(accounts.authority),\n getAccountMeta(accounts.tokenProgram),\n getAccountMeta(accounts.associatedTokenProgram),\n getAccountMeta(accounts.systemProgram),\n ],\n data: getDepositTokensInstructionDataEncoder().encode(\n args as DepositTokensInstructionDataArgs,\n ),\n programAddress,\n } as DepositTokensInstruction<\n TProgramAddress,\n TAccountMaster,\n TAccountConfig,\n TAccountTreasury,\n TAccountAirdropMaster,\n TAccountAirdropMasterAuthority,\n TAccountAffiliate,\n TAccountSourceTokenAccount,\n TAccountDestinationTokenAccount,\n TAccountAirdrop,\n TAccountMint,\n TAccountAuthority,\n TAccountTokenProgram,\n TAccountAssociatedTokenProgram,\n TAccountSystemProgram\n >);\n}\n\nexport type DepositTokensInput<\n TAccountMaster extends string = string,\n TAccountConfig extends string = string,\n TAccountTreasury extends string = string,\n TAccountAirdropMaster extends string = string,\n TAccountAirdropMasterAuthority extends string = string,\n TAccountAffiliate extends string = string,\n TAccountSourceTokenAccount extends string = string,\n TAccountDestinationTokenAccount extends string = string,\n TAccountAirdrop extends string = string,\n TAccountMint extends string = string,\n TAccountAuthority extends string = string,\n TAccountTokenProgram extends string = string,\n TAccountAssociatedTokenProgram extends string = string,\n TAccountSystemProgram extends string = string,\n> = {\n master: Address<TAccountMaster>;\n config: Address<TAccountConfig>;\n treasury: Address<TAccountTreasury>;\n airdropMaster: Address<TAccountAirdropMaster>;\n /** Check with authority */\n airdropMasterAuthority: Address<TAccountAirdropMasterAuthority>;\n affiliate?: Address<TAccountAffiliate>;\n sourceTokenAccount: Address<TAccountSourceTokenAccount>;\n destinationTokenAccount: Address<TAccountDestinationTokenAccount>;\n airdrop: Address<TAccountAirdrop>;\n mint: Address<TAccountMint>;\n authority: TransactionSigner<TAccountAuthority>;\n tokenProgram?: Address<TAccountTokenProgram>;\n associatedTokenProgram?: Address<TAccountAssociatedTokenProgram>;\n systemProgram?: Address<TAccountSystemProgram>;\n amount: DepositTokensInstructionDataArgs[\"amount\"];\n};\n\nexport function getDepositTokensInstruction<\n TAccountMaster extends string,\n TAccountConfig extends string,\n TAccountTreasury extends string,\n TAccountAirdropMaster extends string,\n TAccountAirdropMasterAuthority extends string,\n TAccountAffiliate extends string,\n TAccountSourceTokenAccount extends string,\n TAccountDestinationTokenAccount extends string,\n TAccountAirdrop extends string,\n TAccountMint extends string,\n TAccountAuthority extends string,\n TAccountTokenProgram extends string,\n TAccountAssociatedTokenProgram extends string,\n TAccountSystemProgram extends string,\n TProgramAddress extends Address = typeof DROPSY_PROGRAM_ADDRESS,\n>(\n input: DepositTokensInput<\n TAccountMaster,\n TAccountConfig,\n TAccountTreasury,\n TAccountAirdropMaster,\n TAccountAirdropMasterAuthority,\n TAccountAffiliate,\n TAccountSourceTokenAccount,\n TAccountDestinationTokenAccount,\n TAccountAirdrop,\n TAccountMint,\n TAccountAuthority,\n TAccountTokenProgram,\n TAccountAssociatedTokenProgram,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress },\n): DepositTokensInstruction<\n TProgramAddress,\n TAccountMaster,\n TAccountConfig,\n TAccountTreasury,\n TAccountAirdropMaster,\n TAccountAirdropMasterAuthority,\n TAccountAffiliate,\n TAccountSourceTokenAccount,\n TAccountDestinationTokenAccount,\n TAccountAirdrop,\n TAccountMint,\n TAccountAuthority,\n TAccountTokenProgram,\n TAccountAssociatedTokenProgram,\n TAccountSystemProgram\n> {\n // Program address.\n const programAddress = config?.programAddress ?? DROPSY_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n master: { value: input.master ?? null, isWritable: false },\n config: { value: input.config ?? null, isWritable: false },\n treasury: { value: input.treasury ?? null, isWritable: true },\n airdropMaster: { value: input.airdropMaster ?? null, isWritable: false },\n airdropMasterAuthority: {\n value: input.airdropMasterAuthority ?? null,\n isWritable: false,\n },\n affiliate: { value: input.affiliate ?? null, isWritable: true },\n sourceTokenAccount: {\n value: input.sourceTokenAccount ?? null,\n isWritable: true,\n },\n destinationTokenAccount: {\n value: input.destinationTokenAccount ?? null,\n isWritable: true,\n },\n airdrop: { value: input.airdrop ?? null, isWritable: true },\n mint: { value: input.mint ?? null, isWritable: false },\n authority: { value: input.authority ?? null, isWritable: true },\n tokenProgram: { value: input.tokenProgram ?? null, isWritable: false },\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 ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Resolve default values.\n if (!accounts.tokenProgram.value) {\n accounts.tokenProgram.value =\n \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\" as Address<\"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\">;\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(accounts.master),\n getAccountMeta(accounts.config),\n getAccountMeta(accounts.treasury),\n getAccountMeta(accounts.airdropMaster),\n getAccountMeta(accounts.airdropMasterAuthority),\n getAccountMeta(accounts.affiliate),\n getAccountMeta(accounts.sourceTokenAccount),\n getAccountMeta(accounts.destinationTokenAccount),\n getAccountMeta(accounts.airdrop),\n getAccountMeta(accounts.mint),\n getAccountMeta(accounts.authority),\n getAccountMeta(accounts.tokenProgram),\n getAccountMeta(accounts.associatedTokenProgram),\n getAccountMeta(accounts.systemProgram),\n ],\n data: getDepositTokensInstructionDataEncoder().encode(\n args as DepositTokensInstructionDataArgs,\n ),\n programAddress,\n } as DepositTokensInstruction<\n TProgramAddress,\n TAccountMaster,\n TAccountConfig,\n TAccountTreasury,\n TAccountAirdropMaster,\n TAccountAirdropMasterAuthority,\n TAccountAffiliate,\n TAccountSourceTokenAccount,\n TAccountDestinationTokenAccount,\n TAccountAirdrop,\n TAccountMint,\n TAccountAuthority,\n TAccountTokenProgram,\n TAccountAssociatedTokenProgram,\n TAccountSystemProgram\n >);\n}\n\nexport type ParsedDepositTokensInstruction<\n TProgram extends string = typeof DROPSY_PROGRAM_ADDRESS,\n TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n programAddress: Address<TProgram>;\n accounts: {\n master: TAccountMetas[0];\n config: TAccountMetas[1];\n treasury: TAccountMetas[2];\n airdropMaster: TAccountMetas[3];\n /** Check with authority */\n airdropMasterAuthority: TAccountMetas[4];\n affiliate?: TAccountMetas[5] | undefined;\n sourceTokenAccount: TAccountMetas[6];\n destinationTokenAccount: TAccountMetas[7];\n airdrop: TAccountMetas[8];\n mint: TAccountMetas[9];\n authority: TAccountMetas[10];\n tokenProgram: TAccountMetas[11];\n associatedTokenProgram: TAccountMetas[12];\n systemProgram: TAccountMetas[13];\n };\n data: DepositTokensInstructionData;\n};\n\nexport function parseDepositTokensInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>,\n): ParsedDepositTokensInstruction<TProgram, TAccountMetas> {\n if (instruction.accounts.length < 14) {\n // TODO: Coded error.\n throw new Error(\"Not enough accounts\");\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 === DROPSY_PROGRAM_ADDRESS\n ? undefined\n : accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n master: getNextAccount(),\n config: getNextAccount(),\n treasury: getNextAccount(),\n airdropMaster: getNextAccount(),\n airdropMasterAuthority: getNextAccount(),\n affiliate: getNextOptionalAccount(),\n sourceTokenAccount: getNextAccount(),\n destinationTokenAccount: getNextAccount(),\n airdrop: getNextAccount(),\n mint: getNextAccount(),\n authority: getNextAccount(),\n tokenProgram: getNextAccount(),\n associatedTokenProgram: getNextAccount(),\n systemProgram: getNextAccount(),\n },\n data: getDepositTokensInstructionDataDecoder().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 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 { DROPSY_PROGRAM_ADDRESS } from \"../programs\";\nimport {\n expectAddress,\n getAccountMetaFactory,\n type ResolvedAccount,\n} from \"../shared\";\nimport {\n getAdvancedFeeConfigDecoder,\n getAdvancedFeeConfigEncoder,\n getBaseFeeConfigDecoder,\n getBaseFeeConfigEncoder,\n type AdvancedFeeConfig,\n type AdvancedFeeConfigArgs,\n type BaseFeeConfig,\n type BaseFeeConfigArgs,\n} from \"../types\";\n\nexport const INITIALIZE_AIRDROP_MASTER_DISCRIMINATOR = new Uint8Array([\n 163, 197, 170, 44, 57, 57, 90, 65,\n]);\n\nexport function getInitializeAirdropMasterDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n INITIALIZE_AIRDROP_MASTER_DISCRIMINATOR,\n );\n}\n\nexport type InitializeAirdropMasterInstruction<\n TProgram extends string = typeof DROPSY_PROGRAM_ADDRESS,\n TAccountMaster extends string | AccountMeta<string> = string,\n TAccountConfig extends string | AccountMeta<string> = string,\n TAccountTreasury extends string | AccountMeta<string> = string,\n TAccountAffiliateMaster extends string | AccountMeta<string> = string,\n TAccountAirdropMaster extends string | AccountMeta<string> = string,\n TAccountAuthority 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 TAccountMaster extends string\n ? ReadonlyAccount<TAccountMaster>\n : TAccountMaster,\n TAccountConfig extends string\n ? ReadonlyAccount<TAccountConfig>\n : TAccountConfig,\n TAccountTreasury extends string\n ? WritableAccount<TAccountTreasury>\n : TAccountTreasury,\n TAccountAffiliateMaster extends string\n ? ReadonlyAccount<TAccountAffiliateMaster>\n : TAccountAffiliateMaster,\n TAccountAirdropMaster extends string\n ? WritableAccount<TAccountAirdropMaster>\n : TAccountAirdropMaster,\n TAccountAuthority extends string\n ? WritableSignerAccount<TAccountAuthority> &\n AccountSignerMeta<TAccountAuthority>\n : TAccountAuthority,\n TAccountSystemProgram extends string\n ? ReadonlyAccount<TAccountSystemProgram>\n : TAccountSystemProgram,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type InitializeAirdropMasterInstructionData = {\n discriminator: ReadonlyUint8Array;\n merkleRoot: ReadonlyUint8Array;\n baseConfig: BaseFeeConfig;\n airdropConfig: AdvancedFeeConfig;\n bitmapConfig: BaseFeeConfig;\n};\n\nexport type InitializeAirdropMasterInstructionDataArgs = {\n merkleRoot: ReadonlyUint8Array;\n baseConfig: BaseFeeConfigArgs;\n airdropConfig: AdvancedFeeConfigArgs;\n bitmapConfig: BaseFeeConfigArgs;\n};\n\nexport function getInitializeAirdropMasterInstructionDataEncoder(): Encoder<InitializeAirdropMasterInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([\n [\"discriminator\", fixEncoderSize(getBytesEncoder(), 8)],\n [\"merkleRoot\", fixEncoderSize(getBytesEncoder(), 32)],\n [\"baseConfig\", getBaseFeeConfigEncoder()],\n [\"airdropConfig\", getAdvancedFeeConfigEncoder()],\n [\"bitmapConfig\", getBaseFeeConfigEncoder()],\n ]),\n (value) => ({\n ...value,\n discriminator: INITIALIZE_AIRDROP_MASTER_DISCRIMINATOR,\n }),\n );\n}\n\nexport function getInitializeAirdropMasterInstructionDataDecoder(): Decoder<InitializeAirdropMasterInstructionData> {\n return getStructDecoder([\n [\"discriminator\", fixDecoderSize(getBytesDecoder(), 8)],\n [\"merkleRoot\", fixDecoderSize(getBytesDecoder(), 32)],\n [\"baseConfig\", getBaseFeeConfigDecoder()],\n [\"airdropConfig\", getAdvancedFeeConfigDecoder()],\n [\"bitmapConfig\", getBaseFeeConfigDecoder()],\n ]);\n}\n\nexport function getInitializeAirdropMasterInstructionDataCodec(): Codec<\n InitializeAirdropMasterInstructionDataArgs,\n InitializeAirdropMasterInstructionData\n> {\n return combineCodec(\n getInitializeAirdropMasterInstructionDataEncoder(),\n getInitializeAirdropMasterInstructionDataDecoder(),\n );\n}\n\nexport type InitializeAirdropMasterAsyncInput<\n TAccountMaster extends string = string,\n TAccountConfig extends string = string,\n TAccountTreasury extends string = string,\n TAccountAffiliateMaster extends string = string,\n TAccountAirdropMaster extends string = string,\n TAccountAuthority extends string = string,\n TAccountSystemProgram extends string = string,\n> = {\n master?: Address<TAccountMaster>;\n config?: Address<TAccountConfig>;\n treasury: Address<TAccountTreasury>;\n affiliateMaster?: Address<TAccountAffiliateMaster>;\n airdropMaster?: Address<TAccountAirdropMaster>;\n authority: TransactionSigner<TAccountAuthority>;\n systemProgram?: Address<TAccountSystemProgram>;\n merkleRoot: InitializeAirdropMasterInstructionDataArgs[\"merkleRoot\"];\n baseConfig: InitializeAirdropMasterInstructionDataArgs[\"baseConfig\"];\n airdropConfig: InitializeAirdropMasterInstructionDataArgs[\"airdropConfig\"];\n bitmapConfig: InitializeAirdropMasterInstructionDataArgs[\"bitmapConfig\"];\n};\n\nexport async function getInitializeAirdropMasterInstructionAsync<\n TAccountMaster extends string,\n TAccountConfig extends string,\n TAccountTreasury extends string,\n TAccountAffiliateMaster extends string,\n TAccountAirdropMaster extends string,\n TAccountAuthority extends string,\n TAccountSystemProgram extends string,\n TProgramAddress extends Address = typeof DROPSY_PROGRAM_ADDRESS,\n>(\n input: InitializeAirdropMasterAsyncInput<\n TAccountMaster,\n TAccountConfig,\n TAccountTreasury,\n TAccountAffiliateMaster,\n TAccountAirdropMaster,\n TAccountAuthority,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress },\n): Promise<\n InitializeAirdropMasterInstruction<\n TProgramAddress,\n TAccountMaster,\n TAccountConfig,\n TAccountTreasury,\n TAccountAffiliateMaster,\n TAccountAirdropMaster,\n TAccountAuthority,\n TAccountSystemProgram\n >\n> {\n // Program address.\n const programAddress = config?.programAddress ?? DROPSY_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n master: { value: input.master ?? null, isWritable: false },\n config: { value: input.config ?? null, isWritable: false },\n treasury: { value: input.treasury ?? null, isWritable: true },\n affiliateMaster: {\n value: input.affiliateMaster ?? null,\n isWritable: false,\n },\n airdropMaster: { value: input.airdropMaster ?? null, isWritable: true },\n authority: { value: input.authority ?? null, isWritable: true },\n systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Resolve default values.\n if (!accounts.master.value) {\n accounts.master.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(new Uint8Array([109, 97, 115, 116, 101, 114])),\n ],\n });\n }\n if (!accounts.config.value) {\n accounts.config.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(\n new Uint8Array([\n 97, 105, 114, 100, 114, 111, 112, 95, 99, 111, 110, 102, 105, 103,\n ]),\n ),\n ],\n });\n }\n if (!accounts.airdropMaster.value) {\n accounts.airdropMaster.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(\n new Uint8Array([\n 97, 105, 114, 100, 114, 111, 112, 95, 109, 97, 115, 116, 101, 114,\n ]),\n ),\n getAddressEncoder().encode(expectAddress(accounts.authority.value)),\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(accounts.master),\n getAccountMeta(accounts.config),\n getAccountMeta(accounts.treasury),\n getAccountMeta(accounts.affiliateMaster),\n getAccountMeta(accounts.airdropMaster),\n getAccountMeta(accounts.authority),\n getAccountMeta(accounts.systemProgram),\n ],\n data: getInitializeAirdropMasterInstructionDataEncoder().encode(\n args as InitializeAirdropMasterInstructionDataArgs,\n ),\n programAddress,\n } as InitializeAirdropMasterInstruction<\n TProgramAddress,\n TAccountMaster,\n TAccountConfig,\n TAccountTreasury,\n TAccountAffiliateMaster,\n TAccountAirdropMaster,\n TAccountAuthority,\n TAccountSystemProgram\n >);\n}\n\nexport type InitializeAirdropMasterInput<\n TAccountMaster extends string = string,\n TAccountConfig extends string = string,\n TAccountTreasury extends string = string,\n TAccountAffiliateMaster extends string = string,\n TAccountAirdropMaster extends string = string,\n TAccountAuthority extends string = string,\n TAccountSystemProgram extends string = string,\n> = {\n master: Address<TAccountMaster>;\n config: Address<TAccountConfig>;\n treasury: Address<TAccountTreasury>;\n affiliateMaster?: Address<TAccountAffiliateMaster>;\n airdropMaster: Address<TAccountAirdropMaster>;\n authority: TransactionSigner<TAccountAuthority>;\n systemProgram?: Address<TAccountSystemProgram>;\n merkleRoot: InitializeAirdropMasterInstructionDataArgs[\"merkleRoot\"];\n baseConfig: InitializeAirdropMasterInstructionDataArgs[\"baseConfig\"];\n airdropConfig: InitializeAirdropMasterInstructionDataArgs[\"airdropConfig\"];\n bitmapConfig: InitializeAirdropMasterInstructionDataArgs[\"bitmapConfig\"];\n};\n\nexport function getInitializeAirdropMasterInstruction<\n TAccountMaster extends string,\n TAccountConfig extends string,\n TAccountTreasury extends string,\n TAccountAffiliateMaster extends string,\n TAccountAirdropMaster extends string,\n TAccountAuthority extends string,\n TAccountSystemProgram extends string,\n TProgramAddress extends Address = typeof DROPSY_PROGRAM_ADDRESS,\n>(\n input: InitializeAirdropMasterInput<\n TAccountMaster,\n TAccountConfig,\n TAccountTreasury,\n TAccountAffiliateMaster,\n TAccountAirdropMaster,\n TAccountAuthority,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress },\n): InitializeAirdropMasterInstruction<\n TProgramAddress,\n TAccountMaster,\n TAccountConfig,\n TAccountTreasury,\n TAccountAffiliateMaster,\n TAccountAirdropMaster,\n TAccountAuthority,\n TAccountSystemProgram\n> {\n // Program address.\n const programAddress = config?.programAddress ?? DROPSY_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n master: { value: input.master ?? null, isWritable: false },\n config: { value: input.config ?? null, isWritable: false },\n treasury: { value: input.treasury ?? null, isWritable: true },\n affiliateMaster: {\n value: input.affiliateMaster ?? null,\n isWritable: false,\n },\n airdropMaster: { value: input.airdropMaster ?? null, isWritable: true },\n authority: { value: input.authority ?? null, isWritable: true },\n systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\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(accounts.master),\n getAccountMeta(accounts.config),\n getAccountMeta(accounts.treasury),\n getAccountMeta(accounts.affiliateMaster),\n getAccountMeta(accounts.airdropMaster),\n getAccountMeta(accounts.authority),\n getAccountMeta(accounts.systemProgram),\n ],\n data: getInitializeAirdropMasterInstructionDataEncoder().encode(\n args as InitializeAirdropMasterInstructionDataArgs,\n ),\n programAddress,\n } as InitializeAirdropMasterInstruction<\n TProgramAddress,\n TAccountMaster,\n TAccountConfig,\n TAccountTreasury,\n TAccountAffiliateMaster,\n TAccountAirdropMaster,\n TAccountAuthority,\n TAccountSystemProgram\n >);\n}\n\nexport type ParsedInitializeAirdropMasterInstruction<\n TProgram extends string = typeof DROPSY_PROGRAM_ADDRESS,\n TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n programAddress: Address<TProgram>;\n accounts: {\n master: TAccountMetas[0];\n config: TAccountMetas[1];\n treasury: TAccountMetas[2];\n affiliateMaster?: TAccountMetas[3] | undefined;\n airdropMaster: TAccountMetas[4];\n authority: TAccountMetas[5];\n systemProgram: TAccountMetas[6];\n };\n data: InitializeAirdropMasterInstructionData;\n};\n\nexport function parseInitializeAirdropMasterInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>,\n): ParsedInitializeAirdropMasterInstruction<TProgram, TAccountMetas> {\n if (instruction.accounts.length < 7) {\n // TODO: Coded error.\n throw new Error(\"Not enough accounts\");\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 === DROPSY_PROGRAM_ADDRESS\n ? undefined\n : accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n master: getNextAccount(),\n config: getNextAccount(),\n treasury: getNextAccount(),\n affiliateMaster: getNextOptionalAccount(),\n airdropMaster: getNextAccount(),\n authority: getNextAccount(),\n systemProgram: getNextAccount(),\n },\n data: getInitializeAirdropMasterInstructionDataDecoder().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 getStructDecoder,\n getStructEncoder,\n getU64Decoder,\n getU64Encoder,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from \"@solana/kit\";\n\nexport type AdvancedFeeConfig = {\n claimFee: bigint;\n depositFee: bigint;\n delegateFee: bigint;\n};\n\nexport type AdvancedFeeConfigArgs = {\n claimFee: number | bigint;\n depositFee: number | bigint;\n delegateFee: number | bigint;\n};\n\nexport function getAdvancedFeeConfigEncoder(): FixedSizeEncoder<AdvancedFeeConfigArgs> {\n return getStructEncoder([\n [\"claimFee\", getU64Encoder()],\n [\"depositFee\", getU64Encoder()],\n [\"delegateFee\", getU64Encoder()],\n ]);\n}\n\nexport function getAdvancedFeeConfigDecoder(): FixedSizeDecoder<AdvancedFeeConfig> {\n return getStructDecoder([\n [\"claimFee\", getU64Decoder()],\n [\"depositFee\", getU64Decoder()],\n [\"delegateFee\", getU64Decoder()],\n ]);\n}\n\nexport function getAdvancedFeeConfigCodec(): FixedSizeCodec<\n AdvancedFeeConfigArgs,\n AdvancedFeeConfig\n> {\n return combineCodec(\n getAdvancedFeeConfigEncoder(),\n getAdvancedFeeConfigDecoder(),\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 getI64Decoder,\n getI64Encoder,\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 AirdropBoosted = {\n airdrop: Address;\n boostedBy: Address;\n boostAmount: bigint;\n timestamp: bigint;\n};\n\nexport type AirdropBoostedArgs = {\n airdrop: Address;\n boostedBy: Address;\n boostAmount: number | bigint;\n timestamp: number | bigint;\n};\n\nexport function getAirdropBoostedEncoder(): FixedSizeEncoder<AirdropBoostedArgs> {\n return getStructEncoder([\n [\"airdrop\", getAddressEncoder()],\n [\"boostedBy\", getAddressEncoder()],\n [\"boostAmount\", getU64Encoder()],\n [\"timestamp\", getI64Encoder()],\n ]);\n}\n\nexport function getAirdropBoostedDecoder(): FixedSizeDecoder<AirdropBoosted> {\n return getStructDecoder([\n [\"airdrop\", getAddressDecoder()],\n [\"boostedBy\", getAddressDecoder()],\n [\"boostAmount\", getU64Decoder()],\n [\"timestamp\", getI64Decoder()],\n ]);\n}\n\nexport function getAirdropBoostedCodec(): FixedSizeCodec<\n AirdropBoostedArgs,\n AirdropBoosted\n> {\n return combineCodec(getAirdropBoostedEncoder(), getAirdropBoostedDecoder());\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 getI64Decoder,\n getI64Encoder,\n getStructDecoder,\n getStructEncoder,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from \"@solana/kit\";\n\nexport type AirdropClosed = {\n airdrop: Address;\n authority: Address;\n timestamp: bigint;\n};\n\nexport type AirdropClosedArgs = {\n airdrop: Address;\n authority: Address;\n timestamp: number | bigint;\n};\n\nexport function getAirdropClosedEncoder(): FixedSizeEncoder<AirdropClosedArgs> {\n return getStructEncoder([\n [\"airdrop\", getAddressEncoder()],\n [\"authority\", getAddressEncoder()],\n [\"timestamp\", getI64Encoder()],\n ]);\n}\n\nexport function getAirdropClosedDecoder(): FixedSizeDecoder<AirdropClosed> {\n return getStructDecoder([\n [\"airdrop\", getAddressDecoder()],\n [\"authority\", getAddressDecoder()],\n [\"timestamp\", getI64Decoder()],\n ]);\n}\n\nexport function getAirdropClosedCodec(): FixedSizeCodec<\n AirdropClosedArgs,\n AirdropClosed\n> {\n return combineCodec(getAirdropClosedEncoder(), getAirdropClosedDecoder());\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 getU8Decoder,\n getU8Encoder,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from \"@solana/kit\";\n\nexport type AirdropDelegated = {\n airdrop: Address;\n authority: Address;\n delegate: Address;\n permissions: number;\n};\n\nexport type AirdropDelegatedArgs = AirdropDelegated;\n\nexport function getAirdropDelegatedEncoder(): FixedSizeEncoder<AirdropDelegatedArgs> {\n return getStructEncoder([\n [\"airdrop\", getAddressEncoder()],\n [\"authority\", getAddressEncoder()],\n [\"delegate\", getAddressEncoder()],\n [\"permissions\", getU8Encoder()],\n ]);\n}\n\nexport function getAirdropDelegatedDecoder(): FixedSizeDecoder<AirdropDelegated> {\n return getStructDecoder([\n [\"airdrop\", getAddressDecoder()],\n [\"authority\", getAddressDecoder()],\n [\"delegate\", getAddressDecoder()],\n [\"permissions\", getU8Decoder()],\n ]);\n}\n\nexport function getAirdropDelegatedCodec(): FixedSizeCodec<\n AirdropDelegatedArgs,\n AirdropDelegated\n> {\n return combineCodec(\n getAirdropDelegatedEncoder(),\n getAirdropDelegatedDecoder(),\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 getI64Decoder,\n getI64Encoder,\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 AirdropInitialized = {\n airdrop: Address;\n mint: Address;\n authority: Address;\n controller: Address;\n merkleRoot: ReadonlyUint8Array;\n startTime: bigint;\n endTime: bigint;\n timestamp: bigint;\n};\n\nexport type AirdropInitializedArgs = {\n airdrop: Address;\n mint: Address;\n authority: Address;\n controller: Address;\n merkleRoot: ReadonlyUint8Array;\n startTime: number | bigint;\n endTime: number | bigint;\n timestamp: number | bigint;\n};\n\nexport function getAirdropInitializedEncoder(): FixedSizeEncoder<AirdropInitializedArgs> {\n return getStructEncoder([\n [\"airdrop\", getAddressEncoder()],\n [\"mint\", getAddressEncoder()],\n [\"authority\", getAddressEncoder()],\n [\"controller\", getAddressEncoder()],\n [\"merkleRoot\", fixEncoderSize(getBytesEncoder(), 32)],\n [\"startTime\", getI64Encoder()],\n [\"endTime\", getI64Encoder()],\n [\"timestamp\", getI64Encoder()],\n ]);\n}\n\nexport function getAirdropInitializedDecoder(): FixedSizeDecoder<AirdropInitialized> {\n return getStructDecoder([\n [\"airdrop\", getAddressDecoder()],\n [\"mint\", getAddressDecoder()],\n [\"authority\", getAddressDecoder()],\n [\"controller\", getAddressDecoder()],\n [\"merkleRoot\", fixDecoderSize(getBytesDecoder(), 32)],\n [\"startTime\", getI64Decoder()],\n [\"endTime\", getI64Decoder()],\n [\"timestamp\", getI64Decoder()],\n ]);\n}\n\nexport function getAirdropInitializedCodec(): FixedSizeCodec<\n AirdropInitializedArgs,\n AirdropInitialized\n> {\n return combineCodec(\n getAirdropInitializedEncoder(),\n getAirdropInitializedDecoder(),\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 AirdropUpdated = { airdrop: Address; updatedBy: Address };\n\nexport type AirdropUpdatedArgs = AirdropUpdated;\n\nexport function getAirdropUpdatedEncoder(): FixedSizeEncoder<AirdropUpdatedArgs> {\n return getStructEncoder([\n [\"airdrop\", getAddressEncoder()],\n [\"updatedBy\", getAddressEncoder()],\n ]);\n}\n\nexport function getAirdropUpdatedDecoder(): FixedSizeDecoder<AirdropUpdated> {\n return getStructDecoder([\n [\"airdrop\", getAddressDecoder()],\n [\"updatedBy\", getAddressDecoder()],\n ]);\n}\n\nexport function getAirdropUpdatedCodec(): FixedSizeCodec<\n AirdropUpdatedArgs,\n AirdropUpdated\n> {\n return combineCodec(getAirdropUpdatedEncoder(), getAirdropUpdatedDecoder());\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 getI64Decoder,\n getI64Encoder,\n getStructDecoder,\n getStructEncoder,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from \"@solana/kit\";\n\nexport type BaseDurationConfig = {\n minimum: bigint;\n maximum: bigint;\n updateGrace: bigint;\n};\n\nexport type BaseDurationConfigArgs = {\n minimum: number | bigint;\n maximum: number | bigint;\n updateGrace: number | bigint;\n};\n\nexport function getBaseDurationConfigEncoder(): FixedSizeEncoder<BaseDurationConfigArgs> {\n return getStructEncoder([\n [\"minimum\", getI64Encoder()],\n [\"maximum\", getI64Encoder()],\n [\"updateGrace\", getI64Encoder()],\n ]);\n}\n\nexport function getBaseDurationConfigDecoder(): FixedSizeDecoder<BaseDurationConfig> {\n return getStructDecoder([\n [\"minimum\", getI64Decoder()],\n [\"maximum\", getI64Decoder()],\n [\"updateGrace\", getI64Decoder()],\n ]);\n}\n\nexport function getBaseDurationConfigCodec(): FixedSizeCodec<\n BaseDurationConfigArgs,\n BaseDurationConfig\n> {\n return combineCodec(\n getBaseDurationConfigEncoder(),\n getBaseDurationConfigDecoder(),\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 BaseFeatureFeeConfig = {\n creationFee: bigint;\n upgradeFee: bigint;\n withdrawFeeBasis: bigint;\n};\n\nexport type BaseFeatureFeeConfigArgs = {\n creationFee: number | bigint;\n upgradeFee: number | bigint;\n withdrawFeeBasis: number | bigint;\n};\n\nexport function getBaseFeatureFeeConfigEncoder(): FixedSizeEncoder<BaseFeatureFeeConfigArgs> {\n return getStructEncoder([\n [\"creationFee\", getU64Encoder()],\n [\"upgradeFee\", getU64Encoder()],\n [\"withdrawFeeBasis\", getU64Encoder()],\n ]);\n}\n\nexport function getBaseFeatureFeeConfigDecoder(): FixedSizeDecoder<BaseFeatureFeeConfig> {\n return getStructDecoder([\n [\"creationFee\", getU64Decoder()],\n [\"upgradeFee\", getU64Decoder()],\n [\"withdrawFeeBasis\", getU64Decoder()],\n ]);\n}\n\nexport function getBaseFeatureFeeConfigCodec(): FixedSizeCodec<\n BaseFeatureFeeConfigArgs,\n BaseFeatureFeeConfig\n> {\n return combineCodec(\n getBaseFeatureFeeConfigEncoder(),\n getBaseFeatureFeeConfigDecoder(),\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 getOptionDecoder,\n getOptionEncoder,\n getStructDecoder,\n getStructEncoder,\n getU64Decoder,\n getU64Encoder,\n type Codec,\n type Decoder,\n type Encoder,\n type Option,\n type OptionOrNullable,\n} from \"@solana/kit\";\n\nexport type BaseFeeConfig = {\n creationFee: bigint;\n updateFee: Option<bigint>;\n closeFee: bigint;\n};\n\nexport type BaseFeeConfigArgs = {\n creationFee: number | bigint;\n updateFee: OptionOrNullable<number | bigint>;\n closeFee: number | bigint;\n};\n\nexport function getBaseFeeConfigEncoder(): Encoder<BaseFeeConfigArgs> {\n return getStructEncoder([\n [\"creationFee\", getU64Encoder()],\n [\"updateFee\", getOptionEncoder(getU64Encoder())],\n [\"closeFee\", getU64Encoder()],\n ]);\n}\n\nexport function getBaseFeeConfigDecoder(): Decoder<BaseFeeConfig> {\n return getStructDecoder([\n [\"creationFee\", getU64Decoder()],\n [\"updateFee\", getOptionDecoder(getU64Decoder())],\n [\"closeFee\", getU64Decoder()],\n ]);\n}\n\nexport function getBaseFeeConfigCodec(): Codec<\n BaseFeeConfigArgs,\n BaseFeeConfig\n> {\n return combineCodec(getBaseFeeConfigEncoder(), getBaseFeeConfigDecoder());\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 ClaimMapClosed = {\n airdrop: Address;\n bitmap: Address;\n authority: Address;\n};\n\nexport type ClaimMapClosedArgs = ClaimMapClosed;\n\nexport function getClaimMapClosedEncoder(): FixedSizeEncoder<ClaimMapClosedArgs> {\n return getStructEncoder([\n [\"airdrop\", getAddressEncoder()],\n [\"bitmap\", getAddressEncoder()],\n [\"authority\", getAddressEncoder()],\n ]);\n}\n\nexport function getClaimMapClosedDecoder(): FixedSizeDecoder<ClaimMapClosed> {\n return getStructDecoder([\n [\"airdrop\", getAddressDecoder()],\n [\"bitmap\", getAddressDecoder()],\n [\"authority\", getAddressDecoder()],\n ]);\n}\n\nexport function getClaimMapClosedCodec(): FixedSizeCodec<\n ClaimMapClosedArgs,\n ClaimMapClosed\n> {\n return combineCodec(getClaimMapClosedEncoder(), getClaimMapClosedDecoder());\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 getI64Decoder,\n getI64Encoder,\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 ClaimMapInitialized = {\n airdrop: Address;\n bitmap: Address;\n bitmapId: number;\n timestamp: bigint;\n};\n\nexport type ClaimMapInitializedArgs = {\n airdrop: Address;\n bitmap: Address;\n bitmapId: number;\n timestamp: number | bigint;\n};\n\nexport function getClaimMapInitializedEncoder(): FixedSizeEncoder<ClaimMapInitializedArgs> {\n return getStructEncoder([\n [\"airdrop\", getAddressEncoder()],\n [\"bitmap\", getAddressEncoder()],\n [\"bitmapId\", getU16Encoder()],\n [\"timestamp\", getI64Encoder()],\n ]);\n}\n\nexport function getClaimMapInitializedDecoder(): FixedSizeDecoder<ClaimMapInitialized> {\n return getStructDecoder([\n [\"airdrop\", getAddressDecoder()],\n [\"bitmap\", getAddressDecoder()],\n [\"bitmapId\", getU16Decoder()],\n [\"timestamp\", getI64Decoder()],\n ]);\n}\n\nexport function getClaimMapInitializedCodec(): FixedSizeCodec<\n ClaimMapInitializedArgs,\n ClaimMapInitialized\n> {\n return combineCodec(\n getClaimMapInitializedEncoder(),\n getClaimMapInitializedDecoder(),\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 getOptionDecoder,\n getOptionEncoder,\n getStructDecoder,\n getStructEncoder,\n getU64Decoder,\n getU64Encoder,\n type Codec,\n type Decoder,\n type Encoder,\n type Option,\n type OptionOrNullable,\n type ReadonlyUint8Array,\n} from \"@solana/kit\";\nimport {\n getBaseDurationConfigDecoder,\n getBaseDurationConfigEncoder,\n getBaseFeatureFeeConfigDecoder,\n getBaseFeatureFeeConfigEncoder,\n type BaseDurationConfig,\n type BaseDurationConfigArgs,\n type BaseFeatureFeeConfig,\n type BaseFeatureFeeConfigArgs,\n} from \".\";\n\nexport type InitAirdropConfigArgs = {\n merkleRoot: Option<ReadonlyUint8Array>;\n durationConfig: BaseDurationConfig;\n masterConfig: BaseFeatureFeeConfig;\n bitmapActionFee: bigint;\n perBoostAmount: bigint;\n};\n\nexport type InitAirdropConfigArgsArgs = {\n merkleRoot: OptionOrNullable<ReadonlyUint8Array>;\n durationConfig: BaseDurationConfigArgs;\n masterConfig: BaseFeatureFeeConfigArgs;\n bitmapActionFee: number | bigint;\n perBoostAmount: number | bigint;\n};\n\nexport function getInitAirdropConfigArgsEncoder(): Encoder<InitAirdropConfigArgsArgs> {\n return getStructEncoder([\n [\"merkleRoot\", getOptionEncoder(fixEncoderSize(getBytesEncoder(), 32))],\n [\"durationConfig\", getBaseDurationConfigEncoder()],\n [\"masterConfig\", getBaseFeatureFeeConfigEncoder()],\n [\"bitmapActionFee\", getU64Encoder()],\n [\"perBoostAmount\", getU64Encoder()],\n ]);\n}\n\nexport function getInitAirdropConfigArgsDecoder(): Decoder<InitAirdropConfigArgs> {\n return getStructDecoder([\n [\"merkleRoot\", getOptionDecoder(fixDecoderSize(getBytesDecoder(), 32))],\n [\"durationConfig\", getBaseDurationConfigDecoder()],\n [\"masterConfig\", getBaseFeatureFeeConfigDecoder()],\n [\"bitmapActionFee\", getU64Decoder()],\n [\"perBoostAmount\", getU64Decoder()],\n ]);\n}\n\nexport function getInitAirdropConfigArgsCodec(): Codec<\n InitAirdropConfigArgsArgs,\n InitAirdropConfigArgs\n> {\n return combineCodec(\n getInitAirdropConfigArgsEncoder(),\n getInitAirdropConfigArgsDecoder(),\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 getI64Decoder,\n getI64Encoder,\n getStructDecoder,\n getStructEncoder,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from \"@solana/kit\";\n\nexport type MasterInitialized = {\n address: Address;\n authority: Address;\n treasury: Address;\n timestamp: bigint;\n};\n\nexport type MasterInitializedArgs = {\n address: Address;\n authority: Address;\n treasury: Address;\n timestamp: number | bigint;\n};\n\nexport function getMasterInitializedEncoder(): FixedSizeEncoder<MasterInitializedArgs> {\n return getStructEncoder([\n [\"address\", getAddressEncoder()],\n [\"authority\", getAddressEncoder()],\n [\"treasury\", getAddressEncoder()],\n [\"timestamp\", getI64Encoder()],\n ]);\n}\n\nexport function getMasterInitializedDecoder(): FixedSizeDecoder<MasterInitialized> {\n return getStructDecoder([\n [\"address\", getAddressDecoder()],\n [\"authority\", getAddressDecoder()],\n [\"treasury\", getAddressDecoder()],\n [\"timestamp\", getI64Decoder()],\n ]);\n}\n\nexport function getMasterInitializedCodec(): FixedSizeCodec<\n MasterInitializedArgs,\n MasterInitialized\n> {\n return combineCodec(\n getMasterInitializedEncoder(),\n getMasterInitializedDecoder(),\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 getI64Decoder,\n getI64Encoder,\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 TokensDeposited = {\n airdrop: Address;\n amount: bigint;\n newSupply: bigint;\n depositor: Address;\n timestamp: bigint;\n};\n\nexport type TokensDepositedArgs = {\n airdrop: Address;\n amount: number | bigint;\n newSupply: number | bigint;\n depositor: Address;\n timestamp: number | bigint;\n};\n\nexport function getTokensDepositedEncoder(): FixedSizeEncoder<TokensDepositedArgs> {\n return getStructEncoder([\n [\"airdrop\", getAddressEncoder()],\n [\"amount\", getU64Encoder()],\n [\"newSupply\", getU64Encoder()],\n [\"depositor\", getAddressEncoder()],\n [\"timestamp\", getI64Encoder()],\n ]);\n}\n\nexport function getTokensDepositedDecoder(): FixedSizeDecoder<TokensDeposited> {\n return getStructDecoder([\n [\"airdrop\", getAddressDecoder()],\n [\"amount\", getU64Decoder()],\n [\"newSupply\", getU64Decoder()],\n [\"depositor\", getAddressDecoder()],\n [\"timestamp\", getI64Decoder()],\n ]);\n}\n\nexport function getTokensDepositedCodec(): FixedSizeCodec<\n TokensDepositedArgs,\n TokensDeposited\n> {\n return combineCodec(getTokensDepositedEncoder(), getTokensDepositedDecoder());\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 getI64Decoder,\n getI64Encoder,\n getStructDecoder,\n getStructEncoder,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from \"@solana/kit\";\n\nexport type TokensRedeemed = {\n airdrop: Address;\n authority: Address;\n timestamp: bigint;\n};\n\nexport type TokensRedeemedArgs = {\n airdrop: Address;\n authority: Address;\n timestamp: number | bigint;\n};\n\nexport function getTokensRedeemedEncoder(): FixedSizeEncoder<TokensRedeemedArgs> {\n return getStructEncoder([\n [\"airdrop\", getAddressEncoder()],\n [\"authority\", getAddressEncoder()],\n [\"timestamp\", getI64Encoder()],\n ]);\n}\n\nexport function getTokensRedeemedDecoder(): FixedSizeDecoder<TokensRedeemed> {\n return getStructDecoder([\n [\"airdrop\", getAddressDecoder()],\n [\"authority\", getAddressDecoder()],\n [\"timestamp\", getI64Decoder()],\n ]);\n}\n\nexport function getTokensRedeemedCodec(): FixedSizeCodec<\n TokensRedeemedArgs,\n TokensRedeemed\n> {\n return combineCodec(getTokensRedeemedEncoder(), getTokensRedeemedDecoder());\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 getU64Decoder,\n getU64Encoder,\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 { DROPSY_PROGRAM_ADDRESS } from \"../programs\";\nimport { getAccountMetaFactory, type ResolvedAccount } from \"../shared\";\nimport {\n getInitAirdropConfigArgsDecoder,\n getInitAirdropConfigArgsEncoder,\n type InitAirdropConfigArgs,\n type InitAirdropConfigArgsArgs,\n} from \"../types\";\n\nexport const INITIALIZE_MASTER_DISCRIMINATOR = new Uint8Array([\n 206, 91, 246, 30, 216, 101, 134, 166,\n]);\n\nexport function getInitializeMasterDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n INITIALIZE_MASTER_DISCRIMINATOR,\n );\n}\n\nexport type InitializeMasterInstruction<\n TProgram extends string = typeof DROPSY_PROGRAM_ADDRESS,\n TAccountMaster extends string | AccountMeta<string> = string,\n TAccountConfig extends string | AccountMeta<string> = string,\n TAccountTreasury extends string | AccountMeta<string> = string,\n TAccountTokenMint extends string | AccountMeta<string> = string,\n TAccountAuthority extends string | AccountMeta<string> =\n \"8mtUD2XrkNnTxnjCehZ4DEtTXeGR1yrepSEGhCaSj2kT\",\n TAccountSystemProgram extends string | AccountMeta<string> =\n \"11111111111111111111111111111111\",\n TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n InstructionWithData<ReadonlyUint8Array> &\n InstructionWithAccounts<\n [\n TAccountMaster extends string\n ? WritableAccount<TAccountMaster>\n : TAccountMaster,\n TAccountConfig extends string\n ? WritableAccount<TAccountConfig>\n : TAccountConfig,\n TAccountTreasury extends string\n ? ReadonlyAccount<TAccountTreasury>\n : TAccountTreasury,\n TAccountTokenMint extends string\n ? ReadonlyAccount<TAccountTokenMint>\n : TAccountTokenMint,\n TAccountAuthority extends string\n ? WritableSignerAccount<TAccountAuthority> &\n AccountSignerMeta<TAccountAuthority>\n : TAccountAuthority,\n TAccountSystemProgram extends string\n ? ReadonlyAccount<TAccountSystemProgram>\n : TAccountSystemProgram,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type InitializeMasterInstructionData = {\n discriminator: ReadonlyUint8Array;\n airdropConfig: InitAirdropConfigArgs;\n protocolFee: bigint;\n};\n\nexport type InitializeMasterInstructionDataArgs = {\n airdropConfig: InitAirdropConfigArgsArgs;\n protocolFee: number | bigint;\n};\n\nexport function getInitializeMasterInstructionDataEncoder(): Encoder<InitializeMasterInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([\n [\"discriminator\", fixEncoderSize(getBytesEncoder(), 8)],\n [\"airdropConfig\", getInitAirdropConfigArgsEncoder()],\n [\"protocolFee\", getU64Encoder()],\n ]),\n (value) => ({ ...value, discriminator: INITIALIZE_MASTER_DISCRIMINATOR }),\n );\n}\n\nexport function getInitializeMasterInstructionDataDecoder(): Decoder<InitializeMasterInstructionData> {\n return getStructDecoder([\n [\"discriminator\", fixDecoderSize(getBytesDecoder(), 8)],\n [\"airdropConfig\", getInitAirdropConfigArgsDecoder()],\n [\"protocolFee\", getU64Decoder()],\n ]);\n}\n\nexport function getInitializeMasterInstructionDataCodec(): Codec<\n InitializeMasterInstructionDataArgs,\n InitializeMasterInstructionData\n> {\n return combineCodec(\n getInitializeMasterInstructionDataEncoder(),\n getInitializeMasterInstructionDataDecoder(),\n );\n}\n\nexport type InitializeMasterAsyncInput<\n TAccountMaster extends string = string,\n TAccountConfig extends string = string,\n TAccountTreasury extends string = string,\n TAccountTokenMint extends string = string,\n TAccountAuthority extends string = string,\n TAccountSystemProgram extends string = string,\n> = {\n master?: Address<TAccountMaster>;\n config?: Address<TAccountConfig>;\n treasury: Address<TAccountTreasury>;\n tokenMint?: Address<TAccountTokenMint>;\n authority?: TransactionSigner<TAccountAuthority>;\n systemProgram?: Address<TAccountSystemProgram>;\n airdropConfig: InitializeMasterInstructionDataArgs[\"airdropConfig\"];\n protocolFee: InitializeMasterInstructionDataArgs[\"protocolFee\"];\n};\n\nexport async function getInitializeMasterInstructionAsync<\n TAccountMaster extends string,\n TAccountConfig extends string,\n TAccountTreasury extends string,\n TAccountTokenMint extends string,\n TAccountAuthority extends string,\n TAccountSystemProgram extends string,\n TProgramAddress extends Address = typeof DROPSY_PROGRAM_ADDRESS,\n>(\n input: InitializeMasterAsyncInput<\n TAccountMaster,\n TAccountConfig,\n TAccountTreasury,\n TAccountTokenMint,\n TAccountAuthority,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress },\n): Promise<\n InitializeMasterInstruction<\n TProgramAddress,\n TAccountMaster,\n TAccountConfig,\n TAccountTreasury,\n TAccountTokenMint,\n TAccountAuthority,\n TAccountSystemProgram\n >\n> {\n // Program address.\n const programAddress = config?.programAddress ?? DROPSY_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n master: { value: input.master ?? null, isWritable: true },\n config: { value: input.config ?? null, isWritable: true },\n treasury: { value: input.treasury ?? null, isWritable: false },\n tokenMint: { value: input.tokenMint ?? null, isWritable: false },\n authority: { value: input.authority ?? null, isWritable: true },\n systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Resolve default values.\n if (!accounts.master.value) {\n accounts.master.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(new Uint8Array([109, 97, 115, 116, 101, 114])),\n ],\n });\n }\n if (!accounts.config.value) {\n accounts.config.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(\n new Uint8Array([\n 97, 105, 114, 100, 114, 111, 112, 95, 99, 111, 110, 102, 105, 103,\n ]),\n ),\n ],\n });\n }\n if (!accounts.authority.value) {\n accounts.authority.value =\n \"8mtUD2XrkNnTxnjCehZ4DEtTXeGR1yrepSEGhCaSj2kT\" as Address<\"8mtUD2XrkNnTxnjCehZ4DEtTXeGR1yrepSEGhCaSj2kT\">;\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(accounts.master),\n getAccountMeta(accounts.config),\n getAccountMeta(accounts.treasury),\n getAccountMeta(accounts.tokenMint),\n getAccountMeta(accounts.authority),\n getAccountMeta(accounts.systemProgram),\n ],\n data: getInitializeMasterInstructionDataEncoder().encode(\n args as InitializeMasterInstructionDataArgs,\n ),\n programAddress,\n } as InitializeMasterInstruction<\n TProgramAddress,\n TAccountMaster,\n TAccountConfig,\n TAccountTreasury,\n TAccountTokenMint,\n TAccountAuthority,\n TAccountSystemProgram\n >);\n}\n\nexport type InitializeMasterInput<\n TAccountMaster extends string = string,\n TAccountConfig extends string = string,\n TAccountTreasury extends string = string,\n TAccountTokenMint extends string = string,\n TAccountAuthority extends string = string,\n TAccountSystemProgram extends string = string,\n> = {\n master: Address<TAccountMaster>;\n config: Address<TAccountConfig>;\n treasury: Address<TAccountTreasury>;\n tokenMint?: Address<TAccountTokenMint>;\n authority?: TransactionSigner<TAccountAuthority>;\n systemProgram?: Address<TAccountSystemProgram>;\n airdropConfig: InitializeMasterInstructionDataArgs[\"airdropConfig\"];\n protocolFee: InitializeMasterInstructionDataArgs[\"protocolFee\"];\n};\n\nexport function getInitializeMasterInstruction<\n TAccountMaster extends string,\n TAccountConfig extends string,\n TAccountTreasury extends string,\n TAccountTokenMint extends string,\n TAccountAuthority extends string,\n TAccountSystemProgram extends string,\n TProgramAddress extends Address = typeof DROPSY_PROGRAM_ADDRESS,\n>(\n input: InitializeMasterInput<\n TAccountMaster,\n TAccountConfig,\n TAccountTreasury,\n TAccountTokenMint,\n TAccountAuthority,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress },\n): InitializeMasterInstruction<\n TProgramAddress,\n TAccountMaster,\n TAccountConfig,\n TAccountTreasury,\n TAccountTokenMint,\n TAccountAuthority,\n TAccountSystemProgram\n> {\n // Program address.\n const programAddress = config?.programAddress ?? DROPSY_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n master: { value: input.master ?? null, isWritable: true },\n config: { value: input.config ?? null, isWritable: true },\n treasury: { value: input.treasury ?? null, isWritable: false },\n tokenMint: { value: input.tokenMint ?? null, isWritable: false },\n authority: { value: input.authority ?? null, isWritable: true },\n systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Resolve default values.\n if (!accounts.authority.value) {\n accounts.authority.value =\n \"8mtUD2XrkNnTxnjCehZ4DEtTXeGR1yrepSEGhCaSj2kT\" as Address<\"8mtUD2XrkNnTxnjCehZ4DEtTXeGR1yrepSEGhCaSj2kT\">;\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(accounts.master),\n getAccountMeta(accounts.config),\n getAccountMeta(accounts.treasury),\n getAccountMeta(accounts.tokenMint),\n getAccountMeta(accounts.authority),\n getAccountMeta(accounts.systemProgram),\n ],\n data: getInitializeMasterInstructionDataEncoder().encode(\n args as InitializeMasterInstructionDataArgs,\n ),\n programAddress,\n } as InitializeMasterInstruction<\n TProgramAddress,\n TAccountMaster,\n TAccountConfig,\n TAccountTreasury,\n TAccountTokenMint,\n TAccountAuthority,\n TAccountSystemProgram\n >);\n}\n\nexport type ParsedInitializeMasterInstruction<\n TProgram extends string = typeof DROPSY_PROGRAM_ADDRESS,\n TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n programAddress: Address<TProgram>;\n accounts: {\n master: TAccountMetas[0];\n config: TAccountMetas[1];\n treasury: TAccountMetas[2];\n tokenMint?: TAccountMetas[3] | undefined;\n authority: TAccountMetas[4];\n systemProgram: TAccountMetas[5];\n };\n data: InitializeMasterInstructionData;\n};\n\nexport function parseInitializeMasterInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>,\n): ParsedInitializeMasterInstruction<TProgram, TAccountMetas> {\n if (instruction.accounts.length < 6) {\n // TODO: Coded error.\n throw new Error(\"Not enough accounts\");\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 === DROPSY_PROGRAM_ADDRESS\n ? undefined\n : accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n master: getNextAccount(),\n config: getNextAccount(),\n treasury: getNextAccount(),\n tokenMint: getNextOptionalAccount(),\n authority: getNextAccount(),\n systemProgram: getNextAccount(),\n },\n data: getInitializeMasterInstructionDataDecoder().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 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 { DROPSY_PROGRAM_ADDRESS } from \"../programs\";\nimport {\n expectAddress,\n getAccountMetaFactory,\n type ResolvedAccount,\n} from \"../shared\";\n\nexport const REDEEM_AIRDROP_TOKENS_DISCRIMINATOR = new Uint8Array([\n 102, 70, 115, 13, 97, 198, 59, 103,\n]);\n\nexport function getRedeemAirdropTokensDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n REDEEM_AIRDROP_TOKENS_DISCRIMINATOR,\n );\n}\n\nexport type RedeemAirdropTokensInstruction<\n TProgram extends string = typeof DROPSY_PROGRAM_ADDRESS,\n TAccountMaster extends string | AccountMeta<string> = string,\n TAccountConfig extends string | AccountMeta<string> = string,\n TAccountTreasury extends string | AccountMeta<string> = string,\n TAccountAirdropMaster extends string | AccountMeta<string> = string,\n TAccountAirdropMasterAuthority extends string | AccountMeta<string> = string,\n TAccountAffiliate extends string | AccountMeta<string> = string,\n TAccountSourceTokenAccount extends string | AccountMeta<string> = string,\n TAccountDestinationTokenAccount extends string | AccountMeta<string> = string,\n TAccountAirdrop extends string | AccountMeta<string> = string,\n TAccountMint extends string | AccountMeta<string> = string,\n TAccountAuthority extends string | AccountMeta<string> = string,\n TAccountTokenProgram extends string | AccountMeta<string> =\n \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\",\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 TAccountMaster extends string\n ? ReadonlyAccount<TAccountMaster>\n : TAccountMaster,\n TAccountConfig extends string\n ? ReadonlyAccount<TAccountConfig>\n : TAccountConfig,\n TAccountTreasury extends string\n ? WritableAccount<TAccountTreasury>\n : TAccountTreasury,\n TAccountAirdropMaster extends string\n ? ReadonlyAccount<TAccountAirdropMaster>\n : TAccountAirdropMaster,\n TAccountAirdropMasterAuthority extends string\n ? ReadonlyAccount<TAccountAirdropMasterAuthority>\n : TAccountAirdropMasterAuthority,\n TAccountAffiliate extends string\n ? WritableAccount<TAccountAffiliate>\n : TAccountAffiliate,\n TAccountSourceTokenAccount extends string\n ? WritableAccount<TAccountSourceTokenAccount>\n : TAccountSourceTokenAccount,\n TAccountDestinationTokenAccount extends string\n ? WritableAccount<TAccountDestinationTokenAccount>\n : TAccountDestinationTokenAccount,\n TAccountAirdrop extends string\n ? WritableAccount<TAccountAirdrop>\n : TAccountAirdrop,\n TAccountMint extends string\n ? ReadonlyAccount<TAccountMint>\n : TAccountMint,\n TAccountAuthority extends string\n ? WritableSignerAccount<TAccountAuthority> &\n AccountSignerMeta<TAccountAuthority>\n : TAccountAuthority,\n TAccountTokenProgram extends string\n ? ReadonlyAccount<TAccountTokenProgram>\n : TAccountTokenProgram,\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 RedeemAirdropTokensInstructionData = {\n discriminator: ReadonlyUint8Array;\n};\n\nexport type RedeemAirdropTokensInstructionDataArgs = {};\n\nexport function getRedeemAirdropTokensInstructionDataEncoder(): FixedSizeEncoder<RedeemAirdropTokensInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([[\"discriminator\", fixEncoderSize(getBytesEncoder(), 8)]]),\n (value) => ({\n ...value,\n discriminator: REDEEM_AIRDROP_TOKENS_DISCRIMINATOR,\n }),\n );\n}\n\nexport function getRedeemAirdropTokensInstructionDataDecoder(): FixedSizeDecoder<RedeemAirdropTokensInstructionData> {\n return getStructDecoder([\n [\"discriminator\", fixDecoderSize(getBytesDecoder(), 8)],\n ]);\n}\n\nexport function getRedeemAirdropTokensInstructionDataCodec(): FixedSizeCodec<\n RedeemAirdropTokensInstructionDataArgs,\n RedeemAirdropTokensInstructionData\n> {\n return combineCodec(\n getRedeemAirdropTokensInstructionDataEncoder(),\n getRedeemAirdropTokensInstructionDataDecoder(),\n );\n}\n\nexport type RedeemAirdropTokensAsyncInput<\n TAccountMaster extends string = string,\n TAccountConfig extends string = string,\n TAccountTreasury extends string = string,\n TAccountAirdropMaster extends string = string,\n TAccountAirdropMasterAuthority extends string = string,\n TAccountAffiliate extends string = string,\n TAccountSourceTokenAccount extends string = string,\n TAccountDestinationTokenAccount extends string = string,\n TAccountAirdrop extends string = string,\n TAccountMint extends string = string,\n TAccountAuthority extends string = string,\n TAccountTokenProgram extends string = string,\n TAccountAssociatedTokenProgram extends string = string,\n TAccountSystemProgram extends string = string,\n> = {\n master?: Address<TAccountMaster>;\n config?: Address<TAccountConfig>;\n treasury: Address<TAccountTreasury>;\n airdropMaster?: Address<TAccountAirdropMaster>;\n /** Check with authority */\n airdropMasterAuthority: Address<TAccountAirdropMasterAuthority>;\n affiliate?: Address<TAccountAffiliate>;\n sourceTokenAccount: Address<TAccountSourceTokenAccount>;\n destinationTokenAccount?: Address<TAccountDestinationTokenAccount>;\n airdrop?: Address<TAccountAirdrop>;\n mint: Address<TAccountMint>;\n authority: TransactionSigner<TAccountAuthority>;\n tokenProgram?: Address<TAccountTokenProgram>;\n associatedTokenProgram?: Address<TAccountAssociatedTokenProgram>;\n systemProgram?: Address<TAccountSystemProgram>;\n};\n\nexport async function getRedeemAirdropTokensInstructionAsync<\n TAccountMaster extends string,\n TAccountConfig extends string,\n TAccountTreasury extends string,\n TAccountAirdropMaster extends string,\n TAccountAirdropMasterAuthority extends string,\n TAccountAffiliate extends string,\n TAccountSourceTokenAccount extends string,\n TAccountDestinationTokenAccount extends string,\n TAccountAirdrop extends string,\n TAccountMint extends string,\n TAccountAuthority extends string,\n TAccountTokenProgram extends string,\n TAccountAssociatedTokenProgram extends string,\n TAccountSystemProgram extends string,\n TProgramAddress extends Address = typeof DROPSY_PROGRAM_ADDRESS,\n>(\n input: RedeemAirdropTokensAsyncInput<\n TAccountMaster,\n TAccountConfig,\n TAccountTreasury,\n TAccountAirdropMaster,\n TAccountAirdropMasterAuthority,\n TAccountAffiliate,\n TAccountSourceTokenAccount,\n TAccountDestinationTokenAccount,\n TAccountAirdrop,\n TAccountMint,\n TAccountAuthority,\n TAccountTokenProgram,\n TAccountAssociatedTokenProgram,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress },\n): Promise<\n RedeemAirdropTokensInstruction<\n TProgramAddress,\n TAccountMaster,\n TAccountConfig,\n TAccountTreasury,\n TAccountAirdropMaster,\n TAccountAirdropMasterAuthority,\n TAccountAffiliate,\n TAccountSourceTokenAccount,\n TAccountDestinationTokenAccount,\n TAccountAirdrop,\n TAccountMint,\n TAccountAuthority,\n TAccountTokenProgram,\n TAccountAssociatedTokenProgram,\n TAccountSystemProgram\n >\n> {\n // Program address.\n const programAddress = config?.programAddress ?? DROPSY_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n master: { value: input.master ?? null, isWritable: false },\n config: { value: input.config ?? null, isWritable: false },\n treasury: { value: input.treasury ?? null, isWritable: true },\n airdropMaster: { value: input.airdropMaster ?? null, isWritable: false },\n airdropMasterAuthority: {\n value: input.airdropMasterAuthority ?? null,\n isWritable: false,\n },\n affiliate: { value: input.affiliate ?? null, isWritable: true },\n sourceTokenAccount: {\n value: input.sourceTokenAccount ?? null,\n isWritable: true,\n },\n destinationTokenAccount: {\n value: input.destinationTokenAccount ?? null,\n isWritable: true,\n },\n airdrop: { value: input.airdrop ?? null, isWritable: true },\n mint: { value: input.mint ?? null, isWritable: false },\n authority: { value: input.authority ?? null, isWritable: true },\n tokenProgram: { value: input.tokenProgram ?? null, isWritable: false },\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 ResolvedAccount\n >;\n\n // Resolve default values.\n if (!accounts.master.value) {\n accounts.master.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(new Uint8Array([109, 97, 115, 116, 101, 114])),\n ],\n });\n }\n if (!accounts.config.value) {\n accounts.config.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(\n new Uint8Array([\n 97, 105, 114, 100, 114, 111, 112, 95, 99, 111, 110, 102, 105, 103,\n ]),\n ),\n ],\n });\n }\n if (!accounts.airdropMaster.value) {\n accounts.airdropMaster.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(\n new Uint8Array([\n 97, 105, 114, 100, 114, 111, 112, 95, 109, 97, 115, 116, 101, 114,\n ]),\n ),\n getAddressEncoder().encode(\n expectAddress(accounts.airdropMasterAuthority.value),\n ),\n ],\n });\n }\n if (!accounts.airdrop.value) {\n accounts.airdrop.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(\n new Uint8Array([97, 105, 114, 100, 114, 111, 112]),\n ),\n getAddressEncoder().encode(expectAddress(accounts.mint.value)),\n getAddressEncoder().encode(expectAddress(accounts.authority.value)),\n ],\n });\n }\n if (!accounts.tokenProgram.value) {\n accounts.tokenProgram.value =\n \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\" as Address<\"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\">;\n }\n if (!accounts.destinationTokenAccount.value) {\n accounts.destinationTokenAccount.value = await getProgramDerivedAddress({\n programAddress:\n \"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\" as Address<\"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\">,\n seeds: [\n getAddressEncoder().encode(expectAddress(accounts.airdrop.value)),\n getAddressEncoder().encode(expectAddress(accounts.tokenProgram.value)),\n getAddressEncoder().encode(expectAddress(accounts.mint.value)),\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(accounts.master),\n getAccountMeta(accounts.config),\n getAccountMeta(accounts.treasury),\n getAccountMeta(accounts.airdropMaster),\n getAccountMeta(accounts.airdropMasterAuthority),\n getAccountMeta(accounts.affiliate),\n getAccountMeta(accounts.sourceTokenAccount),\n getAccountMeta(accounts.destinationTokenAccount),\n getAccountMeta(accounts.airdrop),\n getAccountMeta(accounts.mint),\n getAccountMeta(accounts.authority),\n getAccountMeta(accounts.tokenProgram),\n getAccountMeta(accounts.associatedTokenProgram),\n getAccountMeta(accounts.systemProgram),\n ],\n data: getRedeemAirdropTokensInstructionDataEncoder().encode({}),\n programAddress,\n } as RedeemAirdropTokensInstruction<\n TProgramAddress,\n TAccountMaster,\n TAccountConfig,\n TAccountTreasury,\n TAccountAirdropMaster,\n TAccountAirdropMasterAuthority,\n TAccountAffiliate,\n TAccountSourceTokenAccount,\n TAccountDestinationTokenAccount,\n TAccountAirdrop,\n TAccountMint,\n TAccountAuthority,\n TAccountTokenProgram,\n TAccountAssociatedTokenProgram,\n TAccountSystemProgram\n >);\n}\n\nexport type RedeemAirdropTokensInput<\n TAccountMaster extends string = string,\n TAccountConfig extends string = string,\n TAccountTreasury extends string = string,\n TAccountAirdropMaster extends string = string,\n TAccountAirdropMasterAuthority extends string = string,\n TAccountAffiliate extends string = string,\n TAccountSourceTokenAccount extends string = string,\n TAccountDestinationTokenAccount extends string = string,\n TAccountAirdrop extends string = string,\n TAccountMint extends string = string,\n TAccountAuthority extends string = string,\n TAccountTokenProgram extends string = string,\n TAccountAssociatedTokenProgram extends string = string,\n TAccountSystemProgram extends string = string,\n> = {\n master: Address<TAccountMaster>;\n config: Address<TAccountConfig>;\n treasury: Address<TAccountTreasury>;\n airdropMaster: Address<TAccountAirdropMaster>;\n /** Check with authority */\n airdropMasterAuthority: Address<TAccountAirdropMasterAuthority>;\n affiliate?: Address<TAccountAffiliate>;\n sourceTokenAccount: Address<TAccountSourceTokenAccount>;\n destinationTokenAccount: Address<TAccountDestinationTokenAccount>;\n airdrop: Address<TAccountAirdrop>;\n mint: Address<TAccountMint>;\n authority: TransactionSigner<TAccountAuthority>;\n tokenProgram?: Address<TAccountTokenProgram>;\n associatedTokenProgram?: Address<TAccountAssociatedTokenProgram>;\n systemProgram?: Address<TAccountSystemProgram>;\n};\n\nexport function getRedeemAirdropTokensInstruction<\n TAccountMaster extends string,\n TAccountConfig extends string,\n TAccountTreasury extends string,\n TAccountAirdropMaster extends string,\n TAccountAirdropMasterAuthority extends string,\n TAccountAffiliate extends string,\n TAccountSourceTokenAccount extends string,\n TAccountDestinationTokenAccount extends string,\n TAccountAirdrop extends string,\n TAccountMint extends string,\n TAccountAuthority extends string,\n TAccountTokenProgram extends string,\n TAccountAssociatedTokenProgram extends string,\n TAccountSystemProgram extends string,\n TProgramAddress extends Address = typeof DROPSY_PROGRAM_ADDRESS,\n>(\n input: RedeemAirdropTokensInput<\n TAccountMaster,\n TAccountConfig,\n TAccountTreasury,\n TAccountAirdropMaster,\n TAccountAirdropMasterAuthority,\n TAccountAffiliate,\n TAccountSourceTokenAccount,\n TAccountDestinationTokenAccount,\n TAccountAirdrop,\n TAccountMint,\n TAccountAuthority,\n TAccountTokenProgram,\n TAccountAssociatedTokenProgram,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress },\n): RedeemAirdropTokensInstruction<\n TProgramAddress,\n TAccountMaster,\n TAccountConfig,\n TAccountTreasury,\n TAccountAirdropMaster,\n TAccountAirdropMasterAuthority,\n TAccountAffiliate,\n TAccountSourceTokenAccount,\n TAccountDestinationTokenAccount,\n TAccountAirdrop,\n TAccountMint,\n TAccountAuthority,\n TAccountTokenProgram,\n TAccountAssociatedTokenProgram,\n TAccountSystemProgram\n> {\n // Program address.\n const programAddress = config?.programAddress ?? DROPSY_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n master: { value: input.master ?? null, isWritable: false },\n config: { value: input.config ?? null, isWritable: false },\n treasury: { value: input.treasury ?? null, isWritable: true },\n airdropMaster: { value: input.airdropMaster ?? null, isWritable: false },\n airdropMasterAuthority: {\n value: input.airdropMasterAuthority ?? null,\n isWritable: false,\n },\n affiliate: { value: input.affiliate ?? null, isWritable: true },\n sourceTokenAccount: {\n value: input.sourceTokenAccount ?? null,\n isWritable: true,\n },\n destinationTokenAccount: {\n value: input.destinationTokenAccount ?? null,\n isWritable: true,\n },\n airdrop: { value: input.airdrop ?? null, isWritable: true },\n mint: { value: input.mint ?? null, isWritable: false },\n authority: { value: input.authority ?? null, isWritable: true },\n tokenProgram: { value: input.tokenProgram ?? null, isWritable: false },\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 ResolvedAccount\n >;\n\n // Resolve default values.\n if (!accounts.tokenProgram.value) {\n accounts.tokenProgram.value =\n \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\" as Address<\"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\">;\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(accounts.master),\n getAccountMeta(accounts.config),\n getAccountMeta(accounts.treasury),\n getAccountMeta(accounts.airdropMaster),\n getAccountMeta(accounts.airdropMasterAuthority),\n getAccountMeta(accounts.affiliate),\n getAccountMeta(accounts.sourceTokenAccount),\n getAccountMeta(accounts.destinationTokenAccount),\n getAccountMeta(accounts.airdrop),\n getAccountMeta(accounts.mint),\n getAccountMeta(accounts.authority),\n getAccountMeta(accounts.tokenProgram),\n getAccountMeta(accounts.associatedTokenProgram),\n getAccountMeta(accounts.systemProgram),\n ],\n data: getRedeemAirdropTokensInstructionDataEncoder().encode({}),\n programAddress,\n } as RedeemAirdropTokensInstruction<\n TProgramAddress,\n TAccountMaster,\n TAccountConfig,\n TAccountTreasury,\n TAccountAirdropMaster,\n TAccountAirdropMasterAuthority,\n TAccountAffiliate,\n TAccountSourceTokenAccount,\n TAccountDestinationTokenAccount,\n TAccountAirdrop,\n TAccountMint,\n TAccountAuthority,\n TAccountTokenProgram,\n TAccountAssociatedTokenProgram,\n TAccountSystemProgram\n >);\n}\n\nexport type ParsedRedeemAirdropTokensInstruction<\n TProgram extends string = typeof DROPSY_PROGRAM_ADDRESS,\n TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n programAddress: Address<TProgram>;\n accounts: {\n master: TAccountMetas[0];\n config: TAccountMetas[1];\n treasury: TAccountMetas[2];\n airdropMaster: TAccountMetas[3];\n /** Check with authority */\n airdropMasterAuthority: TAccountMetas[4];\n affiliate?: TAccountMetas[5] | undefined;\n sourceTokenAccount: TAccountMetas[6];\n destinationTokenAccount: TAccountMetas[7];\n airdrop: TAccountMetas[8];\n mint: TAccountMetas[9];\n authority: TAccountMetas[10];\n tokenProgram: TAccountMetas[11];\n associatedTokenProgram: TAccountMetas[12];\n systemProgram: TAccountMetas[13];\n };\n data: RedeemAirdropTokensInstructionData;\n};\n\nexport function parseRedeemAirdropTokensInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>,\n): ParsedRedeemAirdropTokensInstruction<TProgram, TAccountMetas> {\n if (instruction.accounts.length < 14) {\n // TODO: Coded error.\n throw new Error(\"Not enough accounts\");\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 === DROPSY_PROGRAM_ADDRESS\n ? undefined\n : accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n master: getNextAccount(),\n config: getNextAccount(),\n treasury: getNextAccount(),\n airdropMaster: getNextAccount(),\n airdropMasterAuthority: getNextAccount(),\n affiliate: getNextOptionalAccount(),\n sourceTokenAccount: getNextAccount(),\n destinationTokenAccount: getNextAccount(),\n airdrop: getNextAccount(),\n mint: getNextAccount(),\n authority: getNextAccount(),\n tokenProgram: getNextAccount(),\n associatedTokenProgram: getNextAccount(),\n systemProgram: getNextAccount(),\n },\n data: getRedeemAirdropTokensInstructionDataDecoder().decode(\n instruction.data,\n ),\n };\n}\n","import {\r\n Address,\r\n getAddressEncoder,\r\n getProgramDerivedAddress,\r\n ProgramDerivedAddressBump,\r\n ReadonlyUint8Array,\r\n} from \"@solana/kit\";\r\nimport { DROPSY_PROGRAM_ADDRESS } from \"../programs\";\r\nimport { AFFILIATE_SEED, AIRDROP_CONFIG_SEED, AIRDROP_MASTER_SEED, AIRDROP_SEED, BITMAP_SEED, DROPSY_MASTER_SEED } from \"../constants\";\r\n\r\nexport type DropsyPda = readonly [Address<string>, ProgramDerivedAddressBump];\r\ntype Seed = ReadonlyUint8Array | string;\r\n\r\nexport async function getDropsyDerivedAddress(\r\n seeds: Seed[]\r\n): Promise<DropsyPda> {\r\n return await getProgramDerivedAddress({\r\n seeds,\r\n programAddress: DROPSY_PROGRAM_ADDRESS,\r\n });\r\n}\r\n\r\nexport async function getMasterDerivedAddress(): Promise<DropsyPda> {\r\n return await getDropsyDerivedAddress([DROPSY_MASTER_SEED]);\r\n}\r\nexport async function getAirdropConfigDerivedAddress(): Promise<DropsyPda> {\r\n return await getDropsyDerivedAddress([AIRDROP_CONFIG_SEED]);\r\n}\r\nexport async function getAirdropMasterDerivedAddress(\r\n authority: Address\r\n): Promise<DropsyPda> {\r\n const seeds = [\r\n AIRDROP_MASTER_SEED,\r\n getAddressEncoder().encode(authority),\r\n ];\r\n return await getDropsyDerivedAddress(seeds);\r\n}\r\nexport async function getAffiliateDerivedAddress(\r\n authority: Address\r\n): Promise<DropsyPda> {\r\n const seeds = [\r\n AFFILIATE_SEED,\r\n getAddressEncoder().encode(authority),\r\n ];\r\n return await getDropsyDerivedAddress(seeds);\r\n}\r\n\r\nexport async function getAirdropDerivedAddress(\r\n authority: Address,\r\n mint: Address\r\n): Promise<DropsyPda> {\r\n const seeds = [\r\n AIRDROP_SEED,\r\n getAddressEncoder().encode(mint),\r\n getAddressEncoder().encode(authority),\r\n ];\r\n return await getDropsyDerivedAddress(seeds);\r\n}\r\n\r\nexport async function getClaimMapDerivedAddress(\r\n airdrop: Address,\r\n id: number\r\n): Promise<DropsyPda> {\r\n const idBuffer = Buffer.alloc(2);\r\n idBuffer.writeUInt16LE(id);\r\n const seeds = [\r\n BITMAP_SEED,\r\n getAddressEncoder().encode(airdrop),\r\n idBuffer,\r\n ];\r\n return await getDropsyDerivedAddress(seeds);\r\n}\r\n","import { address } from \"@solana/kit\";\r\n\r\n/**\r\n * -------------------------\r\n * PDA Seed Constants\r\n * -------------------------\r\n * Used for deriving program addresses (PDAs) in Dropsy\r\n */\r\nexport const DROPSY_MASTER_SEED = \"master\";\r\nexport const AIRDROP_CONFIG_SEED = \"airdrop_config\";\r\nexport const AFFILIATE_MASTER_SEED = \"affiliate_master\";\r\nexport const AIRDROP_MASTER_SEED = \"airdrop_master\";\r\n\r\nexport const AIRDROP_SEED = \"airdrop\";\r\nexport const AFFILIATE_SEED = \"affiliate\";\r\nexport const BITMAP_SEED = \"bitmap\";\r\nexport const VESTING_SEED = \"vesting\";\r\n\r\nexport const PRESALE_SEED = \"presale\";\r\nexport const VAULT_SEED = \"vault\";\r\n\r\n/**\r\n * -------------------------\r\n * Admin / Protocol Keys\r\n * -------------------------\r\n */\r\nexport const ADMIN = address(\"8mtUD2XrkNnTxnjCehZ4DEtTXeGR1yrepSEGhCaSj2kT\");\r\n\r\n/**\r\n * -------------------------\r\n * Bitmap / Claim Config\r\n * -------------------------\r\n */\r\nexport const BITMAP_SIZE = 8000; // in bytes\r\nexport const MAX_BITMAP_CLAIM = BITMAP_SIZE * 8; // max number of claim slots\r\n\r\n/**\r\n * -------------------------\r\n * Airdrop Versions\r\n * -------------------------\r\n */\r\nexport const VERSION_BASIC = 0; // BasicAirdrop (MVP)\r\nexport const VERSION_VESTED = 1; // Vested / advanced airdrop\r\n\r\n/**\r\n * -------------------------\r\n * Airdrop State\r\n * -------------------------\r\n */\r\nexport const STATE_INITIALIZED = 0; // default\r\nexport const STATE_DELEGATED = 1; // airdrop is delegated\r\nexport const STATE_REDEEMED = 2; // airdrop tokens redeemed\r\n\r\n/**\r\n * -------------------------\r\n * Mutability Flags\r\n * -------------------------\r\n */\r\nexport const MUTABLE_NONE = 0; // immutable\r\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;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","names":["address","import_kit","address","import_kit","address","import_kit","address","import_kit","address","import_kit","address","import_kit","address","import_kit","import_kit","DropsyAccount","DropsyInstruction","import_kit","import_kit","kitIsTransactionSigner","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/accounts/affiliate.ts","../src/accounts/affiliateMaster.ts","../src/accounts/airdrop.ts","../src/accounts/airdropConfig.ts","../src/accounts/airdropMaster.ts","../src/accounts/claimMap.ts","../src/accounts/master.ts","../src/errors/dropsy.ts","../src/programs/dropsy.ts","../src/instructions/claimAirdrop.ts","../src/shared/index.ts","../src/instructions/createAirdrop.ts","../src/constants/index.ts","../src/utils/client.ts","../src/utils/derive.ts","../src/utils/helper.ts","../src/utils/merkle.ts","../src/instructions/createClaimMap.ts","../src/instructions/depositTokens.ts","../src/instructions/initializeAirdropMaster.ts","../src/types/advancedFeeConfig.ts","../src/types/airdropBoosted.ts","../src/types/airdropClosed.ts","../src/types/airdropDelegated.ts","../src/types/airdropInitialized.ts","../src/types/airdropUpdated.ts","../src/types/baseDurationConfig.ts","../src/types/baseFeatureFeeConfig.ts","../src/types/baseFeeConfig.ts","../src/types/claimMapClosed.ts","../src/types/claimMapInitialized.ts","../src/types/initAirdropConfigArgs.ts","../src/types/masterInitialized.ts","../src/types/tokensDeposited.ts","../src/types/tokensRedeemed.ts","../src/instructions/initializeMaster.ts","../src/instructions/redeemAirdropTokens.ts"],"sourcesContent":["/**\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\nexport * from \"./accounts\";\nexport * from \"./errors\";\nexport * from \"./instructions\";\nexport * from \"./programs\";\nexport * from \"./types\";\nexport * from \"./utils\";\nexport * from \"./constants\";\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 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 AFFILIATE_DISCRIMINATOR = new Uint8Array([\n 136, 95, 107, 149, 36, 195, 146, 35,\n]);\n\nexport function getAffiliateDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(AFFILIATE_DISCRIMINATOR);\n}\n\nexport type Affiliate = {\n discriminator: ReadonlyUint8Array;\n master: Address;\n authority: Address;\n totalEarned: bigint;\n referrals: number;\n level: number;\n bump: number;\n};\n\nexport type AffiliateArgs = {\n master: Address;\n authority: Address;\n totalEarned: number | bigint;\n referrals: number;\n level: number;\n bump: number;\n};\n\n/** Gets the encoder for {@link AffiliateArgs} account data. */\nexport function getAffiliateEncoder(): FixedSizeEncoder<AffiliateArgs> {\n return transformEncoder(\n getStructEncoder([\n [\"discriminator\", fixEncoderSize(getBytesEncoder(), 8)],\n [\"master\", getAddressEncoder()],\n [\"authority\", getAddressEncoder()],\n [\"totalEarned\", getU64Encoder()],\n [\"referrals\", getU32Encoder()],\n [\"level\", getU8Encoder()],\n [\"bump\", getU8Encoder()],\n ]),\n (value) => ({ ...value, discriminator: AFFILIATE_DISCRIMINATOR }),\n );\n}\n\n/** Gets the decoder for {@link Affiliate} account data. */\nexport function getAffiliateDecoder(): FixedSizeDecoder<Affiliate> {\n return getStructDecoder([\n [\"discriminator\", fixDecoderSize(getBytesDecoder(), 8)],\n [\"master\", getAddressDecoder()],\n [\"authority\", getAddressDecoder()],\n [\"totalEarned\", getU64Decoder()],\n [\"referrals\", getU32Decoder()],\n [\"level\", getU8Decoder()],\n [\"bump\", getU8Decoder()],\n ]);\n}\n\n/** Gets the codec for {@link Affiliate} account data. */\nexport function getAffiliateCodec(): FixedSizeCodec<AffiliateArgs, Affiliate> {\n return combineCodec(getAffiliateEncoder(), getAffiliateDecoder());\n}\n\nexport function decodeAffiliate<TAddress extends string = string>(\n encodedAccount: EncodedAccount<TAddress>,\n): Account<Affiliate, TAddress>;\nexport function decodeAffiliate<TAddress extends string = string>(\n encodedAccount: MaybeEncodedAccount<TAddress>,\n): MaybeAccount<Affiliate, TAddress>;\nexport function decodeAffiliate<TAddress extends string = string>(\n encodedAccount: EncodedAccount<TAddress> | MaybeEncodedAccount<TAddress>,\n): Account<Affiliate, TAddress> | MaybeAccount<Affiliate, TAddress> {\n return decodeAccount(\n encodedAccount as MaybeEncodedAccount<TAddress>,\n getAffiliateDecoder(),\n );\n}\n\nexport async function fetchAffiliate<TAddress extends string = string>(\n rpc: Parameters<typeof fetchEncodedAccount>[0],\n address: Address<TAddress>,\n config?: FetchAccountConfig,\n): Promise<Account<Affiliate, TAddress>> {\n const maybeAccount = await fetchMaybeAffiliate(rpc, address, config);\n assertAccountExists(maybeAccount);\n return maybeAccount;\n}\n\nexport async function fetchMaybeAffiliate<TAddress extends string = string>(\n rpc: Parameters<typeof fetchEncodedAccount>[0],\n address: Address<TAddress>,\n config?: FetchAccountConfig,\n): Promise<MaybeAccount<Affiliate, TAddress>> {\n const maybeAccount = await fetchEncodedAccount(rpc, address, config);\n return decodeAffiliate(maybeAccount);\n}\n\nexport async function fetchAllAffiliate(\n rpc: Parameters<typeof fetchEncodedAccounts>[0],\n addresses: Array<Address>,\n config?: FetchAccountsConfig,\n): Promise<Account<Affiliate>[]> {\n const maybeAccounts = await fetchAllMaybeAffiliate(rpc, addresses, config);\n assertAccountsExist(maybeAccounts);\n return maybeAccounts;\n}\n\nexport async function fetchAllMaybeAffiliate(\n rpc: Parameters<typeof fetchEncodedAccounts>[0],\n addresses: Array<Address>,\n config?: FetchAccountsConfig,\n): Promise<MaybeAccount<Affiliate>[]> {\n const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config);\n return maybeAccounts.map((maybeAccount) => decodeAffiliate(maybeAccount));\n}\n\nexport function getAffiliateSize(): number {\n return 86;\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 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\";\n\nexport const AFFILIATE_MASTER_DISCRIMINATOR = new Uint8Array([\n 25, 57, 134, 31, 30, 203, 219, 215,\n]);\n\nexport function getAffiliateMasterDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n AFFILIATE_MASTER_DISCRIMINATOR,\n );\n}\n\nexport type AffiliateMaster = {\n discriminator: ReadonlyUint8Array;\n authority: Address;\n tokenMint: Address;\n affiliatesCreated: bigint;\n maxAffiliatesAllowed: bigint;\n totalFeesCollected: bigint;\n affiliateCreationFee: bigint;\n affiliateUpgradeAmount: bigint;\n affiliateWithdrawFeeBasis: number;\n burnPercentageBasis: number;\n treasuryPercentageBasis: number;\n upgradeRewardPercentageBasis: number;\n bump: number;\n};\n\nexport type AffiliateMasterArgs = {\n authority: Address;\n tokenMint: Address;\n affiliatesCreated: number | bigint;\n maxAffiliatesAllowed: number | bigint;\n totalFeesCollected: number | bigint;\n affiliateCreationFee: number | bigint;\n affiliateUpgradeAmount: number | bigint;\n affiliateWithdrawFeeBasis: number;\n burnPercentageBasis: number;\n treasuryPercentageBasis: number;\n upgradeRewardPercentageBasis: number;\n bump: number;\n};\n\n/** Gets the encoder for {@link AffiliateMasterArgs} account data. */\nexport function getAffiliateMasterEncoder(): FixedSizeEncoder<AffiliateMasterArgs> {\n return transformEncoder(\n getStructEncoder([\n [\"discriminator\", fixEncoderSize(getBytesEncoder(), 8)],\n [\"authority\", getAddressEncoder()],\n [\"tokenMint\", getAddressEncoder()],\n [\"affiliatesCreated\", getU64Encoder()],\n [\"maxAffiliatesAllowed\", getU64Encoder()],\n [\"totalFeesCollected\", getU64Encoder()],\n [\"affiliateCreationFee\", getU64Encoder()],\n [\"affiliateUpgradeAmount\", getU64Encoder()],\n [\"affiliateWithdrawFeeBasis\", getU16Encoder()],\n [\"burnPercentageBasis\", getU16Encoder()],\n [\"treasuryPercentageBasis\", getU16Encoder()],\n [\"upgradeRewardPercentageBasis\", getU16Encoder()],\n [\"bump\", getU8Encoder()],\n ]),\n (value) => ({ ...value, discriminator: AFFILIATE_MASTER_DISCRIMINATOR }),\n );\n}\n\n/** Gets the decoder for {@link AffiliateMaster} account data. */\nexport function getAffiliateMasterDecoder(): FixedSizeDecoder<AffiliateMaster> {\n return getStructDecoder([\n [\"discriminator\", fixDecoderSize(getBytesDecoder(), 8)],\n [\"authority\", getAddressDecoder()],\n [\"tokenMint\", getAddressDecoder()],\n [\"affiliatesCreated\", getU64Decoder()],\n [\"maxAffiliatesAllowed\", getU64Decoder()],\n [\"totalFeesCollected\", getU64Decoder()],\n [\"affiliateCreationFee\", getU64Decoder()],\n [\"affiliateUpgradeAmount\", getU64Decoder()],\n [\"affiliateWithdrawFeeBasis\", getU16Decoder()],\n [\"burnPercentageBasis\", getU16Decoder()],\n [\"treasuryPercentageBasis\", getU16Decoder()],\n [\"upgradeRewardPercentageBasis\", getU16Decoder()],\n [\"bump\", getU8Decoder()],\n ]);\n}\n\n/** Gets the codec for {@link AffiliateMaster} account data. */\nexport function getAffiliateMasterCodec(): FixedSizeCodec<\n AffiliateMasterArgs,\n AffiliateMaster\n> {\n return combineCodec(getAffiliateMasterEncoder(), getAffiliateMasterDecoder());\n}\n\nexport function decodeAffiliateMaster<TAddress extends string = string>(\n encodedAccount: EncodedAccount<TAddress>,\n): Account<AffiliateMaster, TAddress>;\nexport function decodeAffiliateMaster<TAddress extends string = string>(\n encodedAccount: MaybeEncodedAccount<TAddress>,\n): MaybeAccount<AffiliateMaster, TAddress>;\nexport function decodeAffiliateMaster<TAddress extends string = string>(\n encodedAccount: EncodedAccount<TAddress> | MaybeEncodedAccount<TAddress>,\n):\n | Account<AffiliateMaster, TAddress>\n | MaybeAccount<AffiliateMaster, TAddress> {\n return decodeAccount(\n encodedAccount as MaybeEncodedAccount<TAddress>,\n getAffiliateMasterDecoder(),\n );\n}\n\nexport async function fetchAffiliateMaster<TAddress extends string = string>(\n rpc: Parameters<typeof fetchEncodedAccount>[0],\n address: Address<TAddress>,\n config?: FetchAccountConfig,\n): Promise<Account<AffiliateMaster, TAddress>> {\n const maybeAccount = await fetchMaybeAffiliateMaster(rpc, address, config);\n assertAccountExists(maybeAccount);\n return maybeAccount;\n}\n\nexport async function fetchMaybeAffiliateMaster<\n TAddress extends string = string,\n>(\n rpc: Parameters<typeof fetchEncodedAccount>[0],\n address: Address<TAddress>,\n config?: FetchAccountConfig,\n): Promise<MaybeAccount<AffiliateMaster, TAddress>> {\n const maybeAccount = await fetchEncodedAccount(rpc, address, config);\n return decodeAffiliateMaster(maybeAccount);\n}\n\nexport async function fetchAllAffiliateMaster(\n rpc: Parameters<typeof fetchEncodedAccounts>[0],\n addresses: Array<Address>,\n config?: FetchAccountsConfig,\n): Promise<Account<AffiliateMaster>[]> {\n const maybeAccounts = await fetchAllMaybeAffiliateMaster(\n rpc,\n addresses,\n config,\n );\n assertAccountsExist(maybeAccounts);\n return maybeAccounts;\n}\n\nexport async function fetchAllMaybeAffiliateMaster(\n rpc: Parameters<typeof fetchEncodedAccounts>[0],\n addresses: Array<Address>,\n config?: FetchAccountsConfig,\n): Promise<MaybeAccount<AffiliateMaster>[]> {\n const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config);\n return maybeAccounts.map((maybeAccount) =>\n decodeAffiliateMaster(maybeAccount),\n );\n}\n\nexport function getAffiliateMasterSize(): number {\n return 121;\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 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 AIRDROP_DISCRIMINATOR = new Uint8Array([\n 31, 112, 159, 158, 124, 237, 9, 241,\n]);\n\nexport function getAirdropDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(AIRDROP_DISCRIMINATOR);\n}\n\nexport type Airdrop = {\n discriminator: ReadonlyUint8Array;\n master: Address;\n authority: Address;\n mint: Address;\n delegateAuthority: Address;\n presale: Address;\n merkleRoot: ReadonlyUint8Array;\n supply: bigint;\n boost: bigint;\n startsAt: bigint;\n endsAt: bigint;\n bitmapCount: number;\n delegatePermissions: number;\n mutable: number;\n state: number;\n version: number;\n bump: number;\n padding: ReadonlyUint8Array;\n};\n\nexport type AirdropArgs = {\n master: Address;\n authority: Address;\n mint: Address;\n delegateAuthority: Address;\n presale: Address;\n merkleRoot: ReadonlyUint8Array;\n supply: number | bigint;\n boost: number | bigint;\n startsAt: number | bigint;\n endsAt: number | bigint;\n bitmapCount: number;\n delegatePermissions: number;\n mutable: number;\n state: number;\n version: number;\n bump: number;\n padding: ReadonlyUint8Array;\n};\n\n/** Gets the encoder for {@link AirdropArgs} account data. */\nexport function getAirdropEncoder(): FixedSizeEncoder<AirdropArgs> {\n return transformEncoder(\n getStructEncoder([\n [\"discriminator\", fixEncoderSize(getBytesEncoder(), 8)],\n [\"master\", getAddressEncoder()],\n [\"authority\", getAddressEncoder()],\n [\"mint\", getAddressEncoder()],\n [\"delegateAuthority\", getAddressEncoder()],\n [\"presale\", getAddressEncoder()],\n [\"merkleRoot\", fixEncoderSize(getBytesEncoder(), 32)],\n [\"supply\", getU64Encoder()],\n [\"boost\", getU64Encoder()],\n [\"startsAt\", getI64Encoder()],\n [\"endsAt\", getI64Encoder()],\n [\"bitmapCount\", getU16Encoder()],\n [\"delegatePermissions\", getU8Encoder()],\n [\"mutable\", getU8Encoder()],\n [\"state\", getU8Encoder()],\n [\"version\", getU8Encoder()],\n [\"bump\", getU8Encoder()],\n [\"padding\", fixEncoderSize(getBytesEncoder(), 1)],\n ]),\n (value) => ({ ...value, discriminator: AIRDROP_DISCRIMINATOR }),\n );\n}\n\n/** Gets the decoder for {@link Airdrop} account data. */\nexport function getAirdropDecoder(): FixedSizeDecoder<Airdrop> {\n return getStructDecoder([\n [\"discriminator\", fixDecoderSize(getBytesDecoder(), 8)],\n [\"master\", getAddressDecoder()],\n [\"authority\", getAddressDecoder()],\n [\"mint\", getAddressDecoder()],\n [\"delegateAuthority\", getAddressDecoder()],\n [\"presale\", getAddressDecoder()],\n [\"merkleRoot\", fixDecoderSize(getBytesDecoder(), 32)],\n [\"supply\", getU64Decoder()],\n [\"boost\", getU64Decoder()],\n [\"startsAt\", getI64Decoder()],\n [\"endsAt\", getI64Decoder()],\n [\"bitmapCount\", getU16Decoder()],\n [\"delegatePermissions\", getU8Decoder()],\n [\"mutable\", getU8Decoder()],\n [\"state\", getU8Decoder()],\n [\"version\", getU8Decoder()],\n [\"bump\", getU8Decoder()],\n [\"padding\", fixDecoderSize(getBytesDecoder(), 1)],\n ]);\n}\n\n/** Gets the codec for {@link Airdrop} account data. */\nexport function getAirdropCodec(): FixedSizeCodec<AirdropArgs, Airdrop> {\n return combineCodec(getAirdropEncoder(), getAirdropDecoder());\n}\n\nexport function decodeAirdrop<TAddress extends string = string>(\n encodedAccount: EncodedAccount<TAddress>,\n): Account<Airdrop, TAddress>;\nexport function decodeAirdrop<TAddress extends string = string>(\n encodedAccount: MaybeEncodedAccount<TAddress>,\n): MaybeAccount<Airdrop, TAddress>;\nexport function decodeAirdrop<TAddress extends string = string>(\n encodedAccount: EncodedAccount<TAddress> | MaybeEncodedAccount<TAddress>,\n): Account<Airdrop, TAddress> | MaybeAccount<Airdrop, TAddress> {\n return decodeAccount(\n encodedAccount as MaybeEncodedAccount<TAddress>,\n getAirdropDecoder(),\n );\n}\n\nexport async function fetchAirdrop<TAddress extends string = string>(\n rpc: Parameters<typeof fetchEncodedAccount>[0],\n address: Address<TAddress>,\n config?: FetchAccountConfig,\n): Promise<Account<Airdrop, TAddress>> {\n const maybeAccount = await fetchMaybeAirdrop(rpc, address, config);\n assertAccountExists(maybeAccount);\n return maybeAccount;\n}\n\nexport async function fetchMaybeAirdrop<TAddress extends string = string>(\n rpc: Parameters<typeof fetchEncodedAccount>[0],\n address: Address<TAddress>,\n config?: FetchAccountConfig,\n): Promise<MaybeAccount<Airdrop, TAddress>> {\n const maybeAccount = await fetchEncodedAccount(rpc, address, config);\n return decodeAirdrop(maybeAccount);\n}\n\nexport async function fetchAllAirdrop(\n rpc: Parameters<typeof fetchEncodedAccounts>[0],\n addresses: Array<Address>,\n config?: FetchAccountsConfig,\n): Promise<Account<Airdrop>[]> {\n const maybeAccounts = await fetchAllMaybeAirdrop(rpc, addresses, config);\n assertAccountsExist(maybeAccounts);\n return maybeAccounts;\n}\n\nexport async function fetchAllMaybeAirdrop(\n rpc: Parameters<typeof fetchEncodedAccounts>[0],\n addresses: Array<Address>,\n config?: FetchAccountsConfig,\n): Promise<MaybeAccount<Airdrop>[]> {\n const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config);\n return maybeAccounts.map((maybeAccount) => decodeAirdrop(maybeAccount));\n}\n\nexport function getAirdropSize(): number {\n return 240;\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 getBytesDecoder,\n getBytesEncoder,\n getI64Decoder,\n getI64Encoder,\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 AIRDROP_CONFIG_DISCRIMINATOR = new Uint8Array([\n 194, 149, 223, 142, 42, 98, 128, 16,\n]);\n\nexport function getAirdropConfigDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n AIRDROP_CONFIG_DISCRIMINATOR,\n );\n}\n\nexport type AirdropConfig = {\n discriminator: ReadonlyUint8Array;\n merkleRoot: ReadonlyUint8Array;\n minAirdropDuration: bigint;\n maxAirdropDuration: bigint;\n updateGracePeriod: bigint;\n createAirdropMasterFee: bigint;\n upgradeAirdropMasterFee: bigint;\n withdrawFeeBasis: bigint;\n perBoostAmount: bigint;\n bump: number;\n};\n\nexport type AirdropConfigArgs = {\n merkleRoot: ReadonlyUint8Array;\n minAirdropDuration: number | bigint;\n maxAirdropDuration: number | bigint;\n updateGracePeriod: number | bigint;\n createAirdropMasterFee: number | bigint;\n upgradeAirdropMasterFee: number | bigint;\n withdrawFeeBasis: number | bigint;\n perBoostAmount: number | bigint;\n bump: number;\n};\n\n/** Gets the encoder for {@link AirdropConfigArgs} account data. */\nexport function getAirdropConfigEncoder(): FixedSizeEncoder<AirdropConfigArgs> {\n return transformEncoder(\n getStructEncoder([\n [\"discriminator\", fixEncoderSize(getBytesEncoder(), 8)],\n [\"merkleRoot\", fixEncoderSize(getBytesEncoder(), 32)],\n [\"minAirdropDuration\", getI64Encoder()],\n [\"maxAirdropDuration\", getI64Encoder()],\n [\"updateGracePeriod\", getI64Encoder()],\n [\"createAirdropMasterFee\", getU64Encoder()],\n [\"upgradeAirdropMasterFee\", getU64Encoder()],\n [\"withdrawFeeBasis\", getU64Encoder()],\n [\"perBoostAmount\", getU64Encoder()],\n [\"bump\", getU8Encoder()],\n ]),\n (value) => ({ ...value, discriminator: AIRDROP_CONFIG_DISCRIMINATOR }),\n );\n}\n\n/** Gets the decoder for {@link AirdropConfig} account data. */\nexport function getAirdropConfigDecoder(): FixedSizeDecoder<AirdropConfig> {\n return getStructDecoder([\n [\"discriminator\", fixDecoderSize(getBytesDecoder(), 8)],\n [\"merkleRoot\", fixDecoderSize(getBytesDecoder(), 32)],\n [\"minAirdropDuration\", getI64Decoder()],\n [\"maxAirdropDuration\", getI64Decoder()],\n [\"updateGracePeriod\", getI64Decoder()],\n [\"createAirdropMasterFee\", getU64Decoder()],\n [\"upgradeAirdropMasterFee\", getU64Decoder()],\n [\"withdrawFeeBasis\", getU64Decoder()],\n [\"perBoostAmount\", getU64Decoder()],\n [\"bump\", getU8Decoder()],\n ]);\n}\n\n/** Gets the codec for {@link AirdropConfig} account data. */\nexport function getAirdropConfigCodec(): FixedSizeCodec<\n AirdropConfigArgs,\n AirdropConfig\n> {\n return combineCodec(getAirdropConfigEncoder(), getAirdropConfigDecoder());\n}\n\nexport function decodeAirdropConfig<TAddress extends string = string>(\n encodedAccount: EncodedAccount<TAddress>,\n): Account<AirdropConfig, TAddress>;\nexport function decodeAirdropConfig<TAddress extends string = string>(\n encodedAccount: MaybeEncodedAccount<TAddress>,\n): MaybeAccount<AirdropConfig, TAddress>;\nexport function decodeAirdropConfig<TAddress extends string = string>(\n encodedAccount: EncodedAccount<TAddress> | MaybeEncodedAccount<TAddress>,\n): Account<AirdropConfig, TAddress> | MaybeAccount<AirdropConfig, TAddress> {\n return decodeAccount(\n encodedAccount as MaybeEncodedAccount<TAddress>,\n getAirdropConfigDecoder(),\n );\n}\n\nexport async function fetchAirdropConfig<TAddress extends string = string>(\n rpc: Parameters<typeof fetchEncodedAccount>[0],\n address: Address<TAddress>,\n config?: FetchAccountConfig,\n): Promise<Account<AirdropConfig, TAddress>> {\n const maybeAccount = await fetchMaybeAirdropConfig(rpc, address, config);\n assertAccountExists(maybeAccount);\n return maybeAccount;\n}\n\nexport async function fetchMaybeAirdropConfig<TAddress extends string = string>(\n rpc: Parameters<typeof fetchEncodedAccount>[0],\n address: Address<TAddress>,\n config?: FetchAccountConfig,\n): Promise<MaybeAccount<AirdropConfig, TAddress>> {\n const maybeAccount = await fetchEncodedAccount(rpc, address, config);\n return decodeAirdropConfig(maybeAccount);\n}\n\nexport async function fetchAllAirdropConfig(\n rpc: Parameters<typeof fetchEncodedAccounts>[0],\n addresses: Array<Address>,\n config?: FetchAccountsConfig,\n): Promise<Account<AirdropConfig>[]> {\n const maybeAccounts = await fetchAllMaybeAirdropConfig(\n rpc,\n addresses,\n config,\n );\n assertAccountsExist(maybeAccounts);\n return maybeAccounts;\n}\n\nexport async function fetchAllMaybeAirdropConfig(\n rpc: Parameters<typeof fetchEncodedAccounts>[0],\n addresses: Array<Address>,\n config?: FetchAccountsConfig,\n): Promise<MaybeAccount<AirdropConfig>[]> {\n const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config);\n return maybeAccounts.map((maybeAccount) => decodeAirdropConfig(maybeAccount));\n}\n\nexport function getAirdropConfigSize(): number {\n return 97;\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 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 AIRDROP_MASTER_DISCRIMINATOR = new Uint8Array([\n 31, 109, 100, 62, 106, 173, 5, 4,\n]);\n\nexport function getAirdropMasterDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n AIRDROP_MASTER_DISCRIMINATOR,\n );\n}\n\nexport type AirdropMaster = {\n discriminator: ReadonlyUint8Array;\n affiliateMaster: Address;\n authority: Address;\n merkleRoot: ReadonlyUint8Array;\n airdropsCreated: bigint;\n maxAirdropsAllowed: bigint;\n bitmapCreated: bigint;\n maxBitmapAllowed: bigint;\n airdropCreationFee: bigint;\n bitmapCreationFee: bigint;\n airdropUpdateFee: bigint;\n airdropClaimFee: bigint;\n airdropDelegateFee: bigint;\n airdropDepositFee: bigint;\n bump: number;\n padding: ReadonlyUint8Array;\n};\n\nexport type AirdropMasterArgs = {\n affiliateMaster: Address;\n authority: Address;\n merkleRoot: ReadonlyUint8Array;\n airdropsCreated: number | bigint;\n maxAirdropsAllowed: number | bigint;\n bitmapCreated: number | bigint;\n maxBitmapAllowed: number | bigint;\n airdropCreationFee: number | bigint;\n bitmapCreationFee: number | bigint;\n airdropUpdateFee: number | bigint;\n airdropClaimFee: number | bigint;\n airdropDelegateFee: number | bigint;\n airdropDepositFee: number | bigint;\n bump: number;\n padding: ReadonlyUint8Array;\n};\n\n/** Gets the encoder for {@link AirdropMasterArgs} account data. */\nexport function getAirdropMasterEncoder(): FixedSizeEncoder<AirdropMasterArgs> {\n return transformEncoder(\n getStructEncoder([\n [\"discriminator\", fixEncoderSize(getBytesEncoder(), 8)],\n [\"affiliateMaster\", getAddressEncoder()],\n [\"authority\", getAddressEncoder()],\n [\"merkleRoot\", fixEncoderSize(getBytesEncoder(), 32)],\n [\"airdropsCreated\", getU64Encoder()],\n [\"maxAirdropsAllowed\", getU64Encoder()],\n [\"bitmapCreated\", getU64Encoder()],\n [\"maxBitmapAllowed\", getU64Encoder()],\n [\"airdropCreationFee\", getU64Encoder()],\n [\"bitmapCreationFee\", getU64Encoder()],\n [\"airdropUpdateFee\", getU64Encoder()],\n [\"airdropClaimFee\", getU64Encoder()],\n [\"airdropDelegateFee\", getU64Encoder()],\n [\"airdropDepositFee\", getU64Encoder()],\n [\"bump\", getU8Encoder()],\n [\"padding\", fixEncoderSize(getBytesEncoder(), 7)],\n ]),\n (value) => ({ ...value, discriminator: AIRDROP_MASTER_DISCRIMINATOR }),\n );\n}\n\n/** Gets the decoder for {@link AirdropMaster} account data. */\nexport function getAirdropMasterDecoder(): FixedSizeDecoder<AirdropMaster> {\n return getStructDecoder([\n [\"discriminator\", fixDecoderSize(getBytesDecoder(), 8)],\n [\"affiliateMaster\", getAddressDecoder()],\n [\"authority\", getAddressDecoder()],\n [\"merkleRoot\", fixDecoderSize(getBytesDecoder(), 32)],\n [\"airdropsCreated\", getU64Decoder()],\n [\"maxAirdropsAllowed\", getU64Decoder()],\n [\"bitmapCreated\", getU64Decoder()],\n [\"maxBitmapAllowed\", getU64Decoder()],\n [\"airdropCreationFee\", getU64Decoder()],\n [\"bitmapCreationFee\", getU64Decoder()],\n [\"airdropUpdateFee\", getU64Decoder()],\n [\"airdropClaimFee\", getU64Decoder()],\n [\"airdropDelegateFee\", getU64Decoder()],\n [\"airdropDepositFee\", getU64Decoder()],\n [\"bump\", getU8Decoder()],\n [\"padding\", fixDecoderSize(getBytesDecoder(), 7)],\n ]);\n}\n\n/** Gets the codec for {@link AirdropMaster} account data. */\nexport function getAirdropMasterCodec(): FixedSizeCodec<\n AirdropMasterArgs,\n AirdropMaster\n> {\n return combineCodec(getAirdropMasterEncoder(), getAirdropMasterDecoder());\n}\n\nexport function decodeAirdropMaster<TAddress extends string = string>(\n encodedAccount: EncodedAccount<TAddress>,\n): Account<AirdropMaster, TAddress>;\nexport function decodeAirdropMaster<TAddress extends string = string>(\n encodedAccount: MaybeEncodedAccount<TAddress>,\n): MaybeAccount<AirdropMaster, TAddress>;\nexport function decodeAirdropMaster<TAddress extends string = string>(\n encodedAccount: EncodedAccount<TAddress> | MaybeEncodedAccount<TAddress>,\n): Account<AirdropMaster, TAddress> | MaybeAccount<AirdropMaster, TAddress> {\n return decodeAccount(\n encodedAccount as MaybeEncodedAccount<TAddress>,\n getAirdropMasterDecoder(),\n );\n}\n\nexport async function fetchAirdropMaster<TAddress extends string = string>(\n rpc: Parameters<typeof fetchEncodedAccount>[0],\n address: Address<TAddress>,\n config?: FetchAccountConfig,\n): Promise<Account<AirdropMaster, TAddress>> {\n const maybeAccount = await fetchMaybeAirdropMaster(rpc, address, config);\n assertAccountExists(maybeAccount);\n return maybeAccount;\n}\n\nexport async function fetchMaybeAirdropMaster<TAddress extends string = string>(\n rpc: Parameters<typeof fetchEncodedAccount>[0],\n address: Address<TAddress>,\n config?: FetchAccountConfig,\n): Promise<MaybeAccount<AirdropMaster, TAddress>> {\n const maybeAccount = await fetchEncodedAccount(rpc, address, config);\n return decodeAirdropMaster(maybeAccount);\n}\n\nexport async function fetchAllAirdropMaster(\n rpc: Parameters<typeof fetchEncodedAccounts>[0],\n addresses: Array<Address>,\n config?: FetchAccountsConfig,\n): Promise<Account<AirdropMaster>[]> {\n const maybeAccounts = await fetchAllMaybeAirdropMaster(\n rpc,\n addresses,\n config,\n );\n assertAccountsExist(maybeAccounts);\n return maybeAccounts;\n}\n\nexport async function fetchAllMaybeAirdropMaster(\n rpc: Parameters<typeof fetchEncodedAccounts>[0],\n addresses: Array<Address>,\n config?: FetchAccountsConfig,\n): Promise<MaybeAccount<AirdropMaster>[]> {\n const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config);\n return maybeAccounts.map((maybeAccount) => decodeAirdropMaster(maybeAccount));\n}\n\nexport function getAirdropMasterSize(): 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 getBytesDecoder,\n getBytesEncoder,\n getStructDecoder,\n getStructEncoder,\n getU16Decoder,\n getU16Encoder,\n getU32Decoder,\n getU32Encoder,\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_MAP_DISCRIMINATOR = new Uint8Array([\n 193, 62, 74, 131, 13, 161, 53, 215,\n]);\n\nexport function getClaimMapDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(CLAIM_MAP_DISCRIMINATOR);\n}\n\nexport type ClaimMap = {\n discriminator: ReadonlyUint8Array;\n authority: Address;\n airdrop: Address;\n claimedBitmap: ReadonlyUint8Array;\n total: number;\n id: number;\n version: number;\n bump: number;\n};\n\nexport type ClaimMapArgs = {\n authority: Address;\n airdrop: Address;\n claimedBitmap: ReadonlyUint8Array;\n total: number;\n id: number;\n version: number;\n bump: number;\n};\n\n/** Gets the encoder for {@link ClaimMapArgs} account data. */\nexport function getClaimMapEncoder(): FixedSizeEncoder<ClaimMapArgs> {\n return transformEncoder(\n getStructEncoder([\n [\"discriminator\", fixEncoderSize(getBytesEncoder(), 8)],\n [\"authority\", getAddressEncoder()],\n [\"airdrop\", getAddressEncoder()],\n [\"claimedBitmap\", fixEncoderSize(getBytesEncoder(), 8000)],\n [\"total\", getU32Encoder()],\n [\"id\", getU16Encoder()],\n [\"version\", getU8Encoder()],\n [\"bump\", getU8Encoder()],\n ]),\n (value) => ({ ...value, discriminator: CLAIM_MAP_DISCRIMINATOR }),\n );\n}\n\n/** Gets the decoder for {@link ClaimMap} account data. */\nexport function getClaimMapDecoder(): FixedSizeDecoder<ClaimMap> {\n return getStructDecoder([\n [\"discriminator\", fixDecoderSize(getBytesDecoder(), 8)],\n [\"authority\", getAddressDecoder()],\n [\"airdrop\", getAddressDecoder()],\n [\"claimedBitmap\", fixDecoderSize(getBytesDecoder(), 8000)],\n [\"total\", getU32Decoder()],\n [\"id\", getU16Decoder()],\n [\"version\", getU8Decoder()],\n [\"bump\", getU8Decoder()],\n ]);\n}\n\n/** Gets the codec for {@link ClaimMap} account data. */\nexport function getClaimMapCodec(): FixedSizeCodec<ClaimMapArgs, ClaimMap> {\n return combineCodec(getClaimMapEncoder(), getClaimMapDecoder());\n}\n\nexport function decodeClaimMap<TAddress extends string = string>(\n encodedAccount: EncodedAccount<TAddress>,\n): Account<ClaimMap, TAddress>;\nexport function decodeClaimMap<TAddress extends string = string>(\n encodedAccount: MaybeEncodedAccount<TAddress>,\n): MaybeAccount<ClaimMap, TAddress>;\nexport function decodeClaimMap<TAddress extends string = string>(\n encodedAccount: EncodedAccount<TAddress> | MaybeEncodedAccount<TAddress>,\n): Account<ClaimMap, TAddress> | MaybeAccount<ClaimMap, TAddress> {\n return decodeAccount(\n encodedAccount as MaybeEncodedAccount<TAddress>,\n getClaimMapDecoder(),\n );\n}\n\nexport async function fetchClaimMap<TAddress extends string = string>(\n rpc: Parameters<typeof fetchEncodedAccount>[0],\n address: Address<TAddress>,\n config?: FetchAccountConfig,\n): Promise<Account<ClaimMap, TAddress>> {\n const maybeAccount = await fetchMaybeClaimMap(rpc, address, config);\n assertAccountExists(maybeAccount);\n return maybeAccount;\n}\n\nexport async function fetchMaybeClaimMap<TAddress extends string = string>(\n rpc: Parameters<typeof fetchEncodedAccount>[0],\n address: Address<TAddress>,\n config?: FetchAccountConfig,\n): Promise<MaybeAccount<ClaimMap, TAddress>> {\n const maybeAccount = await fetchEncodedAccount(rpc, address, config);\n return decodeClaimMap(maybeAccount);\n}\n\nexport async function fetchAllClaimMap(\n rpc: Parameters<typeof fetchEncodedAccounts>[0],\n addresses: Array<Address>,\n config?: FetchAccountsConfig,\n): Promise<Account<ClaimMap>[]> {\n const maybeAccounts = await fetchAllMaybeClaimMap(rpc, addresses, config);\n assertAccountsExist(maybeAccounts);\n return maybeAccounts;\n}\n\nexport async function fetchAllMaybeClaimMap(\n rpc: Parameters<typeof fetchEncodedAccounts>[0],\n addresses: Array<Address>,\n config?: FetchAccountsConfig,\n): Promise<MaybeAccount<ClaimMap>[]> {\n const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config);\n return maybeAccounts.map((maybeAccount) => decodeClaimMap(maybeAccount));\n}\n\nexport function getClaimMapSize(): number {\n return 8080;\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 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 MASTER_DISCRIMINATOR = new Uint8Array([\n 168, 213, 193, 12, 77, 162, 58, 235,\n]);\n\nexport function getMasterDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(MASTER_DISCRIMINATOR);\n}\n\nexport type Master = {\n discriminator: ReadonlyUint8Array;\n authority: Address;\n treasury: Address;\n tokenMint: Address;\n protocolFee: bigint;\n bump: number;\n};\n\nexport type MasterArgs = {\n authority: Address;\n treasury: Address;\n tokenMint: Address;\n protocolFee: number | bigint;\n bump: number;\n};\n\n/** Gets the encoder for {@link MasterArgs} account data. */\nexport function getMasterEncoder(): FixedSizeEncoder<MasterArgs> {\n return transformEncoder(\n getStructEncoder([\n [\"discriminator\", fixEncoderSize(getBytesEncoder(), 8)],\n [\"authority\", getAddressEncoder()],\n [\"treasury\", getAddressEncoder()],\n [\"tokenMint\", getAddressEncoder()],\n [\"protocolFee\", getU64Encoder()],\n [\"bump\", getU8Encoder()],\n ]),\n (value) => ({ ...value, discriminator: MASTER_DISCRIMINATOR }),\n );\n}\n\n/** Gets the decoder for {@link Master} account data. */\nexport function getMasterDecoder(): FixedSizeDecoder<Master> {\n return getStructDecoder([\n [\"discriminator\", fixDecoderSize(getBytesDecoder(), 8)],\n [\"authority\", getAddressDecoder()],\n [\"treasury\", getAddressDecoder()],\n [\"tokenMint\", getAddressDecoder()],\n [\"protocolFee\", getU64Decoder()],\n [\"bump\", getU8Decoder()],\n ]);\n}\n\n/** Gets the codec for {@link Master} account data. */\nexport function getMasterCodec(): FixedSizeCodec<MasterArgs, Master> {\n return combineCodec(getMasterEncoder(), getMasterDecoder());\n}\n\nexport function decodeMaster<TAddress extends string = string>(\n encodedAccount: EncodedAccount<TAddress>,\n): Account<Master, TAddress>;\nexport function decodeMaster<TAddress extends string = string>(\n encodedAccount: MaybeEncodedAccount<TAddress>,\n): MaybeAccount<Master, TAddress>;\nexport function decodeMaster<TAddress extends string = string>(\n encodedAccount: EncodedAccount<TAddress> | MaybeEncodedAccount<TAddress>,\n): Account<Master, TAddress> | MaybeAccount<Master, TAddress> {\n return decodeAccount(\n encodedAccount as MaybeEncodedAccount<TAddress>,\n getMasterDecoder(),\n );\n}\n\nexport async function fetchMaster<TAddress extends string = string>(\n rpc: Parameters<typeof fetchEncodedAccount>[0],\n address: Address<TAddress>,\n config?: FetchAccountConfig,\n): Promise<Account<Master, TAddress>> {\n const maybeAccount = await fetchMaybeMaster(rpc, address, config);\n assertAccountExists(maybeAccount);\n return maybeAccount;\n}\n\nexport async function fetchMaybeMaster<TAddress extends string = string>(\n rpc: Parameters<typeof fetchEncodedAccount>[0],\n address: Address<TAddress>,\n config?: FetchAccountConfig,\n): Promise<MaybeAccount<Master, TAddress>> {\n const maybeAccount = await fetchEncodedAccount(rpc, address, config);\n return decodeMaster(maybeAccount);\n}\n\nexport async function fetchAllMaster(\n rpc: Parameters<typeof fetchEncodedAccounts>[0],\n addresses: Array<Address>,\n config?: FetchAccountsConfig,\n): Promise<Account<Master>[]> {\n const maybeAccounts = await fetchAllMaybeMaster(rpc, addresses, config);\n assertAccountsExist(maybeAccounts);\n return maybeAccounts;\n}\n\nexport async function fetchAllMaybeMaster(\n rpc: Parameters<typeof fetchEncodedAccounts>[0],\n addresses: Array<Address>,\n config?: FetchAccountsConfig,\n): Promise<MaybeAccount<Master>[]> {\n const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config);\n return maybeAccounts.map((maybeAccount) => decodeMaster(maybeAccount));\n}\n\nexport function getMasterSize(): number {\n return 113;\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 { DROPSY_PROGRAM_ADDRESS } from \"../programs\";\n\n/** ValueOutOfRange: Value out of range */\nexport const DROPSY_ERROR__VALUE_OUT_OF_RANGE = 0x1771; // 6001\n/** ValueBelowTheMinimum: Value below the minimum */\nexport const DROPSY_ERROR__VALUE_BELOW_THE_MINIMUM = 0x1772; // 6002\n/** ValueExceedsMaximum: Value exceeds the maximum */\nexport const DROPSY_ERROR__VALUE_EXCEEDS_MAXIMUM = 0x1773; // 6003\n/** InvalidPercentage: Invalid percentage (must be 0-100) */\nexport const DROPSY_ERROR__INVALID_PERCENTAGE = 0x1774; // 6004\n/** InvalidTimestamp: Invalid timestamp or duration */\nexport const DROPSY_ERROR__INVALID_TIMESTAMP = 0x1776; // 6006\n/** NonZeroValueRequired: Number must be non-zero */\nexport const DROPSY_ERROR__NON_ZERO_VALUE_REQUIRED = 0x1777; // 6007\n/** InvalidPubKey: Invalid Pubkey provided */\nexport const DROPSY_ERROR__INVALID_PUB_KEY = 0x1778; // 6008\n/** UnAuthorized: Invalid Authority Pubkey */\nexport const DROPSY_ERROR__UN_AUTHORIZED = 0x1779; // 6009\n/** InvalidMutability: Invalid mutability Value */\nexport const DROPSY_ERROR__INVALID_MUTABILITY = 0x177a; // 6010\n/** InvalidDelegatePermission: Invalid delegate permission Value */\nexport const DROPSY_ERROR__INVALID_DELEGATE_PERMISSION = 0x177b; // 6011\n/** AirdropNotStarted: Airdrop has not started yet */\nexport const DROPSY_ERROR__AIRDROP_NOT_STARTED = 0x17d4; // 6100\n/** AirdropEnded: Airdrop has already ended */\nexport const DROPSY_ERROR__AIRDROP_ENDED = 0x17d5; // 6101\n/** AirdropNotEnded: Airdrop not yet ended */\nexport const DROPSY_ERROR__AIRDROP_NOT_ENDED = 0x17d6; // 6102\n/** DurationTooShort: Airdrop duration must be at least 24 hours */\nexport const DROPSY_ERROR__DURATION_TOO_SHORT = 0x17d7; // 6103\n/** InvalidEndTime: Airdrop must end at least 24 hours in the future */\nexport const DROPSY_ERROR__INVALID_END_TIME = 0x17d8; // 6104\n/** InvalidVestingSchedule: Vesting schedule is invalid */\nexport const DROPSY_ERROR__INVALID_VESTING_SCHEDULE = 0x17d9; // 6105\n/** ImmutableAirdrop: Airdrop is immutable */\nexport const DROPSY_ERROR__IMMUTABLE_AIRDROP = 0x17da; // 6106\n/** ImmutableField: The target field is immutable */\nexport const DROPSY_ERROR__IMMUTABLE_FIELD = 0x17db; // 6107\n/** UpdateCutoffTimePassed: Airdrop updates are only allowed until cutoff time before start */\nexport const DROPSY_ERROR__UPDATE_CUTOFF_TIME_PASSED = 0x17dc; // 6108\n/** MaxAirdropsReached: Airdrop quota reached. Upgrade required for Airdrop Master. */\nexport const DROPSY_ERROR__MAX_AIRDROPS_REACHED = 0x17dd; // 6109\n/** MaxClaimMapsReached: ClaimMap quota reached. Upgrade required for Airdrop Master. */\nexport const DROPSY_ERROR__MAX_CLAIM_MAPS_REACHED = 0x17de; // 6110\n/** InvalidAdmin: This Request Requires Admin Privileges */\nexport const DROPSY_ERROR__INVALID_ADMIN = 0x1838; // 6200\n/** OwnerMismatch: Airdrop owner mismatch */\nexport const DROPSY_ERROR__OWNER_MISMATCH = 0x1839; // 6201\n/** InvalidVaultAuthority: Invalid vault authority */\nexport const DROPSY_ERROR__INVALID_VAULT_AUTHORITY = 0x183a; // 6202\n/** InvalidDestinationOwner: Destination account owner is not the signer */\nexport const DROPSY_ERROR__INVALID_DESTINATION_OWNER = 0x183b; // 6203\n/** InvalidAffiliatePda: Mismatched affiliate PDA */\nexport const DROPSY_ERROR__INVALID_AFFILIATE_PDA = 0x183c; // 6204\n/** Unauthorized: Not Authorized */\nexport const DROPSY_ERROR__UNAUTHORIZED = 0x183d; // 6205\n/** InvalidOwner: Transaction sender is not the owner */\nexport const DROPSY_ERROR__INVALID_OWNER = 0x183e; // 6206\n/** InvalidMint: Mint does not match stored state */\nexport const DROPSY_ERROR__INVALID_MINT = 0x189c; // 6300\n/** MintMismatch: Provided mint doesn't match expected mint */\nexport const DROPSY_ERROR__MINT_MISMATCH = 0x189d; // 6301\n/** VaultMintMismatch: Vault mint doesn't match airdrop mint */\nexport const DROPSY_ERROR__VAULT_MINT_MISMATCH = 0x189e; // 6302\n/** DestinationMintMismatch: Destination mint doesn't match */\nexport const DROPSY_ERROR__DESTINATION_MINT_MISMATCH = 0x189f; // 6303\n/** MintIsFrozen: Mint is frozen */\nexport const DROPSY_ERROR__MINT_IS_FROZEN = 0x18a0; // 6304\n/** InvalidMintOwner: Invalid token program owner */\nexport const DROPSY_ERROR__INVALID_MINT_OWNER = 0x18a1; // 6305\n/** MintIsNotInitialized: Mint must be initialized */\nexport const DROPSY_ERROR__MINT_IS_NOT_INITIALIZED = 0x18a2; // 6306\n/** MintHasFreezeAuthority: Mint has freeze authority */\nexport const DROPSY_ERROR__MINT_HAS_FREEZE_AUTHORITY = 0x18a3; // 6307\n/** NftNotAllowed: Fungible tokens only (no NFTs) */\nexport const DROPSY_ERROR__NFT_NOT_ALLOWED = 0x18a4; // 6308\n/** VaultHasDelegate: Vault has delegate set */\nexport const DROPSY_ERROR__VAULT_HAS_DELEGATE = 0x1901; // 6401\n/** VaultFrozen: Vault is frozen */\nexport const DROPSY_ERROR__VAULT_FROZEN = 0x1902; // 6402\n/** VaultHasCloseAuthority: Vault has close authority */\nexport const DROPSY_ERROR__VAULT_HAS_CLOSE_AUTHORITY = 0x1903; // 6403\n/** InvalidAirdropPda: Invalid vault account */\nexport const DROPSY_ERROR__INVALID_AIRDROP_PDA = 0x1904; // 6404\n/** VaultNotInitialized: Vault not initialized */\nexport const DROPSY_ERROR__VAULT_NOT_INITIALIZED = 0x1905; // 6405\n/** InsufficientVaultFunds: Insufficient vault funds */\nexport const DROPSY_ERROR__INSUFFICIENT_VAULT_FUNDS = 0x1906; // 6406\n/** SourceHasDelegate: Source has delegate set */\nexport const DROPSY_ERROR__SOURCE_HAS_DELEGATE = 0x1932; // 6450\n/** SourceAccountFrozen: Source account is frozen */\nexport const DROPSY_ERROR__SOURCE_ACCOUNT_FROZEN = 0x1933; // 6451\n/** SourceHasCloseAuthority: Source has close authority */\nexport const DROPSY_ERROR__SOURCE_HAS_CLOSE_AUTHORITY = 0x1934; // 6452\n/** InvalidProof: Invalid merkle proof */\nexport const DROPSY_ERROR__INVALID_PROOF = 0x1964; // 6500\n/** AlreadyClaimed: Tokens already claimed */\nexport const DROPSY_ERROR__ALREADY_CLAIMED = 0x1965; // 6501\n/** MissingBitmapPda: Missing bitmap PDA */\nexport const DROPSY_ERROR__MISSING_BITMAP_PDA = 0x1966; // 6502\n/** InvalidBitmapAccount: Invalid bitmap account */\nexport const DROPSY_ERROR__INVALID_BITMAP_ACCOUNT = 0x1967; // 6503\n/** InvalidBitmapIndex: Invalid bitmap index */\nexport const DROPSY_ERROR__INVALID_BITMAP_INDEX = 0x1968; // 6504\n/** TooManyBitmaps: Too many bitmap accounts */\nexport const DROPSY_ERROR__TOO_MANY_BITMAPS = 0x1969; // 6505\n/** BitmapTooLarge: Bitmap size exceeds limit */\nexport const DROPSY_ERROR__BITMAP_TOO_LARGE = 0x196a; // 6506\n/** InvalidTotal: Invalid total claimers */\nexport const DROPSY_ERROR__INVALID_TOTAL = 0x196b; // 6507\n/** BitmapAirdropMismatch: Bitmap/airdrop mismatch */\nexport const DROPSY_ERROR__BITMAP_AIRDROP_MISMATCH = 0x196c; // 6508\n/** ActiveBitmapsExist: Active bitmaps exist */\nexport const DROPSY_ERROR__ACTIVE_BITMAPS_EXIST = 0x196d; // 6509\n/** BitmapCountUnderflow: Bitmaps already closed */\nexport const DROPSY_ERROR__BITMAP_COUNT_UNDERFLOW = 0x196e; // 6510\n/** InsufficientDeposit: Insufficient SOL deposit */\nexport const DROPSY_ERROR__INSUFFICIENT_DEPOSIT = 0x19c8; // 6600\n/** CreateFeeTooHigh: Create fee too high (>0.05 SOL) */\nexport const DROPSY_ERROR__CREATE_FEE_TOO_HIGH = 0x19c9; // 6601\n/** ClaimFeeTooHigh: Claim fee too high (>0.005 SOL) */\nexport const DROPSY_ERROR__CLAIM_FEE_TOO_HIGH = 0x19ca; // 6602\n/** InsufficientFundsForFee: Insufficient funds for fee */\nexport const DROPSY_ERROR__INSUFFICIENT_FUNDS_FOR_FEE = 0x19cb; // 6603\n/** InvalidFeeVault: Invalid fee vault */\nexport const DROPSY_ERROR__INVALID_FEE_VAULT = 0x19cc; // 6604\n/** InvalidFeeVaultOwner: Invalid fee vault owner */\nexport const DROPSY_ERROR__INVALID_FEE_VAULT_OWNER = 0x19cd; // 6605\n/** InvalidFeeVaultCurve: Fee vault not in curve */\nexport const DROPSY_ERROR__INVALID_FEE_VAULT_CURVE = 0x19ce; // 6606\n/** InvalidPda: Invalid PDA account */\nexport const DROPSY_ERROR__INVALID_PDA = 0x1a2c; // 6700\n/** InvalidAmount: Invalid amount */\nexport const DROPSY_ERROR__INVALID_AMOUNT = 0x1a2d; // 6701\n/** Overflow: Arithmetic overflow */\nexport const DROPSY_ERROR__OVERFLOW = 0x1a2e; // 6702\n/** VaultNotRentExempt: Vault not rent exempt */\nexport const DROPSY_ERROR__VAULT_NOT_RENT_EXEMPT = 0x1a2f; // 6703\n/** InvalidTreasuryAccount: invalid treasury account */\nexport const DROPSY_ERROR__INVALID_TREASURY_ACCOUNT = 0x1a30; // 6704\n/** InvalidAirdropVersion: invalid airdrop version */\nexport const DROPSY_ERROR__INVALID_AIRDROP_VERSION = 0x1a31; // 6705\n/** InvalidVestingType: Invalid vesting type */\nexport const DROPSY_ERROR__INVALID_VESTING_TYPE = 0x1a33; // 6707\n/** VestingAccountRequired: vesting account required for vested airdrop */\nexport const DROPSY_ERROR__VESTING_ACCOUNT_REQUIRED = 0x1a34; // 6708\n/** InvalidParentAccount: Invalid Parent account provided */\nexport const DROPSY_ERROR__INVALID_PARENT_ACCOUNT = 0x1a35; // 6709\n/** InvalidAirdropVestingVersion: Airdrop version don't support vesting */\nexport const DROPSY_ERROR__INVALID_AIRDROP_VESTING_VERSION = 0x1a36; // 6710\n/** InvalidAirdropMasterAccount: Invalid Airdrop Master */\nexport const DROPSY_ERROR__INVALID_AIRDROP_MASTER_ACCOUNT = 0x1a37; // 6711\n\nexport type DropsyError =\n | typeof DROPSY_ERROR__ACTIVE_BITMAPS_EXIST\n | typeof DROPSY_ERROR__AIRDROP_ENDED\n | typeof DROPSY_ERROR__AIRDROP_NOT_ENDED\n | typeof DROPSY_ERROR__AIRDROP_NOT_STARTED\n | typeof DROPSY_ERROR__ALREADY_CLAIMED\n | typeof DROPSY_ERROR__BITMAP_AIRDROP_MISMATCH\n | typeof DROPSY_ERROR__BITMAP_COUNT_UNDERFLOW\n | typeof DROPSY_ERROR__BITMAP_TOO_LARGE\n | typeof DROPSY_ERROR__CLAIM_FEE_TOO_HIGH\n | typeof DROPSY_ERROR__CREATE_FEE_TOO_HIGH\n | typeof DROPSY_ERROR__DESTINATION_MINT_MISMATCH\n | typeof DROPSY_ERROR__DURATION_TOO_SHORT\n | typeof DROPSY_ERROR__IMMUTABLE_AIRDROP\n | typeof DROPSY_ERROR__IMMUTABLE_FIELD\n | typeof DROPSY_ERROR__INSUFFICIENT_DEPOSIT\n | typeof DROPSY_ERROR__INSUFFICIENT_FUNDS_FOR_FEE\n | typeof DROPSY_ERROR__INSUFFICIENT_VAULT_FUNDS\n | typeof DROPSY_ERROR__INVALID_ADMIN\n | typeof DROPSY_ERROR__INVALID_AFFILIATE_PDA\n | typeof DROPSY_ERROR__INVALID_AIRDROP_MASTER_ACCOUNT\n | typeof DROPSY_ERROR__INVALID_AIRDROP_PDA\n | typeof DROPSY_ERROR__INVALID_AIRDROP_VERSION\n | typeof DROPSY_ERROR__INVALID_AIRDROP_VESTING_VERSION\n | typeof DROPSY_ERROR__INVALID_AMOUNT\n | typeof DROPSY_ERROR__INVALID_BITMAP_ACCOUNT\n | typeof DROPSY_ERROR__INVALID_BITMAP_INDEX\n | typeof DROPSY_ERROR__INVALID_DELEGATE_PERMISSION\n | typeof DROPSY_ERROR__INVALID_DESTINATION_OWNER\n | typeof DROPSY_ERROR__INVALID_END_TIME\n | typeof DROPSY_ERROR__INVALID_FEE_VAULT\n | typeof DROPSY_ERROR__INVALID_FEE_VAULT_CURVE\n | typeof DROPSY_ERROR__INVALID_FEE_VAULT_OWNER\n | typeof DROPSY_ERROR__INVALID_MINT\n | typeof DROPSY_ERROR__INVALID_MINT_OWNER\n | typeof DROPSY_ERROR__INVALID_MUTABILITY\n | typeof DROPSY_ERROR__INVALID_OWNER\n | typeof DROPSY_ERROR__INVALID_PARENT_ACCOUNT\n | typeof DROPSY_ERROR__INVALID_PDA\n | typeof DROPSY_ERROR__INVALID_PERCENTAGE\n | typeof DROPSY_ERROR__INVALID_PROOF\n | typeof DROPSY_ERROR__INVALID_PUB_KEY\n | typeof DROPSY_ERROR__INVALID_TIMESTAMP\n | typeof DROPSY_ERROR__INVALID_TOTAL\n | typeof DROPSY_ERROR__INVALID_TREASURY_ACCOUNT\n | typeof DROPSY_ERROR__INVALID_VAULT_AUTHORITY\n | typeof DROPSY_ERROR__INVALID_VESTING_SCHEDULE\n | typeof DROPSY_ERROR__INVALID_VESTING_TYPE\n | typeof DROPSY_ERROR__MAX_AIRDROPS_REACHED\n | typeof DROPSY_ERROR__MAX_CLAIM_MAPS_REACHED\n | typeof DROPSY_ERROR__MINT_HAS_FREEZE_AUTHORITY\n | typeof DROPSY_ERROR__MINT_IS_FROZEN\n | typeof DROPSY_ERROR__MINT_IS_NOT_INITIALIZED\n | typeof DROPSY_ERROR__MINT_MISMATCH\n | typeof DROPSY_ERROR__MISSING_BITMAP_PDA\n | typeof DROPSY_ERROR__NFT_NOT_ALLOWED\n | typeof DROPSY_ERROR__NON_ZERO_VALUE_REQUIRED\n | typeof DROPSY_ERROR__OVERFLOW\n | typeof DROPSY_ERROR__OWNER_MISMATCH\n | typeof DROPSY_ERROR__SOURCE_ACCOUNT_FROZEN\n | typeof DROPSY_ERROR__SOURCE_HAS_CLOSE_AUTHORITY\n | typeof DROPSY_ERROR__SOURCE_HAS_DELEGATE\n | typeof DROPSY_ERROR__TOO_MANY_BITMAPS\n | typeof DROPSY_ERROR__UNAUTHORIZED\n | typeof DROPSY_ERROR__UN_AUTHORIZED\n | typeof DROPSY_ERROR__UPDATE_CUTOFF_TIME_PASSED\n | typeof DROPSY_ERROR__VALUE_BELOW_THE_MINIMUM\n | typeof DROPSY_ERROR__VALUE_EXCEEDS_MAXIMUM\n | typeof DROPSY_ERROR__VALUE_OUT_OF_RANGE\n | typeof DROPSY_ERROR__VAULT_FROZEN\n | typeof DROPSY_ERROR__VAULT_HAS_CLOSE_AUTHORITY\n | typeof DROPSY_ERROR__VAULT_HAS_DELEGATE\n | typeof DROPSY_ERROR__VAULT_MINT_MISMATCH\n | typeof DROPSY_ERROR__VAULT_NOT_INITIALIZED\n | typeof DROPSY_ERROR__VAULT_NOT_RENT_EXEMPT\n | typeof DROPSY_ERROR__VESTING_ACCOUNT_REQUIRED;\n\nlet dropsyErrorMessages: Record<DropsyError, string> | undefined;\nif (process.env.NODE_ENV !== \"production\") {\n dropsyErrorMessages = {\n [DROPSY_ERROR__ACTIVE_BITMAPS_EXIST]: `Active bitmaps exist`,\n [DROPSY_ERROR__AIRDROP_ENDED]: `Airdrop has already ended`,\n [DROPSY_ERROR__AIRDROP_NOT_ENDED]: `Airdrop not yet ended`,\n [DROPSY_ERROR__AIRDROP_NOT_STARTED]: `Airdrop has not started yet`,\n [DROPSY_ERROR__ALREADY_CLAIMED]: `Tokens already claimed`,\n [DROPSY_ERROR__BITMAP_AIRDROP_MISMATCH]: `Bitmap/airdrop mismatch`,\n [DROPSY_ERROR__BITMAP_COUNT_UNDERFLOW]: `Bitmaps already closed`,\n [DROPSY_ERROR__BITMAP_TOO_LARGE]: `Bitmap size exceeds limit`,\n [DROPSY_ERROR__CLAIM_FEE_TOO_HIGH]: `Claim fee too high (>0.005 SOL)`,\n [DROPSY_ERROR__CREATE_FEE_TOO_HIGH]: `Create fee too high (>0.05 SOL)`,\n [DROPSY_ERROR__DESTINATION_MINT_MISMATCH]: `Destination mint doesn't match`,\n [DROPSY_ERROR__DURATION_TOO_SHORT]: `Airdrop duration must be at least 24 hours`,\n [DROPSY_ERROR__IMMUTABLE_AIRDROP]: `Airdrop is immutable`,\n [DROPSY_ERROR__IMMUTABLE_FIELD]: `The target field is immutable`,\n [DROPSY_ERROR__INSUFFICIENT_DEPOSIT]: `Insufficient SOL deposit`,\n [DROPSY_ERROR__INSUFFICIENT_FUNDS_FOR_FEE]: `Insufficient funds for fee`,\n [DROPSY_ERROR__INSUFFICIENT_VAULT_FUNDS]: `Insufficient vault funds`,\n [DROPSY_ERROR__INVALID_ADMIN]: `This Request Requires Admin Privileges`,\n [DROPSY_ERROR__INVALID_AFFILIATE_PDA]: `Mismatched affiliate PDA`,\n [DROPSY_ERROR__INVALID_AIRDROP_MASTER_ACCOUNT]: `Invalid Airdrop Master`,\n [DROPSY_ERROR__INVALID_AIRDROP_PDA]: `Invalid vault account`,\n [DROPSY_ERROR__INVALID_AIRDROP_VERSION]: `invalid airdrop version`,\n [DROPSY_ERROR__INVALID_AIRDROP_VESTING_VERSION]: `Airdrop version don't support vesting`,\n [DROPSY_ERROR__INVALID_AMOUNT]: `Invalid amount`,\n [DROPSY_ERROR__INVALID_BITMAP_ACCOUNT]: `Invalid bitmap account`,\n [DROPSY_ERROR__INVALID_BITMAP_INDEX]: `Invalid bitmap index`,\n [DROPSY_ERROR__INVALID_DELEGATE_PERMISSION]: `Invalid delegate permission Value`,\n [DROPSY_ERROR__INVALID_DESTINATION_OWNER]: `Destination account owner is not the signer`,\n [DROPSY_ERROR__INVALID_END_TIME]: `Airdrop must end at least 24 hours in the future`,\n [DROPSY_ERROR__INVALID_FEE_VAULT]: `Invalid fee vault`,\n [DROPSY_ERROR__INVALID_FEE_VAULT_CURVE]: `Fee vault not in curve`,\n [DROPSY_ERROR__INVALID_FEE_VAULT_OWNER]: `Invalid fee vault owner`,\n [DROPSY_ERROR__INVALID_MINT]: `Mint does not match stored state`,\n [DROPSY_ERROR__INVALID_MINT_OWNER]: `Invalid token program owner`,\n [DROPSY_ERROR__INVALID_MUTABILITY]: `Invalid mutability Value`,\n [DROPSY_ERROR__INVALID_OWNER]: `Transaction sender is not the owner`,\n [DROPSY_ERROR__INVALID_PARENT_ACCOUNT]: `Invalid Parent account provided`,\n [DROPSY_ERROR__INVALID_PDA]: `Invalid PDA account`,\n [DROPSY_ERROR__INVALID_PERCENTAGE]: `Invalid percentage (must be 0-100)`,\n [DROPSY_ERROR__INVALID_PROOF]: `Invalid merkle proof`,\n [DROPSY_ERROR__INVALID_PUB_KEY]: `Invalid Pubkey provided`,\n [DROPSY_ERROR__INVALID_TIMESTAMP]: `Invalid timestamp or duration`,\n [DROPSY_ERROR__INVALID_TOTAL]: `Invalid total claimers`,\n [DROPSY_ERROR__INVALID_TREASURY_ACCOUNT]: `invalid treasury account`,\n [DROPSY_ERROR__INVALID_VAULT_AUTHORITY]: `Invalid vault authority`,\n [DROPSY_ERROR__INVALID_VESTING_SCHEDULE]: `Vesting schedule is invalid`,\n [DROPSY_ERROR__INVALID_VESTING_TYPE]: `Invalid vesting type`,\n [DROPSY_ERROR__MAX_AIRDROPS_REACHED]: `Airdrop quota reached. Upgrade required for Airdrop Master.`,\n [DROPSY_ERROR__MAX_CLAIM_MAPS_REACHED]: `ClaimMap quota reached. Upgrade required for Airdrop Master.`,\n [DROPSY_ERROR__MINT_HAS_FREEZE_AUTHORITY]: `Mint has freeze authority`,\n [DROPSY_ERROR__MINT_IS_FROZEN]: `Mint is frozen`,\n [DROPSY_ERROR__MINT_IS_NOT_INITIALIZED]: `Mint must be initialized`,\n [DROPSY_ERROR__MINT_MISMATCH]: `Provided mint doesn't match expected mint`,\n [DROPSY_ERROR__MISSING_BITMAP_PDA]: `Missing bitmap PDA`,\n [DROPSY_ERROR__NFT_NOT_ALLOWED]: `Fungible tokens only (no NFTs)`,\n [DROPSY_ERROR__NON_ZERO_VALUE_REQUIRED]: `Number must be non-zero`,\n [DROPSY_ERROR__OVERFLOW]: `Arithmetic overflow`,\n [DROPSY_ERROR__OWNER_MISMATCH]: `Airdrop owner mismatch`,\n [DROPSY_ERROR__SOURCE_ACCOUNT_FROZEN]: `Source account is frozen`,\n [DROPSY_ERROR__SOURCE_HAS_CLOSE_AUTHORITY]: `Source has close authority`,\n [DROPSY_ERROR__SOURCE_HAS_DELEGATE]: `Source has delegate set`,\n [DROPSY_ERROR__TOO_MANY_BITMAPS]: `Too many bitmap accounts`,\n [DROPSY_ERROR__UNAUTHORIZED]: `Not Authorized`,\n [DROPSY_ERROR__UN_AUTHORIZED]: `Invalid Authority Pubkey`,\n [DROPSY_ERROR__UPDATE_CUTOFF_TIME_PASSED]: `Airdrop updates are only allowed until cutoff time before start`,\n [DROPSY_ERROR__VALUE_BELOW_THE_MINIMUM]: `Value below the minimum`,\n [DROPSY_ERROR__VALUE_EXCEEDS_MAXIMUM]: `Value exceeds the maximum`,\n [DROPSY_ERROR__VALUE_OUT_OF_RANGE]: `Value out of range`,\n [DROPSY_ERROR__VAULT_FROZEN]: `Vault is frozen`,\n [DROPSY_ERROR__VAULT_HAS_CLOSE_AUTHORITY]: `Vault has close authority`,\n [DROPSY_ERROR__VAULT_HAS_DELEGATE]: `Vault has delegate set`,\n [DROPSY_ERROR__VAULT_MINT_MISMATCH]: `Vault mint doesn't match airdrop mint`,\n [DROPSY_ERROR__VAULT_NOT_INITIALIZED]: `Vault not initialized`,\n [DROPSY_ERROR__VAULT_NOT_RENT_EXEMPT]: `Vault not rent exempt`,\n [DROPSY_ERROR__VESTING_ACCOUNT_REQUIRED]: `vesting account required for vested airdrop`,\n };\n}\n\nexport function getDropsyErrorMessage(code: DropsyError): string {\n if (process.env.NODE_ENV !== \"production\") {\n return (dropsyErrorMessages as Record<DropsyError, string>)[code];\n }\n\n return \"Error message not available in production bundles.\";\n}\n\nexport function isDropsyError<TProgramErrorCode extends DropsyError>(\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 DROPSY_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 containsBytes,\n fixEncoderSize,\n getBytesEncoder,\n type Address,\n type ReadonlyUint8Array,\n} from \"@solana/kit\";\nimport {\n type ParsedClaimAirdropInstruction,\n type ParsedCreateAirdropInstruction,\n type ParsedCreateClaimMapInstruction,\n type ParsedDepositTokensInstruction,\n type ParsedInitializeAirdropMasterInstruction,\n type ParsedInitializeMasterInstruction,\n type ParsedRedeemAirdropTokensInstruction,\n} from \"../instructions\";\n\nexport const DROPSY_PROGRAM_ADDRESS =\n \"6Bd4YUkwyvZTPMt1bu13zvw9t4TtoMTd6CFVMmaswB2M\" as Address<\"6Bd4YUkwyvZTPMt1bu13zvw9t4TtoMTd6CFVMmaswB2M\">;\n\nexport enum DropsyAccount {\n Affiliate,\n AffiliateMaster,\n Airdrop,\n AirdropConfig,\n AirdropMaster,\n ClaimMap,\n Master,\n}\n\nexport function identifyDropsyAccount(\n account: { data: ReadonlyUint8Array } | ReadonlyUint8Array,\n): DropsyAccount {\n const data = \"data\" in account ? account.data : account;\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([136, 95, 107, 149, 36, 195, 146, 35]),\n ),\n 0,\n )\n ) {\n return DropsyAccount.Affiliate;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([25, 57, 134, 31, 30, 203, 219, 215]),\n ),\n 0,\n )\n ) {\n return DropsyAccount.AffiliateMaster;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([31, 112, 159, 158, 124, 237, 9, 241]),\n ),\n 0,\n )\n ) {\n return DropsyAccount.Airdrop;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([194, 149, 223, 142, 42, 98, 128, 16]),\n ),\n 0,\n )\n ) {\n return DropsyAccount.AirdropConfig;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([31, 109, 100, 62, 106, 173, 5, 4]),\n ),\n 0,\n )\n ) {\n return DropsyAccount.AirdropMaster;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([193, 62, 74, 131, 13, 161, 53, 215]),\n ),\n 0,\n )\n ) {\n return DropsyAccount.ClaimMap;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([168, 213, 193, 12, 77, 162, 58, 235]),\n ),\n 0,\n )\n ) {\n return DropsyAccount.Master;\n }\n throw new Error(\n \"The provided account could not be identified as a dropsy account.\",\n );\n}\n\nexport enum DropsyInstruction {\n ClaimAirdrop,\n CreateAirdrop,\n CreateClaimMap,\n DepositTokens,\n InitializeAirdropMaster,\n InitializeMaster,\n RedeemAirdropTokens,\n}\n\nexport function identifyDropsyInstruction(\n instruction: { data: ReadonlyUint8Array } | ReadonlyUint8Array,\n): DropsyInstruction {\n const data = \"data\" in instruction ? instruction.data : instruction;\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([137, 50, 122, 111, 89, 254, 8, 20]),\n ),\n 0,\n )\n ) {\n return DropsyInstruction.ClaimAirdrop;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([227, 135, 208, 66, 137, 177, 80, 94]),\n ),\n 0,\n )\n ) {\n return DropsyInstruction.CreateAirdrop;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([22, 150, 81, 49, 214, 142, 189, 122]),\n ),\n 0,\n )\n ) {\n return DropsyInstruction.CreateClaimMap;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([176, 83, 229, 18, 191, 143, 176, 150]),\n ),\n 0,\n )\n ) {\n return DropsyInstruction.DepositTokens;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([163, 197, 170, 44, 57, 57, 90, 65]),\n ),\n 0,\n )\n ) {\n return DropsyInstruction.InitializeAirdropMaster;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([206, 91, 246, 30, 216, 101, 134, 166]),\n ),\n 0,\n )\n ) {\n return DropsyInstruction.InitializeMaster;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([102, 70, 115, 13, 97, 198, 59, 103]),\n ),\n 0,\n )\n ) {\n return DropsyInstruction.RedeemAirdropTokens;\n }\n throw new Error(\n \"The provided instruction could not be identified as a dropsy instruction.\",\n );\n}\n\nexport type ParsedDropsyInstruction<\n TProgram extends string = \"6Bd4YUkwyvZTPMt1bu13zvw9t4TtoMTd6CFVMmaswB2M\",\n> =\n | ({\n instructionType: DropsyInstruction.ClaimAirdrop;\n } & ParsedClaimAirdropInstruction<TProgram>)\n | ({\n instructionType: DropsyInstruction.CreateAirdrop;\n } & ParsedCreateAirdropInstruction<TProgram>)\n | ({\n instructionType: DropsyInstruction.CreateClaimMap;\n } & ParsedCreateClaimMapInstruction<TProgram>)\n | ({\n instructionType: DropsyInstruction.DepositTokens;\n } & ParsedDepositTokensInstruction<TProgram>)\n | ({\n instructionType: DropsyInstruction.InitializeAirdropMaster;\n } & ParsedInitializeAirdropMasterInstruction<TProgram>)\n | ({\n instructionType: DropsyInstruction.InitializeMaster;\n } & ParsedInitializeMasterInstruction<TProgram>)\n | ({\n instructionType: DropsyInstruction.RedeemAirdropTokens;\n } & ParsedRedeemAirdropTokensInstruction<TProgram>);\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 getU16Decoder,\n getU16Encoder,\n getU64Decoder,\n getU64Encoder,\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 { DROPSY_PROGRAM_ADDRESS } from \"../programs\";\nimport {\n expectAddress,\n getAccountMetaFactory,\n type ResolvedAccount,\n} from \"../shared\";\n\nexport const CLAIM_AIRDROP_DISCRIMINATOR = new Uint8Array([\n 137, 50, 122, 111, 89, 254, 8, 20,\n]);\n\nexport function getClaimAirdropDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n CLAIM_AIRDROP_DISCRIMINATOR,\n );\n}\n\nexport type ClaimAirdropInstruction<\n TProgram extends string = typeof DROPSY_PROGRAM_ADDRESS,\n TAccountMaster extends string | AccountMeta<string> = string,\n TAccountConfig extends string | AccountMeta<string> = string,\n TAccountTreasury extends string | AccountMeta<string> = string,\n TAccountAirdropMaster extends string | AccountMeta<string> = string,\n TAccountAffiliate extends string | AccountMeta<string> = string,\n TAccountSourceTokenAccount extends string | AccountMeta<string> = string,\n TAccountDestinationTokenAccount extends string | AccountMeta<string> = string,\n TAccountAirdrop extends string | AccountMeta<string> = string,\n TAccountAuthority extends string | AccountMeta<string> = string,\n TAccountBitmap extends string | AccountMeta<string> = string,\n TAccountMint extends string | AccountMeta<string> = string,\n TAccountClaimer extends string | AccountMeta<string> = string,\n TAccountTokenProgram extends string | AccountMeta<string> =\n \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\",\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 TAccountMaster extends string\n ? ReadonlyAccount<TAccountMaster>\n : TAccountMaster,\n TAccountConfig extends string\n ? ReadonlyAccount<TAccountConfig>\n : TAccountConfig,\n TAccountTreasury extends string\n ? WritableAccount<TAccountTreasury>\n : TAccountTreasury,\n TAccountAirdropMaster extends string\n ? WritableAccount<TAccountAirdropMaster>\n : TAccountAirdropMaster,\n TAccountAffiliate extends string\n ? WritableAccount<TAccountAffiliate>\n : TAccountAffiliate,\n TAccountSourceTokenAccount extends string\n ? WritableAccount<TAccountSourceTokenAccount>\n : TAccountSourceTokenAccount,\n TAccountDestinationTokenAccount extends string\n ? WritableAccount<TAccountDestinationTokenAccount>\n : TAccountDestinationTokenAccount,\n TAccountAirdrop extends string\n ? ReadonlyAccount<TAccountAirdrop>\n : TAccountAirdrop,\n TAccountAuthority extends string\n ? ReadonlyAccount<TAccountAuthority>\n : TAccountAuthority,\n TAccountBitmap extends string\n ? WritableAccount<TAccountBitmap>\n : TAccountBitmap,\n TAccountMint extends string\n ? ReadonlyAccount<TAccountMint>\n : TAccountMint,\n TAccountClaimer extends string\n ? WritableSignerAccount<TAccountClaimer> &\n AccountSignerMeta<TAccountClaimer>\n : TAccountClaimer,\n TAccountTokenProgram extends string\n ? ReadonlyAccount<TAccountTokenProgram>\n : TAccountTokenProgram,\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 ClaimAirdropInstructionData = {\n discriminator: ReadonlyUint8Array;\n index: bigint;\n proof: Array<ReadonlyUint8Array>;\n amount: bigint;\n claimMapIndex: number;\n};\n\nexport type ClaimAirdropInstructionDataArgs = {\n index: number | bigint;\n proof: Array<ReadonlyUint8Array>;\n amount: number | bigint;\n claimMapIndex: number;\n};\n\nexport function getClaimAirdropInstructionDataEncoder(): Encoder<ClaimAirdropInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([\n [\"discriminator\", fixEncoderSize(getBytesEncoder(), 8)],\n [\"index\", getU64Encoder()],\n [\"proof\", getArrayEncoder(fixEncoderSize(getBytesEncoder(), 32))],\n [\"amount\", getU64Encoder()],\n [\"claimMapIndex\", getU16Encoder()],\n ]),\n (value) => ({ ...value, discriminator: CLAIM_AIRDROP_DISCRIMINATOR }),\n );\n}\n\nexport function getClaimAirdropInstructionDataDecoder(): Decoder<ClaimAirdropInstructionData> {\n return getStructDecoder([\n [\"discriminator\", fixDecoderSize(getBytesDecoder(), 8)],\n [\"index\", getU64Decoder()],\n [\"proof\", getArrayDecoder(fixDecoderSize(getBytesDecoder(), 32))],\n [\"amount\", getU64Decoder()],\n [\"claimMapIndex\", getU16Decoder()],\n ]);\n}\n\nexport function getClaimAirdropInstructionDataCodec(): Codec<\n ClaimAirdropInstructionDataArgs,\n ClaimAirdropInstructionData\n> {\n return combineCodec(\n getClaimAirdropInstructionDataEncoder(),\n getClaimAirdropInstructionDataDecoder(),\n );\n}\n\nexport type ClaimAirdropAsyncInput<\n TAccountMaster extends string = string,\n TAccountConfig extends string = string,\n TAccountTreasury extends string = string,\n TAccountAirdropMaster extends string = string,\n TAccountAffiliate extends string = string,\n TAccountSourceTokenAccount extends string = string,\n TAccountDestinationTokenAccount extends string = string,\n TAccountAirdrop extends string = string,\n TAccountAuthority extends string = string,\n TAccountBitmap extends string = string,\n TAccountMint extends string = string,\n TAccountClaimer extends string = string,\n TAccountTokenProgram extends string = string,\n TAccountAssociatedTokenProgram extends string = string,\n TAccountSystemProgram extends string = string,\n> = {\n master?: Address<TAccountMaster>;\n config?: Address<TAccountConfig>;\n treasury: Address<TAccountTreasury>;\n airdropMaster: Address<TAccountAirdropMaster>;\n affiliate?: Address<TAccountAffiliate>;\n sourceTokenAccount: Address<TAccountSourceTokenAccount>;\n destinationTokenAccount?: Address<TAccountDestinationTokenAccount>;\n airdrop?: Address<TAccountAirdrop>;\n authority: Address<TAccountAuthority>;\n bitmap: Address<TAccountBitmap>;\n mint: Address<TAccountMint>;\n claimer: TransactionSigner<TAccountClaimer>;\n tokenProgram?: Address<TAccountTokenProgram>;\n associatedTokenProgram?: Address<TAccountAssociatedTokenProgram>;\n systemProgram?: Address<TAccountSystemProgram>;\n index: ClaimAirdropInstructionDataArgs[\"index\"];\n proof: ClaimAirdropInstructionDataArgs[\"proof\"];\n amount: ClaimAirdropInstructionDataArgs[\"amount\"];\n claimMapIndex: ClaimAirdropInstructionDataArgs[\"claimMapIndex\"];\n};\n\nexport async function getClaimAirdropInstructionAsync<\n TAccountMaster extends string,\n TAccountConfig extends string,\n TAccountTreasury extends string,\n TAccountAirdropMaster extends string,\n TAccountAffiliate extends string,\n TAccountSourceTokenAccount extends string,\n TAccountDestinationTokenAccount extends string,\n TAccountAirdrop extends string,\n TAccountAuthority extends string,\n TAccountBitmap extends string,\n TAccountMint extends string,\n TAccountClaimer extends string,\n TAccountTokenProgram extends string,\n TAccountAssociatedTokenProgram extends string,\n TAccountSystemProgram extends string,\n TProgramAddress extends Address = typeof DROPSY_PROGRAM_ADDRESS,\n>(\n input: ClaimAirdropAsyncInput<\n TAccountMaster,\n TAccountConfig,\n TAccountTreasury,\n TAccountAirdropMaster,\n TAccountAffiliate,\n TAccountSourceTokenAccount,\n TAccountDestinationTokenAccount,\n TAccountAirdrop,\n TAccountAuthority,\n TAccountBitmap,\n TAccountMint,\n TAccountClaimer,\n TAccountTokenProgram,\n TAccountAssociatedTokenProgram,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress },\n): Promise<\n ClaimAirdropInstruction<\n TProgramAddress,\n TAccountMaster,\n TAccountConfig,\n TAccountTreasury,\n TAccountAirdropMaster,\n TAccountAffiliate,\n TAccountSourceTokenAccount,\n TAccountDestinationTokenAccount,\n TAccountAirdrop,\n TAccountAuthority,\n TAccountBitmap,\n TAccountMint,\n TAccountClaimer,\n TAccountTokenProgram,\n TAccountAssociatedTokenProgram,\n TAccountSystemProgram\n >\n> {\n // Program address.\n const programAddress = config?.programAddress ?? DROPSY_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n master: { value: input.master ?? null, isWritable: false },\n config: { value: input.config ?? null, isWritable: false },\n treasury: { value: input.treasury ?? null, isWritable: true },\n airdropMaster: { value: input.airdropMaster ?? null, isWritable: true },\n affiliate: { value: input.affiliate ?? null, isWritable: true },\n sourceTokenAccount: {\n value: input.sourceTokenAccount ?? null,\n isWritable: true,\n },\n destinationTokenAccount: {\n value: input.destinationTokenAccount ?? null,\n isWritable: true,\n },\n airdrop: { value: input.airdrop ?? null, isWritable: false },\n authority: { value: input.authority ?? null, isWritable: false },\n bitmap: { value: input.bitmap ?? null, isWritable: true },\n mint: { value: input.mint ?? null, isWritable: false },\n claimer: { value: input.claimer ?? null, isWritable: true },\n tokenProgram: { value: input.tokenProgram ?? null, isWritable: false },\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 ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Resolve default values.\n if (!accounts.master.value) {\n accounts.master.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(new Uint8Array([109, 97, 115, 116, 101, 114])),\n ],\n });\n }\n if (!accounts.config.value) {\n accounts.config.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(\n new Uint8Array([\n 97, 105, 114, 100, 114, 111, 112, 95, 99, 111, 110, 102, 105, 103,\n ]),\n ),\n ],\n });\n }\n if (!accounts.tokenProgram.value) {\n accounts.tokenProgram.value =\n \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\" as Address<\"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\">;\n }\n if (!accounts.destinationTokenAccount.value) {\n accounts.destinationTokenAccount.value = await getProgramDerivedAddress({\n programAddress:\n \"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\" as Address<\"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\">,\n seeds: [\n getAddressEncoder().encode(expectAddress(accounts.claimer.value)),\n getAddressEncoder().encode(expectAddress(accounts.tokenProgram.value)),\n getAddressEncoder().encode(expectAddress(accounts.mint.value)),\n ],\n });\n }\n if (!accounts.airdrop.value) {\n accounts.airdrop.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(\n new Uint8Array([97, 105, 114, 100, 114, 111, 112]),\n ),\n getAddressEncoder().encode(expectAddress(accounts.mint.value)),\n getAddressEncoder().encode(expectAddress(accounts.authority.value)),\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(accounts.master),\n getAccountMeta(accounts.config),\n getAccountMeta(accounts.treasury),\n getAccountMeta(accounts.airdropMaster),\n getAccountMeta(accounts.affiliate),\n getAccountMeta(accounts.sourceTokenAccount),\n getAccountMeta(accounts.destinationTokenAccount),\n getAccountMeta(accounts.airdrop),\n getAccountMeta(accounts.authority),\n getAccountMeta(accounts.bitmap),\n getAccountMeta(accounts.mint),\n getAccountMeta(accounts.claimer),\n getAccountMeta(accounts.tokenProgram),\n getAccountMeta(accounts.associatedTokenProgram),\n getAccountMeta(accounts.systemProgram),\n ],\n data: getClaimAirdropInstructionDataEncoder().encode(\n args as ClaimAirdropInstructionDataArgs,\n ),\n programAddress,\n } as ClaimAirdropInstruction<\n TProgramAddress,\n TAccountMaster,\n TAccountConfig,\n TAccountTreasury,\n TAccountAirdropMaster,\n TAccountAffiliate,\n TAccountSourceTokenAccount,\n TAccountDestinationTokenAccount,\n TAccountAirdrop,\n TAccountAuthority,\n TAccountBitmap,\n TAccountMint,\n TAccountClaimer,\n TAccountTokenProgram,\n TAccountAssociatedTokenProgram,\n TAccountSystemProgram\n >);\n}\n\nexport type ClaimAirdropInput<\n TAccountMaster extends string = string,\n TAccountConfig extends string = string,\n TAccountTreasury extends string = string,\n TAccountAirdropMaster extends string = string,\n TAccountAffiliate extends string = string,\n TAccountSourceTokenAccount extends string = string,\n TAccountDestinationTokenAccount extends string = string,\n TAccountAirdrop extends string = string,\n TAccountAuthority extends string = string,\n TAccountBitmap extends string = string,\n TAccountMint extends string = string,\n TAccountClaimer extends string = string,\n TAccountTokenProgram extends string = string,\n TAccountAssociatedTokenProgram extends string = string,\n TAccountSystemProgram extends string = string,\n> = {\n master: Address<TAccountMaster>;\n config: Address<TAccountConfig>;\n treasury: Address<TAccountTreasury>;\n airdropMaster: Address<TAccountAirdropMaster>;\n affiliate?: Address<TAccountAffiliate>;\n sourceTokenAccount: Address<TAccountSourceTokenAccount>;\n destinationTokenAccount: Address<TAccountDestinationTokenAccount>;\n airdrop: Address<TAccountAirdrop>;\n authority: Address<TAccountAuthority>;\n bitmap: Address<TAccountBitmap>;\n mint: Address<TAccountMint>;\n claimer: TransactionSigner<TAccountClaimer>;\n tokenProgram?: Address<TAccountTokenProgram>;\n associatedTokenProgram?: Address<TAccountAssociatedTokenProgram>;\n systemProgram?: Address<TAccountSystemProgram>;\n index: ClaimAirdropInstructionDataArgs[\"index\"];\n proof: ClaimAirdropInstructionDataArgs[\"proof\"];\n amount: ClaimAirdropInstructionDataArgs[\"amount\"];\n claimMapIndex: ClaimAirdropInstructionDataArgs[\"claimMapIndex\"];\n};\n\nexport function getClaimAirdropInstruction<\n TAccountMaster extends string,\n TAccountConfig extends string,\n TAccountTreasury extends string,\n TAccountAirdropMaster extends string,\n TAccountAffiliate extends string,\n TAccountSourceTokenAccount extends string,\n TAccountDestinationTokenAccount extends string,\n TAccountAirdrop extends string,\n TAccountAuthority extends string,\n TAccountBitmap extends string,\n TAccountMint extends string,\n TAccountClaimer extends string,\n TAccountTokenProgram extends string,\n TAccountAssociatedTokenProgram extends string,\n TAccountSystemProgram extends string,\n TProgramAddress extends Address = typeof DROPSY_PROGRAM_ADDRESS,\n>(\n input: ClaimAirdropInput<\n TAccountMaster,\n TAccountConfig,\n TAccountTreasury,\n TAccountAirdropMaster,\n TAccountAffiliate,\n TAccountSourceTokenAccount,\n TAccountDestinationTokenAccount,\n TAccountAirdrop,\n TAccountAuthority,\n TAccountBitmap,\n TAccountMint,\n TAccountClaimer,\n TAccountTokenProgram,\n TAccountAssociatedTokenProgram,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress },\n): ClaimAirdropInstruction<\n TProgramAddress,\n TAccountMaster,\n TAccountConfig,\n TAccountTreasury,\n TAccountAirdropMaster,\n TAccountAffiliate,\n TAccountSourceTokenAccount,\n TAccountDestinationTokenAccount,\n TAccountAirdrop,\n TAccountAuthority,\n TAccountBitmap,\n TAccountMint,\n TAccountClaimer,\n TAccountTokenProgram,\n TAccountAssociatedTokenProgram,\n TAccountSystemProgram\n> {\n // Program address.\n const programAddress = config?.programAddress ?? DROPSY_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n master: { value: input.master ?? null, isWritable: false },\n config: { value: input.config ?? null, isWritable: false },\n treasury: { value: input.treasury ?? null, isWritable: true },\n airdropMaster: { value: input.airdropMaster ?? null, isWritable: true },\n affiliate: { value: input.affiliate ?? null, isWritable: true },\n sourceTokenAccount: {\n value: input.sourceTokenAccount ?? null,\n isWritable: true,\n },\n destinationTokenAccount: {\n value: input.destinationTokenAccount ?? null,\n isWritable: true,\n },\n airdrop: { value: input.airdrop ?? null, isWritable: false },\n authority: { value: input.authority ?? null, isWritable: false },\n bitmap: { value: input.bitmap ?? null, isWritable: true },\n mint: { value: input.mint ?? null, isWritable: false },\n claimer: { value: input.claimer ?? null, isWritable: true },\n tokenProgram: { value: input.tokenProgram ?? null, isWritable: false },\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 ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Resolve default values.\n if (!accounts.tokenProgram.value) {\n accounts.tokenProgram.value =\n \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\" as Address<\"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\">;\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(accounts.master),\n getAccountMeta(accounts.config),\n getAccountMeta(accounts.treasury),\n getAccountMeta(accounts.airdropMaster),\n getAccountMeta(accounts.affiliate),\n getAccountMeta(accounts.sourceTokenAccount),\n getAccountMeta(accounts.destinationTokenAccount),\n getAccountMeta(accounts.airdrop),\n getAccountMeta(accounts.authority),\n getAccountMeta(accounts.bitmap),\n getAccountMeta(accounts.mint),\n getAccountMeta(accounts.claimer),\n getAccountMeta(accounts.tokenProgram),\n getAccountMeta(accounts.associatedTokenProgram),\n getAccountMeta(accounts.systemProgram),\n ],\n data: getClaimAirdropInstructionDataEncoder().encode(\n args as ClaimAirdropInstructionDataArgs,\n ),\n programAddress,\n } as ClaimAirdropInstruction<\n TProgramAddress,\n TAccountMaster,\n TAccountConfig,\n TAccountTreasury,\n TAccountAirdropMaster,\n TAccountAffiliate,\n TAccountSourceTokenAccount,\n TAccountDestinationTokenAccount,\n TAccountAirdrop,\n TAccountAuthority,\n TAccountBitmap,\n TAccountMint,\n TAccountClaimer,\n TAccountTokenProgram,\n TAccountAssociatedTokenProgram,\n TAccountSystemProgram\n >);\n}\n\nexport type ParsedClaimAirdropInstruction<\n TProgram extends string = typeof DROPSY_PROGRAM_ADDRESS,\n TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n programAddress: Address<TProgram>;\n accounts: {\n master: TAccountMetas[0];\n config: TAccountMetas[1];\n treasury: TAccountMetas[2];\n airdropMaster: TAccountMetas[3];\n affiliate?: TAccountMetas[4] | undefined;\n sourceTokenAccount: TAccountMetas[5];\n destinationTokenAccount: TAccountMetas[6];\n airdrop: TAccountMetas[7];\n authority: TAccountMetas[8];\n bitmap: TAccountMetas[9];\n mint: TAccountMetas[10];\n claimer: TAccountMetas[11];\n tokenProgram: TAccountMetas[12];\n associatedTokenProgram: TAccountMetas[13];\n systemProgram: TAccountMetas[14];\n };\n data: ClaimAirdropInstructionData;\n};\n\nexport function parseClaimAirdropInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>,\n): ParsedClaimAirdropInstruction<TProgram, TAccountMetas> {\n if (instruction.accounts.length < 15) {\n // TODO: Coded error.\n throw new Error(\"Not enough accounts\");\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 === DROPSY_PROGRAM_ADDRESS\n ? undefined\n : accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n master: getNextAccount(),\n config: getNextAccount(),\n treasury: getNextAccount(),\n airdropMaster: getNextAccount(),\n affiliate: getNextOptionalAccount(),\n sourceTokenAccount: getNextAccount(),\n destinationTokenAccount: getNextAccount(),\n airdrop: getNextAccount(),\n authority: getNextAccount(),\n bitmap: getNextAccount(),\n mint: getNextAccount(),\n claimer: getNextAccount(),\n tokenProgram: getNextAccount(),\n associatedTokenProgram: getNextAccount(),\n systemProgram: getNextAccount(),\n },\n data: getClaimAirdropInstructionDataDecoder().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 AccountRole,\n isProgramDerivedAddress,\n isTransactionSigner as kitIsTransactionSigner,\n type AccountMeta,\n type AccountSignerMeta,\n type Address,\n type ProgramDerivedAddress,\n type TransactionSigner,\n upgradeRoleToSigner,\n} from \"@solana/kit\";\n\n/**\n * Asserts that the given value is not null or undefined.\n * @internal\n */\nexport function expectSome<T>(value: T | null | undefined): T {\n if (value === null || value === undefined) {\n throw new Error(\"Expected a value but received null or undefined.\");\n }\n return value;\n}\n\n/**\n * Asserts that the given value is a PublicKey.\n * @internal\n */\nexport function expectAddress<T extends string = string>(\n value:\n | Address<T>\n | ProgramDerivedAddress<T>\n | TransactionSigner<T>\n | null\n | undefined,\n): Address<T> {\n if (!value) {\n throw new Error(\"Expected a Address.\");\n }\n if (typeof value === \"object\" && \"address\" in value) {\n return value.address;\n }\n if (Array.isArray(value)) {\n return value[0] as Address<T>;\n }\n return value as Address<T>;\n}\n\n/**\n * Asserts that the given value is a PDA.\n * @internal\n */\nexport function expectProgramDerivedAddress<T extends string = string>(\n value:\n | Address<T>\n | ProgramDerivedAddress<T>\n | TransactionSigner<T>\n | null\n | undefined,\n): ProgramDerivedAddress<T> {\n if (!value || !Array.isArray(value) || !isProgramDerivedAddress(value)) {\n throw new Error(\"Expected a ProgramDerivedAddress.\");\n }\n return value;\n}\n\n/**\n * Asserts that the given value is a TransactionSigner.\n * @internal\n */\nexport function expectTransactionSigner<T extends string = string>(\n value:\n | Address<T>\n | ProgramDerivedAddress<T>\n | TransactionSigner<T>\n | null\n | undefined,\n): TransactionSigner<T> {\n if (!value || !isTransactionSigner(value)) {\n throw new Error(\"Expected a TransactionSigner.\");\n }\n return value;\n}\n\n/**\n * Defines an instruction account to resolve.\n * @internal\n */\nexport type ResolvedAccount<\n T extends string = string,\n U extends\n | Address<T>\n | ProgramDerivedAddress<T>\n | TransactionSigner<T>\n | null =\n | Address<T>\n | ProgramDerivedAddress<T>\n | TransactionSigner<T>\n | null,\n> = {\n isWritable: boolean;\n value: U;\n};\n\n/**\n * Defines an instruction that stores additional bytes on-chain.\n * @internal\n */\nexport type InstructionWithByteDelta = {\n byteDelta: number;\n};\n\n/**\n * Get account metas and signers from resolved accounts.\n * @internal\n */\nexport function getAccountMetaFactory(\n programAddress: Address,\n optionalAccountStrategy: \"omitted\" | \"programId\",\n) {\n return (\n account: ResolvedAccount,\n ): AccountMeta | AccountSignerMeta | undefined => {\n if (!account.value) {\n if (optionalAccountStrategy === \"omitted\") return;\n return Object.freeze({\n address: programAddress,\n role: AccountRole.READONLY,\n });\n }\n\n const writableRole = account.isWritable\n ? AccountRole.WRITABLE\n : AccountRole.READONLY;\n return Object.freeze({\n address: expectAddress(account.value),\n role: isTransactionSigner(account.value)\n ? upgradeRoleToSigner(writableRole)\n : writableRole,\n ...(isTransactionSigner(account.value) ? { signer: account.value } : {}),\n });\n };\n}\n\nexport function isTransactionSigner<TAddress extends string = string>(\n value:\n | Address<TAddress>\n | ProgramDerivedAddress<TAddress>\n | TransactionSigner<TAddress>,\n): value is TransactionSigner<TAddress> {\n return (\n !!value &&\n typeof value === \"object\" &&\n \"address\" in value &&\n kitIsTransactionSigner(value)\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 getI64Decoder,\n getI64Encoder,\n getOptionDecoder,\n getOptionEncoder,\n getProgramDerivedAddress,\n getStructDecoder,\n getStructEncoder,\n getU8Decoder,\n getU8Encoder,\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 { DROPSY_PROGRAM_ADDRESS } from \"../programs\";\nimport {\n expectAddress,\n getAccountMetaFactory,\n type ResolvedAccount,\n} from \"../shared\";\nimport { DEFAULT_MASTER_PDA, DROPSY_TREASURY } from \"../constants\";\nimport { toUnixTimestamp } from \"../utils\";\n\nexport const CREATE_AIRDROP_DISCRIMINATOR = new Uint8Array([\n 227, 135, 208, 66, 137, 177, 80, 94,\n]);\n\nexport function getCreateAirdropDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n CREATE_AIRDROP_DISCRIMINATOR,\n );\n}\n\nexport type CreateAirdropInstruction<\n TProgram extends string = typeof DROPSY_PROGRAM_ADDRESS,\n TAccountMaster extends string | AccountMeta<string> = string,\n TAccountConfig extends string | AccountMeta<string> = string,\n TAccountTreasury extends string | AccountMeta<string> = string,\n TAccountAirdropMaster extends string | AccountMeta<string> = string,\n TAccountAffiliate extends string | AccountMeta<string> = string,\n TAccountAirdrop extends string | AccountMeta<string> = string,\n TAccountMint extends string | AccountMeta<string> = string,\n TAccountAuthority 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 TAccountMaster extends string\n ? ReadonlyAccount<TAccountMaster>\n : TAccountMaster,\n TAccountConfig extends string\n ? ReadonlyAccount<TAccountConfig>\n : TAccountConfig,\n TAccountTreasury extends string\n ? WritableAccount<TAccountTreasury>\n : TAccountTreasury,\n TAccountAirdropMaster extends string\n ? WritableAccount<TAccountAirdropMaster>\n : TAccountAirdropMaster,\n TAccountAffiliate extends string\n ? WritableAccount<TAccountAffiliate>\n : TAccountAffiliate,\n TAccountAirdrop extends string\n ? WritableAccount<TAccountAirdrop>\n : TAccountAirdrop,\n TAccountMint extends string\n ? ReadonlyAccount<TAccountMint>\n : TAccountMint,\n TAccountAuthority extends string\n ? WritableSignerAccount<TAccountAuthority> &\n AccountSignerMeta<TAccountAuthority>\n : TAccountAuthority,\n TAccountSystemProgram extends string\n ? ReadonlyAccount<TAccountSystemProgram>\n : TAccountSystemProgram,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type CreateAirdropInstructionData = {\n discriminator: ReadonlyUint8Array;\n merkleRoot: Option<ReadonlyUint8Array>;\n startsAt: Option<bigint>;\n endsAt: Option<bigint>;\n version: Option<number>;\n mutable: Option<number>;\n delegateAuthority: Option<Address>;\n delegatePermissions: Option<number>;\n};\n\nexport type CreateAirdropInstructionDataArgs = {\n merkleRoot: OptionOrNullable<ReadonlyUint8Array>;\n startsAt: OptionOrNullable<number | bigint>;\n endsAt: OptionOrNullable<number | bigint>;\n version: OptionOrNullable<number>;\n mutable: OptionOrNullable<number>;\n delegateAuthority: OptionOrNullable<Address>;\n delegatePermissions: OptionOrNullable<number>;\n};\n\nexport function getCreateAirdropInstructionDataEncoder(): Encoder<CreateAirdropInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([\n [\"discriminator\", fixEncoderSize(getBytesEncoder(), 8)],\n [\"merkleRoot\", getOptionEncoder(fixEncoderSize(getBytesEncoder(), 32))],\n [\"startsAt\", getOptionEncoder(getI64Encoder())],\n [\"endsAt\", getOptionEncoder(getI64Encoder())],\n [\"version\", getOptionEncoder(getU8Encoder())],\n [\"mutable\", getOptionEncoder(getU8Encoder())],\n [\"delegateAuthority\", getOptionEncoder(getAddressEncoder())],\n [\"delegatePermissions\", getOptionEncoder(getU8Encoder())],\n ]),\n (value) => ({ ...value, discriminator: CREATE_AIRDROP_DISCRIMINATOR }),\n );\n}\n\nexport function getCreateAirdropInstructionDataDecoder(): Decoder<CreateAirdropInstructionData> {\n return getStructDecoder([\n [\"discriminator\", fixDecoderSize(getBytesDecoder(), 8)],\n [\"merkleRoot\", getOptionDecoder(fixDecoderSize(getBytesDecoder(), 32))],\n [\"startsAt\", getOptionDecoder(getI64Decoder())],\n [\"endsAt\", getOptionDecoder(getI64Decoder())],\n [\"version\", getOptionDecoder(getU8Decoder())],\n [\"mutable\", getOptionDecoder(getU8Decoder())],\n [\"delegateAuthority\", getOptionDecoder(getAddressDecoder())],\n [\"delegatePermissions\", getOptionDecoder(getU8Decoder())],\n ]);\n}\n\nexport function getCreateAirdropInstructionDataCodec(): Codec<\n CreateAirdropInstructionDataArgs,\n CreateAirdropInstructionData\n> {\n return combineCodec(\n getCreateAirdropInstructionDataEncoder(),\n getCreateAirdropInstructionDataDecoder(),\n );\n}\n\nexport type CreateAirdropAsyncInput<\n TAccountMaster extends string = string,\n TAccountConfig extends string = string,\n TAccountTreasury extends string = string,\n TAccountAirdropMaster extends string = string,\n TAccountAffiliate extends string = string,\n TAccountAirdrop extends string = string,\n TAccountMint extends string = string,\n TAccountAuthority extends string = string,\n TAccountSystemProgram extends string = string,\n> = {\n master?: Address<TAccountMaster>;\n config?: Address<TAccountConfig>;\n treasury: Address<TAccountTreasury>;\n airdropMaster: Address<TAccountAirdropMaster>;\n affiliate?: Address<TAccountAffiliate>;\n airdrop?: Address<TAccountAirdrop>;\n mint: Address<TAccountMint>;\n authority: TransactionSigner<TAccountAuthority>;\n systemProgram?: Address<TAccountSystemProgram>;\n merkleRoot: CreateAirdropInstructionDataArgs[\"merkleRoot\"];\n startsAt: CreateAirdropInstructionDataArgs[\"startsAt\"];\n endsAt: CreateAirdropInstructionDataArgs[\"endsAt\"];\n version: CreateAirdropInstructionDataArgs[\"version\"];\n mutable: CreateAirdropInstructionDataArgs[\"mutable\"];\n delegateAuthority: CreateAirdropInstructionDataArgs[\"delegateAuthority\"];\n delegatePermissions: CreateAirdropInstructionDataArgs[\"delegatePermissions\"];\n};\n\nexport async function getCreateAirdropInstructionAsync<\n TAccountMaster extends string,\n TAccountConfig extends string,\n TAccountTreasury extends string,\n TAccountAirdropMaster extends string,\n TAccountAffiliate extends string,\n TAccountAirdrop extends string,\n TAccountMint extends string,\n TAccountAuthority extends string,\n TAccountSystemProgram extends string,\n TProgramAddress extends Address = typeof DROPSY_PROGRAM_ADDRESS,\n>(\n input: CreateAirdropAsyncInput<\n TAccountMaster,\n TAccountConfig,\n TAccountTreasury,\n TAccountAirdropMaster,\n TAccountAffiliate,\n TAccountAirdrop,\n TAccountMint,\n TAccountAuthority,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress },\n): Promise<\n CreateAirdropInstruction<\n TProgramAddress,\n TAccountMaster,\n TAccountConfig,\n TAccountTreasury,\n TAccountAirdropMaster,\n TAccountAffiliate,\n TAccountAirdrop,\n TAccountMint,\n TAccountAuthority,\n TAccountSystemProgram\n >\n> {\n // Program address.\n const programAddress = config?.programAddress ?? DROPSY_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n master: { value: input.master ?? null, isWritable: false },\n config: { value: input.config ?? null, isWritable: false },\n treasury: { value: input.treasury ?? null, isWritable: true },\n airdropMaster: { value: input.airdropMaster ?? null, isWritable: true },\n affiliate: { value: input.affiliate ?? null, isWritable: true },\n airdrop: { value: input.airdrop ?? null, isWritable: true },\n mint: { value: input.mint ?? null, isWritable: false },\n authority: { value: input.authority ?? null, isWritable: true },\n systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Resolve default values.\n if (!accounts.master.value) {\n accounts.master.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(new Uint8Array([109, 97, 115, 116, 101, 114])),\n ],\n });\n }\n if (!accounts.config.value) {\n accounts.config.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(\n new Uint8Array([\n 97, 105, 114, 100, 114, 111, 112, 95, 99, 111, 110, 102, 105, 103,\n ]),\n ),\n ],\n });\n }\n if (!accounts.airdrop.value) {\n accounts.airdrop.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(\n new Uint8Array([97, 105, 114, 100, 114, 111, 112]),\n ),\n getAddressEncoder().encode(expectAddress(accounts.mint.value)),\n getAddressEncoder().encode(expectAddress(accounts.authority.value)),\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(accounts.master),\n getAccountMeta(accounts.config),\n getAccountMeta(accounts.treasury),\n getAccountMeta(accounts.airdropMaster),\n getAccountMeta(accounts.affiliate),\n getAccountMeta(accounts.airdrop),\n getAccountMeta(accounts.mint),\n getAccountMeta(accounts.authority),\n getAccountMeta(accounts.systemProgram),\n ],\n data: getCreateAirdropInstructionDataEncoder().encode(\n args as CreateAirdropInstructionDataArgs,\n ),\n programAddress,\n } as CreateAirdropInstruction<\n TProgramAddress,\n TAccountMaster,\n TAccountConfig,\n TAccountTreasury,\n TAccountAirdropMaster,\n TAccountAffiliate,\n TAccountAirdrop,\n TAccountMint,\n TAccountAuthority,\n TAccountSystemProgram\n >);\n}\n\nexport type CreateAirdropInput<\n TAccountMaster extends string = string,\n TAccountConfig extends string = string,\n TAccountTreasury extends string = string,\n TAccountAirdropMaster extends string = string,\n TAccountAffiliate extends string = string,\n TAccountAirdrop extends string = string,\n TAccountMint extends string = string,\n TAccountAuthority extends string = string,\n TAccountSystemProgram extends string = string,\n> = {\n master: Address<TAccountMaster>;\n config: Address<TAccountConfig>;\n treasury: Address<TAccountTreasury>;\n airdropMaster: Address<TAccountAirdropMaster>;\n affiliate?: Address<TAccountAffiliate>;\n airdrop: Address<TAccountAirdrop>;\n mint: Address<TAccountMint>;\n authority: TransactionSigner<TAccountAuthority>;\n systemProgram?: Address<TAccountSystemProgram>;\n merkleRoot: CreateAirdropInstructionDataArgs[\"merkleRoot\"];\n startsAt: CreateAirdropInstructionDataArgs[\"startsAt\"];\n endsAt: CreateAirdropInstructionDataArgs[\"endsAt\"];\n version: CreateAirdropInstructionDataArgs[\"version\"];\n mutable: CreateAirdropInstructionDataArgs[\"mutable\"];\n delegateAuthority: CreateAirdropInstructionDataArgs[\"delegateAuthority\"];\n delegatePermissions: CreateAirdropInstructionDataArgs[\"delegatePermissions\"];\n};\n\nexport function getCreateAirdropInstruction<\n TAccountMaster extends string,\n TAccountConfig extends string,\n TAccountTreasury extends string,\n TAccountAirdropMaster extends string,\n TAccountAffiliate extends string,\n TAccountAirdrop extends string,\n TAccountMint extends string,\n TAccountAuthority extends string,\n TAccountSystemProgram extends string,\n TProgramAddress extends Address = typeof DROPSY_PROGRAM_ADDRESS,\n>(\n input: CreateAirdropInput<\n TAccountMaster,\n TAccountConfig,\n TAccountTreasury,\n TAccountAirdropMaster,\n TAccountAffiliate,\n TAccountAirdrop,\n TAccountMint,\n TAccountAuthority,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress },\n): CreateAirdropInstruction<\n TProgramAddress,\n TAccountMaster,\n TAccountConfig,\n TAccountTreasury,\n TAccountAirdropMaster,\n TAccountAffiliate,\n TAccountAirdrop,\n TAccountMint,\n TAccountAuthority,\n TAccountSystemProgram\n> {\n // Program address.\n const programAddress = config?.programAddress ?? DROPSY_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n master: { value: input.master ?? null, isWritable: false },\n config: { value: input.config ?? null, isWritable: false },\n treasury: { value: input.treasury ?? null, isWritable: true },\n airdropMaster: { value: input.airdropMaster ?? null, isWritable: true },\n affiliate: { value: input.affiliate ?? null, isWritable: true },\n airdrop: { value: input.airdrop ?? null, isWritable: true },\n mint: { value: input.mint ?? null, isWritable: false },\n authority: { value: input.authority ?? null, isWritable: true },\n systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\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(accounts.master),\n getAccountMeta(accounts.config),\n getAccountMeta(accounts.treasury),\n getAccountMeta(accounts.airdropMaster),\n getAccountMeta(accounts.affiliate),\n getAccountMeta(accounts.airdrop),\n getAccountMeta(accounts.mint),\n getAccountMeta(accounts.authority),\n getAccountMeta(accounts.systemProgram),\n ],\n data: getCreateAirdropInstructionDataEncoder().encode(\n args as CreateAirdropInstructionDataArgs,\n ),\n programAddress,\n } as CreateAirdropInstruction<\n TProgramAddress,\n TAccountMaster,\n TAccountConfig,\n TAccountTreasury,\n TAccountAirdropMaster,\n TAccountAffiliate,\n TAccountAirdrop,\n TAccountMint,\n TAccountAuthority,\n TAccountSystemProgram\n >);\n}\n\nexport type ParsedCreateAirdropInstruction<\n TProgram extends string = typeof DROPSY_PROGRAM_ADDRESS,\n TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n programAddress: Address<TProgram>;\n accounts: {\n master: TAccountMetas[0];\n config: TAccountMetas[1];\n treasury: TAccountMetas[2];\n airdropMaster: TAccountMetas[3];\n affiliate?: TAccountMetas[4] | undefined;\n airdrop: TAccountMetas[5];\n mint: TAccountMetas[6];\n authority: TAccountMetas[7];\n systemProgram: TAccountMetas[8];\n };\n data: CreateAirdropInstructionData;\n};\n\nexport function parseCreateAirdropInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>,\n): ParsedCreateAirdropInstruction<TProgram, TAccountMetas> {\n if (instruction.accounts.length < 9) {\n // TODO: Coded error.\n throw new Error(\"Not enough accounts\");\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 === DROPSY_PROGRAM_ADDRESS\n ? undefined\n : accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n master: getNextAccount(),\n config: getNextAccount(),\n treasury: getNextAccount(),\n airdropMaster: getNextAccount(),\n affiliate: getNextOptionalAccount(),\n airdrop: getNextAccount(),\n mint: getNextAccount(),\n authority: getNextAccount(),\n systemProgram: getNextAccount(),\n },\n data: getCreateAirdropInstructionDataDecoder().decode(instruction.data),\n };\n}\n\n\nexport type CreateAirdropV0Input = {\n airdropMaster?: Address;\n airdrop?: Address;\n mint: Address;\n authority: TransactionSigner<string>;\n merkleRoot?: ReadonlyUint8Array | null;\n startsAt?: Date | null;\n endsAt?: Date | null;\n};\n\nexport async function getCreateAirdropV0Instruction(\n input: CreateAirdropV0Input\n) {\n return await getCreateAirdropInstructionAsync({\n airdropMaster: input.airdropMaster ?? DEFAULT_MASTER_PDA,\n treasury: DROPSY_TREASURY,\n airdrop: input.airdrop,\n mint: input.mint,\n authority: input.authority,\n merkleRoot: input.merkleRoot ?? null,\n startsAt: toUnixTimestamp(input.startsAt),\n endsAt: toUnixTimestamp(input.endsAt),\n version: 0,\n mutable: null,\n delegateAuthority: null,\n delegatePermissions: null,\n });\n}\n\n","import { address } from \"@solana/kit\";\r\n\r\n/**\r\n * -------------------------\r\n * PDA Seed Constants\r\n * -------------------------\r\n * Used for deriving program addresses (PDAs) in Dropsy\r\n */\r\nexport const DROPSY_MASTER_SEED = \"master\";\r\nexport const AIRDROP_CONFIG_SEED = \"airdrop_config\";\r\nexport const AFFILIATE_MASTER_SEED = \"affiliate_master\";\r\nexport const AIRDROP_MASTER_SEED = \"airdrop_master\";\r\n\r\nexport const AIRDROP_SEED = \"airdrop\";\r\nexport const AFFILIATE_SEED = \"affiliate\";\r\nexport const BITMAP_SEED = \"bitmap\";\r\nexport const VESTING_SEED = \"vesting\";\r\n\r\nexport const PRESALE_SEED = \"presale\";\r\nexport const VAULT_SEED = \"vault\";\r\n\r\n/**\r\n * -------------------------\r\n * Admin / Protocol Keys\r\n * -------------------------\r\n */\r\nexport const ADMIN = address(\"8mtUD2XrkNnTxnjCehZ4DEtTXeGR1yrepSEGhCaSj2kT\");\r\nexport const DROPSY_TREASURY = address(\"8mtUD2XrkNnTxnjCehZ4DEtTXeGR1yrepSEGhCaSj2kT\");\r\nexport const DEFAULT_MASTER_PDA = address(\"8mtUD2XrkNnTxnjCehZ4DEtTXeGR1yrepSEGhCaSj2kT\");\r\nexport const DEFAULT_MASTER_PDA_AUTHORITY = address(\"8mtUD2XrkNnTxnjCehZ4DEtTXeGR1yrepSEGhCaSj2kT\");\r\n\r\n/**\r\n * -------------------------\r\n * Bitmap / Claim Config\r\n * -------------------------\r\n */\r\nexport const BITMAP_SIZE = 8000; // in bytes\r\nexport const MAX_BITMAP_CLAIM = BITMAP_SIZE * 8; // max number of claim slots\r\n\r\n\r\n/**\r\n * -------------------------\r\n * Airdrop Versions\r\n * -------------------------\r\n */\r\nexport const VERSION_BASIC = 0; // BasicAirdrop (MVP)\r\nexport const VERSION_VESTED = 1; // Vested / advanced airdrop\r\n\r\n/**\r\n * -------------------------\r\n * Airdrop State\r\n * -------------------------\r\n */\r\nexport const STATE_INITIALIZED = 0; // default\r\nexport const STATE_DELEGATED = 1; // airdrop is delegated\r\nexport const STATE_REDEEMED = 2; // airdrop tokens redeemed\r\n\r\n/**\r\n * -------------------------\r\n * Mutability Flags\r\n * -------------------------\r\n */\r\nexport const MUTABLE_NONE = 0; // immutable\r\n","import {\r\n airdropFactory,\r\n appendTransactionMessageInstructions,\r\n createSolanaRpc,\r\n createSolanaRpcSubscriptions,\r\n createTransactionMessage,\r\n generateKeyPairSigner,\r\n Instruction,\r\n lamports,\r\n pipe,\r\n Rpc,\r\n RpcSubscriptions,\r\n setTransactionMessageFeePayerSigner,\r\n setTransactionMessageLifetimeUsingBlockhash,\r\n SolanaRpcApi,\r\n SolanaRpcSubscriptionsApi,\r\n TransactionSigner,\r\n} from \"@solana/kit\";\r\n\r\ntype RpcClient = {\r\n rpc: Rpc<SolanaRpcApi>;\r\n rpcSubscriptions: RpcSubscriptions<SolanaRpcSubscriptionsApi>;\r\n};\r\n\r\nexport const generateKeyPairSignerWithSol = async (\r\n rpcClient: RpcClient,\r\n putativeLamports: bigint = 1_000_000_000n\r\n) => {\r\n const signer = await generateKeyPairSigner();\r\n await airdropFactory(rpcClient)({\r\n recipientAddress: signer.address,\r\n lamports: lamports(putativeLamports),\r\n commitment: \"confirmed\",\r\n });\r\n return signer;\r\n};\r\n\r\nexport const createDefaultSolanaClient = (): RpcClient => {\r\n const rpc = createSolanaRpc(\"https://api.devnet.solana.com\");\r\n const rpcSubscriptions = createSolanaRpcSubscriptions(\r\n \"wss://api.devnet.solana.com\"\r\n );\r\n return { rpc, rpcSubscriptions };\r\n};\r\n\r\nexport const createTransactionMessageFromInstructions = async (\r\n rpc: Rpc<SolanaRpcApi>,\r\n signer: TransactionSigner,\r\n instruction: Instruction[]\r\n) => {\r\n const { value: latestBlockhash } = await rpc.getLatestBlockhash().send();\r\n\r\n return pipe(\r\n createTransactionMessage({ version: 0 }),\r\n (tx) => setTransactionMessageLifetimeUsingBlockhash(latestBlockhash, tx),\r\n (tx) => setTransactionMessageFeePayerSigner(signer, tx),\r\n (tx) => appendTransactionMessageInstructions(instruction, tx)\r\n );\r\n};\r\n","import {\r\n Address,\r\n getAddressEncoder,\r\n getProgramDerivedAddress,\r\n ProgramDerivedAddressBump,\r\n ReadonlyUint8Array,\r\n} from \"@solana/kit\";\r\nimport { DROPSY_PROGRAM_ADDRESS } from \"../programs\";\r\nimport { AFFILIATE_SEED, AIRDROP_CONFIG_SEED, AIRDROP_MASTER_SEED, AIRDROP_SEED, BITMAP_SEED, DROPSY_MASTER_SEED } from \"../constants\";\r\n\r\nexport type DropsyPda = readonly [Address<string>, ProgramDerivedAddressBump];\r\ntype Seed = ReadonlyUint8Array | string;\r\n\r\nexport async function getDropsyDerivedAddress(\r\n seeds: Seed[]\r\n): Promise<DropsyPda> {\r\n return await getProgramDerivedAddress({\r\n seeds,\r\n programAddress: DROPSY_PROGRAM_ADDRESS,\r\n });\r\n}\r\n\r\nexport async function getMasterDerivedAddress(): Promise<DropsyPda> {\r\n return await getDropsyDerivedAddress([DROPSY_MASTER_SEED]);\r\n}\r\nexport async function getAirdropConfigDerivedAddress(): Promise<DropsyPda> {\r\n return await getDropsyDerivedAddress([AIRDROP_CONFIG_SEED]);\r\n}\r\nexport async function getAirdropMasterDerivedAddress(\r\n authority: Address\r\n): Promise<DropsyPda> {\r\n const seeds = [\r\n AIRDROP_MASTER_SEED,\r\n getAddressEncoder().encode(authority),\r\n ];\r\n return await getDropsyDerivedAddress(seeds);\r\n}\r\nexport async function getAffiliateDerivedAddress(\r\n authority: Address\r\n): Promise<DropsyPda> {\r\n const seeds = [\r\n AFFILIATE_SEED,\r\n getAddressEncoder().encode(authority),\r\n ];\r\n return await getDropsyDerivedAddress(seeds);\r\n}\r\n\r\nexport async function getAirdropDerivedAddress(\r\n authority: Address,\r\n mint: Address\r\n): Promise<DropsyPda> {\r\n const seeds = [\r\n AIRDROP_SEED,\r\n getAddressEncoder().encode(mint),\r\n getAddressEncoder().encode(authority),\r\n ];\r\n return await getDropsyDerivedAddress(seeds);\r\n}\r\n\r\nexport async function getClaimMapDerivedAddress(\r\n airdrop: Address,\r\n id: number\r\n): Promise<DropsyPda> {\r\n const idBuffer = Buffer.alloc(2);\r\n idBuffer.writeUInt16LE(id);\r\n const seeds = [\r\n BITMAP_SEED,\r\n getAddressEncoder().encode(airdrop),\r\n idBuffer,\r\n ];\r\n return await getDropsyDerivedAddress(seeds);\r\n}\r\n","export function toUnixTimestamp(date?: Date | null): number | null {\r\n if (!date) return null;\r\n return Math.floor(date.getTime() / 1000);\r\n}","import { ReadonlyUint8Array } from \"@solana/kit\";\r\nimport { createHash } from \"crypto\";\r\nimport MerkleTree from \"merkletreejs\";\r\n\r\nfunction hashLeaf(index: number, address: string, amount: number): Buffer {\r\n const data = `${index}:${address}:${amount.toString()}`;\r\n return createHash(\"sha256\").update(data).digest();\r\n}\r\nfunction merkleRootFromHex(hex?: string | null): ReadonlyUint8Array | null {\r\n if (!hex) return null;\r\n if (hex.length !== 64) throw new Error(\"Merkle root must be 32 bytes (64 hex chars)\");\r\n return new Uint8Array(hex.match(/.{2}/g)!.map(byte => parseInt(byte, 16)));\r\n}\r\n\r\nfunction hashAddress(address: string): Buffer {\r\n return createHash(\"sha256\").update(address).digest();\r\n}\r\n\r\nexport const createWLMerkleTree = (wallets: string[]) => {\r\n const leaves = wallets.map((address) => hashAddress(address));\r\n\r\n return new MerkleTree(\r\n leaves,\r\n (data: any) => createHash(\"sha256\").update(data).digest(),\r\n { sortPairs: true });\r\n};\r\n\r\nexport const getSimpleMerkleProof = (merkleTree: MerkleTree, address: string): Buffer[] => {\r\n const leaf = hashAddress(address);\r\n return merkleTree.getProof(leaf).map((p) => p.data);\r\n};\r\n\r\nexport const getMerkleRootArray = (\r\n merkleTree: MerkleTree\r\n): ReadonlyUint8Array => {\r\n const root = merkleTree.getRoot();\r\n\r\n if (root.length !== 32) {\r\n throw new Error(\"Merkle root must be 32 bytes\");\r\n }\r\n\r\n // Convert Buffer → Uint8Array\r\n const uint8Root = new Uint8Array(root);\r\n\r\n // Cast to ReadonlyUint8Array\r\n return uint8Root as ReadonlyUint8Array;\r\n};\r\n\r\nexport const createMerkleTree = (\r\n claimList: { index: number; address: string; amount: number }[]\r\n) => {\r\n const leaves = claimList.map(({ index, address, amount }) =>\r\n hashLeaf(index, address, amount)\r\n );\r\n\r\n const merkleTree = new MerkleTree(\r\n leaves,\r\n (data: any) => createHash(\"sha256\").update(data).digest(),\r\n { sortPairs: true }\r\n );\r\n\r\n return merkleTree;\r\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 getU16Decoder,\n getU16Encoder,\n getU32Decoder,\n getU32Encoder,\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 { DROPSY_PROGRAM_ADDRESS } from \"../programs\";\nimport {\n expectAddress,\n expectSome,\n getAccountMetaFactory,\n type ResolvedAccount,\n} from \"../shared\";\nimport { DEFAULT_MASTER_PDA, DROPSY_TREASURY, MAX_BITMAP_CLAIM } from \"../constants\";\n\nexport const CREATE_CLAIM_MAP_DISCRIMINATOR = new Uint8Array([\n 22, 150, 81, 49, 214, 142, 189, 122,\n]);\n\nexport function getCreateClaimMapDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n CREATE_CLAIM_MAP_DISCRIMINATOR,\n );\n}\n\nexport type CreateClaimMapInstruction<\n TProgram extends string = typeof DROPSY_PROGRAM_ADDRESS,\n TAccountMaster extends string | AccountMeta<string> = string,\n TAccountConfig extends string | AccountMeta<string> = string,\n TAccountTreasury extends string | AccountMeta<string> = string,\n TAccountAirdropMaster extends string | AccountMeta<string> = string,\n TAccountAffiliate extends string | AccountMeta<string> = string,\n TAccountAirdrop extends string | AccountMeta<string> = string,\n TAccountMint extends string | AccountMeta<string> = string,\n TAccountBitmap extends string | AccountMeta<string> = string,\n TAccountAuthority 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 TAccountMaster extends string\n ? ReadonlyAccount<TAccountMaster>\n : TAccountMaster,\n TAccountConfig extends string\n ? ReadonlyAccount<TAccountConfig>\n : TAccountConfig,\n TAccountTreasury extends string\n ? WritableAccount<TAccountTreasury>\n : TAccountTreasury,\n TAccountAirdropMaster extends string\n ? WritableAccount<TAccountAirdropMaster>\n : TAccountAirdropMaster,\n TAccountAffiliate extends string\n ? WritableAccount<TAccountAffiliate>\n : TAccountAffiliate,\n TAccountAirdrop extends string\n ? WritableAccount<TAccountAirdrop>\n : TAccountAirdrop,\n TAccountMint extends string\n ? ReadonlyAccount<TAccountMint>\n : TAccountMint,\n TAccountBitmap extends string\n ? WritableAccount<TAccountBitmap>\n : TAccountBitmap,\n TAccountAuthority extends string\n ? WritableSignerAccount<TAccountAuthority> &\n AccountSignerMeta<TAccountAuthority>\n : TAccountAuthority,\n TAccountSystemProgram extends string\n ? ReadonlyAccount<TAccountSystemProgram>\n : TAccountSystemProgram,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type CreateClaimMapInstructionData = {\n discriminator: ReadonlyUint8Array;\n id: number;\n total: number;\n};\n\nexport type CreateClaimMapInstructionDataArgs = { id: number; total: number };\n\nexport function getCreateClaimMapInstructionDataEncoder(): FixedSizeEncoder<CreateClaimMapInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([\n [\"discriminator\", fixEncoderSize(getBytesEncoder(), 8)],\n [\"id\", getU16Encoder()],\n [\"total\", getU32Encoder()],\n ]),\n (value) => ({ ...value, discriminator: CREATE_CLAIM_MAP_DISCRIMINATOR }),\n );\n}\n\nexport function getCreateClaimMapInstructionDataDecoder(): FixedSizeDecoder<CreateClaimMapInstructionData> {\n return getStructDecoder([\n [\"discriminator\", fixDecoderSize(getBytesDecoder(), 8)],\n [\"id\", getU16Decoder()],\n [\"total\", getU32Decoder()],\n ]);\n}\n\nexport function getCreateClaimMapInstructionDataCodec(): FixedSizeCodec<\n CreateClaimMapInstructionDataArgs,\n CreateClaimMapInstructionData\n> {\n return combineCodec(\n getCreateClaimMapInstructionDataEncoder(),\n getCreateClaimMapInstructionDataDecoder(),\n );\n}\n\nexport type CreateClaimMapAsyncInput<\n TAccountMaster extends string = string,\n TAccountConfig extends string = string,\n TAccountTreasury extends string = string,\n TAccountAirdropMaster extends string = string,\n TAccountAffiliate extends string = string,\n TAccountAirdrop extends string = string,\n TAccountMint extends string = string,\n TAccountBitmap extends string = string,\n TAccountAuthority extends string = string,\n TAccountSystemProgram extends string = string,\n> = {\n master?: Address<TAccountMaster>;\n config?: Address<TAccountConfig>;\n treasury: Address<TAccountTreasury>;\n airdropMaster: Address<TAccountAirdropMaster>;\n affiliate?: Address<TAccountAffiliate>;\n airdrop?: Address<TAccountAirdrop>;\n mint: Address<TAccountMint>;\n bitmap?: Address<TAccountBitmap>;\n authority: TransactionSigner<TAccountAuthority>;\n systemProgram?: Address<TAccountSystemProgram>;\n id: CreateClaimMapInstructionDataArgs[\"id\"];\n total: CreateClaimMapInstructionDataArgs[\"total\"];\n};\n\nexport async function getCreateClaimMapInstructionAsync<\n TAccountMaster extends string,\n TAccountConfig extends string,\n TAccountTreasury extends string,\n TAccountAirdropMaster extends string,\n TAccountAffiliate extends string,\n TAccountAirdrop extends string,\n TAccountMint extends string,\n TAccountBitmap extends string,\n TAccountAuthority extends string,\n TAccountSystemProgram extends string,\n TProgramAddress extends Address = typeof DROPSY_PROGRAM_ADDRESS,\n>(\n input: CreateClaimMapAsyncInput<\n TAccountMaster,\n TAccountConfig,\n TAccountTreasury,\n TAccountAirdropMaster,\n TAccountAffiliate,\n TAccountAirdrop,\n TAccountMint,\n TAccountBitmap,\n TAccountAuthority,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress },\n): Promise<\n CreateClaimMapInstruction<\n TProgramAddress,\n TAccountMaster,\n TAccountConfig,\n TAccountTreasury,\n TAccountAirdropMaster,\n TAccountAffiliate,\n TAccountAirdrop,\n TAccountMint,\n TAccountBitmap,\n TAccountAuthority,\n TAccountSystemProgram\n >\n> {\n // Program address.\n const programAddress = config?.programAddress ?? DROPSY_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n master: { value: input.master ?? null, isWritable: false },\n config: { value: input.config ?? null, isWritable: false },\n treasury: { value: input.treasury ?? null, isWritable: true },\n airdropMaster: { value: input.airdropMaster ?? null, isWritable: true },\n affiliate: { value: input.affiliate ?? null, isWritable: true },\n airdrop: { value: input.airdrop ?? null, isWritable: true },\n mint: { value: input.mint ?? null, isWritable: false },\n bitmap: { value: input.bitmap ?? null, isWritable: true },\n authority: { value: input.authority ?? null, isWritable: true },\n systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Resolve default values.\n if (!accounts.master.value) {\n accounts.master.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(new Uint8Array([109, 97, 115, 116, 101, 114])),\n ],\n });\n }\n if (!accounts.config.value) {\n accounts.config.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(\n new Uint8Array([\n 97, 105, 114, 100, 114, 111, 112, 95, 99, 111, 110, 102, 105, 103,\n ]),\n ),\n ],\n });\n }\n if (!accounts.airdrop.value) {\n accounts.airdrop.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(\n new Uint8Array([97, 105, 114, 100, 114, 111, 112]),\n ),\n getAddressEncoder().encode(expectAddress(accounts.mint.value)),\n getAddressEncoder().encode(expectAddress(accounts.authority.value)),\n ],\n });\n }\n if (!accounts.bitmap.value) {\n accounts.bitmap.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(new Uint8Array([98, 105, 116, 109, 97, 112])),\n getAddressEncoder().encode(expectAddress(accounts.airdrop.value)),\n getU16Encoder().encode(expectSome(args.id)),\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(accounts.master),\n getAccountMeta(accounts.config),\n getAccountMeta(accounts.treasury),\n getAccountMeta(accounts.airdropMaster),\n getAccountMeta(accounts.affiliate),\n getAccountMeta(accounts.airdrop),\n getAccountMeta(accounts.mint),\n getAccountMeta(accounts.bitmap),\n getAccountMeta(accounts.authority),\n getAccountMeta(accounts.systemProgram),\n ],\n data: getCreateClaimMapInstructionDataEncoder().encode(\n args as CreateClaimMapInstructionDataArgs,\n ),\n programAddress,\n } as CreateClaimMapInstruction<\n TProgramAddress,\n TAccountMaster,\n TAccountConfig,\n TAccountTreasury,\n TAccountAirdropMaster,\n TAccountAffiliate,\n TAccountAirdrop,\n TAccountMint,\n TAccountBitmap,\n TAccountAuthority,\n TAccountSystemProgram\n >);\n}\n\nexport type CreateClaimMapInput<\n TAccountMaster extends string = string,\n TAccountConfig extends string = string,\n TAccountTreasury extends string = string,\n TAccountAirdropMaster extends string = string,\n TAccountAffiliate extends string = string,\n TAccountAirdrop extends string = string,\n TAccountMint extends string = string,\n TAccountBitmap extends string = string,\n TAccountAuthority extends string = string,\n TAccountSystemProgram extends string = string,\n> = {\n master: Address<TAccountMaster>;\n config: Address<TAccountConfig>;\n treasury: Address<TAccountTreasury>;\n airdropMaster: Address<TAccountAirdropMaster>;\n affiliate?: Address<TAccountAffiliate>;\n airdrop: Address<TAccountAirdrop>;\n mint: Address<TAccountMint>;\n bitmap: Address<TAccountBitmap>;\n authority: TransactionSigner<TAccountAuthority>;\n systemProgram?: Address<TAccountSystemProgram>;\n id: CreateClaimMapInstructionDataArgs[\"id\"];\n total: CreateClaimMapInstructionDataArgs[\"total\"];\n};\n\nexport function getCreateClaimMapInstruction<\n TAccountMaster extends string,\n TAccountConfig extends string,\n TAccountTreasury extends string,\n TAccountAirdropMaster extends string,\n TAccountAffiliate extends string,\n TAccountAirdrop extends string,\n TAccountMint extends string,\n TAccountBitmap extends string,\n TAccountAuthority extends string,\n TAccountSystemProgram extends string,\n TProgramAddress extends Address = typeof DROPSY_PROGRAM_ADDRESS,\n>(\n input: CreateClaimMapInput<\n TAccountMaster,\n TAccountConfig,\n TAccountTreasury,\n TAccountAirdropMaster,\n TAccountAffiliate,\n TAccountAirdrop,\n TAccountMint,\n TAccountBitmap,\n TAccountAuthority,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress },\n): CreateClaimMapInstruction<\n TProgramAddress,\n TAccountMaster,\n TAccountConfig,\n TAccountTreasury,\n TAccountAirdropMaster,\n TAccountAffiliate,\n TAccountAirdrop,\n TAccountMint,\n TAccountBitmap,\n TAccountAuthority,\n TAccountSystemProgram\n> {\n // Program address.\n const programAddress = config?.programAddress ?? DROPSY_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n master: { value: input.master ?? null, isWritable: false },\n config: { value: input.config ?? null, isWritable: false },\n treasury: { value: input.treasury ?? null, isWritable: true },\n airdropMaster: { value: input.airdropMaster ?? null, isWritable: true },\n affiliate: { value: input.affiliate ?? null, isWritable: true },\n airdrop: { value: input.airdrop ?? null, isWritable: true },\n mint: { value: input.mint ?? null, isWritable: false },\n bitmap: { value: input.bitmap ?? null, isWritable: true },\n authority: { value: input.authority ?? null, isWritable: true },\n systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\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(accounts.master),\n getAccountMeta(accounts.config),\n getAccountMeta(accounts.treasury),\n getAccountMeta(accounts.airdropMaster),\n getAccountMeta(accounts.affiliate),\n getAccountMeta(accounts.airdrop),\n getAccountMeta(accounts.mint),\n getAccountMeta(accounts.bitmap),\n getAccountMeta(accounts.authority),\n getAccountMeta(accounts.systemProgram),\n ],\n data: getCreateClaimMapInstructionDataEncoder().encode(\n args as CreateClaimMapInstructionDataArgs,\n ),\n programAddress,\n } as CreateClaimMapInstruction<\n TProgramAddress,\n TAccountMaster,\n TAccountConfig,\n TAccountTreasury,\n TAccountAirdropMaster,\n TAccountAffiliate,\n TAccountAirdrop,\n TAccountMint,\n TAccountBitmap,\n TAccountAuthority,\n TAccountSystemProgram\n >);\n}\n\nexport type ParsedCreateClaimMapInstruction<\n TProgram extends string = typeof DROPSY_PROGRAM_ADDRESS,\n TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n programAddress: Address<TProgram>;\n accounts: {\n master: TAccountMetas[0];\n config: TAccountMetas[1];\n treasury: TAccountMetas[2];\n airdropMaster: TAccountMetas[3];\n affiliate?: TAccountMetas[4] | undefined;\n airdrop: TAccountMetas[5];\n mint: TAccountMetas[6];\n bitmap: TAccountMetas[7];\n authority: TAccountMetas[8];\n systemProgram: TAccountMetas[9];\n };\n data: CreateClaimMapInstructionData;\n};\n\nexport function parseCreateClaimMapInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>,\n): ParsedCreateClaimMapInstruction<TProgram, TAccountMetas> {\n if (instruction.accounts.length < 10) {\n // TODO: Coded error.\n throw new Error(\"Not enough accounts\");\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 === DROPSY_PROGRAM_ADDRESS\n ? undefined\n : accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n master: getNextAccount(),\n config: getNextAccount(),\n treasury: getNextAccount(),\n airdropMaster: getNextAccount(),\n affiliate: getNextOptionalAccount(),\n airdrop: getNextAccount(),\n mint: getNextAccount(),\n bitmap: getNextAccount(),\n authority: getNextAccount(),\n systemProgram: getNextAccount(),\n },\n data: getCreateClaimMapInstructionDataDecoder().decode(instruction.data),\n };\n}\n\n\nexport type CreateClaimMapV0Input = {\n airdropMaster?: Address;\n airdrop?: Address;\n claimMap?: Address;\n mint: Address;\n authority: TransactionSigner<string>;\n id?: number;\n total?: number;\n};\n\nexport async function getCreateClaimMapV0Instruction(\n input: CreateClaimMapV0Input\n) {\n return await getCreateClaimMapInstructionAsync({\n airdropMaster: input.airdropMaster ?? DEFAULT_MASTER_PDA,\n treasury: DROPSY_TREASURY,\n airdrop: input.airdrop,\n bitmap: input.claimMap,\n mint: input.mint,\n authority: input.authority,\n id: input.id ?? 0,\n total: input.total ?? MAX_BITMAP_CLAIM\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 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 { DROPSY_PROGRAM_ADDRESS } from \"../programs\";\nimport {\n expectAddress,\n getAccountMetaFactory,\n type ResolvedAccount,\n} from \"../shared\";\nimport { DEFAULT_MASTER_PDA, DROPSY_TREASURY } from \"../constants\";\n\nexport const DEPOSIT_TOKENS_DISCRIMINATOR = new Uint8Array([\n 176, 83, 229, 18, 191, 143, 176, 150,\n]);\n\nexport function getDepositTokensDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n DEPOSIT_TOKENS_DISCRIMINATOR,\n );\n}\n\nexport type DepositTokensInstruction<\n TProgram extends string = typeof DROPSY_PROGRAM_ADDRESS,\n TAccountMaster extends string | AccountMeta<string> = string,\n TAccountConfig extends string | AccountMeta<string> = string,\n TAccountTreasury extends string | AccountMeta<string> = string,\n TAccountAirdropMaster extends string | AccountMeta<string> = string,\n TAccountAffiliate extends string | AccountMeta<string> = string,\n TAccountSourceTokenAccount extends string | AccountMeta<string> = string,\n TAccountDestinationTokenAccount extends string | AccountMeta<string> = string,\n TAccountAirdrop extends string | AccountMeta<string> = string,\n TAccountMint extends string | AccountMeta<string> = string,\n TAccountAuthority extends string | AccountMeta<string> = string,\n TAccountTokenProgram extends string | AccountMeta<string> =\n \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\",\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 TAccountMaster extends string\n ? ReadonlyAccount<TAccountMaster>\n : TAccountMaster,\n TAccountConfig extends string\n ? ReadonlyAccount<TAccountConfig>\n : TAccountConfig,\n TAccountTreasury extends string\n ? WritableAccount<TAccountTreasury>\n : TAccountTreasury,\n TAccountAirdropMaster extends string\n ? WritableAccount<TAccountAirdropMaster>\n : TAccountAirdropMaster,\n TAccountAffiliate extends string\n ? WritableAccount<TAccountAffiliate>\n : TAccountAffiliate,\n TAccountSourceTokenAccount extends string\n ? WritableAccount<TAccountSourceTokenAccount>\n : TAccountSourceTokenAccount,\n TAccountDestinationTokenAccount extends string\n ? WritableAccount<TAccountDestinationTokenAccount>\n : TAccountDestinationTokenAccount,\n TAccountAirdrop extends string\n ? WritableAccount<TAccountAirdrop>\n : TAccountAirdrop,\n TAccountMint extends string\n ? ReadonlyAccount<TAccountMint>\n : TAccountMint,\n TAccountAuthority extends string\n ? WritableSignerAccount<TAccountAuthority> &\n AccountSignerMeta<TAccountAuthority>\n : TAccountAuthority,\n TAccountTokenProgram extends string\n ? ReadonlyAccount<TAccountTokenProgram>\n : TAccountTokenProgram,\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 DepositTokensInstructionData = {\n discriminator: ReadonlyUint8Array;\n amount: bigint;\n};\n\nexport type DepositTokensInstructionDataArgs = { amount: number | bigint };\n\nexport function getDepositTokensInstructionDataEncoder(): FixedSizeEncoder<DepositTokensInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([\n [\"discriminator\", fixEncoderSize(getBytesEncoder(), 8)],\n [\"amount\", getU64Encoder()],\n ]),\n (value) => ({ ...value, discriminator: DEPOSIT_TOKENS_DISCRIMINATOR }),\n );\n}\n\nexport function getDepositTokensInstructionDataDecoder(): FixedSizeDecoder<DepositTokensInstructionData> {\n return getStructDecoder([\n [\"discriminator\", fixDecoderSize(getBytesDecoder(), 8)],\n [\"amount\", getU64Decoder()],\n ]);\n}\n\nexport function getDepositTokensInstructionDataCodec(): FixedSizeCodec<\n DepositTokensInstructionDataArgs,\n DepositTokensInstructionData\n> {\n return combineCodec(\n getDepositTokensInstructionDataEncoder(),\n getDepositTokensInstructionDataDecoder(),\n );\n}\n\nexport type DepositTokensAsyncInput<\n TAccountMaster extends string = string,\n TAccountConfig extends string = string,\n TAccountTreasury extends string = string,\n TAccountAirdropMaster extends string = string,\n TAccountAffiliate extends string = string,\n TAccountSourceTokenAccount extends string = string,\n TAccountDestinationTokenAccount extends string = string,\n TAccountAirdrop extends string = string,\n TAccountMint extends string = string,\n TAccountAuthority extends string = string,\n TAccountTokenProgram extends string = string,\n TAccountAssociatedTokenProgram extends string = string,\n TAccountSystemProgram extends string = string,\n> = {\n master?: Address<TAccountMaster>;\n config?: Address<TAccountConfig>;\n treasury?: Address<TAccountTreasury>;\n airdropMaster?: Address<TAccountAirdropMaster>;\n affiliate?: Address<TAccountAffiliate>;\n sourceTokenAccount: Address<TAccountSourceTokenAccount>;\n destinationTokenAccount?: Address<TAccountDestinationTokenAccount>;\n airdrop?: Address<TAccountAirdrop>;\n mint: Address<TAccountMint>;\n authority: TransactionSigner<TAccountAuthority>;\n tokenProgram?: Address<TAccountTokenProgram>;\n associatedTokenProgram?: Address<TAccountAssociatedTokenProgram>;\n systemProgram?: Address<TAccountSystemProgram>;\n amount: DepositTokensInstructionDataArgs[\"amount\"];\n};\n\nexport async function getDepositTokensInstructionAsync<\n TAccountMaster extends string,\n TAccountConfig extends string,\n TAccountTreasury extends string,\n TAccountAirdropMaster extends string,\n TAccountAffiliate extends string,\n TAccountSourceTokenAccount extends string,\n TAccountDestinationTokenAccount extends string,\n TAccountAirdrop extends string,\n TAccountMint extends string,\n TAccountAuthority extends string,\n TAccountTokenProgram extends string,\n TAccountAssociatedTokenProgram extends string,\n TAccountSystemProgram extends string,\n TProgramAddress extends Address = typeof DROPSY_PROGRAM_ADDRESS,\n>(\n input: DepositTokensAsyncInput<\n TAccountMaster,\n TAccountConfig,\n TAccountTreasury,\n TAccountAirdropMaster,\n TAccountAffiliate,\n TAccountSourceTokenAccount,\n TAccountDestinationTokenAccount,\n TAccountAirdrop,\n TAccountMint,\n TAccountAuthority,\n TAccountTokenProgram,\n TAccountAssociatedTokenProgram,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress },\n): Promise<\n DepositTokensInstruction<\n TProgramAddress,\n TAccountMaster,\n TAccountConfig,\n TAccountTreasury,\n TAccountAirdropMaster,\n TAccountAffiliate,\n TAccountSourceTokenAccount,\n TAccountDestinationTokenAccount,\n TAccountAirdrop,\n TAccountMint,\n TAccountAuthority,\n TAccountTokenProgram,\n TAccountAssociatedTokenProgram,\n TAccountSystemProgram\n >\n> {\n // Program address.\n const programAddress = config?.programAddress ?? DROPSY_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n master: { value: input.master ?? null, isWritable: false },\n config: { value: input.config ?? null, isWritable: false },\n treasury: { value: input.treasury ?? null, isWritable: true },\n airdropMaster: { value: input.airdropMaster ?? null, isWritable: true },\n affiliate: { value: input.affiliate ?? null, isWritable: true },\n sourceTokenAccount: {\n value: input.sourceTokenAccount ?? null,\n isWritable: true,\n },\n destinationTokenAccount: {\n value: input.destinationTokenAccount ?? null,\n isWritable: true,\n },\n airdrop: { value: input.airdrop ?? null, isWritable: true },\n mint: { value: input.mint ?? null, isWritable: false },\n authority: { value: input.authority ?? null, isWritable: true },\n tokenProgram: { value: input.tokenProgram ?? null, isWritable: false },\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 ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Resolve default values.\n if (!accounts.master.value) {\n accounts.master.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(new Uint8Array([109, 97, 115, 116, 101, 114])),\n ],\n });\n }\n if (!accounts.config.value) {\n accounts.config.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(\n new Uint8Array([\n 97, 105, 114, 100, 114, 111, 112, 95, 99, 111, 110, 102, 105, 103,\n ]),\n ),\n ],\n });\n }\n if (!accounts.airdropMaster.value) {\n accounts.airdropMaster.value = DEFAULT_MASTER_PDA;\n }\n if (!accounts.treasury.value) {\n accounts.treasury.value = DROPSY_TREASURY;\n }\n\n if (!accounts.airdrop.value) {\n accounts.airdrop.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(\n new Uint8Array([97, 105, 114, 100, 114, 111, 112]),\n ),\n getAddressEncoder().encode(expectAddress(accounts.mint.value)),\n getAddressEncoder().encode(expectAddress(accounts.authority.value)),\n ],\n });\n }\n if (!accounts.tokenProgram.value) {\n accounts.tokenProgram.value =\n \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\" as Address<\"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\">;\n }\n if (!accounts.destinationTokenAccount.value) {\n accounts.destinationTokenAccount.value = await getProgramDerivedAddress({\n programAddress:\n \"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\" as Address<\"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\">,\n seeds: [\n getAddressEncoder().encode(expectAddress(accounts.airdrop.value)),\n getAddressEncoder().encode(expectAddress(accounts.tokenProgram.value)),\n getAddressEncoder().encode(expectAddress(accounts.mint.value)),\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(accounts.master),\n getAccountMeta(accounts.config),\n getAccountMeta(accounts.treasury),\n getAccountMeta(accounts.airdropMaster),\n getAccountMeta(accounts.affiliate),\n getAccountMeta(accounts.sourceTokenAccount),\n getAccountMeta(accounts.destinationTokenAccount),\n getAccountMeta(accounts.airdrop),\n getAccountMeta(accounts.mint),\n getAccountMeta(accounts.authority),\n getAccountMeta(accounts.tokenProgram),\n getAccountMeta(accounts.associatedTokenProgram),\n getAccountMeta(accounts.systemProgram),\n ],\n data: getDepositTokensInstructionDataEncoder().encode(\n args as DepositTokensInstructionDataArgs,\n ),\n programAddress,\n } as DepositTokensInstruction<\n TProgramAddress,\n TAccountMaster,\n TAccountConfig,\n TAccountTreasury,\n TAccountAirdropMaster,\n TAccountAffiliate,\n TAccountSourceTokenAccount,\n TAccountDestinationTokenAccount,\n TAccountAirdrop,\n TAccountMint,\n TAccountAuthority,\n TAccountTokenProgram,\n TAccountAssociatedTokenProgram,\n TAccountSystemProgram\n >);\n}\n\nexport type DepositTokensInput<\n TAccountMaster extends string = string,\n TAccountConfig extends string = string,\n TAccountTreasury extends string = string,\n TAccountAirdropMaster extends string = string,\n TAccountAffiliate extends string = string,\n TAccountSourceTokenAccount extends string = string,\n TAccountDestinationTokenAccount extends string = string,\n TAccountAirdrop extends string = string,\n TAccountMint extends string = string,\n TAccountAuthority extends string = string,\n TAccountTokenProgram extends string = string,\n TAccountAssociatedTokenProgram extends string = string,\n TAccountSystemProgram extends string = string,\n> = {\n master: Address<TAccountMaster>;\n config: Address<TAccountConfig>;\n treasury: Address<TAccountTreasury>;\n airdropMaster: Address<TAccountAirdropMaster>;\n affiliate?: Address<TAccountAffiliate>;\n sourceTokenAccount: Address<TAccountSourceTokenAccount>;\n destinationTokenAccount: Address<TAccountDestinationTokenAccount>;\n airdrop: Address<TAccountAirdrop>;\n mint: Address<TAccountMint>;\n authority: TransactionSigner<TAccountAuthority>;\n tokenProgram?: Address<TAccountTokenProgram>;\n associatedTokenProgram?: Address<TAccountAssociatedTokenProgram>;\n systemProgram?: Address<TAccountSystemProgram>;\n amount: DepositTokensInstructionDataArgs[\"amount\"];\n};\n\nexport function getDepositTokensInstruction<\n TAccountMaster extends string,\n TAccountConfig extends string,\n TAccountTreasury extends string,\n TAccountAirdropMaster extends string,\n TAccountAffiliate extends string,\n TAccountSourceTokenAccount extends string,\n TAccountDestinationTokenAccount extends string,\n TAccountAirdrop extends string,\n TAccountMint extends string,\n TAccountAuthority extends string,\n TAccountTokenProgram extends string,\n TAccountAssociatedTokenProgram extends string,\n TAccountSystemProgram extends string,\n TProgramAddress extends Address = typeof DROPSY_PROGRAM_ADDRESS,\n>(\n input: DepositTokensInput<\n TAccountMaster,\n TAccountConfig,\n TAccountTreasury,\n TAccountAirdropMaster,\n TAccountAffiliate,\n TAccountSourceTokenAccount,\n TAccountDestinationTokenAccount,\n TAccountAirdrop,\n TAccountMint,\n TAccountAuthority,\n TAccountTokenProgram,\n TAccountAssociatedTokenProgram,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress },\n): DepositTokensInstruction<\n TProgramAddress,\n TAccountMaster,\n TAccountConfig,\n TAccountTreasury,\n TAccountAirdropMaster,\n TAccountAffiliate,\n TAccountSourceTokenAccount,\n TAccountDestinationTokenAccount,\n TAccountAirdrop,\n TAccountMint,\n TAccountAuthority,\n TAccountTokenProgram,\n TAccountAssociatedTokenProgram,\n TAccountSystemProgram\n> {\n // Program address.\n const programAddress = config?.programAddress ?? DROPSY_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n master: { value: input.master ?? null, isWritable: false },\n config: { value: input.config ?? null, isWritable: false },\n treasury: { value: input.treasury ?? null, isWritable: true },\n airdropMaster: { value: input.airdropMaster ?? null, isWritable: true },\n affiliate: { value: input.affiliate ?? null, isWritable: true },\n sourceTokenAccount: {\n value: input.sourceTokenAccount ?? null,\n isWritable: true,\n },\n destinationTokenAccount: {\n value: input.destinationTokenAccount ?? null,\n isWritable: true,\n },\n airdrop: { value: input.airdrop ?? null, isWritable: true },\n mint: { value: input.mint ?? null, isWritable: false },\n authority: { value: input.authority ?? null, isWritable: true },\n tokenProgram: { value: input.tokenProgram ?? null, isWritable: false },\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 ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Resolve default values.\n if (!accounts.tokenProgram.value) {\n accounts.tokenProgram.value =\n \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\" as Address<\"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\">;\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(accounts.master),\n getAccountMeta(accounts.config),\n getAccountMeta(accounts.treasury),\n getAccountMeta(accounts.airdropMaster),\n getAccountMeta(accounts.affiliate),\n getAccountMeta(accounts.sourceTokenAccount),\n getAccountMeta(accounts.destinationTokenAccount),\n getAccountMeta(accounts.airdrop),\n getAccountMeta(accounts.mint),\n getAccountMeta(accounts.authority),\n getAccountMeta(accounts.tokenProgram),\n getAccountMeta(accounts.associatedTokenProgram),\n getAccountMeta(accounts.systemProgram),\n ],\n data: getDepositTokensInstructionDataEncoder().encode(\n args as DepositTokensInstructionDataArgs,\n ),\n programAddress,\n } as DepositTokensInstruction<\n TProgramAddress,\n TAccountMaster,\n TAccountConfig,\n TAccountTreasury,\n TAccountAirdropMaster,\n TAccountAffiliate,\n TAccountSourceTokenAccount,\n TAccountDestinationTokenAccount,\n TAccountAirdrop,\n TAccountMint,\n TAccountAuthority,\n TAccountTokenProgram,\n TAccountAssociatedTokenProgram,\n TAccountSystemProgram\n >);\n}\n\nexport type ParsedDepositTokensInstruction<\n TProgram extends string = typeof DROPSY_PROGRAM_ADDRESS,\n TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n programAddress: Address<TProgram>;\n accounts: {\n master: TAccountMetas[0];\n config: TAccountMetas[1];\n treasury: TAccountMetas[2];\n airdropMaster: TAccountMetas[3];\n affiliate?: TAccountMetas[4] | undefined;\n sourceTokenAccount: TAccountMetas[5];\n destinationTokenAccount: TAccountMetas[6];\n airdrop: TAccountMetas[7];\n mint: TAccountMetas[8];\n authority: TAccountMetas[9];\n tokenProgram: TAccountMetas[10];\n associatedTokenProgram: TAccountMetas[11];\n systemProgram: TAccountMetas[12];\n };\n data: DepositTokensInstructionData;\n};\n\nexport function parseDepositTokensInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>,\n): ParsedDepositTokensInstruction<TProgram, TAccountMetas> {\n if (instruction.accounts.length < 13) {\n // TODO: Coded error.\n throw new Error(\"Not enough accounts\");\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 === DROPSY_PROGRAM_ADDRESS\n ? undefined\n : accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n master: getNextAccount(),\n config: getNextAccount(),\n treasury: getNextAccount(),\n airdropMaster: getNextAccount(),\n affiliate: getNextOptionalAccount(),\n sourceTokenAccount: getNextAccount(),\n destinationTokenAccount: getNextAccount(),\n airdrop: getNextAccount(),\n mint: getNextAccount(),\n authority: getNextAccount(),\n tokenProgram: getNextAccount(),\n associatedTokenProgram: getNextAccount(),\n systemProgram: getNextAccount(),\n },\n data: getDepositTokensInstructionDataDecoder().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 getOptionDecoder,\n getOptionEncoder,\n getProgramDerivedAddress,\n getStructDecoder,\n getStructEncoder,\n getU64Decoder,\n getU64Encoder,\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 { DROPSY_PROGRAM_ADDRESS } from \"../programs\";\nimport {\n expectAddress,\n getAccountMetaFactory,\n type ResolvedAccount,\n} from \"../shared\";\nimport {\n getAdvancedFeeConfigDecoder,\n getAdvancedFeeConfigEncoder,\n type AdvancedFeeConfig,\n type AdvancedFeeConfigArgs,\n} from \"../types\";\n\nexport const INITIALIZE_AIRDROP_MASTER_DISCRIMINATOR = new Uint8Array([\n 163, 197, 170, 44, 57, 57, 90, 65,\n]);\n\nexport function getInitializeAirdropMasterDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n INITIALIZE_AIRDROP_MASTER_DISCRIMINATOR,\n );\n}\n\nexport type InitializeAirdropMasterInstruction<\n TProgram extends string = typeof DROPSY_PROGRAM_ADDRESS,\n TAccountMaster extends string | AccountMeta<string> = string,\n TAccountConfig extends string | AccountMeta<string> = string,\n TAccountTreasury extends string | AccountMeta<string> = string,\n TAccountAffiliateMaster extends string | AccountMeta<string> = string,\n TAccountAirdropMaster extends string | AccountMeta<string> = string,\n TAccountAuthority 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 TAccountMaster extends string\n ? ReadonlyAccount<TAccountMaster>\n : TAccountMaster,\n TAccountConfig extends string\n ? ReadonlyAccount<TAccountConfig>\n : TAccountConfig,\n TAccountTreasury extends string\n ? WritableAccount<TAccountTreasury>\n : TAccountTreasury,\n TAccountAffiliateMaster extends string\n ? ReadonlyAccount<TAccountAffiliateMaster>\n : TAccountAffiliateMaster,\n TAccountAirdropMaster extends string\n ? WritableAccount<TAccountAirdropMaster>\n : TAccountAirdropMaster,\n TAccountAuthority extends string\n ? WritableSignerAccount<TAccountAuthority> &\n AccountSignerMeta<TAccountAuthority>\n : TAccountAuthority,\n TAccountSystemProgram extends string\n ? ReadonlyAccount<TAccountSystemProgram>\n : TAccountSystemProgram,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type InitializeAirdropMasterInstructionData = {\n discriminator: ReadonlyUint8Array;\n merkleRoot: Option<ReadonlyUint8Array>;\n airdropCreateFee: Option<bigint>;\n airdropUpdateFee: Option<bigint>;\n bitmapCreateFee: Option<bigint>;\n advancedConfig: Option<AdvancedFeeConfig>;\n wlProof: Option<Array<ReadonlyUint8Array>>;\n};\n\nexport type InitializeAirdropMasterInstructionDataArgs = {\n merkleRoot: OptionOrNullable<ReadonlyUint8Array>;\n airdropCreateFee: OptionOrNullable<number | bigint>;\n airdropUpdateFee: OptionOrNullable<number | bigint>;\n bitmapCreateFee: OptionOrNullable<number | bigint>;\n advancedConfig: OptionOrNullable<AdvancedFeeConfigArgs>;\n wlProof: OptionOrNullable<Array<ReadonlyUint8Array>>;\n};\n\nexport function getInitializeAirdropMasterInstructionDataEncoder(): Encoder<InitializeAirdropMasterInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([\n [\"discriminator\", fixEncoderSize(getBytesEncoder(), 8)],\n [\"merkleRoot\", getOptionEncoder(fixEncoderSize(getBytesEncoder(), 32))],\n [\"airdropCreateFee\", getOptionEncoder(getU64Encoder())],\n [\"airdropUpdateFee\", getOptionEncoder(getU64Encoder())],\n [\"bitmapCreateFee\", getOptionEncoder(getU64Encoder())],\n [\"advancedConfig\", getOptionEncoder(getAdvancedFeeConfigEncoder())],\n [\n \"wlProof\",\n getOptionEncoder(\n getArrayEncoder(fixEncoderSize(getBytesEncoder(), 32)),\n ),\n ],\n ]),\n (value) => ({\n ...value,\n discriminator: INITIALIZE_AIRDROP_MASTER_DISCRIMINATOR,\n }),\n );\n}\n\nexport function getInitializeAirdropMasterInstructionDataDecoder(): Decoder<InitializeAirdropMasterInstructionData> {\n return getStructDecoder([\n [\"discriminator\", fixDecoderSize(getBytesDecoder(), 8)],\n [\"merkleRoot\", getOptionDecoder(fixDecoderSize(getBytesDecoder(), 32))],\n [\"airdropCreateFee\", getOptionDecoder(getU64Decoder())],\n [\"airdropUpdateFee\", getOptionDecoder(getU64Decoder())],\n [\"bitmapCreateFee\", getOptionDecoder(getU64Decoder())],\n [\"advancedConfig\", getOptionDecoder(getAdvancedFeeConfigDecoder())],\n [\n \"wlProof\",\n getOptionDecoder(getArrayDecoder(fixDecoderSize(getBytesDecoder(), 32))),\n ],\n ]);\n}\n\nexport function getInitializeAirdropMasterInstructionDataCodec(): Codec<\n InitializeAirdropMasterInstructionDataArgs,\n InitializeAirdropMasterInstructionData\n> {\n return combineCodec(\n getInitializeAirdropMasterInstructionDataEncoder(),\n getInitializeAirdropMasterInstructionDataDecoder(),\n );\n}\n\nexport type InitializeAirdropMasterAsyncInput<\n TAccountMaster extends string = string,\n TAccountConfig extends string = string,\n TAccountTreasury extends string = string,\n TAccountAffiliateMaster extends string = string,\n TAccountAirdropMaster extends string = string,\n TAccountAuthority extends string = string,\n TAccountSystemProgram extends string = string,\n> = {\n master?: Address<TAccountMaster>;\n config?: Address<TAccountConfig>;\n treasury: Address<TAccountTreasury>;\n affiliateMaster?: Address<TAccountAffiliateMaster>;\n airdropMaster?: Address<TAccountAirdropMaster>;\n authority: TransactionSigner<TAccountAuthority>;\n systemProgram?: Address<TAccountSystemProgram>;\n merkleRoot: InitializeAirdropMasterInstructionDataArgs[\"merkleRoot\"];\n airdropCreateFee: InitializeAirdropMasterInstructionDataArgs[\"airdropCreateFee\"];\n airdropUpdateFee: InitializeAirdropMasterInstructionDataArgs[\"airdropUpdateFee\"];\n bitmapCreateFee: InitializeAirdropMasterInstructionDataArgs[\"bitmapCreateFee\"];\n advancedConfig: InitializeAirdropMasterInstructionDataArgs[\"advancedConfig\"];\n wlProof: InitializeAirdropMasterInstructionDataArgs[\"wlProof\"];\n};\n\nexport async function getInitializeAirdropMasterInstructionAsync<\n TAccountMaster extends string,\n TAccountConfig extends string,\n TAccountTreasury extends string,\n TAccountAffiliateMaster extends string,\n TAccountAirdropMaster extends string,\n TAccountAuthority extends string,\n TAccountSystemProgram extends string,\n TProgramAddress extends Address = typeof DROPSY_PROGRAM_ADDRESS,\n>(\n input: InitializeAirdropMasterAsyncInput<\n TAccountMaster,\n TAccountConfig,\n TAccountTreasury,\n TAccountAffiliateMaster,\n TAccountAirdropMaster,\n TAccountAuthority,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress },\n): Promise<\n InitializeAirdropMasterInstruction<\n TProgramAddress,\n TAccountMaster,\n TAccountConfig,\n TAccountTreasury,\n TAccountAffiliateMaster,\n TAccountAirdropMaster,\n TAccountAuthority,\n TAccountSystemProgram\n >\n> {\n // Program address.\n const programAddress = config?.programAddress ?? DROPSY_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n master: { value: input.master ?? null, isWritable: false },\n config: { value: input.config ?? null, isWritable: false },\n treasury: { value: input.treasury ?? null, isWritable: true },\n affiliateMaster: {\n value: input.affiliateMaster ?? null,\n isWritable: false,\n },\n airdropMaster: { value: input.airdropMaster ?? null, isWritable: true },\n authority: { value: input.authority ?? null, isWritable: true },\n systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Resolve default values.\n if (!accounts.master.value) {\n accounts.master.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(new Uint8Array([109, 97, 115, 116, 101, 114])),\n ],\n });\n }\n if (!accounts.config.value) {\n accounts.config.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(\n new Uint8Array([\n 97, 105, 114, 100, 114, 111, 112, 95, 99, 111, 110, 102, 105, 103,\n ]),\n ),\n ],\n });\n }\n if (!accounts.airdropMaster.value) {\n accounts.airdropMaster.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(\n new Uint8Array([\n 97, 105, 114, 100, 114, 111, 112, 95, 109, 97, 115, 116, 101, 114,\n ]),\n ),\n getAddressEncoder().encode(expectAddress(accounts.authority.value)),\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(accounts.master),\n getAccountMeta(accounts.config),\n getAccountMeta(accounts.treasury),\n getAccountMeta(accounts.affiliateMaster),\n getAccountMeta(accounts.airdropMaster),\n getAccountMeta(accounts.authority),\n getAccountMeta(accounts.systemProgram),\n ],\n data: getInitializeAirdropMasterInstructionDataEncoder().encode(\n args as InitializeAirdropMasterInstructionDataArgs,\n ),\n programAddress,\n } as InitializeAirdropMasterInstruction<\n TProgramAddress,\n TAccountMaster,\n TAccountConfig,\n TAccountTreasury,\n TAccountAffiliateMaster,\n TAccountAirdropMaster,\n TAccountAuthority,\n TAccountSystemProgram\n >);\n}\n\nexport type InitializeAirdropMasterInput<\n TAccountMaster extends string = string,\n TAccountConfig extends string = string,\n TAccountTreasury extends string = string,\n TAccountAffiliateMaster extends string = string,\n TAccountAirdropMaster extends string = string,\n TAccountAuthority extends string = string,\n TAccountSystemProgram extends string = string,\n> = {\n master: Address<TAccountMaster>;\n config: Address<TAccountConfig>;\n treasury: Address<TAccountTreasury>;\n affiliateMaster?: Address<TAccountAffiliateMaster>;\n airdropMaster: Address<TAccountAirdropMaster>;\n authority: TransactionSigner<TAccountAuthority>;\n systemProgram?: Address<TAccountSystemProgram>;\n merkleRoot: InitializeAirdropMasterInstructionDataArgs[\"merkleRoot\"];\n airdropCreateFee: InitializeAirdropMasterInstructionDataArgs[\"airdropCreateFee\"];\n airdropUpdateFee: InitializeAirdropMasterInstructionDataArgs[\"airdropUpdateFee\"];\n bitmapCreateFee: InitializeAirdropMasterInstructionDataArgs[\"bitmapCreateFee\"];\n advancedConfig: InitializeAirdropMasterInstructionDataArgs[\"advancedConfig\"];\n wlProof: InitializeAirdropMasterInstructionDataArgs[\"wlProof\"];\n};\n\nexport function getInitializeAirdropMasterInstruction<\n TAccountMaster extends string,\n TAccountConfig extends string,\n TAccountTreasury extends string,\n TAccountAffiliateMaster extends string,\n TAccountAirdropMaster extends string,\n TAccountAuthority extends string,\n TAccountSystemProgram extends string,\n TProgramAddress extends Address = typeof DROPSY_PROGRAM_ADDRESS,\n>(\n input: InitializeAirdropMasterInput<\n TAccountMaster,\n TAccountConfig,\n TAccountTreasury,\n TAccountAffiliateMaster,\n TAccountAirdropMaster,\n TAccountAuthority,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress },\n): InitializeAirdropMasterInstruction<\n TProgramAddress,\n TAccountMaster,\n TAccountConfig,\n TAccountTreasury,\n TAccountAffiliateMaster,\n TAccountAirdropMaster,\n TAccountAuthority,\n TAccountSystemProgram\n> {\n // Program address.\n const programAddress = config?.programAddress ?? DROPSY_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n master: { value: input.master ?? null, isWritable: false },\n config: { value: input.config ?? null, isWritable: false },\n treasury: { value: input.treasury ?? null, isWritable: true },\n affiliateMaster: {\n value: input.affiliateMaster ?? null,\n isWritable: false,\n },\n airdropMaster: { value: input.airdropMaster ?? null, isWritable: true },\n authority: { value: input.authority ?? null, isWritable: true },\n systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\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(accounts.master),\n getAccountMeta(accounts.config),\n getAccountMeta(accounts.treasury),\n getAccountMeta(accounts.affiliateMaster),\n getAccountMeta(accounts.airdropMaster),\n getAccountMeta(accounts.authority),\n getAccountMeta(accounts.systemProgram),\n ],\n data: getInitializeAirdropMasterInstructionDataEncoder().encode(\n args as InitializeAirdropMasterInstructionDataArgs,\n ),\n programAddress,\n } as InitializeAirdropMasterInstruction<\n TProgramAddress,\n TAccountMaster,\n TAccountConfig,\n TAccountTreasury,\n TAccountAffiliateMaster,\n TAccountAirdropMaster,\n TAccountAuthority,\n TAccountSystemProgram\n >);\n}\n\nexport type ParsedInitializeAirdropMasterInstruction<\n TProgram extends string = typeof DROPSY_PROGRAM_ADDRESS,\n TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n programAddress: Address<TProgram>;\n accounts: {\n master: TAccountMetas[0];\n config: TAccountMetas[1];\n treasury: TAccountMetas[2];\n affiliateMaster?: TAccountMetas[3] | undefined;\n airdropMaster: TAccountMetas[4];\n authority: TAccountMetas[5];\n systemProgram: TAccountMetas[6];\n };\n data: InitializeAirdropMasterInstructionData;\n};\n\nexport function parseInitializeAirdropMasterInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>,\n): ParsedInitializeAirdropMasterInstruction<TProgram, TAccountMetas> {\n if (instruction.accounts.length < 7) {\n // TODO: Coded error.\n throw new Error(\"Not enough accounts\");\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 === DROPSY_PROGRAM_ADDRESS\n ? undefined\n : accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n master: getNextAccount(),\n config: getNextAccount(),\n treasury: getNextAccount(),\n affiliateMaster: getNextOptionalAccount(),\n airdropMaster: getNextAccount(),\n authority: getNextAccount(),\n systemProgram: getNextAccount(),\n },\n data: getInitializeAirdropMasterInstructionDataDecoder().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 getStructDecoder,\n getStructEncoder,\n getU64Decoder,\n getU64Encoder,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from \"@solana/kit\";\n\nexport type AdvancedFeeConfig = {\n claimFee: bigint;\n depositFee: bigint;\n delegateFee: bigint;\n};\n\nexport type AdvancedFeeConfigArgs = {\n claimFee: number | bigint;\n depositFee: number | bigint;\n delegateFee: number | bigint;\n};\n\nexport function getAdvancedFeeConfigEncoder(): FixedSizeEncoder<AdvancedFeeConfigArgs> {\n return getStructEncoder([\n [\"claimFee\", getU64Encoder()],\n [\"depositFee\", getU64Encoder()],\n [\"delegateFee\", getU64Encoder()],\n ]);\n}\n\nexport function getAdvancedFeeConfigDecoder(): FixedSizeDecoder<AdvancedFeeConfig> {\n return getStructDecoder([\n [\"claimFee\", getU64Decoder()],\n [\"depositFee\", getU64Decoder()],\n [\"delegateFee\", getU64Decoder()],\n ]);\n}\n\nexport function getAdvancedFeeConfigCodec(): FixedSizeCodec<\n AdvancedFeeConfigArgs,\n AdvancedFeeConfig\n> {\n return combineCodec(\n getAdvancedFeeConfigEncoder(),\n getAdvancedFeeConfigDecoder(),\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 getI64Decoder,\n getI64Encoder,\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 AirdropBoosted = {\n airdrop: Address;\n boostedBy: Address;\n boostAmount: bigint;\n timestamp: bigint;\n};\n\nexport type AirdropBoostedArgs = {\n airdrop: Address;\n boostedBy: Address;\n boostAmount: number | bigint;\n timestamp: number | bigint;\n};\n\nexport function getAirdropBoostedEncoder(): FixedSizeEncoder<AirdropBoostedArgs> {\n return getStructEncoder([\n [\"airdrop\", getAddressEncoder()],\n [\"boostedBy\", getAddressEncoder()],\n [\"boostAmount\", getU64Encoder()],\n [\"timestamp\", getI64Encoder()],\n ]);\n}\n\nexport function getAirdropBoostedDecoder(): FixedSizeDecoder<AirdropBoosted> {\n return getStructDecoder([\n [\"airdrop\", getAddressDecoder()],\n [\"boostedBy\", getAddressDecoder()],\n [\"boostAmount\", getU64Decoder()],\n [\"timestamp\", getI64Decoder()],\n ]);\n}\n\nexport function getAirdropBoostedCodec(): FixedSizeCodec<\n AirdropBoostedArgs,\n AirdropBoosted\n> {\n return combineCodec(getAirdropBoostedEncoder(), getAirdropBoostedDecoder());\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 getI64Decoder,\n getI64Encoder,\n getStructDecoder,\n getStructEncoder,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from \"@solana/kit\";\n\nexport type AirdropClosed = {\n airdrop: Address;\n authority: Address;\n timestamp: bigint;\n};\n\nexport type AirdropClosedArgs = {\n airdrop: Address;\n authority: Address;\n timestamp: number | bigint;\n};\n\nexport function getAirdropClosedEncoder(): FixedSizeEncoder<AirdropClosedArgs> {\n return getStructEncoder([\n [\"airdrop\", getAddressEncoder()],\n [\"authority\", getAddressEncoder()],\n [\"timestamp\", getI64Encoder()],\n ]);\n}\n\nexport function getAirdropClosedDecoder(): FixedSizeDecoder<AirdropClosed> {\n return getStructDecoder([\n [\"airdrop\", getAddressDecoder()],\n [\"authority\", getAddressDecoder()],\n [\"timestamp\", getI64Decoder()],\n ]);\n}\n\nexport function getAirdropClosedCodec(): FixedSizeCodec<\n AirdropClosedArgs,\n AirdropClosed\n> {\n return combineCodec(getAirdropClosedEncoder(), getAirdropClosedDecoder());\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 getU8Decoder,\n getU8Encoder,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from \"@solana/kit\";\n\nexport type AirdropDelegated = {\n airdrop: Address;\n authority: Address;\n delegate: Address;\n permissions: number;\n};\n\nexport type AirdropDelegatedArgs = AirdropDelegated;\n\nexport function getAirdropDelegatedEncoder(): FixedSizeEncoder<AirdropDelegatedArgs> {\n return getStructEncoder([\n [\"airdrop\", getAddressEncoder()],\n [\"authority\", getAddressEncoder()],\n [\"delegate\", getAddressEncoder()],\n [\"permissions\", getU8Encoder()],\n ]);\n}\n\nexport function getAirdropDelegatedDecoder(): FixedSizeDecoder<AirdropDelegated> {\n return getStructDecoder([\n [\"airdrop\", getAddressDecoder()],\n [\"authority\", getAddressDecoder()],\n [\"delegate\", getAddressDecoder()],\n [\"permissions\", getU8Decoder()],\n ]);\n}\n\nexport function getAirdropDelegatedCodec(): FixedSizeCodec<\n AirdropDelegatedArgs,\n AirdropDelegated\n> {\n return combineCodec(\n getAirdropDelegatedEncoder(),\n getAirdropDelegatedDecoder(),\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 getI64Decoder,\n getI64Encoder,\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 AirdropInitialized = {\n airdrop: Address;\n mint: Address;\n authority: Address;\n controller: Address;\n merkleRoot: ReadonlyUint8Array;\n startTime: bigint;\n endTime: bigint;\n timestamp: bigint;\n};\n\nexport type AirdropInitializedArgs = {\n airdrop: Address;\n mint: Address;\n authority: Address;\n controller: Address;\n merkleRoot: ReadonlyUint8Array;\n startTime: number | bigint;\n endTime: number | bigint;\n timestamp: number | bigint;\n};\n\nexport function getAirdropInitializedEncoder(): FixedSizeEncoder<AirdropInitializedArgs> {\n return getStructEncoder([\n [\"airdrop\", getAddressEncoder()],\n [\"mint\", getAddressEncoder()],\n [\"authority\", getAddressEncoder()],\n [\"controller\", getAddressEncoder()],\n [\"merkleRoot\", fixEncoderSize(getBytesEncoder(), 32)],\n [\"startTime\", getI64Encoder()],\n [\"endTime\", getI64Encoder()],\n [\"timestamp\", getI64Encoder()],\n ]);\n}\n\nexport function getAirdropInitializedDecoder(): FixedSizeDecoder<AirdropInitialized> {\n return getStructDecoder([\n [\"airdrop\", getAddressDecoder()],\n [\"mint\", getAddressDecoder()],\n [\"authority\", getAddressDecoder()],\n [\"controller\", getAddressDecoder()],\n [\"merkleRoot\", fixDecoderSize(getBytesDecoder(), 32)],\n [\"startTime\", getI64Decoder()],\n [\"endTime\", getI64Decoder()],\n [\"timestamp\", getI64Decoder()],\n ]);\n}\n\nexport function getAirdropInitializedCodec(): FixedSizeCodec<\n AirdropInitializedArgs,\n AirdropInitialized\n> {\n return combineCodec(\n getAirdropInitializedEncoder(),\n getAirdropInitializedDecoder(),\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 AirdropUpdated = { airdrop: Address; updatedBy: Address };\n\nexport type AirdropUpdatedArgs = AirdropUpdated;\n\nexport function getAirdropUpdatedEncoder(): FixedSizeEncoder<AirdropUpdatedArgs> {\n return getStructEncoder([\n [\"airdrop\", getAddressEncoder()],\n [\"updatedBy\", getAddressEncoder()],\n ]);\n}\n\nexport function getAirdropUpdatedDecoder(): FixedSizeDecoder<AirdropUpdated> {\n return getStructDecoder([\n [\"airdrop\", getAddressDecoder()],\n [\"updatedBy\", getAddressDecoder()],\n ]);\n}\n\nexport function getAirdropUpdatedCodec(): FixedSizeCodec<\n AirdropUpdatedArgs,\n AirdropUpdated\n> {\n return combineCodec(getAirdropUpdatedEncoder(), getAirdropUpdatedDecoder());\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 getI64Decoder,\n getI64Encoder,\n getStructDecoder,\n getStructEncoder,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from \"@solana/kit\";\n\nexport type BaseDurationConfig = {\n minimum: bigint;\n maximum: bigint;\n updateGrace: bigint;\n};\n\nexport type BaseDurationConfigArgs = {\n minimum: number | bigint;\n maximum: number | bigint;\n updateGrace: number | bigint;\n};\n\nexport function getBaseDurationConfigEncoder(): FixedSizeEncoder<BaseDurationConfigArgs> {\n return getStructEncoder([\n [\"minimum\", getI64Encoder()],\n [\"maximum\", getI64Encoder()],\n [\"updateGrace\", getI64Encoder()],\n ]);\n}\n\nexport function getBaseDurationConfigDecoder(): FixedSizeDecoder<BaseDurationConfig> {\n return getStructDecoder([\n [\"minimum\", getI64Decoder()],\n [\"maximum\", getI64Decoder()],\n [\"updateGrace\", getI64Decoder()],\n ]);\n}\n\nexport function getBaseDurationConfigCodec(): FixedSizeCodec<\n BaseDurationConfigArgs,\n BaseDurationConfig\n> {\n return combineCodec(\n getBaseDurationConfigEncoder(),\n getBaseDurationConfigDecoder(),\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 BaseFeatureFeeConfig = {\n creationFee: bigint;\n upgradeFee: bigint;\n withdrawFeeBasis: bigint;\n};\n\nexport type BaseFeatureFeeConfigArgs = {\n creationFee: number | bigint;\n upgradeFee: number | bigint;\n withdrawFeeBasis: number | bigint;\n};\n\nexport function getBaseFeatureFeeConfigEncoder(): FixedSizeEncoder<BaseFeatureFeeConfigArgs> {\n return getStructEncoder([\n [\"creationFee\", getU64Encoder()],\n [\"upgradeFee\", getU64Encoder()],\n [\"withdrawFeeBasis\", getU64Encoder()],\n ]);\n}\n\nexport function getBaseFeatureFeeConfigDecoder(): FixedSizeDecoder<BaseFeatureFeeConfig> {\n return getStructDecoder([\n [\"creationFee\", getU64Decoder()],\n [\"upgradeFee\", getU64Decoder()],\n [\"withdrawFeeBasis\", getU64Decoder()],\n ]);\n}\n\nexport function getBaseFeatureFeeConfigCodec(): FixedSizeCodec<\n BaseFeatureFeeConfigArgs,\n BaseFeatureFeeConfig\n> {\n return combineCodec(\n getBaseFeatureFeeConfigEncoder(),\n getBaseFeatureFeeConfigDecoder(),\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 getOptionDecoder,\n getOptionEncoder,\n getStructDecoder,\n getStructEncoder,\n getU64Decoder,\n getU64Encoder,\n type Codec,\n type Decoder,\n type Encoder,\n type Option,\n type OptionOrNullable,\n} from \"@solana/kit\";\n\nexport type BaseFeeConfig = {\n creationFee: bigint;\n updateFee: Option<bigint>;\n closeFee: bigint;\n};\n\nexport type BaseFeeConfigArgs = {\n creationFee: number | bigint;\n updateFee: OptionOrNullable<number | bigint>;\n closeFee: number | bigint;\n};\n\nexport function getBaseFeeConfigEncoder(): Encoder<BaseFeeConfigArgs> {\n return getStructEncoder([\n [\"creationFee\", getU64Encoder()],\n [\"updateFee\", getOptionEncoder(getU64Encoder())],\n [\"closeFee\", getU64Encoder()],\n ]);\n}\n\nexport function getBaseFeeConfigDecoder(): Decoder<BaseFeeConfig> {\n return getStructDecoder([\n [\"creationFee\", getU64Decoder()],\n [\"updateFee\", getOptionDecoder(getU64Decoder())],\n [\"closeFee\", getU64Decoder()],\n ]);\n}\n\nexport function getBaseFeeConfigCodec(): Codec<\n BaseFeeConfigArgs,\n BaseFeeConfig\n> {\n return combineCodec(getBaseFeeConfigEncoder(), getBaseFeeConfigDecoder());\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 ClaimMapClosed = {\n airdrop: Address;\n bitmap: Address;\n authority: Address;\n};\n\nexport type ClaimMapClosedArgs = ClaimMapClosed;\n\nexport function getClaimMapClosedEncoder(): FixedSizeEncoder<ClaimMapClosedArgs> {\n return getStructEncoder([\n [\"airdrop\", getAddressEncoder()],\n [\"bitmap\", getAddressEncoder()],\n [\"authority\", getAddressEncoder()],\n ]);\n}\n\nexport function getClaimMapClosedDecoder(): FixedSizeDecoder<ClaimMapClosed> {\n return getStructDecoder([\n [\"airdrop\", getAddressDecoder()],\n [\"bitmap\", getAddressDecoder()],\n [\"authority\", getAddressDecoder()],\n ]);\n}\n\nexport function getClaimMapClosedCodec(): FixedSizeCodec<\n ClaimMapClosedArgs,\n ClaimMapClosed\n> {\n return combineCodec(getClaimMapClosedEncoder(), getClaimMapClosedDecoder());\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 getI64Decoder,\n getI64Encoder,\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 ClaimMapInitialized = {\n airdrop: Address;\n bitmap: Address;\n bitmapId: number;\n timestamp: bigint;\n};\n\nexport type ClaimMapInitializedArgs = {\n airdrop: Address;\n bitmap: Address;\n bitmapId: number;\n timestamp: number | bigint;\n};\n\nexport function getClaimMapInitializedEncoder(): FixedSizeEncoder<ClaimMapInitializedArgs> {\n return getStructEncoder([\n [\"airdrop\", getAddressEncoder()],\n [\"bitmap\", getAddressEncoder()],\n [\"bitmapId\", getU16Encoder()],\n [\"timestamp\", getI64Encoder()],\n ]);\n}\n\nexport function getClaimMapInitializedDecoder(): FixedSizeDecoder<ClaimMapInitialized> {\n return getStructDecoder([\n [\"airdrop\", getAddressDecoder()],\n [\"bitmap\", getAddressDecoder()],\n [\"bitmapId\", getU16Decoder()],\n [\"timestamp\", getI64Decoder()],\n ]);\n}\n\nexport function getClaimMapInitializedCodec(): FixedSizeCodec<\n ClaimMapInitializedArgs,\n ClaimMapInitialized\n> {\n return combineCodec(\n getClaimMapInitializedEncoder(),\n getClaimMapInitializedDecoder(),\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 getOptionDecoder,\n getOptionEncoder,\n getStructDecoder,\n getStructEncoder,\n getU64Decoder,\n getU64Encoder,\n type Codec,\n type Decoder,\n type Encoder,\n type Option,\n type OptionOrNullable,\n type ReadonlyUint8Array,\n} from \"@solana/kit\";\nimport {\n getBaseDurationConfigDecoder,\n getBaseDurationConfigEncoder,\n getBaseFeatureFeeConfigDecoder,\n getBaseFeatureFeeConfigEncoder,\n type BaseDurationConfig,\n type BaseDurationConfigArgs,\n type BaseFeatureFeeConfig,\n type BaseFeatureFeeConfigArgs,\n} from \".\";\n\nexport type InitAirdropConfigArgs = {\n merkleRoot: Option<ReadonlyUint8Array>;\n durationConfig: BaseDurationConfig;\n masterConfig: BaseFeatureFeeConfig;\n bitmapActionFee: bigint;\n perBoostAmount: bigint;\n};\n\nexport type InitAirdropConfigArgsArgs = {\n merkleRoot: OptionOrNullable<ReadonlyUint8Array>;\n durationConfig: BaseDurationConfigArgs;\n masterConfig: BaseFeatureFeeConfigArgs;\n bitmapActionFee: number | bigint;\n perBoostAmount: number | bigint;\n};\n\nexport function getInitAirdropConfigArgsEncoder(): Encoder<InitAirdropConfigArgsArgs> {\n return getStructEncoder([\n [\"merkleRoot\", getOptionEncoder(fixEncoderSize(getBytesEncoder(), 32))],\n [\"durationConfig\", getBaseDurationConfigEncoder()],\n [\"masterConfig\", getBaseFeatureFeeConfigEncoder()],\n [\"bitmapActionFee\", getU64Encoder()],\n [\"perBoostAmount\", getU64Encoder()],\n ]);\n}\n\nexport function getInitAirdropConfigArgsDecoder(): Decoder<InitAirdropConfigArgs> {\n return getStructDecoder([\n [\"merkleRoot\", getOptionDecoder(fixDecoderSize(getBytesDecoder(), 32))],\n [\"durationConfig\", getBaseDurationConfigDecoder()],\n [\"masterConfig\", getBaseFeatureFeeConfigDecoder()],\n [\"bitmapActionFee\", getU64Decoder()],\n [\"perBoostAmount\", getU64Decoder()],\n ]);\n}\n\nexport function getInitAirdropConfigArgsCodec(): Codec<\n InitAirdropConfigArgsArgs,\n InitAirdropConfigArgs\n> {\n return combineCodec(\n getInitAirdropConfigArgsEncoder(),\n getInitAirdropConfigArgsDecoder(),\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 getI64Decoder,\n getI64Encoder,\n getStructDecoder,\n getStructEncoder,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from \"@solana/kit\";\n\nexport type MasterInitialized = {\n address: Address;\n authority: Address;\n treasury: Address;\n timestamp: bigint;\n};\n\nexport type MasterInitializedArgs = {\n address: Address;\n authority: Address;\n treasury: Address;\n timestamp: number | bigint;\n};\n\nexport function getMasterInitializedEncoder(): FixedSizeEncoder<MasterInitializedArgs> {\n return getStructEncoder([\n [\"address\", getAddressEncoder()],\n [\"authority\", getAddressEncoder()],\n [\"treasury\", getAddressEncoder()],\n [\"timestamp\", getI64Encoder()],\n ]);\n}\n\nexport function getMasterInitializedDecoder(): FixedSizeDecoder<MasterInitialized> {\n return getStructDecoder([\n [\"address\", getAddressDecoder()],\n [\"authority\", getAddressDecoder()],\n [\"treasury\", getAddressDecoder()],\n [\"timestamp\", getI64Decoder()],\n ]);\n}\n\nexport function getMasterInitializedCodec(): FixedSizeCodec<\n MasterInitializedArgs,\n MasterInitialized\n> {\n return combineCodec(\n getMasterInitializedEncoder(),\n getMasterInitializedDecoder(),\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 getI64Decoder,\n getI64Encoder,\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 TokensDeposited = {\n airdrop: Address;\n amount: bigint;\n newSupply: bigint;\n depositor: Address;\n timestamp: bigint;\n};\n\nexport type TokensDepositedArgs = {\n airdrop: Address;\n amount: number | bigint;\n newSupply: number | bigint;\n depositor: Address;\n timestamp: number | bigint;\n};\n\nexport function getTokensDepositedEncoder(): FixedSizeEncoder<TokensDepositedArgs> {\n return getStructEncoder([\n [\"airdrop\", getAddressEncoder()],\n [\"amount\", getU64Encoder()],\n [\"newSupply\", getU64Encoder()],\n [\"depositor\", getAddressEncoder()],\n [\"timestamp\", getI64Encoder()],\n ]);\n}\n\nexport function getTokensDepositedDecoder(): FixedSizeDecoder<TokensDeposited> {\n return getStructDecoder([\n [\"airdrop\", getAddressDecoder()],\n [\"amount\", getU64Decoder()],\n [\"newSupply\", getU64Decoder()],\n [\"depositor\", getAddressDecoder()],\n [\"timestamp\", getI64Decoder()],\n ]);\n}\n\nexport function getTokensDepositedCodec(): FixedSizeCodec<\n TokensDepositedArgs,\n TokensDeposited\n> {\n return combineCodec(getTokensDepositedEncoder(), getTokensDepositedDecoder());\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 getI64Decoder,\n getI64Encoder,\n getStructDecoder,\n getStructEncoder,\n type Address,\n type FixedSizeCodec,\n type FixedSizeDecoder,\n type FixedSizeEncoder,\n} from \"@solana/kit\";\n\nexport type TokensRedeemed = {\n airdrop: Address;\n authority: Address;\n timestamp: bigint;\n};\n\nexport type TokensRedeemedArgs = {\n airdrop: Address;\n authority: Address;\n timestamp: number | bigint;\n};\n\nexport function getTokensRedeemedEncoder(): FixedSizeEncoder<TokensRedeemedArgs> {\n return getStructEncoder([\n [\"airdrop\", getAddressEncoder()],\n [\"authority\", getAddressEncoder()],\n [\"timestamp\", getI64Encoder()],\n ]);\n}\n\nexport function getTokensRedeemedDecoder(): FixedSizeDecoder<TokensRedeemed> {\n return getStructDecoder([\n [\"airdrop\", getAddressDecoder()],\n [\"authority\", getAddressDecoder()],\n [\"timestamp\", getI64Decoder()],\n ]);\n}\n\nexport function getTokensRedeemedCodec(): FixedSizeCodec<\n TokensRedeemedArgs,\n TokensRedeemed\n> {\n return combineCodec(getTokensRedeemedEncoder(), getTokensRedeemedDecoder());\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 getU64Decoder,\n getU64Encoder,\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 { DROPSY_PROGRAM_ADDRESS } from \"../programs\";\nimport { getAccountMetaFactory, type ResolvedAccount } from \"../shared\";\nimport {\n getInitAirdropConfigArgsDecoder,\n getInitAirdropConfigArgsEncoder,\n type InitAirdropConfigArgs,\n type InitAirdropConfigArgsArgs,\n} from \"../types\";\n\nexport const INITIALIZE_MASTER_DISCRIMINATOR = new Uint8Array([\n 206, 91, 246, 30, 216, 101, 134, 166,\n]);\n\nexport function getInitializeMasterDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n INITIALIZE_MASTER_DISCRIMINATOR,\n );\n}\n\nexport type InitializeMasterInstruction<\n TProgram extends string = typeof DROPSY_PROGRAM_ADDRESS,\n TAccountMaster extends string | AccountMeta<string> = string,\n TAccountConfig extends string | AccountMeta<string> = string,\n TAccountTreasury extends string | AccountMeta<string> = string,\n TAccountTokenMint extends string | AccountMeta<string> = string,\n TAccountAuthority extends string | AccountMeta<string> =\n \"8mtUD2XrkNnTxnjCehZ4DEtTXeGR1yrepSEGhCaSj2kT\",\n TAccountSystemProgram extends string | AccountMeta<string> =\n \"11111111111111111111111111111111\",\n TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n InstructionWithData<ReadonlyUint8Array> &\n InstructionWithAccounts<\n [\n TAccountMaster extends string\n ? WritableAccount<TAccountMaster>\n : TAccountMaster,\n TAccountConfig extends string\n ? WritableAccount<TAccountConfig>\n : TAccountConfig,\n TAccountTreasury extends string\n ? ReadonlyAccount<TAccountTreasury>\n : TAccountTreasury,\n TAccountTokenMint extends string\n ? ReadonlyAccount<TAccountTokenMint>\n : TAccountTokenMint,\n TAccountAuthority extends string\n ? WritableSignerAccount<TAccountAuthority> &\n AccountSignerMeta<TAccountAuthority>\n : TAccountAuthority,\n TAccountSystemProgram extends string\n ? ReadonlyAccount<TAccountSystemProgram>\n : TAccountSystemProgram,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type InitializeMasterInstructionData = {\n discriminator: ReadonlyUint8Array;\n airdropConfig: InitAirdropConfigArgs;\n protocolFee: bigint;\n};\n\nexport type InitializeMasterInstructionDataArgs = {\n airdropConfig: InitAirdropConfigArgsArgs;\n protocolFee: number | bigint;\n};\n\nexport function getInitializeMasterInstructionDataEncoder(): Encoder<InitializeMasterInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([\n [\"discriminator\", fixEncoderSize(getBytesEncoder(), 8)],\n [\"airdropConfig\", getInitAirdropConfigArgsEncoder()],\n [\"protocolFee\", getU64Encoder()],\n ]),\n (value) => ({ ...value, discriminator: INITIALIZE_MASTER_DISCRIMINATOR }),\n );\n}\n\nexport function getInitializeMasterInstructionDataDecoder(): Decoder<InitializeMasterInstructionData> {\n return getStructDecoder([\n [\"discriminator\", fixDecoderSize(getBytesDecoder(), 8)],\n [\"airdropConfig\", getInitAirdropConfigArgsDecoder()],\n [\"protocolFee\", getU64Decoder()],\n ]);\n}\n\nexport function getInitializeMasterInstructionDataCodec(): Codec<\n InitializeMasterInstructionDataArgs,\n InitializeMasterInstructionData\n> {\n return combineCodec(\n getInitializeMasterInstructionDataEncoder(),\n getInitializeMasterInstructionDataDecoder(),\n );\n}\n\nexport type InitializeMasterAsyncInput<\n TAccountMaster extends string = string,\n TAccountConfig extends string = string,\n TAccountTreasury extends string = string,\n TAccountTokenMint extends string = string,\n TAccountAuthority extends string = string,\n TAccountSystemProgram extends string = string,\n> = {\n master?: Address<TAccountMaster>;\n config?: Address<TAccountConfig>;\n treasury: Address<TAccountTreasury>;\n tokenMint?: Address<TAccountTokenMint>;\n authority?: TransactionSigner<TAccountAuthority>;\n systemProgram?: Address<TAccountSystemProgram>;\n airdropConfig: InitializeMasterInstructionDataArgs[\"airdropConfig\"];\n protocolFee: InitializeMasterInstructionDataArgs[\"protocolFee\"];\n};\n\nexport async function getInitializeMasterInstructionAsync<\n TAccountMaster extends string,\n TAccountConfig extends string,\n TAccountTreasury extends string,\n TAccountTokenMint extends string,\n TAccountAuthority extends string,\n TAccountSystemProgram extends string,\n TProgramAddress extends Address = typeof DROPSY_PROGRAM_ADDRESS,\n>(\n input: InitializeMasterAsyncInput<\n TAccountMaster,\n TAccountConfig,\n TAccountTreasury,\n TAccountTokenMint,\n TAccountAuthority,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress },\n): Promise<\n InitializeMasterInstruction<\n TProgramAddress,\n TAccountMaster,\n TAccountConfig,\n TAccountTreasury,\n TAccountTokenMint,\n TAccountAuthority,\n TAccountSystemProgram\n >\n> {\n // Program address.\n const programAddress = config?.programAddress ?? DROPSY_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n master: { value: input.master ?? null, isWritable: true },\n config: { value: input.config ?? null, isWritable: true },\n treasury: { value: input.treasury ?? null, isWritable: false },\n tokenMint: { value: input.tokenMint ?? null, isWritable: false },\n authority: { value: input.authority ?? null, isWritable: true },\n systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Resolve default values.\n if (!accounts.master.value) {\n accounts.master.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(new Uint8Array([109, 97, 115, 116, 101, 114])),\n ],\n });\n }\n if (!accounts.config.value) {\n accounts.config.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(\n new Uint8Array([\n 97, 105, 114, 100, 114, 111, 112, 95, 99, 111, 110, 102, 105, 103,\n ]),\n ),\n ],\n });\n }\n if (!accounts.authority.value) {\n accounts.authority.value =\n \"8mtUD2XrkNnTxnjCehZ4DEtTXeGR1yrepSEGhCaSj2kT\" as Address<\"8mtUD2XrkNnTxnjCehZ4DEtTXeGR1yrepSEGhCaSj2kT\">;\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(accounts.master),\n getAccountMeta(accounts.config),\n getAccountMeta(accounts.treasury),\n getAccountMeta(accounts.tokenMint),\n getAccountMeta(accounts.authority),\n getAccountMeta(accounts.systemProgram),\n ],\n data: getInitializeMasterInstructionDataEncoder().encode(\n args as InitializeMasterInstructionDataArgs,\n ),\n programAddress,\n } as InitializeMasterInstruction<\n TProgramAddress,\n TAccountMaster,\n TAccountConfig,\n TAccountTreasury,\n TAccountTokenMint,\n TAccountAuthority,\n TAccountSystemProgram\n >);\n}\n\nexport type InitializeMasterInput<\n TAccountMaster extends string = string,\n TAccountConfig extends string = string,\n TAccountTreasury extends string = string,\n TAccountTokenMint extends string = string,\n TAccountAuthority extends string = string,\n TAccountSystemProgram extends string = string,\n> = {\n master: Address<TAccountMaster>;\n config: Address<TAccountConfig>;\n treasury: Address<TAccountTreasury>;\n tokenMint?: Address<TAccountTokenMint>;\n authority?: TransactionSigner<TAccountAuthority>;\n systemProgram?: Address<TAccountSystemProgram>;\n airdropConfig: InitializeMasterInstructionDataArgs[\"airdropConfig\"];\n protocolFee: InitializeMasterInstructionDataArgs[\"protocolFee\"];\n};\n\nexport function getInitializeMasterInstruction<\n TAccountMaster extends string,\n TAccountConfig extends string,\n TAccountTreasury extends string,\n TAccountTokenMint extends string,\n TAccountAuthority extends string,\n TAccountSystemProgram extends string,\n TProgramAddress extends Address = typeof DROPSY_PROGRAM_ADDRESS,\n>(\n input: InitializeMasterInput<\n TAccountMaster,\n TAccountConfig,\n TAccountTreasury,\n TAccountTokenMint,\n TAccountAuthority,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress },\n): InitializeMasterInstruction<\n TProgramAddress,\n TAccountMaster,\n TAccountConfig,\n TAccountTreasury,\n TAccountTokenMint,\n TAccountAuthority,\n TAccountSystemProgram\n> {\n // Program address.\n const programAddress = config?.programAddress ?? DROPSY_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n master: { value: input.master ?? null, isWritable: true },\n config: { value: input.config ?? null, isWritable: true },\n treasury: { value: input.treasury ?? null, isWritable: false },\n tokenMint: { value: input.tokenMint ?? null, isWritable: false },\n authority: { value: input.authority ?? null, isWritable: true },\n systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n };\n const accounts = originalAccounts as Record<\n keyof typeof originalAccounts,\n ResolvedAccount\n >;\n\n // Original args.\n const args = { ...input };\n\n // Resolve default values.\n if (!accounts.authority.value) {\n accounts.authority.value =\n \"8mtUD2XrkNnTxnjCehZ4DEtTXeGR1yrepSEGhCaSj2kT\" as Address<\"8mtUD2XrkNnTxnjCehZ4DEtTXeGR1yrepSEGhCaSj2kT\">;\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(accounts.master),\n getAccountMeta(accounts.config),\n getAccountMeta(accounts.treasury),\n getAccountMeta(accounts.tokenMint),\n getAccountMeta(accounts.authority),\n getAccountMeta(accounts.systemProgram),\n ],\n data: getInitializeMasterInstructionDataEncoder().encode(\n args as InitializeMasterInstructionDataArgs,\n ),\n programAddress,\n } as InitializeMasterInstruction<\n TProgramAddress,\n TAccountMaster,\n TAccountConfig,\n TAccountTreasury,\n TAccountTokenMint,\n TAccountAuthority,\n TAccountSystemProgram\n >);\n}\n\nexport type ParsedInitializeMasterInstruction<\n TProgram extends string = typeof DROPSY_PROGRAM_ADDRESS,\n TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n programAddress: Address<TProgram>;\n accounts: {\n master: TAccountMetas[0];\n config: TAccountMetas[1];\n treasury: TAccountMetas[2];\n tokenMint?: TAccountMetas[3] | undefined;\n authority: TAccountMetas[4];\n systemProgram: TAccountMetas[5];\n };\n data: InitializeMasterInstructionData;\n};\n\nexport function parseInitializeMasterInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>,\n): ParsedInitializeMasterInstruction<TProgram, TAccountMetas> {\n if (instruction.accounts.length < 6) {\n // TODO: Coded error.\n throw new Error(\"Not enough accounts\");\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 === DROPSY_PROGRAM_ADDRESS\n ? undefined\n : accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n master: getNextAccount(),\n config: getNextAccount(),\n treasury: getNextAccount(),\n tokenMint: getNextOptionalAccount(),\n authority: getNextAccount(),\n systemProgram: getNextAccount(),\n },\n data: getInitializeMasterInstructionDataDecoder().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 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 { DROPSY_PROGRAM_ADDRESS } from \"../programs\";\nimport {\n expectAddress,\n getAccountMetaFactory,\n type ResolvedAccount,\n} from \"../shared\";\n\nexport const REDEEM_AIRDROP_TOKENS_DISCRIMINATOR = new Uint8Array([\n 102, 70, 115, 13, 97, 198, 59, 103,\n]);\n\nexport function getRedeemAirdropTokensDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n REDEEM_AIRDROP_TOKENS_DISCRIMINATOR,\n );\n}\n\nexport type RedeemAirdropTokensInstruction<\n TProgram extends string = typeof DROPSY_PROGRAM_ADDRESS,\n TAccountMaster extends string | AccountMeta<string> = string,\n TAccountConfig extends string | AccountMeta<string> = string,\n TAccountTreasury extends string | AccountMeta<string> = string,\n TAccountAirdropMaster extends string | AccountMeta<string> = string,\n TAccountAffiliate extends string | AccountMeta<string> = string,\n TAccountSourceTokenAccount extends string | AccountMeta<string> = string,\n TAccountDestinationTokenAccount extends string | AccountMeta<string> = string,\n TAccountAirdrop extends string | AccountMeta<string> = string,\n TAccountMint extends string | AccountMeta<string> = string,\n TAccountAuthority extends string | AccountMeta<string> = string,\n TAccountTokenProgram extends string | AccountMeta<string> =\n \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\",\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 TAccountMaster extends string\n ? ReadonlyAccount<TAccountMaster>\n : TAccountMaster,\n TAccountConfig extends string\n ? ReadonlyAccount<TAccountConfig>\n : TAccountConfig,\n TAccountTreasury extends string\n ? WritableAccount<TAccountTreasury>\n : TAccountTreasury,\n TAccountAirdropMaster extends string\n ? WritableAccount<TAccountAirdropMaster>\n : TAccountAirdropMaster,\n TAccountAffiliate extends string\n ? WritableAccount<TAccountAffiliate>\n : TAccountAffiliate,\n TAccountSourceTokenAccount extends string\n ? WritableAccount<TAccountSourceTokenAccount>\n : TAccountSourceTokenAccount,\n TAccountDestinationTokenAccount extends string\n ? WritableAccount<TAccountDestinationTokenAccount>\n : TAccountDestinationTokenAccount,\n TAccountAirdrop extends string\n ? WritableAccount<TAccountAirdrop>\n : TAccountAirdrop,\n TAccountMint extends string\n ? ReadonlyAccount<TAccountMint>\n : TAccountMint,\n TAccountAuthority extends string\n ? WritableSignerAccount<TAccountAuthority> &\n AccountSignerMeta<TAccountAuthority>\n : TAccountAuthority,\n TAccountTokenProgram extends string\n ? ReadonlyAccount<TAccountTokenProgram>\n : TAccountTokenProgram,\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 RedeemAirdropTokensInstructionData = {\n discriminator: ReadonlyUint8Array;\n};\n\nexport type RedeemAirdropTokensInstructionDataArgs = {};\n\nexport function getRedeemAirdropTokensInstructionDataEncoder(): FixedSizeEncoder<RedeemAirdropTokensInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([[\"discriminator\", fixEncoderSize(getBytesEncoder(), 8)]]),\n (value) => ({\n ...value,\n discriminator: REDEEM_AIRDROP_TOKENS_DISCRIMINATOR,\n }),\n );\n}\n\nexport function getRedeemAirdropTokensInstructionDataDecoder(): FixedSizeDecoder<RedeemAirdropTokensInstructionData> {\n return getStructDecoder([\n [\"discriminator\", fixDecoderSize(getBytesDecoder(), 8)],\n ]);\n}\n\nexport function getRedeemAirdropTokensInstructionDataCodec(): FixedSizeCodec<\n RedeemAirdropTokensInstructionDataArgs,\n RedeemAirdropTokensInstructionData\n> {\n return combineCodec(\n getRedeemAirdropTokensInstructionDataEncoder(),\n getRedeemAirdropTokensInstructionDataDecoder(),\n );\n}\n\nexport type RedeemAirdropTokensAsyncInput<\n TAccountMaster extends string = string,\n TAccountConfig extends string = string,\n TAccountTreasury extends string = string,\n TAccountAirdropMaster extends string = string,\n TAccountAffiliate extends string = string,\n TAccountSourceTokenAccount extends string = string,\n TAccountDestinationTokenAccount extends string = string,\n TAccountAirdrop extends string = string,\n TAccountMint extends string = string,\n TAccountAuthority extends string = string,\n TAccountTokenProgram extends string = string,\n TAccountAssociatedTokenProgram extends string = string,\n TAccountSystemProgram extends string = string,\n> = {\n master?: Address<TAccountMaster>;\n config?: Address<TAccountConfig>;\n treasury: Address<TAccountTreasury>;\n airdropMaster: Address<TAccountAirdropMaster>;\n affiliate?: Address<TAccountAffiliate>;\n sourceTokenAccount: Address<TAccountSourceTokenAccount>;\n destinationTokenAccount?: Address<TAccountDestinationTokenAccount>;\n airdrop?: Address<TAccountAirdrop>;\n mint: Address<TAccountMint>;\n authority: TransactionSigner<TAccountAuthority>;\n tokenProgram?: Address<TAccountTokenProgram>;\n associatedTokenProgram?: Address<TAccountAssociatedTokenProgram>;\n systemProgram?: Address<TAccountSystemProgram>;\n};\n\nexport async function getRedeemAirdropTokensInstructionAsync<\n TAccountMaster extends string,\n TAccountConfig extends string,\n TAccountTreasury extends string,\n TAccountAirdropMaster extends string,\n TAccountAffiliate extends string,\n TAccountSourceTokenAccount extends string,\n TAccountDestinationTokenAccount extends string,\n TAccountAirdrop extends string,\n TAccountMint extends string,\n TAccountAuthority extends string,\n TAccountTokenProgram extends string,\n TAccountAssociatedTokenProgram extends string,\n TAccountSystemProgram extends string,\n TProgramAddress extends Address = typeof DROPSY_PROGRAM_ADDRESS,\n>(\n input: RedeemAirdropTokensAsyncInput<\n TAccountMaster,\n TAccountConfig,\n TAccountTreasury,\n TAccountAirdropMaster,\n TAccountAffiliate,\n TAccountSourceTokenAccount,\n TAccountDestinationTokenAccount,\n TAccountAirdrop,\n TAccountMint,\n TAccountAuthority,\n TAccountTokenProgram,\n TAccountAssociatedTokenProgram,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress },\n): Promise<\n RedeemAirdropTokensInstruction<\n TProgramAddress,\n TAccountMaster,\n TAccountConfig,\n TAccountTreasury,\n TAccountAirdropMaster,\n TAccountAffiliate,\n TAccountSourceTokenAccount,\n TAccountDestinationTokenAccount,\n TAccountAirdrop,\n TAccountMint,\n TAccountAuthority,\n TAccountTokenProgram,\n TAccountAssociatedTokenProgram,\n TAccountSystemProgram\n >\n> {\n // Program address.\n const programAddress = config?.programAddress ?? DROPSY_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n master: { value: input.master ?? null, isWritable: false },\n config: { value: input.config ?? null, isWritable: false },\n treasury: { value: input.treasury ?? null, isWritable: true },\n airdropMaster: { value: input.airdropMaster ?? null, isWritable: true },\n affiliate: { value: input.affiliate ?? null, isWritable: true },\n sourceTokenAccount: {\n value: input.sourceTokenAccount ?? null,\n isWritable: true,\n },\n destinationTokenAccount: {\n value: input.destinationTokenAccount ?? null,\n isWritable: true,\n },\n airdrop: { value: input.airdrop ?? null, isWritable: true },\n mint: { value: input.mint ?? null, isWritable: false },\n authority: { value: input.authority ?? null, isWritable: true },\n tokenProgram: { value: input.tokenProgram ?? null, isWritable: false },\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 ResolvedAccount\n >;\n\n // Resolve default values.\n if (!accounts.master.value) {\n accounts.master.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(new Uint8Array([109, 97, 115, 116, 101, 114])),\n ],\n });\n }\n if (!accounts.config.value) {\n accounts.config.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(\n new Uint8Array([\n 97, 105, 114, 100, 114, 111, 112, 95, 99, 111, 110, 102, 105, 103,\n ]),\n ),\n ],\n });\n }\n if (!accounts.airdrop.value) {\n accounts.airdrop.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(\n new Uint8Array([97, 105, 114, 100, 114, 111, 112]),\n ),\n getAddressEncoder().encode(expectAddress(accounts.mint.value)),\n getAddressEncoder().encode(expectAddress(accounts.authority.value)),\n ],\n });\n }\n if (!accounts.tokenProgram.value) {\n accounts.tokenProgram.value =\n \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\" as Address<\"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\">;\n }\n if (!accounts.destinationTokenAccount.value) {\n accounts.destinationTokenAccount.value = await getProgramDerivedAddress({\n programAddress:\n \"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\" as Address<\"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\">,\n seeds: [\n getAddressEncoder().encode(expectAddress(accounts.airdrop.value)),\n getAddressEncoder().encode(expectAddress(accounts.tokenProgram.value)),\n getAddressEncoder().encode(expectAddress(accounts.mint.value)),\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(accounts.master),\n getAccountMeta(accounts.config),\n getAccountMeta(accounts.treasury),\n getAccountMeta(accounts.airdropMaster),\n getAccountMeta(accounts.affiliate),\n getAccountMeta(accounts.sourceTokenAccount),\n getAccountMeta(accounts.destinationTokenAccount),\n getAccountMeta(accounts.airdrop),\n getAccountMeta(accounts.mint),\n getAccountMeta(accounts.authority),\n getAccountMeta(accounts.tokenProgram),\n getAccountMeta(accounts.associatedTokenProgram),\n getAccountMeta(accounts.systemProgram),\n ],\n data: getRedeemAirdropTokensInstructionDataEncoder().encode({}),\n programAddress,\n } as RedeemAirdropTokensInstruction<\n TProgramAddress,\n TAccountMaster,\n TAccountConfig,\n TAccountTreasury,\n TAccountAirdropMaster,\n TAccountAffiliate,\n TAccountSourceTokenAccount,\n TAccountDestinationTokenAccount,\n TAccountAirdrop,\n TAccountMint,\n TAccountAuthority,\n TAccountTokenProgram,\n TAccountAssociatedTokenProgram,\n TAccountSystemProgram\n >);\n}\n\nexport type RedeemAirdropTokensInput<\n TAccountMaster extends string = string,\n TAccountConfig extends string = string,\n TAccountTreasury extends string = string,\n TAccountAirdropMaster extends string = string,\n TAccountAffiliate extends string = string,\n TAccountSourceTokenAccount extends string = string,\n TAccountDestinationTokenAccount extends string = string,\n TAccountAirdrop extends string = string,\n TAccountMint extends string = string,\n TAccountAuthority extends string = string,\n TAccountTokenProgram extends string = string,\n TAccountAssociatedTokenProgram extends string = string,\n TAccountSystemProgram extends string = string,\n> = {\n master: Address<TAccountMaster>;\n config: Address<TAccountConfig>;\n treasury: Address<TAccountTreasury>;\n airdropMaster: Address<TAccountAirdropMaster>;\n affiliate?: Address<TAccountAffiliate>;\n sourceTokenAccount: Address<TAccountSourceTokenAccount>;\n destinationTokenAccount: Address<TAccountDestinationTokenAccount>;\n airdrop: Address<TAccountAirdrop>;\n mint: Address<TAccountMint>;\n authority: TransactionSigner<TAccountAuthority>;\n tokenProgram?: Address<TAccountTokenProgram>;\n associatedTokenProgram?: Address<TAccountAssociatedTokenProgram>;\n systemProgram?: Address<TAccountSystemProgram>;\n};\n\nexport function getRedeemAirdropTokensInstruction<\n TAccountMaster extends string,\n TAccountConfig extends string,\n TAccountTreasury extends string,\n TAccountAirdropMaster extends string,\n TAccountAffiliate extends string,\n TAccountSourceTokenAccount extends string,\n TAccountDestinationTokenAccount extends string,\n TAccountAirdrop extends string,\n TAccountMint extends string,\n TAccountAuthority extends string,\n TAccountTokenProgram extends string,\n TAccountAssociatedTokenProgram extends string,\n TAccountSystemProgram extends string,\n TProgramAddress extends Address = typeof DROPSY_PROGRAM_ADDRESS,\n>(\n input: RedeemAirdropTokensInput<\n TAccountMaster,\n TAccountConfig,\n TAccountTreasury,\n TAccountAirdropMaster,\n TAccountAffiliate,\n TAccountSourceTokenAccount,\n TAccountDestinationTokenAccount,\n TAccountAirdrop,\n TAccountMint,\n TAccountAuthority,\n TAccountTokenProgram,\n TAccountAssociatedTokenProgram,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress },\n): RedeemAirdropTokensInstruction<\n TProgramAddress,\n TAccountMaster,\n TAccountConfig,\n TAccountTreasury,\n TAccountAirdropMaster,\n TAccountAffiliate,\n TAccountSourceTokenAccount,\n TAccountDestinationTokenAccount,\n TAccountAirdrop,\n TAccountMint,\n TAccountAuthority,\n TAccountTokenProgram,\n TAccountAssociatedTokenProgram,\n TAccountSystemProgram\n> {\n // Program address.\n const programAddress = config?.programAddress ?? DROPSY_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n master: { value: input.master ?? null, isWritable: false },\n config: { value: input.config ?? null, isWritable: false },\n treasury: { value: input.treasury ?? null, isWritable: true },\n airdropMaster: { value: input.airdropMaster ?? null, isWritable: true },\n affiliate: { value: input.affiliate ?? null, isWritable: true },\n sourceTokenAccount: {\n value: input.sourceTokenAccount ?? null,\n isWritable: true,\n },\n destinationTokenAccount: {\n value: input.destinationTokenAccount ?? null,\n isWritable: true,\n },\n airdrop: { value: input.airdrop ?? null, isWritable: true },\n mint: { value: input.mint ?? null, isWritable: false },\n authority: { value: input.authority ?? null, isWritable: true },\n tokenProgram: { value: input.tokenProgram ?? null, isWritable: false },\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 ResolvedAccount\n >;\n\n // Resolve default values.\n if (!accounts.tokenProgram.value) {\n accounts.tokenProgram.value =\n \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\" as Address<\"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\">;\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(accounts.master),\n getAccountMeta(accounts.config),\n getAccountMeta(accounts.treasury),\n getAccountMeta(accounts.airdropMaster),\n getAccountMeta(accounts.affiliate),\n getAccountMeta(accounts.sourceTokenAccount),\n getAccountMeta(accounts.destinationTokenAccount),\n getAccountMeta(accounts.airdrop),\n getAccountMeta(accounts.mint),\n getAccountMeta(accounts.authority),\n getAccountMeta(accounts.tokenProgram),\n getAccountMeta(accounts.associatedTokenProgram),\n getAccountMeta(accounts.systemProgram),\n ],\n data: getRedeemAirdropTokensInstructionDataEncoder().encode({}),\n programAddress,\n } as RedeemAirdropTokensInstruction<\n TProgramAddress,\n TAccountMaster,\n TAccountConfig,\n TAccountTreasury,\n TAccountAirdropMaster,\n TAccountAffiliate,\n TAccountSourceTokenAccount,\n TAccountDestinationTokenAccount,\n TAccountAirdrop,\n TAccountMint,\n TAccountAuthority,\n TAccountTokenProgram,\n TAccountAssociatedTokenProgram,\n TAccountSystemProgram\n >);\n}\n\nexport type ParsedRedeemAirdropTokensInstruction<\n TProgram extends string = typeof DROPSY_PROGRAM_ADDRESS,\n TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n programAddress: Address<TProgram>;\n accounts: {\n master: TAccountMetas[0];\n config: TAccountMetas[1];\n treasury: TAccountMetas[2];\n airdropMaster: TAccountMetas[3];\n affiliate?: TAccountMetas[4] | undefined;\n sourceTokenAccount: TAccountMetas[5];\n destinationTokenAccount: TAccountMetas[6];\n airdrop: TAccountMetas[7];\n mint: TAccountMetas[8];\n authority: TAccountMetas[9];\n tokenProgram: TAccountMetas[10];\n associatedTokenProgram: TAccountMetas[11];\n systemProgram: TAccountMetas[12];\n };\n data: RedeemAirdropTokensInstructionData;\n};\n\nexport function parseRedeemAirdropTokensInstruction<\n TProgram extends string,\n TAccountMetas extends readonly AccountMeta[],\n>(\n instruction: Instruction<TProgram> &\n InstructionWithAccounts<TAccountMetas> &\n InstructionWithData<ReadonlyUint8Array>,\n): ParsedRedeemAirdropTokensInstruction<TProgram, TAccountMetas> {\n if (instruction.accounts.length < 13) {\n // TODO: Coded error.\n throw new Error(\"Not enough accounts\");\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 === DROPSY_PROGRAM_ADDRESS\n ? undefined\n : accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n master: getNextAccount(),\n config: getNextAccount(),\n treasury: getNextAccount(),\n airdropMaster: getNextAccount(),\n affiliate: getNextOptionalAccount(),\n sourceTokenAccount: getNextAccount(),\n destinationTokenAccount: getNextAccount(),\n airdrop: getNextAccount(),\n mint: getNextAccount(),\n authority: getNextAccount(),\n tokenProgram: getNextAccount(),\n associatedTokenProgram: getNextAccount(),\n systemProgram: getNextAccount(),\n },\n data: getRedeemAirdropTokensInstructionDataDecoder().decode(\n instruction.data,\n ),\n };\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACQA,iBAiCO;AAEA,IAAM,0BAA0B,IAAI,WAAW;AAAA,EACpD;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AACnC,CAAC;AAEM,SAAS,iCAAiC;AAC/C,aAAO,+BAAe,4BAAgB,GAAG,CAAC,EAAE,OAAO,uBAAuB;AAC5E;AAsBO,SAAS,sBAAuD;AACrE,aAAO;AAAA,QACL,6BAAiB;AAAA,MACf,CAAC,qBAAiB,+BAAe,4BAAgB,GAAG,CAAC,CAAC;AAAA,MACtD,CAAC,cAAU,8BAAkB,CAAC;AAAA,MAC9B,CAAC,iBAAa,8BAAkB,CAAC;AAAA,MACjC,CAAC,mBAAe,0BAAc,CAAC;AAAA,MAC/B,CAAC,iBAAa,0BAAc,CAAC;AAAA,MAC7B,CAAC,aAAS,yBAAa,CAAC;AAAA,MACxB,CAAC,YAAQ,yBAAa,CAAC;AAAA,IACzB,CAAC;AAAA,IACD,CAAC,WAAW,EAAE,GAAG,OAAO,eAAe,wBAAwB;AAAA,EACjE;AACF;AAGO,SAAS,sBAAmD;AACjE,aAAO,6BAAiB;AAAA,IACtB,CAAC,qBAAiB,+BAAe,4BAAgB,GAAG,CAAC,CAAC;AAAA,IACtD,CAAC,cAAU,8BAAkB,CAAC;AAAA,IAC9B,CAAC,iBAAa,8BAAkB,CAAC;AAAA,IACjC,CAAC,mBAAe,0BAAc,CAAC;AAAA,IAC/B,CAAC,iBAAa,0BAAc,CAAC;AAAA,IAC7B,CAAC,aAAS,yBAAa,CAAC;AAAA,IACxB,CAAC,YAAQ,yBAAa,CAAC;AAAA,EACzB,CAAC;AACH;AAGO,SAAS,oBAA8D;AAC5E,aAAO,yBAAa,oBAAoB,GAAG,oBAAoB,CAAC;AAClE;AAQO,SAAS,gBACd,gBACkE;AAClE,aAAO;AAAA,IACL;AAAA,IACA,oBAAoB;AAAA,EACtB;AACF;AAEA,eAAsB,eACpB,KACAA,UACA,QACuC;AACvC,QAAM,eAAe,MAAM,oBAAoB,KAAKA,UAAS,MAAM;AACnE,sCAAoB,YAAY;AAChC,SAAO;AACT;AAEA,eAAsB,oBACpB,KACAA,UACA,QAC4C;AAC5C,QAAM,eAAe,UAAM,gCAAoB,KAAKA,UAAS,MAAM;AACnE,SAAO,gBAAgB,YAAY;AACrC;AAEA,eAAsB,kBACpB,KACA,WACA,QAC+B;AAC/B,QAAM,gBAAgB,MAAM,uBAAuB,KAAK,WAAW,MAAM;AACzE,sCAAoB,aAAa;AACjC,SAAO;AACT;AAEA,eAAsB,uBACpB,KACA,WACA,QACoC;AACpC,QAAM,gBAAgB,UAAM,iCAAqB,KAAK,WAAW,MAAM;AACvE,SAAO,cAAc,IAAI,CAAC,iBAAiB,gBAAgB,YAAY,CAAC;AAC1E;AAEO,SAAS,mBAA2B;AACzC,SAAO;AACT;;;ACvJA,IAAAC,cAiCO;AAEA,IAAM,iCAAiC,IAAI,WAAW;AAAA,EAC3D;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AACjC,CAAC;AAEM,SAAS,uCAAuC;AACrD,aAAO,gCAAe,6BAAgB,GAAG,CAAC,EAAE;AAAA,IAC1C;AAAA,EACF;AACF;AAkCO,SAAS,4BAAmE;AACjF,aAAO;AAAA,QACL,8BAAiB;AAAA,MACf,CAAC,qBAAiB,gCAAe,6BAAgB,GAAG,CAAC,CAAC;AAAA,MACtD,CAAC,iBAAa,+BAAkB,CAAC;AAAA,MACjC,CAAC,iBAAa,+BAAkB,CAAC;AAAA,MACjC,CAAC,yBAAqB,2BAAc,CAAC;AAAA,MACrC,CAAC,4BAAwB,2BAAc,CAAC;AAAA,MACxC,CAAC,0BAAsB,2BAAc,CAAC;AAAA,MACtC,CAAC,4BAAwB,2BAAc,CAAC;AAAA,MACxC,CAAC,8BAA0B,2BAAc,CAAC;AAAA,MAC1C,CAAC,iCAA6B,2BAAc,CAAC;AAAA,MAC7C,CAAC,2BAAuB,2BAAc,CAAC;AAAA,MACvC,CAAC,+BAA2B,2BAAc,CAAC;AAAA,MAC3C,CAAC,oCAAgC,2BAAc,CAAC;AAAA,MAChD,CAAC,YAAQ,0BAAa,CAAC;AAAA,IACzB,CAAC;AAAA,IACD,CAAC,WAAW,EAAE,GAAG,OAAO,eAAe,+BAA+B;AAAA,EACxE;AACF;AAGO,SAAS,4BAA+D;AAC7E,aAAO,8BAAiB;AAAA,IACtB,CAAC,qBAAiB,gCAAe,6BAAgB,GAAG,CAAC,CAAC;AAAA,IACtD,CAAC,iBAAa,+BAAkB,CAAC;AAAA,IACjC,CAAC,iBAAa,+BAAkB,CAAC;AAAA,IACjC,CAAC,yBAAqB,2BAAc,CAAC;AAAA,IACrC,CAAC,4BAAwB,2BAAc,CAAC;AAAA,IACxC,CAAC,0BAAsB,2BAAc,CAAC;AAAA,IACtC,CAAC,4BAAwB,2BAAc,CAAC;AAAA,IACxC,CAAC,8BAA0B,2BAAc,CAAC;AAAA,IAC1C,CAAC,iCAA6B,2BAAc,CAAC;AAAA,IAC7C,CAAC,2BAAuB,2BAAc,CAAC;AAAA,IACvC,CAAC,+BAA2B,2BAAc,CAAC;AAAA,IAC3C,CAAC,oCAAgC,2BAAc,CAAC;AAAA,IAChD,CAAC,YAAQ,0BAAa,CAAC;AAAA,EACzB,CAAC;AACH;AAGO,SAAS,0BAGd;AACA,aAAO,0BAAa,0BAA0B,GAAG,0BAA0B,CAAC;AAC9E;AAQO,SAAS,sBACd,gBAG0C;AAC1C,aAAO;AAAA,IACL;AAAA,IACA,0BAA0B;AAAA,EAC5B;AACF;AAEA,eAAsB,qBACpB,KACAC,UACA,QAC6C;AAC7C,QAAM,eAAe,MAAM,0BAA0B,KAAKA,UAAS,MAAM;AACzE,uCAAoB,YAAY;AAChC,SAAO;AACT;AAEA,eAAsB,0BAGpB,KACAA,UACA,QACkD;AAClD,QAAM,eAAe,UAAM,iCAAoB,KAAKA,UAAS,MAAM;AACnE,SAAO,sBAAsB,YAAY;AAC3C;AAEA,eAAsB,wBACpB,KACA,WACA,QACqC;AACrC,QAAM,gBAAgB,MAAM;AAAA,IAC1B;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACA,uCAAoB,aAAa;AACjC,SAAO;AACT;AAEA,eAAsB,6BACpB,KACA,WACA,QAC0C;AAC1C,QAAM,gBAAgB,UAAM,kCAAqB,KAAK,WAAW,MAAM;AACvE,SAAO,cAAc;AAAA,IAAI,CAAC,iBACxB,sBAAsB,YAAY;AAAA,EACpC;AACF;AAEO,SAAS,yBAAiC;AAC/C,SAAO;AACT;;;AC9LA,IAAAC,cAmCO;AAEA,IAAM,wBAAwB,IAAI,WAAW;AAAA,EAClD;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAG;AAClC,CAAC;AAEM,SAAS,+BAA+B;AAC7C,aAAO,gCAAe,6BAAgB,GAAG,CAAC,EAAE,OAAO,qBAAqB;AAC1E;AA4CO,SAAS,oBAAmD;AACjE,aAAO;AAAA,QACL,8BAAiB;AAAA,MACf,CAAC,qBAAiB,gCAAe,6BAAgB,GAAG,CAAC,CAAC;AAAA,MACtD,CAAC,cAAU,+BAAkB,CAAC;AAAA,MAC9B,CAAC,iBAAa,+BAAkB,CAAC;AAAA,MACjC,CAAC,YAAQ,+BAAkB,CAAC;AAAA,MAC5B,CAAC,yBAAqB,+BAAkB,CAAC;AAAA,MACzC,CAAC,eAAW,+BAAkB,CAAC;AAAA,MAC/B,CAAC,kBAAc,gCAAe,6BAAgB,GAAG,EAAE,CAAC;AAAA,MACpD,CAAC,cAAU,2BAAc,CAAC;AAAA,MAC1B,CAAC,aAAS,2BAAc,CAAC;AAAA,MACzB,CAAC,gBAAY,2BAAc,CAAC;AAAA,MAC5B,CAAC,cAAU,2BAAc,CAAC;AAAA,MAC1B,CAAC,mBAAe,2BAAc,CAAC;AAAA,MAC/B,CAAC,2BAAuB,0BAAa,CAAC;AAAA,MACtC,CAAC,eAAW,0BAAa,CAAC;AAAA,MAC1B,CAAC,aAAS,0BAAa,CAAC;AAAA,MACxB,CAAC,eAAW,0BAAa,CAAC;AAAA,MAC1B,CAAC,YAAQ,0BAAa,CAAC;AAAA,MACvB,CAAC,eAAW,gCAAe,6BAAgB,GAAG,CAAC,CAAC;AAAA,IAClD,CAAC;AAAA,IACD,CAAC,WAAW,EAAE,GAAG,OAAO,eAAe,sBAAsB;AAAA,EAC/D;AACF;AAGO,SAAS,oBAA+C;AAC7D,aAAO,8BAAiB;AAAA,IACtB,CAAC,qBAAiB,gCAAe,6BAAgB,GAAG,CAAC,CAAC;AAAA,IACtD,CAAC,cAAU,+BAAkB,CAAC;AAAA,IAC9B,CAAC,iBAAa,+BAAkB,CAAC;AAAA,IACjC,CAAC,YAAQ,+BAAkB,CAAC;AAAA,IAC5B,CAAC,yBAAqB,+BAAkB,CAAC;AAAA,IACzC,CAAC,eAAW,+BAAkB,CAAC;AAAA,IAC/B,CAAC,kBAAc,gCAAe,6BAAgB,GAAG,EAAE,CAAC;AAAA,IACpD,CAAC,cAAU,2BAAc,CAAC;AAAA,IAC1B,CAAC,aAAS,2BAAc,CAAC;AAAA,IACzB,CAAC,gBAAY,2BAAc,CAAC;AAAA,IAC5B,CAAC,cAAU,2BAAc,CAAC;AAAA,IAC1B,CAAC,mBAAe,2BAAc,CAAC;AAAA,IAC/B,CAAC,2BAAuB,0BAAa,CAAC;AAAA,IACtC,CAAC,eAAW,0BAAa,CAAC;AAAA,IAC1B,CAAC,aAAS,0BAAa,CAAC;AAAA,IACxB,CAAC,eAAW,0BAAa,CAAC;AAAA,IAC1B,CAAC,YAAQ,0BAAa,CAAC;AAAA,IACvB,CAAC,eAAW,gCAAe,6BAAgB,GAAG,CAAC,CAAC;AAAA,EAClD,CAAC;AACH;AAGO,SAAS,kBAAwD;AACtE,aAAO,0BAAa,kBAAkB,GAAG,kBAAkB,CAAC;AAC9D;AAQO,SAAS,cACd,gBAC8D;AAC9D,aAAO;AAAA,IACL;AAAA,IACA,kBAAkB;AAAA,EACpB;AACF;AAEA,eAAsB,aACpB,KACAC,UACA,QACqC;AACrC,QAAM,eAAe,MAAM,kBAAkB,KAAKA,UAAS,MAAM;AACjE,uCAAoB,YAAY;AAChC,SAAO;AACT;AAEA,eAAsB,kBACpB,KACAA,UACA,QAC0C;AAC1C,QAAM,eAAe,UAAM,iCAAoB,KAAKA,UAAS,MAAM;AACnE,SAAO,cAAc,YAAY;AACnC;AAEA,eAAsB,gBACpB,KACA,WACA,QAC6B;AAC7B,QAAM,gBAAgB,MAAM,qBAAqB,KAAK,WAAW,MAAM;AACvE,uCAAoB,aAAa;AACjC,SAAO;AACT;AAEA,eAAsB,qBACpB,KACA,WACA,QACkC;AAClC,QAAM,gBAAgB,UAAM,kCAAqB,KAAK,WAAW,MAAM;AACvE,SAAO,cAAc,IAAI,CAAC,iBAAiB,cAAc,YAAY,CAAC;AACxE;AAEO,SAAS,iBAAyB;AACvC,SAAO;AACT;;;ACrMA,IAAAC,cA+BO;AAEA,IAAM,+BAA+B,IAAI,WAAW;AAAA,EACzD;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AACnC,CAAC;AAEM,SAAS,qCAAqC;AACnD,aAAO,gCAAe,6BAAgB,GAAG,CAAC,EAAE;AAAA,IAC1C;AAAA,EACF;AACF;AA4BO,SAAS,0BAA+D;AAC7E,aAAO;AAAA,QACL,8BAAiB;AAAA,MACf,CAAC,qBAAiB,gCAAe,6BAAgB,GAAG,CAAC,CAAC;AAAA,MACtD,CAAC,kBAAc,gCAAe,6BAAgB,GAAG,EAAE,CAAC;AAAA,MACpD,CAAC,0BAAsB,2BAAc,CAAC;AAAA,MACtC,CAAC,0BAAsB,2BAAc,CAAC;AAAA,MACtC,CAAC,yBAAqB,2BAAc,CAAC;AAAA,MACrC,CAAC,8BAA0B,2BAAc,CAAC;AAAA,MAC1C,CAAC,+BAA2B,2BAAc,CAAC;AAAA,MAC3C,CAAC,wBAAoB,2BAAc,CAAC;AAAA,MACpC,CAAC,sBAAkB,2BAAc,CAAC;AAAA,MAClC,CAAC,YAAQ,0BAAa,CAAC;AAAA,IACzB,CAAC;AAAA,IACD,CAAC,WAAW,EAAE,GAAG,OAAO,eAAe,6BAA6B;AAAA,EACtE;AACF;AAGO,SAAS,0BAA2D;AACzE,aAAO,8BAAiB;AAAA,IACtB,CAAC,qBAAiB,gCAAe,6BAAgB,GAAG,CAAC,CAAC;AAAA,IACtD,CAAC,kBAAc,gCAAe,6BAAgB,GAAG,EAAE,CAAC;AAAA,IACpD,CAAC,0BAAsB,2BAAc,CAAC;AAAA,IACtC,CAAC,0BAAsB,2BAAc,CAAC;AAAA,IACtC,CAAC,yBAAqB,2BAAc,CAAC;AAAA,IACrC,CAAC,8BAA0B,2BAAc,CAAC;AAAA,IAC1C,CAAC,+BAA2B,2BAAc,CAAC;AAAA,IAC3C,CAAC,wBAAoB,2BAAc,CAAC;AAAA,IACpC,CAAC,sBAAkB,2BAAc,CAAC;AAAA,IAClC,CAAC,YAAQ,0BAAa,CAAC;AAAA,EACzB,CAAC;AACH;AAGO,SAAS,wBAGd;AACA,aAAO,0BAAa,wBAAwB,GAAG,wBAAwB,CAAC;AAC1E;AAQO,SAAS,oBACd,gBAC0E;AAC1E,aAAO;AAAA,IACL;AAAA,IACA,wBAAwB;AAAA,EAC1B;AACF;AAEA,eAAsB,mBACpB,KACAC,UACA,QAC2C;AAC3C,QAAM,eAAe,MAAM,wBAAwB,KAAKA,UAAS,MAAM;AACvE,uCAAoB,YAAY;AAChC,SAAO;AACT;AAEA,eAAsB,wBACpB,KACAA,UACA,QACgD;AAChD,QAAM,eAAe,UAAM,iCAAoB,KAAKA,UAAS,MAAM;AACnE,SAAO,oBAAoB,YAAY;AACzC;AAEA,eAAsB,sBACpB,KACA,WACA,QACmC;AACnC,QAAM,gBAAgB,MAAM;AAAA,IAC1B;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACA,uCAAoB,aAAa;AACjC,SAAO;AACT;AAEA,eAAsB,2BACpB,KACA,WACA,QACwC;AACxC,QAAM,gBAAgB,UAAM,kCAAqB,KAAK,WAAW,MAAM;AACvE,SAAO,cAAc,IAAI,CAAC,iBAAiB,oBAAoB,YAAY,CAAC;AAC9E;AAEO,SAAS,uBAA+B;AAC7C,SAAO;AACT;;;AC1KA,IAAAC,cA+BO;AAEA,IAAM,+BAA+B,IAAI,WAAW;AAAA,EACzD;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAG;AACjC,CAAC;AAEM,SAAS,qCAAqC;AACnD,aAAO,gCAAe,6BAAgB,GAAG,CAAC,EAAE;AAAA,IAC1C;AAAA,EACF;AACF;AAwCO,SAAS,0BAA+D;AAC7E,aAAO;AAAA,QACL,8BAAiB;AAAA,MACf,CAAC,qBAAiB,gCAAe,6BAAgB,GAAG,CAAC,CAAC;AAAA,MACtD,CAAC,uBAAmB,+BAAkB,CAAC;AAAA,MACvC,CAAC,iBAAa,+BAAkB,CAAC;AAAA,MACjC,CAAC,kBAAc,gCAAe,6BAAgB,GAAG,EAAE,CAAC;AAAA,MACpD,CAAC,uBAAmB,2BAAc,CAAC;AAAA,MACnC,CAAC,0BAAsB,2BAAc,CAAC;AAAA,MACtC,CAAC,qBAAiB,2BAAc,CAAC;AAAA,MACjC,CAAC,wBAAoB,2BAAc,CAAC;AAAA,MACpC,CAAC,0BAAsB,2BAAc,CAAC;AAAA,MACtC,CAAC,yBAAqB,2BAAc,CAAC;AAAA,MACrC,CAAC,wBAAoB,2BAAc,CAAC;AAAA,MACpC,CAAC,uBAAmB,2BAAc,CAAC;AAAA,MACnC,CAAC,0BAAsB,2BAAc,CAAC;AAAA,MACtC,CAAC,yBAAqB,2BAAc,CAAC;AAAA,MACrC,CAAC,YAAQ,0BAAa,CAAC;AAAA,MACvB,CAAC,eAAW,gCAAe,6BAAgB,GAAG,CAAC,CAAC;AAAA,IAClD,CAAC;AAAA,IACD,CAAC,WAAW,EAAE,GAAG,OAAO,eAAe,6BAA6B;AAAA,EACtE;AACF;AAGO,SAAS,0BAA2D;AACzE,aAAO,8BAAiB;AAAA,IACtB,CAAC,qBAAiB,gCAAe,6BAAgB,GAAG,CAAC,CAAC;AAAA,IACtD,CAAC,uBAAmB,+BAAkB,CAAC;AAAA,IACvC,CAAC,iBAAa,+BAAkB,CAAC;AAAA,IACjC,CAAC,kBAAc,gCAAe,6BAAgB,GAAG,EAAE,CAAC;AAAA,IACpD,CAAC,uBAAmB,2BAAc,CAAC;AAAA,IACnC,CAAC,0BAAsB,2BAAc,CAAC;AAAA,IACtC,CAAC,qBAAiB,2BAAc,CAAC;AAAA,IACjC,CAAC,wBAAoB,2BAAc,CAAC;AAAA,IACpC,CAAC,0BAAsB,2BAAc,CAAC;AAAA,IACtC,CAAC,yBAAqB,2BAAc,CAAC;AAAA,IACrC,CAAC,wBAAoB,2BAAc,CAAC;AAAA,IACpC,CAAC,uBAAmB,2BAAc,CAAC;AAAA,IACnC,CAAC,0BAAsB,2BAAc,CAAC;AAAA,IACtC,CAAC,yBAAqB,2BAAc,CAAC;AAAA,IACrC,CAAC,YAAQ,0BAAa,CAAC;AAAA,IACvB,CAAC,eAAW,gCAAe,6BAAgB,GAAG,CAAC,CAAC;AAAA,EAClD,CAAC;AACH;AAGO,SAAS,wBAGd;AACA,aAAO,0BAAa,wBAAwB,GAAG,wBAAwB,CAAC;AAC1E;AAQO,SAAS,oBACd,gBAC0E;AAC1E,aAAO;AAAA,IACL;AAAA,IACA,wBAAwB;AAAA,EAC1B;AACF;AAEA,eAAsB,mBACpB,KACAC,UACA,QAC2C;AAC3C,QAAM,eAAe,MAAM,wBAAwB,KAAKA,UAAS,MAAM;AACvE,uCAAoB,YAAY;AAChC,SAAO;AACT;AAEA,eAAsB,wBACpB,KACAA,UACA,QACgD;AAChD,QAAM,eAAe,UAAM,iCAAoB,KAAKA,UAAS,MAAM;AACnE,SAAO,oBAAoB,YAAY;AACzC;AAEA,eAAsB,sBACpB,KACA,WACA,QACmC;AACnC,QAAM,gBAAgB,MAAM;AAAA,IAC1B;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACA,uCAAoB,aAAa;AACjC,SAAO;AACT;AAEA,eAAsB,2BACpB,KACA,WACA,QACwC;AACxC,QAAM,gBAAgB,UAAM,kCAAqB,KAAK,WAAW,MAAM;AACvE,SAAO,cAAc,IAAI,CAAC,iBAAiB,oBAAoB,YAAY,CAAC;AAC9E;AAEO,SAAS,uBAA+B;AAC7C,SAAO;AACT;;;AClMA,IAAAC,cAiCO;AAEA,IAAM,0BAA0B,IAAI,WAAW;AAAA,EACpD;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AACjC,CAAC;AAEM,SAAS,gCAAgC;AAC9C,aAAO,gCAAe,6BAAgB,GAAG,CAAC,EAAE,OAAO,uBAAuB;AAC5E;AAwBO,SAAS,qBAAqD;AACnE,aAAO;AAAA,QACL,8BAAiB;AAAA,MACf,CAAC,qBAAiB,gCAAe,6BAAgB,GAAG,CAAC,CAAC;AAAA,MACtD,CAAC,iBAAa,+BAAkB,CAAC;AAAA,MACjC,CAAC,eAAW,+BAAkB,CAAC;AAAA,MAC/B,CAAC,qBAAiB,gCAAe,6BAAgB,GAAG,GAAI,CAAC;AAAA,MACzD,CAAC,aAAS,2BAAc,CAAC;AAAA,MACzB,CAAC,UAAM,2BAAc,CAAC;AAAA,MACtB,CAAC,eAAW,0BAAa,CAAC;AAAA,MAC1B,CAAC,YAAQ,0BAAa,CAAC;AAAA,IACzB,CAAC;AAAA,IACD,CAAC,WAAW,EAAE,GAAG,OAAO,eAAe,wBAAwB;AAAA,EACjE;AACF;AAGO,SAAS,qBAAiD;AAC/D,aAAO,8BAAiB;AAAA,IACtB,CAAC,qBAAiB,gCAAe,6BAAgB,GAAG,CAAC,CAAC;AAAA,IACtD,CAAC,iBAAa,+BAAkB,CAAC;AAAA,IACjC,CAAC,eAAW,+BAAkB,CAAC;AAAA,IAC/B,CAAC,qBAAiB,gCAAe,6BAAgB,GAAG,GAAI,CAAC;AAAA,IACzD,CAAC,aAAS,2BAAc,CAAC;AAAA,IACzB,CAAC,UAAM,2BAAc,CAAC;AAAA,IACtB,CAAC,eAAW,0BAAa,CAAC;AAAA,IAC1B,CAAC,YAAQ,0BAAa,CAAC;AAAA,EACzB,CAAC;AACH;AAGO,SAAS,mBAA2D;AACzE,aAAO,0BAAa,mBAAmB,GAAG,mBAAmB,CAAC;AAChE;AAQO,SAAS,eACd,gBACgE;AAChE,aAAO;AAAA,IACL;AAAA,IACA,mBAAmB;AAAA,EACrB;AACF;AAEA,eAAsB,cACpB,KACAC,UACA,QACsC;AACtC,QAAM,eAAe,MAAM,mBAAmB,KAAKA,UAAS,MAAM;AAClE,uCAAoB,YAAY;AAChC,SAAO;AACT;AAEA,eAAsB,mBACpB,KACAA,UACA,QAC2C;AAC3C,QAAM,eAAe,UAAM,iCAAoB,KAAKA,UAAS,MAAM;AACnE,SAAO,eAAe,YAAY;AACpC;AAEA,eAAsB,iBACpB,KACA,WACA,QAC8B;AAC9B,QAAM,gBAAgB,MAAM,sBAAsB,KAAK,WAAW,MAAM;AACxE,uCAAoB,aAAa;AACjC,SAAO;AACT;AAEA,eAAsB,sBACpB,KACA,WACA,QACmC;AACnC,QAAM,gBAAgB,UAAM,kCAAqB,KAAK,WAAW,MAAM;AACvE,SAAO,cAAc,IAAI,CAAC,iBAAiB,eAAe,YAAY,CAAC;AACzE;AAEO,SAAS,kBAA0B;AACxC,SAAO;AACT;;;AC3JA,IAAAC,cA+BO;AAEA,IAAM,uBAAuB,IAAI,WAAW;AAAA,EACjD;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAClC,CAAC;AAEM,SAAS,8BAA8B;AAC5C,aAAO,gCAAe,6BAAgB,GAAG,CAAC,EAAE,OAAO,oBAAoB;AACzE;AAoBO,SAAS,mBAAiD;AAC/D,aAAO;AAAA,QACL,8BAAiB;AAAA,MACf,CAAC,qBAAiB,gCAAe,6BAAgB,GAAG,CAAC,CAAC;AAAA,MACtD,CAAC,iBAAa,+BAAkB,CAAC;AAAA,MACjC,CAAC,gBAAY,+BAAkB,CAAC;AAAA,MAChC,CAAC,iBAAa,+BAAkB,CAAC;AAAA,MACjC,CAAC,mBAAe,2BAAc,CAAC;AAAA,MAC/B,CAAC,YAAQ,0BAAa,CAAC;AAAA,IACzB,CAAC;AAAA,IACD,CAAC,WAAW,EAAE,GAAG,OAAO,eAAe,qBAAqB;AAAA,EAC9D;AACF;AAGO,SAAS,mBAA6C;AAC3D,aAAO,8BAAiB;AAAA,IACtB,CAAC,qBAAiB,gCAAe,6BAAgB,GAAG,CAAC,CAAC;AAAA,IACtD,CAAC,iBAAa,+BAAkB,CAAC;AAAA,IACjC,CAAC,gBAAY,+BAAkB,CAAC;AAAA,IAChC,CAAC,iBAAa,+BAAkB,CAAC;AAAA,IACjC,CAAC,mBAAe,2BAAc,CAAC;AAAA,IAC/B,CAAC,YAAQ,0BAAa,CAAC;AAAA,EACzB,CAAC;AACH;AAGO,SAAS,iBAAqD;AACnE,aAAO,0BAAa,iBAAiB,GAAG,iBAAiB,CAAC;AAC5D;AAQO,SAAS,aACd,gBAC4D;AAC5D,aAAO;AAAA,IACL;AAAA,IACA,iBAAiB;AAAA,EACnB;AACF;AAEA,eAAsB,YACpB,KACAC,UACA,QACoC;AACpC,QAAM,eAAe,MAAM,iBAAiB,KAAKA,UAAS,MAAM;AAChE,uCAAoB,YAAY;AAChC,SAAO;AACT;AAEA,eAAsB,iBACpB,KACAA,UACA,QACyC;AACzC,QAAM,eAAe,UAAM,iCAAoB,KAAKA,UAAS,MAAM;AACnE,SAAO,aAAa,YAAY;AAClC;AAEA,eAAsB,eACpB,KACA,WACA,QAC4B;AAC5B,QAAM,gBAAgB,MAAM,oBAAoB,KAAK,WAAW,MAAM;AACtE,uCAAoB,aAAa;AACjC,SAAO;AACT;AAEA,eAAsB,oBACpB,KACA,WACA,QACiC;AACjC,QAAM,gBAAgB,UAAM,kCAAqB,KAAK,WAAW,MAAM;AACvE,SAAO,cAAc,IAAI,CAAC,iBAAiB,aAAa,YAAY,CAAC;AACvE;AAEO,SAAS,gBAAwB;AACtC,SAAO;AACT;;;ACjJA,IAAAC,cAKO;;;ACLP,IAAAC,cAMO;AAWA,IAAM,yBACX;AAEK,IAAK,gBAAL,kBAAKC,mBAAL;AACL,EAAAA,8BAAA;AACA,EAAAA,8BAAA;AACA,EAAAA,8BAAA;AACA,EAAAA,8BAAA;AACA,EAAAA,8BAAA;AACA,EAAAA,8BAAA;AACA,EAAAA,8BAAA;AAPU,SAAAA;AAAA,GAAA;AAUL,SAAS,sBACd,SACe;AACf,QAAM,OAAO,UAAU,UAAU,QAAQ,OAAO;AAChD,UACE;AAAA,IACE;AAAA,QACA,gCAAe,6BAAgB,GAAG,CAAC,EAAE;AAAA,MACnC,IAAI,WAAW,CAAC,KAAK,IAAI,KAAK,KAAK,IAAI,KAAK,KAAK,EAAE,CAAC;AAAA,IACtD;AAAA,IACA;AAAA,EACF,GACA;AACA,WAAO;AAAA,EACT;AACA,UACE;AAAA,IACE;AAAA,QACA,gCAAe,6BAAgB,GAAG,CAAC,EAAE;AAAA,MACnC,IAAI,WAAW,CAAC,IAAI,IAAI,KAAK,IAAI,IAAI,KAAK,KAAK,GAAG,CAAC;AAAA,IACrD;AAAA,IACA;AAAA,EACF,GACA;AACA,WAAO;AAAA,EACT;AACA,UACE;AAAA,IACE;AAAA,QACA,gCAAe,6BAAgB,GAAG,CAAC,EAAE;AAAA,MACnC,IAAI,WAAW,CAAC,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,GAAG,CAAC;AAAA,IACtD;AAAA,IACA;AAAA,EACF,GACA;AACA,WAAO;AAAA,EACT;AACA,UACE;AAAA,IACE;AAAA,QACA,gCAAe,6BAAgB,GAAG,CAAC,EAAE;AAAA,MACnC,IAAI,WAAW,CAAC,KAAK,KAAK,KAAK,KAAK,IAAI,IAAI,KAAK,EAAE,CAAC;AAAA,IACtD;AAAA,IACA;AAAA,EACF,GACA;AACA,WAAO;AAAA,EACT;AACA,UACE;AAAA,IACE;AAAA,QACA,gCAAe,6BAAgB,GAAG,CAAC,EAAE;AAAA,MACnC,IAAI,WAAW,CAAC,IAAI,KAAK,KAAK,IAAI,KAAK,KAAK,GAAG,CAAC,CAAC;AAAA,IACnD;AAAA,IACA;AAAA,EACF,GACA;AACA,WAAO;AAAA,EACT;AACA,UACE;AAAA,IACE;AAAA,QACA,gCAAe,6BAAgB,GAAG,CAAC,EAAE;AAAA,MACnC,IAAI,WAAW,CAAC,KAAK,IAAI,IAAI,KAAK,IAAI,KAAK,IAAI,GAAG,CAAC;AAAA,IACrD;AAAA,IACA;AAAA,EACF,GACA;AACA,WAAO;AAAA,EACT;AACA,UACE;AAAA,IACE;AAAA,QACA,gCAAe,6BAAgB,GAAG,CAAC,EAAE;AAAA,MACnC,IAAI,WAAW,CAAC,KAAK,KAAK,KAAK,IAAI,IAAI,KAAK,IAAI,GAAG,CAAC;AAAA,IACtD;AAAA,IACA;AAAA,EACF,GACA;AACA,WAAO;AAAA,EACT;AACA,QAAM,IAAI;AAAA,IACR;AAAA,EACF;AACF;AAEO,IAAK,oBAAL,kBAAKC,uBAAL;AACL,EAAAA,sCAAA;AACA,EAAAA,sCAAA;AACA,EAAAA,sCAAA;AACA,EAAAA,sCAAA;AACA,EAAAA,sCAAA;AACA,EAAAA,sCAAA;AACA,EAAAA,sCAAA;AAPU,SAAAA;AAAA,GAAA;AAUL,SAAS,0BACd,aACmB;AACnB,QAAM,OAAO,UAAU,cAAc,YAAY,OAAO;AACxD,UACE;AAAA,IACE;AAAA,QACA,gCAAe,6BAAgB,GAAG,CAAC,EAAE;AAAA,MACnC,IAAI,WAAW,CAAC,KAAK,IAAI,KAAK,KAAK,IAAI,KAAK,GAAG,EAAE,CAAC;AAAA,IACpD;AAAA,IACA;AAAA,EACF,GACA;AACA,WAAO;AAAA,EACT;AACA,UACE;AAAA,IACE;AAAA,QACA,gCAAe,6BAAgB,GAAG,CAAC,EAAE;AAAA,MACnC,IAAI,WAAW,CAAC,KAAK,KAAK,KAAK,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;AAAA,IACtD;AAAA,IACA;AAAA,EACF,GACA;AACA,WAAO;AAAA,EACT;AACA,UACE;AAAA,IACE;AAAA,QACA,gCAAe,6BAAgB,GAAG,CAAC,EAAE;AAAA,MACnC,IAAI,WAAW,CAAC,IAAI,KAAK,IAAI,IAAI,KAAK,KAAK,KAAK,GAAG,CAAC;AAAA,IACtD;AAAA,IACA;AAAA,EACF,GACA;AACA,WAAO;AAAA,EACT;AACA,UACE;AAAA,IACE;AAAA,QACA,gCAAe,6BAAgB,GAAG,CAAC,EAAE;AAAA,MACnC,IAAI,WAAW,CAAC,KAAK,IAAI,KAAK,IAAI,KAAK,KAAK,KAAK,GAAG,CAAC;AAAA,IACvD;AAAA,IACA;AAAA,EACF,GACA;AACA,WAAO;AAAA,EACT;AACA,UACE;AAAA,IACE;AAAA,QACA,gCAAe,6BAAgB,GAAG,CAAC,EAAE;AAAA,MACnC,IAAI,WAAW,CAAC,KAAK,KAAK,KAAK,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;AAAA,IACpD;AAAA,IACA;AAAA,EACF,GACA;AACA,WAAO;AAAA,EACT;AACA,UACE;AAAA,IACE;AAAA,QACA,gCAAe,6BAAgB,GAAG,CAAC,EAAE;AAAA,MACnC,IAAI,WAAW,CAAC,KAAK,IAAI,KAAK,IAAI,KAAK,KAAK,KAAK,GAAG,CAAC;AAAA,IACvD;AAAA,IACA;AAAA,EACF,GACA;AACA,WAAO;AAAA,EACT;AACA,UACE;AAAA,IACE;AAAA,QACA,gCAAe,6BAAgB,GAAG,CAAC,EAAE;AAAA,MACnC,IAAI,WAAW,CAAC,KAAK,IAAI,KAAK,IAAI,IAAI,KAAK,IAAI,GAAG,CAAC;AAAA,IACrD;AAAA,IACA;AAAA,EACF,GACA;AACA,WAAO;AAAA,EACT;AACA,QAAM,IAAI;AAAA,IACR;AAAA,EACF;AACF;;;ADzMO,IAAM,mCAAmC;AAEzC,IAAM,wCAAwC;AAE9C,IAAM,sCAAsC;AAE5C,IAAM,mCAAmC;AAEzC,IAAM,kCAAkC;AAExC,IAAM,wCAAwC;AAE9C,IAAM,gCAAgC;AAEtC,IAAM,8BAA8B;AAEpC,IAAM,mCAAmC;AAEzC,IAAM,4CAA4C;AAElD,IAAM,oCAAoC;AAE1C,IAAM,8BAA8B;AAEpC,IAAM,kCAAkC;AAExC,IAAM,mCAAmC;AAEzC,IAAM,iCAAiC;AAEvC,IAAM,yCAAyC;AAE/C,IAAM,kCAAkC;AAExC,IAAM,gCAAgC;AAEtC,IAAM,0CAA0C;AAEhD,IAAM,qCAAqC;AAE3C,IAAM,uCAAuC;AAE7C,IAAM,8BAA8B;AAEpC,IAAM,+BAA+B;AAErC,IAAM,wCAAwC;AAE9C,IAAM,0CAA0C;AAEhD,IAAM,sCAAsC;AAE5C,IAAM,6BAA6B;AAEnC,IAAM,8BAA8B;AAEpC,IAAM,6BAA6B;AAEnC,IAAM,8BAA8B;AAEpC,IAAM,oCAAoC;AAE1C,IAAM,0CAA0C;AAEhD,IAAM,+BAA+B;AAErC,IAAM,mCAAmC;AAEzC,IAAM,wCAAwC;AAE9C,IAAM,0CAA0C;AAEhD,IAAM,gCAAgC;AAEtC,IAAM,mCAAmC;AAEzC,IAAM,6BAA6B;AAEnC,IAAM,0CAA0C;AAEhD,IAAM,oCAAoC;AAE1C,IAAM,sCAAsC;AAE5C,IAAM,yCAAyC;AAE/C,IAAM,oCAAoC;AAE1C,IAAM,sCAAsC;AAE5C,IAAM,2CAA2C;AAEjD,IAAM,8BAA8B;AAEpC,IAAM,gCAAgC;AAEtC,IAAM,mCAAmC;AAEzC,IAAM,uCAAuC;AAE7C,IAAM,qCAAqC;AAE3C,IAAM,iCAAiC;AAEvC,IAAM,iCAAiC;AAEvC,IAAM,8BAA8B;AAEpC,IAAM,wCAAwC;AAE9C,IAAM,qCAAqC;AAE3C,IAAM,uCAAuC;AAE7C,IAAM,qCAAqC;AAE3C,IAAM,oCAAoC;AAE1C,IAAM,mCAAmC;AAEzC,IAAM,2CAA2C;AAEjD,IAAM,kCAAkC;AAExC,IAAM,wCAAwC;AAE9C,IAAM,wCAAwC;AAE9C,IAAM,4BAA4B;AAElC,IAAM,+BAA+B;AAErC,IAAM,yBAAyB;AAE/B,IAAM,sCAAsC;AAE5C,IAAM,yCAAyC;AAE/C,IAAM,wCAAwC;AAE9C,IAAM,qCAAqC;AAE3C,IAAM,yCAAyC;AAE/C,IAAM,uCAAuC;AAE7C,IAAM,gDAAgD;AAEtD,IAAM,+CAA+C;AA+E5D,IAAI;AACJ,IAAI,QAAQ,IAAI,aAAa,cAAc;AACzC,wBAAsB;AAAA,IACpB,CAAC,kCAAkC,GAAG;AAAA,IACtC,CAAC,2BAA2B,GAAG;AAAA,IAC/B,CAAC,+BAA+B,GAAG;AAAA,IACnC,CAAC,iCAAiC,GAAG;AAAA,IACrC,CAAC,6BAA6B,GAAG;AAAA,IACjC,CAAC,qCAAqC,GAAG;AAAA,IACzC,CAAC,oCAAoC,GAAG;AAAA,IACxC,CAAC,8BAA8B,GAAG;AAAA,IAClC,CAAC,gCAAgC,GAAG;AAAA,IACpC,CAAC,iCAAiC,GAAG;AAAA,IACrC,CAAC,uCAAuC,GAAG;AAAA,IAC3C,CAAC,gCAAgC,GAAG;AAAA,IACpC,CAAC,+BAA+B,GAAG;AAAA,IACnC,CAAC,6BAA6B,GAAG;AAAA,IACjC,CAAC,kCAAkC,GAAG;AAAA,IACtC,CAAC,wCAAwC,GAAG;AAAA,IAC5C,CAAC,sCAAsC,GAAG;AAAA,IAC1C,CAAC,2BAA2B,GAAG;AAAA,IAC/B,CAAC,mCAAmC,GAAG;AAAA,IACvC,CAAC,4CAA4C,GAAG;AAAA,IAChD,CAAC,iCAAiC,GAAG;AAAA,IACrC,CAAC,qCAAqC,GAAG;AAAA,IACzC,CAAC,6CAA6C,GAAG;AAAA,IACjD,CAAC,4BAA4B,GAAG;AAAA,IAChC,CAAC,oCAAoC,GAAG;AAAA,IACxC,CAAC,kCAAkC,GAAG;AAAA,IACtC,CAAC,yCAAyC,GAAG;AAAA,IAC7C,CAAC,uCAAuC,GAAG;AAAA,IAC3C,CAAC,8BAA8B,GAAG;AAAA,IAClC,CAAC,+BAA+B,GAAG;AAAA,IACnC,CAAC,qCAAqC,GAAG;AAAA,IACzC,CAAC,qCAAqC,GAAG;AAAA,IACzC,CAAC,0BAA0B,GAAG;AAAA,IAC9B,CAAC,gCAAgC,GAAG;AAAA,IACpC,CAAC,gCAAgC,GAAG;AAAA,IACpC,CAAC,2BAA2B,GAAG;AAAA,IAC/B,CAAC,oCAAoC,GAAG;AAAA,IACxC,CAAC,yBAAyB,GAAG;AAAA,IAC7B,CAAC,gCAAgC,GAAG;AAAA,IACpC,CAAC,2BAA2B,GAAG;AAAA,IAC/B,CAAC,6BAA6B,GAAG;AAAA,IACjC,CAAC,+BAA+B,GAAG;AAAA,IACnC,CAAC,2BAA2B,GAAG;AAAA,IAC/B,CAAC,sCAAsC,GAAG;AAAA,IAC1C,CAAC,qCAAqC,GAAG;AAAA,IACzC,CAAC,sCAAsC,GAAG;AAAA,IAC1C,CAAC,kCAAkC,GAAG;AAAA,IACtC,CAAC,kCAAkC,GAAG;AAAA,IACtC,CAAC,oCAAoC,GAAG;AAAA,IACxC,CAAC,uCAAuC,GAAG;AAAA,IAC3C,CAAC,4BAA4B,GAAG;AAAA,IAChC,CAAC,qCAAqC,GAAG;AAAA,IACzC,CAAC,2BAA2B,GAAG;AAAA,IAC/B,CAAC,gCAAgC,GAAG;AAAA,IACpC,CAAC,6BAA6B,GAAG;AAAA,IACjC,CAAC,qCAAqC,GAAG;AAAA,IACzC,CAAC,sBAAsB,GAAG;AAAA,IAC1B,CAAC,4BAA4B,GAAG;AAAA,IAChC,CAAC,mCAAmC,GAAG;AAAA,IACvC,CAAC,wCAAwC,GAAG;AAAA,IAC5C,CAAC,iCAAiC,GAAG;AAAA,IACrC,CAAC,8BAA8B,GAAG;AAAA,IAClC,CAAC,0BAA0B,GAAG;AAAA,IAC9B,CAAC,2BAA2B,GAAG;AAAA,IAC/B,CAAC,uCAAuC,GAAG;AAAA,IAC3C,CAAC,qCAAqC,GAAG;AAAA,IACzC,CAAC,mCAAmC,GAAG;AAAA,IACvC,CAAC,gCAAgC,GAAG;AAAA,IACpC,CAAC,0BAA0B,GAAG;AAAA,IAC9B,CAAC,uCAAuC,GAAG;AAAA,IAC3C,CAAC,gCAAgC,GAAG;AAAA,IACpC,CAAC,iCAAiC,GAAG;AAAA,IACrC,CAAC,mCAAmC,GAAG;AAAA,IACvC,CAAC,mCAAmC,GAAG;AAAA,IACvC,CAAC,sCAAsC,GAAG;AAAA,EAC5C;AACF;AAEO,SAAS,sBAAsB,MAA2B;AAC/D,MAAI,QAAQ,IAAI,aAAa,cAAc;AACzC,WAAQ,oBAAoD,IAAI;AAAA,EAClE;AAEA,SAAO;AACT;AAEO,SAAS,cACd,OACA,oBAGA,MAE6D;AAC7D,aAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;;;AEnVA,IAAAC,eA+BO;;;AC/BP,IAAAC,eAUO;AAMA,SAAS,WAAc,OAAgC;AAC5D,MAAI,UAAU,QAAQ,UAAU,QAAW;AACzC,UAAM,IAAI,MAAM,kDAAkD;AAAA,EACpE;AACA,SAAO;AACT;AAMO,SAAS,cACd,OAMY;AACZ,MAAI,CAAC,OAAO;AACV,UAAM,IAAI,MAAM,qBAAqB;AAAA,EACvC;AACA,MAAI,OAAO,UAAU,YAAY,aAAa,OAAO;AACnD,WAAO,MAAM;AAAA,EACf;AACA,MAAI,MAAM,QAAQ,KAAK,GAAG;AACxB,WAAO,MAAM,CAAC;AAAA,EAChB;AACA,SAAO;AACT;AAsEO,SAAS,sBACd,gBACA,yBACA;AACA,SAAO,CACL,YACgD;AAChD,QAAI,CAAC,QAAQ,OAAO;AAClB,UAAI,4BAA4B,UAAW;AAC3C,aAAO,OAAO,OAAO;AAAA,QACnB,SAAS;AAAA,QACT,MAAM,yBAAY;AAAA,MACpB,CAAC;AAAA,IACH;AAEA,UAAM,eAAe,QAAQ,aACzB,yBAAY,WACZ,yBAAY;AAChB,WAAO,OAAO,OAAO;AAAA,MACnB,SAAS,cAAc,QAAQ,KAAK;AAAA,MACpC,MAAM,oBAAoB,QAAQ,KAAK,QACnC,kCAAoB,YAAY,IAChC;AAAA,MACJ,GAAI,oBAAoB,QAAQ,KAAK,IAAI,EAAE,QAAQ,QAAQ,MAAM,IAAI,CAAC;AAAA,IACxE,CAAC;AAAA,EACH;AACF;AAEO,SAAS,oBACd,OAIsC;AACtC,SACE,CAAC,CAAC,SACF,OAAO,UAAU,YACjB,aAAa,aACb,aAAAC,qBAAuB,KAAK;AAEhC;;;ADpHO,IAAM,8BAA8B,IAAI,WAAW;AAAA,EACxD;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAG;AACjC,CAAC;AAEM,SAAS,oCAAoC;AAClD,aAAO,iCAAe,8BAAgB,GAAG,CAAC,EAAE;AAAA,IAC1C;AAAA,EACF;AACF;AA4FO,SAAS,wCAAkF;AAChG,aAAO;AAAA,QACL,+BAAiB;AAAA,MACf,CAAC,qBAAiB,iCAAe,8BAAgB,GAAG,CAAC,CAAC;AAAA,MACtD,CAAC,aAAS,4BAAc,CAAC;AAAA,MACzB,CAAC,aAAS,kCAAgB,iCAAe,8BAAgB,GAAG,EAAE,CAAC,CAAC;AAAA,MAChE,CAAC,cAAU,4BAAc,CAAC;AAAA,MAC1B,CAAC,qBAAiB,4BAAc,CAAC;AAAA,IACnC,CAAC;AAAA,IACD,CAAC,WAAW,EAAE,GAAG,OAAO,eAAe,4BAA4B;AAAA,EACrE;AACF;AAEO,SAAS,wCAA8E;AAC5F,aAAO,+BAAiB;AAAA,IACtB,CAAC,qBAAiB,iCAAe,8BAAgB,GAAG,CAAC,CAAC;AAAA,IACtD,CAAC,aAAS,4BAAc,CAAC;AAAA,IACzB,CAAC,aAAS,kCAAgB,iCAAe,8BAAgB,GAAG,EAAE,CAAC,CAAC;AAAA,IAChE,CAAC,cAAU,4BAAc,CAAC;AAAA,IAC1B,CAAC,qBAAiB,4BAAc,CAAC;AAAA,EACnC,CAAC;AACH;AAEO,SAAS,sCAGd;AACA,aAAO;AAAA,IACL,sCAAsC;AAAA,IACtC,sCAAsC;AAAA,EACxC;AACF;AAwCA,eAAsB,gCAkBpB,OAiBA,QAoBA;AAEA,QAAM,iBAAiB,QAAQ,kBAAkB;AAGjD,QAAM,mBAAmB;AAAA,IACvB,QAAQ,EAAE,OAAO,MAAM,UAAU,MAAM,YAAY,MAAM;AAAA,IACzD,QAAQ,EAAE,OAAO,MAAM,UAAU,MAAM,YAAY,MAAM;AAAA,IACzD,UAAU,EAAE,OAAO,MAAM,YAAY,MAAM,YAAY,KAAK;AAAA,IAC5D,eAAe,EAAE,OAAO,MAAM,iBAAiB,MAAM,YAAY,KAAK;AAAA,IACtE,WAAW,EAAE,OAAO,MAAM,aAAa,MAAM,YAAY,KAAK;AAAA,IAC9D,oBAAoB;AAAA,MAClB,OAAO,MAAM,sBAAsB;AAAA,MACnC,YAAY;AAAA,IACd;AAAA,IACA,yBAAyB;AAAA,MACvB,OAAO,MAAM,2BAA2B;AAAA,MACxC,YAAY;AAAA,IACd;AAAA,IACA,SAAS,EAAE,OAAO,MAAM,WAAW,MAAM,YAAY,MAAM;AAAA,IAC3D,WAAW,EAAE,OAAO,MAAM,aAAa,MAAM,YAAY,MAAM;AAAA,IAC/D,QAAQ,EAAE,OAAO,MAAM,UAAU,MAAM,YAAY,KAAK;AAAA,IACxD,MAAM,EAAE,OAAO,MAAM,QAAQ,MAAM,YAAY,MAAM;AAAA,IACrD,SAAS,EAAE,OAAO,MAAM,WAAW,MAAM,YAAY,KAAK;AAAA,IAC1D,cAAc,EAAE,OAAO,MAAM,gBAAgB,MAAM,YAAY,MAAM;AAAA,IACrE,wBAAwB;AAAA,MACtB,OAAO,MAAM,0BAA0B;AAAA,MACvC,YAAY;AAAA,IACd;AAAA,IACA,eAAe,EAAE,OAAO,MAAM,iBAAiB,MAAM,YAAY,MAAM;AAAA,EACzE;AACA,QAAM,WAAW;AAMjB,QAAM,OAAO,EAAE,GAAG,MAAM;AAGxB,MAAI,CAAC,SAAS,OAAO,OAAO;AAC1B,aAAS,OAAO,QAAQ,UAAM,uCAAyB;AAAA,MACrD;AAAA,MACA,OAAO;AAAA,YACL,8BAAgB,EAAE,OAAO,IAAI,WAAW,CAAC,KAAK,IAAI,KAAK,KAAK,KAAK,GAAG,CAAC,CAAC;AAAA,MACxE;AAAA,IACF,CAAC;AAAA,EACH;AACA,MAAI,CAAC,SAAS,OAAO,OAAO;AAC1B,aAAS,OAAO,QAAQ,UAAM,uCAAyB;AAAA,MACrD;AAAA,MACA,OAAO;AAAA,YACL,8BAAgB,EAAE;AAAA,UAChB,IAAI,WAAW;AAAA,YACb;AAAA,YAAI;AAAA,YAAK;AAAA,YAAK;AAAA,YAAK;AAAA,YAAK;AAAA,YAAK;AAAA,YAAK;AAAA,YAAI;AAAA,YAAI;AAAA,YAAK;AAAA,YAAK;AAAA,YAAK;AAAA,YAAK;AAAA,UAChE,CAAC;AAAA,QACH;AAAA,MACF;AAAA,IACF,CAAC;AAAA,EACH;AACA,MAAI,CAAC,SAAS,aAAa,OAAO;AAChC,aAAS,aAAa,QACpB;AAAA,EACJ;AACA,MAAI,CAAC,SAAS,wBAAwB,OAAO;AAC3C,aAAS,wBAAwB,QAAQ,UAAM,uCAAyB;AAAA,MACtE,gBACE;AAAA,MACF,OAAO;AAAA,YACL,gCAAkB,EAAE,OAAO,cAAc,SAAS,QAAQ,KAAK,CAAC;AAAA,YAChE,gCAAkB,EAAE,OAAO,cAAc,SAAS,aAAa,KAAK,CAAC;AAAA,YACrE,gCAAkB,EAAE,OAAO,cAAc,SAAS,KAAK,KAAK,CAAC;AAAA,MAC/D;AAAA,IACF,CAAC;AAAA,EACH;AACA,MAAI,CAAC,SAAS,QAAQ,OAAO;AAC3B,aAAS,QAAQ,QAAQ,UAAM,uCAAyB;AAAA,MACtD;AAAA,MACA,OAAO;AAAA,YACL,8BAAgB,EAAE;AAAA,UAChB,IAAI,WAAW,CAAC,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,CAAC;AAAA,QACnD;AAAA,YACA,gCAAkB,EAAE,OAAO,cAAc,SAAS,KAAK,KAAK,CAAC;AAAA,YAC7D,gCAAkB,EAAE,OAAO,cAAc,SAAS,UAAU,KAAK,CAAC;AAAA,MACpE;AAAA,IACF,CAAC;AAAA,EACH;AACA,MAAI,CAAC,SAAS,uBAAuB,OAAO;AAC1C,aAAS,uBAAuB,QAC9B;AAAA,EACJ;AACA,MAAI,CAAC,SAAS,cAAc,OAAO;AACjC,aAAS,cAAc,QACrB;AAAA,EACJ;AAEA,QAAM,iBAAiB,sBAAsB,gBAAgB,WAAW;AACxE,SAAO,OAAO,OAAO;AAAA,IACnB,UAAU;AAAA,MACR,eAAe,SAAS,MAAM;AAAA,MAC9B,eAAe,SAAS,MAAM;AAAA,MAC9B,eAAe,SAAS,QAAQ;AAAA,MAChC,eAAe,SAAS,aAAa;AAAA,MACrC,eAAe,SAAS,SAAS;AAAA,MACjC,eAAe,SAAS,kBAAkB;AAAA,MAC1C,eAAe,SAAS,uBAAuB;AAAA,MAC/C,eAAe,SAAS,OAAO;AAAA,MAC/B,eAAe,SAAS,SAAS;AAAA,MACjC,eAAe,SAAS,MAAM;AAAA,MAC9B,eAAe,SAAS,IAAI;AAAA,MAC5B,eAAe,SAAS,OAAO;AAAA,MAC/B,eAAe,SAAS,YAAY;AAAA,MACpC,eAAe,SAAS,sBAAsB;AAAA,MAC9C,eAAe,SAAS,aAAa;AAAA,IACvC;AAAA,IACA,MAAM,sCAAsC,EAAE;AAAA,MAC5C;AAAA,IACF;AAAA,IACA;AAAA,EACF,CAiBC;AACH;AAwCO,SAAS,2BAkBd,OAiBA,QAkBA;AAEA,QAAM,iBAAiB,QAAQ,kBAAkB;AAGjD,QAAM,mBAAmB;AAAA,IACvB,QAAQ,EAAE,OAAO,MAAM,UAAU,MAAM,YAAY,MAAM;AAAA,IACzD,QAAQ,EAAE,OAAO,MAAM,UAAU,MAAM,YAAY,MAAM;AAAA,IACzD,UAAU,EAAE,OAAO,MAAM,YAAY,MAAM,YAAY,KAAK;AAAA,IAC5D,eAAe,EAAE,OAAO,MAAM,iBAAiB,MAAM,YAAY,KAAK;AAAA,IACtE,WAAW,EAAE,OAAO,MAAM,aAAa,MAAM,YAAY,KAAK;AAAA,IAC9D,oBAAoB;AAAA,MAClB,OAAO,MAAM,sBAAsB;AAAA,MACnC,YAAY;AAAA,IACd;AAAA,IACA,yBAAyB;AAAA,MACvB,OAAO,MAAM,2BAA2B;AAAA,MACxC,YAAY;AAAA,IACd;AAAA,IACA,SAAS,EAAE,OAAO,MAAM,WAAW,MAAM,YAAY,MAAM;AAAA,IAC3D,WAAW,EAAE,OAAO,MAAM,aAAa,MAAM,YAAY,MAAM;AAAA,IAC/D,QAAQ,EAAE,OAAO,MAAM,UAAU,MAAM,YAAY,KAAK;AAAA,IACxD,MAAM,EAAE,OAAO,MAAM,QAAQ,MAAM,YAAY,MAAM;AAAA,IACrD,SAAS,EAAE,OAAO,MAAM,WAAW,MAAM,YAAY,KAAK;AAAA,IAC1D,cAAc,EAAE,OAAO,MAAM,gBAAgB,MAAM,YAAY,MAAM;AAAA,IACrE,wBAAwB;AAAA,MACtB,OAAO,MAAM,0BAA0B;AAAA,MACvC,YAAY;AAAA,IACd;AAAA,IACA,eAAe,EAAE,OAAO,MAAM,iBAAiB,MAAM,YAAY,MAAM;AAAA,EACzE;AACA,QAAM,WAAW;AAMjB,QAAM,OAAO,EAAE,GAAG,MAAM;AAGxB,MAAI,CAAC,SAAS,aAAa,OAAO;AAChC,aAAS,aAAa,QACpB;AAAA,EACJ;AACA,MAAI,CAAC,SAAS,uBAAuB,OAAO;AAC1C,aAAS,uBAAuB,QAC9B;AAAA,EACJ;AACA,MAAI,CAAC,SAAS,cAAc,OAAO;AACjC,aAAS,cAAc,QACrB;AAAA,EACJ;AAEA,QAAM,iBAAiB,sBAAsB,gBAAgB,WAAW;AACxE,SAAO,OAAO,OAAO;AAAA,IACnB,UAAU;AAAA,MACR,eAAe,SAAS,MAAM;AAAA,MAC9B,eAAe,SAAS,MAAM;AAAA,MAC9B,eAAe,SAAS,QAAQ;AAAA,MAChC,eAAe,SAAS,aAAa;AAAA,MACrC,eAAe,SAAS,SAAS;AAAA,MACjC,eAAe,SAAS,kBAAkB;AAAA,MAC1C,eAAe,SAAS,uBAAuB;AAAA,MAC/C,eAAe,SAAS,OAAO;AAAA,MAC/B,eAAe,SAAS,SAAS;AAAA,MACjC,eAAe,SAAS,MAAM;AAAA,MAC9B,eAAe,SAAS,IAAI;AAAA,MAC5B,eAAe,SAAS,OAAO;AAAA,MAC/B,eAAe,SAAS,YAAY;AAAA,MACpC,eAAe,SAAS,sBAAsB;AAAA,MAC9C,eAAe,SAAS,aAAa;AAAA,IACvC;AAAA,IACA,MAAM,sCAAsC,EAAE;AAAA,MAC5C;AAAA,IACF;AAAA,IACA;AAAA,EACF,CAiBC;AACH;AA2BO,SAAS,6BAId,aAGwD;AACxD,MAAI,YAAY,SAAS,SAAS,IAAI;AAEpC,UAAM,IAAI,MAAM,qBAAqB;AAAA,EACvC;AACA,MAAI,eAAe;AACnB,QAAM,iBAAiB,MAAM;AAC3B,UAAM,cAAe,YAAY,SAA2B,YAAY;AACxE,oBAAgB;AAChB,WAAO;AAAA,EACT;AACA,QAAM,yBAAyB,MAAM;AACnC,UAAM,cAAc,eAAe;AACnC,WAAO,YAAY,YAAY,yBAC3B,SACA;AAAA,EACN;AACA,SAAO;AAAA,IACL,gBAAgB,YAAY;AAAA,IAC5B,UAAU;AAAA,MACR,QAAQ,eAAe;AAAA,MACvB,QAAQ,eAAe;AAAA,MACvB,UAAU,eAAe;AAAA,MACzB,eAAe,eAAe;AAAA,MAC9B,WAAW,uBAAuB;AAAA,MAClC,oBAAoB,eAAe;AAAA,MACnC,yBAAyB,eAAe;AAAA,MACxC,SAAS,eAAe;AAAA,MACxB,WAAW,eAAe;AAAA,MAC1B,QAAQ,eAAe;AAAA,MACvB,MAAM,eAAe;AAAA,MACrB,SAAS,eAAe;AAAA,MACxB,cAAc,eAAe;AAAA,MAC7B,wBAAwB,eAAe;AAAA,MACvC,eAAe,eAAe;AAAA,IAChC;AAAA,IACA,MAAM,sCAAsC,EAAE,OAAO,YAAY,IAAI;AAAA,EACvE;AACF;;;AErpBA,IAAAC,eAkCO;;;AC1CP,IAAAC,eAAwB;AAQjB,IAAM,qBAAqB;AAC3B,IAAM,sBAAsB;AAC5B,IAAM,wBAAwB;AAC9B,IAAM,sBAAsB;AAE5B,IAAM,eAAe;AACrB,IAAM,iBAAiB;AACvB,IAAM,cAAc;AACpB,IAAM,eAAe;AAErB,IAAM,eAAe;AACrB,IAAM,aAAa;AAOnB,IAAM,YAAQ,sBAAQ,8CAA8C;AACpE,IAAM,sBAAkB,sBAAQ,8CAA8C;AAC9E,IAAM,yBAAqB,sBAAQ,8CAA8C;AACjF,IAAM,mCAA+B,sBAAQ,8CAA8C;AAO3F,IAAM,cAAc;AACpB,IAAM,mBAAmB,cAAc;AAQvC,IAAM,gBAAgB;AACtB,IAAM,iBAAiB;AAOvB,IAAM,oBAAoB;AAC1B,IAAM,kBAAkB;AACxB,IAAM,iBAAiB;AAOvB,IAAM,eAAe;;;AC9D5B,IAAAC,eAiBO;AAOA,IAAM,+BAA+B,OAC1C,WACA,mBAA2B,gBACxB;AACH,QAAM,SAAS,UAAM,oCAAsB;AAC3C,YAAM,6BAAe,SAAS,EAAE;AAAA,IAC9B,kBAAkB,OAAO;AAAA,IACzB,cAAU,uBAAS,gBAAgB;AAAA,IACnC,YAAY;AAAA,EACd,CAAC;AACD,SAAO;AACT;AAEO,IAAM,4BAA4B,MAAiB;AACxD,QAAM,UAAM,8BAAgB,+BAA+B;AAC3D,QAAM,uBAAmB;AAAA,IACvB;AAAA,EACF;AACA,SAAO,EAAE,KAAK,iBAAiB;AACjC;AAEO,IAAM,2CAA2C,OACtD,KACA,QACA,gBACG;AACH,QAAM,EAAE,OAAO,gBAAgB,IAAI,MAAM,IAAI,mBAAmB,EAAE,KAAK;AAEvE,aAAO;AAAA,QACL,uCAAyB,EAAE,SAAS,EAAE,CAAC;AAAA,IACvC,CAAC,WAAO,0DAA4C,iBAAiB,EAAE;AAAA,IACvE,CAAC,WAAO,kDAAoC,QAAQ,EAAE;AAAA,IACtD,CAAC,WAAO,mDAAqC,aAAa,EAAE;AAAA,EAC9D;AACF;;;AC1DA,IAAAC,eAMO;AAOP,eAAsB,wBACpB,OACoB;AACpB,SAAO,UAAM,uCAAyB;AAAA,IACpC;AAAA,IACA,gBAAgB;AAAA,EAClB,CAAC;AACH;AAEA,eAAsB,0BAA8C;AAClE,SAAO,MAAM,wBAAwB,CAAC,kBAAkB,CAAC;AAC3D;AACA,eAAsB,iCAAqD;AACzE,SAAO,MAAM,wBAAwB,CAAC,mBAAmB,CAAC;AAC5D;AACA,eAAsB,+BACpB,WACoB;AACpB,QAAM,QAAQ;AAAA,IACZ;AAAA,QACA,gCAAkB,EAAE,OAAO,SAAS;AAAA,EACtC;AACA,SAAO,MAAM,wBAAwB,KAAK;AAC5C;AACA,eAAsB,2BACpB,WACoB;AACpB,QAAM,QAAQ;AAAA,IACZ;AAAA,QACA,gCAAkB,EAAE,OAAO,SAAS;AAAA,EACtC;AACA,SAAO,MAAM,wBAAwB,KAAK;AAC5C;AAEA,eAAsB,yBACpB,WACA,MACoB;AACpB,QAAM,QAAQ;AAAA,IACZ;AAAA,QACA,gCAAkB,EAAE,OAAO,IAAI;AAAA,QAC/B,gCAAkB,EAAE,OAAO,SAAS;AAAA,EACtC;AACA,SAAO,MAAM,wBAAwB,KAAK;AAC5C;AAEA,eAAsB,0BACpB,SACA,IACoB;AACpB,QAAM,WAAW,OAAO,MAAM,CAAC;AAC/B,WAAS,cAAc,EAAE;AACzB,QAAM,QAAQ;AAAA,IACZ;AAAA,QACA,gCAAkB,EAAE,OAAO,OAAO;AAAA,IAClC;AAAA,EACF;AACA,SAAO,MAAM,wBAAwB,KAAK;AAC5C;;;ACvEO,SAAS,gBAAgB,MAAmC;AAC/D,MAAI,CAAC,KAAM,QAAO;AAClB,SAAO,KAAK,MAAM,KAAK,QAAQ,IAAI,GAAI;AAC3C;;;ACFA,oBAA2B;AAC3B,0BAAuB;AAEvB,SAAS,SAAS,OAAeC,UAAiB,QAAwB;AACtE,QAAM,OAAO,GAAG,KAAK,IAAIA,QAAO,IAAI,OAAO,SAAS,CAAC;AACrD,aAAO,0BAAW,QAAQ,EAAE,OAAO,IAAI,EAAE,OAAO;AACpD;AAOA,SAAS,YAAYC,UAAyB;AAC1C,aAAO,0BAAW,QAAQ,EAAE,OAAOA,QAAO,EAAE,OAAO;AACvD;AAEO,IAAM,qBAAqB,CAAC,YAAsB;AACrD,QAAM,SAAS,QAAQ,IAAI,CAACA,aAAY,YAAYA,QAAO,CAAC;AAE5D,SAAO,IAAI,oBAAAC;AAAA,IACP;AAAA,IACA,CAAC,aAAc,0BAAW,QAAQ,EAAE,OAAO,IAAI,EAAE,OAAO;AAAA,IACxD,EAAE,WAAW,KAAK;AAAA,EAAC;AAC3B;AAEO,IAAM,uBAAuB,CAAC,YAAwBD,aAA8B;AACvF,QAAM,OAAO,YAAYA,QAAO;AAChC,SAAO,WAAW,SAAS,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI;AACtD;AAEO,IAAM,qBAAqB,CAC9B,eACqB;AACrB,QAAM,OAAO,WAAW,QAAQ;AAEhC,MAAI,KAAK,WAAW,IAAI;AACpB,UAAM,IAAI,MAAM,8BAA8B;AAAA,EAClD;AAGA,QAAM,YAAY,IAAI,WAAW,IAAI;AAGrC,SAAO;AACX;AAEO,IAAM,mBAAmB,CAC5B,cACC;AACD,QAAM,SAAS,UAAU;AAAA,IAAI,CAAC,EAAE,OAAO,SAAAA,UAAS,OAAO,MACnD,SAAS,OAAOA,UAAS,MAAM;AAAA,EACnC;AAEA,QAAM,aAAa,IAAI,oBAAAC;AAAA,IACnB;AAAA,IACA,CAAC,aAAc,0BAAW,QAAQ,EAAE,OAAO,IAAI,EAAE,OAAO;AAAA,IACxD,EAAE,WAAW,KAAK;AAAA,EACtB;AAEA,SAAO;AACX;;;ALVO,IAAM,+BAA+B,IAAI,WAAW;AAAA,EACzD;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AACnC,CAAC;AAEM,SAAS,qCAAqC;AACnD,aAAO,iCAAe,8BAAgB,GAAG,CAAC,EAAE;AAAA,IAC1C;AAAA,EACF;AACF;AAwEO,SAAS,yCAAoF;AAClG,aAAO;AAAA,QACL,+BAAiB;AAAA,MACf,CAAC,qBAAiB,iCAAe,8BAAgB,GAAG,CAAC,CAAC;AAAA,MACtD,CAAC,kBAAc,mCAAiB,iCAAe,8BAAgB,GAAG,EAAE,CAAC,CAAC;AAAA,MACtE,CAAC,gBAAY,mCAAiB,4BAAc,CAAC,CAAC;AAAA,MAC9C,CAAC,cAAU,mCAAiB,4BAAc,CAAC,CAAC;AAAA,MAC5C,CAAC,eAAW,mCAAiB,2BAAa,CAAC,CAAC;AAAA,MAC5C,CAAC,eAAW,mCAAiB,2BAAa,CAAC,CAAC;AAAA,MAC5C,CAAC,yBAAqB,mCAAiB,gCAAkB,CAAC,CAAC;AAAA,MAC3D,CAAC,2BAAuB,mCAAiB,2BAAa,CAAC,CAAC;AAAA,IAC1D,CAAC;AAAA,IACD,CAAC,WAAW,EAAE,GAAG,OAAO,eAAe,6BAA6B;AAAA,EACtE;AACF;AAEO,SAAS,yCAAgF;AAC9F,aAAO,+BAAiB;AAAA,IACtB,CAAC,qBAAiB,iCAAe,8BAAgB,GAAG,CAAC,CAAC;AAAA,IACtD,CAAC,kBAAc,mCAAiB,iCAAe,8BAAgB,GAAG,EAAE,CAAC,CAAC;AAAA,IACtE,CAAC,gBAAY,mCAAiB,4BAAc,CAAC,CAAC;AAAA,IAC9C,CAAC,cAAU,mCAAiB,4BAAc,CAAC,CAAC;AAAA,IAC5C,CAAC,eAAW,mCAAiB,2BAAa,CAAC,CAAC;AAAA,IAC5C,CAAC,eAAW,mCAAiB,2BAAa,CAAC,CAAC;AAAA,IAC5C,CAAC,yBAAqB,mCAAiB,gCAAkB,CAAC,CAAC;AAAA,IAC3D,CAAC,2BAAuB,mCAAiB,2BAAa,CAAC,CAAC;AAAA,EAC1D,CAAC;AACH;AAEO,SAAS,uCAGd;AACA,aAAO;AAAA,IACL,uCAAuC;AAAA,IACvC,uCAAuC;AAAA,EACzC;AACF;AA+BA,eAAsB,iCAYpB,OAWA,QAcA;AAEA,QAAM,iBAAiB,QAAQ,kBAAkB;AAGjD,QAAM,mBAAmB;AAAA,IACvB,QAAQ,EAAE,OAAO,MAAM,UAAU,MAAM,YAAY,MAAM;AAAA,IACzD,QAAQ,EAAE,OAAO,MAAM,UAAU,MAAM,YAAY,MAAM;AAAA,IACzD,UAAU,EAAE,OAAO,MAAM,YAAY,MAAM,YAAY,KAAK;AAAA,IAC5D,eAAe,EAAE,OAAO,MAAM,iBAAiB,MAAM,YAAY,KAAK;AAAA,IACtE,WAAW,EAAE,OAAO,MAAM,aAAa,MAAM,YAAY,KAAK;AAAA,IAC9D,SAAS,EAAE,OAAO,MAAM,WAAW,MAAM,YAAY,KAAK;AAAA,IAC1D,MAAM,EAAE,OAAO,MAAM,QAAQ,MAAM,YAAY,MAAM;AAAA,IACrD,WAAW,EAAE,OAAO,MAAM,aAAa,MAAM,YAAY,KAAK;AAAA,IAC9D,eAAe,EAAE,OAAO,MAAM,iBAAiB,MAAM,YAAY,MAAM;AAAA,EACzE;AACA,QAAM,WAAW;AAMjB,QAAM,OAAO,EAAE,GAAG,MAAM;AAGxB,MAAI,CAAC,SAAS,OAAO,OAAO;AAC1B,aAAS,OAAO,QAAQ,UAAM,uCAAyB;AAAA,MACrD;AAAA,MACA,OAAO;AAAA,YACL,8BAAgB,EAAE,OAAO,IAAI,WAAW,CAAC,KAAK,IAAI,KAAK,KAAK,KAAK,GAAG,CAAC,CAAC;AAAA,MACxE;AAAA,IACF,CAAC;AAAA,EACH;AACA,MAAI,CAAC,SAAS,OAAO,OAAO;AAC1B,aAAS,OAAO,QAAQ,UAAM,uCAAyB;AAAA,MACrD;AAAA,MACA,OAAO;AAAA,YACL,8BAAgB,EAAE;AAAA,UAChB,IAAI,WAAW;AAAA,YACb;AAAA,YAAI;AAAA,YAAK;AAAA,YAAK;AAAA,YAAK;AAAA,YAAK;AAAA,YAAK;AAAA,YAAK;AAAA,YAAI;AAAA,YAAI;AAAA,YAAK;AAAA,YAAK;AAAA,YAAK;AAAA,YAAK;AAAA,UAChE,CAAC;AAAA,QACH;AAAA,MACF;AAAA,IACF,CAAC;AAAA,EACH;AACA,MAAI,CAAC,SAAS,QAAQ,OAAO;AAC3B,aAAS,QAAQ,QAAQ,UAAM,uCAAyB;AAAA,MACtD;AAAA,MACA,OAAO;AAAA,YACL,8BAAgB,EAAE;AAAA,UAChB,IAAI,WAAW,CAAC,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,CAAC;AAAA,QACnD;AAAA,YACA,gCAAkB,EAAE,OAAO,cAAc,SAAS,KAAK,KAAK,CAAC;AAAA,YAC7D,gCAAkB,EAAE,OAAO,cAAc,SAAS,UAAU,KAAK,CAAC;AAAA,MACpE;AAAA,IACF,CAAC;AAAA,EACH;AACA,MAAI,CAAC,SAAS,cAAc,OAAO;AACjC,aAAS,cAAc,QACrB;AAAA,EACJ;AAEA,QAAM,iBAAiB,sBAAsB,gBAAgB,WAAW;AACxE,SAAO,OAAO,OAAO;AAAA,IACnB,UAAU;AAAA,MACR,eAAe,SAAS,MAAM;AAAA,MAC9B,eAAe,SAAS,MAAM;AAAA,MAC9B,eAAe,SAAS,QAAQ;AAAA,MAChC,eAAe,SAAS,aAAa;AAAA,MACrC,eAAe,SAAS,SAAS;AAAA,MACjC,eAAe,SAAS,OAAO;AAAA,MAC/B,eAAe,SAAS,IAAI;AAAA,MAC5B,eAAe,SAAS,SAAS;AAAA,MACjC,eAAe,SAAS,aAAa;AAAA,IACvC;AAAA,IACA,MAAM,uCAAuC,EAAE;AAAA,MAC7C;AAAA,IACF;AAAA,IACA;AAAA,EACF,CAWC;AACH;AA+BO,SAAS,4BAYd,OAWA,QAYA;AAEA,QAAM,iBAAiB,QAAQ,kBAAkB;AAGjD,QAAM,mBAAmB;AAAA,IACvB,QAAQ,EAAE,OAAO,MAAM,UAAU,MAAM,YAAY,MAAM;AAAA,IACzD,QAAQ,EAAE,OAAO,MAAM,UAAU,MAAM,YAAY,MAAM;AAAA,IACzD,UAAU,EAAE,OAAO,MAAM,YAAY,MAAM,YAAY,KAAK;AAAA,IAC5D,eAAe,EAAE,OAAO,MAAM,iBAAiB,MAAM,YAAY,KAAK;AAAA,IACtE,WAAW,EAAE,OAAO,MAAM,aAAa,MAAM,YAAY,KAAK;AAAA,IAC9D,SAAS,EAAE,OAAO,MAAM,WAAW,MAAM,YAAY,KAAK;AAAA,IAC1D,MAAM,EAAE,OAAO,MAAM,QAAQ,MAAM,YAAY,MAAM;AAAA,IACrD,WAAW,EAAE,OAAO,MAAM,aAAa,MAAM,YAAY,KAAK;AAAA,IAC9D,eAAe,EAAE,OAAO,MAAM,iBAAiB,MAAM,YAAY,MAAM;AAAA,EACzE;AACA,QAAM,WAAW;AAMjB,QAAM,OAAO,EAAE,GAAG,MAAM;AAGxB,MAAI,CAAC,SAAS,cAAc,OAAO;AACjC,aAAS,cAAc,QACrB;AAAA,EACJ;AAEA,QAAM,iBAAiB,sBAAsB,gBAAgB,WAAW;AACxE,SAAO,OAAO,OAAO;AAAA,IACnB,UAAU;AAAA,MACR,eAAe,SAAS,MAAM;AAAA,MAC9B,eAAe,SAAS,MAAM;AAAA,MAC9B,eAAe,SAAS,QAAQ;AAAA,MAChC,eAAe,SAAS,aAAa;AAAA,MACrC,eAAe,SAAS,SAAS;AAAA,MACjC,eAAe,SAAS,OAAO;AAAA,MAC/B,eAAe,SAAS,IAAI;AAAA,MAC5B,eAAe,SAAS,SAAS;AAAA,MACjC,eAAe,SAAS,aAAa;AAAA,IACvC;AAAA,IACA,MAAM,uCAAuC,EAAE;AAAA,MAC7C;AAAA,IACF;AAAA,IACA;AAAA,EACF,CAWC;AACH;AAqBO,SAAS,8BAId,aAGyD;AACzD,MAAI,YAAY,SAAS,SAAS,GAAG;AAEnC,UAAM,IAAI,MAAM,qBAAqB;AAAA,EACvC;AACA,MAAI,eAAe;AACnB,QAAM,iBAAiB,MAAM;AAC3B,UAAM,cAAe,YAAY,SAA2B,YAAY;AACxE,oBAAgB;AAChB,WAAO;AAAA,EACT;AACA,QAAM,yBAAyB,MAAM;AACnC,UAAM,cAAc,eAAe;AACnC,WAAO,YAAY,YAAY,yBAC3B,SACA;AAAA,EACN;AACA,SAAO;AAAA,IACL,gBAAgB,YAAY;AAAA,IAC5B,UAAU;AAAA,MACR,QAAQ,eAAe;AAAA,MACvB,QAAQ,eAAe;AAAA,MACvB,UAAU,eAAe;AAAA,MACzB,eAAe,eAAe;AAAA,MAC9B,WAAW,uBAAuB;AAAA,MAClC,SAAS,eAAe;AAAA,MACxB,MAAM,eAAe;AAAA,MACrB,WAAW,eAAe;AAAA,MAC1B,eAAe,eAAe;AAAA,IAChC;AAAA,IACA,MAAM,uCAAuC,EAAE,OAAO,YAAY,IAAI;AAAA,EACxE;AACF;AAaA,eAAsB,8BACpB,OACA;AACA,SAAO,MAAM,iCAAiC;AAAA,IAC5C,eAAe,MAAM,iBAAiB;AAAA,IACtC,UAAU;AAAA,IACV,SAAS,MAAM;AAAA,IACf,MAAM,MAAM;AAAA,IACZ,WAAW,MAAM;AAAA,IACjB,YAAY,MAAM,cAAc;AAAA,IAChC,UAAU,gBAAgB,MAAM,QAAQ;AAAA,IACxC,QAAQ,gBAAgB,MAAM,MAAM;AAAA,IACpC,SAAS;AAAA,IACT,SAAS;AAAA,IACT,mBAAmB;AAAA,IACnB,qBAAqB;AAAA,EACvB,CAAC;AACH;;;AMvhBA,IAAAC,eA6BO;AAUA,IAAM,iCAAiC,IAAI,WAAW;AAAA,EAC3D;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAClC,CAAC;AAEM,SAAS,sCAAsC;AACpD,aAAO,iCAAe,8BAAgB,GAAG,CAAC,EAAE;AAAA,IAC1C;AAAA,EACF;AACF;AA+DO,SAAS,0CAA+F;AAC7G,aAAO;AAAA,QACL,+BAAiB;AAAA,MACf,CAAC,qBAAiB,iCAAe,8BAAgB,GAAG,CAAC,CAAC;AAAA,MACtD,CAAC,UAAM,4BAAc,CAAC;AAAA,MACtB,CAAC,aAAS,4BAAc,CAAC;AAAA,IAC3B,CAAC;AAAA,IACD,CAAC,WAAW,EAAE,GAAG,OAAO,eAAe,+BAA+B;AAAA,EACxE;AACF;AAEO,SAAS,0CAA2F;AACzG,aAAO,+BAAiB;AAAA,IACtB,CAAC,qBAAiB,iCAAe,8BAAgB,GAAG,CAAC,CAAC;AAAA,IACtD,CAAC,UAAM,4BAAc,CAAC;AAAA,IACtB,CAAC,aAAS,4BAAc,CAAC;AAAA,EAC3B,CAAC;AACH;AAEO,SAAS,wCAGd;AACA,aAAO;AAAA,IACL,wCAAwC;AAAA,IACxC,wCAAwC;AAAA,EAC1C;AACF;AA4BA,eAAsB,kCAapB,OAYA,QAeA;AAEA,QAAM,iBAAiB,QAAQ,kBAAkB;AAGjD,QAAM,mBAAmB;AAAA,IACvB,QAAQ,EAAE,OAAO,MAAM,UAAU,MAAM,YAAY,MAAM;AAAA,IACzD,QAAQ,EAAE,OAAO,MAAM,UAAU,MAAM,YAAY,MAAM;AAAA,IACzD,UAAU,EAAE,OAAO,MAAM,YAAY,MAAM,YAAY,KAAK;AAAA,IAC5D,eAAe,EAAE,OAAO,MAAM,iBAAiB,MAAM,YAAY,KAAK;AAAA,IACtE,WAAW,EAAE,OAAO,MAAM,aAAa,MAAM,YAAY,KAAK;AAAA,IAC9D,SAAS,EAAE,OAAO,MAAM,WAAW,MAAM,YAAY,KAAK;AAAA,IAC1D,MAAM,EAAE,OAAO,MAAM,QAAQ,MAAM,YAAY,MAAM;AAAA,IACrD,QAAQ,EAAE,OAAO,MAAM,UAAU,MAAM,YAAY,KAAK;AAAA,IACxD,WAAW,EAAE,OAAO,MAAM,aAAa,MAAM,YAAY,KAAK;AAAA,IAC9D,eAAe,EAAE,OAAO,MAAM,iBAAiB,MAAM,YAAY,MAAM;AAAA,EACzE;AACA,QAAM,WAAW;AAMjB,QAAM,OAAO,EAAE,GAAG,MAAM;AAGxB,MAAI,CAAC,SAAS,OAAO,OAAO;AAC1B,aAAS,OAAO,QAAQ,UAAM,uCAAyB;AAAA,MACrD;AAAA,MACA,OAAO;AAAA,YACL,8BAAgB,EAAE,OAAO,IAAI,WAAW,CAAC,KAAK,IAAI,KAAK,KAAK,KAAK,GAAG,CAAC,CAAC;AAAA,MACxE;AAAA,IACF,CAAC;AAAA,EACH;AACA,MAAI,CAAC,SAAS,OAAO,OAAO;AAC1B,aAAS,OAAO,QAAQ,UAAM,uCAAyB;AAAA,MACrD;AAAA,MACA,OAAO;AAAA,YACL,8BAAgB,EAAE;AAAA,UAChB,IAAI,WAAW;AAAA,YACb;AAAA,YAAI;AAAA,YAAK;AAAA,YAAK;AAAA,YAAK;AAAA,YAAK;AAAA,YAAK;AAAA,YAAK;AAAA,YAAI;AAAA,YAAI;AAAA,YAAK;AAAA,YAAK;AAAA,YAAK;AAAA,YAAK;AAAA,UAChE,CAAC;AAAA,QACH;AAAA,MACF;AAAA,IACF,CAAC;AAAA,EACH;AACA,MAAI,CAAC,SAAS,QAAQ,OAAO;AAC3B,aAAS,QAAQ,QAAQ,UAAM,uCAAyB;AAAA,MACtD;AAAA,MACA,OAAO;AAAA,YACL,8BAAgB,EAAE;AAAA,UAChB,IAAI,WAAW,CAAC,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,CAAC;AAAA,QACnD;AAAA,YACA,gCAAkB,EAAE,OAAO,cAAc,SAAS,KAAK,KAAK,CAAC;AAAA,YAC7D,gCAAkB,EAAE,OAAO,cAAc,SAAS,UAAU,KAAK,CAAC;AAAA,MACpE;AAAA,IACF,CAAC;AAAA,EACH;AACA,MAAI,CAAC,SAAS,OAAO,OAAO;AAC1B,aAAS,OAAO,QAAQ,UAAM,uCAAyB;AAAA,MACrD;AAAA,MACA,OAAO;AAAA,YACL,8BAAgB,EAAE,OAAO,IAAI,WAAW,CAAC,IAAI,KAAK,KAAK,KAAK,IAAI,GAAG,CAAC,CAAC;AAAA,YACrE,gCAAkB,EAAE,OAAO,cAAc,SAAS,QAAQ,KAAK,CAAC;AAAA,YAChE,4BAAc,EAAE,OAAO,WAAW,KAAK,EAAE,CAAC;AAAA,MAC5C;AAAA,IACF,CAAC;AAAA,EACH;AACA,MAAI,CAAC,SAAS,cAAc,OAAO;AACjC,aAAS,cAAc,QACrB;AAAA,EACJ;AAEA,QAAM,iBAAiB,sBAAsB,gBAAgB,WAAW;AACxE,SAAO,OAAO,OAAO;AAAA,IACnB,UAAU;AAAA,MACR,eAAe,SAAS,MAAM;AAAA,MAC9B,eAAe,SAAS,MAAM;AAAA,MAC9B,eAAe,SAAS,QAAQ;AAAA,MAChC,eAAe,SAAS,aAAa;AAAA,MACrC,eAAe,SAAS,SAAS;AAAA,MACjC,eAAe,SAAS,OAAO;AAAA,MAC/B,eAAe,SAAS,IAAI;AAAA,MAC5B,eAAe,SAAS,MAAM;AAAA,MAC9B,eAAe,SAAS,SAAS;AAAA,MACjC,eAAe,SAAS,aAAa;AAAA,IACvC;AAAA,IACA,MAAM,wCAAwC,EAAE;AAAA,MAC9C;AAAA,IACF;AAAA,IACA;AAAA,EACF,CAYC;AACH;AA4BO,SAAS,6BAad,OAYA,QAaA;AAEA,QAAM,iBAAiB,QAAQ,kBAAkB;AAGjD,QAAM,mBAAmB;AAAA,IACvB,QAAQ,EAAE,OAAO,MAAM,UAAU,MAAM,YAAY,MAAM;AAAA,IACzD,QAAQ,EAAE,OAAO,MAAM,UAAU,MAAM,YAAY,MAAM;AAAA,IACzD,UAAU,EAAE,OAAO,MAAM,YAAY,MAAM,YAAY,KAAK;AAAA,IAC5D,eAAe,EAAE,OAAO,MAAM,iBAAiB,MAAM,YAAY,KAAK;AAAA,IACtE,WAAW,EAAE,OAAO,MAAM,aAAa,MAAM,YAAY,KAAK;AAAA,IAC9D,SAAS,EAAE,OAAO,MAAM,WAAW,MAAM,YAAY,KAAK;AAAA,IAC1D,MAAM,EAAE,OAAO,MAAM,QAAQ,MAAM,YAAY,MAAM;AAAA,IACrD,QAAQ,EAAE,OAAO,MAAM,UAAU,MAAM,YAAY,KAAK;AAAA,IACxD,WAAW,EAAE,OAAO,MAAM,aAAa,MAAM,YAAY,KAAK;AAAA,IAC9D,eAAe,EAAE,OAAO,MAAM,iBAAiB,MAAM,YAAY,MAAM;AAAA,EACzE;AACA,QAAM,WAAW;AAMjB,QAAM,OAAO,EAAE,GAAG,MAAM;AAGxB,MAAI,CAAC,SAAS,cAAc,OAAO;AACjC,aAAS,cAAc,QACrB;AAAA,EACJ;AAEA,QAAM,iBAAiB,sBAAsB,gBAAgB,WAAW;AACxE,SAAO,OAAO,OAAO;AAAA,IACnB,UAAU;AAAA,MACR,eAAe,SAAS,MAAM;AAAA,MAC9B,eAAe,SAAS,MAAM;AAAA,MAC9B,eAAe,SAAS,QAAQ;AAAA,MAChC,eAAe,SAAS,aAAa;AAAA,MACrC,eAAe,SAAS,SAAS;AAAA,MACjC,eAAe,SAAS,OAAO;AAAA,MAC/B,eAAe,SAAS,IAAI;AAAA,MAC5B,eAAe,SAAS,MAAM;AAAA,MAC9B,eAAe,SAAS,SAAS;AAAA,MACjC,eAAe,SAAS,aAAa;AAAA,IACvC;AAAA,IACA,MAAM,wCAAwC,EAAE;AAAA,MAC9C;AAAA,IACF;AAAA,IACA;AAAA,EACF,CAYC;AACH;AAsBO,SAAS,+BAId,aAG0D;AAC1D,MAAI,YAAY,SAAS,SAAS,IAAI;AAEpC,UAAM,IAAI,MAAM,qBAAqB;AAAA,EACvC;AACA,MAAI,eAAe;AACnB,QAAM,iBAAiB,MAAM;AAC3B,UAAM,cAAe,YAAY,SAA2B,YAAY;AACxE,oBAAgB;AAChB,WAAO;AAAA,EACT;AACA,QAAM,yBAAyB,MAAM;AACnC,UAAM,cAAc,eAAe;AACnC,WAAO,YAAY,YAAY,yBAC3B,SACA;AAAA,EACN;AACA,SAAO;AAAA,IACL,gBAAgB,YAAY;AAAA,IAC5B,UAAU;AAAA,MACR,QAAQ,eAAe;AAAA,MACvB,QAAQ,eAAe;AAAA,MACvB,UAAU,eAAe;AAAA,MACzB,eAAe,eAAe;AAAA,MAC9B,WAAW,uBAAuB;AAAA,MAClC,SAAS,eAAe;AAAA,MACxB,MAAM,eAAe;AAAA,MACrB,QAAQ,eAAe;AAAA,MACvB,WAAW,eAAe;AAAA,MAC1B,eAAe,eAAe;AAAA,IAChC;AAAA,IACA,MAAM,wCAAwC,EAAE,OAAO,YAAY,IAAI;AAAA,EACzE;AACF;AAaA,eAAsB,+BACpB,OACA;AACA,SAAO,MAAM,kCAAkC;AAAA,IAC7C,eAAe,MAAM,iBAAiB;AAAA,IACtC,UAAU;AAAA,IACV,SAAS,MAAM;AAAA,IACf,QAAQ,MAAM;AAAA,IACd,MAAM,MAAM;AAAA,IACZ,WAAW,MAAM;AAAA,IACjB,IAAI,MAAM,MAAM;AAAA,IAChB,OAAO,MAAM,SAAS;AAAA,EACxB,CAAC;AACH;;;AC7gBA,IAAAC,eA2BO;AASA,IAAM,+BAA+B,IAAI,WAAW;AAAA,EACzD;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AACnC,CAAC;AAEM,SAAS,qCAAqC;AACnD,aAAO,iCAAe,8BAAgB,GAAG,CAAC,EAAE;AAAA,IAC1C;AAAA,EACF;AACF;AA4EO,SAAS,yCAA6F;AAC3G,aAAO;AAAA,QACL,+BAAiB;AAAA,MACf,CAAC,qBAAiB,iCAAe,8BAAgB,GAAG,CAAC,CAAC;AAAA,MACtD,CAAC,cAAU,4BAAc,CAAC;AAAA,IAC5B,CAAC;AAAA,IACD,CAAC,WAAW,EAAE,GAAG,OAAO,eAAe,6BAA6B;AAAA,EACtE;AACF;AAEO,SAAS,yCAAyF;AACvG,aAAO,+BAAiB;AAAA,IACtB,CAAC,qBAAiB,iCAAe,8BAAgB,GAAG,CAAC,CAAC;AAAA,IACtD,CAAC,cAAU,4BAAc,CAAC;AAAA,EAC5B,CAAC;AACH;AAEO,SAAS,uCAGd;AACA,aAAO;AAAA,IACL,uCAAuC;AAAA,IACvC,uCAAuC;AAAA,EACzC;AACF;AAiCA,eAAsB,iCAgBpB,OAeA,QAkBA;AAEA,QAAM,iBAAiB,QAAQ,kBAAkB;AAGjD,QAAM,mBAAmB;AAAA,IACvB,QAAQ,EAAE,OAAO,MAAM,UAAU,MAAM,YAAY,MAAM;AAAA,IACzD,QAAQ,EAAE,OAAO,MAAM,UAAU,MAAM,YAAY,MAAM;AAAA,IACzD,UAAU,EAAE,OAAO,MAAM,YAAY,MAAM,YAAY,KAAK;AAAA,IAC5D,eAAe,EAAE,OAAO,MAAM,iBAAiB,MAAM,YAAY,KAAK;AAAA,IACtE,WAAW,EAAE,OAAO,MAAM,aAAa,MAAM,YAAY,KAAK;AAAA,IAC9D,oBAAoB;AAAA,MAClB,OAAO,MAAM,sBAAsB;AAAA,MACnC,YAAY;AAAA,IACd;AAAA,IACA,yBAAyB;AAAA,MACvB,OAAO,MAAM,2BAA2B;AAAA,MACxC,YAAY;AAAA,IACd;AAAA,IACA,SAAS,EAAE,OAAO,MAAM,WAAW,MAAM,YAAY,KAAK;AAAA,IAC1D,MAAM,EAAE,OAAO,MAAM,QAAQ,MAAM,YAAY,MAAM;AAAA,IACrD,WAAW,EAAE,OAAO,MAAM,aAAa,MAAM,YAAY,KAAK;AAAA,IAC9D,cAAc,EAAE,OAAO,MAAM,gBAAgB,MAAM,YAAY,MAAM;AAAA,IACrE,wBAAwB;AAAA,MACtB,OAAO,MAAM,0BAA0B;AAAA,MACvC,YAAY;AAAA,IACd;AAAA,IACA,eAAe,EAAE,OAAO,MAAM,iBAAiB,MAAM,YAAY,MAAM;AAAA,EACzE;AACA,QAAM,WAAW;AAMjB,QAAM,OAAO,EAAE,GAAG,MAAM;AAGxB,MAAI,CAAC,SAAS,OAAO,OAAO;AAC1B,aAAS,OAAO,QAAQ,UAAM,uCAAyB;AAAA,MACrD;AAAA,MACA,OAAO;AAAA,YACL,8BAAgB,EAAE,OAAO,IAAI,WAAW,CAAC,KAAK,IAAI,KAAK,KAAK,KAAK,GAAG,CAAC,CAAC;AAAA,MACxE;AAAA,IACF,CAAC;AAAA,EACH;AACA,MAAI,CAAC,SAAS,OAAO,OAAO;AAC1B,aAAS,OAAO,QAAQ,UAAM,uCAAyB;AAAA,MACrD;AAAA,MACA,OAAO;AAAA,YACL,8BAAgB,EAAE;AAAA,UAChB,IAAI,WAAW;AAAA,YACb;AAAA,YAAI;AAAA,YAAK;AAAA,YAAK;AAAA,YAAK;AAAA,YAAK;AAAA,YAAK;AAAA,YAAK;AAAA,YAAI;AAAA,YAAI;AAAA,YAAK;AAAA,YAAK;AAAA,YAAK;AAAA,YAAK;AAAA,UAChE,CAAC;AAAA,QACH;AAAA,MACF;AAAA,IACF,CAAC;AAAA,EACH;AACA,MAAI,CAAC,SAAS,cAAc,OAAO;AACjC,aAAS,cAAc,QAAQ;AAAA,EACjC;AACA,MAAI,CAAC,SAAS,SAAS,OAAO;AAC5B,aAAS,SAAS,QAAQ;AAAA,EAC5B;AAEA,MAAI,CAAC,SAAS,QAAQ,OAAO;AAC3B,aAAS,QAAQ,QAAQ,UAAM,uCAAyB;AAAA,MACtD;AAAA,MACA,OAAO;AAAA,YACL,8BAAgB,EAAE;AAAA,UAChB,IAAI,WAAW,CAAC,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,CAAC;AAAA,QACnD;AAAA,YACA,gCAAkB,EAAE,OAAO,cAAc,SAAS,KAAK,KAAK,CAAC;AAAA,YAC7D,gCAAkB,EAAE,OAAO,cAAc,SAAS,UAAU,KAAK,CAAC;AAAA,MACpE;AAAA,IACF,CAAC;AAAA,EACH;AACA,MAAI,CAAC,SAAS,aAAa,OAAO;AAChC,aAAS,aAAa,QACpB;AAAA,EACJ;AACA,MAAI,CAAC,SAAS,wBAAwB,OAAO;AAC3C,aAAS,wBAAwB,QAAQ,UAAM,uCAAyB;AAAA,MACtE,gBACE;AAAA,MACF,OAAO;AAAA,YACL,gCAAkB,EAAE,OAAO,cAAc,SAAS,QAAQ,KAAK,CAAC;AAAA,YAChE,gCAAkB,EAAE,OAAO,cAAc,SAAS,aAAa,KAAK,CAAC;AAAA,YACrE,gCAAkB,EAAE,OAAO,cAAc,SAAS,KAAK,KAAK,CAAC;AAAA,MAC/D;AAAA,IACF,CAAC;AAAA,EACH;AACA,MAAI,CAAC,SAAS,uBAAuB,OAAO;AAC1C,aAAS,uBAAuB,QAC9B;AAAA,EACJ;AACA,MAAI,CAAC,SAAS,cAAc,OAAO;AACjC,aAAS,cAAc,QACrB;AAAA,EACJ;AAEA,QAAM,iBAAiB,sBAAsB,gBAAgB,WAAW;AACxE,SAAO,OAAO,OAAO;AAAA,IACnB,UAAU;AAAA,MACR,eAAe,SAAS,MAAM;AAAA,MAC9B,eAAe,SAAS,MAAM;AAAA,MAC9B,eAAe,SAAS,QAAQ;AAAA,MAChC,eAAe,SAAS,aAAa;AAAA,MACrC,eAAe,SAAS,SAAS;AAAA,MACjC,eAAe,SAAS,kBAAkB;AAAA,MAC1C,eAAe,SAAS,uBAAuB;AAAA,MAC/C,eAAe,SAAS,OAAO;AAAA,MAC/B,eAAe,SAAS,IAAI;AAAA,MAC5B,eAAe,SAAS,SAAS;AAAA,MACjC,eAAe,SAAS,YAAY;AAAA,MACpC,eAAe,SAAS,sBAAsB;AAAA,MAC9C,eAAe,SAAS,aAAa;AAAA,IACvC;AAAA,IACA,MAAM,uCAAuC,EAAE;AAAA,MAC7C;AAAA,IACF;AAAA,IACA;AAAA,EACF,CAeC;AACH;AAiCO,SAAS,4BAgBd,OAeA,QAgBA;AAEA,QAAM,iBAAiB,QAAQ,kBAAkB;AAGjD,QAAM,mBAAmB;AAAA,IACvB,QAAQ,EAAE,OAAO,MAAM,UAAU,MAAM,YAAY,MAAM;AAAA,IACzD,QAAQ,EAAE,OAAO,MAAM,UAAU,MAAM,YAAY,MAAM;AAAA,IACzD,UAAU,EAAE,OAAO,MAAM,YAAY,MAAM,YAAY,KAAK;AAAA,IAC5D,eAAe,EAAE,OAAO,MAAM,iBAAiB,MAAM,YAAY,KAAK;AAAA,IACtE,WAAW,EAAE,OAAO,MAAM,aAAa,MAAM,YAAY,KAAK;AAAA,IAC9D,oBAAoB;AAAA,MAClB,OAAO,MAAM,sBAAsB;AAAA,MACnC,YAAY;AAAA,IACd;AAAA,IACA,yBAAyB;AAAA,MACvB,OAAO,MAAM,2BAA2B;AAAA,MACxC,YAAY;AAAA,IACd;AAAA,IACA,SAAS,EAAE,OAAO,MAAM,WAAW,MAAM,YAAY,KAAK;AAAA,IAC1D,MAAM,EAAE,OAAO,MAAM,QAAQ,MAAM,YAAY,MAAM;AAAA,IACrD,WAAW,EAAE,OAAO,MAAM,aAAa,MAAM,YAAY,KAAK;AAAA,IAC9D,cAAc,EAAE,OAAO,MAAM,gBAAgB,MAAM,YAAY,MAAM;AAAA,IACrE,wBAAwB;AAAA,MACtB,OAAO,MAAM,0BAA0B;AAAA,MACvC,YAAY;AAAA,IACd;AAAA,IACA,eAAe,EAAE,OAAO,MAAM,iBAAiB,MAAM,YAAY,MAAM;AAAA,EACzE;AACA,QAAM,WAAW;AAMjB,QAAM,OAAO,EAAE,GAAG,MAAM;AAGxB,MAAI,CAAC,SAAS,aAAa,OAAO;AAChC,aAAS,aAAa,QACpB;AAAA,EACJ;AACA,MAAI,CAAC,SAAS,uBAAuB,OAAO;AAC1C,aAAS,uBAAuB,QAC9B;AAAA,EACJ;AACA,MAAI,CAAC,SAAS,cAAc,OAAO;AACjC,aAAS,cAAc,QACrB;AAAA,EACJ;AAEA,QAAM,iBAAiB,sBAAsB,gBAAgB,WAAW;AACxE,SAAO,OAAO,OAAO;AAAA,IACnB,UAAU;AAAA,MACR,eAAe,SAAS,MAAM;AAAA,MAC9B,eAAe,SAAS,MAAM;AAAA,MAC9B,eAAe,SAAS,QAAQ;AAAA,MAChC,eAAe,SAAS,aAAa;AAAA,MACrC,eAAe,SAAS,SAAS;AAAA,MACjC,eAAe,SAAS,kBAAkB;AAAA,MAC1C,eAAe,SAAS,uBAAuB;AAAA,MAC/C,eAAe,SAAS,OAAO;AAAA,MAC/B,eAAe,SAAS,IAAI;AAAA,MAC5B,eAAe,SAAS,SAAS;AAAA,MACjC,eAAe,SAAS,YAAY;AAAA,MACpC,eAAe,SAAS,sBAAsB;AAAA,MAC9C,eAAe,SAAS,aAAa;AAAA,IACvC;AAAA,IACA,MAAM,uCAAuC,EAAE;AAAA,MAC7C;AAAA,IACF;AAAA,IACA;AAAA,EACF,CAeC;AACH;AAyBO,SAAS,8BAId,aAGyD;AACzD,MAAI,YAAY,SAAS,SAAS,IAAI;AAEpC,UAAM,IAAI,MAAM,qBAAqB;AAAA,EACvC;AACA,MAAI,eAAe;AACnB,QAAM,iBAAiB,MAAM;AAC3B,UAAM,cAAe,YAAY,SAA2B,YAAY;AACxE,oBAAgB;AAChB,WAAO;AAAA,EACT;AACA,QAAM,yBAAyB,MAAM;AACnC,UAAM,cAAc,eAAe;AACnC,WAAO,YAAY,YAAY,yBAC3B,SACA;AAAA,EACN;AACA,SAAO;AAAA,IACL,gBAAgB,YAAY;AAAA,IAC5B,UAAU;AAAA,MACR,QAAQ,eAAe;AAAA,MACvB,QAAQ,eAAe;AAAA,MACvB,UAAU,eAAe;AAAA,MACzB,eAAe,eAAe;AAAA,MAC9B,WAAW,uBAAuB;AAAA,MAClC,oBAAoB,eAAe;AAAA,MACnC,yBAAyB,eAAe;AAAA,MACxC,SAAS,eAAe;AAAA,MACxB,MAAM,eAAe;AAAA,MACrB,WAAW,eAAe;AAAA,MAC1B,cAAc,eAAe;AAAA,MAC7B,wBAAwB,eAAe;AAAA,MACvC,eAAe,eAAe;AAAA,IAChC;AAAA,IACA,MAAM,uCAAuC,EAAE,OAAO,YAAY,IAAI;AAAA,EACxE;AACF;;;ACzlBA,IAAAC,eAiCO;;;ACjCP,IAAAC,eASO;AAcA,SAAS,8BAAuE;AACrF,aAAO,+BAAiB;AAAA,IACtB,CAAC,gBAAY,4BAAc,CAAC;AAAA,IAC5B,CAAC,kBAAc,4BAAc,CAAC;AAAA,IAC9B,CAAC,mBAAe,4BAAc,CAAC;AAAA,EACjC,CAAC;AACH;AAEO,SAAS,8BAAmE;AACjF,aAAO,+BAAiB;AAAA,IACtB,CAAC,gBAAY,4BAAc,CAAC;AAAA,IAC5B,CAAC,kBAAc,4BAAc,CAAC;AAAA,IAC9B,CAAC,mBAAe,4BAAc,CAAC;AAAA,EACjC,CAAC;AACH;AAEO,SAAS,4BAGd;AACA,aAAO;AAAA,IACL,4BAA4B;AAAA,IAC5B,4BAA4B;AAAA,EAC9B;AACF;;;AC/CA,IAAAC,eAcO;AAgBA,SAAS,2BAAiE;AAC/E,aAAO,+BAAiB;AAAA,IACtB,CAAC,eAAW,gCAAkB,CAAC;AAAA,IAC/B,CAAC,iBAAa,gCAAkB,CAAC;AAAA,IACjC,CAAC,mBAAe,4BAAc,CAAC;AAAA,IAC/B,CAAC,iBAAa,4BAAc,CAAC;AAAA,EAC/B,CAAC;AACH;AAEO,SAAS,2BAA6D;AAC3E,aAAO,+BAAiB;AAAA,IACtB,CAAC,eAAW,gCAAkB,CAAC;AAAA,IAC/B,CAAC,iBAAa,gCAAkB,CAAC;AAAA,IACjC,CAAC,mBAAe,4BAAc,CAAC;AAAA,IAC/B,CAAC,iBAAa,4BAAc,CAAC;AAAA,EAC/B,CAAC;AACH;AAEO,SAAS,yBAGd;AACA,aAAO,2BAAa,yBAAyB,GAAG,yBAAyB,CAAC;AAC5E;;;ACrDA,IAAAC,eAYO;AAcA,SAAS,0BAA+D;AAC7E,aAAO,+BAAiB;AAAA,IACtB,CAAC,eAAW,gCAAkB,CAAC;AAAA,IAC/B,CAAC,iBAAa,gCAAkB,CAAC;AAAA,IACjC,CAAC,iBAAa,4BAAc,CAAC;AAAA,EAC/B,CAAC;AACH;AAEO,SAAS,0BAA2D;AACzE,aAAO,+BAAiB;AAAA,IACtB,CAAC,eAAW,gCAAkB,CAAC;AAAA,IAC/B,CAAC,iBAAa,gCAAkB,CAAC;AAAA,IACjC,CAAC,iBAAa,4BAAc,CAAC;AAAA,EAC/B,CAAC;AACH;AAEO,SAAS,wBAGd;AACA,aAAO,2BAAa,wBAAwB,GAAG,wBAAwB,CAAC;AAC1E;;;AC/CA,IAAAC,eAYO;AAWA,SAAS,6BAAqE;AACnF,aAAO,+BAAiB;AAAA,IACtB,CAAC,eAAW,gCAAkB,CAAC;AAAA,IAC/B,CAAC,iBAAa,gCAAkB,CAAC;AAAA,IACjC,CAAC,gBAAY,gCAAkB,CAAC;AAAA,IAChC,CAAC,mBAAe,2BAAa,CAAC;AAAA,EAChC,CAAC;AACH;AAEO,SAAS,6BAAiE;AAC/E,aAAO,+BAAiB;AAAA,IACtB,CAAC,eAAW,gCAAkB,CAAC;AAAA,IAC/B,CAAC,iBAAa,gCAAkB,CAAC;AAAA,IACjC,CAAC,gBAAY,gCAAkB,CAAC;AAAA,IAChC,CAAC,mBAAe,2BAAa,CAAC;AAAA,EAChC,CAAC;AACH;AAEO,SAAS,2BAGd;AACA,aAAO;AAAA,IACL,2BAA2B;AAAA,IAC3B,2BAA2B;AAAA,EAC7B;AACF;;;ACjDA,IAAAC,eAiBO;AAwBA,SAAS,+BAAyE;AACvF,aAAO,+BAAiB;AAAA,IACtB,CAAC,eAAW,gCAAkB,CAAC;AAAA,IAC/B,CAAC,YAAQ,gCAAkB,CAAC;AAAA,IAC5B,CAAC,iBAAa,gCAAkB,CAAC;AAAA,IACjC,CAAC,kBAAc,gCAAkB,CAAC;AAAA,IAClC,CAAC,kBAAc,iCAAe,8BAAgB,GAAG,EAAE,CAAC;AAAA,IACpD,CAAC,iBAAa,4BAAc,CAAC;AAAA,IAC7B,CAAC,eAAW,4BAAc,CAAC;AAAA,IAC3B,CAAC,iBAAa,4BAAc,CAAC;AAAA,EAC/B,CAAC;AACH;AAEO,SAAS,+BAAqE;AACnF,aAAO,+BAAiB;AAAA,IACtB,CAAC,eAAW,gCAAkB,CAAC;AAAA,IAC/B,CAAC,YAAQ,gCAAkB,CAAC;AAAA,IAC5B,CAAC,iBAAa,gCAAkB,CAAC;AAAA,IACjC,CAAC,kBAAc,gCAAkB,CAAC;AAAA,IAClC,CAAC,kBAAc,iCAAe,8BAAgB,GAAG,EAAE,CAAC;AAAA,IACpD,CAAC,iBAAa,4BAAc,CAAC;AAAA,IAC7B,CAAC,eAAW,4BAAc,CAAC;AAAA,IAC3B,CAAC,iBAAa,4BAAc,CAAC;AAAA,EAC/B,CAAC;AACH;AAEO,SAAS,6BAGd;AACA,aAAO;AAAA,IACL,6BAA6B;AAAA,IAC7B,6BAA6B;AAAA,EAC/B;AACF;;;AC3EA,IAAAC,eAUO;AAMA,SAAS,2BAAiE;AAC/E,aAAO,+BAAiB;AAAA,IACtB,CAAC,eAAW,gCAAkB,CAAC;AAAA,IAC/B,CAAC,iBAAa,gCAAkB,CAAC;AAAA,EACnC,CAAC;AACH;AAEO,SAAS,2BAA6D;AAC3E,aAAO,+BAAiB;AAAA,IACtB,CAAC,eAAW,gCAAkB,CAAC;AAAA,IAC/B,CAAC,iBAAa,gCAAkB,CAAC;AAAA,EACnC,CAAC;AACH;AAEO,SAAS,yBAGd;AACA,aAAO,2BAAa,yBAAyB,GAAG,yBAAyB,CAAC;AAC5E;;;ACnCA,IAAAC,eASO;AAcA,SAAS,+BAAyE;AACvF,aAAO,+BAAiB;AAAA,IACtB,CAAC,eAAW,4BAAc,CAAC;AAAA,IAC3B,CAAC,eAAW,4BAAc,CAAC;AAAA,IAC3B,CAAC,mBAAe,4BAAc,CAAC;AAAA,EACjC,CAAC;AACH;AAEO,SAAS,+BAAqE;AACnF,aAAO,+BAAiB;AAAA,IACtB,CAAC,eAAW,4BAAc,CAAC;AAAA,IAC3B,CAAC,eAAW,4BAAc,CAAC;AAAA,IAC3B,CAAC,mBAAe,4BAAc,CAAC;AAAA,EACjC,CAAC;AACH;AAEO,SAAS,6BAGd;AACA,aAAO;AAAA,IACL,6BAA6B;AAAA,IAC7B,6BAA6B;AAAA,EAC/B;AACF;;;AC/CA,IAAAC,eASO;AAcA,SAAS,iCAA6E;AAC3F,aAAO,+BAAiB;AAAA,IACtB,CAAC,mBAAe,4BAAc,CAAC;AAAA,IAC/B,CAAC,kBAAc,4BAAc,CAAC;AAAA,IAC9B,CAAC,wBAAoB,4BAAc,CAAC;AAAA,EACtC,CAAC;AACH;AAEO,SAAS,iCAAyE;AACvF,aAAO,+BAAiB;AAAA,IACtB,CAAC,mBAAe,4BAAc,CAAC;AAAA,IAC/B,CAAC,kBAAc,4BAAc,CAAC;AAAA,IAC9B,CAAC,wBAAoB,4BAAc,CAAC;AAAA,EACtC,CAAC;AACH;AAEO,SAAS,+BAGd;AACA,aAAO;AAAA,IACL,+BAA+B;AAAA,IAC/B,+BAA+B;AAAA,EACjC;AACF;;;AC/CA,IAAAC,eAaO;AAcA,SAAS,0BAAsD;AACpE,aAAO,+BAAiB;AAAA,IACtB,CAAC,mBAAe,4BAAc,CAAC;AAAA,IAC/B,CAAC,iBAAa,mCAAiB,4BAAc,CAAC,CAAC;AAAA,IAC/C,CAAC,gBAAY,4BAAc,CAAC;AAAA,EAC9B,CAAC;AACH;AAEO,SAAS,0BAAkD;AAChE,aAAO,+BAAiB;AAAA,IACtB,CAAC,mBAAe,4BAAc,CAAC;AAAA,IAC/B,CAAC,iBAAa,mCAAiB,4BAAc,CAAC,CAAC;AAAA,IAC/C,CAAC,gBAAY,4BAAc,CAAC;AAAA,EAC9B,CAAC;AACH;AAEO,SAAS,wBAGd;AACA,aAAO,2BAAa,wBAAwB,GAAG,wBAAwB,CAAC;AAC1E;;;AChDA,IAAAC,eAUO;AAUA,SAAS,2BAAiE;AAC/E,aAAO,+BAAiB;AAAA,IACtB,CAAC,eAAW,gCAAkB,CAAC;AAAA,IAC/B,CAAC,cAAU,gCAAkB,CAAC;AAAA,IAC9B,CAAC,iBAAa,gCAAkB,CAAC;AAAA,EACnC,CAAC;AACH;AAEO,SAAS,2BAA6D;AAC3E,aAAO,+BAAiB;AAAA,IACtB,CAAC,eAAW,gCAAkB,CAAC;AAAA,IAC/B,CAAC,cAAU,gCAAkB,CAAC;AAAA,IAC9B,CAAC,iBAAa,gCAAkB,CAAC;AAAA,EACnC,CAAC;AACH;AAEO,SAAS,yBAGd;AACA,aAAO,2BAAa,yBAAyB,GAAG,yBAAyB,CAAC;AAC5E;;;ACzCA,IAAAC,eAcO;AAgBA,SAAS,gCAA2E;AACzF,aAAO,+BAAiB;AAAA,IACtB,CAAC,eAAW,gCAAkB,CAAC;AAAA,IAC/B,CAAC,cAAU,gCAAkB,CAAC;AAAA,IAC9B,CAAC,gBAAY,4BAAc,CAAC;AAAA,IAC5B,CAAC,iBAAa,4BAAc,CAAC;AAAA,EAC/B,CAAC;AACH;AAEO,SAAS,gCAAuE;AACrF,aAAO,+BAAiB;AAAA,IACtB,CAAC,eAAW,gCAAkB,CAAC;AAAA,IAC/B,CAAC,cAAU,gCAAkB,CAAC;AAAA,IAC9B,CAAC,gBAAY,4BAAc,CAAC;AAAA,IAC5B,CAAC,iBAAa,4BAAc,CAAC;AAAA,EAC/B,CAAC;AACH;AAEO,SAAS,8BAGd;AACA,aAAO;AAAA,IACL,8BAA8B;AAAA,IAC9B,8BAA8B;AAAA,EAChC;AACF;;;ACxDA,IAAAC,eAkBO;AA4BA,SAAS,kCAAsE;AACpF,aAAO,+BAAiB;AAAA,IACtB,CAAC,kBAAc,mCAAiB,iCAAe,8BAAgB,GAAG,EAAE,CAAC,CAAC;AAAA,IACtE,CAAC,kBAAkB,6BAA6B,CAAC;AAAA,IACjD,CAAC,gBAAgB,+BAA+B,CAAC;AAAA,IACjD,CAAC,uBAAmB,4BAAc,CAAC;AAAA,IACnC,CAAC,sBAAkB,4BAAc,CAAC;AAAA,EACpC,CAAC;AACH;AAEO,SAAS,kCAAkE;AAChF,aAAO,+BAAiB;AAAA,IACtB,CAAC,kBAAc,mCAAiB,iCAAe,8BAAgB,GAAG,EAAE,CAAC,CAAC;AAAA,IACtE,CAAC,kBAAkB,6BAA6B,CAAC;AAAA,IACjD,CAAC,gBAAgB,+BAA+B,CAAC;AAAA,IACjD,CAAC,uBAAmB,4BAAc,CAAC;AAAA,IACnC,CAAC,sBAAkB,4BAAc,CAAC;AAAA,EACpC,CAAC;AACH;AAEO,SAAS,gCAGd;AACA,aAAO;AAAA,IACL,gCAAgC;AAAA,IAChC,gCAAgC;AAAA,EAClC;AACF;;;AC1EA,IAAAC,eAYO;AAgBA,SAAS,8BAAuE;AACrF,aAAO,+BAAiB;AAAA,IACtB,CAAC,eAAW,gCAAkB,CAAC;AAAA,IAC/B,CAAC,iBAAa,gCAAkB,CAAC;AAAA,IACjC,CAAC,gBAAY,gCAAkB,CAAC;AAAA,IAChC,CAAC,iBAAa,4BAAc,CAAC;AAAA,EAC/B,CAAC;AACH;AAEO,SAAS,8BAAmE;AACjF,aAAO,+BAAiB;AAAA,IACtB,CAAC,eAAW,gCAAkB,CAAC;AAAA,IAC/B,CAAC,iBAAa,gCAAkB,CAAC;AAAA,IACjC,CAAC,gBAAY,gCAAkB,CAAC;AAAA,IAChC,CAAC,iBAAa,4BAAc,CAAC;AAAA,EAC/B,CAAC;AACH;AAEO,SAAS,4BAGd;AACA,aAAO;AAAA,IACL,4BAA4B;AAAA,IAC5B,4BAA4B;AAAA,EAC9B;AACF;;;ACtDA,IAAAC,eAcO;AAkBA,SAAS,4BAAmE;AACjF,aAAO,+BAAiB;AAAA,IACtB,CAAC,eAAW,gCAAkB,CAAC;AAAA,IAC/B,CAAC,cAAU,4BAAc,CAAC;AAAA,IAC1B,CAAC,iBAAa,4BAAc,CAAC;AAAA,IAC7B,CAAC,iBAAa,gCAAkB,CAAC;AAAA,IACjC,CAAC,iBAAa,4BAAc,CAAC;AAAA,EAC/B,CAAC;AACH;AAEO,SAAS,4BAA+D;AAC7E,aAAO,+BAAiB;AAAA,IACtB,CAAC,eAAW,gCAAkB,CAAC;AAAA,IAC/B,CAAC,cAAU,4BAAc,CAAC;AAAA,IAC1B,CAAC,iBAAa,4BAAc,CAAC;AAAA,IAC7B,CAAC,iBAAa,gCAAkB,CAAC;AAAA,IACjC,CAAC,iBAAa,4BAAc,CAAC;AAAA,EAC/B,CAAC;AACH;AAEO,SAAS,0BAGd;AACA,aAAO,2BAAa,0BAA0B,GAAG,0BAA0B,CAAC;AAC9E;;;ACzDA,IAAAC,eAYO;AAcA,SAAS,2BAAiE;AAC/E,aAAO,+BAAiB;AAAA,IACtB,CAAC,eAAW,gCAAkB,CAAC;AAAA,IAC/B,CAAC,iBAAa,gCAAkB,CAAC;AAAA,IACjC,CAAC,iBAAa,4BAAc,CAAC;AAAA,EAC/B,CAAC;AACH;AAEO,SAAS,2BAA6D;AAC3E,aAAO,+BAAiB;AAAA,IACtB,CAAC,eAAW,gCAAkB,CAAC;AAAA,IAC/B,CAAC,iBAAa,gCAAkB,CAAC;AAAA,IACjC,CAAC,iBAAa,4BAAc,CAAC;AAAA,EAC/B,CAAC;AACH;AAEO,SAAS,yBAGd;AACA,aAAO,2BAAa,yBAAyB,GAAG,yBAAyB,CAAC;AAC5E;;;AfAO,IAAM,0CAA0C,IAAI,WAAW;AAAA,EACpE;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AAAA,EAAI;AACjC,CAAC;AAEM,SAAS,+CAA+C;AAC7D,aAAO,iCAAe,8BAAgB,GAAG,CAAC,EAAE;AAAA,IAC1C;AAAA,EACF;AACF;AA8DO,SAAS,mDAAwG;AACtH,aAAO;AAAA,QACL,+BAAiB;AAAA,MACf,CAAC,qBAAiB,iCAAe,8BAAgB,GAAG,CAAC,CAAC;AAAA,MACtD,CAAC,kBAAc,mCAAiB,iCAAe,8BAAgB,GAAG,EAAE,CAAC,CAAC;AAAA,MACtE,CAAC,wBAAoB,mCAAiB,4BAAc,CAAC,CAAC;AAAA,MACtD,CAAC,wBAAoB,mCAAiB,4BAAc,CAAC,CAAC;AAAA,MACtD,CAAC,uBAAmB,mCAAiB,4BAAc,CAAC,CAAC;AAAA,MACrD,CAAC,sBAAkB,+BAAiB,4BAA4B,CAAC,CAAC;AAAA,MAClE;AAAA,QACE;AAAA,YACA;AAAA,cACE,kCAAgB,iCAAe,8BAAgB,GAAG,EAAE,CAAC;AAAA,QACvD;AAAA,MACF;AAAA,IACF,CAAC;AAAA,IACD,CAAC,WAAW;AAAA,MACV,GAAG;AAAA,MACH,eAAe;AAAA,IACjB;AAAA,EACF;AACF;AAEO,SAAS,mDAAoG;AAClH,aAAO,+BAAiB;AAAA,IACtB,CAAC,qBAAiB,iCAAe,8BAAgB,GAAG,CAAC,CAAC;AAAA,IACtD,CAAC,kBAAc,mCAAiB,iCAAe,8BAAgB,GAAG,EAAE,CAAC,CAAC;AAAA,IACtE,CAAC,wBAAoB,mCAAiB,4BAAc,CAAC,CAAC;AAAA,IACtD,CAAC,wBAAoB,mCAAiB,4BAAc,CAAC,CAAC;AAAA,IACtD,CAAC,uBAAmB,mCAAiB,4BAAc,CAAC,CAAC;AAAA,IACrD,CAAC,sBAAkB,+BAAiB,4BAA4B,CAAC,CAAC;AAAA,IAClE;AAAA,MACE;AAAA,UACA,mCAAiB,kCAAgB,iCAAe,8BAAgB,GAAG,EAAE,CAAC,CAAC;AAAA,IACzE;AAAA,EACF,CAAC;AACH;AAEO,SAAS,iDAGd;AACA,aAAO;AAAA,IACL,iDAAiD;AAAA,IACjD,iDAAiD;AAAA,EACnD;AACF;AA0BA,eAAsB,2CAUpB,OASA,QAYA;AAEA,QAAM,iBAAiB,QAAQ,kBAAkB;AAGjD,QAAM,mBAAmB;AAAA,IACvB,QAAQ,EAAE,OAAO,MAAM,UAAU,MAAM,YAAY,MAAM;AAAA,IACzD,QAAQ,EAAE,OAAO,MAAM,UAAU,MAAM,YAAY,MAAM;AAAA,IACzD,UAAU,EAAE,OAAO,MAAM,YAAY,MAAM,YAAY,KAAK;AAAA,IAC5D,iBAAiB;AAAA,MACf,OAAO,MAAM,mBAAmB;AAAA,MAChC,YAAY;AAAA,IACd;AAAA,IACA,eAAe,EAAE,OAAO,MAAM,iBAAiB,MAAM,YAAY,KAAK;AAAA,IACtE,WAAW,EAAE,OAAO,MAAM,aAAa,MAAM,YAAY,KAAK;AAAA,IAC9D,eAAe,EAAE,OAAO,MAAM,iBAAiB,MAAM,YAAY,MAAM;AAAA,EACzE;AACA,QAAM,WAAW;AAMjB,QAAM,OAAO,EAAE,GAAG,MAAM;AAGxB,MAAI,CAAC,SAAS,OAAO,OAAO;AAC1B,aAAS,OAAO,QAAQ,UAAM,uCAAyB;AAAA,MACrD;AAAA,MACA,OAAO;AAAA,YACL,8BAAgB,EAAE,OAAO,IAAI,WAAW,CAAC,KAAK,IAAI,KAAK,KAAK,KAAK,GAAG,CAAC,CAAC;AAAA,MACxE;AAAA,IACF,CAAC;AAAA,EACH;AACA,MAAI,CAAC,SAAS,OAAO,OAAO;AAC1B,aAAS,OAAO,QAAQ,UAAM,uCAAyB;AAAA,MACrD;AAAA,MACA,OAAO;AAAA,YACL,8BAAgB,EAAE;AAAA,UAChB,IAAI,WAAW;AAAA,YACb;AAAA,YAAI;AAAA,YAAK;AAAA,YAAK;AAAA,YAAK;AAAA,YAAK;AAAA,YAAK;AAAA,YAAK;AAAA,YAAI;AAAA,YAAI;AAAA,YAAK;AAAA,YAAK;AAAA,YAAK;AAAA,YAAK;AAAA,UAChE,CAAC;AAAA,QACH;AAAA,MACF;AAAA,IACF,CAAC;AAAA,EACH;AACA,MAAI,CAAC,SAAS,cAAc,OAAO;AACjC,aAAS,cAAc,QAAQ,UAAM,uCAAyB;AAAA,MAC5D;AAAA,MACA,OAAO;AAAA,YACL,8BAAgB,EAAE;AAAA,UAChB,IAAI,WAAW;AAAA,YACb;AAAA,YAAI;AAAA,YAAK;AAAA,YAAK;AAAA,YAAK;AAAA,YAAK;AAAA,YAAK;AAAA,YAAK;AAAA,YAAI;AAAA,YAAK;AAAA,YAAI;AAAA,YAAK;AAAA,YAAK;AAAA,YAAK;AAAA,UAChE,CAAC;AAAA,QACH;AAAA,YACA,gCAAkB,EAAE,OAAO,cAAc,SAAS,UAAU,KAAK,CAAC;AAAA,MACpE;AAAA,IACF,CAAC;AAAA,EACH;AACA,MAAI,CAAC,SAAS,cAAc,OAAO;AACjC,aAAS,cAAc,QACrB;AAAA,EACJ;AAEA,QAAM,iBAAiB,sBAAsB,gBAAgB,WAAW;AACxE,SAAO,OAAO,OAAO;AAAA,IACnB,UAAU;AAAA,MACR,eAAe,SAAS,MAAM;AAAA,MAC9B,eAAe,SAAS,MAAM;AAAA,MAC9B,eAAe,SAAS,QAAQ;AAAA,MAChC,eAAe,SAAS,eAAe;AAAA,MACvC,eAAe,SAAS,aAAa;AAAA,MACrC,eAAe,SAAS,SAAS;AAAA,MACjC,eAAe,SAAS,aAAa;AAAA,IACvC;AAAA,IACA,MAAM,iDAAiD,EAAE;AAAA,MACvD;AAAA,IACF;AAAA,IACA;AAAA,EACF,CASC;AACH;AA0BO,SAAS,sCAUd,OASA,QAUA;AAEA,QAAM,iBAAiB,QAAQ,kBAAkB;AAGjD,QAAM,mBAAmB;AAAA,IACvB,QAAQ,EAAE,OAAO,MAAM,UAAU,MAAM,YAAY,MAAM;AAAA,IACzD,QAAQ,EAAE,OAAO,MAAM,UAAU,MAAM,YAAY,MAAM;AAAA,IACzD,UAAU,EAAE,OAAO,MAAM,YAAY,MAAM,YAAY,KAAK;AAAA,IAC5D,iBAAiB;AAAA,MACf,OAAO,MAAM,mBAAmB;AAAA,MAChC,YAAY;AAAA,IACd;AAAA,IACA,eAAe,EAAE,OAAO,MAAM,iBAAiB,MAAM,YAAY,KAAK;AAAA,IACtE,WAAW,EAAE,OAAO,MAAM,aAAa,MAAM,YAAY,KAAK;AAAA,IAC9D,eAAe,EAAE,OAAO,MAAM,iBAAiB,MAAM,YAAY,MAAM;AAAA,EACzE;AACA,QAAM,WAAW;AAMjB,QAAM,OAAO,EAAE,GAAG,MAAM;AAGxB,MAAI,CAAC,SAAS,cAAc,OAAO;AACjC,aAAS,cAAc,QACrB;AAAA,EACJ;AAEA,QAAM,iBAAiB,sBAAsB,gBAAgB,WAAW;AACxE,SAAO,OAAO,OAAO;AAAA,IACnB,UAAU;AAAA,MACR,eAAe,SAAS,MAAM;AAAA,MAC9B,eAAe,SAAS,MAAM;AAAA,MAC9B,eAAe,SAAS,QAAQ;AAAA,MAChC,eAAe,SAAS,eAAe;AAAA,MACvC,eAAe,SAAS,aAAa;AAAA,MACrC,eAAe,SAAS,SAAS;AAAA,MACjC,eAAe,SAAS,aAAa;AAAA,IACvC;AAAA,IACA,MAAM,iDAAiD,EAAE;AAAA,MACvD;AAAA,IACF;AAAA,IACA;AAAA,EACF,CASC;AACH;AAmBO,SAAS,wCAId,aAGmE;AACnE,MAAI,YAAY,SAAS,SAAS,GAAG;AAEnC,UAAM,IAAI,MAAM,qBAAqB;AAAA,EACvC;AACA,MAAI,eAAe;AACnB,QAAM,iBAAiB,MAAM;AAC3B,UAAM,cAAe,YAAY,SAA2B,YAAY;AACxE,oBAAgB;AAChB,WAAO;AAAA,EACT;AACA,QAAM,yBAAyB,MAAM;AACnC,UAAM,cAAc,eAAe;AACnC,WAAO,YAAY,YAAY,yBAC3B,SACA;AAAA,EACN;AACA,SAAO;AAAA,IACL,gBAAgB,YAAY;AAAA,IAC5B,UAAU;AAAA,MACR,QAAQ,eAAe;AAAA,MACvB,QAAQ,eAAe;AAAA,MACvB,UAAU,eAAe;AAAA,MACzB,iBAAiB,uBAAuB;AAAA,MACxC,eAAe,eAAe;AAAA,MAC9B,WAAW,eAAe;AAAA,MAC1B,eAAe,eAAe;AAAA,IAChC;AAAA,IACA,MAAM,iDAAiD,EAAE;AAAA,MACvD,YAAY;AAAA,IACd;AAAA,EACF;AACF;;;AgB9dA,IAAAC,eA0BO;AAUA,IAAM,kCAAkC,IAAI,WAAW;AAAA,EAC5D;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAK;AAAA,EAAK;AACnC,CAAC;AAEM,SAAS,wCAAwC;AACtD,aAAO,iCAAe,8BAAgB,GAAG,CAAC,EAAE;AAAA,IAC1C;AAAA,EACF;AACF;AAmDO,SAAS,4CAA0F;AACxG,aAAO;AAAA,QACL,+BAAiB;AAAA,MACf,CAAC,qBAAiB,iCAAe,8BAAgB,GAAG,CAAC,CAAC;AAAA,MACtD,CAAC,iBAAiB,gCAAgC,CAAC;AAAA,MACnD,CAAC,mBAAe,4BAAc,CAAC;AAAA,IACjC,CAAC;AAAA,IACD,CAAC,WAAW,EAAE,GAAG,OAAO,eAAe,gCAAgC;AAAA,EACzE;AACF;AAEO,SAAS,4CAAsF;AACpG,aAAO,+BAAiB;AAAA,IACtB,CAAC,qBAAiB,iCAAe,8BAAgB,GAAG,CAAC,CAAC;AAAA,IACtD,CAAC,iBAAiB,gCAAgC,CAAC;AAAA,IACnD,CAAC,mBAAe,4BAAc,CAAC;AAAA,EACjC,CAAC;AACH;AAEO,SAAS,0CAGd;AACA,aAAO;AAAA,IACL,0CAA0C;AAAA,IAC1C,0CAA0C;AAAA,EAC5C;AACF;AAoBA,eAAsB,oCASpB,OAQA,QAWA;AAEA,QAAM,iBAAiB,QAAQ,kBAAkB;AAGjD,QAAM,mBAAmB;AAAA,IACvB,QAAQ,EAAE,OAAO,MAAM,UAAU,MAAM,YAAY,KAAK;AAAA,IACxD,QAAQ,EAAE,OAAO,MAAM,UAAU,MAAM,YAAY,KAAK;AAAA,IACxD,UAAU,EAAE,OAAO,MAAM,YAAY,MAAM,YAAY,MAAM;AAAA,IAC7D,WAAW,EAAE,OAAO,MAAM,aAAa,MAAM,YAAY,MAAM;AAAA,IAC/D,WAAW,EAAE,OAAO,MAAM,aAAa,MAAM,YAAY,KAAK;AAAA,IAC9D,eAAe,EAAE,OAAO,MAAM,iBAAiB,MAAM,YAAY,MAAM;AAAA,EACzE;AACA,QAAM,WAAW;AAMjB,QAAM,OAAO,EAAE,GAAG,MAAM;AAGxB,MAAI,CAAC,SAAS,OAAO,OAAO;AAC1B,aAAS,OAAO,QAAQ,UAAM,uCAAyB;AAAA,MACrD;AAAA,MACA,OAAO;AAAA,YACL,8BAAgB,EAAE,OAAO,IAAI,WAAW,CAAC,KAAK,IAAI,KAAK,KAAK,KAAK,GAAG,CAAC,CAAC;AAAA,MACxE;AAAA,IACF,CAAC;AAAA,EACH;AACA,MAAI,CAAC,SAAS,OAAO,OAAO;AAC1B,aAAS,OAAO,QAAQ,UAAM,uCAAyB;AAAA,MACrD;AAAA,MACA,OAAO;AAAA,YACL,8BAAgB,EAAE;AAAA,UAChB,IAAI,WAAW;AAAA,YACb;AAAA,YAAI;AAAA,YAAK;AAAA,YAAK;AAAA,YAAK;AAAA,YAAK;AAAA,YAAK;AAAA,YAAK;AAAA,YAAI;AAAA,YAAI;AAAA,YAAK;AAAA,YAAK;AAAA,YAAK;AAAA,YAAK;AAAA,UAChE,CAAC;AAAA,QACH;AAAA,MACF;AAAA,IACF,CAAC;AAAA,EACH;AACA,MAAI,CAAC,SAAS,UAAU,OAAO;AAC7B,aAAS,UAAU,QACjB;AAAA,EACJ;AACA,MAAI,CAAC,SAAS,cAAc,OAAO;AACjC,aAAS,cAAc,QACrB;AAAA,EACJ;AAEA,QAAM,iBAAiB,sBAAsB,gBAAgB,WAAW;AACxE,SAAO,OAAO,OAAO;AAAA,IACnB,UAAU;AAAA,MACR,eAAe,SAAS,MAAM;AAAA,MAC9B,eAAe,SAAS,MAAM;AAAA,MAC9B,eAAe,SAAS,QAAQ;AAAA,MAChC,eAAe,SAAS,SAAS;AAAA,MACjC,eAAe,SAAS,SAAS;AAAA,MACjC,eAAe,SAAS,aAAa;AAAA,IACvC;AAAA,IACA,MAAM,0CAA0C,EAAE;AAAA,MAChD;AAAA,IACF;AAAA,IACA;AAAA,EACF,CAQC;AACH;AAoBO,SAAS,+BASd,OAQA,QASA;AAEA,QAAM,iBAAiB,QAAQ,kBAAkB;AAGjD,QAAM,mBAAmB;AAAA,IACvB,QAAQ,EAAE,OAAO,MAAM,UAAU,MAAM,YAAY,KAAK;AAAA,IACxD,QAAQ,EAAE,OAAO,MAAM,UAAU,MAAM,YAAY,KAAK;AAAA,IACxD,UAAU,EAAE,OAAO,MAAM,YAAY,MAAM,YAAY,MAAM;AAAA,IAC7D,WAAW,EAAE,OAAO,MAAM,aAAa,MAAM,YAAY,MAAM;AAAA,IAC/D,WAAW,EAAE,OAAO,MAAM,aAAa,MAAM,YAAY,KAAK;AAAA,IAC9D,eAAe,EAAE,OAAO,MAAM,iBAAiB,MAAM,YAAY,MAAM;AAAA,EACzE;AACA,QAAM,WAAW;AAMjB,QAAM,OAAO,EAAE,GAAG,MAAM;AAGxB,MAAI,CAAC,SAAS,UAAU,OAAO;AAC7B,aAAS,UAAU,QACjB;AAAA,EACJ;AACA,MAAI,CAAC,SAAS,cAAc,OAAO;AACjC,aAAS,cAAc,QACrB;AAAA,EACJ;AAEA,QAAM,iBAAiB,sBAAsB,gBAAgB,WAAW;AACxE,SAAO,OAAO,OAAO;AAAA,IACnB,UAAU;AAAA,MACR,eAAe,SAAS,MAAM;AAAA,MAC9B,eAAe,SAAS,MAAM;AAAA,MAC9B,eAAe,SAAS,QAAQ;AAAA,MAChC,eAAe,SAAS,SAAS;AAAA,MACjC,eAAe,SAAS,SAAS;AAAA,MACjC,eAAe,SAAS,aAAa;AAAA,IACvC;AAAA,IACA,MAAM,0CAA0C,EAAE;AAAA,MAChD;AAAA,IACF;AAAA,IACA;AAAA,EACF,CAQC;AACH;AAkBO,SAAS,iCAId,aAG4D;AAC5D,MAAI,YAAY,SAAS,SAAS,GAAG;AAEnC,UAAM,IAAI,MAAM,qBAAqB;AAAA,EACvC;AACA,MAAI,eAAe;AACnB,QAAM,iBAAiB,MAAM;AAC3B,UAAM,cAAe,YAAY,SAA2B,YAAY;AACxE,oBAAgB;AAChB,WAAO;AAAA,EACT;AACA,QAAM,yBAAyB,MAAM;AACnC,UAAM,cAAc,eAAe;AACnC,WAAO,YAAY,YAAY,yBAC3B,SACA;AAAA,EACN;AACA,SAAO;AAAA,IACL,gBAAgB,YAAY;AAAA,IAC5B,UAAU;AAAA,MACR,QAAQ,eAAe;AAAA,MACvB,QAAQ,eAAe;AAAA,MACvB,UAAU,eAAe;AAAA,MACzB,WAAW,uBAAuB;AAAA,MAClC,WAAW,eAAe;AAAA,MAC1B,eAAe,eAAe;AAAA,IAChC;AAAA,IACA,MAAM,0CAA0C,EAAE,OAAO,YAAY,IAAI;AAAA,EAC3E;AACF;;;AC9YA,IAAAC,eAyBO;AAQA,IAAM,sCAAsC,IAAI,WAAW;AAAA,EAChE;AAAA,EAAK;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AAAA,EAAI;AAAA,EAAK;AAAA,EAAI;AACjC,CAAC;AAEM,SAAS,2CAA2C;AACzD,aAAO,iCAAe,8BAAgB,GAAG,CAAC,EAAE;AAAA,IAC1C;AAAA,EACF;AACF;AA2EO,SAAS,+CAAyG;AACvH,aAAO;AAAA,QACL,+BAAiB,CAAC,CAAC,qBAAiB,iCAAe,8BAAgB,GAAG,CAAC,CAAC,CAAC,CAAC;AAAA,IAC1E,CAAC,WAAW;AAAA,MACV,GAAG;AAAA,MACH,eAAe;AAAA,IACjB;AAAA,EACF;AACF;AAEO,SAAS,+CAAqG;AACnH,aAAO,+BAAiB;AAAA,IACtB,CAAC,qBAAiB,iCAAe,8BAAgB,GAAG,CAAC,CAAC;AAAA,EACxD,CAAC;AACH;AAEO,SAAS,6CAGd;AACA,aAAO;AAAA,IACL,6CAA6C;AAAA,IAC7C,6CAA6C;AAAA,EAC/C;AACF;AAgCA,eAAsB,uCAgBpB,OAeA,QAkBA;AAEA,QAAM,iBAAiB,QAAQ,kBAAkB;AAGjD,QAAM,mBAAmB;AAAA,IACvB,QAAQ,EAAE,OAAO,MAAM,UAAU,MAAM,YAAY,MAAM;AAAA,IACzD,QAAQ,EAAE,OAAO,MAAM,UAAU,MAAM,YAAY,MAAM;AAAA,IACzD,UAAU,EAAE,OAAO,MAAM,YAAY,MAAM,YAAY,KAAK;AAAA,IAC5D,eAAe,EAAE,OAAO,MAAM,iBAAiB,MAAM,YAAY,KAAK;AAAA,IACtE,WAAW,EAAE,OAAO,MAAM,aAAa,MAAM,YAAY,KAAK;AAAA,IAC9D,oBAAoB;AAAA,MAClB,OAAO,MAAM,sBAAsB;AAAA,MACnC,YAAY;AAAA,IACd;AAAA,IACA,yBAAyB;AAAA,MACvB,OAAO,MAAM,2BAA2B;AAAA,MACxC,YAAY;AAAA,IACd;AAAA,IACA,SAAS,EAAE,OAAO,MAAM,WAAW,MAAM,YAAY,KAAK;AAAA,IAC1D,MAAM,EAAE,OAAO,MAAM,QAAQ,MAAM,YAAY,MAAM;AAAA,IACrD,WAAW,EAAE,OAAO,MAAM,aAAa,MAAM,YAAY,KAAK;AAAA,IAC9D,cAAc,EAAE,OAAO,MAAM,gBAAgB,MAAM,YAAY,MAAM;AAAA,IACrE,wBAAwB;AAAA,MACtB,OAAO,MAAM,0BAA0B;AAAA,MACvC,YAAY;AAAA,IACd;AAAA,IACA,eAAe,EAAE,OAAO,MAAM,iBAAiB,MAAM,YAAY,MAAM;AAAA,EACzE;AACA,QAAM,WAAW;AAMjB,MAAI,CAAC,SAAS,OAAO,OAAO;AAC1B,aAAS,OAAO,QAAQ,UAAM,uCAAyB;AAAA,MACrD;AAAA,MACA,OAAO;AAAA,YACL,8BAAgB,EAAE,OAAO,IAAI,WAAW,CAAC,KAAK,IAAI,KAAK,KAAK,KAAK,GAAG,CAAC,CAAC;AAAA,MACxE;AAAA,IACF,CAAC;AAAA,EACH;AACA,MAAI,CAAC,SAAS,OAAO,OAAO;AAC1B,aAAS,OAAO,QAAQ,UAAM,uCAAyB;AAAA,MACrD;AAAA,MACA,OAAO;AAAA,YACL,8BAAgB,EAAE;AAAA,UAChB,IAAI,WAAW;AAAA,YACb;AAAA,YAAI;AAAA,YAAK;AAAA,YAAK;AAAA,YAAK;AAAA,YAAK;AAAA,YAAK;AAAA,YAAK;AAAA,YAAI;AAAA,YAAI;AAAA,YAAK;AAAA,YAAK;AAAA,YAAK;AAAA,YAAK;AAAA,UAChE,CAAC;AAAA,QACH;AAAA,MACF;AAAA,IACF,CAAC;AAAA,EACH;AACA,MAAI,CAAC,SAAS,QAAQ,OAAO;AAC3B,aAAS,QAAQ,QAAQ,UAAM,uCAAyB;AAAA,MACtD;AAAA,MACA,OAAO;AAAA,YACL,8BAAgB,EAAE;AAAA,UAChB,IAAI,WAAW,CAAC,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG,CAAC;AAAA,QACnD;AAAA,YACA,gCAAkB,EAAE,OAAO,cAAc,SAAS,KAAK,KAAK,CAAC;AAAA,YAC7D,gCAAkB,EAAE,OAAO,cAAc,SAAS,UAAU,KAAK,CAAC;AAAA,MACpE;AAAA,IACF,CAAC;AAAA,EACH;AACA,MAAI,CAAC,SAAS,aAAa,OAAO;AAChC,aAAS,aAAa,QACpB;AAAA,EACJ;AACA,MAAI,CAAC,SAAS,wBAAwB,OAAO;AAC3C,aAAS,wBAAwB,QAAQ,UAAM,uCAAyB;AAAA,MACtE,gBACE;AAAA,MACF,OAAO;AAAA,YACL,gCAAkB,EAAE,OAAO,cAAc,SAAS,QAAQ,KAAK,CAAC;AAAA,YAChE,gCAAkB,EAAE,OAAO,cAAc,SAAS,aAAa,KAAK,CAAC;AAAA,YACrE,gCAAkB,EAAE,OAAO,cAAc,SAAS,KAAK,KAAK,CAAC;AAAA,MAC/D;AAAA,IACF,CAAC;AAAA,EACH;AACA,MAAI,CAAC,SAAS,uBAAuB,OAAO;AAC1C,aAAS,uBAAuB,QAC9B;AAAA,EACJ;AACA,MAAI,CAAC,SAAS,cAAc,OAAO;AACjC,aAAS,cAAc,QACrB;AAAA,EACJ;AAEA,QAAM,iBAAiB,sBAAsB,gBAAgB,WAAW;AACxE,SAAO,OAAO,OAAO;AAAA,IACnB,UAAU;AAAA,MACR,eAAe,SAAS,MAAM;AAAA,MAC9B,eAAe,SAAS,MAAM;AAAA,MAC9B,eAAe,SAAS,QAAQ;AAAA,MAChC,eAAe,SAAS,aAAa;AAAA,MACrC,eAAe,SAAS,SAAS;AAAA,MACjC,eAAe,SAAS,kBAAkB;AAAA,MAC1C,eAAe,SAAS,uBAAuB;AAAA,MAC/C,eAAe,SAAS,OAAO;AAAA,MAC/B,eAAe,SAAS,IAAI;AAAA,MAC5B,eAAe,SAAS,SAAS;AAAA,MACjC,eAAe,SAAS,YAAY;AAAA,MACpC,eAAe,SAAS,sBAAsB;AAAA,MAC9C,eAAe,SAAS,aAAa;AAAA,IACvC;AAAA,IACA,MAAM,6CAA6C,EAAE,OAAO,CAAC,CAAC;AAAA,IAC9D;AAAA,EACF,CAeC;AACH;AAgCO,SAAS,kCAgBd,OAeA,QAgBA;AAEA,QAAM,iBAAiB,QAAQ,kBAAkB;AAGjD,QAAM,mBAAmB;AAAA,IACvB,QAAQ,EAAE,OAAO,MAAM,UAAU,MAAM,YAAY,MAAM;AAAA,IACzD,QAAQ,EAAE,OAAO,MAAM,UAAU,MAAM,YAAY,MAAM;AAAA,IACzD,UAAU,EAAE,OAAO,MAAM,YAAY,MAAM,YAAY,KAAK;AAAA,IAC5D,eAAe,EAAE,OAAO,MAAM,iBAAiB,MAAM,YAAY,KAAK;AAAA,IACtE,WAAW,EAAE,OAAO,MAAM,aAAa,MAAM,YAAY,KAAK;AAAA,IAC9D,oBAAoB;AAAA,MAClB,OAAO,MAAM,sBAAsB;AAAA,MACnC,YAAY;AAAA,IACd;AAAA,IACA,yBAAyB;AAAA,MACvB,OAAO,MAAM,2BAA2B;AAAA,MACxC,YAAY;AAAA,IACd;AAAA,IACA,SAAS,EAAE,OAAO,MAAM,WAAW,MAAM,YAAY,KAAK;AAAA,IAC1D,MAAM,EAAE,OAAO,MAAM,QAAQ,MAAM,YAAY,MAAM;AAAA,IACrD,WAAW,EAAE,OAAO,MAAM,aAAa,MAAM,YAAY,KAAK;AAAA,IAC9D,cAAc,EAAE,OAAO,MAAM,gBAAgB,MAAM,YAAY,MAAM;AAAA,IACrE,wBAAwB;AAAA,MACtB,OAAO,MAAM,0BAA0B;AAAA,MACvC,YAAY;AAAA,IACd;AAAA,IACA,eAAe,EAAE,OAAO,MAAM,iBAAiB,MAAM,YAAY,MAAM;AAAA,EACzE;AACA,QAAM,WAAW;AAMjB,MAAI,CAAC,SAAS,aAAa,OAAO;AAChC,aAAS,aAAa,QACpB;AAAA,EACJ;AACA,MAAI,CAAC,SAAS,uBAAuB,OAAO;AAC1C,aAAS,uBAAuB,QAC9B;AAAA,EACJ;AACA,MAAI,CAAC,SAAS,cAAc,OAAO;AACjC,aAAS,cAAc,QACrB;AAAA,EACJ;AAEA,QAAM,iBAAiB,sBAAsB,gBAAgB,WAAW;AACxE,SAAO,OAAO,OAAO;AAAA,IACnB,UAAU;AAAA,MACR,eAAe,SAAS,MAAM;AAAA,MAC9B,eAAe,SAAS,MAAM;AAAA,MAC9B,eAAe,SAAS,QAAQ;AAAA,MAChC,eAAe,SAAS,aAAa;AAAA,MACrC,eAAe,SAAS,SAAS;AAAA,MACjC,eAAe,SAAS,kBAAkB;AAAA,MAC1C,eAAe,SAAS,uBAAuB;AAAA,MAC/C,eAAe,SAAS,OAAO;AAAA,MAC/B,eAAe,SAAS,IAAI;AAAA,MAC5B,eAAe,SAAS,SAAS;AAAA,MACjC,eAAe,SAAS,YAAY;AAAA,MACpC,eAAe,SAAS,sBAAsB;AAAA,MAC9C,eAAe,SAAS,aAAa;AAAA,IACvC;AAAA,IACA,MAAM,6CAA6C,EAAE,OAAO,CAAC,CAAC;AAAA,IAC9D;AAAA,EACF,CAeC;AACH;AAyBO,SAAS,oCAId,aAG+D;AAC/D,MAAI,YAAY,SAAS,SAAS,IAAI;AAEpC,UAAM,IAAI,MAAM,qBAAqB;AAAA,EACvC;AACA,MAAI,eAAe;AACnB,QAAM,iBAAiB,MAAM;AAC3B,UAAM,cAAe,YAAY,SAA2B,YAAY;AACxE,oBAAgB;AAChB,WAAO;AAAA,EACT;AACA,QAAM,yBAAyB,MAAM;AACnC,UAAM,cAAc,eAAe;AACnC,WAAO,YAAY,YAAY,yBAC3B,SACA;AAAA,EACN;AACA,SAAO;AAAA,IACL,gBAAgB,YAAY;AAAA,IAC5B,UAAU;AAAA,MACR,QAAQ,eAAe;AAAA,MACvB,QAAQ,eAAe;AAAA,MACvB,UAAU,eAAe;AAAA,MACzB,eAAe,eAAe;AAAA,MAC9B,WAAW,uBAAuB;AAAA,MAClC,oBAAoB,eAAe;AAAA,MACnC,yBAAyB,eAAe;AAAA,MACxC,SAAS,eAAe;AAAA,MACxB,MAAM,eAAe;AAAA,MACrB,WAAW,eAAe;AAAA,MAC1B,cAAc,eAAe;AAAA,MAC7B,wBAAwB,eAAe;AAAA,MACvC,eAAe,eAAe;AAAA,IAChC;AAAA,IACA,MAAM,6CAA6C,EAAE;AAAA,MACnD,YAAY;AAAA,IACd;AAAA,EACF;AACF;","names":["address","import_kit","address","import_kit","address","import_kit","address","import_kit","address","import_kit","address","import_kit","address","import_kit","import_kit","DropsyAccount","DropsyInstruction","import_kit","import_kit","kitIsTransactionSigner","import_kit","import_kit","import_kit","import_kit","address","address","MerkleTree","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit"]}
|