import { z } from 'zod'; export declare const tenantId: z.core.$ZodBranded; export type TenantId = z.infer; export declare const scopeId: z.core.$ZodBranded; export type ScopeId = z.infer; export declare const principalId: z.core.$ZodBranded; export type PrincipalId = z.infer; export declare const orgId: z.core.$ZodBranded; export type OrgId = z.infer; export declare const platformActorId: z.core.$ZodBranded; export type PlatformActorId = z.infer; export declare const eventId: z.core.$ZodBranded; export type EventId = z.infer; export declare const platformRequestId: z.core.$ZodBranded; export type PlatformRequestId = z.infer; export declare const dataSubjectId: z.core.$ZodBranded; export type DataSubjectId = z.infer; export declare const moduleId: z.core.$ZodBranded; export type ModuleId = z.infer; /** * ISO 8601 with timezone (Z or offset). Stamped kernel-side, never caller-side. * * An offset is accepted on the wire and NORMALISED to UTC on the way through * (`+02:00` becomes the equivalent `Z` text), because every consumer of an * `Instant` compares it LEXICOGRAPHICALLY — grant liveness is `expires_at > now` * in JS and in SQL, in both adapters — and lexicographic order only agrees with * chronological order when the texts share a zone and a shape. Stored verbatim, * `2026-08-28T10:00:00+02:00` (08:00Z) sorts after `2026-08-28T09:00:00.000Z` * and an expired grant reads as live (#963). * * `.overwrite` rather than `.transform`: it normalises the value while the schema * stays a `ZodString`, so the brand, `.nullable()`, and the emitted JSON Schema * (`format: date-time`) are all unchanged. It runs even when the `datetime` check * above already failed, so it leaves an unparseable string alone — the caller must * get that string's `ZodError`, never a `RangeError` from here. */ export declare const instant: z.core.$ZodBranded; export type Instant = z.infer; /** * A calendar date — `YYYY-MM-DD`, no time, no zone (#117). * * The other half of the platform's time contract. An `instant` is a moment, * stored as UTC ISO 8601 text; a `calendarDate` is a day on a wall calendar — * a leave day, a due date, an accounting period boundary — and it carries NO * implicit midnight: the same date is a different instant in every zone, and * which one is a question for the screen rendering it, never for storage. * The two must never be compared with, or coerced into, each other: an instant * truncated to its first ten characters is the UTC day, which is the wrong * day for every user east or west of Greenwich part of the time. * * `z.iso.date()` rather than a shape regex: it checks the month and the day, * so `2026-02-30` is refused, and it emits `format: date` in the OpenAPI a * vertical publishes. Deliberately UNBRANDED, unlike `instant`: a date is * already its own shape, a `"2026-02-28"` cannot be mistaken for an instant * or an id, and staying a plain `string` lets an engine adopt this for a * field it already exposes without changing any caller's type. */ export declare const calendarDate: z.ZodISODate; export type CalendarDate = z.infer; export declare const permissionKey: z.core.$ZodBranded; export type PermissionKey = z.infer; export declare const slug: z.ZodString; /** * A VERTICAL's registry id (builder-plane.md §2). A bare `slug`, optionally prefixed by * an owning tenant's slug: `/`. The prefix makes a customer-chosen name * globally unique BY CONSTRUCTION — no claim race on the bare word — while a platform * vertical (owner_tenant = null) stays bare (`callout`). Exactly ONE `/` is allowed: both * halves are plain slugs. A builder never types the prefix; the control plane forms it * from the authenticated tenant (§5). It flows into `deploymentRefFor`, which flattens the * `/` to stay a valid CF script name; hostnames are per-instance and never carry it. */ export declare const verticalSlug: z.ZodString; //# sourceMappingURL=ids.d.ts.map