/**
 * Site Asset and Export Contracts
 *
 * These types cover user-managed site assets and related binary export flows,
 * including custom fonts and backup/SEO downloads.
 *
 * Note: Do NOT use these API types as validation schemas. They describe wire
 * request/response shapes, while upload/export workflows still validate at the
 * route or service boundary.
 */
export type FontRecord = {
    family: string;
    variants: string[];
    category: string;
};
export type SiteFontFileRecord = {
    storagePath: string;
    weight: number;
    style: "normal" | "italic";
};
export type SiteFontRecord = {
    id: string;
    familyName: string;
    displayName: string | null;
    isVariable: boolean;
    variableWeightMin: number | null;
    variableWeightMax: number | null;
    category: "serif" | "sans-serif" | "display" | "handwriting" | "monospace" | null;
    files: SiteFontFileRecord[];
};
export type ListPublicSiteFontsResponse = {
    fonts: SiteFontRecord[];
};
export type SiteFontFileRecordFull = {
    id: string;
    siteFontId: string;
    storagePath: string;
    filename: string;
    bytes: number;
    weight: number;
    style: "normal" | "italic";
    createdAt: string;
};
export type SiteFontRecordFull = {
    id: string;
    siteId: string;
    familyName: string;
    displayName: string | null;
    isVariable: boolean;
    variableWeightMin: number | null;
    variableWeightMax: number | null;
    category: "serif" | "sans-serif" | "display" | "handwriting" | "monospace" | null;
    createdAt: string;
    updatedAt: string;
    files: SiteFontFileRecordFull[];
};
export type ListSiteFontsResponse = {
    fonts: SiteFontRecordFull[];
};
export type CreateSiteFontUploadUrlRequest = {
    filename: string;
    bytes: number;
};
export type CreateSiteFontUploadUrlResponse = {
    signedUrl: string;
    storagePath: string;
};
export type UploadSiteFontRequest = {
    storagePath: string;
};
export type UploadSiteFontResponse = {
    font: SiteFontRecordFull;
    uploadedFile: SiteFontFileRecordFull;
    metadata: {
        familyName: string;
        subfamilyName: string | null;
        weight: number;
        style: "normal" | "italic";
        isVariable: boolean;
        variableWeightMin: number | null;
        variableWeightMax: number | null;
    };
};
export type GetSiteFontResponse = {
    font: SiteFontRecordFull;
};
export type UpdateSiteFontRequest = {
    displayName?: string | null;
    category?: SiteFontRecordFull["category"];
};
export type UpdateSiteFontResponse = {
    font: SiteFontRecordFull;
};
export type DeleteSiteFontFileRequest = {
    fileId: string;
};
export type DeleteSiteFontFileResponse = {
    font: SiteFontRecordFull | null;
    deletedFileId: string;
};
export type ExportBackupRequest = {
    includeMedia?: boolean;
    includeAccess?: boolean;
};
