@dropsy/airdrop 0.2.1 → 0.2.2
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 +1182 -765
- package/dist/index.d.ts +1182 -765
- package/dist/index.js +2455 -1447
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +2525 -1541
- package/dist/index.mjs.map +1 -1
- package/generate-md.js +71 -0
- package/package.json +8 -6
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/accounts/airdrop.ts","../src/accounts/bitmapAccount.ts","../src/accounts/controller.ts","../src/accounts/master.ts","../src/accounts/stats.ts","../src/errors/dropsy.ts","../src/programs/dropsy.ts","../src/instructions/claimTokens.ts","../src/shared/index.ts","../src/instructions/closeAirdrop.ts","../src/instructions/closeBitmap.ts","../src/instructions/depositTokens.ts","../src/instructions/initializeAirdrop.ts","../src/instructions/initializeBitmap.ts","../src/instructions/initializeController.ts","../src/instructions/initializeMaster.ts","../src/instructions/withdrawControllerFees.ts","../src/types/airdropClosed.ts","../src/types/airdropInitialized.ts","../src/types/bitmapClosed.ts","../src/types/bitmapInitialized.ts","../src/types/controllerInitialized.ts","../src/types/feesCollected.ts","../src/types/masterInitialized.ts","../src/types/tokensDeposited.ts","../src/utils/client.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\";\n","/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n assertAccountExists,\n assertAccountsExist,\n combineCodec,\n decodeAccount,\n fetchEncodedAccount,\n fetchEncodedAccounts,\n fixDecoderSize,\n fixEncoderSize,\n getAddressDecoder,\n getAddressEncoder,\n getArrayDecoder,\n getArrayEncoder,\n getBytesDecoder,\n getBytesEncoder,\n 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 Codec,\n type Decoder,\n type EncodedAccount,\n type Encoder,\n type FetchAccountConfig,\n type FetchAccountsConfig,\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 authority: Address;\n mint: Address;\n controller: Address;\n supply: bigint;\n merkleRoot: Array<number>;\n startsAt: bigint;\n endsAt: bigint;\n bitmapCount: number;\n version: number;\n bump: number;\n};\n\nexport type AirdropArgs = {\n authority: Address;\n mint: Address;\n controller: Address;\n supply: number | bigint;\n merkleRoot: Array<number>;\n startsAt: number | bigint;\n endsAt: number | bigint;\n bitmapCount: number;\n version: number;\n bump: number;\n};\n\nexport function getAirdropEncoder(): Encoder<AirdropArgs> {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n ['authority', getAddressEncoder()],\n ['mint', getAddressEncoder()],\n ['controller', getAddressEncoder()],\n ['supply', getU64Encoder()],\n ['merkleRoot', getArrayEncoder(getU8Encoder(), { size: 32 })],\n ['startsAt', getI64Encoder()],\n ['endsAt', getI64Encoder()],\n ['bitmapCount', getU8Encoder()],\n ['version', getU8Encoder()],\n ['bump', getU8Encoder()],\n ]),\n (value) => ({ ...value, discriminator: AIRDROP_DISCRIMINATOR })\n );\n}\n\nexport function getAirdropDecoder(): Decoder<Airdrop> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ['authority', getAddressDecoder()],\n ['mint', getAddressDecoder()],\n ['controller', getAddressDecoder()],\n ['supply', getU64Decoder()],\n ['merkleRoot', getArrayDecoder(getU8Decoder(), { size: 32 })],\n ['startsAt', getI64Decoder()],\n ['endsAt', getI64Decoder()],\n ['bitmapCount', getU8Decoder()],\n ['version', getU8Decoder()],\n ['bump', getU8Decoder()],\n ]);\n}\n\nexport function getAirdropCodec(): Codec<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","/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n addDecoderSizePrefix,\n addEncoderSizePrefix,\n 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 getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type Account,\n type Address,\n type Codec,\n type Decoder,\n type EncodedAccount,\n type Encoder,\n type FetchAccountConfig,\n type FetchAccountsConfig,\n type MaybeAccount,\n type MaybeEncodedAccount,\n type ReadonlyUint8Array,\n} from '@solana/kit';\n\nexport const BITMAP_ACCOUNT_DISCRIMINATOR = new Uint8Array([\n 152, 161, 147, 85, 213, 38, 59, 48,\n]);\n\nexport function getBitmapAccountDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n BITMAP_ACCOUNT_DISCRIMINATOR\n );\n}\n\nexport type BitmapAccount = {\n discriminator: ReadonlyUint8Array;\n authority: Address;\n airdrop: Address;\n claimedBitmap: ReadonlyUint8Array;\n id: number;\n version: number;\n bump: number;\n};\n\nexport type BitmapAccountArgs = {\n authority: Address;\n airdrop: Address;\n claimedBitmap: ReadonlyUint8Array;\n id: number;\n version: number;\n bump: number;\n};\n\nexport function getBitmapAccountEncoder(): Encoder<BitmapAccountArgs> {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n ['authority', getAddressEncoder()],\n ['airdrop', getAddressEncoder()],\n [\n 'claimedBitmap',\n addEncoderSizePrefix(getBytesEncoder(), getU32Encoder()),\n ],\n ['id', getU8Encoder()],\n ['version', getU8Encoder()],\n ['bump', getU8Encoder()],\n ]),\n (value) => ({ ...value, discriminator: BITMAP_ACCOUNT_DISCRIMINATOR })\n );\n}\n\nexport function getBitmapAccountDecoder(): Decoder<BitmapAccount> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ['authority', getAddressDecoder()],\n ['airdrop', getAddressDecoder()],\n ['claimedBitmap', addDecoderSizePrefix(getBytesDecoder(), getU32Decoder())],\n ['id', getU8Decoder()],\n ['version', getU8Decoder()],\n ['bump', getU8Decoder()],\n ]);\n}\n\nexport function getBitmapAccountCodec(): Codec<\n BitmapAccountArgs,\n BitmapAccount\n> {\n return combineCodec(getBitmapAccountEncoder(), getBitmapAccountDecoder());\n}\n\nexport function decodeBitmapAccount<TAddress extends string = string>(\n encodedAccount: EncodedAccount<TAddress>\n): Account<BitmapAccount, TAddress>;\nexport function decodeBitmapAccount<TAddress extends string = string>(\n encodedAccount: MaybeEncodedAccount<TAddress>\n): MaybeAccount<BitmapAccount, TAddress>;\nexport function decodeBitmapAccount<TAddress extends string = string>(\n encodedAccount: EncodedAccount<TAddress> | MaybeEncodedAccount<TAddress>\n): Account<BitmapAccount, TAddress> | MaybeAccount<BitmapAccount, TAddress> {\n return decodeAccount(\n encodedAccount as MaybeEncodedAccount<TAddress>,\n getBitmapAccountDecoder()\n );\n}\n\nexport async function fetchBitmapAccount<TAddress extends string = string>(\n rpc: Parameters<typeof fetchEncodedAccount>[0],\n address: Address<TAddress>,\n config?: FetchAccountConfig\n): Promise<Account<BitmapAccount, TAddress>> {\n const maybeAccount = await fetchMaybeBitmapAccount(rpc, address, config);\n assertAccountExists(maybeAccount);\n return maybeAccount;\n}\n\nexport async function fetchMaybeBitmapAccount<TAddress extends string = string>(\n rpc: Parameters<typeof fetchEncodedAccount>[0],\n address: Address<TAddress>,\n config?: FetchAccountConfig\n): Promise<MaybeAccount<BitmapAccount, TAddress>> {\n const maybeAccount = await fetchEncodedAccount(rpc, address, config);\n return decodeBitmapAccount(maybeAccount);\n}\n\nexport async function fetchAllBitmapAccount(\n rpc: Parameters<typeof fetchEncodedAccounts>[0],\n addresses: Array<Address>,\n config?: FetchAccountsConfig\n): Promise<Account<BitmapAccount>[]> {\n const maybeAccounts = await fetchAllMaybeBitmapAccount(\n rpc,\n addresses,\n config\n );\n assertAccountsExist(maybeAccounts);\n return maybeAccounts;\n}\n\nexport async function fetchAllMaybeBitmapAccount(\n rpc: Parameters<typeof fetchEncodedAccounts>[0],\n addresses: Array<Address>,\n config?: FetchAccountsConfig\n): Promise<MaybeAccount<BitmapAccount>[]> {\n const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config);\n return maybeAccounts.map((maybeAccount) => decodeBitmapAccount(maybeAccount));\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 Codec,\n type Decoder,\n type EncodedAccount,\n type Encoder,\n type FetchAccountConfig,\n type FetchAccountsConfig,\n type MaybeAccount,\n type MaybeEncodedAccount,\n type ReadonlyUint8Array,\n} from '@solana/kit';\n\nexport const CONTROLLER_DISCRIMINATOR = new Uint8Array([\n 184, 79, 171, 0, 183, 43, 113, 110,\n]);\n\nexport function getControllerDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(CONTROLLER_DISCRIMINATOR);\n}\n\nexport type Controller = {\n discriminator: ReadonlyUint8Array;\n /** the controller authority // 32 */\n authority: Address;\n /** Fee vault address derived from authority publicKey // 32 */\n feeVault: Address;\n /** Fee amount (in lamports) to create or close an airdrop using this controller //8 */\n feeLamports: bigint;\n /** version for a controller for upcoming upgrades // 1 */\n version: number;\n /** PDA bump seed // 1 */\n bump: number;\n /** fee vault bump seed // 1 */\n feeVaultBump: number;\n};\n\nexport type ControllerArgs = {\n /** the controller authority // 32 */\n authority: Address;\n /** Fee vault address derived from authority publicKey // 32 */\n feeVault: Address;\n /** Fee amount (in lamports) to create or close an airdrop using this controller //8 */\n feeLamports: number | bigint;\n /** version for a controller for upcoming upgrades // 1 */\n version: number;\n /** PDA bump seed // 1 */\n bump: number;\n /** fee vault bump seed // 1 */\n feeVaultBump: number;\n};\n\nexport function getControllerEncoder(): Encoder<ControllerArgs> {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n ['authority', getAddressEncoder()],\n ['feeVault', getAddressEncoder()],\n ['feeLamports', getU64Encoder()],\n ['version', getU8Encoder()],\n ['bump', getU8Encoder()],\n ['feeVaultBump', getU8Encoder()],\n ]),\n (value) => ({ ...value, discriminator: CONTROLLER_DISCRIMINATOR })\n );\n}\n\nexport function getControllerDecoder(): Decoder<Controller> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ['authority', getAddressDecoder()],\n ['feeVault', getAddressDecoder()],\n ['feeLamports', getU64Decoder()],\n ['version', getU8Decoder()],\n ['bump', getU8Decoder()],\n ['feeVaultBump', getU8Decoder()],\n ]);\n}\n\nexport function getControllerCodec(): Codec<ControllerArgs, Controller> {\n return combineCodec(getControllerEncoder(), getControllerDecoder());\n}\n\nexport function decodeController<TAddress extends string = string>(\n encodedAccount: EncodedAccount<TAddress>\n): Account<Controller, TAddress>;\nexport function decodeController<TAddress extends string = string>(\n encodedAccount: MaybeEncodedAccount<TAddress>\n): MaybeAccount<Controller, TAddress>;\nexport function decodeController<TAddress extends string = string>(\n encodedAccount: EncodedAccount<TAddress> | MaybeEncodedAccount<TAddress>\n): Account<Controller, TAddress> | MaybeAccount<Controller, TAddress> {\n return decodeAccount(\n encodedAccount as MaybeEncodedAccount<TAddress>,\n getControllerDecoder()\n );\n}\n\nexport async function fetchController<TAddress extends string = string>(\n rpc: Parameters<typeof fetchEncodedAccount>[0],\n address: Address<TAddress>,\n config?: FetchAccountConfig\n): Promise<Account<Controller, TAddress>> {\n const maybeAccount = await fetchMaybeController(rpc, address, config);\n assertAccountExists(maybeAccount);\n return maybeAccount;\n}\n\nexport async function fetchMaybeController<TAddress extends string = string>(\n rpc: Parameters<typeof fetchEncodedAccount>[0],\n address: Address<TAddress>,\n config?: FetchAccountConfig\n): Promise<MaybeAccount<Controller, TAddress>> {\n const maybeAccount = await fetchEncodedAccount(rpc, address, config);\n return decodeController(maybeAccount);\n}\n\nexport async function fetchAllController(\n rpc: Parameters<typeof fetchEncodedAccounts>[0],\n addresses: Array<Address>,\n config?: FetchAccountsConfig\n): Promise<Account<Controller>[]> {\n const maybeAccounts = await fetchAllMaybeController(rpc, addresses, config);\n assertAccountsExist(maybeAccounts);\n return maybeAccounts;\n}\n\nexport async function fetchAllMaybeController(\n rpc: Parameters<typeof fetchEncodedAccounts>[0],\n addresses: Array<Address>,\n config?: FetchAccountsConfig\n): Promise<MaybeAccount<Controller>[]> {\n const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config);\n return maybeAccounts.map((maybeAccount) => decodeController(maybeAccount));\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 Codec,\n type Decoder,\n type EncodedAccount,\n type Encoder,\n type FetchAccountConfig,\n type FetchAccountsConfig,\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 /** the controller authority // 32 */\n authority: Address;\n /** Fee vault pda address // 32 */\n feeVault: Address;\n /** Fee amount (in lamports) to create an airdrop using this controller // 8 */\n protocolFee: bigint;\n /** feebase for withdrawing fees earned from controller // 8 */\n withdrawFee: bigint;\n /** Fee amount (in lamports) to claim an airdrop created with this controller //8 */\n initControllerFee: bigint;\n /** version for later upgrades // 1 */\n version: number;\n /** PDA bump seed // 1 */\n bump: number;\n};\n\nexport type MasterArgs = {\n /** the controller authority // 32 */\n authority: Address;\n /** Fee vault pda address // 32 */\n feeVault: Address;\n /** Fee amount (in lamports) to create an airdrop using this controller // 8 */\n protocolFee: number | bigint;\n /** feebase for withdrawing fees earned from controller // 8 */\n withdrawFee: number | bigint;\n /** Fee amount (in lamports) to claim an airdrop created with this controller //8 */\n initControllerFee: number | bigint;\n /** version for later upgrades // 1 */\n version: number;\n /** PDA bump seed // 1 */\n bump: number;\n};\n\nexport function getMasterEncoder(): Encoder<MasterArgs> {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n ['authority', getAddressEncoder()],\n ['feeVault', getAddressEncoder()],\n ['protocolFee', getU64Encoder()],\n ['withdrawFee', getU64Encoder()],\n ['initControllerFee', getU64Encoder()],\n ['version', getU8Encoder()],\n ['bump', getU8Encoder()],\n ]),\n (value) => ({ ...value, discriminator: MASTER_DISCRIMINATOR })\n );\n}\n\nexport function getMasterDecoder(): Decoder<Master> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ['authority', getAddressDecoder()],\n ['feeVault', getAddressDecoder()],\n ['protocolFee', getU64Decoder()],\n ['withdrawFee', getU64Decoder()],\n ['initControllerFee', getU64Decoder()],\n ['version', getU8Decoder()],\n ['bump', getU8Decoder()],\n ]);\n}\n\nexport function getMasterCodec(): Codec<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","/**\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 getStructDecoder,\n getStructEncoder,\n getU64Decoder,\n getU64Encoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type Account,\n type Address,\n type Codec,\n type Decoder,\n type EncodedAccount,\n type Encoder,\n type FetchAccountConfig,\n type FetchAccountsConfig,\n type MaybeAccount,\n type MaybeEncodedAccount,\n type ReadonlyUint8Array,\n} from '@solana/kit';\n\nexport const STATS_DISCRIMINATOR = new Uint8Array([\n 190, 125, 51, 63, 169, 197, 36, 238,\n]);\n\nexport function getStatsDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(STATS_DISCRIMINATOR);\n}\n\nexport type Stats = {\n discriminator: ReadonlyUint8Array;\n /** initialized controllers // 8 */\n initializedControllers: bigint;\n /** initialized airdrops // 8 */\n initializedAirdrops: bigint;\n /** initialized claim_maps // 8 */\n initializedClaimMaps: bigint;\n /** closed airdrops */\n closedAirdrops: bigint;\n /** closed claim map */\n closedClaimMap: bigint;\n /** PDA bump seed */\n bump: number;\n};\n\nexport type StatsArgs = {\n /** initialized controllers // 8 */\n initializedControllers: number | bigint;\n /** initialized airdrops // 8 */\n initializedAirdrops: number | bigint;\n /** initialized claim_maps // 8 */\n initializedClaimMaps: number | bigint;\n /** closed airdrops */\n closedAirdrops: number | bigint;\n /** closed claim map */\n closedClaimMap: number | bigint;\n /** PDA bump seed */\n bump: number;\n};\n\nexport function getStatsEncoder(): Encoder<StatsArgs> {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n ['initializedControllers', getU64Encoder()],\n ['initializedAirdrops', getU64Encoder()],\n ['initializedClaimMaps', getU64Encoder()],\n ['closedAirdrops', getU64Encoder()],\n ['closedClaimMap', getU64Encoder()],\n ['bump', getU8Encoder()],\n ]),\n (value) => ({ ...value, discriminator: STATS_DISCRIMINATOR })\n );\n}\n\nexport function getStatsDecoder(): Decoder<Stats> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ['initializedControllers', getU64Decoder()],\n ['initializedAirdrops', getU64Decoder()],\n ['initializedClaimMaps', getU64Decoder()],\n ['closedAirdrops', getU64Decoder()],\n ['closedClaimMap', getU64Decoder()],\n ['bump', getU8Decoder()],\n ]);\n}\n\nexport function getStatsCodec(): Codec<StatsArgs, Stats> {\n return combineCodec(getStatsEncoder(), getStatsDecoder());\n}\n\nexport function decodeStats<TAddress extends string = string>(\n encodedAccount: EncodedAccount<TAddress>\n): Account<Stats, TAddress>;\nexport function decodeStats<TAddress extends string = string>(\n encodedAccount: MaybeEncodedAccount<TAddress>\n): MaybeAccount<Stats, TAddress>;\nexport function decodeStats<TAddress extends string = string>(\n encodedAccount: EncodedAccount<TAddress> | MaybeEncodedAccount<TAddress>\n): Account<Stats, TAddress> | MaybeAccount<Stats, TAddress> {\n return decodeAccount(\n encodedAccount as MaybeEncodedAccount<TAddress>,\n getStatsDecoder()\n );\n}\n\nexport async function fetchStats<TAddress extends string = string>(\n rpc: Parameters<typeof fetchEncodedAccount>[0],\n address: Address<TAddress>,\n config?: FetchAccountConfig\n): Promise<Account<Stats, TAddress>> {\n const maybeAccount = await fetchMaybeStats(rpc, address, config);\n assertAccountExists(maybeAccount);\n return maybeAccount;\n}\n\nexport async function fetchMaybeStats<TAddress extends string = string>(\n rpc: Parameters<typeof fetchEncodedAccount>[0],\n address: Address<TAddress>,\n config?: FetchAccountConfig\n): Promise<MaybeAccount<Stats, TAddress>> {\n const maybeAccount = await fetchEncodedAccount(rpc, address, config);\n return decodeStats(maybeAccount);\n}\n\nexport async function fetchAllStats(\n rpc: Parameters<typeof fetchEncodedAccounts>[0],\n addresses: Array<Address>,\n config?: FetchAccountsConfig\n): Promise<Account<Stats>[]> {\n const maybeAccounts = await fetchAllMaybeStats(rpc, addresses, config);\n assertAccountsExist(maybeAccounts);\n return maybeAccounts;\n}\n\nexport async function fetchAllMaybeStats(\n rpc: Parameters<typeof fetchEncodedAccounts>[0],\n addresses: Array<Address>,\n config?: FetchAccountsConfig\n): Promise<MaybeAccount<Stats>[]> {\n const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config);\n return maybeAccounts.map((maybeAccount) => decodeStats(maybeAccount));\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/** 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/** InvalidOwner: Transaction sender is not the owner */\nexport const DROPSY_ERROR__INVALID_OWNER = 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/** ControllerMismatch: Mismatched controller */\nexport const DROPSY_ERROR__CONTROLLER_MISMATCH = 0x183c; // 6204\n/** InvalidMint: Mint does not match stored state */\nexport const DROPSY_ERROR__INVALID_MINT = 0x189c; // 6300\n/** MintMismatch: Provided mint doesn't match airdrop's 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\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__CONTROLLER_MISMATCH\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__INSUFFICIENT_DEPOSIT\n | typeof DROPSY_ERROR__INSUFFICIENT_FUNDS_FOR_FEE\n | typeof DROPSY_ERROR__INSUFFICIENT_VAULT_FUNDS\n | typeof DROPSY_ERROR__INVALID_AIRDROP_PDA\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_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_OWNER\n | typeof DROPSY_ERROR__INVALID_PDA\n | typeof DROPSY_ERROR__INVALID_PROOF\n | typeof DROPSY_ERROR__INVALID_TOTAL\n | typeof DROPSY_ERROR__INVALID_TREASURY_ACCOUNT\n | typeof DROPSY_ERROR__INVALID_VAULT_AUTHORITY\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__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__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\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__CONTROLLER_MISMATCH]: `Mismatched controller`,\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__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_AIRDROP_PDA]: `Invalid vault account`,\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_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_OWNER]: `Transaction sender is not the owner`,\n [DROPSY_ERROR__INVALID_PDA]: `Invalid PDA account`,\n [DROPSY_ERROR__INVALID_PROOF]: `Invalid merkle proof`,\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__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 airdrop's mint`,\n [DROPSY_ERROR__MISSING_BITMAP_PDA]: `Missing bitmap PDA`,\n [DROPSY_ERROR__NFT_NOT_ALLOWED]: `Fungible tokens only (no NFTs)`,\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__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 };\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 ParsedClaimTokensInstruction,\n type ParsedCloseAirdropInstruction,\n type ParsedCloseBitmapInstruction,\n type ParsedDepositTokensInstruction,\n type ParsedInitializeAirdropInstruction,\n type ParsedInitializeBitmapInstruction,\n type ParsedInitializeControllerInstruction,\n type ParsedInitializeMasterInstruction,\n type ParsedWithdrawControllerFeesInstruction,\n} from '../instructions';\n\nexport const DROPSY_PROGRAM_ADDRESS =\n 'DropmEfonJRZyPaRQbPgn4nrt3cDi5678bLbzVQRvgLp' as Address<'DropmEfonJRZyPaRQbPgn4nrt3cDi5678bLbzVQRvgLp'>;\n\nexport enum DropsyAccount {\n Airdrop,\n BitmapAccount,\n Controller,\n Master,\n Stats,\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([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([152, 161, 147, 85, 213, 38, 59, 48])\n ),\n 0\n )\n ) {\n return DropsyAccount.BitmapAccount;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([184, 79, 171, 0, 183, 43, 113, 110])\n ),\n 0\n )\n ) {\n return DropsyAccount.Controller;\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 if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([190, 125, 51, 63, 169, 197, 36, 238])\n ),\n 0\n )\n ) {\n return DropsyAccount.Stats;\n }\n throw new Error(\n 'The provided account could not be identified as a dropsy account.'\n );\n}\n\nexport enum DropsyInstruction {\n ClaimTokens,\n CloseAirdrop,\n CloseBitmap,\n DepositTokens,\n InitializeAirdrop,\n InitializeBitmap,\n InitializeController,\n InitializeMaster,\n WithdrawControllerFees,\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([108, 216, 210, 231, 0, 212, 42, 64])\n ),\n 0\n )\n ) {\n return DropsyInstruction.ClaimTokens;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([85, 138, 99, 129, 104, 203, 94, 4])\n ),\n 0\n )\n ) {\n return DropsyInstruction.CloseAirdrop;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([59, 123, 115, 204, 163, 227, 37, 118])\n ),\n 0\n )\n ) {\n return DropsyInstruction.CloseBitmap;\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([96, 196, 74, 102, 61, 195, 48, 184])\n ),\n 0\n )\n ) {\n return DropsyInstruction.InitializeAirdrop;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([25, 109, 200, 45, 209, 118, 74, 69])\n ),\n 0\n )\n ) {\n return DropsyInstruction.InitializeBitmap;\n }\n if (\n containsBytes(\n data,\n fixEncoderSize(getBytesEncoder(), 8).encode(\n new Uint8Array([137, 255, 100, 190, 201, 247, 241, 81])\n ),\n 0\n )\n ) {\n return DropsyInstruction.InitializeController;\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([252, 199, 14, 46, 100, 156, 176, 230])\n ),\n 0\n )\n ) {\n return DropsyInstruction.WithdrawControllerFees;\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 = 'DropmEfonJRZyPaRQbPgn4nrt3cDi5678bLbzVQRvgLp',\n> =\n | ({\n instructionType: DropsyInstruction.ClaimTokens;\n } & ParsedClaimTokensInstruction<TProgram>)\n | ({\n instructionType: DropsyInstruction.CloseAirdrop;\n } & ParsedCloseAirdropInstruction<TProgram>)\n | ({\n instructionType: DropsyInstruction.CloseBitmap;\n } & ParsedCloseBitmapInstruction<TProgram>)\n | ({\n instructionType: DropsyInstruction.DepositTokens;\n } & ParsedDepositTokensInstruction<TProgram>)\n | ({\n instructionType: DropsyInstruction.InitializeAirdrop;\n } & ParsedInitializeAirdropInstruction<TProgram>)\n | ({\n instructionType: DropsyInstruction.InitializeBitmap;\n } & ParsedInitializeBitmapInstruction<TProgram>)\n | ({\n instructionType: DropsyInstruction.InitializeController;\n } & ParsedInitializeControllerInstruction<TProgram>)\n | ({\n instructionType: DropsyInstruction.InitializeMaster;\n } & ParsedInitializeMasterInstruction<TProgram>)\n | ({\n instructionType: DropsyInstruction.WithdrawControllerFees;\n } & ParsedWithdrawControllerFeesInstruction<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 getArrayDecoder,\n getArrayEncoder,\n getBytesDecoder,\n getBytesEncoder,\n getStructDecoder,\n getStructEncoder,\n getU64Decoder,\n getU64Encoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IAccountSignerMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\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';\n\nexport const CLAIM_TOKENS_DISCRIMINATOR = new Uint8Array([\n 108, 216, 210, 231, 0, 212, 42, 64,\n]);\n\nexport function getClaimTokensDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n CLAIM_TOKENS_DISCRIMINATOR\n );\n}\n\nexport type ClaimTokensInstruction<\n TProgram extends string = typeof DROPSY_PROGRAM_ADDRESS,\n TAccountVault extends string | IAccountMeta<string> = string,\n TAccountDestinationTokenAccount extends\n | string\n | IAccountMeta<string> = string,\n TAccountAirdrop extends string | IAccountMeta<string> = string,\n TAccountBitmap extends string | IAccountMeta<string> = string,\n TAccountMint extends string | IAccountMeta<string> = string,\n TAccountClaimer extends string | IAccountMeta<string> = string,\n TAccountTreasury extends\n | string\n | IAccountMeta<string> = 'DHffy4rNMtuL8VKgyBEay4jcq8AYHyoAzxLKU6aEijUV',\n TAccountTokenProgram extends\n | string\n | IAccountMeta<string> = 'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb',\n TAccountSystemProgram extends\n | string\n | IAccountMeta<string> = '11111111111111111111111111111111',\n TRemainingAccounts extends readonly IAccountMeta<string>[] = [],\n> = IInstruction<TProgram> &\n IInstructionWithData<Uint8Array> &\n IInstructionWithAccounts<\n [\n TAccountVault extends string\n ? WritableAccount<TAccountVault>\n : TAccountVault,\n TAccountDestinationTokenAccount extends string\n ? WritableAccount<TAccountDestinationTokenAccount>\n : TAccountDestinationTokenAccount,\n TAccountAirdrop extends string\n ? ReadonlyAccount<TAccountAirdrop>\n : TAccountAirdrop,\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 IAccountSignerMeta<TAccountClaimer>\n : TAccountClaimer,\n TAccountTreasury extends string\n ? WritableAccount<TAccountTreasury>\n : TAccountTreasury,\n TAccountTokenProgram extends string\n ? ReadonlyAccount<TAccountTokenProgram>\n : TAccountTokenProgram,\n TAccountSystemProgram extends string\n ? ReadonlyAccount<TAccountSystemProgram>\n : TAccountSystemProgram,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type ClaimTokensInstructionData = {\n discriminator: ReadonlyUint8Array;\n index: bigint;\n proof: Array<Array<number>>;\n amount: bigint;\n};\n\nexport type ClaimTokensInstructionDataArgs = {\n index: number | bigint;\n proof: Array<Array<number>>;\n amount: number | bigint;\n};\n\nexport function getClaimTokensInstructionDataEncoder(): Encoder<ClaimTokensInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n ['index', getU64Encoder()],\n ['proof', getArrayEncoder(getArrayEncoder(getU8Encoder(), { size: 32 }))],\n ['amount', getU64Encoder()],\n ]),\n (value) => ({ ...value, discriminator: CLAIM_TOKENS_DISCRIMINATOR })\n );\n}\n\nexport function getClaimTokensInstructionDataDecoder(): Decoder<ClaimTokensInstructionData> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ['index', getU64Decoder()],\n ['proof', getArrayDecoder(getArrayDecoder(getU8Decoder(), { size: 32 }))],\n ['amount', getU64Decoder()],\n ]);\n}\n\nexport function getClaimTokensInstructionDataCodec(): Codec<\n ClaimTokensInstructionDataArgs,\n ClaimTokensInstructionData\n> {\n return combineCodec(\n getClaimTokensInstructionDataEncoder(),\n getClaimTokensInstructionDataDecoder()\n );\n}\n\nexport type ClaimTokensInput<\n TAccountVault extends string = string,\n TAccountDestinationTokenAccount extends string = string,\n TAccountAirdrop extends string = string,\n TAccountBitmap extends string = string,\n TAccountMint extends string = string,\n TAccountClaimer extends string = string,\n TAccountTreasury extends string = string,\n TAccountTokenProgram extends string = string,\n TAccountSystemProgram extends string = string,\n> = {\n vault: Address<TAccountVault>;\n destinationTokenAccount: Address<TAccountDestinationTokenAccount>;\n airdrop: Address<TAccountAirdrop>;\n bitmap: Address<TAccountBitmap>;\n mint: Address<TAccountMint>;\n claimer: TransactionSigner<TAccountClaimer>;\n treasury?: Address<TAccountTreasury>;\n tokenProgram?: Address<TAccountTokenProgram>;\n systemProgram?: Address<TAccountSystemProgram>;\n index: ClaimTokensInstructionDataArgs['index'];\n proof: ClaimTokensInstructionDataArgs['proof'];\n amount: ClaimTokensInstructionDataArgs['amount'];\n};\n\nexport function getClaimTokensInstruction<\n TAccountVault extends string,\n TAccountDestinationTokenAccount extends string,\n TAccountAirdrop extends string,\n TAccountBitmap extends string,\n TAccountMint extends string,\n TAccountClaimer extends string,\n TAccountTreasury extends string,\n TAccountTokenProgram extends string,\n TAccountSystemProgram extends string,\n TProgramAddress extends Address = typeof DROPSY_PROGRAM_ADDRESS,\n>(\n input: ClaimTokensInput<\n TAccountVault,\n TAccountDestinationTokenAccount,\n TAccountAirdrop,\n TAccountBitmap,\n TAccountMint,\n TAccountClaimer,\n TAccountTreasury,\n TAccountTokenProgram,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): ClaimTokensInstruction<\n TProgramAddress,\n TAccountVault,\n TAccountDestinationTokenAccount,\n TAccountAirdrop,\n TAccountBitmap,\n TAccountMint,\n TAccountClaimer,\n TAccountTreasury,\n TAccountTokenProgram,\n TAccountSystemProgram\n> {\n // Program address.\n const programAddress = config?.programAddress ?? DROPSY_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n vault: { value: input.vault ?? null, isWritable: true },\n destinationTokenAccount: {\n value: input.destinationTokenAccount ?? null,\n isWritable: true,\n },\n airdrop: { value: input.airdrop ?? 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 treasury: { value: input.treasury ?? null, isWritable: true },\n tokenProgram: { value: input.tokenProgram ?? null, isWritable: false },\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.treasury.value) {\n accounts.treasury.value =\n 'DHffy4rNMtuL8VKgyBEay4jcq8AYHyoAzxLKU6aEijUV' as Address<'DHffy4rNMtuL8VKgyBEay4jcq8AYHyoAzxLKU6aEijUV'>;\n }\n if (!accounts.tokenProgram.value) {\n accounts.tokenProgram.value =\n 'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb' as Address<'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb'>;\n }\n if (!accounts.systemProgram.value) {\n accounts.systemProgram.value =\n '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n }\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n const instruction = {\n accounts: [\n getAccountMeta(accounts.vault),\n getAccountMeta(accounts.destinationTokenAccount),\n getAccountMeta(accounts.airdrop),\n getAccountMeta(accounts.bitmap),\n getAccountMeta(accounts.mint),\n getAccountMeta(accounts.claimer),\n getAccountMeta(accounts.treasury),\n getAccountMeta(accounts.tokenProgram),\n getAccountMeta(accounts.systemProgram),\n ],\n programAddress,\n data: getClaimTokensInstructionDataEncoder().encode(\n args as ClaimTokensInstructionDataArgs\n ),\n } as ClaimTokensInstruction<\n TProgramAddress,\n TAccountVault,\n TAccountDestinationTokenAccount,\n TAccountAirdrop,\n TAccountBitmap,\n TAccountMint,\n TAccountClaimer,\n TAccountTreasury,\n TAccountTokenProgram,\n TAccountSystemProgram\n >;\n\n return instruction;\n}\n\nexport type ParsedClaimTokensInstruction<\n TProgram extends string = typeof DROPSY_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address<TProgram>;\n accounts: {\n vault: TAccountMetas[0];\n destinationTokenAccount: TAccountMetas[1];\n airdrop: TAccountMetas[2];\n bitmap: TAccountMetas[3];\n mint: TAccountMetas[4];\n claimer: TAccountMetas[5];\n treasury: TAccountMetas[6];\n tokenProgram: TAccountMetas[7];\n systemProgram: TAccountMetas[8];\n };\n data: ClaimTokensInstructionData;\n};\n\nexport function parseClaimTokensInstruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction<TProgram> &\n IInstructionWithAccounts<TAccountMetas> &\n IInstructionWithData<Uint8Array>\n): ParsedClaimTokensInstruction<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![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n vault: getNextAccount(),\n destinationTokenAccount: getNextAccount(),\n airdrop: getNextAccount(),\n bitmap: getNextAccount(),\n mint: getNextAccount(),\n claimer: getNextAccount(),\n treasury: getNextAccount(),\n tokenProgram: getNextAccount(),\n systemProgram: getNextAccount(),\n },\n data: getClaimTokensInstructionDataDecoder().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 Address,\n type IAccountMeta,\n type IAccountSignerMeta,\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) {\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];\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 IInstructionWithByteDelta = {\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 ): IAccountMeta | IAccountSignerMeta | 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 getAddressEncoder,\n getBytesDecoder,\n getBytesEncoder,\n getProgramDerivedAddress,\n getStructDecoder,\n getStructEncoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IAccountSignerMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\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 CLOSE_AIRDROP_DISCRIMINATOR = new Uint8Array([\n 85, 138, 99, 129, 104, 203, 94, 4,\n]);\n\nexport function getCloseAirdropDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n CLOSE_AIRDROP_DISCRIMINATOR\n );\n}\n\nexport type CloseAirdropInstruction<\n TProgram extends string = typeof DROPSY_PROGRAM_ADDRESS,\n TAccountStats extends string | IAccountMeta<string> = string,\n TAccountController extends string | IAccountMeta<string> = string,\n TAccountFeeVault extends string | IAccountMeta<string> = string,\n TAccountAirdrop extends string | IAccountMeta<string> = string,\n TAccountVault extends string | IAccountMeta<string> = string,\n TAccountDestinationTokenAccount extends\n | string\n | IAccountMeta<string> = string,\n TAccountAuthority extends string | IAccountMeta<string> = string,\n TAccountMint extends string | IAccountMeta<string> = string,\n TAccountTokenProgram extends\n | string\n | IAccountMeta<string> = 'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb',\n TAccountSystemProgram extends\n | string\n | IAccountMeta<string> = '11111111111111111111111111111111',\n TRemainingAccounts extends readonly IAccountMeta<string>[] = [],\n> = IInstruction<TProgram> &\n IInstructionWithData<Uint8Array> &\n IInstructionWithAccounts<\n [\n TAccountStats extends string\n ? WritableAccount<TAccountStats>\n : TAccountStats,\n TAccountController extends string\n ? WritableAccount<TAccountController>\n : TAccountController,\n TAccountFeeVault extends string\n ? WritableAccount<TAccountFeeVault>\n : TAccountFeeVault,\n TAccountAirdrop extends string\n ? WritableAccount<TAccountAirdrop>\n : TAccountAirdrop,\n TAccountVault extends string\n ? WritableAccount<TAccountVault>\n : TAccountVault,\n TAccountDestinationTokenAccount extends string\n ? WritableAccount<TAccountDestinationTokenAccount>\n : TAccountDestinationTokenAccount,\n TAccountAuthority extends string\n ? WritableSignerAccount<TAccountAuthority> &\n IAccountSignerMeta<TAccountAuthority>\n : TAccountAuthority,\n TAccountMint extends string\n ? ReadonlyAccount<TAccountMint>\n : TAccountMint,\n TAccountTokenProgram extends string\n ? ReadonlyAccount<TAccountTokenProgram>\n : TAccountTokenProgram,\n TAccountSystemProgram extends string\n ? ReadonlyAccount<TAccountSystemProgram>\n : TAccountSystemProgram,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type CloseAirdropInstructionData = { discriminator: ReadonlyUint8Array };\n\nexport type CloseAirdropInstructionDataArgs = {};\n\nexport function getCloseAirdropInstructionDataEncoder(): Encoder<CloseAirdropInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([['discriminator', fixEncoderSize(getBytesEncoder(), 8)]]),\n (value) => ({ ...value, discriminator: CLOSE_AIRDROP_DISCRIMINATOR })\n );\n}\n\nexport function getCloseAirdropInstructionDataDecoder(): Decoder<CloseAirdropInstructionData> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ]);\n}\n\nexport function getCloseAirdropInstructionDataCodec(): Codec<\n CloseAirdropInstructionDataArgs,\n CloseAirdropInstructionData\n> {\n return combineCodec(\n getCloseAirdropInstructionDataEncoder(),\n getCloseAirdropInstructionDataDecoder()\n );\n}\n\nexport type CloseAirdropAsyncInput<\n TAccountStats extends string = string,\n TAccountController extends string = string,\n TAccountFeeVault extends string = string,\n TAccountAirdrop extends string = string,\n TAccountVault extends string = string,\n TAccountDestinationTokenAccount extends string = string,\n TAccountAuthority extends string = string,\n TAccountMint extends string = string,\n TAccountTokenProgram extends string = string,\n TAccountSystemProgram extends string = string,\n> = {\n stats?: Address<TAccountStats>;\n controller: Address<TAccountController>;\n feeVault?: Address<TAccountFeeVault>;\n airdrop: Address<TAccountAirdrop>;\n vault: Address<TAccountVault>;\n destinationTokenAccount: Address<TAccountDestinationTokenAccount>;\n authority: TransactionSigner<TAccountAuthority>;\n mint: Address<TAccountMint>;\n tokenProgram?: Address<TAccountTokenProgram>;\n systemProgram?: Address<TAccountSystemProgram>;\n};\n\nexport async function getCloseAirdropInstructionAsync<\n TAccountStats extends string,\n TAccountController extends string,\n TAccountFeeVault extends string,\n TAccountAirdrop extends string,\n TAccountVault extends string,\n TAccountDestinationTokenAccount extends string,\n TAccountAuthority extends string,\n TAccountMint extends string,\n TAccountTokenProgram extends string,\n TAccountSystemProgram extends string,\n TProgramAddress extends Address = typeof DROPSY_PROGRAM_ADDRESS,\n>(\n input: CloseAirdropAsyncInput<\n TAccountStats,\n TAccountController,\n TAccountFeeVault,\n TAccountAirdrop,\n TAccountVault,\n TAccountDestinationTokenAccount,\n TAccountAuthority,\n TAccountMint,\n TAccountTokenProgram,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): Promise<\n CloseAirdropInstruction<\n TProgramAddress,\n TAccountStats,\n TAccountController,\n TAccountFeeVault,\n TAccountAirdrop,\n TAccountVault,\n TAccountDestinationTokenAccount,\n TAccountAuthority,\n TAccountMint,\n TAccountTokenProgram,\n TAccountSystemProgram\n >\n> {\n // Program address.\n const programAddress = config?.programAddress ?? DROPSY_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n stats: { value: input.stats ?? null, isWritable: true },\n controller: { value: input.controller ?? null, isWritable: true },\n feeVault: { value: input.feeVault ?? null, isWritable: true },\n airdrop: { value: input.airdrop ?? null, isWritable: true },\n vault: { value: input.vault ?? null, isWritable: true },\n destinationTokenAccount: {\n value: input.destinationTokenAccount ?? null,\n isWritable: true,\n },\n authority: { value: input.authority ?? null, isWritable: true },\n mint: { value: input.mint ?? null, isWritable: false },\n tokenProgram: { value: input.tokenProgram ?? null, isWritable: false },\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.stats.value) {\n accounts.stats.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(new Uint8Array([115, 116, 97, 116, 115])),\n ],\n });\n }\n if (!accounts.feeVault.value) {\n accounts.feeVault.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(new Uint8Array([118, 97, 117, 108, 116])),\n getAddressEncoder().encode(expectAddress(accounts.controller.value)),\n ],\n });\n }\n if (!accounts.tokenProgram.value) {\n accounts.tokenProgram.value =\n 'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb' as Address<'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb'>;\n }\n if (!accounts.systemProgram.value) {\n accounts.systemProgram.value =\n '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n }\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n const instruction = {\n accounts: [\n getAccountMeta(accounts.stats),\n getAccountMeta(accounts.controller),\n getAccountMeta(accounts.feeVault),\n getAccountMeta(accounts.airdrop),\n getAccountMeta(accounts.vault),\n getAccountMeta(accounts.destinationTokenAccount),\n getAccountMeta(accounts.authority),\n getAccountMeta(accounts.mint),\n getAccountMeta(accounts.tokenProgram),\n getAccountMeta(accounts.systemProgram),\n ],\n programAddress,\n data: getCloseAirdropInstructionDataEncoder().encode({}),\n } as CloseAirdropInstruction<\n TProgramAddress,\n TAccountStats,\n TAccountController,\n TAccountFeeVault,\n TAccountAirdrop,\n TAccountVault,\n TAccountDestinationTokenAccount,\n TAccountAuthority,\n TAccountMint,\n TAccountTokenProgram,\n TAccountSystemProgram\n >;\n\n return instruction;\n}\n\nexport type CloseAirdropInput<\n TAccountStats extends string = string,\n TAccountController extends string = string,\n TAccountFeeVault extends string = string,\n TAccountAirdrop extends string = string,\n TAccountVault extends string = string,\n TAccountDestinationTokenAccount extends string = string,\n TAccountAuthority extends string = string,\n TAccountMint extends string = string,\n TAccountTokenProgram extends string = string,\n TAccountSystemProgram extends string = string,\n> = {\n stats: Address<TAccountStats>;\n controller: Address<TAccountController>;\n feeVault: Address<TAccountFeeVault>;\n airdrop: Address<TAccountAirdrop>;\n vault: Address<TAccountVault>;\n destinationTokenAccount: Address<TAccountDestinationTokenAccount>;\n authority: TransactionSigner<TAccountAuthority>;\n mint: Address<TAccountMint>;\n tokenProgram?: Address<TAccountTokenProgram>;\n systemProgram?: Address<TAccountSystemProgram>;\n};\n\nexport function getCloseAirdropInstruction<\n TAccountStats extends string,\n TAccountController extends string,\n TAccountFeeVault extends string,\n TAccountAirdrop extends string,\n TAccountVault extends string,\n TAccountDestinationTokenAccount extends string,\n TAccountAuthority extends string,\n TAccountMint extends string,\n TAccountTokenProgram extends string,\n TAccountSystemProgram extends string,\n TProgramAddress extends Address = typeof DROPSY_PROGRAM_ADDRESS,\n>(\n input: CloseAirdropInput<\n TAccountStats,\n TAccountController,\n TAccountFeeVault,\n TAccountAirdrop,\n TAccountVault,\n TAccountDestinationTokenAccount,\n TAccountAuthority,\n TAccountMint,\n TAccountTokenProgram,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): CloseAirdropInstruction<\n TProgramAddress,\n TAccountStats,\n TAccountController,\n TAccountFeeVault,\n TAccountAirdrop,\n TAccountVault,\n TAccountDestinationTokenAccount,\n TAccountAuthority,\n TAccountMint,\n TAccountTokenProgram,\n TAccountSystemProgram\n> {\n // Program address.\n const programAddress = config?.programAddress ?? DROPSY_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n stats: { value: input.stats ?? null, isWritable: true },\n controller: { value: input.controller ?? null, isWritable: true },\n feeVault: { value: input.feeVault ?? null, isWritable: true },\n airdrop: { value: input.airdrop ?? null, isWritable: true },\n vault: { value: input.vault ?? null, isWritable: true },\n destinationTokenAccount: {\n value: input.destinationTokenAccount ?? null,\n isWritable: true,\n },\n authority: { value: input.authority ?? null, isWritable: true },\n mint: { value: input.mint ?? null, isWritable: false },\n tokenProgram: { value: input.tokenProgram ?? null, isWritable: false },\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 'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb' as Address<'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb'>;\n }\n if (!accounts.systemProgram.value) {\n accounts.systemProgram.value =\n '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n }\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n const instruction = {\n accounts: [\n getAccountMeta(accounts.stats),\n getAccountMeta(accounts.controller),\n getAccountMeta(accounts.feeVault),\n getAccountMeta(accounts.airdrop),\n getAccountMeta(accounts.vault),\n getAccountMeta(accounts.destinationTokenAccount),\n getAccountMeta(accounts.authority),\n getAccountMeta(accounts.mint),\n getAccountMeta(accounts.tokenProgram),\n getAccountMeta(accounts.systemProgram),\n ],\n programAddress,\n data: getCloseAirdropInstructionDataEncoder().encode({}),\n } as CloseAirdropInstruction<\n TProgramAddress,\n TAccountStats,\n TAccountController,\n TAccountFeeVault,\n TAccountAirdrop,\n TAccountVault,\n TAccountDestinationTokenAccount,\n TAccountAuthority,\n TAccountMint,\n TAccountTokenProgram,\n TAccountSystemProgram\n >;\n\n return instruction;\n}\n\nexport type ParsedCloseAirdropInstruction<\n TProgram extends string = typeof DROPSY_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address<TProgram>;\n accounts: {\n stats: TAccountMetas[0];\n controller: TAccountMetas[1];\n feeVault: TAccountMetas[2];\n airdrop: TAccountMetas[3];\n vault: TAccountMetas[4];\n destinationTokenAccount: TAccountMetas[5];\n authority: TAccountMetas[6];\n mint: TAccountMetas[7];\n tokenProgram: TAccountMetas[8];\n systemProgram: TAccountMetas[9];\n };\n data: CloseAirdropInstructionData;\n};\n\nexport function parseCloseAirdropInstruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction<TProgram> &\n IInstructionWithAccounts<TAccountMetas> &\n IInstructionWithData<Uint8Array>\n): ParsedCloseAirdropInstruction<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![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n stats: getNextAccount(),\n controller: getNextAccount(),\n feeVault: getNextAccount(),\n airdrop: getNextAccount(),\n vault: getNextAccount(),\n destinationTokenAccount: getNextAccount(),\n authority: getNextAccount(),\n mint: getNextAccount(),\n tokenProgram: getNextAccount(),\n systemProgram: getNextAccount(),\n },\n data: getCloseAirdropInstructionDataDecoder().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 getBytesDecoder,\n getBytesEncoder,\n getProgramDerivedAddress,\n getStructDecoder,\n getStructEncoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IAccountSignerMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\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';\n\nexport const CLOSE_BITMAP_DISCRIMINATOR = new Uint8Array([\n 59, 123, 115, 204, 163, 227, 37, 118,\n]);\n\nexport function getCloseBitmapDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n CLOSE_BITMAP_DISCRIMINATOR\n );\n}\n\nexport type CloseBitmapInstruction<\n TProgram extends string = typeof DROPSY_PROGRAM_ADDRESS,\n TAccountMaster extends string | IAccountMeta<string> = string,\n TAccountStats extends string | IAccountMeta<string> = string,\n TAccountAirdrop extends string | IAccountMeta<string> = string,\n TAccountBitmap extends string | IAccountMeta<string> = string,\n TAccountTreasury extends\n | string\n | IAccountMeta<string> = 'DHffy4rNMtuL8VKgyBEay4jcq8AYHyoAzxLKU6aEijUV',\n TAccountAuthority extends string | IAccountMeta<string> = string,\n TAccountSystemProgram extends\n | string\n | IAccountMeta<string> = '11111111111111111111111111111111',\n TRemainingAccounts extends readonly IAccountMeta<string>[] = [],\n> = IInstruction<TProgram> &\n IInstructionWithData<Uint8Array> &\n IInstructionWithAccounts<\n [\n TAccountMaster extends string\n ? ReadonlyAccount<TAccountMaster>\n : TAccountMaster,\n TAccountStats extends string\n ? WritableAccount<TAccountStats>\n : TAccountStats,\n TAccountAirdrop extends string\n ? WritableAccount<TAccountAirdrop>\n : TAccountAirdrop,\n TAccountBitmap extends string\n ? WritableAccount<TAccountBitmap>\n : TAccountBitmap,\n TAccountTreasury extends string\n ? WritableAccount<TAccountTreasury>\n : TAccountTreasury,\n TAccountAuthority extends string\n ? WritableSignerAccount<TAccountAuthority> &\n IAccountSignerMeta<TAccountAuthority>\n : TAccountAuthority,\n TAccountSystemProgram extends string\n ? ReadonlyAccount<TAccountSystemProgram>\n : TAccountSystemProgram,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type CloseBitmapInstructionData = { discriminator: ReadonlyUint8Array };\n\nexport type CloseBitmapInstructionDataArgs = {};\n\nexport function getCloseBitmapInstructionDataEncoder(): Encoder<CloseBitmapInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([['discriminator', fixEncoderSize(getBytesEncoder(), 8)]]),\n (value) => ({ ...value, discriminator: CLOSE_BITMAP_DISCRIMINATOR })\n );\n}\n\nexport function getCloseBitmapInstructionDataDecoder(): Decoder<CloseBitmapInstructionData> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ]);\n}\n\nexport function getCloseBitmapInstructionDataCodec(): Codec<\n CloseBitmapInstructionDataArgs,\n CloseBitmapInstructionData\n> {\n return combineCodec(\n getCloseBitmapInstructionDataEncoder(),\n getCloseBitmapInstructionDataDecoder()\n );\n}\n\nexport type CloseBitmapAsyncInput<\n TAccountMaster extends string = string,\n TAccountStats extends string = string,\n TAccountAirdrop extends string = string,\n TAccountBitmap extends string = string,\n TAccountTreasury extends string = string,\n TAccountAuthority extends string = string,\n TAccountSystemProgram extends string = string,\n> = {\n master?: Address<TAccountMaster>;\n stats?: Address<TAccountStats>;\n airdrop: Address<TAccountAirdrop>;\n bitmap: Address<TAccountBitmap>;\n treasury?: Address<TAccountTreasury>;\n authority: TransactionSigner<TAccountAuthority>;\n systemProgram?: Address<TAccountSystemProgram>;\n};\n\nexport async function getCloseBitmapInstructionAsync<\n TAccountMaster extends string,\n TAccountStats extends string,\n TAccountAirdrop extends string,\n TAccountBitmap extends string,\n TAccountTreasury extends string,\n TAccountAuthority extends string,\n TAccountSystemProgram extends string,\n TProgramAddress extends Address = typeof DROPSY_PROGRAM_ADDRESS,\n>(\n input: CloseBitmapAsyncInput<\n TAccountMaster,\n TAccountStats,\n TAccountAirdrop,\n TAccountBitmap,\n TAccountTreasury,\n TAccountAuthority,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): Promise<\n CloseBitmapInstruction<\n TProgramAddress,\n TAccountMaster,\n TAccountStats,\n TAccountAirdrop,\n TAccountBitmap,\n TAccountTreasury,\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 stats: { value: input.stats ?? null, isWritable: true },\n airdrop: { value: input.airdrop ?? null, isWritable: true },\n bitmap: { value: input.bitmap ?? null, isWritable: true },\n treasury: { value: input.treasury ?? 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 // Resolve default values.\n if (!accounts.master.value) {\n accounts.master.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(\n new Uint8Array([109, 97, 115, 116, 101, 114, 51])\n ),\n ],\n });\n }\n if (!accounts.stats.value) {\n accounts.stats.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(new Uint8Array([115, 116, 97, 116, 115])),\n ],\n });\n }\n if (!accounts.treasury.value) {\n accounts.treasury.value =\n 'DHffy4rNMtuL8VKgyBEay4jcq8AYHyoAzxLKU6aEijUV' as Address<'DHffy4rNMtuL8VKgyBEay4jcq8AYHyoAzxLKU6aEijUV'>;\n }\n if (!accounts.systemProgram.value) {\n accounts.systemProgram.value =\n '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n }\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n const instruction = {\n accounts: [\n getAccountMeta(accounts.master),\n getAccountMeta(accounts.stats),\n getAccountMeta(accounts.airdrop),\n getAccountMeta(accounts.bitmap),\n getAccountMeta(accounts.treasury),\n getAccountMeta(accounts.authority),\n getAccountMeta(accounts.systemProgram),\n ],\n programAddress,\n data: getCloseBitmapInstructionDataEncoder().encode({}),\n } as CloseBitmapInstruction<\n TProgramAddress,\n TAccountMaster,\n TAccountStats,\n TAccountAirdrop,\n TAccountBitmap,\n TAccountTreasury,\n TAccountAuthority,\n TAccountSystemProgram\n >;\n\n return instruction;\n}\n\nexport type CloseBitmapInput<\n TAccountMaster extends string = string,\n TAccountStats extends string = string,\n TAccountAirdrop extends string = string,\n TAccountBitmap extends string = string,\n TAccountTreasury extends string = string,\n TAccountAuthority extends string = string,\n TAccountSystemProgram extends string = string,\n> = {\n master: Address<TAccountMaster>;\n stats: Address<TAccountStats>;\n airdrop: Address<TAccountAirdrop>;\n bitmap: Address<TAccountBitmap>;\n treasury?: Address<TAccountTreasury>;\n authority: TransactionSigner<TAccountAuthority>;\n systemProgram?: Address<TAccountSystemProgram>;\n};\n\nexport function getCloseBitmapInstruction<\n TAccountMaster extends string,\n TAccountStats extends string,\n TAccountAirdrop extends string,\n TAccountBitmap extends string,\n TAccountTreasury extends string,\n TAccountAuthority extends string,\n TAccountSystemProgram extends string,\n TProgramAddress extends Address = typeof DROPSY_PROGRAM_ADDRESS,\n>(\n input: CloseBitmapInput<\n TAccountMaster,\n TAccountStats,\n TAccountAirdrop,\n TAccountBitmap,\n TAccountTreasury,\n TAccountAuthority,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): CloseBitmapInstruction<\n TProgramAddress,\n TAccountMaster,\n TAccountStats,\n TAccountAirdrop,\n TAccountBitmap,\n TAccountTreasury,\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 stats: { value: input.stats ?? null, isWritable: true },\n airdrop: { value: input.airdrop ?? null, isWritable: true },\n bitmap: { value: input.bitmap ?? null, isWritable: true },\n treasury: { value: input.treasury ?? 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 // Resolve default values.\n if (!accounts.treasury.value) {\n accounts.treasury.value =\n 'DHffy4rNMtuL8VKgyBEay4jcq8AYHyoAzxLKU6aEijUV' as Address<'DHffy4rNMtuL8VKgyBEay4jcq8AYHyoAzxLKU6aEijUV'>;\n }\n if (!accounts.systemProgram.value) {\n accounts.systemProgram.value =\n '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n }\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n const instruction = {\n accounts: [\n getAccountMeta(accounts.master),\n getAccountMeta(accounts.stats),\n getAccountMeta(accounts.airdrop),\n getAccountMeta(accounts.bitmap),\n getAccountMeta(accounts.treasury),\n getAccountMeta(accounts.authority),\n getAccountMeta(accounts.systemProgram),\n ],\n programAddress,\n data: getCloseBitmapInstructionDataEncoder().encode({}),\n } as CloseBitmapInstruction<\n TProgramAddress,\n TAccountMaster,\n TAccountStats,\n TAccountAirdrop,\n TAccountBitmap,\n TAccountTreasury,\n TAccountAuthority,\n TAccountSystemProgram\n >;\n\n return instruction;\n}\n\nexport type ParsedCloseBitmapInstruction<\n TProgram extends string = typeof DROPSY_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address<TProgram>;\n accounts: {\n master: TAccountMetas[0];\n stats: TAccountMetas[1];\n airdrop: TAccountMetas[2];\n bitmap: TAccountMetas[3];\n treasury: TAccountMetas[4];\n authority: TAccountMetas[5];\n systemProgram: TAccountMetas[6];\n };\n data: CloseBitmapInstructionData;\n};\n\nexport function parseCloseBitmapInstruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction<TProgram> &\n IInstructionWithAccounts<TAccountMetas> &\n IInstructionWithData<Uint8Array>\n): ParsedCloseBitmapInstruction<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![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n master: getNextAccount(),\n stats: getNextAccount(),\n airdrop: getNextAccount(),\n bitmap: getNextAccount(),\n treasury: getNextAccount(),\n authority: getNextAccount(),\n systemProgram: getNextAccount(),\n },\n data: getCloseBitmapInstructionDataDecoder().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 getBytesDecoder,\n getBytesEncoder,\n getStructDecoder,\n getStructEncoder,\n getU64Decoder,\n getU64Encoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IAccountSignerMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\n type ReadonlyAccount,\n type ReadonlySignerAccount,\n type ReadonlyUint8Array,\n type TransactionSigner,\n type WritableAccount,\n} from '@solana/kit';\nimport { DROPSY_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } 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 TAccountSourceTokenAccount extends string | IAccountMeta<string> = string,\n TAccountVault extends string | IAccountMeta<string> = string,\n TAccountAirdrop extends string | IAccountMeta<string> = string,\n TAccountMint extends string | IAccountMeta<string> = string,\n TAccountAuthority extends string | IAccountMeta<string> = string,\n TAccountTokenProgram extends\n | string\n | IAccountMeta<string> = 'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb',\n TRemainingAccounts extends readonly IAccountMeta<string>[] = [],\n> = IInstruction<TProgram> &\n IInstructionWithData<Uint8Array> &\n IInstructionWithAccounts<\n [\n TAccountSourceTokenAccount extends string\n ? WritableAccount<TAccountSourceTokenAccount>\n : TAccountSourceTokenAccount,\n TAccountVault extends string\n ? WritableAccount<TAccountVault>\n : TAccountVault,\n TAccountAirdrop extends string\n ? WritableAccount<TAccountAirdrop>\n : TAccountAirdrop,\n TAccountMint extends string\n ? ReadonlyAccount<TAccountMint>\n : TAccountMint,\n TAccountAuthority extends string\n ? ReadonlySignerAccount<TAccountAuthority> &\n IAccountSignerMeta<TAccountAuthority>\n : TAccountAuthority,\n TAccountTokenProgram extends string\n ? ReadonlyAccount<TAccountTokenProgram>\n : TAccountTokenProgram,\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(): Encoder<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(): Decoder<DepositTokensInstructionData> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ['amount', getU64Decoder()],\n ]);\n}\n\nexport function getDepositTokensInstructionDataCodec(): Codec<\n DepositTokensInstructionDataArgs,\n DepositTokensInstructionData\n> {\n return combineCodec(\n getDepositTokensInstructionDataEncoder(),\n getDepositTokensInstructionDataDecoder()\n );\n}\n\nexport type DepositTokensInput<\n TAccountSourceTokenAccount extends string = string,\n TAccountVault extends string = string,\n TAccountAirdrop extends string = string,\n TAccountMint extends string = string,\n TAccountAuthority extends string = string,\n TAccountTokenProgram extends string = string,\n> = {\n sourceTokenAccount: Address<TAccountSourceTokenAccount>;\n vault: Address<TAccountVault>;\n airdrop: Address<TAccountAirdrop>;\n mint: Address<TAccountMint>;\n authority: TransactionSigner<TAccountAuthority>;\n tokenProgram?: Address<TAccountTokenProgram>;\n amount: DepositTokensInstructionDataArgs['amount'];\n};\n\nexport function getDepositTokensInstruction<\n TAccountSourceTokenAccount extends string,\n TAccountVault extends string,\n TAccountAirdrop extends string,\n TAccountMint extends string,\n TAccountAuthority extends string,\n TAccountTokenProgram extends string,\n TProgramAddress extends Address = typeof DROPSY_PROGRAM_ADDRESS,\n>(\n input: DepositTokensInput<\n TAccountSourceTokenAccount,\n TAccountVault,\n TAccountAirdrop,\n TAccountMint,\n TAccountAuthority,\n TAccountTokenProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): DepositTokensInstruction<\n TProgramAddress,\n TAccountSourceTokenAccount,\n TAccountVault,\n TAccountAirdrop,\n TAccountMint,\n TAccountAuthority,\n TAccountTokenProgram\n> {\n // Program address.\n const programAddress = config?.programAddress ?? DROPSY_PROGRAM_ADDRESS;\n\n // Original accounts.\n const originalAccounts = {\n sourceTokenAccount: {\n value: input.sourceTokenAccount ?? null,\n isWritable: true,\n },\n vault: { value: input.vault ?? 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: false },\n tokenProgram: { value: input.tokenProgram ?? 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 'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb' as Address<'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb'>;\n }\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n const instruction = {\n accounts: [\n getAccountMeta(accounts.sourceTokenAccount),\n getAccountMeta(accounts.vault),\n getAccountMeta(accounts.airdrop),\n getAccountMeta(accounts.mint),\n getAccountMeta(accounts.authority),\n getAccountMeta(accounts.tokenProgram),\n ],\n programAddress,\n data: getDepositTokensInstructionDataEncoder().encode(\n args as DepositTokensInstructionDataArgs\n ),\n } as DepositTokensInstruction<\n TProgramAddress,\n TAccountSourceTokenAccount,\n TAccountVault,\n TAccountAirdrop,\n TAccountMint,\n TAccountAuthority,\n TAccountTokenProgram\n >;\n\n return instruction;\n}\n\nexport type ParsedDepositTokensInstruction<\n TProgram extends string = typeof DROPSY_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address<TProgram>;\n accounts: {\n sourceTokenAccount: TAccountMetas[0];\n vault: TAccountMetas[1];\n airdrop: TAccountMetas[2];\n mint: TAccountMetas[3];\n authority: TAccountMetas[4];\n tokenProgram: TAccountMetas[5];\n };\n data: DepositTokensInstructionData;\n};\n\nexport function parseDepositTokensInstruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction<TProgram> &\n IInstructionWithAccounts<TAccountMetas> &\n IInstructionWithData<Uint8Array>\n): ParsedDepositTokensInstruction<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![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n sourceTokenAccount: getNextAccount(),\n vault: getNextAccount(),\n airdrop: getNextAccount(),\n mint: getNextAccount(),\n authority: getNextAccount(),\n tokenProgram: 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 getI64Decoder,\n getI64Encoder,\n getOptionDecoder,\n getOptionEncoder,\n getProgramDerivedAddress,\n getStructDecoder,\n getStructEncoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IAccountSignerMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\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 INITIALIZE_AIRDROP_DISCRIMINATOR = new Uint8Array([\n 96, 196, 74, 102, 61, 195, 48, 184,\n]);\n\nexport function getInitializeAirdropDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n INITIALIZE_AIRDROP_DISCRIMINATOR\n );\n}\n\nexport type InitializeAirdropInstruction<\n TProgram extends string = typeof DROPSY_PROGRAM_ADDRESS,\n TAccountStats extends string | IAccountMeta<string> = string,\n TAccountController extends string | IAccountMeta<string> = string,\n TAccountAirdrop extends string | IAccountMeta<string> = string,\n TAccountFeeVault extends string | IAccountMeta<string> = string,\n TAccountMint extends string | IAccountMeta<string> = string,\n TAccountAuthority extends string | IAccountMeta<string> = string,\n TAccountSystemProgram extends\n | string\n | IAccountMeta<string> = '11111111111111111111111111111111',\n TRemainingAccounts extends readonly IAccountMeta<string>[] = [],\n> = IInstruction<TProgram> &\n IInstructionWithData<Uint8Array> &\n IInstructionWithAccounts<\n [\n TAccountStats extends string\n ? WritableAccount<TAccountStats>\n : TAccountStats,\n TAccountController extends string\n ? WritableAccount<TAccountController>\n : TAccountController,\n TAccountAirdrop extends string\n ? WritableAccount<TAccountAirdrop>\n : TAccountAirdrop,\n TAccountFeeVault extends string\n ? WritableAccount<TAccountFeeVault>\n : TAccountFeeVault,\n TAccountMint extends string\n ? ReadonlyAccount<TAccountMint>\n : TAccountMint,\n TAccountAuthority extends string\n ? WritableSignerAccount<TAccountAuthority> &\n IAccountSignerMeta<TAccountAuthority>\n : TAccountAuthority,\n TAccountSystemProgram extends string\n ? ReadonlyAccount<TAccountSystemProgram>\n : TAccountSystemProgram,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type InitializeAirdropInstructionData = {\n discriminator: ReadonlyUint8Array;\n merkleRoot: Array<number>;\n startsTime: Option<bigint>;\n endTime: Option<bigint>;\n};\n\nexport type InitializeAirdropInstructionDataArgs = {\n merkleRoot: Array<number>;\n startsTime: OptionOrNullable<number | bigint>;\n endTime: OptionOrNullable<number | bigint>;\n};\n\nexport function getInitializeAirdropInstructionDataEncoder(): Encoder<InitializeAirdropInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n ['merkleRoot', getArrayEncoder(getU8Encoder(), { size: 32 })],\n ['startsTime', getOptionEncoder(getI64Encoder())],\n ['endTime', getOptionEncoder(getI64Encoder())],\n ]),\n (value) => ({ ...value, discriminator: INITIALIZE_AIRDROP_DISCRIMINATOR })\n );\n}\n\nexport function getInitializeAirdropInstructionDataDecoder(): Decoder<InitializeAirdropInstructionData> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ['merkleRoot', getArrayDecoder(getU8Decoder(), { size: 32 })],\n ['startsTime', getOptionDecoder(getI64Decoder())],\n ['endTime', getOptionDecoder(getI64Decoder())],\n ]);\n}\n\nexport function getInitializeAirdropInstructionDataCodec(): Codec<\n InitializeAirdropInstructionDataArgs,\n InitializeAirdropInstructionData\n> {\n return combineCodec(\n getInitializeAirdropInstructionDataEncoder(),\n getInitializeAirdropInstructionDataDecoder()\n );\n}\n\nexport type InitializeAirdropAsyncInput<\n TAccountStats extends string = string,\n TAccountController extends string = string,\n TAccountAirdrop extends string = string,\n TAccountFeeVault extends string = string,\n TAccountMint extends string = string,\n TAccountAuthority extends string = string,\n TAccountSystemProgram extends string = string,\n> = {\n stats?: Address<TAccountStats>;\n controller: Address<TAccountController>;\n airdrop?: Address<TAccountAirdrop>;\n feeVault?: Address<TAccountFeeVault>;\n mint: Address<TAccountMint>;\n authority: TransactionSigner<TAccountAuthority>;\n systemProgram?: Address<TAccountSystemProgram>;\n merkleRoot: InitializeAirdropInstructionDataArgs['merkleRoot'];\n startsTime: InitializeAirdropInstructionDataArgs['startsTime'];\n endTime: InitializeAirdropInstructionDataArgs['endTime'];\n};\n\nexport async function getInitializeAirdropInstructionAsync<\n TAccountStats extends string,\n TAccountController extends string,\n TAccountAirdrop extends string,\n TAccountFeeVault 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: InitializeAirdropAsyncInput<\n TAccountStats,\n TAccountController,\n TAccountAirdrop,\n TAccountFeeVault,\n TAccountMint,\n TAccountAuthority,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): Promise<\n InitializeAirdropInstruction<\n TProgramAddress,\n TAccountStats,\n TAccountController,\n TAccountAirdrop,\n TAccountFeeVault,\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 stats: { value: input.stats ?? null, isWritable: true },\n controller: { value: input.controller ?? null, isWritable: true },\n airdrop: { value: input.airdrop ?? null, isWritable: true },\n feeVault: { value: input.feeVault ?? 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.stats.value) {\n accounts.stats.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(new Uint8Array([115, 116, 97, 116, 115])),\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.feeVault.value) {\n accounts.feeVault.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(new Uint8Array([118, 97, 117, 108, 116])),\n getAddressEncoder().encode(expectAddress(accounts.controller.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 const instruction = {\n accounts: [\n getAccountMeta(accounts.stats),\n getAccountMeta(accounts.controller),\n getAccountMeta(accounts.airdrop),\n getAccountMeta(accounts.feeVault),\n getAccountMeta(accounts.mint),\n getAccountMeta(accounts.authority),\n getAccountMeta(accounts.systemProgram),\n ],\n programAddress,\n data: getInitializeAirdropInstructionDataEncoder().encode(\n args as InitializeAirdropInstructionDataArgs\n ),\n } as InitializeAirdropInstruction<\n TProgramAddress,\n TAccountStats,\n TAccountController,\n TAccountAirdrop,\n TAccountFeeVault,\n TAccountMint,\n TAccountAuthority,\n TAccountSystemProgram\n >;\n\n return instruction;\n}\n\nexport type InitializeAirdropInput<\n TAccountStats extends string = string,\n TAccountController extends string = string,\n TAccountAirdrop extends string = string,\n TAccountFeeVault extends string = string,\n TAccountMint extends string = string,\n TAccountAuthority extends string = string,\n TAccountSystemProgram extends string = string,\n> = {\n stats: Address<TAccountStats>;\n controller: Address<TAccountController>;\n airdrop: Address<TAccountAirdrop>;\n feeVault: Address<TAccountFeeVault>;\n mint: Address<TAccountMint>;\n authority: TransactionSigner<TAccountAuthority>;\n systemProgram?: Address<TAccountSystemProgram>;\n merkleRoot: InitializeAirdropInstructionDataArgs['merkleRoot'];\n startsTime: InitializeAirdropInstructionDataArgs['startsTime'];\n endTime: InitializeAirdropInstructionDataArgs['endTime'];\n};\n\nexport function getInitializeAirdropInstruction<\n TAccountStats extends string,\n TAccountController extends string,\n TAccountAirdrop extends string,\n TAccountFeeVault 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: InitializeAirdropInput<\n TAccountStats,\n TAccountController,\n TAccountAirdrop,\n TAccountFeeVault,\n TAccountMint,\n TAccountAuthority,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): InitializeAirdropInstruction<\n TProgramAddress,\n TAccountStats,\n TAccountController,\n TAccountAirdrop,\n TAccountFeeVault,\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 stats: { value: input.stats ?? null, isWritable: true },\n controller: { value: input.controller ?? null, isWritable: true },\n airdrop: { value: input.airdrop ?? null, isWritable: true },\n feeVault: { value: input.feeVault ?? 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 const instruction = {\n accounts: [\n getAccountMeta(accounts.stats),\n getAccountMeta(accounts.controller),\n getAccountMeta(accounts.airdrop),\n getAccountMeta(accounts.feeVault),\n getAccountMeta(accounts.mint),\n getAccountMeta(accounts.authority),\n getAccountMeta(accounts.systemProgram),\n ],\n programAddress,\n data: getInitializeAirdropInstructionDataEncoder().encode(\n args as InitializeAirdropInstructionDataArgs\n ),\n } as InitializeAirdropInstruction<\n TProgramAddress,\n TAccountStats,\n TAccountController,\n TAccountAirdrop,\n TAccountFeeVault,\n TAccountMint,\n TAccountAuthority,\n TAccountSystemProgram\n >;\n\n return instruction;\n}\n\nexport type ParsedInitializeAirdropInstruction<\n TProgram extends string = typeof DROPSY_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address<TProgram>;\n accounts: {\n stats: TAccountMetas[0];\n controller: TAccountMetas[1];\n airdrop: TAccountMetas[2];\n feeVault: TAccountMetas[3];\n mint: TAccountMetas[4];\n authority: TAccountMetas[5];\n systemProgram: TAccountMetas[6];\n };\n data: InitializeAirdropInstructionData;\n};\n\nexport function parseInitializeAirdropInstruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction<TProgram> &\n IInstructionWithAccounts<TAccountMetas> &\n IInstructionWithData<Uint8Array>\n): ParsedInitializeAirdropInstruction<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![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n stats: getNextAccount(),\n controller: getNextAccount(),\n airdrop: getNextAccount(),\n feeVault: getNextAccount(),\n mint: getNextAccount(),\n authority: getNextAccount(),\n systemProgram: getNextAccount(),\n },\n data: getInitializeAirdropInstructionDataDecoder().decode(instruction.data),\n };\n}\n","/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n fixDecoderSize,\n fixEncoderSize,\n getAddressEncoder,\n getBytesDecoder,\n getBytesEncoder,\n getProgramDerivedAddress,\n getStructDecoder,\n getStructEncoder,\n getU64Decoder,\n getU64Encoder,\n getU8Decoder,\n getU8Encoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IAccountSignerMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\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 INITIALIZE_BITMAP_DISCRIMINATOR = new Uint8Array([\n 25, 109, 200, 45, 209, 118, 74, 69,\n]);\n\nexport function getInitializeBitmapDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n INITIALIZE_BITMAP_DISCRIMINATOR\n );\n}\n\nexport type InitializeBitmapInstruction<\n TProgram extends string = typeof DROPSY_PROGRAM_ADDRESS,\n TAccountMaster extends string | IAccountMeta<string> = string,\n TAccountStats extends string | IAccountMeta<string> = string,\n TAccountBitmap extends string | IAccountMeta<string> = string,\n TAccountAirdrop extends string | IAccountMeta<string> = string,\n TAccountTreasury extends\n | string\n | IAccountMeta<string> = 'DHffy4rNMtuL8VKgyBEay4jcq8AYHyoAzxLKU6aEijUV',\n TAccountAuthority extends string | IAccountMeta<string> = string,\n TAccountSystemProgram extends\n | string\n | IAccountMeta<string> = '11111111111111111111111111111111',\n TRemainingAccounts extends readonly IAccountMeta<string>[] = [],\n> = IInstruction<TProgram> &\n IInstructionWithData<Uint8Array> &\n IInstructionWithAccounts<\n [\n TAccountMaster extends string\n ? ReadonlyAccount<TAccountMaster>\n : TAccountMaster,\n TAccountStats extends string\n ? WritableAccount<TAccountStats>\n : TAccountStats,\n TAccountBitmap extends string\n ? WritableAccount<TAccountBitmap>\n : TAccountBitmap,\n TAccountAirdrop extends string\n ? WritableAccount<TAccountAirdrop>\n : TAccountAirdrop,\n TAccountTreasury extends string\n ? WritableAccount<TAccountTreasury>\n : TAccountTreasury,\n TAccountAuthority extends string\n ? WritableSignerAccount<TAccountAuthority> &\n IAccountSignerMeta<TAccountAuthority>\n : TAccountAuthority,\n TAccountSystemProgram extends string\n ? ReadonlyAccount<TAccountSystemProgram>\n : TAccountSystemProgram,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type InitializeBitmapInstructionData = {\n discriminator: ReadonlyUint8Array;\n id: number;\n total: bigint;\n};\n\nexport type InitializeBitmapInstructionDataArgs = {\n id: number;\n total: number | bigint;\n};\n\nexport function getInitializeBitmapInstructionDataEncoder(): Encoder<InitializeBitmapInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n ['id', getU8Encoder()],\n ['total', getU64Encoder()],\n ]),\n (value) => ({ ...value, discriminator: INITIALIZE_BITMAP_DISCRIMINATOR })\n );\n}\n\nexport function getInitializeBitmapInstructionDataDecoder(): Decoder<InitializeBitmapInstructionData> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ['id', getU8Decoder()],\n ['total', getU64Decoder()],\n ]);\n}\n\nexport function getInitializeBitmapInstructionDataCodec(): Codec<\n InitializeBitmapInstructionDataArgs,\n InitializeBitmapInstructionData\n> {\n return combineCodec(\n getInitializeBitmapInstructionDataEncoder(),\n getInitializeBitmapInstructionDataDecoder()\n );\n}\n\nexport type InitializeBitmapAsyncInput<\n TAccountMaster extends string = string,\n TAccountStats extends string = string,\n TAccountBitmap extends string = string,\n TAccountAirdrop extends string = string,\n TAccountTreasury extends string = string,\n TAccountAuthority extends string = string,\n TAccountSystemProgram extends string = string,\n> = {\n master?: Address<TAccountMaster>;\n stats?: Address<TAccountStats>;\n bitmap?: Address<TAccountBitmap>;\n airdrop: Address<TAccountAirdrop>;\n treasury?: Address<TAccountTreasury>;\n authority: TransactionSigner<TAccountAuthority>;\n systemProgram?: Address<TAccountSystemProgram>;\n id: InitializeBitmapInstructionDataArgs['id'];\n total: InitializeBitmapInstructionDataArgs['total'];\n};\n\nexport async function getInitializeBitmapInstructionAsync<\n TAccountMaster extends string,\n TAccountStats extends string,\n TAccountBitmap extends string,\n TAccountAirdrop extends string,\n TAccountTreasury extends string,\n TAccountAuthority extends string,\n TAccountSystemProgram extends string,\n TProgramAddress extends Address = typeof DROPSY_PROGRAM_ADDRESS,\n>(\n input: InitializeBitmapAsyncInput<\n TAccountMaster,\n TAccountStats,\n TAccountBitmap,\n TAccountAirdrop,\n TAccountTreasury,\n TAccountAuthority,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): Promise<\n InitializeBitmapInstruction<\n TProgramAddress,\n TAccountMaster,\n TAccountStats,\n TAccountBitmap,\n TAccountAirdrop,\n TAccountTreasury,\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 stats: { value: input.stats ?? null, isWritable: true },\n bitmap: { value: input.bitmap ?? null, isWritable: true },\n airdrop: { value: input.airdrop ?? null, isWritable: true },\n treasury: { value: input.treasury ?? 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(\n new Uint8Array([109, 97, 115, 116, 101, 114, 51])\n ),\n ],\n });\n }\n if (!accounts.stats.value) {\n accounts.stats.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(new Uint8Array([115, 116, 97, 116, 115])),\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 getU8Encoder().encode(expectSome(args.id)),\n ],\n });\n }\n if (!accounts.treasury.value) {\n accounts.treasury.value =\n 'DHffy4rNMtuL8VKgyBEay4jcq8AYHyoAzxLKU6aEijUV' as Address<'DHffy4rNMtuL8VKgyBEay4jcq8AYHyoAzxLKU6aEijUV'>;\n }\n if (!accounts.systemProgram.value) {\n accounts.systemProgram.value =\n '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n }\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n const instruction = {\n accounts: [\n getAccountMeta(accounts.master),\n getAccountMeta(accounts.stats),\n getAccountMeta(accounts.bitmap),\n getAccountMeta(accounts.airdrop),\n getAccountMeta(accounts.treasury),\n getAccountMeta(accounts.authority),\n getAccountMeta(accounts.systemProgram),\n ],\n programAddress,\n data: getInitializeBitmapInstructionDataEncoder().encode(\n args as InitializeBitmapInstructionDataArgs\n ),\n } as InitializeBitmapInstruction<\n TProgramAddress,\n TAccountMaster,\n TAccountStats,\n TAccountBitmap,\n TAccountAirdrop,\n TAccountTreasury,\n TAccountAuthority,\n TAccountSystemProgram\n >;\n\n return instruction;\n}\n\nexport type InitializeBitmapInput<\n TAccountMaster extends string = string,\n TAccountStats extends string = string,\n TAccountBitmap extends string = string,\n TAccountAirdrop extends string = string,\n TAccountTreasury extends string = string,\n TAccountAuthority extends string = string,\n TAccountSystemProgram extends string = string,\n> = {\n master: Address<TAccountMaster>;\n stats: Address<TAccountStats>;\n bitmap: Address<TAccountBitmap>;\n airdrop: Address<TAccountAirdrop>;\n treasury?: Address<TAccountTreasury>;\n authority: TransactionSigner<TAccountAuthority>;\n systemProgram?: Address<TAccountSystemProgram>;\n id: InitializeBitmapInstructionDataArgs['id'];\n total: InitializeBitmapInstructionDataArgs['total'];\n};\n\nexport function getInitializeBitmapInstruction<\n TAccountMaster extends string,\n TAccountStats extends string,\n TAccountBitmap extends string,\n TAccountAirdrop extends string,\n TAccountTreasury extends string,\n TAccountAuthority extends string,\n TAccountSystemProgram extends string,\n TProgramAddress extends Address = typeof DROPSY_PROGRAM_ADDRESS,\n>(\n input: InitializeBitmapInput<\n TAccountMaster,\n TAccountStats,\n TAccountBitmap,\n TAccountAirdrop,\n TAccountTreasury,\n TAccountAuthority,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): InitializeBitmapInstruction<\n TProgramAddress,\n TAccountMaster,\n TAccountStats,\n TAccountBitmap,\n TAccountAirdrop,\n TAccountTreasury,\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 stats: { value: input.stats ?? null, isWritable: true },\n bitmap: { value: input.bitmap ?? null, isWritable: true },\n airdrop: { value: input.airdrop ?? null, isWritable: true },\n treasury: { value: input.treasury ?? 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.treasury.value) {\n accounts.treasury.value =\n 'DHffy4rNMtuL8VKgyBEay4jcq8AYHyoAzxLKU6aEijUV' as Address<'DHffy4rNMtuL8VKgyBEay4jcq8AYHyoAzxLKU6aEijUV'>;\n }\n if (!accounts.systemProgram.value) {\n accounts.systemProgram.value =\n '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n }\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n const instruction = {\n accounts: [\n getAccountMeta(accounts.master),\n getAccountMeta(accounts.stats),\n getAccountMeta(accounts.bitmap),\n getAccountMeta(accounts.airdrop),\n getAccountMeta(accounts.treasury),\n getAccountMeta(accounts.authority),\n getAccountMeta(accounts.systemProgram),\n ],\n programAddress,\n data: getInitializeBitmapInstructionDataEncoder().encode(\n args as InitializeBitmapInstructionDataArgs\n ),\n } as InitializeBitmapInstruction<\n TProgramAddress,\n TAccountMaster,\n TAccountStats,\n TAccountBitmap,\n TAccountAirdrop,\n TAccountTreasury,\n TAccountAuthority,\n TAccountSystemProgram\n >;\n\n return instruction;\n}\n\nexport type ParsedInitializeBitmapInstruction<\n TProgram extends string = typeof DROPSY_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address<TProgram>;\n accounts: {\n master: TAccountMetas[0];\n stats: TAccountMetas[1];\n bitmap: TAccountMetas[2];\n airdrop: TAccountMetas[3];\n treasury: TAccountMetas[4];\n authority: TAccountMetas[5];\n systemProgram: TAccountMetas[6];\n };\n data: InitializeBitmapInstructionData;\n};\n\nexport function parseInitializeBitmapInstruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction<TProgram> &\n IInstructionWithAccounts<TAccountMetas> &\n IInstructionWithData<Uint8Array>\n): ParsedInitializeBitmapInstruction<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![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n master: getNextAccount(),\n stats: getNextAccount(),\n bitmap: getNextAccount(),\n airdrop: getNextAccount(),\n treasury: getNextAccount(),\n authority: getNextAccount(),\n systemProgram: getNextAccount(),\n },\n data: getInitializeBitmapInstructionDataDecoder().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 Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IAccountSignerMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\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 INITIALIZE_CONTROLLER_DISCRIMINATOR = new Uint8Array([\n 137, 255, 100, 190, 201, 247, 241, 81,\n]);\n\nexport function getInitializeControllerDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n INITIALIZE_CONTROLLER_DISCRIMINATOR\n );\n}\n\nexport type InitializeControllerInstruction<\n TProgram extends string = typeof DROPSY_PROGRAM_ADDRESS,\n TAccountMaster extends string | IAccountMeta<string> = string,\n TAccountStats extends string | IAccountMeta<string> = string,\n TAccountController extends string | IAccountMeta<string> = string,\n TAccountFeeVault extends string | IAccountMeta<string> = string,\n TAccountTreasury extends\n | string\n | IAccountMeta<string> = 'DHffy4rNMtuL8VKgyBEay4jcq8AYHyoAzxLKU6aEijUV',\n TAccountAuthority extends string | IAccountMeta<string> = string,\n TAccountSystemProgram extends\n | string\n | IAccountMeta<string> = '11111111111111111111111111111111',\n TRemainingAccounts extends readonly IAccountMeta<string>[] = [],\n> = IInstruction<TProgram> &\n IInstructionWithData<Uint8Array> &\n IInstructionWithAccounts<\n [\n TAccountMaster extends string\n ? ReadonlyAccount<TAccountMaster>\n : TAccountMaster,\n TAccountStats extends string\n ? WritableAccount<TAccountStats>\n : TAccountStats,\n TAccountController extends string\n ? WritableAccount<TAccountController>\n : TAccountController,\n TAccountFeeVault extends string\n ? WritableAccount<TAccountFeeVault>\n : TAccountFeeVault,\n TAccountTreasury extends string\n ? WritableAccount<TAccountTreasury>\n : TAccountTreasury,\n TAccountAuthority extends string\n ? WritableSignerAccount<TAccountAuthority> &\n IAccountSignerMeta<TAccountAuthority>\n : TAccountAuthority,\n TAccountSystemProgram extends string\n ? ReadonlyAccount<TAccountSystemProgram>\n : TAccountSystemProgram,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type InitializeControllerInstructionData = {\n discriminator: ReadonlyUint8Array;\n feeLamports: bigint;\n};\n\nexport type InitializeControllerInstructionDataArgs = {\n feeLamports: number | bigint;\n};\n\nexport function getInitializeControllerInstructionDataEncoder(): Encoder<InitializeControllerInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n ['feeLamports', getU64Encoder()],\n ]),\n (value) => ({\n ...value,\n discriminator: INITIALIZE_CONTROLLER_DISCRIMINATOR,\n })\n );\n}\n\nexport function getInitializeControllerInstructionDataDecoder(): Decoder<InitializeControllerInstructionData> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ['feeLamports', getU64Decoder()],\n ]);\n}\n\nexport function getInitializeControllerInstructionDataCodec(): Codec<\n InitializeControllerInstructionDataArgs,\n InitializeControllerInstructionData\n> {\n return combineCodec(\n getInitializeControllerInstructionDataEncoder(),\n getInitializeControllerInstructionDataDecoder()\n );\n}\n\nexport type InitializeControllerAsyncInput<\n TAccountMaster extends string = string,\n TAccountStats extends string = string,\n TAccountController extends string = string,\n TAccountFeeVault extends string = string,\n TAccountTreasury extends string = string,\n TAccountAuthority extends string = string,\n TAccountSystemProgram extends string = string,\n> = {\n master?: Address<TAccountMaster>;\n stats?: Address<TAccountStats>;\n controller?: Address<TAccountController>;\n feeVault?: Address<TAccountFeeVault>;\n treasury?: Address<TAccountTreasury>;\n authority: TransactionSigner<TAccountAuthority>;\n systemProgram?: Address<TAccountSystemProgram>;\n feeLamports: InitializeControllerInstructionDataArgs['feeLamports'];\n};\n\nexport async function getInitializeControllerInstructionAsync<\n TAccountMaster extends string,\n TAccountStats extends string,\n TAccountController extends string,\n TAccountFeeVault extends string,\n TAccountTreasury extends string,\n TAccountAuthority extends string,\n TAccountSystemProgram extends string,\n TProgramAddress extends Address = typeof DROPSY_PROGRAM_ADDRESS,\n>(\n input: InitializeControllerAsyncInput<\n TAccountMaster,\n TAccountStats,\n TAccountController,\n TAccountFeeVault,\n TAccountTreasury,\n TAccountAuthority,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): Promise<\n InitializeControllerInstruction<\n TProgramAddress,\n TAccountMaster,\n TAccountStats,\n TAccountController,\n TAccountFeeVault,\n TAccountTreasury,\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 stats: { value: input.stats ?? null, isWritable: true },\n controller: { value: input.controller ?? null, isWritable: true },\n feeVault: { value: input.feeVault ?? null, isWritable: true },\n treasury: { value: input.treasury ?? 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(\n new Uint8Array([109, 97, 115, 116, 101, 114, 51])\n ),\n ],\n });\n }\n if (!accounts.stats.value) {\n accounts.stats.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(new Uint8Array([115, 116, 97, 116, 115])),\n ],\n });\n }\n if (!accounts.controller.value) {\n accounts.controller.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(\n new Uint8Array([\n 99, 111, 110, 116, 114, 111, 108, 108, 101, 114, 45, 100, 114, 111,\n 112, 115, 121,\n ])\n ),\n getAddressEncoder().encode(expectAddress(accounts.authority.value)),\n ],\n });\n }\n if (!accounts.feeVault.value) {\n accounts.feeVault.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(new Uint8Array([118, 97, 117, 108, 116])),\n getAddressEncoder().encode(expectAddress(accounts.controller.value)),\n ],\n });\n }\n if (!accounts.treasury.value) {\n accounts.treasury.value =\n 'DHffy4rNMtuL8VKgyBEay4jcq8AYHyoAzxLKU6aEijUV' as Address<'DHffy4rNMtuL8VKgyBEay4jcq8AYHyoAzxLKU6aEijUV'>;\n }\n if (!accounts.systemProgram.value) {\n accounts.systemProgram.value =\n '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n }\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n const instruction = {\n accounts: [\n getAccountMeta(accounts.master),\n getAccountMeta(accounts.stats),\n getAccountMeta(accounts.controller),\n getAccountMeta(accounts.feeVault),\n getAccountMeta(accounts.treasury),\n getAccountMeta(accounts.authority),\n getAccountMeta(accounts.systemProgram),\n ],\n programAddress,\n data: getInitializeControllerInstructionDataEncoder().encode(\n args as InitializeControllerInstructionDataArgs\n ),\n } as InitializeControllerInstruction<\n TProgramAddress,\n TAccountMaster,\n TAccountStats,\n TAccountController,\n TAccountFeeVault,\n TAccountTreasury,\n TAccountAuthority,\n TAccountSystemProgram\n >;\n\n return instruction;\n}\n\nexport type InitializeControllerInput<\n TAccountMaster extends string = string,\n TAccountStats extends string = string,\n TAccountController extends string = string,\n TAccountFeeVault extends string = string,\n TAccountTreasury extends string = string,\n TAccountAuthority extends string = string,\n TAccountSystemProgram extends string = string,\n> = {\n master: Address<TAccountMaster>;\n stats: Address<TAccountStats>;\n controller: Address<TAccountController>;\n feeVault: Address<TAccountFeeVault>;\n treasury?: Address<TAccountTreasury>;\n authority: TransactionSigner<TAccountAuthority>;\n systemProgram?: Address<TAccountSystemProgram>;\n feeLamports: InitializeControllerInstructionDataArgs['feeLamports'];\n};\n\nexport function getInitializeControllerInstruction<\n TAccountMaster extends string,\n TAccountStats extends string,\n TAccountController extends string,\n TAccountFeeVault extends string,\n TAccountTreasury extends string,\n TAccountAuthority extends string,\n TAccountSystemProgram extends string,\n TProgramAddress extends Address = typeof DROPSY_PROGRAM_ADDRESS,\n>(\n input: InitializeControllerInput<\n TAccountMaster,\n TAccountStats,\n TAccountController,\n TAccountFeeVault,\n TAccountTreasury,\n TAccountAuthority,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): InitializeControllerInstruction<\n TProgramAddress,\n TAccountMaster,\n TAccountStats,\n TAccountController,\n TAccountFeeVault,\n TAccountTreasury,\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 stats: { value: input.stats ?? null, isWritable: true },\n controller: { value: input.controller ?? null, isWritable: true },\n feeVault: { value: input.feeVault ?? null, isWritable: true },\n treasury: { value: input.treasury ?? 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.treasury.value) {\n accounts.treasury.value =\n 'DHffy4rNMtuL8VKgyBEay4jcq8AYHyoAzxLKU6aEijUV' as Address<'DHffy4rNMtuL8VKgyBEay4jcq8AYHyoAzxLKU6aEijUV'>;\n }\n if (!accounts.systemProgram.value) {\n accounts.systemProgram.value =\n '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n }\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n const instruction = {\n accounts: [\n getAccountMeta(accounts.master),\n getAccountMeta(accounts.stats),\n getAccountMeta(accounts.controller),\n getAccountMeta(accounts.feeVault),\n getAccountMeta(accounts.treasury),\n getAccountMeta(accounts.authority),\n getAccountMeta(accounts.systemProgram),\n ],\n programAddress,\n data: getInitializeControllerInstructionDataEncoder().encode(\n args as InitializeControllerInstructionDataArgs\n ),\n } as InitializeControllerInstruction<\n TProgramAddress,\n TAccountMaster,\n TAccountStats,\n TAccountController,\n TAccountFeeVault,\n TAccountTreasury,\n TAccountAuthority,\n TAccountSystemProgram\n >;\n\n return instruction;\n}\n\nexport type ParsedInitializeControllerInstruction<\n TProgram extends string = typeof DROPSY_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address<TProgram>;\n accounts: {\n master: TAccountMetas[0];\n stats: TAccountMetas[1];\n controller: TAccountMetas[2];\n feeVault: TAccountMetas[3];\n treasury: TAccountMetas[4];\n authority: TAccountMetas[5];\n systemProgram: TAccountMetas[6];\n };\n data: InitializeControllerInstructionData;\n};\n\nexport function parseInitializeControllerInstruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction<TProgram> &\n IInstructionWithAccounts<TAccountMetas> &\n IInstructionWithData<Uint8Array>\n): ParsedInitializeControllerInstruction<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![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n master: getNextAccount(),\n stats: getNextAccount(),\n controller: getNextAccount(),\n feeVault: getNextAccount(),\n treasury: getNextAccount(),\n authority: getNextAccount(),\n systemProgram: getNextAccount(),\n },\n data: getInitializeControllerInstructionDataDecoder().decode(\n instruction.data\n ),\n };\n}\n","/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n fixDecoderSize,\n fixEncoderSize,\n getBytesDecoder,\n getBytesEncoder,\n getProgramDerivedAddress,\n getStructDecoder,\n getStructEncoder,\n getU64Decoder,\n getU64Encoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IAccountSignerMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\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';\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 | IAccountMeta<string> = string,\n TAccountStats extends string | IAccountMeta<string> = string,\n TAccountFeeVault extends\n | string\n | IAccountMeta<string> = 'DHffy4rNMtuL8VKgyBEay4jcq8AYHyoAzxLKU6aEijUV',\n TAccountAuthority extends string | IAccountMeta<string> = string,\n TAccountSystemProgram extends\n | string\n | IAccountMeta<string> = '11111111111111111111111111111111',\n TRemainingAccounts extends readonly IAccountMeta<string>[] = [],\n> = IInstruction<TProgram> &\n IInstructionWithData<Uint8Array> &\n IInstructionWithAccounts<\n [\n TAccountMaster extends string\n ? WritableAccount<TAccountMaster>\n : TAccountMaster,\n TAccountStats extends string\n ? WritableAccount<TAccountStats>\n : TAccountStats,\n TAccountFeeVault extends string\n ? ReadonlyAccount<TAccountFeeVault>\n : TAccountFeeVault,\n TAccountAuthority extends string\n ? WritableSignerAccount<TAccountAuthority> &\n IAccountSignerMeta<TAccountAuthority>\n : TAccountAuthority,\n TAccountSystemProgram extends string\n ? ReadonlyAccount<TAccountSystemProgram>\n : TAccountSystemProgram,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type InitializeMasterInstructionData = {\n discriminator: ReadonlyUint8Array;\n protocolFee: bigint;\n initControllerFee: bigint;\n withdrawFee: bigint;\n};\n\nexport type InitializeMasterInstructionDataArgs = {\n protocolFee: number | bigint;\n initControllerFee: number | bigint;\n withdrawFee: number | bigint;\n};\n\nexport function getInitializeMasterInstructionDataEncoder(): Encoder<InitializeMasterInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n ['protocolFee', getU64Encoder()],\n ['initControllerFee', getU64Encoder()],\n ['withdrawFee', 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 ['protocolFee', getU64Decoder()],\n ['initControllerFee', getU64Decoder()],\n ['withdrawFee', 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 TAccountStats extends string = string,\n TAccountFeeVault extends string = string,\n TAccountAuthority extends string = string,\n TAccountSystemProgram extends string = string,\n> = {\n master?: Address<TAccountMaster>;\n stats?: Address<TAccountStats>;\n feeVault?: Address<TAccountFeeVault>;\n authority: TransactionSigner<TAccountAuthority>;\n systemProgram?: Address<TAccountSystemProgram>;\n protocolFee: InitializeMasterInstructionDataArgs['protocolFee'];\n initControllerFee: InitializeMasterInstructionDataArgs['initControllerFee'];\n withdrawFee: InitializeMasterInstructionDataArgs['withdrawFee'];\n};\n\nexport async function getInitializeMasterInstructionAsync<\n TAccountMaster extends string,\n TAccountStats extends string,\n TAccountFeeVault 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 TAccountStats,\n TAccountFeeVault,\n TAccountAuthority,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): Promise<\n InitializeMasterInstruction<\n TProgramAddress,\n TAccountMaster,\n TAccountStats,\n TAccountFeeVault,\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 stats: { value: input.stats ?? null, isWritable: true },\n feeVault: { value: input.feeVault ?? 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(\n new Uint8Array([109, 97, 115, 116, 101, 114, 51])\n ),\n ],\n });\n }\n if (!accounts.stats.value) {\n accounts.stats.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(new Uint8Array([115, 116, 97, 116, 115])),\n ],\n });\n }\n if (!accounts.feeVault.value) {\n accounts.feeVault.value =\n 'DHffy4rNMtuL8VKgyBEay4jcq8AYHyoAzxLKU6aEijUV' as Address<'DHffy4rNMtuL8VKgyBEay4jcq8AYHyoAzxLKU6aEijUV'>;\n }\n if (!accounts.systemProgram.value) {\n accounts.systemProgram.value =\n '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n }\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n const instruction = {\n accounts: [\n getAccountMeta(accounts.master),\n getAccountMeta(accounts.stats),\n getAccountMeta(accounts.feeVault),\n getAccountMeta(accounts.authority),\n getAccountMeta(accounts.systemProgram),\n ],\n programAddress,\n data: getInitializeMasterInstructionDataEncoder().encode(\n args as InitializeMasterInstructionDataArgs\n ),\n } as InitializeMasterInstruction<\n TProgramAddress,\n TAccountMaster,\n TAccountStats,\n TAccountFeeVault,\n TAccountAuthority,\n TAccountSystemProgram\n >;\n\n return instruction;\n}\n\nexport type InitializeMasterInput<\n TAccountMaster extends string = string,\n TAccountStats extends string = string,\n TAccountFeeVault extends string = string,\n TAccountAuthority extends string = string,\n TAccountSystemProgram extends string = string,\n> = {\n master: Address<TAccountMaster>;\n stats: Address<TAccountStats>;\n feeVault?: Address<TAccountFeeVault>;\n authority: TransactionSigner<TAccountAuthority>;\n systemProgram?: Address<TAccountSystemProgram>;\n protocolFee: InitializeMasterInstructionDataArgs['protocolFee'];\n initControllerFee: InitializeMasterInstructionDataArgs['initControllerFee'];\n withdrawFee: InitializeMasterInstructionDataArgs['withdrawFee'];\n};\n\nexport function getInitializeMasterInstruction<\n TAccountMaster extends string,\n TAccountStats extends string,\n TAccountFeeVault 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 TAccountStats,\n TAccountFeeVault,\n TAccountAuthority,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): InitializeMasterInstruction<\n TProgramAddress,\n TAccountMaster,\n TAccountStats,\n TAccountFeeVault,\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 stats: { value: input.stats ?? null, isWritable: true },\n feeVault: { value: input.feeVault ?? 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.feeVault.value) {\n accounts.feeVault.value =\n 'DHffy4rNMtuL8VKgyBEay4jcq8AYHyoAzxLKU6aEijUV' as Address<'DHffy4rNMtuL8VKgyBEay4jcq8AYHyoAzxLKU6aEijUV'>;\n }\n if (!accounts.systemProgram.value) {\n accounts.systemProgram.value =\n '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n }\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n const instruction = {\n accounts: [\n getAccountMeta(accounts.master),\n getAccountMeta(accounts.stats),\n getAccountMeta(accounts.feeVault),\n getAccountMeta(accounts.authority),\n getAccountMeta(accounts.systemProgram),\n ],\n programAddress,\n data: getInitializeMasterInstructionDataEncoder().encode(\n args as InitializeMasterInstructionDataArgs\n ),\n } as InitializeMasterInstruction<\n TProgramAddress,\n TAccountMaster,\n TAccountStats,\n TAccountFeeVault,\n TAccountAuthority,\n TAccountSystemProgram\n >;\n\n return instruction;\n}\n\nexport type ParsedInitializeMasterInstruction<\n TProgram extends string = typeof DROPSY_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address<TProgram>;\n accounts: {\n master: TAccountMetas[0];\n stats: TAccountMetas[1];\n feeVault: TAccountMetas[2];\n authority: TAccountMetas[3];\n systemProgram: TAccountMetas[4];\n };\n data: InitializeMasterInstructionData;\n};\n\nexport function parseInitializeMasterInstruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction<TProgram> &\n IInstructionWithAccounts<TAccountMetas> &\n IInstructionWithData<Uint8Array>\n): ParsedInitializeMasterInstruction<TProgram, TAccountMetas> {\n if (instruction.accounts.length < 5) {\n // TODO: Coded error.\n throw new Error('Not enough accounts');\n }\n let accountIndex = 0;\n const getNextAccount = () => {\n const accountMeta = instruction.accounts![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n master: getNextAccount(),\n stats: getNextAccount(),\n feeVault: getNextAccount(),\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 getU64Decoder,\n getU64Encoder,\n transformEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n type IAccountMeta,\n type IAccountSignerMeta,\n type IInstruction,\n type IInstructionWithAccounts,\n type IInstructionWithData,\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 WITHDRAW_CONTROLLER_FEES_DISCRIMINATOR = new Uint8Array([\n 252, 199, 14, 46, 100, 156, 176, 230,\n]);\n\nexport function getWithdrawControllerFeesDiscriminatorBytes() {\n return fixEncoderSize(getBytesEncoder(), 8).encode(\n WITHDRAW_CONTROLLER_FEES_DISCRIMINATOR\n );\n}\n\nexport type WithdrawControllerFeesInstruction<\n TProgram extends string = typeof DROPSY_PROGRAM_ADDRESS,\n TAccountMaster extends string | IAccountMeta<string> = string,\n TAccountController extends string | IAccountMeta<string> = string,\n TAccountFeeVault extends string | IAccountMeta<string> = string,\n TAccountAuthority extends string | IAccountMeta<string> = string,\n TAccountTreasury extends\n | string\n | IAccountMeta<string> = 'DHffy4rNMtuL8VKgyBEay4jcq8AYHyoAzxLKU6aEijUV',\n TAccountSystemProgram extends\n | string\n | IAccountMeta<string> = '11111111111111111111111111111111',\n TRemainingAccounts extends readonly IAccountMeta<string>[] = [],\n> = IInstruction<TProgram> &\n IInstructionWithData<Uint8Array> &\n IInstructionWithAccounts<\n [\n TAccountMaster extends string\n ? ReadonlyAccount<TAccountMaster>\n : TAccountMaster,\n TAccountController extends string\n ? ReadonlyAccount<TAccountController>\n : TAccountController,\n TAccountFeeVault extends string\n ? WritableAccount<TAccountFeeVault>\n : TAccountFeeVault,\n TAccountAuthority extends string\n ? WritableSignerAccount<TAccountAuthority> &\n IAccountSignerMeta<TAccountAuthority>\n : TAccountAuthority,\n TAccountTreasury extends string\n ? WritableAccount<TAccountTreasury>\n : TAccountTreasury,\n TAccountSystemProgram extends string\n ? ReadonlyAccount<TAccountSystemProgram>\n : TAccountSystemProgram,\n ...TRemainingAccounts,\n ]\n >;\n\nexport type WithdrawControllerFeesInstructionData = {\n discriminator: ReadonlyUint8Array;\n amount: bigint;\n};\n\nexport type WithdrawControllerFeesInstructionDataArgs = {\n amount: number | bigint;\n};\n\nexport function getWithdrawControllerFeesInstructionDataEncoder(): Encoder<WithdrawControllerFeesInstructionDataArgs> {\n return transformEncoder(\n getStructEncoder([\n ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n ['amount', getU64Encoder()],\n ]),\n (value) => ({\n ...value,\n discriminator: WITHDRAW_CONTROLLER_FEES_DISCRIMINATOR,\n })\n );\n}\n\nexport function getWithdrawControllerFeesInstructionDataDecoder(): Decoder<WithdrawControllerFeesInstructionData> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ['amount', getU64Decoder()],\n ]);\n}\n\nexport function getWithdrawControllerFeesInstructionDataCodec(): Codec<\n WithdrawControllerFeesInstructionDataArgs,\n WithdrawControllerFeesInstructionData\n> {\n return combineCodec(\n getWithdrawControllerFeesInstructionDataEncoder(),\n getWithdrawControllerFeesInstructionDataDecoder()\n );\n}\n\nexport type WithdrawControllerFeesAsyncInput<\n TAccountMaster extends string = string,\n TAccountController extends string = string,\n TAccountFeeVault extends string = string,\n TAccountAuthority extends string = string,\n TAccountTreasury extends string = string,\n TAccountSystemProgram extends string = string,\n> = {\n master?: Address<TAccountMaster>;\n controller?: Address<TAccountController>;\n feeVault?: Address<TAccountFeeVault>;\n authority: TransactionSigner<TAccountAuthority>;\n treasury?: Address<TAccountTreasury>;\n systemProgram?: Address<TAccountSystemProgram>;\n amount: WithdrawControllerFeesInstructionDataArgs['amount'];\n};\n\nexport async function getWithdrawControllerFeesInstructionAsync<\n TAccountMaster extends string,\n TAccountController extends string,\n TAccountFeeVault extends string,\n TAccountAuthority extends string,\n TAccountTreasury extends string,\n TAccountSystemProgram extends string,\n TProgramAddress extends Address = typeof DROPSY_PROGRAM_ADDRESS,\n>(\n input: WithdrawControllerFeesAsyncInput<\n TAccountMaster,\n TAccountController,\n TAccountFeeVault,\n TAccountAuthority,\n TAccountTreasury,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): Promise<\n WithdrawControllerFeesInstruction<\n TProgramAddress,\n TAccountMaster,\n TAccountController,\n TAccountFeeVault,\n TAccountAuthority,\n TAccountTreasury,\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 controller: { value: input.controller ?? null, isWritable: false },\n feeVault: { value: input.feeVault ?? null, isWritable: true },\n authority: { value: input.authority ?? null, isWritable: true },\n treasury: { value: input.treasury ?? 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(\n new Uint8Array([109, 97, 115, 116, 101, 114, 51])\n ),\n ],\n });\n }\n if (!accounts.controller.value) {\n accounts.controller.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(\n new Uint8Array([\n 99, 111, 110, 116, 114, 111, 108, 108, 101, 114, 45, 100, 114, 111,\n 112, 115, 121,\n ])\n ),\n getAddressEncoder().encode(expectAddress(accounts.authority.value)),\n ],\n });\n }\n if (!accounts.feeVault.value) {\n accounts.feeVault.value = await getProgramDerivedAddress({\n programAddress,\n seeds: [\n getBytesEncoder().encode(new Uint8Array([118, 97, 117, 108, 116])),\n getAddressEncoder().encode(expectAddress(accounts.controller.value)),\n ],\n });\n }\n if (!accounts.treasury.value) {\n accounts.treasury.value =\n 'DHffy4rNMtuL8VKgyBEay4jcq8AYHyoAzxLKU6aEijUV' as Address<'DHffy4rNMtuL8VKgyBEay4jcq8AYHyoAzxLKU6aEijUV'>;\n }\n if (!accounts.systemProgram.value) {\n accounts.systemProgram.value =\n '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n }\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n const instruction = {\n accounts: [\n getAccountMeta(accounts.master),\n getAccountMeta(accounts.controller),\n getAccountMeta(accounts.feeVault),\n getAccountMeta(accounts.authority),\n getAccountMeta(accounts.treasury),\n getAccountMeta(accounts.systemProgram),\n ],\n programAddress,\n data: getWithdrawControllerFeesInstructionDataEncoder().encode(\n args as WithdrawControllerFeesInstructionDataArgs\n ),\n } as WithdrawControllerFeesInstruction<\n TProgramAddress,\n TAccountMaster,\n TAccountController,\n TAccountFeeVault,\n TAccountAuthority,\n TAccountTreasury,\n TAccountSystemProgram\n >;\n\n return instruction;\n}\n\nexport type WithdrawControllerFeesInput<\n TAccountMaster extends string = string,\n TAccountController extends string = string,\n TAccountFeeVault extends string = string,\n TAccountAuthority extends string = string,\n TAccountTreasury extends string = string,\n TAccountSystemProgram extends string = string,\n> = {\n master: Address<TAccountMaster>;\n controller: Address<TAccountController>;\n feeVault: Address<TAccountFeeVault>;\n authority: TransactionSigner<TAccountAuthority>;\n treasury?: Address<TAccountTreasury>;\n systemProgram?: Address<TAccountSystemProgram>;\n amount: WithdrawControllerFeesInstructionDataArgs['amount'];\n};\n\nexport function getWithdrawControllerFeesInstruction<\n TAccountMaster extends string,\n TAccountController extends string,\n TAccountFeeVault extends string,\n TAccountAuthority extends string,\n TAccountTreasury extends string,\n TAccountSystemProgram extends string,\n TProgramAddress extends Address = typeof DROPSY_PROGRAM_ADDRESS,\n>(\n input: WithdrawControllerFeesInput<\n TAccountMaster,\n TAccountController,\n TAccountFeeVault,\n TAccountAuthority,\n TAccountTreasury,\n TAccountSystemProgram\n >,\n config?: { programAddress?: TProgramAddress }\n): WithdrawControllerFeesInstruction<\n TProgramAddress,\n TAccountMaster,\n TAccountController,\n TAccountFeeVault,\n TAccountAuthority,\n TAccountTreasury,\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 controller: { value: input.controller ?? null, isWritable: false },\n feeVault: { value: input.feeVault ?? null, isWritable: true },\n authority: { value: input.authority ?? null, isWritable: true },\n treasury: { value: input.treasury ?? 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.treasury.value) {\n accounts.treasury.value =\n 'DHffy4rNMtuL8VKgyBEay4jcq8AYHyoAzxLKU6aEijUV' as Address<'DHffy4rNMtuL8VKgyBEay4jcq8AYHyoAzxLKU6aEijUV'>;\n }\n if (!accounts.systemProgram.value) {\n accounts.systemProgram.value =\n '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n }\n\n const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n const instruction = {\n accounts: [\n getAccountMeta(accounts.master),\n getAccountMeta(accounts.controller),\n getAccountMeta(accounts.feeVault),\n getAccountMeta(accounts.authority),\n getAccountMeta(accounts.treasury),\n getAccountMeta(accounts.systemProgram),\n ],\n programAddress,\n data: getWithdrawControllerFeesInstructionDataEncoder().encode(\n args as WithdrawControllerFeesInstructionDataArgs\n ),\n } as WithdrawControllerFeesInstruction<\n TProgramAddress,\n TAccountMaster,\n TAccountController,\n TAccountFeeVault,\n TAccountAuthority,\n TAccountTreasury,\n TAccountSystemProgram\n >;\n\n return instruction;\n}\n\nexport type ParsedWithdrawControllerFeesInstruction<\n TProgram extends string = typeof DROPSY_PROGRAM_ADDRESS,\n TAccountMetas extends readonly IAccountMeta[] = readonly IAccountMeta[],\n> = {\n programAddress: Address<TProgram>;\n accounts: {\n master: TAccountMetas[0];\n controller: TAccountMetas[1];\n feeVault: TAccountMetas[2];\n authority: TAccountMetas[3];\n treasury: TAccountMetas[4];\n systemProgram: TAccountMetas[5];\n };\n data: WithdrawControllerFeesInstructionData;\n};\n\nexport function parseWithdrawControllerFeesInstruction<\n TProgram extends string,\n TAccountMetas extends readonly IAccountMeta[],\n>(\n instruction: IInstruction<TProgram> &\n IInstructionWithAccounts<TAccountMetas> &\n IInstructionWithData<Uint8Array>\n): ParsedWithdrawControllerFeesInstruction<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![accountIndex]!;\n accountIndex += 1;\n return accountMeta;\n };\n return {\n programAddress: instruction.programAddress,\n accounts: {\n master: getNextAccount(),\n controller: getNextAccount(),\n feeVault: getNextAccount(),\n authority: getNextAccount(),\n treasury: getNextAccount(),\n systemProgram: getNextAccount(),\n },\n data: getWithdrawControllerFeesInstructionDataDecoder().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 getAddressDecoder,\n getAddressEncoder,\n getI64Decoder,\n getI64Encoder,\n getStructDecoder,\n getStructEncoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\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(): Encoder<AirdropClosedArgs> {\n return getStructEncoder([\n ['airdrop', getAddressEncoder()],\n ['authority', getAddressEncoder()],\n ['timestamp', getI64Encoder()],\n ]);\n}\n\nexport function getAirdropClosedDecoder(): Decoder<AirdropClosed> {\n return getStructDecoder([\n ['airdrop', getAddressDecoder()],\n ['authority', getAddressDecoder()],\n ['timestamp', getI64Decoder()],\n ]);\n}\n\nexport function getAirdropClosedCodec(): Codec<\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 getArrayDecoder,\n getArrayEncoder,\n getI64Decoder,\n getI64Encoder,\n getStructDecoder,\n getStructEncoder,\n getU8Decoder,\n getU8Encoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n} from '@solana/kit';\n\nexport type AirdropInitialized = {\n airdrop: Address;\n mint: Address;\n authority: Address;\n controller: Address;\n controllerFeeVault: Address;\n merkleRoot: Array<number>;\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 controllerFeeVault: Address;\n merkleRoot: Array<number>;\n startTime: number | bigint;\n endTime: number | bigint;\n timestamp: number | bigint;\n};\n\nexport function getAirdropInitializedEncoder(): Encoder<AirdropInitializedArgs> {\n return getStructEncoder([\n ['airdrop', getAddressEncoder()],\n ['mint', getAddressEncoder()],\n ['authority', getAddressEncoder()],\n ['controller', getAddressEncoder()],\n ['controllerFeeVault', getAddressEncoder()],\n ['merkleRoot', getArrayEncoder(getU8Encoder(), { size: 32 })],\n ['startTime', getI64Encoder()],\n ['endTime', getI64Encoder()],\n ['timestamp', getI64Encoder()],\n ]);\n}\n\nexport function getAirdropInitializedDecoder(): Decoder<AirdropInitialized> {\n return getStructDecoder([\n ['airdrop', getAddressDecoder()],\n ['mint', getAddressDecoder()],\n ['authority', getAddressDecoder()],\n ['controller', getAddressDecoder()],\n ['controllerFeeVault', getAddressDecoder()],\n ['merkleRoot', getArrayDecoder(getU8Decoder(), { size: 32 })],\n ['startTime', getI64Decoder()],\n ['endTime', getI64Decoder()],\n ['timestamp', getI64Decoder()],\n ]);\n}\n\nexport function getAirdropInitializedCodec(): Codec<\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 Codec,\n type Decoder,\n type Encoder,\n} from '@solana/kit';\n\nexport type BitmapClosed = {\n airdrop: Address;\n bitmap: Address;\n authority: Address;\n};\n\nexport type BitmapClosedArgs = BitmapClosed;\n\nexport function getBitmapClosedEncoder(): Encoder<BitmapClosedArgs> {\n return getStructEncoder([\n ['airdrop', getAddressEncoder()],\n ['bitmap', getAddressEncoder()],\n ['authority', getAddressEncoder()],\n ]);\n}\n\nexport function getBitmapClosedDecoder(): Decoder<BitmapClosed> {\n return getStructDecoder([\n ['airdrop', getAddressDecoder()],\n ['bitmap', getAddressDecoder()],\n ['authority', getAddressDecoder()],\n ]);\n}\n\nexport function getBitmapClosedCodec(): Codec<BitmapClosedArgs, BitmapClosed> {\n return combineCodec(getBitmapClosedEncoder(), getBitmapClosedDecoder());\n}\n","/**\n * This code was AUTOGENERATED using the codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n combineCodec,\n getAddressDecoder,\n getAddressEncoder,\n getStructDecoder,\n getStructEncoder,\n getU64Decoder,\n getU64Encoder,\n getU8Decoder,\n getU8Encoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n} from '@solana/kit';\n\nexport type BitmapInitialized = {\n airdrop: Address;\n bitmap: Address;\n bitmapId: number;\n totalClaims: bigint;\n};\n\nexport type BitmapInitializedArgs = {\n airdrop: Address;\n bitmap: Address;\n bitmapId: number;\n totalClaims: number | bigint;\n};\n\nexport function getBitmapInitializedEncoder(): Encoder<BitmapInitializedArgs> {\n return getStructEncoder([\n ['airdrop', getAddressEncoder()],\n ['bitmap', getAddressEncoder()],\n ['bitmapId', getU8Encoder()],\n ['totalClaims', getU64Encoder()],\n ]);\n}\n\nexport function getBitmapInitializedDecoder(): Decoder<BitmapInitialized> {\n return getStructDecoder([\n ['airdrop', getAddressDecoder()],\n ['bitmap', getAddressDecoder()],\n ['bitmapId', getU8Decoder()],\n ['totalClaims', getU64Decoder()],\n ]);\n}\n\nexport function getBitmapInitializedCodec(): Codec<\n BitmapInitializedArgs,\n BitmapInitialized\n> {\n return combineCodec(\n getBitmapInitializedEncoder(),\n getBitmapInitializedDecoder()\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 getU8Decoder,\n getU8Encoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n} from '@solana/kit';\n\nexport type ControllerInitialized = {\n masterVault: Address;\n authority: Address;\n feeVault: Address;\n feeLamports: bigint;\n bump: number;\n timestamp: bigint;\n};\n\nexport type ControllerInitializedArgs = {\n masterVault: Address;\n authority: Address;\n feeVault: Address;\n feeLamports: number | bigint;\n bump: number;\n timestamp: number | bigint;\n};\n\nexport function getControllerInitializedEncoder(): Encoder<ControllerInitializedArgs> {\n return getStructEncoder([\n ['masterVault', getAddressEncoder()],\n ['authority', getAddressEncoder()],\n ['feeVault', getAddressEncoder()],\n ['feeLamports', getU64Encoder()],\n ['bump', getU8Encoder()],\n ['timestamp', getI64Encoder()],\n ]);\n}\n\nexport function getControllerInitializedDecoder(): Decoder<ControllerInitialized> {\n return getStructDecoder([\n ['masterVault', getAddressDecoder()],\n ['authority', getAddressDecoder()],\n ['feeVault', getAddressDecoder()],\n ['feeLamports', getU64Decoder()],\n ['bump', getU8Decoder()],\n ['timestamp', getI64Decoder()],\n ]);\n}\n\nexport function getControllerInitializedCodec(): Codec<\n ControllerInitializedArgs,\n ControllerInitialized\n> {\n return combineCodec(\n getControllerInitializedEncoder(),\n getControllerInitializedDecoder()\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 Codec,\n type Decoder,\n type Encoder,\n} from '@solana/kit';\n\nexport type FeesCollected = {\n controller: Address;\n authority: Address;\n feeVault: Address;\n amount: bigint;\n timestamp: bigint;\n};\n\nexport type FeesCollectedArgs = {\n controller: Address;\n authority: Address;\n feeVault: Address;\n amount: number | bigint;\n timestamp: number | bigint;\n};\n\nexport function getFeesCollectedEncoder(): Encoder<FeesCollectedArgs> {\n return getStructEncoder([\n ['controller', getAddressEncoder()],\n ['authority', getAddressEncoder()],\n ['feeVault', getAddressEncoder()],\n ['amount', getU64Encoder()],\n ['timestamp', getI64Encoder()],\n ]);\n}\n\nexport function getFeesCollectedDecoder(): Decoder<FeesCollected> {\n return getStructDecoder([\n ['controller', getAddressDecoder()],\n ['authority', getAddressDecoder()],\n ['feeVault', getAddressDecoder()],\n ['amount', getU64Decoder()],\n ['timestamp', getI64Decoder()],\n ]);\n}\n\nexport function getFeesCollectedCodec(): Codec<\n FeesCollectedArgs,\n FeesCollected\n> {\n return combineCodec(getFeesCollectedEncoder(), getFeesCollectedDecoder());\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 getU8Decoder,\n getU8Encoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\n} from '@solana/kit';\n\nexport type MasterInitialized = {\n authority: Address;\n feeVault: Address;\n protocolFee: bigint;\n initControllerFee: bigint;\n withdrawFee: bigint;\n bump: number;\n timestamp: bigint;\n};\n\nexport type MasterInitializedArgs = {\n authority: Address;\n feeVault: Address;\n protocolFee: number | bigint;\n initControllerFee: number | bigint;\n withdrawFee: number | bigint;\n bump: number;\n timestamp: number | bigint;\n};\n\nexport function getMasterInitializedEncoder(): Encoder<MasterInitializedArgs> {\n return getStructEncoder([\n ['authority', getAddressEncoder()],\n ['feeVault', getAddressEncoder()],\n ['protocolFee', getU64Encoder()],\n ['initControllerFee', getU64Encoder()],\n ['withdrawFee', getU64Encoder()],\n ['bump', getU8Encoder()],\n ['timestamp', getI64Encoder()],\n ]);\n}\n\nexport function getMasterInitializedDecoder(): Decoder<MasterInitialized> {\n return getStructDecoder([\n ['authority', getAddressDecoder()],\n ['feeVault', getAddressDecoder()],\n ['protocolFee', getU64Decoder()],\n ['initControllerFee', getU64Decoder()],\n ['withdrawFee', getU64Decoder()],\n ['bump', getU8Decoder()],\n ['timestamp', getI64Decoder()],\n ]);\n}\n\nexport function getMasterInitializedCodec(): Codec<\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 Codec,\n type Decoder,\n type Encoder,\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(): Encoder<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(): Decoder<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(): Codec<\n TokensDepositedArgs,\n TokensDeposited\n> {\n return combineCodec(getTokensDepositedEncoder(), getTokensDepositedDecoder());\n}\n","import {\r\n airdropFactory,\r\n appendTransactionMessageInstruction,\r\n appendTransactionMessageInstructions,\r\n createSolanaRpc,\r\n createSolanaRpcSubscriptions,\r\n createTransactionMessage,\r\n generateKeyPairSigner,\r\n IInstruction,\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 createTransactionMessageFromInstruction = async (\r\n rpc: Rpc<SolanaRpcApi>,\r\n signer: TransactionSigner,\r\n instruction: IInstruction[]\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 { airdropSeed, claimMapSeed, controllerSeed, feeVaultSeed, masterSeed, statsSeed } 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([Buffer.from(masterSeed)]);\r\n}\r\n\r\nexport async function getStatsDerivedAddress(): Promise<DropsyPda> {\r\n return await getDropsyDerivedAddress([Buffer.from(statsSeed)]);\r\n}\r\n\r\nexport async function getControllerDerivedAddress(\r\n authority: Address\r\n): Promise<DropsyPda> {\r\n const seeds = [\r\n Buffer.from(controllerSeed),\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 Buffer.from(airdropSeed),\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 getControllerVaultAddress(\r\n controller: Address\r\n): Promise<DropsyPda> {\r\n const seeds = [Buffer.from(feeVaultSeed), getAddressEncoder().encode(controller)];\r\n return await getDropsyDerivedAddress(seeds);\r\n}\r\n\r\nexport async function getClaimMapAddress(\r\n airdrop: Address,\r\n id: number\r\n): Promise<DropsyPda> {\r\n const seeds = [\r\n Buffer.from(claimMapSeed),\r\n getAddressEncoder().encode(airdrop),\r\n Buffer.from([id]),\r\n ];\r\n return await getDropsyDerivedAddress(seeds);\r\n}\r\n","export const masterSeed = \"master3\";\r\nexport const statsSeed = \"stats\";\r\nexport const controllerSeed = \"controller-dropsy\";\r\nexport const feeVaultSeed = \"vault\";\r\nexport const airdropSeed = \"airdrop\";\r\nexport const claimMapSeed = \"bitmap\";\r\n"],"mappings":"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","names":["import_kit","import_kit","import_kit","import_kit","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"]}
|
|
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/client.ts","../src/utils/derive.ts","../src/constants/index.ts","../src/utils/merkle.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 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","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","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 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};"],"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;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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","import_kit","address","MerkleTree"]}
|