import type { SlicerEntityChange } from '@univerjs-pro/sheets-slicer';
import type { IEventBase } from '@univerjs/core/facade';
import { FEventName } from '@univerjs/core/facade';
/** Identifies the committed state that changed for a hosted filter control. */
export declare enum SlicerChangedKind {
    /** Per-view definition/settings change, including a lost resource behind a surviving Drawing. */
    Definition = "definition",
    /** Shared cache configuration/connections change, fanned out to hosted views. */
    Cache = "cache",
    /** Per-Drawing geometry/order change. */
    Drawing = "drawing",
    /** Shared field selection/date range or the source Table column native-filter change. */
    Filter = "filter"
}
/**
 * Defensive hosted Slicer identity. Removed retains its last committed identity before hosted Drawing deletion.
 * IDs belong to the host, not the source sheet; cacheId may be unavailable for resource-free placeholders.
 * @see {@link FWorksheet.getSlicer}
 */
export interface ISlicerEventParams extends IEventBase {
    /** Host Workbook ID. */
    unitId: string;
    /** Host Worksheet ID, not the source Worksheet ID. */
    subUnitId: string;
    /** Business view identity returned by getId. */
    viewId: string;
    /** Official hosted Drawing identity returned by getDrawingId. */
    drawingId: string;
    /** Current/last-known shared cache ID; absent when unavailable. */
    cacheId?: string;
}
/**
 * Final committed Slicer state change delivered in a microtask after synchronous mutation/recovery.
 * Cache/filter changes fan out to hosted views; definition/drawing changes are per view. Not remote-save/render events.
 * An awaited selection setter exposes its committed Filter event; multiple changed kinds may deliver separate callbacks.
 * @see {@link SlicerChangedKind}
 */
export interface ISlicerChangedEventParams extends ISlicerEventParams {
    /** Committed state category; not a command acceptance or rendering flag. */
    kind: SlicerChangedKind;
    /** Actual committed business entity change; absent for Drawing and native Table filters. */
    change?: SlicerEntityChange;
}
/** Defensive hosted Timeline identity; Removed retains the identity before hosted Drawing deletion. */
export interface ITimelineEventParams extends IEventBase {
    /** Host Workbook ID. */
    unitId: string;
    /** Host Worksheet ID, not the source Worksheet ID. */
    subUnitId: string;
    /** Business view identity returned by getId. */
    viewId: string;
    /** Official hosted Drawing identity returned by getDrawingId. */
    drawingId: string;
    /** Current/last-known shared cache ID; absent when unavailable. */
    cacheId?: string;
}
/** Final committed Timeline state change, with the same microtask/fanout semantics as Slicer changes. */
export interface ITimelineChangedEventParams extends ITimelineEventParams {
    /** Committed state category; not a command acceptance or rendering flag. */
    kind: SlicerChangedKind;
    /** Actual committed business entity change; absent for Drawing/native Table changes. */
    change?: SlicerEntityChange;
}
/** @ignore */
interface IFSheetsSlicerEventNameMixin {
    /**
     * Observes newly hosted Drawings, including valid placeholders, not unattached/transient rolled-back views.
     * Lazy subscriptions deduplicate identity/kind per batch and stop on unsubscribe, API/unit/plugin disposal.
     * Deliveries run after synchronous mutation/recovery; payloads are defensive copies.
     * @returns {string} The owned SlicerAdded event name, with ISlicerEventParams payload.
     * @see {@link ISlicerEventParams}
     * @example
     * ```ts
     * const subscription = univerAPI.addEvent(univerAPI.Event.SlicerAdded, (event) => {
     *     const viewId = event.viewId;
     * });
     * subscription.dispose();
     * ```
     */
    readonly SlicerAdded: 'SlicerAdded';
    /**
     * Observes hosted Drawing disappearance with its previous identity, not a false removal return alone.
     * Lazy subscriptions deduplicate identity/kind per batch and stop on unsubscribe, API/unit/plugin disposal.
     * Deliveries run after synchronous mutation/recovery; payloads are defensive copies.
     * @returns {string} The owned SlicerRemoved event name, with ISlicerEventParams payload.
     * @see {@link ISlicerEventParams}
     * @example
     * ```ts
     * const subscription = univerAPI.addEvent(univerAPI.Event.SlicerRemoved, (event) => {
     *     const viewId = event.viewId;
     * });
     * subscription.dispose();
     * ```
     */
    readonly SlicerRemoved: 'SlicerRemoved';
    /**
     * Observes final committed state by kind, not general source invalidation or rendered state.
     * Lazy subscriptions deduplicate identity/kind per batch and stop on unsubscribe, API/unit/plugin disposal.
     * Deliveries run after synchronous mutation/recovery; payloads are defensive copies.
     * @returns {string} The owned SlicerChanged event name, with ISlicerChangedEventParams payload.
     * @see {@link ISlicerChangedEventParams}
     * @example
     * ```ts
     * const subscription = univerAPI.addEvent(univerAPI.Event.SlicerChanged, (event) => {
     *     const viewId = event.viewId;
     * });
     * subscription.dispose();
     * ```
     */
    readonly SlicerChanged: 'SlicerChanged';
    /**
     * Observes newly hosted Drawings, including valid placeholders, not unattached/transient rolled-back views.
     * Lazy subscriptions deduplicate identity/kind per batch and stop on unsubscribe, API/unit/plugin disposal.
     * Deliveries run after synchronous mutation/recovery; payloads are defensive copies.
     * @returns {string} The owned TimelineAdded event name, with ITimelineEventParams payload.
     * @see {@link ITimelineEventParams}
     * @example
     * ```ts
     * const subscription = univerAPI.addEvent(univerAPI.Event.TimelineAdded, (event) => {
     *     const viewId = event.viewId;
     * });
     * subscription.dispose();
     * ```
     */
    readonly TimelineAdded: 'TimelineAdded';
    /**
     * Observes hosted Drawing disappearance with its previous identity, not a false removal return alone.
     * Lazy subscriptions deduplicate identity/kind per batch and stop on unsubscribe, API/unit/plugin disposal.
     * Deliveries run after synchronous mutation/recovery; payloads are defensive copies.
     * @returns {string} The owned TimelineRemoved event name, with ITimelineEventParams payload.
     * @see {@link ITimelineEventParams}
     * @example
     * ```ts
     * const subscription = univerAPI.addEvent(univerAPI.Event.TimelineRemoved, (event) => {
     *     const viewId = event.viewId;
     * });
     * subscription.dispose();
     * ```
     */
    readonly TimelineRemoved: 'TimelineRemoved';
    /**
     * Observes final committed state by kind, not general source invalidation or rendered state.
     * Lazy subscriptions deduplicate identity/kind per batch and stop on unsubscribe, API/unit/plugin disposal.
     * Deliveries run after synchronous mutation/recovery; payloads are defensive copies.
     * @returns {string} The owned TimelineChanged event name, with ITimelineChangedEventParams payload.
     * @see {@link ITimelineChangedEventParams}
     * @example
     * ```ts
     * const subscription = univerAPI.addEvent(univerAPI.Event.TimelineChanged, (event) => {
     *     const viewId = event.viewId;
     * });
     * subscription.dispose();
     * ```
     */
    readonly TimelineChanged: 'TimelineChanged';
}
/** @ignore */
interface ISheetsSlicerEventParamConfig {
    SlicerAdded: ISlicerEventParams;
    SlicerRemoved: ISlicerEventParams;
    SlicerChanged: ISlicerChangedEventParams;
    TimelineAdded: ITimelineEventParams;
    TimelineRemoved: ITimelineEventParams;
    TimelineChanged: ITimelineChangedEventParams;
}
/** @ignore */
export declare class FSheetsSlicerEventNameMixin extends FEventName implements IFSheetsSlicerEventNameMixin {
    get SlicerAdded(): 'SlicerAdded';
    get SlicerRemoved(): 'SlicerRemoved';
    get SlicerChanged(): 'SlicerChanged';
    get TimelineAdded(): 'TimelineAdded';
    get TimelineRemoved(): 'TimelineRemoved';
    get TimelineChanged(): 'TimelineChanged';
}
declare module '@univerjs/core/facade' {
    interface FEventName extends IFSheetsSlicerEventNameMixin {
    }
    interface IEventParamConfig extends ISheetsSlicerEventParamConfig {
    }
}
export {};
