import { ResolverConfig, ResolverResponse, RetryConfig } from "./resolver.data.model";
import { User } from "./user.data.model";
export interface UserDataProvider {
    get(userIds: string[]): Promise<Record<string, User>>;
    config?: ResolverConfig;
    resolveTimeout?: number;
}
export interface AnonymousUserDataProvider {
    resolveUserIdsByEmail(request: ResolveUserIdsByEmailRequest): Promise<ResolverResponse<Record<string, string>>>;
    config?: AnonymousUserDataProviderConfig;
}
export interface AnonymousUserDataProviderConfig {
    resolveTimeout?: number;
    getRetryConfig?: RetryConfig;
}
export interface ResolveUserIdsByEmailRequest {
    organizationId: string;
    documentId?: string;
    folderId?: string;
    emails: string[];
}
export interface GetUserResolverRequest {
    organizationId: string;
    userIds: string[];
}
export interface GetUserPermissionsRequest {
    organizationId?: string;
    folderIds?: string[];
    documentIds?: string[];
}
export interface GetUserPermissionsResponse {
    [userId: string]: {
        folders?: {
            [folderId: string]: {
                accessRole?: UserPermissionAccessRole;
                accessType?: string;
                expiresAt?: number;
                error?: string;
                errorCode?: UserPermissionAccessRoleResult;
            };
        };
        organization?: {
            [organizationId: string]: {
                accessRole?: UserPermissionAccessRole;
                expiresAt?: number;
                error?: string;
                errorCode?: UserPermissionAccessRoleResult;
            };
        };
        documents?: {
            [documentId: string]: {
                accessRole?: UserPermissionAccessRole;
                accessType?: string;
                expiresAt?: number;
                error?: string;
                errorCode?: UserPermissionAccessRoleResult;
            };
        };
        context?: {
            accessFields?: Array<string>;
        };
    };
}
export declare enum UserPermissionAccessRole {
    EDITOR = "editor",
    VIEWER = "viewer"
}
export declare enum UserPermissionAccessRoleResult {
    DOES_NOT_EXIST = "does_not_exist",
    PERMISSION_DENIED = "permission_denied",
    SOMETHING_WENT_WRONG = "something_went_wrong"
}
