import { DbxActionSnackbarComponent } from './action.snackbar.component';
import { InjectionToken, Type } from '@angular/core';
import { MatSnackBar, MatSnackBarConfig, MatSnackBarRef } from '@angular/material/snack-bar';
import { Milliseconds, Maybe } from '@dereekb/util';
import { DbxActionSnackbarDisplayConfig, DbxActionSnackbarType } from './action.snackbar';
import { DbxActionSnackbarGeneratorInput, DbxMakeActionSnackbarGeneratorConfiguration } from './action.snackbar.generator';
import * as i0 from "@angular/core";
export declare const DBX_ACTION_SNACKBAR_SERVICE_CONFIG: InjectionToken<unknown>;
export declare const DEFAULT_SNACKBAR_DIRECTIVE_DURATION: number;
export interface DbxActionSnackbarEventMakeConfig {
    [key: string]: DbxMakeActionSnackbarGeneratorConfiguration;
}
export interface DbxActionSnackbarServiceConfig<C = unknown> {
    readonly componentClass: Type<C>;
    readonly snackbar?: Pick<MatSnackBarConfig, 'horizontalPosition' | 'verticalPosition'>;
    readonly defaultDuration?: Milliseconds;
    readonly defaultUndoDuration?: Milliseconds;
    readonly eventTypeConfigs: DbxActionSnackbarEventMakeConfig;
}
/**
 * Used for managing/configuring the snackbar default values and pushing snackbar events.
 */
export declare class DbxActionSnackbarService<C = DbxActionSnackbarComponent> {
    readonly matSnackBar: MatSnackBar;
    readonly config: DbxActionSnackbarServiceConfig<C>;
    get componentClass(): Type<C>;
    get eventTypeConfigs(): DbxActionSnackbarEventMakeConfig;
    /**
     * Opens a new snackbar given the input configuration.
     *
     * @param config
     * @returns
     */
    openSnackbar<T = unknown, O = unknown>(config: DbxActionSnackbarDisplayConfig<T, O>): MatSnackBarRef<C>;
    generateDisplayConfig<T = unknown, O = unknown>(type: Maybe<DbxActionSnackbarType>, input: DbxActionSnackbarGeneratorInput<T, O>): Maybe<DbxActionSnackbarDisplayConfig<T, O>>;
    static ɵfac: i0.ɵɵFactoryDeclaration<DbxActionSnackbarService<any>, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<DbxActionSnackbarService<any>>;
}
