import { ITatumSdkContainer, TatumSdkExtension } from '../extensions';
import { WalletProvider } from '../walletProvider';
import { TatumConfig } from './tatum.dto';
/**
 * Works as an entrypoint to interact with extension of choice.
 * @param type - Extension type imported to the SDK instance
 */
export interface ITatumSdkChain {
    extension<T extends TatumSdkExtension>(type: new (tatumSdkContainer: ITatumSdkContainer, ...args: any[]) => T): T;
}
export declare abstract class TatumSdkChain implements ITatumSdkChain {
    readonly id: string;
    walletProvider: WalletProvider;
    protected constructor(id: string);
    extension<T extends TatumSdkExtension>(type: new (tatumSdkContainer: ITatumSdkContainer, ...args: any[]) => T): T;
    destroy(): Promise<void>;
    private destroyExtension;
}
export declare class TatumSDK {
    /**
     * Initialize Tatum SDK. This method must be called before any other method.
     * Default configuration is used if no configuration is provided.
     * @param config
     */
    static init<T extends ITatumSdkChain>(config: TatumConfig): Promise<T>;
    private static builtInExtensions;
    private static addBuiltInExtensions;
    private static configureExtensions;
    private static addExtension;
    private static checkIfNetworkSupportedInExtension;
    private static generateRandomString;
    private static shouldEvictNodesOnFailure;
}
