/**
 * Represents the Unlayer design JSON structure.
 * Replace with a more specific interface if the structure is known or becomes available.
 * Using `Record<string, any>` for now as a placeholder.
 */
export type DesignJsonObject = Record<string, any>;
/** Display mode for designs/templates */
export type DisplayMode = 'email' | 'web' | 'popup';
/** Generic success response structure */
export interface SuccessResponse {
    success: boolean;
}
/** Request body for POST /export/html */
export interface ExportHtmlRequest {
    design: DesignJsonObject;
    displayMode: DisplayMode;
    mergeTags?: Record<string, any>;
    customJS?: string[];
}
/** Data structure for successful POST /export/html response */
export interface ExportHtmlResponseData {
    html: string;
    chunks: {
        body: string;
        css: string;
        js: string;
        fonts: string[];
    };
}
/** Full response for POST /export/html */
export interface ExportHtmlResponse extends SuccessResponse {
    data: ExportHtmlResponseData;
}
/** Request body for POST /export/image */
export interface ExportImageRequest {
    design: DesignJsonObject;
    displayMode: DisplayMode;
    mergeTags?: Record<string, any>;
    customJS?: string[];
    /** Generate image of the full page. Defaults to true in API. */
    fullPage?: boolean;
}
/** Data structure for successful POST /export/image response */
export interface ExportImageResponseData {
    /** URL of the exported image */
    url: string;
}
/** Full response for POST /export/image */
export interface ExportImageResponse extends SuccessResponse {
    data: ExportImageResponseData;
}
/** Request body for POST /export/pdf */
export interface ExportPdfRequest {
    design: DesignJsonObject;
    displayMode: DisplayMode;
    mergeTags?: Record<string, any>;
    customJS?: string[];
}
/** Data structure for successful POST /export/pdf response */
export interface ExportPdfResponseData {
    /** URL of the exported PDF */
    url: string;
}
/** Full response for POST /export/pdf */
export interface ExportPdfResponse extends SuccessResponse {
    data: ExportPdfResponseData;
}
/** Request body for POST /export/zip */
export interface ExportZipRequest {
    design: DesignJsonObject;
    displayMode: DisplayMode;
    mergeTags?: Record<string, any>;
    customJS?: string[];
}
/** Data structure for successful POST /export/zip response */
export interface ExportZipResponseData {
    /** URL of the exported ZIP archive */
    url: string;
}
/** Full response for POST /export/zip */
export interface ExportZipResponse extends SuccessResponse {
    data: ExportZipResponseData;
}
/** Query parameters for GET /templates */
export interface ListTemplatesParams {
    /** Current page. Default: 1, Min: 1 */
    page?: number;
    /** Number of templates to fetch per page. Default: 10, Min: 1 */
    perPage?: number;
    /** Should the result include design json (1) or not (0). Default: 1 */
    includeDesign?: 0 | 1;
}
/** Individual Template structure (as returned by list and get) */
export interface Template {
    /** Template ID */
    id: string;
    /** Template name */
    name: string;
    /**
     * Template design JSON.
     * Only included in list responses if includeDesign=1.
     * Always included in get responses.
     */
    design?: DesignJsonObject;
    /** Template display mode */
    displayMode: DisplayMode;
    /** Template updated at (ISO 8601 date string) */
    updatedAt: string;
    /** Template created at (ISO 8601 date string) */
    createdAt: string;
}
/** Full response for GET /templates */
export interface ListTemplatesResponse extends SuccessResponse {
    data: Template[];
}
/** Full response for GET /templates/{id} */
export interface GetTemplateResponse extends SuccessResponse {
    /** Contains the specific template details, including the design JSON. */
    data: Template;
}
/** AMP Validation structure */
export interface AmpValidation {
    status: string;
    errors: unknown[];
}
/** AMP details structure */
export interface AmpDetails {
    enabled: boolean;
    format: string;
    validation?: AmpValidation;
}
/** Rendered template chunks structure */
export interface TemplateChunks {
    body: string;
    css: string;
    js: string;
    fonts: string[];
    tags: string[];
}
/** Data structure for successful GET /templates/{id}/render response */
export interface RenderTemplateHtmlResponseData {
    html: string;
    chunks: TemplateChunks;
    amp?: AmpDetails;
}
/** Full response for GET /templates/{id}/render */
export interface RenderTemplateHtmlResponse extends SuccessResponse {
    data: RenderTemplateHtmlResponseData;
}
