UNPKG

@bitte-ai/agent-sdk

Version:

Agent SDK for Bitte Protocol

57 lines (56 loc) 1.78 kB
import { getAddress } from "viem"; export function validateInput(params, validatorMapping) { const fields = createFields(validatorMapping); return Object.fromEntries(Object.entries(fields).map(([key, value]) => { const { paramName, validator } = value; return [key, validator(params.get(paramName), paramName)]; })); } export function addressField(param, name) { return parseField(param, name, getAddress, "Invalid Address field"); } export function addressOrSymbolField(param, name) { return parseField(param, name, (value) => { try { return getAddress(value); } catch { return value; } }, "Invalid Address or Symbol field"); } export function numberField(param, name) { const value = parseField(param, name, parseInt, "Invalid Float field"); if (isNaN(value)) { throw new Error(`Invalid Integer field '${name}': Not a number`); } return value; } export function floatField(param, name) { const value = parseField(param, name, parseFloat, "Invalid Float parameter"); if (isNaN(value)) { throw new Error(`Invalid Float parameter '${name}': Not a number`); } return value; } function createFields(validatorMapping) { return Object.fromEntries(Object.keys(validatorMapping).map((key) => [ key, { paramName: key, validator: validatorMapping[key] }, ])); } function exists(param, name) { if (!param) { throw new Error(`Missing required field: '${name}'`); } return param; } function parseField(param, name, parser, errorMessage) { const value = exists(param, name); try { return parser(value); } catch { throw new Error(`${errorMessage} '${name}': ${value}`); } }