UNPKG

micro-eth-signer

Version:

Minimal library for Ethereum transactions, addresses and smart contracts

30 lines (26 loc) 933 B
import type { ContractABI, HintFn, HookFn } from './decoder.ts'; export function addHint<T extends ContractABI>(abi: ContractABI, name: string, fn: HintFn): T { const res = []; for (const elm of abi) { if (elm.name === name) res.push({ ...elm, hint: fn }); else res.push(elm); } return res as unknown as T; } export function addHints<T extends ContractABI>(abi: T, map: Record<string, HintFn>): T { const res = []; for (const elm of abi) { if (['event', 'function'].includes(elm.type) && elm.name && map[elm.name]) { res.push({ ...elm, hint: map[elm.name!] }); } else res.push(elm); } return res as unknown as T; } export function addHook<T extends ContractABI>(abi: T, name: string, fn: HookFn): T { const res = []; for (const elm of abi) { if (elm.type === 'function' && elm.name === name) res.push({ ...elm, hook: fn }); else res.push(elm); } return res as unknown as T; }