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
*
*/
preset?: string;
/**
* Button configuration. Values here override preset values.
* When using presets, only partial props are needed (preset provides defaults).
*/
props: Partial;
/**
* 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;
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;
static ɵcmp: i0.ɵɵComponentDeclaration;
}