///
import type { Mint } from '../../state/mint.js';
import type { AccountInfo, AccountMeta, Connection } from '@cartbc/web3.js';
import { PublicKey } from '@cartbc/web3.js';
import type { Account } from '../../state/account.js';
/** TransferHook as stored by the program */
export interface TransferHook {
/** The transfer hook update authrority */
authority: PublicKey;
/** The transfer hook program account */
programId: PublicKey;
}
/** Buffer layout for de/serializing a transfer hook extension */
export declare const TransferHookLayout: import("@cartbc/buffer-layout").Structure;
export declare const TRANSFER_HOOK_SIZE: number;
export declare function getTransferHook(mint: Mint): TransferHook | null;
/** TransferHookAccount as stored by the program */
export interface TransferHookAccount {
/**
* Whether or not this account is currently tranferring tokens
* True during the transfer hook cpi, otherwise false
*/
transferring: boolean;
}
/** Buffer layout for de/serializing a transfer hook account extension */
export declare const TransferHookAccountLayout: import("@cartbc/buffer-layout").Structure;
export declare const TRANSFER_HOOK_ACCOUNT_SIZE: number;
export declare function getTransferHookAccount(account: Account): TransferHookAccount | null;
export declare function getExtraAccountMetaAddress(mint: PublicKey, programId: PublicKey): PublicKey;
/** ExtraAccountMeta as stored by the transfer hook program */
export interface ExtraAccountMeta {
discriminator: number;
addressConfig: Uint8Array;
isSigner: boolean;
isWritable: boolean;
}
/** Buffer layout for de/serializing an ExtraAccountMeta */
export declare const ExtraAccountMetaLayout: import("@cartbc/buffer-layout").Structure;
export interface ExtraAccountMetaList {
count: number;
extraAccounts: ExtraAccountMeta[];
}
/** Buffer layout for de/serializing a list of ExtraAccountMeta prefixed by a u32 length */
export declare const ExtraAccountMetaListLayout: import("@cartbc/buffer-layout").Structure;
/** Buffer layout for de/serializing a list of ExtraAccountMetaAccountData prefixed by a u32 length */
export interface ExtraAccountMetaAccountData {
instructionDiscriminator: bigint;
length: number;
extraAccountsList: ExtraAccountMetaList;
}
/** Buffer layout for de/serializing an ExtraAccountMetaAccountData */
export declare const ExtraAccountMetaAccountDataLayout: import("@cartbc/buffer-layout").Structure;
/** Unpack an extra account metas account and parse the data into a list of ExtraAccountMetas */
export declare function getExtraAccountMetas(account: AccountInfo): ExtraAccountMeta[];
/** Take an ExtraAccountMeta and construct that into an acutal AccountMeta */
export declare function resolveExtraAccountMeta(connection: Connection, extraMeta: ExtraAccountMeta, previousMetas: AccountMeta[], instructionData: Buffer, transferHookProgramId: PublicKey): Promise;
//# sourceMappingURL=state.d.ts.map