/// <reference types="node" />
import BigNumber from '../../dependencies/src/bignumber.js-9.0.0/bignumber';
import { SerializedSignedAeternityTransaction } from './signed-transactions/aeternity-transactions.serializer';
import { SerializedSignedBitcoinTransaction } from './signed-transactions/bitcoin-transactions.serializer';
import { SerializedSignedEthereumTransaction } from './signed-transactions/ethereum-transactions.serializer';
import { SerializedSignedSubstrateTransaction } from './signed-transactions/substrate-transactions.serializer';
import { SerializedSignedTezosTransaction } from './signed-transactions/tezos-transactions.serializer';
export declare abstract class SignedTransactionSerializer {
    abstract serialize(unsignedTx: SignedTransaction): SerializedSyncProtocolSignedTransaction;
    abstract deserialize(serializedTx: SerializedSyncProtocolSignedTransaction): SignedTransaction;
}
export interface SignedTransaction {
    transaction: string;
    accountIdentifier: string;
    from?: string[];
    amount?: BigNumber;
    to?: string[];
    fee?: BigNumber;
}
export declare type SerializedSignedTransaction = SerializedSignedEthereumTransaction | SerializedSignedBitcoinTransaction | SerializedSignedAeternityTransaction | SerializedSignedTezosTransaction | SerializedSignedSubstrateTransaction;
export declare enum SyncProtocolSignedTransactionKeys {
    SIGNED_TRANSACTION = 0,
    ACCOUNT_IDENTIFIER = 1,
    FROM = 2,
    FEE = 3,
    AMOUNT = 4,
    TO = 5
}
export interface SerializedSyncProtocolSignedTransaction extends Array<SerializedSignedTransaction | Buffer | Buffer[]> {
    [0]: SerializedSignedTransaction;
    [1]: Buffer;
    [2]: Buffer[];
    [3]: Buffer;
    [4]: Buffer;
    [5]: Buffer[];
}
