import { PresetConfig, ComponentPresets } from './types';
import * as i0 from "@angular/core";
/**
 * Servicio para gestionar presets de componentes.
 *
 * Los presets permiten definir configuraciones reutilizables
 * de componentes (tamaño, color, variante, etc.) que se pueden
 * aplicar con un nombre semántico.
 *
 * @example
 * // En un componente
 * presets = inject(PresetService);
 *
 * // Obtener preset
 * const buttonProps = this.presets.get<ButtonMetadata>('button', 'primary-action');
 * // { size: 'large', color: 'primary', fill: 'solid' }
 */
export declare class PresetService {
    private readonly _presets;
    /**
     * Obtiene un preset específico para un componente
     *
     * @param component Tipo de componente (ej: 'button', 'card', 'input')
     * @param presetName Nombre del preset (ej: 'primary-action', 'compact')
     * @returns Propiedades del preset o objeto vacío si no existe
     *
     * @example
     * // Obtener preset de botón
     * const props = presets.get<ButtonMetadata>('button', 'primary-action');
     *
     * // Usar en componente
     * <val-button [props]="props"></val-button>
     */
    get<T extends Record<string, unknown>>(component: string, presetName: string): Partial<T>;
    /**
     * Verifica si existe un preset
     */
    has(component: string, presetName: string): boolean;
    /**
     * Registra presets de la aplicación
     *
     * @param presets Configuración de presets
     *
     * @example
     * presets.registerPresets({
     *   button: {
     *     'primary-action': { size: 'large', color: 'primary' },
     *   },
     *   card: {
     *     'feature': { variant: 'elevated' },
     *   }
     * });
     */
    registerPresets(presets: PresetConfig): void;
    /**
     * Agrega presets para un componente específico (merge con existentes)
     */
    registerComponentPresets(component: string, presets: ComponentPresets): void;
    /**
     * Obtiene todos los nombres de presets para un componente
     */
    getPresetNames(component: string): string[];
    /**
     * Obtiene todos los componentes con presets registrados
     */
    getRegisteredComponents(): string[];
    static ɵfac: i0.ɵɵFactoryDeclaration<PresetService, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<PresetService>;
}
