@prb/effect-evm 1.0.0-beta.0 → 1.0.0-beta.10
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/DOCS.md +13 -0
- package/README.md +4 -0
- 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.d.ts +2 -0
- package/dist/balance/service.test.integration.d.ts.map +1 -0
- package/dist/balance/service.test.integration.js +289 -0
- package/dist/balance/service.test.integration.js.map +1 -0
- 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.d.ts +2 -0
- package/dist/block/service.test.integration.d.ts.map +1 -0
- package/dist/block/service.test.integration.js +190 -0
- package/dist/block/service.test.integration.js.map +1 -0
- package/dist/constants/index.d.ts +0 -4
- package/dist/constants/index.d.ts.map +1 -1
- package/dist/constants/index.js +1 -5
- package/dist/constants/index.js.map +1 -1
- package/dist/contract/cross-chain-reader.d.ts +14 -10
- package/dist/contract/cross-chain-reader.d.ts.map +1 -1
- package/dist/contract/cross-chain-reader.js +2 -8
- 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.d.ts +2 -2
- package/dist/contract/pipeline/internal/core.d.ts.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.d.ts +2 -2
- package/dist/contract/pipeline/internal/receipt.d.ts.map +1 -1
- package/dist/contract/pipeline/internal/receipt.js +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.d.ts +3 -3
- package/dist/contract/pipeline/service.d.ts.map +1 -1
- package/dist/contract/pipeline/service.js.map +1 -1
- package/dist/contract/pipeline/types.d.ts +2 -2
- package/dist/contract/pipeline/types.d.ts.map +1 -1
- package/dist/contract/pipeline/types.js.map +1 -1
- package/dist/contract/pipeline/write-and-track.d.ts.map +1 -1
- package/dist/contract/pipeline/write-and-track.js +5 -6
- package/dist/contract/pipeline/write-and-track.js.map +1 -1
- package/dist/contract/pipeline/write-and-wait.d.ts +1 -1
- package/dist/contract/pipeline/write-and-wait.d.ts.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.d.ts +10 -8
- package/dist/core/errors/transaction.d.ts.map +1 -1
- package/dist/core/errors/transaction.js +126 -4
- package/dist/core/errors/transaction.js.map +1 -1
- package/dist/core/errors/viem-mapper.d.ts +3 -3
- package/dist/core/errors/viem-mapper.d.ts.map +1 -1
- package/dist/core/errors/viem-mapper.js +14 -16
- 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.d.ts +3 -3
- package/dist/deploy/service.d.ts.map +1 -1
- package/dist/deploy/service.js.map +1 -1
- package/dist/eip7702/erc7579.js.map +1 -1
- package/dist/eip7702/errors.d.ts +3 -3
- package/dist/eip7702/errors.d.ts.map +1 -1
- package/dist/eip7702/errors.js +1 -1
- package/dist/eip7702/errors.js.map +1 -1
- package/dist/eip7702/index.js.map +1 -1
- package/dist/eip7702/service.d.ts +8 -8
- package/dist/eip7702/service.d.ts.map +1 -1
- package/dist/eip7702/service.js +2 -2
- 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.d.ts +1 -0
- package/dist/erc20/index.d.ts.map +1 -1
- package/dist/erc20/index.js +1 -0
- package/dist/erc20/index.js.map +1 -1
- package/dist/erc20/metadata.d.ts +16 -0
- package/dist/erc20/metadata.d.ts.map +1 -0
- package/dist/erc20/metadata.js +67 -0
- package/dist/erc20/metadata.js.map +1 -0
- 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.d.ts +2 -0
- package/dist/events/backfill.test.integration.d.ts.map +1 -0
- package/dist/events/backfill.test.integration.js +112 -0
- package/dist/events/backfill.test.integration.js.map +1 -0
- 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.d.ts +2 -0
- package/dist/events/reliable-stream-simple.test.integration.d.ts.map +1 -0
- package/dist/events/reliable-stream-simple.test.integration.js +22 -0
- package/dist/events/reliable-stream-simple.test.integration.js.map +1 -0
- package/dist/events/reliable-stream.js.map +1 -1
- package/dist/events/reliable-stream.test.integration.d.ts +2 -0
- package/dist/events/reliable-stream.test.integration.d.ts.map +1 -0
- package/dist/events/reliable-stream.test.integration.js +327 -0
- package/dist/events/reliable-stream.test.integration.js.map +1 -0
- package/dist/events/stream.js.map +1 -1
- package/dist/events/stream.test.integration.d.ts +2 -0
- package/dist/events/stream.test.integration.d.ts.map +1 -0
- package/dist/events/stream.test.integration.js +120 -0
- package/dist/events/stream.test.integration.js.map +1 -0
- package/dist/gas/errors.js.map +1 -1
- package/dist/gas/estimator.d.ts.map +1 -1
- package/dist/gas/estimator.js +75 -58
- package/dist/gas/estimator.js.map +1 -1
- package/dist/gas/index.js.map +1 -1
- package/dist/gas/service.d.ts.map +1 -1
- package/dist/gas/service.js +14 -2
- package/dist/gas/service.js.map +1 -1
- package/dist/gas/service.test.integration.d.ts +2 -0
- package/dist/gas/service.test.integration.d.ts.map +1 -0
- package/dist/gas/service.test.integration.js +152 -0
- package/dist/gas/service.test.integration.js.map +1 -0
- 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.d.ts +2 -0
- package/dist/nonce/service.test.integration.d.ts.map +1 -0
- package/dist/nonce/service.test.integration.js +141 -0
- package/dist/nonce/service.test.integration.js.map +1 -0
- 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.d.ts +2 -0
- package/dist/query/client.test.integration.d.ts.map +1 -0
- package/dist/query/client.test.integration.js +94 -0
- package/dist/query/client.test.integration.js.map +1 -0
- package/dist/query/contract-query.js.map +1 -1
- package/dist/query/contract-query.test.integration.d.ts +2 -0
- package/dist/query/contract-query.test.integration.d.ts.map +1 -0
- package/dist/query/contract-query.test.integration.js +133 -0
- package/dist/query/contract-query.test.integration.js.map +1 -0
- package/dist/query/index.js.map +1 -1
- package/dist/query/multicall-batcher.js.map +1 -1
- package/dist/react-hooks/index.d.ts +0 -2
- package/dist/react-hooks/index.d.ts.map +1 -1
- package/dist/react-hooks/index.js +0 -2
- package/dist/react-hooks/index.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/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.d.ts +2 -0
- package/dist/signature/service.test.integration.d.ts.map +1 -0
- package/dist/signature/service.test.integration.js +179 -0
- package/dist/signature/service.test.integration.js.map +1 -0
- 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.d.ts +2 -0
- package/dist/simulation/tenderly.test.integration.d.ts.map +1 -0
- package/dist/simulation/tenderly.test.integration.js +104 -0
- package/dist/simulation/tenderly.test.integration.js.map +1 -0
- 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.d.ts +1 -1
- package/dist/subscriptions/pending-tx.d.ts.map +1 -1
- package/dist/subscriptions/pending-tx.js +1 -1
- package/dist/subscriptions/pending-tx.js.map +1 -1
- package/dist/subscriptions/service.d.ts +2 -2
- package/dist/subscriptions/service.d.ts.map +1 -1
- package/dist/subscriptions/service.js +4 -4
- 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.d.ts +2 -2
- package/dist/telemetry/tracer.js +2 -2
- 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.d.ts +3 -10
- package/dist/testing-kit/mock-cross-chain-reader.d.ts.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.d.ts +2 -2
- package/dist/testing-kit/mock-subscription-service.d.ts.map +1 -1
- package/dist/testing-kit/mock-subscription-service.js +5 -5
- package/dist/testing-kit/mock-subscription-service.js.map +1 -1
- package/dist/testing-kit/mock-transfer-service.d.ts +3 -3
- package/dist/testing-kit/mock-transfer-service.d.ts.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.d.ts +8 -11
- package/dist/transfer/service.d.ts.map +1 -1
- package/dist/transfer/service.js +32 -13
- package/dist/transfer/service.js.map +1 -1
- package/dist/tx/fees.d.ts.map +1 -1
- package/dist/tx/fees.js +3 -0
- package/dist/tx/fees.js.map +1 -1
- package/dist/tx/index.js.map +1 -1
- package/dist/tx/manager.d.ts +3 -2
- package/dist/tx/manager.d.ts.map +1 -1
- package/dist/tx/manager.js +232 -216
- package/dist/tx/manager.js.map +1 -1
- package/dist/tx/manager.test.integration.d.ts +2 -0
- package/dist/tx/manager.test.integration.d.ts.map +1 -0
- package/dist/tx/manager.test.integration.js +177 -0
- package/dist/tx/manager.test.integration.js.map +1 -0
- package/dist/tx/policy.d.ts +1 -1
- package/dist/tx/policy.d.ts.map +1 -1
- package/dist/tx/policy.js.map +1 -1
- package/dist/tx/replacement.d.ts +3 -3
- package/dist/tx/replacement.d.ts.map +1 -1
- package/dist/tx/replacement.js +3 -3
- package/dist/tx/replacement.js.map +1 -1
- package/dist/tx/tracker.d.ts +6 -6
- package/dist/tx/tracker.d.ts.map +1 -1
- package/dist/tx/tracker.js +9 -9
- 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.d.ts +1 -1
- package/dist/types/params.d.ts.map +1 -1
- package/dist/types/params.js.map +1 -1
- package/dist/types/tx-overrides.d.ts +1 -1
- package/dist/types/tx-overrides.d.ts.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.d.ts +3 -3
- package/dist/wallet/errors.d.ts.map +1 -1
- package/dist/wallet/errors.js +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.d.ts +2 -2
- package/dist/wallet/operations.d.ts.map +1 -1
- package/dist/wallet/operations.js +8 -15
- package/dist/wallet/operations.js.map +1 -1
- package/dist/wallet/provider-ref.js.map +1 -1
- package/dist/wallet/service.d.ts +2 -2
- package/dist/wallet/service.d.ts.map +1 -1
- package/dist/wallet/service.js.map +1 -1
- package/dist/wallet/types.js.map +1 -1
- package/package.json +25 -14
- 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/react-hooks/use-safe-context.d.ts +0 -2
- package/dist/react-hooks/use-safe-context.d.ts.map +0 -1
- package/dist/react-hooks/use-safe-context.js +0 -41
- package/dist/react-hooks/use-safe-context.js.map +0 -1
- package/dist/safe/adapter.d.ts +0 -9
- package/dist/safe/adapter.d.ts.map +0 -1
- package/dist/safe/adapter.js +0 -13
- package/dist/safe/adapter.js.map +0 -1
- package/dist/safe/detection.d.ts +0 -26
- package/dist/safe/detection.d.ts.map +0 -1
- package/dist/safe/detection.js +0 -102
- package/dist/safe/detection.js.map +0 -1
- package/dist/safe/errors.d.ts +0 -79
- package/dist/safe/errors.d.ts.map +0 -1
- package/dist/safe/errors.js +0 -34
- package/dist/safe/errors.js.map +0 -1
- package/dist/safe/index.d.ts +0 -8
- package/dist/safe/index.d.ts.map +0 -1
- package/dist/safe/index.js +0 -6
- package/dist/safe/index.js.map +0 -1
- package/dist/safe/live.d.ts +0 -8
- package/dist/safe/live.d.ts.map +0 -1
- package/dist/safe/live.js +0 -250
- package/dist/safe/live.js.map +0 -1
- package/dist/safe/service.d.ts +0 -26
- package/dist/safe/service.d.ts.map +0 -1
- package/dist/safe/service.js +0 -4
- package/dist/safe/service.js.map +0 -1
- package/dist/safe/simulation/abis.d.ts +0 -73
- package/dist/safe/simulation/abis.d.ts.map +0 -1
- package/dist/safe/simulation/abis.js +0 -61
- package/dist/safe/simulation/abis.js.map +0 -1
- package/dist/safe/simulation/addresses.d.ts +0 -4
- package/dist/safe/simulation/addresses.d.ts.map +0 -1
- package/dist/safe/simulation/addresses.js +0 -40
- package/dist/safe/simulation/addresses.js.map +0 -1
- package/dist/safe/simulation/encoding.d.ts +0 -16
- package/dist/safe/simulation/encoding.d.ts.map +0 -1
- package/dist/safe/simulation/encoding.js +0 -36
- package/dist/safe/simulation/encoding.js.map +0 -1
- package/dist/safe/simulation/errors.d.ts +0 -56
- package/dist/safe/simulation/errors.d.ts.map +0 -1
- package/dist/safe/simulation/errors.js +0 -37
- package/dist/safe/simulation/errors.js.map +0 -1
- package/dist/safe/simulation/index.d.ts +0 -7
- package/dist/safe/simulation/index.d.ts.map +0 -1
- package/dist/safe/simulation/index.js +0 -6
- package/dist/safe/simulation/index.js.map +0 -1
- package/dist/safe/simulation/service.d.ts +0 -14
- package/dist/safe/simulation/service.d.ts.map +0 -1
- package/dist/safe/simulation/service.js +0 -140
- package/dist/safe/simulation/service.js.map +0 -1
- package/dist/safe/simulation/types.d.ts +0 -20
- package/dist/safe/simulation/types.d.ts.map +0 -1
- package/dist/safe/simulation/types.js +0 -2
- package/dist/safe/simulation/types.js.map +0 -1
- package/dist/safe/types.d.ts +0 -61
- package/dist/safe/types.d.ts.map +0 -1
- package/dist/safe/types.js +0 -2
- package/dist/safe/types.js.map +0 -1
|
@@ -22,13 +22,13 @@ const defaultConfig = {
|
|
|
22
22
|
const stream = yield* defaultConfig.watchLogs(watchParams);
|
|
23
23
|
return { stateRef, stream };
|
|
24
24
|
}),
|
|
25
|
-
|
|
26
|
-
|
|
25
|
+
watchPendingTxs: () => Effect.succeed(Stream.empty),
|
|
26
|
+
watchPendingTxsRetrying: (params) => Effect.gen(function* () {
|
|
27
27
|
const stateRef = yield* SubscriptionRef.make({
|
|
28
28
|
status: "connected",
|
|
29
29
|
});
|
|
30
30
|
const { retry: _retry, ...watchParams } = params;
|
|
31
|
-
const stream = yield* defaultConfig.
|
|
31
|
+
const stream = yield* defaultConfig.watchPendingTxs(watchParams);
|
|
32
32
|
return { stateRef, stream };
|
|
33
33
|
}),
|
|
34
34
|
};
|
|
@@ -43,7 +43,7 @@ export const makeMockSubscriptionServiceLayer = (config = {}, supportedChainId =
|
|
|
43
43
|
watchBlocksRetrying: withChainIdCheck(supportedChainId, merged.watchBlocksRetrying),
|
|
44
44
|
watchLogs: withChainIdCheck(supportedChainId, merged.watchLogs),
|
|
45
45
|
watchLogsRetrying: withChainIdCheck(supportedChainId, merged.watchLogsRetrying),
|
|
46
|
-
|
|
47
|
-
|
|
46
|
+
watchPendingTxs: withChainIdCheck(supportedChainId, merged.watchPendingTxs),
|
|
47
|
+
watchPendingTxsRetrying: withChainIdCheck(supportedChainId, merged.watchPendingTxsRetrying),
|
|
48
48
|
}));
|
|
49
49
|
//# sourceMappingURL=mock-subscription-service.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mock-subscription-service.js","sourceRoot":"","sources":["../../src/testing-kit/mock-subscription-service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AAEzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAK1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AA4DtE,MAAM,aAAa,GAA4C;IAC7D,YAAY,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;IACzC,WAAW,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;IAC/C,mBAAmB,EAAE,CAAC,MAAM,EAAE,EAAE,CAC9B,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAClB,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,eAAe,CAAC,IAAI,CAA8B;YACxE,MAAM,EAAE,WAAW;SACpB,CAAC,CAAC;QACH,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,WAAW,EAAE,GAAG,MAAM,CAAC;QACjD,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,aAAa,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QAC7D,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;IAC9B,CAAC,CAAC;IACJ,SAAS,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;IAC7C,iBAAiB,EAAE,CAAC,MAAM,EAAE,EAAE,CAC5B,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAClB,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,eAAe,CAAC,IAAI,CAA8B;YACxE,MAAM,EAAE,WAAW;SACpB,CAAC,CAAC;QACH,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,WAAW,EAAE,GAAG,MAAM,CAAC;QACjD,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,aAAa,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;QAC3D,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;IAC9B,CAAC,CAAC;IACJ,
|
|
1
|
+
{"version":3,"file":"mock-subscription-service.js","sourceRoot":"","sources":["../../src/testing-kit/mock-subscription-service.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Layer } from \"effect\";\nimport { Effect, Stream, SubscriptionRef } from \"effect\";\nimport type { Address, Block, Hash, Hex, Log } from \"viem\";\nimport { ClientNotFoundError } from \"@/src/core/index.js\";\nimport type {\n SubscriptionConnectionState,\n SubscriptionRetryConfig,\n} from \"@/src/subscriptions/index.js\";\nimport { SubscriptionService } from \"@/src/subscriptions/index.js\";\nimport { makeMockServiceLayer, withChainIdCheck } from \"./helpers.js\";\n\n/**\n * Configuration for the mock SubscriptionService\n *\n * All methods are optional - sensible defaults are provided.\n * Override specific methods to customize mock behavior for your tests.\n */\nexport type MockSubscriptionServiceConfig = {\n watchBlocks?: (params: {\n chainId: number;\n includeTransactions?: boolean;\n pollingInterval?: number;\n }) => Effect.Effect<Stream.Stream<Block, never>>;\n\n watchLogs?: (params: {\n chainId: number;\n address?: Address | Address[];\n topics?: (Hex | Hex[] | null)[];\n pollingInterval?: number;\n }) => Effect.Effect<Stream.Stream<Log, never>>;\n\n watchPendingTxs?: (params: {\n chainId: number;\n pollingInterval?: number;\n }) => Effect.Effect<Stream.Stream<Hash, never>>;\n\n watchBlocksRetrying?: (params: {\n chainId: number;\n includeTransactions?: boolean;\n pollingInterval?: number;\n retry?: SubscriptionRetryConfig;\n }) => Effect.Effect<{\n stateRef: SubscriptionRef.SubscriptionRef<SubscriptionConnectionState>;\n stream: Stream.Stream<Block, never>;\n }>;\n\n watchLogsRetrying?: (params: {\n chainId: number;\n address?: Address | Address[];\n topics?: (Hex | Hex[] | null)[];\n pollingInterval?: number;\n retry?: SubscriptionRetryConfig;\n }) => Effect.Effect<{\n stateRef: SubscriptionRef.SubscriptionRef<SubscriptionConnectionState>;\n stream: Stream.Stream<Log, never>;\n }>;\n\n watchPendingTxsRetrying?: (params: {\n chainId: number;\n pollingInterval?: number;\n retry?: SubscriptionRetryConfig;\n }) => Effect.Effect<{\n stateRef: SubscriptionRef.SubscriptionRef<SubscriptionConnectionState>;\n stream: Stream.Stream<Hash, never>;\n }>;\n\n hasWebSocket?: (chainId: number) => Effect.Effect<boolean>;\n};\n\nconst defaultConfig: Required<MockSubscriptionServiceConfig> = {\n hasWebSocket: () => Effect.succeed(false),\n watchBlocks: () => Effect.succeed(Stream.empty),\n watchBlocksRetrying: (params) =>\n Effect.gen(function* () {\n const stateRef = yield* SubscriptionRef.make<SubscriptionConnectionState>({\n status: \"connected\",\n });\n const { retry: _retry, ...watchParams } = params;\n const stream = yield* defaultConfig.watchBlocks(watchParams);\n return { stateRef, stream };\n }),\n watchLogs: () => Effect.succeed(Stream.empty),\n watchLogsRetrying: (params) =>\n Effect.gen(function* () {\n const stateRef = yield* SubscriptionRef.make<SubscriptionConnectionState>({\n status: \"connected\",\n });\n const { retry: _retry, ...watchParams } = params;\n const stream = yield* defaultConfig.watchLogs(watchParams);\n return { stateRef, stream };\n }),\n watchPendingTxs: () => Effect.succeed(Stream.empty),\n watchPendingTxsRetrying: (params) =>\n Effect.gen(function* () {\n const stateRef = yield* SubscriptionRef.make<SubscriptionConnectionState>({\n status: \"connected\",\n });\n const { retry: _retry, ...watchParams } = params;\n const stream = yield* defaultConfig.watchPendingTxs(watchParams);\n return { stateRef, stream };\n }),\n};\n\n/**\n * Creates a mock SubscriptionService layer for testing\n *\n * @param config - Optional configuration to override default mock behaviors\n * @param supportedChainId - The chainId this mock supports (default: 1 mainnet)\n *\n * @example\n * ```typescript\n * // Basic usage with defaults\n * const layer = makeMockSubscriptionServiceLayer();\n *\n * // Override specific methods\n * const layer = makeMockSubscriptionServiceLayer({\n * watchBlocks: () => Effect.succeed(Stream.make({ number: 1000n })),\n * hasWebSocket: () => Effect.succeed(true),\n * });\n *\n * // Use in tests\n * Effect.gen(function* () {\n * const subscriptions = yield* SubscriptionService;\n * const blockStream = yield* subscriptions.watchBlocks({ chainId: mainnet.id });\n * }).pipe(Effect.provide(layer));\n * ```\n */\nexport const makeMockSubscriptionServiceLayer = (\n config: MockSubscriptionServiceConfig = {},\n supportedChainId = 1\n): Layer.Layer<SubscriptionService> =>\n makeMockServiceLayer(SubscriptionService, defaultConfig, config, (merged) => ({\n // hasWebSocket takes chainId directly (not a params object), so we handle it separately\n hasWebSocket: (chainId) =>\n chainId === supportedChainId\n ? merged.hasWebSocket(chainId)\n : Effect.fail(\n new ClientNotFoundError({\n chainId,\n message: `No client configured for chain ID ${chainId}`,\n })\n ),\n\n // Methods that take params with chainId - use the helper\n watchBlocks: withChainIdCheck(supportedChainId, merged.watchBlocks),\n watchBlocksRetrying: withChainIdCheck(supportedChainId, merged.watchBlocksRetrying),\n watchLogs: withChainIdCheck(supportedChainId, merged.watchLogs),\n watchLogsRetrying: withChainIdCheck(supportedChainId, merged.watchLogsRetrying),\n watchPendingTxs: withChainIdCheck(supportedChainId, merged.watchPendingTxs),\n watchPendingTxsRetrying: withChainIdCheck(supportedChainId, merged.watchPendingTxsRetrying),\n }));\n"]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { Layer } from "effect";
|
|
2
2
|
import { Effect } from "effect";
|
|
3
3
|
import type { Address, Hash, TransactionReceipt } from "viem";
|
|
4
|
-
import type { ClientNotFoundError, InsufficientFundsError, ReceiptTimeoutError,
|
|
4
|
+
import type { ClientNotFoundError, InsufficientFundsError, ReceiptTimeoutError, TxFailedError, UserRejectedError, WalletNotConnectedError, WrongNetworkError } from "../core/index.js";
|
|
5
5
|
import type { TransferOverrides } from "../transfer/index.js";
|
|
6
6
|
import { TransferService } from "../transfer/index.js";
|
|
7
7
|
export type MockTransferServiceConfig = {
|
|
@@ -10,14 +10,14 @@ export type MockTransferServiceConfig = {
|
|
|
10
10
|
to: Address;
|
|
11
11
|
value: bigint;
|
|
12
12
|
overrides?: TransferOverrides;
|
|
13
|
-
}) => Effect.Effect<Hash, InsufficientFundsError | UserRejectedError | WalletNotConnectedError | WrongNetworkError | ClientNotFoundError |
|
|
13
|
+
}) => Effect.Effect<Hash, InsufficientFundsError | UserRejectedError | WalletNotConnectedError | WrongNetworkError | ClientNotFoundError | TxFailedError>;
|
|
14
14
|
sendAndWait?: (params: {
|
|
15
15
|
chainId: number;
|
|
16
16
|
to: Address;
|
|
17
17
|
value: bigint;
|
|
18
18
|
confirmations?: number;
|
|
19
19
|
overrides?: TransferOverrides;
|
|
20
|
-
}) => Effect.Effect<TransactionReceipt, InsufficientFundsError | UserRejectedError | WalletNotConnectedError | WrongNetworkError | ClientNotFoundError |
|
|
20
|
+
}) => Effect.Effect<TransactionReceipt, InsufficientFundsError | UserRejectedError | WalletNotConnectedError | WrongNetworkError | ClientNotFoundError | TxFailedError | ReceiptTimeoutError>;
|
|
21
21
|
estimateGas?: (params: {
|
|
22
22
|
chainId: number;
|
|
23
23
|
to: Address;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mock-transfer-service.d.ts","sourceRoot":"","sources":["../../src/testing-kit/mock-transfer-service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,kBAAkB,EAAE,MAAM,MAAM,CAAC;AAE9D,OAAO,KAAK,EACV,mBAAmB,EACnB,sBAAsB,EACtB,mBAAmB,EACnB,
|
|
1
|
+
{"version":3,"file":"mock-transfer-service.d.ts","sourceRoot":"","sources":["../../src/testing-kit/mock-transfer-service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,kBAAkB,EAAE,MAAM,MAAM,CAAC;AAE9D,OAAO,KAAK,EACV,mBAAmB,EACnB,sBAAsB,EACtB,mBAAmB,EACnB,aAAa,EACb,iBAAiB,EACjB,uBAAuB,EACvB,iBAAiB,EAClB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAW1D,MAAM,MAAM,yBAAyB,GAAG;IACtC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,EAAE,EAAE,OAAO,CAAC;QACZ,KAAK,EAAE,MAAM,CAAC;QACd,SAAS,CAAC,EAAE,iBAAiB,CAAC;KAC/B,KAAK,MAAM,CAAC,MAAM,CACjB,IAAI,EACF,sBAAsB,GACtB,iBAAiB,GACjB,uBAAuB,GACvB,iBAAiB,GACjB,mBAAmB,GACnB,aAAa,CAChB,CAAC;IAEF,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE;QACrB,OAAO,EAAE,MAAM,CAAC;QAChB,EAAE,EAAE,OAAO,CAAC;QACZ,KAAK,EAAE,MAAM,CAAC;QACd,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,SAAS,CAAC,EAAE,iBAAiB,CAAC;KAC/B,KAAK,MAAM,CAAC,MAAM,CACjB,kBAAkB,EAChB,sBAAsB,GACtB,iBAAiB,GACjB,uBAAuB,GACvB,iBAAiB,GACjB,mBAAmB,GACnB,aAAa,GACb,mBAAmB,CACtB,CAAC;IAEF,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE;QACrB,OAAO,EAAE,MAAM,CAAC;QAChB,EAAE,EAAE,OAAO,CAAC;QACZ,KAAK,EAAE,MAAM,CAAC;KACf,KAAK,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;CAClD,CAAC;AAsCF,eAAO,MAAM,4BAA4B,GACvC,SAAQ,yBAA8B,EACtC,yBAAoB,KACnB,KAAK,CAAC,KAAK,CAAC,eAAe,CAKzB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mock-transfer-service.js","sourceRoot":"","sources":["../../src/testing-kit/mock-transfer-service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAWtD,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAgDtE,MAAM,aAAa,GAAwC;IACzD,WAAW,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC;IAC7C,IAAI,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC;IACxC,WAAW,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,YAAkC,CAAC;CACtE,CAAC;AAgCF,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAC1C,SAAoC,EAAE,EACtC,gBAAgB,GAAG,CAAC,EACU,EAAE,CAChC,oBAAoB,CAAC,eAAe,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACxE,WAAW,EAAE,gBAAgB,CAAC,gBAAgB,EAAE,MAAM,CAAC,WAAW,CAAC;IACnE,IAAI,EAAE,gBAAgB,CAAC,gBAAgB,EAAE,MAAM,CAAC,IAAI,CAAC;IACrD,WAAW,EAAE,gBAAgB,CAAC,gBAAgB,EAAE,MAAM,CAAC,WAAW,CAAC;CACpE,CAAC,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"mock-transfer-service.js","sourceRoot":"","sources":["../../src/testing-kit/mock-transfer-service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAWtD,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAgDtE,MAAM,aAAa,GAAwC;IACzD,WAAW,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC;IAC7C,IAAI,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC;IACxC,WAAW,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,YAAkC,CAAC;CACtE,CAAC;AAgCF,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAC1C,SAAoC,EAAE,EACtC,gBAAgB,GAAG,CAAC,EACU,EAAE,CAChC,oBAAoB,CAAC,eAAe,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACxE,WAAW,EAAE,gBAAgB,CAAC,gBAAgB,EAAE,MAAM,CAAC,WAAW,CAAC;IACnE,IAAI,EAAE,gBAAgB,CAAC,gBAAgB,EAAE,MAAM,CAAC,IAAI,CAAC;IACrD,WAAW,EAAE,gBAAgB,CAAC,gBAAgB,EAAE,MAAM,CAAC,WAAW,CAAC;CACpE,CAAC,CAAC,CAAC","sourcesContent":["import type { Layer } from \"effect\";\nimport { Effect } from \"effect\";\nimport type { Address, Hash, TransactionReceipt } from \"viem\";\nimport { MIN_TX_GAS } from \"@/src/constants/index.js\";\nimport type {\n ClientNotFoundError,\n InsufficientFundsError,\n ReceiptTimeoutError,\n TxFailedError,\n UserRejectedError,\n WalletNotConnectedError,\n WrongNetworkError,\n} from \"@/src/core/index.js\";\nimport type { TransferOverrides } from \"@/src/transfer/index.js\";\nimport { TransferService } from \"@/src/transfer/index.js\";\nimport { TEST_TX_HASH } from \"./_fixtures/addresses.js\";\nimport { TEST_RECEIPT } from \"./_fixtures/receipts.js\";\nimport { makeMockServiceLayer, withChainIdCheck } from \"./helpers.js\";\n\n/**\n * Configuration for the mock TransferService\n *\n * All methods are optional - sensible defaults are provided.\n * Override specific methods to customize mock behavior for your tests.\n */\nexport type MockTransferServiceConfig = {\n send?: (params: {\n chainId: number;\n to: Address;\n value: bigint;\n overrides?: TransferOverrides;\n }) => Effect.Effect<\n Hash,\n | InsufficientFundsError\n | UserRejectedError\n | WalletNotConnectedError\n | WrongNetworkError\n | ClientNotFoundError\n | TxFailedError\n >;\n\n sendAndWait?: (params: {\n chainId: number;\n to: Address;\n value: bigint;\n confirmations?: number;\n overrides?: TransferOverrides;\n }) => Effect.Effect<\n TransactionReceipt,\n | InsufficientFundsError\n | UserRejectedError\n | WalletNotConnectedError\n | WrongNetworkError\n | ClientNotFoundError\n | TxFailedError\n | ReceiptTimeoutError\n >;\n\n estimateGas?: (params: {\n chainId: number;\n to: Address;\n value: bigint;\n }) => Effect.Effect<bigint, ClientNotFoundError>;\n};\n\nconst defaultConfig: Required<MockTransferServiceConfig> = {\n estimateGas: () => Effect.succeed(MIN_TX_GAS),\n send: () => Effect.succeed(TEST_TX_HASH),\n sendAndWait: () => Effect.succeed(TEST_RECEIPT as TransactionReceipt),\n};\n\n/**\n * Creates a mock TransferService layer for testing\n *\n * @param config - Optional configuration to override default mock behaviors\n * @param supportedChainId - The chainId this mock supports (default: 1 mainnet)\n *\n * @example\n * ```typescript\n * // Basic usage with defaults\n * const layer = makeMockTransferServiceLayer();\n *\n * // Override specific methods\n * const layer = makeMockTransferServiceLayer({\n * send: () => Effect.succeed(\"0x123...\"),\n * estimateGas: () => Effect.succeed(21000n),\n * });\n *\n * // Use in tests\n * Effect.gen(function* () {\n * const transferService = yield* TransferService;\n * const hash = yield* transferService.send({\n * chainId: mainnet.id,\n * to: \"0x...\",\n * value: 1000000000000000000n, // 1 ETH\n * });\n * }).pipe(\n * Effect.provide(layer)\n * );\n * ```\n */\nexport const makeMockTransferServiceLayer = (\n config: MockTransferServiceConfig = {},\n supportedChainId = 1\n): Layer.Layer<TransferService> =>\n makeMockServiceLayer(TransferService, defaultConfig, config, (merged) => ({\n estimateGas: withChainIdCheck(supportedChainId, merged.estimateGas),\n send: withChainIdCheck(supportedChainId, merged.send),\n sendAndWait: withChainIdCheck(supportedChainId, merged.sendAndWait),\n }));\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mock-wallet-client.js","sourceRoot":"","sources":["../../src/testing-kit/mock-wallet-client.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAG/B,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAsBvD,MAAM,eAAe,GAAG,4CAAuD,CAAC;AAChF,MAAM,YAAY,GAAG,oEAA4E,CAAC;AAClG,MAAM,iBAAiB,GACrB,oIAA2I,CAAC;AA4B9I,MAAM,CAAC,MAAM,yBAAyB,GAAG,CACvC,SAAiC,EAAE,EACnC,gBAAgB,GAAG,CAAC,EACc,EAAE;IAEpC,MAAM,aAAa,GAAG,MAAM,CAAC,aAAa,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,YAAY,CAAC,CAAC;IACzE,MAAM,eAAe,GAAG,MAAM,CAAC,eAAe,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,YAAY,CAAC,CAAC;IAG7E,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,iBAAiB,CAAC,CAAC;IAC1E,MAAM,aAAa,GAAG,MAAM,CAAC,aAAa,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,iBAAiB,CAAC,CAAC;IAC9E,MAAM,eAAe,GAAG,MAAM,CAAC,eAAe,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,iBAAiB,CAAC,CAAC;IAGlF,MAAM,cAAc,GAAG,MAAM,CAAC,cAAc,IAAI,eAAe,CAAC;IAGhE,MAAM,gBAAgB,GAAG;QACvB,OAAO,EAAE;YACP,OAAO,EAAE,cAAc;YACvB,IAAI,EAAE,UAAU;SACjB;QACD,KAAK,EAAE,EAAE,EAAE,EAAE,gBAAgB,EAAE;QAC/B,eAAe;QACf,WAAW;QACX,eAAe;QACf,aAAa;QACb,aAAa;KAON,CAAC;IAEV,OAAO,KAAK,CAAC,OAAO,CAClB,mBAAmB,EACnB,mBAAmB,CAAC,EAAE,CAAC;QACrB,GAAG,EAAE,uBAAuB,CAAC,gBAAgB,EAAE,GAAG,EAAE,CAAC,gBAAgB,CAAC;KACvE,CAAC,CACH,CAAC;AACJ,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"mock-wallet-client.js","sourceRoot":"","sources":["../../src/testing-kit/mock-wallet-client.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAG/B,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAsBvD,MAAM,eAAe,GAAG,4CAAuD,CAAC;AAChF,MAAM,YAAY,GAAG,oEAA4E,CAAC;AAClG,MAAM,iBAAiB,GACrB,oIAA2I,CAAC;AA4B9I,MAAM,CAAC,MAAM,yBAAyB,GAAG,CACvC,SAAiC,EAAE,EACnC,gBAAgB,GAAG,CAAC,EACc,EAAE;IAEpC,MAAM,aAAa,GAAG,MAAM,CAAC,aAAa,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,YAAY,CAAC,CAAC;IACzE,MAAM,eAAe,GAAG,MAAM,CAAC,eAAe,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,YAAY,CAAC,CAAC;IAG7E,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,iBAAiB,CAAC,CAAC;IAC1E,MAAM,aAAa,GAAG,MAAM,CAAC,aAAa,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,iBAAiB,CAAC,CAAC;IAC9E,MAAM,eAAe,GAAG,MAAM,CAAC,eAAe,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,iBAAiB,CAAC,CAAC;IAGlF,MAAM,cAAc,GAAG,MAAM,CAAC,cAAc,IAAI,eAAe,CAAC;IAGhE,MAAM,gBAAgB,GAAG;QACvB,OAAO,EAAE;YACP,OAAO,EAAE,cAAc;YACvB,IAAI,EAAE,UAAU;SACjB;QACD,KAAK,EAAE,EAAE,EAAE,EAAE,gBAAgB,EAAE;QAC/B,eAAe;QACf,WAAW;QACX,eAAe;QACf,aAAa;QACb,aAAa;KAON,CAAC;IAEV,OAAO,KAAK,CAAC,OAAO,CAClB,mBAAmB,EACnB,mBAAmB,CAAC,EAAE,CAAC;QACrB,GAAG,EAAE,uBAAuB,CAAC,gBAAgB,EAAE,GAAG,EAAE,CAAC,gBAAgB,CAAC;KACvE,CAAC,CACH,CAAC;AACJ,CAAC,CAAC","sourcesContent":["import type { Effect } from \"effect\";\nimport { Layer } from \"effect\";\nimport type { Address, Hash, Hex, TypedData } from \"viem\";\nimport type { WalletClientServiceShape } from \"@/src/core/index.js\";\nimport { WalletClientService } from \"@/src/core/index.js\";\nimport { makeWalletChainIdGetter } from \"./helpers.js\";\n\n/**\n * Configuration for the mock WalletClient\n *\n * All methods are optional - sensible defaults are provided.\n * Override specific methods to customize mock behavior for your tests.\n */\nexport type MockWalletClientConfig = {\n // Contract methods\n writeContract?: (params: unknown) => Promise<Hash>;\n sendTransaction?: (params: unknown) => Promise<Hash>;\n\n // Signing methods\n signMessage?: (params: { message: string | Hex }) => Promise<Hex>;\n signTypedData?: (params: { typedData: TypedData }) => Promise<Hex>;\n signTransaction?: (params: unknown) => Promise<Hex>;\n\n // Account config\n accountAddress?: Address;\n};\n\nconst DEFAULT_ADDRESS = \"0x1234567890123456789012345678901234567890\" as Address;\nconst DEFAULT_HASH = \"0xdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef\" as Hash;\nconst DEFAULT_SIGNATURE =\n \"0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001b\" as Hex;\n\n/**\n * Creates a mock WalletClientService layer for testing\n *\n * @param config - Optional configuration to override default mock behaviors\n * @param supportedChainId - The chainId this mock supports (default: 1 mainnet)\n *\n * @example\n * ```typescript\n * // Basic usage with defaults\n * const layer = makeMockWalletClientLayer();\n *\n * // Override specific methods\n * const layer = makeMockWalletClientLayer({\n * writeContract: async () => \"0xtxhash...\",\n * accountAddress: \"0xmyaddress...\",\n * });\n *\n * // Use in tests\n * Effect.gen(function* () {\n * const writer = yield* ContractWriter;\n * const hash = yield* writer.write({ ... });\n * }).pipe(\n * Effect.provide(Layer.provide(ContractWriterLive, layer))\n * );\n * ```\n */\nexport const makeMockWalletClientLayer = (\n config: MockWalletClientConfig = {},\n supportedChainId = 1\n): Layer.Layer<WalletClientService> => {\n // Contract defaults\n const writeContract = config.writeContract ?? (async () => DEFAULT_HASH);\n const sendTransaction = config.sendTransaction ?? (async () => DEFAULT_HASH);\n\n // Signing defaults\n const signMessage = config.signMessage ?? (async () => DEFAULT_SIGNATURE);\n const signTypedData = config.signTypedData ?? (async () => DEFAULT_SIGNATURE);\n const signTransaction = config.signTransaction ?? (async () => DEFAULT_SIGNATURE);\n\n // Account config\n const accountAddress = config.accountAddress ?? DEFAULT_ADDRESS;\n\n // Create mock WalletClient\n const mockWalletClient = {\n account: {\n address: accountAddress,\n type: \"json-rpc\",\n },\n chain: { id: supportedChainId },\n sendTransaction,\n signMessage,\n signTransaction,\n signTypedData,\n writeContract,\n } as unknown as ReturnType<WalletClientServiceShape[\"get\"]> extends Effect.Effect<\n infer A,\n infer _E,\n infer _R\n >\n ? A\n : never;\n\n return Layer.succeed(\n WalletClientService,\n WalletClientService.of({\n get: makeWalletChainIdGetter(supportedChainId, () => mockWalletClient),\n })\n );\n};\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mock-wallet-provider.js","sourceRoot":"","sources":["../../src/testing-kit/mock-wallet-provider.ts"],"names":[],"mappings":"AAcA,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,SAAmC,EAAE,EAAkB,EAAE,CAAC,CAAC;IAChG,EAAE,EAAE,MAAM,CAAC,EAAE;IACb,cAAc,EAAE,MAAM,CAAC,cAAc;IACrC,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;CAC9D,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"mock-wallet-provider.js","sourceRoot":"","sources":["../../src/testing-kit/mock-wallet-provider.ts"],"names":[],"mappings":"AAcA,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,SAAmC,EAAE,EAAkB,EAAE,CAAC,CAAC;IAChG,EAAE,EAAE,MAAM,CAAC,EAAE;IACb,cAAc,EAAE,MAAM,CAAC,cAAc;IACrC,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;CAC9D,CAAC,CAAC","sourcesContent":["import type { WalletProvider } from \"@/src/wallet/index.js\";\n\nexport type MockWalletProviderConfig = {\n request?: (args: {\n method: string;\n params?: unknown[] | Record<string, unknown>;\n }) => Promise<unknown>;\n on?: (event: string, handler: (...args: unknown[]) => void) => void;\n removeListener?: (event: string, handler: (...args: unknown[]) => void) => void;\n};\n\n/**\n * Creates a mock WalletProvider for testing wallet connection flows\n */\nexport const makeMockWalletProvider = (config: MockWalletProviderConfig = {}): WalletProvider => ({\n on: config.on,\n removeListener: config.removeListener,\n request: config.request ?? (() => Promise.resolve(undefined)),\n});\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-layer.js","sourceRoot":"","sources":["../../src/testing-kit/test-layer.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"test-layer.js","sourceRoot":"","sources":["../../src/testing-kit/test-layer.ts"],"names":[],"mappings":"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","sourcesContent":["import { FetchHttpClient } from \"@effect/platform\";\nimport { Layer } from \"effect\";\nimport { mainnet } from \"viem/chains\";\nimport type { BalanceService } from \"@/src/balance/index.js\";\nimport { BalanceServiceLive } from \"@/src/balance/index.js\";\nimport type { BlockService } from \"@/src/block/index.js\";\nimport { BlockServiceLive } from \"@/src/block/index.js\";\nimport type { ContractPipeline, ContractReader, ContractWriter } from \"@/src/contract/index.js\";\nimport {\n ContractPipelineLive,\n ContractReaderLive,\n ContractWriterLive,\n} from \"@/src/contract/index.js\";\nimport type { PublicClientService, WalletClientService } from \"@/src/core/index.js\";\nimport type { DeployService } from \"@/src/deploy/index.js\";\nimport { DeployServiceLive } from \"@/src/deploy/index.js\";\nimport type { EnsResolver } from \"@/src/ens/index.js\";\nimport { EnsResolverLive } from \"@/src/ens/index.js\";\nimport type { Erc721Service } from \"@/src/erc721/index.js\";\nimport { Erc721ServiceLive } from \"@/src/erc721/index.js\";\nimport type { EventStream, ReliableEventStream } from \"@/src/events/index.js\";\nimport { EventStreamLive, ReliableEventStreamLive } from \"@/src/events/index.js\";\nimport type { GasService } from \"@/src/gas/index.js\";\nimport { GasServiceLive } from \"@/src/gas/index.js\";\nimport type { NonceService } from \"@/src/nonce/index.js\";\nimport { NonceServiceLive } from \"@/src/nonce/index.js\";\nimport type { SignatureService } from \"@/src/signature/index.js\";\nimport { SignatureServiceLive } from \"@/src/signature/index.js\";\nimport type { SimulationService } from \"@/src/simulation/index.js\";\nimport { SimulationServiceLive } from \"@/src/simulation/index.js\";\nimport type { SubscriptionService } from \"@/src/subscriptions/index.js\";\nimport { SubscriptionServiceLive } from \"@/src/subscriptions/index.js\";\nimport type { MockBalanceServiceConfig } from \"@/src/testing-kit/mock-balance-service.js\";\nimport { makeMockBalanceServiceLayer } from \"@/src/testing-kit/mock-balance-service.js\";\nimport type { MockBlockServiceConfig } from \"@/src/testing-kit/mock-block-service.js\";\nimport { makeMockBlockServiceLayer } from \"@/src/testing-kit/mock-block-service.js\";\nimport type { MockDeployServiceConfig } from \"@/src/testing-kit/mock-deploy-service.js\";\nimport { makeMockDeployServiceLayer } from \"@/src/testing-kit/mock-deploy-service.js\";\nimport type { MockErc721ServiceConfig } from \"@/src/testing-kit/mock-erc721-service.js\";\nimport { makeMockErc721ServiceLayer } from \"@/src/testing-kit/mock-erc721-service.js\";\nimport type { MockGasServiceConfig } from \"@/src/testing-kit/mock-gas-service.js\";\nimport { makeMockGasServiceLayer } from \"@/src/testing-kit/mock-gas-service.js\";\nimport type { MockNonceServiceConfig } from \"@/src/testing-kit/mock-nonce-service.js\";\nimport { makeMockNonceServiceLayer } from \"@/src/testing-kit/mock-nonce-service.js\";\nimport type { MockPublicClientConfig } from \"@/src/testing-kit/mock-public-client.js\";\nimport { makeMockPublicClientLayer } from \"@/src/testing-kit/mock-public-client.js\";\nimport type { MockSignatureServiceConfig } from \"@/src/testing-kit/mock-signature-service.js\";\nimport { makeMockSignatureServiceLayer } from \"@/src/testing-kit/mock-signature-service.js\";\nimport type { MockSimulationServiceConfig } from \"@/src/testing-kit/mock-simulation-service.js\";\nimport { makeMockSimulationServiceLayer } from \"@/src/testing-kit/mock-simulation-service.js\";\nimport type { MockSubscriptionServiceConfig } from \"@/src/testing-kit/mock-subscription-service.js\";\nimport { makeMockSubscriptionServiceLayer } from \"@/src/testing-kit/mock-subscription-service.js\";\nimport type { MockWalletClientConfig } from \"@/src/testing-kit/mock-wallet-client.js\";\nimport { makeMockWalletClientLayer } from \"@/src/testing-kit/mock-wallet-client.js\";\nimport type { TxManager, TxReplacement } from \"@/src/tx/index.js\";\nimport { TxManagerLive, TxReplacementLive } from \"@/src/tx/index.js\";\n\n/**\n * Configuration for the test layer composer\n *\n * @example\n * ```typescript\n * const layer = makeEffectEvmTestLayer({\n * publicClient: {\n * readContract: async () => 1000n,\n * getEnsAddress: async () => \"0x...\",\n * },\n * walletClient: {\n * writeContract: async () => \"0xtxhash...\",\n * },\n * erc721Service: {\n * ownerOf: () => Effect.succeed(\"0x...\" as Address),\n * },\n * });\n * ```\n */\nexport type TestLayerConfig = {\n /**\n * Configuration overrides for the mock PublicClient\n */\n publicClient?: MockPublicClientConfig;\n\n /**\n * Configuration overrides for the mock WalletClient\n */\n walletClient?: MockWalletClientConfig;\n\n /**\n * Configuration overrides for the mock BalanceService\n */\n balanceService?: MockBalanceServiceConfig;\n\n /**\n * Configuration overrides for the mock BlockService\n */\n blockService?: MockBlockServiceConfig;\n\n /**\n * Configuration overrides for the mock Erc721Service\n */\n erc721Service?: MockErc721ServiceConfig;\n\n /**\n * Configuration overrides for the mock GasService\n */\n gasService?: MockGasServiceConfig;\n\n /**\n * Configuration overrides for the mock NonceService\n */\n nonceService?: MockNonceServiceConfig;\n\n /**\n * Configuration overrides for the mock SignatureService\n */\n signatureService?: MockSignatureServiceConfig;\n\n /**\n * Configuration overrides for the mock SubscriptionService\n */\n subscriptionService?: MockSubscriptionServiceConfig;\n\n /**\n * Configuration overrides for the mock DeployService\n */\n deployService?: MockDeployServiceConfig;\n\n /**\n * Configuration overrides for the mock SimulationService\n */\n simulationService?: MockSimulationServiceConfig;\n\n /**\n * The chainId to support (default: 1 mainnet)\n */\n chainId?: number;\n};\n\n/**\n * Internal layer combining all application services\n * Requires PublicClientService and WalletClientService to be provided\n *\n * Layer composition order matters:\n * 1. Base services (directly client-bound, no service deps)\n * 2. Dependent services (require base services, e.g. Balance uses ContractReader, Deploy uses TxManager)\n * 3. High-level services (ContractPipeline, ReliableEventStream, Simulation)\n */\nconst baseServices = Layer.mergeAll(\n BlockServiceLive,\n ContractReaderLive,\n ContractWriterLive,\n GasServiceLive,\n NonceServiceLive,\n SignatureServiceLive,\n SubscriptionServiceLive,\n EventStreamLive,\n EnsResolverLive\n);\n\nconst txServices = Layer.provideMerge(\n TxManagerLive,\n Layer.provideMerge(TxReplacementLive, baseServices)\n);\n\nconst applicationServices = Layer.provideMerge(\n Layer.mergeAll(\n BalanceServiceLive,\n ContractPipelineLive,\n DeployServiceLive,\n Erc721ServiceLive,\n ReliableEventStreamLive,\n SimulationServiceLive\n ),\n txServices\n).pipe(Layer.provide(FetchHttpClient.layer));\n\n/**\n * Creates a complete effect-evm test layer with mocked boundaries\n *\n * This layer provides all effect-evm services with mocked PublicClientService\n * and WalletClientService boundaries. The mock boundaries use sensible defaults\n * that can be overridden via configuration.\n *\n * Use this for integration-style tests where you want real service implementations\n * with controlled network boundaries.\n *\n * @param config - Optional configuration to customize mock behaviors\n * @returns A Layer providing all effect-evm services\n *\n * @example\n * ```typescript\n * import { describe, expect, it } from \"@effect/vitest\";\n * import { Effect, Layer } from \"effect\";\n * import { ContractReader } from \"effect-evm\";\n * import { makeEffectEvmTestLayer } from \"effect-evm/testing-kit\";\n *\n * describe(\"MyFeature\", () => {\n * const testLayer = makeEffectEvmTestLayer({\n * publicClient: {\n * readContract: async () => 1000n,\n * },\n * });\n *\n * it.effect(\"reads contract value\", () =>\n * Effect.gen(function* () {\n * const reader = yield* ContractReader;\n * const result = yield* reader.read({ ... });\n * expect(result).toBe(1000n);\n * }).pipe(Effect.provide(testLayer))\n * );\n * });\n * ```\n */\nexport function makeEffectEvmTestLayer(\n config: TestLayerConfig = {}\n): Layer.Layer<\n | PublicClientService\n | WalletClientService\n | BalanceService\n | BlockService\n | ContractReader\n | ContractWriter\n | ContractPipeline\n | TxManager\n | TxReplacement\n | EventStream\n | ReliableEventStream\n | EnsResolver\n | Erc721Service\n | GasService\n | NonceService\n | SignatureService\n | SubscriptionService\n | DeployService\n | SimulationService\n> {\n const chainId = config.chainId ?? mainnet.id;\n\n // Create boundary mocks - use real services if no config provided\n const clientLayers = Layer.mergeAll(\n makeMockPublicClientLayer(config.publicClient ?? {}, chainId),\n makeMockWalletClientLayer(config.walletClient ?? {}, chainId)\n );\n\n // Create service mocks if config is provided, otherwise use real implementations from applicationServices\n let serviceMockLayer = Layer.empty;\n\n if (config.balanceService) {\n serviceMockLayer = Layer.merge(\n serviceMockLayer,\n makeMockBalanceServiceLayer(config.balanceService, chainId)\n );\n }\n if (config.blockService) {\n serviceMockLayer = Layer.merge(\n serviceMockLayer,\n makeMockBlockServiceLayer(config.blockService, chainId)\n );\n }\n if (config.erc721Service) {\n serviceMockLayer = Layer.merge(\n serviceMockLayer,\n makeMockErc721ServiceLayer(config.erc721Service, chainId)\n );\n }\n if (config.gasService) {\n serviceMockLayer = Layer.merge(\n serviceMockLayer,\n makeMockGasServiceLayer(config.gasService, chainId)\n );\n }\n if (config.nonceService) {\n serviceMockLayer = Layer.merge(\n serviceMockLayer,\n makeMockNonceServiceLayer(config.nonceService, chainId)\n );\n }\n if (config.signatureService) {\n serviceMockLayer = Layer.merge(\n serviceMockLayer,\n makeMockSignatureServiceLayer(config.signatureService)\n );\n }\n if (config.subscriptionService) {\n serviceMockLayer = Layer.merge(\n serviceMockLayer,\n makeMockSubscriptionServiceLayer(config.subscriptionService, chainId)\n );\n }\n if (config.deployService) {\n serviceMockLayer = Layer.merge(\n serviceMockLayer,\n makeMockDeployServiceLayer(config.deployService, chainId)\n );\n }\n if (config.simulationService) {\n serviceMockLayer = Layer.merge(\n serviceMockLayer,\n makeMockSimulationServiceLayer(config.simulationService, chainId)\n );\n }\n\n // Provide boundary mocks and service mocks to application services\n const baseLayer = Layer.provideMerge(applicationServices, clientLayers);\n\n return Layer.merge(baseLayer, serviceMockLayer) as Layer.Layer<\n | PublicClientService\n | WalletClientService\n | BalanceService\n | BlockService\n | ContractReader\n | ContractWriter\n | ContractPipeline\n | TxManager\n | TxReplacement\n | EventStream\n | ReliableEventStream\n | EnsResolver\n | Erc721Service\n | GasService\n | NonceService\n | SignatureService\n | SubscriptionService\n | DeployService\n | SimulationService\n >;\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/transfer/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/transfer/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC","sourcesContent":["export * from \"./service.js\";\n"]}
|
|
@@ -1,28 +1,25 @@
|
|
|
1
1
|
import { Context, Effect, Layer } from "effect";
|
|
2
2
|
import type { Address, Hash, TransactionReceipt } from "viem";
|
|
3
3
|
import type { ClientNotFoundError, WrongNetworkError } from "../core/index.js";
|
|
4
|
-
import { InsufficientFundsError, PublicClientService, ReceiptTimeoutError,
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
readonly maxPriorityFeePerGas?: bigint;
|
|
10
|
-
readonly nonce?: number;
|
|
11
|
-
};
|
|
4
|
+
import { InsufficientFundsError, PublicClientService, ReceiptTimeoutError, TxFailedError, UserRejectedError, WalletClientService, WalletNotConnectedError } from "../core/index.js";
|
|
5
|
+
import type { GasPriceUnavailableError } from "../gas/index.js";
|
|
6
|
+
import { GasService } from "../gas/index.js";
|
|
7
|
+
import type { TxOverrides } from "../types/index.js";
|
|
8
|
+
export type TransferOverrides = TxOverrides;
|
|
12
9
|
export type TransferServiceShape = {
|
|
13
10
|
readonly send: (params: {
|
|
14
11
|
chainId: number;
|
|
15
12
|
to: Address;
|
|
16
13
|
value: bigint;
|
|
17
14
|
overrides?: TransferOverrides;
|
|
18
|
-
}) => Effect.Effect<Hash, InsufficientFundsError | UserRejectedError | WalletNotConnectedError | WrongNetworkError | ClientNotFoundError |
|
|
15
|
+
}) => Effect.Effect<Hash, InsufficientFundsError | UserRejectedError | WalletNotConnectedError | WrongNetworkError | ClientNotFoundError | TxFailedError | GasPriceUnavailableError>;
|
|
19
16
|
readonly sendAndWait: (params: {
|
|
20
17
|
chainId: number;
|
|
21
18
|
to: Address;
|
|
22
19
|
value: bigint;
|
|
23
20
|
confirmations?: number;
|
|
24
21
|
overrides?: TransferOverrides;
|
|
25
|
-
}) => Effect.Effect<TransactionReceipt, InsufficientFundsError | UserRejectedError | WalletNotConnectedError | WrongNetworkError | ClientNotFoundError |
|
|
22
|
+
}) => Effect.Effect<TransactionReceipt, InsufficientFundsError | UserRejectedError | WalletNotConnectedError | WrongNetworkError | ClientNotFoundError | TxFailedError | ReceiptTimeoutError | GasPriceUnavailableError>;
|
|
26
23
|
readonly estimateGas: (params: {
|
|
27
24
|
chainId: number;
|
|
28
25
|
to: Address;
|
|
@@ -32,6 +29,6 @@ export type TransferServiceShape = {
|
|
|
32
29
|
declare const TransferService_base: Context.TagClass<TransferService, "ew3/TransferService", TransferServiceShape>;
|
|
33
30
|
export declare class TransferService extends TransferService_base {
|
|
34
31
|
}
|
|
35
|
-
export declare const TransferServiceLive: Layer.Layer<TransferService, never, PublicClientService | WalletClientService>;
|
|
32
|
+
export declare const TransferServiceLive: Layer.Layer<TransferService, never, PublicClientService | WalletClientService | GasService>;
|
|
36
33
|
export {};
|
|
37
34
|
//# sourceMappingURL=service.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/transfer/service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAChD,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,kBAAkB,EAAgB,MAAM,MAAM,CAAC;AAE5E,OAAO,KAAK,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAClF,OAAO,EACL,sBAAsB,EAGtB,mBAAmB,EACnB,mBAAmB,EACnB,
|
|
1
|
+
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/transfer/service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAChD,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,kBAAkB,EAAgB,MAAM,MAAM,CAAC;AAE5E,OAAO,KAAK,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAClF,OAAO,EACL,sBAAsB,EAGtB,mBAAmB,EACnB,mBAAmB,EACnB,aAAa,EACb,iBAAiB,EACjB,mBAAmB,EACnB,uBAAuB,EACxB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AACnE,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEhD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAExD,MAAM,MAAM,iBAAiB,GAAG,WAAW,CAAC;AAE5C,MAAM,MAAM,oBAAoB,GAAG;IACjC,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE;QACtB,OAAO,EAAE,MAAM,CAAC;QAChB,EAAE,EAAE,OAAO,CAAC;QACZ,KAAK,EAAE,MAAM,CAAC;QACd,SAAS,CAAC,EAAE,iBAAiB,CAAC;KAC/B,KAAK,MAAM,CAAC,MAAM,CACjB,IAAI,EACF,sBAAsB,GACtB,iBAAiB,GACjB,uBAAuB,GACvB,iBAAiB,GACjB,mBAAmB,GACnB,aAAa,GACb,wBAAwB,CAC3B,CAAC;IAEF,QAAQ,CAAC,WAAW,EAAE,CAAC,MAAM,EAAE;QAC7B,OAAO,EAAE,MAAM,CAAC;QAChB,EAAE,EAAE,OAAO,CAAC;QACZ,KAAK,EAAE,MAAM,CAAC;QACd,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,SAAS,CAAC,EAAE,iBAAiB,CAAC;KAC/B,KAAK,MAAM,CAAC,MAAM,CACjB,kBAAkB,EAChB,sBAAsB,GACtB,iBAAiB,GACjB,uBAAuB,GACvB,iBAAiB,GACjB,mBAAmB,GACnB,aAAa,GACb,mBAAmB,GACnB,wBAAwB,CAC3B,CAAC;IAEF,QAAQ,CAAC,WAAW,EAAE,CAAC,MAAM,EAAE;QAC7B,OAAO,EAAE,MAAM,CAAC;QAChB,EAAE,EAAE,OAAO,CAAC;QACZ,KAAK,EAAE,MAAM,CAAC;KACf,KAAK,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;CAClD,CAAC;;AAEF,qBAAa,eAAgB,SAAQ,oBAGlC;CAAG;AA8BN,eAAO,MAAM,mBAAmB,6FAwK/B,CAAC"}
|
package/dist/transfer/service.js
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { Context, Effect, Layer } from "effect";
|
|
2
2
|
import { MIN_TX_GAS } from "../constants/index.js";
|
|
3
|
-
import { InsufficientFundsError, isInsufficientFunds, isUserRejection, PublicClientService, ReceiptTimeoutError,
|
|
3
|
+
import { InsufficientFundsError, isInsufficientFunds, isUserRejection, PublicClientService, ReceiptTimeoutError, TxFailedError, UserRejectedError, WalletClientService, WalletNotConnectedError, } from "../core/index.js";
|
|
4
|
+
import { GasService } from "../gas/index.js";
|
|
5
|
+
import { deriveFeeOverrides, deriveTxType } from "../tx/index.js";
|
|
4
6
|
export class TransferService extends Context.Tag("ew3/TransferService")() {
|
|
5
7
|
}
|
|
6
8
|
const classifyTransferError = (error, to) => {
|
|
@@ -16,7 +18,7 @@ const classifyTransferError = (error, to) => {
|
|
|
16
18
|
required: "0",
|
|
17
19
|
});
|
|
18
20
|
}
|
|
19
|
-
return new
|
|
21
|
+
return new TxFailedError({
|
|
20
22
|
cause: error,
|
|
21
23
|
hash: "0x",
|
|
22
24
|
message: error instanceof Error ? error.message : `Failed to send transfer to ${to}`,
|
|
@@ -25,6 +27,7 @@ const classifyTransferError = (error, to) => {
|
|
|
25
27
|
export const TransferServiceLive = Layer.effect(TransferService, Effect.gen(function* () {
|
|
26
28
|
const walletClientService = yield* WalletClientService;
|
|
27
29
|
const publicClientService = yield* PublicClientService;
|
|
30
|
+
const gasService = yield* GasService;
|
|
28
31
|
return TransferService.of({
|
|
29
32
|
estimateGas: Effect.fn("TransferService.estimateGas")(function* (params) {
|
|
30
33
|
const publicClient = yield* publicClientService.get(params.chainId);
|
|
@@ -51,15 +54,23 @@ export const TransferServiceLive = Layer.effect(TransferService, Effect.gen(func
|
|
|
51
54
|
message: "No account connected",
|
|
52
55
|
}));
|
|
53
56
|
}
|
|
54
|
-
const
|
|
57
|
+
const txType = yield* deriveTxType({
|
|
58
|
+
chainId: params.chainId,
|
|
59
|
+
userOverrides: params.overrides,
|
|
60
|
+
}).pipe(Effect.provideService(GasService, gasService));
|
|
61
|
+
const feeOverrides = yield* deriveFeeOverrides({
|
|
62
|
+
chainId: params.chainId,
|
|
63
|
+
userOverrides: params.overrides,
|
|
64
|
+
}).pipe(Effect.provideService(GasService, gasService));
|
|
65
|
+
const isLegacy = txType === "legacy";
|
|
55
66
|
return yield* Effect.tryPromise({
|
|
56
67
|
catch: (error) => classifyTransferError(error, params.to),
|
|
57
|
-
try: () =>
|
|
68
|
+
try: () => isLegacy
|
|
58
69
|
? walletClient.sendTransaction({
|
|
59
70
|
account,
|
|
60
71
|
chain: null,
|
|
61
72
|
gas: params.overrides?.gas,
|
|
62
|
-
gasPrice:
|
|
73
|
+
gasPrice: feeOverrides.gasPrice,
|
|
63
74
|
nonce: params.overrides?.nonce,
|
|
64
75
|
to: params.to,
|
|
65
76
|
type: "legacy",
|
|
@@ -69,8 +80,8 @@ export const TransferServiceLive = Layer.effect(TransferService, Effect.gen(func
|
|
|
69
80
|
account,
|
|
70
81
|
chain: null,
|
|
71
82
|
gas: params.overrides?.gas,
|
|
72
|
-
maxFeePerGas:
|
|
73
|
-
maxPriorityFeePerGas:
|
|
83
|
+
maxFeePerGas: feeOverrides.maxFeePerGas,
|
|
84
|
+
maxPriorityFeePerGas: feeOverrides.maxPriorityFeePerGas,
|
|
74
85
|
nonce: params.overrides?.nonce,
|
|
75
86
|
to: params.to,
|
|
76
87
|
type: "eip1559",
|
|
@@ -94,15 +105,23 @@ export const TransferServiceLive = Layer.effect(TransferService, Effect.gen(func
|
|
|
94
105
|
message: "No account connected",
|
|
95
106
|
}));
|
|
96
107
|
}
|
|
97
|
-
const
|
|
108
|
+
const txType = yield* deriveTxType({
|
|
109
|
+
chainId: params.chainId,
|
|
110
|
+
userOverrides: params.overrides,
|
|
111
|
+
}).pipe(Effect.provideService(GasService, gasService));
|
|
112
|
+
const feeOverrides = yield* deriveFeeOverrides({
|
|
113
|
+
chainId: params.chainId,
|
|
114
|
+
userOverrides: params.overrides,
|
|
115
|
+
}).pipe(Effect.provideService(GasService, gasService));
|
|
116
|
+
const isLegacy = txType === "legacy";
|
|
98
117
|
const hash = yield* Effect.tryPromise({
|
|
99
118
|
catch: (error) => classifyTransferError(error, params.to),
|
|
100
|
-
try: () =>
|
|
119
|
+
try: () => isLegacy
|
|
101
120
|
? walletClient.sendTransaction({
|
|
102
121
|
account,
|
|
103
122
|
chain: null,
|
|
104
123
|
gas: params.overrides?.gas,
|
|
105
|
-
gasPrice:
|
|
124
|
+
gasPrice: feeOverrides.gasPrice,
|
|
106
125
|
nonce: params.overrides?.nonce,
|
|
107
126
|
to: params.to,
|
|
108
127
|
type: "legacy",
|
|
@@ -112,8 +131,8 @@ export const TransferServiceLive = Layer.effect(TransferService, Effect.gen(func
|
|
|
112
131
|
account,
|
|
113
132
|
chain: null,
|
|
114
133
|
gas: params.overrides?.gas,
|
|
115
|
-
maxFeePerGas:
|
|
116
|
-
maxPriorityFeePerGas:
|
|
134
|
+
maxFeePerGas: feeOverrides.maxFeePerGas,
|
|
135
|
+
maxPriorityFeePerGas: feeOverrides.maxPriorityFeePerGas,
|
|
117
136
|
nonce: params.overrides?.nonce,
|
|
118
137
|
to: params.to,
|
|
119
138
|
type: "eip1559",
|
|
@@ -129,7 +148,7 @@ export const TransferServiceLive = Layer.effect(TransferService, Effect.gen(func
|
|
|
129
148
|
timeout: 30_000,
|
|
130
149
|
});
|
|
131
150
|
}
|
|
132
|
-
return new
|
|
151
|
+
return new TxFailedError({
|
|
133
152
|
cause: error,
|
|
134
153
|
hash,
|
|
135
154
|
message: `Failed to wait for transaction ${hash}`,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/transfer/service.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/transfer/service.ts"],"names":[],"mappings":"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","sourcesContent":["import { Context, Effect, Layer } from \"effect\";\nimport type { Address, Hash, TransactionReceipt, WalletClient } from \"viem\";\nimport { MIN_TX_GAS } from \"@/src/constants/index.js\";\nimport type { ClientNotFoundError, WrongNetworkError } from \"@/src/core/index.js\";\nimport {\n InsufficientFundsError,\n isInsufficientFunds,\n isUserRejection,\n PublicClientService,\n ReceiptTimeoutError,\n TxFailedError,\n UserRejectedError,\n WalletClientService,\n WalletNotConnectedError,\n} from \"@/src/core/index.js\";\nimport type { GasPriceUnavailableError } from \"@/src/gas/index.js\";\nimport { GasService } from \"@/src/gas/index.js\";\nimport { deriveFeeOverrides, deriveTxType } from \"@/src/tx/index.js\";\nimport type { TxOverrides } from \"@/src/types/index.js\";\n\nexport type TransferOverrides = TxOverrides;\n\nexport type TransferServiceShape = {\n readonly send: (params: {\n chainId: number;\n to: Address;\n value: bigint;\n overrides?: TransferOverrides;\n }) => Effect.Effect<\n Hash,\n | InsufficientFundsError\n | UserRejectedError\n | WalletNotConnectedError\n | WrongNetworkError\n | ClientNotFoundError\n | TxFailedError\n | GasPriceUnavailableError\n >;\n\n readonly sendAndWait: (params: {\n chainId: number;\n to: Address;\n value: bigint;\n confirmations?: number;\n overrides?: TransferOverrides;\n }) => Effect.Effect<\n TransactionReceipt,\n | InsufficientFundsError\n | UserRejectedError\n | WalletNotConnectedError\n | WrongNetworkError\n | ClientNotFoundError\n | TxFailedError\n | ReceiptTimeoutError\n | GasPriceUnavailableError\n >;\n\n readonly estimateGas: (params: {\n chainId: number;\n to: Address;\n value: bigint;\n }) => Effect.Effect<bigint, ClientNotFoundError>;\n};\n\nexport class TransferService extends Context.Tag(\"ew3/TransferService\")<\n TransferService,\n TransferServiceShape\n>() {}\n\n/**\n * Classify transfer errors into appropriate error types\n */\nconst classifyTransferError = (\n error: unknown,\n to: Address\n): InsufficientFundsError | UserRejectedError | TxFailedError => {\n if (isUserRejection(error)) {\n return new UserRejectedError({\n message: error instanceof Error ? error.message : \"User rejected the transaction\",\n });\n }\n\n if (isInsufficientFunds(error)) {\n return new InsufficientFundsError({\n available: \"0\",\n message: error instanceof Error ? error.message : \"Insufficient funds for transfer\",\n required: \"0\",\n });\n }\n\n return new TxFailedError({\n cause: error,\n hash: \"0x\",\n message: error instanceof Error ? error.message : `Failed to send transfer to ${to}`,\n });\n};\n\nexport const TransferServiceLive = Layer.effect(\n TransferService,\n Effect.gen(function* () {\n const walletClientService = yield* WalletClientService;\n const publicClientService = yield* PublicClientService;\n const gasService = yield* GasService;\n\n return TransferService.of({\n estimateGas: Effect.fn(\"TransferService.estimateGas\")(function* (params) {\n const publicClient = yield* publicClientService.get(params.chainId);\n\n // Try to estimate, fallback to standard transfer gas on failure\n return yield* Effect.tryPromise({\n catch: () => MIN_TX_GAS,\n try: () =>\n publicClient.estimateGas({\n to: params.to,\n value: params.value,\n }),\n }).pipe(Effect.catchAll(() => Effect.succeed(MIN_TX_GAS)));\n }),\n\n send: Effect.fn(\"TransferService.send\")(function* (params) {\n const walletClient = yield* walletClientService.get(params.chainId);\n const [account] = yield* Effect.tryPromise({\n catch: () =>\n new WalletNotConnectedError({\n chainId: params.chainId,\n message: \"No account found\",\n }),\n try: () => walletClient.getAddresses(),\n });\n\n if (!account) {\n return yield* Effect.fail(\n new WalletNotConnectedError({\n chainId: params.chainId,\n message: \"No account connected\",\n })\n );\n }\n\n // Get derived tx type and fees\n const txType = yield* deriveTxType({\n chainId: params.chainId,\n userOverrides: params.overrides,\n }).pipe(Effect.provideService(GasService, gasService));\n\n const feeOverrides = yield* deriveFeeOverrides({\n chainId: params.chainId,\n userOverrides: params.overrides,\n }).pipe(Effect.provideService(GasService, gasService));\n\n const isLegacy = txType === \"legacy\";\n\n return yield* Effect.tryPromise({\n catch: (error) => classifyTransferError(error, params.to),\n try: () =>\n isLegacy\n ? (walletClient as WalletClient).sendTransaction({\n account,\n chain: null,\n gas: params.overrides?.gas,\n gasPrice: feeOverrides.gasPrice,\n nonce: params.overrides?.nonce,\n to: params.to,\n type: \"legacy\",\n value: params.value,\n })\n : (walletClient as WalletClient).sendTransaction({\n account,\n chain: null,\n gas: params.overrides?.gas,\n maxFeePerGas: feeOverrides.maxFeePerGas,\n maxPriorityFeePerGas: feeOverrides.maxPriorityFeePerGas,\n nonce: params.overrides?.nonce,\n to: params.to,\n type: \"eip1559\",\n value: params.value,\n }),\n });\n }),\n\n sendAndWait: Effect.fn(\"TransferService.sendAndWait\")(function* (params) {\n const walletClient = yield* walletClientService.get(params.chainId);\n const publicClient = yield* publicClientService.get(params.chainId);\n const [account] = yield* Effect.tryPromise({\n catch: () =>\n new WalletNotConnectedError({\n chainId: params.chainId,\n message: \"No account found\",\n }),\n try: () => walletClient.getAddresses(),\n });\n\n if (!account) {\n return yield* Effect.fail(\n new WalletNotConnectedError({\n chainId: params.chainId,\n message: \"No account connected\",\n })\n );\n }\n\n // Get derived tx type and fees\n const txType = yield* deriveTxType({\n chainId: params.chainId,\n userOverrides: params.overrides,\n }).pipe(Effect.provideService(GasService, gasService));\n\n const feeOverrides = yield* deriveFeeOverrides({\n chainId: params.chainId,\n userOverrides: params.overrides,\n }).pipe(Effect.provideService(GasService, gasService));\n\n const isLegacy = txType === \"legacy\";\n\n const hash = yield* Effect.tryPromise({\n catch: (error) => classifyTransferError(error, params.to),\n try: () =>\n isLegacy\n ? (walletClient as WalletClient).sendTransaction({\n account,\n chain: null,\n gas: params.overrides?.gas,\n gasPrice: feeOverrides.gasPrice,\n nonce: params.overrides?.nonce,\n to: params.to,\n type: \"legacy\",\n value: params.value,\n })\n : (walletClient as WalletClient).sendTransaction({\n account,\n chain: null,\n gas: params.overrides?.gas,\n maxFeePerGas: feeOverrides.maxFeePerGas,\n maxPriorityFeePerGas: feeOverrides.maxPriorityFeePerGas,\n nonce: params.overrides?.nonce,\n to: params.to,\n type: \"eip1559\",\n value: params.value,\n }),\n });\n\n return yield* Effect.tryPromise({\n catch: (error) => {\n if (error instanceof Error && error.message.includes(\"timeout\")) {\n return new ReceiptTimeoutError({\n hash,\n message: `Transaction receipt timeout for ${hash}`,\n timeout: 30_000,\n });\n }\n return new TxFailedError({\n cause: error,\n hash,\n message: `Failed to wait for transaction ${hash}`,\n });\n },\n try: () =>\n publicClient.waitForTransactionReceipt({\n confirmations: params.confirmations,\n hash,\n }),\n });\n }),\n });\n })\n);\n"]}
|
package/dist/tx/fees.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fees.d.ts","sourceRoot":"","sources":["../../src/tx/fees.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AACnE,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACtE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAiB5C,eAAO,MAAM,YAAY,GAAI,QAAQ;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;IAC9B,aAAa,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;CACzC,KAAG,MAAM,CAAC,MAAM,CACf,WAAW,CAAC,MAAM,CAAC,EACnB,wBAAwB,GAAG,mBAAmB,EAC9C,UAAU,
|
|
1
|
+
{"version":3,"file":"fees.d.ts","sourceRoot":"","sources":["../../src/tx/fees.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AACnE,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACtE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAiB5C,eAAO,MAAM,YAAY,GAAI,QAAQ;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;IAC9B,aAAa,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;CACzC,KAAG,MAAM,CAAC,MAAM,CACf,WAAW,CAAC,MAAM,CAAC,EACnB,wBAAwB,GAAG,mBAAmB,EAC9C,UAAU,CAsBR,CAAC;AAEL,eAAO,MAAM,kBAAkB,GAAI,QAAQ;IACzC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;IAC9B,aAAa,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;CACzC,KAAG,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,wBAAwB,GAAG,mBAAmB,EAAE,UAAU,CAwCtF,CAAC"}
|
package/dist/tx/fees.js
CHANGED
|
@@ -8,6 +8,9 @@ export const deriveTxType = (params) => Effect.gen(function* () {
|
|
|
8
8
|
if (userOverrides?.type) {
|
|
9
9
|
return userOverrides.type;
|
|
10
10
|
}
|
|
11
|
+
if (params.policy?.txType) {
|
|
12
|
+
return params.policy.txType;
|
|
13
|
+
}
|
|
11
14
|
if (userOverrides?.gasPrice !== undefined) {
|
|
12
15
|
return "legacy";
|
|
13
16
|
}
|
package/dist/tx/fees.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fees.js","sourceRoot":"","sources":["../../src/tx/fees.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"fees.js","sourceRoot":"","sources":["../../src/tx/fees.ts"],"names":[],"mappings":"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","sourcesContent":["import { Effect } from \"effect\";\nimport type { ClientNotFoundError } from \"@/src/core/index.js\";\nimport type { GasPriceUnavailableError } from \"@/src/gas/index.js\";\nimport { GasService } from \"@/src/gas/index.js\";\nimport type { FeeOverrides, TxOverrides } from \"@/src/types/index.js\";\nimport type { TxPolicy } from \"./policy.js\";\n\nconst cap = (value: bigint, max: bigint | undefined): bigint =>\n max !== undefined && value > max ? max : value;\n\nconst hasLegacyFeeOverride = (\n overrides: TxOverrides | undefined\n): overrides is TxOverrides & {\n gasPrice: bigint;\n} => overrides?.gasPrice !== undefined;\n\nconst hasEip1559FeeOverride = (\n overrides: TxOverrides | undefined\n): overrides is TxOverrides & {\n maxFeePerGas: bigint;\n} => overrides?.maxFeePerGas !== undefined;\n\nexport const deriveTxType = (params: {\n chainId: number;\n policy?: TxPolicy | undefined;\n userOverrides?: TxOverrides | undefined;\n}): Effect.Effect<\n TxOverrides[\"type\"],\n GasPriceUnavailableError | ClientNotFoundError,\n GasService\n> =>\n Effect.gen(function* () {\n const userOverrides = params.userOverrides;\n\n if (userOverrides?.type) {\n return userOverrides.type;\n }\n\n if (params.policy?.txType) {\n return params.policy.txType;\n }\n\n if (userOverrides?.gasPrice !== undefined) {\n return \"legacy\";\n }\n\n const gasService = yield* GasService;\n const supportsEip1559 = yield* gasService.supportsEip1559({\n chainId: params.chainId,\n });\n return supportsEip1559 ? \"eip1559\" : \"legacy\";\n });\n\nexport const deriveFeeOverrides = (params: {\n chainId: number;\n policy?: TxPolicy | undefined;\n userOverrides?: TxOverrides | undefined;\n}): Effect.Effect<FeeOverrides, GasPriceUnavailableError | ClientNotFoundError, GasService> =>\n Effect.gen(function* () {\n const policy = params.policy;\n const userOverrides = params.userOverrides;\n\n if (hasLegacyFeeOverride(userOverrides)) {\n return { gasPrice: userOverrides.gasPrice };\n }\n\n if (hasEip1559FeeOverride(userOverrides)) {\n return {\n maxFeePerGas: userOverrides.maxFeePerGas,\n maxPriorityFeePerGas: userOverrides.maxPriorityFeePerGas,\n };\n }\n\n const gasService = yield* GasService;\n const supportsEip1559 = yield* gasService.supportsEip1559({\n chainId: params.chainId,\n });\n const estimate = yield* gasService.estimateFees({\n chainId: params.chainId,\n speed: policy?.feeSpeed,\n });\n\n if (!supportsEip1559) {\n const gasPrice = cap(estimate.gasPrice ?? estimate.maxFeePerGas, policy?.maxFeePerGas);\n return { gasPrice };\n }\n\n const maxFeePerGas = cap(estimate.maxFeePerGas, policy?.maxFeePerGas);\n const computedMaxPriorityFeePerGas = cap(\n estimate.maxPriorityFeePerGas,\n policy?.maxPriorityFeePerGas\n );\n\n const maxPriorityFeePerGas =\n userOverrides?.maxPriorityFeePerGas ?? computedMaxPriorityFeePerGas;\n\n return { maxFeePerGas, maxPriorityFeePerGas };\n });\n"]}
|
package/dist/tx/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tx/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tx/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC","sourcesContent":["export * from \"./fees.js\";\nexport * from \"./manager.js\";\nexport * from \"./policy.js\";\nexport * from \"./replacement.js\";\nexport * from \"./tracker.js\";\n"]}
|
package/dist/tx/manager.d.ts
CHANGED
|
@@ -2,13 +2,13 @@ import type { Scope, SubscriptionRef } from "effect";
|
|
|
2
2
|
import { Context, Effect, Layer } from "effect";
|
|
3
3
|
import type { Hash, TransactionReceipt } from "viem";
|
|
4
4
|
import type { ClientNotFoundError } from "../core/index.js";
|
|
5
|
-
import { PublicClientService, ReceiptTimeoutError,
|
|
5
|
+
import { PublicClientService, ReceiptTimeoutError, TransportError, TxFailedError, TxReplacedError } from "../core/index.js";
|
|
6
6
|
import type { TxPolicy } from "./policy.js";
|
|
7
7
|
import { TxReplacement } from "./replacement.js";
|
|
8
8
|
import type { TxState } from "./tracker.js";
|
|
9
9
|
export type TxManagerShape = {
|
|
10
10
|
readonly track: (chainId: number, hash: Hash, policy?: TxPolicy) => Effect.Effect<SubscriptionRef.SubscriptionRef<TxState>, ClientNotFoundError, Scope.Scope>;
|
|
11
|
-
readonly waitForReceipt: (chainId: number, hash: Hash, timeoutOrPolicy?: number | TxPolicy) => Effect.Effect<TransactionReceipt,
|
|
11
|
+
readonly waitForReceipt: (chainId: number, hash: Hash, timeoutOrPolicy?: number | TxPolicy) => Effect.Effect<TransactionReceipt, TxFailedError | ReceiptTimeoutError | TxReplacedError | ClientNotFoundError>;
|
|
12
12
|
readonly getConfirmations: (chainId: number, params: {
|
|
13
13
|
hash: Hash;
|
|
14
14
|
} | {
|
|
@@ -18,6 +18,7 @@ export type TxManagerShape = {
|
|
|
18
18
|
declare const TxManager_base: Context.TagClass<TxManager, "ew3/TxManager", TxManagerShape>;
|
|
19
19
|
export declare class TxManager extends TxManager_base {
|
|
20
20
|
}
|
|
21
|
+
export declare function makeTxManagerLive(layerPolicy?: TxPolicy): Layer.Layer<TxManager, never, PublicClientService | TxReplacement>;
|
|
21
22
|
export declare const TxManagerLive: Layer.Layer<TxManager, never, PublicClientService | TxReplacement>;
|
|
22
23
|
export {};
|
|
23
24
|
//# sourceMappingURL=manager.d.ts.map
|
package/dist/tx/manager.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/tx/manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AACrD,OAAO,EAAS,OAAO,EAAE,MAAM,EAAS,KAAK,EAAe,MAAM,QAAQ,CAAC;AAC3E,OAAO,KAAK,EAAE,IAAI,EAAE,kBAAkB,EAAE,MAAM,MAAM,CAAC;AAGrD,OAAO,KAAK,EAAE,mBAAmB,
|
|
1
|
+
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/tx/manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AACrD,OAAO,EAAS,OAAO,EAAE,MAAM,EAAS,KAAK,EAAe,MAAM,QAAQ,CAAC;AAC3E,OAAO,KAAK,EAAE,IAAI,EAAE,kBAAkB,EAAE,MAAM,MAAM,CAAC;AAGrD,OAAO,KAAK,EAAE,mBAAmB,EAAuB,MAAM,qBAAqB,CAAC;AACpF,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,cAAc,EACd,aAAa,EACb,eAAe,EAChB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE5C,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAG5C,MAAM,MAAM,cAAc,GAAG;IAI3B,QAAQ,CAAC,KAAK,EAAE,CACd,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,IAAI,EACV,MAAM,CAAC,EAAE,QAAQ,KACd,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,mBAAmB,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IAK/F,QAAQ,CAAC,cAAc,EAAE,CACvB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,IAAI,EACV,eAAe,CAAC,EAAE,MAAM,GAAG,QAAQ,KAChC,MAAM,CAAC,MAAM,CAChB,kBAAkB,EAClB,aAAa,GAAG,mBAAmB,GAAG,eAAe,GAAG,mBAAmB,CAC5E,CAAC;IAKF,QAAQ,CAAC,gBAAgB,EAAE,CACzB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE;QAAE,IAAI,EAAE,IAAI,CAAA;KAAE,GAAG;QAAE,kBAAkB,EAAE,kBAAkB,CAAA;KAAE,KAChE,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,mBAAmB,GAAG,cAAc,CAAC,CAAC;CAClE,CAAC;;AAEF,qBAAa,SAAU,SAAQ,cAAyD;CAAG;AAE3F,wBAAgB,iBAAiB,CAC/B,WAAW,CAAC,EAAE,QAAQ,GACrB,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,EAAE,mBAAmB,GAAG,aAAa,CAAC,CAqUpE;AAED,eAAO,MAAM,aAAa,oEAAsB,CAAC"}
|