export interface DiagramFile {
    id: string;
    name: string;
    path: string;
    token?: string;
    parentReference?: Object;
}
export interface DeferredPromise {
    promise: any;
}
export declare class GoCloudStorage {
    private _managedDiagrams;
    private _clientId;
    private _isAutoSaving;
    private _currentDiagramFile;
    private _ui;
    private _defaultModel;
    protected _serviceName: string;
    protected _className: string;
    protected _deferredPromise: DeferredPromise;
    private _iconsRelativeDirectory;
    constructor(managedDiagrams: go.Diagram | Array<go.Diagram>, defaultModel?: string, clientId?: string, iconsRelativeDirectory?: string);
    managedDiagrams: Array<go.Diagram>;
    defaultModel: string;
    iconsRelativeDirectory: string;
    readonly clientId: string;
    currentDiagramFile: DiagramFile;
    isAutoSaving: boolean;
    readonly serviceName: string;
    readonly className: string;
    readonly ui: HTMLElement;
    authorize(refreshToken?: boolean): Promise<any>;
    makeDeferredPromise(): Promise<Object>;
    getUserInfo(): Promise<{}>;
    hideUI(isActionCanceled?: boolean): void;
    checkFileExists(path: string): Promise<{}>;
    getFile(path: string): Promise<{}>;
    showUI(action: string): Promise<{}>;
    create(path?: string, saveBefore?: boolean): Promise<{}>;
    private promptUserToSaveBeforeNew;
    protected makeSaveFile(): string;
    protected loadFromFileContents(fileContents: string): void;
    saveWithUI(): Promise<{}>;
    save(path?: string): Promise<{}>;
    load(path: string): Promise<{}>;
    loadWithUI(): Promise<{}>;
    remove(path: string): Promise<{}>;
    removeWithUI(): Promise<{}>;
}
export {};
export declare class GoCloudStorageManager {
    private _storages;
    private _currentStorage;
    private _menu;
    private _deferredPromise;
    private _iconsRelativeDirectory;
    constructor(storages: go.Set<gcs.GoCloudStorage> | Array<gcs.GoCloudStorage>, iconsRelativeDirectory?: string);
    readonly storages: go.Set<gcs.GoCloudStorage>;
    iconsRelativeDirectory: string;
    readonly menu: HTMLElement;
    currentStorage: gcs.GoCloudStorage;
    create(saveBeforeCreate?: boolean): Promise<{}>;
    load(): Promise<{}>;
    remove(): Promise<{}>;
    save(isSaveAs?: boolean): Promise<{}>;
    showMessage(msg: string, seconds?: number): void;
    getStorageIconPath(className: string): string;
    selectStorageService(): Promise<{}>;
    hideMenu(): void;
    private currentStorageNeedsAuth;
    handleAction(action: string, saveBeforeCreate?: boolean): Promise<{}>;
}
export declare class GoDropBox extends gcs.GoCloudStorage {
    private _dropbox;
    private _menuPath;
    private _options;
    constructor(managedDiagrams: go.Diagram | Array<go.Diagram>, clientId: string, defaultModel?: string, iconsRelativeDirectory?: string);
    readonly dropbox: any;
    menuPath: string;
    authorize(refreshToken?: boolean): Promise<{}>;
    private getAccessTokenFromUrl;
    private maybeSaveAppState;
    private maybeLoadAppState;
    signOut(): void;
    getUserInfo(): Promise<{}>;
    showUI(): any;
    hideUI(isActionCanceled?: boolean): void;
    processUIResult(action: string): void;
    checkFileExists(path: string): Promise<{}>;
    getFile(path: string): any;
    saveWithUI(filename?: string): Promise<{}>;
    save(path?: string): Promise<{}>;
    loadWithUI(): any;
    load(path: string): Promise<{}>;
    removeWithUI(): any;
    remove(path: string): Promise<{}>;
}
export declare class GoGoogleDrive extends gcs.GoCloudStorage {
    private _pickerApiKey;
    private _oauthToken;
    private _scope;
    private _gapiClient;
    private _gapiPicker;
    constructor(managedDiagrams: go.Diagram | Array<go.Diagram>, clientId: string, pickerApiKey: string, defaultModel?: string, iconsRelativeDirectory?: string);
    readonly pickerApiKey: string;
    readonly scope: string;
    readonly gapiClient: any;
    readonly gapiPicker: any;
    authorize(refreshToken?: boolean): Promise<{}>;
    createPicker(cb: Function): void;
    getUserInfo(): Promise<{}>;
    getFile(path: string): Promise<{}>;
    checkFileExists(path: string): Promise<{}>;
    showUI(): any;
    saveWithUI(): Promise<{}>;
    save(path?: string): Promise<{}>;
    loadWithUI(): Promise<{}>;
    load(path: string): Promise<{}>;
    removeWithUI(): Promise<{}>;
    remove(path: string): Promise<{}>;
}
export declare class GoLocalStorage extends gcs.GoCloudStorage {
    private _localStorage;
    private static _MIN_FILES_IN_UI;
    constructor(managedDiagrams: go.Diagram | Array<go.Diagram>, defaultModel?: string, iconsRelativeDirectory?: string);
    readonly localStorage: Storage;
    authorize(refreshToken?: boolean): Promise<any>;
    showUI(action: string, numAdditionalFiles?: number): any;
    processUIResult(action: string): void;
    getFile(path: string): Promise<{}>;
    checkFileExists(path: string): Promise<{}>;
    saveWithUI(): Promise<{}>;
    save(path?: string): Promise<{}>;
    loadWithUI(): Promise<{}>;
    load(path: string): Promise<{}>;
    removeWithUI(): Promise<{}>;
    remove(path: string): Promise<{}>;
}
export declare class GoNetCore extends gcs.GoCloudStorage {
    private static _MIN_FILES_IN_UI;
    private _rootEndpoint;
    constructor(managedDiagrams: go.Diagram | Array<go.Diagram>, rootEndpoint: string, defaultModel?: string, iconsRelativeDirectory?: string);
    readonly rootEndpoint: string;
    authorize(refreshToken?: boolean): Promise<{}>;
    showUI(action: string, numAdditionalFiles?: number): any;
    processUIResult(action: string): void;
    getFile(path: string): Promise<{}>;
    getFiles(): Promise<{}>;
    checkFileExists(path: string): Promise<{}>;
    saveWithUI(): Promise<{}>;
    save(path?: string): Promise<{}>;
    loadWithUI(): Promise<{}>;
    load(path: string): Promise<{}>;
    removeWithUI(): Promise<{}>;
    remove(path: string): Promise<{}>;
}
export declare class GoOneDrive extends gcs.GoCloudStorage {
    private _oneDriveFilepicker;
    private _oauthToken;
    constructor(managedDiagrams: go.Diagram | Array<go.Diagram>, clientId: string, defaultModel?: string, iconsRelativeDirectory?: string);
    oauthToken: string;
    readonly oneDriveFilepicker: any;
    authorize(refreshToken?: boolean): Promise<boolean>;
    getUserInfo(): Promise<any>;
    checkFileExists(path: string): Promise<any>;
    getFile(path: string, token?: string): Promise<any>;
    showUI(): Promise<any>;
    saveWithUI(): Promise<any>;
    save(path?: string): Promise<any>;
    loadWithUI(): Promise<any>;
    load(path: string, token?: string): Promise<any>;
    removeWithUI(): Promise<any>;
    remove(path: string, token?: string): Promise<any>;
    generateGraphUrl(driveItem: Object, targetParentFolder: boolean, itemRelativeApiPath: boolean): string;
}
