import { FileArrayAcceptMatchConfig } from './upload.accept';
import { DbxButtonStyle } from '../../button/button.component';
import { Maybe } from '@dereekb/util';
import { DbxFileUploadButtonComponent, DbxFileUploadButtonFilesChangedEvent } from './upload.button.component';
import { DbxFileUploadAreaComponent, DbxFileUploadAreaFilesChangedEvent } from './upload.area.component';
import { AbstractDbxFileUploadComponent, DbxFileUploadFilesChangedEvent } from './abstract.upload.component';
import * as i0 from "@angular/core";
export type DbxFileUploadMode = 'area' | 'button' | 'default';
export interface DbxFileUploadComponentConfig {
    readonly mode?: DbxFileUploadMode;
    readonly accept?: Maybe<FileArrayAcceptMatchConfig['accept']>;
    readonly multiple?: Maybe<boolean>;
    /**
     * If true, the area will be clickable to open the file picker.
     */
    readonly clickAreaToUpload?: Maybe<boolean>;
    readonly area?: Maybe<{
        readonly icon?: Maybe<string>;
        readonly text?: Maybe<string>;
        readonly hint?: Maybe<string | boolean>;
    }>;
    readonly button?: Maybe<{
        readonly icon?: Maybe<string>;
        readonly text?: Maybe<string>;
        readonly style?: DbxButtonStyle;
    }>;
}
/**
 * Combines both the file upload area and button into a single component.
 */
export declare class DbxFileUploadComponent extends AbstractDbxFileUploadComponent {
    readonly config: import("@angular/core").InputSignal<Maybe<DbxFileUploadComponentConfig>>;
    readonly area: import("@angular/core").Signal<DbxFileUploadAreaComponent>;
    readonly button: import("@angular/core").Signal<DbxFileUploadButtonComponent>;
    readonly buttonStyle: import("@angular/core").InputSignal<Maybe<DbxButtonStyle>>;
    readonly mode: import("@angular/core").InputSignal<Maybe<DbxFileUploadMode>>;
    readonly text: import("@angular/core").InputSignal<Maybe<string>>;
    readonly icon: import("@angular/core").InputSignal<Maybe<string>>;
    readonly hint: import("@angular/core").InputSignal<Maybe<string | boolean>>;
    readonly modeSignal: import("@angular/core").Signal<"button" | "area" | "default">;
    readonly showButtonSignal: import("@angular/core").Signal<boolean>;
    readonly showAreaSignal: import("@angular/core").Signal<boolean>;
    readonly clickAreaToUpload: import("@angular/core").InputSignal<Maybe<boolean>>;
    readonly clickAreaToUploadSignal: import("@angular/core").Signal<Maybe<boolean>>;
    readonly buttonTextSignal: import("@angular/core").Signal<Maybe<string>>;
    readonly buttonIconSignal: import("@angular/core").Signal<Maybe<string>>;
    readonly areaTextSignal: import("@angular/core").Signal<Maybe<string>>;
    readonly areaIconSignal: import("@angular/core").Signal<Maybe<string>>;
    readonly areaHintSignal: import("@angular/core").Signal<Maybe<string | boolean>>;
    readonly uploadMultipleSignal: import("@angular/core").Signal<Maybe<boolean>>;
    readonly uploadAcceptSignal: import("@angular/core").Signal<string | import("./upload.accept").FileAcceptFilterTypeStringArray | import("./upload.accept").FileAcceptFunction>;
    readonly filesChanged: import("@angular/core").OutputEmitterRef<DbxFileUploadFilesChangedEvent>;
    areaClicked(): void;
    areaFilesChanged(event: DbxFileUploadAreaFilesChangedEvent): void;
    buttonFilesChanged(event: DbxFileUploadButtonFilesChangedEvent): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<DbxFileUploadComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<DbxFileUploadComponent, "dbx-file-upload", never, { "config": { "alias": "config"; "required": false; "isSignal": true; }; "buttonStyle": { "alias": "buttonStyle"; "required": false; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "text": { "alias": "text"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; "clickAreaToUpload": { "alias": "clickAreaToUpload"; "required": false; "isSignal": true; }; }, { "filesChanged": "filesChanged"; }, never, ["*"], true, never>;
}
