/// <reference types="node" />
import { EventEmitter } from 'events';
import { Logger } from 'ilp-logger';
import { Connection, ConnectionOpts } from './connection';
import { Plugin } from './util/plugin-interface';
export interface ServerOpts extends ConnectionOpts {
    serverSecret?: Buffer;
    disconnectDelay?: number;
}
export interface GenerateAddressSecretOpts {
    connectionTag?: string;
    receiptNonce?: Buffer;
    receiptSecret?: Buffer;
}
export declare class Server extends EventEmitter {
    protected serverSecret: Buffer;
    protected plugin: Plugin;
    protected log: Logger;
    protected connectionOpts: ConnectionOpts;
    protected pendingRequests: Promise<void | Buffer>;
    protected disconnectDelay: number;
    private pool?;
    constructor(opts: ServerOpts);
    get connected(): boolean;
    listen(): Promise<void>;
    close(): Promise<void>;
    acceptConnection(): Promise<Connection>;
    generateAddressAndSecret(opts?: string | GenerateAddressSecretOpts): {
        destinationAccount: string;
        sharedSecret: Buffer;
        receiptsEnabled: boolean;
    };
    get assetCode(): string;
    get assetScale(): number;
    protected handleData(data: Buffer): Promise<Buffer>;
}
export declare function createServer(opts: ServerOpts): Promise<Server>;
