import { IDisposable } from "./types";
export declare type WatchFunction = (target: any, key: string, index?: number, item?: any) => void;
export interface IWatchFunctionCollection {
    [key: string]: WatchFunction[];
}
export interface IWatchableObject {
    _$_handlers?: IWatchFunctionCollection;
    _$_bindable?: {
        [key: string]: 0 | 1;
    };
}
export declare class AtomBinder {
    static refreshValue(target: any, key: any): void;
    static add_WatchHandler(target: any, key: any, handler: WatchFunction): void;
    static getPropertyDescriptor(target: any, key: string): PropertyDescriptor;
    static get_WatchHandler(target: IWatchableObject, key: string): WatchFunction[];
    static remove_WatchHandler(target: IWatchableObject, key: string, handler: WatchFunction): void;
    static invokeItemsEvent(target: any[], mode: string, index: number, item: any): void;
    static refreshItems(ary: any): void;
    static add_CollectionChanged(target: any[], handler: WatchFunction): IDisposable;
    static remove_CollectionChanged(t: any[], handler: WatchFunction): void;
    static watch(item: any, property: string, f: WatchFunction): IDisposable;
    static clear(a: any[]): any;
    static addItem(a: any[], item: any): any;
    static removeItem(a: any[], item: any): boolean;
}
//# sourceMappingURL=AtomBinder.d.ts.map