UNPKG

cakemail-mcp-server

Version:

Enterprise MCP server for Cakemail API integration with Claude AI - includes comprehensive template management, list management, sub-account management, BEEeditor visual email design, and advanced analytics

150 lines 5.51 kB
import { RequestInit } from 'node-fetch'; import { CakemailConfig, CakemailToken } from '../types/cakemail-types.js'; import { RetryManager, RateLimiter, CircuitBreaker, RequestQueue, RetryConfig, RateLimitConfig } from '../types/retry.js'; import { PaginatedIterator, UnifiedPaginationOptions, PaginatedResult, IteratorOptions } from '../utils/pagination/index.js'; export interface EnhancedCakemailConfig extends CakemailConfig { retry?: Partial<RetryConfig>; rateLimit?: Partial<RateLimitConfig>; timeout?: number; maxConcurrentRequests?: number; circuitBreaker?: { enabled: boolean; failureThreshold: number; resetTimeout: number; }; } export declare class BaseApiClient { protected config: EnhancedCakemailConfig; protected token: CakemailToken | null; protected mockToken: CakemailToken | null; protected tokenExpiry: Date | null; protected baseUrl: string; protected debugMode: boolean; protected currentAccountId: number | null; protected retryManager: RetryManager; protected rateLimiter: RateLimiter | null; protected circuitBreaker: CircuitBreaker | null; protected requestQueue: RequestQueue; protected timeout: number; constructor(config: EnhancedCakemailConfig); authenticate(): Promise<void>; private passwordAuthenticate; private refreshToken; private parseErrorResponse; protected makeRequest(endpoint: string, options?: RequestInit): Promise<any>; private executeRequest; protected getCurrentAccountId(): Promise<number | undefined>; protected isValidEmail(email: string): boolean; protected isValidDate(date: string): boolean; getTokenStatus(): { hasToken: boolean; isExpired: boolean; expiresAt: Date | null; timeUntilExpiry: number | null; needsRefresh: boolean; tokenType: string | null; hasRefreshToken: boolean; }; forceRefreshToken(): Promise<{ success: boolean; newToken: Partial<CakemailToken> | null; previousExpiry: Date | null; newExpiry: Date | null; error?: string; }>; validateToken(): Promise<{ isValid: boolean; statusCode?: number; error?: string; accountInfo?: any; }>; getTokenScopes(): { accounts: number[]; scopes: string | null; permissions: string[]; }; private inferPermissionsFromAccounts; protected ensureValidToken(): Promise<void>; setMockToken(token: CakemailToken): void; healthCheck(): Promise<{ status: string; authenticated: boolean; accountId: any; apiCompliance: string; components: { retryManager: RetryConfig; rateLimiter: string; circuitBreaker: string | { state: string; failures: number; lastFailureTime: number; }; requestQueue: { active: number; queued: number; }; timeout: number; }; error?: never; errorType?: never; statusCode?: never; } | { status: string; error: string; errorType: string; statusCode: number; authenticated: boolean; components: { circuitBreaker: string | { state: string; failures: number; lastFailureTime: number; }; requestQueue: { active: number; queued: number; }; }; accountId?: never; apiCompliance?: never; } | { status: string; error: string; errorType: string; authenticated: boolean; components: { circuitBreaker: string | { state: string; failures: number; lastFailureTime: number; }; requestQueue: { active: number; queued: number; }; }; accountId?: never; apiCompliance?: never; statusCode?: never; }>; updateRetryConfig(config: Partial<RetryConfig>): void; getRetryConfig(): RetryConfig; getCircuitBreakerState(): { state: string; failures: number; lastFailureTime: number; } | null; getRequestQueueStats(): { active: number; queued: number; }; protected fetchPaginated<T>(endpoint: string, endpointName: string, options?: UnifiedPaginationOptions, additionalParams?: Record<string, any>): Promise<PaginatedResult<T>>; protected createIterator<T>(endpoint: string, endpointName: string, options?: IteratorOptions, additionalParams?: Record<string, any>): PaginatedIterator<T>; protected createRobustIterator<T>(endpoint: string, endpointName: string, options?: IteratorOptions & { onError?: (error: Error, attempt: number) => void; validateResponse?: (response: any) => boolean; }, additionalParams?: Record<string, any>): PaginatedIterator<T>; protected getAllItems<T>(endpoint: string, endpointName: string, options?: IteratorOptions, additionalParams?: Record<string, any>): Promise<T[]>; protected processBatches<T>(endpoint: string, endpointName: string, processor: (batch: T[]) => Promise<void>, options?: IteratorOptions, additionalParams?: Record<string, any>): Promise<void>; } //# sourceMappingURL=base-client.d.ts.map