11import { getProvider , RPCProviderLive } from './rpc-provider'
2- import { Effect , Layer , ManagedRuntime } from 'effect'
2+ import { Config , Effect , Layer , ManagedRuntime } from 'effect'
33import {
44 DecodedTransaction ,
55 DecodeResult ,
66 decodeCalldata as calldataDecoder ,
77 decodeTransactionByHash ,
88 EtherscanV2StrategyResolver ,
9- FetchTransactionError ,
9+ ExperimentalErc20AbiStrategyResolver ,
1010 FourByteStrategyResolver ,
1111 OpenchainStrategyResolver ,
12- RPCFetchError ,
1312 SourcifyStrategyResolver ,
14- UnknownNetwork ,
15- UnsupportedEvent ,
1613 AbiStore ,
1714 AbiParams ,
1815 ContractAbiResult ,
1916 ContractMetaStore ,
2017 ContractMetaParams ,
2118 ContractMetaResult ,
2219 PublicClient ,
20+ ERC20RPCStrategyResolver ,
21+ NFTRPCStrategyResolver ,
22+ ProxyRPCStrategyResolver ,
2323} from '@3loop/transaction-decoder'
2424import { SqlAbiStore , SqlContractMetaStore } from '@3loop/transaction-decoder/sql'
2525import { Hex } from 'viem'
@@ -29,19 +29,33 @@ import { SqlClient } from '@effect/sql/SqlClient'
2929import { ConfigError } from 'effect/ConfigError'
3030import { SqlError } from '@effect/sql/SqlError'
3131
32- const AbiStoreLive = SqlAbiStore . make ( {
33- default : [
34- EtherscanV2StrategyResolver ( {
35- apikey : process . env . ETHERSCAN_API_KEY ,
36- } ) ,
37- SourcifyStrategyResolver ( ) ,
38- OpenchainStrategyResolver ( ) ,
39- FourByteStrategyResolver ( ) ,
40- ] ,
41- } )
32+ const AbiStoreLive = Layer . unwrapEffect (
33+ Effect . gen ( function * ( ) {
34+ const service = yield * PublicClient
35+ const apikey = yield * Config . withDefault ( Config . string ( 'ETHERSCAN_API_KEY' ) , undefined )
36+ return SqlAbiStore . make ( {
37+ default : [
38+ EtherscanV2StrategyResolver ( {
39+ apikey : apikey ,
40+ } ) ,
41+ ExperimentalErc20AbiStrategyResolver ( service ) ,
42+ OpenchainStrategyResolver ( ) ,
43+ SourcifyStrategyResolver ( ) ,
44+ FourByteStrategyResolver ( ) ,
45+ ] ,
46+ } )
47+ } ) ,
48+ )
4249
43- const MetaStoreLive = SqlContractMetaStore . make ( )
50+ const MetaStoreLive = Layer . unwrapEffect (
51+ Effect . gen ( function * ( ) {
52+ const service = yield * PublicClient
4453
54+ return SqlContractMetaStore . make ( {
55+ default : [ ERC20RPCStrategyResolver ( service ) , NFTRPCStrategyResolver ( service ) , ProxyRPCStrategyResolver ( service ) ] ,
56+ } )
57+ } ) ,
58+ )
4559const DataLayer = Layer . mergeAll ( RPCProviderLive , DatabaseLive )
4660const LoadersLayer = Layer . mergeAll ( AbiStoreLive , MetaStoreLive )
4761const MainLayer = Layer . provideMerge ( LoadersLayer , DataLayer ) as Layer . Layer <
0 commit comments