morphit/node_modules/@beblurt/dblurt/lib/errors.d.ts

66 lines
2.7 KiB
TypeScript

interface JsonRpcError {
code: number;
message: string;
data?: any;
}
export type DBlurtErrorCategory = 'rpc_application' | 'serialization' | 'validation' | 'transport' | 'timeout' | 'unknown';
export type DBlurtErrorCode = 'DBLURT_RPC_APPLICATION' | 'DBLURT_SERIALIZATION' | 'DBLURT_VALIDATION' | 'DBLURT_TRANSPORT' | 'DBLURT_TIMEOUT' | 'DBLURT_UNKNOWN';
/** Machine-readable error classification used by dblurt error helpers. */
export interface DBlurtErrorMetadata {
category: DBlurtErrorCategory;
code: DBlurtErrorCode;
retryable: boolean;
cause_code?: string;
cause_message?: string;
cause_name?: string;
field?: string;
path?: Array<string | number>;
rpc_code?: number;
rpc_data?: any;
}
export interface DBlurtErrorOptions {
cause?: Error;
info?: any;
metadata?: DBlurtErrorMetadata;
}
export interface ValidationErrorContext {
field?: string;
path?: Array<string | number>;
}
/** Base class for typed dblurt errors with non-enumerable metadata. */
export declare class DBlurtError extends Error {
readonly category: DBlurtErrorCategory;
readonly code: DBlurtErrorCode;
readonly dblurt_error = true;
readonly jse_shortmsg: string;
readonly jse_info: any;
readonly jse_cause?: Error;
readonly metadata: DBlurtErrorMetadata;
readonly retryable: boolean;
constructor(name: string, message: string, options?: DBlurtErrorOptions);
cause(): Error | undefined;
}
/** Error raised when transaction or operation serialization fails. */
export declare class SerializationError extends DBlurtError {
constructor(cause: any);
}
/** Error raised when SDK-side input validation fails before signing/broadcast. */
export declare class ValidationError extends DBlurtError {
constructor(message: string, context?: ValidationErrorContext);
}
/** Error raised for JSON-RPC application errors returned by a Blurt RPC endpoint. */
export declare class RpcApplicationError extends DBlurtError {
constructor(message: string, info: any, rpcCode?: number);
}
/** Return true when an unknown error value carries dblurt typed error metadata. */
export declare const isDBlurtError: (error: any) => error is DBlurtError;
/**
* Classify an unknown error value without parsing human-readable messages in app code.
*
* Existing {@link DBlurtError} instances return their embedded metadata. Abort-like
* errors are classified as retryable timeouts, selected network failures as
* transport errors and unrecognized values as non-retryable unknown errors.
*/
export declare const classifyError: (error: any) => DBlurtErrorMetadata;
export declare const rpcErrorFromResponse: (error: JsonRpcError) => Error;
export {};