import {
  isVendorNotFoundError,
  isVendorProductNotFoundError,
  isVendorAuthorizationError,
  isVendorStateError,
  isCommissionRateError,
  isVendorAlreadyExistsError,
} from '@platform-modules/commerce-marketplace'

/** Thrown when a marketplace hook is used outside <MarketplaceProvider>. */
export class MarketplaceProviderError extends Error {
  override readonly name = 'MarketplaceProviderError'
  constructor(hook: string) {
    super(`${hook} must be used within <MarketplaceProvider>`)
  }
}
export function isMarketplaceProviderError(e: unknown): e is MarketplaceProviderError {
  return typeof e === 'object' && e !== null && (e as { name?: string }).name === 'MarketplaceProviderError'
}

/** Thrown by reviveVendor / reviveOptionalVendor on malformed wire input. */
export class MarketplaceWireError extends Error {
  override readonly name = 'MarketplaceWireError'
  constructor(message: string) { super(message) }
}
export function isMarketplaceWireError(e: unknown): e is MarketplaceWireError {
  return typeof e === 'object' && e !== null && (e as { name?: string }).name === 'MarketplaceWireError'
}

// Re-export core structural guards so consumers branch write failures without importing core directly.
export {
  isVendorNotFoundError,
  isVendorProductNotFoundError,
  isVendorAuthorizationError,
  isVendorStateError,
  isCommissionRateError,
  isVendorAlreadyExistsError,
}
