PartnerOracle: {
    accounts: [
        {
            discriminator: [194, 149, 223, 142, 42, 98, 128, 16];
            name: "airdropConfig";
        },
    ];
    address: "pardpVtPjC8nLj1Dwncew62mUzfChdCX1EaoZe8oCAa";
    errors: [
        {
            code: 6000;
            msg: "Account is not authorized to execute this instruction";
            name: "unauthorized";
        },
        {
            code: 6001;
            msg: "Arithmetic Error (overflow/underflow)";
            name: "arithmeticError";
        },
        {
            code: 6100;
            msg: "Provided expiry ts is invalid";
            name: "invalidExpiry";
        },
        {
            code: 6101;
            msg: "No expired fees found, transaction won't change the config";
            name: "noExpiredFees";
        },
        {
            code: 6200;
            msg: "Received invalid Vesting Fee configuration";
            name: "invalidVestingFee";
        },
        {
            code: 6300;
            msg: "Received invalid Airdrop Fee configuration";
            name: "invalidAirdropFee";
        },
        {
            code: 6301;
            msg: "Airdrop config is full, can not write fees";
            name: "airdropConfigFull";
        },
    ];
    instructions: [
        {
            accounts: [
                {
                    docs: ["Account that stores the config"];
                    name: "config";
                    pda: {
                        seeds: [
                            {
                                kind: "const";
                                value: [
                                    97,
                                    105,
                                    114,
                                    100,
                                    114,
                                    111,
                                    112,
                                    95,
                                    99,
                                    111,
                                    110,
                                    102,
                                    105,
                                    103,
                                ];
                            },
                        ];
                    };
                    writable: true;
                },
            ];
            args: [];
            discriminator: [203, 5, 237, 235, 32, 38, 150, 235];
            name: "airdropClearExpiredFees";
        },
        {
            accounts: [
                {
                    docs: ["Account that stores the config"];
                    name: "config";
                    pda: {
                        seeds: [
                            {
                                kind: "const";
                                value: [
                                    97,
                                    105,
                                    114,
                                    100,
                                    114,
                                    111,
                                    112,
                                    95,
                                    99,
                                    111,
                                    110,
                                    102,
                                    105,
                                    103,
                                ];
                            },
                        ];
                    };
                },
            ];
            args: [{ name: "pubkey"; type: "pubkey" }];
            discriminator: [185, 20, 28, 207, 70, 243, 32, 62];
            name: "airdropGetFees";
            returns: { defined: { name: "airdropFees" } };
        },
        {
            accounts: [
                {
                    docs: [
                        "Account that will cover tx fees, can be anybody since the instruction is safe",
                    ];
                    name: "payer";
                    signer: true;
                    writable: true;
                },
                {
                    name: "config";
                    pda: {
                        seeds: [
                            {
                                kind: "const";
                                value: [
                                    97,
                                    105,
                                    114,
                                    100,
                                    114,
                                    111,
                                    112,
                                    95,
                                    99,
                                    111,
                                    110,
                                    102,
                                    105,
                                    103,
                                ];
                            },
                        ];
                    };
                    writable: true;
                },
                { address: "11111111111111111111111111111111"; name: "systemProgram" },
            ];
            args: [];
            discriminator: [2, 110, 102, 10, 34, 83, 164, 55];
            name: "airdropInitializeConfig";
        },
        {
            accounts: [
                {
                    address: "CgdggophaMCFRP8gA1QjrZHsHaNQgByhBU7zoF5TpXF7";
                    docs: ["Fee Authority"];
                    name: "authority";
                    signer: true;
                    writable: true;
                },
                {
                    docs: ["Account that stores the config"];
                    name: "config";
                    pda: {
                        seeds: [
                            {
                                kind: "const";
                                value: [
                                    97,
                                    105,
                                    114,
                                    100,
                                    114,
                                    111,
                                    112,
                                    95,
                                    99,
                                    111,
                                    110,
                                    102,
                                    105,
                                    103,
                                ];
                            },
                        ];
                    };
                    writable: true;
                },
            ];
            args: [{ name: "pubkey"; type: "pubkey" }];
            discriminator: [119, 246, 202, 91, 59, 94, 252, 239];
            name: "airdropRemoveFees";
        },
        {
            accounts: [
                {
                    address: "CgdggophaMCFRP8gA1QjrZHsHaNQgByhBU7zoF5TpXF7";
                    docs: ["Fee Authority"];
                    name: "authority";
                    signer: true;
                    writable: true;
                },
                {
                    docs: ["Account that stores the config"];
                    name: "config";
                    pda: {
                        seeds: [
                            {
                                kind: "const";
                                value: [
                                    97,
                                    105,
                                    114,
                                    100,
                                    114,
                                    111,
                                    112,
                                    95,
                                    99,
                                    111,
                                    110,
                                    102,
                                    105,
                                    103,
                                ];
                            },
                        ];
                    };
                    writable: true;
                },
            ];
            args: [
                { name: "creationFee"; type: "u32" },
                { name: "priceOracleFee"; type: "u32" },
                { name: "claimMinFee"; type: "u32" },
                { name: "claimMaxFee"; type: "u32" },
                { name: "allocationFactor"; type: "f64" },
                { name: "clawbackTokenFeePercent"; type: "f64" },
            ];
            discriminator: [37, 104, 254, 202, 136, 124, 245, 94];
            name: "airdropWriteDefaultFees";
        },
        {
            accounts: [
                {
                    address: "CgdggophaMCFRP8gA1QjrZHsHaNQgByhBU7zoF5TpXF7";
                    docs: ["Fee Authority"];
                    name: "authority";
                    signer: true;
                    writable: true;
                },
                {
                    docs: ["Account that stores the config"];
                    name: "config";
                    pda: {
                        seeds: [
                            {
                                kind: "const";
                                value: [
                                    97,
                                    105,
                                    114,
                                    100,
                                    114,
                                    111,
                                    112,
                                    95,
                                    99,
                                    111,
                                    110,
                                    102,
                                    105,
                                    103,
                                ];
                            },
                        ];
                    };
                    writable: true;
                },
            ];
            args: [
                { name: "pubkey"; type: "pubkey" },
                { name: "creationFee"; type: "u32" },
                { name: "priceOracleFee"; type: "u32" },
                { name: "claimMinFee"; type: "u32" },
                { name: "claimMaxFee"; type: "u32" },
                { name: "allocationFactor"; type: "f64" },
                { name: "clawbackTokenFeePercent"; type: "f64" },
                { name: "expiryTs"; type: "u64" },
            ];
            discriminator: [71, 165, 178, 215, 19, 70, 146, 71];
            name: "airdropWriteFees";
        },
        {
            accounts: [
                {
                    name: "partners";
                    pda: {
                        seeds: [
                            {
                                kind: "const";
                                value: [115, 116, 114, 109, 95, 102, 101, 101, 115];
                            },
                        ];
                    };
                },
            ];
            args: [{ name: "pubkey"; type: "pubkey" }];
            discriminator: [239, 230, 28, 173, 134, 247, 57, 176];
            name: "vestingGetFees";
            returns: { defined: { name: "vestingFees" } };
        },
        {
            accounts: [
                {
                    docs: [
                        "Account that will cover tx fees, can be anybody since the instruction is safe",
                    ];
                    name: "payer";
                    signer: true;
                    writable: true;
                },
                {
                    name: "partners";
                    pda: {
                        seeds: [
                            {
                                kind: "const";
                                value: [115, 116, 114, 109, 95, 102, 101, 101, 115];
                            },
                        ];
                    };
                    writable: true;
                },
                { address: "11111111111111111111111111111111"; name: "systemProgram" },
            ];
            args: [];
            discriminator: [205, 170, 148, 219, 143, 38, 77, 196];
            name: "vestingInitializePartners";
        },
        {
            accounts: [
                {
                    address: "CgdggophaMCFRP8gA1QjrZHsHaNQgByhBU7zoF5TpXF7";
                    docs: [
                        "Account that will cover tx fees, should be equal to creator if not is not expired",
                    ];
                    name: "authority";
                    signer: true;
                    writable: true;
                },
                {
                    name: "partners";
                    pda: {
                        seeds: [
                            {
                                kind: "const";
                                value: [115, 116, 114, 109, 95, 102, 101, 101, 115];
                            },
                        ];
                    };
                    writable: true;
                },
            ];
            args: [{ name: "pubkey"; type: "pubkey" }];
            discriminator: [233, 176, 222, 64, 79, 14, 48, 168];
            name: "vestingRemoveFees";
        },
        {
            accounts: [
                {
                    address: "CgdggophaMCFRP8gA1QjrZHsHaNQgByhBU7zoF5TpXF7";
                    docs: [
                        "Account that will cover tx fees, should be equal to creator if not is not expired",
                    ];
                    name: "authority";
                    signer: true;
                    writable: true;
                },
                {
                    name: "partners";
                    pda: {
                        seeds: [
                            {
                                kind: "const";
                                value: [115, 116, 114, 109, 95, 102, 101, 101, 115];
                            },
                        ];
                    };
                    writable: true;
                },
            ];
            args: [
                { name: "creationFee"; type: "u32" },
                { name: "autoClaimFee"; type: "u32" },
                { name: "tokenFeePercent"; type: "f32" },
            ];
            discriminator: [96, 198, 97, 81, 162, 50, 51, 10];
            name: "vestingWriteDefaultFees";
        },
        {
            accounts: [
                {
                    address: "CgdggophaMCFRP8gA1QjrZHsHaNQgByhBU7zoF5TpXF7";
                    docs: [
                        "Account that will cover tx fees, should be equal to creator if not is not expired",
                    ];
                    name: "authority";
                    signer: true;
                    writable: true;
                },
                {
                    name: "partners";
                    pda: {
                        seeds: [
                            {
                                kind: "const";
                                value: [115, 116, 114, 109, 95, 102, 101, 101, 115];
                            },
                        ];
                    };
                    writable: true;
                },
            ];
            args: [
                { name: "pubkey"; type: "pubkey" },
                { name: "creationFee"; type: "u32" },
                { name: "autoClaimFee"; type: "u32" },
                { name: "tokenFeePercent"; type: "f32" },
            ];
            discriminator: [251, 24, 6, 241, 182, 56, 93, 100];
            name: "vestingWriteFees";
        },
    ];
    metadata: {
        description: "Created with Anchor";
        name: "partnerOracle";
        spec: "0.1.0";
        version: "1.0.0";
    };
    types: [
        {
            name: "airdropConfig";
            repr: { kind: "c" };
            serialization: "bytemuck";
            type: {
                fields: [
                    { name: "version"; type: "u32" },
                    {
                        docs: ["Multiplier to apply when calculating ALL fees"];
                        name: "usdMultiplier";
                        type: "f32";
                    },
                    { docs: ["Last solana price used"]; name: "solanaPrice"; type: "u64" },
                    { docs: ["Creation SOL fee"]; name: "creationFee"; type: "u32" },
                    {
                        docs: ["Fee for custom price oracle used in dynamic airdrops"];
                        name: "priceOracleFee";
                        type: "u32";
                    },
                    {
                        docs: ["Dynamic claim fee in SOL, min"];
                        name: "claimMinFee";
                        type: "u32";
                    },
                    {
                        docs: ["Dynamic claim fee in SOL, max"];
                        name: "claimMaxFee";
                        type: "u32";
                    },
                    {
                        docs: ["Factor to multiple claimable SOL by when calculating fee"];
                        name: "allocationFactor";
                        type: "f64";
                    },
                    {
                        docs: ["Toke % fee on clawback"];
                        name: "clawbackTokenFeePercent";
                        type: "f64";
                    },
                    { name: "buffer"; type: { array: ["u8", 144] } },
                    {
                        name: "partners";
                        type: { array: [{ defined: { name: "airdropPartner" } }, 100] };
                    },
                ];
                kind: "struct";
            };
        },
        {
            name: "airdropFees";
            type: {
                fields: [
                    {
                        docs: ["Account for which the fees were configured"];
                        name: "pubkey";
                        type: "pubkey";
                    },
                    { docs: ["Creation SOL fee"]; name: "creationFee"; type: "u32" },
                    {
                        docs: ["Fee for custom price oracle used in dynamic airdrops"];
                        name: "priceOracleFee";
                        type: "u32";
                    },
                    {
                        docs: ["Dynamic claim fee in SOL, min"];
                        name: "claimMinFee";
                        type: "u32";
                    },
                    {
                        docs: ["Dynamic claim fee in SOL, max"];
                        name: "claimMaxFee";
                        type: "u32";
                    },
                    {
                        docs: ["Factor to multiple claimable SOL by when calculating fee"];
                        name: "allocationFactor";
                        type: "f64";
                    },
                    {
                        docs: ["Token % fee on clawback"];
                        name: "clawbackTokenFeePercent";
                        type: "f64";
                    },
                ];
                kind: "struct";
            };
        },
        {
            name: "airdropPartner";
            repr: { kind: "c" };
            serialization: "bytemuck";
            type: {
                fields: [
                    { docs: ["Pubkey of the partner"]; name: "pubkey"; type: "pubkey" },
                    { docs: ["Creation SOL fee"]; name: "creationFee"; type: "u32" },
                    {
                        docs: ["Fee for custom price oracle used in dynamic airdrops"];
                        name: "priceOracleFee";
                        type: "u32";
                    },
                    {
                        docs: ["Dynamic claim fee in SOL, min"];
                        name: "claimMinFee";
                        type: "u32";
                    },
                    {
                        docs: ["Dynamic claim fee in SOL, max"];
                        name: "claimMaxFee";
                        type: "u32";
                    },
                    {
                        docs: ["Factor to multiple claimable SOL by when calculating fee"];
                        name: "allocationFactor";
                        type: "f64";
                    },
                    {
                        docs: ["Toke % fee on clawback"];
                        name: "clawbackTokenFeePercent";
                        type: "f64";
                    },
                    {
                        docs: ["Time when fee configuration expires"];
                        name: "expiryTs";
                        type: "u64";
                    },
                    {
                        docs: ["Buffer for additional fields"];
                        name: "buffer";
                        type: { array: ["u8", 16] };
                    },
                ];
                kind: "struct";
            };
        },
        {
            name: "vestingFees";
            type: {
                fields: [
                    { name: "pubkey"; type: "pubkey" },
                    { name: "creationFee"; type: "u32" },
                    { name: "autoClaimFee"; type: "u32" },
                    { name: "tokenFeePercent"; type: "f32" },
                ];
                kind: "struct";
            };
        },
    ];
}

Program IDL in camelCase format in order to be used in JS/TS.

Note that this is only a type helper and is not the actual IDL. The original IDL can be found at target/idl/partner_oracle.json.

Type declaration

  • accounts: [
        {
            discriminator: [194, 149, 223, 142, 42, 98, 128, 16];
            name: "airdropConfig";
        },
    ]
  • address: "pardpVtPjC8nLj1Dwncew62mUzfChdCX1EaoZe8oCAa"
  • errors: [
        {
            code: 6000;
            msg: "Account is not authorized to execute this instruction";
            name: "unauthorized";
        },
        {
            code: 6001;
            msg: "Arithmetic Error (overflow/underflow)";
            name: "arithmeticError";
        },
        { code: 6100; msg: "Provided expiry ts is invalid"; name: "invalidExpiry" },
        {
            code: 6101;
            msg: "No expired fees found, transaction won't change the config";
            name: "noExpiredFees";
        },
        {
            code: 6200;
            msg: "Received invalid Vesting Fee configuration";
            name: "invalidVestingFee";
        },
        {
            code: 6300;
            msg: "Received invalid Airdrop Fee configuration";
            name: "invalidAirdropFee";
        },
        {
            code: 6301;
            msg: "Airdrop config is full, can not write fees";
            name: "airdropConfigFull";
        },
    ]
  • instructions: [
        {
            accounts: [
                {
                    docs: ["Account that stores the config"];
                    name: "config";
                    pda: {
                        seeds: [
                            {
                                kind: "const";
                                value: [
                                    97,
                                    105,
                                    114,
                                    100,
                                    114,
                                    111,
                                    112,
                                    95,
                                    99,
                                    111,
                                    110,
                                    102,
                                    105,
                                    103,
                                ];
                            },
                        ];
                    };
                    writable: true;
                },
            ];
            args: [];
            discriminator: [203, 5, 237, 235, 32, 38, 150, 235];
            name: "airdropClearExpiredFees";
        },
        {
            accounts: [
                {
                    docs: ["Account that stores the config"];
                    name: "config";
                    pda: {
                        seeds: [
                            {
                                kind: "const";
                                value: [
                                    97,
                                    105,
                                    114,
                                    100,
                                    114,
                                    111,
                                    112,
                                    95,
                                    99,
                                    111,
                                    110,
                                    102,
                                    105,
                                    103,
                                ];
                            },
                        ];
                    };
                },
            ];
            args: [{ name: "pubkey"; type: "pubkey" }];
            discriminator: [185, 20, 28, 207, 70, 243, 32, 62];
            name: "airdropGetFees";
            returns: { defined: { name: "airdropFees" } };
        },
        {
            accounts: [
                {
                    docs: [
                        "Account that will cover tx fees, can be anybody since the instruction is safe",
                    ];
                    name: "payer";
                    signer: true;
                    writable: true;
                },
                {
                    name: "config";
                    pda: {
                        seeds: [
                            {
                                kind: "const";
                                value: [
                                    97,
                                    105,
                                    114,
                                    100,
                                    114,
                                    111,
                                    112,
                                    95,
                                    99,
                                    111,
                                    110,
                                    102,
                                    105,
                                    103,
                                ];
                            },
                        ];
                    };
                    writable: true;
                },
                { address: "11111111111111111111111111111111"; name: "systemProgram" },
            ];
            args: [];
            discriminator: [2, 110, 102, 10, 34, 83, 164, 55];
            name: "airdropInitializeConfig";
        },
        {
            accounts: [
                {
                    address: "CgdggophaMCFRP8gA1QjrZHsHaNQgByhBU7zoF5TpXF7";
                    docs: ["Fee Authority"];
                    name: "authority";
                    signer: true;
                    writable: true;
                },
                {
                    docs: ["Account that stores the config"];
                    name: "config";
                    pda: {
                        seeds: [
                            {
                                kind: "const";
                                value: [
                                    97,
                                    105,
                                    114,
                                    100,
                                    114,
                                    111,
                                    112,
                                    95,
                                    99,
                                    111,
                                    110,
                                    102,
                                    105,
                                    103,
                                ];
                            },
                        ];
                    };
                    writable: true;
                },
            ];
            args: [{ name: "pubkey"; type: "pubkey" }];
            discriminator: [119, 246, 202, 91, 59, 94, 252, 239];
            name: "airdropRemoveFees";
        },
        {
            accounts: [
                {
                    address: "CgdggophaMCFRP8gA1QjrZHsHaNQgByhBU7zoF5TpXF7";
                    docs: ["Fee Authority"];
                    name: "authority";
                    signer: true;
                    writable: true;
                },
                {
                    docs: ["Account that stores the config"];
                    name: "config";
                    pda: {
                        seeds: [
                            {
                                kind: "const";
                                value: [
                                    97,
                                    105,
                                    114,
                                    100,
                                    114,
                                    111,
                                    112,
                                    95,
                                    99,
                                    111,
                                    110,
                                    102,
                                    105,
                                    103,
                                ];
                            },
                        ];
                    };
                    writable: true;
                },
            ];
            args: [
                { name: "creationFee"; type: "u32" },
                { name: "priceOracleFee"; type: "u32" },
                { name: "claimMinFee"; type: "u32" },
                { name: "claimMaxFee"; type: "u32" },
                { name: "allocationFactor"; type: "f64" },
                { name: "clawbackTokenFeePercent"; type: "f64" },
            ];
            discriminator: [37, 104, 254, 202, 136, 124, 245, 94];
            name: "airdropWriteDefaultFees";
        },
        {
            accounts: [
                {
                    address: "CgdggophaMCFRP8gA1QjrZHsHaNQgByhBU7zoF5TpXF7";
                    docs: ["Fee Authority"];
                    name: "authority";
                    signer: true;
                    writable: true;
                },
                {
                    docs: ["Account that stores the config"];
                    name: "config";
                    pda: {
                        seeds: [
                            {
                                kind: "const";
                                value: [
                                    97,
                                    105,
                                    114,
                                    100,
                                    114,
                                    111,
                                    112,
                                    95,
                                    99,
                                    111,
                                    110,
                                    102,
                                    105,
                                    103,
                                ];
                            },
                        ];
                    };
                    writable: true;
                },
            ];
            args: [
                { name: "pubkey"; type: "pubkey" },
                { name: "creationFee"; type: "u32" },
                { name: "priceOracleFee"; type: "u32" },
                { name: "claimMinFee"; type: "u32" },
                { name: "claimMaxFee"; type: "u32" },
                { name: "allocationFactor"; type: "f64" },
                { name: "clawbackTokenFeePercent"; type: "f64" },
                { name: "expiryTs"; type: "u64" },
            ];
            discriminator: [71, 165, 178, 215, 19, 70, 146, 71];
            name: "airdropWriteFees";
        },
        {
            accounts: [
                {
                    name: "partners";
                    pda: {
                        seeds: [
                            {
                                kind: "const";
                                value: [115, 116, 114, 109, 95, 102, 101, 101, 115];
                            },
                        ];
                    };
                },
            ];
            args: [{ name: "pubkey"; type: "pubkey" }];
            discriminator: [239, 230, 28, 173, 134, 247, 57, 176];
            name: "vestingGetFees";
            returns: { defined: { name: "vestingFees" } };
        },
        {
            accounts: [
                {
                    docs: [
                        "Account that will cover tx fees, can be anybody since the instruction is safe",
                    ];
                    name: "payer";
                    signer: true;
                    writable: true;
                },
                {
                    name: "partners";
                    pda: {
                        seeds: [
                            {
                                kind: "const";
                                value: [115, 116, 114, 109, 95, 102, 101, 101, 115];
                            },
                        ];
                    };
                    writable: true;
                },
                { address: "11111111111111111111111111111111"; name: "systemProgram" },
            ];
            args: [];
            discriminator: [205, 170, 148, 219, 143, 38, 77, 196];
            name: "vestingInitializePartners";
        },
        {
            accounts: [
                {
                    address: "CgdggophaMCFRP8gA1QjrZHsHaNQgByhBU7zoF5TpXF7";
                    docs: [
                        "Account that will cover tx fees, should be equal to creator if not is not expired",
                    ];
                    name: "authority";
                    signer: true;
                    writable: true;
                },
                {
                    name: "partners";
                    pda: {
                        seeds: [
                            {
                                kind: "const";
                                value: [115, 116, 114, 109, 95, 102, 101, 101, 115];
                            },
                        ];
                    };
                    writable: true;
                },
            ];
            args: [{ name: "pubkey"; type: "pubkey" }];
            discriminator: [233, 176, 222, 64, 79, 14, 48, 168];
            name: "vestingRemoveFees";
        },
        {
            accounts: [
                {
                    address: "CgdggophaMCFRP8gA1QjrZHsHaNQgByhBU7zoF5TpXF7";
                    docs: [
                        "Account that will cover tx fees, should be equal to creator if not is not expired",
                    ];
                    name: "authority";
                    signer: true;
                    writable: true;
                },
                {
                    name: "partners";
                    pda: {
                        seeds: [
                            {
                                kind: "const";
                                value: [115, 116, 114, 109, 95, 102, 101, 101, 115];
                            },
                        ];
                    };
                    writable: true;
                },
            ];
            args: [
                { name: "creationFee"; type: "u32" },
                { name: "autoClaimFee"; type: "u32" },
                { name: "tokenFeePercent"; type: "f32" },
            ];
            discriminator: [96, 198, 97, 81, 162, 50, 51, 10];
            name: "vestingWriteDefaultFees";
        },
        {
            accounts: [
                {
                    address: "CgdggophaMCFRP8gA1QjrZHsHaNQgByhBU7zoF5TpXF7";
                    docs: [
                        "Account that will cover tx fees, should be equal to creator if not is not expired",
                    ];
                    name: "authority";
                    signer: true;
                    writable: true;
                },
                {
                    name: "partners";
                    pda: {
                        seeds: [
                            {
                                kind: "const";
                                value: [115, 116, 114, 109, 95, 102, 101, 101, 115];
                            },
                        ];
                    };
                    writable: true;
                },
            ];
            args: [
                { name: "pubkey"; type: "pubkey" },
                { name: "creationFee"; type: "u32" },
                { name: "autoClaimFee"; type: "u32" },
                { name: "tokenFeePercent"; type: "f32" },
            ];
            discriminator: [251, 24, 6, 241, 182, 56, 93, 100];
            name: "vestingWriteFees";
        },
    ]
  • metadata: {
        description: "Created with Anchor";
        name: "partnerOracle";
        spec: "0.1.0";
        version: "1.0.0";
    }
  • types: [
        {
            name: "airdropConfig";
            repr: { kind: "c" };
            serialization: "bytemuck";
            type: {
                fields: [
                    { name: "version"; type: "u32" },
                    {
                        docs: ["Multiplier to apply when calculating ALL fees"];
                        name: "usdMultiplier";
                        type: "f32";
                    },
                    { docs: ["Last solana price used"]; name: "solanaPrice"; type: "u64" },
                    { docs: ["Creation SOL fee"]; name: "creationFee"; type: "u32" },
                    {
                        docs: ["Fee for custom price oracle used in dynamic airdrops"];
                        name: "priceOracleFee";
                        type: "u32";
                    },
                    {
                        docs: ["Dynamic claim fee in SOL, min"];
                        name: "claimMinFee";
                        type: "u32";
                    },
                    {
                        docs: ["Dynamic claim fee in SOL, max"];
                        name: "claimMaxFee";
                        type: "u32";
                    },
                    {
                        docs: ["Factor to multiple claimable SOL by when calculating fee"];
                        name: "allocationFactor";
                        type: "f64";
                    },
                    {
                        docs: ["Toke % fee on clawback"];
                        name: "clawbackTokenFeePercent";
                        type: "f64";
                    },
                    { name: "buffer"; type: { array: ["u8", 144] } },
                    {
                        name: "partners";
                        type: { array: [{ defined: { name: "airdropPartner" } }, 100] };
                    },
                ];
                kind: "struct";
            };
        },
        {
            name: "airdropFees";
            type: {
                fields: [
                    {
                        docs: ["Account for which the fees were configured"];
                        name: "pubkey";
                        type: "pubkey";
                    },
                    { docs: ["Creation SOL fee"]; name: "creationFee"; type: "u32" },
                    {
                        docs: ["Fee for custom price oracle used in dynamic airdrops"];
                        name: "priceOracleFee";
                        type: "u32";
                    },
                    {
                        docs: ["Dynamic claim fee in SOL, min"];
                        name: "claimMinFee";
                        type: "u32";
                    },
                    {
                        docs: ["Dynamic claim fee in SOL, max"];
                        name: "claimMaxFee";
                        type: "u32";
                    },
                    {
                        docs: ["Factor to multiple claimable SOL by when calculating fee"];
                        name: "allocationFactor";
                        type: "f64";
                    },
                    {
                        docs: ["Token % fee on clawback"];
                        name: "clawbackTokenFeePercent";
                        type: "f64";
                    },
                ];
                kind: "struct";
            };
        },
        {
            name: "airdropPartner";
            repr: { kind: "c" };
            serialization: "bytemuck";
            type: {
                fields: [
                    { docs: ["Pubkey of the partner"]; name: "pubkey"; type: "pubkey" },
                    { docs: ["Creation SOL fee"]; name: "creationFee"; type: "u32" },
                    {
                        docs: ["Fee for custom price oracle used in dynamic airdrops"];
                        name: "priceOracleFee";
                        type: "u32";
                    },
                    {
                        docs: ["Dynamic claim fee in SOL, min"];
                        name: "claimMinFee";
                        type: "u32";
                    },
                    {
                        docs: ["Dynamic claim fee in SOL, max"];
                        name: "claimMaxFee";
                        type: "u32";
                    },
                    {
                        docs: ["Factor to multiple claimable SOL by when calculating fee"];
                        name: "allocationFactor";
                        type: "f64";
                    },
                    {
                        docs: ["Toke % fee on clawback"];
                        name: "clawbackTokenFeePercent";
                        type: "f64";
                    },
                    {
                        docs: ["Time when fee configuration expires"];
                        name: "expiryTs";
                        type: "u64";
                    },
                    {
                        docs: ["Buffer for additional fields"];
                        name: "buffer";
                        type: { array: ["u8", 16] };
                    },
                ];
                kind: "struct";
            };
        },
        {
            name: "vestingFees";
            type: {
                fields: [
                    { name: "pubkey"; type: "pubkey" },
                    { name: "creationFee"; type: "u32" },
                    { name: "autoClaimFee"; type: "u32" },
                    { name: "tokenFeePercent"; type: "f32" },
                ];
                kind: "struct";
            };
        },
    ]