/// <reference types="node" />
import { ProtocolSymbols } from '../utils/ProtocolSymbols';
import { IACMessageType } from './interfaces';
import { AccountShareResponse } from './schemas/definitions/account-share-response';
import { MessageSignRequest } from './schemas/definitions/message-sign-request';
import { MessageSignResponse } from './schemas/definitions/message-sign-response';
import { SignedAeternityTransaction } from './schemas/definitions/signed-transaction-aeternity';
import { SignedBitcoinTransaction } from './schemas/definitions/signed-transaction-bitcoin';
import { SignedCosmosTransaction } from './schemas/definitions/signed-transaction-cosmos';
import { SignedEthereumTransaction } from './schemas/definitions/signed-transaction-ethereum';
import { SignedSubstrateTransaction } from './schemas/definitions/signed-transaction-substrate';
import { SignedTezosTransaction } from './schemas/definitions/signed-transaction-tezos';
import { UnsignedAeternityTransaction } from './schemas/definitions/unsigned-transaction-aeternity';
import { UnsignedBitcoinTransaction } from './schemas/definitions/unsigned-transaction-bitcoin';
import { UnsignedEthereumTransaction } from './schemas/definitions/unsigned-transaction-ethereum';
import { UnsignedSubstrateTransaction } from './schemas/definitions/unsigned-transaction-substrate';
import { UnsignedTezosTransaction } from './schemas/definitions/unsigned-transaction-tezos';
import { UnsignedCosmosTransaction } from './types';
import { RLPData } from './utils/toBuffer';
export declare type IACMessages = AccountShareResponse | MessageSignRequest | MessageSignResponse | UnsignedTezosTransaction | UnsignedAeternityTransaction | UnsignedBitcoinTransaction | UnsignedCosmosTransaction | UnsignedEthereumTransaction | UnsignedSubstrateTransaction | SignedTezosTransaction | SignedAeternityTransaction | SignedBitcoinTransaction | SignedCosmosTransaction | SignedEthereumTransaction | SignedSubstrateTransaction;
export interface IACMessageDefinitionObject {
    id: string;
    type: IACMessageType;
    protocol: ProtocolSymbols;
    payload: IACMessages;
}
export interface MessageDefinitionArray {
    [0]: Buffer;
    [1]: Buffer;
    [2]: Buffer;
    [3]: Buffer;
    [4]: Buffer;
}
export declare class Message implements IACMessageDefinitionObject {
    private readonly version;
    private readonly schema;
    readonly id: string;
    readonly type: IACMessageType;
    readonly protocol: ProtocolSymbols;
    readonly payload: IACMessages;
    constructor(type: IACMessageType, protocol: ProtocolSymbols, payload: IACMessages, id?: string, version?: string);
    asJson(): IACMessageDefinitionObject;
    asArray(): RLPData;
    static fromDecoded(object: IACMessageDefinitionObject): Message;
    static fromEncoded(buf: MessageDefinitionArray): Message;
    private static parseVersion;
    private static parseType;
    private static parseProtocol;
    private static parseId;
    private static parsePayload;
    private static validateProperty;
}
