import { IObject } from "@daybrush/utils";
import { Component } from "./Component";
import { CompatElement, ContextProvider, Ref } from "../types";
import { HooksProvider } from "../hooks/hooks";
export declare abstract class Provider<T extends Element | Component | Node = Element | Component | Node> implements ContextProvider {
    t: any;
    d: number;
    k: string;
    i: number;
    c?: Provider | null;
    ref?: Ref;
    ps: IObject<any>;
    typ: string;
    o: CompatElement | string;
    b: T;
    _ps: Array<Provider<any>>;
    fr?: Ref;
    _cs: Record<string, Component>;
    _hyd: Node[] | null;
    _sel: boolean;
    constructor(t: any, d: number, k: string, i: number, c?: Provider | null, ref?: Ref, ps?: IObject<any>);
    abstract r(hooks: Function[], contextValues: Record<string, Component>, prevProps: any, nextState?: any): any;
    abstract un(): any;
    s(nextProps: any, nextState: any): boolean;
    u(hooks: Function[], contexts: Record<string, Component>, nextElement: CompatElement | string, nextState?: any, isForceUpdate?: boolean): boolean;
    md(): void;
    ss(nextstate: IObject<any>): any;
    ud(): void;
    rr(): void;
}
export declare function getCurrentInstance(): Provider | HooksProvider | null;
export declare function getHooksIndex(): number;
export declare function setHooksInex(nextHooksIndex: number): void;
export declare function setCurrentInstance(provider: Provider | HooksProvider | null): Provider<Element | Node | Component> | HooksProvider;
