import { Client } from 'viem';
import { EVMOnChainAddresses } from './evmUtils/evmContractAddresses.mjs';
import { KnownTokenId, KnownChainId } from './utils/types/knownIds.mjs';
import { BigNumber } from './utils/BigNumber.mjs';

interface BRC20SupportedRoute {
    brc20Tick: string;
    brc20Token: KnownTokenId.BRC20Token;
    stacksToken: KnownTokenId.StacksToken;
    pegInPaused: boolean;
    pegInFeeRate: BigNumber;
    pegInFeeBitcoinAmount: null | BigNumber;
    pegOutPaused: boolean;
    pegOutFeeRate: BigNumber;
    pegOutFeeBitcoinAmount: null | BigNumber;
}
declare function getBRC20SupportedRoutes(sdkContext: SDKGlobalContext, chainId: KnownChainId.BRC20Chain): Promise<BRC20SupportedRoute[]>;
interface RunesSupportedRoute {
    runesId: `${number}:${number}`;
    runesToken: KnownTokenId.RunesToken;
    stacksToken: KnownTokenId.StacksToken;
    pegInPaused: boolean;
    pegInFeeRate: BigNumber;
    pegInFeeBitcoinAmount: null | BigNumber;
    pegOutPaused: boolean;
    pegOutFeeRate: BigNumber;
    pegOutFeeBitcoinAmount: null | BigNumber;
}
declare function getRunesSupportedRoutes(sdkContext: SDKGlobalContext, chainId: KnownChainId.RunesChain): Promise<RunesSupportedRoute[]>;

interface SDKGlobalContextCache<K, T> {
    get: (key: K) => T | null;
    set: (key: K, value: T) => void;
    delete: (key: K) => void;
}
interface SDKGlobalContext {
    backendAPI: {
        runtimeEnv: "prod" | "dev";
    };
    brc20: {
        routesConfigCache?: SDKGlobalContextCache<string, Promise<BRC20SupportedRoute[]>>;
    };
    runes: {
        routesConfigCache?: SDKGlobalContextCache<string, Promise<RunesSupportedRoute[]>>;
    };
    evm: {
        enableMulticall?: boolean;
        onChainConfigCache?: SDKGlobalContextCache<string, Promise<EVMOnChainAddresses>>;
        viemClients: Partial<Record<KnownChainId.EVMChain, Client>>;
    };
}

export { type BRC20SupportedRoute as B, type RunesSupportedRoute as R, type SDKGlobalContext as S, getRunesSupportedRoutes as a, type SDKGlobalContextCache as b, getBRC20SupportedRoutes as g };
