import type Context from "../context.js"; import type Query from "../datastore/query.js"; import type { CollectionItem } from "../main.js"; export type PolicyDefinition = [PolicyClass, any] | Policy | PolicyClass; export type PolicyDecision = { allowed: boolean; reason: string; } | null; export type PolicyClass = { new (params?: any): Policy; type_name: string; }; export default abstract class Policy { params: any; static type_name: string; constructor(params?: any); abstract checkerFunction(context: Context, item_getter?: () => Promise>): Promise; isItemSensitive(_: Context): Promise; protected abstract _getRestrictingQuery(context: Context): Promise; getRestrictingQuery(context: Context): Promise; check(context: Context, item_getter?: () => Promise>): Promise; static fromDefinition(definition: PolicyDefinition): Policy; static allow(reason: string): { allowed: boolean; reason: string; }; static deny(reason: string): { allowed: boolean; reason: string; }; } export declare abstract class ReducingPolicy extends Policy { policies: Policy[]; constructor(params: Policy[]); checkAllPolicies(context: Context, item_getter?: () => Promise): Promise; }