import { Column, Flatten } from "../utils";
import { Network } from "./networks";
export declare const circleAPI: (<K1 extends "Mainnet" | "Testnet">(args_0: K1) => {
    readonly Mainnet: "https://iris-api.circle.com/v1/attestations";
    readonly Testnet: "https://iris-api-sandbox.circle.com/v1/attestations";
}[K1 extends bigint ? `bigint(${K1})` : K1 extends boolean ? `boolean(${K1})` : K1]) & {
    get: (args_0: string) => "https://iris-api.circle.com/v1/attestations" | "https://iris-api-sandbox.circle.com/v1/attestations" | undefined;
    has: (args_0: string) => boolean;
};
export declare const usdcContract: (<K1 extends "Mainnet" | "Testnet", K2 extends keyof {
    readonly Mainnet: {
        readonly Ethereum: "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48";
        readonly Avalanche: "0xb97ef9ef8734c71904d8002f8b6bc66dd9c48a6e";
        readonly Optimism: "0x179522635726710dd7d2035a81d856de4aa7836c";
        readonly Arbitrum: "0xaf88d065e77c8cC2239327C5EDb3A432268e5831";
        readonly Solana: "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v";
        readonly Base: "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913";
        readonly Polygon: "0x3c499c542cef5e3811e1192ce70d8cc03d5c3359";
    };
    readonly Testnet: {
        readonly Sepolia: "0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238";
        readonly Avalanche: "0x5425890298aed601595a70AB815c96711a31Bc65";
        readonly OptimismSepolia: "0x5fd84259d66Cd46123540766Be93DFE6D43130D7";
        readonly ArbitrumSepolia: "0x75faf114eafb1BDbe2F0316DF893fd58CE46AA4d";
        readonly Solana: "4zMMC9srt5Ri5X14GAgXhaHii3GnPAEERYPJgZJDncDU";
        readonly BaseSepolia: "0x036CbD53842c5426634e7929541eC2318f3dCF7e";
        readonly Polygon: "0x9999f7fea5938fd3b1e26a12c3f2fb024e194f97";
    };
}[K1 extends bigint ? `bigint(${K1})` : K1 extends boolean ? `boolean(${K1})` : K1] extends infer T ? T extends keyof {
    readonly Mainnet: {
        readonly Ethereum: "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48";
        readonly Avalanche: "0xb97ef9ef8734c71904d8002f8b6bc66dd9c48a6e";
        readonly Optimism: "0x179522635726710dd7d2035a81d856de4aa7836c";
        readonly Arbitrum: "0xaf88d065e77c8cC2239327C5EDb3A432268e5831";
        readonly Solana: "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v";
        readonly Base: "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913";
        readonly Polygon: "0x3c499c542cef5e3811e1192ce70d8cc03d5c3359";
    };
    readonly Testnet: {
        readonly Sepolia: "0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238";
        readonly Avalanche: "0x5425890298aed601595a70AB815c96711a31Bc65";
        readonly OptimismSepolia: "0x5fd84259d66Cd46123540766Be93DFE6D43130D7";
        readonly ArbitrumSepolia: "0x75faf114eafb1BDbe2F0316DF893fd58CE46AA4d";
        readonly Solana: "4zMMC9srt5Ri5X14GAgXhaHii3GnPAEERYPJgZJDncDU";
        readonly BaseSepolia: "0x036CbD53842c5426634e7929541eC2318f3dCF7e";
        readonly Polygon: "0x9999f7fea5938fd3b1e26a12c3f2fb024e194f97";
    };
}[K1 extends bigint ? `bigint(${K1})` : K1 extends boolean ? `boolean(${K1})` : K1] ? T extends `bigint(${infer V extends bigint})` ? V : T extends `boolean(${infer V_1 extends boolean})` ? V_1 : T : never : never>(args_0: K1, args_1: K2) => {
    readonly Mainnet: {
        readonly Ethereum: "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48";
        readonly Avalanche: "0xb97ef9ef8734c71904d8002f8b6bc66dd9c48a6e";
        readonly Optimism: "0x179522635726710dd7d2035a81d856de4aa7836c";
        readonly Arbitrum: "0xaf88d065e77c8cC2239327C5EDb3A432268e5831";
        readonly Solana: "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v";
        readonly Base: "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913";
        readonly Polygon: "0x3c499c542cef5e3811e1192ce70d8cc03d5c3359";
    };
    readonly Testnet: {
        readonly Sepolia: "0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238";
        readonly Avalanche: "0x5425890298aed601595a70AB815c96711a31Bc65";
        readonly OptimismSepolia: "0x5fd84259d66Cd46123540766Be93DFE6D43130D7";
        readonly ArbitrumSepolia: "0x75faf114eafb1BDbe2F0316DF893fd58CE46AA4d";
        readonly Solana: "4zMMC9srt5Ri5X14GAgXhaHii3GnPAEERYPJgZJDncDU";
        readonly BaseSepolia: "0x036CbD53842c5426634e7929541eC2318f3dCF7e";
        readonly Polygon: "0x9999f7fea5938fd3b1e26a12c3f2fb024e194f97";
    };
}[K1 extends bigint ? `bigint(${K1})` : K1 extends boolean ? `boolean(${K1})` : K1] extends infer T_1 ? T_1 extends {
    readonly Mainnet: {
        readonly Ethereum: "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48";
        readonly Avalanche: "0xb97ef9ef8734c71904d8002f8b6bc66dd9c48a6e";
        readonly Optimism: "0x179522635726710dd7d2035a81d856de4aa7836c";
        readonly Arbitrum: "0xaf88d065e77c8cC2239327C5EDb3A432268e5831";
        readonly Solana: "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v";
        readonly Base: "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913";
        readonly Polygon: "0x3c499c542cef5e3811e1192ce70d8cc03d5c3359";
    };
    readonly Testnet: {
        readonly Sepolia: "0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238";
        readonly Avalanche: "0x5425890298aed601595a70AB815c96711a31Bc65";
        readonly OptimismSepolia: "0x5fd84259d66Cd46123540766Be93DFE6D43130D7";
        readonly ArbitrumSepolia: "0x75faf114eafb1BDbe2F0316DF893fd58CE46AA4d";
        readonly Solana: "4zMMC9srt5Ri5X14GAgXhaHii3GnPAEERYPJgZJDncDU";
        readonly BaseSepolia: "0x036CbD53842c5426634e7929541eC2318f3dCF7e";
        readonly Polygon: "0x9999f7fea5938fd3b1e26a12c3f2fb024e194f97";
    };
}[K1 extends bigint ? `bigint(${K1})` : K1 extends boolean ? `boolean(${K1})` : K1] ? T_1 extends {
    [key: string]: unknown;
    [key: number]: unknown;
    [key: symbol]: unknown;
} ? T_1[K2 extends bigint ? `bigint(${K2})` : K2 extends boolean ? `boolean(${K2})` : K2] : never : never : never) & {
    get: (args_0: string, args_1: string) => "0x3c499c542cef5e3811e1192ce70d8cc03d5c3359" | "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v" | "0x9999f7fea5938fd3b1e26a12c3f2fb024e194f97" | "0x5425890298aed601595a70AB815c96711a31Bc65" | "4zMMC9srt5Ri5X14GAgXhaHii3GnPAEERYPJgZJDncDU" | "0xb97ef9ef8734c71904d8002f8b6bc66dd9c48a6e" | undefined;
    has: (args_0: string, args_1: string) => boolean;
};
export declare const circleChainId: (<K1 extends "Mainnet" | "Testnet", K2 extends keyof {
    Mainnet: {
        Ethereum: 0;
        Avalanche: 1;
        Optimism: 2;
        Arbitrum: 3;
        Solana: 5;
        Base: 6;
        Polygon: 7;
    };
    Testnet: {
        Sepolia: 0;
        Avalanche: 1;
        OptimismSepolia: 2;
        ArbitrumSepolia: 3;
        Solana: 5;
        BaseSepolia: 6;
        Polygon: 7;
    };
}[K1 extends bigint ? `bigint(${K1})` : K1 extends boolean ? `boolean(${K1})` : K1] extends infer T ? T extends keyof {
    Mainnet: {
        Ethereum: 0;
        Avalanche: 1;
        Optimism: 2;
        Arbitrum: 3;
        Solana: 5;
        Base: 6;
        Polygon: 7;
    };
    Testnet: {
        Sepolia: 0;
        Avalanche: 1;
        OptimismSepolia: 2;
        ArbitrumSepolia: 3;
        Solana: 5;
        BaseSepolia: 6;
        Polygon: 7;
    };
}[K1 extends bigint ? `bigint(${K1})` : K1 extends boolean ? `boolean(${K1})` : K1] ? T extends `bigint(${infer V extends bigint})` ? V : T extends `boolean(${infer V_1 extends boolean})` ? V_1 : T : never : never>(args_0: K1, args_1: K2) => {
    Mainnet: {
        Ethereum: 0;
        Avalanche: 1;
        Optimism: 2;
        Arbitrum: 3;
        Solana: 5;
        Base: 6;
        Polygon: 7;
    };
    Testnet: {
        Sepolia: 0;
        Avalanche: 1;
        OptimismSepolia: 2;
        ArbitrumSepolia: 3;
        Solana: 5;
        BaseSepolia: 6;
        Polygon: 7;
    };
}[K1 extends bigint ? `bigint(${K1})` : K1 extends boolean ? `boolean(${K1})` : K1] extends infer T_1 ? T_1 extends {
    Mainnet: {
        Ethereum: 0;
        Avalanche: 1;
        Optimism: 2;
        Arbitrum: 3;
        Solana: 5;
        Base: 6;
        Polygon: 7;
    };
    Testnet: {
        Sepolia: 0;
        Avalanche: 1;
        OptimismSepolia: 2;
        ArbitrumSepolia: 3;
        Solana: 5;
        BaseSepolia: 6;
        Polygon: 7;
    };
}[K1 extends bigint ? `bigint(${K1})` : K1 extends boolean ? `boolean(${K1})` : K1] ? T_1 extends {
    [key: string]: unknown;
    [key: number]: unknown;
    [key: symbol]: unknown;
} ? T_1[K2 extends bigint ? `bigint(${K2})` : K2 extends boolean ? `boolean(${K2})` : K2] : never : never : never) & {
    get: (args_0: string, args_1: string) => 1 | 5 | 7 | undefined;
    has: (args_0: string, args_1: string) => boolean;
};
export declare const circleChainIdToChain: (<K1 extends "Mainnet" | "Testnet", K2 extends keyof {
    Mainnet: {
        0: "Ethereum";
        1: "Avalanche";
        2: "Optimism";
        3: "Arbitrum";
        5: "Solana";
        6: "Base";
        7: "Polygon";
    };
    Testnet: {
        0: "Sepolia";
        1: "Avalanche";
        2: "OptimismSepolia";
        3: "ArbitrumSepolia";
        5: "Solana";
        6: "BaseSepolia";
        7: "Polygon";
    };
}[K1 extends bigint ? `bigint(${K1})` : K1 extends boolean ? `boolean(${K1})` : K1] extends infer T ? T extends keyof {
    Mainnet: {
        0: "Ethereum";
        1: "Avalanche";
        2: "Optimism";
        3: "Arbitrum";
        5: "Solana";
        6: "Base";
        7: "Polygon";
    };
    Testnet: {
        0: "Sepolia";
        1: "Avalanche";
        2: "OptimismSepolia";
        3: "ArbitrumSepolia";
        5: "Solana";
        6: "BaseSepolia";
        7: "Polygon";
    };
}[K1 extends bigint ? `bigint(${K1})` : K1 extends boolean ? `boolean(${K1})` : K1] ? T extends `bigint(${infer V extends bigint})` ? V : T extends `boolean(${infer V_1 extends boolean})` ? V_1 : T : never : never>(args_0: K1, args_1: K2) => {
    Mainnet: {
        0: "Ethereum";
        1: "Avalanche";
        2: "Optimism";
        3: "Arbitrum";
        5: "Solana";
        6: "Base";
        7: "Polygon";
    };
    Testnet: {
        0: "Sepolia";
        1: "Avalanche";
        2: "OptimismSepolia";
        3: "ArbitrumSepolia";
        5: "Solana";
        6: "BaseSepolia";
        7: "Polygon";
    };
}[K1 extends bigint ? `bigint(${K1})` : K1 extends boolean ? `boolean(${K1})` : K1] extends infer T_1 ? T_1 extends {
    Mainnet: {
        0: "Ethereum";
        1: "Avalanche";
        2: "Optimism";
        3: "Arbitrum";
        5: "Solana";
        6: "Base";
        7: "Polygon";
    };
    Testnet: {
        0: "Sepolia";
        1: "Avalanche";
        2: "OptimismSepolia";
        3: "ArbitrumSepolia";
        5: "Solana";
        6: "BaseSepolia";
        7: "Polygon";
    };
}[K1 extends bigint ? `bigint(${K1})` : K1 extends boolean ? `boolean(${K1})` : K1] ? T_1 extends {
    [key: string]: unknown;
    [key: number]: unknown;
    [key: symbol]: unknown;
} ? T_1[K2 extends bigint ? `bigint(${K2})` : K2 extends boolean ? `boolean(${K2})` : K2] : never : never : never) & {
    get: (args_0: string, args_1: number) => "Solana" | "Ethereum" | "Polygon" | "Avalanche" | "Arbitrum" | "Optimism" | "Base" | "Sepolia" | "ArbitrumSepolia" | "BaseSepolia" | "OptimismSepolia" | undefined;
    has: (args_0: string, args_1: number) => boolean;
};
export declare const circleNetworks: ["Mainnet", "Testnet"], circleChainMap: [readonly [readonly ["Ethereum", 0], readonly ["Avalanche", 1], readonly ["Optimism", 2], readonly ["Arbitrum", 3], readonly ["Solana", 5], readonly ["Base", 6], readonly ["Polygon", 7]], readonly [readonly ["Sepolia", 0], readonly ["Avalanche", 1], readonly ["OptimismSepolia", 2], readonly ["ArbitrumSepolia", 3], readonly ["Solana", 5], readonly ["BaseSepolia", 6], readonly ["Polygon", 7]]];
export type CircleNetwork = (typeof circleNetworks)[number];
export type CircleChain = Column<Flatten<typeof circleChainMap>, 0>[number];
export type CircleChainId = Column<Flatten<typeof circleChainMap>, 1>[number];
export declare const isCircleChain: (network: Network, chain: string) => chain is "Solana" | "Ethereum" | "Polygon" | "Avalanche" | "Arbitrum" | "Optimism" | "Base" | "Sepolia" | "ArbitrumSepolia" | "BaseSepolia" | "OptimismSepolia";
export declare const isCircleChainId: (network: Network, chainId: number) => chainId is 0 | 3 | 1 | 2 | 5 | 6 | 7;
export declare const isCircleSupported: (network: Network, chain: string) => network is "Mainnet" | "Testnet";
export declare function assertCircleChainId(network: Network, chainId: number): asserts chainId is CircleChainId;
export declare function assertCircleChain(network: Network, chain: string): asserts chain is CircleChain;
export declare const asCircleChainId: (network: Network, chainId: number) => CircleChainId;
export declare const toCircleChainId: (network: Network, chain: number | bigint | string) => CircleChainId;
export declare const toCircleChain: (network: Network, chain: number | string | bigint) => CircleChain;
//# sourceMappingURL=circle.d.ts.map