import type { IAddPivotFieldCommandParams, IMovePivotFieldCommandParams, IPivotTableAddedEventParams, IPivotTableMovedEventParams, IPivotTableRemovedEventParams, IPivotTableRenderedEventParams, IRemovePivotFieldCommandParams, ISetPivotCollapseCommandParams, ISetPivotFilterCommandParams, ISetPivotSortCommandParams, IUpdatePivotFieldSettingCommandParams, IUpdatePivotValuePositionCommandParams } from '@univerjs-pro/sheets-pivot';
import type { IEventBase } from '@univerjs/core/facade';
import { FEventName } from '@univerjs/core/facade';
/**
 * @ignore
 */
interface IFSheetsPivotTableEventNameMixin {
    /**
     * The before pivot table add event.The event parameter is {@link IPivotTableAddedEventParams}
     *
     * @example
     * ```typescript
     * univerAPI.addEvent(univerAPI.Event.BeforePivotTableAdd, (params) => {
     *     const { positionType, targetCellInfo } = params;
     *     if (positionType === univerAPI.Enum.PositionTypeEnum.Existing && targetCellInfo.sheetName === 'Sheet 1') {
     *         params.cancel = true;
     *         console.log(`The pivot table can't be added to the sheet ${targetCellInfo.sheetName}`);
     *     }
     * });
     * ```
     */
    readonly BeforePivotTableAdd: 'BeforePivotTableAdd';
    /**
     * The pivot table added event.The event parameter is {@link IPivotTableAddedEventParams}
     *
     * @example
     * ```typescript
     * univerAPI.addEvent(univerAPI.Event.PivotTableAdded, (params) => {
     *   const { positionType, targetCellInfo } = params;
     *   if (positionType === univerAPI.Enum.PositionTypeEnum.Existing) {
     *     console.log('A pivot table created in an existing sheet');
     *     console.log(`
     *       The target sheet name is ${targetCellInfo.sheetName},
     *       the target row is ${targetCellInfo.row}, the target column is ${targetCellInfo.column}
     *     `);
     *   } else {
     *     console.log('A pivot table created in a new sheet');
     *   }
     * });
     * ```
     */
    readonly PivotTableAdded: 'PivotTableAdded';
    /**
     * The before pivot table moved event.The event parameter is {@link IPivotTableMovedEventParams}
     *
     * @example
     * ```typescript
     * univerAPI.addEvent(univerAPI.Event.BeforePivotTableMove, (params) => {
     *     const { pivotTableId, targetCellInfo } = params;
     *     if (pivotTableId === 'pivotTable1' && targetCellInfo.sheetName === 'Sheet 1') {
     *         params.cancel = true;
     *         console.log(`The pivot table can't be moved to the sheet ${targetCellInfo.sheetName}`);
     *     }
     * });
     * ```
     */
    readonly BeforePivotTableMove: 'BeforePivotTableMove';
    /**
     * The pivot table moved event. The event parameter is {@link IPivotTableMovedEventParams}
     *
     * @example
     * ```typescript
     * univerAPI.addEvent(univerAPI.Event.PivotTableMoved, (params) => {
     *   const { pivotTableId, targetCellInfo, originTargetInfo } = params;
     *   if (pivotTableId === 'pivotTable1') {
     *     console.log(`
     *       The pivot table moved from row: ${originTargetInfo.row} & column: ${originTargetInfo.column}
     *       to the sheet ${targetCellInfo.sheetName} row: ${targetCellInfo.row} & column: ${targetCellInfo.column}
     *     `);
     *   }
     * });
     * ```
     */
    readonly PivotTableMoved: 'PivotTableMoved';
    /**
     * The pivot table calculated done and fill the value to worksheet, the event parameter is {@link IPivotTableRenderedEventParams}
     *
     * @example
     * ```typescript
     * // import { unionPivotViewRange } from '@univerjs-pro/sheets-pivot';
     * univerAPI.addEvent(univerAPI.Event.PivotTableRendered, (params) => {
     *     const { pivotTableId, rangeInfo } = params;
     *     console.log(`The pivot table ${pivotTableId} has been rendered`);
     *     if (rangeInfo) {
     *         console.log(unionPivotViewRange(rangeInfo));
     *     }
     * });
     * ```
     */
    readonly PivotTableRendered: 'PivotTableRendered';
    /**
     * The pivot table removed event. The event parameter is {@link IPivotTableRemovedEventParams}
     *
     * @example
     * ```typescript
     * univerAPI.addEvent(univerAPI.Event.PivotTableRemoved, (params) => {
     *    const { pivotTableId } = params;
     *    console.log(`The pivot table ${pivotTableId} has been removed`);
     * });
     * ```
     */
    readonly PivotTableRemoved: 'PivotTableRemoved';
    /**
     * The pivot table field added event. The event parameter is {@link IAddPivotFieldCommandParams}
     *
     * @example
     * ```typescript
     * const fWorkbook = univerAPI.getActiveWorkbook();
     * univerAPI.addEvent(univerAPI.Event.PivotTableFieldAdded, (params) => {
     *    const { pivotTableId, fieldId, fieldArea, fieldIndex } = params;
     *    const pivotTable = fWorkbook.getPivotTableById(pivotTableId);
     *    const fieldSetting = pivotTable.getFieldSetting('fieldId');
     *    console.log(fieldSetting);
     * });
     * ```
     */
    readonly PivotTableFieldAdded: 'PivotTableFieldAdded';
    /**
     * The pivot table field removed event. The event parameter is {@link IRemovePivotFieldCommandParams}
     *
     * @example
     * ```typescript
     * const fWorkbook = univerAPI.getActiveWorkbook();
     * univerAPI.addEvent(univerAPI.Event.PivotTableFieldRemoved, (params) => {
     *     const { pivotTableId, fieldId } = params;
     *     const pivotTable = fWorkbook.getPivotTableById(pivotTableId);
     *     const fieldSetting = pivotTable.getFieldSetting(fieldId);
     *     console.log(fieldSetting);
     * });
     * ```
     */
    readonly PivotTableFieldRemoved: 'PivotTableFieldRemoved';
    /**
     * The pivot table field moved event. The event parameter is {@link IMovePivotFieldCommandParams}
     *
     * @example
     * ```typescript
     * const fWorkbook = univerAPI.getActiveWorkbook();
     * univerAPI.addEvent(univerAPI.Event.PivotTableFieldMoved, (params) => {
     *   const { pivotTableId, fieldId, fieldArea, fieldIndex } = params;
     *   const pivotTable = fWorkbook.getPivotTableById(pivotTableId);
     *   const fieldSetting = pivotTable.getFieldSetting(fieldId);
     *   console.log(`The source name ${fieldSetting.sourceName} the display name ${fieldSetting.displayName}`);
     * });
     * ```
     */
    readonly PivotTableFieldMoved: 'PivotTableFieldMoved';
    /**
     * The pivot table field collapse changed event. The event parameter is {@link ISetPivotCollapseCommandParams}
     *
     * @example
     * ```typescript
     * const fWorkbook = univerAPI.getActiveWorkbook();
     * univerAPI.addEvent(univerAPI.Event.PivotTableFieldCollapseChanged, (params) => {
     *   const { pivotTableId, fieldId, isCollapsed } = params;
     *   const pivotTable = fWorkbook.getPivotTableById(pivotTableId);
     *   const fieldSetting = pivotTable.getFieldSetting(fieldId);
     *   console.log(`The source name ${fieldSetting.sourceName} the display name ${fieldSetting.displayName}`);
     * });
     * ```
     */
    readonly PivotTableFieldCollapseChanged: 'PivotTableFieldCollapseChanged';
    /**
     * The pivot table field filter changed event. The event parameter is {@link ISetPivotFilterCommandParams}
     *
     * @example
     * ```typescript
     * const fWorkbook = univerAPI.getActiveWorkbook();
     * univerAPI.addEvent(univerAPI.Event.PivotTableFieldFilterChanged, (params) => {
     *     const { pivotTableId, fieldId, filter } = params;
     *     const pivotTable = fWorkbook.getPivotTableById(pivotTableId);
     *     const fieldSetting = pivotTable.getFieldSetting(fieldId);
     *     console.log(`The Checklist filter value is ${fieldSetting.filterInfo.checklist}`);
     * });
     * ```
     */
    readonly PivotTableFieldFilterChanged: 'PivotTableFieldFilterChanged';
    /**
     * The pivot table field sort changed event. The event parameter is {@link ISetPivotSortCommandParams}
     *
     * @example
     * ```typescript
     * const fWorkbook = univerAPI.getActiveWorkbook();
     * univerAPI.addEvent(univerAPI.Event.PivotTableFieldSortChanged, (params) => {
     *    const { pivotTableId, fieldId, sort } = params;
     *    const pivotTable = fWorkbook.getPivotTableById(pivotTableId);
     *    const fieldSetting = pivotTable.getFieldSetting(fieldId);
     *    console.log(`The sort info is ${fieldSetting.sortInfo}`);
     * });
     * ```
     */
    readonly PivotTableFieldSortChanged: 'PivotTableFieldSortChanged';
    /**
     * The pivot table field setting changed event. The event parameter is {@link IUpdatePivotFieldSettingCommandParams}
     *
     *  @example
     * ```typescript
     * const fWorkbook = univerAPI.getActiveWorkbook();
     * univerAPI.addEvent(univerAPI.Event.PivotTableFieldSettingChanged, (params) => {
     *     const { pivotTableId, fieldId, setting } = params;
     *     const pivotTable = fWorkbook.getPivotTableById(pivotTableId);
     *     const fieldSetting = pivotTable.getFieldSetting(fieldId);
     *     console.log(`The source name ${fieldSetting.sourceName} the display name ${fieldSetting.displayName}`);
     * });
     * ```
     */
    readonly PivotTableFieldSettingChanged: 'PivotTableFieldSettingChanged';
    /**
     * The pivot table value position changed event. The event parameter is {@link IUpdatePivotValuePositionCommandParams}
     *
     * @example
     * ```typescript
     * const fWorkbook = univerAPI.getActiveWorkbook();
     * univerAPI.addEvent(univerAPI.Event.PivotTableValuePositionChanged, (params) => {
     *     const { pivotTableId, valueId, position } = params;
     *     const pivotTable = fWorkbook.getPivotTableById(pivotTableId);
     *     const valueSetting = pivotTable.getValueSetting(valueId);
     *     console.log(`The source name ${valueSetting.sourceName} the display name ${valueSetting.displayName}`);
     * });
     * ```
     */
    readonly PivotTableValuePositionChanged: 'PivotTableValuePositionChanged';
}
/**
 * @ignore
 */
export interface ISheetsPivotTableEventParamConfig {
    /**
     * The event parameter for the PivotTableAdded event.  {@link IPivotTableAddedEventParams}
     */
    PivotTableAdded: IPivotTableAddedEventParams & IEventBase;
    /**
     * The event parameter for the BeforePivotTableAdd event. {@link IPivotTableAddedEventParams}
     */
    BeforePivotTableAdd: IPivotTableAddedEventParams & IEventBase;
    /**
     * The event parameter for the BeforePivotTableMove event. {@link IPivotTableMovedEventParams}
     */
    BeforePivotTableMove: IPivotTableMovedEventParams & IEventBase;
    /**
     * The event parameter for the PivotTableMoved event. {@link IPivotTableMovedEventParams}
     */
    PivotTableMoved: IPivotTableMovedEventParams & IEventBase;
    /**
     * The event parameter for the PivotTableRendered event. {@link IPivotTableRenderedEventParams}
     */
    PivotTableRendered: IPivotTableRenderedEventParams & IEventBase;
    /**
     * The event parameter for the PivotTableRemoved event. {@link IPivotTableRemovedEventParams}
     */
    PivotTableRemoved: IPivotTableRemovedEventParams & IEventBase;
    /**
     * The event parameter for the PivotTableFieldAdded event. {@link IAddPivotFieldCommandParams}
     */
    PivotTableFieldAdded: IAddPivotFieldCommandParams & IEventBase;
    /**
     * The event parameter for the PivotTableFieldRemoved event. {@link IRemovePivotFieldCommandParams}
     */
    PivotTableFieldRemoved: IRemovePivotFieldCommandParams & IEventBase;
    /**
     * The event parameter for the PivotTableFieldMoved event. {@link IMovePivotFieldCommandParams}
     */
    PivotTableFieldMoved: IMovePivotFieldCommandParams & IEventBase;
    /**
     * The event parameter for the PivotTableFieldCollapseChanged event. {@link ISetPivotCollapseCommandParams}
     */
    PivotTableFieldCollapseChanged: ISetPivotCollapseCommandParams & IEventBase;
    /**
     * The event parameter for the PivotTableFieldFilterChanged event. {@link ISetPivotFilterCommandParams}
     */
    PivotTableFieldFilterChanged: ISetPivotFilterCommandParams & IEventBase;
    /**
     * The event parameter for the PivotTableFieldSortChanged event. {@link ISetPivotSortCommandParams}
     */
    PivotTableFieldSortChanged: ISetPivotSortCommandParams & IEventBase;
    /**
     * The event parameter for the PivotTableFieldSettingChanged event. {@link IUpdatePivotFieldSettingCommandParams}
     */
    PivotTableFieldSettingChanged: IUpdatePivotFieldSettingCommandParams & IEventBase;
    /**
     * The event parameter for the PivotTableValuePositionChanged event. {@link IUpdatePivotValuePositionCommand
     */
    PivotTableValuePositionChanged: IUpdatePivotValuePositionCommandParams & IEventBase;
}
export declare class FSheetsPivotTableEventNameMixin extends FEventName implements IFSheetsPivotTableEventNameMixin {
    get PivotTableAdded(): 'PivotTableAdded';
    get BeforePivotTableAdd(): 'BeforePivotTableAdd';
    get PivotTableRemoved(): 'PivotTableRemoved';
    get PivotTableMoved(): 'PivotTableMoved';
    get PivotTableRendered(): 'PivotTableRendered';
    get PivotTableFieldAdded(): 'PivotTableFieldAdded';
    get PivotTableFieldRemoved(): 'PivotTableFieldRemoved';
    get PivotTableFieldMoved(): 'PivotTableFieldMoved';
    get PivotTableFieldCollapseChanged(): 'PivotTableFieldCollapseChanged';
    get PivotTableFieldFilterChanged(): 'PivotTableFieldFilterChanged';
    get PivotTableFieldSortChanged(): 'PivotTableFieldSortChanged';
    get PivotTableFieldSettingChanged(): 'PivotTableFieldSettingChanged';
    get PivotTableValuePositionChanged(): 'PivotTableValuePositionChanged';
}
declare module '@univerjs/core/facade' {
    interface FEventName extends IFSheetsPivotTableEventNameMixin {
    }
    interface IEventParamConfig extends ISheetsPivotTableEventParamConfig {
    }
}
export {};
