85 lines
2.0 KiB
TypeScript
85 lines
2.0 KiB
TypeScript
/**
|
|
* Type definitions for SmartAcme interfaces used by ChallengeResponder
|
|
* These reflect the actual SmartAcme API based on the documentation
|
|
*/
|
|
import * as plugins from '../../plugins.js';
|
|
|
|
/**
|
|
* Structure for SmartAcme certificate result
|
|
*/
|
|
export interface SmartAcmeCert {
|
|
id?: string;
|
|
domainName: string;
|
|
created?: number | Date | string;
|
|
privateKey: string;
|
|
publicKey: string;
|
|
csr?: string;
|
|
validUntil: number | Date | string;
|
|
}
|
|
|
|
/**
|
|
* Structure for SmartAcme options
|
|
*/
|
|
export interface SmartAcmeOptions {
|
|
accountEmail: string;
|
|
certManager: ICertManager;
|
|
environment: 'production' | 'integration';
|
|
challengeHandlers: IChallengeHandler<any>[];
|
|
challengePriority?: string[];
|
|
retryOptions?: {
|
|
retries?: number;
|
|
factor?: number;
|
|
minTimeoutMs?: number;
|
|
maxTimeoutMs?: number;
|
|
};
|
|
}
|
|
|
|
/**
|
|
* Interface for certificate manager
|
|
*/
|
|
export interface ICertManager {
|
|
init(): Promise<void>;
|
|
get(domainName: string): Promise<SmartAcmeCert | null>;
|
|
put(cert: SmartAcmeCert): Promise<SmartAcmeCert>;
|
|
delete(domainName: string): Promise<void>;
|
|
close?(): Promise<void>;
|
|
}
|
|
|
|
/**
|
|
* Interface for challenge handler
|
|
*/
|
|
export interface IChallengeHandler<T> {
|
|
getSupportedTypes(): string[];
|
|
prepare(ch: T): Promise<void>;
|
|
verify?(ch: T): Promise<void>;
|
|
cleanup(ch: T): Promise<void>;
|
|
checkWetherDomainIsSupported(domain: string): Promise<boolean>;
|
|
}
|
|
|
|
/**
|
|
* HTTP-01 challenge type
|
|
*/
|
|
export interface Http01Challenge {
|
|
type: string; // 'http-01'
|
|
token: string;
|
|
keyAuthorization: string;
|
|
webPath: string;
|
|
}
|
|
|
|
/**
|
|
* HTTP-01 Memory Handler Interface
|
|
*/
|
|
export interface Http01MemoryHandler extends IChallengeHandler<Http01Challenge> {
|
|
handleRequest(req: plugins.http.IncomingMessage, res: plugins.http.ServerResponse, next?: () => void): void;
|
|
}
|
|
|
|
/**
|
|
* SmartAcme main class interface
|
|
*/
|
|
export interface SmartAcme {
|
|
start(): Promise<void>;
|
|
stop(): Promise<void>;
|
|
getCertificateForDomain(domain: string): Promise<SmartAcmeCert>;
|
|
on?(event: string, listener: (data: any) => void): void;
|
|
eventEmitter?: plugins.EventEmitter;
|
|
} |