/**
 * Interface used to ensure we have a consistent structure across our listing pages
 *
 * @todo This should be moved to ngx-techlify-core
 *
 * Advantages of this abstract class
 * - Less code, less maintenance, less bugs
 * - more consistent code
 * - comments on more code
 * - save time, save energy
 */
export declare abstract class TechlifyListingControllerInterface {
    models: any[];
    selectedModelIds: any[];
    isAllSelected: boolean;
    page: number;
    perPage: number;
    lastPage: number;
    isWorking: boolean;
    filterForm: any;
    /**
     * Function that listens for any changes in the form group to apply the filters
     */
    listenForChanges(): void;
    /**
     * Function that loads the main models of the application
     */
    abstract loadData(): void;
    /**
     * Reload all data from page 1
     */
    reload(): void;
    /**
     * Can be called when the user is scrolling,
     * to trigger loading a new page of data
     */
    onScroll(): void;
    /**
     * Reset the Filter.
     *
     * @param field Field name.
     */
    resetFilter(field: string): void;
    /**
     * Updates a specific row in the table.
     * @param model The model to be updated.
     * @param index The index of the model in the list.
     */
    modelUpdated(model: any, index: number): void;
    /**
     * Adds a new model at the first position in the table.
     * @param model The new model to be added.
     */
    modelCreated(model: any): void;
    /**
     * Remove a model from the list.
     * @param index Index of the model in the list.
     */
    modelDeleted(index: number): void;
    /**
     * Used for multi select
     * Trigerred when select all is toggled
     */
    selectAll(): void;
    /**
     * Used for multi select
     * Trigerred if any entry section is modified
     */
    isSelectionModified(event: any, model: any): void;
}
