/// /// /// /// /// /// /// /// /// /// /// /// /// /// /// /// /// /// /// /// /// /// /// /// /// import { Types } from 'mongoose'; import type { AnyBulkWriteOperation, ClientSession, PipelineStage, DeleteResult } from 'mongoose'; import type { AclEntry, IAclEntry } from '~/types'; export declare function createAclEntryMethods(mongoose: typeof import('mongoose')): { findEntriesByPrincipal: (principalType: string, principalId: string | Types.ObjectId, resourceType?: string) => Promise; findEntriesByResource: (resourceType: string, resourceId: string | Types.ObjectId) => Promise; findEntriesByPrincipalsAndResource: (principalsList: Array<{ principalType: string; principalId?: string | Types.ObjectId; }>, resourceType: string, resourceId: string | Types.ObjectId) => Promise; hasPermission: (principalsList: Array<{ principalType: string; principalId?: string | Types.ObjectId; }>, resourceType: string, resourceId: string | Types.ObjectId, permissionBit: number) => Promise; getEffectivePermissions: (principalsList: Array<{ principalType: string; principalId?: string | Types.ObjectId; }>, resourceType: string, resourceId: string | Types.ObjectId) => Promise; getEffectivePermissionsForResources: (principalsList: Array<{ principalType: string; principalId?: string | Types.ObjectId; }>, resourceType: string, resourceIds: Array) => Promise>; grantPermission: (principalType: string, principalId: string | Types.ObjectId | null, resourceType: string, resourceId: string | Types.ObjectId, permBits: number, grantedBy: string | Types.ObjectId, session?: ClientSession, roleId?: string | Types.ObjectId) => Promise; revokePermission: (principalType: string, principalId: string | Types.ObjectId | null, resourceType: string, resourceId: string | Types.ObjectId, session?: ClientSession) => Promise; modifyPermissionBits: (principalType: string, principalId: string | Types.ObjectId | null, resourceType: string, resourceId: string | Types.ObjectId, addBits?: number | null, removeBits?: number | null, session?: ClientSession) => Promise; findAccessibleResources: (principalsList: Array<{ principalType: string; principalId?: string | Types.ObjectId; }>, resourceType: string, requiredPermBit: number) => Promise; deleteAclEntries: (filter: Record, options?: { session?: ClientSession; }) => Promise; bulkWriteAclEntries: (ops: AnyBulkWriteOperation[], options?: { session?: ClientSession; }) => Promise; findPublicResourceIds: (resourceType: string, requiredPermissions: number) => Promise; aggregateAclEntries: (pipeline: PipelineStage[]) => Promise; getSoleOwnedResourceIds: (userObjectId: Types.ObjectId, resourceTypes: string | string[]) => Promise; }; export type AclEntryMethods = ReturnType;