import { Bind, Start, ParentTest, Stop, PageTest, Config, Selectors, Targets, Binding } from "./types";
export declare const getTargets: (parent: HTMLElement, selectors: Selectors) => Targets | null;
export declare const relevantPage: (bindings: Binding[]) => boolean;
export declare const defaults: Config;
export declare const config: () => Config | undefined;
interface GenerateTimerOptions {
    pageTest: PageTest;
    bind: Bind;
    interval?: number;
}
interface TimerControls {
    start: Start;
    stop: Stop;
}
interface GenerateTimer {
    (options: GenerateTimerOptions): TimerControls;
}
export declare const generateTimer: GenerateTimer;
interface SetupOptions {
    window: Window;
    bindings: Binding[];
    callback?: (result?: SetupResult[]) => void;
}
interface Setup {
    (options: SetupOptions): void;
}
interface SetupResult {
    binding: Binding;
    start: Start;
    stop: Stop;
}
export declare const setup: Setup;
interface SetupBindOptions {
    selectors: Selectors;
    anchorSelector?: string;
    parentScope?: string;
    doc?: Document;
    parentTest?: ParentTest;
}
interface SetupBind {
    (options: SetupBindOptions): PageBindings[];
}
interface PageBindings {
    anchor: HTMLElement;
    targets: Targets;
    parent: HTMLElement;
}
export declare const setupBind: SetupBind;
export declare const toId: (elem: HTMLElement) => string;
export declare const cssEscape: (value: string) => string;
export {};
