viem
Version:
141 lines (128 loc) • 4.36 kB
text/typescript
import type { Address } from 'abitype'
import type { Hex } from 'ox'
import { BaseError } from '../errors/base.js'
export type GetVaultEngineChangedErrorType = GetVaultEngineChangedError & {
name: 'GetVaultEngineChangedError'
}
export class GetVaultEngineChangedError extends BaseError {
constructor({ vault }: { vault: Address }) {
super(`Engine of vault "${vault}" changed while reading.`, {
metaMessages: [
'An engine migration raced the snapshot; state from two different engines cannot be mixed.',
'Retry the read.',
],
name: 'GetVaultEngineChangedError',
})
}
}
export type WaitForPrivateDepositTimeoutErrorType =
WaitForPrivateDepositTimeoutError & {
name: 'WaitForPrivateDepositTimeoutError'
}
/** Thrown when a Zone gateway deposit event is not found before the timeout. */
export class WaitForPrivateDepositTimeoutError extends BaseError {
constructor({ actionId, gateway }: { actionId: Hex.Hex; gateway: Address }) {
super(
`Timed out while waiting for Zone deposit "${actionId}" at gateway "${gateway}".`,
{ name: 'WaitForPrivateDepositTimeoutError' },
)
}
}
export type WaitForTempoBlockTimeoutErrorType =
WaitForTempoBlockTimeoutError & {
name: 'WaitForTempoBlockTimeoutError'
}
export class WaitForTempoBlockTimeoutError extends BaseError {
constructor({ tempoBlockNumber }: { tempoBlockNumber: bigint }) {
super(
`Timed out while waiting for Tempo block "${tempoBlockNumber}" to be imported by the zone.`,
{ name: 'WaitForTempoBlockTimeoutError' },
)
}
}
export type WaitForPrivateRedeemTimeoutErrorType =
WaitForPrivateRedeemTimeoutError & {
name: 'WaitForPrivateRedeemTimeoutError'
}
/** Thrown when a Zone gateway redeem event is not found before the timeout. */
export class WaitForPrivateRedeemTimeoutError extends BaseError {
constructor({ actionId, gateway }: { actionId: Hex.Hex; gateway: Address }) {
super(
`Timed out while waiting for Zone redemption "${actionId}" at gateway "${gateway}".`,
{ name: 'WaitForPrivateRedeemTimeoutError' },
)
}
}
export type InvalidFeeTokenErrorType = InvalidFeeTokenError & {
name: 'InvalidFeeTokenError'
}
export class InvalidFeeTokenError extends BaseError {
constructor({
cause,
token,
}: {
cause?: BaseError | Error | undefined
token: string
}) {
super(`Fee token "${token}" is invalid.`, {
cause,
docsPath: '/tempo/transactions',
docsSlug: 'pay-fees-with-stablecoins',
metaMessages: [
'Fee tokens must be unpaused USD-denominated TIP-20 tokens.',
'Use `client.fee.validateToken({ token })` before sending transactions or setting fee preferences.',
],
name: 'InvalidFeeTokenError',
})
}
}
export type FeeTokenNotTip20ErrorType = FeeTokenNotTip20Error & {
name: 'FeeTokenNotTip20Error'
}
export class FeeTokenNotTip20Error extends BaseError {
constructor({ token }: { token: string }) {
super(`Fee token "${token}" is not a TIP-20 token.`, {
docsPath: '/tempo/transactions',
docsSlug: 'pay-fees-with-stablecoins',
metaMessages: [
'Fee tokens must be TIP-20 token addresses or token IDs.',
'TIP-20 token addresses use the `0x20c0...` address prefix.',
],
name: 'FeeTokenNotTip20Error',
})
}
}
export type FeeTokenNotUsdErrorType = FeeTokenNotUsdError & {
name: 'FeeTokenNotUsdError'
}
export class FeeTokenNotUsdError extends BaseError {
constructor({
currency,
token,
}: {
currency: string
token: string
}) {
super(`Fee token "${token}" is denominated in "${currency}", not "USD".`, {
docsPath: '/tempo/transactions',
docsSlug: 'pay-fees-with-stablecoins',
metaMessages: [
'Only USD-denominated TIP-20 tokens can be used as fee tokens.',
],
name: 'FeeTokenNotUsdError',
})
}
}
export type FeeTokenPausedErrorType = FeeTokenPausedError & {
name: 'FeeTokenPausedError'
}
export class FeeTokenPausedError extends BaseError {
constructor({ token }: { token: string }) {
super(`Fee token "${token}" is paused.`, {
docsPath: '/tempo/transactions',
docsSlug: 'pay-fees-with-stablecoins',
metaMessages: ['Paused TIP-20 tokens cannot be used as fee tokens.'],
name: 'FeeTokenPausedError',
})
}
}