@prb/effect-evm 1.0.0-beta.2 → 1.0.0-beta.3
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.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.js.map +1 -1
- package/dist/react-hooks/use-is-safe-multisig.js.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.js.map +1 -1
- 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/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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mock-erc721-service.js","sourceRoot":"","sources":["../../src/testing-kit/mock-erc721-service.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mock-erc721-service.js","sourceRoot":"","sources":["../../src/testing-kit/mock-erc721-service.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Layer } from \"effect\";\nimport { Effect } from \"effect\";\nimport type { Address, Hash, Hex } from \"viem\";\nimport type { Erc721ServiceShape, NftMetadata } from \"@/src/erc721/index.js\";\nimport { Erc721Service } from \"@/src/erc721/index.js\";\nimport { makeMockServiceLayer, withChainIdCheck, withWalletChainIdCheck } from \"./helpers.js\";\n\n/**\n * Configuration for the mock Erc721Service\n *\n * All methods are optional - sensible defaults are provided.\n * Override specific methods to customize mock behavior for your tests.\n */\nexport type MockErc721ServiceConfig = {\n // Read methods\n ownerOf?: (params: {\n address: Address;\n chainId: number;\n tokenId: bigint;\n }) => Effect.Effect<Address>;\n balanceOf?: (params: {\n address: Address;\n chainId: number;\n owner: Address;\n }) => Effect.Effect<bigint>;\n getApproved?: (params: {\n address: Address;\n chainId: number;\n tokenId: bigint;\n }) => Effect.Effect<Address>;\n isApprovedForAll?: (params: {\n address: Address;\n chainId: number;\n operator: Address;\n owner: Address;\n }) => Effect.Effect<boolean>;\n tokenURI?: (params: {\n address: Address;\n chainId: number;\n tokenId: bigint;\n }) => Effect.Effect<string>;\n fetchMetadata?: (params: {\n address: Address;\n chainId: number;\n gateways?: { arweave?: string; ipfs?: string };\n tokenId: bigint;\n }) => Effect.Effect<NftMetadata>;\n name?: (params: { address: Address; chainId: number }) => Effect.Effect<string>;\n symbol?: (params: { address: Address; chainId: number }) => Effect.Effect<string>;\n totalSupply?: (params: { address: Address; chainId: number }) => Effect.Effect<bigint>;\n\n // Write methods\n approve?: (params: {\n account?: Address;\n address: Address;\n chainId: number;\n to: Address;\n tokenId: bigint;\n }) => Effect.Effect<Hash>;\n setApprovalForAll?: (params: {\n account?: Address;\n address: Address;\n approved: boolean;\n chainId: number;\n operator: Address;\n }) => Effect.Effect<Hash>;\n transferFrom?: (params: {\n account?: Address;\n address: Address;\n chainId: number;\n from: Address;\n to: Address;\n tokenId: bigint;\n }) => Effect.Effect<Hash>;\n safeTransferFrom?: (params: {\n account?: Address;\n address: Address;\n chainId: number;\n data?: Hex;\n from: Address;\n to: Address;\n tokenId: bigint;\n }) => Effect.Effect<Hash>;\n};\n\nconst DEFAULT_ADDRESS = \"0x1234567890123456789012345678901234567890\" as Address;\nconst DEFAULT_HASH = \"0xdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef\" as Hash;\n\nconst defaultConfig: Required<MockErc721ServiceConfig> = {\n // Write defaults\n approve: () => Effect.succeed(DEFAULT_HASH),\n balanceOf: () => Effect.succeed(5n),\n fetchMetadata: () =>\n Effect.succeed({\n attributes: [],\n description: \"A mock NFT for testing purposes\",\n image: \"ipfs://QmMockHash/image.png\",\n name: \"Mock NFT\",\n }),\n getApproved: () => Effect.succeed(DEFAULT_ADDRESS),\n isApprovedForAll: () => Effect.succeed(false),\n name: () => Effect.succeed(\"MockNFT\"),\n // Read defaults\n ownerOf: () => Effect.succeed(DEFAULT_ADDRESS),\n safeTransferFrom: () => Effect.succeed(DEFAULT_HASH),\n setApprovalForAll: () => Effect.succeed(DEFAULT_HASH),\n symbol: () => Effect.succeed(\"MNFT\"),\n tokenURI: () => Effect.succeed(\"ipfs://QmMockHash/metadata.json\"),\n totalSupply: () => Effect.succeed(10000n),\n transferFrom: () => Effect.succeed(DEFAULT_HASH),\n};\n\n/**\n * Creates a mock Erc721Service 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 = makeMockErc721ServiceLayer();\n *\n * // Override specific methods\n * const layer = makeMockErc721ServiceLayer({\n * ownerOf: () => Effect.succeed(\"0x...\" as Address),\n * balanceOf: () => Effect.succeed(10n),\n * });\n *\n * // Use in tests\n * Effect.gen(function* () {\n * const erc721 = yield* Erc721Service;\n * const owner = yield* erc721.ownerOf({ ... });\n * }).pipe(Effect.provide(layer));\n * ```\n */\nexport const makeMockErc721ServiceLayer = (\n config: MockErc721ServiceConfig = {},\n supportedChainId = 1\n): Layer.Layer<Erc721Service> =>\n makeMockServiceLayer(Erc721Service, defaultConfig, config, (merged) => ({\n // Write methods use WalletNotConnectedError - cast to widen to expected error types\n approve: withWalletChainIdCheck(\n supportedChainId,\n merged.approve\n ) as Erc721ServiceShape[\"approve\"],\n // Read methods use ClientNotFoundError - cast where needed to widen error types\n balanceOf: withChainIdCheck(supportedChainId, merged.balanceOf),\n fetchMetadata: withChainIdCheck(supportedChainId, merged.fetchMetadata),\n getApproved: withChainIdCheck(supportedChainId, merged.getApproved),\n isApprovedForAll: withChainIdCheck(supportedChainId, merged.isApprovedForAll),\n name: withChainIdCheck(supportedChainId, merged.name),\n ownerOf: withChainIdCheck(supportedChainId, merged.ownerOf) as Erc721ServiceShape[\"ownerOf\"],\n safeTransferFrom: withWalletChainIdCheck(\n supportedChainId,\n merged.safeTransferFrom\n ) as Erc721ServiceShape[\"safeTransferFrom\"],\n setApprovalForAll: withWalletChainIdCheck(\n supportedChainId,\n merged.setApprovalForAll\n ) as Erc721ServiceShape[\"setApprovalForAll\"],\n symbol: withChainIdCheck(supportedChainId, merged.symbol),\n tokenURI: withChainIdCheck(supportedChainId, merged.tokenURI) as Erc721ServiceShape[\"tokenURI\"],\n totalSupply: withChainIdCheck(supportedChainId, merged.totalSupply),\n transferFrom: withWalletChainIdCheck(\n supportedChainId,\n merged.transferFrom\n ) as Erc721ServiceShape[\"transferFrom\"],\n }));\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mock-gas-service.js","sourceRoot":"","sources":["../../src/testing-kit/mock-gas-service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAGtD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAEtE,MAAM,oBAAoB,GAAgB;IACxC,UAAU,EAAE,EAAE;IACd,gBAAgB,EAAE,YAAY;IAC9B,QAAQ,EAAE,YAAY;IACtB,YAAY,EAAE,YAAY;IAC1B,oBAAoB,EAAE,WAAW;CAClC,CAAC;AAEF,MAAM,yBAAyB,GAAkC;IAC/D,IAAI,EAAE;QACJ,UAAU,EAAE,EAAE;QACd,gBAAgB,EAAE,YAAY;QAC9B,QAAQ,EAAE,YAAY;QACtB,YAAY,EAAE,aAAa;QAC3B,oBAAoB,EAAE,WAAW;KAClC;IACD,OAAO,EAAE;QACP,UAAU,EAAE,EAAE;QACd,gBAAgB,EAAE,YAAY;QAC9B,QAAQ,EAAE,YAAY;QACtB,YAAY,EAAE,aAAa;QAC3B,oBAAoB,EAAE,WAAW;KAClC;IACD,IAAI,EAAE;QACJ,UAAU,EAAE,EAAE;QACd,gBAAgB,EAAE,YAAY;QAC9B,QAAQ,EAAE,YAAY;QACtB,YAAY,EAAE,YAAY;QAC1B,oBAAoB,EAAE,WAAW;KAClC;IACD,QAAQ,EAAE;QACR,UAAU,EAAE,EAAE;QACd,gBAAgB,EAAE,YAAY;QAC9B,QAAQ,EAAE,YAAY;QACtB,YAAY,EAAE,YAAY;QAC1B,oBAAoB,EAAE,WAAW;KAClC;CACF,CAAC;AA0CF,MAAM,aAAa,GAAmC;IACpD,YAAY,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,oBAAoB,CAAC;IACxD,WAAW,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC;IAC7C,kBAAkB,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,yBAAyB,CAAC;IACnE,UAAU,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC;IAC9C,iBAAiB,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC;IACpD,eAAe,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;CAC5C,CAAC;AA4BF,MAAM,CAAC,MAAM,uBAAuB,GAAG,CACrC,SAA+B,EAAE,EACjC,gBAAgB,GAAG,CAAC,EACK,EAAE,CAC3B,oBAAoB,CAAC,UAAU,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACnE,YAAY,EAAE,gBAAgB,CAAC,gBAAgB,EAAE,MAAM,CAAC,YAAY,CAAC;IACrE,WAAW,EAAE,gBAAgB,CAAC,gBAAgB,EAAE,MAAM,CAAC,WAAW,CAAC;IACnE,kBAAkB,EAAE,gBAAgB,CAAC,gBAAgB,EAAE,MAAM,CAAC,kBAAkB,CAAC;IACjF,UAAU,EAAE,gBAAgB,CAAC,gBAAgB,EAAE,MAAM,CAAC,UAAU,CAAC;IACjE,iBAAiB,EAAE,gBAAgB,CAAC,gBAAgB,EAAE,MAAM,CAAC,iBAAiB,CAAC;IAC/E,eAAe,EAAE,gBAAgB,CAAC,gBAAgB,EAAE,MAAM,CAAC,eAAe,CAAC;CAC5E,CAAC,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"mock-gas-service.js","sourceRoot":"","sources":["../../src/testing-kit/mock-gas-service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAGtD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAEtE,MAAM,oBAAoB,GAAgB;IACxC,UAAU,EAAE,EAAE;IACd,gBAAgB,EAAE,YAAY;IAC9B,QAAQ,EAAE,YAAY;IACtB,YAAY,EAAE,YAAY;IAC1B,oBAAoB,EAAE,WAAW;CAClC,CAAC;AAEF,MAAM,yBAAyB,GAAkC;IAC/D,IAAI,EAAE;QACJ,UAAU,EAAE,EAAE;QACd,gBAAgB,EAAE,YAAY;QAC9B,QAAQ,EAAE,YAAY;QACtB,YAAY,EAAE,aAAa;QAC3B,oBAAoB,EAAE,WAAW;KAClC;IACD,OAAO,EAAE;QACP,UAAU,EAAE,EAAE;QACd,gBAAgB,EAAE,YAAY;QAC9B,QAAQ,EAAE,YAAY;QACtB,YAAY,EAAE,aAAa;QAC3B,oBAAoB,EAAE,WAAW;KAClC;IACD,IAAI,EAAE;QACJ,UAAU,EAAE,EAAE;QACd,gBAAgB,EAAE,YAAY;QAC9B,QAAQ,EAAE,YAAY;QACtB,YAAY,EAAE,YAAY;QAC1B,oBAAoB,EAAE,WAAW;KAClC;IACD,QAAQ,EAAE;QACR,UAAU,EAAE,EAAE;QACd,gBAAgB,EAAE,YAAY;QAC9B,QAAQ,EAAE,YAAY;QACtB,YAAY,EAAE,YAAY;QAC1B,oBAAoB,EAAE,WAAW;KAClC;CACF,CAAC;AA0CF,MAAM,aAAa,GAAmC;IACpD,YAAY,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,oBAAoB,CAAC;IACxD,WAAW,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC;IAC7C,kBAAkB,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,yBAAyB,CAAC;IACnE,UAAU,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC;IAC9C,iBAAiB,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC;IACpD,eAAe,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;CAC5C,CAAC;AA4BF,MAAM,CAAC,MAAM,uBAAuB,GAAG,CACrC,SAA+B,EAAE,EACjC,gBAAgB,GAAG,CAAC,EACK,EAAE,CAC3B,oBAAoB,CAAC,UAAU,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACnE,YAAY,EAAE,gBAAgB,CAAC,gBAAgB,EAAE,MAAM,CAAC,YAAY,CAAC;IACrE,WAAW,EAAE,gBAAgB,CAAC,gBAAgB,EAAE,MAAM,CAAC,WAAW,CAAC;IACnE,kBAAkB,EAAE,gBAAgB,CAAC,gBAAgB,EAAE,MAAM,CAAC,kBAAkB,CAAC;IACjF,UAAU,EAAE,gBAAgB,CAAC,gBAAgB,EAAE,MAAM,CAAC,UAAU,CAAC;IACjE,iBAAiB,EAAE,gBAAgB,CAAC,gBAAgB,EAAE,MAAM,CAAC,iBAAiB,CAAC;IAC/E,eAAe,EAAE,gBAAgB,CAAC,gBAAgB,EAAE,MAAM,CAAC,eAAe,CAAC;CAC5E,CAAC,CAAC,CAAC","sourcesContent":["import type { Layer } from \"effect\";\nimport { Effect } from \"effect\";\nimport type { Address, Hex } from \"viem\";\nimport { MIN_TX_GAS } from \"@/src/constants/index.js\";\nimport type { ClientNotFoundError } from \"@/src/core/index.js\";\nimport type { FeeEstimate, GasPriceUnavailableError, GasSpeed } from \"@/src/gas/index.js\";\nimport { GasService } from \"@/src/gas/index.js\";\nimport { makeMockServiceLayer, withChainIdCheck } from \"./helpers.js\";\n\nconst DEFAULT_FEE_ESTIMATE: FeeEstimate = {\n confidence: 85,\n estimatedBaseFee: 30000000000n, // 30 gwei\n gasPrice: 45000000000n, // 45 gwei for legacy\n maxFeePerGas: 90000000000n, // 90 gwei\n maxPriorityFeePerGas: 1500000000n, // 1.5 gwei\n};\n\nconst DEFAULT_ALL_FEE_ESTIMATES: Record<GasSpeed, FeeEstimate> = {\n fast: {\n confidence: 95,\n estimatedBaseFee: 30000000000n,\n gasPrice: 60000000000n,\n maxFeePerGas: 110000000000n,\n maxPriorityFeePerGas: 2500000000n,\n },\n instant: {\n confidence: 99,\n estimatedBaseFee: 30000000000n,\n gasPrice: 80000000000n,\n maxFeePerGas: 140000000000n,\n maxPriorityFeePerGas: 5000000000n,\n },\n slow: {\n confidence: 70,\n estimatedBaseFee: 30000000000n,\n gasPrice: 35000000000n,\n maxFeePerGas: 70000000000n,\n maxPriorityFeePerGas: 1000000000n,\n },\n standard: {\n confidence: 85,\n estimatedBaseFee: 30000000000n,\n gasPrice: 45000000000n,\n maxFeePerGas: 90000000000n,\n maxPriorityFeePerGas: 1500000000n,\n },\n};\n\n/**\n * Configuration for the mock GasService\n *\n * All methods are optional - sensible defaults are provided.\n * Override specific methods to customize mock behavior for your tests.\n */\nexport type MockGasServiceConfig = {\n estimateFees?: (params: {\n chainId: number;\n speed?: GasSpeed;\n }) => Effect.Effect<FeeEstimate, GasPriceUnavailableError | ClientNotFoundError>;\n\n getAllFeeEstimates?: (params: {\n chainId: number;\n }) => Effect.Effect<\n Record<GasSpeed, FeeEstimate>,\n GasPriceUnavailableError | ClientNotFoundError\n >;\n\n getBaseFee?: (params: {\n chainId: number;\n }) => Effect.Effect<bigint, GasPriceUnavailableError | ClientNotFoundError>;\n\n getMaxPriorityFee?: (params: {\n chainId: number;\n }) => Effect.Effect<bigint, GasPriceUnavailableError | ClientNotFoundError>;\n\n estimateGas?: (params: {\n chainId: number;\n data?: Hex;\n from?: Address;\n to: Address;\n value?: bigint;\n }) => Effect.Effect<bigint, GasPriceUnavailableError | ClientNotFoundError>;\n\n supportsEip1559?: (params: {\n chainId: number;\n }) => Effect.Effect<boolean, GasPriceUnavailableError | ClientNotFoundError>;\n};\n\nconst defaultConfig: Required<MockGasServiceConfig> = {\n estimateFees: () => Effect.succeed(DEFAULT_FEE_ESTIMATE),\n estimateGas: () => Effect.succeed(MIN_TX_GAS), // Standard transfer\n getAllFeeEstimates: () => Effect.succeed(DEFAULT_ALL_FEE_ESTIMATES),\n getBaseFee: () => Effect.succeed(30000000000n), // 30 gwei\n getMaxPriorityFee: () => Effect.succeed(1500000000n), // 1.5 gwei\n supportsEip1559: () => Effect.succeed(true),\n};\n\n/**\n * Creates a mock GasService 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 = makeMockGasServiceLayer();\n *\n * // Override specific methods\n * const layer = makeMockGasServiceLayer({\n * estimateFees: () => Effect.succeed({ maxFeePerGas: 100000000000n, ... }),\n * supportsEip1559: () => Effect.succeed(false),\n * });\n *\n * // Use in tests\n * Effect.gen(function* () {\n * const gasService = yield* GasService;\n * const fees = yield* gasService.estimateFees({ chainId: mainnet.id });\n * }).pipe(\n * Effect.provide(layer)\n * );\n * ```\n */\nexport const makeMockGasServiceLayer = (\n config: MockGasServiceConfig = {},\n supportedChainId = 1\n): Layer.Layer<GasService> =>\n makeMockServiceLayer(GasService, defaultConfig, config, (merged) => ({\n estimateFees: withChainIdCheck(supportedChainId, merged.estimateFees),\n estimateGas: withChainIdCheck(supportedChainId, merged.estimateGas),\n getAllFeeEstimates: withChainIdCheck(supportedChainId, merged.getAllFeeEstimates),\n getBaseFee: withChainIdCheck(supportedChainId, merged.getBaseFee),\n getMaxPriorityFee: withChainIdCheck(supportedChainId, merged.getMaxPriorityFee),\n supportsEip1559: withChainIdCheck(supportedChainId, merged.supportsEip1559),\n }));\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mock-nonce-service.js","sourceRoot":"","sources":["../../src/testing-kit/mock-nonce-service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAGhC,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAoDtE,MAAM,aAAa,GAAqC;IACtD,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC;IACxC,iBAAiB,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;IAC3C,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;IACjC,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;IACjC,eAAe,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;IACzC,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC;IACxC,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;IACjC,IAAI,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;CAC/B,CAAC;AA+BF,MAAM,CAAC,MAAM,yBAAyB,GAAG,CACvC,SAAiC,EAAE,EACnC,gBAAgB,GAAG,CAAC,EACO,EAAE,CAC7B,oBAAoB,CAAC,YAAY,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAErE,OAAO,EAAE,CAAC,MAAM,EAAE,EAAE,CAClB,MAAM,CAAC,OAAO,KAAK,gBAAgB,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC;IAG1F,iBAAiB,EAAE,gBAAgB,CAAC,gBAAgB,EAAE,MAAM,CAAC,iBAAiB,CAAC;IAC/E,OAAO,EAAE,gBAAgB,CAAC,gBAAgB,EAAE,MAAM,CAAC,OAAO,CAAC;IAC3D,OAAO,EAAE,gBAAgB,CAAC,gBAAgB,EAAE,MAAM,CAAC,OAAO,CAAC;IAC3D,eAAe,EAAE,gBAAgB,CAAC,gBAAgB,EAAE,MAAM,CAAC,eAAe,CAAC;IAC3E,OAAO,EAAE,CAAC,MAAM,EAAE,EAAE,CAClB,MAAM,CAAC,OAAO,KAAK,gBAAgB,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC;IAC1F,OAAO,EAAE,gBAAgB,CAAC,gBAAgB,EAAE,MAAM,CAAC,OAAO,CAAC;IAC3D,IAAI,EAAE,gBAAgB,CAAC,gBAAgB,EAAE,MAAM,CAAC,IAAI,CAAC;CACtD,CAAC,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"mock-nonce-service.js","sourceRoot":"","sources":["../../src/testing-kit/mock-nonce-service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAGhC,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAoDtE,MAAM,aAAa,GAAqC;IACtD,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC;IACxC,iBAAiB,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;IAC3C,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;IACjC,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;IACjC,eAAe,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;IACzC,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC;IACxC,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;IACjC,IAAI,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;CAC/B,CAAC;AA+BF,MAAM,CAAC,MAAM,yBAAyB,GAAG,CACvC,SAAiC,EAAE,EACnC,gBAAgB,GAAG,CAAC,EACO,EAAE,CAC7B,oBAAoB,CAAC,YAAY,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAErE,OAAO,EAAE,CAAC,MAAM,EAAE,EAAE,CAClB,MAAM,CAAC,OAAO,KAAK,gBAAgB,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC;IAG1F,iBAAiB,EAAE,gBAAgB,CAAC,gBAAgB,EAAE,MAAM,CAAC,iBAAiB,CAAC;IAC/E,OAAO,EAAE,gBAAgB,CAAC,gBAAgB,EAAE,MAAM,CAAC,OAAO,CAAC;IAC3D,OAAO,EAAE,gBAAgB,CAAC,gBAAgB,EAAE,MAAM,CAAC,OAAO,CAAC;IAC3D,eAAe,EAAE,gBAAgB,CAAC,gBAAgB,EAAE,MAAM,CAAC,eAAe,CAAC;IAC3E,OAAO,EAAE,CAAC,MAAM,EAAE,EAAE,CAClB,MAAM,CAAC,OAAO,KAAK,gBAAgB,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC;IAC1F,OAAO,EAAE,gBAAgB,CAAC,gBAAgB,EAAE,MAAM,CAAC,OAAO,CAAC;IAC3D,IAAI,EAAE,gBAAgB,CAAC,gBAAgB,EAAE,MAAM,CAAC,IAAI,CAAC;CACtD,CAAC,CAAC,CAAC","sourcesContent":["import type { Layer } from \"effect\";\nimport { Effect } from \"effect\";\nimport type { Address } from \"viem\";\nimport type { ClientNotFoundError, TransportError } from \"@/src/core/index.js\";\nimport { NonceService } from \"@/src/nonce/index.js\";\nimport { makeMockServiceLayer, withChainIdCheck } from \"./helpers.js\";\n\n/**\n * Configuration for the mock NonceService\n *\n * All methods are optional - sensible defaults are provided.\n * Override specific methods to customize mock behavior for your tests.\n */\nexport type MockNonceServiceConfig = {\n getNext?: (params: {\n address: Address;\n chainId: number;\n }) => Effect.Effect<bigint, ClientNotFoundError | TransportError>;\n\n reserve?: (params: {\n address: Address;\n chainId: number;\n }) => Effect.Effect<bigint, ClientNotFoundError | TransportError>;\n\n release?: (params: {\n address: Address;\n chainId: number;\n nonce: bigint;\n }) => Effect.Effect<void, never>;\n\n confirm?: (params: {\n address: Address;\n chainId: number;\n nonce: bigint;\n }) => Effect.Effect<void, never>;\n\n getPendingCount?: (params: {\n address: Address;\n chainId: number;\n }) => Effect.Effect<bigint, ClientNotFoundError | TransportError>;\n\n getConfirmedCount?: (params: {\n address: Address;\n chainId: number;\n }) => Effect.Effect<bigint, ClientNotFoundError | TransportError>;\n\n getGaps?: (params: {\n address: Address;\n chainId: number;\n }) => Effect.Effect<bigint[], ClientNotFoundError>;\n\n sync?: (params: {\n address: Address;\n chainId: number;\n }) => Effect.Effect<bigint, ClientNotFoundError | TransportError>;\n};\n\nconst defaultConfig: Required<MockNonceServiceConfig> = {\n confirm: () => Effect.succeed(undefined),\n getConfirmedCount: () => Effect.succeed(0n),\n getGaps: () => Effect.succeed([]),\n getNext: () => Effect.succeed(0n),\n getPendingCount: () => Effect.succeed(0n),\n release: () => Effect.succeed(undefined),\n reserve: () => Effect.succeed(0n),\n sync: () => Effect.succeed(0n),\n};\n\n/**\n * Creates a mock NonceService 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 = makeMockNonceServiceLayer();\n *\n * // Override specific methods\n * const layer = makeMockNonceServiceLayer({\n * getNext: () => Effect.succeed(5n),\n * reserve: () => Effect.succeed(5n),\n * });\n *\n * // Use in tests\n * Effect.gen(function* () {\n * const nonceService = yield* NonceService;\n * const nonce = yield* nonceService.getNext({\n * chainId: mainnet.id,\n * address: \"0x...\",\n * });\n * }).pipe(\n * Effect.provide(layer)\n * );\n * ```\n */\nexport const makeMockNonceServiceLayer = (\n config: MockNonceServiceConfig = {},\n supportedChainId = 1\n): Layer.Layer<NonceService> =>\n makeMockServiceLayer(NonceService, defaultConfig, config, (merged) => ({\n // Methods that never fail - they succeed silently for unsupported chains\n confirm: (params) =>\n params.chainId === supportedChainId ? merged.confirm(params) : Effect.succeed(undefined),\n\n // Methods that can fail with ClientNotFoundError\n getConfirmedCount: withChainIdCheck(supportedChainId, merged.getConfirmedCount),\n getGaps: withChainIdCheck(supportedChainId, merged.getGaps),\n getNext: withChainIdCheck(supportedChainId, merged.getNext),\n getPendingCount: withChainIdCheck(supportedChainId, merged.getPendingCount),\n release: (params) =>\n params.chainId === supportedChainId ? merged.release(params) : Effect.succeed(undefined),\n reserve: withChainIdCheck(supportedChainId, merged.reserve),\n sync: withChainIdCheck(supportedChainId, merged.sync),\n }));\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mock-public-client.js","sourceRoot":"","sources":["../../src/testing-kit/mock-public-client.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAC/B,OAAO,EAAE,SAAS,IAAI,IAAI,EAAE,MAAM,iBAAiB,CAAC;AASpD,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAEtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AA8DjD,MAAM,eAAe,GAAG,4CAAuD,CAAC;AAChF,MAAM,YAAY,GAAG,oEAA4E,CAAC;AAClG,MAAM,gBAAgB,GAAG,4CAAuD,CAAC;AACjF,MAAM,gBAAgB,GAAG,wCAA+C,CAAC;AAEzE,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;AA4BF,MAAM,CAAC,MAAM,yBAAyB,GAAG,CACvC,SAAiC,EAAE,EACnC,gBAAgB,GAAG,CAAC,EACc,EAAE;IACpC,MAAM,gBAAgB,GAAqD,CAAC,MAAe,EAAE,EAAE;QAC7F,MAAM,KAAK,GAAI,MAAoC,CAAC,SAAS,IAAI,EAAE,CAAC;QACpE,OAAO,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,SAAkB,EAAE,CAAC,CAAC,CAAC,CAAC;IAC1F,CAAC,CAAC;IAEF,MAAM,gCAAgC,GAElC,KAAK,EAAE,MAAsB,EAA+B,EAAE,CAAC,CAAC;QAClE,SAAS,EAAE,YAAY;QACvB,WAAW,EAAE,KAAK;QAClB,eAAe,EAAE,IAAI;QACrB,iBAAiB,EAAE,UAAU;QAC7B,iBAAiB,EAAE,WAAW;QAC9B,IAAI,EAAE,eAAe;QACrB,OAAO,EAAE,UAAU;QACnB,IAAI,EAAE,EAAE;QACR,SAAS,EAAE,MAAiB;QAC5B,MAAM,EAAE,SAAS;QACjB,EAAE,EAAE,4CAAuD;QAC3D,eAAe,EAAE,MAAM,CAAC,IAAI;QAC5B,gBAAgB,EAAE,CAAC;QACnB,IAAI,EAAE,SAAS;KAChB,CAAC,CAAC;IAEH,MAAM,EACJ,mBAAmB,GAAG,KAAK,IAAI,EAAE,CAAC,UAAU,EAC5C,WAAW,GAAG,KAAK,IAAI,EAAE,CAAC,UAAU,EACpC,4BAA4B,GAAG,KAAK,IAAI,EAAE,CAAC,WAAW,EACtD,UAAU,GAAG,KAAK,IAAI,EAAE,CAAC,oBAAoB,EAC7C,QAAQ,GAAG,KAAK,IAAI,EAAE,CAAC,aAAa,EACpC,cAAc,GAAG,KAAK,IAAI,EAAE,CAAC,KAAK,EAClC,WAAW,GAAG,KAAK,IAAI,EAAE,CAAC,gBAAgB,EAC1C,aAAa,GAAG,KAAK,IAAI,EAAE,CAAC,eAAe,EAC3C,YAAY,GAAG,KAAK,IAAI,EAAE,CAAC,gCAAgC,EAC3D,UAAU,GAAG,KAAK,IAAI,EAAE,CAAC,UAAU,EACnC,cAAc,GAAG,KAAK,IAAI,EAAE,CAAC,gBAAgB,EAC7C,UAAU,GAAG,KAAK,IAAI,EAAE,CAAC,kBAAkB,EAC3C,WAAW,GAAG,KAAK,IAAI,EAAE,CAAC,YAAY,EACtC,OAAO,GAAG,KAAK,IAAI,EAAE,CAAC,EAAE,EACxB,2BAA2B,GAAG,KAAK,IAAI,EAAE,CAAC,EAAE,EAC5C,mBAAmB,GAAG,KAAK,IAAI,EAAE,CAAC,CAAC,EACnC,SAAS,GAAG,gBAAgB,EAC5B,YAAY,GAAG,KAAK,IAAI,EAAE,CAAC,IAAI,EAC/B,gBAAgB,GAAG,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAC9D,yBAAyB,GAAG,gCAAgC,EAC5D,gBAAgB,GAAG,GAAG,EAAE,CAAC,IAAI,EAC7B,WAAW,GAAG,GAAG,EAAE,CAAC,IAAI,EACxB,kBAAkB,GAAG,GAAG,EAAE,CAAC,IAAI,EAC/B,UAAU,GAAG,GAAG,EAAE,CAAC,IAAI,EACvB,wBAAwB,GAAG,GAAG,EAAE,CAAC,IAAI,GACtC,GAAG,MAAM,CAAC;IAGX,MAAM,gBAAgB,GAAG;QACvB,KAAK,EAAE,EAAE,EAAE,EAAE,gBAAgB,EAAE;QAC/B,mBAAmB;QACnB,WAAW;QACX,4BAA4B;QAC5B,UAAU;QACV,QAAQ;QACR,cAAc;QACd,WAAW;QACX,aAAa;QACb,YAAY;QACZ,UAAU;QACV,cAAc;QACd,UAAU;QACV,WAAW;QACX,OAAO;QACP,2BAA2B;QAC3B,mBAAmB;QACnB,SAAS;QACT,YAAY;QACZ,gBAAgB;QAChB,SAAS,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,kBAAkB,EAAE;QACpD,yBAAyB;QACzB,gBAAgB;QAChB,WAAW;QACX,kBAAkB;QAClB,UAAU;QACV,wBAAwB;KAOjB,CAAC;IAEV,OAAO,KAAK,CAAC,OAAO,CAClB,mBAAmB,EACnB,mBAAmB,CAAC,EAAE,CAAC;QACrB,GAAG,EAAE,iBAAiB,CAAC,gBAAgB,EAAE,GAAG,EAAE,CAAC,gBAAgB,CAAC;KACjE,CAAC,CACH,CAAC;AACJ,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"mock-public-client.js","sourceRoot":"","sources":["../../src/testing-kit/mock-public-client.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Effect } from \"effect\";\nimport { Layer } from \"effect\";\nimport { constVoid as noop } from \"effect/Function\";\nimport type {\n Address,\n Block,\n Hash,\n Hex,\n TransactionReceipt,\n WatchContractEventParameters,\n} from \"viem\";\nimport { MIN_TX_GAS } from \"@/src/constants/index.js\";\nimport type { PublicClientServiceShape } from \"@/src/core/index.js\";\nimport { PublicClientService } from \"@/src/core/index.js\";\nimport { makeChainIdGetter } from \"./helpers.js\";\n\n/**\n * Configuration for the mock PublicClient\n *\n * All methods are optional - sensible defaults are provided.\n * Override specific methods to customize mock behavior for your tests.\n */\nexport type MockPublicClientConfig = {\n // Contract methods\n readContract?: (params: unknown) => Promise<unknown>;\n multicall?: (\n params: unknown\n ) => Promise<Array<{ status: \"success\"; result: unknown } | { status: \"failure\"; error: Error }>>;\n estimateContractGas?: (params: unknown) => Promise<bigint>;\n simulateContract?: (params: unknown) => Promise<{ request: unknown; result: unknown }>;\n\n // Balance methods\n getBalance?: (params: {\n address: Address;\n blockTag?: \"latest\" | \"pending\";\n blockNumber?: bigint;\n }) => Promise<bigint>;\n\n // Transaction methods\n waitForTransactionReceipt?: (params: { hash: Hash }) => Promise<TransactionReceipt>;\n getTransactionConfirmations?: (\n params: { hash: Hash } | { transactionReceipt: TransactionReceipt }\n ) => Promise<bigint>;\n getTransactionCount?: (params: {\n address: Address;\n blockTag: \"latest\" | \"pending\";\n }) => Promise<number>;\n\n // Event methods\n watchContractEvent?: (params: WatchContractEventParameters) => () => void;\n getLogs?: (params: unknown) => Promise<unknown[]>;\n\n // Block methods\n getBlockNumber?: () => Promise<bigint>;\n getBlock?: (params: unknown) => Promise<Block>;\n watchBlockNumber?: (params: unknown) => () => void;\n watchBlocks?: (params: unknown) => () => void;\n watchEvent?: (params: unknown) => () => void;\n watchPendingTransactions?: (params: unknown) => () => void;\n\n // Gas methods\n getGasPrice?: () => Promise<bigint>;\n estimateMaxPriorityFeePerGas?: () => Promise<bigint>;\n estimateGas?: (params: unknown) => Promise<bigint>;\n\n // Bytecode methods\n getBytecode?: (params: { address: Address }) => Promise<Hex | null>;\n\n // ENS methods\n getEnsAddress?: (params: unknown) => Promise<Address | null>;\n getEnsName?: (params: unknown) => Promise<string | null>;\n getEnsAvatar?: (params: unknown) => Promise<string | null>;\n getEnsText?: (params: unknown) => Promise<string | null>;\n getEnsResolver?: (params: unknown) => Promise<Address | null>;\n};\n\nconst DEFAULT_ADDRESS = \"0x1234567890123456789012345678901234567890\" as Address;\nconst DEFAULT_HASH = \"0xdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef\" as Hash;\nconst DEFAULT_RESOLVER = \"0x4976fb03C32e5B8cfe2b6cCB31c09Ba78EBaBa41\" as Address;\nconst DEFAULT_BYTECODE = \"0x608060405234801561001057600080fd5b50\" as Hex;\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\n/**\n * Creates a mock PublicClientService 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 = makeMockPublicClientLayer();\n *\n * // Override specific methods\n * const layer = makeMockPublicClientLayer({\n * readContract: async () => 1000n,\n * getEnsAddress: async () => \"0x...\",\n * });\n *\n * // Use in tests\n * Effect.gen(function* () {\n * const reader = yield* ContractReader;\n * const result = yield* reader.read({ ... });\n * }).pipe(\n * Effect.provide(Layer.provide(ContractReaderLive, layer))\n * );\n * ```\n */\nexport const makeMockPublicClientLayer = (\n config: MockPublicClientConfig = {},\n supportedChainId = 1\n): Layer.Layer<PublicClientService> => {\n const defaultMulticall: NonNullable<MockPublicClientConfig[\"multicall\"]> = (params: unknown) => {\n const calls = (params as { contracts?: unknown[] }).contracts ?? [];\n return Promise.resolve(calls.map(() => ({ result: 100n, status: \"success\" as const })));\n };\n\n const defaultWaitForTransactionReceipt: NonNullable<\n MockPublicClientConfig[\"waitForTransactionReceipt\"]\n > = async (params: { hash: Hash }): Promise<TransactionReceipt> => ({\n blockHash: DEFAULT_HASH,\n blockNumber: 1000n,\n contractAddress: null,\n cumulativeGasUsed: MIN_TX_GAS,\n effectiveGasPrice: 1000000000n,\n from: DEFAULT_ADDRESS,\n gasUsed: MIN_TX_GAS,\n logs: [],\n logsBloom: \"0x00\" as Address,\n status: \"success\",\n to: \"0xabcdefabcdefabcdefabcdefabcdefabcdefabcd\" as Address,\n transactionHash: params.hash,\n transactionIndex: 0,\n type: \"eip1559\",\n });\n\n const {\n estimateContractGas = async () => MIN_TX_GAS,\n estimateGas = async () => MIN_TX_GAS,\n estimateMaxPriorityFeePerGas = async () => 1500000000n,\n getBalance = async () => 1000000000000000000n,\n getBlock = async () => DEFAULT_BLOCK,\n getBlockNumber = async () => 1000n,\n getBytecode = async () => DEFAULT_BYTECODE,\n getEnsAddress = async () => DEFAULT_ADDRESS,\n getEnsAvatar = async () => \"https://example.com/avatar.png\",\n getEnsName = async () => \"mock.eth\",\n getEnsResolver = async () => DEFAULT_RESOLVER,\n getEnsText = async () => \"mock-text-record\",\n getGasPrice = async () => 45000000000n,\n getLogs = async () => [],\n getTransactionConfirmations = async () => 3n,\n getTransactionCount = async () => 0,\n multicall = defaultMulticall,\n readContract = async () => 100n,\n simulateContract = async () => ({ request: {}, result: true }),\n waitForTransactionReceipt = defaultWaitForTransactionReceipt,\n watchBlockNumber = () => noop,\n watchBlocks = () => noop,\n watchContractEvent = () => noop,\n watchEvent = () => noop,\n watchPendingTransactions = () => noop,\n } = config;\n\n // Create mock PublicClient\n const mockPublicClient = {\n chain: { id: supportedChainId },\n estimateContractGas,\n estimateGas,\n estimateMaxPriorityFeePerGas,\n getBalance,\n getBlock,\n getBlockNumber,\n getBytecode,\n getEnsAddress,\n getEnsAvatar,\n getEnsName,\n getEnsResolver,\n getEnsText,\n getGasPrice,\n getLogs,\n getTransactionConfirmations,\n getTransactionCount,\n multicall,\n readContract,\n simulateContract,\n transport: { type: \"http\", url: \"http://localhost\" },\n waitForTransactionReceipt,\n watchBlockNumber,\n watchBlocks,\n watchContractEvent,\n watchEvent,\n watchPendingTransactions,\n } as unknown as ReturnType<PublicClientServiceShape[\"get\"]> extends Effect.Effect<\n infer A,\n infer _E,\n infer _R\n >\n ? A\n : never;\n\n return Layer.succeed(\n PublicClientService,\n PublicClientService.of({\n get: makeChainIdGetter(supportedChainId, () => mockPublicClient),\n })\n );\n};\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mock-signature-service.js","sourceRoot":"","sources":["../../src/testing-kit/mock-signature-service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAQhC,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAEpD,MAAM,eAAe,GAAG,4CAAuD,CAAC;AAChF,MAAM,YAAY,GAAG,oEAA2E,CAAC;AAmEjG,MAAM,aAAa,GAAyC;IAC1D,WAAW,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC;IACvD,aAAa,EAAE,CAAC,OAAO,EAAE,EAAE,CACzB,MAAM,CAAC,OAAO,CAAC,YAAY,CAAuD;IACpF,aAAa,EAAE,CAAC,OAAO,EAAE,EAAE,CACzB,MAAM,CAAC,OAAO,CACZ,sIAA6I,CAC9I;IACH,cAAc,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC;IAC5D,uBAAuB,EAAE,CAAC,OAAO,EAAE,EAAE,CACnC,MAAM,CAAC,OAAO,CAAC,eAAe,CAAiE;IACjG,cAAc,EAAE,CAAC,UAAU,EAAE,EAAE,CAC7B,MAAM,CAAC,OAAO,CAAC;QACb,CAAC,EAAE,oEAA2E;QAC9E,CAAC,EAAE,oEAA2E;QAC9E,CAAC,EAAE,GAAG;KACP,CAAC;IACJ,aAAa,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;IAChD,eAAe,EAAE,CAAC,OAAO,EAAE,EAAE,CAC3B,MAAM,CAAC,OAAO,CAAC,IAAI,CAAyD;CAC/E,CAAC;AA+BF,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAC3C,SAAqC,EAAE,EACR,EAAE,CACjC,oBAAoB,CAAC,gBAAgB,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACzE,WAAW,EAAE,MAAM,CAAC,WAAW;IAC/B,aAAa,EAAE,MAAM,CAAC,aAAuD;IAC7E,aAAa,EAAE,MAAM,CAAC,aAAa;IACnC,cAAc,EAAE,MAAM,CAAC,cAAc;IACrC,uBAAuB,EACrB,MAAM,CAAC,uBAA2E;IACpF,cAAc,EAAE,MAAM,CAAC,cAAc;IACrC,aAAa,EAAE,MAAM,CAAC,aAAa;IACnC,eAAe,EAAE,MAAM,CAAC,eAA2D;CACpF,CAAC,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"mock-signature-service.js","sourceRoot":"","sources":["../../src/testing-kit/mock-signature-service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAQhC,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAEpD,MAAM,eAAe,GAAG,4CAAuD,CAAC;AAChF,MAAM,YAAY,GAAG,oEAA2E,CAAC;AAmEjG,MAAM,aAAa,GAAyC;IAC1D,WAAW,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC;IACvD,aAAa,EAAE,CAAC,OAAO,EAAE,EAAE,CACzB,MAAM,CAAC,OAAO,CAAC,YAAY,CAAuD;IACpF,aAAa,EAAE,CAAC,OAAO,EAAE,EAAE,CACzB,MAAM,CAAC,OAAO,CACZ,sIAA6I,CAC9I;IACH,cAAc,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC;IAC5D,uBAAuB,EAAE,CAAC,OAAO,EAAE,EAAE,CACnC,MAAM,CAAC,OAAO,CAAC,eAAe,CAAiE;IACjG,cAAc,EAAE,CAAC,UAAU,EAAE,EAAE,CAC7B,MAAM,CAAC,OAAO,CAAC;QACb,CAAC,EAAE,oEAA2E;QAC9E,CAAC,EAAE,oEAA2E;QAC9E,CAAC,EAAE,GAAG;KACP,CAAC;IACJ,aAAa,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;IAChD,eAAe,EAAE,CAAC,OAAO,EAAE,EAAE,CAC3B,MAAM,CAAC,OAAO,CAAC,IAAI,CAAyD;CAC/E,CAAC;AA+BF,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAC3C,SAAqC,EAAE,EACR,EAAE,CACjC,oBAAoB,CAAC,gBAAgB,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACzE,WAAW,EAAE,MAAM,CAAC,WAAW;IAC/B,aAAa,EAAE,MAAM,CAAC,aAAuD;IAC7E,aAAa,EAAE,MAAM,CAAC,aAAa;IACnC,cAAc,EAAE,MAAM,CAAC,cAAc;IACrC,uBAAuB,EACrB,MAAM,CAAC,uBAA2E;IACpF,cAAc,EAAE,MAAM,CAAC,cAAc;IACrC,aAAa,EAAE,MAAM,CAAC,aAAa;IACnC,eAAe,EAAE,MAAM,CAAC,eAA2D;CACpF,CAAC,CAAC,CAAC","sourcesContent":["import type { Layer } from \"effect\";\nimport { Effect } from \"effect\";\nimport type { Address, Hex, TypedData, TypedDataDomain } from \"viem\";\nimport type {\n InvalidSignatureError,\n SignatureRecoveryError,\n SignatureServiceShape,\n SignatureVerificationError,\n} from \"@/src/signature/index.js\";\nimport { SignatureService } from \"@/src/signature/index.js\";\nimport { makeMockServiceLayer } from \"./helpers.js\";\n\nconst DEFAULT_ADDRESS = \"0x1234567890123456789012345678901234567890\" as Address;\nconst DEFAULT_HASH = \"0xdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef\" as Hex;\n\n/**\n * Configuration for the mock SignatureService\n *\n * All methods are optional - sensible defaults are provided.\n * Override specific methods to customize mock behavior for your tests.\n */\nexport type MockSignatureServiceConfig = {\n verifyMessage?: (params: {\n address: Address;\n message: string | Uint8Array;\n signature: Hex;\n }) => Effect.Effect<boolean, SignatureVerificationError>;\n\n verifyTypedData?: <\n const TTypedData extends TypedData,\n TPrimaryType extends keyof TTypedData,\n >(params: {\n address: Address;\n domain: TypedDataDomain;\n types: TTypedData;\n primaryType: TPrimaryType;\n message: Record<string, unknown>;\n signature: Hex;\n }) => Effect.Effect<boolean, SignatureVerificationError>;\n\n recoverAddress?: (params: {\n message: string | Uint8Array;\n signature: Hex;\n }) => Effect.Effect<Address, SignatureRecoveryError>;\n\n recoverTypedDataAddress?: <\n const TTypedData extends TypedData,\n TPrimaryType extends keyof TTypedData,\n >(params: {\n domain: TypedDataDomain;\n types: TTypedData;\n primaryType: TPrimaryType;\n message: Record<string, unknown>;\n signature: Hex;\n }) => Effect.Effect<Address, SignatureRecoveryError>;\n\n splitSignature?: (signature: Hex) => Effect.Effect<\n {\n r: Hex;\n s: Hex;\n v: bigint;\n },\n InvalidSignatureError\n >;\n\n joinSignature?: (params: { r: Hex; s: Hex; v: bigint }) => Effect.Effect<Hex, never>;\n\n hashMessage?: (message: string | Uint8Array) => Effect.Effect<Hex, never>;\n\n hashTypedData?: <\n const TTypedData extends TypedData,\n TPrimaryType extends keyof TTypedData,\n >(params: {\n domain: TypedDataDomain;\n types: TTypedData;\n primaryType: TPrimaryType;\n message: Record<string, unknown>;\n }) => Effect.Effect<Hex, never>;\n};\n\nconst defaultConfig: Required<MockSignatureServiceConfig> = {\n hashMessage: (_message) => Effect.succeed(DEFAULT_HASH),\n hashTypedData: (_params) =>\n Effect.succeed(DEFAULT_HASH) as ReturnType<SignatureServiceShape[\"hashTypedData\"]>,\n joinSignature: (_params) =>\n Effect.succeed(\n \"0x1234567890123456789012345678901234567890123456789012345678901234abcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcd1b\" as Hex\n ),\n recoverAddress: (_params) => Effect.succeed(DEFAULT_ADDRESS),\n recoverTypedDataAddress: (_params) =>\n Effect.succeed(DEFAULT_ADDRESS) as ReturnType<SignatureServiceShape[\"recoverTypedDataAddress\"]>,\n splitSignature: (_signature) =>\n Effect.succeed({\n r: \"0x1234567890123456789012345678901234567890123456789012345678901234\" as Hex,\n s: \"0xabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcd\" as Hex,\n v: 27n,\n }),\n verifyMessage: (_params) => Effect.succeed(true),\n verifyTypedData: (_params) =>\n Effect.succeed(true) as ReturnType<SignatureServiceShape[\"verifyTypedData\"]>,\n};\n\n/**\n * Creates a mock SignatureService layer for testing\n *\n * @param config - Optional configuration to override default mock behaviors\n *\n * @example\n * ```typescript\n * // Basic usage with defaults\n * const layer = makeMockSignatureServiceLayer();\n *\n * // Override specific methods\n * const layer = makeMockSignatureServiceLayer({\n * verifyMessage: () => Effect.succeed(true),\n * recoverAddress: () => Effect.succeed(\"0x...\" as Address),\n * });\n *\n * // Use in tests\n * Effect.gen(function* () {\n * const signatureService = yield* SignatureService;\n * const isValid = yield* signatureService.verifyMessage({\n * address: \"0x...\",\n * message: \"Hello\",\n * signature: \"0x...\",\n * });\n * }).pipe(\n * Effect.provide(layer)\n * );\n * ```\n */\nexport const makeMockSignatureServiceLayer = (\n config: MockSignatureServiceConfig = {}\n): Layer.Layer<SignatureService> =>\n makeMockServiceLayer(SignatureService, defaultConfig, config, (merged) => ({\n hashMessage: merged.hashMessage,\n hashTypedData: merged.hashTypedData as SignatureServiceShape[\"hashTypedData\"],\n joinSignature: merged.joinSignature,\n recoverAddress: merged.recoverAddress,\n recoverTypedDataAddress:\n merged.recoverTypedDataAddress as SignatureServiceShape[\"recoverTypedDataAddress\"],\n splitSignature: merged.splitSignature,\n verifyMessage: merged.verifyMessage,\n verifyTypedData: merged.verifyTypedData as SignatureServiceShape[\"verifyTypedData\"],\n }));\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mock-simulation-service.js","sourceRoot":"","sources":["../../src/testing-kit/mock-simulation-service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAExD,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAiCtE,MAAM,yBAAyB,GAAqB;IAClD,QAAQ,EAAE,SAAS;IACnB,OAAO,EAAE,UAAU;IACnB,IAAI,EAAE,EAAE;IACR,SAAS,EAAE,EAAE;IACb,OAAO,EAAE,IAAI;IACb,KAAK,EAAE,EAAE;CACV,CAAC;AAEF,MAAM,aAAa,GAA0C;IAC3D,kBAAkB,EAAE,CAAC,MAAwB,EAAE,EAAE;QAC/C,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC;QACzD,MAAM,UAAU,GACd,MAAM,CAAC,QAAQ,GAAG,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAChG,OAAO,MAAM,CAAC,OAAO,CACnB,qCAAqC,MAAM,UAAU,MAAM,CAAC,OAAO,CAAC,cAAc,EAAE,MAAM,MAAM,CAAC,QAAQ,CAAC,cAAc,EAAE,KAAK,UAAU,GAAG,CAC7I,CAAC;IACJ,CAAC;IACD,QAAQ,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,yBAAyB,CAAC;IACzD,cAAc,EAAE,CAAC,MAAM,EAAE,EAAE,CACzB,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,yBAAyB,CAAC,CAAC;CAC3E,CAAC;AA+BF,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAC5C,SAAsC,EAAE,EACxC,gBAAgB,GAAG,CAAC,EACY,EAAE,CAClC,oBAAoB,CAAC,iBAAiB,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAC1E,kBAAkB,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,kBAAkB,CAAC,MAAM,EAAE,GAAG,CAAC;IAE3E,QAAQ,EAAE,gBAAgB,CACxB,gBAAgB,EAChB,MAAM,CAAC,QAAQ,CACiC;IAClD,cAAc,EAAE,gBAAgB,CAC9B,gBAAgB,EAChB,MAAM,CAAC,cAAc,CACiC;CACzD,CAAC,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"mock-simulation-service.js","sourceRoot":"","sources":["../../src/testing-kit/mock-simulation-service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAExD,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAiCtE,MAAM,yBAAyB,GAAqB;IAClD,QAAQ,EAAE,SAAS;IACnB,OAAO,EAAE,UAAU;IACnB,IAAI,EAAE,EAAE;IACR,SAAS,EAAE,EAAE;IACb,OAAO,EAAE,IAAI;IACb,KAAK,EAAE,EAAE;CACV,CAAC;AAEF,MAAM,aAAa,GAA0C;IAC3D,kBAAkB,EAAE,CAAC,MAAwB,EAAE,EAAE;QAC/C,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC;QACzD,MAAM,UAAU,GACd,MAAM,CAAC,QAAQ,GAAG,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAChG,OAAO,MAAM,CAAC,OAAO,CACnB,qCAAqC,MAAM,UAAU,MAAM,CAAC,OAAO,CAAC,cAAc,EAAE,MAAM,MAAM,CAAC,QAAQ,CAAC,cAAc,EAAE,KAAK,UAAU,GAAG,CAC7I,CAAC;IACJ,CAAC;IACD,QAAQ,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,yBAAyB,CAAC;IACzD,cAAc,EAAE,CAAC,MAAM,EAAE,EAAE,CACzB,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,yBAAyB,CAAC,CAAC;CAC3E,CAAC;AA+BF,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAC5C,SAAsC,EAAE,EACxC,gBAAgB,GAAG,CAAC,EACY,EAAE,CAClC,oBAAoB,CAAC,iBAAiB,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAC1E,kBAAkB,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,kBAAkB,CAAC,MAAM,EAAE,GAAG,CAAC;IAE3E,QAAQ,EAAE,gBAAgB,CACxB,gBAAgB,EAChB,MAAM,CAAC,QAAQ,CACiC;IAClD,cAAc,EAAE,gBAAgB,CAC9B,gBAAgB,EAChB,MAAM,CAAC,cAAc,CACiC;CACzD,CAAC,CAAC,CAAC","sourcesContent":["import type { Layer } from \"effect\";\nimport { Effect } from \"effect\";\nimport type { Abi, Address, Hex } from \"viem\";\nimport { MIN_TX_GAS } from \"@/src/constants/index.js\";\nimport { formatPercent } from \"@/src/internal/index.js\";\nimport type { SimulationResult, SimulationServiceShape } from \"@/src/simulation/index.js\";\nimport { SimulationService } from \"@/src/simulation/index.js\";\nimport { makeMockServiceLayer, withChainIdCheck } from \"./helpers.js\";\n\n/**\n * Configuration for the mock SimulationService\n *\n * All methods are optional - sensible defaults are provided.\n * Override specific methods to customize mock behavior for your tests.\n */\nexport type MockSimulationServiceConfig = {\n simulate?: (params: {\n chainId: number;\n from: Address;\n to: Address;\n data?: Hex;\n value?: bigint;\n gas?: bigint;\n blockNumber?: bigint;\n }) => Effect.Effect<SimulationResult>;\n\n simulateBundle?: (params: {\n chainId: number;\n transactions: Array<{\n from: Address;\n to: Address;\n data?: Hex;\n value?: bigint;\n }>;\n blockNumber?: bigint;\n }) => Effect.Effect<SimulationResult[]>;\n\n getReadableSummary?: (result: SimulationResult, abi?: Abi) => Effect.Effect<string>;\n};\n\nconst DEFAULT_SIMULATION_RESULT: SimulationResult = {\n gasLimit: 30000000n,\n gasUsed: MIN_TX_GAS,\n logs: [],\n stateDiff: [],\n success: true,\n trace: [],\n};\n\nconst defaultConfig: Required<MockSimulationServiceConfig> = {\n getReadableSummary: (result: SimulationResult) => {\n const status = result.success ? \"✓ Success\" : \"✗ Failed\";\n const gasPercent =\n result.gasLimit > 0n ? formatPercent(Number(result.gasUsed) / Number(result.gasLimit)) : \"0%\";\n return Effect.succeed(\n `Mock simulation summary:\\nStatus: ${status}\\nGas: ${result.gasUsed.toLocaleString()} / ${result.gasLimit.toLocaleString()} (${gasPercent})`\n );\n },\n simulate: () => Effect.succeed(DEFAULT_SIMULATION_RESULT),\n simulateBundle: (params) =>\n Effect.succeed(params.transactions.map(() => DEFAULT_SIMULATION_RESULT)),\n};\n\n/**\n * Creates a mock SimulationService 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 = makeMockSimulationServiceLayer();\n *\n * // Override specific methods\n * const layer = makeMockSimulationServiceLayer({\n * simulate: () => Effect.succeed({\n * success: true,\n * gasUsed: 50000n,\n * gasLimit: 100000n,\n * logs: [],\n * stateDiff: [],\n * }),\n * });\n *\n * // Use in tests\n * Effect.gen(function* () {\n * const simService = yield* SimulationService;\n * const result = yield* simService.simulate({ ... });\n * }).pipe(Effect.provide(layer));\n * ```\n */\nexport const makeMockSimulationServiceLayer = (\n config: MockSimulationServiceConfig = {},\n supportedChainId = 1\n): Layer.Layer<SimulationService> =>\n makeMockServiceLayer(SimulationService, defaultConfig, config, (merged) => ({\n getReadableSummary: (result, abi) => merged.getReadableSummary(result, abi),\n // Cast to widen error type from ClientNotFoundError to TenderlyErrors\n simulate: withChainIdCheck(\n supportedChainId,\n merged.simulate\n ) as unknown as SimulationServiceShape[\"simulate\"],\n simulateBundle: withChainIdCheck(\n supportedChainId,\n merged.simulateBundle\n ) as unknown as SimulationServiceShape[\"simulateBundle\"],\n }));\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mock-subscription-service.js","sourceRoot":"","sources":["../../src/testing-kit/mock-subscription-service.ts"],"names":[],"mappings":"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"}
|
|
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 watchPendingTransactions?: (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 watchPendingTransactionsRetrying?: (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 watchPendingTransactions: () => Effect.succeed(Stream.empty),\n watchPendingTransactionsRetrying: (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.watchPendingTransactions(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 watchPendingTransactions: withChainIdCheck(supportedChainId, merged.watchPendingTransactions),\n watchPendingTransactionsRetrying: withChainIdCheck(\n supportedChainId,\n merged.watchPendingTransactionsRetrying\n ),\n }));\n"]}
|
|
@@ -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 TransactionFailedError,\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 | TransactionFailedError\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 | TransactionFailedError\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":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAC/B,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAEtC,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAE5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAExD,OAAO,EACL,oBAAoB,EACpB,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,yBAAyB,CAAC;AAGjC,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE1D,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE1D,OAAO,EAAE,eAAe,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAEjF,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAExD,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAEhE,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAElE,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAEvE,OAAO,EAAE,2BAA2B,EAAE,MAAM,2CAA2C,CAAC;AAExF,OAAO,EAAE,yBAAyB,EAAE,MAAM,yCAAyC,CAAC;AAEpF,OAAO,EAAE,0BAA0B,EAAE,MAAM,0CAA0C,CAAC;AAEtF,OAAO,EAAE,0BAA0B,EAAE,MAAM,0CAA0C,CAAC;AAEtF,OAAO,EAAE,uBAAuB,EAAE,MAAM,uCAAuC,CAAC;AAEhF,OAAO,EAAE,yBAAyB,EAAE,MAAM,yCAAyC,CAAC;AAEpF,OAAO,EAAE,yBAAyB,EAAE,MAAM,yCAAyC,CAAC;AAEpF,OAAO,EAAE,6BAA6B,EAAE,MAAM,6CAA6C,CAAC;AAE5F,OAAO,EAAE,8BAA8B,EAAE,MAAM,8CAA8C,CAAC;AAE9F,OAAO,EAAE,gCAAgC,EAAE,MAAM,gDAAgD,CAAC;AAElG,OAAO,EAAE,yBAAyB,EAAE,MAAM,yCAAyC,CAAC;AAEpF,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AA4FrE,MAAM,YAAY,GAAG,KAAK,CAAC,QAAQ,CACjC,gBAAgB,EAChB,kBAAkB,EAClB,kBAAkB,EAClB,cAAc,EACd,gBAAgB,EAChB,oBAAoB,EACpB,uBAAuB,EACvB,eAAe,EACf,eAAe,CAChB,CAAC;AAEF,MAAM,UAAU,GAAG,KAAK,CAAC,YAAY,CACnC,aAAa,EACb,KAAK,CAAC,YAAY,CAAC,iBAAiB,EAAE,YAAY,CAAC,CACpD,CAAC;AAEF,MAAM,mBAAmB,GAAG,KAAK,CAAC,YAAY,CAC5C,KAAK,CAAC,QAAQ,CACZ,kBAAkB,EAClB,oBAAoB,EACpB,iBAAiB,EACjB,iBAAiB,EACjB,uBAAuB,EACvB,qBAAqB,CACtB,EACD,UAAU,CACX,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC;AAuC7C,MAAM,UAAU,sBAAsB,CACpC,SAA0B,EAAE;IAsB5B,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,OAAO,CAAC,EAAE,CAAC;IAG7C,MAAM,YAAY,GAAG,KAAK,CAAC,QAAQ,CACjC,yBAAyB,CAAC,MAAM,CAAC,YAAY,IAAI,EAAE,EAAE,OAAO,CAAC,EAC7D,yBAAyB,CAAC,MAAM,CAAC,YAAY,IAAI,EAAE,EAAE,OAAO,CAAC,CAC9D,CAAC;IAGF,IAAI,gBAAgB,GAAG,KAAK,CAAC,KAAK,CAAC;IAEnC,IAAI,MAAM,CAAC,cAAc,EAAE,CAAC;QAC1B,gBAAgB,GAAG,KAAK,CAAC,KAAK,CAC5B,gBAAgB,EAChB,2BAA2B,CAAC,MAAM,CAAC,cAAc,EAAE,OAAO,CAAC,CAC5D,CAAC;IACJ,CAAC;IACD,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;QACxB,gBAAgB,GAAG,KAAK,CAAC,KAAK,CAC5B,gBAAgB,EAChB,yBAAyB,CAAC,MAAM,CAAC,YAAY,EAAE,OAAO,CAAC,CACxD,CAAC;IACJ,CAAC;IACD,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;QACzB,gBAAgB,GAAG,KAAK,CAAC,KAAK,CAC5B,gBAAgB,EAChB,0BAA0B,CAAC,MAAM,CAAC,aAAa,EAAE,OAAO,CAAC,CAC1D,CAAC;IACJ,CAAC;IACD,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;QACtB,gBAAgB,GAAG,KAAK,CAAC,KAAK,CAC5B,gBAAgB,EAChB,uBAAuB,CAAC,MAAM,CAAC,UAAU,EAAE,OAAO,CAAC,CACpD,CAAC;IACJ,CAAC;IACD,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;QACxB,gBAAgB,GAAG,KAAK,CAAC,KAAK,CAC5B,gBAAgB,EAChB,yBAAyB,CAAC,MAAM,CAAC,YAAY,EAAE,OAAO,CAAC,CACxD,CAAC;IACJ,CAAC;IACD,IAAI,MAAM,CAAC,gBAAgB,EAAE,CAAC;QAC5B,gBAAgB,GAAG,KAAK,CAAC,KAAK,CAC5B,gBAAgB,EAChB,6BAA6B,CAAC,MAAM,CAAC,gBAAgB,CAAC,CACvD,CAAC;IACJ,CAAC;IACD,IAAI,MAAM,CAAC,mBAAmB,EAAE,CAAC;QAC/B,gBAAgB,GAAG,KAAK,CAAC,KAAK,CAC5B,gBAAgB,EAChB,gCAAgC,CAAC,MAAM,CAAC,mBAAmB,EAAE,OAAO,CAAC,CACtE,CAAC;IACJ,CAAC;IACD,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;QACzB,gBAAgB,GAAG,KAAK,CAAC,KAAK,CAC5B,gBAAgB,EAChB,0BAA0B,CAAC,MAAM,CAAC,aAAa,EAAE,OAAO,CAAC,CAC1D,CAAC;IACJ,CAAC;IACD,IAAI,MAAM,CAAC,iBAAiB,EAAE,CAAC;QAC7B,gBAAgB,GAAG,KAAK,CAAC,KAAK,CAC5B,gBAAgB,EAChB,8BAA8B,CAAC,MAAM,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAClE,CAAC;IACJ,CAAC;IAGD,MAAM,SAAS,GAAG,KAAK,CAAC,YAAY,CAAC,mBAAmB,EAAE,YAAY,CAAC,CAAC;IAExE,OAAO,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE,gBAAgB,CAoB7C,CAAC;AACJ,CAAC","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 +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":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAEhD,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAEtD,OAAO,EACL,sBAAsB,EACtB,mBAAmB,EACnB,eAAe,EACf,mBAAmB,EACnB,mBAAmB,EACnB,sBAAsB,EACtB,iBAAiB,EACjB,mBAAmB,EACnB,uBAAuB,GACxB,MAAM,qBAAqB,CAAC;AAkD7B,MAAM,OAAO,eAAgB,SAAQ,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,EAGpE;CAAG;AAKN,MAAM,qBAAqB,GAAG,CAC5B,KAAc,EACd,EAAW,EAC0D,EAAE;IACvE,IAAI,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO,IAAI,iBAAiB,CAAC;YAC3B,OAAO,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,+BAA+B;SAClF,CAAC,CAAC;IACL,CAAC;IAED,IAAI,mBAAmB,CAAC,KAAK,CAAC,EAAE,CAAC;QAC/B,OAAO,IAAI,sBAAsB,CAAC;YAChC,SAAS,EAAE,GAAG;YACd,OAAO,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,iCAAiC;YACnF,QAAQ,EAAE,GAAG;SACd,CAAC,CAAC;IACL,CAAC;IAED,OAAO,IAAI,sBAAsB,CAAC;QAChC,KAAK,EAAE,KAAK;QACZ,IAAI,EAAE,IAAI;QACV,OAAO,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,8BAA8B,EAAE,EAAE;KACrF,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,CAAC,MAAM,CAC7C,eAAe,EACf,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,mBAAmB,GAAG,KAAK,CAAC,CAAC,mBAAmB,CAAC;IACvD,MAAM,mBAAmB,GAAG,KAAK,CAAC,CAAC,mBAAmB,CAAC;IAEvD,OAAO,eAAe,CAAC,EAAE,CAAC;QACxB,WAAW,EAAE,MAAM,CAAC,EAAE,CAAC,6BAA6B,CAAC,CAAC,QAAQ,CAAC,EAAE,MAAM;YACrE,MAAM,YAAY,GAAG,KAAK,CAAC,CAAC,mBAAmB,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAGpE,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC;gBAC9B,KAAK,EAAE,GAAG,EAAE,CAAC,UAAU;gBACvB,GAAG,EAAE,GAAG,EAAE,CACR,YAAY,CAAC,WAAW,CAAC;oBACvB,EAAE,EAAE,MAAM,CAAC,EAAE;oBACb,KAAK,EAAE,MAAM,CAAC,KAAK;iBACpB,CAAC;aACL,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAC7D,CAAC,CAAC;QAEF,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC,sBAAsB,CAAC,CAAC,QAAQ,CAAC,EAAE,MAAM;YACvD,MAAM,YAAY,GAAG,KAAK,CAAC,CAAC,mBAAmB,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YACpE,MAAM,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC;gBACzC,KAAK,EAAE,GAAG,EAAE,CACV,IAAI,uBAAuB,CAAC;oBAC1B,OAAO,EAAE,MAAM,CAAC,OAAO;oBACvB,OAAO,EAAE,kBAAkB;iBAC5B,CAAC;gBACJ,GAAG,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE;aACvC,CAAC,CAAC;YAEH,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CACvB,IAAI,uBAAuB,CAAC;oBAC1B,OAAO,EAAE,MAAM,CAAC,OAAO;oBACvB,OAAO,EAAE,sBAAsB;iBAChC,CAAC,CACH,CAAC;YACJ,CAAC;YAGD,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,EAAE,QAAQ,KAAK,SAAS,CAAC;YAE3D,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC;gBAC9B,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,qBAAqB,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC;gBACzD,GAAG,EAAE,GAAG,EAAE,CACR,SAAS;oBACP,CAAC,CAAE,YAA6B,CAAC,eAAe,CAAC;wBAC7C,OAAO;wBACP,KAAK,EAAE,IAAI;wBACX,GAAG,EAAE,MAAM,CAAC,SAAS,EAAE,GAAG;wBAC1B,QAAQ,EAAE,MAAM,CAAC,SAAS,EAAE,QAAQ;wBACpC,KAAK,EAAE,MAAM,CAAC,SAAS,EAAE,KAAK;wBAC9B,EAAE,EAAE,MAAM,CAAC,EAAE;wBACb,IAAI,EAAE,QAAQ;wBACd,KAAK,EAAE,MAAM,CAAC,KAAK;qBACpB,CAAC;oBACJ,CAAC,CAAE,YAA6B,CAAC,eAAe,CAAC;wBAC7C,OAAO;wBACP,KAAK,EAAE,IAAI;wBACX,GAAG,EAAE,MAAM,CAAC,SAAS,EAAE,GAAG;wBAC1B,YAAY,EAAE,MAAM,CAAC,SAAS,EAAE,YAAY;wBAC5C,oBAAoB,EAAE,MAAM,CAAC,SAAS,EAAE,oBAAoB;wBAC5D,KAAK,EAAE,MAAM,CAAC,SAAS,EAAE,KAAK;wBAC9B,EAAE,EAAE,MAAM,CAAC,EAAE;wBACb,IAAI,EAAE,SAAS;wBACf,KAAK,EAAE,MAAM,CAAC,KAAK;qBACpB,CAAC;aACT,CAAC,CAAC;QACL,CAAC,CAAC;QAEF,WAAW,EAAE,MAAM,CAAC,EAAE,CAAC,6BAA6B,CAAC,CAAC,QAAQ,CAAC,EAAE,MAAM;YACrE,MAAM,YAAY,GAAG,KAAK,CAAC,CAAC,mBAAmB,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YACpE,MAAM,YAAY,GAAG,KAAK,CAAC,CAAC,mBAAmB,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YACpE,MAAM,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC;gBACzC,KAAK,EAAE,GAAG,EAAE,CACV,IAAI,uBAAuB,CAAC;oBAC1B,OAAO,EAAE,MAAM,CAAC,OAAO;oBACvB,OAAO,EAAE,kBAAkB;iBAC5B,CAAC;gBACJ,GAAG,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE;aACvC,CAAC,CAAC;YAEH,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CACvB,IAAI,uBAAuB,CAAC;oBAC1B,OAAO,EAAE,MAAM,CAAC,OAAO;oBACvB,OAAO,EAAE,sBAAsB;iBAChC,CAAC,CACH,CAAC;YACJ,CAAC;YAGD,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,EAAE,QAAQ,KAAK,SAAS,CAAC;YAE3D,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC;gBACpC,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,qBAAqB,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC;gBACzD,GAAG,EAAE,GAAG,EAAE,CACR,SAAS;oBACP,CAAC,CAAE,YAA6B,CAAC,eAAe,CAAC;wBAC7C,OAAO;wBACP,KAAK,EAAE,IAAI;wBACX,GAAG,EAAE,MAAM,CAAC,SAAS,EAAE,GAAG;wBAC1B,QAAQ,EAAE,MAAM,CAAC,SAAS,EAAE,QAAQ;wBACpC,KAAK,EAAE,MAAM,CAAC,SAAS,EAAE,KAAK;wBAC9B,EAAE,EAAE,MAAM,CAAC,EAAE;wBACb,IAAI,EAAE,QAAQ;wBACd,KAAK,EAAE,MAAM,CAAC,KAAK;qBACpB,CAAC;oBACJ,CAAC,CAAE,YAA6B,CAAC,eAAe,CAAC;wBAC7C,OAAO;wBACP,KAAK,EAAE,IAAI;wBACX,GAAG,EAAE,MAAM,CAAC,SAAS,EAAE,GAAG;wBAC1B,YAAY,EAAE,MAAM,CAAC,SAAS,EAAE,YAAY;wBAC5C,oBAAoB,EAAE,MAAM,CAAC,SAAS,EAAE,oBAAoB;wBAC5D,KAAK,EAAE,MAAM,CAAC,SAAS,EAAE,KAAK;wBAC9B,EAAE,EAAE,MAAM,CAAC,EAAE;wBACb,IAAI,EAAE,SAAS;wBACf,KAAK,EAAE,MAAM,CAAC,KAAK;qBACpB,CAAC;aACT,CAAC,CAAC;YAEH,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC;gBAC9B,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE;oBACf,IAAI,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;wBAChE,OAAO,IAAI,mBAAmB,CAAC;4BAC7B,IAAI;4BACJ,OAAO,EAAE,mCAAmC,IAAI,EAAE;4BAClD,OAAO,EAAE,MAAM;yBAChB,CAAC,CAAC;oBACL,CAAC;oBACD,OAAO,IAAI,sBAAsB,CAAC;wBAChC,KAAK,EAAE,KAAK;wBACZ,IAAI;wBACJ,OAAO,EAAE,kCAAkC,IAAI,EAAE;qBAClD,CAAC,CAAC;gBACL,CAAC;gBACD,GAAG,EAAE,GAAG,EAAE,CACR,YAAY,CAAC,yBAAyB,CAAC;oBACrC,aAAa,EAAE,MAAM,CAAC,aAAa;oBACnC,IAAI;iBACL,CAAC;aACL,CAAC,CAAC;QACL,CAAC,CAAC;KACH,CAAC,CAAC;AACL,CAAC,CAAC,CACH,CAAC","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 TransactionFailedError,\n UserRejectedError,\n WalletClientService,\n WalletNotConnectedError,\n} from \"@/src/core/index.js\";\n\nexport type TransferOverrides = {\n readonly gas?: bigint;\n readonly gasPrice?: bigint;\n readonly maxFeePerGas?: bigint;\n readonly maxPriorityFeePerGas?: bigint;\n readonly nonce?: number;\n};\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 | TransactionFailedError\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 | TransactionFailedError\n | ReceiptTimeoutError\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 | TransactionFailedError => {\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 TransactionFailedError({\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\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 // Determine if we should use legacy or EIP-1559 transaction type\n const useLegacy = params.overrides?.gasPrice !== undefined;\n\n return yield* Effect.tryPromise({\n catch: (error) => classifyTransferError(error, params.to),\n try: () =>\n useLegacy\n ? (walletClient as WalletClient).sendTransaction({\n account,\n chain: null,\n gas: params.overrides?.gas,\n gasPrice: params.overrides?.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: params.overrides?.maxFeePerGas,\n maxPriorityFeePerGas: params.overrides?.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 // Determine if we should use legacy or EIP-1559 transaction type\n const useLegacy = params.overrides?.gasPrice !== undefined;\n\n const hash = yield* Effect.tryPromise({\n catch: (error) => classifyTransferError(error, params.to),\n try: () =>\n useLegacy\n ? (walletClient as WalletClient).sendTransaction({\n account,\n chain: null,\n gas: params.overrides?.gas,\n gasPrice: params.overrides?.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: params.overrides?.maxFeePerGas,\n maxPriorityFeePerGas: params.overrides?.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 TransactionFailedError({\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.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 (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.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/tx/manager.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/tx/manager.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Scope, SubscriptionRef } from \"effect\";\nimport { Clock, Context, Effect, Fiber, Layer, Ref, Stream } from \"effect\";\nimport type { Hash, TransactionReceipt } from \"viem\";\nimport { WaitForTransactionReceiptTimeoutError } from \"viem\";\nimport { DEFAULT_RECEIPT_TIMEOUT, DEFAULT_STUCK_TX_MS } from \"@/src/constants/index.js\";\nimport type { ClientNotFoundError, TransactionReplacementReason } from \"@/src/core/index.js\";\nimport {\n PublicClientService,\n ReceiptTimeoutError,\n TransactionFailedError,\n TransactionReplacedError,\n TransportError,\n} from \"@/src/core/index.js\";\nimport { SpanNames } from \"@/src/telemetry/index.js\";\nimport type { TxPolicy } from \"./policy.js\";\nimport { defaultPolicy } from \"./policy.js\";\nimport { TxReplacement } from \"./replacement.js\";\nimport type { TxState } from \"./tracker.js\";\nimport { makeTxTracker } from \"./tracker.js\";\n\nexport type TxManagerShape = {\n /**\n * Track an existing transaction hash and return a SubscriptionRef for state updates\n */\n readonly track: (\n chainId: number,\n hash: Hash,\n policy?: TxPolicy\n ) => Effect.Effect<SubscriptionRef.SubscriptionRef<TxState>, ClientNotFoundError, Scope.Scope>;\n\n /**\n * Wait for transaction receipt with timeout\n */\n readonly waitForReceipt: (\n chainId: number,\n hash: Hash,\n timeoutOrPolicy?: number | TxPolicy\n ) => Effect.Effect<\n TransactionReceipt,\n TransactionFailedError | ReceiptTimeoutError | TransactionReplacedError | ClientNotFoundError\n >;\n\n /**\n * Get the number of confirmations for a transaction\n */\n readonly getConfirmations: (\n chainId: number,\n params: { hash: Hash } | { transactionReceipt: TransactionReceipt }\n ) => Effect.Effect<bigint, ClientNotFoundError | TransportError>;\n};\n\nexport class TxManager extends Context.Tag(\"ew3/TxManager\")<TxManager, TxManagerShape>() {}\n\nexport const TxManagerLive = Layer.effect(\n TxManager,\n Effect.gen(function* () {\n const publicClientService = yield* PublicClientService;\n const txReplacement = yield* TxReplacement;\n\n return {\n getConfirmations: Effect.fn(\"TxManager.getConfirmations\")(function* (chainId, params) {\n const client = yield* publicClientService.get(chainId);\n\n return yield* Effect.tryPromise({\n catch: (cause) =>\n new TransportError({\n cause,\n message:\n cause instanceof Error ? cause.message : \"Failed to get transaction confirmations\",\n url: client.transport.url ?? \"\",\n }),\n try: () => client.getTransactionConfirmations(params),\n }).pipe(\n Effect.withSpan(SpanNames.TX_GET_CONFIRMATIONS, {\n attributes: {\n chainId,\n hash: \"hash\" in params ? params.hash : params.transactionReceipt.transactionHash,\n },\n })\n );\n }),\n track: Effect.fn(\"TxManager.track\")(function* (chainId, hash, providedPolicy) {\n const tracker = yield* makeTxTracker;\n const client = yield* publicClientService.get(chainId);\n const policy: TxPolicy = {\n ...defaultPolicy,\n ...providedPolicy,\n replacement: {\n ...(defaultPolicy.replacement ?? {}),\n ...(providedPolicy?.replacement ?? {}),\n },\n };\n\n // Set initial state\n yield* tracker.set({ hash, status: \"submitted\" });\n\n // Start tracking in background\n yield* Effect.forkScoped(\n Effect.gen(function* () {\n const currentHashRef = yield* Ref.make<Hash>(hash);\n const confirmationsRef = yield* Ref.make(0);\n const startedAtMsRef = yield* Ref.make(yield* Clock.currentTimeMillis);\n const autoAttemptsRef = yield* Ref.make(0);\n const autoReplacingRef = yield* Ref.make(false);\n\n const replacementStrategy =\n policy.replacement?.strategy ?? policy.replacementStrategy ?? \"none\";\n const stuckBlocks = policy.replacement?.stuckBlocks ?? 3;\n const stuckMs = policy.replacement?.stuckMs ?? DEFAULT_STUCK_TX_MS;\n const maxAttempts = policy.replacement?.maxAttempts ?? 1;\n\n const updatePendingState = (currentHash: Hash) =>\n Effect.gen(function* () {\n const confirmations = yield* Ref.modify(\n confirmationsRef,\n (n) => [n + 1, n + 1] as const\n );\n\n yield* tracker.set({\n confirmations,\n hash: currentHash,\n status: \"pending\",\n });\n return confirmations;\n });\n\n const performAutoReplacement = (currentHash: Hash, now: number) =>\n Ref.set(autoReplacingRef, true).pipe(\n Effect.zipRight(\n (replacementStrategy === \"cancel\"\n ? txReplacement.cancel(chainId, currentHash, policy)\n : txReplacement.speedup(chainId, currentHash, policy)\n ).pipe(\n Effect.either,\n Effect.ensuring(Ref.set(autoReplacingRef, false)),\n Effect.flatMap((replaced) => {\n if (replaced._tag === \"Left\") {\n return Effect.void;\n }\n\n const newHash = replaced.right;\n return Effect.all([\n Ref.set(currentHashRef, newHash),\n Ref.set(confirmationsRef, 0),\n Ref.set(startedAtMsRef, now),\n Ref.update(autoAttemptsRef, (n) => n + 1),\n tracker.set({\n newHash,\n oldHash: currentHash,\n reason: replacementStrategy === \"cancel\" ? \"cancelled\" : \"repriced\",\n status: \"replaced\",\n }),\n tracker.set({ hash: newHash, status: \"submitted\" }),\n ]).pipe(Effect.asVoid);\n })\n )\n )\n );\n\n const autoReplaceIfStuck = (currentHash: Hash, confirmations: number) => {\n if (replacementStrategy === \"none\") {\n return Effect.void;\n }\n\n return Effect.all({\n alreadyReplacing: Ref.get(autoReplacingRef),\n attempts: Ref.get(autoAttemptsRef),\n now: Clock.currentTimeMillis,\n startedAt: Ref.get(startedAtMsRef),\n }).pipe(\n Effect.flatMap(({ alreadyReplacing, attempts, now, startedAt }) => {\n const elapsed = startedAt > 0 ? now - startedAt : 0;\n const stuck = confirmations >= stuckBlocks || elapsed >= stuckMs;\n const allowed = attempts < maxAttempts && !alreadyReplacing;\n return stuck && allowed ? performAutoReplacement(currentHash, now) : Effect.void;\n })\n );\n };\n\n const onPendingBlock = Effect.gen(function* () {\n const currentHash = yield* Ref.get(currentHashRef);\n const confirmations = yield* updatePendingState(currentHash);\n yield* autoReplaceIfStuck(currentHash, confirmations);\n });\n\n const pendingFiber = yield* Stream.runForEach(\n Stream.async<bigint, unknown>((emit) => {\n const unwatch = client.watchBlockNumber({\n onBlockNumber: (blockNumber: bigint) => emit.single(blockNumber),\n onError: (error) => emit.fail(error as unknown),\n pollingInterval: policy.pollingInterval,\n });\n\n return Effect.sync(() => {\n unwatch();\n });\n }),\n () => onPendingBlock\n ).pipe(Effect.forkScoped);\n\n let replacement:\n | {\n oldHash: Hash;\n newHash: Hash;\n reason: TransactionReplacementReason;\n }\n | undefined;\n\n const receiptResult = yield* Effect.either(\n Effect.tryPromise({\n catch: (e) => e,\n try: () =>\n client.waitForTransactionReceipt({\n hash,\n onReplaced: (info) => {\n replacement = {\n newHash: info.transaction.hash,\n oldHash: info.replacedTransaction.hash,\n reason: info.reason,\n };\n },\n pollingInterval: policy.pollingInterval,\n timeout: policy.receiptTimeout,\n }),\n })\n ).pipe(Effect.ensuring(Fiber.interrupt(pendingFiber)));\n\n if (receiptResult._tag === \"Left\") {\n const cause = receiptResult.left;\n const timeout = policy.receiptTimeout ?? DEFAULT_RECEIPT_TIMEOUT;\n\n const failure =\n cause instanceof WaitForTransactionReceiptTimeoutError\n ? new ReceiptTimeoutError({\n hash,\n message: cause.message,\n timeout,\n })\n : cause;\n\n yield* tracker.set({\n error: new TransactionFailedError({\n cause: failure,\n hash,\n message: failure instanceof Error ? failure.message : String(failure),\n }),\n status: \"failed\",\n });\n\n return;\n }\n\n const receipt = receiptResult.right;\n\n if (replacement) {\n yield* Ref.set(currentHashRef, replacement.newHash);\n yield* tracker.set({\n newHash: replacement.newHash,\n oldHash: replacement.oldHash,\n reason: replacement.reason,\n status: \"replaced\",\n });\n yield* tracker.set({\n hash: replacement.newHash,\n status: \"submitted\",\n });\n }\n\n yield* tracker.set({\n effectiveGasPrice: receipt.effectiveGasPrice,\n hash: receipt.transactionHash,\n receipt,\n status: \"mined\",\n });\n })\n );\n\n return tracker.ref;\n }),\n\n waitForReceipt: Effect.fn(\"TxManager.waitForReceipt\")(\n function* (chainId, hash, timeoutOrPolicy) {\n const client = yield* publicClientService.get(chainId);\n const policy =\n typeof timeoutOrPolicy === \"object\" && timeoutOrPolicy !== null\n ? timeoutOrPolicy\n : undefined;\n const timeout =\n typeof timeoutOrPolicy === \"number\"\n ? timeoutOrPolicy\n : (policy?.receiptTimeout ?? defaultPolicy.receiptTimeout ?? DEFAULT_RECEIPT_TIMEOUT);\n const pollingInterval = policy?.pollingInterval ?? defaultPolicy.pollingInterval;\n\n return yield* Effect.tryPromise({\n catch: (cause) => {\n if (cause instanceof TransactionReplacedError) {\n return cause;\n }\n\n if (cause instanceof WaitForTransactionReceiptTimeoutError) {\n return new ReceiptTimeoutError({\n hash,\n message: cause.message,\n timeout,\n });\n }\n\n if (cause instanceof Error && cause.message.toLowerCase().includes(\"timeout\")) {\n return new ReceiptTimeoutError({\n hash,\n message: cause.message,\n timeout,\n });\n }\n\n return new TransactionFailedError({\n cause,\n hash,\n message: `Failed to get receipt for ${hash}`,\n });\n },\n try: async () => {\n let replacement: { newHash: Hash; reason: TransactionReplacementReason } | undefined;\n\n const receipt = await client.waitForTransactionReceipt({\n hash,\n onReplaced: (info) => {\n replacement = {\n newHash: info.transaction.hash,\n reason: info.reason,\n };\n },\n pollingInterval,\n timeout,\n });\n\n // Only throw if there's an actual replacement (different hash)\n if (replacement && replacement.newHash !== hash) {\n throw new TransactionReplacedError({\n message: `Transaction ${hash} was ${replacement.reason} with ${replacement.newHash}`,\n newHash: replacement.newHash,\n oldHash: hash,\n reason: replacement.reason,\n });\n }\n\n return receipt;\n },\n }).pipe(\n Effect.withSpan(SpanNames.TX_WAIT, {\n attributes: {\n chainId,\n hash,\n timeout,\n },\n })\n );\n }\n ),\n };\n })\n);\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manager.test.integration.js","sourceRoot":"","sources":["../../src/tx/manager.test.integration.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"manager.test.integration.js","sourceRoot":"","sources":["../../src/tx/manager.test.integration.ts"],"names":[],"mappings":"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","sourcesContent":["import { describe, expect, it } from \"@effect/vitest\";\nimport { Effect, Either, Exit, Layer } from \"effect\";\nimport type { TransactionReceipt } from \"viem\";\nimport { MIN_TX_GAS } from \"@/src/constants/index.js\";\nimport { makeMockPublicClientLayer, TEST_CHAIN_ID, TEST_TX_HASH } from \"@/src/testing-kit/index.js\";\nimport { TxManager, TxManagerLive, TxReplacement } from \"@/src/tx/index.js\";\n\nconst txReplacementLayer = Layer.succeed(\n TxReplacement,\n TxReplacement.of({\n cancel: () => Effect.succeed(TEST_TX_HASH),\n speedup: () => Effect.succeed(TEST_TX_HASH),\n })\n);\n\nconst TEST_RECEIPT: TransactionReceipt = {\n blockHash: \"0xblock\",\n blockNumber: 123n,\n contractAddress: null,\n cumulativeGasUsed: MIN_TX_GAS,\n effectiveGasPrice: 1n,\n from: \"0xfrom\",\n gasUsed: MIN_TX_GAS,\n logs: [],\n logsBloom: \"0x\",\n status: \"success\",\n to: \"0xto\",\n transactionHash: TEST_TX_HASH,\n transactionIndex: 0,\n type: \"0x2\",\n};\n\ndescribe(\"TxManager\", () => {\n describe(\"waitForReceipt\", () => {\n it.effect(\"returns receipt on success\", () =>\n Effect.gen(function* () {\n const manager = yield* TxManager;\n const receipt = yield* manager.waitForReceipt(TEST_CHAIN_ID, TEST_TX_HASH);\n\n expect(receipt.transactionHash).toBe(TEST_TX_HASH);\n expect(receipt.status).toBe(\"success\");\n }).pipe(\n Effect.provide(\n Layer.provide(\n TxManagerLive,\n Layer.mergeAll(\n makeMockPublicClientLayer({\n waitForTransactionReceipt: async () => TEST_RECEIPT,\n }),\n txReplacementLayer\n )\n )\n )\n )\n );\n\n it.effect(\"returns TransactionFailedError on failure\", () =>\n Effect.gen(function* () {\n const manager = yield* TxManager;\n const exit = yield* manager.waitForReceipt(TEST_CHAIN_ID, TEST_TX_HASH).pipe(Effect.exit);\n\n expect(Exit.isFailure(exit)).toBe(true);\n }).pipe(\n Effect.provide(\n Layer.provide(\n TxManagerLive,\n Layer.mergeAll(\n makeMockPublicClientLayer({\n waitForTransactionReceipt: () => Promise.reject(new Error(\"Transaction reverted\")),\n }),\n txReplacementLayer\n )\n )\n )\n )\n );\n\n it.effect(\"returns ReceiptTimeoutError when error message contains timeout\", () =>\n Effect.gen(function* () {\n const manager = yield* TxManager;\n const exit = yield* manager\n .waitForReceipt(TEST_CHAIN_ID, TEST_TX_HASH, 5000)\n .pipe(Effect.exit);\n\n expect(Exit.isFailure(exit)).toBe(true);\n }).pipe(\n Effect.provide(\n Layer.provide(\n TxManagerLive,\n Layer.mergeAll(\n makeMockPublicClientLayer({\n waitForTransactionReceipt: () =>\n Promise.reject(new Error(\"timeout waiting for transaction\")),\n }),\n txReplacementLayer\n )\n )\n )\n )\n );\n\n it.effect(\"returns TransactionReplacedError when transaction is replaced\", () =>\n Effect.gen(function* () {\n const manager = yield* TxManager;\n const result = yield* manager\n .waitForReceipt(TEST_CHAIN_ID, TEST_TX_HASH)\n .pipe(Effect.either);\n\n Either.match(result, {\n onLeft: (error) => {\n expect(error._tag).toBe(\"TransactionReplacedError\");\n if (error._tag === \"TransactionReplacedError\") {\n expect(error.oldHash).toBe(TEST_TX_HASH);\n expect(error.newHash).toBe(\n \"0x9999999999999999999999999999999999999999999999999999999999999999\"\n );\n expect(error.reason).toBe(\"replaced\");\n }\n },\n onRight: () => {\n throw new Error(\"Expected failure (Left), got success (Right)\");\n },\n });\n }).pipe(\n Effect.provide(\n Layer.provide(\n TxManagerLive,\n Layer.mergeAll(\n makeMockPublicClientLayer({\n waitForTransactionReceipt: (params: unknown) => {\n type ReplacementInfo = {\n reason: \"cancelled\" | \"replaced\" | \"repriced\";\n transaction: { hash: string };\n };\n type WaitForTransactionReceiptParams = {\n hash: string;\n onReplaced?: (info: ReplacementInfo) => void;\n };\n\n const { onReplaced } = params as WaitForTransactionReceiptParams;\n\n onReplaced?.({\n reason: \"replaced\",\n transaction: {\n hash: \"0x9999999999999999999999999999999999999999999999999999999999999999\",\n },\n });\n\n return Promise.resolve({\n ...TEST_RECEIPT,\n transactionHash:\n \"0x9999999999999999999999999999999999999999999999999999999999999999\",\n } as TransactionReceipt);\n },\n }),\n txReplacementLayer\n )\n )\n )\n )\n );\n\n it.effect(\"returns receipt when onReplaced fires with same hash (no actual replacement)\", () =>\n Effect.gen(function* () {\n const manager = yield* TxManager;\n const result = yield* manager\n .waitForReceipt(TEST_CHAIN_ID, TEST_TX_HASH)\n .pipe(Effect.either);\n\n Either.match(result, {\n onLeft: (error) => {\n throw new Error(`Expected success (Right), got error (Left): ${error._tag}`);\n },\n onRight: (receipt) => {\n expect(receipt.transactionHash).toBe(TEST_TX_HASH);\n expect(receipt.status).toBe(\"success\");\n },\n });\n }).pipe(\n Effect.provide(\n Layer.provide(\n TxManagerLive,\n Layer.mergeAll(\n makeMockPublicClientLayer({\n waitForTransactionReceipt: (params: unknown) => {\n type ReplacementInfo = {\n reason: \"cancelled\" | \"replaced\" | \"repriced\";\n transaction: { hash: string };\n };\n type WaitForTransactionReceiptParams = {\n hash: string;\n onReplaced?: (info: ReplacementInfo) => void;\n };\n\n const { onReplaced, hash } = params as WaitForTransactionReceiptParams;\n\n // Simulate viem calling onReplaced with same hash (edge case)\n onReplaced?.({\n reason: \"repriced\",\n transaction: { hash }, // Same hash as original!\n });\n\n return Promise.resolve({\n ...TEST_RECEIPT,\n transactionHash: hash, // Same hash\n } as TransactionReceipt);\n },\n }),\n txReplacementLayer\n )\n )\n )\n )\n );\n });\n\n describe(\"track\", () => {\n it.effect(\"returns SubscriptionRef with initial submitted state\", () =>\n Effect.gen(function* () {\n const manager = yield* TxManager;\n const ref = yield* manager.track(TEST_CHAIN_ID, TEST_TX_HASH);\n const state = yield* ref.get;\n\n expect(state.status).toBe(\"submitted\");\n if (state.status === \"submitted\") {\n expect(state.hash).toBe(TEST_TX_HASH);\n }\n }).pipe(\n Effect.provide(\n Layer.provide(\n TxManagerLive,\n Layer.mergeAll(\n makeMockPublicClientLayer({\n waitForTransactionReceipt: async () =>\n new Promise<never>(() => {\n // Intentionally never resolves.\n }),\n }),\n txReplacementLayer\n )\n )\n ),\n Effect.scoped\n )\n );\n\n // Note: Testing background state updates in a scoped fork is complex\n // These tests verify that track() returns a proper SubscriptionRef\n // Integration tests should verify the full async behavior\n });\n\n describe(\"getConfirmations\", () => {\n it.effect(\"returns confirmations when called with hash param\", () =>\n Effect.gen(function* () {\n const manager = yield* TxManager;\n const confirmations = yield* manager.getConfirmations(TEST_CHAIN_ID, {\n hash: TEST_TX_HASH,\n });\n\n expect(confirmations).toBe(5n);\n }).pipe(\n Effect.provide(\n Layer.provide(\n TxManagerLive,\n Layer.mergeAll(\n makeMockPublicClientLayer({\n getTransactionConfirmations: async () => 5n,\n }),\n txReplacementLayer\n )\n )\n )\n )\n );\n\n it.effect(\"returns confirmations when called with transactionReceipt param\", () =>\n Effect.gen(function* () {\n const manager = yield* TxManager;\n\n const confirmations = yield* manager.getConfirmations(TEST_CHAIN_ID, {\n transactionReceipt: TEST_RECEIPT,\n });\n\n expect(confirmations).toBe(10n);\n }).pipe(\n Effect.provide(\n Layer.provide(\n TxManagerLive,\n Layer.mergeAll(\n makeMockPublicClientLayer({\n getTransactionConfirmations: async () => 10n,\n }),\n txReplacementLayer\n )\n )\n )\n )\n );\n\n it.effect(\"returns TransportError on failure\", () =>\n Effect.gen(function* () {\n const manager = yield* TxManager;\n const exit = yield* manager\n .getConfirmations(TEST_CHAIN_ID, { hash: TEST_TX_HASH })\n .pipe(Effect.exit);\n\n expect(Exit.isFailure(exit)).toBe(true);\n }).pipe(\n Effect.provide(\n Layer.provide(\n TxManagerLive,\n Layer.mergeAll(\n makeMockPublicClientLayer({\n getTransactionConfirmations: () => Promise.reject(new Error(\"RPC error\")),\n }),\n txReplacementLayer\n )\n )\n )\n )\n );\n });\n});\n"]}
|
package/dist/tx/policy.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"policy.js","sourceRoot":"","sources":["../../src/tx/policy.ts"],"names":[],"mappings":"AACA,OAAO,EACL,4BAA4B,EAC5B,wBAAwB,EACxB,uBAAuB,GACxB,MAAM,0BAA0B,CAAC;AA8BlC,MAAM,CAAC,MAAM,aAAa,GAAa;IACrC,QAAQ,EAAE,UAAU;IACpB,kBAAkB,EAAE,4BAA4B;IAChD,eAAe,EAAE,wBAAwB;IACzC,cAAc,EAAE,uBAAuB;IACvC,mBAAmB,EAAE,MAAM;CAC5B,CAAC"}
|
|
1
|
+
{"version":3,"file":"policy.js","sourceRoot":"","sources":["../../src/tx/policy.ts"],"names":[],"mappings":"AACA,OAAO,EACL,4BAA4B,EAC5B,wBAAwB,EACxB,uBAAuB,GACxB,MAAM,0BAA0B,CAAC;AA8BlC,MAAM,CAAC,MAAM,aAAa,GAAa;IACrC,QAAQ,EAAE,UAAU;IACpB,kBAAkB,EAAE,4BAA4B;IAChD,eAAe,EAAE,wBAAwB;IACzC,cAAc,EAAE,uBAAuB;IACvC,mBAAmB,EAAE,MAAM;CAC5B,CAAC","sourcesContent":["/** Transaction execution policy */\nimport {\n DEFAULT_GAS_LIMIT_MULTIPLIER,\n DEFAULT_POLLING_INTERVAL,\n DEFAULT_RECEIPT_TIMEOUT,\n} from \"@/src/constants/index.js\";\nimport type { GasSpeed } from \"@/src/gas/index.js\";\n\nexport type TxPolicy = {\n /** Max fee per gas in wei (optional cap) */\n maxFeePerGas?: bigint;\n /** Max priority fee per gas in wei */\n maxPriorityFeePerGas?: bigint;\n /** Fee estimation speed tier */\n feeSpeed?: GasSpeed;\n /** Gas limit multiplier applied to estimates */\n gasLimitMultiplier?: number;\n /** Timeout in milliseconds for receipt polling */\n receiptTimeout?: number;\n /** Polling interval in milliseconds */\n pollingInterval?: number;\n /** Replacement strategy when stuck */\n replacementStrategy?: \"speedup\" | \"cancel\" | \"none\";\n /** Replacement behavior (preferred) */\n replacement?: {\n strategy?: \"speedup\" | \"cancel\" | \"none\";\n /** Consider tx stuck after N blocks */\n stuckBlocks?: number;\n /** Consider tx stuck after N milliseconds */\n stuckMs?: number;\n /** Maximum automatic replacement attempts */\n maxAttempts?: number;\n };\n};\n\nexport const defaultPolicy: TxPolicy = {\n feeSpeed: \"standard\",\n gasLimitMultiplier: DEFAULT_GAS_LIMIT_MULTIPLIER,\n pollingInterval: DEFAULT_POLLING_INTERVAL,\n receiptTimeout: DEFAULT_RECEIPT_TIMEOUT,\n replacementStrategy: \"none\",\n};\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"replacement.js","sourceRoot":"","sources":["../../src/tx/replacement.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"replacement.js","sourceRoot":"","sources":["../../src/tx/replacement.ts"],"names":[],"mappings":"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","sourcesContent":["import { Context, Effect, Layer } from \"effect\";\nimport type { Hash, PublicClient, Transaction } from \"viem\";\nimport { MIN_TX_GAS } from \"@/src/constants/index.js\";\nimport type {\n ClientNotFoundError,\n WalletNotConnectedError,\n WrongNetworkError,\n} from \"@/src/core/index.js\";\nimport {\n PublicClientService,\n TransactionFailedError,\n WalletClientService,\n} from \"@/src/core/index.js\";\nimport type { GasPriceUnavailableError } from \"@/src/gas/index.js\";\nimport { GasService } from \"@/src/gas/index.js\";\nimport { bumpByPercent } from \"@/src/internal/index.js\";\nimport type { TxPolicy } from \"@/src/tx/index.js\";\n\nexport type TxReplacementShape = {\n readonly speedup: (\n chainId: number,\n hash: Hash,\n policy?: TxPolicy\n ) => Effect.Effect<\n Hash,\n | TransactionFailedError\n | WalletNotConnectedError\n | WrongNetworkError\n | ClientNotFoundError\n | GasPriceUnavailableError\n >;\n\n readonly cancel: (\n chainId: number,\n hash: Hash,\n policy?: TxPolicy\n ) => Effect.Effect<\n Hash,\n | TransactionFailedError\n | WalletNotConnectedError\n | WrongNetworkError\n | ClientNotFoundError\n | GasPriceUnavailableError\n >;\n};\n\nexport class TxReplacement extends Context.Tag(\"ew3/TxReplacement\")<\n TxReplacement,\n TxReplacementShape\n>() {}\n\nconst cap = (value: bigint, max: bigint | undefined): bigint =>\n max !== undefined && value > max ? max : value;\n\ntype FeeBump =\n | { type: \"legacy\"; gasPrice: bigint }\n | {\n type: \"eip1559\";\n maxFeePerGas: bigint;\n maxPriorityFeePerGas?: bigint | undefined;\n };\n\nconst computeFeeBump = (params: {\n tx: Transaction;\n estimate: {\n gasPrice?: bigint | undefined;\n maxFeePerGas: bigint;\n maxPriorityFeePerGas: bigint;\n };\n policy?: TxPolicy | undefined;\n}): FeeBump => {\n const tx = params.tx;\n const estimate = params.estimate;\n const policy = params.policy;\n\n const looksEip1559 =\n tx.type === \"eip1559\" || tx.maxFeePerGas !== undefined || tx.maxPriorityFeePerGas !== undefined;\n\n if (!looksEip1559) {\n const oldGasPrice = tx.gasPrice ?? estimate.gasPrice ?? estimate.maxFeePerGas;\n const candidateGasPrice = bumpByPercent(oldGasPrice, 1250n);\n const estimatedGasPrice = estimate.gasPrice ?? estimate.maxFeePerGas;\n const gasPrice = cap(\n candidateGasPrice > estimatedGasPrice ? candidateGasPrice : estimatedGasPrice,\n policy?.maxFeePerGas\n );\n\n return { gasPrice, type: \"legacy\" };\n }\n\n const oldMaxFee = tx.maxFeePerGas ?? estimate.maxFeePerGas;\n const oldPriority = tx.maxPriorityFeePerGas ?? estimate.maxPriorityFeePerGas;\n\n const candidateMaxFee = bumpByPercent(oldMaxFee, 1250n);\n const candidatePriority = bumpByPercent(oldPriority, 1250n);\n\n const maxFeePerGas = cap(\n candidateMaxFee > estimate.maxFeePerGas ? candidateMaxFee : estimate.maxFeePerGas,\n policy?.maxFeePerGas\n );\n const maxPriorityFeePerGas = cap(\n candidatePriority > estimate.maxPriorityFeePerGas\n ? candidatePriority\n : estimate.maxPriorityFeePerGas,\n policy?.maxPriorityFeePerGas\n );\n\n return { maxFeePerGas, maxPriorityFeePerGas, type: \"eip1559\" };\n};\n\nconst sendReplacement = (params: {\n action: \"cancel\" | \"speedup\";\n chainId: number;\n hash: Hash;\n tx: Transaction;\n bump: FeeBump;\n}): Effect.Effect<\n Hash,\n TransactionFailedError | WalletNotConnectedError | WrongNetworkError | ClientNotFoundError,\n WalletClientService\n> =>\n Effect.gen(function* () {\n const walletClientService = yield* WalletClientService;\n const walletClient = yield* walletClientService.get(params.chainId);\n\n return yield* Effect.tryPromise({\n catch: (cause) =>\n new TransactionFailedError({\n cause,\n hash: params.hash,\n message: `Failed to ${params.action} transaction ${params.hash}`,\n }),\n try: () => {\n const base = {\n account: params.tx.from,\n chain: null,\n data: params.action === \"cancel\" ? \"0x\" : (params.tx.input ?? \"0x\"),\n gas: params.action === \"cancel\" ? MIN_TX_GAS : (params.tx.gas ?? undefined),\n nonce: params.tx.nonce,\n to: params.action === \"cancel\" ? params.tx.from : (params.tx.to ?? undefined),\n value: params.action === \"cancel\" ? 0n : params.tx.value,\n };\n\n if (params.bump.type === \"legacy\") {\n return walletClient.sendTransaction({\n ...base,\n gasPrice: params.bump.gasPrice,\n type: \"legacy\",\n });\n }\n\n return walletClient.sendTransaction({\n ...base,\n maxFeePerGas: params.bump.maxFeePerGas,\n maxPriorityFeePerGas: params.bump.maxPriorityFeePerGas,\n type: \"eip1559\",\n });\n },\n });\n });\n\nconst computeBump = (\n tx: Transaction,\n estimate: {\n gasPrice?: bigint | undefined;\n maxFeePerGas: bigint;\n maxPriorityFeePerGas: bigint;\n },\n policy?: TxPolicy\n): FeeBump => computeFeeBump({ estimate, policy, tx });\n\nexport const TxReplacementLive = Layer.effect(\n TxReplacement,\n Effect.gen(function* () {\n const publicClientService = yield* PublicClientService;\n const walletClientService = yield* WalletClientService;\n const gasService = yield* GasService;\n\n const getTx = (chainId: number, hash: Hash) =>\n Effect.gen(function* () {\n const client = yield* publicClientService.get(chainId);\n const tx = yield* Effect.tryPromise({\n catch: (cause) =>\n new TransactionFailedError({\n cause,\n hash,\n message: `Failed to get transaction ${hash}`,\n }),\n try: () => (client as PublicClient).getTransaction({ hash }),\n });\n return tx as Transaction;\n });\n\n return TxReplacement.of({\n cancel: (chainId, hash, policy) =>\n Effect.gen(function* () {\n const tx = yield* getTx(chainId, hash);\n const estimate = yield* gasService.estimateFees({\n chainId,\n speed: policy?.feeSpeed,\n });\n\n const bump = computeBump(tx, estimate, policy);\n return yield* sendReplacement({\n action: \"cancel\",\n bump,\n chainId,\n hash,\n tx,\n }).pipe(Effect.provideService(WalletClientService, walletClientService));\n }),\n\n speedup: (chainId, hash, policy) =>\n Effect.gen(function* () {\n const tx = yield* getTx(chainId, hash);\n const estimate = yield* gasService.estimateFees({\n chainId,\n speed: policy?.feeSpeed,\n });\n\n const bump = computeBump(tx, estimate, policy);\n return yield* sendReplacement({\n action: \"speedup\",\n bump,\n chainId,\n hash,\n tx,\n }).pipe(Effect.provideService(WalletClientService, walletClientService));\n }),\n });\n })\n);\n"]}
|