/// <reference types="node" />
import { ProtocolSymbols } from '../../utils/ProtocolSymbols';
import { SerializedSyncProtocolSignedTransaction, SignedTransaction } from './signed-transaction.serializer';
import { SerializedSyncProtocolTransaction, UnsignedTransaction } from './unsigned-transaction.serializer';
import { SerializedSyncProtocolWalletSync, SyncWalletRequest } from './wallet-sync.serializer';
export declare enum SyncProtocolKeys {
    VERSION = 0,
    TYPE = 1,
    PROTOCOL = 2,
    PAYLOAD = 3
}
export declare enum EncodedType {
    UNSIGNED_TRANSACTION = 0,
    SIGNED_TRANSACTION = 1,
    WALLET_SYNC = 2
}
export declare type SerializedSyncProtocolPayload = SerializedSyncProtocolTransaction | SerializedSyncProtocolWalletSync | SerializedSyncProtocolSignedTransaction;
export interface SerializedSyncProtocol extends Array<Buffer | SerializedSyncProtocolPayload> {
    [0]: Buffer;
    [1]: Buffer;
    [2]: Buffer;
    [3]: SerializedSyncProtocolPayload;
}
export interface DeserializedSyncProtocol {
    version?: number;
    type: EncodedType;
    protocol: ProtocolSymbols;
    payload: UnsignedTransaction | SyncWalletRequest | SignedTransaction;
}
export declare class SyncProtocolUtils {
    serialize(deserializedSyncProtocol: DeserializedSyncProtocol): Promise<string>;
    deserialize(serializedSyncProtocol: string): Promise<DeserializedSyncProtocol>;
}
