/// <reference types="node" />
import { RawAeternityTransaction } from './unsigned-transactions/aeternity-transactions.serializer';
import { RawBitcoinTransaction, SerializedUnsignedBitcoinTransaction } from './unsigned-transactions/bitcoin-transactions.serializer';
import { RawEthereumTransaction, SerializedUnsignedEthereumTransaction } from './unsigned-transactions/ethereum-transactions.serializer';
import { RawSubstrateTransaction, SerializedUnsignedSubstrateTransaction } from './unsigned-transactions/substrate-transactions.serializer';
import { RawTezosTransaction, SerializedUnsignedTezosTransaction } from './unsigned-transactions/tezos-transactions.serializer';
export declare abstract class UnsignedTransactionSerializer {
    abstract serialize(unsignedTx: UnsignedTransaction): SerializedSyncProtocolTransaction;
    abstract deserialize(serializedTx: SerializedSyncProtocolTransaction): UnsignedTransaction;
}
export interface UnsignedTransaction {
    transaction: RawEthereumTransaction | RawBitcoinTransaction | RawAeternityTransaction | RawTezosTransaction | RawSubstrateTransaction;
    publicKey: string;
    callback?: string;
}
export declare type SerializedUnsignedTransaction = SerializedUnsignedEthereumTransaction | SerializedUnsignedBitcoinTransaction | SerializedUnsignedTezosTransaction | SerializedUnsignedSubstrateTransaction;
export declare enum SyncProtocolUnsignedTransactionKeys {
    UNSIGNED_TRANSACTION = 0,
    PUBLIC_KEY = 1,
    CALLBACK = 2
}
export interface SerializedSyncProtocolTransaction extends Array<SerializedUnsignedTransaction | Buffer | Buffer[]> {
    [0]: SerializedUnsignedTransaction;
    [1]: Buffer;
    [2]: Buffer;
}
