//#region src/core/schema/index.d.ts /** JSON Schema (Draft 2020-12) for {@link AccessControl.IPolicy}; tighten action/resource slots via `$ref` downstream. */ declare const POLICY_JSON_SCHEMA: { readonly $schema: "https://json-schema.org/draft/2020-12/schema"; readonly $id: "https://gentleduck.dev/duck-iam/policy.schema.json"; readonly title: "duck-iam Policy"; readonly type: "object"; readonly required: readonly ["id", "name", "algorithm", "rules"]; readonly additionalProperties: false; readonly properties: { readonly id: { readonly type: "string"; readonly minLength: 1; }; readonly name: { readonly type: "string"; readonly minLength: 1; }; readonly description: { readonly type: "string"; }; readonly version: { readonly type: "number"; }; readonly algorithm: { readonly enum: readonly ["deny-overrides", "allow-overrides", "first-match", "highest-priority"]; }; readonly rules: { readonly type: "array"; readonly items: { readonly $ref: "#/$defs/rule"; }; }; readonly targets: { readonly type: "object"; readonly additionalProperties: false; readonly properties: { readonly actions: { readonly type: "array"; readonly items: { readonly type: "string"; }; }; readonly resources: { readonly type: "array"; readonly items: { readonly type: "string"; }; }; readonly roles: { readonly type: "array"; readonly items: { readonly type: "string"; }; }; }; }; }; readonly $defs: { readonly rule: { readonly type: "object"; readonly required: readonly ["id", "effect", "priority", "actions", "resources", "conditions"]; readonly additionalProperties: false; readonly properties: { readonly id: { readonly type: "string"; readonly minLength: 1; }; readonly effect: { readonly enum: readonly ["allow", "deny"]; }; readonly description: { readonly type: "string"; }; readonly priority: { readonly type: "number"; }; readonly actions: { readonly type: "array"; readonly minItems: 1; readonly items: { readonly type: "string"; }; }; readonly resources: { readonly type: "array"; readonly minItems: 1; readonly items: { readonly type: "string"; }; }; readonly conditions: { readonly $ref: "#/$defs/conditionGroup"; }; readonly metadata: { readonly type: "object"; readonly additionalProperties: true; }; }; }; readonly conditionGroup: { readonly oneOf: readonly [{ readonly type: "object"; readonly required: readonly ["all"]; readonly properties: { readonly all: { readonly $ref: "#/$defs/conditionList"; }; }; }, { readonly type: "object"; readonly required: readonly ["any"]; readonly properties: { readonly any: { readonly $ref: "#/$defs/conditionList"; }; }; }, { readonly type: "object"; readonly required: readonly ["none"]; readonly properties: { readonly none: { readonly $ref: "#/$defs/conditionList"; }; }; }]; }; readonly conditionList: { readonly type: "array"; readonly items: { readonly oneOf: readonly [{ readonly $ref: "#/$defs/condition"; }, { readonly $ref: "#/$defs/conditionGroup"; }]; }; }; readonly condition: { readonly type: "object"; readonly required: readonly ["field", "operator"]; readonly additionalProperties: false; readonly properties: { readonly field: { readonly type: "string"; readonly minLength: 1; }; readonly operator: { readonly enum: readonly ["eq", "neq", "gt", "gte", "lt", "lte", "in", "nin", "contains", "not_contains", "starts_with", "ends_with", "matches", "exists", "not_exists", "subset_of", "superset_of"]; }; readonly value: {}; }; }; }; }; //#endregion export { POLICY_JSON_SCHEMA as t }; //# sourceMappingURL=index-D3UWy0aw.d.ts.map