import { ActivatedRouteSnapshot, Router, RouterStateSnapshot } from '@angular/router';
import { Action, Store } from '@ngrx/store';
import { TranslateService } from '@ngx-translate/core';
import { MonkeyEcxCommonsService } from '.';
import { MonkeyEcxDiscoveryParamsService, MonkeyEcxPaginationService, MonkeyEcxTokenStorageService } from '../..';
import { MonkeyEcxCommonsConfig, MonkeyEcxInitialResolverConfig } from '../../interfaces';
import { MonkeyEcxService } from '../monkeyecx-service.service';
declare type Selectors = {
    selectByIdentifier: Function;
    selectOneByIdentifier?: never;
    selectControl: Function;
    selectLinks?: Function;
    selectPage?: Function;
} | {
    selectOneByIdentifier: Function;
    selectByIdentifier?: never;
    selectControl: Function;
};
export declare abstract class MonkeyEcxCommonsResolveService extends MonkeyEcxCommonsService {
    private action;
    private selector;
    protected route: string | null;
    protected currentRoute: string | null;
    protected paginationService: MonkeyEcxPaginationService;
    protected translateService: TranslateService;
    protected router: Router;
    protected store: Store<any>;
    protected monkeyDiscovery: MonkeyEcxDiscoveryParamsService;
    constructor(monkeyecxService: MonkeyEcxService, tokenStorage: MonkeyEcxTokenStorageService, config: {
        actions: {
            load: Action;
            loadPagination?: Action;
        };
        selectors: Selectors;
    });
    protected getData(): Promise<void>;
    protected loadPage(): Promise<void>;
    /**
     * @description Inicializar a class genérica
     * @param (args: MonkeyEcxInitialResolverConfig)
     * => route é obrigátorio pois ele quem inicializa a store.
     * A searchClass só se faz necessaria quando for usar filtros
     */
    protected init(args: MonkeyEcxInitialResolverConfig): void;
    resolve(route: ActivatedRouteSnapshot | null, state: RouterStateSnapshot | null, otherArgs?: MonkeyEcxCommonsConfig): void;
    /**
     * @description Atualizar os filtros da tela
     * @param (search: T, route?: string)
     * => route é opcional, passar ele apenas se a rota for diferente do padrão
     */
    setSearch<T>(search: T, route?: string): void;
    /**
     * @description Navegação para details.
     * Por padrão sera redirecionado para '${currentRoute}/details'
     * @param (detailsData: T, route?: string)
     * => route é opcional, passar ele apenas se a rota for diferente do padrão
     */
    navigateToDetails<T>(detailsData: T, route?: string): void;
}
export {};
