import type { DeriveType } from "binary-layout";
import { Rational } from "@stable-io/amount";
import { type Network } from "@stable-io/cctp-sdk-definitions";
export declare const gasDropoffItem: {
    binary: "uint";
    size: 4;
    custom: {
        to: (val: number) => import("@stable-io/amount").Amount<{
            readonly name: "GasToken";
            readonly units: readonly [{
                readonly symbol: "GasToken";
                readonly scale: 1n;
            }, {
                readonly symbol: "mGasToken";
                readonly scale: bigint | Rational;
            }, {
                readonly symbol: "\u00B5GasToken";
                readonly scale: bigint | Rational;
            }, {
                readonly symbol: "nGasToken";
                readonly scale: bigint | Rational;
            }, {
                readonly symbol: "aGasToken";
                readonly scale: bigint | Rational;
            }];
            readonly human: "GasToken";
        }>;
        from: (amount: import("@stable-io/amount").Amount<{
            readonly name: "GasToken";
            readonly units: readonly [{
                readonly symbol: "GasToken";
                readonly scale: 1n;
            }, {
                readonly symbol: "mGasToken";
                readonly scale: bigint | Rational;
            }, {
                readonly symbol: "\u00B5GasToken";
                readonly scale: bigint | Rational;
            }, {
                readonly symbol: "nGasToken";
                readonly scale: bigint | Rational;
            }, {
                readonly symbol: "aGasToken";
                readonly scale: bigint | Rational;
            }];
            readonly human: "GasToken";
        }>) => number;
    };
};
export declare const usdcItem: {
    binary: "uint";
    size: 8;
    custom: {
        to: (val: bigint) => import("@stable-io/amount").Amount<{
            readonly name: "Usdc";
            readonly units: readonly [{
                readonly symbol: "USDC";
                readonly scale: 1;
            }, {
                readonly symbol: "\u00B5USDC";
                readonly scale: bigint | Rational;
            }];
            readonly human: "USDC";
            readonly atomic: "\u00B5USDC";
            readonly stringify: (val: Rational) => string;
        }>;
        from: (amount: import("@stable-io/amount").Amount<{
            readonly name: "Usdc";
            readonly units: readonly [{
                readonly symbol: "USDC";
                readonly scale: 1;
            }, {
                readonly symbol: "\u00B5USDC";
                readonly scale: bigint | Rational;
            }];
            readonly human: "USDC";
            readonly atomic: "\u00B5USDC";
            readonly stringify: (val: Rational) => string;
        }>) => bigint;
    };
};
export declare const evmGasTokenItem: {
    binary: "uint";
    size: 16;
    custom: {
        to: (val: bigint) => import("@stable-io/amount").Amount<{
            readonly name: "EvmGasToken";
            readonly units: readonly [{
                readonly symbol: "EvmGasToken";
                readonly scale: 1n;
            }, {
                readonly symbol: "nEvmGasToken";
                readonly scale: bigint | Rational;
            }, {
                readonly symbol: "aEvmGasToken";
                readonly scale: bigint | Rational;
            }];
            readonly human: "EvmGasToken";
            readonly atomic: "aEvmGasToken";
        }>;
        from: (amount: import("@stable-io/amount").Amount<{
            readonly name: "EvmGasToken";
            readonly units: readonly [{
                readonly symbol: "EvmGasToken";
                readonly scale: 1n;
            }, {
                readonly symbol: "nEvmGasToken";
                readonly scale: bigint | Rational;
            }, {
                readonly symbol: "aEvmGasToken";
                readonly scale: bigint | Rational;
            }];
            readonly human: "EvmGasToken";
            readonly atomic: "aEvmGasToken";
        }>) => bigint;
    };
};
export declare const evmDomainItem: {
    readonly size: 1;
    readonly custom: {
        to: (val: number) => keyof import("@stable-io/cctp-sdk-definitions").EvmDomains;
        from: (val: keyof import("@stable-io/cctp-sdk-definitions").EvmDomains) => number;
    };
    readonly binary: "uint";
};
export declare const supportedDomainItem: <N extends Network>(network: N) => {
    readonly size: 1;
    readonly custom: {
        to: (val: number) => import("@stable-io/utils").ApplyAliases<import("@stable-io/cctp-sdk-definitions").DomainAliases, {
            Mainnet: ["Ethereum", "Avalanche", "Optimism", "Arbitrum", "Base", "Solana", "Polygon", "Unichain", "Linea", "Codex", "Sonic", "Worldchain"];
            Testnet: ["Ethereum", "Avalanche", "Optimism", "Arbitrum", "Base", "Polygon", "Unichain", "Linea", "Codex", "Sonic", "Worldchain"];
        }[N extends bigint ? `bigint(${N})` : N extends boolean ? `boolean(${N})` : N][number]>;
        from: (val: import("@stable-io/utils").ApplyAliases<import("@stable-io/cctp-sdk-definitions").DomainAliases, {
            Mainnet: ["Ethereum", "Avalanche", "Optimism", "Arbitrum", "Base", "Solana", "Polygon", "Unichain", "Linea", "Codex", "Sonic", "Worldchain"];
            Testnet: ["Ethereum", "Avalanche", "Optimism", "Arbitrum", "Base", "Polygon", "Unichain", "Linea", "Codex", "Sonic", "Worldchain"];
        }[N extends bigint ? `bigint(${N})` : N extends boolean ? `boolean(${N})` : N][number]>) => number;
    };
    readonly binary: "uint";
};
export declare const timestampItem: {
    readonly binary: "uint";
    readonly size: 4;
    readonly custom: {
        readonly to: (value: number) => Date;
        readonly from: (value: Date) => number;
    };
};
export declare const corridors: readonly ["v1", "v2Direct", "avaxHop"];
export type Corridor = typeof corridors[number];
export declare const corridorItem: {
    readonly binary: "uint";
    readonly size: 1;
    readonly endianness: "big";
    readonly custom: {
        readonly to: (encoded: number) => "v1" | "v2Direct" | "avaxHop";
        readonly from: (name: "v1" | "v2Direct" | "avaxHop") => number;
    };
};
export declare const bakedInDomains: readonly ["Ethereum", "Avalanche", "Optimism", "Arbitrum", "Noble", "Base", "Solana", "Polygon", "Sui", "Aptos", "Unichain", "Linea"];
export declare const extraDomains: <N extends Network>(network: N) => readonly ["Codex", "Sonic", "Worldchain"];
export type ExtraDomain<N extends Network> = ReturnType<typeof extraDomains<N>>[number];
export type ExtraChainIds<N extends Network> = Partial<Record<ExtraDomain<N>, number>>;
export declare const domainChainIdPairLayout: <N extends Network>(network: N) => readonly [{
    readonly custom: {
        to: (val: number) => "Codex" | "Sonic" | "Worldchain";
        from: (val: "Codex" | "Sonic" | "Worldchain") => number;
    };
    readonly binary: "uint";
    readonly size: 4;
    readonly name: "domain";
}, {
    readonly name: "chainId";
    readonly binary: "uint";
    readonly size: 2;
}];
export type DomainChainIdPair<N extends Network> = DeriveType<ReturnType<typeof domainChainIdPairLayout<N>>>;
export declare const feeAdjustmentTypes: readonly ["v1", "v2Direct", "avaxHop", "gasDropoff"];
export type FeeAdjustmentType = typeof feeAdjustmentTypes[number];
//# sourceMappingURL=common.d.ts.map