import { type Address } from '@solana/kit';
import { type GasOracle, type InterchainGasPaymasterType } from '../codecs/shared.js';
export interface HyperlaneTokenAccountData {
    bump: number;
    mailbox: Address;
    mailboxProcessAuthority: Address;
    dispatchAuthorityBump: number;
    decimals: number;
    remoteDecimals: number;
    owner: Address | null;
    interchainSecurityModule: Address | null;
    interchainGasPaymaster: {
        programId: Address;
        igpType: InterchainGasPaymasterType;
    } | null;
    destinationGas: Map<number, bigint>;
    remoteRouters: Map<number, Uint8Array>;
    pluginData: Uint8Array;
}
export interface IgpProgramData {
    bumpSeed: number;
    paymentCount: bigint;
}
export interface IgpAccountData {
    bumpSeed: number;
    salt: Uint8Array;
    owner: Address | null;
    beneficiary: Address;
    gasOracles: Map<number, GasOracle>;
}
export interface OverheadIgpAccountData {
    bumpSeed: number;
    salt: Uint8Array;
    owner: Address | null;
    inner: Address;
    gasOverheads: Map<number, bigint>;
}
export declare function decodeHyperlaneTokenAccount(raw: Uint8Array): HyperlaneTokenAccountData | null;
export declare function decodeIgpProgramDataAccount(raw: Uint8Array): IgpProgramData | null;
export declare function decodeIgpAccount(raw: Uint8Array): IgpAccountData | null;
export declare function decodeOverheadIgpAccount(raw: Uint8Array): OverheadIgpAccountData | null;
export interface NativePluginData {
    nativeCollateralBump: number;
}
export interface SyntheticPluginData {
    mint: Address;
    mintBump: number;
    ataPayerBump: number;
}
export interface CollateralPluginData {
    splTokenProgram: Address;
    mint: Address;
    escrow: Address;
    escrowBump: number;
    ataPayerBump: number;
}
export declare function decodeNativePlugin(pluginData: Uint8Array): NativePluginData;
export declare function decodeSyntheticPlugin(pluginData: Uint8Array): SyntheticPluginData;
export declare function decodeCollateralPlugin(pluginData: Uint8Array): CollateralPluginData;
//# sourceMappingURL=token.d.ts.map