@opendatalabs/vana-sdk 2.2.3 → 3.0.0
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/README.md +76 -92
- package/dist/auth/errors.cjs +54 -0
- package/dist/auth/errors.cjs.map +1 -0
- package/dist/auth/errors.d.ts +26 -0
- package/dist/auth/errors.js +28 -0
- package/dist/auth/errors.js.map +1 -0
- package/dist/auth/pkce.cjs +100 -0
- package/dist/auth/pkce.cjs.map +1 -0
- package/dist/auth/pkce.d.ts +55 -0
- package/dist/auth/pkce.js +71 -0
- package/dist/auth/pkce.js.map +1 -0
- package/dist/auth/token-store.cjs +59 -0
- package/dist/auth/token-store.cjs.map +1 -0
- package/dist/auth/token-store.d.ts +61 -0
- package/dist/auth/token-store.js +35 -0
- package/dist/auth/token-store.js.map +1 -0
- package/dist/auth/web3-signed-builder.cjs +70 -0
- package/dist/auth/web3-signed-builder.cjs.map +1 -0
- package/dist/auth/web3-signed-builder.d.ts +47 -0
- package/dist/auth/web3-signed-builder.js +45 -0
- package/dist/auth/web3-signed-builder.js.map +1 -0
- package/dist/auth/web3-signed.cjs +125 -0
- package/dist/auth/web3-signed.cjs.map +1 -0
- package/dist/auth/web3-signed.d.ts +59 -0
- package/dist/auth/web3-signed.js +104 -0
- package/dist/auth/web3-signed.js.map +1 -0
- package/dist/chains/definitions.cjs +2 -6
- package/dist/chains/definitions.cjs.map +1 -1
- package/dist/chains/definitions.d.ts +1 -7
- package/dist/chains/definitions.js +2 -6
- package/dist/chains/definitions.js.map +1 -1
- package/dist/config/chains.d.ts +18 -0
- package/dist/config/contracts.config.cjs +7 -95
- package/dist/config/contracts.config.cjs.map +1 -1
- package/dist/config/contracts.config.d.ts +0 -54
- package/dist/config/contracts.config.js +6 -93
- package/dist/config/contracts.config.js.map +1 -1
- package/dist/config/default-services.cjs +0 -10
- package/dist/config/default-services.cjs.map +1 -1
- package/dist/config/default-services.d.ts +1 -20
- package/dist/config/default-services.js +0 -9
- package/dist/config/default-services.js.map +1 -1
- package/dist/crypto/ecies/interface.cjs +2 -0
- package/dist/crypto/ecies/interface.cjs.map +1 -1
- package/dist/crypto/ecies/interface.js +2 -0
- package/dist/crypto/ecies/interface.js.map +1 -1
- package/dist/crypto/envelope/openpgp.cjs +59 -0
- package/dist/crypto/envelope/openpgp.cjs.map +1 -0
- package/dist/crypto/envelope/openpgp.d.ts +28 -0
- package/dist/crypto/envelope/openpgp.js +24 -0
- package/dist/crypto/envelope/openpgp.js.map +1 -0
- package/dist/crypto/keys/derive.cjs +65 -0
- package/dist/crypto/keys/derive.cjs.map +1 -0
- package/dist/crypto/keys/derive.d.ts +45 -0
- package/dist/crypto/keys/derive.js +38 -0
- package/dist/crypto/keys/derive.js.map +1 -0
- package/dist/errors.cjs +10 -0
- package/dist/errors.cjs.map +1 -1
- package/dist/errors.js +10 -0
- package/dist/errors.js.map +1 -1
- package/dist/generated/abi/VanaPoolEntityImplementation.cjs +65 -0
- package/dist/generated/abi/VanaPoolEntityImplementation.cjs.map +1 -1
- package/dist/generated/abi/VanaPoolEntityImplementation.d.ts +51 -0
- package/dist/generated/abi/VanaPoolEntityImplementation.js +65 -0
- package/dist/generated/abi/VanaPoolEntityImplementation.js.map +1 -1
- package/dist/generated/abi/VanaPoolStakingImplementation.cjs +187 -19
- package/dist/generated/abi/VanaPoolStakingImplementation.cjs.map +1 -1
- package/dist/generated/abi/VanaPoolStakingImplementation.d.ts +144 -14
- package/dist/generated/abi/VanaPoolStakingImplementation.js +187 -19
- package/dist/generated/abi/VanaPoolStakingImplementation.js.map +1 -1
- package/dist/generated/abi/index.cjs +2 -37
- package/dist/generated/abi/index.cjs.map +1 -1
- package/dist/generated/abi/index.d.ts +2687 -9119
- package/dist/generated/abi/index.js +2 -29
- package/dist/generated/abi/index.js.map +1 -1
- package/dist/generated/addresses.cjs +5 -107
- package/dist/generated/addresses.cjs.map +1 -1
- package/dist/generated/addresses.d.ts +5 -99
- package/dist/generated/addresses.js +5 -105
- package/dist/generated/addresses.js.map +1 -1
- package/dist/index.browser.d.ts +23 -138
- package/dist/index.browser.js +32090 -112
- package/dist/index.browser.js.map +7 -1
- package/dist/index.node.cjs +32809 -157
- package/dist/index.node.cjs.map +7 -1
- package/dist/index.node.d.ts +22 -208
- package/dist/index.node.js +32716 -131
- package/dist/index.node.js.map +7 -1
- package/dist/protocol/data-file.cjs +56 -0
- package/dist/protocol/data-file.cjs.map +1 -0
- package/dist/protocol/data-file.d.ts +20 -0
- package/dist/protocol/data-file.js +30 -0
- package/dist/protocol/data-file.js.map +1 -0
- package/dist/protocol/eip712.cjs +123 -0
- package/dist/protocol/eip712.cjs.map +1 -0
- package/dist/protocol/eip712.d.ts +117 -0
- package/dist/protocol/eip712.js +90 -0
- package/dist/protocol/eip712.js.map +1 -0
- package/dist/protocol/gateway.cjs +226 -0
- package/dist/protocol/gateway.cjs.map +1 -0
- package/dist/protocol/gateway.d.ts +120 -0
- package/dist/protocol/gateway.js +202 -0
- package/dist/protocol/gateway.js.map +1 -0
- package/dist/protocol/scopes.cjs +78 -0
- package/dist/protocol/scopes.cjs.map +1 -0
- package/dist/protocol/scopes.d.ts +13 -0
- package/dist/protocol/scopes.js +50 -0
- package/dist/protocol/scopes.js.map +1 -0
- package/dist/{types/atomicStore.cjs → storage/default.cjs} +9 -8
- package/dist/storage/default.cjs.map +1 -0
- package/dist/storage/default.d.ts +4 -0
- package/dist/storage/default.js +8 -0
- package/dist/storage/default.js.map +1 -0
- package/dist/storage/index.cjs +11 -2
- package/dist/storage/index.cjs.map +1 -1
- package/dist/storage/index.d.ts +9 -0
- package/dist/storage/index.js +7 -1
- package/dist/storage/index.js.map +1 -1
- package/dist/storage/providers/callback-storage.cjs +1 -0
- package/dist/storage/providers/callback-storage.cjs.map +1 -1
- package/dist/storage/providers/callback-storage.js +1 -0
- package/dist/storage/providers/callback-storage.js.map +1 -1
- package/dist/storage/providers/dropbox.cjs +1 -0
- package/dist/storage/providers/dropbox.cjs.map +1 -1
- package/dist/storage/providers/dropbox.js +1 -0
- package/dist/storage/providers/dropbox.js.map +1 -1
- package/dist/storage/providers/google-drive.cjs +1 -0
- package/dist/storage/providers/google-drive.cjs.map +1 -1
- package/dist/storage/providers/google-drive.js +1 -0
- package/dist/storage/providers/google-drive.js.map +1 -1
- package/dist/storage/providers/ipfs.cjs +1 -0
- package/dist/storage/providers/ipfs.cjs.map +1 -1
- package/dist/storage/providers/ipfs.js +1 -0
- package/dist/storage/providers/ipfs.js.map +1 -1
- package/dist/storage/providers/pinata.cjs +1 -0
- package/dist/storage/providers/pinata.cjs.map +1 -1
- package/dist/storage/providers/pinata.js +1 -0
- package/dist/storage/providers/pinata.js.map +1 -1
- package/dist/storage/providers/r2.cjs +376 -0
- package/dist/storage/providers/r2.cjs.map +1 -0
- package/dist/storage/providers/r2.d.ts +91 -0
- package/dist/storage/providers/r2.js +354 -0
- package/dist/storage/providers/r2.js.map +1 -0
- package/dist/storage/providers/vana-storage.cjs +251 -0
- package/dist/storage/providers/vana-storage.cjs.map +1 -0
- package/dist/storage/providers/vana-storage.d.ts +100 -0
- package/dist/storage/providers/vana-storage.js +231 -0
- package/dist/storage/providers/vana-storage.js.map +1 -0
- package/dist/types/config.cjs +0 -34
- package/dist/types/config.cjs.map +1 -1
- package/dist/types/config.d.ts +1 -607
- package/dist/types/config.js +0 -22
- package/dist/types/config.js.map +1 -1
- package/dist/types/contracts.cjs.map +1 -1
- package/dist/types/contracts.d.ts +1 -1
- package/dist/types/index.cjs +2 -33
- package/dist/types/index.cjs.map +1 -1
- package/dist/types/index.d.ts +2 -33
- package/dist/types/index.js +1 -35
- package/dist/types/index.js.map +1 -1
- package/dist/types/ps-errors.cjs +66 -0
- package/dist/types/ps-errors.cjs.map +1 -0
- package/dist/types/ps-errors.d.ts +25 -0
- package/dist/types/ps-errors.js +41 -0
- package/dist/types/ps-errors.js.map +1 -0
- package/dist/types.cjs.map +1 -1
- package/dist/types.d.ts +0 -29
- package/dist/types.js.map +1 -1
- package/package.json +7 -25
- package/dist/client/enhancedResponse.cjs +0 -164
- package/dist/client/enhancedResponse.cjs.map +0 -1
- package/dist/client/enhancedResponse.d.ts +0 -120
- package/dist/client/enhancedResponse.js +0 -138
- package/dist/client/enhancedResponse.js.map +0 -1
- package/dist/controllers/__tests__/data-consistency-integration.test.d.ts +0 -7
- package/dist/controllers/base.cjs +0 -116
- package/dist/controllers/base.cjs.map +0 -1
- package/dist/controllers/base.d.ts +0 -94
- package/dist/controllers/base.js +0 -92
- package/dist/controllers/base.js.map +0 -1
- package/dist/controllers/data.cjs +0 -2633
- package/dist/controllers/data.cjs.map +0 -1
- package/dist/controllers/data.d.ts +0 -1067
- package/dist/controllers/data.js +0 -2626
- package/dist/controllers/data.js.map +0 -1
- package/dist/controllers/operations.cjs +0 -430
- package/dist/controllers/operations.cjs.map +0 -1
- package/dist/controllers/operations.d.ts +0 -229
- package/dist/controllers/operations.js +0 -406
- package/dist/controllers/operations.js.map +0 -1
- package/dist/controllers/permissions.cjs +0 -4368
- package/dist/controllers/permissions.cjs.map +0 -1
- package/dist/controllers/permissions.d.ts +0 -1411
- package/dist/controllers/permissions.js +0 -4344
- package/dist/controllers/permissions.js.map +0 -1
- package/dist/controllers/protocol.cjs +0 -183
- package/dist/controllers/protocol.cjs.map +0 -1
- package/dist/controllers/protocol.d.ts +0 -138
- package/dist/controllers/protocol.js +0 -163
- package/dist/controllers/protocol.js.map +0 -1
- package/dist/controllers/schemas.cjs +0 -678
- package/dist/controllers/schemas.cjs.map +0 -1
- package/dist/controllers/schemas.d.ts +0 -293
- package/dist/controllers/schemas.js +0 -654
- package/dist/controllers/schemas.js.map +0 -1
- package/dist/controllers/server.cjs +0 -643
- package/dist/controllers/server.cjs.map +0 -1
- package/dist/controllers/server.d.ts +0 -322
- package/dist/controllers/server.js +0 -624
- package/dist/controllers/server.js.map +0 -1
- package/dist/core/__tests__/pollingManager.test.d.ts +0 -4
- package/dist/core/apiClient.cjs +0 -378
- package/dist/core/apiClient.cjs.map +0 -1
- package/dist/core/apiClient.d.ts +0 -286
- package/dist/core/apiClient.js +0 -359
- package/dist/core/apiClient.js.map +0 -1
- package/dist/core/generics.cjs +0 -417
- package/dist/core/generics.cjs.map +0 -1
- package/dist/core/generics.d.ts +0 -205
- package/dist/core/generics.js +0 -386
- package/dist/core/generics.js.map +0 -1
- package/dist/core/health.cjs +0 -289
- package/dist/core/health.cjs.map +0 -1
- package/dist/core/health.d.ts +0 -143
- package/dist/core/health.js +0 -265
- package/dist/core/health.js.map +0 -1
- package/dist/core/inMemoryNonceManager.cjs +0 -138
- package/dist/core/inMemoryNonceManager.cjs.map +0 -1
- package/dist/core/inMemoryNonceManager.d.ts +0 -69
- package/dist/core/inMemoryNonceManager.js +0 -114
- package/dist/core/inMemoryNonceManager.js.map +0 -1
- package/dist/core/nonceManager.cjs +0 -304
- package/dist/core/nonceManager.cjs.map +0 -1
- package/dist/core/nonceManager.d.ts +0 -116
- package/dist/core/nonceManager.js +0 -280
- package/dist/core/nonceManager.js.map +0 -1
- package/dist/core/pollingManager.cjs +0 -292
- package/dist/core/pollingManager.cjs.map +0 -1
- package/dist/core/pollingManager.d.ts +0 -120
- package/dist/core/pollingManager.js +0 -268
- package/dist/core/pollingManager.js.map +0 -1
- package/dist/core.cjs +0 -777
- package/dist/core.cjs.map +0 -1
- package/dist/core.d.ts +0 -493
- package/dist/core.js +0 -752
- package/dist/core.js.map +0 -1
- package/dist/diagnostics.cjs +0 -37
- package/dist/diagnostics.cjs.map +0 -1
- package/dist/diagnostics.d.ts +0 -24
- package/dist/diagnostics.js +0 -13
- package/dist/diagnostics.js.map +0 -1
- package/dist/diagnostics.test.d.ts +0 -1
- package/dist/generated/abi/DLPPerformanceImplementation.cjs +0 -1202
- package/dist/generated/abi/DLPPerformanceImplementation.cjs.map +0 -1
- package/dist/generated/abi/DLPPerformanceImplementation.d.ts +0 -914
- package/dist/generated/abi/DLPPerformanceImplementation.js +0 -1178
- package/dist/generated/abi/DLPPerformanceImplementation.js.map +0 -1
- package/dist/generated/abi/DLPRewardDeployerImplementation.cjs +0 -1112
- package/dist/generated/abi/DLPRewardDeployerImplementation.cjs.map +0 -1
- package/dist/generated/abi/DLPRewardDeployerImplementation.d.ts +0 -840
- package/dist/generated/abi/DLPRewardDeployerImplementation.js +0 -1088
- package/dist/generated/abi/DLPRewardDeployerImplementation.js.map +0 -1
- package/dist/generated/abi/DLPRewardDeployerTreasuryImplementation.cjs +0 -612
- package/dist/generated/abi/DLPRewardDeployerTreasuryImplementation.cjs.map +0 -1
- package/dist/generated/abi/DLPRewardDeployerTreasuryImplementation.d.ts +0 -451
- package/dist/generated/abi/DLPRewardDeployerTreasuryImplementation.js +0 -588
- package/dist/generated/abi/DLPRewardDeployerTreasuryImplementation.js.map +0 -1
- package/dist/generated/abi/DLPRewardSwapImplementation.cjs +0 -939
- package/dist/generated/abi/DLPRewardSwapImplementation.cjs.map +0 -1
- package/dist/generated/abi/DLPRewardSwapImplementation.d.ts +0 -705
- package/dist/generated/abi/DLPRewardSwapImplementation.js +0 -915
- package/dist/generated/abi/DLPRewardSwapImplementation.js.map +0 -1
- package/dist/generated/abi/DLPRootImplementation.cjs +0 -1644
- package/dist/generated/abi/DLPRootImplementation.cjs.map +0 -1
- package/dist/generated/abi/DLPRootImplementation.d.ts +0 -1246
- package/dist/generated/abi/DLPRootImplementation.js +0 -1620
- package/dist/generated/abi/DLPRootImplementation.js.map +0 -1
- package/dist/generated/abi/DataLiquidityPoolImplementation.cjs +0 -985
- package/dist/generated/abi/DataLiquidityPoolImplementation.cjs.map +0 -1
- package/dist/generated/abi/DataLiquidityPoolImplementation.d.ts +0 -735
- package/dist/generated/abi/DataLiquidityPoolImplementation.js +0 -961
- package/dist/generated/abi/DataLiquidityPoolImplementation.js.map +0 -1
- package/dist/generated/abi/SwapHelperImplementation.cjs +0 -976
- package/dist/generated/abi/SwapHelperImplementation.cjs.map +0 -1
- package/dist/generated/abi/SwapHelperImplementation.d.ts +0 -728
- package/dist/generated/abi/SwapHelperImplementation.js +0 -952
- package/dist/generated/abi/SwapHelperImplementation.js.map +0 -1
- package/dist/generated/abi/TeePoolImplementation.cjs +0 -1313
- package/dist/generated/abi/TeePoolImplementation.cjs.map +0 -1
- package/dist/generated/abi/TeePoolImplementation.d.ts +0 -992
- package/dist/generated/abi/TeePoolImplementation.js +0 -1289
- package/dist/generated/abi/TeePoolImplementation.js.map +0 -1
- package/dist/generated/event-types.cjs +0 -17
- package/dist/generated/event-types.cjs.map +0 -1
- package/dist/generated/event-types.d.ts +0 -809
- package/dist/generated/event-types.js +0 -1
- package/dist/generated/event-types.js.map +0 -1
- package/dist/generated/eventRegistry.cjs +0 -4470
- package/dist/generated/eventRegistry.cjs.map +0 -1
- package/dist/generated/eventRegistry.d.ts +0 -14
- package/dist/generated/eventRegistry.js +0 -4445
- package/dist/generated/eventRegistry.js.map +0 -1
- package/dist/generated/server/server-exports.cjs +0 -45
- package/dist/generated/server/server-exports.cjs.map +0 -1
- package/dist/generated/server/server-exports.d.ts +0 -36
- package/dist/generated/server/server-exports.js +0 -19
- package/dist/generated/server/server-exports.js.map +0 -1
- package/dist/generated/server/server.cjs +0 -17
- package/dist/generated/server/server.cjs.map +0 -1
- package/dist/generated/server/server.d.ts +0 -907
- package/dist/generated/server/server.js +0 -1
- package/dist/generated/server/server.js.map +0 -1
- package/dist/generated/subgraph.cjs +0 -1440
- package/dist/generated/subgraph.cjs.map +0 -1
- package/dist/generated/subgraph.d.ts +0 -6113
- package/dist/generated/subgraph.js +0 -1404
- package/dist/generated/subgraph.js.map +0 -1
- package/dist/lib/__tests__/redisAtomicStore.test.d.ts +0 -1
- package/dist/lib/redisAtomicStore.cjs +0 -201
- package/dist/lib/redisAtomicStore.cjs.map +0 -1
- package/dist/lib/redisAtomicStore.d.ts +0 -120
- package/dist/lib/redisAtomicStore.js +0 -177
- package/dist/lib/redisAtomicStore.js.map +0 -1
- package/dist/server/relayerHandler.cjs +0 -452
- package/dist/server/relayerHandler.cjs.map +0 -1
- package/dist/server/relayerHandler.d.ts +0 -69
- package/dist/server/relayerHandler.js +0 -428
- package/dist/server/relayerHandler.js.map +0 -1
- package/dist/tests/abi.test.d.ts +0 -1
- package/dist/tests/chains-definitions.test.d.ts +0 -1
- package/dist/tests/core-encryption.test.d.ts +0 -1
- package/dist/tests/core-extended.test.d.ts +0 -1
- package/dist/tests/core-generics-coverage.test.d.ts +0 -1
- package/dist/tests/coverage-boost.test.d.ts +0 -1
- package/dist/tests/crypto-cross-platform-compatibility.test.d.ts +0 -1
- package/dist/tests/data-addfile-permissions-schema.test.d.ts +0 -1
- package/dist/tests/data-additional-methods.test.d.ts +0 -1
- package/dist/tests/data-controller-edge-cases.test.d.ts +0 -1
- package/dist/tests/data-ipfs-gateways.test.d.ts +0 -1
- package/dist/tests/data-relayer.test.d.ts +0 -1
- package/dist/tests/data-schema-validation.test.d.ts +0 -1
- package/dist/tests/data-simple-methods.test.d.ts +0 -1
- package/dist/tests/data-upload-owner-validation.test.d.ts +0 -1
- package/dist/tests/data.test.d.ts +0 -1
- package/dist/tests/demo-integration.test.d.ts +0 -1
- package/dist/tests/demo-trusted-server-integration.test.d.ts +0 -1
- package/dist/tests/download-relayer.test.d.ts +0 -1
- package/dist/tests/dual-mode-permissions.test.d.ts +0 -1
- package/dist/tests/dual-mode-trusted-servers.test.d.ts +0 -1
- package/dist/tests/encryption-correct-implementation.test.d.ts +0 -1
- package/dist/tests/encryption-coverage.test.d.ts +0 -1
- package/dist/tests/encryption-edge-cases.test.d.ts +0 -1
- package/dist/tests/encryption-utils-updated.test.d.ts +0 -1
- package/dist/tests/errors-coverage.test.d.ts +0 -1
- package/dist/tests/factories/mockFactory.d.ts +0 -316
- package/dist/tests/fakes/FakeStorageManager.d.ts +0 -200
- package/dist/tests/fakes/FakeStorageManager.test.d.ts +0 -1
- package/dist/tests/fakes/FakeWaitForTransactionEvents.d.ts +0 -170
- package/dist/tests/fakes/FakeWaitForTransactionEvents.test.d.ts +0 -1
- package/dist/tests/fakes/fake-pgp-port.d.ts +0 -13
- package/dist/tests/grantValidation-edge-cases.test.d.ts +0 -1
- package/dist/tests/grantValidation-unreachable-branch.test.d.ts +0 -1
- package/dist/tests/helper-methods.test.d.ts +0 -1
- package/dist/tests/helpers/typedMocks.d.ts +0 -64
- package/dist/tests/index-browser.test.d.ts +0 -1
- package/dist/tests/index-node.test.d.ts +0 -1
- package/dist/tests/index.test.d.ts +0 -1
- package/dist/tests/mocks/platformAdapter.d.ts +0 -12
- package/dist/tests/new-permissions-methods.test.d.ts +0 -1
- package/dist/tests/no-buffer-browser.test.d.ts +0 -1
- package/dist/tests/permissions-grantee.test.d.ts +0 -1
- package/dist/tests/permissions-revoke-relayer.test.d.ts +0 -1
- package/dist/tests/permissions-schema-validation.test.d.ts +0 -1
- package/dist/tests/permissions-server-files.test.d.ts +0 -1
- package/dist/tests/permissions-transaction-options.test.d.ts +0 -1
- package/dist/tests/permissions-trust-servers.test.d.ts +0 -1
- package/dist/tests/permissions.test.d.ts +0 -1
- package/dist/tests/personal.test.d.ts +0 -1
- package/dist/tests/platform-browser.test.d.ts +0 -1
- package/dist/tests/platform-crypto-expanded.test.d.ts +0 -1
- package/dist/tests/platform-crypto.test.d.ts +0 -1
- package/dist/tests/platform-index.test.d.ts +0 -1
- package/dist/tests/platform-node.test.d.ts +0 -1
- package/dist/tests/platform-shared-utils.test.d.ts +0 -1
- package/dist/tests/platform-updated.test.d.ts +0 -1
- package/dist/tests/protocol-additional-methods.test.d.ts +0 -1
- package/dist/tests/protocol.test.d.ts +0 -1
- package/dist/tests/read-only-mode.test.d.ts +0 -1
- package/dist/tests/relayer-integration.test.d.ts +0 -1
- package/dist/tests/relayer-unified.test.d.ts +0 -1
- package/dist/tests/schemas.test.d.ts +0 -1
- package/dist/tests/server-relayer-handler.test.d.ts +0 -1
- package/dist/tests/signatureFormatter.test.d.ts +0 -1
- package/dist/tests/trusted-server-queries.test.d.ts +0 -1
- package/dist/tests/typedDataConverter.test.d.ts +0 -1
- package/dist/tests/types-contracts.test.d.ts +0 -1
- package/dist/tests/types-data.test.d.ts +0 -1
- package/dist/tests/types-external-apis.test.d.ts +0 -1
- package/dist/tests/types-generics.test.d.ts +0 -1
- package/dist/tests/types-permissions.test.d.ts +0 -1
- package/dist/tests/types-upload-params.test.d.ts +0 -1
- package/dist/tests/types.test.d.ts +0 -1
- package/dist/tests/utils-formatters.test.d.ts +0 -1
- package/dist/tests/utils-grantFiles-edge-cases.test.d.ts +0 -1
- package/dist/tests/utils-grantFiles-validation.test.d.ts +0 -1
- package/dist/tests/utils-grantFiles.test.d.ts +0 -1
- package/dist/tests/utils-grantValidation-consolidated.test.d.ts +0 -1
- package/dist/tests/utils-grants.test.d.ts +0 -1
- package/dist/tests/utils-ipfs-additional.test.d.ts +0 -1
- package/dist/tests/utils-ipfs.test.d.ts +0 -4
- package/dist/tests/utils-schemaValidation.test.d.ts +0 -1
- package/dist/tests/vana.test.d.ts +0 -1
- package/dist/tests/wallet-crypto-compatibility.test.d.ts +0 -1
- package/dist/types/atomicStore.cjs.map +0 -1
- package/dist/types/atomicStore.d.ts +0 -236
- package/dist/types/atomicStore.js +0 -7
- package/dist/types/atomicStore.js.map +0 -1
- package/dist/types/blockchain.cjs +0 -17
- package/dist/types/blockchain.cjs.map +0 -1
- package/dist/types/blockchain.d.ts +0 -85
- package/dist/types/blockchain.js +0 -1
- package/dist/types/blockchain.js.map +0 -1
- package/dist/types/controller-context.cjs +0 -17
- package/dist/types/controller-context.cjs.map +0 -1
- package/dist/types/controller-context.d.ts +0 -68
- package/dist/types/controller-context.js +0 -1
- package/dist/types/controller-context.js.map +0 -1
- package/dist/types/data.cjs +0 -17
- package/dist/types/data.cjs.map +0 -1
- package/dist/types/data.d.ts +0 -763
- package/dist/types/data.js +0 -1
- package/dist/types/data.js.map +0 -1
- package/dist/types/external-apis.cjs +0 -61
- package/dist/types/external-apis.cjs.map +0 -1
- package/dist/types/external-apis.d.ts +0 -184
- package/dist/types/external-apis.js +0 -34
- package/dist/types/external-apis.js.map +0 -1
- package/dist/types/generics.cjs +0 -17
- package/dist/types/generics.cjs.map +0 -1
- package/dist/types/generics.d.ts +0 -518
- package/dist/types/generics.js +0 -1
- package/dist/types/generics.js.map +0 -1
- package/dist/types/operationStore.cjs +0 -17
- package/dist/types/operationStore.cjs.map +0 -1
- package/dist/types/operationStore.d.ts +0 -171
- package/dist/types/operationStore.js +0 -1
- package/dist/types/operationStore.js.map +0 -1
- package/dist/types/operations.cjs +0 -53
- package/dist/types/operations.cjs.map +0 -1
- package/dist/types/operations.d.ts +0 -204
- package/dist/types/operations.js +0 -26
- package/dist/types/operations.js.map +0 -1
- package/dist/types/options.cjs +0 -17
- package/dist/types/options.cjs.map +0 -1
- package/dist/types/options.d.ts +0 -308
- package/dist/types/options.js +0 -1
- package/dist/types/options.js.map +0 -1
- package/dist/types/permissions.cjs +0 -17
- package/dist/types/permissions.cjs.map +0 -1
- package/dist/types/permissions.d.ts +0 -955
- package/dist/types/permissions.js +0 -1
- package/dist/types/permissions.js.map +0 -1
- package/dist/types/personal.cjs +0 -17
- package/dist/types/personal.cjs.map +0 -1
- package/dist/types/personal.d.ts +0 -174
- package/dist/types/personal.js +0 -1
- package/dist/types/personal.js.map +0 -1
- package/dist/types/relayer.cjs +0 -17
- package/dist/types/relayer.cjs.map +0 -1
- package/dist/types/relayer.d.ts +0 -552
- package/dist/types/relayer.js +0 -1
- package/dist/types/relayer.js.map +0 -1
- package/dist/types/transactionResults.cjs +0 -17
- package/dist/types/transactionResults.cjs.map +0 -1
- package/dist/types/transactionResults.d.ts +0 -193
- package/dist/types/transactionResults.js +0 -1
- package/dist/types/transactionResults.js.map +0 -1
- package/dist/types/utils.cjs +0 -17
- package/dist/types/utils.cjs.map +0 -1
- package/dist/types/utils.d.ts +0 -771
- package/dist/types/utils.js +0 -1
- package/dist/types/utils.js.map +0 -1
- package/dist/utils/__tests__/chainQuery.test.d.ts +0 -1
- package/dist/utils/__tests__/parseTransaction.test.d.ts +0 -1
- package/dist/utils/__tests__/pojo-serialization.test.d.ts +0 -1
- package/dist/utils/__tests__/signatureCache.test.d.ts +0 -1
- package/dist/utils/__tests__/subgraphConsistency.test.d.ts +0 -4
- package/dist/utils/__tests__/subgraphPagination.test.d.ts +0 -4
- package/dist/utils/__tests__/transaction-edge-cases.test.d.ts +0 -1
- package/dist/utils/__tests__/transactionHelpers.test.d.ts +0 -1
- package/dist/utils/__tests__/urlResolver.test.d.ts +0 -4
- package/dist/utils/blockchain/registry.cjs +0 -81
- package/dist/utils/blockchain/registry.cjs.map +0 -1
- package/dist/utils/blockchain/registry.d.ts +0 -32
- package/dist/utils/blockchain/registry.js +0 -56
- package/dist/utils/blockchain/registry.js.map +0 -1
- package/dist/utils/blockchain/registry.test.d.ts +0 -1
- package/dist/utils/chainQuery.cjs +0 -107
- package/dist/utils/chainQuery.cjs.map +0 -1
- package/dist/utils/chainQuery.d.ts +0 -31
- package/dist/utils/chainQuery.js +0 -82
- package/dist/utils/chainQuery.js.map +0 -1
- package/dist/utils/download.cjs +0 -69
- package/dist/utils/download.cjs.map +0 -1
- package/dist/utils/download.d.ts +0 -40
- package/dist/utils/download.js +0 -45
- package/dist/utils/download.js.map +0 -1
- package/dist/utils/encryption.cjs +0 -176
- package/dist/utils/encryption.cjs.map +0 -1
- package/dist/utils/encryption.d.ts +0 -271
- package/dist/utils/encryption.js +0 -142
- package/dist/utils/encryption.js.map +0 -1
- package/dist/utils/formatters.cjs +0 -55
- package/dist/utils/formatters.cjs.map +0 -1
- package/dist/utils/formatters.d.ts +0 -118
- package/dist/utils/formatters.js +0 -28
- package/dist/utils/formatters.js.map +0 -1
- package/dist/utils/grantFiles.cjs +0 -181
- package/dist/utils/grantFiles.cjs.map +0 -1
- package/dist/utils/grantFiles.d.ts +0 -172
- package/dist/utils/grantFiles.js +0 -143
- package/dist/utils/grantFiles.js.map +0 -1
- package/dist/utils/grantValidation.cjs +0 -243
- package/dist/utils/grantValidation.cjs.map +0 -1
- package/dist/utils/grantValidation.d.ts +0 -226
- package/dist/utils/grantValidation.js +0 -201
- package/dist/utils/grantValidation.js.map +0 -1
- package/dist/utils/grants.cjs +0 -108
- package/dist/utils/grants.cjs.map +0 -1
- package/dist/utils/grants.d.ts +0 -148
- package/dist/utils/grants.js +0 -82
- package/dist/utils/grants.js.map +0 -1
- package/dist/utils/ipfs.cjs +0 -128
- package/dist/utils/ipfs.cjs.map +0 -1
- package/dist/utils/ipfs.d.ts +0 -88
- package/dist/utils/ipfs.js +0 -97
- package/dist/utils/ipfs.js.map +0 -1
- package/dist/utils/multicall.cjs +0 -233
- package/dist/utils/multicall.cjs.map +0 -1
- package/dist/utils/multicall.d.ts +0 -126
- package/dist/utils/multicall.js +0 -208
- package/dist/utils/multicall.js.map +0 -1
- package/dist/utils/parseTransactionPojo.cjs +0 -87
- package/dist/utils/parseTransactionPojo.cjs.map +0 -1
- package/dist/utils/parseTransactionPojo.d.ts +0 -31
- package/dist/utils/parseTransactionPojo.js +0 -63
- package/dist/utils/parseTransactionPojo.js.map +0 -1
- package/dist/utils/schemaValidation.cjs +0 -258
- package/dist/utils/schemaValidation.cjs.map +0 -1
- package/dist/utils/schemaValidation.d.ts +0 -168
- package/dist/utils/schemaValidation.js +0 -219
- package/dist/utils/schemaValidation.js.map +0 -1
- package/dist/utils/signatureCache.cjs +0 -192
- package/dist/utils/signatureCache.cjs.map +0 -1
- package/dist/utils/signatureCache.d.ts +0 -172
- package/dist/utils/signatureCache.js +0 -167
- package/dist/utils/signatureCache.js.map +0 -1
- package/dist/utils/signatureFormatter.cjs +0 -42
- package/dist/utils/signatureFormatter.cjs.map +0 -1
- package/dist/utils/signatureFormatter.d.ts +0 -36
- package/dist/utils/signatureFormatter.js +0 -18
- package/dist/utils/signatureFormatter.js.map +0 -1
- package/dist/utils/subgraphConsistency.cjs +0 -184
- package/dist/utils/subgraphConsistency.cjs.map +0 -1
- package/dist/utils/subgraphConsistency.d.ts +0 -65
- package/dist/utils/subgraphConsistency.js +0 -155
- package/dist/utils/subgraphConsistency.js.map +0 -1
- package/dist/utils/subgraphMetaCache.cjs +0 -101
- package/dist/utils/subgraphMetaCache.cjs.map +0 -1
- package/dist/utils/subgraphMetaCache.d.ts +0 -56
- package/dist/utils/subgraphMetaCache.js +0 -76
- package/dist/utils/subgraphMetaCache.js.map +0 -1
- package/dist/utils/subgraphPagination.cjs +0 -104
- package/dist/utils/subgraphPagination.cjs.map +0 -1
- package/dist/utils/subgraphPagination.d.ts +0 -78
- package/dist/utils/subgraphPagination.js +0 -78
- package/dist/utils/subgraphPagination.js.map +0 -1
- package/dist/utils/tests/multicall.test.d.ts +0 -1
- package/dist/utils/transactionHelpers.cjs +0 -54
- package/dist/utils/transactionHelpers.cjs.map +0 -1
- package/dist/utils/transactionHelpers.d.ts +0 -80
- package/dist/utils/transactionHelpers.js +0 -29
- package/dist/utils/transactionHelpers.js.map +0 -1
- package/dist/utils/typeGuards.cjs +0 -109
- package/dist/utils/typeGuards.cjs.map +0 -1
- package/dist/utils/typeGuards.d.ts +0 -138
- package/dist/utils/typeGuards.js +0 -74
- package/dist/utils/typeGuards.js.map +0 -1
- package/dist/utils/typedDataConverter.cjs +0 -43
- package/dist/utils/typedDataConverter.cjs.map +0 -1
- package/dist/utils/typedDataConverter.d.ts +0 -46
- package/dist/utils/typedDataConverter.js +0 -19
- package/dist/utils/typedDataConverter.js.map +0 -1
- package/dist/utils/urlResolver.cjs +0 -62
- package/dist/utils/urlResolver.cjs.map +0 -1
- package/dist/utils/urlResolver.d.ts +0 -56
- package/dist/utils/urlResolver.js +0 -37
- package/dist/utils/urlResolver.js.map +0 -1
- package/dist/utils/wallet.cjs +0 -63
- package/dist/utils/wallet.cjs.map +0 -1
- package/dist/utils/wallet.d.ts +0 -94
- package/dist/utils/wallet.js +0 -37
- package/dist/utils/wallet.js.map +0 -1
- package/dist/utils/withEvents.cjs +0 -44
- package/dist/utils/withEvents.cjs.map +0 -1
- package/dist/utils/withEvents.d.ts +0 -56
- package/dist/utils/withEvents.js +0 -18
- package/dist/utils/withEvents.js.map +0 -1
- /package/dist/{__tests__/waitForTransactionEvents.test.d.ts → auth/pkce.test.d.ts} +0 -0
- /package/dist/{client/__tests__/enhancedResponse.test.d.ts → auth/token-store.test.d.ts} +0 -0
- /package/dist/{controllers/__tests__/operations.processQueue.test.d.ts → auth/web3-signed.test.d.ts} +0 -0
- /package/dist/{controllers/__tests__/schemas-edge-cases.test.d.ts → crypto/envelope/openpgp.test.d.ts} +0 -0
- /package/dist/{controllers/data-error-handling.test.d.ts → crypto/keys/derive.test.d.ts} +0 -0
- /package/dist/{tests/errors.test.d.ts → errors.test.d.ts} +0 -0
- /package/dist/{controllers/server-additional.test.d.ts → protocol/data-file.test.d.ts} +0 -0
- /package/dist/{core/__tests__/health.test.d.ts → protocol/eip712.test.d.ts} +0 -0
- /package/dist/{core/__tests__/inMemoryNonceManager.test.d.ts → protocol/gateway.test.d.ts} +0 -0
- /package/dist/{core/__tests__/nonceManager.test.d.ts → protocol/scopes.test.d.ts} +0 -0
- /package/dist/{core/core.test.d.ts → storage/tests/defaultStorage.test.d.ts} +0 -0
- /package/dist/{core/tests/apiClient.test.d.ts → storage/tests/r2Storage.test.d.ts} +0 -0
- /package/dist/{core/tests/client.test.d.ts → storage/tests/vanaStorage.test.d.ts} +0 -0
- /package/dist/{core/tests/generics.test.d.ts → types/ps-errors.test.d.ts} +0 -0
|
@@ -1,164 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __defProp = Object.defineProperty;
|
|
3
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
-
var __export = (target, all) => {
|
|
7
|
-
for (var name in all)
|
|
8
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
-
};
|
|
10
|
-
var __copyProps = (to, from, except, desc) => {
|
|
11
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
-
for (let key of __getOwnPropNames(from))
|
|
13
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
-
}
|
|
16
|
-
return to;
|
|
17
|
-
};
|
|
18
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
-
var enhancedResponse_exports = {};
|
|
20
|
-
__export(enhancedResponse_exports, {
|
|
21
|
-
EnhancedTransactionResponse: () => EnhancedTransactionResponse,
|
|
22
|
-
canEnhanceResponse: () => canEnhanceResponse,
|
|
23
|
-
enhanceResponse: () => enhanceResponse
|
|
24
|
-
});
|
|
25
|
-
module.exports = __toCommonJS(enhancedResponse_exports);
|
|
26
|
-
var import_pollingManager = require("../core/pollingManager");
|
|
27
|
-
class EnhancedTransactionResponse {
|
|
28
|
-
/** The underlying relayer response */
|
|
29
|
-
response;
|
|
30
|
-
/** The hash if this is a submitted transaction */
|
|
31
|
-
hash;
|
|
32
|
-
/** The operation ID if this is a pending operation */
|
|
33
|
-
operationId;
|
|
34
|
-
/** Transaction context for event parsing */
|
|
35
|
-
context;
|
|
36
|
-
sdk;
|
|
37
|
-
// Using any to avoid circular dependency
|
|
38
|
-
constructor(response, sdk) {
|
|
39
|
-
this.response = response;
|
|
40
|
-
this.sdk = sdk;
|
|
41
|
-
if (response.type === "submitted" || response.type === "signed") {
|
|
42
|
-
this.hash = response.hash;
|
|
43
|
-
this.context = response.context;
|
|
44
|
-
} else if (response.type === "pending") {
|
|
45
|
-
this.operationId = response.operationId;
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
/**
|
|
49
|
-
* Waits for the transaction or operation to complete.
|
|
50
|
-
*
|
|
51
|
-
* @remarks
|
|
52
|
-
* This method provides intelligent handling based on the response type:
|
|
53
|
-
* - For 'submitted' responses with context: Uses waitForTransactionEvents for full event parsing
|
|
54
|
-
* - For 'submitted' responses without context: Waits for receipt only
|
|
55
|
-
* - For 'pending' responses: Uses PollingManager to track async operations
|
|
56
|
-
* - For 'confirmed' responses: Returns immediately with the receipt
|
|
57
|
-
*
|
|
58
|
-
* @param options - Optional configuration for polling behavior
|
|
59
|
-
* @returns Promise resolving to event results or transaction receipt
|
|
60
|
-
* @throws Error if the response type cannot be waited on
|
|
61
|
-
*
|
|
62
|
-
* @example
|
|
63
|
-
* ```typescript
|
|
64
|
-
* // With context for event parsing
|
|
65
|
-
* const enhanced = new EnhancedTransactionResponse(response, vana);
|
|
66
|
-
* const result = await enhanced.wait();
|
|
67
|
-
* if (result.expectedEvents?.FileAdded) {
|
|
68
|
-
* console.log('File ID:', result.expectedEvents.FileAdded.fileId);
|
|
69
|
-
* }
|
|
70
|
-
*
|
|
71
|
-
* // For pending operations
|
|
72
|
-
* const result = await enhanced.wait({
|
|
73
|
-
* onStatusUpdate: (status) => console.log('Status:', status)
|
|
74
|
-
* });
|
|
75
|
-
* ```
|
|
76
|
-
*/
|
|
77
|
-
async wait(options) {
|
|
78
|
-
if (this.response.type === "confirmed") {
|
|
79
|
-
return {
|
|
80
|
-
hash: this.response.hash,
|
|
81
|
-
receipt: this.response.receipt
|
|
82
|
-
};
|
|
83
|
-
}
|
|
84
|
-
if ((this.response.type === "submitted" || this.response.type === "signed") && this.context) {
|
|
85
|
-
return await this.sdk.waitForTransactionEvents({
|
|
86
|
-
hash: this.response.hash,
|
|
87
|
-
from: this.context.from,
|
|
88
|
-
contract: this.context.contract,
|
|
89
|
-
fn: this.context.fn
|
|
90
|
-
});
|
|
91
|
-
}
|
|
92
|
-
if (this.response.type === "submitted" || this.response.type === "signed") {
|
|
93
|
-
const receipt = await this.sdk.publicClient.waitForTransactionReceipt({
|
|
94
|
-
hash: this.response.hash
|
|
95
|
-
});
|
|
96
|
-
return {
|
|
97
|
-
hash: this.response.hash,
|
|
98
|
-
receipt
|
|
99
|
-
};
|
|
100
|
-
}
|
|
101
|
-
if (this.response.type === "pending") {
|
|
102
|
-
const sdkInternal = this.sdk;
|
|
103
|
-
const relayerCallback = sdkInternal.relayerCallback;
|
|
104
|
-
if (typeof relayerCallback !== "function") {
|
|
105
|
-
throw new Error("Relayer callback not configured for polling");
|
|
106
|
-
}
|
|
107
|
-
const pollingManager = new import_pollingManager.PollingManager(relayerCallback);
|
|
108
|
-
return await pollingManager.startPolling(this.response.operationId, {
|
|
109
|
-
signal: options?.signal,
|
|
110
|
-
onStatusUpdate: options?.onStatusUpdate,
|
|
111
|
-
timeout: options?.timeout
|
|
112
|
-
});
|
|
113
|
-
}
|
|
114
|
-
throw new Error(
|
|
115
|
-
`Cannot wait on response type: ${this.response.type}. Only 'submitted', 'signed', 'pending', and 'confirmed' responses can be waited on.`
|
|
116
|
-
);
|
|
117
|
-
}
|
|
118
|
-
/**
|
|
119
|
-
* Checks if this response can be waited on.
|
|
120
|
-
*
|
|
121
|
-
* @returns true if the response supports the wait() method
|
|
122
|
-
*/
|
|
123
|
-
canWait() {
|
|
124
|
-
return this.response.type === "submitted" || this.response.type === "signed" || this.response.type === "pending" || this.response.type === "confirmed";
|
|
125
|
-
}
|
|
126
|
-
/**
|
|
127
|
-
* Gets a human-readable status description.
|
|
128
|
-
*
|
|
129
|
-
* @returns Status string describing the current state
|
|
130
|
-
*/
|
|
131
|
-
getStatus() {
|
|
132
|
-
switch (this.response.type) {
|
|
133
|
-
case "pending":
|
|
134
|
-
return `Operation pending (ID: ${this.operationId})`;
|
|
135
|
-
case "submitted":
|
|
136
|
-
case "signed":
|
|
137
|
-
return `Transaction submitted (Hash: ${this.hash})`;
|
|
138
|
-
case "confirmed":
|
|
139
|
-
return `Transaction confirmed (Hash: ${this.response.hash})`;
|
|
140
|
-
case "direct":
|
|
141
|
-
return "Operation completed";
|
|
142
|
-
case "error":
|
|
143
|
-
return `Error: ${this.response.error}`;
|
|
144
|
-
default:
|
|
145
|
-
return "Unknown status";
|
|
146
|
-
}
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
function canEnhanceResponse(response) {
|
|
150
|
-
return response.type === "submitted" || response.type === "signed" || response.type === "pending" || response.type === "confirmed";
|
|
151
|
-
}
|
|
152
|
-
function enhanceResponse(response, sdk) {
|
|
153
|
-
if (canEnhanceResponse(response)) {
|
|
154
|
-
return new EnhancedTransactionResponse(response, sdk);
|
|
155
|
-
}
|
|
156
|
-
return null;
|
|
157
|
-
}
|
|
158
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
159
|
-
0 && (module.exports = {
|
|
160
|
-
EnhancedTransactionResponse,
|
|
161
|
-
canEnhanceResponse,
|
|
162
|
-
enhanceResponse
|
|
163
|
-
});
|
|
164
|
-
//# sourceMappingURL=enhancedResponse.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/client/enhancedResponse.ts"],"sourcesContent":["/**\n * Enhanced client-side response wrapper for relayer operations.\n *\n * @remarks\n * This module provides a fluent API for handling asynchronous relayer responses\n * by adding stateful behavior to the stateless response data. It enables the\n * `.wait()` pattern similar to ethers.js while maintaining clean separation\n * between server-side data transfer and client-side behavior.\n *\n * @module client/enhancedResponse\n */\n\nimport type { Hash, TransactionReceipt } from \"viem\";\nimport type {\n UnifiedRelayerResponse,\n TransactionContext,\n} from \"../types/relayer\";\nimport { PollingManager } from \"../core/pollingManager\";\nimport type { OperationStatus } from \"../types/options\";\n\n/**\n * Enhanced transaction response that provides a fluent API for waiting.\n *\n * @remarks\n * This class wraps a UnifiedRelayerResponse and provides a `.wait()` method\n * that intelligently handles both submitted transactions (via hash) and\n * pending operations (via operationId). It encapsulates the complexity of\n * polling and event parsing, providing a clean developer experience.\n *\n * @example\n * ```typescript\n * const response = await relayerClient.handleOperation(...);\n * const enhanced = vana.enhanceRelayerResponse(response);\n * if (enhanced) {\n * const result = await enhanced.wait();\n * console.log('Transaction confirmed:', result.hash);\n * }\n * ```\n *\n * @category Client\n */\nexport class EnhancedTransactionResponse {\n /** The underlying relayer response */\n public readonly response: UnifiedRelayerResponse;\n\n /** The hash if this is a submitted transaction */\n public readonly hash?: Hash;\n\n /** The operation ID if this is a pending operation */\n public readonly operationId?: string;\n\n /** Transaction context for event parsing */\n public readonly context?: TransactionContext;\n\n private readonly sdk: any; // Using any to avoid circular dependency\n\n constructor(response: UnifiedRelayerResponse, sdk: any) {\n this.response = response;\n this.sdk = sdk;\n\n // Extract key properties based on response type\n if (response.type === \"submitted\" || response.type === \"signed\") {\n this.hash = response.hash;\n this.context = response.context;\n } else if (response.type === \"pending\") {\n this.operationId = response.operationId;\n }\n }\n\n /**\n * Waits for the transaction or operation to complete.\n *\n * @remarks\n * This method provides intelligent handling based on the response type:\n * - For 'submitted' responses with context: Uses waitForTransactionEvents for full event parsing\n * - For 'submitted' responses without context: Waits for receipt only\n * - For 'pending' responses: Uses PollingManager to track async operations\n * - For 'confirmed' responses: Returns immediately with the receipt\n *\n * @param options - Optional configuration for polling behavior\n * @returns Promise resolving to event results or transaction receipt\n * @throws Error if the response type cannot be waited on\n *\n * @example\n * ```typescript\n * // With context for event parsing\n * const enhanced = new EnhancedTransactionResponse(response, vana);\n * const result = await enhanced.wait();\n * if (result.expectedEvents?.FileAdded) {\n * console.log('File ID:', result.expectedEvents.FileAdded.fileId);\n * }\n *\n * // For pending operations\n * const result = await enhanced.wait({\n * onStatusUpdate: (status) => console.log('Status:', status)\n * });\n * ```\n */\n async wait(options?: {\n /** Callback for status updates during polling */\n onStatusUpdate?: (status: OperationStatus) => void;\n /** Abort signal for cancellation */\n signal?: AbortSignal;\n /** Timeout in milliseconds */\n timeout?: number;\n }): Promise<any> {\n // Handle 'confirmed' responses - already complete\n if (this.response.type === \"confirmed\") {\n return {\n hash: this.response.hash,\n receipt: this.response.receipt,\n };\n }\n\n // Handle 'submitted' or 'signed' responses with context - full event parsing\n if (\n (this.response.type === \"submitted\" || this.response.type === \"signed\") &&\n this.context\n ) {\n // Use the SDK's waitForTransactionEvents with the preserved context\n return await this.sdk.waitForTransactionEvents({\n hash: this.response.hash,\n from: this.context.from,\n contract: this.context.contract,\n fn: this.context.fn,\n });\n }\n\n // Handle 'submitted' or 'signed' responses without context - receipt only\n if (this.response.type === \"submitted\" || this.response.type === \"signed\") {\n // Just wait for the receipt without event parsing\n const receipt = await this.sdk.publicClient.waitForTransactionReceipt({\n hash: this.response.hash,\n });\n return {\n hash: this.response.hash,\n receipt: receipt as TransactionReceipt,\n };\n }\n\n // Handle 'pending' responses - use PollingManager\n if (this.response.type === \"pending\") {\n // Access the relayer callback from the SDK's internal config\n const sdkInternal = this.sdk as any;\n const relayerCallback = sdkInternal.relayerCallback;\n\n if (typeof relayerCallback !== \"function\") {\n throw new Error(\"Relayer callback not configured for polling\");\n }\n\n const pollingManager = new PollingManager(relayerCallback);\n return await pollingManager.startPolling(this.response.operationId, {\n signal: options?.signal,\n onStatusUpdate: options?.onStatusUpdate,\n timeout: options?.timeout,\n });\n }\n\n // Response type cannot be waited on\n throw new Error(\n `Cannot wait on response type: ${(this.response as any).type}. ` +\n `Only 'submitted', 'signed', 'pending', and 'confirmed' responses can be waited on.`,\n );\n }\n\n /**\n * Checks if this response can be waited on.\n *\n * @returns true if the response supports the wait() method\n */\n canWait(): boolean {\n return (\n this.response.type === \"submitted\" ||\n this.response.type === \"signed\" ||\n this.response.type === \"pending\" ||\n this.response.type === \"confirmed\"\n );\n }\n\n /**\n * Gets a human-readable status description.\n *\n * @returns Status string describing the current state\n */\n getStatus(): string {\n switch (this.response.type) {\n case \"pending\":\n return `Operation pending (ID: ${this.operationId})`;\n case \"submitted\":\n case \"signed\":\n return `Transaction submitted (Hash: ${this.hash})`;\n case \"confirmed\":\n return `Transaction confirmed (Hash: ${this.response.hash})`;\n case \"direct\":\n return \"Operation completed\";\n case \"error\":\n return `Error: ${this.response.error}`;\n default:\n return \"Unknown status\";\n }\n }\n}\n\n/**\n * Type guard to check if a response can be enhanced.\n *\n * @param response - The unified relayer response to check\n * @returns true if the response can be wrapped in EnhancedTransactionResponse\n */\nexport function canEnhanceResponse(response: UnifiedRelayerResponse): boolean {\n return (\n response.type === \"submitted\" ||\n response.type === \"signed\" ||\n response.type === \"pending\" ||\n response.type === \"confirmed\"\n );\n}\n\n/**\n * Factory function to create an enhanced response if applicable.\n *\n * @param response - The unified relayer response\n * @param sdk - The Vana SDK instance\n * @returns EnhancedTransactionResponse if enhanceable, null otherwise\n *\n * @example\n * ```typescript\n * const response = await handleRelayerOperation(vana, request);\n * const enhanced = enhanceResponse(response, vana);\n * if (enhanced) {\n * await enhanced.wait();\n * }\n * ```\n */\nexport function enhanceResponse(\n response: UnifiedRelayerResponse,\n sdk: any,\n): EnhancedTransactionResponse | null {\n if (canEnhanceResponse(response)) {\n return new EnhancedTransactionResponse(response, sdk);\n }\n return null;\n}\n"],"mappings":"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","names":[]}
|
|
@@ -1,120 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Enhanced client-side response wrapper for relayer operations.
|
|
3
|
-
*
|
|
4
|
-
* @remarks
|
|
5
|
-
* This module provides a fluent API for handling asynchronous relayer responses
|
|
6
|
-
* by adding stateful behavior to the stateless response data. It enables the
|
|
7
|
-
* `.wait()` pattern similar to ethers.js while maintaining clean separation
|
|
8
|
-
* between server-side data transfer and client-side behavior.
|
|
9
|
-
*
|
|
10
|
-
* @module client/enhancedResponse
|
|
11
|
-
*/
|
|
12
|
-
import type { Hash } from "viem";
|
|
13
|
-
import type { UnifiedRelayerResponse, TransactionContext } from "../types/relayer";
|
|
14
|
-
import type { OperationStatus } from "../types/options";
|
|
15
|
-
/**
|
|
16
|
-
* Enhanced transaction response that provides a fluent API for waiting.
|
|
17
|
-
*
|
|
18
|
-
* @remarks
|
|
19
|
-
* This class wraps a UnifiedRelayerResponse and provides a `.wait()` method
|
|
20
|
-
* that intelligently handles both submitted transactions (via hash) and
|
|
21
|
-
* pending operations (via operationId). It encapsulates the complexity of
|
|
22
|
-
* polling and event parsing, providing a clean developer experience.
|
|
23
|
-
*
|
|
24
|
-
* @example
|
|
25
|
-
* ```typescript
|
|
26
|
-
* const response = await relayerClient.handleOperation(...);
|
|
27
|
-
* const enhanced = vana.enhanceRelayerResponse(response);
|
|
28
|
-
* if (enhanced) {
|
|
29
|
-
* const result = await enhanced.wait();
|
|
30
|
-
* console.log('Transaction confirmed:', result.hash);
|
|
31
|
-
* }
|
|
32
|
-
* ```
|
|
33
|
-
*
|
|
34
|
-
* @category Client
|
|
35
|
-
*/
|
|
36
|
-
export declare class EnhancedTransactionResponse {
|
|
37
|
-
/** The underlying relayer response */
|
|
38
|
-
readonly response: UnifiedRelayerResponse;
|
|
39
|
-
/** The hash if this is a submitted transaction */
|
|
40
|
-
readonly hash?: Hash;
|
|
41
|
-
/** The operation ID if this is a pending operation */
|
|
42
|
-
readonly operationId?: string;
|
|
43
|
-
/** Transaction context for event parsing */
|
|
44
|
-
readonly context?: TransactionContext;
|
|
45
|
-
private readonly sdk;
|
|
46
|
-
constructor(response: UnifiedRelayerResponse, sdk: any);
|
|
47
|
-
/**
|
|
48
|
-
* Waits for the transaction or operation to complete.
|
|
49
|
-
*
|
|
50
|
-
* @remarks
|
|
51
|
-
* This method provides intelligent handling based on the response type:
|
|
52
|
-
* - For 'submitted' responses with context: Uses waitForTransactionEvents for full event parsing
|
|
53
|
-
* - For 'submitted' responses without context: Waits for receipt only
|
|
54
|
-
* - For 'pending' responses: Uses PollingManager to track async operations
|
|
55
|
-
* - For 'confirmed' responses: Returns immediately with the receipt
|
|
56
|
-
*
|
|
57
|
-
* @param options - Optional configuration for polling behavior
|
|
58
|
-
* @returns Promise resolving to event results or transaction receipt
|
|
59
|
-
* @throws Error if the response type cannot be waited on
|
|
60
|
-
*
|
|
61
|
-
* @example
|
|
62
|
-
* ```typescript
|
|
63
|
-
* // With context for event parsing
|
|
64
|
-
* const enhanced = new EnhancedTransactionResponse(response, vana);
|
|
65
|
-
* const result = await enhanced.wait();
|
|
66
|
-
* if (result.expectedEvents?.FileAdded) {
|
|
67
|
-
* console.log('File ID:', result.expectedEvents.FileAdded.fileId);
|
|
68
|
-
* }
|
|
69
|
-
*
|
|
70
|
-
* // For pending operations
|
|
71
|
-
* const result = await enhanced.wait({
|
|
72
|
-
* onStatusUpdate: (status) => console.log('Status:', status)
|
|
73
|
-
* });
|
|
74
|
-
* ```
|
|
75
|
-
*/
|
|
76
|
-
wait(options?: {
|
|
77
|
-
/** Callback for status updates during polling */
|
|
78
|
-
onStatusUpdate?: (status: OperationStatus) => void;
|
|
79
|
-
/** Abort signal for cancellation */
|
|
80
|
-
signal?: AbortSignal;
|
|
81
|
-
/** Timeout in milliseconds */
|
|
82
|
-
timeout?: number;
|
|
83
|
-
}): Promise<any>;
|
|
84
|
-
/**
|
|
85
|
-
* Checks if this response can be waited on.
|
|
86
|
-
*
|
|
87
|
-
* @returns true if the response supports the wait() method
|
|
88
|
-
*/
|
|
89
|
-
canWait(): boolean;
|
|
90
|
-
/**
|
|
91
|
-
* Gets a human-readable status description.
|
|
92
|
-
*
|
|
93
|
-
* @returns Status string describing the current state
|
|
94
|
-
*/
|
|
95
|
-
getStatus(): string;
|
|
96
|
-
}
|
|
97
|
-
/**
|
|
98
|
-
* Type guard to check if a response can be enhanced.
|
|
99
|
-
*
|
|
100
|
-
* @param response - The unified relayer response to check
|
|
101
|
-
* @returns true if the response can be wrapped in EnhancedTransactionResponse
|
|
102
|
-
*/
|
|
103
|
-
export declare function canEnhanceResponse(response: UnifiedRelayerResponse): boolean;
|
|
104
|
-
/**
|
|
105
|
-
* Factory function to create an enhanced response if applicable.
|
|
106
|
-
*
|
|
107
|
-
* @param response - The unified relayer response
|
|
108
|
-
* @param sdk - The Vana SDK instance
|
|
109
|
-
* @returns EnhancedTransactionResponse if enhanceable, null otherwise
|
|
110
|
-
*
|
|
111
|
-
* @example
|
|
112
|
-
* ```typescript
|
|
113
|
-
* const response = await handleRelayerOperation(vana, request);
|
|
114
|
-
* const enhanced = enhanceResponse(response, vana);
|
|
115
|
-
* if (enhanced) {
|
|
116
|
-
* await enhanced.wait();
|
|
117
|
-
* }
|
|
118
|
-
* ```
|
|
119
|
-
*/
|
|
120
|
-
export declare function enhanceResponse(response: UnifiedRelayerResponse, sdk: any): EnhancedTransactionResponse | null;
|
|
@@ -1,138 +0,0 @@
|
|
|
1
|
-
import { PollingManager } from "../core/pollingManager";
|
|
2
|
-
class EnhancedTransactionResponse {
|
|
3
|
-
/** The underlying relayer response */
|
|
4
|
-
response;
|
|
5
|
-
/** The hash if this is a submitted transaction */
|
|
6
|
-
hash;
|
|
7
|
-
/** The operation ID if this is a pending operation */
|
|
8
|
-
operationId;
|
|
9
|
-
/** Transaction context for event parsing */
|
|
10
|
-
context;
|
|
11
|
-
sdk;
|
|
12
|
-
// Using any to avoid circular dependency
|
|
13
|
-
constructor(response, sdk) {
|
|
14
|
-
this.response = response;
|
|
15
|
-
this.sdk = sdk;
|
|
16
|
-
if (response.type === "submitted" || response.type === "signed") {
|
|
17
|
-
this.hash = response.hash;
|
|
18
|
-
this.context = response.context;
|
|
19
|
-
} else if (response.type === "pending") {
|
|
20
|
-
this.operationId = response.operationId;
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
/**
|
|
24
|
-
* Waits for the transaction or operation to complete.
|
|
25
|
-
*
|
|
26
|
-
* @remarks
|
|
27
|
-
* This method provides intelligent handling based on the response type:
|
|
28
|
-
* - For 'submitted' responses with context: Uses waitForTransactionEvents for full event parsing
|
|
29
|
-
* - For 'submitted' responses without context: Waits for receipt only
|
|
30
|
-
* - For 'pending' responses: Uses PollingManager to track async operations
|
|
31
|
-
* - For 'confirmed' responses: Returns immediately with the receipt
|
|
32
|
-
*
|
|
33
|
-
* @param options - Optional configuration for polling behavior
|
|
34
|
-
* @returns Promise resolving to event results or transaction receipt
|
|
35
|
-
* @throws Error if the response type cannot be waited on
|
|
36
|
-
*
|
|
37
|
-
* @example
|
|
38
|
-
* ```typescript
|
|
39
|
-
* // With context for event parsing
|
|
40
|
-
* const enhanced = new EnhancedTransactionResponse(response, vana);
|
|
41
|
-
* const result = await enhanced.wait();
|
|
42
|
-
* if (result.expectedEvents?.FileAdded) {
|
|
43
|
-
* console.log('File ID:', result.expectedEvents.FileAdded.fileId);
|
|
44
|
-
* }
|
|
45
|
-
*
|
|
46
|
-
* // For pending operations
|
|
47
|
-
* const result = await enhanced.wait({
|
|
48
|
-
* onStatusUpdate: (status) => console.log('Status:', status)
|
|
49
|
-
* });
|
|
50
|
-
* ```
|
|
51
|
-
*/
|
|
52
|
-
async wait(options) {
|
|
53
|
-
if (this.response.type === "confirmed") {
|
|
54
|
-
return {
|
|
55
|
-
hash: this.response.hash,
|
|
56
|
-
receipt: this.response.receipt
|
|
57
|
-
};
|
|
58
|
-
}
|
|
59
|
-
if ((this.response.type === "submitted" || this.response.type === "signed") && this.context) {
|
|
60
|
-
return await this.sdk.waitForTransactionEvents({
|
|
61
|
-
hash: this.response.hash,
|
|
62
|
-
from: this.context.from,
|
|
63
|
-
contract: this.context.contract,
|
|
64
|
-
fn: this.context.fn
|
|
65
|
-
});
|
|
66
|
-
}
|
|
67
|
-
if (this.response.type === "submitted" || this.response.type === "signed") {
|
|
68
|
-
const receipt = await this.sdk.publicClient.waitForTransactionReceipt({
|
|
69
|
-
hash: this.response.hash
|
|
70
|
-
});
|
|
71
|
-
return {
|
|
72
|
-
hash: this.response.hash,
|
|
73
|
-
receipt
|
|
74
|
-
};
|
|
75
|
-
}
|
|
76
|
-
if (this.response.type === "pending") {
|
|
77
|
-
const sdkInternal = this.sdk;
|
|
78
|
-
const relayerCallback = sdkInternal.relayerCallback;
|
|
79
|
-
if (typeof relayerCallback !== "function") {
|
|
80
|
-
throw new Error("Relayer callback not configured for polling");
|
|
81
|
-
}
|
|
82
|
-
const pollingManager = new PollingManager(relayerCallback);
|
|
83
|
-
return await pollingManager.startPolling(this.response.operationId, {
|
|
84
|
-
signal: options?.signal,
|
|
85
|
-
onStatusUpdate: options?.onStatusUpdate,
|
|
86
|
-
timeout: options?.timeout
|
|
87
|
-
});
|
|
88
|
-
}
|
|
89
|
-
throw new Error(
|
|
90
|
-
`Cannot wait on response type: ${this.response.type}. Only 'submitted', 'signed', 'pending', and 'confirmed' responses can be waited on.`
|
|
91
|
-
);
|
|
92
|
-
}
|
|
93
|
-
/**
|
|
94
|
-
* Checks if this response can be waited on.
|
|
95
|
-
*
|
|
96
|
-
* @returns true if the response supports the wait() method
|
|
97
|
-
*/
|
|
98
|
-
canWait() {
|
|
99
|
-
return this.response.type === "submitted" || this.response.type === "signed" || this.response.type === "pending" || this.response.type === "confirmed";
|
|
100
|
-
}
|
|
101
|
-
/**
|
|
102
|
-
* Gets a human-readable status description.
|
|
103
|
-
*
|
|
104
|
-
* @returns Status string describing the current state
|
|
105
|
-
*/
|
|
106
|
-
getStatus() {
|
|
107
|
-
switch (this.response.type) {
|
|
108
|
-
case "pending":
|
|
109
|
-
return `Operation pending (ID: ${this.operationId})`;
|
|
110
|
-
case "submitted":
|
|
111
|
-
case "signed":
|
|
112
|
-
return `Transaction submitted (Hash: ${this.hash})`;
|
|
113
|
-
case "confirmed":
|
|
114
|
-
return `Transaction confirmed (Hash: ${this.response.hash})`;
|
|
115
|
-
case "direct":
|
|
116
|
-
return "Operation completed";
|
|
117
|
-
case "error":
|
|
118
|
-
return `Error: ${this.response.error}`;
|
|
119
|
-
default:
|
|
120
|
-
return "Unknown status";
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
function canEnhanceResponse(response) {
|
|
125
|
-
return response.type === "submitted" || response.type === "signed" || response.type === "pending" || response.type === "confirmed";
|
|
126
|
-
}
|
|
127
|
-
function enhanceResponse(response, sdk) {
|
|
128
|
-
if (canEnhanceResponse(response)) {
|
|
129
|
-
return new EnhancedTransactionResponse(response, sdk);
|
|
130
|
-
}
|
|
131
|
-
return null;
|
|
132
|
-
}
|
|
133
|
-
export {
|
|
134
|
-
EnhancedTransactionResponse,
|
|
135
|
-
canEnhanceResponse,
|
|
136
|
-
enhanceResponse
|
|
137
|
-
};
|
|
138
|
-
//# sourceMappingURL=enhancedResponse.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/client/enhancedResponse.ts"],"sourcesContent":["/**\n * Enhanced client-side response wrapper for relayer operations.\n *\n * @remarks\n * This module provides a fluent API for handling asynchronous relayer responses\n * by adding stateful behavior to the stateless response data. It enables the\n * `.wait()` pattern similar to ethers.js while maintaining clean separation\n * between server-side data transfer and client-side behavior.\n *\n * @module client/enhancedResponse\n */\n\nimport type { Hash, TransactionReceipt } from \"viem\";\nimport type {\n UnifiedRelayerResponse,\n TransactionContext,\n} from \"../types/relayer\";\nimport { PollingManager } from \"../core/pollingManager\";\nimport type { OperationStatus } from \"../types/options\";\n\n/**\n * Enhanced transaction response that provides a fluent API for waiting.\n *\n * @remarks\n * This class wraps a UnifiedRelayerResponse and provides a `.wait()` method\n * that intelligently handles both submitted transactions (via hash) and\n * pending operations (via operationId). It encapsulates the complexity of\n * polling and event parsing, providing a clean developer experience.\n *\n * @example\n * ```typescript\n * const response = await relayerClient.handleOperation(...);\n * const enhanced = vana.enhanceRelayerResponse(response);\n * if (enhanced) {\n * const result = await enhanced.wait();\n * console.log('Transaction confirmed:', result.hash);\n * }\n * ```\n *\n * @category Client\n */\nexport class EnhancedTransactionResponse {\n /** The underlying relayer response */\n public readonly response: UnifiedRelayerResponse;\n\n /** The hash if this is a submitted transaction */\n public readonly hash?: Hash;\n\n /** The operation ID if this is a pending operation */\n public readonly operationId?: string;\n\n /** Transaction context for event parsing */\n public readonly context?: TransactionContext;\n\n private readonly sdk: any; // Using any to avoid circular dependency\n\n constructor(response: UnifiedRelayerResponse, sdk: any) {\n this.response = response;\n this.sdk = sdk;\n\n // Extract key properties based on response type\n if (response.type === \"submitted\" || response.type === \"signed\") {\n this.hash = response.hash;\n this.context = response.context;\n } else if (response.type === \"pending\") {\n this.operationId = response.operationId;\n }\n }\n\n /**\n * Waits for the transaction or operation to complete.\n *\n * @remarks\n * This method provides intelligent handling based on the response type:\n * - For 'submitted' responses with context: Uses waitForTransactionEvents for full event parsing\n * - For 'submitted' responses without context: Waits for receipt only\n * - For 'pending' responses: Uses PollingManager to track async operations\n * - For 'confirmed' responses: Returns immediately with the receipt\n *\n * @param options - Optional configuration for polling behavior\n * @returns Promise resolving to event results or transaction receipt\n * @throws Error if the response type cannot be waited on\n *\n * @example\n * ```typescript\n * // With context for event parsing\n * const enhanced = new EnhancedTransactionResponse(response, vana);\n * const result = await enhanced.wait();\n * if (result.expectedEvents?.FileAdded) {\n * console.log('File ID:', result.expectedEvents.FileAdded.fileId);\n * }\n *\n * // For pending operations\n * const result = await enhanced.wait({\n * onStatusUpdate: (status) => console.log('Status:', status)\n * });\n * ```\n */\n async wait(options?: {\n /** Callback for status updates during polling */\n onStatusUpdate?: (status: OperationStatus) => void;\n /** Abort signal for cancellation */\n signal?: AbortSignal;\n /** Timeout in milliseconds */\n timeout?: number;\n }): Promise<any> {\n // Handle 'confirmed' responses - already complete\n if (this.response.type === \"confirmed\") {\n return {\n hash: this.response.hash,\n receipt: this.response.receipt,\n };\n }\n\n // Handle 'submitted' or 'signed' responses with context - full event parsing\n if (\n (this.response.type === \"submitted\" || this.response.type === \"signed\") &&\n this.context\n ) {\n // Use the SDK's waitForTransactionEvents with the preserved context\n return await this.sdk.waitForTransactionEvents({\n hash: this.response.hash,\n from: this.context.from,\n contract: this.context.contract,\n fn: this.context.fn,\n });\n }\n\n // Handle 'submitted' or 'signed' responses without context - receipt only\n if (this.response.type === \"submitted\" || this.response.type === \"signed\") {\n // Just wait for the receipt without event parsing\n const receipt = await this.sdk.publicClient.waitForTransactionReceipt({\n hash: this.response.hash,\n });\n return {\n hash: this.response.hash,\n receipt: receipt as TransactionReceipt,\n };\n }\n\n // Handle 'pending' responses - use PollingManager\n if (this.response.type === \"pending\") {\n // Access the relayer callback from the SDK's internal config\n const sdkInternal = this.sdk as any;\n const relayerCallback = sdkInternal.relayerCallback;\n\n if (typeof relayerCallback !== \"function\") {\n throw new Error(\"Relayer callback not configured for polling\");\n }\n\n const pollingManager = new PollingManager(relayerCallback);\n return await pollingManager.startPolling(this.response.operationId, {\n signal: options?.signal,\n onStatusUpdate: options?.onStatusUpdate,\n timeout: options?.timeout,\n });\n }\n\n // Response type cannot be waited on\n throw new Error(\n `Cannot wait on response type: ${(this.response as any).type}. ` +\n `Only 'submitted', 'signed', 'pending', and 'confirmed' responses can be waited on.`,\n );\n }\n\n /**\n * Checks if this response can be waited on.\n *\n * @returns true if the response supports the wait() method\n */\n canWait(): boolean {\n return (\n this.response.type === \"submitted\" ||\n this.response.type === \"signed\" ||\n this.response.type === \"pending\" ||\n this.response.type === \"confirmed\"\n );\n }\n\n /**\n * Gets a human-readable status description.\n *\n * @returns Status string describing the current state\n */\n getStatus(): string {\n switch (this.response.type) {\n case \"pending\":\n return `Operation pending (ID: ${this.operationId})`;\n case \"submitted\":\n case \"signed\":\n return `Transaction submitted (Hash: ${this.hash})`;\n case \"confirmed\":\n return `Transaction confirmed (Hash: ${this.response.hash})`;\n case \"direct\":\n return \"Operation completed\";\n case \"error\":\n return `Error: ${this.response.error}`;\n default:\n return \"Unknown status\";\n }\n }\n}\n\n/**\n * Type guard to check if a response can be enhanced.\n *\n * @param response - The unified relayer response to check\n * @returns true if the response can be wrapped in EnhancedTransactionResponse\n */\nexport function canEnhanceResponse(response: UnifiedRelayerResponse): boolean {\n return (\n response.type === \"submitted\" ||\n response.type === \"signed\" ||\n response.type === \"pending\" ||\n response.type === \"confirmed\"\n );\n}\n\n/**\n * Factory function to create an enhanced response if applicable.\n *\n * @param response - The unified relayer response\n * @param sdk - The Vana SDK instance\n * @returns EnhancedTransactionResponse if enhanceable, null otherwise\n *\n * @example\n * ```typescript\n * const response = await handleRelayerOperation(vana, request);\n * const enhanced = enhanceResponse(response, vana);\n * if (enhanced) {\n * await enhanced.wait();\n * }\n * ```\n */\nexport function enhanceResponse(\n response: UnifiedRelayerResponse,\n sdk: any,\n): EnhancedTransactionResponse | null {\n if (canEnhanceResponse(response)) {\n return new EnhancedTransactionResponse(response, sdk);\n }\n return null;\n}\n"],"mappings":"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","names":[]}
|
|
@@ -1,116 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __defProp = Object.defineProperty;
|
|
3
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
-
var __export = (target, all) => {
|
|
7
|
-
for (var name in all)
|
|
8
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
-
};
|
|
10
|
-
var __copyProps = (to, from, except, desc) => {
|
|
11
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
-
for (let key of __getOwnPropNames(from))
|
|
13
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
-
}
|
|
16
|
-
return to;
|
|
17
|
-
};
|
|
18
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
-
var base_exports = {};
|
|
20
|
-
__export(base_exports, {
|
|
21
|
-
BaseController: () => BaseController
|
|
22
|
-
});
|
|
23
|
-
module.exports = __toCommonJS(base_exports);
|
|
24
|
-
var import_errors = require("../errors");
|
|
25
|
-
class BaseController {
|
|
26
|
-
/**
|
|
27
|
-
* Creates a new controller instance with the provided context.
|
|
28
|
-
*
|
|
29
|
-
* @param context - The controller context containing clients and configuration
|
|
30
|
-
*/
|
|
31
|
-
constructor(context) {
|
|
32
|
-
this.context = context;
|
|
33
|
-
}
|
|
34
|
-
/**
|
|
35
|
-
* Asserts that a wallet client with an account is available for operations requiring signing.
|
|
36
|
-
*
|
|
37
|
-
* @remarks
|
|
38
|
-
* This method uses TypeScript assertion signatures to narrow the type of
|
|
39
|
-
* `this.context` to guarantee that `walletClient` with an account is available
|
|
40
|
-
* after the call succeeds. This provides compile-time safety for wallet operations
|
|
41
|
-
* while enabling clear error messages for read-only scenarios.
|
|
42
|
-
*
|
|
43
|
-
* The assertion signature ensures that after calling this method,
|
|
44
|
-
* TypeScript knows that `this.context.walletClient` is definitely available
|
|
45
|
-
* with a configured account.
|
|
46
|
-
*
|
|
47
|
-
* @throws {ReadOnlyError} When no wallet client is configured
|
|
48
|
-
* @throws {Error} When wallet client exists but no account is configured
|
|
49
|
-
*
|
|
50
|
-
* @example
|
|
51
|
-
* ```typescript
|
|
52
|
-
* async performWalletOperation() {
|
|
53
|
-
* this.assertWallet(); // Type assertion + runtime check
|
|
54
|
-
*
|
|
55
|
-
* // TypeScript now knows walletClient and account are available
|
|
56
|
-
* const account = this.context.walletClient.account;
|
|
57
|
-
* const address = typeof account === 'string' ? account : account.address;
|
|
58
|
-
* }
|
|
59
|
-
* ```
|
|
60
|
-
*/
|
|
61
|
-
assertWallet() {
|
|
62
|
-
if (!this.context.walletClient) {
|
|
63
|
-
const stack = new Error().stack;
|
|
64
|
-
const callingMethod = stack?.split("\n")[2]?.match(/at \w+\.(\w+)/)?.[1] ?? "this operation";
|
|
65
|
-
throw new import_errors.ReadOnlyError(
|
|
66
|
-
callingMethod,
|
|
67
|
-
"Initialize the SDK with a walletClient to perform this operation"
|
|
68
|
-
);
|
|
69
|
-
}
|
|
70
|
-
if (!this.context.walletClient.account) {
|
|
71
|
-
const stack = new Error().stack;
|
|
72
|
-
const callingMethod = stack?.split("\n")[2]?.match(/at \w+\.(\w+)/)?.[1] ?? "this operation";
|
|
73
|
-
throw new Error(
|
|
74
|
-
`No wallet account connected. Cannot perform ${callingMethod} without an account.`
|
|
75
|
-
);
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
/**
|
|
79
|
-
* Helper to safely spread transaction options for viem compatibility.
|
|
80
|
-
* Handles EIP-1559 vs legacy gas pricing correctly.
|
|
81
|
-
*
|
|
82
|
-
* @param options - Transaction options to spread
|
|
83
|
-
* @returns Properly formatted options for viem
|
|
84
|
-
* @internal
|
|
85
|
-
*/
|
|
86
|
-
spreadTransactionOptions(options) {
|
|
87
|
-
if (!options) return {};
|
|
88
|
-
const baseOptions = {
|
|
89
|
-
...options.nonce !== void 0 && { nonce: options.nonce },
|
|
90
|
-
...options.gas !== void 0 && { gas: options.gas }
|
|
91
|
-
};
|
|
92
|
-
if (options.maxFeePerGas !== void 0 || options.maxPriorityFeePerGas !== void 0) {
|
|
93
|
-
return {
|
|
94
|
-
...baseOptions,
|
|
95
|
-
...options.maxFeePerGas !== void 0 && {
|
|
96
|
-
maxFeePerGas: options.maxFeePerGas
|
|
97
|
-
},
|
|
98
|
-
...options.maxPriorityFeePerGas !== void 0 && {
|
|
99
|
-
maxPriorityFeePerGas: options.maxPriorityFeePerGas
|
|
100
|
-
}
|
|
101
|
-
};
|
|
102
|
-
}
|
|
103
|
-
if (options.gasPrice !== void 0) {
|
|
104
|
-
return {
|
|
105
|
-
...baseOptions,
|
|
106
|
-
gasPrice: options.gasPrice
|
|
107
|
-
};
|
|
108
|
-
}
|
|
109
|
-
return baseOptions;
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
113
|
-
0 && (module.exports = {
|
|
114
|
-
BaseController
|
|
115
|
-
});
|
|
116
|
-
//# sourceMappingURL=base.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/controllers/base.ts"],"sourcesContent":["/**\n * Base controller class providing common functionality for all controllers.\n *\n * @remarks\n * This abstract class establishes the foundation for all Vana SDK controllers,\n * providing shared utilities like wallet validation and context management.\n * All controllers should extend this base class to ensure consistency and\n * shared behavior across the SDK.\n *\n * The class follows the Single Responsibility Principle by handling only\n * the core controller concerns while leaving specific functionality to\n * implementing classes.\n *\n * @category Controllers\n */\n\nimport type { WalletClient } from \"viem\";\nimport type { ControllerContext } from \"../types/controller-context\";\nimport type { TransactionOptions } from \"../types/operations\";\nimport { ReadOnlyError } from \"../errors\";\n\n/**\n * Abstract base controller that all Vana SDK controllers extend.\n *\n * @remarks\n * Provides common functionality and patterns used across all controllers,\n * including wallet validation and context management. This ensures\n * consistency and reduces code duplication throughout the SDK.\n *\n * Key features:\n * - Wallet client validation with TypeScript assertion signatures\n * - Consistent error handling for read-only scenarios\n * - Shared context management patterns\n * - Type-safe wallet operations\n *\n * @example\n * ```typescript\n * class MyController extends BaseController {\n * async performWalletOperation() {\n * this.assertWallet(); // Ensures wallet is available\n * // Now this.context.walletClient is guaranteed to be available\n * const address = await this.context.walletClient.getAddresses();\n * return address[0];\n * }\n * }\n * ```\n */\nexport abstract class BaseController {\n /**\n * Creates a new controller instance with the provided context.\n *\n * @param context - The controller context containing clients and configuration\n */\n constructor(protected readonly context: ControllerContext) {}\n\n /**\n * Asserts that a wallet client with an account is available for operations requiring signing.\n *\n * @remarks\n * This method uses TypeScript assertion signatures to narrow the type of\n * `this.context` to guarantee that `walletClient` with an account is available\n * after the call succeeds. This provides compile-time safety for wallet operations\n * while enabling clear error messages for read-only scenarios.\n *\n * The assertion signature ensures that after calling this method,\n * TypeScript knows that `this.context.walletClient` is definitely available\n * with a configured account.\n *\n * @throws {ReadOnlyError} When no wallet client is configured\n * @throws {Error} When wallet client exists but no account is configured\n *\n * @example\n * ```typescript\n * async performWalletOperation() {\n * this.assertWallet(); // Type assertion + runtime check\n *\n * // TypeScript now knows walletClient and account are available\n * const account = this.context.walletClient.account;\n * const address = typeof account === 'string' ? account : account.address;\n * }\n * ```\n */\n protected assertWallet(): asserts this is {\n context: ControllerContext & { walletClient: WalletClient };\n } {\n if (!this.context.walletClient) {\n // Get the calling method name from the stack trace for better error messages\n const stack = new Error().stack;\n const callingMethod =\n stack?.split(\"\\n\")[2]?.match(/at \\w+\\.(\\w+)/)?.[1] ?? \"this operation\";\n\n throw new ReadOnlyError(\n callingMethod,\n \"Initialize the SDK with a walletClient to perform this operation\",\n );\n }\n\n if (!this.context.walletClient.account) {\n // Get the calling method name from the stack trace for better error messages\n const stack = new Error().stack;\n const callingMethod =\n stack?.split(\"\\n\")[2]?.match(/at \\w+\\.(\\w+)/)?.[1] ?? \"this operation\";\n\n throw new Error(\n `No wallet account connected. Cannot perform ${callingMethod} without an account.`,\n );\n }\n }\n\n /**\n * Helper to safely spread transaction options for viem compatibility.\n * Handles EIP-1559 vs legacy gas pricing correctly.\n *\n * @param options - Transaction options to spread\n * @returns Properly formatted options for viem\n * @internal\n */\n protected spreadTransactionOptions(options?: TransactionOptions) {\n if (!options) return {};\n\n const baseOptions: any = {\n ...(options.nonce !== undefined && { nonce: options.nonce }),\n ...(options.gas !== undefined && { gas: options.gas }),\n };\n\n // EIP-1559 and legacy gasPrice are mutually exclusive in viem\n // If EIP-1559 params are provided, use them and exclude gasPrice\n if (\n options.maxFeePerGas !== undefined ||\n options.maxPriorityFeePerGas !== undefined\n ) {\n return {\n ...baseOptions,\n ...(options.maxFeePerGas !== undefined && {\n maxFeePerGas: options.maxFeePerGas,\n }),\n ...(options.maxPriorityFeePerGas !== undefined && {\n maxPriorityFeePerGas: options.maxPriorityFeePerGas,\n }),\n };\n }\n\n // Otherwise, use legacy gasPrice if provided\n if (options.gasPrice !== undefined) {\n return {\n ...baseOptions,\n gasPrice: options.gasPrice,\n };\n }\n\n return baseOptions;\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAmBA,oBAA8B;AA4BvB,MAAe,eAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMnC,YAA+B,SAA4B;AAA5B;AAAA,EAA6B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EA6BlD,eAER;AACA,QAAI,CAAC,KAAK,QAAQ,cAAc;AAE9B,YAAM,QAAQ,IAAI,MAAM,EAAE;AAC1B,YAAM,gBACJ,OAAO,MAAM,IAAI,EAAE,CAAC,GAAG,MAAM,eAAe,IAAI,CAAC,KAAK;AAExD,YAAM,IAAI;AAAA,QACR;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAEA,QAAI,CAAC,KAAK,QAAQ,aAAa,SAAS;AAEtC,YAAM,QAAQ,IAAI,MAAM,EAAE;AAC1B,YAAM,gBACJ,OAAO,MAAM,IAAI,EAAE,CAAC,GAAG,MAAM,eAAe,IAAI,CAAC,KAAK;AAExD,YAAM,IAAI;AAAA,QACR,+CAA+C,aAAa;AAAA,MAC9D;AAAA,IACF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUU,yBAAyB,SAA8B;AAC/D,QAAI,CAAC,QAAS,QAAO,CAAC;AAEtB,UAAM,cAAmB;AAAA,MACvB,GAAI,QAAQ,UAAU,UAAa,EAAE,OAAO,QAAQ,MAAM;AAAA,MAC1D,GAAI,QAAQ,QAAQ,UAAa,EAAE,KAAK,QAAQ,IAAI;AAAA,IACtD;AAIA,QACE,QAAQ,iBAAiB,UACzB,QAAQ,yBAAyB,QACjC;AACA,aAAO;AAAA,QACL,GAAG;AAAA,QACH,GAAI,QAAQ,iBAAiB,UAAa;AAAA,UACxC,cAAc,QAAQ;AAAA,QACxB;AAAA,QACA,GAAI,QAAQ,yBAAyB,UAAa;AAAA,UAChD,sBAAsB,QAAQ;AAAA,QAChC;AAAA,MACF;AAAA,IACF;AAGA,QAAI,QAAQ,aAAa,QAAW;AAClC,aAAO;AAAA,QACL,GAAG;AAAA,QACH,UAAU,QAAQ;AAAA,MACpB;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AACF;","names":[]}
|