import { ServiceChannel } from '../serviceChannel';
import { PeerTransport, PeerConnection } from '../transport';
import type { PeerLogger } from '../logger';
import type { PeerEmitter, PeerReceiveEmitter } from '../emitter';
import { InternalPluginsType, serberWithPlugins } from '../serber';
import type { PeerChunk } from '../chunk';
import { PeerReceive } from './receiveType';
import { SYMBOL_PEER_SCOPE } from '../const';
import { PeerScope } from './peerScope';
export interface PeerParams {
    name?: string;
    logger?: PeerLogger;
}
export declare class Peer {
    [SYMBOL_PEER_SCOPE]: PeerScope;
    private _params;
    private _logger;
    private _connection;
    private _serberInstance;
    private _serviceChannel;
    private _receiveEmitter;
    private _emitter;
    constructor(params?: PeerParams);
    get params(): PeerParams;
    get logger(): PeerLogger;
    get serberInstance(): import("@berish/serber").Serber<import("../serber").PeerDecoratorToResultPluginOptions & import("../serber").IClassInstanceToClassPrintPluginOptions & import("../serber").FunctionToFunctionPrintPluginOptions & import("@berish/serber/build/plugins").ILoopObjectPluginParams>;
    get receiveEmitter(): PeerReceiveEmitter;
    get emitter(): PeerEmitter;
    get serviceChannel(): ServiceChannel;
    get connection(): PeerConnection<any>;
    set connection(value: PeerConnection<any>);
    setLogger(logger: PeerLogger): this;
    start(transport: PeerTransport<any>): Promise<void>;
    stop(): Promise<void>;
    setSerber(callback: (internalPlugins: InternalPluginsType) => typeof serberWithPlugins): this;
    receive<Data = any>(path: string, listener: PeerReceive<this, Data>): string;
    unreceive(receiveHash: string): void;
    unreceiveAll(): void;
    send<Resolve = any, Data = any>(outcomeChunk: PeerChunk<Data>): Promise<import("./sendRaw/waitResponse").PeerChunkReply<Data, Resolve>>;
}
//# sourceMappingURL=peer.d.ts.map