import { ElementRef, OnDestroy } from '@angular/core';
import { SafeResourceUrl } from '@angular/platform-browser';
import { AbstractSubscriptionDirective, DbxButtonDisplay } from '@dereekb/dbx-core';
import { type DbxButtonStyle } from '../../../button/button.component';
import { Getter, Maybe, PromiseOrValue } from '@dereekb/util';
import { Observable } from 'rxjs';
import * as i0 from "@angular/core";
export interface DbxDownloadBlobButtonConfig {
    /**
     * Button display customization.
     */
    readonly buttonDisplay?: Maybe<DbxButtonDisplay>;
    /**
     * Custom button style to use.
     */
    readonly buttonStyle?: Maybe<DbxButtonStyle>;
    /**
     * Name of the file to save when downloaded.
     */
    readonly fileName?: Maybe<string>;
    /**
     * Blob to download.
     */
    readonly blob?: Maybe<Blob>;
    /**
     * Getter for the blob to download.
     */
    readonly loadBlob?: Maybe<Getter<PromiseOrValue<Maybe<Blob>>>>;
    /**
     * Whether or not to preload the blob from the blobGetter instead of waiting for the button to be moused over.
     *
     * Ignored if blobGetter is not provided.
     */
    readonly preloadBlob?: Maybe<boolean>;
}
/**
 * Button used for downloading an arbitrary blob based on the input configuration.
 */
export declare class DbxDownloadBlobButtonComponent extends AbstractSubscriptionDirective implements OnDestroy {
    private readonly _sanitizer;
    private readonly _browserObjectUrl;
    readonly config: import("@angular/core").InputSignal<Maybe<DbxDownloadBlobButtonConfig>>;
    readonly downloadButton: import("@angular/core").Signal<Maybe<ElementRef<any>>>;
    readonly config$: Observable<Maybe<DbxDownloadBlobButtonConfig>>;
    readonly blob$: Observable<Maybe<Blob>>;
    readonly blobSignal: import("@angular/core").Signal<Maybe<Blob>>;
    readonly fileUrlSignal: import("@angular/core").Signal<SafeResourceUrl | undefined>;
    readonly fileNameSignal: import("@angular/core").Signal<string>;
    readonly downloadReadySignal: import("@angular/core").Signal<boolean>;
    readonly buttonDisplaySignal: import("@angular/core").Signal<DbxButtonDisplay>;
    readonly buttonStyleSignal: import("@angular/core").Signal<DbxButtonStyle>;
    ngOnDestroy(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<DbxDownloadBlobButtonComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<DbxDownloadBlobButtonComponent, "dbx-download-blob-button", never, { "config": { "alias": "config"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
}
