import { ViewCompiler, Container, BindingEngine, TaskQueue } from "aurelia-framework";
import 'select2';
import { Options } from 'select2';
import * as breeze from 'breeze-client';
import { GridDataSource } from "../../data/data-source";
import { Datacontext } from "../../data/data-context";
import { I18N } from "aurelia-i18n";
export interface CreateOtions {
    label: string;
    fn: Function;
    enabled: boolean | Function;
    this?: Object;
}
export declare class Select2Attribute {
    private element;
    private viewCompiler;
    private container;
    private datacontext;
    private i18n;
    private bindingEngine;
    private taskQueue;
    value: any;
    dataSource: GridDataSource<breeze.Entity>;
    optionsValue: string;
    optionsText: string;
    createOptions: CreateOtions;
    sortColumn: string;
    filterProperties: string;
    templateResultFn: (p: any) => string;
    private select;
    private select2Container;
    private observer;
    private pageSize;
    constructor(element: Element, viewCompiler: ViewCompiler, container: Container, datacontext: Datacontext, i18n: I18N, bindingEngine: BindingEngine, taskQueue: TaskQueue);
    attached(): void;
    get canAdd(): any;
    removeFn: () => void;
    addFn(): void;
    insert(containerElement: any, html: any, viewModel: any): () => void;
    valueChanged(newVal: any, oldVal: any): void;
    detached(): void;
    addHiddenDivToBody(): HTMLDivElement;
    getValue(item: any, propertyPath: string): any;
    fillOptions(options: Options): void;
    private get evalFilterProperties();
    getSortModelFromSortColumn(sortColumn: string): any[];
    getSortDirection(col: string): string;
    replaceTranslation(col: string): string;
    synchronizeClasses(): void;
    startClassesSyncObserver(): void;
}
