import { DataScopeType } from '@prisma/client';
import { OrganizationContextService } from './organization-context.service';
export interface DataScopeFieldMapping {
    userId?: string;
    departmentId?: string;
    organizationId?: string;
    regionId?: string;
}
export interface UserDataScope {
    resource: string;
    scopeType: DataScopeType | string;
}
export interface DataScopeUser {
    userId: string;
    currentRegion?: string;
    currentOrganizationId?: string;
    dataScopes?: UserDataScope[];
    roles?: string[];
    permissions?: string[];
}
export declare class DataScopeService {
    private orgContextService;
    private readonly logger;
    constructor(orgContextService: OrganizationContextService);
    resolve(user: DataScopeUser, resource: string, fieldMapping?: DataScopeFieldMapping): Promise<Record<string, any>>;
    assertAccess(user: DataScopeUser, resource: string, record: Record<string, any>, fieldMapping?: DataScopeFieldMapping): Promise<void>;
    resolveEffectiveScope(dataScopes: UserDataScope[], resource: string): DataScopeType;
    private isRecordInScope;
    private buildFilter;
    private isAdmin;
    private hasPermission;
    private incrementMetric;
}
