import { CoinFamily, BaseCoin } from './base';
import { coins } from './coins';
export interface BaseTokenConfig {
    coin: string;
    decimalPlaces: number;
    name: string;
    type: string;
}
export interface BaseNetworkConfig extends BaseTokenConfig {
    network: string;
}
export interface BaseContractAddressConfig extends BaseNetworkConfig {
    tokenContractAddress: string;
}
export type AvaxcTokenConfig = BaseContractAddressConfig;
export type CeloTokenConfig = BaseContractAddressConfig;
export type EthLikeTokenConfig = BaseContractAddressConfig;
export type EosTokenConfig = BaseContractAddressConfig & {
    contractName: string;
    contractAddress: string;
};
export type Erc20TokenConfig = BaseContractAddressConfig;
export type TrxTokenConfig = BaseContractAddressConfig;
export type StellarTokenConfig = BaseNetworkConfig;
export type SolTokenConfig = BaseNetworkConfig & {
    tokenAddress: string;
    contractAddress: string;
};
export type AdaTokenConfig = BaseNetworkConfig & {
    policyId: string;
    assetName: string;
    contractAddress: string;
};
export type AlgoTokenConfig = BaseNetworkConfig & {
    alias?: string;
};
export type OfcTokenConfig = BaseTokenConfig & {
    backingCoin: string;
    isFiat: boolean;
};
export type HbarTokenConfig = BaseNetworkConfig & {
    nodeAccountId: string;
    tokenId: string;
    contractAddress: string;
};
export type XrpTokenConfig = BaseNetworkConfig & {
    issuerAddress: string;
    currencyCode: string;
    domain?: string;
    contractAddress: string;
};
export type SuiTokenConfig = BaseNetworkConfig & {
    packageId: string;
    module: string;
    symbol: string;
    contractAddress: string;
};
export type AptTokenConfig = BaseNetworkConfig & {
    assetId: string;
};
export type AptNFTCollectionConfig = BaseNetworkConfig & {
    nftCollectionId: string;
};
export type Sip10TokenConfig = BaseNetworkConfig & {
    assetId: string;
};
export type TaoTokenConfig = BaseNetworkConfig & {
    subnetId: string;
};
export type PolyxTokenConfig = BaseNetworkConfig & {
    ticker: string;
    assetId: string;
};
export type Nep141TokenConfig = BaseNetworkConfig & {
    contractAddress: string;
    storageDepositAmount: string;
};
export type CantonTokenConfig = BaseNetworkConfig & {
    baseUrl: string;
    contractAddress: string;
};
export type VetTokenConfig = BaseNetworkConfig & {
    contractAddress: string;
};
export type VetNFTCollectionConfig = BaseNetworkConfig & {
    nftCollectionId: string;
};
export type CosmosTokenConfig = BaseNetworkConfig & {
    denom: string;
};
export type JettonTokenConfig = BaseNetworkConfig & {
    contractAddress: string;
};
export type EthLikeERC721TokenConfig = BaseContractAddressConfig & {
    network: string;
};
export type Tip20TokenConfig = BaseContractAddressConfig;
export type TokenConfig = Erc20TokenConfig | StellarTokenConfig | OfcTokenConfig | CeloTokenConfig | EthLikeTokenConfig | EosTokenConfig | AvaxcTokenConfig | SolTokenConfig | HbarTokenConfig | AdaTokenConfig | AlgoTokenConfig | TrxTokenConfig | XrpTokenConfig | SuiTokenConfig | AptTokenConfig | AptNFTCollectionConfig | Sip10TokenConfig | Nep141TokenConfig | CantonTokenConfig | CosmosTokenConfig | VetTokenConfig | VetNFTCollectionConfig | TaoTokenConfig | PolyxTokenConfig | JettonTokenConfig | EthLikeERC721TokenConfig | Tip20TokenConfig;
export interface TokenNetwork {
    eth: {
        tokens: Erc20TokenConfig[];
        nfts: EthLikeTokenConfig[];
    };
    xlm: {
        tokens: StellarTokenConfig[];
    };
    algo: {
        tokens: AlgoTokenConfig[];
    };
    ofc: {
        tokens: OfcTokenConfig[];
    };
    celo: {
        tokens: CeloTokenConfig[];
    };
    eos: {
        tokens: EosTokenConfig[];
    };
    avaxc: {
        tokens: AvaxcTokenConfig[];
    };
    polygon: {
        tokens: EthLikeTokenConfig[];
    };
    soneium: {
        tokens: EthLikeTokenConfig[];
    };
    bsc: {
        tokens: EthLikeTokenConfig[];
    };
    arbeth: {
        tokens: EthLikeTokenConfig[];
    };
    opeth: {
        tokens: EthLikeTokenConfig[];
    };
    baseeth: {
        tokens: EthLikeTokenConfig[];
    };
    og: {
        tokens: EthLikeTokenConfig[];
    };
    flow: {
        tokens: EthLikeTokenConfig[];
    };
    lineaeth: {
        tokens: EthLikeTokenConfig[];
    };
    seievm: {
        tokens: EthLikeTokenConfig[];
    };
    coredao: {
        tokens: EthLikeTokenConfig[];
    };
    world: {
        tokens: EthLikeTokenConfig[];
    };
    flr: {
        tokens: EthLikeTokenConfig[];
    };
    sol: {
        tokens: SolTokenConfig[];
    };
    hbar: {
        tokens: HbarTokenConfig[];
    };
    ada: {
        tokens: AdaTokenConfig[];
    };
    trx: {
        tokens: TrxTokenConfig[];
    };
    xrp: {
        tokens: XrpTokenConfig[];
    };
    zketh: {
        tokens: EthLikeTokenConfig[];
    };
    sui: {
        tokens: SuiTokenConfig[];
    };
    tao: {
        tokens: TaoTokenConfig[];
    };
    polyx: {
        tokens: PolyxTokenConfig[];
    };
    bera: {
        tokens: EthLikeTokenConfig[];
    };
    mon: {
        tokens: EthLikeTokenConfig[];
    };
    xdc: {
        tokens: EthLikeTokenConfig[];
    };
    hypeevm: {
        tokens: EthLikeTokenConfig[];
    };
    ip: {
        tokens: EthLikeTokenConfig[];
    };
    apt: {
        tokens: AptTokenConfig[];
        nftCollections: AptNFTCollectionConfig[];
    };
    stx: {
        tokens: Sip10TokenConfig[];
    };
    near: {
        tokens: Nep141TokenConfig[];
    };
    vet: {
        tokens: VetTokenConfig[];
        nftCollections: VetNFTCollectionConfig[];
    };
    cosmos: {
        tokens: CosmosTokenConfig[];
    };
    ton: {
        tokens: JettonTokenConfig[];
    };
    tempo: {
        tokens: Tip20TokenConfig[];
    };
    canton: {
        tokens: CantonTokenConfig[];
    };
}
export interface Tokens {
    bitcoin: TokenNetwork;
    testnet: TokenNetwork;
}
export interface AmsTokenConfig {
    id: string;
    name: string;
    fullName: string;
    family: string;
    decimalPlaces: number;
    asset: string;
    features?: string[];
    prefix?: string;
    suffix?: string;
    network?: unknown;
    primaryKeyCurve?: string;
    contractAddress?: string;
    tokenAddress?: string;
    nftCollectionId?: string;
    alias?: string;
    contractName?: string;
    tokenId?: string;
    packageId?: string;
    module?: string;
    symbol?: string;
    issuerAddress?: string;
    currecnycode?: string;
    domain?: string;
    assetId?: string;
    denom?: string;
    isToken: boolean;
    baseUnit?: string;
    kind?: string;
    subnetId?: string;
    ticker?: string;
    programId?: string;
    addressCoin?: string;
    assetName?: string;
    policyId?: string;
}
export interface TrimmedAmsNetworkConfig {
    name: string;
}
export interface TrimmedAmsTokenConfig extends Omit<AmsTokenConfig, 'features' | 'network'> {
    network: TrimmedAmsNetworkConfig;
    excludedFeatures?: string[];
    additionalFeatures?: string[];
}
export declare const getFormattedErc20Tokens: (customCoinMap?: import("./map").CoinMap) => BaseContractAddressConfig[];
export declare const ethGasConfigs: {
    minimumGasPrice: number;
    defaultGasPrice: number;
    maximumGasPrice: number;
    defaultGasLimit: number;
    defaultGasLimitTokenSend: number;
    minimumGasLimit: number;
    maximumGasLimit: number;
    newEthLikeCoinsMinGasLimit: number;
    l1GasFeeBuffer: number;
};
export declare const getFormattedAlgoTokens: (customCoinMap?: import("./map").CoinMap) => AlgoTokenConfig[];
type EthLikeTokenMap = {
    [K in CoinFamily]: {
        tokens: EthLikeTokenConfig[];
    };
};
export declare enum TokenTypeEnum {
    ERC20 = "erc20",
    ERC721 = "erc721"
}
export declare const getFormattedEthLikeTokenConfig: (customCoinMap: import("./map").CoinMap | undefined, tokenType: TokenTypeEnum) => EthLikeTokenConfig[];
export declare const getEthLikeTokens: (network: "Mainnet" | "Testnet", tokenType: TokenTypeEnum) => EthLikeTokenMap;
export declare const getFormattedTokensByNetwork: (network: "Mainnet" | "Testnet", coinMap: typeof coins) => {
    eth: {
        tokens: BaseContractAddressConfig[];
        nfts: BaseContractAddressConfig[];
    };
    xlm: {
        tokens: BaseNetworkConfig[];
    };
    algo: {
        tokens: AlgoTokenConfig[];
    };
    ofc: {
        tokens: OfcTokenConfig[];
    };
    celo: {
        tokens: BaseContractAddressConfig[];
    };
    bsc: {
        tokens: BaseContractAddressConfig[];
    };
    eos: {
        tokens: EosTokenConfig[];
    };
    avaxc: {
        tokens: BaseContractAddressConfig[];
    };
    polygon: {
        tokens: BaseContractAddressConfig[];
    };
    soneium: {
        tokens: BaseContractAddressConfig[];
    };
    arbeth: {
        tokens: BaseContractAddressConfig[];
    };
    opeth: {
        tokens: BaseContractAddressConfig[];
    };
    baseeth: {
        tokens: BaseContractAddressConfig[];
    };
    og: {
        tokens: BaseContractAddressConfig[];
    };
    flow: {
        tokens: BaseContractAddressConfig[];
    };
    mon: {
        tokens: BaseContractAddressConfig[];
    };
    xdc: {
        tokens: BaseContractAddressConfig[];
    };
    lineaeth: {
        tokens: BaseContractAddressConfig[];
    };
    seievm: {
        tokens: BaseContractAddressConfig[];
    };
    zketh: {
        tokens: BaseContractAddressConfig[];
    };
    sol: {
        tokens: SolTokenConfig[];
    };
    hbar: {
        tokens: HbarTokenConfig[];
    };
    ada: {
        tokens: AdaTokenConfig[];
    };
    trx: {
        tokens: BaseContractAddressConfig[];
    };
    xrp: {
        tokens: XrpTokenConfig[];
    };
    sui: {
        tokens: SuiTokenConfig[];
    };
    tao: {
        tokens: TaoTokenConfig[];
    };
    polyx: {
        tokens: PolyxTokenConfig[];
    };
    bera: {
        tokens: BaseContractAddressConfig[];
    };
    coredao: {
        tokens: BaseContractAddressConfig[];
    };
    world: {
        tokens: BaseContractAddressConfig[];
    };
    flr: {
        tokens: BaseContractAddressConfig[];
    };
    stx: {
        tokens: Sip10TokenConfig[];
    };
    near: {
        tokens: Nep141TokenConfig[];
    };
    cosmos: {
        tokens: CosmosTokenConfig[];
    };
    ton: {
        tokens: JettonTokenConfig[];
    };
    tempo: {
        tokens: BaseContractAddressConfig[];
    };
    canton: {
        tokens: CantonTokenConfig[];
    };
    apechain: {
        tokens: EthLikeTokenConfig[];
    };
    apt: {
        tokens: EthLikeTokenConfig[];
    };
    asi: {
        tokens: EthLikeTokenConfig[];
    };
    atom: {
        tokens: EthLikeTokenConfig[];
    };
    avaxp: {
        tokens: EthLikeTokenConfig[];
    };
    baby: {
        tokens: EthLikeTokenConfig[];
    };
    bch: {
        tokens: EthLikeTokenConfig[];
    };
    bcha: {
        tokens: EthLikeTokenConfig[];
    };
    bld: {
        tokens: EthLikeTokenConfig[];
    };
    bsv: {
        tokens: EthLikeTokenConfig[];
    };
    btc: {
        tokens: EthLikeTokenConfig[];
    };
    btg: {
        tokens: EthLikeTokenConfig[];
    };
    chiliz: {
        tokens: EthLikeTokenConfig[];
    };
    codexeth: {
        tokens: EthLikeTokenConfig[];
    };
    coreum: {
        tokens: EthLikeTokenConfig[];
    };
    cronos: {
        tokens: EthLikeTokenConfig[];
    };
    cspr: {
        tokens: EthLikeTokenConfig[];
    };
    dash: {
        tokens: EthLikeTokenConfig[];
    };
    doge: {
        tokens: EthLikeTokenConfig[];
    };
    dogeos: {
        tokens: EthLikeTokenConfig[];
    };
    dot: {
        tokens: EthLikeTokenConfig[];
    };
    dydx: {
        tokens: EthLikeTokenConfig[];
    };
    etc: {
        tokens: EthLikeTokenConfig[];
    };
    eth2: {
        tokens: EthLikeTokenConfig[];
    };
    ethw: {
        tokens: EthLikeTokenConfig[];
    };
    fetchai: {
        tokens: EthLikeTokenConfig[];
    };
    fiat: {
        tokens: EthLikeTokenConfig[];
    };
    fantom: {
        tokens: EthLikeTokenConfig[];
    };
    flrp: {
        tokens: EthLikeTokenConfig[];
    };
    h: {
        tokens: EthLikeTokenConfig[];
    };
    hash: {
        tokens: EthLikeTokenConfig[];
    };
    hbarevm: {
        tokens: EthLikeTokenConfig[];
    };
    hemieth: {
        tokens: EthLikeTokenConfig[];
    };
    hoodeth: {
        tokens: EthLikeTokenConfig[];
    };
    hppeth: {
        tokens: EthLikeTokenConfig[];
    };
    icp: {
        tokens: EthLikeTokenConfig[];
    };
    initia: {
        tokens: EthLikeTokenConfig[];
    };
    injective: {
        tokens: EthLikeTokenConfig[];
    };
    iota: {
        tokens: EthLikeTokenConfig[];
    };
    irys: {
        tokens: EthLikeTokenConfig[];
    };
    islm: {
        tokens: EthLikeTokenConfig[];
    };
    jovayeth: {
        tokens: EthLikeTokenConfig[];
    };
    kaia: {
        tokens: EthLikeTokenConfig[];
    };
    kavacosmos: {
        tokens: EthLikeTokenConfig[];
    };
    kavaevm: {
        tokens: EthLikeTokenConfig[];
    };
    lnbtc: {
        tokens: EthLikeTokenConfig[];
    };
    ltc: {
        tokens: EthLikeTokenConfig[];
    };
    mantle: {
        tokens: EthLikeTokenConfig[];
    };
    mantra: {
        tokens: EthLikeTokenConfig[];
    };
    megaeth: {
        tokens: EthLikeTokenConfig[];
    };
    xpl: {
        tokens: EthLikeTokenConfig[];
    };
    phrs: {
        tokens: EthLikeTokenConfig[];
    };
    ctc: {
        tokens: EthLikeTokenConfig[];
    };
    hypeevm: {
        tokens: EthLikeTokenConfig[];
    };
    oas: {
        tokens: EthLikeTokenConfig[];
    };
    opbnb: {
        tokens: EthLikeTokenConfig[];
    };
    okbxlayer: {
        tokens: EthLikeTokenConfig[];
    };
    osmo: {
        tokens: EthLikeTokenConfig[];
    };
    plume: {
        tokens: EthLikeTokenConfig[];
    };
    rbtc: {
        tokens: EthLikeTokenConfig[];
    };
    sgb: {
        tokens: EthLikeTokenConfig[];
    };
    sei: {
        tokens: EthLikeTokenConfig[];
    };
    sonic: {
        tokens: EthLikeTokenConfig[];
    };
    stt: {
        tokens: EthLikeTokenConfig[];
    };
    susd: {
        tokens: EthLikeTokenConfig[];
    };
    thor: {
        tokens: EthLikeTokenConfig[];
    };
    tia: {
        tokens: EthLikeTokenConfig[];
    };
    usdt0: {
        tokens: EthLikeTokenConfig[];
    };
    vet: {
        tokens: EthLikeTokenConfig[];
    };
    wemix: {
        tokens: EthLikeTokenConfig[];
    };
    xtz: {
        tokens: EthLikeTokenConfig[];
    };
    xtzevm: {
        tokens: EthLikeTokenConfig[];
    };
    zec: {
        tokens: EthLikeTokenConfig[];
    };
    zeta: {
        tokens: EthLikeTokenConfig[];
    };
    zksyncera: {
        tokens: EthLikeTokenConfig[];
    };
    ip: {
        tokens: EthLikeTokenConfig[];
    };
    somi: {
        tokens: EthLikeTokenConfig[];
    };
    fluenteth: {
        tokens: EthLikeTokenConfig[];
    };
    morph: {
        tokens: EthLikeTokenConfig[];
    };
    morpheth: {
        tokens: EthLikeTokenConfig[];
    };
    arcusdc: {
        tokens: EthLikeTokenConfig[];
    };
    unieth: {
        tokens: EthLikeTokenConfig[];
    };
};
export declare const getFormattedTokens: (coinMap?: import("./map").CoinMap) => Tokens;
/**
 * Verify mainnet or testnet tokens
 * @param tokens
 */
export declare const verifyTokens: (tokens: BaseTokenConfig[]) => Record<string, boolean>;
export declare const tokens: Tokens;
export declare const formattedAlgoTokens: AlgoTokenConfig[];
export declare const mainnetTokens: {
    [x: string]: boolean;
};
export declare const testnetTokens: {
    [x: string]: boolean;
};
/**
 * Get formatted token configuration for a single coin
 * @param coin - Static Base coin instance
 * @returns The formatted token configuration for the coin, or undefined if not supported
 */
export declare function getFormattedTokenConfigForCoin(coin: Readonly<BaseCoin>): TokenConfig | undefined;
export {};
//# sourceMappingURL=tokenConfig.d.ts.map