import type { Idl } from "@coral-xyz/anchor"; import type { IdlErrorCode } from "@coral-xyz/anchor/dist/esm/idl.js"; import type { AnchorError } from "./index.js"; export type ErrorMap = { [K in AnchorError["name"]]: AnchorError & { name: K }; }; /** * Generates the error mapping * @param idl * @returns */ export const generateErrorMap = (idl: T): ErrorMap => { return (idl.errors?.reduce((acc, err) => { return { ...acc, [err.name]: err, }; }, {}) ?? {}) as ErrorMap; }; /** * Returns a RegExp which matches the message of a program error. * @param err * @returns */ export const matchError = (err: IdlErrorCode): RegExp => matchErrorCode(err.code); /** * Returns a RegExp which matches the code of a custom program error. * @param err * @returns */ export const matchErrorCode = (code: number): RegExp => new RegExp(`custom program error: 0x${code.toString(16)}`);