import { Client, SymmetricKey } from "../mxp/models";
import { Message } from "../mxp";
import { Scheduler } from "./Scheduler";
import { Session } from "./Session";
import { TimerEvent, FsmState } from "./fsm";
export declare class OutboundSession extends Session {
    private ackWindowDelayedMessages;
    private progressingInstances;
    private _instancesToACK;
    private _isAckWindowClosed;
    get isAckWindowClosed(): boolean;
    get instancesToACK(): Set<string>;
    set instancesToACK(value: Set<string>);
    get shouldExpectMoreProgressingPeers(): boolean;
    get shouldHandleACKRelevantMessageNow(): boolean;
    get hasProgressingInstances(): boolean;
    constructor(localPeer: Client, id: string, scheduler: Scheduler);
    configure(sessionKey: SymmetricKey): void;
    onACKWindowTimeout(source: FsmState, _: TimerEvent): void;
    addProgressingInstance(instanceId: string): void;
    removeProgressingInstance(instanceId: string): void;
    addACKWindowDelayedMessage(m: Message): void;
    closeACKWindowDroppingAllPendingMessages(): void;
    private applyAckWindowDelayedMessages;
}
