import { Field, type FieldOptions } from './Field.js';
export interface FieldGetter {
    <Value>(field: Field<Value>): Value;
}
export interface OptionsTracker<Options = any> {
    (getter: FieldGetter): Partial<Options> | Promise<Partial<Options>>;
}
export interface ValueTracker<Value = any> {
    (getter: FieldGetter): Value;
}
export declare function optionTrackerOf(field: Field): OptionsTracker<any> | undefined;
export declare function valueTrackerOf(field: Field): ValueTracker<any> | undefined;
export declare namespace track {
    function options<StoredValue, QueryValue, OnChange, Options>(field: Field<StoredValue, QueryValue, OnChange, Options>, tracker: OptionsTracker<Options & FieldOptions<StoredValue>>): Field<StoredValue, QueryValue, OnChange, Options>;
    function value<StoredValue, QueryValue, OnChange, Options>(field: Field<StoredValue, QueryValue, OnChange, Options>, tracker: ValueTracker<StoredValue>): Field<StoredValue, QueryValue, OnChange, Options>;
}
