UNPKG

@stable-io/cctp-sdk-cctpr-evm

Version:

EVM support for the CCTPR corridor of the CCTP SDK

1,310 lines 59.5 kB
import type { DeriveType } from "binary-layout";
import { Network } from "@stable-io/cctp-sdk-definitions";
declare const corridorVariantItem: {
    readonly binary: "switch";
    readonly idSize: 1;
    readonly idTag: "type";
    readonly layouts: [[[0, "v1"], readonly []], [[1, "v2Direct"], readonly [{
        readonly binary: "uint";
        readonly size: 8;
        readonly 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 | import("@stable-io/amount").Rational;
                }];
                readonly human: "USDC";
                readonly atomic: "\u00B5USDC";
                readonly stringify: (val: import("@stable-io/amount").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 | import("@stable-io/amount").Rational;
                }];
                readonly human: "USDC";
                readonly atomic: "\u00B5USDC";
                readonly stringify: (val: import("@stable-io/amount").Rational) => string;
            }>) => bigint;
        };
        readonly name: "maxFastFeeUsdc";
    }]], [[2, "avaxHop"], readonly [{
        readonly binary: "uint";
        readonly size: 8;
        readonly 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 | import("@stable-io/amount").Rational;
                }];
                readonly human: "USDC";
                readonly atomic: "\u00B5USDC";
                readonly stringify: (val: import("@stable-io/amount").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 | import("@stable-io/amount").Rational;
                }];
                readonly human: "USDC";
                readonly atomic: "\u00B5USDC";
                readonly stringify: (val: import("@stable-io/amount").Rational) => string;
            }>) => bigint;
        };
        readonly name: "maxFastFeeUsdc";
    }]]];
};
export type CorridorVariant = DeriveType<typeof corridorVariantItem>;
declare const userQuoteVariantItem: {
    readonly binary: "switch";
    readonly idSize: 1;
    readonly idTag: "type";
    readonly layouts: [[[0, "offChain"], readonly [{
        readonly binary: "uint";
        readonly size: 4;
        readonly custom: {
            readonly to: (value: number) => Date;
            readonly from: (value: Date) => number;
        };
        readonly name: "expirationTime";
    }, {
        readonly name: "feePaymentVariant";
    } & {
        readonly binary: "switch";
        readonly idSize: 1;
        readonly idTag: "payIn";
        readonly layouts: [[[0, "usdc"], readonly [{
            readonly binary: "uint";
            readonly size: 8;
            readonly 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 | import("@stable-io/amount").Rational;
                    }];
                    readonly human: "USDC";
                    readonly atomic: "\u00B5USDC";
                    readonly stringify: (val: import("@stable-io/amount").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 | import("@stable-io/amount").Rational;
                    }];
                    readonly human: "USDC";
                    readonly atomic: "\u00B5USDC";
                    readonly stringify: (val: import("@stable-io/amount").Rational) => string;
                }>) => bigint;
            };
            readonly name: "relayFeeUsdc";
        }]], [[1, "gasToken"], readonly [{
            readonly binary: "uint";
            readonly size: 16;
            readonly 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 | import("@stable-io/amount").Rational;
                    }, {
                        readonly symbol: "aEvmGasToken";
                        readonly scale: bigint | import("@stable-io/amount").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 | import("@stable-io/amount").Rational;
                    }, {
                        readonly symbol: "aEvmGasToken";
                        readonly scale: bigint | import("@stable-io/amount").Rational;
                    }];
                    readonly human: "EvmGasToken";
                    readonly atomic: "aEvmGasToken";
                }>) => bigint;
            };
            readonly name: "relayFeeGasToken";
        }]]];
    }, {
        readonly binary: "bytes";
        readonly size: 65;
        readonly name: "quoterSignature";
    }]], [[1, "onChainUsdc"], readonly [{
        readonly binary: "uint";
        readonly size: 8;
        readonly 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 | import("@stable-io/amount").Rational;
                }];
                readonly human: "USDC";
                readonly atomic: "\u00B5USDC";
                readonly stringify: (val: import("@stable-io/amount").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 | import("@stable-io/amount").Rational;
                }];
                readonly human: "USDC";
                readonly atomic: "\u00B5USDC";
                readonly stringify: (val: import("@stable-io/amount").Rational) => string;
            }>) => bigint;
        };
        readonly name: "maxRelayFeeUsdc";
    }, {
        readonly binary: "uint";
        readonly size: 1;
        readonly custom: {
            readonly to: (encoded: number) => boolean;
            readonly from: (value: boolean) => number;
        };
        readonly name: "takeRelayFeeFromInput";
    }]], [[2, "onChainGas"], readonly []]];
};
export type UserQuoteVariant = DeriveType<typeof userQuoteVariantItem>;
declare const gaslessQuoteVariantItem: {
    readonly binary: "switch";
    readonly idSize: 1;
    readonly idTag: "type";
    readonly layouts: [[[0, "offChain"], readonly [{
        readonly binary: "uint";
        readonly size: 4;
        readonly custom: {
            readonly to: (value: number) => Date;
            readonly from: (value: Date) => number;
        };
        readonly name: "expirationTime";
    }, {
        readonly name: "feePaymentVariant";
    } & {
        readonly binary: "bytes";
        readonly layout: readonly [{
            readonly binary: "uint";
            readonly size: 1;
            readonly custom: {
                readonly to: "usdc";
                readonly from: 1;
            };
            readonly name: "payIn";
        }, {
            readonly binary: "uint";
            readonly size: 8;
            readonly 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 | import("@stable-io/amount").Rational;
                    }];
                    readonly human: "USDC";
                    readonly atomic: "\u00B5USDC";
                    readonly stringify: (val: import("@stable-io/amount").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 | import("@stable-io/amount").Rational;
                    }];
                    readonly human: "USDC";
                    readonly atomic: "\u00B5USDC";
                    readonly stringify: (val: import("@stable-io/amount").Rational) => string;
                }>) => bigint;
            };
            readonly name: "relayFeeUsdc";
        }];
    }, {
        readonly binary: "bytes";
        readonly size: 65;
        readonly name: "quoterSignature";
    }]], [[1, "onChainUsdc"], readonly [{
        readonly binary: "uint";
        readonly size: 8;
        readonly 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 | import("@stable-io/amount").Rational;
                }];
                readonly human: "USDC";
                readonly atomic: "\u00B5USDC";
                readonly stringify: (val: import("@stable-io/amount").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 | import("@stable-io/amount").Rational;
                }];
                readonly human: "USDC";
                readonly atomic: "\u00B5USDC";
                readonly stringify: (val: import("@stable-io/amount").Rational) => string;
            }>) => bigint;
        };
        readonly name: "maxRelayFeeUsdc";
    }, {
        readonly binary: "uint";
        readonly size: 1;
        readonly custom: {
            readonly to: (encoded: number) => boolean;
            readonly from: (value: boolean) => number;
        };
        readonly name: "takeRelayFeeFromInput";
    }]]];
};
export type GaslessQuoteVariant = DeriveType<typeof gaslessQuoteVariantItem>;
export declare const transferLayout: <N extends Network>(network: N) => {
    readonly binary: "switch";
    readonly idSize: 1;
    readonly idTag: "approvalType";
    readonly layouts: readonly [readonly [readonly [1, "Permit"], readonly [{
        readonly binary: "bytes";
        readonly layout: readonly [{
            readonly binary: "uint";
            readonly size: 32;
            readonly name: "value";
        }, {
            readonly binary: "uint";
            readonly size: 32;
            readonly name: "deadline";
        }, {
            readonly binary: "bytes";
            readonly size: 65;
            readonly name: "signature";
        }];
        readonly name: "permit";
    }, {
        readonly binary: "uint";
        readonly size: 8;
        readonly 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 | import("@stable-io/amount").Rational;
                }];
                readonly human: "USDC";
                readonly atomic: "\u00B5USDC";
                readonly stringify: (val: import("@stable-io/amount").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 | import("@stable-io/amount").Rational;
                }];
                readonly human: "USDC";
                readonly atomic: "\u00B5USDC";
                readonly stringify: (val: import("@stable-io/amount").Rational) => string;
            }>) => bigint;
        };
        readonly name: "inputAmountUsdc";
    }, {
        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";
        readonly name: "destinationDomain";
    }, {
        readonly binary: "bytes";
        readonly size: import("@stable-io/utils").Size;
        readonly custom: {
            to: (encoded: Uint8Array) => import("@stable-io/cctp-sdk-definitions").UniversalAddress;
            from: (addr: import("@stable-io/cctp-sdk-definitions").UniversalAddress) => Uint8Array<ArrayBufferLike>;
        };
        readonly name: "mintRecipient";
    }, {
        readonly binary: "uint";
        readonly size: 4;
        readonly 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 | import("@stable-io/amount").Rational;
                }, {
                    readonly symbol: "\u00B5GasToken";
                    readonly scale: bigint | import("@stable-io/amount").Rational;
                }, {
                    readonly symbol: "nGasToken";
                    readonly scale: bigint | import("@stable-io/amount").Rational;
                }, {
                    readonly symbol: "aGasToken";
                    readonly scale: bigint | import("@stable-io/amount").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 | import("@stable-io/amount").Rational;
                }, {
                    readonly symbol: "\u00B5GasToken";
                    readonly scale: bigint | import("@stable-io/amount").Rational;
                }, {
                    readonly symbol: "nGasToken";
                    readonly scale: bigint | import("@stable-io/amount").Rational;
                }, {
                    readonly symbol: "aGasToken";
                    readonly scale: bigint | import("@stable-io/amount").Rational;
                }];
                readonly human: "GasToken";
            }>) => number;
        };
        readonly name: "gasDropoff";
    }, {
        readonly binary: "switch";
        readonly idSize: 1;
        readonly idTag: "type";
        readonly layouts: [[[0, "v1"], readonly []], [[1, "v2Direct"], readonly [{
            readonly binary: "uint";
            readonly size: 8;
            readonly 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 | import("@stable-io/amount").Rational;
                    }];
                    readonly human: "USDC";
                    readonly atomic: "\u00B5USDC";
                    readonly stringify: (val: import("@stable-io/amount").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 | import("@stable-io/amount").Rational;
                    }];
                    readonly human: "USDC";
                    readonly atomic: "\u00B5USDC";
                    readonly stringify: (val: import("@stable-io/amount").Rational) => string;
                }>) => bigint;
            };
            readonly name: "maxFastFeeUsdc";
        }]], [[2, "avaxHop"], readonly [{
            readonly binary: "uint";
            readonly size: 8;
            readonly 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 | import("@stable-io/amount").Rational;
                    }];
                    readonly human: "USDC";
                    readonly atomic: "\u00B5USDC";
                    readonly stringify: (val: import("@stable-io/amount").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 | import("@stable-io/amount").Rational;
                    }];
                    readonly human: "USDC";
                    readonly atomic: "\u00B5USDC";
                    readonly stringify: (val: import("@stable-io/amount").Rational) => string;
                }>) => bigint;
            };
            readonly name: "maxFastFeeUsdc";
        }]]];
        readonly name: "corridorVariant";
    }, {
        readonly name: "quoteVariant";
    } & {
        readonly binary: "switch";
        readonly idSize: 1;
        readonly idTag: "type";
        readonly layouts: [[[0, "offChain"], readonly [{
            readonly binary: "uint";
            readonly size: 4;
            readonly custom: {
                readonly to: (value: number) => Date;
                readonly from: (value: Date) => number;
            };
            readonly name: "expirationTime";
        }, {
            readonly name: "feePaymentVariant";
        } & {
            readonly binary: "switch";
            readonly idSize: 1;
            readonly idTag: "payIn";
            readonly layouts: [[[0, "usdc"], readonly [{
                readonly binary: "uint";
                readonly size: 8;
                readonly 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 | import("@stable-io/amount").Rational;
                        }];
                        readonly human: "USDC";
                        readonly atomic: "\u00B5USDC";
                        readonly stringify: (val: import("@stable-io/amount").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 | import("@stable-io/amount").Rational;
                        }];
                        readonly human: "USDC";
                        readonly atomic: "\u00B5USDC";
                        readonly stringify: (val: import("@stable-io/amount").Rational) => string;
                    }>) => bigint;
                };
                readonly name: "relayFeeUsdc";
            }]], [[1, "gasToken"], readonly [{
                readonly binary: "uint";
                readonly size: 16;
                readonly 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 | import("@stable-io/amount").Rational;
                        }, {
                            readonly symbol: "aEvmGasToken";
                            readonly scale: bigint | import("@stable-io/amount").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 | import("@stable-io/amount").Rational;
                        }, {
                            readonly symbol: "aEvmGasToken";
                            readonly scale: bigint | import("@stable-io/amount").Rational;
                        }];
                        readonly human: "EvmGasToken";
                        readonly atomic: "aEvmGasToken";
                    }>) => bigint;
                };
                readonly name: "relayFeeGasToken";
            }]]];
        }, {
            readonly binary: "bytes";
            readonly size: 65;
            readonly name: "quoterSignature";
        }]], [[1, "onChainUsdc"], readonly [{
            readonly binary: "uint";
            readonly size: 8;
            readonly 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 | import("@stable-io/amount").Rational;
                    }];
                    readonly human: "USDC";
                    readonly atomic: "\u00B5USDC";
                    readonly stringify: (val: import("@stable-io/amount").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 | import("@stable-io/amount").Rational;
                    }];
                    readonly human: "USDC";
                    readonly atomic: "\u00B5USDC";
                    readonly stringify: (val: import("@stable-io/amount").Rational) => string;
                }>) => bigint;
            };
            readonly name: "maxRelayFeeUsdc";
        }, {
            readonly binary: "uint";
            readonly size: 1;
            readonly custom: {
                readonly to: (encoded: number) => boolean;
                readonly from: (value: boolean) => number;
            };
            readonly name: "takeRelayFeeFromInput";
        }]], [[2, "onChainGas"], readonly []]];
    }]], readonly [readonly [2, "Preapproval"], readonly [{
        readonly binary: "uint";
        readonly size: 8;
        readonly 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 | import("@stable-io/amount").Rational;
                }];
                readonly human: "USDC";
                readonly atomic: "\u00B5USDC";
                readonly stringify: (val: import("@stable-io/amount").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 | import("@stable-io/amount").Rational;
                }];
                readonly human: "USDC";
                readonly atomic: "\u00B5USDC";
                readonly stringify: (val: import("@stable-io/amount").Rational) => string;
            }>) => bigint;
        };
        readonly name: "inputAmountUsdc";
    }, {
        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";
        readonly name: "destinationDomain";
    }, {
        readonly binary: "bytes";
        readonly size: import("@stable-io/utils").Size;
        readonly custom: {
            to: (encoded: Uint8Array) => import("@stable-io/cctp-sdk-definitions").UniversalAddress;
            from: (addr: import("@stable-io/cctp-sdk-definitions").UniversalAddress) => Uint8Array<ArrayBufferLike>;
        };
        readonly name: "mintRecipient";
    }, {
        readonly binary: "uint";
        readonly size: 4;
        readonly 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 | import("@stable-io/amount").Rational;
                }, {
                    readonly symbol: "\u00B5GasToken";
                    readonly scale: bigint | import("@stable-io/amount").Rational;
                }, {
                    readonly symbol: "nGasToken";
                    readonly scale: bigint | import("@stable-io/amount").Rational;
                }, {
                    readonly symbol: "aGasToken";
                    readonly scale: bigint | import("@stable-io/amount").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 | import("@stable-io/amount").Rational;
                }, {
                    readonly symbol: "\u00B5GasToken";
                    readonly scale: bigint | import("@stable-io/amount").Rational;
                }, {
                    readonly symbol: "nGasToken";
                    readonly scale: bigint | import("@stable-io/amount").Rational;
                }, {
                    readonly symbol: "aGasToken";
                    readonly scale: bigint | import("@stable-io/amount").Rational;
                }];
                readonly human: "GasToken";
            }>) => number;
        };
        readonly name: "gasDropoff";
    }, {
        readonly binary: "switch";
        readonly idSize: 1;
        readonly idTag: "type";
        readonly layouts: [[[0, "v1"], readonly []], [[1, "v2Direct"], readonly [{
            readonly binary: "uint";
            readonly size: 8;
            readonly 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 | import("@stable-io/amount").Rational;
                    }];
                    readonly human: "USDC";
                    readonly atomic: "\u00B5USDC";
                    readonly stringify: (val: import("@stable-io/amount").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 | import("@stable-io/amount").Rational;
                    }];
                    readonly human: "USDC";
                    readonly atomic: "\u00B5USDC";
                    readonly stringify: (val: import("@stable-io/amount").Rational) => string;
                }>) => bigint;
            };
            readonly name: "maxFastFeeUsdc";
        }]], [[2, "avaxHop"], readonly [{
            readonly binary: "uint";
            readonly size: 8;
            readonly 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 | import("@stable-io/amount").Rational;
                    }];
                    readonly human: "USDC";
                    readonly atomic: "\u00B5USDC";
                    readonly stringify: (val: import("@stable-io/amount").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 | import("@stable-io/amount").Rational;
                    }];
                    readonly human: "USDC";
                    readonly atomic: "\u00B5USDC";
                    readonly stringify: (val: import("@stable-io/amount").Rational) => string;
                }>) => bigint;
            };
            readonly name: "maxFastFeeUsdc";
        }]]];
        readonly name: "corridorVariant";
    }, {
        readonly name: "quoteVariant";
    } & {
        readonly binary: "switch";
        readonly idSize: 1;
        readonly idTag: "type";
        readonly layouts: [[[0, "offChain"], readonly [{
            readonly binary: "uint";
            readonly size: 4;
            readonly custom: {
                readonly to: (value: number) => Date;
                readonly from: (value: Date) => number;
            };
            readonly name: "expirationTime";
        }, {
            readonly name: "feePaymentVariant";
        } & {
            readonly binary: "switch";
            readonly idSize: 1;
            readonly idTag: "payIn";
            readonly layouts: [[[0, "usdc"], readonly [{
                readonly binary: "uint";
                readonly size: 8;
                readonly 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 | import("@stable-io/amount").Rational;
                        }];
                        readonly human: "USDC";
                        readonly atomic: "\u00B5USDC";
                        readonly stringify: (val: import("@stable-io/amount").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 | import("@stable-io/amount").Rational;
                        }];
                        readonly human: "USDC";
                        readonly atomic: "\u00B5USDC";
                        readonly stringify: (val: import("@stable-io/amount").Rational) => string;
                    }>) => bigint;
                };
                readonly name: "relayFeeUsdc";
            }]], [[1, "gasToken"], readonly [{
                readonly binary: "uint";
                readonly size: 16;
                readonly 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 | import("@stable-io/amount").Rational;
                        }, {
                            readonly symbol: "aEvmGasToken";
                            readonly scale: bigint | import("@stable-io/amount").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 | import("@stable-io/amount").Rational;
                        }, {
                            readonly symbol: "aEvmGasToken";
                            readonly scale: bigint | import("@stable-io/amount").Rational;
                        }];
                        readonly human: "EvmGasToken";
                        readonly atomic: "aEvmGasToken";
                    }>) => bigint;
                };
                readonly name: "relayFeeGasToken";
            }]]];
        }, {
            readonly binary: "bytes";
            readonly size: 65;
            readonly name: "quoterSignature";
        }]], [[1, "onChainUsdc"], readonly [{
            readonly binary: "uint";
            readonly size: 8;
            readonly 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 | import("@stable-io/amount").Rational;
                    }];
                    readonly human: "USDC";
                    readonly atomic: "\u00B5USDC";
                    readonly stringify: (val: import("@stable-io/amount").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 | import("@stable-io/amount").Rational;
                    }];
                    readonly human: "USDC";
                    readonly atomic: "\u00B5USDC";
                    readonly stringify: (val: import("@stable-io/amount").Rational) => string;
                }>) => bigint;
            };
            readonly name: "maxRelayFeeUsdc";
        }, {
            readonly binary: "uint";
            readonly size: 1;
            readonly custom: {
                readonly to: (encoded: number) => boolean;
                readonly from: (value: boolean) => number;
            };
            readonly name: "takeRelayFeeFromInput";
        }]], [[2, "onChainGas"], readonly []]];
    }]], readonly [readonly [3, "Gasless"], readonly [{
        readonly binary: "bytes";
        readonly layout: readonly [{
            readonly binary: "bytes";
            readonly size: 20;
            readonly custom: {
                to: (encoded: Uint8Array) => import("@stable-io/cctp-sdk-evm").EvmAddress;
                from: (addr: import("@stable-io/cctp-sdk-evm").EvmAddress) => Uint8Array<ArrayBufferLike>;
            };
            readonly name: "owner";
        }, {
            readonly binary: "uint";
            readonly size: 8;
            readonly 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 | import("@stable-io/amount").Rational;
                    }];
                    readonly human: "USDC";
                    readonly atomic: "\u00B5USDC";
                    readonly stringify: (val: import("@stable-io/amount").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 | import("@stable-io/amount").Rational;
                    }];
                    readonly human: "USDC";
                    readonly atomic: "\u00B5USDC";
                    readonly stringify: (val: import("@stable-io/amount").Rational) => string;
                }>) => bigint;
            };
            readonly name: "amount";
        }, {
            readonly binary: "bytes";
            readonly size: 32;
            readonly name: "nonce";
        }, {
            readonly binary: "uint";
            readonly size: 4;
            readonly custom: {
                readonly to: (value: number) => Date;
                readonly from: (value: Date) => number;
            };
            readonly name: "deadline";
        }, {
            readonly binary: "bytes";
            readonly size: 65;
            readonly name: "signature";
        }];
        readonly name: "permit2Data";
    }, {
        readonly binary: "uint";
        readonly size: 8;
        readonly 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 | import("@stable-io/amount").Rational;
                }];
                readonly human: "USDC";
                readonly atomic: "\u00B5USDC";
                readonly stringify: (val: import("@stable-io/amount").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 | import("@stable-io/amount").Rational;
                }];
                readonly human: "USDC";
                readonly atomic: "\u00B5USDC";
                readonly stringify: (val: import("@stable-io/amount").Rational) => string;
            }>) => bigint;
        };
        readonly name: "gaslessFeeUsdc";
    }, {
        readonly binary: "uint";
        readonly size: 8;
        readonly 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 | import("@stable-io/amount").Rational;
                }];
                readonly human: "USDC";
                readonly atomic: "\u00B5USDC";
                readonly stringify: (val: import("@stable-io/amount").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 | import("@stable-io/amount").Rational;
                }];
                readonly human: "USDC";
                readonly atomic: "\u00B5USDC";
                readonly stringify: (val: import("@stable-io/amount").Rational) => string;
            }>) => bigint;
        };
        readonly name: "inputAmountUsdc";
    }, {
        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";
        readonly name: "destinationDomain";
    }, {
        readonly binary: "bytes";
        readonly size: import("@stable-io/utils").Size;
        readonly custom: {
            to: (encoded: Uint8Array) => import("@stable-io/cctp-sdk-definitions").UniversalAddress;
            from: (addr: import("@stable-io/cctp-sdk-definitions").UniversalAddress) => Uint8Array<ArrayBufferLike>;
        };
        readonly name: "mintRecipient";
    }, {
        readonly binary: "uint";
        readonly size: 4;
        readonly 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 | import("@stable-io/amount").Rational;
                }, {
                    readonly symbol: "\u00B5GasToken";
                    readonly scale: bigint | import("@stable-io/amount").Rational;
                }, {
                    readonly symbol: "nGasToken";
                    readonly scale: bigint | import("@stable-io/amount").Rational;
                }, {
                    readonly symbol: "aGasToken";
                    readonly scale: bigint | import("@stable-io/amount").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 | import("@stable-io/amount").Rational;
                }, {
                    readonly symbol: "\u00B5GasToken";
                    readonly scale: bigint | import("@stable-io/amount").Rational;
                }, {
                    readonly symbol: "nGasToken";
                    readonly scale: bigint | import("@stable-io/amount").Rational;
                }, {
                    readonly symbol: "aGasToken";
                    readonly scale: bigint | import("@stable-io/amount").Rational;
                }];
                readonly human: "GasToken";
            }>) => number;
        };
        readonly name: "gasDropoff";
    }, {
        readonly binary: "switch";
        readonly idSize: 1;
        readonly idTag: "type";
        readonly layouts: [[[0, "v1"], readonly []], [[1, "v2Direct"], readonly [{
            readonly binary: "uint";
            readonly size: 8;
            readonly 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 | import("@stable-io/amount").Rational;
                    }];
                    readonly human: "USDC";
                    readonly atomic: "\u00B5USDC";
                    readonly stringify: (val: import("@stable-io/amount").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 | import("@stable-io/amount").Rational;
                    }];
                    readonly human: "USDC";
                    readonly atomic: "\u00B5USDC";
                    readonly stringify: (val: import("@stable-io/amount").Rational) => string;
                }>) => bigint;
            };
            readonly name: "maxFastFeeUsdc";
        }]], [[2, "avaxHop"], readonly [{
            readonly binary: "uint";
            readonly size: 8;
            readonly 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 | import("@stable-io/amount").Rational;
                    }];
                    readonly human: "USDC";
                    readonly atomic: "\u00B5USDC";
                    readonly stringify: (val: import("@stable-io/amount").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 | import("@stable-io/amount").Rational;
                    }];
                    readonly human: "USDC";
                    readonly atomic: "\u00B5USDC";
                    readonly stringify: (val: import("@stable-io/amount").Rational) => string;
                }>) => bigint;
            };
            readonly name: "maxFastFeeUsdc";
        }]]];
        readonly name: "corridorVariant";
    }, {
        readonly name: "quoteVariant";
    } & {
        readonly binary: "switch";
        readonly idSize: 1;
        readonly idTag: "type";
        readonly layouts: [[[0, "offChain"], readonly [{
            readonly binary: "uint";
            readonly size: 4;
            readonly custom: {
                readonly to: (value: number) => Date;
                readonly from: (value: Date) => number;
            };
            readonly name: "expirationTime";
        }, {
            readonly name: "feePaymentVariant";
        } & {
            readonly binary: "bytes";
            readonly layout: readonly [{
                readonly binary: "uint";
                readonly size: 1;
                readonly custom: {
                    readonly to: "usdc";
                    readonly from: 1;
                };
                readonly name: "payIn";
            }, {
                readonly binary: "uint";
                readonly size: 8;
                readonly 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 | import("@stable-io/amount").Rational;
                        }];
                        readonly human: "USDC";
                        readonly atomic: "\u00B5USDC";
                        readonly stringify: (val: import("@stable-io/amount").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 | import("@stable-io/amount").Rational;
                        }];
                        readonly human: "USDC";
                        readonly atomic: "\u00B5USDC";
                        readonly stringify: (val: import("@stable-io/amount").Rational) => string;
                    }>) => bigint;
                };
                readonly name: "relayFeeUsdc";
            }];
        }, {
            readonly binary: "bytes";
            readonly size: 65;
            readonly name: "quoterSignature";
        }]], [[1, "onChainUsdc"], readonly [{
            readonly binary: "uint";
            readonly size: 8;
            readonly 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 | import("@stable-io/amount").Rational;
                    }];
                    readonly human: "USDC";
                    readonly atomic: "\u00B5USDC";
                    readonly stringify: (val: import("@stable-io/amount").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 | import("@stable-io/amount").Rational;
                    }];
                    readonly human: "USDC";
                    readonly atomic: "\u00B5USDC";
                    readonly stringify: (val: import("@stable-io/amount").Rational) => string;
                }>) => bigint;
            };
            readonly name: "maxRelayFeeUsdc";
        }, {
            readonly binary: "uint";
            readonly size: 1;
            readonly custom: {
                readonly to: (encoded: number) => boolean;
                readonly from: (value: boolean) => number;
            };
            readonly name: "takeRelayFeeFromInput";
        }]]];
    }]]];
};
export type Transfer<N extends Network> = DeriveType<ReturnType<typeof transferLayout<N>>>;
export {};
//# sourceMappingURL=transfer.d.ts.map