import { TokenId, ChainId } from '../../xlinkSdkUtils/types.mjs';
import '../BigNumber.mjs';
import 'big.js';
import '../typeHelpers.mjs';

/**
 * The `KnownTokenId` namespace provides types of tokens supported by the SDK,
 * including Bitcoin, EVM-compatible tokens, and Stacks tokens.
 */
declare namespace KnownTokenId {
    /** Represents a known token supported by the SDK. */
    type KnownToken = BitcoinToken | BRC20Token | RunesToken | EVMToken | StacksToken;
    function isKnownToken(value: TokenId): value is KnownToken;
    /** A namespace that contains constants and types for Bitcoin tokens. */
    namespace Bitcoin {
        /** Represents the Bitcoin token ID (BTC). */
        const BTC: "btc-btc (XLinkSDK TokenId)";
    }
    /** This type includes all known Bitcoin tokens. */
    type BitcoinToken = (typeof _allKnownBitcoinTokens)[number];
    function isBitcoinToken(value: TokenId): value is BitcoinToken;
    type BRC20Token = TokenId<"a brc20 token">;
    function isBRC20Token(value: TokenId): value is BRC20Token;
    type RunesToken = TokenId<"a runes token">;
    function isRunesToken(value: TokenId): value is RunesToken;
    /** A namespace that contains constants and types for EVM-compatible tokens. */
    namespace EVM {
        /** Represents the sUSDT token ID on EVM-compatible blockchains. */
        const sUSDT: "evm-susdt (XLinkSDK TokenId)";
        /** Represents the USDT token ID on EVM-compatible blockchains. */
        const USDT: "evm-usdt (XLinkSDK TokenId)";
        /** Represents the USDC token ID on EVM-compatible blockchains. */
        const USDC: "evm-usdc (XLinkSDK TokenId)";
        /** Represents the aBTC token ID on EVM-compatible blockchains. */
        const aBTC: "evm-abtc (XLinkSDK TokenId)";
        /** Represents the WBTC token ID on EVM-compatible blockchains. */
        const WBTC: "evm-wbtc (XLinkSDK TokenId)";
        /** Represents the BTCB token ID on EVM-compatible blockchains. */
        const BTCB: "evm-btcb (XLinkSDK TokenId)";
        /** Represents the cbBTC token ID on EVM-compatible blockchains. */
        const cbBTC: "evm-cbbtc (XLinkSDK TokenId)";
        /** Represents the LUNR token ID on EVM-compatible blockchains. */
        const LUNR: "evm-lunr (XLinkSDK TokenId)";
        /** Represents the ALEX token ID on EVM-compatible blockchains. */
        const ALEX: "evm-alex (XLinkSDK TokenId)";
        /** Represents the SKO token ID on EVM-compatible blockchains. */
        const SKO: "evm-sko (XLinkSDK TokenId)";
        /** Represents the vLiSTX token ID on EVM-compatible blockchains. */
        const vLiSTX: "evm-vlistx (XLinkSDK TokenId)";
        /** Represents the vLiALEX token ID on EVM-compatible blockchains. */
        const vLiALEX: "evm-vlialex (XLinkSDK TokenId)";
        const uBTC: "evm-ubtc (XLinkSDK TokenId)";
        const wuBTC: "evm-wubtc (XLinkSDK TokenId)";
        const DB20: "evm-db20 (XLinkSDK TokenId)";
        const DOG: "evm-dog (XLinkSDK TokenId)";
    }
    /** This type includes all known tokens on EVM-compatible blockchains. */
    type EVMToken = (typeof _allKnownEVMTokens)[number];
    function isEVMToken(value: TokenId): value is EVMToken;
    /** A namespace that contains constants and types for Stacks tokens. */
    namespace Stacks {
        /** Represents the sUSDT token ID on the Stacks blockchain. */
        const sUSDT: "stx-susdt (XLinkSDK TokenId)";
        /** Represents the sLUNR token ID on the Stacks blockchain. */
        const sLUNR: "stx-slunr (XLinkSDK TokenId)";
        /** Represents the aBTC token ID on the Stacks blockchain. */
        const aBTC: "stx-abtc (XLinkSDK TokenId)";
        /** Represents the ALEX token ID on the Stacks blockchain. */
        const ALEX: "stx-alex (XLinkSDK TokenId)";
        /** Represents the sSKO token ID on the Stacks blockchain. */
        const sSKO: "stx-ssko (XLinkSDK TokenId)";
        /** Represents the vLiSTX token ID on the Stacks blockchain. */
        const vLiSTX: "stx-vlistx (XLinkSDK TokenId)";
        /** Represents the vLiALEX token ID on the Stacks blockchain. */
        const vLiALEX: "stx-vlialex (XLinkSDK TokenId)";
        const uBTC: "stx-ubtc (XLinkSDK TokenId)";
        const DB20: "stx-db20 (XLinkSDK TokenId)";
        const DOG: "stx-dog (XLinkSDK TokenId)";
    }
    /** This type includes all known tokens on the Stacks blockchain. */
    type StacksToken = (typeof _allKnownStacksTokens)[number];
    function isStacksToken(value: TokenId): value is StacksToken;
}
declare const createBRC20Token: (brc20tick: string) => KnownTokenId.BRC20Token;
declare const createRunesToken: (runeId: `${number}:${number}`) => KnownTokenId.RunesToken;
declare const _allKnownBitcoinTokens: "btc-btc (XLinkSDK TokenId)"[];
declare const _allKnownEVMTokens: ("evm-susdt (XLinkSDK TokenId)" | "evm-usdt (XLinkSDK TokenId)" | "evm-usdc (XLinkSDK TokenId)" | "evm-abtc (XLinkSDK TokenId)" | "evm-wbtc (XLinkSDK TokenId)" | "evm-btcb (XLinkSDK TokenId)" | "evm-cbbtc (XLinkSDK TokenId)" | "evm-lunr (XLinkSDK TokenId)" | "evm-alex (XLinkSDK TokenId)" | "evm-sko (XLinkSDK TokenId)" | "evm-vlistx (XLinkSDK TokenId)" | "evm-vlialex (XLinkSDK TokenId)" | "evm-ubtc (XLinkSDK TokenId)" | "evm-wubtc (XLinkSDK TokenId)" | "evm-db20 (XLinkSDK TokenId)" | "evm-dog (XLinkSDK TokenId)")[];
declare const _allKnownStacksTokens: ("stx-susdt (XLinkSDK TokenId)" | "stx-slunr (XLinkSDK TokenId)" | "stx-abtc (XLinkSDK TokenId)" | "stx-alex (XLinkSDK TokenId)" | "stx-ssko (XLinkSDK TokenId)" | "stx-vlistx (XLinkSDK TokenId)" | "stx-vlialex (XLinkSDK TokenId)" | "stx-ubtc (XLinkSDK TokenId)" | "stx-db20 (XLinkSDK TokenId)" | "stx-dog (XLinkSDK TokenId)")[];
/**
 * The `KnownChainId` namespace provides types of blockchain networks
 * supported by the SDK, including Bitcoin, EVM-compatible chains, and Stacks.
 */
declare namespace KnownChainId {
    /** Represents a known blockchain network supported by the SDK. */
    type KnownChain = BitcoinChain | BRC20Chain | RunesChain | EVMChain | StacksChain;
    function isKnownChain(value: ChainId): value is KnownChain;
    /** A namespace that contains constants and types for Bitcoin networks. */
    namespace Bitcoin {
        /** Represents the Bitcoin mainnet chain ID. */
        const Mainnet: "bitcoin-mainnet (XLinkSDK ChainId)";
        /** Represents the Bitcoin testnet chain ID. */
        const Testnet: "bitcoin-testnet (XLinkSDK ChainId)";
    }
    /** Represents a Bitcoin blockchain network. */
    type BitcoinChain = (typeof _allKnownBitcoinChains)[number];
    function isBitcoinChain(value: ChainId): value is BitcoinChain;
    namespace Runes {
        /** Represents the Runes mainnet chain ID. */
        const Mainnet: "runes-mainnet (XLinkSDK ChainId)";
        /** Represents the Runes testnet chain ID. */
        const Testnet: "runes-testnet (XLinkSDK ChainId)";
    }
    /** Represents a Runes blockchain network. */
    type RunesChain = (typeof _allKnownRunesChains)[number];
    function isRunesChain(value: ChainId): value is RunesChain;
    namespace BRC20 {
        /** Represents the BRC20 mainnet chain ID. */
        const Mainnet: "brc20-mainnet (XLinkSDK ChainId)";
        /** Represents the BRC20 testnet chain ID. */
        const Testnet: "brc20-testnet (XLinkSDK ChainId)";
    }
    /** Represents a BRC20 blockchain network. */
    type BRC20Chain = (typeof _allKnownBRC20Chains)[number];
    function isBRC20Chain(value: ChainId): value is BRC20Chain;
    /** A namespace that contains constants and types for EVM-compatible networks. */
    namespace EVM {
        /** Represents the Ethereum mainnet chain ID. */
        const Ethereum: "evm-ethereum (XLinkSDK ChainId)";
        /** Represents the Ethereum testnet chain ID. */
        const Sepolia: "evm-sepolia (XLinkSDK ChainId)";
        /** Represents the BNB Smart Chain mainnet chain ID. */
        const BSC: "evm-bsc (XLinkSDK ChainId)";
        /** Represents the BNB Smart Chain testnet chain ID. */
        const BSCTestnet: "evm-bsctestnet (XLinkSDK ChainId)";
        /** Represents the CoreDAO mainnet chain ID. */
        const CoreDAO: "evm-coredao (XLinkSDK ChainId)";
        /** Represents the CoreDAO testnet chain ID. */
        const CoreDAOTestnet: "evm-coredao-testnet (XLinkSDK ChainId)";
        /** Represents the Bsquared mainnet chain ID. */
        const Bsquared: "evm-bsquared (XLinkSDK ChainId)";
        /** Represents the Bsquared testnet chain ID. */
        /** Represents the BOB mainnet chain ID. */
        const BOB: "evm-bob (XLinkSDK ChainId)";
        /** Represents the BOB testnet chain ID. */
        /** Represents the Bitlayer mainnet chain ID. */
        const Bitlayer: "evm-bitlayer (XLinkSDK ChainId)";
        /** Represents the Bitlayer testnet chain ID. */
        /** Represents the Lorenzo mainnet chain ID. */
        const Lorenzo: "evm-lorenzo (XLinkSDK ChainId)";
        /** Represents the Lorenzo testnet chain ID. */
        /** Represents the Merlin mainnet chain ID. */
        const Merlin: "evm-merlin (XLinkSDK ChainId)";
        /** Represents the Merlin testnet chain ID. */
        /** Represents the AILayer mainnet chain ID. */
        const AILayer: "evm-ailayer (XLinkSDK ChainId)";
        /** Represents the AILayer testnet chain ID. */
        /** Represents the Mode mainnet chain ID. */
        const Mode: "evm-mode (XLinkSDK ChainId)";
        /** Represents the Mode testnet chain ID. */
        /** Represents the XLayer mainnet chain ID. */
        const XLayer: "evm-xlayer (XLinkSDK ChainId)";
        /** Represents the XLayer testnet chain ID. */
        /** Represents the Arbitrum mainnet chain ID. */
        const Arbitrum: "evm-arbitrum (XLinkSDK ChainId)";
        /** Represents the Aurora mainnet chain ID. */
        const Aurora: "evm-aurora (XLinkSDK ChainId)";
        /** Represents the Blife mainnet chain ID. */
        const BlifeTestnet: "evm-blife-testnet (XLinkSDK ChainId)";
        /** Represents the Bitboy mainnet chain ID. */
        const BitboyTestnet: "evm-bitboy-testnet (XLinkSDK ChainId)";
        /** Represents the Manta mainnet chain ID. */
        const Manta: "evm-manta (XLinkSDK ChainId)";
        /** Represents the Manta testnet chain ID. */
        /** Represents the Linea mainnet chain ID. */
        const Linea: "evm-linea (XLinkSDK ChainId)";
        /** Represents the Linea testnet chain ID. */
        /** Represents the Base mainnet chain ID. */
        const Base: "evm-base (XLinkSDK ChainId)";
        /** Represents the Base testnet chain ID. */
        /** Represents the Bera mainnet chain ID. */
        /** Represents the Bera testnet chain ID. */
        const BeraTestnet: "evm-bera-testnet (XLinkSDK ChainId)";
    }
    /** Represents a mainnet EVM-compatible blockchain network. */
    type EVMMainnetChain = (typeof _allKnownEVMMainnetChains)[number];
    function isEVMMainnetChain(value: ChainId): value is EVMMainnetChain;
    /** Represents a testnet EVM-compatible blockchain network. */
    type EVMTestnetChain = (typeof _allKnownEVMTestnetChains)[number];
    function isEVMTestnetChain(value: ChainId): value is EVMTestnetChain;
    /** Represents an EVM-compatible blockchain network. */
    type EVMChain = (typeof _allKnownEVMChains)[number];
    function isEVMChain(value: ChainId): value is EVMChain;
    /** A namespace that contains constants and types for Stacks blockchain networks. */
    namespace Stacks {
        /** Represents the Stacks mainnet chain ID. */
        const Mainnet: "stacks-mainnet (XLinkSDK ChainId)";
        /** Represents the Stacks testnet chain ID. */
        const Testnet: "stacks-testnet (XLinkSDK ChainId)";
    }
    /** Represents a Stacks blockchain network. */
    type StacksChain = (typeof _allKnownStacksChains)[number];
    function isStacksChain(value: ChainId): value is StacksChain;
}
declare const _allKnownBitcoinChains: ("bitcoin-mainnet (XLinkSDK ChainId)" | "bitcoin-testnet (XLinkSDK ChainId)")[];
declare const _allKnownRunesChains: ("runes-mainnet (XLinkSDK ChainId)" | "runes-testnet (XLinkSDK ChainId)")[];
declare const _allKnownBRC20Chains: ("brc20-mainnet (XLinkSDK ChainId)" | "brc20-testnet (XLinkSDK ChainId)")[];
declare const _allKnownEVMChains: ("evm-ethereum (XLinkSDK ChainId)" | "evm-sepolia (XLinkSDK ChainId)" | "evm-bsc (XLinkSDK ChainId)" | "evm-bsctestnet (XLinkSDK ChainId)" | "evm-coredao (XLinkSDK ChainId)" | "evm-coredao-testnet (XLinkSDK ChainId)" | "evm-bsquared (XLinkSDK ChainId)" | "evm-bob (XLinkSDK ChainId)" | "evm-bitlayer (XLinkSDK ChainId)" | "evm-lorenzo (XLinkSDK ChainId)" | "evm-merlin (XLinkSDK ChainId)" | "evm-ailayer (XLinkSDK ChainId)" | "evm-mode (XLinkSDK ChainId)" | "evm-xlayer (XLinkSDK ChainId)" | "evm-arbitrum (XLinkSDK ChainId)" | "evm-aurora (XLinkSDK ChainId)" | "evm-blife-testnet (XLinkSDK ChainId)" | "evm-bitboy-testnet (XLinkSDK ChainId)" | "evm-manta (XLinkSDK ChainId)" | "evm-linea (XLinkSDK ChainId)" | "evm-base (XLinkSDK ChainId)" | "evm-bera-testnet (XLinkSDK ChainId)")[];
declare const _allKnownStacksChains: ("stacks-mainnet (XLinkSDK ChainId)" | "stacks-testnet (XLinkSDK ChainId)")[];
declare const _allKnownEVMMainnetChains: readonly ["evm-ethereum (XLinkSDK ChainId)", "evm-bsc (XLinkSDK ChainId)", "evm-coredao (XLinkSDK ChainId)", "evm-bsquared (XLinkSDK ChainId)", "evm-bob (XLinkSDK ChainId)", "evm-bitlayer (XLinkSDK ChainId)", "evm-lorenzo (XLinkSDK ChainId)", "evm-merlin (XLinkSDK ChainId)", "evm-ailayer (XLinkSDK ChainId)", "evm-mode (XLinkSDK ChainId)", "evm-xlayer (XLinkSDK ChainId)", "evm-arbitrum (XLinkSDK ChainId)", "evm-aurora (XLinkSDK ChainId)", "evm-manta (XLinkSDK ChainId)", "evm-linea (XLinkSDK ChainId)", "evm-base (XLinkSDK ChainId)"];
declare const _allKnownEVMTestnetChains: readonly ["evm-sepolia (XLinkSDK ChainId)", "evm-bsctestnet (XLinkSDK ChainId)", "evm-coredao-testnet (XLinkSDK ChainId)", "evm-blife-testnet (XLinkSDK ChainId)", "evm-bitboy-testnet (XLinkSDK ChainId)", "evm-bera-testnet (XLinkSDK ChainId)"];
declare const _allNoLongerSupportedEVMChains: ChainId[];
declare const _knownChainIdToErrorMessagePart: (chainId: ChainId) => string;

export { KnownChainId, KnownTokenId, _allKnownBRC20Chains, _allKnownBitcoinChains, _allKnownBitcoinTokens, _allKnownEVMChains, _allKnownEVMMainnetChains, _allKnownEVMTestnetChains, _allKnownEVMTokens, _allKnownRunesChains, _allKnownStacksChains, _allKnownStacksTokens, _allNoLongerSupportedEVMChains, _knownChainIdToErrorMessagePart, createBRC20Token, createRunesToken };
