import { GranteeType, NormalizedPermission, PermissionAction, PermissionCheckResult, PermissionProviderBase, UserInfo } from '@memberjunction/core';
/**
 * Wraps the `MJ: Collection Permissions` table behind the unified
 * {@link PermissionProviderBase} contract. Collection permissions are user-only
 * and cover Read / Update / Delete / Share.
 *
 * Collection-to-artifact cascade is handled by downstream consumers (the Sharing
 * Center's Resource Access Report combines Collection + Artifact results); this
 * provider only reports direct Collection grants.
 *
 * `resourceType` is `"Collections"`. `resourceId` is the collection ID.
 */
export declare class CollectionPermissionProvider extends PermissionProviderBase {
    readonly DomainName = "Collection Permissions";
    readonly Description = "User-level sharing permissions on artifact collections (Read/Update/Delete/Share)";
    readonly SupportedGranteeTypes: GranteeType[];
    readonly SupportedActions: PermissionAction[];
    readonly SupportsDeny = false;
    GetResourceTypes(): string[];
    CheckPermission(user: UserInfo, _resourceType: string, resourceId: string | null, action: PermissionAction): Promise<PermissionCheckResult>;
    GetEffectivePermissions(user: UserInfo, _resourceType: string, resourceId: string): Promise<NormalizedPermission[]>;
    GetUserResources(user: UserInfo, resourceType?: string): Promise<NormalizedPermission[]>;
    /**
     * CollectionPermission rows where this user is the grantee AND someone else is
     * the grantor. Excludes collections the user owns and rows they created themselves.
     */
    GetPermissionsSharedWithUser(grantee: UserInfo): Promise<NormalizedPermission[]>;
    /**
     * CollectionPermission rows this user **explicitly** granted (`SharedByUserID = grantor`).
     * Implicit owner-shares (SharedByUserID IS NULL) are excluded because the Sharing
     * Center's revoke flow can only delete rows where the current user is the explicit
     * grantor.
     */
    GetPermissionsGrantedByUser(grantor: UserInfo): Promise<NormalizedPermission[]>;
    GetResourcePermissions(resourceType: string, resourceId: string): Promise<NormalizedPermission[]>;
    private fetchPermissionForUser;
    private fetchCollection;
    private toActions;
}
//# sourceMappingURL=CollectionPermissionProvider.d.ts.map