import * as plugins from '../plugins.js';
import * as authInterfaces from '../data/auth.js';
export type TCertificateStatus = 'valid' | 'expiring' | 'expired' | 'provisioning' | 'failed' | 'unknown';
export type TCertificateSource = 'acme' | 'provision-function' | 'static' | 'none';
export interface ICertificateInfo {
    domain: string;
    routeNames: string[];
    status: TCertificateStatus;
    source: TCertificateSource;
    tlsMode: 'terminate' | 'terminate-and-reencrypt' | 'passthrough';
    expiryDate?: string;
    issuer?: string;
    issuedAt?: string;
    error?: string;
    canReprovision: boolean;
    backoffInfo?: {
        failures: number;
        retryAfter?: string;
        lastError?: string;
    };
}
export interface IReq_GetCertificateOverview extends plugins.typedrequestInterfaces.implementsTR<plugins.typedrequestInterfaces.ITypedRequest, IReq_GetCertificateOverview> {
    method: 'getCertificateOverview';
    request: {
        identity?: authInterfaces.IIdentity;
        apiToken?: string;
    };
    response: {
        certificates: ICertificateInfo[];
        summary: {
            total: number;
            valid: number;
            expiring: number;
            expired: number;
            failed: number;
            unknown: number;
        };
    };
}
export interface IReq_ReprovisionCertificateDomain extends plugins.typedrequestInterfaces.implementsTR<plugins.typedrequestInterfaces.ITypedRequest, IReq_ReprovisionCertificateDomain> {
    method: 'reprovisionCertificateDomain';
    request: {
        identity?: authInterfaces.IIdentity;
        apiToken?: string;
        domain: string;
        forceRenew?: boolean;
    };
    response: {
        success: boolean;
        message?: string;
    };
}
export interface IReq_DeleteCertificate extends plugins.typedrequestInterfaces.implementsTR<plugins.typedrequestInterfaces.ITypedRequest, IReq_DeleteCertificate> {
    method: 'deleteCertificate';
    request: {
        identity?: authInterfaces.IIdentity;
        apiToken?: string;
        domain: string;
    };
    response: {
        success: boolean;
        message?: string;
    };
}
