import { SourceReference, VNode, TokenVNodeBase, TokenVNodeFn } from "@virtualstate/fringe";
import { IsFunction } from "./is";
export declare type ReferenceIs<ReferencedVNode extends VNode = VNode> = IsFunction<VNode, ReferencedVNode> | SourceReference;
export interface ReferenceOn<ReferencedVNode extends VNode = VNode> {
    (node: ReferencedVNode): void | Promise<void>;
}
export declare const ReferenceSymbol: unique symbol;
export interface ReferenceOptions<ReferencedVNode extends VNode = VNode> {
    is?: ReferenceIs<ReferencedVNode>;
    on: ReferenceOn<ReferencedVNode>;
}
export declare type ReferenceToken<ReferencedVNode extends VNode = VNode> = TokenVNodeBase<typeof ReferenceSymbol, ReferenceOptions<ReferencedVNode>>;
export declare type ReferenceTokenFn<ReferencedVNode extends VNode = VNode> = TokenVNodeFn<typeof ReferenceSymbol, ReferenceOptions<ReferencedVNode>>;
export declare const Reference: ReferenceTokenFn;
//# sourceMappingURL=reference.d.ts.map