import type { NodesRef } from '@lynx-js/types'; export type RefCleanup = (() => void) | void; export type RefCallback = (ref: T | null) => RefCleanup; export interface OrdinaryRefBinding { cleanup?: RefCleanup; } export interface RefObject { current: T | null; } export type OrdinaryRef = RefCallback | RefObject; type FunctionPropertyNames = { [K in keyof T]: T[K] extends (...args: unknown[]) => unknown ? K : never; }[keyof T]; export type ForwardableNodesRefMethod = Exclude, 'exec'>; export type RefProxyForwardedMethods = { [K in ForwardableNodesRefMethod]: (...args: Parameters) => TProxy; }; export declare function assertValidRef(value: unknown): OrdinaryRef; export declare function normalizeRefValue(value: unknown): OrdinaryRef | null | undefined; export declare function applyOrdinaryRef(ref: OrdinaryRef, value: T | null, binding: OrdinaryRefBinding): void; export declare class OrdinaryRefEffectQueue { private readonly bindings; private readonly refsToClear; private readonly refsToApply; queue(oldRef: OrdinaryRef | null | undefined, newRef: OrdinaryRef | null | undefined, owner: object, slot: number, token: TToken): void; flush(createValue: (token: TToken) => TProxy): void; clear(): void; hasPending(): boolean; } export declare abstract class SelectorRefProxy> { private task; protected createProxy(): TProxy; protected abstract createProxyTarget(): TProxy; protected abstract runOrDelay(task: () => void): void; abstract get selector(): string; private setTask; exec(): void; } export {};