import SessionsRequest from '../SessionsRequest';
export declare enum SessionState {
    STOPPED = "stopped",
    STARTED = "started"
}
export interface SendabilityResult {
    sendable: boolean;
    reason?: string;
}
/**
 * Enforces sendability rules based on session state
 */
export default class SendabilityPolicy {
    private state;
    constructor(initialState?: SessionState);
    /**
     * Check if a request can be sent
     * @param request - Request to check
     * @returns Sendability result with reason if not sendable
     */
    canSend(request: SessionsRequest): SendabilityResult;
    /**
     * Check if START request can be sent
     */
    private checkStartRequest;
    /**
     * Check if non-START request can be sent
     */
    private checkNonStartRequest;
    /**
     * Get current session state
     */
    getState(): SessionState;
    /**
     * Set session state
     */
    setState(state: SessionState): void;
    /**
     * Check if session is started
     */
    isStarted(): boolean;
    /**
     * Check if session is stopped
     */
    isStopped(): boolean;
}
