/*---------------------------------------------------------------------------------------------
 *  Copyright (c) Microsoft Corporation. All rights reserved.
 *  Licensed under the MIT License. See License.txt in the project root for license information.
 *--------------------------------------------------------------------------------------------*/

import { Event } from '@sussudio/base/common/event.mjs';
import { IDisposable } from '@sussudio/base/common/lifecycle.mjs';
import { URI } from '@sussudio/base/common/uri.mjs';
export declare enum WorkspaceTrustScope {
	Local = 0,
	Remote = 1,
}
export declare function workspaceTrustToString(trustState: boolean): string;
export interface WorkspaceTrustRequestButton {
	readonly label: string;
	readonly type: 'ContinueWithTrust' | 'ContinueWithoutTrust' | 'Manage' | 'Cancel';
}
export interface WorkspaceTrustRequestOptions {
	readonly buttons?: WorkspaceTrustRequestButton[];
	readonly message?: string;
}
export declare const IWorkspaceTrustEnablementService: import('../../instantiation/common/instantiation.mjs').ServiceIdentifier<IWorkspaceTrustEnablementService>;
export interface IWorkspaceTrustEnablementService {
	readonly _serviceBrand: undefined;
	isWorkspaceTrustEnabled(): boolean;
}
export declare const IWorkspaceTrustManagementService: import('../../instantiation/common/instantiation.mjs').ServiceIdentifier<IWorkspaceTrustManagementService>;
export interface IWorkspaceTrustManagementService {
	readonly _serviceBrand: undefined;
	onDidChangeTrust: Event<boolean>;
	onDidChangeTrustedFolders: Event<void>;
	readonly workspaceResolved: Promise<void>;
	readonly workspaceTrustInitialized: Promise<void>;
	acceptsOutOfWorkspaceFiles: boolean;
	isWorkspaceTrusted(): boolean;
	isWorkspaceTrustForced(): boolean;
	canSetParentFolderTrust(): boolean;
	setParentFolderTrust(trusted: boolean): Promise<void>;
	canSetWorkspaceTrust(): boolean;
	setWorkspaceTrust(trusted: boolean): Promise<void>;
	getUriTrustInfo(uri: URI): Promise<IWorkspaceTrustUriInfo>;
	setUrisTrust(uri: URI[], trusted: boolean): Promise<void>;
	getTrustedUris(): URI[];
	setTrustedUris(uris: URI[]): Promise<void>;
	addWorkspaceTrustTransitionParticipant(participant: IWorkspaceTrustTransitionParticipant): IDisposable;
}
export declare const enum WorkspaceTrustUriResponse {
	Open = 1,
	OpenInNewWindow = 2,
	Cancel = 3,
}
export declare const IWorkspaceTrustRequestService: import('../../instantiation/common/instantiation.mjs').ServiceIdentifier<IWorkspaceTrustRequestService>;
export interface IWorkspaceTrustRequestService {
	readonly _serviceBrand: undefined;
	readonly onDidInitiateOpenFilesTrustRequest: Event<void>;
	readonly onDidInitiateWorkspaceTrustRequest: Event<WorkspaceTrustRequestOptions | undefined>;
	readonly onDidInitiateWorkspaceTrustRequestOnStartup: Event<void>;
	completeOpenFilesTrustRequest(result: WorkspaceTrustUriResponse, saveResponse?: boolean): Promise<void>;
	requestOpenFilesTrust(openFiles: URI[]): Promise<WorkspaceTrustUriResponse>;
	cancelWorkspaceTrustRequest(): void;
	completeWorkspaceTrustRequest(trusted?: boolean): Promise<void>;
	requestWorkspaceTrust(options?: WorkspaceTrustRequestOptions): Promise<boolean | undefined>;
	requestWorkspaceTrustOnStartup(): void;
}
export interface IWorkspaceTrustTransitionParticipant {
	participate(trusted: boolean): Promise<void>;
}
export interface IWorkspaceTrustUriInfo {
	uri: URI;
	trusted: boolean;
}
export interface IWorkspaceTrustInfo {
	uriTrustInfo: IWorkspaceTrustUriInfo[];
}
