import type { UserDataService } from '@finos/legend-application';
import { SerializationFactory } from '@finos/legend-shared';
import { WorkspaceType } from '@finos/legend-server-sdlc';
/**
 * Copyright (c) 2020-present, Goldman Sachs
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
export declare enum LEGEND_STUDIO_USER_DATA_KEY {
    GLOBAL_TEST_RUNNER_SHOW_DEPENDENCIES = "studio-editor.global-test-runner-showDependencyPanel",
    DATABASE_EDITOR_THEME = "studio-editor.database-editor.theme",
    WORKSPACE_SETUP_RECENTS = "studio-editor.workspace-setup.recents",
    WORKSPACE_SETUP_SANDBOX_INFO = "studio-editor.workspace-setup.sandboxInfo"
}
export declare class RecentProjectEntry {
    projectId: string;
    name: string;
    description: string;
    webUrl: string;
    tags: string[];
    lastOpenedAt: number;
    static readonly serialization: SerializationFactory<RecentProjectEntry>;
}
export declare class RecentWorkspaceEntry {
    projectId: string;
    workspaceId: string;
    workspaceType: WorkspaceType;
    lastOpenedAt: number;
    static readonly serialization: SerializationFactory<RecentWorkspaceEntry>;
}
export declare class WorkspaceSetupRecents {
    version: number;
    projects: RecentProjectEntry[];
    workspaces: RecentWorkspaceEntry[];
    static readonly serialization: SerializationFactory<WorkspaceSetupRecents>;
}
export declare class CachedSandboxInfo {
    userId: string;
    hasAccess: boolean;
    /** undefined when the user has access but hasn't created a sandbox yet. */
    projectId?: string | undefined;
    fetchedAt: number;
    static readonly serialization: SerializationFactory<CachedSandboxInfo>;
}
export declare class LegendStudioUserDataHelper {
    static globalTestRunner_getShowDependencyPanel(service: UserDataService): boolean | undefined;
    static globalTestRunner_setShowDependencyPanel(service: UserDataService, val: boolean): void;
    static databaseEditor_getTheme(service: UserDataService): 'dark' | 'light' | undefined;
    static databaseEditor_setTheme(service: UserDataService, val: 'dark' | 'light'): void;
    static workspaceSetup_getRecentProjects(service: UserDataService): RecentProjectEntry[];
    static workspaceSetup_getRecentWorkspaces(service: UserDataService): RecentWorkspaceEntry[];
    static workspaceSetup_recordRecentProject(service: UserDataService, entry: {
        projectId: string;
        name: string;
        description: string;
        webUrl: string;
        tags: string[];
    }): RecentProjectEntry[];
    static workspaceSetup_recordRecentWorkspace(service: UserDataService, entry: {
        projectId: string;
        workspaceId: string;
        workspaceType: WorkspaceType;
    }): RecentWorkspaceEntry[];
    static workspaceSetup_removeRecentProject(service: UserDataService, projectId: string): WorkspaceSetupRecents;
    static workspaceSetup_removeRecentWorkspace(service: UserDataService, entry: {
        projectId: string;
        workspaceId: string;
        workspaceType: WorkspaceType;
    }): RecentWorkspaceEntry[];
    static workspaceSetup_clearRecents(service: UserDataService): void;
    static workspaceSetup_getCachedSandboxInfo(service: UserDataService, currentUserId: string): CachedSandboxInfo | undefined;
    static workspaceSetup_recordSandboxInfo(service: UserDataService, info: {
        userId: string;
        hasAccess: boolean;
        projectId?: string | undefined;
    }): void;
    static workspaceSetup_clearSandboxInfo(service: UserDataService): void;
}
//# sourceMappingURL=LegendStudioUserDataHelper.d.ts.map