mnotify-ts-sdk
Version:
Modern, zero-dependency TypeScript SDK for mNotify BMS API - Type-safe SMS, contacts, and account management with Railway-Oriented Programming
148 lines (147 loc) • 4.49 kB
TypeScript
import type { HttpClient } from "../client/HttpClient";
import type { Result } from "../types/Result";
import { MNotifyError } from "../errors/MNotifyError";
/**
* SMS Template
*/
export interface Template {
id: string;
name: string;
content: string;
status: "approved" | "pending" | "rejected";
created_at: string;
updated_at: string;
}
/**
* Template creation input
*/
export interface CreateTemplateInput {
name: string;
content: string;
}
/**
* Service for managing SMS templates with mNotify API
*/
export declare class TemplateService {
private readonly client;
constructor(client: HttpClient);
private annotate;
/**
* Creates a new SMS template (railway-oriented programming)
* @param input - Template data
* @returns Result containing created template or error
*
* @example
* ```typescript
* const result = await templateService.createTemplateSafe({
* name: 'Welcome Message',
* content: 'Welcome {{name}} to our service!'
* });
* result.match({
* ok: (template) => console.log('Template created:', template),
* err: (error) => console.error('Failed to create template:', error)
* });
* ```
*/
createTemplateSafe(input: CreateTemplateInput): Promise<Result<Template, MNotifyError>>;
/**
* Creates a new SMS template (throws on error - legacy API)
* @param input - Template data
* @returns Created template
* @throws {MNotifyError} On API failure
*
* @example
* ```typescript
* const template = await templateService.createTemplate({
* name: 'Welcome Message',
* content: 'Welcome {{name}} to our service!'
* });
* ```
*/
createTemplate(input: CreateTemplateInput): Promise<Template>;
/**
* Retrieves all templates (railway-oriented programming)
* @returns Result containing array of templates or error
*
* @example
* ```typescript
* const result = await templateService.getTemplatesSafe();
* if (result.isOk()) {
* console.log('Templates:', result.value);
* }
* ```
*/
getTemplatesSafe(): Promise<Result<Template[], MNotifyError>>;
/**
* Retrieves all templates (throws on error - legacy API)
* @returns Array of templates
* @throws {MNotifyError} On API failure
*
* @example
* ```typescript
* const templates = await templateService.getTemplates();
* console.log('Templates:', templates);
* ```
*/
getTemplates(): Promise<Template[]>;
/**
* Retrieves a specific template by ID (railway-oriented programming)
* @param id - Template ID
* @returns Result containing template details or error
*
* @example
* ```typescript
* const result = await templateService.getTemplateSafe('template_123');
* result.match({
* ok: (template) => console.log('Template:', template),
* err: (error) => console.error('Failed to get template:', error)
* });
* ```
*/
getTemplateSafe(id: string): Promise<Result<Template, MNotifyError>>;
/**
* Retrieves a specific template by ID (throws on error - legacy API)
* @param id - Template ID
* @returns Template details
* @throws {MNotifyError} On API failure
*
* @example
* ```typescript
* const template = await templateService.getTemplate('template_123');
* console.log('Template:', template);
* ```
*/
getTemplate(id: string): Promise<Template>;
/**
* Deletes a template (railway-oriented programming)
* @param id - Template ID
* @returns Result containing deletion confirmation or error
*
* @example
* ```typescript
* const result = await templateService.deleteTemplateSafe('template_123');
* if (result.isOk()) {
* console.log('Template deleted successfully');
* }
* ```
*/
deleteTemplateSafe(id: string): Promise<Result<{
status: string;
message: string;
}, MNotifyError>>;
/**
* Deletes a template (throws on error - legacy API)
* @param id - Template ID
* @returns Deletion confirmation
* @throws {MNotifyError} On API failure
*
* @example
* ```typescript
* await templateService.deleteTemplate('template_123');
* ```
*/
deleteTemplate(id: string): Promise<{
status: string;
message: string;
}>;
}