import type { SnackbarVariant } from '../components/snackbar/FmSnackbar.vue'; import { type Plugin } from 'vue'; export interface SnackbarInfo { title?: string; message?: string; /** default: true */ dismissable?: boolean; action?: string; type?: SnackbarVariant; onAction?: () => unknown; onClose?: () => unknown; zIndex?: number; position?: SnackbarPosition; spinner?: boolean; persistent?: boolean; } export declare enum SnackbarPosition { TOP = "top", TOP_LEFT = "top-left", TOP_RIGHT = "top-right", BOTTOM = "bottom", BOTTOM_LEFT = "bottom-left", BOTTOM_RIGHT = "bottom-right" } export declare enum SnackbarMountStage { /** The stage where snackbar to be animated */ PREMOUNT = "PREMOUNT", /** The stage where snackbar has finished animated */ MOUNTED = "MOUNTED", /** The stage where snackbar to be removed */ EXPIRED = "EXPIRED" } export interface SnackbarState extends Omit { id: SnackbarId; mountStage: SnackbarMountStage; duration?: number | null; type: SnackbarVariant; renderedHeight: number; } export type SnackbarId = string; export interface SnackbarProvider { /** * @param snackbar snackbar props * @param duration `null` if unclosable, default 5 seconds */ open(snackbar?: SnackbarInfo, duration?: number | null): SnackbarId; close(snackbarId: SnackbarId): void; updateSnackbar(snackbarId: SnackbarId, snackbar: Partial): void; } export declare class SnackbarService implements SnackbarProvider { store: { snackbars: { id: string; mountStage: SnackbarMountStage; duration?: number | null | undefined; type: SnackbarVariant; renderedHeight: number; message?: string | undefined; title?: string | undefined; zIndex?: number | undefined; position?: SnackbarPosition | undefined; spinner?: boolean | undefined; onClose?: (() => unknown) | undefined; dismissable?: boolean | undefined; action?: string | undefined; onAction?: (() => unknown) | undefined; persistent?: boolean | undefined; }[]; }; open(snackbar?: SnackbarInfo, duration?: number | null): SnackbarId; onSnackbarMounted(snackbarId: SnackbarId, renderedHeight: number, persist?: boolean): void; /** * Triggers animation to remove snackbar DOM. * * * To immediately remove snackbar DOM, use .removeSnackbar */ close(snackbarId: SnackbarId): void; removeSnackbar(snackbarId: SnackbarId): void; updateSnackbar(snackbarId: SnackbarId, snackbar: Partial): void; } export declare const SnackbarPlugin: Plugin; export default SnackbarPlugin;