/**
 * Audit-log metadata schemas for the `cell_grant` ACL events.
 *
 * IDs only — no display-name snapshots. By convention audit logs store
 * references, not denormalized strings; viewer tooling resolves
 * `actor_id` → `actor.name`, `scope_id` → scope name, etc. at read time.
 *
 * Apps register these via `extra_events:` on `create_audit_log_config`
 * alongside the other cell metadata schemas.
 *
 * @module
 */
import { z } from 'zod';
/**
 * Principal columns as stored on `cell_grant`. Discriminated by which
 * keys are present: `{actor_id}` for an actor-shaped grant,
 * `{role, scope_id}` for a role-shaped grant. Actor-shaped grants
 * carry only the id; names are never persisted in the audit envelope.
 */
export declare const CellGrantPrincipalAuditMetadata: z.ZodUnion<readonly [z.ZodObject<{
    actor_id: z.core.$ZodBranded<z.ZodUUID, "Uuid", "out">;
}, z.core.$loose>, z.ZodObject<{
    role: z.ZodString;
    scope_id: z.ZodNullable<z.core.$ZodBranded<z.ZodUUID, "Uuid", "out">>;
}, z.core.$loose>]>;
export type CellGrantPrincipalAuditMetadata = z.infer<typeof CellGrantPrincipalAuditMetadata>;
/**
 * Metadata envelope for `cell_grant_create`.
 *
 * Emitted on every successful create OR re-share update path
 * (UPSERT-on-unique-index). The audit reader correlates create-vs-update
 * via `grant_id` if needed; the design doesn't require distinguishing
 * the two at the metadata level.
 */
export declare const CellGrantCreateAuditMetadata: z.ZodObject<{
    cell_id: z.core.$ZodBranded<z.ZodUUID, "Uuid", "out">;
    grant_id: z.core.$ZodBranded<z.ZodUUID, "Uuid", "out">;
    level: z.ZodEnum<{
        viewer: "viewer";
        editor: "editor";
    }>;
    principal: z.ZodUnion<readonly [z.ZodObject<{
        actor_id: z.core.$ZodBranded<z.ZodUUID, "Uuid", "out">;
    }, z.core.$loose>, z.ZodObject<{
        role: z.ZodString;
        scope_id: z.ZodNullable<z.core.$ZodBranded<z.ZodUUID, "Uuid", "out">>;
    }, z.core.$loose>]>;
}, z.core.$loose>;
export type CellGrantCreateAuditMetadata = z.infer<typeof CellGrantCreateAuditMetadata>;
/**
 * Metadata envelope for `cell_grant_revoke`.
 *
 * `self: true` distinguishes the recipient-side "leave shared cell"
 * path (actor-shaped grant where the principal actor === caller
 * actor) from a delegator-side revoke. Single event type for both
 * — the boolean is enough for forensic review and avoids surface-
 * doubling with a parallel `cell_grant_leave` event.
 */
export declare const CellGrantRevokeAuditMetadata: z.ZodObject<{
    cell_id: z.core.$ZodBranded<z.ZodUUID, "Uuid", "out">;
    grant_id: z.core.$ZodBranded<z.ZodUUID, "Uuid", "out">;
    level: z.ZodEnum<{
        viewer: "viewer";
        editor: "editor";
    }>;
    principal: z.ZodUnion<readonly [z.ZodObject<{
        actor_id: z.core.$ZodBranded<z.ZodUUID, "Uuid", "out">;
    }, z.core.$loose>, z.ZodObject<{
        role: z.ZodString;
        scope_id: z.ZodNullable<z.core.$ZodBranded<z.ZodUUID, "Uuid", "out">>;
    }, z.core.$loose>]>;
    self: z.ZodOptional<z.ZodLiteral<true>>;
}, z.core.$loose>;
export type CellGrantRevokeAuditMetadata = z.infer<typeof CellGrantRevokeAuditMetadata>;
//# sourceMappingURL=cell_grant_audit_metadata.d.ts.map