import type { BindingTransformName } from '../contracts/bindings';
import type { BindingSource, TemplateBindingMetaPath } from './content-types';
export declare function fieldBinding<TPath extends string>(path: TPath): Extract<BindingSource, {
    source: 'field';
}> & {
    path: TPath;
};
export declare function metaBinding<TPath extends TemplateBindingMetaPath>(path: TPath): Extract<BindingSource, {
    source: 'meta';
}> & {
    path: TPath;
};
export declare function literalBinding<TValue>(value: TValue): Extract<BindingSource, {
    source: 'literal';
}> & {
    value: TValue;
};
export declare function transformBinding<TPath extends string, TTransform extends BindingTransformName>(path: TPath, transform: TTransform): Extract<BindingSource, {
    source: 'transform';
}> & {
    path: TPath;
    transform: TTransform;
};
export declare function fallbackBinding<const TSources extends readonly [BindingSource, ...BindingSource[]]>(...sources: TSources): Extract<BindingSource, {
    source: 'fallback';
}> & {
    sources: [...TSources];
};
