export class InsufficientBalanceError extends Error {
  override readonly name = 'InsufficientBalanceError'
  readonly code = 'INSUFFICIENT_BALANCE' as const
  readonly _ledgerError = 'InsufficientBalanceError' as const

  constructor() {
    super('INSUFFICIENT_BALANCE')
  }
}

export function isInsufficientBalanceError(e: unknown): e is InsufficientBalanceError {
  return (
    typeof e === 'object' &&
    e !== null &&
    (e as { _ledgerError?: unknown })._ledgerError === 'InsufficientBalanceError'
  )
}

export class VestingInvariantError extends Error {
  readonly code = 'VESTING_INVARIANT' as const
  readonly _ledgerError = 'VestingInvariantError' as const

  constructor(message: string) {
    super(message)
    this.name = 'VestingInvariantError'
  }
}

export function isVestingInvariantError(e: unknown): e is VestingInvariantError {
  return (
    typeof e === 'object' &&
    e !== null &&
    (e as { _ledgerError?: unknown })._ledgerError === 'VestingInvariantError'
  )
}
