import { InjectionToken } from '@angular/core';
import { FormConfig } from '@praxisui/core';

/**
 * Configuração de abertura do Advanced Filter em gaveta pelo host.
 *
 * Notas para hosts que exibem botão "Salvar como atalho":
 * - Exiba a ação apenas quando `allowSaveTags === true`.
 * - Para habilitar o botão, verifique se há ao menos um filtro efetivo no DTO (campos não vazios).
 * - Monte o DTO para salvar mesclando `initialDto` e o valor atual do formulário (`lastValue`),
 *   e limpe chaves com valores vazios ('' | null | undefined) antes de chamar `onSaveShortcut(dto)`.
 */
interface FilterDrawerOpenConfig {
    resourcePath: string;
    formId: string;
    config: FormConfig;
    initialDto?: Record<string, any>;
    title?: string;
    onSubmit(dto: Record<string, any>): void;
    onClose?(): void;
    /** Permite que a UI do host exiba ação de salvar atalho (opcional, retrocompatível) */
    allowSaveTags?: boolean;
    /** Rótulo i18n para o botão de salvar atalho (opcional) */
    i18nSaveAsShortcut?: string;
    /** Callback disparado pelo host com o DTO atual quando o usuário optar por salvar um atalho */
    onSaveShortcut?: (dto: Record<string, any>) => void;
}
interface FilterDrawerAdapter {
    open(config: FilterDrawerOpenConfig): Promise<void> | void;
}
declare const FILTER_DRAWER_ADAPTER: InjectionToken<FilterDrawerAdapter>;

export { FILTER_DRAWER_ADAPTER };
export type { FilterDrawerAdapter, FilterDrawerOpenConfig };
