import { ProtocolBlockExplorer } from '../../utils/ProtocolBlockExplorer';
import { NetworkType, ProtocolNetwork } from '../../utils/ProtocolNetwork';
import { ProtocolOptions } from '../../utils/ProtocolOptions';
import { SubstrateBlockExplorerClient } from './helpers/blockexplorer/SubstrateBlockExplorerClient';
import { SubstrateNodeClient } from './helpers/node/SubstrateNodeClient';
import { SubstrateAccountController } from './helpers/SubstrateAccountController';
import { SubstrateTransactionController } from './helpers/SubstrateTransactionController';
import { SubstrateNetwork } from './SubstrateNetwork';
export declare class SubstrateProtocolNetworkExtras {
    readonly apiUrl: string;
    readonly network: SubstrateNetwork;
    constructor(apiUrl: string, network: SubstrateNetwork);
}
export declare class PolkascanBlockExplorer implements ProtocolBlockExplorer {
    readonly blockExplorer: string;
    constructor(blockExplorer: string);
    getAddressLink(address: string): Promise<string>;
    getTransactionLink(transactionId: string): Promise<string>;
}
export declare class SubstrateProtocolConfig {
    constructor();
}
export declare class SubstrateProtocolNetwork extends ProtocolNetwork<SubstrateProtocolNetworkExtras> {
    constructor(name: string | undefined, type: NetworkType | undefined, rpcUrl: string, blockExplorer: ProtocolBlockExplorer, extras: SubstrateProtocolNetworkExtras);
}
export declare class SubstrateProtocolOptions<T extends SubstrateProtocolConfig = SubstrateProtocolConfig> implements ProtocolOptions<T> {
    readonly network: SubstrateProtocolNetwork;
    readonly config: T;
    readonly nodeClient: SubstrateNodeClient;
    readonly blockExplorerClient: SubstrateBlockExplorerClient;
    readonly accountController: SubstrateAccountController;
    readonly transactionController: SubstrateTransactionController;
    constructor(network: SubstrateProtocolNetwork, config: T);
}
