import { ISpecEnums } from '../../spec/SpecEnums';
import { ISpecMessageContents } from '../../spec/SpecMessageContents';
import { Field } from '../fields/Field';
type FieldValues = {
    [tag: string]: any;
};
export declare class Message {
    #private;
    fixVersion: string;
    data: Field[];
    messageString: string;
    description: string;
    messageType: string;
    messageSequence: number;
    messageContents: ISpecMessageContents[];
    bodyLengthValid: boolean;
    checksumValid: boolean;
    checksumValue: string | null;
    checksumExpected: string | null;
    bodyLengthValue: number | null;
    bodyLengthExpected: number | null;
    constructor(fixVersion?: string, ...fields: Field[]);
    addField(field: Field): void;
    addFields(...fields: Field[]): void;
    removeFieldByTag(tag: number): void;
    getField(tag: number): Field | undefined;
    getFields(tag: number): Field[] | undefined;
    getFieldValues(): FieldValues;
    getFieldNameValues(): FieldValues;
    getFieldExplains(): FieldValues;
    getGroup(tag: number): FieldValues;
    getGroupAsArray(tag: number): FieldValues[];
    setField(field: Field): void;
    setString(fixString: string): void;
    setDescription(description: string): void;
    setMessageType(messageType: string): void;
    setMessageSequence(messageSequence: number): void;
    setMessageContents(messageContents: ISpecMessageContents[]): void;
    getEnum(tag: number, value: number | string | boolean | null): ISpecEnums | undefined;
    getBriefDescription(): string | null;
    validateBodyLength(value: string): boolean;
    validateChecksum(value: string): boolean;
    validate(): any[];
    encode(separator?: string): string;
    clone(): Message;
    private reset;
}
export {};
