import { SelectorCallback } from "./callbacks";
import { IDOMDeferredSelectorParameters } from "./parameters/IDOMDeferredSelectorParameters";
export declare class DOMDeferredSelector<T extends Element = Element> {
    protected readonly selector: SelectorCallback<T>;
    protected readonly parameters: IDOMDeferredSelectorParameters;
    private _deferred;
    private _is_activated;
    get isActivated(): boolean;
    private _is_cancelled;
    get isCancelled(): boolean;
    protected _repeats_left: number;
    protected _interval_ref: number;
    /**
     * @param {SelectorCallback<T>} selector
     * @param {IDOMDeferredSelectorParameters} parameters
     * @returns {DOMDeferredSelector<T>}
     */
    static use<T extends Element = Element>(selector: SelectorCallback<T>, parameters: IDOMDeferredSelectorParameters): DOMDeferredSelector<T>;
    /**
     * @param {SelectorCallback<T>} selector
     * @param {IDOMDeferredSelectorParameters} parameters
     */
    constructor(selector: SelectorCallback<T>, parameters: IDOMDeferredSelectorParameters);
    /**
     * @protected
     */
    activate(): void;
    /**
     * Reactivates DOMDeferredSelector so it can be activated once again
     */
    reactivate(): void;
    /**
     * @returns {Promise<T | null>}
     */
    promise(): Promise<T | null>;
    /**
     * Cancels deferred selection and resolves promise with null result
     */
    cancel(): void;
    /**
     * @protected
     */
    protected awaitElementProcess(): void;
}
