/**
 * SMS service configuration interface
 */
export interface ISmsConfig {
  /**
   * API token for the gateway service
   */
  apiGatewayApiToken: string;
  
  /**
   * Default sender ID or phone number
   */
  defaultSender?: string;
  
  /**
   * SMS rate limiting
   */
  rateLimit?: {
    /**
     * Whether rate limiting is enabled
     */
    enabled?: boolean;
    
    /**
     * Maximum requests per period
     */
    maxPerPeriod?: number;
    
    /**
     * Period duration in milliseconds
     */
    periodMs?: number;
    
    /**
     * Whether to apply rate limit per key
     */
    perKey?: boolean;
    
    /**
     * Number of burst tokens
     */
    burstTokens?: number;
    
    /**
     * Maximum messages per recipient per day
     */
    maxPerRecipientPerDay?: number;
  };
  
  /**
   * SMS provider configuration
   */
  provider?: {
    /**
     * Provider type
     */
    type?: 'gateway' | 'twilio' | 'other';
    
    /**
     * Provider-specific configuration
     */
    config?: Record<string, any>;
    
    /**
     * Fallback provider configuration
     */
    fallback?: {
      /**
       * Whether to use fallback provider
       */
      enabled?: boolean;
      
      /**
       * Provider type
       */
      type?: 'gateway' | 'twilio' | 'other';
      
      /**
       * Provider-specific configuration
       */
      config?: Record<string, any>;
    };
  };
  
  /**
   * Verification code settings
   */
  verification?: {
    /**
     * Code length
     */
    codeLength?: number;
    
    /**
     * Code expiration time in seconds
     */
    expirationSeconds?: number;
    
    /**
     * Maximum number of attempts
     */
    maxAttempts?: number;
    
    /**
     * Cooldown period in seconds
     */
    cooldownSeconds?: number;
  };
}