import { z } from "zod/v4";
/**
 * Audit-log read contracts (M8 Agent X).
 *
 * Every mutating handler in dp-center-worker writes one audit_log row via
 * `writeAudit(...)` wrapped in `c.executionCtx.waitUntil`. The UI reads
 * back through `GET /api/audit-log` which paginates newest-first by
 * `(created_at, id) DESC` with an opaque base64url cursor.
 *
 * `actor_email` is JOIN-resolved from `public.users` so the list view can
 * render "alice@example.com did X" without a second lookup. `payload_json`
 * is a small, human-readable hint object — never row data, never secrets.
 */
export declare const AuditLogItemSchema: z.ZodObject<{
    id: z.ZodString;
    actor_user_id: z.ZodOptional<z.ZodString>;
    actor_email: z.ZodOptional<z.ZodString>;
    actor_machine_id: z.ZodOptional<z.ZodString>;
    action: z.ZodString;
    target_type: z.ZodString;
    target_id: z.ZodString;
    payload_json: z.ZodNullable<z.ZodUnknown>;
    created_at: z.ZodString;
}, z.core.$strip>;
export type AuditLogItem = z.infer<typeof AuditLogItemSchema>;
export declare const AuditLogListResponseSchema: z.ZodObject<{
    items: z.ZodArray<z.ZodObject<{
        id: z.ZodString;
        actor_user_id: z.ZodOptional<z.ZodString>;
        actor_email: z.ZodOptional<z.ZodString>;
        actor_machine_id: z.ZodOptional<z.ZodString>;
        action: z.ZodString;
        target_type: z.ZodString;
        target_id: z.ZodString;
        payload_json: z.ZodNullable<z.ZodUnknown>;
        created_at: z.ZodString;
    }, z.core.$strip>>;
    next_cursor: z.ZodOptional<z.ZodString>;
}, z.core.$strip>;
export type AuditLogListResponse = z.infer<typeof AuditLogListResponseSchema>;
//# sourceMappingURL=audit-contracts.d.ts.map