/// <reference types="node" />
import { Server, Socket } from 'net';
import Websocket from 'ws';
import { Field } from './fields/Field';
import * as Constants from './fieldtypes';
import { FIXParser } from './FIXParser';
import { ConnectionType, Options as FIXParserOptions, Protocol } from './FIXParserBase';
import { IFIXParser } from './IFIXParser';
import { Message } from './message/Message';
import { MessageBuffer } from './util/MessageBuffer';
import { Parser, Version } from './util/util';
type Options = Pick<FIXParserOptions, 'host' | 'port' | 'protocol' | 'sender' | 'target' | 'heartbeatIntervalSeconds' | 'fixVersion' | 'logging' | 'onMessage' | 'onOpen' | 'onError' | 'onClose' | 'onReady'>;
declare class FIXServer implements IFIXParser {
    static version: Version;
    parserName: Parser;
    fixParser: FIXParser;
    host: string;
    port: number;
    protocol: Protocol;
    server: Server | Websocket.Server | null;
    connected: boolean;
    sender: string;
    target: string;
    heartBeatInterval: number;
    fixVersion: string;
    nextNumIn: number;
    messageCounter: number;
    heartBeatIntervalId: ReturnType<typeof setInterval> | null;
    messageBufferIn: MessageBuffer;
    messageBufferOut: MessageBuffer;
    socket: WebSocket | Socket | null;
    isLoggedIn: boolean;
    connectionType: ConnectionType;
    private static onMessageCallback;
    private static onOpenCallback;
    private static onErrorCallback;
    private static onCloseCallback;
    private static onReadyCallback;
    createServer({ host, port, protocol, sender, target, heartbeatIntervalSeconds, fixVersion, logging, onMessage, onOpen, onError, onClose, onReady, }?: Options): void;
    private initialize;
    getNextTargetMsgSeqNum(): number;
    setNextTargetMsgSeqNum(nextMsgSeqNum: number): number;
    getTimestamp(dateObject?: Date): string;
    createMessage(...fields: Field[]): Message;
    parse(data: string): Message[];
    send(message: Message): void;
    isConnected(): boolean;
    private resetSession;
    close(): void;
    destroy(): void;
    stopHeartbeat(): void;
    startHeartbeat(heartBeatInterval?: number): void;
}
export { AllocPositionEffectEnum as AllocPositionEffect } from './fieldtypes/AllocPositionEffectEnum';
export { EncryptMethodEnum as EncryptMethod } from './fieldtypes/EncryptMethodEnum';
export { ExecTypeEnum as ExecType } from './fieldtypes/ExecTypeEnum';
export { FieldEnum as Fields } from './fieldtypes/FieldEnum';
export { HandlInstEnum as HandlInst } from './fieldtypes/HandlInstEnum';
export { MarketDepthEnum as MarketDepth } from './fieldtypes/MarketDepthEnum';
export { MDEntryTypeEnum as MDEntryType } from './fieldtypes/MDEntryTypeEnum';
export { MDUpdateTypeEnum as MDUpdateType } from './fieldtypes/MDUpdateTypeEnum';
export { MessageEnum as Messages } from './fieldtypes/MessageEnum';
export { OrderStatusEnum as OrderStatus } from './fieldtypes/OrderStatusEnum';
export { OrderTypesEnum as OrderTypes } from './fieldtypes/OrderTypesEnum';
export { SideEnum as Side } from './fieldtypes/SideEnum';
export { SubscriptionRequestTypeEnum as SubscriptionRequestType } from './fieldtypes/SubscriptionRequestTypeEnum';
export { TimeInForceEnum as TimeInForce } from './fieldtypes/TimeInForceEnum';
export { Protocol } from './FIXParserBase';
export { Options } from './FIXParserBase';
export { Constants };
export { Field };
export { Message };
export { FIXServer };
