import type { IBoardData } from '@univerjs-pro/boards';
import type { ISnapshotBlockJson, ISnapshotBlockJsonResponse } from '@univerjs-pro/exchange-client';
import { FUniver } from '@univerjs/core/facade';
/** @ignore */
export interface IFUniverBoardsExchangeClientMixin {
    /**
     * Export a persisted Board unit as a PPTX file.
     * @param {string} unitId ID of the Board unit to export
     * @returns {Promise<File | undefined>} A promise that resolves to the exported PPTX file, or `undefined` when the export does not produce a file
     *
     * @example
     * ```typescript
     * const file = await univerAPI.exportBoardByUnitIdAsync(unitId);
     * if (file) {
     *     univerAPI.downloadFile(file, 'board', 'pptx');
     * }
     * ```
     */
    exportBoardByUnitIdAsync(unitId: string): Promise<File | undefined>;
    /**
     * Export Board snapshot data as a PPTX file.
     * @param {IBoardData} snapshot Board data to export
     * @returns {Promise<File | undefined>} A promise that resolves to the exported PPTX file, or `undefined` when the export does not produce a file
     *
     * @example
     * ```typescript
     * const board = univerAPI.getActiveBoard();
     * if (board) {
     *     const file = await univerAPI.exportBoardBySnapshotAsync(board.save());
     *     if (file) {
     *         univerAPI.downloadFile(file, 'board', 'pptx');
     *     }
     * }
     * ```
     */
    exportBoardBySnapshotAsync(snapshot: IBoardData): Promise<File | undefined>;
    /**
     * Convert Board snapshot JSON returned by the exchange service into Board data.
     * @param {ISnapshotBlockJsonResponse} json Snapshot JSON returned by the exchange service
     * @returns {Promise<IBoardData>} A promise that resolves to Board data
     *
     * @example
     * ```typescript
     * const boardData = await univerAPI.transformSnapshotJsonToBoardDataAsync(snapshotJson);
     * ```
     */
    transformSnapshotJsonToBoardDataAsync(json: ISnapshotBlockJsonResponse): Promise<IBoardData>;
    /**
     * Convert Board data into snapshot JSON accepted by the exchange service.
     * @param {IBoardData} boardData Board data to convert
     * @returns {Promise<ISnapshotBlockJson>} A promise that resolves to encoded Snapshot JSON
     *
     * @example
     * ```typescript
     * const board = univerAPI.getActiveBoard();
     * if (board) {
     *     const snapshotJson = await univerAPI.transformBoardDataToSnapshotJsonAsync(board.save());
     * }
     * ```
     */
    transformBoardDataToSnapshotJsonAsync(boardData: IBoardData): Promise<ISnapshotBlockJson>;
}
export declare class FUniverBoardsExchangeClientMixin extends FUniver implements IFUniverBoardsExchangeClientMixin {
    exportBoardByUnitIdAsync(unitId: string): Promise<File | undefined>;
    exportBoardBySnapshotAsync(snapshot: IBoardData): Promise<File | undefined>;
    transformSnapshotJsonToBoardDataAsync(json: ISnapshotBlockJsonResponse): Promise<IBoardData>;
    transformBoardDataToSnapshotJsonAsync(boardData: IBoardData): Promise<ISnapshotBlockJson>;
}
declare module '@univerjs/core/facade' {
    interface FUniver extends IFUniverBoardsExchangeClientMixin {
    }
}
