import { ContentItem } from '../../content/content.type'; /** `legal_entity` (FEAT-001). Identity anchor + dated-data spine. ✅ */ export interface PeopleLegalEntityData { code: string; displayName: string; registeredAddress?: { lines?: string[]; city?: string; country?: string; postalCode?: string; }; legalIds?: Array<{ kind: 'tax' | 'business_reg' | 'other'; value: string; issuedBy?: string; }>; timezone: string; metadata?: { recordVisibility?: 'current' | 'archived'; }; state: 'active' | 'closing' | 'closed'; } export type PeopleLegalEntity = ContentItem; /** `registered_branch` (FEAT-001). Dated fields via effective_revision. ✅ */ export interface PeopleRegisteredBranchData { branchCode: string; parentRef: string; displayName?: string; legalIds?: Array<{ kind: 'tax' | 'business_reg' | 'branch_code' | 'other'; value: string; issuedBy?: string; }>; readiness?: { valid?: boolean; licenseExpires?: string; checkedAt?: string; notes?: string; }; effectiveFrom?: string | null; metadata?: { recordVisibility?: 'current' | 'archived'; }; state: 'draft' | 'scheduled' | 'active' | 'closing' | 'closed' | 'cancelled'; } export type PeopleRegisteredBranch = ContentItem; /** `effective_revision` (FEAT-001 owner, shared FEAT-002). Polymorphic subject. ✅ */ export interface PeopleEffectiveRevisionData { subjectKind: 'legal_entity' | 'registered_branch' | 'org_unit' | 'position' | 'work_location' | 'unit_type_config' | 'location_type_config'; subjectRef: string; /** Date-keyed payload — preserved opaquely by the SDK; the per-domain * payload surface is read through `r.payload.X` (camelCase keys inside). */ payload: Record; effectiveFrom: string; effectiveTo?: string | null; timezoneRef?: string | null; supersedesRef?: string | null; state: 'draft' | 'scheduled' | 'effective' | 'superseded' | 'cancelled'; } export type PeopleEffectiveRevision = ContentItem; /** `closure_case` (FEAT-001). Discriminator `targetType`. ✅ */ export interface PeopleClosureCaseData { targetType: 'legal_entity' | 'registered_branch'; targetRef: string; impact?: { acknowledged?: boolean; projections?: Record; evaluatedAt?: string; unknownDomains?: string[]; }; parentCaseRef?: string | null; proposedCloseDate?: string | null; failureReason?: string | null; state: 'draft' | 'pending-approval' | 'approved' | 'completed' | 'rejected' | 'cancelled' | 'failed'; } export type PeopleClosureCase = ContentItem; /** `policy_assignment` (FEAT-001). Applicability relation; content in FEAT-011. ✅ */ export interface PeoplePolicyAssignmentData { policyRef: string; policyVersion?: string | null; policyKind: string; targetType: 'legal_entity' | 'registered_branch'; targetRef: string; effectiveFrom: string; effectiveTo?: string | null; overrideAllowed?: boolean; state: 'scheduled' | 'effective' | 'superseded' | 'cancelled'; } export type PeoplePolicyAssignment = ContentItem; /** `policy` (FEAT-011 registry handle — registry §3.6). Two faces, one * artifact, one version: the row is the REGISTRY (lifecycle + effective * window + provenance), never the content store. Interim (drift D-5): the * authored artifact rides the row (`artifact`) until the FEAT-014 git-plane * publisher stamps `sotRef`. ✅ */ export interface PeoplePolicyData { /** Kind taxonomy — `document` (human face) + 3 machine faces; open union. */ kind: 'document' | 'process-composition' | 'cross-domain-automation' | 'settings-guardrails' | (string & {}); policyKey?: string; face?: 'human' | 'machine'; /** Human face fields. */ title?: string; audience?: string; scope?: string; body?: Record; /** Machine face — the authored tree (rides the row interim). */ artifact?: Record; /** Canonical-hash version (git sha once the publisher lands). */ version: string; /** Machine-face runtime flag — EventGrade, NOT a lifecycle state. */ enabled?: boolean; /** Legacy FEAT-001 assignment-override snapshot (OQ-4). */ overrideAllowed?: boolean; effectiveFrom?: string | null; effectiveTo?: string | null; /** Git-plane meta (spine §10): owning repo + process directory. Both * unset on row-interim policies (no git plane engaged). */ repoRef?: string | null; processSlug?: string | null; publishedBy?: string | null; verify?: { badge?: 'GREEN' | 'DRIFT' | 'STALE'; checkedAt?: string; } | Record; state: 'draft' | 'published' | 'superseded' | 'archived' | 'cancelled'; } export type PeoplePolicy = ContentItem; /** `org_unit` | `position` | `work_location` family. ✅ */ export interface PeopleOrgNodeData { code: string; legalEntityRef: string; parentRef?: string | null; effectiveRevisionRef?: string | null; successorRef?: string | null; predecessorRef?: string | null; metadata?: { recordVisibility?: 'current' | 'archived'; }; state: 'draft' | 'scheduled' | 'active' | 'ended' | 'cancelled'; } export type PeopleOrgUnit = ContentItem; export type PeoplePosition = ContentItem; export type PeopleWorkLocation = ContentItem; /** `unit_type` | `work_location_type` tenant catalogue. ✅ */ export interface PeopleTypeCatalogueData { code: string; name: string; description?: string | null; state: 'in-use' | 'discontinued'; } export type PeopleUnitType = ContentItem; export type PeopleWorkLocationType = ContentItem; /** `org_change_set` (FEAT-002, approval machinery FEAT-010). ✅ */ export interface PeopleOrgChangeSetChangeItemData { changeType: 'create' | 'amend' | 'move' | 'end'; /** Target CT of the item — REQUIRED by the pack's cs_submit validator * ("changes[n].target_type is invalid" when absent). Value literal, * snake per the pack's discriminator (registry §3.18). */ targetType: 'org_unit' | 'position' | 'work_location'; /** Temp ref for create, or real uuid for amend/move/end. */ targetRef: string; before?: unknown; after?: unknown; /** For create/move — the planned parent unit uuid. */ dependencyRef?: string | null; validationResult?: unknown; impacted?: unknown[]; } /** `org_change_set` (FEAT-002, approval machinery FEAT-010). ✅ */ export interface PeopleOrgChangeSetData { changeSetCode: string; legalEntityRef: string; reason: string; /** Fingerprint of `(target_ref, latest_effective_revision_ref)` pairs. */ baseline: Record; changes: PeopleOrgChangeSetChangeItemData[]; applicationMode: 'immediate' | 'scheduled'; effectiveAt?: string | null; coordination?: { relatedRef?: string; owner?: string; }; conflictDetails?: Record; failureDetail?: Record; scopeRecalcStatus: 'not_required' | 'pending' | 'completed' | 'failed'; resolutionStatus: 'open' | 'closed'; lastValidation?: Record; state: 'draft' | 'validating' | 'in-review' | 'approved' | 'scheduled' | 'applied' | 'rejected' | 'cancelled' | 'failed' | 'conflict'; } export type PeopleOrgChangeSet = ContentItem; //# sourceMappingURL=ct.types.d.ts.map