import { IList$1, Type, Base } from "./type";
import { ObservableCollection$1 } from "./ObservableCollection$1";
import { NotifyCollectionChangedEventArgs } from "./NotifyCollectionChangedEventArgs";
import { SyncableObservableCollectionChangedListener } from "./SyncableObservableCollectionChangedListener";
export declare class SyncableObservableCollection$2<T1, T2> extends Base {
    protected $t1: Type;
    protected $t2: Type;
    private a;
    syncTarget: SyncableObservableCollection$1<T2>;
    private _compare;
    compare: (arg1: T1, arg2: T2) => boolean;
    private _createTo;
    createTo: (arg1: T1) => T2;
    private _createFrom;
    createFrom: (arg1: T2) => T1;
    private z(a, b);
    private ae();
    private j(a, b);
    private af(a, b);
    private ag(a, b);
    private ah(a, b);
    protected y(a: NotifyCollectionChangedEventArgs): void;
    private ac(a, b);
    private ad<T, F>($t, $f, a, b, c);
    private g;
    private h;
    private f;
    private _inner;
    constructor($t1: Type, $t2: Type, a: number);
    constructor($t1: Type, $t2: Type, a: number, b: ObservableCollection$1<T1>);
    constructor($t1: Type, $t2: Type, a: number, ..._rest: any[]);
    private t(a, b);
    add(a: T1): boolean;
    add1(a: number, b: T1): void;
    clear(): void;
    get(a: number): T1;
    indexOf(a: T1): number;
    remove1(a: T1): boolean;
    remove(a: number): T1;
    set(a: number, b: T1): T1;
    size(): number;
    private m;
    addChangedListener(a: SyncableObservableCollectionChangedListener): void;
    removeChangedListener(a: SyncableObservableCollectionChangedListener): void;
    addListener(a: (sender: any, e: NotifyCollectionChangedEventArgs) => void): void;
    removeListener(a: (sender: any, e: NotifyCollectionChangedEventArgs) => void): void;
    readonly all: IList$1<T1>;
    static $t: Type;
}
export declare class SyncableObservableCollection$1<T> extends SyncableObservableCollection$2<T, T> {
    protected $t: Type;
    constructor($t: Type);
    static $t: Type;
}
