import { DomeEmbeddedAppSdk, ViewerClientMessageType } from "./dome-sdk";
export interface Document {
    data: any;
    name: string;
    type: string;
}
export interface UiProps {
    theme: string;
}
interface SaveStatusData {
    status: "success" | "error";
    message: string;
}
export interface ViewerEventHandler {
    onInitialData: (data: {
        doc: Document;
        ui: UiProps;
        isNewFile: boolean;
        perms: any;
        config?: Record<string, any>;
    }) => void;
    onDataChange?: (data: {
        doc: Document;
        perms: any;
        userConsent: "override" | null;
    }) => void;
    onCloseRequest: () => void;
    onSaveRequest: () => void;
}
export declare class ViewerSdk extends DomeEmbeddedAppSdk {
    private static instance;
    private static initialized;
    private handler;
    private pendingRequests;
    private pendingInitAck;
    private constructor();
    static init(handler?: ViewerEventHandler): ViewerSdk;
    setHandler(handler: ViewerEventHandler): void;
    canRead(perms?: string): boolean;
    canWrite(perms?: string): boolean;
    initializeViewerSdk(): void;
    requestInitialData(): void;
    requestSave(doc: Document, isDataDirty: boolean): Promise<SaveStatusData>;
    private handleOnSave;
    setDirty(isDirty: boolean): void;
    sendClose(doc: Document, isDataDirty: boolean): void;
    sendException(error: {
        name?: string;
        message: string;
    } | string): void;
    protected handleMessage(type: ViewerClientMessageType, data: any): void;
}
export {};
