import { Context, Effect, Layer } from "effect"; import type { Rule } from "./permissions.js"; import type { AccessRequest } from "../tools/tool-authorization.js"; /** @experimental */ export interface Approved { readonly _tag: "Approved"; readonly remember?: Rule; } /** @experimental */ export interface Denied { readonly _tag: "Denied"; readonly reason?: string; } /** @experimental An unresolved authorization request. */ export interface Pending extends AccessRequest { readonly _tag: "Pending"; readonly token: string; } /** @experimental */ export type Resolution = Approved | Denied | Pending; /** @experimental */ export interface Interface { readonly resolve: (pending: Pending) => Effect.Effect; } declare const Approvals_base: Context.ServiceClass; /** @experimental Enforcement point for policy asks and `Ai.Tool.needsApproval`. */ export declare class Approvals extends Approvals_base { } /** @experimental Default: every request resolves Approved. */ export declare const layerAutoApprove: Layer.Layer; /** @experimental Every request resolves Denied. */ export declare const layerDenyAll: Layer.Layer; /** @experimental */ export declare const layerTest: (implementation: Interface) => Layer.Layer; export {};