import type { ComposableManifesto, BaseLaws, GovernanceLaws, LineageLaws, ManifestoApp, ManifestoDomainShape, TypedIntent } from "@manifesto-ai/sdk"; import type { BranchId, LineageContinuitySurface } from "@manifesto-ai/lineage"; import type { AuthorityEvaluator } from "./authority/evaluator.js"; import type { ActorAuthorityBinding, ActorId, ActorRef, DecisionId, DecisionRecord, GovernanceEventSink, GovernanceStore, IntentScope, Proposal, ProposalId, SourceRef } from "./types.js"; export type GovernanceExecutionConfig = { readonly projectionId: string; readonly deriveActor: (intent: TypedIntent) => ActorRef; readonly deriveSource: (intent: TypedIntent) => SourceRef; }; export type GovernanceConfig = { readonly bindings: readonly ActorAuthorityBinding[]; readonly governanceStore?: GovernanceStore; readonly evaluator?: AuthorityEvaluator; readonly eventSink?: GovernanceEventSink; readonly now?: () => number; readonly execution: GovernanceExecutionConfig; }; export type LineageComposableLaws = BaseLaws & LineageLaws & { readonly __governanceLaws?: never; }; export type GovernedComposableLaws = BaseLaws & LineageLaws & GovernanceLaws; export type GovernanceControlSurface = { readonly approve: (proposalId: ProposalId, approvedScope?: IntentScope | null) => Promise; readonly reject: (proposalId: ProposalId, reason?: string) => Promise; readonly getProposal: (proposalId: ProposalId) => Promise; readonly getProposals: (branchId?: BranchId) => Promise; readonly bindActor: (binding: ActorAuthorityBinding) => Promise; readonly getActorBinding: (actorId: ActorId) => Promise; readonly getDecisionRecord: (decisionId: DecisionId) => Promise; }; export type GovernanceInstance = ManifestoApp & LineageContinuitySurface & GovernanceControlSurface; export type GovernanceProposalRuntime<_T extends ManifestoDomainShape> = Record; export type GovernanceComposableManifesto = Omit, "activate"> & { activate(): GovernanceInstance; }; declare module "@manifesto-ai/sdk" { interface ManifestoDecoratedRuntimeByLaws { readonly governance: GovernanceInstance; } } export type LineageComposableManifestoInput = ComposableManifesto;