export declare const addObserver: unique symbol;
export declare const removeObserver: unique symbol;
export declare const hasObserver: unique symbol;
export declare const isProxy: unique symbol;
export declare const getTarget: unique symbol;
type AddObserverCallback = (key?: string) => void;
type AddObserver = (host: HTMLElement, callback: AddObserverCallback) => void;
type RemoveObserver = (host: HTMLElement) => void;
type IsAny<T> = unknown extends T & string ? true : false;
type ExtrasArray<T> = {
    [addObserver]: AddObserver;
    [removeObserver]: RemoveObserver;
    [isProxy]: boolean;
} & Array<T extends (infer U)[] ? Partial<U> : object>;
type Extras = {
    [addObserver]: AddObserver;
    [removeObserver]: RemoveObserver;
    [isProxy]: boolean;
};
type RecursiveProxy<T> = IsAny<T> extends true ? any : T extends Array<any> ? ExtrasArray<T> & {
    [P in keyof T]: IsAny<T[P]> extends true ? any : RecursiveProxy<T[P]>;
} : {
    [P in keyof T]: IsAny<T[P]> extends true ? any : T[P] extends Array<any> ? RecursiveProxy<T[P]> : T[P];
} & Extras;
export declare function createProxy<T>(obj: T): RecursiveProxy<T>;
export declare const Mutation: {
    fill: string;
    pop: string;
    push: string;
    reverse: string;
    shift: string;
    sort: string;
    splice: string;
    unshift: string;
};
export {};
