import type { CoreEngine } from '@coveo/headless';
import type { AnyBindings } from '../components/common/interface/bindings';
/**
 * Retrieves `Bindings` or `CommerceBindings` on a configured parent interface.
 * @param event - The element on which to dispatch the event, which must be the child of a configured Atomic container element.
 * @returns A promise that resolves upon initialization of the parent container element, and rejects otherwise.
 */
export declare function fetchBindings<SpecificBindings extends AnyBindings>(element: Element): Promise<SpecificBindings>;
export type InitializeEventHandler = (bindings: AnyBindings) => void;
export declare class MissingInterfaceParentError extends Error {
    constructor(elementName: string);
}
export declare const initializeEventName = "atomic/initializeComponent";
export type AtomicInterface = HTMLElement & {
    engine?: CoreEngine;
    bindings?: AnyBindings;
};
/**
 * Waits for all Atomic custom element children to be defined.
 * This ensures that all vanilla (non-framework) Atomic components have been
 * registered with the custom elements registry before proceeding.
 *
 * @param host - The host element to scan for Atomic children
 */
export declare function waitForAtomicChildrenToBeDefined(host: Element): Promise<void>;
