import { FormManager, Path, SealedFormManagerEvent } from "@kform/core";
/**
 * Options available to the {@link useSubscription} hook.
 */
export interface SubscriptionOptions {
    /**
     * Required if no form context is in scope.
     *
     * If a form context is in scope and this value is also provided, then the
     * provided form manager will be used, in which case the current path of the
     * form context is ignored.
     */
    formManager?: FormManager;
    /**
     * Function called after the subscription completes, but before any event is
     * emitted.
     */
    onSubscribe?: () => void | PromiseLike<void>;
    /**
     * Function called after unsubscribing.
     */
    onUnsubscribe?: () => void;
    /**
     * Whether to enable the subscription.
     * @default true
     */
    enabled?: boolean;
}
/**
 * Hook that subscribes to all form manager events with paths matching
 * {@link path} by running {@link onFormManagerEvent} for each event.
 *
 * Changes to {@link onFormManagerEvent}, {@link onSubscribe}, or
 * {@link onUnsubscribe} do not cause new subscriptions to be performed.
 * @param path Path of events to subscribe to.
 * @param onFormManagerEvent Function called for each event with a path matching
 * {@link path}.
 * @param subscriptionOptions Available options.
 */
export declare function useSubscription<T = unknown, TChildren = unknown>(path: (Path | string) | undefined, onFormManagerEvent: (event: SealedFormManagerEvent<T, TChildren>) => void | PromiseLike<void>, { formManager: formManagerOption, onSubscribe, onUnsubscribe, enabled, }?: SubscriptionOptions): void;
