import { EventEmitter, OnChanges, OnInit, SimpleChanges } from '@angular/core';
import { DownloadService } from '../../../services/download.service';
import { IconService } from '../../../services/icons.service';
import { NavigationService } from '../../../services/navigation';
import { ButtonMetadata } from '../../types';
import * as i0 from "@angular/core";
export declare class ButtonComponent implements OnInit, OnChanges {
    private download;
    private navigation;
    states: {
        ENABLED: "ENABLED";
        DISABLED: "DISABLED";
        WORKING: "WORKING";
        ERROR: "ERROR";
    };
    private presets;
    /**
     * The text to display on the button.
     */
    displayText: string;
    /**
     * Preset name to apply. Presets define reusable button configurations
     * (size, color, fill, etc.) that can be registered at app level.
     *
     * @example
     * <val-button preset="primary-action" [props]="{ text: 'Save' }"></val-button>
     */
    preset?: string;
    /**
     * Button configuration. Values here override preset values.
     * When using presets, only partial props are needed (preset provides defaults).
     */
    props: Partial<ButtonMetadata>;
    /**
     * Resolved props after merging preset + explicit props.
     * Preset values are overridden by explicit props.
     */
    resolvedProps: ButtonMetadata;
    /**
     * Event emitted when the button is clicked.
     */
    onClick: EventEmitter<string>;
    constructor(download: DownloadService, _icon: IconService, navigation: NavigationService);
    ngOnInit(): void;
    ngOnChanges(changes: SimpleChanges): void;
    /**
     * Merge preset configuration with explicit props.
     * Explicit props take precedence over preset values.
     */
    private resolveProps;
    /**
     * Set up the text content based on the resolved props configuration.
     */
    private setupDisplayText;
    /**
     * Interpolate placeholders in content with provided values.
     * Supports {{placeholder}} format.
     */
    private interpolateContent;
    clickHandler(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<ButtonComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<ButtonComponent, "val-button", never, { "preset": { "alias": "preset"; "required": false; }; "props": { "alias": "props"; "required": false; }; }, { "onClick": "onClick"; }, never, never, true, never>;
}
