import { z } from "zod"; import { type Subject, type Extensions } from "./device-id-payload.js"; import { type JWKPublic } from "./wire.js"; import { type ClerkClaim } from "../clerk-claim.js"; export interface Certificate { version: "3"; serialNumber: string; subject: Subject; issuer: Subject; validity: { notBefore: string; notAfter: string; }; subjectPublicKeyInfo: JWKPublic; signatureAlgorithm: "ES256"; keyUsage: ("digitalSignature" | "nonRepudiation" | "keyEncipherment" | "dataEncipherment" | "keyAgreement" | "keyCertSign" | "cRLSign" | "encipherOnly" | "decipherOnly")[]; extendedKeyUsage: ("serverAuth" | "clientAuth" | "codeSigning" | "emailProtection" | "timeStamping" | "OCSPSigning" | "ipsecIKE" | "msCodeInd" | "msCodeCom" | "msCTLSign" | "msEFS")[]; extensions?: Extensions; } export type CertificatePayload = Readonly<{ iss: string; sub: string; aud: string | string[]; iat: number; nbf: number; exp: number; jti: string; certificate: Certificate; creatingUser?: { type: "clerk"; claims: ClerkClaim; }; }>; export interface IssueCertificateResult { readonly certificateJWT: string; readonly certificatePayload: CertificatePayload; readonly format: "JWS"; readonly serialNumber: string; readonly issuer: string; readonly subject: string; readonly validityPeriod: { readonly notBefore: Date; readonly notAfter: Date; }; readonly publicKey: JWKPublic; } export declare const CertificatePayloadSchema: z.ZodType;