/** * Template Builder - Fluent API for creating AlimTalk templates */ import { type AlimTalkTemplate, type TemplateButton, TemplateCategory, TemplateStatus } from "../types/template.types"; export declare class TemplateBuilder { private template; /** * Set template name */ name(name: string): TemplateBuilder; /** * Set template code (provider specific) */ code(code: string): TemplateBuilder; /** * Set template content with variables */ content(content: string): TemplateBuilder; /** * Set template category */ category(category: TemplateCategory): TemplateBuilder; /** * Set template provider */ provider(provider: string): TemplateBuilder; /** * Set template status */ status(status: TemplateStatus): TemplateBuilder; /** * Add a variable definition */ variable(name: string, type?: "string" | "number" | "date" | "custom", required?: boolean, options?: { maxLength?: number; format?: string; description?: string; example?: string; }): TemplateBuilder; /** * Add multiple variables at once */ variables(variables: Array<{ name: string; type?: "string" | "number" | "date" | "custom"; required?: boolean; maxLength?: number; format?: string; description?: string; example?: string; }>): TemplateBuilder; /** * Add a web link button */ webLinkButton(name: string, mobileUrl?: string, pcUrl?: string): TemplateBuilder; /** * Add an app link button */ appLinkButton(name: string, options: { iosUrl?: string; androidUrl?: string; iosScheme?: string; androidScheme?: string; }): TemplateBuilder; /** * Add a delivery tracking button */ deliveryButton(name: string): TemplateBuilder; /** * Add a bot keyword button */ botKeywordButton(name: string): TemplateBuilder; /** * Add a message delivery button */ messageDeliveryButton(name: string): TemplateBuilder; /** * Add a custom button */ button(button: TemplateButton): TemplateBuilder; /** * Clear all buttons */ clearButtons(): TemplateBuilder; /** * Set template metadata */ metadata(metadata: Partial): TemplateBuilder; /** * Validate the current template */ validate(): { isValid: boolean; errors: string[]; warnings: string[]; }; /** * Preview the template with sample variables */ preview(sampleVariables?: Record): string; /** * Generate sample variables based on variable definitions */ private generateSampleVariables; /** * Clone the current builder */ clone(): TemplateBuilder; /** * Reset the builder to start fresh */ reset(): TemplateBuilder; /** * Build the final template */ build(): AlimTalkTemplate; private generateTemplateId; } /** * Static factory methods for common template types */ export declare const TemplateBuilders: { /** * Create an authentication template builder */ authentication(name: string, provider: string): TemplateBuilder; /** * Create a notification template builder */ notification(name: string, provider: string): TemplateBuilder; /** * Create a promotion template builder */ promotion(name: string, provider: string): TemplateBuilder; /** * Create a payment template builder */ payment(name: string, provider: string): TemplateBuilder; };