import { VNode } from "@virtualstate/fringe";
export declare const DoneSymbol: unique symbol;
export interface Context extends Record<string, unknown> {
    globalThing: unknown;
}
export declare const DefaultContext: Context;
export interface State extends Record<string, unknown> {
    currentThing: number;
    updatedAt: number;
    [DoneSymbol]?: boolean;
}
export interface SourceVNode<Source> extends VNode {
    source: Source;
}
export declare function useState<S>(defaultState: S, state?: SourceVNode<S>): [S, (state: S) => void];
export interface AsyncFunction<T, Args extends unknown[] = never[]> {
    (...Args: any[]): Promise<T>;
}
export declare type MaybeAsyncFunction<T, Args extends unknown[] = never[]> = ((...Args: any[]) => T) | AsyncFunction<T, Args>;
export declare function useEffect(input: MaybeAsyncFunction<void | MaybeAsyncFunction<void>>, ...watch: unknown[]): void;
export declare function useContext(): Context;
export interface ReferenceState {
    references: {
        current: unknown;
    }[];
    index: number;
}
export declare function useRef<T>(value: T): {
    current: T;
};
//# sourceMappingURL=source.interface.d.ts.map