@chainlink/cre-sdk 0.0.2-alpha → 0.0.4-alpha
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.md +7 -7
- package/README.md +195 -281
- package/dist/generated/chain-selectors/mainnet/aptos/aptos-mainnet.js +1 -1
- package/dist/generated/chain-selectors/mainnet/evm/0g-mainnet.js +1 -1
- package/dist/generated/chain-selectors/mainnet/evm/abstract-mainnet.js +1 -1
- package/dist/generated/chain-selectors/mainnet/evm/apechain-mainnet.js +1 -1
- package/dist/generated/chain-selectors/mainnet/evm/areon-mainnet.js +1 -1
- package/dist/generated/chain-selectors/mainnet/evm/avalanche-mainnet.js +1 -1
- package/dist/generated/chain-selectors/mainnet/evm/avalanche-subnet-dexalot-mainnet.js +1 -1
- package/dist/generated/chain-selectors/mainnet/evm/berachain-mainnet.js +1 -1
- package/dist/generated/chain-selectors/mainnet/evm/binance.smart.chain-mainnet-opbnb-1.js +1 -1
- package/dist/generated/chain-selectors/mainnet/evm/binance.smart.chain-mainnet.js +1 -1
- package/dist/generated/chain-selectors/mainnet/evm/bitcichain-mainnet.js +1 -1
- package/dist/generated/chain-selectors/mainnet/evm/bitcoin-mainnet-bitlayer-1.js +1 -1
- package/dist/generated/chain-selectors/mainnet/evm/bitcoin-mainnet-bob-1.js +1 -1
- package/dist/generated/chain-selectors/mainnet/evm/bitcoin-mainnet-botanix.js +1 -1
- package/dist/generated/chain-selectors/mainnet/evm/bitcoin-mainnet-bsquared-1.js +1 -1
- package/dist/generated/chain-selectors/mainnet/evm/bitcoin-merlin-mainnet.js +1 -1
- package/dist/generated/chain-selectors/mainnet/evm/bittensor-mainnet.js +1 -1
- package/dist/generated/chain-selectors/mainnet/evm/bittorrent.chain-mainnet.js +1 -1
- package/dist/generated/chain-selectors/mainnet/evm/celo-mainnet.js +1 -1
- package/dist/generated/chain-selectors/mainnet/evm/codex-mainnet.js +1 -1
- package/dist/generated/chain-selectors/mainnet/evm/coinex.smart.chain-mainnet.js +1 -1
- package/dist/generated/chain-selectors/mainnet/evm/conflux-mainnet.js +1 -1
- package/dist/generated/chain-selectors/mainnet/evm/core-mainnet.js +1 -1
- package/dist/generated/chain-selectors/mainnet/evm/corn-mainnet.js +1 -1
- package/dist/generated/chain-selectors/mainnet/evm/cronos-mainnet.js +1 -1
- package/dist/generated/chain-selectors/mainnet/evm/cronos-zkevm-mainnet.js +1 -1
- package/dist/generated/chain-selectors/mainnet/evm/ethereum-mainnet-arbitrum-1-l3x-1.js +1 -1
- package/dist/generated/chain-selectors/mainnet/evm/ethereum-mainnet-arbitrum-1-treasure-1.js +1 -1
- package/dist/generated/chain-selectors/mainnet/evm/ethereum-mainnet-arbitrum-1.js +1 -1
- package/dist/generated/chain-selectors/mainnet/evm/ethereum-mainnet-astar-zkevm-1.js +1 -1
- package/dist/generated/chain-selectors/mainnet/evm/ethereum-mainnet-base-1.js +1 -1
- package/dist/generated/chain-selectors/mainnet/evm/ethereum-mainnet-blast-1.js +1 -1
- package/dist/generated/chain-selectors/mainnet/evm/ethereum-mainnet-hashkey-1.js +1 -1
- package/dist/generated/chain-selectors/mainnet/evm/ethereum-mainnet-immutable-zkevm-1.js +1 -1
- package/dist/generated/chain-selectors/mainnet/evm/ethereum-mainnet-ink-1.js +1 -1
- package/dist/generated/chain-selectors/mainnet/evm/ethereum-mainnet-kroma-1.js +1 -1
- package/dist/generated/chain-selectors/mainnet/evm/ethereum-mainnet-linea-1.js +1 -1
- package/dist/generated/chain-selectors/mainnet/evm/ethereum-mainnet-mantle-1.js +1 -1
- package/dist/generated/chain-selectors/mainnet/evm/ethereum-mainnet-metis-1.js +1 -1
- package/dist/generated/chain-selectors/mainnet/evm/ethereum-mainnet-mode-1.js +1 -1
- package/dist/generated/chain-selectors/mainnet/evm/ethereum-mainnet-optimism-1.js +1 -1
- package/dist/generated/chain-selectors/mainnet/evm/ethereum-mainnet-polygon-zkevm-1.js +1 -1
- package/dist/generated/chain-selectors/mainnet/evm/ethereum-mainnet-scroll-1.js +1 -1
- package/dist/generated/chain-selectors/mainnet/evm/ethereum-mainnet-taiko-1.js +1 -1
- package/dist/generated/chain-selectors/mainnet/evm/ethereum-mainnet-unichain-1.js +1 -1
- package/dist/generated/chain-selectors/mainnet/evm/ethereum-mainnet-worldchain-1.js +1 -1
- package/dist/generated/chain-selectors/mainnet/evm/ethereum-mainnet-xlayer-1.js +1 -1
- package/dist/generated/chain-selectors/mainnet/evm/ethereum-mainnet-zircuit-1.js +1 -1
- package/dist/generated/chain-selectors/mainnet/evm/ethereum-mainnet-zksync-1.js +1 -1
- package/dist/generated/chain-selectors/mainnet/evm/ethereum-mainnet.js +1 -1
- package/dist/generated/chain-selectors/mainnet/evm/etherlink-mainnet.js +1 -1
- package/dist/generated/chain-selectors/mainnet/evm/fantom-mainnet.js +1 -1
- package/dist/generated/chain-selectors/mainnet/evm/filecoin-mainnet.js +1 -1
- package/dist/generated/chain-selectors/mainnet/evm/fraxtal-mainnet.js +1 -1
- package/dist/generated/chain-selectors/mainnet/evm/gnosis.chain-mainnet.js +1 -1
- package/dist/generated/chain-selectors/mainnet/evm/hedera-mainnet.js +1 -1
- package/dist/generated/chain-selectors/mainnet/evm/hemi-mainnet.js +1 -1
- package/dist/generated/chain-selectors/mainnet/evm/hyperliquid-mainnet.js +1 -1
- package/dist/generated/chain-selectors/mainnet/evm/janction-mainnet.js +1 -1
- package/dist/generated/chain-selectors/mainnet/evm/kaia-mainnet.js +1 -1
- package/dist/generated/chain-selectors/mainnet/evm/kava-mainnet.js +1 -1
- package/dist/generated/chain-selectors/mainnet/evm/kusama-mainnet-moonriver.js +1 -1
- package/dist/generated/chain-selectors/mainnet/evm/lens-mainnet.js +1 -1
- package/dist/generated/chain-selectors/mainnet/evm/lisk-mainnet.js +1 -1
- package/dist/generated/chain-selectors/mainnet/evm/memento-mainnet.js +1 -1
- package/dist/generated/chain-selectors/mainnet/evm/metal-mainnet.js +1 -1
- package/dist/generated/chain-selectors/mainnet/evm/mind-mainnet.js +1 -1
- package/dist/generated/chain-selectors/mainnet/evm/mint-mainnet.js +1 -1
- package/dist/generated/chain-selectors/mainnet/evm/monad-mainnet.js +1 -1
- package/dist/generated/chain-selectors/mainnet/evm/morph-mainnet.js +1 -1
- package/dist/generated/chain-selectors/mainnet/evm/near-mainnet.js +1 -1
- package/dist/generated/chain-selectors/mainnet/evm/neonlink-mainnet.js +1 -1
- package/dist/generated/chain-selectors/mainnet/evm/neox-mainnet.js +1 -1
- package/dist/generated/chain-selectors/mainnet/evm/nexon-mainnet-henesys.js +1 -1
- package/dist/generated/chain-selectors/mainnet/evm/nexon-mainnet-lith.js +1 -1
- package/dist/generated/chain-selectors/mainnet/evm/nexon-qa.js +1 -1
- package/dist/generated/chain-selectors/mainnet/evm/nexon-stage.js +1 -1
- package/dist/generated/chain-selectors/mainnet/evm/nibiru-mainnet.js +1 -1
- package/dist/generated/chain-selectors/mainnet/evm/plasma-mainnet.js +1 -1
- package/dist/generated/chain-selectors/mainnet/evm/plume-mainnet.js +1 -1
- package/dist/generated/chain-selectors/mainnet/evm/polkadot-mainnet-astar.js +1 -1
- package/dist/generated/chain-selectors/mainnet/evm/polkadot-mainnet-centrifuge.js +1 -1
- package/dist/generated/chain-selectors/mainnet/evm/polkadot-mainnet-darwinia.js +1 -1
- package/dist/generated/chain-selectors/mainnet/evm/polkadot-mainnet-moonbeam.js +1 -1
- package/dist/generated/chain-selectors/mainnet/evm/polygon-mainnet-katana.js +1 -1
- package/dist/generated/chain-selectors/mainnet/evm/polygon-mainnet.js +1 -1
- package/dist/generated/chain-selectors/mainnet/evm/ronin-mainnet.js +1 -1
- package/dist/generated/chain-selectors/mainnet/evm/rootstock-mainnet.js +1 -1
- package/dist/generated/chain-selectors/mainnet/evm/sei-mainnet.js +1 -1
- package/dist/generated/chain-selectors/mainnet/evm/shibarium-mainnet.js +1 -1
- package/dist/generated/chain-selectors/mainnet/evm/soneium-mainnet.js +1 -1
- package/dist/generated/chain-selectors/mainnet/evm/sonic-mainnet.js +1 -1
- package/dist/generated/chain-selectors/mainnet/evm/superseed-mainnet.js +1 -1
- package/dist/generated/chain-selectors/mainnet/evm/tac-mainnet.js +1 -1
- package/dist/generated/chain-selectors/mainnet/evm/telos-evm-mainnet.js +1 -1
- package/dist/generated/chain-selectors/mainnet/evm/treasure-mainnet.js +1 -1
- package/dist/generated/chain-selectors/mainnet/evm/tron-mainnet-evm.js +1 -1
- package/dist/generated/chain-selectors/mainnet/evm/velas-mainnet.js +1 -1
- package/dist/generated/chain-selectors/mainnet/evm/wemix-mainnet.js +1 -1
- package/dist/generated/chain-selectors/mainnet/evm/xdc-mainnet.js +1 -1
- package/dist/generated/chain-selectors/mainnet/evm/zetachain-mainnet.js +1 -1
- package/dist/generated/chain-selectors/mainnet/evm/zklink.nova-mainnet.js +1 -1
- package/dist/generated/chain-selectors/mainnet/evm/zora-mainnet.js +1 -1
- package/dist/generated/chain-selectors/mainnet/solana/solana-mainnet.js +1 -1
- package/dist/generated/chain-selectors/mainnet/sui/sui-mainnet.js +1 -1
- package/dist/generated/chain-selectors/mainnet/ton/ton-mainnet.js +1 -1
- package/dist/generated/chain-selectors/mainnet/tron/tron-mainnet.js +1 -1
- package/dist/generated/chain-selectors/testnet/aptos/aptos-localnet.js +1 -1
- package/dist/generated/chain-selectors/testnet/aptos/aptos-testnet.js +1 -1
- package/dist/generated/chain-selectors/testnet/evm/0g-testnet-galileo.js +1 -1
- package/dist/generated/chain-selectors/testnet/evm/0g-testnet-newton.js +1 -1
- package/dist/generated/chain-selectors/testnet/evm/abstract-testnet.js +1 -1
- package/dist/generated/chain-selectors/testnet/evm/anvil-devnet.js +1 -1
- package/dist/generated/chain-selectors/testnet/evm/apechain-testnet-curtis.js +1 -1
- package/dist/generated/chain-selectors/testnet/evm/areon-testnet.js +1 -1
- package/dist/generated/chain-selectors/testnet/evm/avalanche-subnet-dexalot-testnet.js +1 -1
- package/dist/generated/chain-selectors/testnet/evm/avalanche-testnet-fuji.js +1 -1
- package/dist/generated/chain-selectors/testnet/evm/avalanche-testnet-nexon.js +1 -1
- package/dist/generated/chain-selectors/testnet/evm/berachain-testnet-artio.js +1 -1
- package/dist/generated/chain-selectors/testnet/evm/berachain-testnet-bartio.js +1 -1
- package/dist/generated/chain-selectors/testnet/evm/berachain-testnet-bepolia.js +1 -1
- package/dist/generated/chain-selectors/testnet/evm/binance.smart.chain-testnet-opbnb-1.js +1 -1
- package/dist/generated/chain-selectors/testnet/evm/binance.smart.chain-testnet.js +1 -1
- package/dist/generated/chain-selectors/testnet/evm/bitcichain-testnet.js +1 -1
- package/dist/generated/chain-selectors/testnet/evm/bitcoin-testnet-bitlayer-1.js +1 -1
- package/dist/generated/chain-selectors/testnet/evm/bitcoin-testnet-botanix.js +1 -1
- package/dist/generated/chain-selectors/testnet/evm/bitcoin-testnet-bsquared-1.js +1 -1
- package/dist/generated/chain-selectors/testnet/evm/bitcoin-testnet-merlin.js +1 -1
- package/dist/generated/chain-selectors/testnet/evm/bitcoin-testnet-rootstock.js +1 -1
- package/dist/generated/chain-selectors/testnet/evm/bitcoin-testnet-sepolia-bob-1.js +1 -1
- package/dist/generated/chain-selectors/testnet/evm/bittensor-testnet.js +1 -1
- package/dist/generated/chain-selectors/testnet/evm/bittorrent.chain-testnet.js +1 -1
- package/dist/generated/chain-selectors/testnet/evm/celo-testnet-alfajores.js +1 -1
- package/dist/generated/chain-selectors/testnet/evm/codex-testnet.js +1 -1
- package/dist/generated/chain-selectors/testnet/evm/coinex.smart.chain-testnet.js +1 -1
- package/dist/generated/chain-selectors/testnet/evm/core-testnet.js +1 -1
- package/dist/generated/chain-selectors/testnet/evm/cronos-testnet-zkevm-1.js +1 -1
- package/dist/generated/chain-selectors/testnet/evm/cronos-testnet.js +1 -1
- package/dist/generated/chain-selectors/testnet/evm/cronos-zkevm-testnet-sepolia.js +1 -1
- package/dist/generated/chain-selectors/testnet/evm/dtcc-testnet-andesite.js +1 -1
- package/dist/generated/chain-selectors/testnet/evm/ethereum-testnet-goerli-arbitrum-1.js +1 -1
- package/dist/generated/chain-selectors/testnet/evm/ethereum-testnet-goerli-base-1.js +1 -1
- package/dist/generated/chain-selectors/testnet/evm/ethereum-testnet-goerli-linea-1.js +1 -1
- package/dist/generated/chain-selectors/testnet/evm/ethereum-testnet-goerli-mantle-1.js +1 -1
- package/dist/generated/chain-selectors/testnet/evm/ethereum-testnet-goerli-optimism-1.js +1 -1
- package/dist/generated/chain-selectors/testnet/evm/ethereum-testnet-goerli-polygon-zkevm-1.js +1 -1
- package/dist/generated/chain-selectors/testnet/evm/ethereum-testnet-goerli-zksync-1.js +1 -1
- package/dist/generated/chain-selectors/testnet/evm/ethereum-testnet-holesky-fraxtal-1.js +1 -1
- package/dist/generated/chain-selectors/testnet/evm/ethereum-testnet-holesky-morph-1.js +1 -1
- package/dist/generated/chain-selectors/testnet/evm/ethereum-testnet-holesky-taiko-1.js +1 -1
- package/dist/generated/chain-selectors/testnet/evm/ethereum-testnet-holesky.js +1 -1
- package/dist/generated/chain-selectors/testnet/evm/ethereum-testnet-sepolia-arbitrum-1-l3x-1.js +1 -1
- package/dist/generated/chain-selectors/testnet/evm/ethereum-testnet-sepolia-arbitrum-1-treasure-1.js +1 -1
- package/dist/generated/chain-selectors/testnet/evm/ethereum-testnet-sepolia-arbitrum-1.js +1 -1
- package/dist/generated/chain-selectors/testnet/evm/ethereum-testnet-sepolia-base-1.js +1 -1
- package/dist/generated/chain-selectors/testnet/evm/ethereum-testnet-sepolia-blast-1.js +1 -1
- package/dist/generated/chain-selectors/testnet/evm/ethereum-testnet-sepolia-corn-1.js +1 -1
- package/dist/generated/chain-selectors/testnet/evm/ethereum-testnet-sepolia-hashkey-1.js +1 -1
- package/dist/generated/chain-selectors/testnet/evm/ethereum-testnet-sepolia-immutable-zkevm-1.js +1 -1
- package/dist/generated/chain-selectors/testnet/evm/ethereum-testnet-sepolia-kroma-1.js +1 -1
- package/dist/generated/chain-selectors/testnet/evm/ethereum-testnet-sepolia-lens-1.js +1 -1
- package/dist/generated/chain-selectors/testnet/evm/ethereum-testnet-sepolia-linea-1.js +1 -1
- package/dist/generated/chain-selectors/testnet/evm/ethereum-testnet-sepolia-lisk-1.js +1 -1
- package/dist/generated/chain-selectors/testnet/evm/ethereum-testnet-sepolia-mantle-1.js +1 -1
- package/dist/generated/chain-selectors/testnet/evm/ethereum-testnet-sepolia-metis-1.js +1 -1
- package/dist/generated/chain-selectors/testnet/evm/ethereum-testnet-sepolia-mode-1.js +1 -1
- package/dist/generated/chain-selectors/testnet/evm/ethereum-testnet-sepolia-optimism-1.js +1 -1
- package/dist/generated/chain-selectors/testnet/evm/ethereum-testnet-sepolia-polygon-validium-1.js +1 -1
- package/dist/generated/chain-selectors/testnet/evm/ethereum-testnet-sepolia-polygon-zkevm-1.js +1 -1
- package/dist/generated/chain-selectors/testnet/evm/ethereum-testnet-sepolia-scroll-1.js +1 -1
- package/dist/generated/chain-selectors/testnet/evm/ethereum-testnet-sepolia-soneium-1.js +1 -1
- package/dist/generated/chain-selectors/testnet/evm/ethereum-testnet-sepolia-unichain-1.js +1 -1
- package/dist/generated/chain-selectors/testnet/evm/ethereum-testnet-sepolia-worldchain-1.js +1 -1
- package/dist/generated/chain-selectors/testnet/evm/ethereum-testnet-sepolia-xlayer-1.js +1 -1
- package/dist/generated/chain-selectors/testnet/evm/ethereum-testnet-sepolia-zircuit-1.js +1 -1
- package/dist/generated/chain-selectors/testnet/evm/ethereum-testnet-sepolia-zksync-1.js +1 -1
- package/dist/generated/chain-selectors/testnet/evm/ethereum-testnet-sepolia.js +1 -1
- package/dist/generated/chain-selectors/testnet/evm/etherlink-testnet.js +1 -1
- package/dist/generated/chain-selectors/testnet/evm/fantom-testnet.js +1 -1
- package/dist/generated/chain-selectors/testnet/evm/filecoin-testnet.js +1 -1
- package/dist/generated/chain-selectors/testnet/evm/geth-testnet.js +1 -1
- package/dist/generated/chain-selectors/testnet/evm/gnosis.chain-testnet-chiado.js +1 -1
- package/dist/generated/chain-selectors/testnet/evm/hedera-testnet.js +1 -1
- package/dist/generated/chain-selectors/testnet/evm/hemi-testnet-sepolia.js +1 -1
- package/dist/generated/chain-selectors/testnet/evm/hyperliquid-testnet.js +1 -1
- package/dist/generated/chain-selectors/testnet/evm/ink-testnet-sepolia.js +1 -1
- package/dist/generated/chain-selectors/testnet/evm/janction-testnet-sepolia.js +1 -1
- package/dist/generated/chain-selectors/testnet/evm/jovay-testnet.js +1 -1
- package/dist/generated/chain-selectors/testnet/evm/kaia-testnet-kairos.js +1 -1
- package/dist/generated/chain-selectors/testnet/evm/kava-testnet.js +1 -1
- package/dist/generated/chain-selectors/testnet/evm/megaeth-testnet.js +1 -1
- package/dist/generated/chain-selectors/testnet/evm/memento-testnet.js +1 -1
- package/dist/generated/chain-selectors/testnet/evm/metal-testnet.js +1 -1
- package/dist/generated/chain-selectors/testnet/evm/mind-testnet.js +1 -1
- package/dist/generated/chain-selectors/testnet/evm/mint-testnet.js +1 -1
- package/dist/generated/chain-selectors/testnet/evm/monad-testnet.js +1 -1
- package/dist/generated/chain-selectors/testnet/evm/near-testnet.js +1 -1
- package/dist/generated/chain-selectors/testnet/evm/neonlink-testnet.js +1 -1
- package/dist/generated/chain-selectors/testnet/evm/neox-testnet-t4.js +1 -1
- package/dist/generated/chain-selectors/testnet/evm/nexon-dev.js +1 -1
- package/dist/generated/chain-selectors/testnet/evm/nibiru-testnet.js +1 -1
- package/dist/generated/chain-selectors/testnet/evm/ondo-testnet.js +1 -1
- package/dist/generated/chain-selectors/testnet/evm/pharos-testnet.js +1 -1
- package/dist/generated/chain-selectors/testnet/evm/plasma-testnet.js +1 -1
- package/dist/generated/chain-selectors/testnet/evm/plume-devnet.js +1 -1
- package/dist/generated/chain-selectors/testnet/evm/plume-testnet-sepolia.js +1 -1
- package/dist/generated/chain-selectors/testnet/evm/plume-testnet.js +1 -1
- package/dist/generated/chain-selectors/testnet/evm/polkadot-testnet-astar-shibuya.js +1 -1
- package/dist/generated/chain-selectors/testnet/evm/polkadot-testnet-centrifuge-altair.js +1 -1
- package/dist/generated/chain-selectors/testnet/evm/polkadot-testnet-darwinia-pangoro.js +1 -1
- package/dist/generated/chain-selectors/testnet/evm/polkadot-testnet-moonbeam-moonbase.js +1 -1
- package/dist/generated/chain-selectors/testnet/evm/polygon-testnet-amoy.js +1 -1
- package/dist/generated/chain-selectors/testnet/evm/polygon-testnet-mumbai.js +1 -1
- package/dist/generated/chain-selectors/testnet/evm/polygon-testnet-tatara.js +1 -1
- package/dist/generated/chain-selectors/testnet/evm/private-testnet-andesite.js +1 -1
- package/dist/generated/chain-selectors/testnet/evm/private-testnet-granite.js +1 -1
- package/dist/generated/chain-selectors/testnet/evm/private-testnet-mica.js +1 -1
- package/dist/generated/chain-selectors/testnet/evm/private-testnet-obsidian.js +1 -1
- package/dist/generated/chain-selectors/testnet/evm/private-testnet-opala.js +1 -1
- package/dist/generated/chain-selectors/testnet/evm/ronin-testnet-saigon.js +1 -1
- package/dist/generated/chain-selectors/testnet/evm/sei-testnet-atlantic.js +1 -1
- package/dist/generated/chain-selectors/testnet/evm/shibarium-testnet-puppynet.js +1 -1
- package/dist/generated/chain-selectors/testnet/evm/sonic-testnet-blaze.js +1 -1
- package/dist/generated/chain-selectors/testnet/evm/story-testnet.js +1 -1
- package/dist/generated/chain-selectors/testnet/evm/superseed-testnet.js +1 -1
- package/dist/generated/chain-selectors/testnet/evm/tac-testnet.js +1 -1
- package/dist/generated/chain-selectors/testnet/evm/telos-evm-testnet.js +1 -1
- package/dist/generated/chain-selectors/testnet/evm/treasure-testnet-topaz.js +1 -1
- package/dist/generated/chain-selectors/testnet/evm/tron-devnet-evm.js +1 -1
- package/dist/generated/chain-selectors/testnet/evm/tron-testnet-nile-evm.js +1 -1
- package/dist/generated/chain-selectors/testnet/evm/tron-testnet-shasta-evm.js +1 -1
- package/dist/generated/chain-selectors/testnet/evm/velas-testnet.js +1 -1
- package/dist/generated/chain-selectors/testnet/evm/wemix-testnet.js +1 -1
- package/dist/generated/chain-selectors/testnet/evm/xdc-testnet.js +1 -1
- package/dist/generated/chain-selectors/testnet/evm/zero-g-testnet-galileo.js +1 -1
- package/dist/generated/chain-selectors/testnet/evm/zircuit-testnet-garfield.js +1 -1
- package/dist/generated/chain-selectors/testnet/evm/zklink.nova-testnet.js +1 -1
- package/dist/generated/chain-selectors/testnet/evm/zora-testnet.js +1 -1
- package/dist/generated/chain-selectors/testnet/solana/solana-devnet.js +1 -1
- package/dist/generated/chain-selectors/testnet/solana/solana-testnet.js +1 -1
- package/dist/generated/chain-selectors/testnet/sui/sui-localnet.js +1 -1
- package/dist/generated/chain-selectors/testnet/sui/sui-testnet.js +1 -1
- package/dist/generated/chain-selectors/testnet/ton/ton-localnet.js +1 -1
- package/dist/generated/chain-selectors/testnet/ton/ton-testnet.js +1 -1
- package/dist/generated/chain-selectors/testnet/tron/tron-devnet.js +1 -1
- package/dist/generated/chain-selectors/testnet/tron/tron-testnet-nile.js +1 -1
- package/dist/generated/chain-selectors/testnet/tron/tron-testnet-shasta.js +1 -1
- package/dist/generated/networks.d.ts +14 -14
- package/dist/generated/networks.js +495 -495
- package/dist/generated-sdk/capabilities/blockchain/evm/v1alpha/client_sdk_gen.d.ts +37 -22
- package/dist/generated-sdk/capabilities/blockchain/evm/v1alpha/client_sdk_gen.js +158 -62
- package/dist/generated-sdk/capabilities/internal/consensus/v1alpha/consensus_sdk_gen.d.ts +7 -7
- package/dist/generated-sdk/capabilities/internal/consensus/v1alpha/consensus_sdk_gen.js +28 -14
- package/dist/generated-sdk/capabilities/networking/http/v1alpha/client_sdk_gen.d.ts +17 -4
- package/dist/generated-sdk/capabilities/networking/http/v1alpha/client_sdk_gen.js +44 -9
- package/dist/generated-sdk/capabilities/networking/http/v1alpha/http_sdk_gen.d.ts +0 -1
- package/dist/generated-sdk/capabilities/networking/http/v1alpha/http_sdk_gen.js +2 -2
- package/dist/generated-sdk/capabilities/scheduler/cron/v1/cron_sdk_gen.d.ts +0 -1
- package/dist/generated-sdk/capabilities/scheduler/cron/v1/cron_sdk_gen.js +2 -2
- package/dist/index.d.ts +1 -0
- package/dist/index.js +2 -0
- package/dist/sdk/cre/index.d.ts +2 -1
- package/dist/sdk/cre/index.js +1 -1
- package/dist/sdk/impl/runtime-impl.d.ts +12 -4
- package/dist/sdk/impl/runtime-impl.js +53 -19
- package/dist/sdk/index.d.ts +1 -0
- package/dist/sdk/index.js +1 -0
- package/dist/sdk/report.d.ts +6 -0
- package/dist/sdk/report.js +14 -0
- package/dist/sdk/runtime.d.ts +11 -2
- package/dist/sdk/utils/capabilities/blockchain/blockchain-helpers.d.ts +50 -0
- package/dist/sdk/utils/capabilities/blockchain/blockchain-helpers.js +48 -0
- package/dist/sdk/utils/capabilities/http/http-helpers.d.ts +112 -0
- package/dist/sdk/utils/capabilities/http/http-helpers.js +44 -0
- package/dist/sdk/utils/chain-selectors/getNetwork.d.ts +2 -2
- package/dist/sdk/utils/chain-selectors/getNetwork.js +56 -15
- package/dist/sdk/utils/chain-selectors/types.d.ts +1 -1
- package/dist/sdk/utils/index.d.ts +3 -0
- package/dist/sdk/utils/index.js +3 -0
- package/dist/sdk/utils/triggers/trigger-interface.d.ts +1 -1
- package/dist/sdk/utils/values/serializer_types.d.ts +1 -1
- package/dist/sdk/wasm/runner.js +1 -1
- package/dist/sdk/wasm/runtime.js +3 -0
- package/dist/sdk/workflow.d.ts +1 -1
- package/dist/workflows/standard_tests/Makefile +19 -0
- package/dist/workflows/standard_tests/capability_calls_are_async/test.ts +39 -0
- package/dist/workflows/standard_tests/config/test.ts +23 -0
- package/dist/workflows/standard_tests/errors/test.ts +24 -0
- package/dist/workflows/standard_tests/logging/test.ts +25 -0
- package/dist/workflows/standard_tests/mode_switch/don_runtime_in_node_mode/test.ts +33 -0
- package/dist/workflows/standard_tests/mode_switch/node_runtime_in_don_mode/test.ts +41 -0
- package/dist/workflows/standard_tests/mode_switch/successful_mode_switch/test.ts +58 -0
- package/dist/workflows/standard_tests/multiple_triggers/test.ts +40 -0
- package/dist/workflows/standard_tests/random/test.ts +64 -0
- package/dist/workflows/standard_tests/secrets/test.ts +30 -0
- package/dist/workflows/standard_tests/secrets_fail_in_node_mode/test.ts +29 -0
- package/package.json +70 -68
- package/scripts/src/cre-setup.ts +9 -0
- package/scripts/src/generate-chain-selectors.ts +23 -16
- package/dist/generated/capabilities/internal/actionandtrigger/v1/action_and_trigger_pb.d.ts +0 -135
- package/dist/generated/capabilities/internal/actionandtrigger/v1/action_and_trigger_pb.js +0 -43
- package/dist/generated/capabilities/internal/basicaction/v1/basic_action_pb.d.ts +0 -77
- package/dist/generated/capabilities/internal/basicaction/v1/basic_action_pb.js +0 -33
- package/dist/generated/capabilities/internal/basictrigger/v1/basic_trigger_pb.d.ts +0 -77
- package/dist/generated/capabilities/internal/basictrigger/v1/basic_trigger_pb.js +0 -29
- package/dist/generated/capabilities/internal/nodeaction/v1/node_action_pb.d.ts +0 -69
- package/dist/generated/capabilities/internal/nodeaction/v1/node_action_pb.js +0 -29
- package/dist/generated-sdk/capabilities/internal/actionandtrigger/v1/basic_sdk_gen.d.ts +0 -43
- package/dist/generated-sdk/capabilities/internal/actionandtrigger/v1/basic_sdk_gen.js +0 -77
- package/dist/generated-sdk/capabilities/internal/basicaction/v1/basicaction_sdk_gen.d.ts +0 -19
- package/dist/generated-sdk/capabilities/internal/basicaction/v1/basicaction_sdk_gen.js +0 -36
- package/dist/generated-sdk/capabilities/internal/basictrigger/v1/basic_sdk_gen.d.ts +0 -39
- package/dist/generated-sdk/capabilities/internal/basictrigger/v1/basic_sdk_gen.js +0 -58
- package/dist/generated-sdk/capabilities/internal/nodeaction/v1/basicaction_sdk_gen.d.ts +0 -19
- package/dist/generated-sdk/capabilities/internal/nodeaction/v1/basicaction_sdk_gen.js +0 -36
- package/dist/sdk/impl/runtime-impl.test.d.ts +0 -1
- package/dist/sdk/impl/runtime-impl.test.js +0 -334
- package/dist/sdk/utils/config/configHandler.test.d.ts +0 -1
- package/dist/sdk/utils/config/configHandler.test.js +0 -193
- package/dist/sdk/utils/values/consensus_aggregators.test.d.ts +0 -1
- package/dist/sdk/utils/values/consensus_aggregators.test.js +0 -172
- package/dist/sdk/utils/values/serializer_types.test.d.ts +0 -1
- package/dist/sdk/utils/values/serializer_types.test.js +0 -104
- package/dist/sdk/utils/values/value.test.d.ts +0 -1
- package/dist/sdk/utils/values/value.test.js +0 -439
- package/dist/sdk/wasm/runner.test.d.ts +0 -1
- package/dist/sdk/wasm/runner.test.js +0 -270
- /package/dist/sdk/utils/{safeJsonStringify.d.ts → safe-json-stringify.d.ts} +0 -0
- /package/dist/sdk/utils/{safeJsonStringify.js → safe-json-stringify.js} +0 -0
package/LICENSE.md
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
Business Source License 1.1
|
|
1
|
+
Business Source License 1.1 (BUSL-1.1)
|
|
2
2
|
|
|
3
3
|
License text copyright (c) 2017 MariaDB Corporation Ab, All Rights Reserved.
|
|
4
4
|
"Business Source License" is a trademark of MariaDB Corporation Ab.
|
|
5
5
|
|
|
6
|
-
|
|
6
|
+
---
|
|
7
7
|
|
|
8
8
|
Parameters
|
|
9
9
|
|
|
@@ -17,7 +17,7 @@ Change Date: May 20, 2029
|
|
|
17
17
|
|
|
18
18
|
Change License: MIT
|
|
19
19
|
|
|
20
|
-
|
|
20
|
+
---
|
|
21
21
|
|
|
22
22
|
Terms
|
|
23
23
|
|
|
@@ -37,13 +37,13 @@ This License does not grant you any right in any trademark or logo of Licensor o
|
|
|
37
37
|
|
|
38
38
|
TO THE EXTENT PERMITTED BY APPLICABLE LAW, THE LICENSED WORK IS PROVIDED ON AN "AS IS" BASIS. LICENSOR HEREBY DISCLAIMS ALL WARRANTIES AND CONDITIONS, EXPRESS OR IMPLIED, INCLUDING (WITHOUT LIMITATION) WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT, AND TITLE.
|
|
39
39
|
|
|
40
|
-
MariaDB hereby grants you permission to use this License
|
|
40
|
+
MariaDB hereby grants you permission to use this License's text to license your works, and to refer to it using the trademark "Business Source License", as long as you comply with the Covenants of Licensor below.
|
|
41
41
|
|
|
42
|
-
|
|
42
|
+
---
|
|
43
43
|
|
|
44
44
|
Covenants of Licensor
|
|
45
45
|
|
|
46
|
-
In consideration of the right to use this License
|
|
46
|
+
In consideration of the right to use this License's text and the "Business Source License" name and trademark, Licensor covenants to MariaDB, and to all other recipients of the licensed work to be provided by Licensor:
|
|
47
47
|
|
|
48
48
|
1. To specify as the Change License the GPL Version 2.0 or any later version, or a license that is compatible with GPL Version 2.0 or a later version, where "compatible" means that software provided under the Change License can be included in a program with software provided under GPL Version 2.0 or a later version. Licensor may specify additional Change Licenses without limitation.
|
|
49
49
|
|
|
@@ -51,4 +51,4 @@ In consideration of the right to use this License’s text and the "Business Sou
|
|
|
51
51
|
|
|
52
52
|
3. To specify a Change Date.
|
|
53
53
|
|
|
54
|
-
4. Not to modify this License in any other way.
|
|
54
|
+
4. Not to modify this License in any other way.
|
package/README.md
CHANGED
|
@@ -1,40 +1,83 @@
|
|
|
1
1
|
# @chainlink/cre-sdk
|
|
2
2
|
|
|
3
|
-
The Chainlink Runtime Environment (CRE) SDK for TypeScript enables developers to
|
|
3
|
+
The Chainlink Runtime Environment (CRE) SDK for TypeScript enables developers to write decentralized [Chainlink Runtime Environment Workflows](https://docs.chain.link/cre/) in Typescript.
|
|
4
|
+
|
|
5
|
+
## Table of Contents
|
|
6
|
+
|
|
7
|
+
- [How to use this SDK](#how-to-use-this-sdk)
|
|
8
|
+
- [Examples](#examples)
|
|
9
|
+
- [Simulate locally with CRE CLI](#simulate-locally-with-cre-cli)
|
|
10
|
+
- [Installation](#installation)
|
|
11
|
+
- [Core Concepts](#core-concepts)
|
|
12
|
+
- [Workflows](#workflows)
|
|
13
|
+
- [Runtime Modes](#runtime-modes)
|
|
14
|
+
- [Available Capabilities](#available-capabilities)
|
|
15
|
+
- [Scheduling](#scheduling)
|
|
16
|
+
- [HTTP Operations](#http-operations)
|
|
17
|
+
- [Blockchain Interactions](#blockchain-interactions)
|
|
18
|
+
- [Configuration & Type Safety](#configuration--type-safety)
|
|
19
|
+
- [Consensus & Aggregation](#consensus--aggregation)
|
|
20
|
+
- [Utility Functions](#utility-functions)
|
|
21
|
+
- [Hex Utilities](#hex-utilities)
|
|
22
|
+
- [Chain Selectors](#chain-selectors)
|
|
23
|
+
- [Example Workflows](#example-workflows)
|
|
24
|
+
- [1. Simple Scheduled Task](#1-simple-scheduled-task)
|
|
25
|
+
- [2. API Data Aggregation](#2-api-data-aggregation)
|
|
26
|
+
- [3. On-Chain Data Integration](#3-on-chain-data-integration)
|
|
27
|
+
- [API Reference](#api-reference)
|
|
28
|
+
- [Core Functions](#core-functions)
|
|
29
|
+
- [Capabilities](#capabilities)
|
|
30
|
+
- [Utilities](#utilities)
|
|
31
|
+
- [Building from Source](#building-from-source)
|
|
32
|
+
- [Protobuf Generation](#protobuf-generation)
|
|
33
|
+
- [Chain Selectors Generation](#chain-selectors-generation)
|
|
34
|
+
- [Requirements](#requirements)
|
|
35
|
+
- [License](#license)
|
|
36
|
+
|
|
37
|
+
## How to use this SDK
|
|
38
|
+
|
|
39
|
+
This package exposes the APIs you use to write CRE Workflows in TypeScript, and then compile them to WASM.
|
|
40
|
+
|
|
41
|
+
This package must be used along with the [CRE CLI tool](https://github.com/smartcontractkit/cre-cli) to deploy your WASM-compiled workflows.
|
|
42
|
+
|
|
43
|
+
## Prerequisites
|
|
44
|
+
|
|
45
|
+
1. the [bun runtime](https://bun.com/). The wasm compilation currently is only supported by the bun runtime which has near-complete NodeJS compatibility.
|
|
46
|
+
|
|
47
|
+
2. the [CRE CLI tool](https://github.com/smartcontractkit/cre-cli) installed.
|
|
48
|
+
|
|
49
|
+
## Getting Started
|
|
50
|
+
|
|
51
|
+
We recommend you consult the [getting started docs](https://docs.chain.link/cre/getting-started/cli-installation) and install the CRE CLI.
|
|
52
|
+
|
|
53
|
+
Then run `cre init`, name your project and choose TypeScript as the language to define your workflows in.
|
|
4
54
|
|
|
5
55
|
## Examples
|
|
6
56
|
|
|
7
|
-
|
|
57
|
+
This TypeScript CRE SDK also includes some reference examples - [cre-sdk-examples](https://github.com/smartcontractkit/cre-sdk-typescript/tree/main/packages/cre-sdk-examples). These can be copied and pasted into your project as needed.
|
|
8
58
|
|
|
9
|
-
|
|
59
|
+
⚠️ Note however that these are refence TypeScript workflows and may require some additional steps (having the CRE CLI installed, running `bunx cre-setup` from inside a workflow example directory, etc) to get them to work within this repo.
|
|
10
60
|
|
|
11
|
-
|
|
12
|
-
bun add @chainlink/cre-sdk
|
|
13
|
-
```
|
|
61
|
+
**We recommend you setup your project using the CRE CLI and then copy and paste these examples into your project**
|
|
14
62
|
|
|
15
|
-
##
|
|
63
|
+
## Simulate locally with CRE CLI
|
|
16
64
|
|
|
17
|
-
|
|
18
|
-
import { cre, Value, withErrorBoundary } from "@chainlink/cre-sdk";
|
|
65
|
+
You can run and debug your TypeScript workflows locally using [the CRE CLI's](https://github.com/smartcontractkit/cre-cli) simulation functionality.
|
|
19
66
|
|
|
20
|
-
|
|
21
|
-
// Your workflow logic here
|
|
22
|
-
cre.sendResponseValue(Value.from("Hello, CRE!"));
|
|
23
|
-
};
|
|
67
|
+
Make sure you `cd` into the directory that contain's your workflow's TypeScript file and the associated `config.json`. Then:
|
|
24
68
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
cre.handler(cron.trigger({ schedule: config.schedule }), onCronTrigger),
|
|
29
|
-
];
|
|
30
|
-
};
|
|
69
|
+
```bash
|
|
70
|
+
cre workflow simulate --target local-simulation --config config.json index.ts
|
|
71
|
+
```
|
|
31
72
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
73
|
+
When simulating workflows that write to the blockchain, remember to pass extra flag `--broadcast` to broadcast the transactions to the blockchain.
|
|
74
|
+
|
|
75
|
+
See the CLI docs for additional flags (e.g. config file, secrets, HTTP payloads, EVM log params).
|
|
76
|
+
|
|
77
|
+
## Installation
|
|
36
78
|
|
|
37
|
-
|
|
79
|
+
```bash
|
|
80
|
+
bun add @chainlink/cre-sdk
|
|
38
81
|
```
|
|
39
82
|
|
|
40
83
|
## Core Concepts
|
|
@@ -44,7 +87,7 @@ withErrorBoundary(main);
|
|
|
44
87
|
Workflows are the fundamental building blocks of CRE applications. They define how your application responds to triggers and what actions to take. Each workflow consists of:
|
|
45
88
|
|
|
46
89
|
- **Triggers**: Events that initiate workflow execution (cron schedules, HTTP requests, etc.)
|
|
47
|
-
- **Handlers**: Functions that process trigger events and execute your business logic
|
|
90
|
+
- **Handlers**: Functions that process trigger events and execute your business logic as provided in a callback function.
|
|
48
91
|
- **Capabilities**: Built-in services for interacting with external systems
|
|
49
92
|
|
|
50
93
|
### Runtime Modes
|
|
@@ -54,15 +97,9 @@ CRE supports two execution modes:
|
|
|
54
97
|
- **DON Mode**: Distributed execution across multiple nodes for consensus and reliability
|
|
55
98
|
- **Node Mode**: Individual node execution for specific tasks requiring node-level operations
|
|
56
99
|
|
|
57
|
-
Use `
|
|
58
|
-
|
|
59
|
-
### Error Handling
|
|
100
|
+
Use `runtime.runInNodeMode()` to execute functions that require individual node processing, such as fetching data from different sources for consensus aggregation.
|
|
60
101
|
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
```typescript
|
|
64
|
-
withErrorBoundary(main);
|
|
65
|
-
```
|
|
102
|
+
The SDK wires runtime safety internally; you can call `main()` directly as shown in the examples.
|
|
66
103
|
|
|
67
104
|
## Available Capabilities
|
|
68
105
|
|
|
@@ -82,18 +119,30 @@ const trigger = cron.trigger({ schedule: "0 */5 * * * *" }); // Every 5 minutes
|
|
|
82
119
|
Fetch data from external APIs with built-in consensus mechanisms:
|
|
83
120
|
|
|
84
121
|
```typescript
|
|
85
|
-
import {
|
|
122
|
+
import {
|
|
123
|
+
cre,
|
|
124
|
+
consensusMedianAggregation,
|
|
125
|
+
type HTTPSendRequester,
|
|
126
|
+
type Runtime,
|
|
127
|
+
} from "@chainlink/cre-sdk";
|
|
86
128
|
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
129
|
+
type Config = { apiUrl: string };
|
|
130
|
+
|
|
131
|
+
const fetchData = (sendRequester: HTTPSendRequester, config: Config) => {
|
|
132
|
+
const response = sendRequester.sendRequest({ url: config.apiUrl }).result();
|
|
133
|
+
return Number.parseFloat(Buffer.from(response.body).toString("utf-8").trim());
|
|
90
134
|
};
|
|
91
135
|
|
|
92
|
-
|
|
93
|
-
const
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
136
|
+
const onCronTrigger = (runtime: Runtime<Config>) => {
|
|
137
|
+
const httpCapability = new cre.capabilities.HTTPClient();
|
|
138
|
+
return httpCapability
|
|
139
|
+
.sendRequest(
|
|
140
|
+
runtime,
|
|
141
|
+
fetchData,
|
|
142
|
+
consensusMedianAggregation()
|
|
143
|
+
)(runtime.config)
|
|
144
|
+
.result();
|
|
145
|
+
};
|
|
97
146
|
```
|
|
98
147
|
|
|
99
148
|
### Blockchain Interactions
|
|
@@ -101,45 +150,75 @@ const result = await cre.runInNodeMode(
|
|
|
101
150
|
Read from and write to EVM-compatible blockchains:
|
|
102
151
|
|
|
103
152
|
```typescript
|
|
104
|
-
import {
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
// Read from contract
|
|
114
|
-
const callData = encodeFunctionData({
|
|
115
|
-
abi: CONTRACT_ABI,
|
|
116
|
-
functionName: "getValue",
|
|
117
|
-
});
|
|
153
|
+
import {
|
|
154
|
+
bytesToHex,
|
|
155
|
+
cre,
|
|
156
|
+
getNetwork,
|
|
157
|
+
hexToBase64,
|
|
158
|
+
type Runtime,
|
|
159
|
+
} from "@chainlink/cre-sdk";
|
|
160
|
+
import { decodeFunctionResult, encodeFunctionData, zeroAddress } from "viem";
|
|
118
161
|
|
|
119
|
-
|
|
120
|
-
call: {
|
|
121
|
-
from: hexToBase64("0x0000000000000000000000000000000000000000"),
|
|
122
|
-
to: hexToBase64(contractAddress),
|
|
123
|
-
data: hexToBase64(callData),
|
|
124
|
-
},
|
|
125
|
-
blockNumber: {
|
|
126
|
-
absVal: Buffer.from([3]).toString("base64"), // finalized block
|
|
127
|
-
sign: "-1",
|
|
128
|
-
},
|
|
129
|
-
});
|
|
162
|
+
type Config = { evm: { chainSelectorName: string; contractAddress: string } };
|
|
130
163
|
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
});
|
|
164
|
+
const onCronTrigger = async (runtime: Runtime<Config>) => {
|
|
165
|
+
const { chainSelectorName, contractAddress } = runtime.config.evm;
|
|
166
|
+
const network = getNetwork({
|
|
167
|
+
chainFamily: "evm",
|
|
168
|
+
chainSelectorName,
|
|
169
|
+
isTestnet: true,
|
|
170
|
+
});
|
|
171
|
+
if (!network) throw new Error("Network not found");
|
|
172
|
+
|
|
173
|
+
const evmClient = new cre.capabilities.EVMClient(
|
|
174
|
+
network.chainSelector.selector
|
|
175
|
+
);
|
|
176
|
+
|
|
177
|
+
const callData = encodeFunctionData({
|
|
178
|
+
abi: CONTRACT_ABI,
|
|
179
|
+
functionName: "getValue",
|
|
180
|
+
});
|
|
181
|
+
|
|
182
|
+
const contractCall = evmClient
|
|
183
|
+
.callContract(runtime, {
|
|
184
|
+
call: {
|
|
185
|
+
from: hexToBase64(zeroAddress),
|
|
186
|
+
to: hexToBase64(contractAddress),
|
|
187
|
+
data: hexToBase64(callData),
|
|
188
|
+
},
|
|
189
|
+
blockNumber: { absVal: Buffer.from([3]).toString("base64"), sign: "-1" },
|
|
190
|
+
})
|
|
191
|
+
.result();
|
|
192
|
+
|
|
193
|
+
const onchainValue = decodeFunctionResult({
|
|
194
|
+
abi: CONTRACT_ABI,
|
|
195
|
+
functionName: "getValue",
|
|
196
|
+
data: bytesToHex(contractCall.data),
|
|
197
|
+
});
|
|
198
|
+
|
|
199
|
+
// Write example
|
|
200
|
+
const writeData = encodeFunctionData({
|
|
201
|
+
abi: CONTRACT_ABI,
|
|
202
|
+
functionName: "setValue",
|
|
203
|
+
args: [onchainValue],
|
|
204
|
+
});
|
|
205
|
+
const tx = evmClient
|
|
206
|
+
.writeReport(runtime, {
|
|
207
|
+
receiver: contractAddress,
|
|
208
|
+
report: { rawReport: writeData },
|
|
209
|
+
})
|
|
210
|
+
.result();
|
|
211
|
+
return { onchainValue, txHash: tx.txHash?.toString() };
|
|
212
|
+
};
|
|
138
213
|
```
|
|
139
214
|
|
|
140
215
|
## Configuration & Type Safety
|
|
141
216
|
|
|
142
|
-
|
|
217
|
+
You, the developer, must declare config files in config.json files, co-located with your TypeScript workflow definition.
|
|
218
|
+
|
|
219
|
+
Use Zod schemas for type-safe configuration.
|
|
220
|
+
|
|
221
|
+
Here's an example of zod usage for the config specified in `../cre-sdk-examples/src/workflows/on-chain/config.json`
|
|
143
222
|
|
|
144
223
|
```typescript
|
|
145
224
|
import { z } from "zod";
|
|
@@ -149,7 +228,7 @@ const configSchema = z.object({
|
|
|
149
228
|
apiUrl: z.string(),
|
|
150
229
|
evms: z.array(
|
|
151
230
|
z.object({
|
|
152
|
-
|
|
231
|
+
chainSelectorName: z.string(),
|
|
153
232
|
contractAddress: z.string(),
|
|
154
233
|
})
|
|
155
234
|
),
|
|
@@ -158,7 +237,7 @@ const configSchema = z.object({
|
|
|
158
237
|
type Config = z.infer<typeof configSchema>;
|
|
159
238
|
|
|
160
239
|
export async function main() {
|
|
161
|
-
const runner = await
|
|
240
|
+
const runner = await Runner.newRunner<Config>({ configSchema });
|
|
162
241
|
await runner.run(initWorkflow);
|
|
163
242
|
}
|
|
164
243
|
```
|
|
@@ -168,38 +247,36 @@ export async function main() {
|
|
|
168
247
|
CRE provides built-in consensus mechanisms for aggregating data from multiple nodes:
|
|
169
248
|
|
|
170
249
|
```typescript
|
|
171
|
-
import {
|
|
250
|
+
import {
|
|
251
|
+
consensusMedianAggregation,
|
|
252
|
+
type NodeRuntime,
|
|
253
|
+
type Runtime,
|
|
254
|
+
} from "@chainlink/cre-sdk";
|
|
255
|
+
|
|
256
|
+
const fetchDataFunction = async (nodeRuntime: NodeRuntime<Config>) => 42;
|
|
172
257
|
|
|
173
258
|
// Execute function across multiple nodes and aggregate results
|
|
174
|
-
const aggregatedValue = await
|
|
259
|
+
const aggregatedValue = await runtime.runInNodeMode(
|
|
175
260
|
fetchDataFunction,
|
|
176
261
|
consensusMedianAggregation()
|
|
177
|
-
)(
|
|
262
|
+
)();
|
|
178
263
|
```
|
|
179
264
|
|
|
180
265
|
## Utility Functions
|
|
181
266
|
|
|
182
|
-
###
|
|
267
|
+
### Hex Utilities
|
|
183
268
|
|
|
184
|
-
|
|
185
|
-
import { Value } from "@chainlink/cre-sdk";
|
|
186
|
-
|
|
187
|
-
// Send structured response data
|
|
188
|
-
cre.sendResponseValue(
|
|
189
|
-
Value.from({
|
|
190
|
-
price: 1234.56,
|
|
191
|
-
timestamp: Date.now(),
|
|
192
|
-
source: "api.example.com",
|
|
193
|
-
})
|
|
194
|
-
);
|
|
195
|
-
```
|
|
269
|
+
CRE capabilities (like EVM client) expect data in base64 format for serialization. You may need to convert a hex string to base64 format for CRE protocol communication.
|
|
196
270
|
|
|
197
|
-
|
|
271
|
+
Or you may need to convert binary data back to hex format for blockchain operations. This can be Useful for decoding responses from CRE capabilities and transforming data for libraries like viem (which expect hex format)
|
|
198
272
|
|
|
199
273
|
```typescript
|
|
200
274
|
import { hexToBase64, bytesToHex } from "@chainlink/cre-sdk";
|
|
201
275
|
|
|
276
|
+
// Example: "0x1234567890abcdef" → "EjRWeJCrze8="
|
|
202
277
|
const base64Data = hexToBase64("0x1234567890abcdef");
|
|
278
|
+
|
|
279
|
+
// Example: Uint8Array([18, 52, 86...]) → "0x1234567890abcdef"
|
|
203
280
|
const hexData = bytesToHex(buffer);
|
|
204
281
|
```
|
|
205
282
|
|
|
@@ -208,217 +285,47 @@ const hexData = bytesToHex(buffer);
|
|
|
208
285
|
```typescript
|
|
209
286
|
import { getAllNetworks, getNetwork } from "@chainlink/cre-sdk";
|
|
210
287
|
|
|
211
|
-
const
|
|
212
|
-
const
|
|
288
|
+
const allNetworks = getAllNetworks();
|
|
289
|
+
const ethereumSepolia = getNetwork({
|
|
290
|
+
chainFamily: "evm",
|
|
291
|
+
chainSelectorName: "ethereum-sepolia",
|
|
292
|
+
isTestnet: true,
|
|
293
|
+
});
|
|
213
294
|
```
|
|
214
295
|
|
|
215
296
|
## Example Workflows
|
|
216
297
|
|
|
217
|
-
### 1. Simple
|
|
218
|
-
|
|
219
|
-
```typescript
|
|
220
|
-
import { cre, Value, withErrorBoundary } from "@chainlink/cre-sdk";
|
|
221
|
-
|
|
222
|
-
const onCronTrigger = () => {
|
|
223
|
-
console.log("Workflow executed!");
|
|
224
|
-
cre.sendResponseValue(Value.from("Task completed"));
|
|
225
|
-
};
|
|
226
|
-
|
|
227
|
-
const initWorkflow = (config: { schedule: string }) => {
|
|
228
|
-
const cron = new cre.capabilities.CronCapability();
|
|
229
|
-
return [
|
|
230
|
-
cre.handler(cron.trigger({ schedule: config.schedule }), onCronTrigger),
|
|
231
|
-
];
|
|
232
|
-
};
|
|
298
|
+
### 1. Simple Cron-scheduled task
|
|
233
299
|
|
|
234
|
-
|
|
235
|
-
const runner = await cre.newRunner<{ schedule: string }>();
|
|
236
|
-
await runner.run(initWorkflow);
|
|
237
|
-
}
|
|
238
|
-
|
|
239
|
-
withErrorBoundary(main);
|
|
240
|
-
```
|
|
300
|
+
See the [hello-world](https://github.com/smartcontractkit/cre-sdk-typescript/tree/main/packages/cre-sdk-examples/src/hello-world) example for a simple example that runs a cron-based operation on CRE at intervals you define in the `config.js` file.
|
|
241
301
|
|
|
242
302
|
### 2. API Data Aggregation
|
|
243
303
|
|
|
244
|
-
|
|
245
|
-
import {
|
|
246
|
-
cre,
|
|
247
|
-
consensusMedianAggregation,
|
|
248
|
-
Value,
|
|
249
|
-
withErrorBoundary,
|
|
250
|
-
} from "@chainlink/cre-sdk";
|
|
251
|
-
import { z } from "zod";
|
|
252
|
-
|
|
253
|
-
const configSchema = z.object({
|
|
254
|
-
schedule: z.string(),
|
|
255
|
-
apiUrl: z.string(),
|
|
256
|
-
});
|
|
257
|
-
|
|
258
|
-
type Config = z.infer<typeof configSchema>;
|
|
259
|
-
|
|
260
|
-
const fetchPrice = async (config: Config) => {
|
|
261
|
-
const response = await cre.utils.fetch({ url: config.apiUrl });
|
|
262
|
-
return Number.parseFloat(response.body.trim());
|
|
263
|
-
};
|
|
264
|
-
|
|
265
|
-
const onCronTrigger = async (config: Config) => {
|
|
266
|
-
const price = await cre.runInNodeMode(
|
|
267
|
-
fetchPrice,
|
|
268
|
-
consensusMedianAggregation()
|
|
269
|
-
)(config);
|
|
270
|
-
|
|
271
|
-
cre.sendResponseValue(Value.from({ price }));
|
|
272
|
-
};
|
|
273
|
-
|
|
274
|
-
const initWorkflow = (config: Config) => {
|
|
275
|
-
const cron = new cre.capabilities.CronCapability();
|
|
276
|
-
return [
|
|
277
|
-
cre.handler(cron.trigger({ schedule: config.schedule }), onCronTrigger),
|
|
278
|
-
];
|
|
279
|
-
};
|
|
280
|
-
|
|
281
|
-
export async function main() {
|
|
282
|
-
const runner = await cre.newRunner<Config>({ configSchema });
|
|
283
|
-
await runner.run(initWorkflow);
|
|
284
|
-
}
|
|
285
|
-
|
|
286
|
-
withErrorBoundary(main);
|
|
287
|
-
```
|
|
304
|
+
See the [http-fetch example](https://github.com/smartcontractkit/cre-sdk-typescript/tree/main/packages/cre-sdk-examples/src/workflows/http-fetch) for a complete implementation that fetches data from external APIs, with Chainlink CRE consensus aggregation applied.
|
|
288
305
|
|
|
289
306
|
### 3. On-Chain Data Integration
|
|
290
307
|
|
|
291
|
-
|
|
292
|
-
import {
|
|
293
|
-
cre,
|
|
294
|
-
consensusMedianAggregation,
|
|
295
|
-
Value,
|
|
296
|
-
withErrorBoundary,
|
|
297
|
-
hexToBase64,
|
|
298
|
-
bytesToHex,
|
|
299
|
-
} from "@chainlink/cre-sdk";
|
|
300
|
-
import { encodeFunctionData, decodeFunctionResult, zeroAddress } from "viem";
|
|
301
|
-
import { z } from "zod";
|
|
302
|
-
|
|
303
|
-
const configSchema = z.object({
|
|
304
|
-
schedule: z.string(),
|
|
305
|
-
apiUrl: z.string(),
|
|
306
|
-
evms: z.array(
|
|
307
|
-
z.object({
|
|
308
|
-
chainSelector: z.string(),
|
|
309
|
-
contractAddress: z.string(),
|
|
310
|
-
})
|
|
311
|
-
),
|
|
312
|
-
});
|
|
313
|
-
|
|
314
|
-
type Config = z.infer<typeof configSchema>;
|
|
315
|
-
|
|
316
|
-
const fetchOffchainData = async (config: Config) => {
|
|
317
|
-
const response = await cre.utils.fetch({ url: config.apiUrl });
|
|
318
|
-
return Number.parseFloat(response.body.trim());
|
|
319
|
-
};
|
|
320
|
-
|
|
321
|
-
const onCronTrigger = async (config: Config) => {
|
|
322
|
-
// Get off-chain data with consensus
|
|
323
|
-
const offchainValue = await cre.runInNodeMode(
|
|
324
|
-
fetchOffchainData,
|
|
325
|
-
consensusMedianAggregation()
|
|
326
|
-
)(config);
|
|
327
|
-
|
|
328
|
-
// Read on-chain data
|
|
329
|
-
const evmConfig = config.evms[0];
|
|
330
|
-
const evmClient = new cre.capabilities.EVMClient(
|
|
331
|
-
undefined,
|
|
332
|
-
BigInt(evmConfig.chainSelector)
|
|
333
|
-
);
|
|
334
|
-
|
|
335
|
-
const callData = encodeFunctionData({
|
|
336
|
-
abi: [
|
|
337
|
-
{
|
|
338
|
-
name: "getValue",
|
|
339
|
-
type: "function",
|
|
340
|
-
inputs: [],
|
|
341
|
-
outputs: [{ type: "uint256" }],
|
|
342
|
-
},
|
|
343
|
-
],
|
|
344
|
-
functionName: "getValue",
|
|
345
|
-
});
|
|
346
|
-
|
|
347
|
-
const contractCall = await evmClient.callContract({
|
|
348
|
-
call: {
|
|
349
|
-
from: hexToBase64(zeroAddress),
|
|
350
|
-
to: hexToBase64(evmConfig.contractAddress),
|
|
351
|
-
data: hexToBase64(callData),
|
|
352
|
-
},
|
|
353
|
-
blockNumber: {
|
|
354
|
-
absVal: Buffer.from([3]).toString("base64"),
|
|
355
|
-
sign: "-1",
|
|
356
|
-
},
|
|
357
|
-
});
|
|
358
|
-
|
|
359
|
-
const onchainValue = decodeFunctionResult({
|
|
360
|
-
abi: [
|
|
361
|
-
{
|
|
362
|
-
name: "getValue",
|
|
363
|
-
type: "function",
|
|
364
|
-
inputs: [],
|
|
365
|
-
outputs: [{ type: "uint256" }],
|
|
366
|
-
},
|
|
367
|
-
],
|
|
368
|
-
functionName: "getValue",
|
|
369
|
-
data: bytesToHex(contractCall.data),
|
|
370
|
-
});
|
|
371
|
-
|
|
372
|
-
// Combine and return results
|
|
373
|
-
const finalResult = Number(onchainValue) + offchainValue;
|
|
374
|
-
|
|
375
|
-
cre.sendResponseValue(
|
|
376
|
-
Value.from({
|
|
377
|
-
offchainValue,
|
|
378
|
-
onchainValue: Number(onchainValue),
|
|
379
|
-
finalResult,
|
|
380
|
-
})
|
|
381
|
-
);
|
|
382
|
-
};
|
|
383
|
-
|
|
384
|
-
const initWorkflow = (config: Config) => {
|
|
385
|
-
const cron = new cre.capabilities.CronCapability();
|
|
386
|
-
return [
|
|
387
|
-
cre.handler(cron.trigger({ schedule: config.schedule }), onCronTrigger),
|
|
388
|
-
];
|
|
389
|
-
};
|
|
390
|
-
|
|
391
|
-
export async function main() {
|
|
392
|
-
const runner = await cre.newRunner<Config>({ configSchema });
|
|
393
|
-
await runner.run(initWorkflow);
|
|
394
|
-
}
|
|
395
|
-
|
|
396
|
-
withErrorBoundary(main);
|
|
397
|
-
```
|
|
308
|
+
See the [on-chain example](https://github.com/smartcontractkit/cre-sdk-typescript/tree/main/packages/cre-sdk-examples/src/workflows/on-chain) for reading from smart contracts, and the [on-chain-write example](https://github.com/smartcontractkit/cre-sdk-typescript/tree/main/packages/cre-sdk-examples/src/workflows/on-chain-write) for writing to smart contracts.
|
|
398
309
|
|
|
399
310
|
## API Reference
|
|
400
311
|
|
|
401
312
|
### Core Functions
|
|
402
313
|
|
|
403
|
-
- `
|
|
314
|
+
- `Runner.newRunner<T>(options?)`: Create a new workflow runner
|
|
404
315
|
- `cre.handler(trigger, handler)`: Create a trigger-handler pair
|
|
405
|
-
- `
|
|
406
|
-
- `cre.runInNodeMode(fn, aggregator)`: Execute function in node mode with consensus
|
|
407
|
-
- `withErrorBoundary(fn)`: Wrap function with error handling
|
|
316
|
+
- `runtime.runInNodeMode(fn, aggregator)`: Execute function in node mode with consensus
|
|
408
317
|
|
|
409
318
|
### Capabilities
|
|
410
319
|
|
|
411
320
|
- `cre.capabilities.CronCapability`: Schedule-based triggers
|
|
412
|
-
- `cre.capabilities.
|
|
413
|
-
- `cre.capabilities.HTTPClient`: HTTP client for requests
|
|
321
|
+
- `cre.capabilities.HTTPClient`: HTTP client for requests with consensus support
|
|
414
322
|
- `cre.capabilities.EVMClient`: EVM blockchain interactions
|
|
415
323
|
|
|
416
324
|
### Utilities
|
|
417
325
|
|
|
418
|
-
- `cre.utils.fetch()`: HTTP requests with consensus support
|
|
419
|
-
- `Value.from()`: Serialize response values
|
|
420
326
|
- `consensusMedianAggregation()`: Median consensus aggregator
|
|
421
327
|
- `hexToBase64()`, `bytesToHex()`: Data format conversions
|
|
328
|
+
- `getAllNetworks()`, `getNetwork(...)`: Chain selector metadata
|
|
422
329
|
|
|
423
330
|
## Building from Source
|
|
424
331
|
|
|
@@ -428,6 +335,9 @@ To build the SDK locally:
|
|
|
428
335
|
# Install dependencies (from monorepo root)
|
|
429
336
|
bun install
|
|
430
337
|
|
|
338
|
+
# Make sure Chainlink CRE Javy Plugin is ready
|
|
339
|
+
bun cre-setup
|
|
340
|
+
|
|
431
341
|
# Generate protocol buffers and SDK types
|
|
432
342
|
bun generate:sdk
|
|
433
343
|
|
|
@@ -443,11 +353,11 @@ bun test:standard
|
|
|
443
353
|
|
|
444
354
|
### Protobuf Generation
|
|
445
355
|
|
|
446
|
-
This SDK uses [
|
|
356
|
+
This SDK uses [@bufbuild/protobuf](https://www.npmjs.com/package/@bufbuild/protobuf) for generating TypeScript types from Protocol Buffers.
|
|
447
357
|
|
|
448
358
|
**Available Commands:**
|
|
449
359
|
|
|
450
|
-
- `bun generate:
|
|
360
|
+
- `bun generate:sdk` - Generate TypeScript types from .proto files as well as custom tailored utility classes
|
|
451
361
|
- `bun proto:lint` - Lint .proto files
|
|
452
362
|
- `bun proto:format` - Format .proto files
|
|
453
363
|
|
|
@@ -472,7 +382,11 @@ bun generate:chain-selectors
|
|
|
472
382
|
```typescript
|
|
473
383
|
import { getAllNetworks, getNetwork } from "@chainlink/cre-sdk";
|
|
474
384
|
|
|
475
|
-
const ethereum = getNetwork(
|
|
385
|
+
const ethereum = getNetwork({
|
|
386
|
+
chainFamily: "evm",
|
|
387
|
+
chainSelectorName: "ethereum-mainnet",
|
|
388
|
+
isTestnet: false,
|
|
389
|
+
});
|
|
476
390
|
const allNetworks = getAllNetworks();
|
|
477
391
|
```
|
|
478
392
|
|