import { describe, expect, it } from 'vitest'
import { InsufficientBalanceError, isInsufficientBalanceError } from './errors.js'

describe('isInsufficientBalanceError', () => {
  // Structural discriminant, not instanceof: two deduped package copies must
  // still classify each other's errors (repo-wide error-identity convention).
  it('returns true for a real InsufficientBalanceError', () => {
    const e = new InsufficientBalanceError()
    expect(isInsufficientBalanceError(e)).toBe(true)
    expect(e.code).toBe('INSUFFICIENT_BALANCE')
  })

  it('returns false for foreign errors, null, and lookalike discriminants', () => {
    expect(isInsufficientBalanceError(new Error('INSUFFICIENT_BALANCE'))).toBe(false)
    expect(isInsufficientBalanceError(null)).toBe(false)
    expect(isInsufficientBalanceError(undefined)).toBe(false)
    expect(isInsufficientBalanceError({ _ledgerError: 'VestingInvariantError' })).toBe(false)
    expect(isInsufficientBalanceError('InsufficientBalanceError')).toBe(false)
  })
})
