@chainlink/cre-sdk 0.0.2-alpha → 0.0.3-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 +142 -247
- 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 +21 -21
- package/dist/generated-sdk/capabilities/blockchain/evm/v1alpha/client_sdk_gen.js +10 -21
- package/dist/generated-sdk/capabilities/internal/consensus/v1alpha/consensus_sdk_gen.d.ts +5 -6
- package/dist/generated-sdk/capabilities/internal/consensus/v1alpha/consensus_sdk_gen.js +2 -6
- 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 +30 -5
- 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 +0 -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 +0 -2
- 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 +7 -3
- package/dist/sdk/impl/runtime-impl.js +41 -18
- package/dist/sdk/runtime.d.ts +5 -2
- 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 +1 -0
- package/dist/sdk/utils/index.js +1 -0
- package/dist/sdk/utils/safe-json-stringify.d.ts +6 -0
- package/dist/sdk/utils/safe-json-stringify.js +6 -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/package.json +4 -3
- package/scripts/run-standard-tests.sh +3 -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/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
|
@@ -6,6 +6,16 @@ The Chainlink Runtime Environment (CRE) SDK for TypeScript enables developers to
|
|
|
6
6
|
|
|
7
7
|
Ready to clone repo with example workflows and cre-sdk set up: [cre-sdk-examples](https://github.com/smartcontractkit/cre-sdk-typescript/tree/main/packages/cre-sdk-examples).
|
|
8
8
|
|
|
9
|
+
## Simulate locally with CRE CLI
|
|
10
|
+
|
|
11
|
+
You can run and debug your TypeScript workflows locally using the CRE CLI simulation:
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
cre workflow simulate --target local-simulation --config config.json your-workflow-file.ts
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
See the CLI docs for additional flags (e.g. config file, secrets, HTTP payloads, EVM log params).
|
|
18
|
+
|
|
9
19
|
## Installation
|
|
10
20
|
|
|
11
21
|
```bash
|
|
@@ -15,14 +25,16 @@ bun add @chainlink/cre-sdk
|
|
|
15
25
|
## Quick Start
|
|
16
26
|
|
|
17
27
|
```typescript
|
|
18
|
-
import { cre,
|
|
28
|
+
import { cre, Runner, type Runtime } from "@chainlink/cre-sdk";
|
|
29
|
+
|
|
30
|
+
type Config = { schedule: string };
|
|
19
31
|
|
|
20
|
-
const onCronTrigger =
|
|
21
|
-
|
|
22
|
-
|
|
32
|
+
const onCronTrigger = (runtime: Runtime<Config>) => {
|
|
33
|
+
runtime.log("Hello, CRE!");
|
|
34
|
+
return "Hello, CRE!";
|
|
23
35
|
};
|
|
24
36
|
|
|
25
|
-
const initWorkflow = (config:
|
|
37
|
+
const initWorkflow = (config: Config) => {
|
|
26
38
|
const cron = new cre.capabilities.CronCapability();
|
|
27
39
|
return [
|
|
28
40
|
cre.handler(cron.trigger({ schedule: config.schedule }), onCronTrigger),
|
|
@@ -30,11 +42,11 @@ const initWorkflow = (config: { schedule: string }) => {
|
|
|
30
42
|
};
|
|
31
43
|
|
|
32
44
|
export async function main() {
|
|
33
|
-
const runner = await
|
|
45
|
+
const runner = await Runner.newRunner<Config>();
|
|
34
46
|
await runner.run(initWorkflow);
|
|
35
47
|
}
|
|
36
48
|
|
|
37
|
-
|
|
49
|
+
main();
|
|
38
50
|
```
|
|
39
51
|
|
|
40
52
|
## Core Concepts
|
|
@@ -54,15 +66,9 @@ CRE supports two execution modes:
|
|
|
54
66
|
- **DON Mode**: Distributed execution across multiple nodes for consensus and reliability
|
|
55
67
|
- **Node Mode**: Individual node execution for specific tasks requiring node-level operations
|
|
56
68
|
|
|
57
|
-
Use `
|
|
69
|
+
Use `runtime.runInNodeMode()` to execute functions that require individual node processing, such as fetching data from different sources for consensus aggregation.
|
|
58
70
|
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
Always wrap your main function with `withErrorBoundary()` to ensure proper error handling and workflow termination:
|
|
62
|
-
|
|
63
|
-
```typescript
|
|
64
|
-
withErrorBoundary(main);
|
|
65
|
-
```
|
|
71
|
+
The SDK wires runtime safety internally; you can call `main()` directly as shown in the examples.
|
|
66
72
|
|
|
67
73
|
## Available Capabilities
|
|
68
74
|
|
|
@@ -82,18 +88,30 @@ const trigger = cron.trigger({ schedule: "0 */5 * * * *" }); // Every 5 minutes
|
|
|
82
88
|
Fetch data from external APIs with built-in consensus mechanisms:
|
|
83
89
|
|
|
84
90
|
```typescript
|
|
85
|
-
import {
|
|
91
|
+
import {
|
|
92
|
+
cre,
|
|
93
|
+
consensusMedianAggregation,
|
|
94
|
+
type HTTPSendRequester,
|
|
95
|
+
type Runtime,
|
|
96
|
+
} from "@chainlink/cre-sdk";
|
|
97
|
+
|
|
98
|
+
type Config = { apiUrl: string };
|
|
86
99
|
|
|
87
|
-
const fetchData =
|
|
88
|
-
const response =
|
|
89
|
-
return Number.parseFloat(response.body.trim());
|
|
100
|
+
const fetchData = (sendRequester: HTTPSendRequester, config: Config) => {
|
|
101
|
+
const response = sendRequester.sendRequest({ url: config.apiUrl }).result();
|
|
102
|
+
return Number.parseFloat(Buffer.from(response.body).toString("utf-8").trim());
|
|
90
103
|
};
|
|
91
104
|
|
|
92
|
-
|
|
93
|
-
const
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
105
|
+
const onCronTrigger = (runtime: Runtime<Config>) => {
|
|
106
|
+
const httpCapability = new cre.capabilities.HTTPClient();
|
|
107
|
+
return httpCapability
|
|
108
|
+
.sendRequest(
|
|
109
|
+
runtime,
|
|
110
|
+
fetchData,
|
|
111
|
+
consensusMedianAggregation()
|
|
112
|
+
)(runtime.config)
|
|
113
|
+
.result();
|
|
114
|
+
};
|
|
97
115
|
```
|
|
98
116
|
|
|
99
117
|
### Blockchain Interactions
|
|
@@ -101,40 +119,66 @@ const result = await cre.runInNodeMode(
|
|
|
101
119
|
Read from and write to EVM-compatible blockchains:
|
|
102
120
|
|
|
103
121
|
```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
|
-
});
|
|
122
|
+
import {
|
|
123
|
+
bytesToHex,
|
|
124
|
+
cre,
|
|
125
|
+
getNetwork,
|
|
126
|
+
hexToBase64,
|
|
127
|
+
type Runtime,
|
|
128
|
+
} from "@chainlink/cre-sdk";
|
|
129
|
+
import { decodeFunctionResult, encodeFunctionData, zeroAddress } from "viem";
|
|
118
130
|
|
|
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
|
-
});
|
|
131
|
+
type Config = { evm: { chainSelectorName: string; contractAddress: string } };
|
|
130
132
|
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
});
|
|
133
|
+
const onCronTrigger = async (runtime: Runtime<Config>) => {
|
|
134
|
+
const { chainSelectorName, contractAddress } = runtime.config.evm;
|
|
135
|
+
const network = getNetwork({
|
|
136
|
+
chainFamily: "evm",
|
|
137
|
+
chainSelectorName,
|
|
138
|
+
isTestnet: true,
|
|
139
|
+
});
|
|
140
|
+
if (!network) throw new Error("Network not found");
|
|
141
|
+
|
|
142
|
+
const evmClient = new cre.capabilities.EVMClient(
|
|
143
|
+
network.chainSelector.selector
|
|
144
|
+
);
|
|
145
|
+
|
|
146
|
+
const callData = encodeFunctionData({
|
|
147
|
+
abi: CONTRACT_ABI,
|
|
148
|
+
functionName: "getValue",
|
|
149
|
+
});
|
|
150
|
+
|
|
151
|
+
const contractCall = evmClient
|
|
152
|
+
.callContract(runtime, {
|
|
153
|
+
call: {
|
|
154
|
+
from: hexToBase64(zeroAddress),
|
|
155
|
+
to: hexToBase64(contractAddress),
|
|
156
|
+
data: hexToBase64(callData),
|
|
157
|
+
},
|
|
158
|
+
blockNumber: { absVal: Buffer.from([3]).toString("base64"), sign: "-1" },
|
|
159
|
+
})
|
|
160
|
+
.result();
|
|
161
|
+
|
|
162
|
+
const onchainValue = decodeFunctionResult({
|
|
163
|
+
abi: CONTRACT_ABI,
|
|
164
|
+
functionName: "getValue",
|
|
165
|
+
data: bytesToHex(contractCall.data),
|
|
166
|
+
});
|
|
167
|
+
|
|
168
|
+
// Write example
|
|
169
|
+
const writeData = encodeFunctionData({
|
|
170
|
+
abi: CONTRACT_ABI,
|
|
171
|
+
functionName: "setValue",
|
|
172
|
+
args: [onchainValue],
|
|
173
|
+
});
|
|
174
|
+
const tx = evmClient
|
|
175
|
+
.writeReport(runtime, {
|
|
176
|
+
receiver: contractAddress,
|
|
177
|
+
report: { rawReport: writeData },
|
|
178
|
+
})
|
|
179
|
+
.result();
|
|
180
|
+
return { onchainValue, txHash: tx.txHash?.toString() };
|
|
181
|
+
};
|
|
138
182
|
```
|
|
139
183
|
|
|
140
184
|
## Configuration & Type Safety
|
|
@@ -149,7 +193,7 @@ const configSchema = z.object({
|
|
|
149
193
|
apiUrl: z.string(),
|
|
150
194
|
evms: z.array(
|
|
151
195
|
z.object({
|
|
152
|
-
|
|
196
|
+
chainSelectorName: z.string(),
|
|
153
197
|
contractAddress: z.string(),
|
|
154
198
|
})
|
|
155
199
|
),
|
|
@@ -158,7 +202,7 @@ const configSchema = z.object({
|
|
|
158
202
|
type Config = z.infer<typeof configSchema>;
|
|
159
203
|
|
|
160
204
|
export async function main() {
|
|
161
|
-
const runner = await
|
|
205
|
+
const runner = await Runner.newRunner<Config>({ configSchema });
|
|
162
206
|
await runner.run(initWorkflow);
|
|
163
207
|
}
|
|
164
208
|
```
|
|
@@ -168,32 +212,23 @@ export async function main() {
|
|
|
168
212
|
CRE provides built-in consensus mechanisms for aggregating data from multiple nodes:
|
|
169
213
|
|
|
170
214
|
```typescript
|
|
171
|
-
import {
|
|
215
|
+
import {
|
|
216
|
+
consensusMedianAggregation,
|
|
217
|
+
type NodeRuntime,
|
|
218
|
+
type Runtime,
|
|
219
|
+
} from "@chainlink/cre-sdk";
|
|
220
|
+
|
|
221
|
+
const fetchDataFunction = async (nodeRuntime: NodeRuntime<Config>) => 42;
|
|
172
222
|
|
|
173
223
|
// Execute function across multiple nodes and aggregate results
|
|
174
|
-
const aggregatedValue = await
|
|
224
|
+
const aggregatedValue = await runtime.runInNodeMode(
|
|
175
225
|
fetchDataFunction,
|
|
176
226
|
consensusMedianAggregation()
|
|
177
|
-
)(
|
|
227
|
+
)();
|
|
178
228
|
```
|
|
179
229
|
|
|
180
230
|
## Utility Functions
|
|
181
231
|
|
|
182
|
-
### Value Serialization
|
|
183
|
-
|
|
184
|
-
```typescript
|
|
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
|
-
```
|
|
196
|
-
|
|
197
232
|
### Hex Utilities
|
|
198
233
|
|
|
199
234
|
```typescript
|
|
@@ -208,8 +243,12 @@ const hexData = bytesToHex(buffer);
|
|
|
208
243
|
```typescript
|
|
209
244
|
import { getAllNetworks, getNetwork } from "@chainlink/cre-sdk";
|
|
210
245
|
|
|
211
|
-
const
|
|
212
|
-
const
|
|
246
|
+
const allNetworks = getAllNetworks();
|
|
247
|
+
const ethereumSepolia = getNetwork({
|
|
248
|
+
chainFamily: "evm",
|
|
249
|
+
chainSelectorName: "ethereum-sepolia",
|
|
250
|
+
isTestnet: true,
|
|
251
|
+
});
|
|
213
252
|
```
|
|
214
253
|
|
|
215
254
|
## Example Workflows
|
|
@@ -217,58 +256,13 @@ const ethereum = getNetwork("ethereum-mainnet");
|
|
|
217
256
|
### 1. Simple Scheduled Task
|
|
218
257
|
|
|
219
258
|
```typescript
|
|
220
|
-
import { cre,
|
|
259
|
+
import { cre, Runner, type Runtime } from "@chainlink/cre-sdk";
|
|
221
260
|
|
|
222
|
-
|
|
223
|
-
console.log("Workflow executed!");
|
|
224
|
-
cre.sendResponseValue(Value.from("Task completed"));
|
|
225
|
-
};
|
|
261
|
+
type Config = { schedule: string };
|
|
226
262
|
|
|
227
|
-
const
|
|
228
|
-
|
|
229
|
-
return
|
|
230
|
-
cre.handler(cron.trigger({ schedule: config.schedule }), onCronTrigger),
|
|
231
|
-
];
|
|
232
|
-
};
|
|
233
|
-
|
|
234
|
-
export async function main() {
|
|
235
|
-
const runner = await cre.newRunner<{ schedule: string }>();
|
|
236
|
-
await runner.run(initWorkflow);
|
|
237
|
-
}
|
|
238
|
-
|
|
239
|
-
withErrorBoundary(main);
|
|
240
|
-
```
|
|
241
|
-
|
|
242
|
-
### 2. API Data Aggregation
|
|
243
|
-
|
|
244
|
-
```typescript
|
|
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 }));
|
|
263
|
+
const onCronTrigger = (runtime: Runtime<Config>) => {
|
|
264
|
+
runtime.log("Workflow executed!");
|
|
265
|
+
return "Task completed";
|
|
272
266
|
};
|
|
273
267
|
|
|
274
268
|
const initWorkflow = (config: Config) => {
|
|
@@ -279,146 +273,40 @@ const initWorkflow = (config: Config) => {
|
|
|
279
273
|
};
|
|
280
274
|
|
|
281
275
|
export async function main() {
|
|
282
|
-
const runner = await
|
|
276
|
+
const runner = await Runner.newRunner<Config>();
|
|
283
277
|
await runner.run(initWorkflow);
|
|
284
278
|
}
|
|
285
279
|
|
|
286
|
-
|
|
280
|
+
main();
|
|
287
281
|
```
|
|
288
282
|
|
|
289
|
-
###
|
|
290
|
-
|
|
291
|
-
```typescript
|
|
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
|
-
};
|
|
283
|
+
### 2. API Data Aggregation
|
|
383
284
|
|
|
384
|
-
|
|
385
|
-
const cron = new cre.capabilities.CronCapability();
|
|
386
|
-
return [
|
|
387
|
-
cre.handler(cron.trigger({ schedule: config.schedule }), onCronTrigger),
|
|
388
|
-
];
|
|
389
|
-
};
|
|
285
|
+
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 consensus aggregation.
|
|
390
286
|
|
|
391
|
-
|
|
392
|
-
const runner = await cre.newRunner<Config>({ configSchema });
|
|
393
|
-
await runner.run(initWorkflow);
|
|
394
|
-
}
|
|
287
|
+
### 3. On-Chain Data Integration
|
|
395
288
|
|
|
396
|
-
|
|
397
|
-
```
|
|
289
|
+
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
290
|
|
|
399
291
|
## API Reference
|
|
400
292
|
|
|
401
293
|
### Core Functions
|
|
402
294
|
|
|
403
|
-
- `
|
|
295
|
+
- `Runner.newRunner<T>(options?)`: Create a new workflow runner
|
|
404
296
|
- `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
|
|
297
|
+
- `runtime.runInNodeMode(fn, aggregator)`: Execute function in node mode with consensus
|
|
408
298
|
|
|
409
299
|
### Capabilities
|
|
410
300
|
|
|
411
301
|
- `cre.capabilities.CronCapability`: Schedule-based triggers
|
|
412
|
-
- `cre.capabilities.
|
|
413
|
-
- `cre.capabilities.HTTPClient`: HTTP client for requests
|
|
302
|
+
- `cre.capabilities.HTTPClient`: HTTP client for requests with consensus support
|
|
414
303
|
- `cre.capabilities.EVMClient`: EVM blockchain interactions
|
|
415
304
|
|
|
416
305
|
### Utilities
|
|
417
306
|
|
|
418
|
-
- `cre.utils.fetch()`: HTTP requests with consensus support
|
|
419
|
-
- `Value.from()`: Serialize response values
|
|
420
307
|
- `consensusMedianAggregation()`: Median consensus aggregator
|
|
421
308
|
- `hexToBase64()`, `bytesToHex()`: Data format conversions
|
|
309
|
+
- `getAllNetworks()`, `getNetwork(...)`: Chain selector metadata
|
|
422
310
|
|
|
423
311
|
## Building from Source
|
|
424
312
|
|
|
@@ -428,6 +316,9 @@ To build the SDK locally:
|
|
|
428
316
|
# Install dependencies (from monorepo root)
|
|
429
317
|
bun install
|
|
430
318
|
|
|
319
|
+
# Make sure Chainlink CRE Javy Plugin is ready
|
|
320
|
+
bun cre-setup
|
|
321
|
+
|
|
431
322
|
# Generate protocol buffers and SDK types
|
|
432
323
|
bun generate:sdk
|
|
433
324
|
|
|
@@ -443,11 +334,11 @@ bun test:standard
|
|
|
443
334
|
|
|
444
335
|
### Protobuf Generation
|
|
445
336
|
|
|
446
|
-
This SDK uses [
|
|
337
|
+
This SDK uses [@bufbuild/protobuf](https://www.npmjs.com/package/@bufbuild/protobuf) for generating TypeScript types from Protocol Buffers.
|
|
447
338
|
|
|
448
339
|
**Available Commands:**
|
|
449
340
|
|
|
450
|
-
- `bun generate:
|
|
341
|
+
- `bun generate:sdk` - Generate TypeScript types from .proto files as well as custom tailored utility classes
|
|
451
342
|
- `bun proto:lint` - Lint .proto files
|
|
452
343
|
- `bun proto:format` - Format .proto files
|
|
453
344
|
|
|
@@ -472,7 +363,11 @@ bun generate:chain-selectors
|
|
|
472
363
|
```typescript
|
|
473
364
|
import { getAllNetworks, getNetwork } from "@chainlink/cre-sdk";
|
|
474
365
|
|
|
475
|
-
const ethereum = getNetwork(
|
|
366
|
+
const ethereum = getNetwork({
|
|
367
|
+
chainFamily: "evm",
|
|
368
|
+
chainSelectorName: "ethereum-mainnet",
|
|
369
|
+
isTestnet: false,
|
|
370
|
+
});
|
|
476
371
|
const allNetworks = getAllNetworks();
|
|
477
372
|
```
|
|
478
373
|
|