import { EmailClient, GetEmailClientOptions } from '@happyvertical/email'; import { Account } from './models/Account.js'; import { MessageClientFactory, MessageSenderInterface, MessagingChannel } from './types.js'; export type MessagingProviderFieldType = 'string' | 'number' | 'boolean' | 'select' | 'url' | 'email' | 'password'; export interface MessagingProviderField { id: string; label: string; type: MessagingProviderFieldType; required?: boolean; description?: string; placeholder?: string; options?: Array<{ value: string; label: string; }>; } /** Public setup contract. Credential values are never represented here. */ export interface MessagingProviderDefinition { id: string; label: string; channel: MessagingChannel; available: boolean; configurationFields: MessagingProviderField[]; credentialFields: MessagingProviderField[]; endpointFields: MessagingProviderField[]; createSender?: (account: Account) => Promise; /** * Creates the SDK email client for this provider. Absent on the builtin * metadata-only definitions — registered by the explicit * `@happyvertical/smrt-messages/providers/email` entry point so the * @happyvertical/email SDK (googleapis/nodemailer) never enters * provider-neutral consumer bundles (#1979). */ createEmailClient?: (options: GetEmailClientOptions) => Promise; /** * Creates the SDK message client (Slack, Twitter, …) for this provider. * Registered by the matching `@happyvertical/smrt-messages/providers/*` * entry point; absent until that entry is imported. */ createMessageClient?: MessageClientFactory; } /** * Function-valued definition keys. Stripped by MessagingSettingsService before * definitions are serialized to setup UIs. */ export type MessagingProviderFunctionKey = 'createSender' | 'createEmailClient' | 'createMessageClient'; export declare function registerMessagingProvider(provider: MessagingProviderDefinition): () => void; export declare function getMessagingProvider(id: string): MessagingProviderDefinition | undefined; export declare function listMessagingProviders(options?: { includeUnavailable?: boolean; }): MessagingProviderDefinition[]; export declare function ensureBuiltinMessagingProvidersRegistered(): void; //# sourceMappingURL=providers.d.ts.map