UNPKG

micro-sol-signer

Version:

Create, sign & decode Solana transactions with minimum deps

7,980 lines 391 kB
declare const _default: {
    readonly kind: "rootNode";
    readonly standard: "codama";
    readonly version: "1.0.0";
    readonly program: {
        readonly kind: "programNode";
        readonly name: "token-2022";
        readonly publicKey: "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb";
        readonly version: "3.0.2";
        readonly origin: "shank";
        readonly docs: readonly [];
        readonly accounts: readonly [{
            readonly kind: "accountNode";
            readonly name: "mint";
            readonly docs: readonly [];
            readonly data: {
                readonly kind: "structTypeNode";
                readonly fields: readonly [{
                    readonly kind: "structFieldTypeNode";
                    readonly name: "mintAuthority";
                    readonly docs: readonly ["Optional authority used to mint new tokens. The mint authority may only", "be provided during mint creation. If no mint authority is present", "then the mint has a fixed supply and no further tokens may be minted."];
                    readonly type: {
                        readonly kind: "optionTypeNode";
                        readonly fixed: true;
                        readonly item: {
                            readonly kind: "publicKeyTypeNode";
                        };
                        readonly prefix: {
                            readonly kind: "numberTypeNode";
                            readonly format: "u32";
                            readonly endian: "le";
                        };
                    };
                }, {
                    readonly kind: "structFieldTypeNode";
                    readonly name: "supply";
                    readonly docs: readonly ["Total supply of tokens."];
                    readonly type: {
                        readonly kind: "numberTypeNode";
                        readonly format: "u64";
                        readonly endian: "le";
                    };
                }, {
                    readonly kind: "structFieldTypeNode";
                    readonly name: "decimals";
                    readonly docs: readonly ["Number of base 10 digits to the right of the decimal place."];
                    readonly type: {
                        readonly kind: "numberTypeNode";
                        readonly format: "u8";
                        readonly endian: "le";
                    };
                }, {
                    readonly kind: "structFieldTypeNode";
                    readonly name: "isInitialized";
                    readonly docs: readonly ["Is `true` if this structure has been initialized."];
                    readonly type: {
                        readonly kind: "booleanTypeNode";
                        readonly size: {
                            readonly kind: "numberTypeNode";
                            readonly format: "u8";
                            readonly endian: "le";
                        };
                    };
                }, {
                    readonly kind: "structFieldTypeNode";
                    readonly name: "freezeAuthority";
                    readonly docs: readonly ["Optional authority to freeze token accounts."];
                    readonly type: {
                        readonly kind: "optionTypeNode";
                        readonly fixed: true;
                        readonly item: {
                            readonly kind: "publicKeyTypeNode";
                        };
                        readonly prefix: {
                            readonly kind: "numberTypeNode";
                            readonly format: "u32";
                            readonly endian: "le";
                        };
                    };
                }, {
                    readonly kind: "structFieldTypeNode";
                    readonly name: "extensions";
                    readonly docs: readonly ["The extensions activated on the mint account."];
                    readonly type: {
                        readonly kind: "remainderOptionTypeNode";
                        readonly item: {
                            readonly kind: "hiddenPrefixTypeNode";
                            readonly type: {
                                readonly kind: "arrayTypeNode";
                                readonly item: {
                                    readonly kind: "definedTypeLinkNode";
                                    readonly name: "extension";
                                };
                                readonly count: {
                                    readonly kind: "remainderCountNode";
                                };
                            };
                            readonly prefix: readonly [{
                                readonly kind: "constantValueNode";
                                readonly type: {
                                    readonly kind: "preOffsetTypeNode";
                                    readonly offset: 83;
                                    readonly strategy: "padded";
                                    readonly type: {
                                        readonly kind: "numberTypeNode";
                                        readonly format: "u8";
                                        readonly endian: "le";
                                    };
                                };
                                readonly value: {
                                    readonly kind: "numberValueNode";
                                    readonly number: 1;
                                };
                            }];
                        };
                    };
                }];
            };
            readonly discriminators: readonly [{
                readonly kind: "sizeDiscriminatorNode";
                readonly size: 82;
            }];
        }, {
            readonly kind: "accountNode";
            readonly name: "token";
            readonly docs: readonly [];
            readonly data: {
                readonly kind: "structTypeNode";
                readonly fields: readonly [{
                    readonly kind: "structFieldTypeNode";
                    readonly name: "mint";
                    readonly docs: readonly ["The mint associated with this account."];
                    readonly type: {
                        readonly kind: "publicKeyTypeNode";
                    };
                }, {
                    readonly kind: "structFieldTypeNode";
                    readonly name: "owner";
                    readonly docs: readonly ["The owner of this account."];
                    readonly type: {
                        readonly kind: "publicKeyTypeNode";
                    };
                }, {
                    readonly kind: "structFieldTypeNode";
                    readonly name: "amount";
                    readonly docs: readonly ["The amount of tokens this account holds."];
                    readonly type: {
                        readonly kind: "numberTypeNode";
                        readonly format: "u64";
                        readonly endian: "le";
                    };
                }, {
                    readonly kind: "structFieldTypeNode";
                    readonly name: "delegate";
                    readonly docs: readonly ["If `delegate` is `Some` then `delegated_amount` represents", "the amount authorized by the delegate."];
                    readonly type: {
                        readonly kind: "optionTypeNode";
                        readonly fixed: true;
                        readonly item: {
                            readonly kind: "publicKeyTypeNode";
                        };
                        readonly prefix: {
                            readonly kind: "numberTypeNode";
                            readonly format: "u32";
                            readonly endian: "le";
                        };
                    };
                }, {
                    readonly kind: "structFieldTypeNode";
                    readonly name: "state";
                    readonly docs: readonly ["The account's state."];
                    readonly type: {
                        readonly kind: "definedTypeLinkNode";
                        readonly name: "accountState";
                    };
                }, {
                    readonly kind: "structFieldTypeNode";
                    readonly name: "isNative";
                    readonly docs: readonly ["If is_native.is_some, this is a native token, and the value logs the", "rent-exempt reserve. An Account is required to be rent-exempt, so", "the value is used by the Processor to ensure that wrapped SOL", "accounts do not drop below this threshold."];
                    readonly type: {
                        readonly kind: "optionTypeNode";
                        readonly fixed: true;
                        readonly item: {
                            readonly kind: "numberTypeNode";
                            readonly format: "u64";
                            readonly endian: "le";
                        };
                        readonly prefix: {
                            readonly kind: "numberTypeNode";
                            readonly format: "u32";
                            readonly endian: "le";
                        };
                    };
                }, {
                    readonly kind: "structFieldTypeNode";
                    readonly name: "delegatedAmount";
                    readonly docs: readonly ["The amount delegated."];
                    readonly type: {
                        readonly kind: "numberTypeNode";
                        readonly format: "u64";
                        readonly endian: "le";
                    };
                }, {
                    readonly kind: "structFieldTypeNode";
                    readonly name: "closeAuthority";
                    readonly docs: readonly ["Optional authority to close the account."];
                    readonly type: {
                        readonly kind: "optionTypeNode";
                        readonly fixed: true;
                        readonly item: {
                            readonly kind: "publicKeyTypeNode";
                        };
                        readonly prefix: {
                            readonly kind: "numberTypeNode";
                            readonly format: "u32";
                            readonly endian: "le";
                        };
                    };
                }, {
                    readonly kind: "structFieldTypeNode";
                    readonly name: "extensions";
                    readonly docs: readonly ["The extensions activated on the token account."];
                    readonly type: {
                        readonly kind: "remainderOptionTypeNode";
                        readonly item: {
                            readonly kind: "hiddenPrefixTypeNode";
                            readonly type: {
                                readonly kind: "arrayTypeNode";
                                readonly item: {
                                    readonly kind: "definedTypeLinkNode";
                                    readonly name: "extension";
                                };
                                readonly count: {
                                    readonly kind: "remainderCountNode";
                                };
                            };
                            readonly prefix: readonly [{
                                readonly kind: "constantValueNode";
                                readonly type: {
                                    readonly kind: "numberTypeNode";
                                    readonly format: "u8";
                                    readonly endian: "le";
                                };
                                readonly value: {
                                    readonly kind: "numberValueNode";
                                    readonly number: 2;
                                };
                            }];
                        };
                    };
                }];
            };
            readonly discriminators: readonly [{
                readonly kind: "sizeDiscriminatorNode";
                readonly size: 165;
            }];
        }, {
            readonly kind: "accountNode";
            readonly name: "multisig";
            readonly size: 355;
            readonly docs: readonly [];
            readonly data: {
                readonly kind: "structTypeNode";
                readonly fields: readonly [{
                    readonly kind: "structFieldTypeNode";
                    readonly name: "m";
                    readonly docs: readonly ["Number of signers required."];
                    readonly type: {
                        readonly kind: "numberTypeNode";
                        readonly format: "u8";
                        readonly endian: "le";
                    };
                }, {
                    readonly kind: "structFieldTypeNode";
                    readonly name: "n";
                    readonly docs: readonly ["Number of valid signers."];
                    readonly type: {
                        readonly kind: "numberTypeNode";
                        readonly format: "u8";
                        readonly endian: "le";
                    };
                }, {
                    readonly kind: "structFieldTypeNode";
                    readonly name: "isInitialized";
                    readonly docs: readonly ["Is `true` if this structure has been initialized."];
                    readonly type: {
                        readonly kind: "booleanTypeNode";
                        readonly size: {
                            readonly kind: "numberTypeNode";
                            readonly format: "u8";
                            readonly endian: "le";
                        };
                    };
                }, {
                    readonly kind: "structFieldTypeNode";
                    readonly name: "signers";
                    readonly docs: readonly ["Signer public keys."];
                    readonly type: {
                        readonly kind: "arrayTypeNode";
                        readonly item: {
                            readonly kind: "publicKeyTypeNode";
                        };
                        readonly count: {
                            readonly kind: "fixedCountNode";
                            readonly value: 11;
                        };
                    };
                }];
            };
            readonly discriminators: readonly [{
                readonly kind: "sizeDiscriminatorNode";
                readonly size: 355;
            }];
        }];
        readonly instructions: readonly [{
            readonly kind: "instructionNode";
            readonly name: "initializeMint";
            readonly docs: readonly ["Initializes a new mint and optionally deposits all the newly minted", "tokens in an account.", "", "The `InitializeMint` instruction requires no signers and MUST be", "included within the same Transaction as the system program's", "`CreateAccount` instruction that creates the account being initialized.", "Otherwise another party can acquire ownership of the uninitialized account."];
            readonly optionalAccountStrategy: "programId";
            readonly accounts: readonly [{
                readonly kind: "instructionAccountNode";
                readonly name: "mint";
                readonly isWritable: true;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly ["Token mint account."];
            }, {
                readonly kind: "instructionAccountNode";
                readonly name: "rent";
                readonly isWritable: false;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly ["Rent sysvar."];
                readonly defaultValue: {
                    readonly kind: "publicKeyValueNode";
                    readonly publicKey: "SysvarRent111111111111111111111111111111111";
                };
            }];
            readonly arguments: readonly [{
                readonly kind: "instructionArgumentNode";
                readonly name: "discriminator";
                readonly defaultValueStrategy: "omitted";
                readonly docs: readonly [];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u8";
                    readonly endian: "le";
                };
                readonly defaultValue: {
                    readonly kind: "numberValueNode";
                    readonly number: 0;
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "decimals";
                readonly docs: readonly ["Number of decimals in token account amounts."];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u8";
                    readonly endian: "le";
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "mintAuthority";
                readonly docs: readonly ["Minting authority."];
                readonly type: {
                    readonly kind: "publicKeyTypeNode";
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "freezeAuthority";
                readonly docs: readonly ["Optional authority that can freeze token accounts."];
                readonly type: {
                    readonly kind: "optionTypeNode";
                    readonly fixed: false;
                    readonly item: {
                        readonly kind: "publicKeyTypeNode";
                    };
                    readonly prefix: {
                        readonly kind: "numberTypeNode";
                        readonly format: "u8";
                        readonly endian: "le";
                    };
                };
                readonly defaultValue: {
                    readonly kind: "noneValueNode";
                };
            }];
            readonly discriminators: readonly [{
                readonly kind: "fieldDiscriminatorNode";
                readonly name: "discriminator";
                readonly offset: 0;
            }];
        }, {
            readonly kind: "instructionNode";
            readonly name: "initializeAccount";
            readonly docs: readonly ["Initializes a new account to hold tokens. If this account is associated", "with the native mint then the token balance of the initialized account", "will be equal to the amount of SOL in the account. If this account is", "associated with another mint, that mint must be initialized before this", "command can succeed.", "", "The `InitializeAccount` instruction requires no signers and MUST be", "included within the same Transaction as the system program's", "`CreateAccount` instruction that creates the account being initialized.", "Otherwise another party can acquire ownership of the uninitialized account."];
            readonly optionalAccountStrategy: "programId";
            readonly accounts: readonly [{
                readonly kind: "instructionAccountNode";
                readonly name: "account";
                readonly isWritable: true;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly ["The account to initialize."];
            }, {
                readonly kind: "instructionAccountNode";
                readonly name: "mint";
                readonly isWritable: false;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly ["The mint this account will be associated with."];
            }, {
                readonly kind: "instructionAccountNode";
                readonly name: "owner";
                readonly isWritable: false;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly ["The new account's owner/multisignature."];
            }, {
                readonly kind: "instructionAccountNode";
                readonly name: "rent";
                readonly isWritable: false;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly ["Rent sysvar."];
                readonly defaultValue: {
                    readonly kind: "publicKeyValueNode";
                    readonly publicKey: "SysvarRent111111111111111111111111111111111";
                };
            }];
            readonly arguments: readonly [{
                readonly kind: "instructionArgumentNode";
                readonly name: "discriminator";
                readonly defaultValueStrategy: "omitted";
                readonly docs: readonly [];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u8";
                    readonly endian: "le";
                };
                readonly defaultValue: {
                    readonly kind: "numberValueNode";
                    readonly number: 1;
                };
            }];
            readonly discriminators: readonly [{
                readonly kind: "fieldDiscriminatorNode";
                readonly name: "discriminator";
                readonly offset: 0;
            }];
        }, {
            readonly kind: "instructionNode";
            readonly name: "initializeMultisig";
            readonly docs: readonly ["Initializes a multisignature account with N provided signers.", "", "Multisignature accounts can used in place of any single owner/delegate", "accounts in any token instruction that require an owner/delegate to be", "present. The variant field represents the number of signers (M)", "required to validate this multisignature account.", "", "The `InitializeMultisig` instruction requires no signers and MUST be", "included within the same Transaction as the system program's", "`CreateAccount` instruction that creates the account being initialized.", "Otherwise another party can acquire ownership of the uninitialized account."];
            readonly optionalAccountStrategy: "programId";
            readonly accounts: readonly [{
                readonly kind: "instructionAccountNode";
                readonly name: "multisig";
                readonly isWritable: true;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly ["The multisignature account to initialize."];
            }, {
                readonly kind: "instructionAccountNode";
                readonly name: "rent";
                readonly isWritable: false;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly ["Rent sysvar."];
                readonly defaultValue: {
                    readonly kind: "publicKeyValueNode";
                    readonly publicKey: "SysvarRent111111111111111111111111111111111";
                };
            }];
            readonly arguments: readonly [{
                readonly kind: "instructionArgumentNode";
                readonly name: "discriminator";
                readonly defaultValueStrategy: "omitted";
                readonly docs: readonly [];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u8";
                    readonly endian: "le";
                };
                readonly defaultValue: {
                    readonly kind: "numberValueNode";
                    readonly number: 2;
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "m";
                readonly docs: readonly ["The number of signers (M) required to validate this multisignature account."];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u8";
                    readonly endian: "le";
                };
            }];
            readonly remainingAccounts: readonly [{
                readonly kind: "instructionRemainingAccountsNode";
                readonly docs: readonly [];
                readonly value: {
                    readonly kind: "argumentValueNode";
                    readonly name: "signers";
                };
            }];
            readonly discriminators: readonly [{
                readonly kind: "fieldDiscriminatorNode";
                readonly name: "discriminator";
                readonly offset: 0;
            }];
        }, {
            readonly kind: "instructionNode";
            readonly name: "transfer";
            readonly docs: readonly ["Transfers tokens from one account to another either directly or via a delegate.", "If this account is associated with the native mint then equal amounts", "of SOL and Tokens will be transferred to the destination account."];
            readonly optionalAccountStrategy: "programId";
            readonly accounts: readonly [{
                readonly kind: "instructionAccountNode";
                readonly name: "source";
                readonly isWritable: true;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly ["The source account."];
            }, {
                readonly kind: "instructionAccountNode";
                readonly name: "destination";
                readonly isWritable: true;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly ["The destination account."];
            }, {
                readonly kind: "instructionAccountNode";
                readonly name: "authority";
                readonly isWritable: false;
                readonly isSigner: "either";
                readonly isOptional: false;
                readonly docs: readonly ["The source account's owner/delegate or its multisignature account."];
                readonly defaultValue: {
                    readonly kind: "identityValueNode";
                };
            }];
            readonly arguments: readonly [{
                readonly kind: "instructionArgumentNode";
                readonly name: "discriminator";
                readonly defaultValueStrategy: "omitted";
                readonly docs: readonly [];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u8";
                    readonly endian: "le";
                };
                readonly defaultValue: {
                    readonly kind: "numberValueNode";
                    readonly number: 3;
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "amount";
                readonly docs: readonly ["The amount of tokens to transfer."];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u64";
                    readonly endian: "le";
                };
            }];
            readonly remainingAccounts: readonly [{
                readonly kind: "instructionRemainingAccountsNode";
                readonly isOptional: true;
                readonly isSigner: true;
                readonly docs: readonly [];
                readonly value: {
                    readonly kind: "argumentValueNode";
                    readonly name: "multiSigners";
                };
            }];
            readonly discriminators: readonly [{
                readonly kind: "fieldDiscriminatorNode";
                readonly name: "discriminator";
                readonly offset: 0;
            }];
        }, {
            readonly kind: "instructionNode";
            readonly name: "approve";
            readonly docs: readonly ["Approves a delegate. A delegate is given the authority over tokens on", "behalf of the source account's owner."];
            readonly optionalAccountStrategy: "programId";
            readonly accounts: readonly [{
                readonly kind: "instructionAccountNode";
                readonly name: "source";
                readonly isWritable: true;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly ["The source account."];
            }, {
                readonly kind: "instructionAccountNode";
                readonly name: "delegate";
                readonly isWritable: false;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly ["The delegate."];
            }, {
                readonly kind: "instructionAccountNode";
                readonly name: "owner";
                readonly isWritable: false;
                readonly isSigner: "either";
                readonly isOptional: false;
                readonly docs: readonly ["The source account owner or its multisignature account."];
            }];
            readonly arguments: readonly [{
                readonly kind: "instructionArgumentNode";
                readonly name: "discriminator";
                readonly defaultValueStrategy: "omitted";
                readonly docs: readonly [];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u8";
                    readonly endian: "le";
                };
                readonly defaultValue: {
                    readonly kind: "numberValueNode";
                    readonly number: 4;
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "amount";
                readonly docs: readonly ["The amount of tokens the delegate is approved for."];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u64";
                    readonly endian: "le";
                };
            }];
            readonly remainingAccounts: readonly [{
                readonly kind: "instructionRemainingAccountsNode";
                readonly isOptional: true;
                readonly isSigner: true;
                readonly docs: readonly [];
                readonly value: {
                    readonly kind: "argumentValueNode";
                    readonly name: "multiSigners";
                };
            }];
            readonly discriminators: readonly [{
                readonly kind: "fieldDiscriminatorNode";
                readonly name: "discriminator";
                readonly offset: 0;
            }];
        }, {
            readonly kind: "instructionNode";
            readonly name: "revoke";
            readonly docs: readonly ["Revokes the delegate's authority."];
            readonly optionalAccountStrategy: "programId";
            readonly accounts: readonly [{
                readonly kind: "instructionAccountNode";
                readonly name: "source";
                readonly isWritable: true;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly ["The source account."];
            }, {
                readonly kind: "instructionAccountNode";
                readonly name: "owner";
                readonly isWritable: false;
                readonly isSigner: "either";
                readonly isOptional: false;
                readonly docs: readonly ["The source account owner or its multisignature."];
            }];
            readonly arguments: readonly [{
                readonly kind: "instructionArgumentNode";
                readonly name: "discriminator";
                readonly defaultValueStrategy: "omitted";
                readonly docs: readonly [];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u8";
                    readonly endian: "le";
                };
                readonly defaultValue: {
                    readonly kind: "numberValueNode";
                    readonly number: 5;
                };
            }];
            readonly remainingAccounts: readonly [{
                readonly kind: "instructionRemainingAccountsNode";
                readonly isOptional: true;
                readonly isSigner: true;
                readonly docs: readonly [];
                readonly value: {
                    readonly kind: "argumentValueNode";
                    readonly name: "multiSigners";
                };
            }];
            readonly discriminators: readonly [{
                readonly kind: "fieldDiscriminatorNode";
                readonly name: "discriminator";
                readonly offset: 0;
            }];
        }, {
            readonly kind: "instructionNode";
            readonly name: "setAuthority";
            readonly docs: readonly ["Sets a new authority of a mint or account."];
            readonly optionalAccountStrategy: "programId";
            readonly accounts: readonly [{
                readonly kind: "instructionAccountNode";
                readonly name: "owned";
                readonly isWritable: true;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly ["The mint or account to change the authority of."];
            }, {
                readonly kind: "instructionAccountNode";
                readonly name: "owner";
                readonly isWritable: false;
                readonly isSigner: "either";
                readonly isOptional: false;
                readonly docs: readonly ["The current authority or the multisignature account of the mint or account to update."];
            }];
            readonly arguments: readonly [{
                readonly kind: "instructionArgumentNode";
                readonly name: "discriminator";
                readonly defaultValueStrategy: "omitted";
                readonly docs: readonly [];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u8";
                    readonly endian: "le";
                };
                readonly defaultValue: {
                    readonly kind: "numberValueNode";
                    readonly number: 6;
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "authorityType";
                readonly docs: readonly ["The type of authority to update."];
                readonly type: {
                    readonly kind: "definedTypeLinkNode";
                    readonly name: "authorityType";
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "newAuthority";
                readonly docs: readonly ["The new authority"];
                readonly type: {
                    readonly kind: "optionTypeNode";
                    readonly fixed: false;
                    readonly item: {
                        readonly kind: "publicKeyTypeNode";
                    };
                    readonly prefix: {
                        readonly kind: "numberTypeNode";
                        readonly format: "u8";
                        readonly endian: "le";
                    };
                };
            }];
            readonly remainingAccounts: readonly [{
                readonly kind: "instructionRemainingAccountsNode";
                readonly isOptional: true;
                readonly isSigner: true;
                readonly docs: readonly [];
                readonly value: {
                    readonly kind: "argumentValueNode";
                    readonly name: "multiSigners";
                };
            }];
            readonly discriminators: readonly [{
                readonly kind: "fieldDiscriminatorNode";
                readonly name: "discriminator";
                readonly offset: 0;
            }];
        }, {
            readonly kind: "instructionNode";
            readonly name: "mintTo";
            readonly docs: readonly ["Mints new tokens to an account. The native mint does not support minting."];
            readonly optionalAccountStrategy: "programId";
            readonly accounts: readonly [{
                readonly kind: "instructionAccountNode";
                readonly name: "mint";
                readonly isWritable: true;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly ["The mint account."];
            }, {
                readonly kind: "instructionAccountNode";
                readonly name: "token";
                readonly isWritable: true;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly ["The account to mint tokens to."];
            }, {
                readonly kind: "instructionAccountNode";
                readonly name: "mintAuthority";
                readonly isWritable: false;
                readonly isSigner: "either";
                readonly isOptional: false;
                readonly docs: readonly ["The mint's minting authority or its multisignature account."];
            }];
            readonly arguments: readonly [{
                readonly kind: "instructionArgumentNode";
                readonly name: "discriminator";
                readonly defaultValueStrategy: "omitted";
                readonly docs: readonly [];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u8";
                    readonly endian: "le";
                };
                readonly defaultValue: {
                    readonly kind: "numberValueNode";
                    readonly number: 7;
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "amount";
                readonly docs: readonly ["The amount of new tokens to mint."];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u64";
                    readonly endian: "le";
                };
            }];
            readonly remainingAccounts: readonly [{
                readonly kind: "instructionRemainingAccountsNode";
                readonly isOptional: true;
                readonly isSigner: true;
                readonly docs: readonly [];
                readonly value: {
                    readonly kind: "argumentValueNode";
                    readonly name: "multiSigners";
                };
            }];
            readonly discriminators: readonly [{
                readonly kind: "fieldDiscriminatorNode";
                readonly name: "discriminator";
                readonly offset: 0;
            }];
        }, {
            readonly kind: "instructionNode";
            readonly name: "burn";
            readonly docs: readonly ["Burns tokens by removing them from an account. `Burn` does not support", "accounts associated with the native mint, use `CloseAccount` instead."];
            readonly optionalAccountStrategy: "programId";
            readonly accounts: readonly [{
                readonly kind: "instructionAccountNode";
                readonly name: "account";
                readonly isWritable: true;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly ["The account to burn from."];
            }, {
                readonly kind: "instructionAccountNode";
                readonly name: "mint";
                readonly isWritable: true;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly ["The token mint."];
            }, {
                readonly kind: "instructionAccountNode";
                readonly name: "authority";
                readonly isWritable: false;
                readonly isSigner: "either";
                readonly isOptional: false;
                readonly docs: readonly ["The account's owner/delegate or its multisignature account."];
                readonly defaultValue: {
                    readonly kind: "identityValueNode";
                };
            }];
            readonly arguments: readonly [{
                readonly kind: "instructionArgumentNode";
                readonly name: "discriminator";
                readonly defaultValueStrategy: "omitted";
                readonly docs: readonly ["The amount of tokens to burn."];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u8";
                    readonly endian: "le";
                };
                readonly defaultValue: {
                    readonly kind: "numberValueNode";
                    readonly number: 8;
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "amount";
                readonly docs: readonly [];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u64";
                    readonly endian: "le";
                };
            }];
            readonly remainingAccounts: readonly [{
                readonly kind: "instructionRemainingAccountsNode";
                readonly isOptional: true;
                readonly isSigner: true;
                readonly docs: readonly [];
                readonly value: {
                    readonly kind: "argumentValueNode";
                    readonly name: "multiSigners";
                };
            }];
            readonly discriminators: readonly [{
                readonly kind: "fieldDiscriminatorNode";
                readonly name: "discriminator";
                readonly offset: 0;
            }];
        }, {
            readonly kind: "instructionNode";
            readonly name: "closeAccount";
            readonly docs: readonly ["Close an account by transferring all its SOL to the destination account.", "Non-native accounts may only be closed if its token amount is zero."];
            readonly optionalAccountStrategy: "programId";
            readonly accounts: readonly [{
                readonly kind: "instructionAccountNode";
                readonly name: "account";
                readonly isWritable: true;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly ["The account to close."];
            }, {
                readonly kind: "instructionAccountNode";
                readonly name: "destination";
                readonly isWritable: true;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly ["The destination account."];
            }, {
                readonly kind: "instructionAccountNode";
                readonly name: "owner";
                readonly isWritable: false;
                readonly isSigner: "either";
                readonly isOptional: false;
                readonly docs: readonly ["The account's owner or its multisignature account."];
            }];
            readonly arguments: readonly [{
                readonly kind: "instructionArgumentNode";
                readonly name: "discriminator";
                readonly defaultValueStrategy: "omitted";
                readonly docs: readonly [];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u8";
                    readonly endian: "le";
                };
                readonly defaultValue: {
                    readonly kind: "numberValueNode";
                    readonly number: 9;
                };
            }];
            readonly remainingAccounts: readonly [{
                readonly kind: "instructionRemainingAccountsNode";
                readonly isOptional: true;
                readonly isSigner: true;
                readonly docs: readonly [];
                readonly value: {
                    readonly kind: "argumentValueNode";
                    readonly name: "multiSigners";
                };
            }];
            readonly discriminators: readonly [{
                readonly kind: "fieldDiscriminatorNode";
                readonly name: "discriminator";
                readonly offset: 0;
            }];
        }, {
            readonly kind: "instructionNode";
            readonly name: "freezeAccount";
            readonly docs: readonly ["Freeze an Initialized account using the Mint's freeze_authority (if set)."];
            readonly optionalAccountStrategy: "programId";
            readonly accounts: readonly [{
                readonly kind: "instructionAccountNode";
                readonly name: "account";
                readonly isWritable: true;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly ["The account to freeze."];
            }, {
                readonly kind: "instructionAccountNode";
                readonly name: "mint";
                readonly isWritable: false;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly ["The token mint."];
            }, {
                readonly kind: "instructionAccountNode";
                readonly name: "owner";
                readonly isWritable: false;
                readonly isSigner: "either";
                readonly isOptional: false;
                readonly docs: readonly ["The mint freeze authority or its multisignature account."];
            }];
            readonly arguments: readonly [{
                readonly kind: "instructionArgumentNode";
                readonly name: "discriminator";
                readonly defaultValueStrategy: "omitted";
                readonly docs: readonly [];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u8";
                    readonly endian: "le";
                };
                readonly defaultValue: {
                    readonly kind: "numberValueNode";
                    readonly number: 10;
                };
            }];
            readonly remainingAccounts: readonly [{
                readonly kind: "instructionRemainingAccountsNode";
                readonly isOptional: true;
                readonly isSigner: true;
                readonly docs: readonly [];
                readonly value: {
                    readonly kind: "argumentValueNode";
                    readonly name: "multiSigners";
                };
            }];
            readonly discriminators: readonly [{
                readonly kind: "fieldDiscriminatorNode";
                readonly name: "discriminator";
                readonly offset: 0;
            }];
        }, {
            readonly kind: "instructionNode";
            readonly name: "thawAccount";
            readonly docs: readonly ["Thaw a Frozen account using the Mint's freeze_authority (if set)."];
            readonly optionalAccountStrategy: "programId";
            readonly accounts: readonly [{
                readonly kind: "instructionAccountNode";
                readonly name: "account";
                readonly isWritable: true;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly ["The account to thaw."];
            }, {
                readonly kind: "instructionAccountNode";
                readonly name: "mint";
                readonly isWritable: false;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly ["The token mint."];
            }, {
                readonly kind: "instructionAccountNode";
                readonly name: "owner";
                readonly isWritable: false;
                readonly isSigner: "either";
                readonly isOptional: false;
                readonly docs: readonly ["The mint freeze authority or its multisignature account."];
            }];
            readonly arguments: readonly [{
                readonly kind: "instructionArgumentNode";
                readonly name: "discriminator";
                readonly defaultValueStrategy: "omitted";
                readonly docs: readonly [];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u8";
                    readonly endian: "le";
                };
                readonly defaultValue: {
                    readonly kind: "numberValueNode";
                    readonly number: 11;
                };
            }];
            readonly remainingAccounts: readonly [{
                readonly kind: "instructionRemainingAccountsNode";
                readonly isOptional: true;
                readonly isSigner: true;
                readonly docs: readonly [];
                readonly value: {
                    readonly kind: "argumentValueNode";
                    readonly name: "multiSigners";
                };
            }];
            readonly discriminators: readonly [{
                readonly kind: "fieldDiscriminatorNode";
                readonly name: "discriminator";
                readonly offset: 0;
            }];
        }, {
            readonly kind: "instructionNode";
            readonly name: "transferChecked";
            readonly docs: readonly ["Transfers tokens from one account to another either directly or via a", "delegate. If this account is associated with the native mint then equal", "amounts of SOL and Tokens will be transferred to the destination account.", "", "This instruction differs from Transfer in that the token mint and", "decimals value is checked by the caller. This may be useful when", "creating transactions offline or within a hardware wallet."];
            readonly optionalAccountStrategy: "programId";
            readonly accounts: readonly [{
                readonly kind: "instructionAccountNode";
                readonly name: "source";
                readonly isWritable: true;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly ["The source account."];
            }, {
                readonly kind: "instructionAccountNode";
                readonly name: "mint";
                readonly isWritable: false;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly ["The token mint."];
            }, {
                readonly kind: "instructionAccountNode";
                readonly name: "destination";
                readonly isWritable: true;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly ["The destination account."];
            }, {
                readonly kind: "instructionAccountNode";
                readonly name: "authority";
                readonly isWritable: false;
                readonly isSigner: "either";
                readonly isOptional: false;
                readonly docs: readonly ["The source account's owner/delegate or its multisignature account."];
                readonly defaultValue: {
                    readonly kind: "identityValueNode";
                };
            }];
            readonly arguments: readonly [{
                readonly kind: "instructionArgumentNode";
                readonly name: "discriminator";
                readonly defaultValueStrategy: "omitted";
                readonly docs: readonly [];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u8";
                    readonly endian: "le";
                };
                readonly defaultValue: {
                    readonly kind: "numberValueNode";
                    readonly number: 12;
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "amount";
                readonly docs: readonly ["The amount of tokens to transfer."];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u64";
                    readonly endian: "le";
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "decimals";
                readonly docs: readonly ["Expected number of base 10 digits to the right of the decimal place."];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u8";
                    readonly endian: "le";
                };
            }];
            readonly remainingAccounts: readonly [{
                readonly kind: "instructionRemainingAccountsNode";
                readonly isOptional: true;
                readonly isSigner: true;
                readonly docs: readonly [];
                readonly value: {
                    readonly kind: "argumentValueNode";
                    readonly name: "multiSigners";
                };
            }];
            readonly discriminators: readonly [{
                readonly kind: "fieldDiscriminatorNode";
                readonly name: "discriminator";
                readonly offset: 0;
            }];
        }, {
            readonly kind: "instructionNode";
            readonly name: "approveChecked";
            readonly docs: readonly ["Approves a delegate. A delegate is given the authority over tokens on", "behalf of the source account's owner.", "", "This instruction differs from Approve in that the token mint and", "decimals value is checked by the caller. This may be useful when", "creating transactions offline or within a hardware wallet."];
            readonly optionalAccountStrategy: "programId";
            readonly accounts: readonly [{
                readonly kind: "instructionAccountNode";
                readonly name: "source";
                readonly isWritable: true;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly ["The source account."];
            }, {
                readonly kind: "instructionAccountNode";
                readonly name: "mint";
                readonly isWritable: false;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly ["The token mint."];
            }, {
                readonly kind: "instructionAccountNode";
                readonly name: "delegate";
                readonly isWritable: false;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly ["The delegate."];
            }, {
                readonly kind: "instructionAccountNode";
                readonly name: "owner";
                readonly isWritable: false;
                readonly isSigner: "either";
                readonly isOptional: false;
                readonly docs: readonly ["The source account owner or its multisignature account."];
            }];
            readonly arguments: readonly [{
                readonly kind: "instructionArgumentNode";
                readonly name: "discriminator";
                readonly defaultValueStrategy: "omitted";
                readonly docs: readonly [];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u8";
                    readonly endian: "le";
                };
                readonly defaultValue: {
                    readonly kind: "numberValueNode";
                    readonly number: 13;
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "amount";
                readonly docs: readonly ["The amount of tokens the delegate is approved for."];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u64";
                    readonly endian: "le";
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "decimals";
                readonly docs: readonly ["Expected number of base 10 digits to the right of the decimal place."];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u8";
                    readonly endian: "le";
                };
            }];
            readonly remainingAccounts: readonly [{
                readonly kind: "instructionRemainingAccountsNode";
                readonly isOptional: true;
                readonly isSigner: true;
                readonly docs: readonly [];
                readonly value: {
                    readonly kind: "argumentValueNode";
                    readonly name: "multiSigners";
                };
            }];
            readonly discriminators: readonly [{
                readonly kind: "fieldDiscriminatorNode";
                readonly name: "discriminator";
                readonly offset: 0;
            }];
        }, {
            readonly kind: "instructionNode";
            readonly name: "mintToChecked";
            readonly docs: readonly ["Mints new tokens to an account. The native mint does not support minting.", "", "This instruction differs from MintTo in that the decimals value is", "checked by the caller. This may be useful when creating transactions", "offline or within a hardware wallet."];
            readonly optionalAccountStrategy: "programId";
            readonly accounts: readonly [{
                readonly kind: "instructionAccountNode";
                readonly name: "mint";
                readonly isWritable: true;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly ["The mint."];
            }, {
                readonly kind: "instructionAccountNode";
                readonly name: "token";
                readonly isWritable: true;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly ["The account to mint tokens to."];
            }, {
                readonly kind: "instructionAccountNode";
                readonly name: "mintAuthority";
                readonly isWritable: false;
                readonly isSigner: "either";
                readonly isOptional: false;
                readonly docs: readonly ["The mint's minting authority or its multisignature account."];
            }];
            readonly arguments: readonly [{
                readonly kind: "instructionArgumentNode";
                readonly name: "discriminator";
                readonly defaultValueStrategy: "omitted";
                readonly docs: readonly [];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u8";
                    readonly endian: "le";
                };
                readonly defaultValue: {
                    readonly kind: "numberValueNode";
                    readonly number: 14;
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "amount";
                readonly docs: readonly ["The amount of new tokens to mint."];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u64";
                    readonly endian: "le";
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "decimals";
                readonly docs: readonly ["Expected number of base 10 digits to the right of the decimal place."];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u8";
                    readonly endian: "le";
                };
            }];
            readonly remainingAccounts: readonly [{
                readonly kind: "instructionRemainingAccountsNode";
                readonly isOptional: true;
                readonly isSigner: true;
                readonly docs: readonly [];
                readonly value: {
                    readonly kind: "argumentValueNode";
                    readonly name: "multiSigners";
                };
            }];
            readonly discriminators: readonly [{
                readonly kind: "fieldDiscriminatorNode";
                readonly name: "discriminator";
                readonly offset: 0;
            }];
        }, {
            readonly kind: "instructionNode";
            readonly name: "burnChecked";
            readonly docs: readonly ["Burns tokens by removing them from an account. `BurnChecked` does not", "support accounts associated with the native mint, use `CloseAccount` instead.", "", "This instruction differs from Burn in that the decimals value is checked", "by the caller. This may be useful when creating transactions offline or", "within a hardware wallet."];
            readonly optionalAccountStrategy: "programId";
            readonly accounts: readonly [{
                readonly kind: "instructionAccountNode";
                readonly name: "account";
                readonly isWritable: true;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly ["The account to burn from."];
            }, {
                readonly kind: "instructionAccountNode";
                readonly name: "mint";
                readonly isWritable: true;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly ["The token mint."];
            }, {
                readonly kind: "instructionAccountNode";
                readonly name: "authority";
                readonly isWritable: false;
                readonly isSigner: "either";
                readonly isOptional: false;
                readonly docs: readonly ["The account's owner/delegate or its multisignature account."];
                readonly defaultValue: {
                    readonly kind: "identityValueNode";
                };
            }];
            readonly arguments: readonly [{
                readonly kind: "instructionArgumentNode";
                readonly name: "discriminator";
                readonly defaultValueStrategy: "omitted";
                readonly docs: readonly [];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u8";
                    readonly endian: "le";
                };
                readonly defaultValue: {
                    readonly kind: "numberValueNode";
                    readonly number: 15;
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "amount";
                readonly docs: readonly ["The amount of tokens to burn."];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u64";
                    readonly endian: "le";
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "decimals";
                readonly docs: readonly ["Expected number of base 10 digits to the right of the decimal place."];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u8";
                    readonly endian: "le";
                };
            }];
            readonly remainingAccounts: readonly [{
                readonly kind: "instructionRemainingAccountsNode";
                readonly isOptional: true;
                readonly isSigner: true;
                readonly docs: readonly [];
                readonly value: {
                    readonly kind: "argumentValueNode";
                    readonly name: "multiSigners";
                };
            }];
            readonly discriminators: readonly [{
                readonly kind: "fieldDiscriminatorNode";
                readonly name: "discriminator";
                readonly offset: 0;
            }];
        }, {
            readonly kind: "instructionNode";
            readonly name: "initializeAccount2";
            readonly docs: readonly ["Like InitializeAccount, but the owner pubkey is passed via instruction", "data rather than the accounts list. This variant may be preferable", "when using Cross Program Invocation from an instruction that does", "not need the owner's `AccountInfo` otherwise."];
            readonly optionalAccountStrategy: "programId";
            readonly accounts: readonly [{
                readonly kind: "instructionAccountNode";
                readonly name: "account";
                readonly isWritable: true;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly ["The account to initialize."];
            }, {
                readonly kind: "instructionAccountNode";
                readonly name: "mint";
                readonly isWritable: false;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly ["The mint this account will be associated with."];
            }, {
                readonly kind: "instructionAccountNode";
                readonly name: "rent";
                readonly isWritable: false;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly ["Rent sysvar."];
                readonly defaultValue: {
                    readonly kind: "publicKeyValueNode";
                    readonly publicKey: "SysvarRent111111111111111111111111111111111";
                };
            }];
            readonly arguments: readonly [{
                readonly kind: "instructionArgumentNode";
                readonly name: "discriminator";
                readonly defaultValueStrategy: "omitted";
                readonly docs: readonly [];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u8";
                    readonly endian: "le";
                };
                readonly defaultValue: {
                    readonly kind: "numberValueNode";
                    readonly number: 16;
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "owner";
                readonly docs: readonly ["The new account's owner/multisignature."];
                readonly type: {
                    readonly kind: "publicKeyTypeNode";
                };
            }];
            readonly discriminators: readonly [{
                readonly kind: "fieldDiscriminatorNode";
                readonly name: "discriminator";
                readonly offset: 0;
            }];
        }, {
            readonly kind: "instructionNode";
            readonly name: "syncNative";
            readonly docs: readonly ["Given a wrapped / native token account (a token account containing SOL)", "updates its amount field based on the account's underlying `lamports`.", "This is useful if a non-wrapped SOL account uses", "`system_instruction::transfer` to move lamports to a wrapped token", "account, and needs to have its token `amount` field updated."];
            readonly optionalAccountStrategy: "programId";
            readonly accounts: readonly [{
                readonly kind: "instructionAccountNode";
                readonly name: "account";
                readonly isWritable: true;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly ["The native token account to sync with its underlying lamports."];
            }];
            readonly arguments: readonly [{
                readonly kind: "instructionArgumentNode";
                readonly name: "discriminator";
                readonly defaultValueStrategy: "omitted";
                readonly docs: readonly [];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u8";
                    readonly endian: "le";
                };
                readonly defaultValue: {
                    readonly kind: "numberValueNode";
                    readonly number: 17;
                };
            }];
            readonly discriminators: readonly [{
                readonly kind: "fieldDiscriminatorNode";
                readonly name: "discriminator";
                readonly offset: 0;
            }];
        }, {
            readonly kind: "instructionNode";
            readonly name: "initializeAccount3";
            readonly docs: readonly ["Like InitializeAccount2, but does not require the Rent sysvar to be provided."];
            readonly optionalAccountStrategy: "programId";
            readonly accounts: readonly [{
                readonly kind: "instructionAccountNode";
                readonly name: "account";
                readonly isWritable: true;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly ["The account to initialize."];
            }, {
                readonly kind: "instructionAccountNode";
                readonly name: "mint";
                readonly isWritable: false;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly ["The mint this account will be associated with."];
            }];
            readonly arguments: readonly [{
                readonly kind: "instructionArgumentNode";
                readonly name: "discriminator";
                readonly defaultValueStrategy: "omitted";
                readonly docs: readonly [];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u8";
                    readonly endian: "le";
                };
                readonly defaultValue: {
                    readonly kind: "numberValueNode";
                    readonly number: 18;
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "owner";
                readonly docs: readonly ["The new account's owner/multisignature."];
                readonly type: {
                    readonly kind: "publicKeyTypeNode";
                };
            }];
            readonly discriminators: readonly [{
                readonly kind: "fieldDiscriminatorNode";
                readonly name: "discriminator";
                readonly offset: 0;
            }];
        }, {
            readonly kind: "instructionNode";
            readonly name: "initializeMultisig2";
            readonly docs: readonly ["Like InitializeMultisig, but does not require the Rent sysvar to be provided."];
            readonly optionalAccountStrategy: "programId";
            readonly accounts: readonly [{
                readonly kind: "instructionAccountNode";
                readonly name: "multisig";
                readonly isWritable: true;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly ["The multisignature account to initialize."];
            }];
            readonly arguments: readonly [{
                readonly kind: "instructionArgumentNode";
                readonly name: "discriminator";
                readonly defaultValueStrategy: "omitted";
                readonly docs: readonly [];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u8";
                    readonly endian: "le";
                };
                readonly defaultValue: {
                    readonly kind: "numberValueNode";
                    readonly number: 19;
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "m";
                readonly docs: readonly ["The number of signers (M) required to validate this multisignature account."];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u8";
                    readonly endian: "le";
                };
            }];
            readonly remainingAccounts: readonly [{
                readonly kind: "instructionRemainingAccountsNode";
                readonly docs: readonly [];
                readonly value: {
                    readonly kind: "argumentValueNode";
                    readonly name: "signers";
                };
            }];
            readonly discriminators: readonly [{
                readonly kind: "fieldDiscriminatorNode";
                readonly name: "discriminator";
                readonly offset: 0;
            }];
        }, {
            readonly kind: "instructionNode";
            readonly name: "initializeMint2";
            readonly docs: readonly ["Like [`InitializeMint`], but does not require the Rent sysvar to be provided."];
            readonly optionalAccountStrategy: "programId";
            readonly accounts: readonly [{
                readonly kind: "instructionAccountNode";
                readonly name: "mint";
                readonly isWritable: true;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly ["The mint to initialize."];
            }];
            readonly arguments: readonly [{
                readonly kind: "instructionArgumentNode";
                readonly name: "discriminator";
                readonly defaultValueStrategy: "omitted";
                readonly docs: readonly [];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u8";
                    readonly endian: "le";
                };
                readonly defaultValue: {
                    readonly kind: "numberValueNode";
                    readonly number: 20;
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "decimals";
                readonly docs: readonly ["Number of base 10 digits to the right of the decimal place."];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u8";
                    readonly endian: "le";
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "mintAuthority";
                readonly docs: readonly ["The authority/multisignature to mint tokens."];
                readonly type: {
                    readonly kind: "publicKeyTypeNode";
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "freezeAuthority";
                readonly docs: readonly ["The optional freeze authority/multisignature of the mint."];
                readonly type: {
                    readonly kind: "optionTypeNode";
                    readonly fixed: false;
                    readonly item: {
                        readonly kind: "publicKeyTypeNode";
                    };
                    readonly prefix: {
                        readonly kind: "numberTypeNode";
                        readonly format: "u8";
                        readonly endian: "le";
                    };
                };
                readonly defaultValue: {
                    readonly kind: "noneValueNode";
                };
            }];
            readonly discriminators: readonly [{
                readonly kind: "fieldDiscriminatorNode";
                readonly name: "discriminator";
                readonly offset: 0;
            }];
        }, {
            readonly kind: "instructionNode";
            readonly name: "getAccountDataSize";
            readonly docs: readonly ["Gets the required size of an account for the given mint as a", "little-endian `u64`.", "", "Return data can be fetched using `sol_get_return_data` and deserializing", "the return data as a little-endian `u64`."];
            readonly optionalAccountStrategy: "programId";
            readonly accounts: readonly [{
                readonly kind: "instructionAccountNode";
                readonly name: "mint";
                readonly isWritable: false;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly ["The mint to calculate for."];
            }];
            readonly arguments: readonly [{
                readonly kind: "instructionArgumentNode";
                readonly name: "discriminator";
                readonly defaultValueStrategy: "omitted";
                readonly docs: readonly [];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u8";
                    readonly endian: "le";
                };
                readonly defaultValue: {
                    readonly kind: "numberValueNode";
                    readonly number: 21;
                };
            }];
            readonly discriminators: readonly [{
                readonly kind: "fieldDiscriminatorNode";
                readonly name: "discriminator";
                readonly offset: 0;
            }];
        }, {
            readonly kind: "instructionNode";
            readonly name: "initializeImmutableOwner";
            readonly docs: readonly ["Initialize the Immutable Owner extension for the given token account", "", "Fails if the account has already been initialized, so must be called", "before `InitializeAccount`.", "", "No-ops in this version of the program, but is included for compatibility", "with the Associated Token Account program."];
            readonly optionalAccountStrategy: "programId";
            readonly accounts: readonly [{
                readonly kind: "instructionAccountNode";
                readonly name: "account";
                readonly isWritable: true;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly ["The account to initialize."];
            }];
            readonly arguments: readonly [{
                readonly kind: "instructionArgumentNode";
                readonly name: "discriminator";
                readonly defaultValueStrategy: "omitted";
                readonly docs: readonly [];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u8";
                    readonly endian: "le";
                };
                readonly defaultValue: {
                    readonly kind: "numberValueNode";
                    readonly number: 22;
                };
            }];
            readonly discriminators: readonly [{
                readonly kind: "fieldDiscriminatorNode";
                readonly name: "discriminator";
                readonly offset: 0;
            }];
        }, {
            readonly kind: "instructionNode";
            readonly name: "amountToUiAmount";
            readonly docs: readonly ["Convert an Amount of tokens to a UiAmount `string`, using the given", "mint. In this version of the program, the mint can only specify the", "number of decimals.", "", "Fails on an invalid mint.", "", "Return data can be fetched using `sol_get_return_data` and deserialized", "with `String::from_utf8`."];
            readonly optionalAccountStrategy: "programId";
            readonly accounts: readonly [{
                readonly kind: "instructionAccountNode";
                readonly name: "mint";
                readonly isWritable: false;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly ["The mint to calculate for."];
            }];
            readonly arguments: readonly [{
                readonly kind: "instructionArgumentNode";
                readonly name: "discriminator";
                readonly defaultValueStrategy: "omitted";
                readonly docs: readonly [];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u8";
                    readonly endian: "le";
                };
                readonly defaultValue: {
                    readonly kind: "numberValueNode";
                    readonly number: 23;
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "amount";
                readonly docs: readonly ["The amount of tokens to reformat."];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u64";
                    readonly endian: "le";
                };
            }];
            readonly discriminators: readonly [{
                readonly kind: "fieldDiscriminatorNode";
                readonly name: "discriminator";
                readonly offset: 0;
            }];
        }, {
            readonly kind: "instructionNode";
            readonly name: "uiAmountToAmount";
            readonly docs: readonly ["Convert a UiAmount of tokens to a little-endian `u64` raw Amount, using", "the given mint. In this version of the program, the mint can only", "specify the number of decimals.", "", "Return data can be fetched using `sol_get_return_data` and deserializing", "the return data as a little-endian `u64`."];
            readonly optionalAccountStrategy: "programId";
            readonly accounts: readonly [{
                readonly kind: "instructionAccountNode";
                readonly name: "mint";
                readonly isWritable: false;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly ["The mint to calculate for."];
            }];
            readonly arguments: readonly [{
                readonly kind: "instructionArgumentNode";
                readonly name: "discriminator";
                readonly defaultValueStrategy: "omitted";
                readonly docs: readonly [];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u8";
                    readonly endian: "le";
                };
                readonly defaultValue: {
                    readonly kind: "numberValueNode";
                    readonly number: 24;
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "uiAmount";
                readonly docs: readonly ["The ui_amount of tokens to reformat."];
                readonly type: {
                    readonly kind: "stringTypeNode";
                    readonly encoding: "utf8";
                };
            }];
            readonly discriminators: readonly [{
                readonly kind: "fieldDiscriminatorNode";
                readonly name: "discriminator";
                readonly offset: 0;
            }];
        }, {
            readonly kind: "instructionNode";
            readonly name: "initializeMintCloseAuthority";
            readonly docs: readonly ["Initialize the close account authority on a new mint.", "", "Fails if the mint has already been initialized, so must be called before `InitializeMint`.", "", "The mint must have exactly enough space allocated for the base mint (82", "bytes), plus 83 bytes of padding, 1 byte reserved for the account type,", "then space required for this extension, plus any others."];
            readonly optionalAccountStrategy: "programId";
            readonly accounts: readonly [{
                readonly kind: "instructionAccountNode";
                readonly name: "mint";
                readonly isWritable: true;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly ["The mint to initialize."];
            }];
            readonly arguments: readonly [{
                readonly kind: "instructionArgumentNode";
                readonly name: "discriminator";
                readonly defaultValueStrategy: "omitted";
                readonly docs: readonly [];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u8";
                    readonly endian: "le";
                };
                readonly defaultValue: {
                    readonly kind: "numberValueNode";
                    readonly number: 25;
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "closeAuthority";
                readonly docs: readonly ["Authority that must sign the `CloseAccount` instruction on a mint."];
                readonly type: {
                    readonly kind: "optionTypeNode";
                    readonly fixed: false;
                    readonly item: {
                        readonly kind: "publicKeyTypeNode";
                    };
                    readonly prefix: {
                        readonly kind: "numberTypeNode";
                        readonly format: "u8";
                        readonly endian: "le";
                    };
                };
            }];
            readonly discriminators: readonly [{
                readonly kind: "fieldDiscriminatorNode";
                readonly name: "discriminator";
                readonly offset: 0;
            }];
        }, {
            readonly kind: "instructionNode";
            readonly name: "initializeTransferFeeConfig";
            readonly docs: readonly ["Initialize the transfer fee on a new mint.", "", "Fails if the mint has already been initialized, so must be called before `InitializeMint`.", "", "The mint must have exactly enough space allocated for the base mint (82", "bytes), plus 83 bytes of padding, 1 byte reserved for the account type,", "then space required for this extension, plus any others."];
            readonly optionalAccountStrategy: "programId";
            readonly accounts: readonly [{
                readonly kind: "instructionAccountNode";
                readonly name: "mint";
                readonly isWritable: true;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly ["The mint to initialize."];
            }];
            readonly arguments: readonly [{
                readonly kind: "instructionArgumentNode";
                readonly name: "discriminator";
                readonly defaultValueStrategy: "omitted";
                readonly docs: readonly [];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u8";
                    readonly endian: "le";
                };
                readonly defaultValue: {
                    readonly kind: "numberValueNode";
                    readonly number: 26;
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "transferFeeDiscriminator";
                readonly defaultValueStrategy: "omitted";
                readonly docs: readonly [];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u8";
                    readonly endian: "le";
                };
                readonly defaultValue: {
                    readonly kind: "numberValueNode";
                    readonly number: 0;
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "transferFeeConfigAuthority";
                readonly docs: readonly ["Pubkey that may update the fees."];
                readonly type: {
                    readonly kind: "optionTypeNode";
                    readonly fixed: false;
                    readonly item: {
                        readonly kind: "publicKeyTypeNode";
                    };
                    readonly prefix: {
                        readonly kind: "numberTypeNode";
                        readonly format: "u8";
                        readonly endian: "le";
                    };
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "withdrawWithheldAuthority";
                readonly docs: readonly ["Withdraw instructions must be signed by this key."];
                readonly type: {
                    readonly kind: "optionTypeNode";
                    readonly fixed: false;
                    readonly item: {
                        readonly kind: "publicKeyTypeNode";
                    };
                    readonly prefix: {
                        readonly kind: "numberTypeNode";
                        readonly format: "u8";
                        readonly endian: "le";
                    };
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "transferFeeBasisPoints";
                readonly docs: readonly ["Amount of transfer collected as fees, expressed as basis points of the transfer amount."];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u16";
                    readonly endian: "le";
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "maximumFee";
                readonly docs: readonly ["Maximum fee assessed on transfers."];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u64";
                    readonly endian: "le";
                };
            }];
            readonly discriminators: readonly [{
                readonly kind: "fieldDiscriminatorNode";
                readonly name: "discriminator";
                readonly offset: 0;
            }, {
                readonly kind: "fieldDiscriminatorNode";
                readonly name: "transferFeeDiscriminator";
                readonly offset: 1;
            }];
        }, {
            readonly kind: "instructionNode";
            readonly name: "transferCheckedWithFee";
            readonly docs: readonly ["Transfer, providing expected mint information and fees.", "", "This instruction succeeds if the mint has no configured transfer fee", "and the provided fee is 0. This allows applications to use", "`TransferCheckedWithFee` with any mint."];
            readonly optionalAccountStrategy: "programId";
            readonly accounts: readonly [{
                readonly kind: "instructionAccountNode";
                readonly name: "source";
                readonly isWritable: true;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly ["The source account. May include the `TransferFeeAmount` extension."];
            }, {
                readonly kind: "instructionAccountNode";
                readonly name: "mint";
                readonly isWritable: false;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly ["The token mint. May include the `TransferFeeConfig` extension."];
            }, {
                readonly kind: "instructionAccountNode";
                readonly name: "destination";
                readonly isWritable: true;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly ["The destination account. May include the `TransferFeeAmount` extension."];
            }, {
                readonly kind: "instructionAccountNode";
                readonly name: "authority";
                readonly isWritable: false;
                readonly isSigner: "either";
                readonly isOptional: false;
                readonly docs: readonly ["The source account's owner/delegate or its multisignature account."];
                readonly defaultValue: {
                    readonly kind: "identityValueNode";
                };
            }];
            readonly arguments: readonly [{
                readonly kind: "instructionArgumentNode";
                readonly name: "discriminator";
                readonly defaultValueStrategy: "omitted";
                readonly docs: readonly [];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u8";
                    readonly endian: "le";
                };
                readonly defaultValue: {
                    readonly kind: "numberValueNode";
                    readonly number: 26;
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "transferFeeDiscriminator";
                readonly defaultValueStrategy: "omitted";
                readonly docs: readonly [];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u8";
                    readonly endian: "le";
                };
                readonly defaultValue: {
                    readonly kind: "numberValueNode";
                    readonly number: 1;
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "amount";
                readonly docs: readonly ["The amount of tokens to transfer."];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u64";
                    readonly endian: "le";
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "decimals";
                readonly docs: readonly ["Expected number of base 10 digits to the right of the decimal place."];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u8";
                    readonly endian: "le";
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "fee";
                readonly docs: readonly ["Expected fee assessed on this transfer, calculated off-chain based", "on the transfer_fee_basis_points and maximum_fee of the mint. May", "be 0 for a mint without a configured transfer fee."];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u64";
                    readonly endian: "le";
                };
            }];
            readonly remainingAccounts: readonly [{
                readonly kind: "instructionRemainingAccountsNode";
                readonly isOptional: true;
                readonly isSigner: true;
                readonly docs: readonly [];
                readonly value: {
                    readonly kind: "argumentValueNode";
                    readonly name: "multiSigners";
                };
            }];
            readonly discriminators: readonly [{
                readonly kind: "fieldDiscriminatorNode";
                readonly name: "discriminator";
                readonly offset: 0;
            }, {
                readonly kind: "fieldDiscriminatorNode";
                readonly name: "transferFeeDiscriminator";
                readonly offset: 1;
            }];
        }, {
            readonly kind: "instructionNode";
            readonly name: "withdrawWithheldTokensFromMint";
            readonly docs: readonly ["Transfer all withheld tokens in the mint to an account. Signed by the", "mint's withdraw withheld tokens authority."];
            readonly optionalAccountStrategy: "programId";
            readonly accounts: readonly [{
                readonly kind: "instructionAccountNode";
                readonly name: "mint";
                readonly isWritable: true;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly ["The token mint. Must include the `TransferFeeConfig` extension."];
            }, {
                readonly kind: "instructionAccountNode";
                readonly name: "feeReceiver";
                readonly isWritable: true;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly ["The fee receiver account. Must include the `TransferFeeAmount`", "extension associated with the provided mint."];
            }, {
                readonly kind: "instructionAccountNode";
                readonly name: "withdrawWithheldAuthority";
                readonly isWritable: false;
                readonly isSigner: "either";
                readonly isOptional: false;
                readonly docs: readonly ["The mint's `withdraw_withheld_authority` or its multisignature account."];
                readonly defaultValue: {
                    readonly kind: "identityValueNode";
                };
            }];
            readonly arguments: readonly [{
                readonly kind: "instructionArgumentNode";
                readonly name: "discriminator";
                readonly defaultValueStrategy: "omitted";
                readonly docs: readonly [];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u8";
                    readonly endian: "le";
                };
                readonly defaultValue: {
                    readonly kind: "numberValueNode";
                    readonly number: 26;
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "transferFeeDiscriminator";
                readonly defaultValueStrategy: "omitted";
                readonly docs: readonly [];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u8";
                    readonly endian: "le";
                };
                readonly defaultValue: {
                    readonly kind: "numberValueNode";
                    readonly number: 2;
                };
            }];
            readonly remainingAccounts: readonly [{
                readonly kind: "instructionRemainingAccountsNode";
                readonly isOptional: true;
                readonly isSigner: true;
                readonly docs: readonly [];
                readonly value: {
                    readonly kind: "argumentValueNode";
                    readonly name: "multiSigners";
                };
            }];
            readonly discriminators: readonly [{
                readonly kind: "fieldDiscriminatorNode";
                readonly name: "discriminator";
                readonly offset: 0;
            }, {
                readonly kind: "fieldDiscriminatorNode";
                readonly name: "transferFeeDiscriminator";
                readonly offset: 1;
            }];
        }, {
            readonly kind: "instructionNode";
            readonly name: "withdrawWithheldTokensFromAccounts";
            readonly docs: readonly ["Transfer all withheld tokens to an account. Signed by the mint's", "withdraw withheld tokens authority."];
            readonly optionalAccountStrategy: "programId";
            readonly accounts: readonly [{
                readonly kind: "instructionAccountNode";
                readonly name: "mint";
                readonly isWritable: false;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly ["The token mint. Must include the `TransferFeeConfig` extension."];
            }, {
                readonly kind: "instructionAccountNode";
                readonly name: "feeReceiver";
                readonly isWritable: true;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly ["The fee receiver account. Must include the `TransferFeeAmount`", "extension associated with the provided mint."];
            }, {
                readonly kind: "instructionAccountNode";
                readonly name: "withdrawWithheldAuthority";
                readonly isWritable: false;
                readonly isSigner: "either";
                readonly isOptional: false;
                readonly docs: readonly ["The mint's `withdraw_withheld_authority` or its multisignature account."];
                readonly defaultValue: {
                    readonly kind: "identityValueNode";
                };
            }];
            readonly arguments: readonly [{
                readonly kind: "instructionArgumentNode";
                readonly name: "discriminator";
                readonly defaultValueStrategy: "omitted";
                readonly docs: readonly [];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u8";
                    readonly endian: "le";
                };
                readonly defaultValue: {
                    readonly kind: "numberValueNode";
                    readonly number: 26;
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "transferFeeDiscriminator";
                readonly defaultValueStrategy: "omitted";
                readonly docs: readonly [];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u8";
                    readonly endian: "le";
                };
                readonly defaultValue: {
                    readonly kind: "numberValueNode";
                    readonly number: 3;
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "numTokenAccounts";
                readonly docs: readonly ["Number of token accounts harvested."];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u8";
                    readonly endian: "le";
                };
            }];
            readonly remainingAccounts: readonly [{
                readonly kind: "instructionRemainingAccountsNode";
                readonly isOptional: true;
                readonly isSigner: true;
                readonly docs: readonly [];
                readonly value: {
                    readonly kind: "argumentValueNode";
                    readonly name: "multiSigners";
                };
            }, {
                readonly kind: "instructionRemainingAccountsNode";
                readonly isOptional: false;
                readonly isWritable: true;
                readonly isSigner: false;
                readonly docs: readonly ["The source accounts to withdraw from."];
                readonly value: {
                    readonly kind: "argumentValueNode";
                    readonly name: "sources";
                };
            }];
            readonly discriminators: readonly [{
                readonly kind: "fieldDiscriminatorNode";
                readonly name: "discriminator";
                readonly offset: 0;
            }, {
                readonly kind: "fieldDiscriminatorNode";
                readonly name: "transferFeeDiscriminator";
                readonly offset: 1;
            }];
        }, {
            readonly kind: "instructionNode";
            readonly name: "harvestWithheldTokensToMint";
            readonly docs: readonly ["Permissionless instruction to transfer all withheld tokens to the mint.", "", "Succeeds for frozen accounts.", "", "Accounts provided should include the `TransferFeeAmount` extension.", "If not, the account is skipped."];
            readonly optionalAccountStrategy: "programId";
            readonly accounts: readonly [{
                readonly kind: "instructionAccountNode";
                readonly name: "mint";
                readonly isWritable: true;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly ["The token mint."];
            }];
            readonly arguments: readonly [{
                readonly kind: "instructionArgumentNode";
                readonly name: "discriminator";
                readonly defaultValueStrategy: "omitted";
                readonly docs: readonly [];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u8";
                    readonly endian: "le";
                };
                readonly defaultValue: {
                    readonly kind: "numberValueNode";
                    readonly number: 26;
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "transferFeeDiscriminator";
                readonly defaultValueStrategy: "omitted";
                readonly docs: readonly [];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u8";
                    readonly endian: "le";
                };
                readonly defaultValue: {
                    readonly kind: "numberValueNode";
                    readonly number: 4;
                };
            }];
            readonly remainingAccounts: readonly [{
                readonly kind: "instructionRemainingAccountsNode";
                readonly isOptional: false;
                readonly isWritable: true;
                readonly isSigner: false;
                readonly docs: readonly ["The source accounts to harvest from."];
                readonly value: {
                    readonly kind: "argumentValueNode";
                    readonly name: "sources";
                };
            }];
            readonly discriminators: readonly [{
                readonly kind: "fieldDiscriminatorNode";
                readonly name: "discriminator";
                readonly offset: 0;
            }, {
                readonly kind: "fieldDiscriminatorNode";
                readonly name: "transferFeeDiscriminator";
                readonly offset: 1;
            }];
        }, {
            readonly kind: "instructionNode";
            readonly name: "setTransferFee";
            readonly docs: readonly ["Set transfer fee. Only supported for mints that include the", "`TransferFeeConfig` extension."];
            readonly optionalAccountStrategy: "programId";
            readonly accounts: readonly [{
                readonly kind: "instructionAccountNode";
                readonly name: "mint";
                readonly isWritable: true;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly ["The mint."];
            }, {
                readonly kind: "instructionAccountNode";
                readonly name: "transferFeeConfigAuthority";
                readonly isWritable: false;
                readonly isSigner: "either";
                readonly isOptional: false;
                readonly docs: readonly ["The mint's fee account owner or its multisignature account."];
                readonly defaultValue: {
                    readonly kind: "identityValueNode";
                };
            }];
            readonly arguments: readonly [{
                readonly kind: "instructionArgumentNode";
                readonly name: "discriminator";
                readonly defaultValueStrategy: "omitted";
                readonly docs: readonly [];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u8";
                    readonly endian: "le";
                };
                readonly defaultValue: {
                    readonly kind: "numberValueNode";
                    readonly number: 26;
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "transferFeeDiscriminator";
                readonly defaultValueStrategy: "omitted";
                readonly docs: readonly [];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u8";
                    readonly endian: "le";
                };
                readonly defaultValue: {
                    readonly kind: "numberValueNode";
                    readonly number: 5;
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "transferFeeBasisPoints";
                readonly docs: readonly ["Amount of transfer collected as fees, expressed as basis points of the transfer amount."];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u16";
                    readonly endian: "le";
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "maximumFee";
                readonly docs: readonly ["Maximum fee assessed on transfers."];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u64";
                    readonly endian: "le";
                };
            }];
            readonly remainingAccounts: readonly [{
                readonly kind: "instructionRemainingAccountsNode";
                readonly isOptional: true;
                readonly isSigner: true;
                readonly docs: readonly [];
                readonly value: {
                    readonly kind: "argumentValueNode";
                    readonly name: "multiSigners";
                };
            }];
            readonly discriminators: readonly [{
                readonly kind: "fieldDiscriminatorNode";
                readonly name: "discriminator";
                readonly offset: 0;
            }, {
                readonly kind: "fieldDiscriminatorNode";
                readonly name: "transferFeeDiscriminator";
                readonly offset: 1;
            }];
        }, {
            readonly kind: "instructionNode";
            readonly name: "initializeConfidentialTransferMint";
            readonly docs: readonly ["Initializes confidential transfers for a mint.", "", "The `ConfidentialTransferInstruction::InitializeMint` instruction", "requires no signers and MUST be included within the same Transaction", "as `TokenInstruction::InitializeMint`. Otherwise another party can", "initialize the configuration.", "", "The instruction fails if the `TokenInstruction::InitializeMint`", "instruction has already executed for the mint."];
            readonly optionalAccountStrategy: "programId";
            readonly accounts: readonly [{
                readonly kind: "instructionAccountNode";
                readonly name: "mint";
                readonly isWritable: true;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly ["The SPL Token mint."];
            }];
            readonly arguments: readonly [{
                readonly kind: "instructionArgumentNode";
                readonly name: "discriminator";
                readonly defaultValueStrategy: "omitted";
                readonly docs: readonly [];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u8";
                    readonly endian: "le";
                };
                readonly defaultValue: {
                    readonly kind: "numberValueNode";
                    readonly number: 27;
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "confidentialTransferDiscriminator";
                readonly defaultValueStrategy: "omitted";
                readonly docs: readonly [];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u8";
                    readonly endian: "le";
                };
                readonly defaultValue: {
                    readonly kind: "numberValueNode";
                    readonly number: 0;
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "authority";
                readonly docs: readonly ["Authority to modify the `ConfidentialTransferMint` configuration and to", "approve new accounts."];
                readonly type: {
                    readonly kind: "zeroableOptionTypeNode";
                    readonly item: {
                        readonly kind: "publicKeyTypeNode";
                    };
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "autoApproveNewAccounts";
                readonly docs: readonly ["Determines if newly configured accounts must be approved by the", "`authority` before they may be used by the user."];
                readonly type: {
                    readonly kind: "booleanTypeNode";
                    readonly size: {
                        readonly kind: "numberTypeNode";
                        readonly format: "u8";
                        readonly endian: "le";
                    };
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "auditorElgamalPubkey";
                readonly docs: readonly ["New authority to decode any transfer amount in a confidential transfer."];
                readonly type: {
                    readonly kind: "zeroableOptionTypeNode";
                    readonly item: {
                        readonly kind: "publicKeyTypeNode";
                    };
                };
            }];
            readonly discriminators: readonly [{
                readonly kind: "fieldDiscriminatorNode";
                readonly name: "discriminator";
                readonly offset: 0;
            }, {
                readonly kind: "fieldDiscriminatorNode";
                readonly name: "confidentialTransferDiscriminator";
                readonly offset: 1;
            }];
        }, {
            readonly kind: "instructionNode";
            readonly name: "updateConfidentialTransferMint";
            readonly docs: readonly ["Updates the confidential transfer mint configuration for a mint.", "", "Use `TokenInstruction::SetAuthority` to update the confidential transfer", "mint authority."];
            readonly optionalAccountStrategy: "programId";
            readonly accounts: readonly [{
                readonly kind: "instructionAccountNode";
                readonly name: "mint";
                readonly isWritable: true;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly ["The SPL Token mint."];
            }, {
                readonly kind: "instructionAccountNode";
                readonly name: "authority";
                readonly isWritable: false;
                readonly isSigner: true;
                readonly isOptional: false;
                readonly docs: readonly ["Confidential transfer mint authority."];
            }];
            readonly arguments: readonly [{
                readonly kind: "instructionArgumentNode";
                readonly name: "discriminator";
                readonly defaultValueStrategy: "omitted";
                readonly docs: readonly [];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u8";
                    readonly endian: "le";
                };
                readonly defaultValue: {
                    readonly kind: "numberValueNode";
                    readonly number: 27;
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "confidentialTransferDiscriminator";
                readonly defaultValueStrategy: "omitted";
                readonly docs: readonly [];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u8";
                    readonly endian: "le";
                };
                readonly defaultValue: {
                    readonly kind: "numberValueNode";
                    readonly number: 1;
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "autoApproveNewAccounts";
                readonly docs: readonly ["Determines if newly configured accounts must be approved by the", "`authority` before they may be used by the user."];
                readonly type: {
                    readonly kind: "booleanTypeNode";
                    readonly size: {
                        readonly kind: "numberTypeNode";
                        readonly format: "u8";
                        readonly endian: "le";
                    };
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "auditorElgamalPubkey";
                readonly docs: readonly ["New authority to decode any transfer amount in a confidential transfer."];
                readonly type: {
                    readonly kind: "zeroableOptionTypeNode";
                    readonly item: {
                        readonly kind: "publicKeyTypeNode";
                    };
                };
            }];
            readonly discriminators: readonly [{
                readonly kind: "fieldDiscriminatorNode";
                readonly name: "discriminator";
                readonly offset: 0;
            }, {
                readonly kind: "fieldDiscriminatorNode";
                readonly name: "confidentialTransferDiscriminator";
                readonly offset: 1;
            }];
        }, {
            readonly kind: "instructionNode";
            readonly name: "configureConfidentialTransferAccount";
            readonly docs: readonly ["Configures confidential transfers for a token account.", "", "The instruction fails if the confidential transfers are already", "configured, or if the mint was not initialized with confidential", "transfer support.", "", "The instruction fails if the `TokenInstruction::InitializeAccount`", "instruction has not yet successfully executed for the token account.", "", "Upon success, confidential and non-confidential deposits and transfers", "are enabled. Use the `DisableConfidentialCredits` and", "`DisableNonConfidentialCredits` instructions to disable.", "", "In order for this instruction to be successfully processed, it must be", "accompanied by the `VerifyPubkeyValidity` instruction of the", "`zk_elgamal_proof` program in the same transaction or the address of a", "context state account for the proof must be provided."];
            readonly optionalAccountStrategy: "programId";
            readonly accounts: readonly [{
                readonly kind: "instructionAccountNode";
                readonly name: "token";
                readonly isWritable: true;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly ["The SPL Token account."];
            }, {
                readonly kind: "instructionAccountNode";
                readonly name: "mint";
                readonly isWritable: false;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly ["The corresponding SPL Token mint."];
            }, {
                readonly kind: "instructionAccountNode";
                readonly name: "instructionsSysvarOrContextState";
                readonly isWritable: false;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly ["Instructions sysvar if `VerifyPubkeyValidity` is included in", "the same transaction or context state account if", "`VerifyPubkeyValidity` is pre-verified into a context state", "account."];
                readonly defaultValue: {
                    readonly kind: "publicKeyValueNode";
                    readonly publicKey: "Sysvar1nstructions1111111111111111111111111";
                };
            }, {
                readonly kind: "instructionAccountNode";
                readonly name: "record";
                readonly isWritable: false;
                readonly isSigner: false;
                readonly isOptional: true;
                readonly docs: readonly ["(Optional) Record account if the accompanying proof is to be read from a record account."];
            }, {
                readonly kind: "instructionAccountNode";
                readonly name: "authority";
                readonly isWritable: false;
                readonly isSigner: "either";
                readonly isOptional: false;
                readonly docs: readonly ["The source account's owner/delegate or its multisignature account."];
            }];
            readonly arguments: readonly [{
                readonly kind: "instructionArgumentNode";
                readonly name: "discriminator";
                readonly defaultValueStrategy: "omitted";
                readonly docs: readonly [];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u8";
                    readonly endian: "le";
                };
                readonly defaultValue: {
                    readonly kind: "numberValueNode";
                    readonly number: 27;
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "confidentialTransferDiscriminator";
                readonly defaultValueStrategy: "omitted";
                readonly docs: readonly [];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u8";
                    readonly endian: "le";
                };
                readonly defaultValue: {
                    readonly kind: "numberValueNode";
                    readonly number: 2;
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "decryptableZeroBalance";
                readonly docs: readonly ["The decryptable balance (always 0) once the configure account succeeds."];
                readonly type: {
                    readonly kind: "definedTypeLinkNode";
                    readonly name: "decryptableBalance";
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "maximumPendingBalanceCreditCounter";
                readonly docs: readonly ["The maximum number of despots and transfers that an account can receiver", "before the `ApplyPendingBalance` is executed"];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u64";
                    readonly endian: "le";
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "proofInstructionOffset";
                readonly docs: readonly ["Relative location of the `ProofInstruction::ZeroCiphertextProof`", "instruction to the `ConfigureAccount` instruction in the", "transaction. If the offset is `0`, then use a context state account", "for the proof."];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "i8";
                    readonly endian: "le";
                };
            }];
            readonly remainingAccounts: readonly [{
                readonly kind: "instructionRemainingAccountsNode";
                readonly isOptional: true;
                readonly isSigner: true;
                readonly docs: readonly [];
                readonly value: {
                    readonly kind: "argumentValueNode";
                    readonly name: "multiSigners";
                };
            }];
            readonly discriminators: readonly [{
                readonly kind: "fieldDiscriminatorNode";
                readonly name: "discriminator";
                readonly offset: 0;
            }, {
                readonly kind: "fieldDiscriminatorNode";
                readonly name: "confidentialTransferDiscriminator";
                readonly offset: 1;
            }];
        }, {
            readonly kind: "instructionNode";
            readonly name: "approveConfidentialTransferAccount";
            readonly docs: readonly ["Approves a token account for confidential transfers.", "", "Approval is only required when the", "`ConfidentialTransferMint::approve_new_accounts` field is set in the", "SPL Token mint.  This instruction must be executed after the account", "owner configures their account for confidential transfers with", "`ConfidentialTransferInstruction::ConfigureAccount`."];
            readonly optionalAccountStrategy: "programId";
            readonly accounts: readonly [{
                readonly kind: "instructionAccountNode";
                readonly name: "token";
                readonly isWritable: true;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly ["The SPL Token account to approve."];
            }, {
                readonly kind: "instructionAccountNode";
                readonly name: "mint";
                readonly isWritable: false;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly ["The corresponding SPL Token mint."];
            }, {
                readonly kind: "instructionAccountNode";
                readonly name: "authority";
                readonly isWritable: false;
                readonly isSigner: true;
                readonly isOptional: false;
                readonly docs: readonly ["Confidential transfer mint authority."];
            }];
            readonly arguments: readonly [{
                readonly kind: "instructionArgumentNode";
                readonly name: "discriminator";
                readonly defaultValueStrategy: "omitted";
                readonly docs: readonly [];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u8";
                    readonly endian: "le";
                };
                readonly defaultValue: {
                    readonly kind: "numberValueNode";
                    readonly number: 27;
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "confidentialTransferDiscriminator";
                readonly defaultValueStrategy: "omitted";
                readonly docs: readonly [];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u8";
                    readonly endian: "le";
                };
                readonly defaultValue: {
                    readonly kind: "numberValueNode";
                    readonly number: 3;
                };
            }];
            readonly discriminators: readonly [{
                readonly kind: "fieldDiscriminatorNode";
                readonly name: "discriminator";
                readonly offset: 0;
            }, {
                readonly kind: "fieldDiscriminatorNode";
                readonly name: "confidentialTransferDiscriminator";
                readonly offset: 1;
            }];
        }, {
            readonly kind: "instructionNode";
            readonly name: "emptyConfidentialTransferAccount";
            readonly docs: readonly ["Empty the available balance in a confidential token account.", "", "A token account that is extended for confidential transfers can only be", "closed if the pending and available balance ciphertexts are emptied.", "The pending balance can be emptied", "via the `ConfidentialTransferInstruction::ApplyPendingBalance`", "instruction. Use the `ConfidentialTransferInstruction::EmptyAccount`", "instruction to empty the available balance ciphertext.", "", "Note that a newly configured account is always empty, so this", "instruction is not required prior to account closing if no", "instructions beyond", "`ConfidentialTransferInstruction::ConfigureAccount` have affected the", "token account.", "", "In order for this instruction to be successfully processed, it must be", "accompanied by the `VerifyZeroCiphertext` instruction of the", "`zk_elgamal_proof` program in the same transaction or the address of a", "context state account for the proof must be provided."];
            readonly optionalAccountStrategy: "programId";
            readonly accounts: readonly [{
                readonly kind: "instructionAccountNode";
                readonly name: "token";
                readonly isWritable: true;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly ["The SPL Token account."];
            }, {
                readonly kind: "instructionAccountNode";
                readonly name: "instructionsSysvarOrContextState";
                readonly isWritable: false;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly ["Instructions sysvar if `VerifyZeroCiphertext` is included in", "the same transaction or context state account if", "`VerifyZeroCiphertext` is pre-verified into a context state", "account."];
                readonly defaultValue: {
                    readonly kind: "publicKeyValueNode";
                    readonly publicKey: "Sysvar1nstructions1111111111111111111111111";
                };
            }, {
                readonly kind: "instructionAccountNode";
                readonly name: "record";
                readonly isWritable: false;
                readonly isSigner: false;
                readonly isOptional: true;
                readonly docs: readonly ["(Optional) Record account if the accompanying proof is to be read from a record account."];
            }, {
                readonly kind: "instructionAccountNode";
                readonly name: "authority";
                readonly isWritable: false;
                readonly isSigner: "either";
                readonly isOptional: false;
                readonly docs: readonly ["The source account's owner/delegate or its multisignature account."];
            }];
            readonly arguments: readonly [{
                readonly kind: "instructionArgumentNode";
                readonly name: "discriminator";
                readonly defaultValueStrategy: "omitted";
                readonly docs: readonly [];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u8";
                    readonly endian: "le";
                };
                readonly defaultValue: {
                    readonly kind: "numberValueNode";
                    readonly number: 27;
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "confidentialTransferDiscriminator";
                readonly defaultValueStrategy: "omitted";
                readonly docs: readonly [];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u8";
                    readonly endian: "le";
                };
                readonly defaultValue: {
                    readonly kind: "numberValueNode";
                    readonly number: 4;
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "proofInstructionOffset";
                readonly docs: readonly ["Relative location of the `ProofInstruction::VerifyCloseAccount`", "instruction to the `EmptyAccount` instruction in the transaction. If", "the offset is `0`, then use a context state account for the proof."];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "i8";
                    readonly endian: "le";
                };
            }];
            readonly remainingAccounts: readonly [{
                readonly kind: "instructionRemainingAccountsNode";
                readonly isOptional: true;
                readonly isSigner: true;
                readonly docs: readonly [];
                readonly value: {
                    readonly kind: "argumentValueNode";
                    readonly name: "multiSigners";
                };
            }];
            readonly discriminators: readonly [{
                readonly kind: "fieldDiscriminatorNode";
                readonly name: "discriminator";
                readonly offset: 0;
            }, {
                readonly kind: "fieldDiscriminatorNode";
                readonly name: "confidentialTransferDiscriminator";
                readonly offset: 1;
            }];
        }, {
            readonly kind: "instructionNode";
            readonly name: "confidentialDeposit";
            readonly docs: readonly ["Deposit SPL Tokens into the pending balance of a confidential token", "account.", "", "The account owner can then invoke the `ApplyPendingBalance` instruction", "to roll the deposit into their available balance at a time of their", "choosing.", "", "Fails if the source or destination accounts are frozen.", "Fails if the associated mint is extended as `NonTransferable`."];
            readonly optionalAccountStrategy: "programId";
            readonly accounts: readonly [{
                readonly kind: "instructionAccountNode";
                readonly name: "token";
                readonly isWritable: true;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly ["The SPL Token account."];
            }, {
                readonly kind: "instructionAccountNode";
                readonly name: "mint";
                readonly isWritable: false;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly ["The corresponding SPL Token mint."];
            }, {
                readonly kind: "instructionAccountNode";
                readonly name: "authority";
                readonly isWritable: false;
                readonly isSigner: "either";
                readonly isOptional: false;
                readonly docs: readonly ["The source account's owner/delegate or its multisignature account."];
            }];
            readonly arguments: readonly [{
                readonly kind: "instructionArgumentNode";
                readonly name: "discriminator";
                readonly defaultValueStrategy: "omitted";
                readonly docs: readonly [];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u8";
                    readonly endian: "le";
                };
                readonly defaultValue: {
                    readonly kind: "numberValueNode";
                    readonly number: 27;
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "confidentialTransferDiscriminator";
                readonly defaultValueStrategy: "omitted";
                readonly docs: readonly [];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u8";
                    readonly endian: "le";
                };
                readonly defaultValue: {
                    readonly kind: "numberValueNode";
                    readonly number: 5;
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "amount";
                readonly docs: readonly ["The amount of tokens to deposit."];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u64";
                    readonly endian: "le";
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "decimals";
                readonly docs: readonly ["Expected number of base 10 digits to the right of the decimal place."];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u8";
                    readonly endian: "le";
                };
            }];
            readonly remainingAccounts: readonly [{
                readonly kind: "instructionRemainingAccountsNode";
                readonly isOptional: true;
                readonly isSigner: true;
                readonly docs: readonly [];
                readonly value: {
                    readonly kind: "argumentValueNode";
                    readonly name: "multiSigners";
                };
            }];
            readonly discriminators: readonly [{
                readonly kind: "fieldDiscriminatorNode";
                readonly name: "discriminator";
                readonly offset: 0;
            }, {
                readonly kind: "fieldDiscriminatorNode";
                readonly name: "confidentialTransferDiscriminator";
                readonly offset: 1;
            }];
        }, {
            readonly kind: "instructionNode";
            readonly name: "confidentialWithdraw";
            readonly docs: readonly ["Withdraw SPL Tokens from the available balance of a confidential token", "account.", "", "In order for this instruction to be successfully processed, it must be", "accompanied by the following list of `zk_elgamal_proof` program", "instructions:", "- `VerifyCiphertextCommitmentEquality`", "- `VerifyBatchedRangeProofU64`", "These instructions can be accompanied in the same transaction or can be", "pre-verified into a context state account, in which case, only their", "context state account address need to be provided.", "", "Fails if the source or destination accounts are frozen.", "Fails if the associated mint is extended as `NonTransferable`."];
            readonly optionalAccountStrategy: "programId";
            readonly accounts: readonly [{
                readonly kind: "instructionAccountNode";
                readonly name: "token";
                readonly isWritable: true;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly ["The SPL Token account."];
            }, {
                readonly kind: "instructionAccountNode";
                readonly name: "mint";
                readonly isWritable: false;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly ["The corresponding SPL Token mint."];
            }, {
                readonly kind: "instructionAccountNode";
                readonly name: "instructionsSysvar";
                readonly isWritable: false;
                readonly isSigner: false;
                readonly isOptional: true;
                readonly docs: readonly ["Instructions sysvar if at least one of the", "`zk_elgamal_proof` instructions are included in the same", "transaction."];
            }, {
                readonly kind: "instructionAccountNode";
                readonly name: "equalityRecord";
                readonly isWritable: false;
                readonly isSigner: false;
                readonly isOptional: true;
                readonly docs: readonly ["(Optional) Equality proof record account or context state account."];
            }, {
                readonly kind: "instructionAccountNode";
                readonly name: "rangeRecord";
                readonly isWritable: false;
                readonly isSigner: false;
                readonly isOptional: true;
                readonly docs: readonly ["(Optional) Range proof record account or context state account."];
            }, {
                readonly kind: "instructionAccountNode";
                readonly name: "authority";
                readonly isWritable: false;
                readonly isSigner: "either";
                readonly isOptional: false;
                readonly docs: readonly ["The source account's owner/delegate or its multisignature account."];
            }];
            readonly arguments: readonly [{
                readonly kind: "instructionArgumentNode";
                readonly name: "discriminator";
                readonly defaultValueStrategy: "omitted";
                readonly docs: readonly [];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u8";
                    readonly endian: "le";
                };
                readonly defaultValue: {
                    readonly kind: "numberValueNode";
                    readonly number: 27;
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "confidentialTransferDiscriminator";
                readonly defaultValueStrategy: "omitted";
                readonly docs: readonly [];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u8";
                    readonly endian: "le";
                };
                readonly defaultValue: {
                    readonly kind: "numberValueNode";
                    readonly number: 6;
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "amount";
                readonly docs: readonly ["The amount of tokens to withdraw."];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u64";
                    readonly endian: "le";
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "decimals";
                readonly docs: readonly ["Expected number of base 10 digits to the right of the decimal place."];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u8";
                    readonly endian: "le";
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "newDecryptableAvailableBalance";
                readonly docs: readonly ["The new decryptable balance if the withdrawal succeeds."];
                readonly type: {
                    readonly kind: "definedTypeLinkNode";
                    readonly name: "decryptableBalance";
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "equalityProofInstructionOffset";
                readonly docs: readonly ["Relative location of the", "`ProofInstruction::VerifyCiphertextCommitmentEquality` instruction", "to the `Withdraw` instruction in the transaction. If the offset is", "`0`, then use a context state account for the proof."];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "i8";
                    readonly endian: "le";
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "rangeProofInstructionOffset";
                readonly docs: readonly ["Relative location of the `ProofInstruction::BatchedRangeProofU64`", "instruction to the `Withdraw` instruction in the transaction. If the", "offset is `0`, then use a context state account for the proof."];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "i8";
                    readonly endian: "le";
                };
            }];
            readonly remainingAccounts: readonly [{
                readonly kind: "instructionRemainingAccountsNode";
                readonly isOptional: true;
                readonly isSigner: true;
                readonly docs: readonly [];
                readonly value: {
                    readonly kind: "argumentValueNode";
                    readonly name: "multiSigners";
                };
            }];
            readonly discriminators: readonly [{
                readonly kind: "fieldDiscriminatorNode";
                readonly name: "discriminator";
                readonly offset: 0;
            }, {
                readonly kind: "fieldDiscriminatorNode";
                readonly name: "confidentialTransferDiscriminator";
                readonly offset: 1;
            }];
        }, {
            readonly kind: "instructionNode";
            readonly name: "confidentialTransfer";
            readonly docs: readonly ["Transfer tokens confidentially.", "", "In order for this instruction to be successfully processed, it must be", "accompanied by the following list of `zk_elgamal_proof` program", "instructions:", "- `VerifyCiphertextCommitmentEquality`", "- `VerifyBatchedGroupedCiphertext3HandlesValidity`", "- `VerifyBatchedRangeProofU128`", "These instructions can be accompanied in the same transaction or can be", "pre-verified into a context state account, in which case, only their", "context state account addresses need to be provided.", "", "Fails if the associated mint is extended as `NonTransferable`."];
            readonly optionalAccountStrategy: "programId";
            readonly accounts: readonly [{
                readonly kind: "instructionAccountNode";
                readonly name: "sourceToken";
                readonly isWritable: true;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly ["The source SPL Token account."];
            }, {
                readonly kind: "instructionAccountNode";
                readonly name: "mint";
                readonly isWritable: false;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly ["The corresponding SPL Token mint."];
            }, {
                readonly kind: "instructionAccountNode";
                readonly name: "destinationToken";
                readonly isWritable: true;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly ["The destination SPL Token account."];
            }, {
                readonly kind: "instructionAccountNode";
                readonly name: "instructionsSysvar";
                readonly isWritable: false;
                readonly isSigner: false;
                readonly isOptional: true;
                readonly docs: readonly ["(Optional) Instructions sysvar if at least one of the", "`zk_elgamal_proof` instructions are included in the same", "transaction."];
            }, {
                readonly kind: "instructionAccountNode";
                readonly name: "equalityRecord";
                readonly isWritable: false;
                readonly isSigner: false;
                readonly isOptional: true;
                readonly docs: readonly ["(Optional) Equality proof record account or context state account."];
            }, {
                readonly kind: "instructionAccountNode";
                readonly name: "ciphertextValidityRecord";
                readonly isWritable: false;
                readonly isSigner: false;
                readonly isOptional: true;
                readonly docs: readonly ["(Optional) Ciphertext validity proof record account or context state account."];
            }, {
                readonly kind: "instructionAccountNode";
                readonly name: "rangeRecord";
                readonly isWritable: false;
                readonly isSigner: false;
                readonly isOptional: true;
                readonly docs: readonly ["(Optional) Range proof record account or context state account."];
            }, {
                readonly kind: "instructionAccountNode";
                readonly name: "authority";
                readonly isWritable: false;
                readonly isSigner: "either";
                readonly isOptional: false;
                readonly docs: readonly ["The source account's owner/delegate or its multisignature account."];
            }];
            readonly arguments: readonly [{
                readonly kind: "instructionArgumentNode";
                readonly name: "discriminator";
                readonly defaultValueStrategy: "omitted";
                readonly docs: readonly [];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u8";
                    readonly endian: "le";
                };
                readonly defaultValue: {
                    readonly kind: "numberValueNode";
                    readonly number: 27;
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "confidentialTransferDiscriminator";
                readonly defaultValueStrategy: "omitted";
                readonly docs: readonly [];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u8";
                    readonly endian: "le";
                };
                readonly defaultValue: {
                    readonly kind: "numberValueNode";
                    readonly number: 7;
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "newSourceDecryptableAvailableBalance";
                readonly docs: readonly ["The new source decryptable balance if the transfer succeeds."];
                readonly type: {
                    readonly kind: "definedTypeLinkNode";
                    readonly name: "decryptableBalance";
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "equalityProofInstructionOffset";
                readonly docs: readonly ["Relative location of the", "`ProofInstruction::VerifyCiphertextCommitmentEquality` instruction", "to the `Transfer` instruction in the transaction. If the offset is", "`0`, then use a context state account for the proof."];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "i8";
                    readonly endian: "le";
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "ciphertextValidityProofInstructionOffset";
                readonly docs: readonly ["Relative location of the", "`ProofInstruction::VerifyBatchedGroupedCiphertext3HandlesValidity`", "instruction to the `Transfer` instruction in the transaction. If the", "offset is `0`, then use a context state account for the proof."];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "i8";
                    readonly endian: "le";
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "rangeProofInstructionOffset";
                readonly docs: readonly ["Relative location of the `ProofInstruction::BatchedRangeProofU128Data`", "instruction to the `Transfer` instruction in the transaction. If the", "offset is `0`, then use a context state account for the proof."];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "i8";
                    readonly endian: "le";
                };
            }];
            readonly remainingAccounts: readonly [{
                readonly kind: "instructionRemainingAccountsNode";
                readonly isOptional: true;
                readonly isSigner: true;
                readonly docs: readonly [];
                readonly value: {
                    readonly kind: "argumentValueNode";
                    readonly name: "multiSigners";
                };
            }];
            readonly discriminators: readonly [{
                readonly kind: "fieldDiscriminatorNode";
                readonly name: "discriminator";
                readonly offset: 0;
            }, {
                readonly kind: "fieldDiscriminatorNode";
                readonly name: "confidentialTransferDiscriminator";
                readonly offset: 1;
            }];
        }, {
            readonly kind: "instructionNode";
            readonly name: "applyConfidentialPendingBalance";
            readonly docs: readonly ["Applies the pending balance to the available balance, based on the", "history of `Deposit` and/or `Transfer` instructions.", "", "After submitting `ApplyPendingBalance`, the client should compare", "`ConfidentialTransferAccount::expected_pending_balance_credit_counter`", "with", "`ConfidentialTransferAccount::actual_applied_pending_balance_instructions`.  If they are", "equal then the", "`ConfidentialTransferAccount::decryptable_available_balance` is", "consistent with `ConfidentialTransferAccount::available_balance`. If", "they differ then there is more pending balance to be applied."];
            readonly optionalAccountStrategy: "programId";
            readonly accounts: readonly [{
                readonly kind: "instructionAccountNode";
                readonly name: "token";
                readonly isWritable: true;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly ["The SPL Token account."];
            }, {
                readonly kind: "instructionAccountNode";
                readonly name: "authority";
                readonly isWritable: false;
                readonly isSigner: "either";
                readonly isOptional: false;
                readonly docs: readonly ["The source account's owner/delegate or its multisignature account."];
            }];
            readonly arguments: readonly [{
                readonly kind: "instructionArgumentNode";
                readonly name: "discriminator";
                readonly defaultValueStrategy: "omitted";
                readonly docs: readonly [];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u8";
                    readonly endian: "le";
                };
                readonly defaultValue: {
                    readonly kind: "numberValueNode";
                    readonly number: 27;
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "confidentialTransferDiscriminator";
                readonly defaultValueStrategy: "omitted";
                readonly docs: readonly [];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u8";
                    readonly endian: "le";
                };
                readonly defaultValue: {
                    readonly kind: "numberValueNode";
                    readonly number: 8;
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "expectedPendingBalanceCreditCounter";
                readonly docs: readonly ["The expected number of pending balance credits since the last successful", "`ApplyPendingBalance` instruction"];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u64";
                    readonly endian: "le";
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "newDecryptableAvailableBalance";
                readonly docs: readonly ["The new decryptable balance if the pending balance is applied", "successfully"];
                readonly type: {
                    readonly kind: "definedTypeLinkNode";
                    readonly name: "decryptableBalance";
                };
            }];
            readonly remainingAccounts: readonly [{
                readonly kind: "instructionRemainingAccountsNode";
                readonly isOptional: true;
                readonly isSigner: true;
                readonly docs: readonly [];
                readonly value: {
                    readonly kind: "argumentValueNode";
                    readonly name: "multiSigners";
                };
            }];
            readonly discriminators: readonly [{
                readonly kind: "fieldDiscriminatorNode";
                readonly name: "discriminator";
                readonly offset: 0;
            }, {
                readonly kind: "fieldDiscriminatorNode";
                readonly name: "confidentialTransferDiscriminator";
                readonly offset: 1;
            }];
        }, {
            readonly kind: "instructionNode";
            readonly name: "enableConfidentialCredits";
            readonly docs: readonly ["Configure a confidential extension account to accept incoming", "confidential transfers."];
            readonly optionalAccountStrategy: "programId";
            readonly accounts: readonly [{
                readonly kind: "instructionAccountNode";
                readonly name: "token";
                readonly isWritable: true;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly ["The SPL Token account."];
            }, {
                readonly kind: "instructionAccountNode";
                readonly name: "authority";
                readonly isWritable: false;
                readonly isSigner: "either";
                readonly isOptional: false;
                readonly docs: readonly ["The source account's owner/delegate or its multisignature account."];
            }];
            readonly arguments: readonly [{
                readonly kind: "instructionArgumentNode";
                readonly name: "discriminator";
                readonly defaultValueStrategy: "omitted";
                readonly docs: readonly [];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u8";
                    readonly endian: "le";
                };
                readonly defaultValue: {
                    readonly kind: "numberValueNode";
                    readonly number: 27;
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "confidentialTransferDiscriminator";
                readonly defaultValueStrategy: "omitted";
                readonly docs: readonly [];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u8";
                    readonly endian: "le";
                };
                readonly defaultValue: {
                    readonly kind: "numberValueNode";
                    readonly number: 9;
                };
            }];
            readonly remainingAccounts: readonly [{
                readonly kind: "instructionRemainingAccountsNode";
                readonly isOptional: true;
                readonly isSigner: true;
                readonly docs: readonly [];
                readonly value: {
                    readonly kind: "argumentValueNode";
                    readonly name: "multiSigners";
                };
            }];
            readonly discriminators: readonly [{
                readonly kind: "fieldDiscriminatorNode";
                readonly name: "discriminator";
                readonly offset: 0;
            }, {
                readonly kind: "fieldDiscriminatorNode";
                readonly name: "confidentialTransferDiscriminator";
                readonly offset: 1;
            }];
        }, {
            readonly kind: "instructionNode";
            readonly name: "disableConfidentialCredits";
            readonly docs: readonly ["Configure a confidential extension account to reject any incoming", "confidential transfers.", "", "If the `allow_non_confidential_credits` field is `true`, then the base", "account can still receive non-confidential transfers.", "", "This instruction can be used to disable confidential payments after a", "token account has already been extended for confidential transfers."];
            readonly optionalAccountStrategy: "programId";
            readonly accounts: readonly [{
                readonly kind: "instructionAccountNode";
                readonly name: "token";
                readonly isWritable: true;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly ["The SPL Token account."];
            }, {
                readonly kind: "instructionAccountNode";
                readonly name: "authority";
                readonly isWritable: false;
                readonly isSigner: "either";
                readonly isOptional: false;
                readonly docs: readonly ["The source account's owner/delegate or its multisignature account."];
            }];
            readonly arguments: readonly [{
                readonly kind: "instructionArgumentNode";
                readonly name: "discriminator";
                readonly defaultValueStrategy: "omitted";
                readonly docs: readonly [];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u8";
                    readonly endian: "le";
                };
                readonly defaultValue: {
                    readonly kind: "numberValueNode";
                    readonly number: 27;
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "confidentialTransferDiscriminator";
                readonly defaultValueStrategy: "omitted";
                readonly docs: readonly [];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u8";
                    readonly endian: "le";
                };
                readonly defaultValue: {
                    readonly kind: "numberValueNode";
                    readonly number: 10;
                };
            }];
            readonly remainingAccounts: readonly [{
                readonly kind: "instructionRemainingAccountsNode";
                readonly isOptional: true;
                readonly isSigner: true;
                readonly docs: readonly [];
                readonly value: {
                    readonly kind: "argumentValueNode";
                    readonly name: "multiSigners";
                };
            }];
            readonly discriminators: readonly [{
                readonly kind: "fieldDiscriminatorNode";
                readonly name: "discriminator";
                readonly offset: 0;
            }, {
                readonly kind: "fieldDiscriminatorNode";
                readonly name: "confidentialTransferDiscriminator";
                readonly offset: 1;
            }];
        }, {
            readonly kind: "instructionNode";
            readonly name: "enableNonConfidentialCredits";
            readonly docs: readonly ["Configure an account with the confidential extension to accept incoming", "non-confidential transfers."];
            readonly optionalAccountStrategy: "programId";
            readonly accounts: readonly [{
                readonly kind: "instructionAccountNode";
                readonly name: "token";
                readonly isWritable: true;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly ["The SPL Token account."];
            }, {
                readonly kind: "instructionAccountNode";
                readonly name: "authority";
                readonly isWritable: false;
                readonly isSigner: "either";
                readonly isOptional: false;
                readonly docs: readonly ["The source account's owner/delegate or its multisignature account."];
            }];
            readonly arguments: readonly [{
                readonly kind: "instructionArgumentNode";
                readonly name: "discriminator";
                readonly defaultValueStrategy: "omitted";
                readonly docs: readonly [];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u8";
                    readonly endian: "le";
                };
                readonly defaultValue: {
                    readonly kind: "numberValueNode";
                    readonly number: 27;
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "confidentialTransferDiscriminator";
                readonly defaultValueStrategy: "omitted";
                readonly docs: readonly [];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u8";
                    readonly endian: "le";
                };
                readonly defaultValue: {
                    readonly kind: "numberValueNode";
                    readonly number: 11;
                };
            }];
            readonly remainingAccounts: readonly [{
                readonly kind: "instructionRemainingAccountsNode";
                readonly isOptional: true;
                readonly isSigner: true;
                readonly docs: readonly [];
                readonly value: {
                    readonly kind: "argumentValueNode";
                    readonly name: "multiSigners";
                };
            }];
            readonly discriminators: readonly [{
                readonly kind: "fieldDiscriminatorNode";
                readonly name: "discriminator";
                readonly offset: 0;
            }, {
                readonly kind: "fieldDiscriminatorNode";
                readonly name: "confidentialTransferDiscriminator";
                readonly offset: 1;
            }];
        }, {
            readonly kind: "instructionNode";
            readonly name: "disableNonConfidentialCredits";
            readonly docs: readonly ["Configure an account with the confidential extension to reject any", "incoming non-confidential transfers.", "", "This instruction can be used to configure a confidential extension", "account to exclusively receive confidential payments."];
            readonly optionalAccountStrategy: "programId";
            readonly accounts: readonly [{
                readonly kind: "instructionAccountNode";
                readonly name: "token";
                readonly isWritable: true;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly ["The SPL Token account."];
            }, {
                readonly kind: "instructionAccountNode";
                readonly name: "authority";
                readonly isWritable: false;
                readonly isSigner: "either";
                readonly isOptional: false;
                readonly docs: readonly ["The source account's owner/delegate or its multisignature account."];
            }];
            readonly arguments: readonly [{
                readonly kind: "instructionArgumentNode";
                readonly name: "discriminator";
                readonly defaultValueStrategy: "omitted";
                readonly docs: readonly [];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u8";
                    readonly endian: "le";
                };
                readonly defaultValue: {
                    readonly kind: "numberValueNode";
                    readonly number: 27;
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "confidentialTransferDiscriminator";
                readonly defaultValueStrategy: "omitted";
                readonly docs: readonly [];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u8";
                    readonly endian: "le";
                };
                readonly defaultValue: {
                    readonly kind: "numberValueNode";
                    readonly number: 12;
                };
            }];
            readonly remainingAccounts: readonly [{
                readonly kind: "instructionRemainingAccountsNode";
                readonly isOptional: true;
                readonly isSigner: true;
                readonly docs: readonly [];
                readonly value: {
                    readonly kind: "argumentValueNode";
                    readonly name: "multiSigners";
                };
            }];
            readonly discriminators: readonly [{
                readonly kind: "fieldDiscriminatorNode";
                readonly name: "discriminator";
                readonly offset: 0;
            }, {
                readonly kind: "fieldDiscriminatorNode";
                readonly name: "confidentialTransferDiscriminator";
                readonly offset: 1;
            }];
        }, {
            readonly kind: "instructionNode";
            readonly name: "confidentialTransferWithFee";
            readonly docs: readonly ["Transfer tokens confidentially with fee.", "", "In order for this instruction to be successfully processed, it must be", "accompanied by the following list of `zk_elgamal_proof` program", "instructions:", "- `VerifyCiphertextCommitmentEquality`", "- `VerifyBatchedGroupedCiphertext3HandlesValidity` (transfer amount", "  ciphertext)", "- `VerifyPercentageWithFee`", "- `VerifyBatchedGroupedCiphertext2HandlesValidity` (fee ciphertext)", "- `VerifyBatchedRangeProofU256`", "These instructions can be accompanied in the same transaction or can be", "pre-verified into a context state account, in which case, only their", "context state account addresses need to be provided.", "", "The same restrictions for the `Transfer` applies to", "`TransferWithFee`. Namely, the instruction fails if the", "associated mint is extended as `NonTransferable`."];
            readonly optionalAccountStrategy: "programId";
            readonly accounts: readonly [{
                readonly kind: "instructionAccountNode";
                readonly name: "sourceToken";
                readonly isWritable: true;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly ["The source SPL Token account."];
            }, {
                readonly kind: "instructionAccountNode";
                readonly name: "mint";
                readonly isWritable: false;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly ["The corresponding SPL Token mint."];
            }, {
                readonly kind: "instructionAccountNode";
                readonly name: "destinationToken";
                readonly isWritable: true;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly ["The destination SPL Token account."];
            }, {
                readonly kind: "instructionAccountNode";
                readonly name: "instructionsSysvar";
                readonly isWritable: false;
                readonly isSigner: false;
                readonly isOptional: true;
                readonly docs: readonly ["(Optional) Instructions sysvar if at least one of the", "`zk_elgamal_proof` instructions are included in the same", "transaction."];
            }, {
                readonly kind: "instructionAccountNode";
                readonly name: "equalityRecord";
                readonly isWritable: false;
                readonly isSigner: false;
                readonly isOptional: true;
                readonly docs: readonly ["(Optional) Equality proof record account or context state account."];
            }, {
                readonly kind: "instructionAccountNode";
                readonly name: "transferAmountCiphertextValidityRecord";
                readonly isWritable: false;
                readonly isSigner: false;
                readonly isOptional: true;
                readonly docs: readonly ["(Optional) Transfer amount ciphertext validity proof record", "account or context state account."];
            }, {
                readonly kind: "instructionAccountNode";
                readonly name: "feeSigmaRecord";
                readonly isWritable: false;
                readonly isSigner: false;
                readonly isOptional: true;
                readonly docs: readonly ["(Optional) Fee sigma proof record account or context state account."];
            }, {
                readonly kind: "instructionAccountNode";
                readonly name: "feeCiphertextValidityRecord";
                readonly isWritable: false;
                readonly isSigner: false;
                readonly isOptional: true;
                readonly docs: readonly ["(Optional) Fee ciphertext validity proof record account or context state account."];
            }, {
                readonly kind: "instructionAccountNode";
                readonly name: "rangeRecord";
                readonly isWritable: false;
                readonly isSigner: false;
                readonly isOptional: true;
                readonly docs: readonly ["(Optional) Range proof record account or context state account."];
            }, {
                readonly kind: "instructionAccountNode";
                readonly name: "authority";
                readonly isWritable: false;
                readonly isSigner: "either";
                readonly isOptional: false;
                readonly docs: readonly ["The source account's owner/delegate or its multisignature account."];
            }];
            readonly arguments: readonly [{
                readonly kind: "instructionArgumentNode";
                readonly name: "discriminator";
                readonly defaultValueStrategy: "omitted";
                readonly docs: readonly [];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u8";
                    readonly endian: "le";
                };
                readonly defaultValue: {
                    readonly kind: "numberValueNode";
                    readonly number: 27;
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "confidentialTransferDiscriminator";
                readonly defaultValueStrategy: "omitted";
                readonly docs: readonly [];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u8";
                    readonly endian: "le";
                };
                readonly defaultValue: {
                    readonly kind: "numberValueNode";
                    readonly number: 13;
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "newSourceDecryptableAvailableBalance";
                readonly docs: readonly ["The new source decryptable balance if the transfer succeeds."];
                readonly type: {
                    readonly kind: "definedTypeLinkNode";
                    readonly name: "decryptableBalance";
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "equalityProofInstructionOffset";
                readonly docs: readonly ["Relative location of the", "`ProofInstruction::VerifyCiphertextCommitmentEquality` instruction", "to the `TransferWithFee` instruction in the transaction. If the offset", "is `0`, then use a context state account for the proof."];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "i8";
                    readonly endian: "le";
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "transferAmountCiphertextValidityProofInstructionOffset";
                readonly docs: readonly ["Relative location of the", "`ProofInstruction::VerifyBatchedGroupedCiphertext3HandlesValidity`", "instruction to the `TransferWithFee` instruction in the transaction.", "If the offset is `0`, then use a context state account for the", "proof."];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "i8";
                    readonly endian: "le";
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "feeSigmaProofInstructionOffset";
                readonly docs: readonly ["Relative location of the `ProofInstruction::VerifyPercentageWithFee`", "instruction to the `TransferWithFee` instruction in the transaction.", "If the offset is `0`, then use a context state account for the", "proof."];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "i8";
                    readonly endian: "le";
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "feeCiphertextValidityProofInstructionOffset";
                readonly docs: readonly ["Relative location of the", "`ProofInstruction::VerifyBatchedGroupedCiphertext2HandlesValidity`", "instruction to the `TransferWithFee` instruction in the transaction.", "If the offset is `0`, then use a context state account for the", "proof."];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "i8";
                    readonly endian: "le";
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "rangeProofInstructionOffset";
                readonly docs: readonly ["Relative location of the `ProofInstruction::BatchedRangeProofU256Data`", "instruction to the `TransferWithFee` instruction in the transaction.", "If the offset is `0`, then use a context state account for the", "proof."];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "i8";
                    readonly endian: "le";
                };
            }];
            readonly remainingAccounts: readonly [{
                readonly kind: "instructionRemainingAccountsNode";
                readonly isOptional: true;
                readonly isSigner: true;
                readonly docs: readonly [];
                readonly value: {
                    readonly kind: "argumentValueNode";
                    readonly name: "multiSigners";
                };
            }];
            readonly discriminators: readonly [{
                readonly kind: "fieldDiscriminatorNode";
                readonly name: "discriminator";
                readonly offset: 0;
            }, {
                readonly kind: "fieldDiscriminatorNode";
                readonly name: "confidentialTransferDiscriminator";
                readonly offset: 1;
            }];
        }, {
            readonly kind: "instructionNode";
            readonly name: "initializeDefaultAccountState";
            readonly docs: readonly ["Initialize a new mint with the default state for new Accounts.", "", "Fails if the mint has already been initialized, so must be called before", "`InitializeMint`.", "", "The mint must have exactly enough space allocated for the base mint (82", "bytes), plus 83 bytes of padding, 1 byte reserved for the account type,", "then space required for this extension, plus any others."];
            readonly optionalAccountStrategy: "programId";
            readonly accounts: readonly [{
                readonly kind: "instructionAccountNode";
                readonly name: "mint";
                readonly isWritable: true;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly ["The mint."];
            }];
            readonly arguments: readonly [{
                readonly kind: "instructionArgumentNode";
                readonly name: "discriminator";
                readonly defaultValueStrategy: "omitted";
                readonly docs: readonly [];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u8";
                    readonly endian: "le";
                };
                readonly defaultValue: {
                    readonly kind: "numberValueNode";
                    readonly number: 28;
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "defaultAccountStateDiscriminator";
                readonly defaultValueStrategy: "omitted";
                readonly docs: readonly [];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u8";
                    readonly endian: "le";
                };
                readonly defaultValue: {
                    readonly kind: "numberValueNode";
                    readonly number: 0;
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "state";
                readonly docs: readonly ["The state each new token account should start with."];
                readonly type: {
                    readonly kind: "definedTypeLinkNode";
                    readonly name: "accountState";
                };
            }];
            readonly discriminators: readonly [{
                readonly kind: "fieldDiscriminatorNode";
                readonly name: "discriminator";
                readonly offset: 0;
            }, {
                readonly kind: "fieldDiscriminatorNode";
                readonly name: "defaultAccountStateDiscriminator";
                readonly offset: 1;
            }];
        }, {
            readonly kind: "instructionNode";
            readonly name: "updateDefaultAccountState";
            readonly docs: readonly ["Update the default state for new Accounts. Only supported for mints that", "include the `DefaultAccountState` extension."];
            readonly optionalAccountStrategy: "programId";
            readonly accounts: readonly [{
                readonly kind: "instructionAccountNode";
                readonly name: "mint";
                readonly isWritable: true;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly ["The mint."];
            }, {
                readonly kind: "instructionAccountNode";
                readonly name: "freezeAuthority";
                readonly isWritable: false;
                readonly isSigner: "either";
                readonly isOptional: false;
                readonly docs: readonly ["The mint freeze authority or its multisignature account."];
            }];
            readonly arguments: readonly [{
                readonly kind: "instructionArgumentNode";
                readonly name: "discriminator";
                readonly defaultValueStrategy: "omitted";
                readonly docs: readonly [];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u8";
                    readonly endian: "le";
                };
                readonly defaultValue: {
                    readonly kind: "numberValueNode";
                    readonly number: 28;
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "defaultAccountStateDiscriminator";
                readonly defaultValueStrategy: "omitted";
                readonly docs: readonly [];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u8";
                    readonly endian: "le";
                };
                readonly defaultValue: {
                    readonly kind: "numberValueNode";
                    readonly number: 1;
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "state";
                readonly docs: readonly ["The state each new token account should start with."];
                readonly type: {
                    readonly kind: "definedTypeLinkNode";
                    readonly name: "accountState";
                };
            }];
            readonly remainingAccounts: readonly [{
                readonly kind: "instructionRemainingAccountsNode";
                readonly isOptional: true;
                readonly isSigner: true;
                readonly docs: readonly [];
                readonly value: {
                    readonly kind: "argumentValueNode";
                    readonly name: "multiSigners";
                };
            }];
            readonly discriminators: readonly [{
                readonly kind: "fieldDiscriminatorNode";
                readonly name: "discriminator";
                readonly offset: 0;
            }, {
                readonly kind: "fieldDiscriminatorNode";
                readonly name: "defaultAccountStateDiscriminator";
                readonly offset: 1;
            }];
        }, {
            readonly kind: "instructionNode";
            readonly name: "reallocate";
            readonly docs: readonly ["Check to see if a token account is large enough for a list of", "ExtensionTypes, and if not, use reallocation to increase the data", "size."];
            readonly optionalAccountStrategy: "programId";
            readonly accounts: readonly [{
                readonly kind: "instructionAccountNode";
                readonly name: "token";
                readonly isWritable: true;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly ["The token account to reallocate."];
            }, {
                readonly kind: "instructionAccountNode";
                readonly name: "payer";
                readonly isWritable: true;
                readonly isSigner: true;
                readonly isOptional: false;
                readonly docs: readonly ["The payer account to fund reallocation."];
            }, {
                readonly kind: "instructionAccountNode";
                readonly name: "systemProgram";
                readonly isWritable: false;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly ["System program for reallocation funding."];
                readonly defaultValue: {
                    readonly kind: "publicKeyValueNode";
                    readonly publicKey: "11111111111111111111111111111111";
                };
            }, {
                readonly kind: "instructionAccountNode";
                readonly name: "owner";
                readonly isWritable: false;
                readonly isSigner: "either";
                readonly isOptional: false;
                readonly docs: readonly ["The account's owner or its multisignature account."];
            }];
            readonly arguments: readonly [{
                readonly kind: "instructionArgumentNode";
                readonly name: "discriminator";
                readonly defaultValueStrategy: "omitted";
                readonly docs: readonly [];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u8";
                    readonly endian: "le";
                };
                readonly defaultValue: {
                    readonly kind: "numberValueNode";
                    readonly number: 29;
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "newExtensionTypes";
                readonly docs: readonly ["New extension types to include in the reallocated account."];
                readonly type: {
                    readonly kind: "arrayTypeNode";
                    readonly item: {
                        readonly kind: "definedTypeLinkNode";
                        readonly name: "extensionType";
                    };
                    readonly count: {
                        readonly kind: "remainderCountNode";
                    };
                };
            }];
            readonly remainingAccounts: readonly [{
                readonly kind: "instructionRemainingAccountsNode";
                readonly isOptional: true;
                readonly isSigner: true;
                readonly docs: readonly [];
                readonly value: {
                    readonly kind: "argumentValueNode";
                    readonly name: "multiSigners";
                };
            }];
            readonly discriminators: readonly [{
                readonly kind: "fieldDiscriminatorNode";
                readonly name: "discriminator";
                readonly offset: 0;
            }];
        }, {
            readonly kind: "instructionNode";
            readonly name: "enableMemoTransfers";
            readonly docs: readonly ["Require memos for transfers into this Account. Adds the MemoTransfer", "extension to the Account, if it doesn't already exist."];
            readonly optionalAccountStrategy: "programId";
            readonly accounts: readonly [{
                readonly kind: "instructionAccountNode";
                readonly name: "token";
                readonly isWritable: true;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly ["The token account to update."];
            }, {
                readonly kind: "instructionAccountNode";
                readonly name: "owner";
                readonly isWritable: false;
                readonly isSigner: "either";
                readonly isOptional: false;
                readonly docs: readonly ["The account's owner or its multisignature account."];
            }];
            readonly arguments: readonly [{
                readonly kind: "instructionArgumentNode";
                readonly name: "discriminator";
                readonly defaultValueStrategy: "omitted";
                readonly docs: readonly [];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u8";
                    readonly endian: "le";
                };
                readonly defaultValue: {
                    readonly kind: "numberValueNode";
                    readonly number: 30;
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "memoTransfersDiscriminator";
                readonly defaultValueStrategy: "omitted";
                readonly docs: readonly [];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u8";
                    readonly endian: "le";
                };
                readonly defaultValue: {
                    readonly kind: "numberValueNode";
                    readonly number: 0;
                };
            }];
            readonly remainingAccounts: readonly [{
                readonly kind: "instructionRemainingAccountsNode";
                readonly isOptional: true;
                readonly isSigner: true;
                readonly docs: readonly [];
                readonly value: {
                    readonly kind: "argumentValueNode";
                    readonly name: "multiSigners";
                };
            }];
            readonly discriminators: readonly [{
                readonly kind: "fieldDiscriminatorNode";
                readonly name: "discriminator";
                readonly offset: 0;
            }, {
                readonly kind: "fieldDiscriminatorNode";
                readonly name: "memoTransfersDiscriminator";
                readonly offset: 1;
            }];
        }, {
            readonly kind: "instructionNode";
            readonly name: "disableMemoTransfers";
            readonly docs: readonly ["Stop requiring memos for transfers into this Account.", "", "Implicitly initializes the extension in the case where it is not", "present."];
            readonly optionalAccountStrategy: "programId";
            readonly accounts: readonly [{
                readonly kind: "instructionAccountNode";
                readonly name: "token";
                readonly isWritable: true;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly ["The token account to update."];
            }, {
                readonly kind: "instructionAccountNode";
                readonly name: "owner";
                readonly isWritable: false;
                readonly isSigner: "either";
                readonly isOptional: false;
                readonly docs: readonly ["The account's owner or its multisignature account."];
            }];
            readonly arguments: readonly [{
                readonly kind: "instructionArgumentNode";
                readonly name: "discriminator";
                readonly defaultValueStrategy: "omitted";
                readonly docs: readonly [];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u8";
                    readonly endian: "le";
                };
                readonly defaultValue: {
                    readonly kind: "numberValueNode";
                    readonly number: 30;
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "memoTransfersDiscriminator";
                readonly defaultValueStrategy: "omitted";
                readonly docs: readonly [];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u8";
                    readonly endian: "le";
                };
                readonly defaultValue: {
                    readonly kind: "numberValueNode";
                    readonly number: 1;
                };
            }];
            readonly remainingAccounts: readonly [{
                readonly kind: "instructionRemainingAccountsNode";
                readonly isOptional: true;
                readonly isSigner: true;
                readonly docs: readonly [];
                readonly value: {
                    readonly kind: "argumentValueNode";
                    readonly name: "multiSigners";
                };
            }];
            readonly discriminators: readonly [{
                readonly kind: "fieldDiscriminatorNode";
                readonly name: "discriminator";
                readonly offset: 0;
            }, {
                readonly kind: "fieldDiscriminatorNode";
                readonly name: "memoTransfersDiscriminator";
                readonly offset: 1;
            }];
        }, {
            readonly kind: "instructionNode";
            readonly name: "createNativeMint";
            readonly docs: readonly ["Creates the native mint.", "", "This instruction only needs to be invoked once after deployment and is", "permissionless. Wrapped SOL (`native_mint::id()`) will not be", "available until this instruction is successfully executed."];
            readonly optionalAccountStrategy: "programId";
            readonly accounts: readonly [{
                readonly kind: "instructionAccountNode";
                readonly name: "payer";
                readonly isWritable: true;
                readonly isSigner: true;
                readonly isOptional: false;
                readonly docs: readonly ["Funding account (must be a system account)"];
            }, {
                readonly kind: "instructionAccountNode";
                readonly name: "nativeMint";
                readonly isWritable: true;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly ["The native mint address"];
            }, {
                readonly kind: "instructionAccountNode";
                readonly name: "systemProgram";
                readonly isWritable: false;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly ["System program for mint account funding"];
                readonly defaultValue: {
                    readonly kind: "publicKeyValueNode";
                    readonly publicKey: "11111111111111111111111111111111";
                };
            }];
            readonly arguments: readonly [{
                readonly kind: "instructionArgumentNode";
                readonly name: "discriminator";
                readonly defaultValueStrategy: "omitted";
                readonly docs: readonly [];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u8";
                    readonly endian: "le";
                };
                readonly defaultValue: {
                    readonly kind: "numberValueNode";
                    readonly number: 31;
                };
            }];
            readonly remainingAccounts: readonly [];
            readonly discriminators: readonly [{
                readonly kind: "fieldDiscriminatorNode";
                readonly name: "discriminator";
                readonly offset: 0;
            }];
        }, {
            readonly kind: "instructionNode";
            readonly name: "initializeNonTransferableMint";
            readonly docs: readonly ["Initialize the non transferable extension for the given mint account", "", "Fails if the account has already been initialized, so must be called before `InitializeMint`."];
            readonly optionalAccountStrategy: "programId";
            readonly accounts: readonly [{
                readonly kind: "instructionAccountNode";
                readonly name: "mint";
                readonly isWritable: true;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly ["The mint account to initialize."];
            }];
            readonly arguments: readonly [{
                readonly kind: "instructionArgumentNode";
                readonly name: "discriminator";
                readonly defaultValueStrategy: "omitted";
                readonly docs: readonly [];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u8";
                    readonly endian: "le";
                };
                readonly defaultValue: {
                    readonly kind: "numberValueNode";
                    readonly number: 32;
                };
            }];
            readonly discriminators: readonly [{
                readonly kind: "fieldDiscriminatorNode";
                readonly name: "discriminator";
                readonly offset: 0;
            }];
        }, {
            readonly kind: "instructionNode";
            readonly name: "initializeInterestBearingMint";
            readonly docs: readonly ["Initialize a new mint with the `InterestBearing` extension.", "", "Fails if the mint has already been initialized, so must be called before", "`InitializeMint`.", "", "The mint must have exactly enough space allocated for the base mint (82", "bytes), plus 83 bytes of padding, 1 byte reserved for the account type,", "then space required for this extension, plus any others."];
            readonly optionalAccountStrategy: "programId";
            readonly accounts: readonly [{
                readonly kind: "instructionAccountNode";
                readonly name: "mint";
                readonly isWritable: true;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly ["The mint to initialize."];
            }];
            readonly arguments: readonly [{
                readonly kind: "instructionArgumentNode";
                readonly name: "discriminator";
                readonly defaultValueStrategy: "omitted";
                readonly docs: readonly [];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u8";
                    readonly endian: "le";
                };
                readonly defaultValue: {
                    readonly kind: "numberValueNode";
                    readonly number: 33;
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "interestBearingMintDiscriminator";
                readonly defaultValueStrategy: "omitted";
                readonly docs: readonly [];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u8";
                    readonly endian: "le";
                };
                readonly defaultValue: {
                    readonly kind: "numberValueNode";
                    readonly number: 0;
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "rateAuthority";
                readonly docs: readonly ["The public key for the account that can update the rate"];
                readonly type: {
                    readonly kind: "zeroableOptionTypeNode";
                    readonly item: {
                        readonly kind: "publicKeyTypeNode";
                    };
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "rate";
                readonly docs: readonly ["The initial interest rate"];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "i16";
                    readonly endian: "le";
                };
            }];
            readonly discriminators: readonly [{
                readonly kind: "fieldDiscriminatorNode";
                readonly name: "discriminator";
                readonly offset: 0;
            }, {
                readonly kind: "fieldDiscriminatorNode";
                readonly name: "interestBearingMintDiscriminator";
                readonly offset: 1;
            }];
        }, {
            readonly kind: "instructionNode";
            readonly name: "updateRateInterestBearingMint";
            readonly docs: readonly ["Update the interest rate. Only supported for mints that include the", "`InterestBearingConfig` extension."];
            readonly optionalAccountStrategy: "programId";
            readonly accounts: readonly [{
                readonly kind: "instructionAccountNode";
                readonly name: "mint";
                readonly isWritable: true;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly ["The mint."];
            }, {
                readonly kind: "instructionAccountNode";
                readonly name: "rateAuthority";
                readonly isWritable: true;
                readonly isSigner: "either";
                readonly isOptional: false;
                readonly docs: readonly ["The mint rate authority."];
            }];
            readonly arguments: readonly [{
                readonly kind: "instructionArgumentNode";
                readonly name: "discriminator";
                readonly defaultValueStrategy: "omitted";
                readonly docs: readonly [];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u8";
                    readonly endian: "le";
                };
                readonly defaultValue: {
                    readonly kind: "numberValueNode";
                    readonly number: 33;
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "interestBearingMintDiscriminator";
                readonly defaultValueStrategy: "omitted";
                readonly docs: readonly [];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u8";
                    readonly endian: "le";
                };
                readonly defaultValue: {
                    readonly kind: "numberValueNode";
                    readonly number: 1;
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "rate";
                readonly docs: readonly ["The interest rate to update."];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "i16";
                    readonly endian: "le";
                };
            }];
            readonly remainingAccounts: readonly [{
                readonly kind: "instructionRemainingAccountsNode";
                readonly isOptional: true;
                readonly isSigner: true;
                readonly docs: readonly [];
                readonly value: {
                    readonly kind: "argumentValueNode";
                    readonly name: "multiSigners";
                };
            }];
            readonly discriminators: readonly [{
                readonly kind: "fieldDiscriminatorNode";
                readonly name: "discriminator";
                readonly offset: 0;
            }, {
                readonly kind: "fieldDiscriminatorNode";
                readonly name: "interestBearingMintDiscriminator";
                readonly offset: 1;
            }];
        }, {
            readonly kind: "instructionNode";
            readonly name: "enableCpiGuard";
            readonly docs: readonly ["Lock certain token operations from taking place within CPI for this Account, namely:", "* Transfer and Burn must go through a delegate.", "* CloseAccount can only return lamports to owner.", "* SetAuthority can only be used to remove an existing close authority.", "* Approve is disallowed entirely.", "", "In addition, CPI Guard cannot be enabled or disabled via CPI."];
            readonly optionalAccountStrategy: "programId";
            readonly accounts: readonly [{
                readonly kind: "instructionAccountNode";
                readonly name: "token";
                readonly isWritable: true;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly ["The token account to update."];
            }, {
                readonly kind: "instructionAccountNode";
                readonly name: "owner";
                readonly isWritable: false;
                readonly isSigner: "either";
                readonly isOptional: false;
                readonly docs: readonly ["The account's owner/delegate or its multisignature account."];
            }];
            readonly arguments: readonly [{
                readonly kind: "instructionArgumentNode";
                readonly name: "discriminator";
                readonly defaultValueStrategy: "omitted";
                readonly docs: readonly [];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u8";
                    readonly endian: "le";
                };
                readonly defaultValue: {
                    readonly kind: "numberValueNode";
                    readonly number: 34;
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "cpiGuardDiscriminator";
                readonly defaultValueStrategy: "omitted";
                readonly docs: readonly [];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u8";
                    readonly endian: "le";
                };
                readonly defaultValue: {
                    readonly kind: "numberValueNode";
                    readonly number: 0;
                };
            }];
            readonly remainingAccounts: readonly [{
                readonly kind: "instructionRemainingAccountsNode";
                readonly isOptional: true;
                readonly isSigner: true;
                readonly docs: readonly [];
                readonly value: {
                    readonly kind: "argumentValueNode";
                    readonly name: "multiSigners";
                };
            }];
            readonly discriminators: readonly [{
                readonly kind: "fieldDiscriminatorNode";
                readonly name: "discriminator";
                readonly offset: 0;
            }, {
                readonly kind: "fieldDiscriminatorNode";
                readonly name: "cpiGuardDiscriminator";
                readonly offset: 1;
            }];
        }, {
            readonly kind: "instructionNode";
            readonly name: "disableCpiGuard";
            readonly docs: readonly ["Allow all token operations to happen via CPI as normal.", "", "Implicitly initializes the extension in the case where it is not present."];
            readonly optionalAccountStrategy: "programId";
            readonly accounts: readonly [{
                readonly kind: "instructionAccountNode";
                readonly name: "token";
                readonly isWritable: true;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly ["The token account to update."];
            }, {
                readonly kind: "instructionAccountNode";
                readonly name: "owner";
                readonly isWritable: false;
                readonly isSigner: "either";
                readonly isOptional: false;
                readonly docs: readonly ["The account's owner/delegate or its multisignature account."];
            }];
            readonly arguments: readonly [{
                readonly kind: "instructionArgumentNode";
                readonly name: "discriminator";
                readonly defaultValueStrategy: "omitted";
                readonly docs: readonly [];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u8";
                    readonly endian: "le";
                };
                readonly defaultValue: {
                    readonly kind: "numberValueNode";
                    readonly number: 34;
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "cpiGuardDiscriminator";
                readonly defaultValueStrategy: "omitted";
                readonly docs: readonly [];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u8";
                    readonly endian: "le";
                };
                readonly defaultValue: {
                    readonly kind: "numberValueNode";
                    readonly number: 1;
                };
            }];
            readonly remainingAccounts: readonly [{
                readonly kind: "instructionRemainingAccountsNode";
                readonly isOptional: true;
                readonly isSigner: true;
                readonly docs: readonly [];
                readonly value: {
                    readonly kind: "argumentValueNode";
                    readonly name: "multiSigners";
                };
            }];
            readonly discriminators: readonly [{
                readonly kind: "fieldDiscriminatorNode";
                readonly name: "discriminator";
                readonly offset: 0;
            }, {
                readonly kind: "fieldDiscriminatorNode";
                readonly name: "cpiGuardDiscriminator";
                readonly offset: 1;
            }];
        }, {
            readonly kind: "instructionNode";
            readonly name: "initializePermanentDelegate";
            readonly docs: readonly ["Initialize the permanent delegate on a new mint.", "", "Fails if the mint has already been initialized, so must be called before `InitializeMint`.", "", "The mint must have exactly enough space allocated for the base mint (82 bytes),", "plus 83 bytes of padding, 1 byte reserved for the account type,", "then space required for this extension, plus any others."];
            readonly optionalAccountStrategy: "programId";
            readonly accounts: readonly [{
                readonly kind: "instructionAccountNode";
                readonly name: "mint";
                readonly isWritable: true;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly ["The mint to initialize."];
            }];
            readonly arguments: readonly [{
                readonly kind: "instructionArgumentNode";
                readonly name: "discriminator";
                readonly defaultValueStrategy: "omitted";
                readonly docs: readonly [];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u8";
                    readonly endian: "le";
                };
                readonly defaultValue: {
                    readonly kind: "numberValueNode";
                    readonly number: 35;
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "delegate";
                readonly docs: readonly ["Authority that may sign for `Transfer`s and `Burn`s on any account"];
                readonly type: {
                    readonly kind: "publicKeyTypeNode";
                };
            }];
            readonly discriminators: readonly [{
                readonly kind: "fieldDiscriminatorNode";
                readonly name: "discriminator";
                readonly offset: 0;
            }];
        }, {
            readonly kind: "instructionNode";
            readonly name: "initializeTransferHook";
            readonly docs: readonly ["Initialize a new mint with a transfer hook program.", "", "Fails if the mint has already been initialized, so must be called before `InitializeMint`.", "", "The mint must have exactly enough space allocated for the base mint (82 bytes),", "plus 83 bytes of padding, 1 byte reserved for the account type,", "then space required for this extension, plus any others."];
            readonly optionalAccountStrategy: "programId";
            readonly accounts: readonly [{
                readonly kind: "instructionAccountNode";
                readonly name: "mint";
                readonly isWritable: true;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly ["The mint to initialize."];
            }];
            readonly arguments: readonly [{
                readonly kind: "instructionArgumentNode";
                readonly name: "discriminator";
                readonly defaultValueStrategy: "omitted";
                readonly docs: readonly [];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u8";
                    readonly endian: "le";
                };
                readonly defaultValue: {
                    readonly kind: "numberValueNode";
                    readonly number: 36;
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "transferHookDiscriminator";
                readonly defaultValueStrategy: "omitted";
                readonly docs: readonly [];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u8";
                    readonly endian: "le";
                };
                readonly defaultValue: {
                    readonly kind: "numberValueNode";
                    readonly number: 0;
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "authority";
                readonly docs: readonly ["The public key for the account that can update the program id"];
                readonly type: {
                    readonly kind: "zeroableOptionTypeNode";
                    readonly item: {
                        readonly kind: "publicKeyTypeNode";
                    };
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "programId";
                readonly docs: readonly ["The program id that performs logic during transfers"];
                readonly type: {
                    readonly kind: "zeroableOptionTypeNode";
                    readonly item: {
                        readonly kind: "publicKeyTypeNode";
                    };
                };
            }];
            readonly discriminators: readonly [{
                readonly kind: "fieldDiscriminatorNode";
                readonly name: "discriminator";
                readonly offset: 0;
            }, {
                readonly kind: "fieldDiscriminatorNode";
                readonly name: "transferHookDiscriminator";
                readonly offset: 1;
            }];
        }, {
            readonly kind: "instructionNode";
            readonly name: "updateTransferHook";
            readonly docs: readonly ["Update the transfer hook program id. Only supported for mints that", "include the `TransferHook` extension.", "", "Accounts expected by this instruction:", "", "  0. `[writable]` The mint.", "  1. `[signer]` The transfer hook authority."];
            readonly optionalAccountStrategy: "programId";
            readonly accounts: readonly [{
                readonly kind: "instructionAccountNode";
                readonly name: "mint";
                readonly isWritable: true;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly ["The mint."];
            }, {
                readonly kind: "instructionAccountNode";
                readonly name: "authority";
                readonly isWritable: false;
                readonly isSigner: "either";
                readonly isOptional: false;
                readonly docs: readonly ["The transfer hook authority."];
            }];
            readonly arguments: readonly [{
                readonly kind: "instructionArgumentNode";
                readonly name: "discriminator";
                readonly defaultValueStrategy: "omitted";
                readonly docs: readonly [];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u8";
                    readonly endian: "le";
                };
                readonly defaultValue: {
                    readonly kind: "numberValueNode";
                    readonly number: 36;
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "transferHookDiscriminator";
                readonly defaultValueStrategy: "omitted";
                readonly docs: readonly [];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u8";
                    readonly endian: "le";
                };
                readonly defaultValue: {
                    readonly kind: "numberValueNode";
                    readonly number: 1;
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "programId";
                readonly docs: readonly ["The program id that performs logic during transfers"];
                readonly type: {
                    readonly kind: "zeroableOptionTypeNode";
                    readonly item: {
                        readonly kind: "publicKeyTypeNode";
                    };
                };
            }];
            readonly remainingAccounts: readonly [{
                readonly kind: "instructionRemainingAccountsNode";
                readonly isOptional: true;
                readonly isSigner: true;
                readonly docs: readonly [];
                readonly value: {
                    readonly kind: "argumentValueNode";
                    readonly name: "multiSigners";
                };
            }];
            readonly discriminators: readonly [{
                readonly kind: "fieldDiscriminatorNode";
                readonly name: "discriminator";
                readonly offset: 0;
            }, {
                readonly kind: "fieldDiscriminatorNode";
                readonly name: "transferHookDiscriminator";
                readonly offset: 1;
            }];
        }, {
            readonly kind: "instructionNode";
            readonly name: "initializeConfidentialTransferFee";
            readonly docs: readonly ["Initializes confidential transfer fees for a mint.", "", "The instruction must be included within the same Transaction as TokenInstruction::InitializeMint.", "Otherwise another party can initialize the configuration.", "", "The instruction fails if TokenInstruction::InitializeMint has already executed for the mint."];
            readonly optionalAccountStrategy: "programId";
            readonly accounts: readonly [{
                readonly kind: "instructionAccountNode";
                readonly name: "mint";
                readonly isWritable: true;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly ["The SPL Token mint."];
            }];
            readonly arguments: readonly [{
                readonly kind: "instructionArgumentNode";
                readonly name: "discriminator";
                readonly defaultValueStrategy: "omitted";
                readonly docs: readonly [];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u8";
                    readonly endian: "le";
                };
                readonly defaultValue: {
                    readonly kind: "numberValueNode";
                    readonly number: 37;
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "confidentialTransferFeeDiscriminator";
                readonly defaultValueStrategy: "omitted";
                readonly docs: readonly [];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u8";
                    readonly endian: "le";
                };
                readonly defaultValue: {
                    readonly kind: "numberValueNode";
                    readonly number: 0;
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "authority";
                readonly docs: readonly ["Optional authority to set the withdraw withheld authority ElGamal key"];
                readonly type: {
                    readonly kind: "zeroableOptionTypeNode";
                    readonly item: {
                        readonly kind: "publicKeyTypeNode";
                    };
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "withdrawWithheldAuthorityElGamalPubkey";
                readonly docs: readonly ["Withheld fees from accounts must be encrypted with this ElGamal key"];
                readonly type: {
                    readonly kind: "zeroableOptionTypeNode";
                    readonly item: {
                        readonly kind: "publicKeyTypeNode";
                    };
                };
            }];
            readonly discriminators: readonly [{
                readonly kind: "fieldDiscriminatorNode";
                readonly name: "discriminator";
                readonly offset: 0;
            }, {
                readonly kind: "fieldDiscriminatorNode";
                readonly name: "confidentialTransferFeeDiscriminator";
                readonly offset: 1;
            }];
        }, {
            readonly kind: "instructionNode";
            readonly name: "withdrawWithheldTokensFromMintForConfidentialTransferFee";
            readonly docs: readonly ["Transfer all withheld confidential tokens in the mint to an account.", "Signed by the mint's withdraw withheld tokens authority.", "", "The withheld confidential tokens are aggregated directly into the destination available balance.", "", "Must be accompanied by the VerifyCiphertextCiphertextEquality instruction", "of the zk_elgamal_proof program in the same transaction or the address of", "a context state account for the proof must be provided."];
            readonly optionalAccountStrategy: "programId";
            readonly accounts: readonly [{
                readonly kind: "instructionAccountNode";
                readonly name: "mint";
                readonly isWritable: true;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly ["The token mint."];
            }, {
                readonly kind: "instructionAccountNode";
                readonly name: "destination";
                readonly isWritable: true;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly ["The fee receiver account."];
            }, {
                readonly kind: "instructionAccountNode";
                readonly name: "instructionsSysvarOrContextState";
                readonly isWritable: false;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly ["Instructions sysvar or context state account"];
            }, {
                readonly kind: "instructionAccountNode";
                readonly name: "record";
                readonly isWritable: false;
                readonly isSigner: false;
                readonly isOptional: true;
                readonly docs: readonly ["Optional record account if proof is read from record"];
            }, {
                readonly kind: "instructionAccountNode";
                readonly name: "authority";
                readonly isWritable: false;
                readonly isSigner: "either";
                readonly isOptional: false;
                readonly docs: readonly ["The mint's withdraw_withheld_authority"];
            }];
            readonly arguments: readonly [{
                readonly kind: "instructionArgumentNode";
                readonly name: "discriminator";
                readonly defaultValueStrategy: "omitted";
                readonly docs: readonly [];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u8";
                    readonly endian: "le";
                };
                readonly defaultValue: {
                    readonly kind: "numberValueNode";
                    readonly number: 37;
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "confidentialTransferFeeDiscriminator";
                readonly defaultValueStrategy: "omitted";
                readonly docs: readonly [];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u8";
                    readonly endian: "le";
                };
                readonly defaultValue: {
                    readonly kind: "numberValueNode";
                    readonly number: 1;
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "proofInstructionOffset";
                readonly docs: readonly ["Proof instruction offset"];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "i8";
                    readonly endian: "le";
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "newDecryptableAvailableBalance";
                readonly docs: readonly ["The new decryptable balance in the destination token account"];
                readonly type: {
                    readonly kind: "definedTypeLinkNode";
                    readonly name: "decryptableBalance";
                };
            }];
            readonly remainingAccounts: readonly [{
                readonly kind: "instructionRemainingAccountsNode";
                readonly isOptional: true;
                readonly isSigner: true;
                readonly docs: readonly [];
                readonly value: {
                    readonly kind: "argumentValueNode";
                    readonly name: "multiSigners";
                };
            }];
            readonly discriminators: readonly [{
                readonly kind: "fieldDiscriminatorNode";
                readonly name: "discriminator";
                readonly offset: 0;
            }, {
                readonly kind: "fieldDiscriminatorNode";
                readonly name: "confidentialTransferFeeDiscriminator";
                readonly offset: 1;
            }];
        }, {
            readonly kind: "instructionNode";
            readonly name: "withdrawWithheldTokensFromAccountsForConfidentialTransferFee";
            readonly docs: readonly ["Transfer all withheld tokens to an account. Signed by the mint's withdraw withheld", "tokens authority. This instruction is susceptible to front-running.", "Use `HarvestWithheldTokensToMint` and `WithdrawWithheldTokensFromMint` as alternative.", "", "Must be accompanied by the VerifyWithdrawWithheldTokens instruction."];
            readonly optionalAccountStrategy: "programId";
            readonly accounts: readonly [{
                readonly kind: "instructionAccountNode";
                readonly name: "mint";
                readonly isWritable: false;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly ["The token mint."];
            }, {
                readonly kind: "instructionAccountNode";
                readonly name: "destination";
                readonly isWritable: true;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly ["The fee receiver account."];
            }, {
                readonly kind: "instructionAccountNode";
                readonly name: "instructionsSysvarOrContextState";
                readonly isWritable: false;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly ["Instructions sysvar or context state account"];
            }, {
                readonly kind: "instructionAccountNode";
                readonly name: "record";
                readonly isWritable: false;
                readonly isSigner: false;
                readonly isOptional: true;
                readonly docs: readonly ["Optional record account"];
            }, {
                readonly kind: "instructionAccountNode";
                readonly name: "authority";
                readonly isWritable: false;
                readonly isSigner: "either";
                readonly isOptional: false;
                readonly docs: readonly ["The mint's withdraw_withheld_authority"];
            }];
            readonly arguments: readonly [{
                readonly kind: "instructionArgumentNode";
                readonly name: "discriminator";
                readonly defaultValueStrategy: "omitted";
                readonly docs: readonly [];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u8";
                    readonly endian: "le";
                };
                readonly defaultValue: {
                    readonly kind: "numberValueNode";
                    readonly number: 37;
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "confidentialTransferFeeDiscriminator";
                readonly defaultValueStrategy: "omitted";
                readonly docs: readonly [];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u8";
                    readonly endian: "le";
                };
                readonly defaultValue: {
                    readonly kind: "numberValueNode";
                    readonly number: 2;
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "numTokenAccounts";
                readonly docs: readonly ["Number of token accounts harvested"];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u8";
                    readonly endian: "le";
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "proofInstructionOffset";
                readonly docs: readonly ["Proof instruction offset"];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "i8";
                    readonly endian: "le";
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "newDecryptableAvailableBalance";
                readonly docs: readonly ["The new decryptable balance in the destination token account"];
                readonly type: {
                    readonly kind: "definedTypeLinkNode";
                    readonly name: "decryptableBalance";
                };
            }];
            readonly remainingAccounts: readonly [{
                readonly kind: "instructionRemainingAccountsNode";
                readonly isOptional: true;
                readonly isSigner: true;
                readonly docs: readonly [];
                readonly value: {
                    readonly kind: "argumentValueNode";
                    readonly name: "multiSigners";
                };
            }];
            readonly discriminators: readonly [{
                readonly kind: "fieldDiscriminatorNode";
                readonly name: "discriminator";
                readonly offset: 0;
            }, {
                readonly kind: "fieldDiscriminatorNode";
                readonly name: "confidentialTransferFeeDiscriminator";
                readonly offset: 1;
            }];
        }, {
            readonly kind: "instructionNode";
            readonly name: "harvestWithheldTokensToMintForConfidentialTransferFee";
            readonly docs: readonly ["Permissionless instruction to transfer all withheld confidential tokens to the mint.", "", "Succeeds for frozen accounts.", "", "Accounts provided should include both the `TransferFeeAmount` and", "`ConfidentialTransferAccount` extension. If not, the account is skipped."];
            readonly optionalAccountStrategy: "programId";
            readonly accounts: readonly [{
                readonly kind: "instructionAccountNode";
                readonly name: "mint";
                readonly isWritable: true;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly ["The mint."];
            }];
            readonly arguments: readonly [{
                readonly kind: "instructionArgumentNode";
                readonly name: "discriminator";
                readonly defaultValueStrategy: "omitted";
                readonly docs: readonly [];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u8";
                    readonly endian: "le";
                };
                readonly defaultValue: {
                    readonly kind: "numberValueNode";
                    readonly number: 37;
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "confidentialTransferFeeDiscriminator";
                readonly defaultValueStrategy: "omitted";
                readonly docs: readonly [];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u8";
                    readonly endian: "le";
                };
                readonly defaultValue: {
                    readonly kind: "numberValueNode";
                    readonly number: 3;
                };
            }];
            readonly remainingAccounts: readonly [{
                readonly kind: "instructionRemainingAccountsNode";
                readonly isOptional: true;
                readonly isSigner: false;
                readonly isWritable: true;
                readonly docs: readonly ["The source accounts to harvest from"];
                readonly value: {
                    readonly kind: "argumentValueNode";
                    readonly name: "sources";
                };
            }];
            readonly discriminators: readonly [{
                readonly kind: "fieldDiscriminatorNode";
                readonly name: "discriminator";
                readonly offset: 0;
            }, {
                readonly kind: "fieldDiscriminatorNode";
                readonly name: "confidentialTransferFeeDiscriminator";
                readonly offset: 1;
            }];
        }, {
            readonly kind: "instructionNode";
            readonly name: "enableHarvestToMint";
            readonly docs: readonly ["Configure a confidential transfer fee mint to accept harvested confidential fees."];
            readonly optionalAccountStrategy: "programId";
            readonly accounts: readonly [{
                readonly kind: "instructionAccountNode";
                readonly name: "mint";
                readonly isWritable: true;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly ["The token mint."];
            }, {
                readonly kind: "instructionAccountNode";
                readonly name: "authority";
                readonly isWritable: false;
                readonly isSigner: "either";
                readonly isOptional: false;
                readonly docs: readonly ["The confidential transfer fee authority"];
            }];
            readonly arguments: readonly [{
                readonly kind: "instructionArgumentNode";
                readonly name: "discriminator";
                readonly defaultValueStrategy: "omitted";
                readonly docs: readonly [];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u8";
                    readonly endian: "le";
                };
                readonly defaultValue: {
                    readonly kind: "numberValueNode";
                    readonly number: 37;
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "confidentialTransferFeeDiscriminator";
                readonly defaultValueStrategy: "omitted";
                readonly docs: readonly [];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u8";
                    readonly endian: "le";
                };
                readonly defaultValue: {
                    readonly kind: "numberValueNode";
                    readonly number: 4;
                };
            }];
            readonly remainingAccounts: readonly [{
                readonly kind: "instructionRemainingAccountsNode";
                readonly isOptional: true;
                readonly isSigner: true;
                readonly docs: readonly [];
                readonly value: {
                    readonly kind: "argumentValueNode";
                    readonly name: "multiSigners";
                };
            }];
            readonly discriminators: readonly [{
                readonly kind: "fieldDiscriminatorNode";
                readonly name: "discriminator";
                readonly offset: 0;
            }, {
                readonly kind: "fieldDiscriminatorNode";
                readonly name: "confidentialTransferFeeDiscriminator";
                readonly offset: 1;
            }];
        }, {
            readonly kind: "instructionNode";
            readonly name: "disableHarvestToMint";
            readonly docs: readonly ["Configure a confidential transfer fee mint to reject any harvested confidential fees."];
            readonly optionalAccountStrategy: "programId";
            readonly accounts: readonly [{
                readonly kind: "instructionAccountNode";
                readonly name: "mint";
                readonly isWritable: true;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly ["The token mint."];
            }, {
                readonly kind: "instructionAccountNode";
                readonly name: "authority";
                readonly isWritable: false;
                readonly isSigner: "either";
                readonly isOptional: false;
                readonly docs: readonly ["The confidential transfer fee authority"];
            }];
            readonly arguments: readonly [{
                readonly kind: "instructionArgumentNode";
                readonly name: "discriminator";
                readonly defaultValueStrategy: "omitted";
                readonly docs: readonly [];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u8";
                    readonly endian: "le";
                };
                readonly defaultValue: {
                    readonly kind: "numberValueNode";
                    readonly number: 37;
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "confidentialTransferFeeDiscriminator";
                readonly defaultValueStrategy: "omitted";
                readonly docs: readonly [];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u8";
                    readonly endian: "le";
                };
                readonly defaultValue: {
                    readonly kind: "numberValueNode";
                    readonly number: 5;
                };
            }];
            readonly remainingAccounts: readonly [{
                readonly kind: "instructionRemainingAccountsNode";
                readonly isOptional: true;
                readonly isSigner: true;
                readonly docs: readonly [];
                readonly value: {
                    readonly kind: "argumentValueNode";
                    readonly name: "multiSigners";
                };
            }];
            readonly discriminators: readonly [{
                readonly kind: "fieldDiscriminatorNode";
                readonly name: "discriminator";
                readonly offset: 0;
            }, {
                readonly kind: "fieldDiscriminatorNode";
                readonly name: "confidentialTransferFeeDiscriminator";
                readonly offset: 1;
            }];
        }, {
            readonly kind: "instructionNode";
            readonly name: "withdrawExcessLamports";
            readonly docs: readonly ["This instruction is to be used to rescue SOLs sent to any TokenProgram", "owned account by sending them to any other account, leaving behind only", "lamports for rent exemption."];
            readonly optionalAccountStrategy: "programId";
            readonly accounts: readonly [{
                readonly kind: "instructionAccountNode";
                readonly name: "sourceAccount";
                readonly isWritable: true;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly ["Account holding excess lamports."];
            }, {
                readonly kind: "instructionAccountNode";
                readonly name: "destinationAccount";
                readonly isWritable: true;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly ["Destination account for withdrawn lamports."];
            }, {
                readonly kind: "instructionAccountNode";
                readonly name: "authority";
                readonly isWritable: false;
                readonly isSigner: "either";
                readonly isOptional: false;
                readonly docs: readonly ["The source account's owner/delegate or its multisignature account."];
                readonly defaultValue: {
                    readonly kind: "identityValueNode";
                };
            }];
            readonly arguments: readonly [{
                readonly kind: "instructionArgumentNode";
                readonly name: "discriminator";
                readonly defaultValueStrategy: "omitted";
                readonly docs: readonly [];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u8";
                    readonly endian: "le";
                };
                readonly defaultValue: {
                    readonly kind: "numberValueNode";
                    readonly number: 38;
                };
            }];
            readonly remainingAccounts: readonly [{
                readonly kind: "instructionRemainingAccountsNode";
                readonly isOptional: true;
                readonly isSigner: true;
                readonly docs: readonly [];
                readonly value: {
                    readonly kind: "argumentValueNode";
                    readonly name: "multiSigners";
                };
            }];
            readonly discriminators: readonly [{
                readonly kind: "fieldDiscriminatorNode";
                readonly name: "discriminator";
                readonly offset: 0;
            }];
        }, {
            readonly kind: "instructionNode";
            readonly name: "initializeMetadataPointer";
            readonly docs: readonly ["Initialize a new mint with a metadata pointer", "", "Fails if the mint has already been initialized, so must be called before", "`InitializeMint`.", "", "The mint must have exactly enough space allocated for the base mint (82", "bytes), plus 83 bytes of padding, 1 byte reserved for the account type,", "then space required for this extension, plus any others."];
            readonly optionalAccountStrategy: "programId";
            readonly accounts: readonly [{
                readonly kind: "instructionAccountNode";
                readonly name: "mint";
                readonly isWritable: true;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly ["The mint to initialize."];
            }];
            readonly arguments: readonly [{
                readonly kind: "instructionArgumentNode";
                readonly name: "discriminator";
                readonly defaultValueStrategy: "omitted";
                readonly docs: readonly [];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u8";
                    readonly endian: "le";
                };
                readonly defaultValue: {
                    readonly kind: "numberValueNode";
                    readonly number: 39;
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "metadataPointerDiscriminator";
                readonly defaultValueStrategy: "omitted";
                readonly docs: readonly [];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u8";
                    readonly endian: "le";
                };
                readonly defaultValue: {
                    readonly kind: "numberValueNode";
                    readonly number: 0;
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "authority";
                readonly docs: readonly ["The public key for the account that can update the metadata address."];
                readonly type: {
                    readonly kind: "zeroableOptionTypeNode";
                    readonly item: {
                        readonly kind: "publicKeyTypeNode";
                    };
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "metadataAddress";
                readonly docs: readonly ["The account address that holds the metadata."];
                readonly type: {
                    readonly kind: "zeroableOptionTypeNode";
                    readonly item: {
                        readonly kind: "publicKeyTypeNode";
                    };
                };
            }];
            readonly discriminators: readonly [{
                readonly kind: "fieldDiscriminatorNode";
                readonly name: "discriminator";
                readonly offset: 0;
            }, {
                readonly kind: "fieldDiscriminatorNode";
                readonly name: "metadataPointerDiscriminator";
                readonly offset: 1;
            }];
        }, {
            readonly kind: "instructionNode";
            readonly name: "updateMetadataPointer";
            readonly docs: readonly ["Update the metadata pointer address. Only supported for mints that", "include the `MetadataPointer` extension."];
            readonly optionalAccountStrategy: "programId";
            readonly accounts: readonly [{
                readonly kind: "instructionAccountNode";
                readonly name: "mint";
                readonly isWritable: true;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly ["The mint to initialize."];
            }, {
                readonly kind: "instructionAccountNode";
                readonly name: "metadataPointerAuthority";
                readonly isWritable: false;
                readonly isSigner: "either";
                readonly isOptional: false;
                readonly docs: readonly ["The metadata pointer authority or its multisignature account."];
            }];
            readonly arguments: readonly [{
                readonly kind: "instructionArgumentNode";
                readonly name: "discriminator";
                readonly defaultValueStrategy: "omitted";
                readonly docs: readonly [];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u8";
                    readonly endian: "le";
                };
                readonly defaultValue: {
                    readonly kind: "numberValueNode";
                    readonly number: 39;
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "metadataPointerDiscriminator";
                readonly defaultValueStrategy: "omitted";
                readonly docs: readonly [];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u8";
                    readonly endian: "le";
                };
                readonly defaultValue: {
                    readonly kind: "numberValueNode";
                    readonly number: 1;
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "metadataAddress";
                readonly docs: readonly ["The new account address that holds the metadata."];
                readonly type: {
                    readonly kind: "zeroableOptionTypeNode";
                    readonly item: {
                        readonly kind: "publicKeyTypeNode";
                    };
                };
            }];
            readonly remainingAccounts: readonly [{
                readonly kind: "instructionRemainingAccountsNode";
                readonly isOptional: true;
                readonly isSigner: true;
                readonly docs: readonly [];
                readonly value: {
                    readonly kind: "argumentValueNode";
                    readonly name: "multiSigners";
                };
            }];
            readonly discriminators: readonly [{
                readonly kind: "fieldDiscriminatorNode";
                readonly name: "discriminator";
                readonly offset: 0;
            }, {
                readonly kind: "fieldDiscriminatorNode";
                readonly name: "metadataPointerDiscriminator";
                readonly offset: 1;
            }];
        }, {
            readonly kind: "instructionNode";
            readonly name: "initializeGroupPointer";
            readonly docs: readonly ["Initialize a new mint with a group pointer", "", "Fails if the mint has already been initialized, so must be called before", "`InitializeMint`.", "", "The mint must have exactly enough space allocated for the base mint (82", "bytes), plus 83 bytes of padding, 1 byte reserved for the account type,", "then space required for this extension, plus any others."];
            readonly optionalAccountStrategy: "programId";
            readonly accounts: readonly [{
                readonly kind: "instructionAccountNode";
                readonly name: "mint";
                readonly isWritable: true;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly ["The mint to initialize."];
            }];
            readonly arguments: readonly [{
                readonly kind: "instructionArgumentNode";
                readonly name: "discriminator";
                readonly defaultValueStrategy: "omitted";
                readonly docs: readonly [];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u8";
                    readonly endian: "le";
                };
                readonly defaultValue: {
                    readonly kind: "numberValueNode";
                    readonly number: 40;
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "groupPointerDiscriminator";
                readonly defaultValueStrategy: "omitted";
                readonly docs: readonly [];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u8";
                    readonly endian: "le";
                };
                readonly defaultValue: {
                    readonly kind: "numberValueNode";
                    readonly number: 0;
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "authority";
                readonly docs: readonly ["The public key for the account that can update the group address."];
                readonly type: {
                    readonly kind: "zeroableOptionTypeNode";
                    readonly item: {
                        readonly kind: "publicKeyTypeNode";
                    };
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "groupAddress";
                readonly docs: readonly ["The account address that holds the group."];
                readonly type: {
                    readonly kind: "zeroableOptionTypeNode";
                    readonly item: {
                        readonly kind: "publicKeyTypeNode";
                    };
                };
            }];
            readonly discriminators: readonly [{
                readonly kind: "fieldDiscriminatorNode";
                readonly name: "discriminator";
                readonly offset: 0;
            }, {
                readonly kind: "fieldDiscriminatorNode";
                readonly name: "groupPointerDiscriminator";
                readonly offset: 1;
            }];
        }, {
            readonly kind: "instructionNode";
            readonly name: "updateGroupPointer";
            readonly docs: readonly ["Update the group pointer address. Only supported for mints that", "include the `GroupPointer` extension."];
            readonly optionalAccountStrategy: "programId";
            readonly accounts: readonly [{
                readonly kind: "instructionAccountNode";
                readonly name: "mint";
                readonly isWritable: true;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly ["The mint to initialize."];
            }, {
                readonly kind: "instructionAccountNode";
                readonly name: "groupPointerAuthority";
                readonly isWritable: false;
                readonly isSigner: "either";
                readonly isOptional: false;
                readonly docs: readonly ["The group pointer authority or its multisignature account."];
            }];
            readonly arguments: readonly [{
                readonly kind: "instructionArgumentNode";
                readonly name: "discriminator";
                readonly defaultValueStrategy: "omitted";
                readonly docs: readonly [];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u8";
                    readonly endian: "le";
                };
                readonly defaultValue: {
                    readonly kind: "numberValueNode";
                    readonly number: 40;
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "groupPointerDiscriminator";
                readonly defaultValueStrategy: "omitted";
                readonly docs: readonly [];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u8";
                    readonly endian: "le";
                };
                readonly defaultValue: {
                    readonly kind: "numberValueNode";
                    readonly number: 1;
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "groupAddress";
                readonly docs: readonly ["The new account address that holds the group configurations."];
                readonly type: {
                    readonly kind: "zeroableOptionTypeNode";
                    readonly item: {
                        readonly kind: "publicKeyTypeNode";
                    };
                };
            }];
            readonly remainingAccounts: readonly [{
                readonly kind: "instructionRemainingAccountsNode";
                readonly isOptional: true;
                readonly isSigner: true;
                readonly docs: readonly [];
                readonly value: {
                    readonly kind: "argumentValueNode";
                    readonly name: "multiSigners";
                };
            }];
            readonly discriminators: readonly [{
                readonly kind: "fieldDiscriminatorNode";
                readonly name: "discriminator";
                readonly offset: 0;
            }, {
                readonly kind: "fieldDiscriminatorNode";
                readonly name: "groupPointerDiscriminator";
                readonly offset: 1;
            }];
        }, {
            readonly kind: "instructionNode";
            readonly name: "initializeGroupMemberPointer";
            readonly docs: readonly ["Initialize a new mint with a group member pointer", "", "Fails if the mint has already been initialized, so must be called before", "`InitializeMint`.", "", "The mint must have exactly enough space allocated for the base mint (82", "bytes), plus 83 bytes of padding, 1 byte reserved for the account type,", "then space required for this extension, plus any others."];
            readonly optionalAccountStrategy: "programId";
            readonly accounts: readonly [{
                readonly kind: "instructionAccountNode";
                readonly name: "mint";
                readonly isWritable: true;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly ["The mint to initialize."];
            }];
            readonly arguments: readonly [{
                readonly kind: "instructionArgumentNode";
                readonly name: "discriminator";
                readonly defaultValueStrategy: "omitted";
                readonly docs: readonly [];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u8";
                    readonly endian: "le";
                };
                readonly defaultValue: {
                    readonly kind: "numberValueNode";
                    readonly number: 41;
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "groupMemberPointerDiscriminator";
                readonly defaultValueStrategy: "omitted";
                readonly docs: readonly [];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u8";
                    readonly endian: "le";
                };
                readonly defaultValue: {
                    readonly kind: "numberValueNode";
                    readonly number: 0;
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "authority";
                readonly docs: readonly ["The public key for the account that can update the group member address."];
                readonly type: {
                    readonly kind: "zeroableOptionTypeNode";
                    readonly item: {
                        readonly kind: "publicKeyTypeNode";
                    };
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "memberAddress";
                readonly docs: readonly ["The account address that holds the member."];
                readonly type: {
                    readonly kind: "zeroableOptionTypeNode";
                    readonly item: {
                        readonly kind: "publicKeyTypeNode";
                    };
                };
            }];
            readonly discriminators: readonly [{
                readonly kind: "fieldDiscriminatorNode";
                readonly name: "discriminator";
                readonly offset: 0;
            }, {
                readonly kind: "fieldDiscriminatorNode";
                readonly name: "groupMemberPointerDiscriminator";
                readonly offset: 1;
            }];
        }, {
            readonly kind: "instructionNode";
            readonly name: "updateGroupMemberPointer";
            readonly docs: readonly ["Update the group member pointer address. Only supported for mints that", "include the `GroupMemberPointer` extension."];
            readonly optionalAccountStrategy: "programId";
            readonly accounts: readonly [{
                readonly kind: "instructionAccountNode";
                readonly name: "mint";
                readonly isWritable: true;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly ["The mint to initialize."];
            }, {
                readonly kind: "instructionAccountNode";
                readonly name: "groupMemberPointerAuthority";
                readonly isWritable: false;
                readonly isSigner: "either";
                readonly isOptional: false;
                readonly docs: readonly ["The group member pointer authority or its multisignature account."];
            }];
            readonly arguments: readonly [{
                readonly kind: "instructionArgumentNode";
                readonly name: "discriminator";
                readonly defaultValueStrategy: "omitted";
                readonly docs: readonly [];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u8";
                    readonly endian: "le";
                };
                readonly defaultValue: {
                    readonly kind: "numberValueNode";
                    readonly number: 41;
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "groupMemberPointerDiscriminator";
                readonly defaultValueStrategy: "omitted";
                readonly docs: readonly [];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u8";
                    readonly endian: "le";
                };
                readonly defaultValue: {
                    readonly kind: "numberValueNode";
                    readonly number: 1;
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "memberAddress";
                readonly docs: readonly ["The new account address that holds the member."];
                readonly type: {
                    readonly kind: "zeroableOptionTypeNode";
                    readonly item: {
                        readonly kind: "publicKeyTypeNode";
                    };
                };
            }];
            readonly remainingAccounts: readonly [{
                readonly kind: "instructionRemainingAccountsNode";
                readonly isOptional: true;
                readonly isSigner: true;
                readonly docs: readonly [];
                readonly value: {
                    readonly kind: "argumentValueNode";
                    readonly name: "multiSigners";
                };
            }];
            readonly discriminators: readonly [{
                readonly kind: "fieldDiscriminatorNode";
                readonly name: "discriminator";
                readonly offset: 0;
            }, {
                readonly kind: "fieldDiscriminatorNode";
                readonly name: "groupMemberPointerDiscriminator";
                readonly offset: 1;
            }];
        }, {
            readonly kind: "instructionNode";
            readonly name: "initializeTokenMetadata";
            readonly docs: readonly ["Initializes a TLV entry with the basic token-metadata fields.", "", "Assumes that the provided mint is an SPL token mint, that the metadata", "account is allocated and assigned to the program, and that the metadata", "account has enough lamports to cover the rent-exempt reserve."];
            readonly optionalAccountStrategy: "programId";
            readonly accounts: readonly [{
                readonly kind: "instructionAccountNode";
                readonly name: "metadata";
                readonly isWritable: true;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly [];
            }, {
                readonly kind: "instructionAccountNode";
                readonly name: "updateAuthority";
                readonly isWritable: false;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly [];
            }, {
                readonly kind: "instructionAccountNode";
                readonly name: "mint";
                readonly isWritable: false;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly [];
            }, {
                readonly kind: "instructionAccountNode";
                readonly name: "mintAuthority";
                readonly isWritable: false;
                readonly isSigner: true;
                readonly isOptional: false;
                readonly docs: readonly [];
            }];
            readonly arguments: readonly [{
                readonly kind: "instructionArgumentNode";
                readonly name: "discriminator";
                readonly defaultValueStrategy: "omitted";
                readonly docs: readonly [];
                readonly type: {
                    readonly kind: "bytesTypeNode";
                };
                readonly defaultValue: {
                    readonly kind: "bytesValueNode";
                    readonly data: "d2e11ea258b84d8d";
                    readonly encoding: "base16";
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "name";
                readonly docs: readonly ["Longer name of the token."];
                readonly type: {
                    readonly kind: "sizePrefixTypeNode";
                    readonly type: {
                        readonly kind: "stringTypeNode";
                        readonly encoding: "utf8";
                    };
                    readonly prefix: {
                        readonly kind: "numberTypeNode";
                        readonly format: "u32";
                        readonly endian: "le";
                    };
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "symbol";
                readonly docs: readonly ["Shortened symbol of the token."];
                readonly type: {
                    readonly kind: "sizePrefixTypeNode";
                    readonly type: {
                        readonly kind: "stringTypeNode";
                        readonly encoding: "utf8";
                    };
                    readonly prefix: {
                        readonly kind: "numberTypeNode";
                        readonly format: "u32";
                        readonly endian: "le";
                    };
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "uri";
                readonly docs: readonly ["URI pointing to more metadata (image, video, etc.)."];
                readonly type: {
                    readonly kind: "sizePrefixTypeNode";
                    readonly type: {
                        readonly kind: "stringTypeNode";
                        readonly encoding: "utf8";
                    };
                    readonly prefix: {
                        readonly kind: "numberTypeNode";
                        readonly format: "u32";
                        readonly endian: "le";
                    };
                };
            }];
            readonly discriminators: readonly [{
                readonly kind: "fieldDiscriminatorNode";
                readonly name: "discriminator";
                readonly offset: 0;
            }];
        }, {
            readonly kind: "instructionNode";
            readonly name: "updateTokenMetadataField";
            readonly docs: readonly ["Updates a field in a token-metadata account.", "", "The field can be one of the required fields (name, symbol, URI), or a", "totally new field denoted by a \"key\" string.", "", "By the end of the instruction, the metadata account must be properly", "resized based on the new size of the TLV entry.", "  * If the new size is larger, the program must first reallocate to", "    avoid", "  overwriting other TLV entries.", "  * If the new size is smaller, the program must reallocate at the end", "  so that it's possible to iterate over TLV entries"];
            readonly optionalAccountStrategy: "programId";
            readonly accounts: readonly [{
                readonly kind: "instructionAccountNode";
                readonly name: "metadata";
                readonly isWritable: true;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly [];
            }, {
                readonly kind: "instructionAccountNode";
                readonly name: "updateAuthority";
                readonly isWritable: false;
                readonly isSigner: true;
                readonly isOptional: false;
                readonly docs: readonly [];
            }];
            readonly arguments: readonly [{
                readonly kind: "instructionArgumentNode";
                readonly name: "discriminator";
                readonly defaultValueStrategy: "omitted";
                readonly docs: readonly [];
                readonly type: {
                    readonly kind: "bytesTypeNode";
                };
                readonly defaultValue: {
                    readonly kind: "bytesValueNode";
                    readonly data: "dde9312db5cadcc8";
                    readonly encoding: "base16";
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "field";
                readonly docs: readonly ["Field to update in the metadata."];
                readonly type: {
                    readonly kind: "definedTypeLinkNode";
                    readonly name: "tokenMetadataField";
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "value";
                readonly docs: readonly ["Value to write for the field."];
                readonly type: {
                    readonly kind: "sizePrefixTypeNode";
                    readonly type: {
                        readonly kind: "stringTypeNode";
                        readonly encoding: "utf8";
                    };
                    readonly prefix: {
                        readonly kind: "numberTypeNode";
                        readonly format: "u32";
                        readonly endian: "le";
                    };
                };
            }];
            readonly discriminators: readonly [{
                readonly kind: "fieldDiscriminatorNode";
                readonly name: "discriminator";
                readonly offset: 0;
            }];
        }, {
            readonly kind: "instructionNode";
            readonly name: "removeTokenMetadataKey";
            readonly docs: readonly ["Removes a key-value pair in a token-metadata account.", "", "This only applies to additional fields, and not the base name / symbol /", "URI fields.", "", "By the end of the instruction, the metadata account must be properly", "resized at the end based on the new size of the TLV entry."];
            readonly optionalAccountStrategy: "programId";
            readonly accounts: readonly [{
                readonly kind: "instructionAccountNode";
                readonly name: "metadata";
                readonly isWritable: true;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly [];
            }, {
                readonly kind: "instructionAccountNode";
                readonly name: "updateAuthority";
                readonly isWritable: false;
                readonly isSigner: true;
                readonly isOptional: false;
                readonly docs: readonly [];
            }];
            readonly arguments: readonly [{
                readonly kind: "instructionArgumentNode";
                readonly name: "discriminator";
                readonly defaultValueStrategy: "omitted";
                readonly docs: readonly [];
                readonly type: {
                    readonly kind: "bytesTypeNode";
                };
                readonly defaultValue: {
                    readonly kind: "bytesValueNode";
                    readonly data: "ea122038598d25b5";
                    readonly encoding: "base16";
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "idempotent";
                readonly docs: readonly ["If the idempotent flag is set to true, then the instruction will not", "error if the key does not exist"];
                readonly type: {
                    readonly kind: "booleanTypeNode";
                    readonly size: {
                        readonly kind: "numberTypeNode";
                        readonly format: "u8";
                        readonly endian: "le";
                    };
                };
                readonly defaultValue: {
                    readonly kind: "booleanValueNode";
                    readonly boolean: false;
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "key";
                readonly docs: readonly ["Key to remove in the additional metadata portion."];
                readonly type: {
                    readonly kind: "sizePrefixTypeNode";
                    readonly type: {
                        readonly kind: "stringTypeNode";
                        readonly encoding: "utf8";
                    };
                    readonly prefix: {
                        readonly kind: "numberTypeNode";
                        readonly format: "u32";
                        readonly endian: "le";
                    };
                };
            }];
            readonly discriminators: readonly [{
                readonly kind: "fieldDiscriminatorNode";
                readonly name: "discriminator";
                readonly offset: 0;
            }];
        }, {
            readonly kind: "instructionNode";
            readonly name: "updateTokenMetadataUpdateAuthority";
            readonly docs: readonly ["Updates the token-metadata authority."];
            readonly optionalAccountStrategy: "programId";
            readonly accounts: readonly [{
                readonly kind: "instructionAccountNode";
                readonly name: "metadata";
                readonly isWritable: true;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly [];
            }, {
                readonly kind: "instructionAccountNode";
                readonly name: "updateAuthority";
                readonly isWritable: false;
                readonly isSigner: true;
                readonly isOptional: false;
                readonly docs: readonly [];
            }];
            readonly arguments: readonly [{
                readonly kind: "instructionArgumentNode";
                readonly name: "discriminator";
                readonly defaultValueStrategy: "omitted";
                readonly docs: readonly [];
                readonly type: {
                    readonly kind: "bytesTypeNode";
                };
                readonly defaultValue: {
                    readonly kind: "bytesValueNode";
                    readonly data: "d7e4a6e45464567b";
                    readonly encoding: "base16";
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "newUpdateAuthority";
                readonly docs: readonly ["New authority for the token metadata, or unset if `None`"];
                readonly type: {
                    readonly kind: "zeroableOptionTypeNode";
                    readonly item: {
                        readonly kind: "publicKeyTypeNode";
                    };
                };
            }];
            readonly discriminators: readonly [{
                readonly kind: "fieldDiscriminatorNode";
                readonly name: "discriminator";
                readonly offset: 0;
            }];
        }, {
            readonly kind: "instructionNode";
            readonly name: "emitTokenMetadata";
            readonly docs: readonly ["Emits the token-metadata as return data", "", "The format of the data emitted follows exactly the `TokenMetadata`", "struct, but it's possible that the account data is stored in another", "format by the program.", "", "With this instruction, a program that implements the token-metadata", "interface can return `TokenMetadata` without adhering to the specific", "byte layout of the `TokenMetadata` struct in any accounts."];
            readonly optionalAccountStrategy: "programId";
            readonly accounts: readonly [{
                readonly kind: "instructionAccountNode";
                readonly name: "metadata";
                readonly isWritable: false;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly [];
            }];
            readonly arguments: readonly [{
                readonly kind: "instructionArgumentNode";
                readonly name: "discriminator";
                readonly defaultValueStrategy: "omitted";
                readonly docs: readonly [];
                readonly type: {
                    readonly kind: "bytesTypeNode";
                };
                readonly defaultValue: {
                    readonly kind: "bytesValueNode";
                    readonly data: "faa6b4fa0d0cb846";
                    readonly encoding: "base16";
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "start";
                readonly docs: readonly ["Start of range of data to emit"];
                readonly type: {
                    readonly kind: "optionTypeNode";
                    readonly item: {
                        readonly kind: "numberTypeNode";
                        readonly format: "u64";
                        readonly endian: "le";
                    };
                    readonly prefix: {
                        readonly kind: "numberTypeNode";
                        readonly format: "u8";
                        readonly endian: "le";
                    };
                };
                readonly defaultValue: {
                    readonly kind: "noneValueNode";
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "end";
                readonly docs: readonly ["End of range of data to emit"];
                readonly type: {
                    readonly kind: "optionTypeNode";
                    readonly item: {
                        readonly kind: "numberTypeNode";
                        readonly format: "u64";
                        readonly endian: "le";
                    };
                    readonly prefix: {
                        readonly kind: "numberTypeNode";
                        readonly format: "u8";
                        readonly endian: "le";
                    };
                };
                readonly defaultValue: {
                    readonly kind: "noneValueNode";
                };
            }];
            readonly discriminators: readonly [{
                readonly kind: "fieldDiscriminatorNode";
                readonly name: "discriminator";
                readonly offset: 0;
            }];
        }, {
            readonly kind: "instructionNode";
            readonly name: "initializeTokenGroup";
            readonly docs: readonly ["Initialize a new `Group`", "", "Assumes one has already initialized a mint for the group."];
            readonly optionalAccountStrategy: "programId";
            readonly accounts: readonly [{
                readonly kind: "instructionAccountNode";
                readonly name: "group";
                readonly isWritable: true;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly [];
            }, {
                readonly kind: "instructionAccountNode";
                readonly name: "mint";
                readonly isWritable: false;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly [];
            }, {
                readonly kind: "instructionAccountNode";
                readonly name: "mintAuthority";
                readonly isWritable: false;
                readonly isSigner: true;
                readonly isOptional: false;
                readonly docs: readonly [];
            }];
            readonly arguments: readonly [{
                readonly kind: "instructionArgumentNode";
                readonly name: "discriminator";
                readonly defaultValueStrategy: "omitted";
                readonly docs: readonly [];
                readonly type: {
                    readonly kind: "bytesTypeNode";
                };
                readonly defaultValue: {
                    readonly kind: "bytesValueNode";
                    readonly data: "79716c2736330004";
                    readonly encoding: "base16";
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "updateAuthority";
                readonly docs: readonly ["Update authority for the group"];
                readonly type: {
                    readonly kind: "zeroableOptionTypeNode";
                    readonly item: {
                        readonly kind: "publicKeyTypeNode";
                    };
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "maxSize";
                readonly docs: readonly ["The maximum number of group members"];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u64";
                    readonly endian: "le";
                };
            }];
            readonly discriminators: readonly [{
                readonly kind: "fieldDiscriminatorNode";
                readonly name: "discriminator";
                readonly offset: 0;
            }];
        }, {
            readonly kind: "instructionNode";
            readonly name: "updateTokenGroupMaxSize";
            readonly docs: readonly ["Update the max size of a `Group`."];
            readonly optionalAccountStrategy: "programId";
            readonly accounts: readonly [{
                readonly kind: "instructionAccountNode";
                readonly name: "group";
                readonly isWritable: true;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly [];
            }, {
                readonly kind: "instructionAccountNode";
                readonly name: "updateAuthority";
                readonly isWritable: false;
                readonly isSigner: true;
                readonly isOptional: false;
                readonly docs: readonly [];
            }];
            readonly arguments: readonly [{
                readonly kind: "instructionArgumentNode";
                readonly name: "discriminator";
                readonly defaultValueStrategy: "omitted";
                readonly docs: readonly [];
                readonly type: {
                    readonly kind: "bytesTypeNode";
                };
                readonly defaultValue: {
                    readonly kind: "bytesValueNode";
                    readonly data: "6c25ab8ff81e126e";
                    readonly encoding: "base16";
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "maxSize";
                readonly docs: readonly ["New max size for the group"];
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u64";
                    readonly endian: "le";
                };
            }];
            readonly discriminators: readonly [{
                readonly kind: "fieldDiscriminatorNode";
                readonly name: "discriminator";
                readonly offset: 0;
            }];
        }, {
            readonly kind: "instructionNode";
            readonly name: "updateTokenGroupUpdateAuthority";
            readonly docs: readonly ["Update the authority of a `Group`."];
            readonly optionalAccountStrategy: "programId";
            readonly accounts: readonly [{
                readonly kind: "instructionAccountNode";
                readonly name: "group";
                readonly isWritable: true;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly [];
            }, {
                readonly kind: "instructionAccountNode";
                readonly name: "updateAuthority";
                readonly isWritable: false;
                readonly isSigner: true;
                readonly isOptional: false;
                readonly docs: readonly ["Current update authority"];
            }];
            readonly arguments: readonly [{
                readonly kind: "instructionArgumentNode";
                readonly name: "discriminator";
                readonly defaultValueStrategy: "omitted";
                readonly docs: readonly [];
                readonly type: {
                    readonly kind: "bytesTypeNode";
                };
                readonly defaultValue: {
                    readonly kind: "bytesValueNode";
                    readonly data: "a1695801edddd8cb";
                    readonly encoding: "base16";
                };
            }, {
                readonly kind: "instructionArgumentNode";
                readonly name: "newUpdateAuthority";
                readonly docs: readonly ["New authority for the group, or unset if `None`"];
                readonly type: {
                    readonly kind: "zeroableOptionTypeNode";
                    readonly item: {
                        readonly kind: "publicKeyTypeNode";
                    };
                };
            }];
            readonly discriminators: readonly [{
                readonly kind: "fieldDiscriminatorNode";
                readonly name: "discriminator";
                readonly offset: 0;
            }];
        }, {
            readonly kind: "instructionNode";
            readonly name: "initializeTokenGroupMember";
            readonly docs: readonly ["Initialize a new `Member` of a `Group`", "", "Assumes the `Group` has already been initialized,", "as well as the mint for the member."];
            readonly optionalAccountStrategy: "programId";
            readonly accounts: readonly [{
                readonly kind: "instructionAccountNode";
                readonly name: "member";
                readonly isWritable: true;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly [];
            }, {
                readonly kind: "instructionAccountNode";
                readonly name: "memberMint";
                readonly isWritable: false;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly [];
            }, {
                readonly kind: "instructionAccountNode";
                readonly name: "memberMintAuthority";
                readonly isWritable: false;
                readonly isSigner: true;
                readonly isOptional: false;
                readonly docs: readonly [];
            }, {
                readonly kind: "instructionAccountNode";
                readonly name: "group";
                readonly isWritable: true;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly [];
            }, {
                readonly kind: "instructionAccountNode";
                readonly name: "groupUpdateAuthority";
                readonly isWritable: false;
                readonly isSigner: true;
                readonly isOptional: false;
                readonly docs: readonly [];
            }];
            readonly arguments: readonly [{
                readonly kind: "instructionArgumentNode";
                readonly name: "discriminator";
                readonly defaultValueStrategy: "omitted";
                readonly docs: readonly [];
                readonly type: {
                    readonly kind: "bytesTypeNode";
                };
                readonly defaultValue: {
                    readonly kind: "bytesValueNode";
                    readonly data: "9820deb0dfed7486";
                    readonly encoding: "base16";
                };
            }];
            readonly discriminators: readonly [{
                readonly kind: "fieldDiscriminatorNode";
                readonly name: "discriminator";
                readonly offset: 0;
            }];
        }];
        readonly definedTypes: readonly [{
            readonly kind: "definedTypeNode";
            readonly name: "accountState";
            readonly docs: readonly [];
            readonly type: {
                readonly kind: "enumTypeNode";
                readonly variants: readonly [{
                    readonly kind: "enumEmptyVariantTypeNode";
                    readonly name: "uninitialized";
                }, {
                    readonly kind: "enumEmptyVariantTypeNode";
                    readonly name: "initialized";
                }, {
                    readonly kind: "enumEmptyVariantTypeNode";
                    readonly name: "frozen";
                }];
                readonly size: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u8";
                    readonly endian: "le";
                };
            };
        }, {
            readonly kind: "definedTypeNode";
            readonly name: "authorityType";
            readonly docs: readonly [];
            readonly type: {
                readonly kind: "enumTypeNode";
                readonly variants: readonly [{
                    readonly kind: "enumEmptyVariantTypeNode";
                    readonly name: "mintTokens";
                }, {
                    readonly kind: "enumEmptyVariantTypeNode";
                    readonly name: "freezeAccount";
                }, {
                    readonly kind: "enumEmptyVariantTypeNode";
                    readonly name: "accountOwner";
                }, {
                    readonly kind: "enumEmptyVariantTypeNode";
                    readonly name: "closeAccount";
                }];
                readonly size: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u8";
                    readonly endian: "le";
                };
            };
        }, {
            readonly kind: "definedTypeNode";
            readonly name: "transferFee";
            readonly docs: readonly [];
            readonly type: {
                readonly kind: "structTypeNode";
                readonly fields: readonly [{
                    readonly kind: "structFieldTypeNode";
                    readonly name: "epoch";
                    readonly docs: readonly ["First epoch where the transfer fee takes effect."];
                    readonly type: {
                        readonly kind: "numberTypeNode";
                        readonly format: "u64";
                        readonly endian: "le";
                    };
                }, {
                    readonly kind: "structFieldTypeNode";
                    readonly name: "maximumFee";
                    readonly docs: readonly ["Maximum fee assessed on transfers, expressed as an amount of tokens."];
                    readonly type: {
                        readonly kind: "numberTypeNode";
                        readonly format: "u64";
                        readonly endian: "le";
                    };
                }, {
                    readonly kind: "structFieldTypeNode";
                    readonly name: "transferFeeBasisPoints";
                    readonly docs: readonly ["Amount of transfer collected as fees, expressed as basis points of the", "transfer amount, ie. increments of 0.01%."];
                    readonly type: {
                        readonly kind: "amountTypeNode";
                        readonly decimals: 2;
                        readonly unit: "%";
                        readonly number: {
                            readonly kind: "numberTypeNode";
                            readonly format: "u16";
                            readonly endian: "le";
                        };
                    };
                }];
            };
        }, {
            readonly kind: "definedTypeNode";
            readonly name: "encryptedBalance";
            readonly docs: readonly ["ElGamal ciphertext containing an account balance."];
            readonly type: {
                readonly kind: "fixedSizeTypeNode";
                readonly size: 64;
                readonly type: {
                    readonly kind: "bytesTypeNode";
                };
            };
        }, {
            readonly kind: "definedTypeNode";
            readonly name: "decryptableBalance";
            readonly docs: readonly ["Authenticated encryption containing an account balance."];
            readonly type: {
                readonly kind: "fixedSizeTypeNode";
                readonly size: 36;
                readonly type: {
                    readonly kind: "bytesTypeNode";
                };
            };
        }, {
            readonly kind: "definedTypeNode";
            readonly name: "extension";
            readonly docs: readonly [];
            readonly type: {
                readonly kind: "enumTypeNode";
                readonly variants: readonly [{
                    readonly kind: "enumEmptyVariantTypeNode";
                    readonly name: "uninitialized";
                }, {
                    readonly kind: "enumStructVariantTypeNode";
                    readonly name: "transferFeeConfig";
                    readonly struct: {
                        readonly kind: "sizePrefixTypeNode";
                        readonly type: {
                            readonly kind: "structTypeNode";
                            readonly fields: readonly [{
                                readonly kind: "structFieldTypeNode";
                                readonly name: "transferFeeConfigAuthority";
                                readonly docs: readonly ["Optional authority to set the fee."];
                                readonly type: {
                                    readonly kind: "publicKeyTypeNode";
                                };
                            }, {
                                readonly kind: "structFieldTypeNode";
                                readonly name: "withdrawWithheldAuthority";
                                readonly docs: readonly ["Withdraw from mint instructions must be signed by this key."];
                                readonly type: {
                                    readonly kind: "publicKeyTypeNode";
                                };
                            }, {
                                readonly kind: "structFieldTypeNode";
                                readonly name: "withheldAmount";
                                readonly docs: readonly ["Withheld transfer fee tokens that have been moved to the mint for withdrawal."];
                                readonly type: {
                                    readonly kind: "numberTypeNode";
                                    readonly format: "u64";
                                    readonly endian: "le";
                                };
                            }, {
                                readonly kind: "structFieldTypeNode";
                                readonly name: "olderTransferFee";
                                readonly docs: readonly ["Older transfer fee, used if the current epoch < newerTransferFee.epoch."];
                                readonly type: {
                                    readonly kind: "definedTypeLinkNode";
                                    readonly name: "transferFee";
                                };
                            }, {
                                readonly kind: "structFieldTypeNode";
                                readonly name: "newerTransferFee";
                                readonly docs: readonly ["Newer transfer fee, used if the current epoch >= newerTransferFee.epoch."];
                                readonly type: {
                                    readonly kind: "definedTypeLinkNode";
                                    readonly name: "transferFee";
                                };
                            }];
                        };
                        readonly prefix: {
                            readonly kind: "numberTypeNode";
                            readonly format: "u16";
                            readonly endian: "le";
                        };
                    };
                }, {
                    readonly kind: "enumStructVariantTypeNode";
                    readonly name: "transferFeeAmount";
                    readonly struct: {
                        readonly kind: "sizePrefixTypeNode";
                        readonly type: {
                            readonly kind: "structTypeNode";
                            readonly fields: readonly [{
                                readonly kind: "structFieldTypeNode";
                                readonly name: "withheldAmount";
                                readonly docs: readonly ["Withheld transfer fee tokens that can be claimed by the fee authority."];
                                readonly type: {
                                    readonly kind: "numberTypeNode";
                                    readonly format: "u64";
                                    readonly endian: "le";
                                };
                            }];
                        };
                        readonly prefix: {
                            readonly kind: "numberTypeNode";
                            readonly format: "u16";
                            readonly endian: "le";
                        };
                    };
                }, {
                    readonly kind: "enumStructVariantTypeNode";
                    readonly name: "mintCloseAuthority";
                    readonly struct: {
                        readonly kind: "sizePrefixTypeNode";
                        readonly type: {
                            readonly kind: "structTypeNode";
                            readonly fields: readonly [{
                                readonly kind: "structFieldTypeNode";
                                readonly name: "closeAuthority";
                                readonly docs: readonly [];
                                readonly type: {
                                    readonly kind: "publicKeyTypeNode";
                                };
                            }];
                        };
                        readonly prefix: {
                            readonly kind: "numberTypeNode";
                            readonly format: "u16";
                            readonly endian: "le";
                        };
                    };
                }, {
                    readonly kind: "enumStructVariantTypeNode";
                    readonly name: "confidentialTransferMint";
                    readonly struct: {
                        readonly kind: "sizePrefixTypeNode";
                        readonly type: {
                            readonly kind: "structTypeNode";
                            readonly fields: readonly [{
                                readonly kind: "structFieldTypeNode";
                                readonly name: "authority";
                                readonly docs: readonly ["Authority to modify the `ConfidentialTransferMint` configuration and to", "approve new accounts (if `auto_approve_new_accounts` is true).", "", "The legacy Token Multisig account is not supported as the authority."];
                                readonly type: {
                                    readonly kind: "zeroableOptionTypeNode";
                                    readonly item: {
                                        readonly kind: "publicKeyTypeNode";
                                    };
                                };
                            }, {
                                readonly kind: "structFieldTypeNode";
                                readonly name: "autoApproveNewAccounts";
                                readonly docs: readonly ["Indicate if newly configured accounts must be approved by the", "`authority` before they may be used by the user.", "", "* If `true`, no approval is required and new accounts may be used immediately.", "* If `false`, the authority must approve newly configured accounts (see", "  `ConfidentialTransferInstruction::ConfigureAccount`)."];
                                readonly type: {
                                    readonly kind: "booleanTypeNode";
                                    readonly size: {
                                        readonly kind: "numberTypeNode";
                                        readonly format: "u8";
                                        readonly endian: "le";
                                    };
                                };
                            }, {
                                readonly kind: "structFieldTypeNode";
                                readonly name: "auditorElgamalPubkey";
                                readonly docs: readonly ["Authority to decode any transfer amount in a confidential transfer."];
                                readonly type: {
                                    readonly kind: "zeroableOptionTypeNode";
                                    readonly item: {
                                        readonly kind: "publicKeyTypeNode";
                                    };
                                };
                            }];
                        };
                        readonly prefix: {
                            readonly kind: "numberTypeNode";
                            readonly format: "u16";
                            readonly endian: "le";
                        };
                    };
                }, {
                    readonly kind: "enumStructVariantTypeNode";
                    readonly name: "confidentialTransferAccount";
                    readonly struct: {
                        readonly kind: "sizePrefixTypeNode";
                        readonly type: {
                            readonly kind: "structTypeNode";
                            readonly fields: readonly [{
                                readonly kind: "structFieldTypeNode";
                                readonly name: "approved";
                                readonly docs: readonly ["`true` if this account has been approved for use. All confidential", "transfer operations for the account will fail until approval is granted."];
                                readonly type: {
                                    readonly kind: "booleanTypeNode";
                                    readonly size: {
                                        readonly kind: "numberTypeNode";
                                        readonly format: "u8";
                                        readonly endian: "le";
                                    };
                                };
                            }, {
                                readonly kind: "structFieldTypeNode";
                                readonly name: "elgamalPubkey";
                                readonly docs: readonly ["The public key associated with ElGamal encryption."];
                                readonly type: {
                                    readonly kind: "publicKeyTypeNode";
                                };
                            }, {
                                readonly kind: "structFieldTypeNode";
                                readonly name: "pendingBalanceLow";
                                readonly docs: readonly ["The low 16 bits of the pending balance (encrypted by `elgamal_pubkey`)."];
                                readonly type: {
                                    readonly kind: "definedTypeLinkNode";
                                    readonly name: "encryptedBalance";
                                };
                            }, {
                                readonly kind: "structFieldTypeNode";
                                readonly name: "pendingBalanceHigh";
                                readonly docs: readonly ["The high 48 bits of the pending balance (encrypted by `elgamal_pubkey`)."];
                                readonly type: {
                                    readonly kind: "definedTypeLinkNode";
                                    readonly name: "encryptedBalance";
                                };
                            }, {
                                readonly kind: "structFieldTypeNode";
                                readonly name: "availableBalance";
                                readonly docs: readonly ["The available balance (encrypted by `encrypiton_pubkey`)."];
                                readonly type: {
                                    readonly kind: "definedTypeLinkNode";
                                    readonly name: "encryptedBalance";
                                };
                            }, {
                                readonly kind: "structFieldTypeNode";
                                readonly name: "decryptableAvailableBalance";
                                readonly docs: readonly ["The decryptable available balance."];
                                readonly type: {
                                    readonly kind: "definedTypeLinkNode";
                                    readonly name: "decryptableBalance";
                                };
                            }, {
                                readonly kind: "structFieldTypeNode";
                                readonly name: "allowConfidentialCredits";
                                readonly docs: readonly ["If `false`, the extended account rejects any incoming confidential transfers."];
                                readonly type: {
                                    readonly kind: "booleanTypeNode";
                                    readonly size: {
                                        readonly kind: "numberTypeNode";
                                        readonly format: "u8";
                                        readonly endian: "le";
                                    };
                                };
                            }, {
                                readonly kind: "structFieldTypeNode";
                                readonly name: "allowNonConfidentialCredits";
                                readonly docs: readonly ["If `false`, the base account rejects any incoming transfers."];
                                readonly type: {
                                    readonly kind: "booleanTypeNode";
                                    readonly size: {
                                        readonly kind: "numberTypeNode";
                                        readonly format: "u8";
                                        readonly endian: "le";
                                    };
                                };
                            }, {
                                readonly kind: "structFieldTypeNode";
                                readonly name: "pendingBalanceCreditCounter";
                                readonly docs: readonly ["The total number of `Deposit` and `Transfer` instructions that have credited `pending_balance`."];
                                readonly type: {
                                    readonly kind: "numberTypeNode";
                                    readonly format: "u64";
                                    readonly endian: "le";
                                };
                            }, {
                                readonly kind: "structFieldTypeNode";
                                readonly name: "maximumPendingBalanceCreditCounter";
                                readonly docs: readonly ["The maximum number of `Deposit` and `Transfer` instructions that can", "credit `pending_balance` before the `ApplyPendingBalance`", "instruction is executed."];
                                readonly type: {
                                    readonly kind: "numberTypeNode";
                                    readonly format: "u64";
                                    readonly endian: "le";
                                };
                            }, {
                                readonly kind: "structFieldTypeNode";
                                readonly name: "expectedPendingBalanceCreditCounter";
                                readonly docs: readonly ["The `expected_pending_balance_credit_counter` value that was included in", "the last `ApplyPendingBalance` instruction."];
                                readonly type: {
                                    readonly kind: "numberTypeNode";
                                    readonly format: "u64";
                                    readonly endian: "le";
                                };
                            }, {
                                readonly kind: "structFieldTypeNode";
                                readonly name: "actualPendingBalanceCreditCounter";
                                readonly docs: readonly ["The actual `pending_balance_credit_counter` when the last", "`ApplyPendingBalance` instruction was executed."];
                                readonly type: {
                                    readonly kind: "numberTypeNode";
                                    readonly format: "u64";
                                    readonly endian: "le";
                                };
                            }];
                        };
                        readonly prefix: {
                            readonly kind: "numberTypeNode";
                            readonly format: "u16";
                            readonly endian: "le";
                        };
                    };
                }, {
                    readonly kind: "enumStructVariantTypeNode";
                    readonly name: "defaultAccountState";
                    readonly struct: {
                        readonly kind: "sizePrefixTypeNode";
                        readonly type: {
                            readonly kind: "structTypeNode";
                            readonly fields: readonly [{
                                readonly kind: "structFieldTypeNode";
                                readonly name: "state";
                                readonly docs: readonly [];
                                readonly type: {
                                    readonly kind: "definedTypeLinkNode";
                                    readonly name: "accountState";
                                };
                            }];
                        };
                        readonly prefix: {
                            readonly kind: "numberTypeNode";
                            readonly format: "u16";
                            readonly endian: "le";
                        };
                    };
                }, {
                    readonly kind: "enumStructVariantTypeNode";
                    readonly name: "immutableOwner";
                    readonly struct: {
                        readonly kind: "sizePrefixTypeNode";
                        readonly type: {
                            readonly kind: "structTypeNode";
                            readonly fields: readonly [];
                        };
                        readonly prefix: {
                            readonly kind: "numberTypeNode";
                            readonly format: "u16";
                            readonly endian: "le";
                        };
                    };
                }, {
                    readonly kind: "enumStructVariantTypeNode";
                    readonly name: "memoTransfer";
                    readonly struct: {
                        readonly kind: "sizePrefixTypeNode";
                        readonly type: {
                            readonly kind: "structTypeNode";
                            readonly fields: readonly [{
                                readonly kind: "structFieldTypeNode";
                                readonly name: "requireIncomingTransferMemos";
                                readonly docs: readonly ["Require transfers into this account to be accompanied by a memo."];
                                readonly type: {
                                    readonly kind: "booleanTypeNode";
                                    readonly size: {
                                        readonly kind: "numberTypeNode";
                                        readonly format: "u8";
                                        readonly endian: "le";
                                    };
                                };
                            }];
                        };
                        readonly prefix: {
                            readonly kind: "numberTypeNode";
                            readonly format: "u16";
                            readonly endian: "le";
                        };
                    };
                }, {
                    readonly kind: "enumStructVariantTypeNode";
                    readonly name: "nonTransferable";
                    readonly struct: {
                        readonly kind: "sizePrefixTypeNode";
                        readonly type: {
                            readonly kind: "structTypeNode";
                            readonly fields: readonly [];
                        };
                        readonly prefix: {
                            readonly kind: "numberTypeNode";
                            readonly format: "u16";
                            readonly endian: "le";
                        };
                    };
                }, {
                    readonly kind: "enumStructVariantTypeNode";
                    readonly name: "interestBearingConfig";
                    readonly struct: {
                        readonly kind: "sizePrefixTypeNode";
                        readonly type: {
                            readonly kind: "structTypeNode";
                            readonly fields: readonly [{
                                readonly kind: "structFieldTypeNode";
                                readonly name: "rateAuthority";
                                readonly docs: readonly [];
                                readonly type: {
                                    readonly kind: "publicKeyTypeNode";
                                };
                            }, {
                                readonly kind: "structFieldTypeNode";
                                readonly name: "initializationTimestamp";
                                readonly docs: readonly [];
                                readonly type: {
                                    readonly kind: "numberTypeNode";
                                    readonly format: "u64";
                                    readonly endian: "le";
                                };
                            }, {
                                readonly kind: "structFieldTypeNode";
                                readonly name: "preUpdateAverageRate";
                                readonly docs: readonly [];
                                readonly type: {
                                    readonly kind: "numberTypeNode";
                                    readonly format: "i16";
                                    readonly endian: "le";
                                };
                            }, {
                                readonly kind: "structFieldTypeNode";
                                readonly name: "lastUpdateTimestamp";
                                readonly docs: readonly [];
                                readonly type: {
                                    readonly kind: "numberTypeNode";
                                    readonly format: "u64";
                                    readonly endian: "le";
                                };
                            }, {
                                readonly kind: "structFieldTypeNode";
                                readonly name: "currentRate";
                                readonly docs: readonly [];
                                readonly type: {
                                    readonly kind: "numberTypeNode";
                                    readonly format: "i16";
                                    readonly endian: "le";
                                };
                            }];
                        };
                        readonly prefix: {
                            readonly kind: "numberTypeNode";
                            readonly format: "u16";
                            readonly endian: "le";
                        };
                    };
                }, {
                    readonly kind: "enumStructVariantTypeNode";
                    readonly name: "cpiGuard";
                    readonly struct: {
                        readonly kind: "sizePrefixTypeNode";
                        readonly type: {
                            readonly kind: "structTypeNode";
                            readonly fields: readonly [{
                                readonly kind: "structFieldTypeNode";
                                readonly name: "lockCpi";
                                readonly docs: readonly ["Lock certain token operations from taking place within CPI for this account."];
                                readonly type: {
                                    readonly kind: "booleanTypeNode";
                                    readonly size: {
                                        readonly kind: "numberTypeNode";
                                        readonly format: "u8";
                                        readonly endian: "le";
                                    };
                                };
                            }];
                        };
                        readonly prefix: {
                            readonly kind: "numberTypeNode";
                            readonly format: "u16";
                            readonly endian: "le";
                        };
                    };
                }, {
                    readonly kind: "enumStructVariantTypeNode";
                    readonly name: "permanentDelegate";
                    readonly struct: {
                        readonly kind: "sizePrefixTypeNode";
                        readonly type: {
                            readonly kind: "structTypeNode";
                            readonly fields: readonly [{
                                readonly kind: "structFieldTypeNode";
                                readonly name: "delegate";
                                readonly docs: readonly [];
                                readonly type: {
                                    readonly kind: "publicKeyTypeNode";
                                };
                            }];
                        };
                        readonly prefix: {
                            readonly kind: "numberTypeNode";
                            readonly format: "u16";
                            readonly endian: "le";
                        };
                    };
                }, {
                    readonly kind: "enumStructVariantTypeNode";
                    readonly name: "nonTransferableAccount";
                    readonly struct: {
                        readonly kind: "sizePrefixTypeNode";
                        readonly type: {
                            readonly kind: "structTypeNode";
                            readonly fields: readonly [];
                        };
                        readonly prefix: {
                            readonly kind: "numberTypeNode";
                            readonly format: "u16";
                            readonly endian: "le";
                        };
                    };
                }, {
                    readonly kind: "enumStructVariantTypeNode";
                    readonly name: "transferHook";
                    readonly struct: {
                        readonly kind: "sizePrefixTypeNode";
                        readonly type: {
                            readonly kind: "structTypeNode";
                            readonly fields: readonly [{
                                readonly kind: "structFieldTypeNode";
                                readonly name: "authority";
                                readonly docs: readonly ["The transfer hook update authority."];
                                readonly type: {
                                    readonly kind: "publicKeyTypeNode";
                                };
                            }, {
                                readonly kind: "structFieldTypeNode";
                                readonly name: "programId";
                                readonly docs: readonly ["The transfer hook program account."];
                                readonly type: {
                                    readonly kind: "publicKeyTypeNode";
                                };
                            }];
                        };
                        readonly prefix: {
                            readonly kind: "numberTypeNode";
                            readonly format: "u16";
                            readonly endian: "le";
                        };
                    };
                }, {
                    readonly kind: "enumStructVariantTypeNode";
                    readonly name: "transferHookAccount";
                    readonly struct: {
                        readonly kind: "sizePrefixTypeNode";
                        readonly type: {
                            readonly kind: "structTypeNode";
                            readonly fields: readonly [{
                                readonly kind: "structFieldTypeNode";
                                readonly name: "transferring";
                                readonly docs: readonly ["Whether or not this account is currently transferring tokens", "True during the transfer hook cpi, otherwise false."];
                                readonly type: {
                                    readonly kind: "booleanTypeNode";
                                    readonly size: {
                                        readonly kind: "numberTypeNode";
                                        readonly format: "u8";
                                        readonly endian: "le";
                                    };
                                };
                            }];
                        };
                        readonly prefix: {
                            readonly kind: "numberTypeNode";
                            readonly format: "u16";
                            readonly endian: "le";
                        };
                    };
                }, {
                    readonly kind: "enumStructVariantTypeNode";
                    readonly name: "confidentialTransferFee";
                    readonly struct: {
                        readonly kind: "sizePrefixTypeNode";
                        readonly type: {
                            readonly kind: "structTypeNode";
                            readonly fields: readonly [{
                                readonly kind: "structFieldTypeNode";
                                readonly name: "authority";
                                readonly docs: readonly ["Optional authority to set the withdraw withheld authority ElGamal key."];
                                readonly type: {
                                    readonly kind: "zeroableOptionTypeNode";
                                    readonly item: {
                                        readonly kind: "publicKeyTypeNode";
                                    };
                                };
                            }, {
                                readonly kind: "structFieldTypeNode";
                                readonly name: "elgamalPubkey";
                                readonly docs: readonly ["Withheld fees from accounts must be encrypted with this ElGamal key.", "", "Note that whoever holds the ElGamal private key for this ElGamal public", "key has the ability to decode any withheld fee amount that are", "associated with accounts. When combined with the fee parameters, the", "withheld fee amounts can reveal information about transfer amounts."];
                                readonly type: {
                                    readonly kind: "publicKeyTypeNode";
                                };
                            }, {
                                readonly kind: "structFieldTypeNode";
                                readonly name: "harvestToMintEnabled";
                                readonly docs: readonly ["If `false`, the harvest of withheld tokens to mint is rejected."];
                                readonly type: {
                                    readonly kind: "booleanTypeNode";
                                    readonly size: {
                                        readonly kind: "numberTypeNode";
                                        readonly format: "u8";
                                        readonly endian: "le";
                                    };
                                };
                            }, {
                                readonly kind: "structFieldTypeNode";
                                readonly name: "withheldAmount";
                                readonly docs: readonly ["Withheld confidential transfer fee tokens that have been moved to the", "mint for withdrawal."];
                                readonly type: {
                                    readonly kind: "definedTypeLinkNode";
                                    readonly name: "encryptedBalance";
                                };
                            }];
                        };
                        readonly prefix: {
                            readonly kind: "numberTypeNode";
                            readonly format: "u16";
                            readonly endian: "le";
                        };
                    };
                }, {
                    readonly kind: "enumStructVariantTypeNode";
                    readonly name: "confidentialTransferFeeAmount";
                    readonly struct: {
                        readonly kind: "sizePrefixTypeNode";
                        readonly type: {
                            readonly kind: "structTypeNode";
                            readonly fields: readonly [{
                                readonly kind: "structFieldTypeNode";
                                readonly name: "withheldAmount";
                                readonly docs: readonly ["Amount withheld during confidential transfers, to be harvest to the mint."];
                                readonly type: {
                                    readonly kind: "definedTypeLinkNode";
                                    readonly name: "encryptedBalance";
                                };
                            }];
                        };
                        readonly prefix: {
                            readonly kind: "numberTypeNode";
                            readonly format: "u16";
                            readonly endian: "le";
                        };
                    };
                }, {
                    readonly kind: "enumStructVariantTypeNode";
                    readonly name: "metadataPointer";
                    readonly struct: {
                        readonly kind: "sizePrefixTypeNode";
                        readonly type: {
                            readonly kind: "structTypeNode";
                            readonly fields: readonly [{
                                readonly kind: "structFieldTypeNode";
                                readonly name: "authority";
                                readonly docs: readonly ["Optional authority that can set the metadata address."];
                                readonly type: {
                                    readonly kind: "zeroableOptionTypeNode";
                                    readonly item: {
                                        readonly kind: "publicKeyTypeNode";
                                    };
                                };
                            }, {
                                readonly kind: "structFieldTypeNode";
                                readonly name: "metadataAddress";
                                readonly docs: readonly ["Optional Account Address that holds the metadata."];
                                readonly type: {
                                    readonly kind: "zeroableOptionTypeNode";
                                    readonly item: {
                                        readonly kind: "publicKeyTypeNode";
                                    };
                                };
                            }];
                        };
                        readonly prefix: {
                            readonly kind: "numberTypeNode";
                            readonly format: "u16";
                            readonly endian: "le";
                        };
                    };
                }, {
                    readonly kind: "enumStructVariantTypeNode";
                    readonly name: "tokenMetadata";
                    readonly struct: {
                        readonly kind: "sizePrefixTypeNode";
                        readonly type: {
                            readonly kind: "structTypeNode";
                            readonly fields: readonly [{
                                readonly kind: "structFieldTypeNode";
                                readonly name: "updateAuthority";
                                readonly docs: readonly ["The authority that can sign to update the metadata."];
                                readonly type: {
                                    readonly kind: "zeroableOptionTypeNode";
                                    readonly item: {
                                        readonly kind: "publicKeyTypeNode";
                                    };
                                };
                            }, {
                                readonly kind: "structFieldTypeNode";
                                readonly name: "mint";
                                readonly docs: readonly ["The associated mint, used to counter spoofing to be sure that metadata belongs to a particular mint."];
                                readonly type: {
                                    readonly kind: "publicKeyTypeNode";
                                };
                            }, {
                                readonly kind: "structFieldTypeNode";
                                readonly name: "name";
                                readonly docs: readonly ["The longer name of the token."];
                                readonly type: {
                                    readonly kind: "sizePrefixTypeNode";
                                    readonly type: {
                                        readonly kind: "stringTypeNode";
                                        readonly encoding: "utf8";
                                    };
                                    readonly prefix: {
                                        readonly kind: "numberTypeNode";
                                        readonly format: "u32";
                                        readonly endian: "le";
                                    };
                                };
                            }, {
                                readonly kind: "structFieldTypeNode";
                                readonly name: "symbol";
                                readonly docs: readonly ["The shortened symbol for the token."];
                                readonly type: {
                                    readonly kind: "sizePrefixTypeNode";
                                    readonly type: {
                                        readonly kind: "stringTypeNode";
                                        readonly encoding: "utf8";
                                    };
                                    readonly prefix: {
                                        readonly kind: "numberTypeNode";
                                        readonly format: "u32";
                                        readonly endian: "le";
                                    };
                                };
                            }, {
                                readonly kind: "structFieldTypeNode";
                                readonly name: "uri";
                                readonly docs: readonly ["The URI pointing to richer metadata."];
                                readonly type: {
                                    readonly kind: "sizePrefixTypeNode";
                                    readonly type: {
                                        readonly kind: "stringTypeNode";
                                        readonly encoding: "utf8";
                                    };
                                    readonly prefix: {
                                        readonly kind: "numberTypeNode";
                                        readonly format: "u32";
                                        readonly endian: "le";
                                    };
                                };
                            }, {
                                readonly kind: "structFieldTypeNode";
                                readonly name: "additionalMetadata";
                                readonly docs: readonly ["Any additional metadata about the token as key-value pairs."];
                                readonly type: {
                                    readonly kind: "mapTypeNode";
                                    readonly key: {
                                        readonly kind: "sizePrefixTypeNode";
                                        readonly type: {
                                            readonly kind: "stringTypeNode";
                                            readonly encoding: "utf8";
                                        };
                                        readonly prefix: {
                                            readonly kind: "numberTypeNode";
                                            readonly format: "u32";
                                            readonly endian: "le";
                                        };
                                    };
                                    readonly value: {
                                        readonly kind: "sizePrefixTypeNode";
                                        readonly type: {
                                            readonly kind: "stringTypeNode";
                                            readonly encoding: "utf8";
                                        };
                                        readonly prefix: {
                                            readonly kind: "numberTypeNode";
                                            readonly format: "u32";
                                            readonly endian: "le";
                                        };
                                    };
                                    readonly count: {
                                        readonly kind: "prefixedCountNode";
                                        readonly prefix: {
                                            readonly kind: "numberTypeNode";
                                            readonly format: "u32";
                                            readonly endian: "le";
                                        };
                                    };
                                };
                            }];
                        };
                        readonly prefix: {
                            readonly kind: "numberTypeNode";
                            readonly format: "u16";
                            readonly endian: "le";
                        };
                    };
                }, {
                    readonly kind: "enumStructVariantTypeNode";
                    readonly name: "groupPointer";
                    readonly struct: {
                        readonly kind: "sizePrefixTypeNode";
                        readonly type: {
                            readonly kind: "structTypeNode";
                            readonly fields: readonly [{
                                readonly kind: "structFieldTypeNode";
                                readonly name: "authority";
                                readonly docs: readonly ["Optional authority that can set the group address."];
                                readonly type: {
                                    readonly kind: "zeroableOptionTypeNode";
                                    readonly item: {
                                        readonly kind: "publicKeyTypeNode";
                                    };
                                };
                            }, {
                                readonly kind: "structFieldTypeNode";
                                readonly name: "groupAddress";
                                readonly docs: readonly ["Optional account address that holds the group."];
                                readonly type: {
                                    readonly kind: "zeroableOptionTypeNode";
                                    readonly item: {
                                        readonly kind: "publicKeyTypeNode";
                                    };
                                };
                            }];
                        };
                        readonly prefix: {
                            readonly kind: "numberTypeNode";
                            readonly format: "u16";
                            readonly endian: "le";
                        };
                    };
                }, {
                    readonly kind: "enumStructVariantTypeNode";
                    readonly name: "tokenGroup";
                    readonly struct: {
                        readonly kind: "sizePrefixTypeNode";
                        readonly type: {
                            readonly kind: "structTypeNode";
                            readonly fields: readonly [{
                                readonly kind: "structFieldTypeNode";
                                readonly name: "updateAuthority";
                                readonly docs: readonly ["The authority that can sign to update the group."];
                                readonly type: {
                                    readonly kind: "zeroableOptionTypeNode";
                                    readonly item: {
                                        readonly kind: "publicKeyTypeNode";
                                    };
                                };
                            }, {
                                readonly kind: "structFieldTypeNode";
                                readonly name: "mint";
                                readonly docs: readonly ["The associated mint, used to counter spoofing to be sure that group belongs to a particular mint."];
                                readonly type: {
                                    readonly kind: "publicKeyTypeNode";
                                };
                            }, {
                                readonly kind: "structFieldTypeNode";
                                readonly name: "size";
                                readonly docs: readonly ["The current number of group members."];
                                readonly type: {
                                    readonly kind: "numberTypeNode";
                                    readonly format: "u64";
                                    readonly endian: "le";
                                };
                            }, {
                                readonly kind: "structFieldTypeNode";
                                readonly name: "maxSize";
                                readonly docs: readonly ["The maximum number of group members."];
                                readonly type: {
                                    readonly kind: "numberTypeNode";
                                    readonly format: "u64";
                                    readonly endian: "le";
                                };
                            }];
                        };
                        readonly prefix: {
                            readonly kind: "numberTypeNode";
                            readonly format: "u16";
                            readonly endian: "le";
                        };
                    };
                }, {
                    readonly kind: "enumStructVariantTypeNode";
                    readonly name: "groupMemberPointer";
                    readonly struct: {
                        readonly kind: "sizePrefixTypeNode";
                        readonly type: {
                            readonly kind: "structTypeNode";
                            readonly fields: readonly [{
                                readonly kind: "structFieldTypeNode";
                                readonly name: "authority";
                                readonly docs: readonly ["Optional authority that can set the member address."];
                                readonly type: {
                                    readonly kind: "zeroableOptionTypeNode";
                                    readonly item: {
                                        readonly kind: "publicKeyTypeNode";
                                    };
                                };
                            }, {
                                readonly kind: "structFieldTypeNode";
                                readonly name: "memberAddress";
                                readonly docs: readonly ["Optional account address that holds the member."];
                                readonly type: {
                                    readonly kind: "zeroableOptionTypeNode";
                                    readonly item: {
                                        readonly kind: "publicKeyTypeNode";
                                    };
                                };
                            }];
                        };
                        readonly prefix: {
                            readonly kind: "numberTypeNode";
                            readonly format: "u16";
                            readonly endian: "le";
                        };
                    };
                }, {
                    readonly kind: "enumStructVariantTypeNode";
                    readonly name: "tokenGroupMember";
                    readonly struct: {
                        readonly kind: "sizePrefixTypeNode";
                        readonly type: {
                            readonly kind: "structTypeNode";
                            readonly fields: readonly [{
                                readonly kind: "structFieldTypeNode";
                                readonly name: "mint";
                                readonly docs: readonly ["The associated mint, used to counter spoofing to be sure that member belongs to a particular mint."];
                                readonly type: {
                                    readonly kind: "publicKeyTypeNode";
                                };
                            }, {
                                readonly kind: "structFieldTypeNode";
                                readonly name: "group";
                                readonly docs: readonly ["The pubkey of the `TokenGroup`."];
                                readonly type: {
                                    readonly kind: "publicKeyTypeNode";
                                };
                            }, {
                                readonly kind: "structFieldTypeNode";
                                readonly name: "memberNumber";
                                readonly docs: readonly ["The member number."];
                                readonly type: {
                                    readonly kind: "numberTypeNode";
                                    readonly format: "u64";
                                    readonly endian: "le";
                                };
                            }];
                        };
                        readonly prefix: {
                            readonly kind: "numberTypeNode";
                            readonly format: "u16";
                            readonly endian: "le";
                        };
                    };
                }];
                readonly size: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u16";
                    readonly endian: "le";
                };
            };
        }, {
            readonly kind: "definedTypeNode";
            readonly name: "extensionType";
            readonly docs: readonly ["Extensions that can be applied to mints or accounts.  Mint extensions must", "only be applied to mint accounts, and account extensions must only be", "applied to token holding accounts."];
            readonly type: {
                readonly kind: "enumTypeNode";
                readonly variants: readonly [{
                    readonly kind: "enumEmptyVariantTypeNode";
                    readonly name: "uninitialized";
                    readonly docs: readonly ["Used as padding if the account size would otherwise be 355, same as a multisig"];
                }, {
                    readonly kind: "enumEmptyVariantTypeNode";
                    readonly name: "transferFeeConfig";
                    readonly docs: readonly ["Includes transfer fee rate info and accompanying authorities to withdraw", "and set the fee"];
                }, {
                    readonly kind: "enumEmptyVariantTypeNode";
                    readonly name: "transferFeeAmount";
                    readonly docs: readonly ["Includes withheld transfer fees"];
                }, {
                    readonly kind: "enumEmptyVariantTypeNode";
                    readonly name: "mintCloseAuthority";
                    readonly docs: readonly ["Includes an optional mint close authority"];
                }, {
                    readonly kind: "enumEmptyVariantTypeNode";
                    readonly name: "confidentialTransferMint";
                    readonly docs: readonly ["Auditor configuration for confidential transfers"];
                }, {
                    readonly kind: "enumEmptyVariantTypeNode";
                    readonly name: "confidentialTransferAccount";
                    readonly docs: readonly ["State for confidential transfers"];
                }, {
                    readonly kind: "enumEmptyVariantTypeNode";
                    readonly name: "defaultAccountState";
                    readonly docs: readonly ["Specifies the default Account::state for new Accounts"];
                }, {
                    readonly kind: "enumEmptyVariantTypeNode";
                    readonly name: "immutableOwner";
                    readonly docs: readonly ["Indicates that the Account owner authority cannot be changed"];
                }, {
                    readonly kind: "enumEmptyVariantTypeNode";
                    readonly name: "memoTransfer";
                    readonly docs: readonly ["Require inbound transfers to have memo"];
                }, {
                    readonly kind: "enumEmptyVariantTypeNode";
                    readonly name: "nonTransferable";
                    readonly docs: readonly ["Indicates that the tokens from this mint can't be transferred"];
                }, {
                    readonly kind: "enumEmptyVariantTypeNode";
                    readonly name: "interestBearingConfig";
                    readonly docs: readonly ["Tokens accrue interest over time,"];
                }, {
                    readonly kind: "enumEmptyVariantTypeNode";
                    readonly name: "cpiGuard";
                    readonly docs: readonly ["Locks privileged token operations from happening via CPI"];
                }, {
                    readonly kind: "enumEmptyVariantTypeNode";
                    readonly name: "permanentDelegate";
                    readonly docs: readonly ["Includes an optional permanent delegate"];
                }, {
                    readonly kind: "enumEmptyVariantTypeNode";
                    readonly name: "nonTransferableAccount";
                    readonly docs: readonly ["Indicates that the tokens in this account belong to a non-transferable", "mint"];
                }, {
                    readonly kind: "enumEmptyVariantTypeNode";
                    readonly name: "transferHook";
                    readonly docs: readonly ["Mint requires a CPI to a program implementing the \"transfer hook\"", "interface"];
                }, {
                    readonly kind: "enumEmptyVariantTypeNode";
                    readonly name: "transferHookAccount";
                    readonly docs: readonly ["Indicates that the tokens in this account belong to a mint with a", "transfer hook"];
                }, {
                    readonly kind: "enumEmptyVariantTypeNode";
                    readonly name: "confidentialTransferFee";
                    readonly docs: readonly ["Includes encrypted withheld fees and the encryption public that they are", "encrypted under"];
                }, {
                    readonly kind: "enumEmptyVariantTypeNode";
                    readonly name: "confidentialTransferFeeAmount";
                    readonly docs: readonly ["Includes confidential withheld transfer fees"];
                }, {
                    readonly kind: "enumEmptyVariantTypeNode";
                    readonly name: "metadataPointer";
                    readonly docs: readonly ["Mint contains a pointer to another account (or the same account) that", "holds metadata"];
                }, {
                    readonly kind: "enumEmptyVariantTypeNode";
                    readonly name: "tokenMetadata";
                    readonly docs: readonly ["Mint contains token-metadata"];
                }, {
                    readonly kind: "enumEmptyVariantTypeNode";
                    readonly name: "groupPointer";
                    readonly docs: readonly ["Mint contains a pointer to another account (or the same account) that", "holds group configurations"];
                }, {
                    readonly kind: "enumEmptyVariantTypeNode";
                    readonly name: "tokenGroup";
                    readonly docs: readonly ["Mint contains token group configurations"];
                }, {
                    readonly kind: "enumEmptyVariantTypeNode";
                    readonly name: "groupMemberPointer";
                    readonly docs: readonly ["Mint contains a pointer to another account (or the same account) that", "holds group member configurations"];
                }, {
                    readonly kind: "enumEmptyVariantTypeNode";
                    readonly name: "tokenGroupMember";
                    readonly docs: readonly ["Mint contains token group member configurations"];
                }];
                readonly size: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u16";
                    readonly endian: "le";
                };
            };
        }, {
            readonly kind: "definedTypeNode";
            readonly name: "tokenMetadataField";
            readonly docs: readonly ["Fields in the metadata account, used for updating."];
            readonly type: {
                readonly kind: "enumTypeNode";
                readonly variants: readonly [{
                    readonly kind: "enumEmptyVariantTypeNode";
                    readonly name: "name";
                    readonly docs: readonly ["The name field, corresponding to `TokenMetadata.name`"];
                }, {
                    readonly kind: "enumEmptyVariantTypeNode";
                    readonly name: "symbol";
                    readonly docs: readonly ["The symbol field, corresponding to `TokenMetadata.symbol`"];
                }, {
                    readonly kind: "enumEmptyVariantTypeNode";
                    readonly name: "uri";
                    readonly docs: readonly ["The uri field, corresponding to `TokenMetadata.uri`"];
                }, {
                    readonly kind: "enumTupleVariantTypeNode";
                    readonly name: "key";
                    readonly docs: readonly ["A user field, whose key is given by the associated string"];
                    readonly tuple: {
                        readonly kind: "tupleTypeNode";
                        readonly items: readonly [{
                            readonly kind: "sizePrefixTypeNode";
                            readonly type: {
                                readonly kind: "stringTypeNode";
                                readonly encoding: "utf8";
                            };
                            readonly prefix: {
                                readonly kind: "numberTypeNode";
                                readonly format: "u32";
                                readonly endian: "le";
                            };
                        }];
                    };
                }];
                readonly size: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u8";
                    readonly endian: "le";
                };
            };
        }];
        readonly pdas: readonly [];
        readonly errors: readonly [{
            readonly kind: "errorNode";
            readonly name: "notRentExempt";
            readonly code: 0;
            readonly message: "Lamport balance below rent-exempt threshold";
            readonly docs: readonly ["NotRentExempt: Lamport balance below rent-exempt threshold"];
        }, {
            readonly kind: "errorNode";
            readonly name: "insufficientFunds";
            readonly code: 1;
            readonly message: "Insufficient funds";
            readonly docs: readonly ["InsufficientFunds: Insufficient funds"];
        }, {
            readonly kind: "errorNode";
            readonly name: "invalidMint";
            readonly code: 2;
            readonly message: "Invalid Mint";
            readonly docs: readonly ["InvalidMint: Invalid Mint"];
        }, {
            readonly kind: "errorNode";
            readonly name: "mintMismatch";
            readonly code: 3;
            readonly message: "Account not associated with this Mint";
            readonly docs: readonly ["MintMismatch: Account not associated with this Mint"];
        }, {
            readonly kind: "errorNode";
            readonly name: "ownerMismatch";
            readonly code: 4;
            readonly message: "Owner does not match";
            readonly docs: readonly ["OwnerMismatch: Owner does not match"];
        }, {
            readonly kind: "errorNode";
            readonly name: "fixedSupply";
            readonly code: 5;
            readonly message: "Fixed supply";
            readonly docs: readonly ["FixedSupply: Fixed supply"];
        }, {
            readonly kind: "errorNode";
            readonly name: "alreadyInUse";
            readonly code: 6;
            readonly message: "Already in use";
            readonly docs: readonly ["AlreadyInUse: Already in use"];
        }, {
            readonly kind: "errorNode";
            readonly name: "invalidNumberOfProvidedSigners";
            readonly code: 7;
            readonly message: "Invalid number of provided signers";
            readonly docs: readonly ["InvalidNumberOfProvidedSigners: Invalid number of provided signers"];
        }, {
            readonly kind: "errorNode";
            readonly name: "invalidNumberOfRequiredSigners";
            readonly code: 8;
            readonly message: "Invalid number of required signers";
            readonly docs: readonly ["InvalidNumberOfRequiredSigners: Invalid number of required signers"];
        }, {
            readonly kind: "errorNode";
            readonly name: "uninitializedState";
            readonly code: 9;
            readonly message: "State is unititialized";
            readonly docs: readonly ["UninitializedState: State is unititialized"];
        }, {
            readonly kind: "errorNode";
            readonly name: "nativeNotSupported";
            readonly code: 10;
            readonly message: "Instruction does not support native tokens";
            readonly docs: readonly ["NativeNotSupported: Instruction does not support native tokens"];
        }, {
            readonly kind: "errorNode";
            readonly name: "nonNativeHasBalance";
            readonly code: 11;
            readonly message: "Non-native account can only be closed if its balance is zero";
            readonly docs: readonly ["NonNativeHasBalance: Non-native account can only be closed if its balance is zero"];
        }, {
            readonly kind: "errorNode";
            readonly name: "invalidInstruction";
            readonly code: 12;
            readonly message: "Invalid instruction";
            readonly docs: readonly ["InvalidInstruction: Invalid instruction"];
        }, {
            readonly kind: "errorNode";
            readonly name: "invalidState";
            readonly code: 13;
            readonly message: "State is invalid for requested operation";
            readonly docs: readonly ["InvalidState: State is invalid for requested operation"];
        }, {
            readonly kind: "errorNode";
            readonly name: "overflow";
            readonly code: 14;
            readonly message: "Operation overflowed";
            readonly docs: readonly ["Overflow: Operation overflowed"];
        }, {
            readonly kind: "errorNode";
            readonly name: "authorityTypeNotSupported";
            readonly code: 15;
            readonly message: "Account does not support specified authority type";
            readonly docs: readonly ["AuthorityTypeNotSupported: Account does not support specified authority type"];
        }, {
            readonly kind: "errorNode";
            readonly name: "mintCannotFreeze";
            readonly code: 16;
            readonly message: "This token mint cannot freeze accounts";
            readonly docs: readonly ["MintCannotFreeze: This token mint cannot freeze accounts"];
        }, {
            readonly kind: "errorNode";
            readonly name: "accountFrozen";
            readonly code: 17;
            readonly message: "Account is frozen";
            readonly docs: readonly ["AccountFrozen: Account is frozen"];
        }, {
            readonly kind: "errorNode";
            readonly name: "mintDecimalsMismatch";
            readonly code: 18;
            readonly message: "The provided decimals value different from the Mint decimals";
            readonly docs: readonly ["MintDecimalsMismatch: The provided decimals value different from the Mint decimals"];
        }, {
            readonly kind: "errorNode";
            readonly name: "nonNativeNotSupported";
            readonly code: 19;
            readonly message: "Instruction does not support non-native tokens";
            readonly docs: readonly ["NonNativeNotSupported: Instruction does not support non-native tokens"];
        }];
    };
    readonly additionalPrograms: readonly [{
        readonly kind: "programNode";
        readonly name: "associatedToken";
        readonly publicKey: "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL";
        readonly version: "1.1.1";
        readonly origin: "shank";
        readonly docs: readonly [];
        readonly accounts: readonly [];
        readonly instructions: readonly [{
            readonly kind: "instructionNode";
            readonly accounts: readonly [{
                readonly kind: "instructionAccountNode";
                readonly name: "payer";
                readonly isWritable: true;
                readonly isSigner: true;
                readonly isOptional: false;
                readonly docs: readonly ["Funding account (must be a system account)."];
                readonly defaultValue: {
                    readonly kind: "payerValueNode";
                };
            }, {
                readonly kind: "instructionAccountNode";
                readonly name: "ata";
                readonly isWritable: true;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly ["Associated token account address to be created."];
                readonly defaultValue: {
                    readonly kind: "pdaValueNode";
                    readonly pda: {
                        readonly kind: "pdaLinkNode";
                        readonly name: "associatedToken";
                    };
                    readonly seeds: readonly [{
                        readonly kind: "pdaSeedValueNode";
                        readonly name: "owner";
                        readonly value: {
                            readonly kind: "accountValueNode";
                            readonly name: "owner";
                        };
                    }, {
                        readonly kind: "pdaSeedValueNode";
                        readonly name: "tokenProgram";
                        readonly value: {
                            readonly kind: "accountValueNode";
                            readonly name: "tokenProgram";
                        };
                    }, {
                        readonly kind: "pdaSeedValueNode";
                        readonly name: "mint";
                        readonly value: {
                            readonly kind: "accountValueNode";
                            readonly name: "mint";
                        };
                    }];
                };
            }, {
                readonly kind: "instructionAccountNode";
                readonly name: "owner";
                readonly isWritable: false;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly ["Wallet address for the new associated token account."];
            }, {
                readonly kind: "instructionAccountNode";
                readonly name: "mint";
                readonly isWritable: false;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly ["The token mint for the new associated token account."];
            }, {
                readonly kind: "instructionAccountNode";
                readonly name: "systemProgram";
                readonly isWritable: false;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly ["System program."];
                readonly defaultValue: {
                    readonly kind: "publicKeyValueNode";
                    readonly publicKey: "11111111111111111111111111111111";
                };
            }, {
                readonly kind: "instructionAccountNode";
                readonly name: "tokenProgram";
                readonly isWritable: false;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly ["SPL Token program."];
                readonly defaultValue: {
                    readonly kind: "publicKeyValueNode";
                    readonly publicKey: "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb";
                };
            }];
            readonly arguments: readonly [{
                readonly kind: "instructionArgumentNode";
                readonly name: "discriminator";
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u8";
                    readonly endian: "le";
                };
                readonly docs: readonly [];
                readonly defaultValue: {
                    readonly kind: "numberValueNode";
                    readonly number: 0;
                };
                readonly defaultValueStrategy: "omitted";
            }];
            readonly discriminators: readonly [{
                readonly kind: "fieldDiscriminatorNode";
                readonly name: "discriminator";
                readonly offset: 0;
            }];
            readonly name: "createAssociatedToken";
            readonly docs: readonly ["Creates an associated token account for the given wallet address and", "token mint Returns an error if the account exists."];
            readonly optionalAccountStrategy: "programId";
        }, {
            readonly kind: "instructionNode";
            readonly accounts: readonly [{
                readonly kind: "instructionAccountNode";
                readonly name: "payer";
                readonly isWritable: true;
                readonly isSigner: true;
                readonly isOptional: false;
                readonly docs: readonly ["Funding account (must be a system account)."];
                readonly defaultValue: {
                    readonly kind: "payerValueNode";
                };
            }, {
                readonly kind: "instructionAccountNode";
                readonly name: "ata";
                readonly isWritable: true;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly ["Associated token account address to be created."];
                readonly defaultValue: {
                    readonly kind: "pdaValueNode";
                    readonly pda: {
                        readonly kind: "pdaLinkNode";
                        readonly name: "associatedToken";
                    };
                    readonly seeds: readonly [{
                        readonly kind: "pdaSeedValueNode";
                        readonly name: "owner";
                        readonly value: {
                            readonly kind: "accountValueNode";
                            readonly name: "owner";
                        };
                    }, {
                        readonly kind: "pdaSeedValueNode";
                        readonly name: "tokenProgram";
                        readonly value: {
                            readonly kind: "accountValueNode";
                            readonly name: "tokenProgram";
                        };
                    }, {
                        readonly kind: "pdaSeedValueNode";
                        readonly name: "mint";
                        readonly value: {
                            readonly kind: "accountValueNode";
                            readonly name: "mint";
                        };
                    }];
                };
            }, {
                readonly kind: "instructionAccountNode";
                readonly name: "owner";
                readonly isWritable: false;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly ["Wallet address for the new associated token account."];
            }, {
                readonly kind: "instructionAccountNode";
                readonly name: "mint";
                readonly isWritable: false;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly ["The token mint for the new associated token account."];
            }, {
                readonly kind: "instructionAccountNode";
                readonly name: "systemProgram";
                readonly isWritable: false;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly ["System program."];
                readonly defaultValue: {
                    readonly kind: "publicKeyValueNode";
                    readonly publicKey: "11111111111111111111111111111111";
                };
            }, {
                readonly kind: "instructionAccountNode";
                readonly name: "tokenProgram";
                readonly isWritable: false;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly ["SPL Token program."];
                readonly defaultValue: {
                    readonly kind: "publicKeyValueNode";
                    readonly publicKey: "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb";
                };
            }];
            readonly arguments: readonly [{
                readonly kind: "instructionArgumentNode";
                readonly name: "discriminator";
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u8";
                    readonly endian: "le";
                };
                readonly docs: readonly [];
                readonly defaultValue: {
                    readonly kind: "numberValueNode";
                    readonly number: 1;
                };
                readonly defaultValueStrategy: "omitted";
            }];
            readonly discriminators: readonly [{
                readonly kind: "fieldDiscriminatorNode";
                readonly name: "discriminator";
                readonly offset: 0;
            }];
            readonly name: "createAssociatedTokenIdempotent";
            readonly docs: readonly ["Creates an associated token account for the given wallet address and", "token mint, if it doesn't already exist. Returns an error if the", "account exists, but with a different owner."];
            readonly optionalAccountStrategy: "programId";
        }, {
            readonly kind: "instructionNode";
            readonly accounts: readonly [{
                readonly kind: "instructionAccountNode";
                readonly name: "nestedAssociatedAccountAddress";
                readonly isWritable: true;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly ["Nested associated token account, must be owned by `ownerAssociatedAccountAddress`."];
                readonly defaultValue: {
                    readonly kind: "pdaValueNode";
                    readonly pda: {
                        readonly kind: "pdaLinkNode";
                        readonly name: "associatedToken";
                    };
                    readonly seeds: readonly [{
                        readonly kind: "pdaSeedValueNode";
                        readonly name: "owner";
                        readonly value: {
                            readonly kind: "accountValueNode";
                            readonly name: "ownerAssociatedAccountAddress";
                        };
                    }, {
                        readonly kind: "pdaSeedValueNode";
                        readonly name: "tokenProgram";
                        readonly value: {
                            readonly kind: "accountValueNode";
                            readonly name: "tokenProgram";
                        };
                    }, {
                        readonly kind: "pdaSeedValueNode";
                        readonly name: "mint";
                        readonly value: {
                            readonly kind: "accountValueNode";
                            readonly name: "nestedTokenMintAddress";
                        };
                    }];
                };
            }, {
                readonly kind: "instructionAccountNode";
                readonly name: "nestedTokenMintAddress";
                readonly isWritable: false;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly ["Token mint for the nested associated token account."];
            }, {
                readonly kind: "instructionAccountNode";
                readonly name: "destinationAssociatedAccountAddress";
                readonly isWritable: true;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly ["Wallet's associated token account."];
                readonly defaultValue: {
                    readonly kind: "pdaValueNode";
                    readonly pda: {
                        readonly kind: "pdaLinkNode";
                        readonly name: "associatedToken";
                    };
                    readonly seeds: readonly [{
                        readonly kind: "pdaSeedValueNode";
                        readonly name: "owner";
                        readonly value: {
                            readonly kind: "accountValueNode";
                            readonly name: "walletAddress";
                        };
                    }, {
                        readonly kind: "pdaSeedValueNode";
                        readonly name: "tokenProgram";
                        readonly value: {
                            readonly kind: "accountValueNode";
                            readonly name: "tokenProgram";
                        };
                    }, {
                        readonly kind: "pdaSeedValueNode";
                        readonly name: "mint";
                        readonly value: {
                            readonly kind: "accountValueNode";
                            readonly name: "nestedTokenMintAddress";
                        };
                    }];
                };
            }, {
                readonly kind: "instructionAccountNode";
                readonly name: "ownerAssociatedAccountAddress";
                readonly isWritable: false;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly ["Owner associated token account address, must be owned by `walletAddress`."];
                readonly defaultValue: {
                    readonly kind: "pdaValueNode";
                    readonly pda: {
                        readonly kind: "pdaLinkNode";
                        readonly name: "associatedToken";
                    };
                    readonly seeds: readonly [{
                        readonly kind: "pdaSeedValueNode";
                        readonly name: "owner";
                        readonly value: {
                            readonly kind: "accountValueNode";
                            readonly name: "walletAddress";
                        };
                    }, {
                        readonly kind: "pdaSeedValueNode";
                        readonly name: "tokenProgram";
                        readonly value: {
                            readonly kind: "accountValueNode";
                            readonly name: "tokenProgram";
                        };
                    }, {
                        readonly kind: "pdaSeedValueNode";
                        readonly name: "mint";
                        readonly value: {
                            readonly kind: "accountValueNode";
                            readonly name: "ownerTokenMintAddress";
                        };
                    }];
                };
            }, {
                readonly kind: "instructionAccountNode";
                readonly name: "ownerTokenMintAddress";
                readonly isWritable: false;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly ["Token mint for the owner associated token account."];
            }, {
                readonly kind: "instructionAccountNode";
                readonly name: "walletAddress";
                readonly isWritable: true;
                readonly isSigner: true;
                readonly isOptional: false;
                readonly docs: readonly ["Wallet address for the owner associated token account."];
            }, {
                readonly kind: "instructionAccountNode";
                readonly name: "tokenProgram";
                readonly isWritable: false;
                readonly isSigner: false;
                readonly isOptional: false;
                readonly docs: readonly ["SPL Token program."];
                readonly defaultValue: {
                    readonly kind: "publicKeyValueNode";
                    readonly publicKey: "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb";
                };
            }];
            readonly arguments: readonly [{
                readonly kind: "instructionArgumentNode";
                readonly name: "discriminator";
                readonly type: {
                    readonly kind: "numberTypeNode";
                    readonly format: "u8";
                    readonly endian: "le";
                };
                readonly docs: readonly [];
                readonly defaultValue: {
                    readonly kind: "numberValueNode";
                    readonly number: 2;
                };
                readonly defaultValueStrategy: "omitted";
            }];
            readonly discriminators: readonly [{
                readonly kind: "fieldDiscriminatorNode";
                readonly name: "discriminator";
                readonly offset: 0;
            }];
            readonly name: "recoverNestedAssociatedToken";
            readonly docs: readonly ["Transfers from and closes a nested associated token account: an", "associated token account owned by an associated token account.", "", "The tokens are moved from the nested associated token account to the", "wallet's associated token account, and the nested account lamports are", "moved to the wallet.", "", "Note: Nested token accounts are an anti-pattern, and almost always", "created unintentionally, so this instruction should only be used to", "recover from errors."];
            readonly optionalAccountStrategy: "programId";
        }];
        readonly definedTypes: readonly [];
        readonly pdas: readonly [{
            readonly kind: "pdaNode";
            readonly name: "associatedToken";
            readonly docs: readonly [];
            readonly seeds: readonly [{
                readonly kind: "variablePdaSeedNode";
                readonly name: "owner";
                readonly docs: readonly ["The wallet address of the associated token account."];
                readonly type: {
                    readonly kind: "publicKeyTypeNode";
                };
            }, {
                readonly kind: "variablePdaSeedNode";
                readonly name: "tokenProgram";
                readonly docs: readonly ["The address of the token program to use."];
                readonly type: {
                    readonly kind: "publicKeyTypeNode";
                };
            }, {
                readonly kind: "variablePdaSeedNode";
                readonly name: "mint";
                readonly docs: readonly ["The mint address of the associated token account."];
                readonly type: {
                    readonly kind: "publicKeyTypeNode";
                };
            }];
        }];
        readonly errors: readonly [{
            readonly kind: "errorNode";
            readonly name: "invalidOwner";
            readonly code: 0;
            readonly message: "Associated token account owner does not match address derivation";
            readonly docs: readonly ["InvalidOwner: Associated token account owner does not match address derivation"];
        }];
    }];
};
export default _default;
//# sourceMappingURL=token2022.d.ts.map