@prb/effect-evm 1.0.0-beta.2 → 1.0.0-beta.4
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/dist/abi/erc165.js.map +1 -1
- package/dist/abi/erc20-no-output.js.map +1 -1
- package/dist/abi/erc20.js.map +1 -1
- package/dist/abi/erc721.js.map +1 -1
- package/dist/abi/index.js.map +1 -1
- package/dist/balance/index.js.map +1 -1
- package/dist/balance/service.js.map +1 -1
- package/dist/balance/service.test.integration.js.map +1 -1
- package/dist/balance/utils.js.map +1 -1
- package/dist/block/errors.js.map +1 -1
- package/dist/block/index.js.map +1 -1
- package/dist/block/service.js.map +1 -1
- package/dist/block/service.test.integration.js.map +1 -1
- package/dist/constants/index.js.map +1 -1
- package/dist/contract/cross-chain-reader.js.map +1 -1
- package/dist/contract/index.js.map +1 -1
- package/dist/contract/pipeline/index.js.map +1 -1
- package/dist/contract/pipeline/internal/core.js.map +1 -1
- package/dist/contract/pipeline/internal/helpers.js.map +1 -1
- package/dist/contract/pipeline/internal/nonce.js.map +1 -1
- package/dist/contract/pipeline/internal/prepare.js.map +1 -1
- package/dist/contract/pipeline/internal/receipt.js.map +1 -1
- package/dist/contract/pipeline/live.js.map +1 -1
- package/dist/contract/pipeline/service.js.map +1 -1
- package/dist/contract/pipeline/types.js.map +1 -1
- package/dist/contract/pipeline/write-and-track.js.map +1 -1
- package/dist/contract/pipeline/write-and-wait.js.map +1 -1
- package/dist/contract/pipeline.js.map +1 -1
- package/dist/contract/reader.js.map +1 -1
- package/dist/contract/typed-contract.js.map +1 -1
- package/dist/contract/writer.js.map +1 -1
- package/dist/core/clients/index.js.map +1 -1
- package/dist/core/clients/public-client.js.map +1 -1
- package/dist/core/clients/wallet-client.js.map +1 -1
- package/dist/core/errors/client.js.map +1 -1
- package/dist/core/errors/contract.js.map +1 -1
- package/dist/core/errors/erc20.js.map +1 -1
- package/dist/core/errors/event.js.map +1 -1
- package/dist/core/errors/index.js.map +1 -1
- package/dist/core/errors/predicates.js.map +1 -1
- package/dist/core/errors/transaction.js.map +1 -1
- package/dist/core/errors/viem-mapper.js.map +1 -1
- package/dist/core/index.js.map +1 -1
- package/dist/deploy/errors.js.map +1 -1
- package/dist/deploy/index.js.map +1 -1
- package/dist/deploy/service.js.map +1 -1
- package/dist/eip7702/erc7579.js.map +1 -1
- package/dist/eip7702/errors.js.map +1 -1
- package/dist/eip7702/index.js.map +1 -1
- package/dist/eip7702/service.js.map +1 -1
- package/dist/ens/ens.d.ts.map +1 -1
- package/dist/ens/ens.js +6 -6
- package/dist/ens/ens.js.map +1 -1
- package/dist/ens/errors.js.map +1 -1
- package/dist/ens/index.js.map +1 -1
- package/dist/erc20/allowance/core.js.map +1 -1
- package/dist/erc20/allowance/index.js.map +1 -1
- package/dist/erc20/allowance/no-output.js.map +1 -1
- package/dist/erc20/allowance/types.js.map +1 -1
- package/dist/erc20/index.js.map +1 -1
- package/dist/erc20/metadata.js.map +1 -1
- package/dist/erc721/errors.js.map +1 -1
- package/dist/erc721/helpers.js.map +1 -1
- package/dist/erc721/index.js.map +1 -1
- package/dist/erc721/metadata.js.map +1 -1
- package/dist/erc721/service.js.map +1 -1
- package/dist/events/backfill.js.map +1 -1
- package/dist/events/backfill.test.integration.js.map +1 -1
- package/dist/events/cursor.js.map +1 -1
- package/dist/events/decoder.js.map +1 -1
- package/dist/events/index.js.map +1 -1
- package/dist/events/reliable-stream-simple.test.integration.js.map +1 -1
- package/dist/events/reliable-stream.js.map +1 -1
- package/dist/events/reliable-stream.test.integration.js.map +1 -1
- package/dist/events/stream.js.map +1 -1
- package/dist/events/stream.test.integration.js.map +1 -1
- package/dist/gas/errors.js.map +1 -1
- package/dist/gas/estimator.js.map +1 -1
- package/dist/gas/index.js.map +1 -1
- package/dist/gas/service.js.map +1 -1
- package/dist/gas/service.test.integration.js.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/integrations/react-hooks/convenience/index.js.map +1 -1
- package/dist/integrations/react-hooks/internal/error.js.map +1 -1
- package/dist/integrations/react-hooks/internal/is-dev.js.map +1 -1
- package/dist/integrations/react-hooks/internal/runtime.js.map +1 -1
- package/dist/integrations/react-hooks/internal/scoped-run.js.map +1 -1
- package/dist/integrations/react-hooks/internal/stable.js.map +1 -1
- package/dist/integrations/react-hooks/primitives/use-effect-memo-factory.js.map +1 -1
- package/dist/integrations/react-hooks/primitives/use-effect.js.map +1 -1
- package/dist/integrations/react-hooks/primitives/use-fork-effect.js.map +1 -1
- package/dist/integrations/react-hooks/primitives/use-stream.js.map +1 -1
- package/dist/integrations/react-hooks/primitives.js.map +1 -1
- package/dist/integrations/react-hooks/provider.js.map +1 -1
- package/dist/integrations/react-hooks/wagmi/index.js.map +1 -1
- package/dist/integrations/react-hooks/wallet-provider-ref.js.map +1 -1
- package/dist/integrations/wagmi/index.js.map +1 -1
- package/dist/integrations/wagmi/layers.js.map +1 -1
- package/dist/internal/index.js.map +1 -1
- package/dist/internal/numbers.js.map +1 -1
- package/dist/internal/schedule.js.map +1 -1
- package/dist/internal/stream-adapters.js.map +1 -1
- package/dist/internal/viem-effect.js.map +1 -1
- package/dist/nonce/index.js.map +1 -1
- package/dist/nonce/manager.js.map +1 -1
- package/dist/nonce/service.js.map +1 -1
- package/dist/nonce/service.test.integration.js.map +1 -1
- package/dist/platform/browser/cursor-store/index.js.map +1 -1
- package/dist/platform/browser/cursor-store/local-storage.js.map +1 -1
- package/dist/platform/browser/index.js.map +1 -1
- package/dist/platform/browser/layers.js.map +1 -1
- package/dist/platform/browser/storage/errors.js.map +1 -1
- package/dist/platform/browser/storage/index.js.map +1 -1
- package/dist/platform/browser/storage/local-storage.js.map +1 -1
- package/dist/platform/browser/tx-persistence/index.js.map +1 -1
- package/dist/platform/browser/tx-persistence/persistence.js.map +1 -1
- package/dist/platform/browser/tx-store/errors.js.map +1 -1
- package/dist/platform/browser/tx-store/index.js.map +1 -1
- package/dist/platform/browser/tx-store/local-storage.js.map +1 -1
- package/dist/platform/browser/tx-store/store.js.map +1 -1
- package/dist/platform/browser/tx-store/types.js.map +1 -1
- package/dist/presets/index.js.map +1 -1
- package/dist/presets/layers.js.map +1 -1
- package/dist/presets/transports.js.map +1 -1
- package/dist/query/chain-head.js.map +1 -1
- package/dist/query/client.js.map +1 -1
- package/dist/query/client.test.integration.js.map +1 -1
- package/dist/query/contract-query.js.map +1 -1
- package/dist/query/contract-query.test.integration.js.map +1 -1
- package/dist/query/index.js.map +1 -1
- package/dist/query/multicall-batcher.js.map +1 -1
- package/dist/react-hooks/index.d.ts +3 -1
- package/dist/react-hooks/index.d.ts.map +1 -1
- package/dist/react-hooks/index.js +3 -1
- package/dist/react-hooks/index.js.map +1 -1
- package/dist/react-hooks/safe-origins.d.ts +8 -0
- package/dist/react-hooks/safe-origins.d.ts.map +1 -0
- package/dist/react-hooks/safe-origins.js +124 -0
- package/dist/react-hooks/safe-origins.js.map +1 -0
- package/dist/react-hooks/use-is-host-safe-multisig.d.ts +2 -0
- package/dist/react-hooks/use-is-host-safe-multisig.d.ts.map +1 -0
- package/dist/react-hooks/use-is-host-safe-multisig.js +16 -0
- package/dist/react-hooks/use-is-host-safe-multisig.js.map +1 -0
- package/dist/react-hooks/use-is-wallet-safe-multisig.d.ts +2 -0
- package/dist/react-hooks/use-is-wallet-safe-multisig.d.ts.map +1 -0
- package/dist/react-hooks/use-is-wallet-safe-multisig.js +24 -0
- package/dist/react-hooks/use-is-wallet-safe-multisig.js.map +1 -0
- package/dist/react-hooks/use-safe-context.d.ts.map +1 -1
- package/dist/react-hooks/use-safe-context.js.map +1 -1
- package/dist/react-hooks/wagmi/index.js.map +1 -1
- package/dist/rpc/cache.js.map +1 -1
- package/dist/rpc/circuit-breaker.js.map +1 -1
- package/dist/rpc/dedup.js.map +1 -1
- package/dist/rpc/index.js.map +1 -1
- package/dist/rpc/retry.js.map +1 -1
- package/dist/rpc/routemesh.js.map +1 -1
- package/dist/safe/adapter.js.map +1 -1
- package/dist/safe/detection.js.map +1 -1
- package/dist/safe/detection.test.integration.js.map +1 -1
- package/dist/safe/errors.js.map +1 -1
- package/dist/safe/index.js.map +1 -1
- package/dist/safe/live.js.map +1 -1
- package/dist/safe/service.js.map +1 -1
- package/dist/safe/service.test.integration.js.map +1 -1
- package/dist/safe/simulation/abis.d.ts.map +1 -1
- package/dist/safe/simulation/abis.js.map +1 -1
- package/dist/safe/simulation/addresses.d.ts.map +1 -1
- package/dist/safe/simulation/addresses.js +40 -26
- package/dist/safe/simulation/addresses.js.map +1 -1
- package/dist/safe/simulation/encoding.js.map +1 -1
- package/dist/safe/simulation/errors.js.map +1 -1
- package/dist/safe/simulation/index.js.map +1 -1
- package/dist/safe/simulation/internal/calldata/calldata.d.ts +5 -0
- package/dist/safe/simulation/internal/calldata/calldata.d.ts.map +1 -0
- package/dist/safe/simulation/internal/calldata/calldata.js +17 -0
- package/dist/safe/simulation/internal/calldata/calldata.js.map +1 -0
- package/dist/safe/simulation/internal/calldata/index.d.ts +2 -0
- package/dist/safe/simulation/internal/calldata/index.d.ts.map +1 -0
- package/dist/safe/simulation/internal/calldata/index.js +2 -0
- package/dist/safe/simulation/internal/calldata/index.js.map +1 -0
- package/dist/safe/simulation/internal/contracts/contracts.d.ts +5 -0
- package/dist/safe/simulation/internal/contracts/contracts.d.ts.map +1 -0
- package/dist/safe/simulation/internal/contracts/contracts.js +25 -0
- package/dist/safe/simulation/internal/contracts/contracts.js.map +1 -0
- package/dist/safe/simulation/internal/contracts/index.d.ts +2 -0
- package/dist/safe/simulation/internal/contracts/index.d.ts.map +1 -0
- package/dist/safe/simulation/internal/contracts/index.js +2 -0
- package/dist/safe/simulation/internal/contracts/index.js.map +1 -0
- package/dist/safe/simulation/internal/evaluation/evaluation.d.ts +6 -0
- package/dist/safe/simulation/internal/evaluation/evaluation.d.ts.map +1 -0
- package/dist/safe/simulation/internal/evaluation/evaluation.js +20 -0
- package/dist/safe/simulation/internal/evaluation/evaluation.js.map +1 -0
- package/dist/safe/simulation/internal/evaluation/index.d.ts +2 -0
- package/dist/safe/simulation/internal/evaluation/index.d.ts.map +1 -0
- package/dist/safe/simulation/internal/evaluation/index.js +2 -0
- package/dist/safe/simulation/internal/evaluation/index.js.map +1 -0
- package/dist/safe/simulation/internal/execution/execution.d.ts +9 -0
- package/dist/safe/simulation/internal/execution/execution.d.ts.map +1 -0
- package/dist/safe/simulation/internal/execution/execution.js +65 -0
- package/dist/safe/simulation/internal/execution/execution.js.map +1 -0
- package/dist/safe/simulation/internal/execution/index.d.ts +2 -0
- package/dist/safe/simulation/internal/execution/index.d.ts.map +1 -0
- package/dist/safe/simulation/internal/execution/index.js +2 -0
- package/dist/safe/simulation/internal/execution/index.js.map +1 -0
- package/dist/safe/simulation/internal/limits/index.d.ts +2 -0
- package/dist/safe/simulation/internal/limits/index.d.ts.map +1 -0
- package/dist/safe/simulation/internal/limits/index.js +2 -0
- package/dist/safe/simulation/internal/limits/index.js.map +1 -0
- package/dist/safe/simulation/internal/limits/limits.d.ts +5 -0
- package/dist/safe/simulation/internal/limits/limits.d.ts.map +1 -0
- package/dist/safe/simulation/internal/limits/limits.js +18 -0
- package/dist/safe/simulation/internal/limits/limits.js.map +1 -0
- package/dist/safe/simulation/internal/types/index.d.ts +2 -0
- package/dist/safe/simulation/internal/types/index.d.ts.map +1 -0
- package/dist/safe/simulation/internal/types/index.js +2 -0
- package/dist/safe/simulation/internal/types/index.js.map +1 -0
- package/dist/safe/simulation/internal/types/types.d.ts +11 -0
- package/dist/safe/simulation/internal/types/types.d.ts.map +1 -0
- package/dist/safe/simulation/internal/types/types.js +2 -0
- package/dist/safe/simulation/internal/types/types.js.map +1 -0
- package/dist/safe/simulation/internal/validation/index.d.ts +2 -0
- package/dist/safe/simulation/internal/validation/index.d.ts.map +1 -0
- package/dist/safe/simulation/internal/validation/index.js +2 -0
- package/dist/safe/simulation/internal/validation/index.js.map +1 -0
- package/dist/safe/simulation/internal/validation/validation.d.ts +5 -0
- package/dist/safe/simulation/internal/validation/validation.d.ts.map +1 -0
- package/dist/safe/simulation/internal/validation/validation.js +27 -0
- package/dist/safe/simulation/internal/validation/validation.js.map +1 -0
- package/dist/safe/simulation/service.d.ts +1 -1
- package/dist/safe/simulation/service.d.ts.map +1 -1
- package/dist/safe/simulation/service.js +12 -127
- package/dist/safe/simulation/service.js.map +1 -1
- package/dist/safe/simulation/types.js.map +1 -1
- package/dist/safe/types.js.map +1 -1
- package/dist/signature/errors.js.map +1 -1
- package/dist/signature/index.js.map +1 -1
- package/dist/signature/service.js.map +1 -1
- package/dist/signature/service.test.integration.js.map +1 -1
- package/dist/signature/utils.js.map +1 -1
- package/dist/simulation/errors.js.map +1 -1
- package/dist/simulation/index.js.map +1 -1
- package/dist/simulation/service.js.map +1 -1
- package/dist/simulation/tenderly.js.map +1 -1
- package/dist/simulation/tenderly.test.integration.js.map +1 -1
- package/dist/simulation/types.js.map +1 -1
- package/dist/subscriptions/block-subscription.js.map +1 -1
- package/dist/subscriptions/errors.js.map +1 -1
- package/dist/subscriptions/index.js.map +1 -1
- package/dist/subscriptions/log-subscription.js.map +1 -1
- package/dist/subscriptions/pending-tx.js.map +1 -1
- package/dist/subscriptions/service.js.map +1 -1
- package/dist/telemetry/index.js.map +1 -1
- package/dist/telemetry/logger.js.map +1 -1
- package/dist/telemetry/tracer.js.map +1 -1
- package/dist/testing-kit/_fixtures/addresses.js.map +1 -1
- package/dist/testing-kit/_fixtures/receipts.js.map +1 -1
- package/dist/testing-kit/helpers.js.map +1 -1
- package/dist/testing-kit/index.js.map +1 -1
- package/dist/testing-kit/mock-balance-service.js.map +1 -1
- package/dist/testing-kit/mock-block-service.js.map +1 -1
- package/dist/testing-kit/mock-cross-chain-reader.js.map +1 -1
- package/dist/testing-kit/mock-deploy-service.js.map +1 -1
- package/dist/testing-kit/mock-erc721-service.js.map +1 -1
- package/dist/testing-kit/mock-gas-service.js.map +1 -1
- package/dist/testing-kit/mock-nonce-service.js.map +1 -1
- package/dist/testing-kit/mock-public-client.js.map +1 -1
- package/dist/testing-kit/mock-signature-service.js.map +1 -1
- package/dist/testing-kit/mock-simulation-service.js.map +1 -1
- package/dist/testing-kit/mock-subscription-service.js.map +1 -1
- package/dist/testing-kit/mock-transfer-service.js.map +1 -1
- package/dist/testing-kit/mock-wallet-client.js.map +1 -1
- package/dist/testing-kit/mock-wallet-provider.js.map +1 -1
- package/dist/testing-kit/test-layer.js.map +1 -1
- package/dist/transfer/index.js.map +1 -1
- package/dist/transfer/service.js.map +1 -1
- package/dist/tx/fees.js.map +1 -1
- package/dist/tx/index.js.map +1 -1
- package/dist/tx/manager.js.map +1 -1
- package/dist/tx/manager.test.integration.js.map +1 -1
- package/dist/tx/policy.js.map +1 -1
- package/dist/tx/replacement.js.map +1 -1
- package/dist/tx/tracker.js.map +1 -1
- package/dist/types/abi.js.map +1 -1
- package/dist/types/index.js.map +1 -1
- package/dist/types/params.js.map +1 -1
- package/dist/types/tx-overrides.js.map +1 -1
- package/dist/wagmi/index.js.map +1 -1
- package/dist/wagmi/layers.js.map +1 -1
- package/dist/wallet/errors.js.map +1 -1
- package/dist/wallet/index.js.map +1 -1
- package/dist/wallet/lifecycle.js.map +1 -1
- package/dist/wallet/operations.js.map +1 -1
- package/dist/wallet/provider-ref.js.map +1 -1
- package/dist/wallet/service.js.map +1 -1
- package/dist/wallet/types.js.map +1 -1
- package/package.json +22 -10
- package/dist/react-hooks/use-is-safe-multisig.d.ts +0 -2
- package/dist/react-hooks/use-is-safe-multisig.d.ts.map +0 -1
- package/dist/react-hooks/use-is-safe-multisig.js +0 -44
- package/dist/react-hooks/use-is-safe-multisig.js.map +0 -1
package/dist/abi/erc165.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"erc165.js","sourceRoot":"","sources":["../../src/abi/erc165.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAIzD,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB;QACE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;QACjD,IAAI,EAAE,mBAAmB;QACzB,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QACrC,eAAe,EAAE,MAAM;QACvB,IAAI,EAAE,UAAU;KACjB;CACO,CAAC;AAGX,MAAM,CAAC,MAAM,mBAAmB,GAAG,YAAqB,CAAC;AAKzD,MAAM,CAAC,MAAM,QAAQ,GAAG,CACtB,OAAe,EACf,OAAgB,EACiE,EAAE,CACnF,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,cAAc,CAAC;IACrC,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;QAChC,GAAG,EAAE,SAAS;QACd,OAAO;QACP,IAAI,EAAE,CAAC,mBAAmB,CAAC;QAC3B,OAAO;QACP,YAAY,EAAE,mBAAmB;KAClC,CAAC,CAAC;IACH,OAAO,MAAiB,CAAC;AAC3B,CAAC,CAAC,CAAC;AAKL,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAC/B,OAAe,EACf,OAAgB,EAChB,WAAgB,EACiE,EAAE,CACnF,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,cAAc,CAAC;IACrC,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;QAChC,GAAG,EAAE,SAAS;QACd,OAAO;QACP,IAAI,EAAE,CAAC,WAAW,CAAC;QACnB,OAAO;QACP,YAAY,EAAE,mBAAmB;KAClC,CAAC,CAAC;IACH,OAAO,MAAiB,CAAC;AAC3B,CAAC,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"erc165.js","sourceRoot":"","sources":["../../src/abi/erc165.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAIzD,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB;QACE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;QACjD,IAAI,EAAE,mBAAmB;QACzB,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QACrC,eAAe,EAAE,MAAM;QACvB,IAAI,EAAE,UAAU;KACjB;CACO,CAAC;AAGX,MAAM,CAAC,MAAM,mBAAmB,GAAG,YAAqB,CAAC;AAKzD,MAAM,CAAC,MAAM,QAAQ,GAAG,CACtB,OAAe,EACf,OAAgB,EACiE,EAAE,CACnF,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,cAAc,CAAC;IACrC,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;QAChC,GAAG,EAAE,SAAS;QACd,OAAO;QACP,IAAI,EAAE,CAAC,mBAAmB,CAAC;QAC3B,OAAO;QACP,YAAY,EAAE,mBAAmB;KAClC,CAAC,CAAC;IACH,OAAO,MAAiB,CAAC;AAC3B,CAAC,CAAC,CAAC;AAKL,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAC/B,OAAe,EACf,OAAgB,EAChB,WAAgB,EACiE,EAAE,CACnF,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,cAAc,CAAC;IACrC,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;QAChC,GAAG,EAAE,SAAS;QACd,OAAO;QACP,IAAI,EAAE,CAAC,WAAW,CAAC;QACnB,OAAO;QACP,YAAY,EAAE,mBAAmB;KAClC,CAAC,CAAC;IACH,OAAO,MAAiB,CAAC;AAC3B,CAAC,CAAC,CAAC","sourcesContent":["import { Effect } from \"effect\";\nimport type { Address, Hex } from \"viem\";\nimport { ERC721_INTERFACE_ID } from \"@/src/abi/index.js\";\nimport { ContractReader } from \"@/src/contract/index.js\";\nimport type { ClientNotFoundError, ContractReadError } from \"@/src/core/index.js\";\n\n/** ERC-165 ABI for supportsInterface check */\nexport const erc165Abi = [\n {\n inputs: [{ name: \"interfaceId\", type: \"bytes4\" }],\n name: \"supportsInterface\",\n outputs: [{ name: \"\", type: \"bool\" }],\n stateMutability: \"view\",\n type: \"function\",\n },\n] as const;\n\n/** ERC-165 interface ID for ERC-721 */\nexport const ERC165_INTERFACE_ID = \"0x01ffc9a7\" as const;\n\n/**\n * Check if a contract supports ERC-721 via ERC-165 supportsInterface\n */\nexport const isErc721 = (\n chainId: number,\n address: Address\n): Effect.Effect<boolean, ContractReadError | ClientNotFoundError, ContractReader> =>\n Effect.gen(function* () {\n const reader = yield* ContractReader;\n const result = yield* reader.read({\n abi: erc165Abi,\n address,\n args: [ERC721_INTERFACE_ID],\n chainId,\n functionName: \"supportsInterface\",\n });\n return result as boolean;\n });\n\n/**\n * Check if a contract supports a given interface via ERC-165\n */\nexport const supportsInterface = (\n chainId: number,\n address: Address,\n interfaceId: Hex\n): Effect.Effect<boolean, ContractReadError | ClientNotFoundError, ContractReader> =>\n Effect.gen(function* () {\n const reader = yield* ContractReader;\n const result = yield* reader.read({\n abi: erc165Abi,\n address,\n args: [interfaceId],\n chainId,\n functionName: \"supportsInterface\",\n });\n return result as boolean;\n });\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"erc20-no-output.js","sourceRoot":"","sources":["../../src/abi/erc20-no-output.ts"],"names":[],"mappings":"AAQA,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B;QACE,MAAM,EAAE;YACN,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE;YACpC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE;SACnC;QACD,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,EAAE;QACX,eAAe,EAAE,YAAY;QAC7B,IAAI,EAAE,UAAU;KACjB;CACqB,CAAC"}
|
|
1
|
+
{"version":3,"file":"erc20-no-output.js","sourceRoot":"","sources":["../../src/abi/erc20-no-output.ts"],"names":[],"mappings":"AAQA,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B;QACE,MAAM,EAAE;YACN,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE;YACpC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE;SACnC;QACD,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,EAAE;QACX,eAAe,EAAE,YAAY;QAC7B,IAAI,EAAE,UAAU;KACjB;CACqB,CAAC","sourcesContent":["import type { Abi } from \"viem\";\n\n/**\n * Minimal ERC-20 ABI variant where `approve` has no return value.\n *\n * Some tokens (notably USDT on mainnet) do not return a boolean from `approve`,\n * which makes standard ERC-20 ABIs fail when decoding the response.\n */\nexport const erc20NoOutputAbi = [\n {\n inputs: [\n { name: \"spender\", type: \"address\" },\n { name: \"value\", type: \"uint256\" },\n ],\n name: \"approve\",\n outputs: [],\n stateMutability: \"nonpayable\",\n type: \"function\",\n },\n] as const satisfies Abi;\n"]}
|
package/dist/abi/erc20.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"erc20.js","sourceRoot":"","sources":["../../src/abi/erc20.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,MAAM,CAAC"}
|
|
1
|
+
{"version":3,"file":"erc20.js","sourceRoot":"","sources":["../../src/abi/erc20.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,MAAM,CAAC","sourcesContent":["export { erc20Abi, erc20Abi_bytes32 } from \"viem\";\n"]}
|
package/dist/abi/erc721.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"erc721.js","sourceRoot":"","sources":["../../src/abi/erc721.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AAMjC,MAAM,CAAC,MAAM,mBAAmB,GAAG,YAAqB,CAAC"}
|
|
1
|
+
{"version":3,"file":"erc721.js","sourceRoot":"","sources":["../../src/abi/erc721.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AAMjC,MAAM,CAAC,MAAM,mBAAmB,GAAG,YAAqB,CAAC","sourcesContent":["export { erc721Abi } from \"viem\";\n\n/**\n * ERC-165 interface ID for ERC-721\n * @see https://github.com/binodnp/openzeppelin-solidity/blob/ffc4bcbba398b61d19ede03e4fdf673ddbce1083/contracts/token/ERC721/ERC721.sol#L34-L46\n */\nexport const ERC721_INTERFACE_ID = \"0x80ac58cd\" as const;\n"]}
|
package/dist/abi/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/abi/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,sBAAsB,CAAC;AACrC,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/abi/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,sBAAsB,CAAC;AACrC,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC","sourcesContent":["export * from \"./erc20.js\";\nexport * from \"./erc20-no-output.js\";\nexport * from \"./erc165.js\";\nexport * from \"./erc721.js\";\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/balance/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/balance/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC","sourcesContent":["export * from \"./service.js\";\nexport { decodeBytes32String } from \"./utils.js\";\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/balance/service.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/balance/service.ts"],"names":[],"mappings":"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","sourcesContent":["import { Context, Effect, Layer, Stream } from \"effect\";\nimport type { Address, Hex } from \"viem\";\nimport { erc20Abi, erc20Abi_bytes32 } from \"@/src/abi/index.js\";\nimport type { ContractReaderShape } from \"@/src/contract/index.js\";\nimport { ContractReader } from \"@/src/contract/index.js\";\nimport type { ClientNotFoundError, ContractReadError, MulticallError } from \"@/src/core/index.js\";\nimport { PublicClientService, TransportError } from \"@/src/core/index.js\";\nimport { SpanNames } from \"@/src/telemetry/index.js\";\nimport type { MulticallResult } from \"@/src/types/index.js\";\nimport { decodeBytes32String } from \"./utils.js\";\n\nexport type TokenBalance = {\n address: Address;\n balance: bigint;\n decimals: number;\n symbol?: string;\n name?: string;\n};\n\nexport type BalanceServiceShape = {\n readonly getBalance: (params: {\n chainId: number;\n address: Address;\n blockTag?: \"latest\" | \"pending\";\n }) => Effect.Effect<bigint, ClientNotFoundError | TransportError>;\n\n readonly getTokenBalance: (params: {\n chainId: number;\n address: Address;\n tokenAddress: Address;\n }) => Effect.Effect<bigint, ContractReadError | ClientNotFoundError>;\n\n readonly getTokenBalances: (params: {\n chainId: number;\n address: Address;\n tokenAddresses: Address[];\n }) => Effect.Effect<TokenBalance[], ClientNotFoundError | MulticallError>;\n\n readonly watchBalance: (params: {\n chainId: number;\n address: Address;\n pollingInterval?: number;\n }) => Effect.Effect<Stream.Stream<bigint, unknown>, ClientNotFoundError>;\n\n readonly watchTokenBalance: (params: {\n chainId: number;\n address: Address;\n tokenAddress: Address;\n pollingInterval?: number;\n }) => Effect.Effect<Stream.Stream<bigint, unknown>, ClientNotFoundError>;\n\n readonly hasSufficientBalance: (params: {\n chainId: number;\n address: Address;\n required: bigint;\n }) => Effect.Effect<boolean, ClientNotFoundError | TransportError>;\n\n readonly hasSufficientTokenBalance: (params: {\n chainId: number;\n address: Address;\n tokenAddress: Address;\n required: bigint;\n }) => Effect.Effect<boolean, ContractReadError | ClientNotFoundError>;\n};\n\nexport class BalanceService extends Context.Tag(\"ew3/BalanceService\")<\n BalanceService,\n BalanceServiceShape\n>() {}\n\n/**\n * Build multicall requests for token balances including bytes32 fallbacks\n */\nfunction buildMulticallRequests(\n params: { chainId: number; address: Address; tokenAddresses: Address[] },\n contractReader: ContractReaderShape\n) {\n // Use multicall for efficient batch queries\n const balanceCalls = params.tokenAddresses.map((tokenAddress) => ({\n abi: erc20Abi,\n address: tokenAddress,\n args: [params.address] as const,\n functionName: \"balanceOf\" as const,\n }));\n\n const decimalsCalls = params.tokenAddresses.map((tokenAddress) => ({\n abi: erc20Abi,\n address: tokenAddress,\n args: [] as const,\n functionName: \"decimals\" as const,\n }));\n\n const symbolCalls = params.tokenAddresses.map((tokenAddress) => ({\n abi: erc20Abi,\n address: tokenAddress,\n args: [] as const,\n functionName: \"symbol\" as const,\n }));\n\n const nameCalls = params.tokenAddresses.map((tokenAddress) => ({\n abi: erc20Abi,\n address: tokenAddress,\n args: [] as const,\n functionName: \"name\" as const,\n }));\n\n const symbolBytes32Calls = params.tokenAddresses.map((tokenAddress) => ({\n abi: erc20Abi_bytes32,\n address: tokenAddress,\n args: [] as const,\n functionName: \"symbol\" as const,\n }));\n\n const nameBytes32Calls = params.tokenAddresses.map((tokenAddress) => ({\n abi: erc20Abi_bytes32,\n address: tokenAddress,\n args: [] as const,\n functionName: \"name\" as const,\n }));\n\n // Combine all calls\n const allCalls = [\n ...balanceCalls,\n ...decimalsCalls,\n ...symbolCalls,\n ...nameCalls,\n ...symbolBytes32Calls,\n ...nameBytes32Calls,\n ];\n\n return contractReader.multicall(params.chainId, allCalls);\n}\n\n/**\n * Process multicall results and extract token balance data\n */\nfunction processTokenBalanceResults(\n tokenAddresses: Address[],\n results: readonly MulticallResult[]\n): TokenBalance[] {\n const tokenCount = tokenAddresses.length;\n const tokenBalances: TokenBalance[] = [];\n\n for (let i = 0; i < tokenCount; i++) {\n const balanceResult = results[i];\n const decimalsResult = results[tokenCount + i];\n const symbolResult = results[tokenCount * 2 + i];\n const nameResult = results[tokenCount * 3 + i];\n const symbolBytes32Result = results[tokenCount * 4 + i];\n const nameBytes32Result = results[tokenCount * 5 + i];\n\n // Prefer string results, fall back to bytes32\n const symbol = extractStringOrBytes32(symbolResult, symbolBytes32Result);\n const name = extractStringOrBytes32(nameResult, nameBytes32Result);\n\n tokenBalances.push({\n address: tokenAddresses[i],\n balance: balanceResult.status === \"success\" ? (balanceResult.result as bigint) : 0n,\n decimals: decimalsResult.status === \"success\" ? (decimalsResult.result as number) : 18,\n name,\n symbol,\n });\n }\n\n return tokenBalances;\n}\n\n/**\n * Extract string value, preferring string result over bytes32 fallback\n */\nfunction extractStringOrBytes32(\n stringResult: MulticallResult,\n bytes32Result: MulticallResult\n): string | undefined {\n if (stringResult.status === \"success\") {\n return stringResult.result as string;\n }\n if (bytes32Result.status === \"success\") {\n return decodeBytes32String(bytes32Result.result as Hex);\n }\n return undefined;\n}\n\nexport const BalanceServiceLive = Layer.effect(\n BalanceService,\n Effect.gen(function* () {\n const publicClientService = yield* PublicClientService;\n const contractReader = yield* ContractReader;\n\n return BalanceService.of({\n getBalance: (params) =>\n Effect.gen(function* () {\n const client = yield* publicClientService.get(params.chainId);\n\n return yield* Effect.tryPromise({\n catch: (cause) =>\n new TransportError({\n cause,\n message: `Failed to get balance (chainId=${params.chainId}, address=${params.address})`,\n url: client.transport.url ?? \"unknown\",\n }),\n try: () =>\n client.getBalance({\n address: params.address,\n blockTag: params.blockTag ?? \"latest\",\n }),\n });\n }).pipe(\n Effect.withSpan(SpanNames.BALANCE_GET, {\n attributes: {\n address: params.address,\n blockTag: params.blockTag,\n chainId: params.chainId,\n },\n })\n ),\n\n getTokenBalance: (params) =>\n Effect.gen(function* () {\n return (yield* contractReader.read({\n abi: erc20Abi,\n address: params.tokenAddress,\n args: [params.address],\n chainId: params.chainId,\n functionName: \"balanceOf\",\n })) as bigint;\n }).pipe(\n Effect.withSpan(SpanNames.BALANCE_GET_TOKEN, {\n attributes: {\n address: params.address,\n chainId: params.chainId,\n tokenAddress: params.tokenAddress,\n },\n })\n ),\n\n getTokenBalances: (params) =>\n Effect.gen(function* () {\n const results = yield* buildMulticallRequests(params, contractReader);\n return processTokenBalanceResults(params.tokenAddresses, results);\n }).pipe(\n Effect.withSpan(SpanNames.BALANCE_GET_TOKEN_BATCH, {\n attributes: {\n address: params.address,\n chainId: params.chainId,\n tokenCount: params.tokenAddresses.length,\n },\n })\n ),\n\n hasSufficientBalance: (params) =>\n Effect.gen(function* () {\n const client = yield* publicClientService.get(params.chainId);\n\n const balance = yield* Effect.tryPromise({\n catch: (cause) =>\n new TransportError({\n cause,\n message: `Failed to get balance (chainId=${params.chainId}, address=${params.address})`,\n url: client.transport.url ?? \"unknown\",\n }),\n try: () =>\n client.getBalance({\n address: params.address,\n }),\n });\n\n return balance >= params.required;\n }).pipe(\n Effect.withSpan(SpanNames.BALANCE_CHECK, {\n attributes: {\n address: params.address,\n chainId: params.chainId,\n required: params.required.toString(),\n },\n })\n ),\n\n hasSufficientTokenBalance: (params) =>\n Effect.gen(function* () {\n const balance = (yield* contractReader.read({\n abi: erc20Abi,\n address: params.tokenAddress,\n args: [params.address],\n chainId: params.chainId,\n functionName: \"balanceOf\",\n })) as bigint;\n\n return balance >= params.required;\n }).pipe(\n Effect.withSpan(SpanNames.BALANCE_CHECK_TOKEN, {\n attributes: {\n address: params.address,\n chainId: params.chainId,\n required: params.required.toString(),\n tokenAddress: params.tokenAddress,\n },\n })\n ),\n\n watchBalance: (params) =>\n Effect.gen(function* () {\n const client = yield* publicClientService.get(params.chainId);\n\n return Stream.async<bigint, unknown>((emit) => {\n const unwatch = client.watchBlockNumber({\n onBlockNumber: async (blockNumber) => {\n try {\n const balance = await client.getBalance({\n address: params.address,\n blockNumber,\n });\n emit.single(balance);\n } catch (error) {\n emit.fail(error as unknown);\n }\n },\n onError: (error) => {\n emit.fail(error as unknown);\n },\n pollingInterval: params.pollingInterval,\n });\n\n return Effect.sync(() => {\n unwatch();\n });\n });\n }).pipe(\n Effect.withSpan(SpanNames.BALANCE_WATCH, {\n attributes: {\n address: params.address,\n chainId: params.chainId,\n pollingInterval: params.pollingInterval,\n },\n })\n ),\n\n watchTokenBalance: (params) =>\n Effect.gen(function* () {\n const client = yield* publicClientService.get(params.chainId);\n\n return Stream.async<bigint, unknown>((emit) => {\n const unwatch = client.watchBlockNumber({\n onBlockNumber: async () => {\n try {\n const balanceEffect = contractReader.read({\n abi: erc20Abi,\n address: params.tokenAddress,\n args: [params.address],\n chainId: params.chainId,\n functionName: \"balanceOf\",\n });\n\n const balance = (await Effect.runPromise(balanceEffect)) as bigint;\n emit.single(balance);\n } catch (error) {\n emit.fail(error as unknown);\n }\n },\n onError: (error) => {\n emit.fail(error as unknown);\n },\n pollingInterval: params.pollingInterval,\n });\n\n return Effect.sync(() => {\n unwatch();\n });\n });\n }).pipe(\n Effect.withSpan(SpanNames.BALANCE_WATCH_TOKEN, {\n attributes: {\n address: params.address,\n chainId: params.chainId,\n pollingInterval: params.pollingInterval,\n tokenAddress: params.tokenAddress,\n },\n })\n ),\n });\n })\n);\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service.test.integration.js","sourceRoot":"","sources":["../../src/balance/service.test.integration.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAE7C,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACtC,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7E,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1E,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AAEpE,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACrC,MAAM,WAAW,GAAG,4CAAuD,CAAC;IAC5E,MAAM,YAAY,GAAG,4CAAuD,CAAC;IAE7E,MAAM,SAAS,GAAG,sBAAsB,CAAC;QACvC,YAAY,EAAE;YACZ,UAAU,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,oBAAoB,CAAC;YACvD,SAAS,EAAE,CAAC,MAAe,EAAE,EAAE;gBAC7B,MAAM,SAAS,GACZ,MAA2D,CAAC,SAAS,IAAI,EAAE,CAAC;gBAC/E,OAAO,OAAO,CAAC,OAAO,CACpB,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;oBAClB,QAAQ,CAAC,CAAC,YAAY,EAAE,CAAC;wBACvB,KAAK,WAAW;4BACd,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,SAAkB,EAAE,CAAC;wBAC7D,KAAK,UAAU;4BACb,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,SAAkB,EAAE,CAAC;wBACpD,KAAK,QAAQ;4BACX,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAkB,EAAE,CAAC;wBACxD,KAAK,MAAM;4BACT,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,SAAkB,EAAE,CAAC;wBAC9D;4BACE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,SAAkB,EAAE,CAAC;oBACtD,CAAC;gBACH,CAAC,CAAC,CACH,CAAC;YACJ,CAAC;YACD,YAAY,EAAE,CAAC,MAAe,EAAE,EAAE;gBAChC,MAAM,YAAY,GAAI,MAAoC,CAAC,YAAY,CAAC;gBACxE,IAAI,YAAY,KAAK,WAAW,EAAE,CAAC;oBACjC,OAAO,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;gBACtC,CAAC;gBACD,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAC7B,CAAC;SACF;KACF,CAAC,CAAC;IAEH,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;QAC1B,EAAE,CAAC,MAAM,CAAC,wBAAwB,EAAE,GAAG,EAAE,CACvC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;YAClB,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,cAAc,CAAC;YACtC,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC;gBACvC,OAAO,EAAE,WAAW;gBACpB,OAAO,EAAE,OAAO,CAAC,EAAE;aACpB,CAAC,CAAC;YAEH,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CACnC,CAAC;QAEF,EAAE,CAAC,MAAM,CAAC,6BAA6B,EAAE,GAAG,EAAE,CAC5C,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;YAClB,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,cAAc,CAAC;YACtC,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC;gBACvC,OAAO,EAAE,WAAW;gBACpB,QAAQ,EAAE,QAAQ;gBAClB,OAAO,EAAE,OAAO,CAAC,EAAE;aACpB,CAAC,CAAC;YAEH,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CACnC,CAAC;QAEF,EAAE,CAAC,MAAM,CAAC,yDAAyD,EAAE,GAAG,EAAE;YACxE,MAAM,YAAY,GAAG,sBAAsB,CAAC;gBAC1C,YAAY,EAAE;oBACZ,UAAU,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC;iBACpD;aACF,CAAC,CAAC;YAEH,OAAO,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;gBACzB,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,cAAc,CAAC;gBACtC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAC7B,OAAO,CAAC,UAAU,CAAC;oBACjB,OAAO,EAAE,WAAW;oBACpB,OAAO,EAAE,OAAO,CAAC,EAAE;iBACpB,CAAC,CACH,CAAC;gBAEF,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACxC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;oBACzB,MAAM,KAAK,GAAG,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBAC9C,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBAChC,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;wBAC1B,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;oBACrD,CAAC;gBACH,CAAC;YACH,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,MAAM,CAAC,wDAAwD,EAAE,GAAG,EAAE,CACvE,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;YAClB,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,cAAc,CAAC;YACtC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAC7B,OAAO,CAAC,UAAU,CAAC;gBACjB,OAAO,EAAE,WAAW;gBACpB,OAAO,EAAE,WAAW;aACrB,CAAC,CACH,CAAC;YAEF,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACxC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;gBACzB,MAAM,KAAK,GAAG,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAC9C,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;oBAC1B,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC,mBAAmB,CAAC,CAAC;gBAC1D,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CACnC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;QAC/B,EAAE,CAAC,MAAM,CAAC,uBAAuB,EAAE,GAAG,EAAE,CACtC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;YAClB,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,cAAc,CAAC;YACtC,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC;gBAC5C,OAAO,EAAE,WAAW;gBACpB,OAAO,EAAE,OAAO,CAAC,EAAE;gBACnB,YAAY;aACb,CAAC,CAAC;YAEH,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACnC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CACnC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;QAChC,EAAE,CAAC,MAAM,CAAC,+CAA+C,EAAE,GAAG,EAAE,CAC9D,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;YAClB,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,cAAc,CAAC;YACtC,MAAM,cAAc,GAAG;gBACrB,4CAAuD;gBACvD,4CAAuD;aACxD,CAAC;YAEF,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC;gBAC7C,OAAO,EAAE,WAAW;gBACpB,OAAO,EAAE,OAAO,CAAC,EAAE;gBACnB,cAAc;aACf,CAAC,CAAC;YAEH,MAAM,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAC/B,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAC7C,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACrC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACvC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CACnC,CAAC;QAEF,EAAE,CAAC,MAAM,CAAC,8CAA8C,EAAE,GAAG,EAAE;YAM7D,MAAM,YAAY,GAAG,sBAAsB,CAAC;gBAC1C,YAAY,EAAE;oBACZ,SAAS,EAAE,CAAC,MAAe,EAAE,EAAE;wBAC7B,MAAM,SAAS,GAAI,MAA0B,CAAC,SAAS,IAAI,EAAE,CAAC;wBAC9D,OAAO,OAAO,CAAC,OAAO,CACpB,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;4BAElB,MAAM,YAAY,GAChB,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;gCACpB,CAAC,CAAC,GAAG,CAAC,IAAI,CACR,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC,YAAY,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,SAAS,CAChF,CAAC;4BAEJ,QAAQ,CAAC,CAAC,YAAY,EAAE,CAAC;gCACvB,KAAK,WAAW;oCACd,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,SAAkB,EAAE,CAAC;gCAC7D,KAAK,UAAU;oCACb,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,SAAkB,EAAE,CAAC;gCACpD,KAAK,QAAQ;oCACX,IAAI,YAAY,EAAE,CAAC;wCAEjB,OAAO;4CACL,MAAM,EACJ,oEAA2E;4CAC7E,MAAM,EAAE,SAAkB;yCAC3B,CAAC;oCACJ,CAAC;oCAED,OAAO;wCACL,KAAK,EAAE,IAAI,KAAK,CAAC,eAAe,CAAC;wCACjC,MAAM,EAAE,SAAkB;qCAC3B,CAAC;gCACJ,KAAK,MAAM;oCACT,IAAI,YAAY,EAAE,CAAC;wCAEjB,OAAO;4CACL,MAAM,EACJ,oEAA2E;4CAC7E,MAAM,EAAE,SAAkB;yCAC3B,CAAC;oCACJ,CAAC;oCAED,OAAO;wCACL,KAAK,EAAE,IAAI,KAAK,CAAC,eAAe,CAAC;wCACjC,MAAM,EAAE,SAAkB;qCAC3B,CAAC;gCACJ;oCACE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,SAAkB,EAAE,CAAC;4BACtD,CAAC;wBACH,CAAC,CAAC,CACH,CAAC;oBACJ,CAAC;iBACF;aACF,CAAC,CAAC;YAEH,OAAO,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;gBACzB,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,cAAc,CAAC;gBACtC,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC;oBAC7C,OAAO,EAAE,WAAW;oBACpB,OAAO,EAAE,OAAO,CAAC,EAAE;oBACnB,cAAc,EAAE,CAAC,YAAY,CAAC;iBAC/B,CAAC,CAAC;gBAEH,MAAM,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;gBAC/B,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACvC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAC7C,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,MAAM,CAAC,uDAAuD,EAAE,GAAG,EAAE;YAMtE,MAAM,WAAW,GAAG,sBAAsB,CAAC;gBACzC,YAAY,EAAE;oBACZ,SAAS,EAAE,CAAC,MAAe,EAAE,EAAE;wBAC7B,MAAM,SAAS,GAAI,MAA0B,CAAC,SAAS,IAAI,EAAE,CAAC;wBAC9D,OAAO,OAAO,CAAC,OAAO,CACpB,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;4BAClB,MAAM,YAAY,GAChB,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;gCACpB,CAAC,CAAC,GAAG,CAAC,IAAI,CACR,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC,YAAY,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,SAAS,CAChF,CAAC;4BAEJ,QAAQ,CAAC,CAAC,YAAY,EAAE,CAAC;gCACvB,KAAK,WAAW;oCACd,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,SAAkB,EAAE,CAAC;gCAC7D,KAAK,UAAU;oCACb,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,SAAkB,EAAE,CAAC;gCACpD,KAAK,QAAQ;oCACX,IAAI,YAAY,EAAE,CAAC;wCACjB,OAAO;4CACL,MAAM,EACJ,oEAA2E;4CAC7E,MAAM,EAAE,SAAkB;yCAC3B,CAAC;oCACJ,CAAC;oCACD,OAAO;wCACL,MAAM,EAAE,aAAa;wCACrB,MAAM,EAAE,SAAkB;qCAC3B,CAAC;gCACJ,KAAK,MAAM;oCACT,IAAI,YAAY,EAAE,CAAC;wCACjB,OAAO;4CACL,MAAM,EACJ,sEAA6E;4CAC/E,MAAM,EAAE,SAAkB;yCAC3B,CAAC;oCACJ,CAAC;oCACD,OAAO;wCACL,MAAM,EAAE,mBAAmB;wCAC3B,MAAM,EAAE,SAAkB;qCAC3B,CAAC;gCACJ;oCACE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,SAAkB,EAAE,CAAC;4BACtD,CAAC;wBACH,CAAC,CAAC,CACH,CAAC;oBACJ,CAAC;iBACF;aACF,CAAC,CAAC;YAEH,OAAO,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;gBACzB,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,cAAc,CAAC;gBACtC,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC;oBAC7C,OAAO,EAAE,WAAW;oBACpB,OAAO,EAAE,OAAO,CAAC,EAAE;oBACnB,cAAc,EAAE,CAAC,YAAY,CAAC;iBAC/B,CAAC,CAAC;gBAEH,MAAM,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;gBAE/B,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;gBAC9C,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;YACpD,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;QACpC,EAAE,CAAC,MAAM,CAAC,4CAA4C,EAAE,GAAG,EAAE,CAC3D,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;YAClB,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,cAAc,CAAC;YACtC,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC;gBAC7C,OAAO,EAAE,WAAW;gBACpB,OAAO,EAAE,OAAO,CAAC,EAAE;gBACnB,QAAQ,EAAE,mBAAmB;aAC9B,CAAC,CAAC;YACH,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC;gBAChD,OAAO,EAAE,WAAW;gBACpB,OAAO,EAAE,OAAO,CAAC,EAAE;gBACnB,QAAQ,EAAE,oBAAoB;aAC/B,CAAC,CAAC;YAEH,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACtB,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC5B,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CACnC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,2BAA2B,EAAE,GAAG,EAAE;QACzC,EAAE,CAAC,MAAM,CAAC,2CAA2C,EAAE,GAAG,EAAE,CAC1D,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;YAClB,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,cAAc,CAAC;YACtC,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,yBAAyB,CAAC;gBAClD,OAAO,EAAE,WAAW;gBACpB,OAAO,EAAE,OAAO,CAAC,EAAE;gBACnB,QAAQ,EAAE,UAAU;gBACpB,YAAY;aACb,CAAC,CAAC;YACH,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,yBAAyB,CAAC;gBACrD,OAAO,EAAE,WAAW;gBACpB,OAAO,EAAE,OAAO,CAAC,EAAE;gBACnB,QAAQ,EAAE,WAAW;gBACrB,YAAY;aACb,CAAC,CAAC;YAEH,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACtB,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC5B,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CACnC,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;IACnC,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;QAE1C,MAAM,IAAI,GAAG,oEAA2E,CAAC;QACzF,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAG/C,MAAM,SAAS,GAAG,oEAA2E,CAAC;QAC9F,MAAM,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;QACtD,MAAM,CAAC,mBAAmB,CAAC,IAAW,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;QACzD,MAAM,CACJ,mBAAmB,CACjB,oEAA2E,CAC5E,CACF,CAAC,aAAa,EAAE,CAAC;IACpB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;QAErC,MAAM,GAAG,GAAG,oEAA2E,CAAC;QACxF,MAAM,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mBAAmB,EAAE,GAAG,EAAE;QAE3B,MAAM,aAAa,GACjB,oEAA2E,CAAC;QAC9E,MAAM,CAAC,mBAAmB,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"service.test.integration.js","sourceRoot":"","sources":["../../src/balance/service.test.integration.ts"],"names":[],"mappings":"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","sourcesContent":["import { describe, expect, it } from \"@effect/vitest\";\nimport { Cause, Effect, Exit } from \"effect\";\nimport type { Address, Hex } from \"viem\";\nimport { mainnet } from \"viem/chains\";\nimport { BalanceService, decodeBytes32String } from \"@/src/balance/index.js\";\nimport { ClientNotFoundError, TransportError } from \"@/src/core/index.js\";\nimport { makeEffectEvmTestLayer } from \"@/src/testing-kit/index.js\";\n\ndescribe(\"BalanceService (Live)\", () => {\n const testAddress = \"0x1234567890123456789012345678901234567890\" as Address;\n const tokenAddress = \"0xabcdefabcdefabcdefabcdefabcdefabcdefabcd\" as Address;\n\n const testLayer = makeEffectEvmTestLayer({\n publicClient: {\n getBalance: () => Promise.resolve(1000000000000000000n),\n multicall: (params: unknown) => {\n const contracts =\n (params as { contracts?: Array<{ functionName?: string }> }).contracts ?? [];\n return Promise.resolve(\n contracts.map((c) => {\n switch (c.functionName) {\n case \"balanceOf\":\n return { result: 1000000000n, status: \"success\" as const };\n case \"decimals\":\n return { result: 18, status: \"success\" as const };\n case \"symbol\":\n return { result: \"MOCK\", status: \"success\" as const };\n case \"name\":\n return { result: \"Mock Token\", status: \"success\" as const };\n default:\n return { result: 0n, status: \"success\" as const };\n }\n })\n );\n },\n readContract: (params: unknown) => {\n const functionName = (params as { functionName?: string }).functionName;\n if (functionName === \"balanceOf\") {\n return Promise.resolve(1000000000n);\n }\n return Promise.resolve(0n);\n },\n },\n });\n\n describe(\"getBalance\", () => {\n it.effect(\"returns native balance\", () =>\n Effect.gen(function* () {\n const service = yield* BalanceService;\n const result = yield* service.getBalance({\n address: testAddress,\n chainId: mainnet.id,\n });\n\n expect(result).toBe(1000000000000000000n);\n }).pipe(Effect.provide(testLayer))\n );\n\n it.effect(\"supports blockTag parameter\", () =>\n Effect.gen(function* () {\n const service = yield* BalanceService;\n const result = yield* service.getBalance({\n address: testAddress,\n blockTag: \"latest\",\n chainId: mainnet.id,\n });\n\n expect(result).toBe(1000000000000000000n);\n }).pipe(Effect.provide(testLayer))\n );\n\n it.effect(\"fails with TransportError (not defect) when RPC rejects\", () => {\n const failingLayer = makeEffectEvmTestLayer({\n publicClient: {\n getBalance: () => Promise.reject(new Error(\"boom\")),\n },\n });\n\n return Effect.gen(function* () {\n const service = yield* BalanceService;\n const exit = yield* Effect.exit(\n service.getBalance({\n address: testAddress,\n chainId: mainnet.id,\n })\n );\n\n expect(Exit.isFailure(exit)).toBe(true);\n if (Exit.isFailure(exit)) {\n const error = Cause.failureOption(exit.cause);\n expect(error._tag).toBe(\"Some\");\n if (error._tag === \"Some\") {\n expect(error.value).toBeInstanceOf(TransportError);\n }\n }\n }).pipe(Effect.provide(failingLayer));\n });\n\n it.effect(\"fails with ClientNotFoundError for unsupported chainId\", () =>\n Effect.gen(function* () {\n const service = yield* BalanceService;\n const exit = yield* Effect.exit(\n service.getBalance({\n address: testAddress,\n chainId: 123_456_789,\n })\n );\n\n expect(Exit.isFailure(exit)).toBe(true);\n if (Exit.isFailure(exit)) {\n const error = Cause.failureOption(exit.cause);\n if (error._tag === \"Some\") {\n expect(error.value).toBeInstanceOf(ClientNotFoundError);\n }\n }\n }).pipe(Effect.provide(testLayer))\n );\n });\n\n describe(\"getTokenBalance\", () => {\n it.effect(\"returns token balance\", () =>\n Effect.gen(function* () {\n const service = yield* BalanceService;\n const result = yield* service.getTokenBalance({\n address: testAddress,\n chainId: mainnet.id,\n tokenAddress,\n });\n\n expect(result).toBe(1000000000n);\n }).pipe(Effect.provide(testLayer))\n );\n });\n\n describe(\"getTokenBalances\", () => {\n it.effect(\"returns multiple token balances with metadata\", () =>\n Effect.gen(function* () {\n const service = yield* BalanceService;\n const tokenAddresses = [\n \"0xabcdefabcdefabcdefabcdefabcdefabcdefabcd\" as Address,\n \"0x1111111111111111111111111111111111111111\" as Address,\n ];\n\n const result = yield* service.getTokenBalances({\n address: testAddress,\n chainId: mainnet.id,\n tokenAddresses,\n });\n\n expect(result).toHaveLength(2);\n expect(result[0]?.balance).toBe(1000000000n);\n expect(result[0]?.decimals).toBe(18);\n expect(result[0]?.symbol).toBe(\"MOCK\");\n expect(result[0]?.name).toBe(\"Mock Token\");\n }).pipe(Effect.provide(testLayer))\n );\n\n it.effect(\"falls back to bytes32 when string calls fail\", () => {\n type AbiItem = { name?: string; outputs?: Array<{ type?: string }> };\n type ContractCall = { functionName?: string; abi?: AbiItem[] };\n type MulticallParams = { contracts?: ContractCall[] };\n\n // Simulate token that uses bytes32 for symbol/name\n const bytes32Layer = makeEffectEvmTestLayer({\n publicClient: {\n multicall: (params: unknown) => {\n const contracts = (params as MulticallParams).contracts ?? [];\n return Promise.resolve(\n contracts.map((c) => {\n // Detect bytes32 ABI by checking if it returns bytes32\n const isBytes32Abi =\n Array.isArray(c.abi) &&\n c.abi.some(\n (item) => item.name === c.functionName && item.outputs?.[0]?.type === \"bytes32\"\n );\n\n switch (c.functionName) {\n case \"balanceOf\":\n return { result: 1000000000n, status: \"success\" as const };\n case \"decimals\":\n return { result: 18, status: \"success\" as const };\n case \"symbol\":\n if (isBytes32Abi) {\n // Return USDT in bytes32 format\n return {\n result:\n \"0x5553445400000000000000000000000000000000000000000000000000000000\" as Hex,\n status: \"success\" as const,\n };\n }\n // String version fails\n return {\n error: new Error(\"not supported\"),\n status: \"failure\" as const,\n };\n case \"name\":\n if (isBytes32Abi) {\n // Return \"Tether USD\" in bytes32 format\n return {\n result:\n \"0x5465746865722055534400000000000000000000000000000000000000000000\" as Hex,\n status: \"success\" as const,\n };\n }\n // String version fails\n return {\n error: new Error(\"not supported\"),\n status: \"failure\" as const,\n };\n default:\n return { result: 0n, status: \"success\" as const };\n }\n })\n );\n },\n },\n });\n\n return Effect.gen(function* () {\n const service = yield* BalanceService;\n const result = yield* service.getTokenBalances({\n address: testAddress,\n chainId: mainnet.id,\n tokenAddresses: [tokenAddress],\n });\n\n expect(result).toHaveLength(1);\n expect(result[0]?.symbol).toBe(\"USDT\");\n expect(result[0]?.name).toBe(\"Tether USD\");\n }).pipe(Effect.provide(bytes32Layer));\n });\n\n it.effect(\"prefers string results over bytes32 when both succeed\", () => {\n type AbiItem = { name?: string; outputs?: Array<{ type?: string }> };\n type ContractCall = { functionName?: string; abi?: AbiItem[] };\n type MulticallParams = { contracts?: ContractCall[] };\n\n // Simulate token that supports both string and bytes32\n const hybridLayer = makeEffectEvmTestLayer({\n publicClient: {\n multicall: (params: unknown) => {\n const contracts = (params as MulticallParams).contracts ?? [];\n return Promise.resolve(\n contracts.map((c) => {\n const isBytes32Abi =\n Array.isArray(c.abi) &&\n c.abi.some(\n (item) => item.name === c.functionName && item.outputs?.[0]?.type === \"bytes32\"\n );\n\n switch (c.functionName) {\n case \"balanceOf\":\n return { result: 1000000000n, status: \"success\" as const };\n case \"decimals\":\n return { result: 18, status: \"success\" as const };\n case \"symbol\":\n if (isBytes32Abi) {\n return {\n result:\n \"0x4d4f434b00000000000000000000000000000000000000000000000000000000\" as Hex,\n status: \"success\" as const,\n };\n }\n return {\n result: \"MOCK_STRING\",\n status: \"success\" as const,\n };\n case \"name\":\n if (isBytes32Abi) {\n return {\n result:\n \"0x4d6f636b20546f6b656e0000000000000000000000000000000000000000000000\" as Hex,\n status: \"success\" as const,\n };\n }\n return {\n result: \"Mock Token String\",\n status: \"success\" as const,\n };\n default:\n return { result: 0n, status: \"success\" as const };\n }\n })\n );\n },\n },\n });\n\n return Effect.gen(function* () {\n const service = yield* BalanceService;\n const result = yield* service.getTokenBalances({\n address: testAddress,\n chainId: mainnet.id,\n tokenAddresses: [tokenAddress],\n });\n\n expect(result).toHaveLength(1);\n // Should prefer string results\n expect(result[0]?.symbol).toBe(\"MOCK_STRING\");\n expect(result[0]?.name).toBe(\"Mock Token String\");\n }).pipe(Effect.provide(hybridLayer));\n });\n });\n\n describe(\"hasSufficientBalance\", () => {\n it.effect(\"returns true/false based on native balance\", () =>\n Effect.gen(function* () {\n const service = yield* BalanceService;\n const ok = yield* service.hasSufficientBalance({\n address: testAddress,\n chainId: mainnet.id,\n required: 500000000000000000n,\n });\n const notOk = yield* service.hasSufficientBalance({\n address: testAddress,\n chainId: mainnet.id,\n required: 2000000000000000000n,\n });\n\n expect(ok).toBe(true);\n expect(notOk).toBe(false);\n }).pipe(Effect.provide(testLayer))\n );\n });\n\n describe(\"hasSufficientTokenBalance\", () => {\n it.effect(\"returns true/false based on token balance\", () =>\n Effect.gen(function* () {\n const service = yield* BalanceService;\n const ok = yield* service.hasSufficientTokenBalance({\n address: testAddress,\n chainId: mainnet.id,\n required: 500000000n,\n tokenAddress,\n });\n const notOk = yield* service.hasSufficientTokenBalance({\n address: testAddress,\n chainId: mainnet.id,\n required: 2000000000n,\n tokenAddress,\n });\n\n expect(ok).toBe(true);\n expect(notOk).toBe(false);\n }).pipe(Effect.provide(testLayer))\n );\n });\n});\n\ndescribe(\"decodeBytes32String\", () => {\n it(\"decodes bytes32 string correctly\", () => {\n // \"USDT\" encoded as bytes32\n const usdt = \"0x5553445400000000000000000000000000000000000000000000000000000000\" as Hex;\n expect(decodeBytes32String(usdt)).toBe(\"USDT\");\n\n // \"Tether USD\" encoded as bytes32\n const tetherUsd = \"0x5465746865722055534400000000000000000000000000000000000000000000\" as Hex;\n expect(decodeBytes32String(tetherUsd)).toBe(\"Tether USD\");\n });\n\n it(\"returns undefined for empty or invalid input\", () => {\n expect(decodeBytes32String(\"0x\" as Hex)).toBeUndefined();\n expect(\n decodeBytes32String(\n \"0x0000000000000000000000000000000000000000000000000000000000000000\" as Hex\n )\n ).toBeUndefined();\n });\n\n it(\"handles trailing null bytes\", () => {\n // \"DAI\" with trailing nulls\n const dai = \"0x4441490000000000000000000000000000000000000000000000000000000000\" as Hex;\n expect(decodeBytes32String(dai)).toBe(\"DAI\");\n });\n\n it(\"strips whitespace\", () => {\n // \"TEST \" with space and nulls\n const testWithSpace =\n \"0x5445535420000000000000000000000000000000000000000000000000000000\" as Hex;\n expect(decodeBytes32String(testWithSpace)).toBe(\"TEST\");\n });\n});\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/balance/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAOvD,MAAM,UAAU,mBAAmB,CAAC,GAAQ;IAC1C,IAAI,CAAC,GAAG,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3C,OAAO,SAAS,CAAC;IACnB,CAAC;IAGD,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAG3B,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QACzC,MAAM,UAAU,GAAG,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACvD,IAAI,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;YAE9B,SAAS;QACX,CAAC;QACD,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC;QAC9B,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;YACf,MAAM;QACR,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;IACxC,CAAC;IAED,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACrC,OAAO,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;AAChD,CAAC"}
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/balance/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAOvD,MAAM,UAAU,mBAAmB,CAAC,GAAQ;IAC1C,IAAI,CAAC,GAAG,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3C,OAAO,SAAS,CAAC;IACnB,CAAC;IAGD,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAG3B,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QACzC,MAAM,UAAU,GAAG,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACvD,IAAI,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;YAE9B,SAAS;QACX,CAAC;QACD,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC;QAC9B,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;YACf,MAAM;QACR,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;IACxC,CAAC;IAED,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACrC,OAAO,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;AAChD,CAAC","sourcesContent":["import { Option } from \"effect\";\nimport type { Hex } from \"viem\";\nimport { parseHexByte } from \"@/src/internal/index.js\";\n\n/**\n * Decode a bytes32 string (used by some ERC-20 tokens for name/symbol).\n * Strips trailing null bytes and decodes as UTF-8.\n * Returns undefined if the result is empty or invalid.\n */\nexport function decodeBytes32String(hex: Hex): string | undefined {\n if (!hex || hex === \"0x\" || hex.length < 4) {\n return undefined;\n }\n\n // Remove 0x prefix\n const bytes = hex.slice(2);\n\n // Convert hex to bytes, stopping at first null byte\n const chars: string[] = [];\n for (let i = 0; i < bytes.length; i += 2) {\n const byteOption = parseHexByte(bytes.slice(i, i + 2));\n if (Option.isNone(byteOption)) {\n // Invalid hex byte, skip\n continue;\n }\n const byte = byteOption.value;\n if (byte === 0) {\n break;\n }\n chars.push(String.fromCharCode(byte));\n }\n\n const result = chars.join(\"\").trim();\n return result.length > 0 ? result : undefined;\n}\n"]}
|
package/dist/block/errors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/block/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,MAAM,OAAO,kBAAmB,SAAQ,MAAM,CAAC,WAAW,EAAsB,CAC9E,oBAAoB,EACpB;IACE,eAAe,EAAE,MAAM,CAAC,MAAM;IAC9B,OAAO,EAAE,MAAM,CAAC,MAAM;IACtB,OAAO,EAAE,MAAM,CAAC,MAAM;CACvB,CACF;CAAG;AAEJ,MAAM,OAAO,iBAAkB,SAAQ,MAAM,CAAC,WAAW,EAAqB,CAC5E,mBAAmB,EACnB;IACE,WAAW,EAAE,MAAM,CAAC,cAAc;IAClC,OAAO,EAAE,MAAM,CAAC,MAAM;IACtB,OAAO,EAAE,MAAM,CAAC,MAAM;IACtB,OAAO,EAAE,MAAM,CAAC,MAAM;CACvB,CACF;CAAG"}
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/block/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,MAAM,OAAO,kBAAmB,SAAQ,MAAM,CAAC,WAAW,EAAsB,CAC9E,oBAAoB,EACpB;IACE,eAAe,EAAE,MAAM,CAAC,MAAM;IAC9B,OAAO,EAAE,MAAM,CAAC,MAAM;IACtB,OAAO,EAAE,MAAM,CAAC,MAAM;CACvB,CACF;CAAG;AAEJ,MAAM,OAAO,iBAAkB,SAAQ,MAAM,CAAC,WAAW,EAAqB,CAC5E,mBAAmB,EACnB;IACE,WAAW,EAAE,MAAM,CAAC,cAAc;IAClC,OAAO,EAAE,MAAM,CAAC,MAAM;IACtB,OAAO,EAAE,MAAM,CAAC,MAAM;IACtB,OAAO,EAAE,MAAM,CAAC,MAAM;CACvB,CACF;CAAG","sourcesContent":["import { Schema } from \"effect\";\n\nexport class BlockNotFoundError extends Schema.TaggedError<BlockNotFoundError>()(\n \"BlockNotFoundError\",\n {\n blockIdentifier: Schema.String,\n chainId: Schema.Number,\n message: Schema.String,\n }\n) {}\n\nexport class BlockTimeoutError extends Schema.TaggedError<BlockTimeoutError>()(\n \"BlockTimeoutError\",\n {\n blockNumber: Schema.BigIntFromSelf,\n chainId: Schema.Number,\n message: Schema.String,\n timeout: Schema.Number,\n }\n) {}\n"]}
|
package/dist/block/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/block/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/block/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC","sourcesContent":["export * from \"./errors.js\";\nexport * from \"./service.js\";\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/block/service.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/block/service.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Stream } from \"effect\";\nimport { Context, Effect, Layer } from \"effect\";\nimport type { Block, Hash } from \"viem\";\nimport { DEFAULT_BLOCK_WAIT_TIMEOUT } from \"@/src/constants/index.js\";\nimport type { ClientNotFoundError } from \"@/src/core/index.js\";\nimport { PublicClientService, TransportError } from \"@/src/core/index.js\";\nimport { fromWatchCallback } from \"@/src/internal/index.js\";\nimport { SpanNames } from \"@/src/telemetry/index.js\";\nimport { BlockNotFoundError, BlockTimeoutError } from \"./errors.js\";\n\nexport type BlockServiceShape = {\n readonly getBlock: (params: {\n chainId: number;\n blockNumber?: bigint;\n blockTag?: \"latest\" | \"pending\" | \"earliest\" | \"safe\" | \"finalized\";\n includeTransactions?: boolean;\n }) => Effect.Effect<Block, BlockNotFoundError | ClientNotFoundError>;\n\n readonly getBlockByHash: (params: {\n chainId: number;\n hash: Hash;\n includeTransactions?: boolean;\n }) => Effect.Effect<Block, BlockNotFoundError | ClientNotFoundError>;\n\n readonly getBlockNumber: (params: {\n chainId: number;\n }) => Effect.Effect<bigint, ClientNotFoundError | TransportError>;\n\n readonly watchBlocks: (params: {\n chainId: number;\n pollingInterval?: number;\n includeTransactions?: boolean;\n }) => Effect.Effect<Stream.Stream<Block, unknown>, ClientNotFoundError>;\n\n readonly waitForBlock: (params: {\n chainId: number;\n blockNumber: bigint;\n timeout?: number;\n }) => Effect.Effect<\n Block,\n BlockNotFoundError | BlockTimeoutError | ClientNotFoundError | TransportError\n >;\n\n readonly getBlocks: (params: {\n chainId: number;\n fromBlock: bigint;\n toBlock: bigint;\n includeTransactions?: boolean;\n }) => Effect.Effect<Block[], ClientNotFoundError | BlockNotFoundError>;\n\n readonly getBlockTimestamp: (params: {\n chainId: number;\n blockNumber?: bigint;\n }) => Effect.Effect<bigint, ClientNotFoundError | BlockNotFoundError>;\n};\n\nexport class BlockService extends Context.Tag(\"ew3/BlockService\")<\n BlockService,\n BlockServiceShape\n>() {}\n\nexport const BlockServiceLive = Layer.effect(\n BlockService,\n Effect.gen(function* () {\n const publicClientService = yield* PublicClientService;\n\n return BlockService.of({\n getBlock: (params) =>\n Effect.gen(function* () {\n const client = yield* publicClientService.get(params.chainId);\n\n const block = yield* Effect.tryPromise({\n catch: (cause) =>\n new BlockNotFoundError({\n blockIdentifier: params.blockNumber?.toString() ?? params.blockTag ?? \"latest\",\n chainId: params.chainId,\n message: `Block not found: ${cause}`,\n }),\n try: () => {\n if (params.blockNumber !== undefined) {\n return client.getBlock({\n blockNumber: params.blockNumber,\n includeTransactions: params.includeTransactions ?? false,\n });\n }\n return client.getBlock({\n blockTag: params.blockTag ?? \"latest\",\n includeTransactions: params.includeTransactions ?? false,\n });\n },\n });\n\n return block;\n }).pipe(\n Effect.withSpan(SpanNames.BLOCK_GET, {\n attributes: {\n blockNumber: params.blockNumber?.toString(),\n blockTag: params.blockTag,\n chainId: params.chainId,\n includeTransactions: params.includeTransactions,\n },\n })\n ),\n\n getBlockByHash: (params) =>\n Effect.gen(function* () {\n const client = yield* publicClientService.get(params.chainId);\n\n const block = yield* Effect.tryPromise({\n catch: (cause) =>\n new BlockNotFoundError({\n blockIdentifier: params.hash,\n chainId: params.chainId,\n message: `Block not found by hash: ${cause}`,\n }),\n try: () =>\n client.getBlock({\n blockHash: params.hash,\n includeTransactions: params.includeTransactions ?? false,\n }),\n });\n\n return block;\n }).pipe(\n Effect.withSpan(SpanNames.BLOCK_GET_BY_HASH, {\n attributes: {\n chainId: params.chainId,\n hash: params.hash,\n includeTransactions: params.includeTransactions,\n },\n })\n ),\n\n getBlockNumber: (params) =>\n Effect.gen(function* () {\n const client = yield* publicClientService.get(params.chainId);\n\n return yield* Effect.tryPromise({\n catch: (cause) =>\n new TransportError({\n cause,\n message: `Failed to get current block number (chainId=${params.chainId})`,\n url: client.transport.url ?? \"unknown\",\n }),\n try: () => client.getBlockNumber(),\n });\n }).pipe(\n Effect.withSpan(SpanNames.BLOCK_GET_NUMBER, {\n attributes: {\n chainId: params.chainId,\n },\n })\n ),\n\n getBlocks: (params) =>\n Effect.gen(function* () {\n const client = yield* publicClientService.get(params.chainId);\n const blocks: Block[] = [];\n\n for (let i = params.fromBlock; i <= params.toBlock; i++) {\n const block = yield* Effect.tryPromise({\n catch: (cause) =>\n new BlockNotFoundError({\n blockIdentifier: i.toString(),\n chainId: params.chainId,\n message: `Block ${i} not found: ${cause}`,\n }),\n try: () =>\n client.getBlock({\n blockNumber: i,\n includeTransactions: params.includeTransactions ?? false,\n }),\n });\n\n blocks.push(block);\n }\n\n return blocks;\n }).pipe(\n Effect.withSpan(SpanNames.BLOCK_GET_RANGE, {\n attributes: {\n chainId: params.chainId,\n fromBlock: params.fromBlock.toString(),\n includeTransactions: params.includeTransactions,\n toBlock: params.toBlock.toString(),\n },\n })\n ),\n\n getBlockTimestamp: (params) =>\n Effect.gen(function* () {\n const client = yield* publicClientService.get(params.chainId);\n\n const block = yield* Effect.tryPromise({\n catch: (cause) =>\n new BlockNotFoundError({\n blockIdentifier: params.blockNumber?.toString() ?? \"latest\",\n chainId: params.chainId,\n message: `Block not found: ${cause}`,\n }),\n try: () => {\n if (params.blockNumber !== undefined) {\n return client.getBlock({\n blockNumber: params.blockNumber,\n });\n }\n return client.getBlock({\n blockTag: \"latest\",\n });\n },\n });\n\n return block.timestamp;\n }).pipe(\n Effect.withSpan(SpanNames.BLOCK_GET_TIMESTAMP, {\n attributes: {\n blockNumber: params.blockNumber?.toString(),\n chainId: params.chainId,\n },\n })\n ),\n\n waitForBlock: (params) =>\n Effect.gen(function* () {\n const client = yield* publicClientService.get(params.chainId);\n const timeout = params.timeout ?? DEFAULT_BLOCK_WAIT_TIMEOUT;\n\n const poll = Effect.gen(function* () {\n while (true) {\n const currentBlock = yield* Effect.tryPromise({\n catch: (cause) =>\n new TransportError({\n cause,\n message: `Failed to get current block number (chainId=${params.chainId})`,\n url: client.transport.url ?? \"unknown\",\n }),\n try: () => client.getBlockNumber(),\n });\n\n if (currentBlock >= params.blockNumber) {\n return yield* Effect.tryPromise({\n catch: (cause) =>\n new BlockNotFoundError({\n blockIdentifier: params.blockNumber.toString(),\n chainId: params.chainId,\n message: `Failed to fetch block ${params.blockNumber}: ${String(cause)}`,\n }),\n try: () =>\n client.getBlock({\n blockNumber: params.blockNumber,\n }),\n });\n }\n\n yield* Effect.sleep(1000);\n }\n });\n\n return yield* poll.pipe(\n Effect.timeoutFail({\n duration: timeout,\n onTimeout: () =>\n new BlockTimeoutError({\n blockNumber: params.blockNumber,\n chainId: params.chainId,\n message: `Timeout waiting for block ${params.blockNumber}`,\n timeout,\n }),\n })\n );\n }).pipe(\n Effect.withSpan(SpanNames.BLOCK_WAIT, {\n attributes: {\n blockNumber: params.blockNumber.toString(),\n chainId: params.chainId,\n timeout: params.timeout,\n },\n })\n ),\n\n watchBlocks: (params) =>\n Effect.gen(function* () {\n const client = yield* publicClientService.get(params.chainId);\n\n return fromWatchCallback<Block, unknown>({\n mapError: (error) => error as unknown,\n watch: (cb) =>\n client.watchBlocks({\n includeTransactions: params.includeTransactions ?? false,\n onBlock: cb.onData,\n onError: cb.onError,\n pollingInterval: params.pollingInterval,\n }),\n });\n }).pipe(\n Effect.withSpan(SpanNames.BLOCK_WATCH, {\n attributes: {\n chainId: params.chainId,\n includeTransactions: params.includeTransactions,\n pollingInterval: params.pollingInterval,\n },\n })\n ),\n });\n })\n);\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service.test.integration.js","sourceRoot":"","sources":["../../src/block/service.test.integration.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"service.test.integration.js","sourceRoot":"","sources":["../../src/block/service.test.integration.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAE/D,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACtC,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAC3F,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1E,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AAEpE,MAAM,YAAY,GAAG,oEAA4E,CAAC;AAElG,MAAM,aAAa,GAAU;IAC3B,aAAa,EAAE,YAAY;IAC3B,WAAW,EAAE,EAAE;IACf,UAAU,EAAE,EAAE;IACd,aAAa,EAAE,EAAE;IACjB,SAAS,EAAE,IAAI;IACf,QAAQ,EAAE,SAAS;IACnB,OAAO,EAAE,SAAS;IAClB,IAAI,EAAE,YAAY;IAClB,SAAS,EAAE,MAAM;IACjB,KAAK,EAAE,4CAA4C;IACnD,OAAO,EAAE,YAAY;IACrB,KAAK,EAAE,oBAAoB;IAC3B,MAAM,EAAE,KAAK;IACb,UAAU,EAAE,YAAY;IACxB,YAAY,EAAE,YAAY;IAC1B,UAAU,EAAE,EAAE;IACd,UAAU,EAAE,YAAY;IACxB,IAAI,EAAE,KAAK;IACX,SAAS,EAAE,YAAY;IACvB,SAAS,EAAE,WAAW;IACtB,eAAe,EAAE,EAAE;IACnB,YAAY,EAAE,EAAE;IAChB,gBAAgB,EAAE,YAAY;IAC9B,MAAM,EAAE,EAAE;CACX,CAAC;AAEF,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;IACnC,MAAM,SAAS,GAAG,sBAAsB,CAAC;QACvC,YAAY,EAAE;YACZ,QAAQ,EAAE,CAAC,MAAe,EAAE,EAAE;gBAC5B,MAAM,CAAC,GAAG,MAAoD,CAAC;gBAC/D,OAAO,OAAO,CAAC,OAAO,CAAC;oBACrB,GAAG,aAAa;oBAChB,IAAI,EAAE,CAAC,CAAC,SAAS,IAAI,aAAa,CAAC,IAAI;oBACvC,MAAM,EAAE,CAAC,CAAC,WAAW,IAAI,aAAa,CAAC,MAAM;iBAC9C,CAAC,CAAC;YACL,CAAC;YACD,cAAc,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC;SAC7C;KACF,CAAC,CAAC;IAEH,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;QAC9B,EAAE,CAAC,MAAM,CAAC,8BAA8B,EAAE,GAAG,EAAE,CAC7C,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;YAClB,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,YAAY,CAAC;YACpC,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;YAEtE,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CACnC,CAAC;QAEF,EAAE,CAAC,MAAM,CAAC,wDAAwD,EAAE,GAAG,EAAE,CACvE,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;YAClB,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,YAAY,CAAC;YACpC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;YAE1E,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACxC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;gBACzB,MAAM,KAAK,GAAG,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAC9C,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;oBAC1B,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC,mBAAmB,CAAC,CAAC;gBAC1D,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CACnC,CAAC;QAEF,EAAE,CAAC,MAAM,CAAC,sDAAsD,EAAE,GAAG,EAAE;YACrE,MAAM,YAAY,GAAG,sBAAsB,CAAC;gBAC1C,YAAY,EAAE;oBACZ,cAAc,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC;iBACxD;aACF,CAAC,CAAC;YAEH,OAAO,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;gBACzB,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,YAAY,CAAC;gBACpC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBAEtF,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACxC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;oBACzB,MAAM,KAAK,GAAG,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBAC9C,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBAChC,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;wBAC1B,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;oBACrD,CAAC;gBACH,CAAC;YACH,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,uCAAuC,EAAE,GAAG,EAAE;QACrD,EAAE,CAAC,MAAM,CAAC,yBAAyB,EAAE,GAAG,EAAE,CACxC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;YAClB,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,YAAY,CAAC;YACpC,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;gBACrC,WAAW,EAAE,IAAI;gBACjB,OAAO,EAAE,OAAO,CAAC,EAAE;aACpB,CAAC,CAAC;YAEH,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CACnC,CAAC;QAEF,EAAE,CAAC,MAAM,CAAC,sBAAsB,EAAE,GAAG,EAAE,CACrC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;YAClB,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,YAAY,CAAC;YACpC,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;gBACrC,QAAQ,EAAE,QAAQ;gBAClB,OAAO,EAAE,OAAO,CAAC,EAAE;aACpB,CAAC,CAAC;YAEH,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;QACpC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CACnC,CAAC;QAEF,EAAE,CAAC,MAAM,CAAC,uBAAuB,EAAE,GAAG,EAAE,CACtC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;YAClB,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,YAAY,CAAC;YACpC,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC;gBAC3C,OAAO,EAAE,OAAO,CAAC,EAAE;gBACnB,IAAI,EAAE,YAAY;aACnB,CAAC,CAAC;YAEH,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CACnC,CAAC;QAEF,EAAE,CAAC,MAAM,CAAC,yBAAyB,EAAE,GAAG,EAAE,CACxC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;YAClB,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,YAAY,CAAC;YACpC,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC;gBACtC,OAAO,EAAE,OAAO,CAAC,EAAE;gBACnB,SAAS,EAAE,GAAG;gBACd,OAAO,EAAE,GAAG;aACb,CAAC,CAAC;YAEH,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;QAC/D,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CACnC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;QAC5B,EAAE,CAAC,MAAM,CAAC,sDAAsD,EAAE,GAAG,EAAE;YACrE,MAAM,OAAO,GAAG,EAAE,CAAC;YACnB,MAAM,KAAK,GAAG,sBAAsB,CAAC;gBACnC,YAAY,EAAE;oBACZ,cAAc,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC;iBAC/C;aACF,CAAC,CAAC;YAEH,OAAO,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;gBACzB,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,YAAY,CAAC;gBACpC,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAC9B,OAAO,CAAC,YAAY,CAAC;oBACnB,WAAW,EAAE,GAAG;oBAChB,OAAO,EAAE,OAAO,CAAC,EAAE;oBACnB,OAAO,EAAE,IAAI;iBACd,CAAC,CACH,CAAC;gBAEF,KAAK,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;gBAErC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBACvC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACxC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;oBACzB,MAAM,KAAK,GAAG,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBAC9C,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBAChC,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;wBAC1B,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC;oBACxD,CAAC;gBACH,CAAC;YACH,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,MAAM,CAAC,kBAAkB,EAAE,GAAG,EAAE;YACjC,MAAM,OAAO,GAAG,EAAE,CAAC;YACnB,MAAM,KAAK,GAAG,sBAAsB,CAAC;gBACnC,YAAY,EAAE;oBACZ,cAAc,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC;iBAC/C;aACF,CAAC,CAAC;YAEH,OAAO,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;gBACzB,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,YAAY,CAAC;gBACpC,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAC9B,OAAO,CAAC,YAAY,CAAC;oBACnB,WAAW,EAAE,GAAG;oBAChB,OAAO,EAAE,OAAO,CAAC,EAAE;oBACnB,OAAO,EAAE,MAAM;iBAChB,CAAC,CACH,CAAC;gBAEF,KAAK,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;gBAC9B,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBACvC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC9C,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,MAAM,CAAC,mDAAmD,EAAE,GAAG,EAAE;YAClE,MAAM,KAAK,GAAG,sBAAsB,CAAC;gBACnC,YAAY,EAAE;oBACZ,QAAQ,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC;oBACpD,cAAc,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC;iBAC3C;aACF,CAAC,CAAC;YAEH,OAAO,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;gBACzB,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,YAAY,CAAC;gBACpC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,OAAO;qBACxB,YAAY,CAAC,EAAE,WAAW,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC;qBACvD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBAErB,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACxC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;oBACzB,MAAM,KAAK,GAAG,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBAC9C,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBAChC,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;wBAC1B,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC,kBAAkB,CAAC,CAAC;oBACzD,CAAC;gBACH,CAAC;YACH,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { describe, expect, it } from \"@effect/vitest\";\nimport { Cause, Effect, Exit, Fiber, TestClock } from \"effect\";\nimport type { Block, Hash } from \"viem\";\nimport { mainnet } from \"viem/chains\";\nimport { BlockNotFoundError, BlockService, BlockTimeoutError } from \"@/src/block/index.js\";\nimport { ClientNotFoundError, TransportError } from \"@/src/core/index.js\";\nimport { makeEffectEvmTestLayer } from \"@/src/testing-kit/index.js\";\n\nconst DEFAULT_HASH = \"0xdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef\" as Hash;\n\nconst DEFAULT_BLOCK: Block = {\n baseFeePerGas: 30000000000n,\n blobGasUsed: 0n,\n difficulty: 0n,\n excessBlobGas: 0n,\n extraData: \"0x\",\n gasLimit: 30000000n,\n gasUsed: 12000000n,\n hash: DEFAULT_HASH,\n logsBloom: \"0x00\",\n miner: \"0x0000000000000000000000000000000000000000\",\n mixHash: DEFAULT_HASH,\n nonce: \"0x0000000000000000\",\n number: 1000n,\n parentHash: DEFAULT_HASH,\n receiptsRoot: DEFAULT_HASH,\n sealFields: [],\n sha3Uncles: DEFAULT_HASH,\n size: 1024n,\n stateRoot: DEFAULT_HASH,\n timestamp: 1700000000n,\n totalDifficulty: 0n,\n transactions: [],\n transactionsRoot: DEFAULT_HASH,\n uncles: [],\n};\n\ndescribe(\"BlockService (Live)\", () => {\n const testLayer = makeEffectEvmTestLayer({\n publicClient: {\n getBlock: (params: unknown) => {\n const p = params as { blockNumber?: bigint; blockHash?: Hash };\n return Promise.resolve({\n ...DEFAULT_BLOCK,\n hash: p.blockHash ?? DEFAULT_BLOCK.hash,\n number: p.blockNumber ?? DEFAULT_BLOCK.number,\n });\n },\n getBlockNumber: () => Promise.resolve(1000n),\n },\n });\n\n describe(\"getBlockNumber\", () => {\n it.effect(\"returns current block number\", () =>\n Effect.gen(function* () {\n const service = yield* BlockService;\n const result = yield* service.getBlockNumber({ chainId: mainnet.id });\n\n expect(result).toBe(1000n);\n }).pipe(Effect.provide(testLayer))\n );\n\n it.effect(\"fails with ClientNotFoundError for unsupported chainId\", () =>\n Effect.gen(function* () {\n const service = yield* BlockService;\n const exit = yield* Effect.exit(service.getBlockNumber({ chainId: 999 }));\n\n expect(Exit.isFailure(exit)).toBe(true);\n if (Exit.isFailure(exit)) {\n const error = Cause.failureOption(exit.cause);\n if (error._tag === \"Some\") {\n expect(error.value).toBeInstanceOf(ClientNotFoundError);\n }\n }\n }).pipe(Effect.provide(testLayer))\n );\n\n it.effect(\"fails with TransportError (not timeout) on RPC error\", () => {\n const failingLayer = makeEffectEvmTestLayer({\n publicClient: {\n getBlockNumber: () => Promise.reject(new Error(\"boom\")),\n },\n });\n\n return Effect.gen(function* () {\n const service = yield* BlockService;\n const exit = yield* service.getBlockNumber({ chainId: mainnet.id }).pipe(Effect.exit);\n\n expect(Exit.isFailure(exit)).toBe(true);\n if (Exit.isFailure(exit)) {\n const error = Cause.failureOption(exit.cause);\n expect(error._tag).toBe(\"Some\");\n if (error._tag === \"Some\") {\n expect(error.value).toBeInstanceOf(TransportError);\n }\n }\n }).pipe(Effect.provide(failingLayer));\n });\n });\n\n describe(\"getBlock / getBlockByHash / getBlocks\", () => {\n it.effect(\"returns block by number\", () =>\n Effect.gen(function* () {\n const service = yield* BlockService;\n const result = yield* service.getBlock({\n blockNumber: 123n,\n chainId: mainnet.id,\n });\n\n expect(result.number).toBe(123n);\n }).pipe(Effect.provide(testLayer))\n );\n\n it.effect(\"returns block by tag\", () =>\n Effect.gen(function* () {\n const service = yield* BlockService;\n const result = yield* service.getBlock({\n blockTag: \"latest\",\n chainId: mainnet.id,\n });\n\n expect(result.hash).toBeDefined();\n }).pipe(Effect.provide(testLayer))\n );\n\n it.effect(\"returns block by hash\", () =>\n Effect.gen(function* () {\n const service = yield* BlockService;\n const result = yield* service.getBlockByHash({\n chainId: mainnet.id,\n hash: DEFAULT_HASH,\n });\n\n expect(result.hash).toBe(DEFAULT_HASH);\n }).pipe(Effect.provide(testLayer))\n );\n\n it.effect(\"returns range of blocks\", () =>\n Effect.gen(function* () {\n const service = yield* BlockService;\n const result = yield* service.getBlocks({\n chainId: mainnet.id,\n fromBlock: 10n,\n toBlock: 12n,\n });\n\n expect(result.map((b) => b.number)).toEqual([10n, 11n, 12n]);\n }).pipe(Effect.provide(testLayer))\n );\n });\n\n describe(\"waitForBlock\", () => {\n it.effect(\"times out with BlockTimeoutError (not misclassified)\", () => {\n const current = 0n;\n const layer = makeEffectEvmTestLayer({\n publicClient: {\n getBlockNumber: () => Promise.resolve(current),\n },\n });\n\n return Effect.gen(function* () {\n const service = yield* BlockService;\n const fiber = yield* Effect.fork(\n service.waitForBlock({\n blockNumber: 10n,\n chainId: mainnet.id,\n timeout: 2500,\n })\n );\n\n yield* TestClock.adjust(\"3 seconds\");\n\n const exit = yield* Fiber.await(fiber);\n expect(Exit.isFailure(exit)).toBe(true);\n if (Exit.isFailure(exit)) {\n const error = Cause.failureOption(exit.cause);\n expect(error._tag).toBe(\"Some\");\n if (error._tag === \"Some\") {\n expect(error.value).toBeInstanceOf(BlockTimeoutError);\n }\n }\n }).pipe(Effect.provide(layer));\n });\n\n it.effect(\"is interruptible\", () => {\n const current = 0n;\n const layer = makeEffectEvmTestLayer({\n publicClient: {\n getBlockNumber: () => Promise.resolve(current),\n },\n });\n\n return Effect.gen(function* () {\n const service = yield* BlockService;\n const fiber = yield* Effect.fork(\n service.waitForBlock({\n blockNumber: 10n,\n chainId: mainnet.id,\n timeout: 60_000,\n })\n );\n\n yield* Fiber.interrupt(fiber);\n const exit = yield* Fiber.await(fiber);\n expect(Exit.isInterrupted(exit)).toBe(true);\n }).pipe(Effect.provide(layer));\n });\n\n it.effect(\"returns BlockNotFoundError when block fetch fails\", () => {\n const layer = makeEffectEvmTestLayer({\n publicClient: {\n getBlock: () => Promise.reject(new Error(\"missing\")),\n getBlockNumber: () => Promise.resolve(10n),\n },\n });\n\n return Effect.gen(function* () {\n const service = yield* BlockService;\n const exit = yield* service\n .waitForBlock({ blockNumber: 10n, chainId: mainnet.id })\n .pipe(Effect.exit);\n\n expect(Exit.isFailure(exit)).toBe(true);\n if (Exit.isFailure(exit)) {\n const error = Cause.failureOption(exit.cause);\n expect(error._tag).toBe(\"Some\");\n if (error._tag === \"Some\") {\n expect(error.value).toBeInstanceOf(BlockNotFoundError);\n }\n }\n }).pipe(Effect.provide(layer));\n });\n });\n});\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/constants/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAOlC,MAAM,CAAC,MAAM,4BAA4B,GAAG,GAAG,CAAC;AAMhD,MAAM,CAAC,MAAM,UAAU,GAAG,MAAM,CAAC;AAOjC,MAAM,CAAC,MAAM,iBAAiB,GAAG,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;AAGjE,MAAM,CAAC,MAAM,uBAAuB,GAAG,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;AAGtE,MAAM,CAAC,MAAM,uBAAuB,GAAG,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;AAGvE,MAAM,CAAC,MAAM,mBAAmB,GAAG,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;AAGnE,MAAM,CAAC,MAAM,0BAA0B,GAAG,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;AAG1E,MAAM,CAAC,MAAM,wBAAwB,GAAG,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;AAGvE,MAAM,CAAC,MAAM,mBAAmB,GAAG,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;AAGnE,MAAM,CAAC,MAAM,+BAA+B,GAAG,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;AAG/E,MAAM,CAAC,MAAM,0BAA0B,GAAG,YAAY,CAAC;AAOvD,MAAM,CAAC,MAAM,kBAAkB,GAAG,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;AAGjE,MAAM,CAAC,MAAM,sBAAsB,GAAG,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;AAGrE,MAAM,CAAC,MAAM,4BAA4B,GAAG,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;AAG3E,MAAM,CAAC,MAAM,sBAAsB,GAAG,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/constants/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAOlC,MAAM,CAAC,MAAM,4BAA4B,GAAG,GAAG,CAAC;AAMhD,MAAM,CAAC,MAAM,UAAU,GAAG,MAAM,CAAC;AAOjC,MAAM,CAAC,MAAM,iBAAiB,GAAG,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;AAGjE,MAAM,CAAC,MAAM,uBAAuB,GAAG,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;AAGtE,MAAM,CAAC,MAAM,uBAAuB,GAAG,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;AAGvE,MAAM,CAAC,MAAM,mBAAmB,GAAG,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;AAGnE,MAAM,CAAC,MAAM,0BAA0B,GAAG,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;AAG1E,MAAM,CAAC,MAAM,wBAAwB,GAAG,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;AAGvE,MAAM,CAAC,MAAM,mBAAmB,GAAG,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;AAGnE,MAAM,CAAC,MAAM,+BAA+B,GAAG,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;AAG/E,MAAM,CAAC,MAAM,0BAA0B,GAAG,YAAY,CAAC;AAOvD,MAAM,CAAC,MAAM,kBAAkB,GAAG,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;AAGjE,MAAM,CAAC,MAAM,sBAAsB,GAAG,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;AAGrE,MAAM,CAAC,MAAM,4BAA4B,GAAG,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;AAG3E,MAAM,CAAC,MAAM,sBAAsB,GAAG,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC","sourcesContent":["/**\n * Shared constants used across the codebase.\n */\n\nimport { Duration } from \"effect\";\n\n// =============================================================================\n// Gas Constants\n// =============================================================================\n\n/** Default multiplier for estimated gas limits (10% safety margin). */\nexport const DEFAULT_GAS_LIMIT_MULTIPLIER = 1.1;\n\n/**\n * Minimum gas required for a basic Ethereum transaction (21,000 gas units).\n * @see https://ethereum.stackexchange.com/q/34674/24693\n */\nexport const MIN_TX_GAS = 21000n;\n\n// =============================================================================\n// Timing Constants (milliseconds)\n// =============================================================================\n\n/** Default maximum delay for circuit breakers and subscriptions. */\nexport const DEFAULT_MAX_DELAY = Duration.toMillis(\"30 seconds\");\n\n/** Default timeout for waiting on a transaction receipt. */\nexport const DEFAULT_RECEIPT_TIMEOUT = Duration.toMillis(\"2 minutes\");\n\n/** Default timeout for RPC requests. */\nexport const DEFAULT_REQUEST_TIMEOUT = Duration.toMillis(\"10 seconds\");\n\n/** Default time before a transaction is considered stuck. */\nexport const DEFAULT_STUCK_TX_MS = Duration.toMillis(\"45 seconds\");\n\n/** Default timeout for waiting on a specific block. */\nexport const DEFAULT_BLOCK_WAIT_TIMEOUT = Duration.toMillis(\"60 seconds\");\n\n/** Default polling interval for transaction receipt and confirmation checks. */\nexport const DEFAULT_POLLING_INTERVAL = Duration.toMillis(\"4 seconds\");\n\n/** Default delay between RPC retries. */\nexport const DEFAULT_RETRY_DELAY = Duration.toMillis(\"150 millis\");\n\n/** Default base delay for subscription exponential backoff. */\nexport const DEFAULT_SUBSCRIPTION_BASE_DELAY = Duration.toMillis(\"500 millis\");\n\n/** Default debounce delay for cursor store flush operations. */\nexport const DEFAULT_CURSOR_FLUSH_DELAY = \"250 millis\";\n\n// =============================================================================\n// Safe Apps Constants\n// =============================================================================\n\n/** Default poll interval for Safe gateway status checks. */\nexport const SAFE_POLL_INTERVAL = Duration.toMillis(\"3 seconds\");\n\n/** Default timeout for Safe transaction execution. */\nexport const SAFE_EXECUTION_TIMEOUT = Duration.toMillis(\"5 minutes\");\n\n/** Default poll interval for off-chain signature checks. */\nexport const SAFE_SIGNATURE_POLL_INTERVAL = Duration.toMillis(\"2 seconds\");\n\n/** Default timeout for off-chain signature availability. */\nexport const SAFE_SIGNATURE_TIMEOUT = Duration.toMillis(\"2 minutes\");\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cross-chain-reader.js","sourceRoot":"","sources":["../../src/contract/cross-chain-reader.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cross-chain-reader.js","sourceRoot":"","sources":["../../src/contract/cross-chain-reader.ts"],"names":[],"mappings":"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","sourcesContent":["import { Context, Effect, Layer } from \"effect\";\nimport type { Abi, Address, ContractFunctionArgs } from \"viem\";\nimport type { ClientNotFoundError, ContractReadError, MulticallError } from \"@/src/core/index.js\";\nimport { SpanNames } from \"@/src/telemetry/index.js\";\nimport type {\n ContractFunctionName,\n ContractFunctionReturnType,\n MulticallCall,\n MulticallResult,\n ReadParams,\n} from \"@/src/types/index.js\";\nimport { ContractReader } from \"./reader.js\";\n\ntype ArgsField<TArgs> = {\n readonly args?: TArgs | undefined;\n} & (readonly [] extends TArgs ? unknown : { readonly args: TArgs });\n\nexport type CrossChainCall<\n TAbi extends Abi = Abi,\n TFunctionName extends ContractFunctionName<TAbi, \"pure\" | \"view\"> = ContractFunctionName<\n TAbi,\n \"pure\" | \"view\"\n >,\n> = {\n readonly abi: TAbi;\n readonly address: Address;\n readonly chainId: number;\n readonly functionName: TFunctionName;\n} & ArgsField<ContractFunctionArgs<TAbi, \"pure\" | \"view\", TFunctionName>>;\n\nexport type ReadSameParams<\n TAbi extends Abi,\n TFunctionName extends ContractFunctionName<TAbi, \"pure\" | \"view\">,\n> = {\n readonly abi: TAbi;\n readonly address: Address;\n readonly chainIds: readonly number[];\n readonly functionName: TFunctionName;\n} & ArgsField<ContractFunctionArgs<TAbi, \"pure\" | \"view\", TFunctionName>>;\n\nexport type ChainMulticallBatch = {\n readonly chainId: number;\n readonly calls: readonly MulticallCall[];\n};\n\nexport type CrossChainReaderShape = {\n /**\n * Execute reads across multiple chains in parallel.\n * Groups calls by chainId internally for efficiency.\n */\n readonly readAll: <const TCalls extends readonly CrossChainCall[]>(\n calls: TCalls\n ) => Effect.Effect<Map<number, unknown[]>, ContractReadError | ClientNotFoundError>;\n\n /**\n * Execute the same read on multiple chains (e.g., check balance on all chains)\n */\n readonly readSame: <\n TAbi extends Abi,\n TFunctionName extends ContractFunctionName<TAbi, \"pure\" | \"view\">,\n >(\n params: ReadSameParams<TAbi, TFunctionName>\n ) => Effect.Effect<\n Map<number, ContractFunctionReturnType<TAbi, \"pure\" | \"view\", TFunctionName>>,\n ContractReadError | ClientNotFoundError\n >;\n\n /**\n * Execute multicall on each chain in parallel, then merge results\n */\n readonly multicallAll: <const TBatches extends readonly ChainMulticallBatch[]>(\n batches: TBatches\n ) => Effect.Effect<\n Map<number, readonly MulticallResult<unknown>[]>,\n MulticallError | ClientNotFoundError\n >;\n};\n\nexport class CrossChainReader extends Context.Tag(\"ew3/CrossChainReader\")<\n CrossChainReader,\n CrossChainReaderShape\n>() {}\n\n/**\n * Helper function to group items by a key\n */\nconst groupBy = <T, K extends string | number>(\n arr: readonly T[],\n keyFn: (item: T) => K\n): Map<K, T[]> => {\n const result = new Map<K, T[]>();\n for (const item of arr) {\n const key = keyFn(item);\n const group = result.get(key) ?? [];\n group.push(item);\n result.set(key, group);\n }\n return result;\n};\n\n/**\n * Live implementation of CrossChainReader service\n */\nexport const CrossChainReaderLive = Layer.effect(\n CrossChainReader,\n Effect.gen(function* () {\n const reader = yield* ContractReader;\n\n return CrossChainReader.of({\n multicallAll: <const TBatches extends readonly ChainMulticallBatch[]>(batches: TBatches) =>\n Effect.gen(function* () {\n // Execute multicalls for each chain in parallel\n const results = yield* Effect.all(\n batches.map((batch) =>\n reader.multicall(batch.chainId, batch.calls).pipe(\n Effect.map((result) => ({\n chainId: batch.chainId,\n result,\n }))\n )\n ),\n { concurrency: \"unbounded\" }\n );\n\n // Collect results into a Map by chainId\n const resultMap = new Map<number, readonly MulticallResult<unknown>[]>();\n for (const { chainId, result } of results) {\n resultMap.set(chainId, result);\n }\n\n return resultMap;\n }).pipe(\n Effect.withSpan(SpanNames.CROSS_CHAIN_MULTICALL_ALL, {\n attributes: {\n batchCount: batches.length,\n chainIds: batches.map((b) => b.chainId),\n },\n })\n ),\n\n readAll: <const TCalls extends readonly CrossChainCall[]>(calls: TCalls) =>\n Effect.gen(function* () {\n // Group calls by chainId\n const groupedCalls = groupBy(calls, (call) => call.chainId);\n\n // Execute reads for each chain in parallel\n const results = yield* Effect.all(\n Array.from(groupedCalls.entries()).map(([chainId, chainCalls]) =>\n Effect.all(\n chainCalls.map((call) => reader.read(call)),\n { concurrency: \"unbounded\" }\n ).pipe(\n Effect.map((chainResults) => ({\n chainId,\n results: chainResults,\n }))\n )\n ),\n { concurrency: \"unbounded\" }\n );\n\n // Collect results into a Map by chainId\n const resultMap = new Map<number, unknown[]>();\n for (const { chainId, results: chainResults } of results) {\n resultMap.set(chainId, chainResults);\n }\n\n return resultMap;\n }).pipe(\n Effect.withSpan(SpanNames.CROSS_CHAIN_READ_ALL, {\n attributes: {\n callCount: calls.length,\n chainIds: Array.from(new Set(calls.map((c) => c.chainId))),\n },\n })\n ),\n\n readSame: <\n TAbi extends Abi,\n TFunctionName extends ContractFunctionName<TAbi, \"pure\" | \"view\">,\n >(\n params: ReadSameParams<TAbi, TFunctionName>\n ) =>\n Effect.gen(function* () {\n // Execute the same read on each chain in parallel\n const results = yield* Effect.all(\n params.chainIds.map((chainId) =>\n reader\n .read({\n abi: params.abi,\n address: params.address,\n args: params.args,\n chainId,\n functionName: params.functionName,\n } as ReadParams<TAbi, TFunctionName>)\n .pipe(\n Effect.map((result) => ({\n chainId,\n result: result as ContractFunctionReturnType<\n TAbi,\n \"pure\" | \"view\",\n TFunctionName\n >,\n }))\n )\n ),\n { concurrency: \"unbounded\" }\n );\n\n // Collect results into a Map by chainId\n const resultMap = new Map<\n number,\n ContractFunctionReturnType<TAbi, \"pure\" | \"view\", TFunctionName>\n >();\n for (const { chainId, result } of results) {\n resultMap.set(chainId, result);\n }\n\n return resultMap;\n }).pipe(\n Effect.withSpan(SpanNames.CROSS_CHAIN_READ_SAME, {\n attributes: {\n address: params.address,\n chainCount: params.chainIds.length,\n chainIds: params.chainIds,\n functionName: params.functionName,\n },\n })\n ),\n });\n })\n);\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/contract/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AACxC,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,qBAAqB,CAAC;AACpC,cAAc,aAAa,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/contract/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AACxC,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,qBAAqB,CAAC;AACpC,cAAc,aAAa,CAAC","sourcesContent":["export * from \"./cross-chain-reader.js\";\nexport * from \"./pipeline.js\";\nexport * from \"./reader.js\";\nexport * from \"./typed-contract.js\";\nexport * from \"./writer.js\";\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/contract/pipeline/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/contract/pipeline/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC","sourcesContent":["export * from \"./live.js\";\nexport * from \"./service.js\";\nexport * from \"./types.js\";\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core.js","sourceRoot":"","sources":["../../../../src/contract/pipeline/internal/core.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"core.js","sourceRoot":"","sources":["../../../../src/contract/pipeline/internal/core.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Scope } from \"effect\";\nimport { Effect } from \"effect\";\nimport type { Abi, Hash, TransactionReceipt } from \"viem\";\nimport type { ContractWriterShape } from \"@/src/contract/index.js\";\nimport type {\n ClientNotFoundError,\n ContractReadError,\n ContractWriteError,\n EventDecodeError,\n GasEstimationError,\n InsufficientFundsError,\n ReceiptTimeoutError,\n SimulationFailedError,\n TransactionFailedError,\n TransportError,\n UserRejectedError,\n WalletNotConnectedError,\n WrongNetworkError,\n} from \"@/src/core/index.js\";\nimport type { EventStreamShape } from \"@/src/events/index.js\";\nimport type { GasPriceUnavailableError, GasServiceShape } from \"@/src/gas/index.js\";\nimport type { NonceServiceShape } from \"@/src/nonce/index.js\";\nimport type { TxManagerShape, TxPolicy } from \"@/src/tx/index.js\";\nimport { defaultPolicy } from \"@/src/tx/index.js\";\nimport type { ContractFunctionName, WriteParams } from \"@/src/types/index.js\";\nimport type { PipelineHooks, WriteAndTrackResult } from \"../types.js\";\nimport { confirmNonce, withNonceReservation } from \"./nonce.js\";\nimport { deriveBaseOverrides, simulateAndEstimate } from \"./prepare.js\";\nimport { waitForReceiptFollowingReplacements } from \"./receipt.js\";\n\n/**\n * Dependencies required by the core pipeline\n */\nexport type CorePipelineDeps = {\n readonly writer: ContractWriterShape;\n readonly txManager: TxManagerShape;\n readonly eventStream: EventStreamShape;\n readonly nonceService: NonceServiceShape;\n readonly gasService: GasServiceShape;\n};\n\ntype CorePipelineError =\n | SimulationFailedError\n | ContractReadError\n | GasEstimationError\n | ContractWriteError\n | InsufficientFundsError\n | UserRejectedError\n | GasPriceUnavailableError\n | TransactionFailedError\n | ReceiptTimeoutError\n | ClientNotFoundError\n | TransportError\n | WalletNotConnectedError\n | WrongNetworkError\n | EventDecodeError;\n\n/**\n * Run the core write pipeline with hooks for tracking.\n *\n * Steps:\n * 1. Derive base overrides (tx type + fees)\n * 2. Simulate transaction\n * 3. Estimate gas\n * 4. Reserve nonce\n * 5. Write transaction\n * 6. Wait for receipt (following replacements)\n * 7. Decode events\n */\nexport const runCorePipeline = <\n TAbi extends Abi,\n TFunctionName extends ContractFunctionName<TAbi, \"nonpayable\" | \"payable\">,\n>(\n deps: CorePipelineDeps,\n params: WriteParams<TAbi, TFunctionName>,\n policy: TxPolicy,\n hooks: PipelineHooks = {}\n): Effect.Effect<WriteAndTrackResult<TAbi>, CorePipelineError, Scope.Scope> =>\n Effect.gen(function* () {\n const { writer, txManager, eventStream, nonceService, gasService } = deps;\n const mergedPolicy = { ...defaultPolicy, ...policy };\n\n // Step 1: Derive base overrides\n const baseOverrides = yield* deriveBaseOverrides(gasService, {\n chainId: params.chainId,\n policy: mergedPolicy,\n userOverrides: params.overrides,\n });\n\n // Step 2 & 3: Simulate and estimate gas\n if (hooks.onSimulating) {\n yield* hooks.onSimulating();\n }\n\n const { finalGas, overridesWithGas } = yield* simulateAndEstimate(\n writer,\n params,\n baseOverrides,\n mergedPolicy\n );\n\n // Step 4: Reserve nonce\n const explicitNonce = params.overrides?.nonce;\n const nonceReservation = yield* withNonceReservation(nonceService, {\n account: params.account,\n chainId: params.chainId,\n explicitNonce,\n });\n\n const finalOverrides = {\n ...overridesWithGas,\n nonce: nonceReservation.nonce,\n };\n\n if (hooks.onEstimated) {\n yield* hooks.onEstimated(finalGas, nonceReservation.nonce);\n }\n\n // Step 5: Sign and write transaction\n if (hooks.onSigning) {\n yield* hooks.onSigning();\n }\n\n const hash = yield* writer.write({ ...params, overrides: finalOverrides });\n yield* nonceReservation.markSubmitted;\n\n if (hooks.onSubmitted) {\n yield* hooks.onSubmitted(hash);\n }\n\n // Step 6: Wait for receipt\n const onReplacedHook = hooks.onReplaced;\n const receipt: TransactionReceipt = yield* waitForReceiptFollowingReplacements(txManager, {\n chainId: params.chainId,\n hash,\n onReplaced: onReplacedHook\n ? (oldHash, newHash, reason) => onReplacedHook(oldHash, newHash, reason)\n : undefined,\n policy: mergedPolicy,\n });\n\n if (hooks.onMined) {\n yield* hooks.onMined(receipt);\n }\n\n // Confirm nonce after successful mining\n yield* confirmNonce(nonceService, {\n account: params.account,\n chainId: params.chainId,\n nonce: nonceReservation.nonce,\n reserved: nonceReservation.reserved,\n });\n\n // Step 7: Decode events\n const events = (yield* eventStream.decodeReceipt(\n receipt,\n params.abi\n )) as WriteAndTrackResult<TAbi>[\"events\"];\n\n return {\n events,\n hash: receipt.transactionHash as Hash,\n receipt,\n } as WriteAndTrackResult<TAbi>;\n });\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../../src/contract/pipeline/internal/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,4BAA4B,EAAE,MAAM,0BAA0B,CAAC;AACxE,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAKlE,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,KAAsB,EAAU,EAAE,CAC9D,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAMpD,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,GAAW,EAAE,UAA8B,EAAU,EAAE;IAC7F,MAAM,CAAC,GAAG,UAAU,IAAI,4BAA4B,CAAC;IACrD,OAAO,MAAM,CAAC,SAAS,CAAC,uBAAuB,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;AACtE,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../../src/contract/pipeline/internal/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,4BAA4B,EAAE,MAAM,0BAA0B,CAAC;AACxE,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAKlE,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,KAAsB,EAAU,EAAE,CAC9D,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAMpD,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,GAAW,EAAE,UAA8B,EAAU,EAAE;IAC7F,MAAM,CAAC,GAAG,UAAU,IAAI,4BAA4B,CAAC;IACrD,OAAO,MAAM,CAAC,SAAS,CAAC,uBAAuB,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;AACtE,CAAC,CAAC","sourcesContent":["import { Option } from \"effect\";\nimport { DEFAULT_GAS_LIMIT_MULTIPLIER } from \"@/src/constants/index.js\";\nimport { multiplyBigintByDecimal } from \"@/src/internal/index.js\";\n\n/**\n * Convert nonce to bigint regardless of input type\n */\nexport const nonceToBigInt = (nonce: number | bigint): bigint =>\n typeof nonce === \"bigint\" ? nonce : BigInt(nonce);\n\n/**\n * Apply gas limit multiplier with safety bounds\n * Returns original gas if multiplier is invalid or would overflow\n */\nexport const applyGasLimitMultiplier = (gas: bigint, multiplier: number | undefined): bigint => {\n const m = multiplier ?? DEFAULT_GAS_LIMIT_MULTIPLIER;\n return Option.getOrElse(multiplyBigintByDecimal(gas, m), () => gas);\n};\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nonce.js","sourceRoot":"","sources":["../../../../src/contract/pipeline/internal/nonce.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAC;AAIrC,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAa7C,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAClC,YAA+B,EAC/B,MAIC,EACyF,EAAE,CAC5F,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,iBAAiB,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAEjD,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,cAAc,CAC9C,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAClB,IAAI,MAAM,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;YACvC,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAW,CAAC;QACnE,CAAC;QAED,MAAM,aAAa,GAAG,KAAK,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC;YAChD,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,OAAO,EAAE,MAAM,CAAC,OAAO;SACxB,CAAC,CAAC;QAEH,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,IAAI,EAAW,CAAC;IAC3D,CAAC,CAAC,EACF,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,CACtB,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAClB,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO;QACT,CAAC;QACD,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;QACpD,IAAI,SAAS,EAAE,CAAC;YACd,OAAO;QACT,CAAC;QAED,KAAK,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC;YAC1B,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,KAAK,EAAE,aAAa,CAAC,KAAK,CAAC;SAC5B,CAAC,CAAC;IACL,CAAC,CAAC,CACL,CAAC;IAEF,OAAO;QACL,aAAa,EAAE,GAAG,CAAC,GAAG,CAAC,iBAAiB,EAAE,IAAI,CAAC;QAC/C,KAAK,EAAE,WAAW,CAAC,KAAK;QACxB,QAAQ,EAAE,WAAW,CAAC,QAAQ;KAC/B,CAAC;AACJ,CAAC,CAAC,CAAC;AAKL,MAAM,CAAC,MAAM,YAAY,GAAG,CAC1B,YAA+B,EAC/B,MAKC,EACoB,EAAE,CACvB,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;QACrB,OAAO;IACT,CAAC;IAED,KAAK,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC;QAC1B,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,KAAK,EAAE,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC;KACnC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"nonce.js","sourceRoot":"","sources":["../../../../src/contract/pipeline/internal/nonce.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAC;AAIrC,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAa7C,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAClC,YAA+B,EAC/B,MAIC,EACyF,EAAE,CAC5F,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,iBAAiB,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAEjD,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,cAAc,CAC9C,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAClB,IAAI,MAAM,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;YACvC,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAW,CAAC;QACnE,CAAC;QAED,MAAM,aAAa,GAAG,KAAK,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC;YAChD,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,OAAO,EAAE,MAAM,CAAC,OAAO;SACxB,CAAC,CAAC;QAEH,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,IAAI,EAAW,CAAC;IAC3D,CAAC,CAAC,EACF,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,CACtB,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAClB,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO;QACT,CAAC;QACD,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;QACpD,IAAI,SAAS,EAAE,CAAC;YACd,OAAO;QACT,CAAC;QAED,KAAK,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC;YAC1B,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,KAAK,EAAE,aAAa,CAAC,KAAK,CAAC;SAC5B,CAAC,CAAC;IACL,CAAC,CAAC,CACL,CAAC;IAEF,OAAO;QACL,aAAa,EAAE,GAAG,CAAC,GAAG,CAAC,iBAAiB,EAAE,IAAI,CAAC;QAC/C,KAAK,EAAE,WAAW,CAAC,KAAK;QACxB,QAAQ,EAAE,WAAW,CAAC,QAAQ;KAC/B,CAAC;AACJ,CAAC,CAAC,CAAC;AAKL,MAAM,CAAC,MAAM,YAAY,GAAG,CAC1B,YAA+B,EAC/B,MAKC,EACoB,EAAE,CACvB,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;QACrB,OAAO;IACT,CAAC;IAED,KAAK,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC;QAC1B,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,KAAK,EAAE,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC;KACnC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import type { Scope } from \"effect\";\nimport { Effect, Ref } from \"effect\";\nimport type { Address } from \"viem\";\nimport type { ClientNotFoundError, TransportError } from \"@/src/core/index.js\";\nimport type { NonceServiceShape } from \"@/src/nonce/index.js\";\nimport { nonceToBigInt } from \"./helpers.js\";\n\nexport type NonceReservationResult = {\n readonly nonce: number | bigint;\n readonly reserved: boolean;\n readonly markSubmitted: Effect.Effect<void>;\n};\n\n/**\n * Reserve a nonce with proper cleanup semantics.\n * If explicitNonce is provided, no reservation is made.\n * Otherwise, reserves from NonceService and releases on scope exit if not submitted.\n */\nexport const withNonceReservation = (\n nonceService: NonceServiceShape,\n params: {\n account: Address;\n chainId: number;\n explicitNonce: number | bigint | undefined;\n }\n): Effect.Effect<NonceReservationResult, ClientNotFoundError | TransportError, Scope.Scope> =>\n Effect.gen(function* () {\n const nonceSubmittedRef = yield* Ref.make(false);\n\n const reservation = yield* Effect.acquireRelease(\n Effect.gen(function* () {\n if (params.explicitNonce !== undefined) {\n return { nonce: params.explicitNonce, reserved: false } as const;\n }\n\n const reservedNonce = yield* nonceService.reserve({\n address: params.account,\n chainId: params.chainId,\n });\n\n return { nonce: reservedNonce, reserved: true } as const;\n }),\n ({ nonce, reserved }) =>\n Effect.gen(function* () {\n if (!reserved) {\n return;\n }\n const submitted = yield* Ref.get(nonceSubmittedRef);\n if (submitted) {\n return;\n }\n\n yield* nonceService.release({\n address: params.account,\n chainId: params.chainId,\n nonce: nonceToBigInt(nonce),\n });\n })\n );\n\n return {\n markSubmitted: Ref.set(nonceSubmittedRef, true),\n nonce: reservation.nonce,\n reserved: reservation.reserved,\n };\n });\n\n/**\n * Confirm a nonce after successful transaction\n */\nexport const confirmNonce = (\n nonceService: NonceServiceShape,\n params: {\n account: Address;\n chainId: number;\n nonce: number | bigint;\n reserved: boolean;\n }\n): Effect.Effect<void> =>\n Effect.gen(function* () {\n if (!params.reserved) {\n return;\n }\n\n yield* nonceService.confirm({\n address: params.account,\n chainId: params.chainId,\n nonce: nonceToBigInt(params.nonce),\n });\n });\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prepare.js","sourceRoot":"","sources":["../../../../src/contract/pipeline/internal/prepare.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAYhC,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEhD,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAOrE,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAOvD,MAAM,CAAC,MAAM,mBAAmB,GAAG,CACjC,UAA2B,EAC3B,MAIC,EACoF,EAAE,CACvF,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,CAAC,WAAW,EAAE,YAAY,CAAC,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CACnD;QACE,YAAY,CAAC;YACX,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,aAAa,EAAE,MAAM,CAAC,aAAa;SACpC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QAEtD,kBAAkB,CAAC;YACjB,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,aAAa,EAAE,MAAM,CAAC,aAAa;SACpC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;KACvD,EACD,EAAE,WAAW,EAAE,CAAC,EAAE,CACnB,CAAC;IAEF,OAAO;QACL,GAAG,MAAM,CAAC,aAAa;QACvB,GAAG,YAAY;QACf,IAAI,EAAE,MAAM,CAAC,aAAa,EAAE,IAAI,IAAI,WAAW;KAC/B,CAAC;AACrB,CAAC,CAAC,CAAC;AASL,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAIjC,MAA2B,EAC3B,MAAwC,EACxC,aAA4B,EAC5B,MAAgB,EAShB,EAAE,CACF,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAElB,MAAM,YAAY,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC;QAC7C,GAAG,MAAM;QACT,SAAS,EAAE,aAAa;KACzB,CAAC,CAAC;IAGH,MAAM,UAAU,GAAG,uBAAuB,CAAC,YAAY,EAAE,MAAM,CAAC,kBAAkB,CAAC,CAAC;IAGpF,MAAM,WAAW,GAAG,MAAM,CAAC,SAAS,EAAE,GAAG,IAAI,MAAM,CAAC,GAAG,CAAC;IACxD,MAAM,QAAQ,GAAG,WAAW,IAAI,UAAU,CAAC;IAG3C,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,GAAG,MAAM,EAAE,SAAS,EAAE,EAAE,GAAG,aAAa,EAAE,GAAG,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC;IAEtF,OAAO;QACL,QAAQ;QACR,gBAAgB,EAAE;YAChB,GAAG,aAAa;YAChB,GAAG,EAAE,QAAQ;SACd;KACF,CAAC;AACJ,CAAC,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"prepare.js","sourceRoot":"","sources":["../../../../src/contract/pipeline/internal/prepare.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAYhC,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEhD,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAOrE,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAOvD,MAAM,CAAC,MAAM,mBAAmB,GAAG,CACjC,UAA2B,EAC3B,MAIC,EACoF,EAAE,CACvF,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,CAAC,WAAW,EAAE,YAAY,CAAC,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CACnD;QACE,YAAY,CAAC;YACX,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,aAAa,EAAE,MAAM,CAAC,aAAa;SACpC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QAEtD,kBAAkB,CAAC;YACjB,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,aAAa,EAAE,MAAM,CAAC,aAAa;SACpC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;KACvD,EACD,EAAE,WAAW,EAAE,CAAC,EAAE,CACnB,CAAC;IAEF,OAAO;QACL,GAAG,MAAM,CAAC,aAAa;QACvB,GAAG,YAAY;QACf,IAAI,EAAE,MAAM,CAAC,aAAa,EAAE,IAAI,IAAI,WAAW;KAC/B,CAAC;AACrB,CAAC,CAAC,CAAC;AASL,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAIjC,MAA2B,EAC3B,MAAwC,EACxC,aAA4B,EAC5B,MAAgB,EAShB,EAAE,CACF,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAElB,MAAM,YAAY,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC;QAC7C,GAAG,MAAM;QACT,SAAS,EAAE,aAAa;KACzB,CAAC,CAAC;IAGH,MAAM,UAAU,GAAG,uBAAuB,CAAC,YAAY,EAAE,MAAM,CAAC,kBAAkB,CAAC,CAAC;IAGpF,MAAM,WAAW,GAAG,MAAM,CAAC,SAAS,EAAE,GAAG,IAAI,MAAM,CAAC,GAAG,CAAC;IACxD,MAAM,QAAQ,GAAG,WAAW,IAAI,UAAU,CAAC;IAG3C,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,GAAG,MAAM,EAAE,SAAS,EAAE,EAAE,GAAG,aAAa,EAAE,GAAG,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC;IAEtF,OAAO;QACL,QAAQ;QACR,gBAAgB,EAAE;YAChB,GAAG,aAAa;YAChB,GAAG,EAAE,QAAQ;SACd;KACF,CAAC;AACJ,CAAC,CAAC,CAAC","sourcesContent":["import { Effect } from \"effect\";\nimport type { Abi } from \"viem\";\nimport type { ContractWriterShape } from \"@/src/contract/index.js\";\nimport type {\n ClientNotFoundError,\n ContractReadError,\n GasEstimationError,\n InsufficientFundsError,\n SimulationFailedError,\n UserRejectedError,\n} from \"@/src/core/index.js\";\nimport type { GasPriceUnavailableError, GasServiceShape } from \"@/src/gas/index.js\";\nimport { GasService } from \"@/src/gas/index.js\";\nimport type { TxPolicy } from \"@/src/tx/index.js\";\nimport { deriveFeeOverrides, deriveTxType } from \"@/src/tx/index.js\";\nimport type {\n ContractFunctionName,\n FeeOverrides,\n TxOverrides,\n WriteParams,\n} from \"@/src/types/index.js\";\nimport { applyGasLimitMultiplier } from \"./helpers.js\";\n\nexport type BaseOverrides = TxOverrides & FeeOverrides;\n\n/**\n * Derive transaction type and fee overrides in parallel\n */\nexport const deriveBaseOverrides = (\n gasService: GasServiceShape,\n params: {\n chainId: number;\n policy: TxPolicy;\n userOverrides?: TxOverrides;\n }\n): Effect.Effect<BaseOverrides, GasPriceUnavailableError | ClientNotFoundError, never> =>\n Effect.gen(function* () {\n const [derivedType, feeOverrides] = yield* Effect.all(\n [\n deriveTxType({\n chainId: params.chainId,\n policy: params.policy,\n userOverrides: params.userOverrides,\n }).pipe(Effect.provideService(GasService, gasService)),\n\n deriveFeeOverrides({\n chainId: params.chainId,\n policy: params.policy,\n userOverrides: params.userOverrides,\n }).pipe(Effect.provideService(GasService, gasService)),\n ],\n { concurrency: 2 }\n );\n\n return {\n ...params.userOverrides,\n ...feeOverrides,\n type: params.userOverrides?.type ?? derivedType,\n } as BaseOverrides;\n });\n\n/**\n * Estimate gas and simulate transaction.\n *\n * Gas estimation is done BEFORE simulation to provide a reasonable gas limit.\n * Some RPC nodes default to max uint64 when no gas limit is provided, which\n * causes \"insufficient funds\" errors during the balance check.\n */\nexport const simulateAndEstimate = <\n TAbi extends Abi,\n TFunctionName extends ContractFunctionName<TAbi, \"nonpayable\" | \"payable\">,\n>(\n writer: ContractWriterShape,\n params: WriteParams<TAbi, TFunctionName>,\n baseOverrides: BaseOverrides,\n policy: TxPolicy\n): Effect.Effect<\n { finalGas: bigint; overridesWithGas: BaseOverrides & { gas: bigint } },\n | SimulationFailedError\n | ContractReadError\n | GasEstimationError\n | ClientNotFoundError\n | InsufficientFundsError\n | UserRejectedError\n> =>\n Effect.gen(function* () {\n // Estimate gas first to get a reasonable limit for simulation\n const estimatedGas = yield* writer.estimateGas({\n ...params,\n overrides: baseOverrides,\n });\n // Apply multiplier to add safety margin; this buffered value is used for\n // both simulation (balance check) and the final transaction.\n const derivedGas = applyGasLimitMultiplier(estimatedGas, policy.gasLimitMultiplier);\n\n // Use explicit gas if provided, otherwise use derived\n const explicitGas = params.overrides?.gas ?? params.gas;\n const finalGas = explicitGas ?? derivedGas;\n\n // Simulate with the gas limit to ensure proper balance checks\n yield* writer.simulate({ ...params, overrides: { ...baseOverrides, gas: finalGas } });\n\n return {\n finalGas,\n overridesWithGas: {\n ...baseOverrides,\n gas: finalGas,\n },\n };\n });\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"receipt.js","sourceRoot":"","sources":["../../../../src/contract/pipeline/internal/receipt.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAmBhC,MAAM,CAAC,MAAM,mCAAmC,GAAG,CACjD,SAAyB,EACzB,MAKC,EAID,EAAE,CACF,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,IAAI,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC;IAE3B,OAAO,IAAI,EAAE,CAAC;QACZ,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,SAAS;aAC1B,cAAc,CAAC,MAAM,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC;aACvD,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAEvB,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YAC1B,OAAO,IAAI,CAAC,KAAK,CAAC;QACpB,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC;QACxB,IAAI,KAAK,CAAC,IAAI,KAAK,0BAA0B,EAAE,CAAC;YAC9C,MAAM,OAAO,GAAG,KAAK,CAAC,OAAe,CAAC;YACtC,MAAM,OAAO,GAAG,KAAK,CAAC,OAAe,CAAC;YAEtC,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;gBACtB,KAAK,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;YAC3D,CAAC;YAED,QAAQ,GAAG,OAAO,CAAC;YACnB,SAAS;QACX,CAAC;QAED,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC;AACH,CAAC,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"receipt.js","sourceRoot":"","sources":["../../../../src/contract/pipeline/internal/receipt.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAmBhC,MAAM,CAAC,MAAM,mCAAmC,GAAG,CACjD,SAAyB,EACzB,MAKC,EAID,EAAE,CACF,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,IAAI,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC;IAE3B,OAAO,IAAI,EAAE,CAAC;QACZ,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,SAAS;aAC1B,cAAc,CAAC,MAAM,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC;aACvD,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAEvB,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YAC1B,OAAO,IAAI,CAAC,KAAK,CAAC;QACpB,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC;QACxB,IAAI,KAAK,CAAC,IAAI,KAAK,0BAA0B,EAAE,CAAC;YAC9C,MAAM,OAAO,GAAG,KAAK,CAAC,OAAe,CAAC;YACtC,MAAM,OAAO,GAAG,KAAK,CAAC,OAAe,CAAC;YAEtC,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;gBACtB,KAAK,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;YAC3D,CAAC;YAED,QAAQ,GAAG,OAAO,CAAC;YACnB,SAAS;QACX,CAAC;QAED,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC;AACH,CAAC,CAAC,CAAC","sourcesContent":["import { Effect } from \"effect\";\nimport type { Hash, TransactionReceipt } from \"viem\";\nimport type {\n ClientNotFoundError,\n ReceiptTimeoutError,\n TransactionFailedError,\n} from \"@/src/core/index.js\";\nimport type { TxManagerShape, TxPolicy } from \"@/src/tx/index.js\";\n\nexport type OnReplacedCallback = (\n oldHash: Hash,\n newHash: Hash,\n reason: string\n) => Effect.Effect<void>;\n\n/**\n * Wait for receipt, following any transaction replacements.\n * The onReplaced callback is invoked each time a replacement is detected.\n */\nexport const waitForReceiptFollowingReplacements = (\n txManager: TxManagerShape,\n params: {\n chainId: number;\n hash: Hash;\n policy: TxPolicy;\n onReplaced?: OnReplacedCallback;\n }\n): Effect.Effect<\n TransactionReceipt,\n TransactionFailedError | ReceiptTimeoutError | ClientNotFoundError\n> =>\n Effect.gen(function* () {\n let waitHash = params.hash;\n\n while (true) {\n const exit = yield* txManager\n .waitForReceipt(params.chainId, waitHash, params.policy)\n .pipe(Effect.either);\n\n if (exit._tag === \"Right\") {\n return exit.right;\n }\n\n const error = exit.left;\n if (error._tag === \"TransactionReplacedError\") {\n const oldHash = error.oldHash as Hash;\n const newHash = error.newHash as Hash;\n\n if (params.onReplaced) {\n yield* params.onReplaced(oldHash, newHash, error.reason);\n }\n\n waitHash = newHash;\n continue;\n }\n\n return yield* Effect.fail(error);\n }\n });\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"live.js","sourceRoot":"","sources":["../../../src/contract/pipeline/live.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEvD,MAAM,CAAC,MAAM,oBAAoB,GAAG,KAAK,CAAC,MAAM,CAC9C,gBAAgB,EAChB,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,cAAc,CAAC;IACrC,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,SAAS,CAAC;IACnC,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,WAAW,CAAC;IACvC,MAAM,YAAY,GAAG,KAAK,CAAC,CAAC,YAAY,CAAC;IACzC,MAAM,aAAa,GAAG,KAAK,CAAC,CAAC,aAAa,CAAC;IAC3C,MAAM,mBAAmB,GAAG,KAAK,CAAC,CAAC,mBAAmB,CAAC;IACvD,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,UAAU,CAAC;IAErC,MAAM,iBAAiB,GAAG;QACxB,WAAW;QACX,UAAU;QACV,YAAY;QACZ,mBAAmB;QACnB,SAAS;QACT,aAAa;QACb,MAAM;KACP,CAAC;IAEF,MAAM,gBAAgB,GAAG;QACvB,WAAW;QACX,UAAU;QACV,YAAY;QACZ,SAAS;QACT,MAAM;KACP,CAAC;IAEF,OAAO,gBAAgB,CAAC,EAAE,CAAC;QACzB,aAAa,EAAE,iBAAiB,CAAC,iBAAiB,CAAC;QACnD,YAAY,EAAE,gBAAgB,CAAC,gBAAgB,CAAC;KACjD,CAAC,CAAC;AACL,CAAC,CAAC,CACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"live.js","sourceRoot":"","sources":["../../../src/contract/pipeline/live.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEvD,MAAM,CAAC,MAAM,oBAAoB,GAAG,KAAK,CAAC,MAAM,CAC9C,gBAAgB,EAChB,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,cAAc,CAAC;IACrC,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,SAAS,CAAC;IACnC,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,WAAW,CAAC;IACvC,MAAM,YAAY,GAAG,KAAK,CAAC,CAAC,YAAY,CAAC;IACzC,MAAM,aAAa,GAAG,KAAK,CAAC,CAAC,aAAa,CAAC;IAC3C,MAAM,mBAAmB,GAAG,KAAK,CAAC,CAAC,mBAAmB,CAAC;IACvD,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,UAAU,CAAC;IAErC,MAAM,iBAAiB,GAAG;QACxB,WAAW;QACX,UAAU;QACV,YAAY;QACZ,mBAAmB;QACnB,SAAS;QACT,aAAa;QACb,MAAM;KACP,CAAC;IAEF,MAAM,gBAAgB,GAAG;QACvB,WAAW;QACX,UAAU;QACV,YAAY;QACZ,SAAS;QACT,MAAM;KACP,CAAC;IAEF,OAAO,gBAAgB,CAAC,EAAE,CAAC;QACzB,aAAa,EAAE,iBAAiB,CAAC,iBAAiB,CAAC;QACnD,YAAY,EAAE,gBAAgB,CAAC,gBAAgB,CAAC;KACjD,CAAC,CAAC;AACL,CAAC,CAAC,CACH,CAAC","sourcesContent":["import { Effect, Layer } from \"effect\";\nimport { ContractWriter } from \"@/src/contract/index.js\";\nimport { PublicClientService } from \"@/src/core/index.js\";\nimport { EventStream } from \"@/src/events/index.js\";\nimport { GasService } from \"@/src/gas/index.js\";\nimport { NonceService } from \"@/src/nonce/index.js\";\nimport { TxManager, TxReplacement } from \"@/src/tx/index.js\";\nimport { ContractPipeline } from \"./service.js\";\nimport { makeWriteAndTrack } from \"./write-and-track.js\";\nimport { makeWriteAndWait } from \"./write-and-wait.js\";\n\nexport const ContractPipelineLive = Layer.effect(\n ContractPipeline,\n Effect.gen(function* () {\n const writer = yield* ContractWriter;\n const txManager = yield* TxManager;\n const eventStream = yield* EventStream;\n const nonceService = yield* NonceService;\n const txReplacement = yield* TxReplacement;\n const publicClientService = yield* PublicClientService;\n const gasService = yield* GasService;\n\n const writeAndTrackDeps = {\n eventStream,\n gasService,\n nonceService,\n publicClientService,\n txManager,\n txReplacement,\n writer,\n };\n\n const writeAndWaitDeps = {\n eventStream,\n gasService,\n nonceService,\n txManager,\n writer,\n };\n\n return ContractPipeline.of({\n writeAndTrack: makeWriteAndTrack(writeAndTrackDeps),\n writeAndWait: makeWriteAndWait(writeAndWaitDeps),\n });\n })\n);\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service.js","sourceRoot":"","sources":["../../../src/contract/pipeline/service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAiEjC,MAAM,OAAO,gBAAiB,SAAQ,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,EAGtE;CAAG"}
|
|
1
|
+
{"version":3,"file":"service.js","sourceRoot":"","sources":["../../../src/contract/pipeline/service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAiEjC,MAAM,OAAO,gBAAiB,SAAQ,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,EAGtE;CAAG","sourcesContent":["import type { Effect, Scope, SubscriptionRef } from \"effect\";\nimport { Context } from \"effect\";\nimport type { Abi, Hash } from \"viem\";\nimport type {\n ClientNotFoundError,\n TransactionFailedError,\n WalletNotConnectedError,\n} from \"@/src/core/index.js\";\nimport type { GasPriceUnavailableError } from \"@/src/gas/index.js\";\nimport type { TxPolicy, TxState } from \"@/src/tx/index.js\";\nimport type { ContractFunctionName } from \"@/src/types/index.js\";\nimport type { WriteAndTrackError, WriteAndTrackParams, WriteAndTrackResult } from \"./types.js\";\n\nexport type ContractPipelineShape = {\n /**\n * Full write pipeline: simulate -> estimate -> write -> track -> decode events\n * Returns reactive state ref for UI updates\n */\n readonly writeAndTrack: <\n TAbi extends Abi,\n TFunctionName extends ContractFunctionName<TAbi, \"nonpayable\" | \"payable\">,\n >(\n params: WriteAndTrackParams<TAbi, TFunctionName>\n ) => Effect.Effect<\n {\n stateRef: SubscriptionRef.SubscriptionRef<TxState>;\n actions: {\n readonly speedup: (\n policy?: TxPolicy\n ) => Effect.Effect<\n Hash,\n | TransactionFailedError\n | WalletNotConnectedError\n | ClientNotFoundError\n | GasPriceUnavailableError\n | Error\n >;\n readonly cancel: (\n policy?: TxPolicy\n ) => Effect.Effect<\n Hash,\n | TransactionFailedError\n | WalletNotConnectedError\n | ClientNotFoundError\n | GasPriceUnavailableError\n | Error\n >;\n };\n result: Effect.Effect<WriteAndTrackResult<TAbi>, WriteAndTrackError>;\n },\n never,\n Scope.Scope\n >;\n\n /**\n * Simplified version that just waits for receipt\n * No reactive state, just returns final result\n */\n readonly writeAndWait: <\n TAbi extends Abi,\n TFunctionName extends ContractFunctionName<TAbi, \"nonpayable\" | \"payable\">,\n >(\n params: WriteAndTrackParams<TAbi, TFunctionName>\n ) => Effect.Effect<WriteAndTrackResult<TAbi>, WriteAndTrackError>;\n};\n\nexport class ContractPipeline extends Context.Tag(\"ew3/ContractPipeline\")<\n ContractPipeline,\n ContractPipelineShape\n>() {}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/contract/pipeline/types.ts"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/contract/pipeline/types.ts"],"names":[],"mappings":"","sourcesContent":["import type { Effect } from \"effect\";\nimport type { Abi, Address, Hash, Hex, TransactionReceipt } from \"viem\";\nimport type {\n ClientNotFoundError,\n ContractReadError,\n ContractWriteError,\n EventDecodeError,\n GasEstimationError,\n InsufficientFundsError,\n ReceiptTimeoutError,\n SimulationFailedError,\n TransactionFailedError,\n TransactionReplacedError,\n TransportError,\n UserRejectedError,\n WalletNotConnectedError,\n WrongNetworkError,\n} from \"@/src/core/index.js\";\nimport type { DecodedEvent } from \"@/src/events/index.js\";\nimport type { GasPriceUnavailableError } from \"@/src/gas/index.js\";\nimport type { TxPolicy, TxState } from \"@/src/tx/index.js\";\nimport type { ContractEventName, ContractFunctionName, WriteParams } from \"@/src/types/index.js\";\n\nexport type WriteAndTrackParams<\n TAbi extends Abi,\n TFunctionName extends ContractFunctionName<TAbi, \"nonpayable\" | \"payable\">,\n> = WriteParams<TAbi, TFunctionName> & {\n policy?: TxPolicy;\n};\n\nexport type WriteAndTrackResult<TAbi extends Abi> = {\n hash: Hash;\n receipt: TransactionReceipt;\n events: DecodedEvent<TAbi, ContractEventName<TAbi>>[];\n};\n\nexport type WriteAndTrackError =\n | SimulationFailedError\n | ContractReadError\n | GasEstimationError\n | ContractWriteError\n | InsufficientFundsError\n | UserRejectedError\n | GasPriceUnavailableError\n | TransactionFailedError\n | TransactionReplacedError\n | ReceiptTimeoutError\n | ClientNotFoundError\n | TransportError\n | WalletNotConnectedError\n | WrongNetworkError\n | EventDecodeError;\n\n/**\n * Hooks for core pipeline stages.\n * All hooks are optional and default to no-ops.\n */\nexport type PipelineHooks = {\n /** Called when simulation begins */\n readonly onSimulating?: () => Effect.Effect<void>;\n /** Called after gas estimation with the estimated values */\n readonly onEstimated?: (gas: bigint, nonce: number | bigint) => Effect.Effect<void>;\n /** Called when transaction signing begins */\n readonly onSigning?: () => Effect.Effect<void>;\n /** Called after transaction is submitted with the hash */\n readonly onSubmitted?: (hash: Hash) => Effect.Effect<void>;\n /** Called when a replacement transaction is detected */\n readonly onReplaced?: (oldHash: Hash, newHash: Hash, reason: string) => Effect.Effect<void>;\n /** Called when transaction is mined */\n readonly onMined?: (receipt: TransactionReceipt) => Effect.Effect<void>;\n};\n\n/**\n * Internal type for nonce reservation result\n */\nexport type NonceReservation = {\n readonly nonce: number | bigint;\n readonly reserved: boolean;\n readonly markSubmitted: () => Effect.Effect<void>;\n};\n\n/**\n * Internal type for prepared transaction overrides\n */\nexport type PreparedOverrides = {\n readonly type?: \"legacy\" | \"eip1559\" | \"eip2930\" | \"eip4844\" | \"eip7702\";\n readonly gas: bigint;\n readonly nonce: number | bigint;\n readonly gasPrice?: bigint;\n readonly maxFeePerGas?: bigint;\n readonly maxPriorityFeePerGas?: bigint;\n readonly accessList?: readonly {\n address: Address;\n storageKeys: readonly Hex[];\n }[];\n};\n\n/**\n * Result from the prepare phase\n */\nexport type PrepareResult = {\n readonly baseOverrides: PreparedOverrides;\n readonly finalGas: bigint;\n readonly txPreview: TxState[\"tx\"];\n};\n"]}
|