import { ControllerBase, type ControllerHost } from './Abstracts/ControllerBase';
/**
 * Represents the `IPausableTimeoutControllerConfig` interface.
 *
 * @public
 */
export interface IPausableTimeoutControllerConfig {
    isEnabled: () => boolean;
    getDuration: () => number;
    onElapsed: () => void;
}
/**
 * Represents the `PausableTimeoutController` class.
 *
 * @public
 */
export declare class PausableTimeoutController extends ControllerBase {
    private readonly _config;
    private readonly _timer;
    private _isRunning;
    /**
     * Constructs a new instance of the `PausableTimeoutController` class.
     *
     * @public
     */
    constructor(host: ControllerHost, config: IPausableTimeoutControllerConfig);
    /**
     * Gets a value indicating whether the timeout is currently running.
     *
     * @public
     * @readonly
     */
    get isRunning(): boolean;
    /**
     * @public
     * @override
     */
    hostDisconnected(): void;
    /**
     * Starts or restarts the timeout.
     *
     * @public
     */
    start(): void;
    /**
     * Stops the timeout.
     *
     * @public
     */
    stop(): void;
    /**
     * Pauses the timeout.
     *
     * @public
     */
    pause(): void;
    /**
     * Resumes the timeout.
     *
     * @public
     */
    resume(): void;
    /**
     * Updates the timeout duration.
     *
     * @public
     */
    setDuration(duration: number): void;
    /**
     * @private
     */
    private handleElapsed;
    /**
     * @private
     */
    private isEnabled;
    /**
     * @private
     */
    private getDuration;
}
/**
 * Adds a pausable timeout controller to the given host.
 *
 * @public
 * @param host The host element.
 * @param config The configuration options.
 * @returns The pausable timeout controller instance.
 */
export declare function addPausableTimeoutController(host: ControllerHost, config: IPausableTimeoutControllerConfig): PausableTimeoutController;
//# sourceMappingURL=PausableTimeoutController.d.ts.map