import { IFormSchema, IFormPropertySchema } from "../../../services/formSchema/form-schema-service";
import { DisposableCollection } from "../../../services/disposable-collection";
import { AureliaHelperService } from "../../../services/aurelia-helper-service";
import { ISortColumnService } from "../../../services/sort-column-service";
import { IFormSchemaCollectionInstanceApi, ValidateResult } from "../../../services/formSchema/form-schema-collection-controller";
import { ValidationController } from "aurelia-validation";
import { IValidationService, IValidationRenderer } from "../../../services/validation/validation-service";
import "./form-schema-collection.css";
import { JavaScriptService } from "../../../services/javascript-service";
export declare class FormSchemaCollection {
    private aureliaHelperService;
    private javaScriptService;
    onNewInstances?: (instances: Array<any>) => void;
    externalInsertButton: Element | null;
    tableClass: string | null;
    controller: IFormSchemaCollectionInstanceApi<any>;
    theTable: Element;
    formSchema: IFormSchema;
    handleDelete: ((instance: any) => Promise<boolean>) | undefined;
    handleNew: ((instance: any) => Promise<boolean>) | undefined;
    handleCreate: (() => Promise<any>) | undefined;
    handleUpdate: ((instance: any, propertyName: string, newValue: any, oldValue: any) => Promise<boolean>) | undefined;
    sortColumnService: ISortColumnService;
    properties: Array<IFormPropertySchema>;
    renderers: Array<IValidationRenderer>;
    validationService?: IValidationService;
    validationController?: ValidationController;
    insertOnNew: boolean;
    readonly disableNew: boolean;
    readonly disableDelete: boolean;
    readonly showKeyColumn: boolean;
    private binding;
    subscriptions: DisposableCollection;
    disableSorting(): void;
    enableSorting(): void;
    constructor(aureliaHelperService: AureliaHelperService, javaScriptService: JavaScriptService);
    private instances;
    private setInstances(value);
    private clearInstances();
    bind(): void;
    unbind(): void;
    private initializeOnLoad();
    initInstance(instance: IWatchedInstance): void;
    unInitInstance(instance: IWatchedInstance): void;
    unwatchPropertyValues(instance: IWatchedInstance): void;
    watchPropertyValues(instance: IWatchedInstance): void;
    deleteInstance(instance: IWatchedInstance): void;
    createInstance(): void;
    saveNewInstance(instance: IWatchedInstance): void;
    cancelNewInstance(instance: IWatchedInstance): void;
    updateInstance(instance: IWatchedInstance, propertyName: string, newValue: any, oldValue: any): void;
    deleteRow(instance: IWatchedInstance): void;
    newRow(instance: any): void;
    replaceRow(oldInstance: any, newInstance: any): void;
    handleValidationChanged(instance: IWatchedInstance, errors: Array<ValidateResult>): void;
    animationDuration: number;
    animateRowChanged(instance: IWatchedInstance): void;
    private normalizeOrdinalPositions();
    revert(ndx: number): void;
    private getValidationMessageHtml(instance, errors);
    private dropdownTextFromValue(items, value);
    private computeSelectedItemsString(items, selectedItems);
}
export interface IWatchedInstance {
    _propertyChangeSubscriptions: DisposableCollection;
    _pendingInsert: boolean;
    _newlyInserted: boolean;
    _ordinalPosition: number | undefined;
    _validationHtml: string | undefined;
    [number: string]: any;
}
