@radixdlt/application
Version:
A JavaScript client library for interacting with the Radix Distributed Ledger.
117 lines (98 loc) • 3.62 kB
text/typescript
import { Decoded } from './api/open-api/_types'
export type APIError = Decoded.TransactionBuildError
export type WalletError = ErrorT<'wallet'>
export type NodeError = ErrorT<'node'>
export type ErrorT<T extends 'api' | 'node' | 'wallet'> = {
cause: T extends 'api'
? APIErrorCause
: T extends 'node'
? NodeErrorCause
: T extends 'wallet'
? WalletErrorCause
: unknown
category: T extends 'api'
? ErrorCategory.API
: T extends 'node'
? ErrorCategory.NODE
: T extends 'wallet'
? ErrorCategory.WALLET
: unknown
message: string | undefined
}
export enum ErrorCategory {
NODE = 'node',
WALLET = 'wallet',
API = 'api',
}
export enum WalletErrorCause {
LOAD_KEYSTORE_FAILED = 'LOAD_KEYSTORE_FAILED',
}
export enum NodeErrorCause {
GET_NODE_FAILED = 'GET_NODE_FAILED',
}
export type APIErrorObject = { code: number; message: string }
export enum APIErrorCause {
TOKEN_BALANCES_FAILED = 'TOKEN_BALANCES_FAILED',
TRANSACTION_HISTORY_FAILED = 'TRANSACTION_HISTORY_FAILED',
RECENT_TRANSACTIONS_FAILED = 'RECENT_TRANSACTIONS_FAILED',
NATIVE_TOKEN_FAILED = 'NATIVE_TOKEN_FAILED',
TOKEN_INFO_FAILED = 'TOKEN_INFO_FAILED',
STAKES_FOR_ADDRESS_FAILED = 'STAKES_FOR_ADDRESS_FAILED',
UNSTAKES_FOR_ADDRESS_FAILED = 'UNSTAKES_FOR_ADDRESS_FAILED',
TX_STATUS_FAILED = 'TX_STATUS_FAILED',
NETWORK_TX_THROUGHPUT_FAILED = 'NETWORK_TX_THROUGHPUT_FAILED',
NETWORK_TX_DEMAND_FAILED = 'NETWORK_TX_DEMAND_FAILED',
LOOKUP_TX_FAILED = 'LOOKUP_TX_FAILED',
LOOKUP_VALIDATOR_FAILED = 'LOOKUP_VALIDATOR_FAILED',
VALIDATORS_FAILED = 'VALIDATORS_FAILED',
BUILD_TRANSACTION_FAILED = 'BUILD_TRANSACTION_FAILED',
SUBMIT_SIGNED_TX_FAILED = 'SUBMIT_SIGNED_TX_FAILED',
FINALIZE_TX_FAILED = 'FINALIZE_TX_FAILED',
NETWORK_ID_FAILED = 'NETWORK_ID_FAILED',
}
const APIError = (cause: APIErrorCause) => (error: any): APIError => ({
cause,
...error,
})
export const nodeError = (error: Error): ErrorT<'node'> => ({
cause: NodeErrorCause.GET_NODE_FAILED,
category: ErrorCategory.NODE,
message: error.message,
})
export const walletError = (error: Error): ErrorT<'wallet'> => ({
cause: WalletErrorCause.LOAD_KEYSTORE_FAILED,
category: ErrorCategory.WALLET,
message: error.message,
})
export const tokenBalancesErr = APIError(APIErrorCause.TOKEN_BALANCES_FAILED)
export const transactionHistoryErr = APIError(
APIErrorCause.TRANSACTION_HISTORY_FAILED,
)
export const recentTransactionsErr = APIError(
APIErrorCause.RECENT_TRANSACTIONS_FAILED,
)
export const nativeTokenErr = APIError(APIErrorCause.NATIVE_TOKEN_FAILED)
export const tokenInfoErr = APIError(APIErrorCause.TOKEN_INFO_FAILED)
export const stakesForAddressErr = APIError(
APIErrorCause.STAKES_FOR_ADDRESS_FAILED,
)
export const unstakesForAddressErr = APIError(
APIErrorCause.UNSTAKES_FOR_ADDRESS_FAILED,
)
export const txStatusErr = APIError(APIErrorCause.TX_STATUS_FAILED)
export const NetworkTxThroughputErr = APIError(
APIErrorCause.NETWORK_TX_THROUGHPUT_FAILED,
)
export const NetworkTxDemandErr = APIError(
APIErrorCause.NETWORK_TX_DEMAND_FAILED,
)
export const buildTxFromIntentErr = (error: APIErrorObject): APIError =>
APIError(APIErrorCause.BUILD_TRANSACTION_FAILED)(error)
export const submitSignedTxErr = APIError(APIErrorCause.SUBMIT_SIGNED_TX_FAILED)
export const finalizeTxErr = APIError(APIErrorCause.FINALIZE_TX_FAILED)
export const networkIdErr = APIError(APIErrorCause.NETWORK_ID_FAILED)
export const lookupTxErr = APIError(APIErrorCause.LOOKUP_TX_FAILED)
export const lookupValidatorErr = APIError(
APIErrorCause.LOOKUP_VALIDATOR_FAILED,
)
export const validatorsErr = APIError(APIErrorCause.VALIDATORS_FAILED)