import { SessionDescription, Source, JsepMessage } from "../jsep";
import { TerminationCause } from "../TerminationCause";
import { SessionState } from "../SessionState";
import { FsmTransition, TimerEvent } from ".";
import { Message } from "../../mxp";
import { TransitionSource } from "./TransitionSource";
export declare abstract class FsmState {
    private fsmSessionState;
    private transitions?;
    protected callTerminationCause: TerminationCause;
    constructor(fsmSessionState: SessionState, transitions?: FsmTransition | undefined);
    get terminationCause(): TerminationCause;
    set terminationCause(terminationCause: TerminationCause);
    get sessionState(): SessionState;
    private get stateName();
    onInboundMessage(m: Message): void;
    onSessionDescription(source: Source, sd: SessionDescription): void;
    onCandidate(source: Source, candidates: Array<JsepMessage>): void;
    onStateTimeout(t: TimerEvent): void;
    onTimeout(_: TimerEvent): void;
    onException(e: Error): void;
    terminate(e?: Error, source?: TransitionSource): void;
    terminateWithCause(cause: TerminationCause, source?: TransitionSource): void;
    accept(): void;
    enter(previous: FsmState, source: TransitionSource): void;
    exit(previous: FsmState, source: TransitionSource): void;
    transition(to: SessionState, source: TransitionSource): void;
    protected onEnter(_: TransitionSource): void;
    protected onExit(_: TransitionSource): void;
    protected onWillTerminate(_: TransitionSource): void;
    protected handleInboundMessage(_: Message): boolean;
    protected onAccept(): void;
    protected onLocalSessionDescription(_: SessionDescription): void;
    protected onLocalCandidate(_: JsepMessage[]): void;
}
