/**
 * ProviderGateway Index
 *
 * Re-exports the ProviderGateway singleton, all types, error classes,
 * and the retry utility.
 *
 * Usage:
 *   import { providerGateway } from './ProviderGateway';
 *   // or
 *   import { providerGateway, ProviderError, withRetry } from './ProviderGateway';
 */

export { ProviderGateway, providerGateway } from './ProviderGateway';

export type {
  ProviderName,
  AddContactInput,
  SendCampaignInput,
  TriggerAutomationInput,
  ProviderResult,
  AddContactOutput,
  SendCampaignOutput,
  TriggerAutomationOutput,
  GetStatusOutput,
  ProviderGatewayInterface,
  ProviderAdapter,
} from './types';

export { ProviderError } from './errorNormalizer';
export type { ProviderErrorCode } from './errorNormalizer';
export { normalizeProviderError } from './errorNormalizer';

export { withRetry } from './retry';
export type { RetryOptions } from './retry';