Documentation Index
Fetch the complete documentation index at: https://docs.pulsy.app/llms.txt
Use this file to discover all available pages before exploring further.
JavaScript Modules
In the current runtime, filters are authored in JavaScript and can use a small set of bundled modules. These modules are available throughrequire(...) inside the filter.
Only modules registered by the runtime can be imported. A filter cannot install packages dynamically or import arbitrary npm dependencies.
ethers
Use ethers for EVM-specific parsing, encoding, decoding, and unit conversion.
- Build an ABI interface with
new ethers.Interface(...). - Parse event logs with
iface.parseLog(...). - Read an event topic with
iface.getEvent("Transfer").topicHash. - Convert native token units with
ethers.parseEther(...)andethers.formatEther(...). - Convert token units with
ethers.parseUnits(...)andethers.formatUnits(...). - Work with large integer values safely through
BigInt-compatible values.
ethers when the feed needs low-level EVM handling or precise token amount conversion.
@atria/sdk
Use @atria/sdk for Atria-provided helpers that sit above raw ethers usage.
atria.evm.decodeEVMLogs(data, abis)
decodeEVMLogs accepts either an array of logs or an array of receipt-like objects with logs. It tries to decode each log against the provided ABIs. Logs that do not match are ignored. Decoded logs include a decodedLog object with name, signature, and named args.
Use @atria/sdk when you want a feed to decode EVM logs without writing the full parse loop yourself.
@atria/kv
Use @atria/kv for lightweight feed state when KV access is enabled for the feed runtime.
Module Boundaries
Filters can only import the modules that Atria bundles into the runtime. For example,require("ethers") works, but require("lodash") fails unless that module has been added to the runtime. If you need a small helper, define it in the filter file itself.
See filters, KV storage, and security and sandboxing.