import BigNumber from '../../../../../dependencies/src/bignumber.js-9.0.0/bignumber';
import { IAirGapTransaction } from '../../../../../interfaces/IAirGapTransaction';
import { SubstrateNetwork } from '../../../SubstrateNetwork';
import { SubstrateCall } from '../metadata/decorator/call/SubstrateCall';
import { SubstrateAccountId } from '../account/SubstrateAddress';
import { SCALEDecodeResult } from '../scale/SCALEDecoder';
import { SCALEAccountId } from '../scale/type/SCALEAccountId';
import { SCALEClass } from '../scale/type/SCALEClass';
import { SCALECompactInt } from '../scale/type/SCALECompactInt';
import { EraConfig, SCALEEra } from '../scale/type/SCALEEra';
import { SubstrateTransactionMethod } from './method/SubstrateTransactionMethod';
import { SubstrateSignature } from './SubstrateSignature';
interface SubstrateTransactionConfig {
    from: SubstrateAccountId;
    args: any;
    tip: number | BigNumber;
    methodId: SubstrateCall;
    era: EraConfig | null;
    nonce: number | BigNumber;
    signature?: SubstrateSignature;
}
export declare enum SubstrateTransactionType {
    TRANSFER = 0,
    BOND = 1,
    UNBOND = 2,
    REBOND = 3,
    BOND_EXTRA = 4,
    WITHDRAW_UNBONDED = 5,
    NOMINATE = 6,
    CANCEL_NOMINATION = 7,
    COLLECT_PAYOUT = 8,
    SET_PAYEE = 9,
    SET_CONTROLLER = 10,
    SUBMIT_BATCH = 11
}
export declare class SubstrateTransaction extends SCALEClass {
    readonly network: SubstrateNetwork;
    readonly type: SubstrateTransactionType;
    readonly signer: SCALEAccountId;
    readonly signature: SubstrateSignature;
    readonly era: SCALEEra;
    readonly nonce: SCALECompactInt;
    readonly tip: SCALECompactInt;
    readonly method: SubstrateTransactionMethod;
    static create(network: SubstrateNetwork, type: SubstrateTransactionType, config: SubstrateTransactionConfig): SubstrateTransaction;
    static fromTransaction(transaction: SubstrateTransaction, config?: Partial<SubstrateTransactionConfig>): SubstrateTransaction;
    static decode(network: SubstrateNetwork, type: SubstrateTransactionType, raw: string): SCALEDecodeResult<SubstrateTransaction>;
    protected scaleFields: (SCALEAccountId | SCALECompactInt | SCALEEra | SubstrateTransactionMethod | SubstrateSignature)[];
    private constructor();
    toString(): string;
    toAirGapTransactions(): Partial<IAirGapTransaction>[];
    protected _encode(): string;
}
export {};
