import { T_el, T_fn, T_fn_cb, T_opt_base } from './ax';
export type T_proxy = {
    target: T_obj | any[],
    key?: string,
    proxy?: T_obj,
    value?: any,
    type?: 'get' | 'set' | 'delete' | 'add' | 'edit',
}
type T_proxy_new = { target: T_fn, args: any, proxy: any, type: 'new' }
type T_proxy_apply = { target: T_fn, args: any[], pointer: any, type: 'apply' }
type T_proxy_complete = { target: any, proxy: any, keys: string[], type: 'complete' }
export interface T_observe extends T_opt_base {
    deep?: boolean;
    accept?: boolean;
    once?: boolean;
    methods?: string[];
    onGet?: (opt: T_proxy) => any;
    onAdd?: (opt: T_proxy) => any;
    onEdit?: (opt: T_proxy) => any;
    onSet?: (opt: T_proxy) => any;
    onDelete?: (opt: T_proxy) => any;
    onCrud?: (opt: T_proxy) => any;
    onNew?: (opt: T_proxy_new) => any;
    onApply?: (opt: T_proxy_apply) => any;
    onComplete?: (opt: T_proxy_complete) => any;
    onTrigger?: (opt: T_proxy | T_proxy_new | T_proxy_apply) => any;
}
