/// <reference types="node" />
import BigNumber from '../../../dependencies/src/bignumber.js-9.0.0/bignumber';
import { SubstrateNetwork } from '../SubstrateNetwork';
import { SubstrateAccountId } from './data/account/SubstrateAddress';
import { SubstrateTransactionMethod } from './data/transaction/method/SubstrateTransactionMethod';
import { SubstrateTransaction, SubstrateTransactionType } from './data/transaction/SubstrateTransaction';
import { SubstrateTransactionPayload } from './data/transaction/SubstrateTransactionPayload';
import { SubstrateNodeClient } from './node/SubstrateNodeClient';
export interface SubstrateTransactionDetails {
    fee: BigNumber;
    transaction: SubstrateTransaction;
    payload: SubstrateTransactionPayload;
}
export interface SubstrateTransactionConfig {
    type: SubstrateTransactionType;
    tip: string | number | BigNumber;
    args: any;
}
export declare class SubstrateTransactionController {
    readonly network: SubstrateNetwork;
    readonly nodeClient: SubstrateNodeClient;
    constructor(network: SubstrateNetwork, nodeClient: SubstrateNodeClient);
    prepareSubmittableTransactions(accountId: SubstrateAccountId, available: BigNumber | string, txConfig: SubstrateTransactionConfig[]): Promise<string>;
    createTransaction(type: SubstrateTransactionType, accountId: SubstrateAccountId, tip?: string | number | BigNumber, args?: any, chainHeight?: number | BigNumber, nonce?: number | BigNumber): Promise<SubstrateTransaction>;
    createTransactionMethod(type: SubstrateTransactionType, args?: any): Promise<SubstrateTransactionMethod>;
    signTransaction(privateKey: Buffer, transaction: SubstrateTransaction, payload: SubstrateTransactionPayload): Promise<SubstrateTransaction>;
    encodeDetails(txs: SubstrateTransactionDetails[]): string;
    decodeDetails(serialized: string): SubstrateTransactionDetails[];
    calculateTransactionFee(transaction: SubstrateTransaction): Promise<BigNumber | null>;
    estimateTransactionFees(accountId: SubstrateAccountId, transationTypes: [SubstrateTransactionType, any][]): Promise<BigNumber | null>;
    private prepareTransactionDetails;
    private signPayload;
    private signSr25519Payload;
}
