@opendatalabs/vana-sdk 0.1.0-alpha.d7fc764 → 0.1.0-alpha.dc68f39
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/__tests__/waitForTransactionEvents.test.d.ts +1 -0
- package/dist/browser.d.ts +4 -2
- package/dist/chains/definitions.cjs +9 -6
- package/dist/chains/definitions.cjs.map +1 -1
- package/dist/chains/definitions.d.ts +9 -11
- package/dist/chains/definitions.js +9 -6
- package/dist/chains/definitions.js.map +1 -1
- package/dist/chains/index.d.ts +5 -2
- package/dist/chains.browser.d.ts +8 -2
- package/dist/chains.d.ts +8 -2
- package/dist/chains.node.d.ts +8 -2
- package/dist/config/addresses.d.ts +8 -24
- package/dist/config/chains.d.ts +9 -13
- package/dist/config/default-services.cjs +60 -0
- package/dist/config/default-services.cjs.map +1 -0
- package/dist/config/default-services.d.ts +46 -0
- package/dist/config/default-services.js +33 -0
- package/dist/config/default-services.js.map +1 -0
- package/dist/config/default-services.test.d.ts +1 -0
- package/dist/config/features.d.ts +1 -3
- package/dist/config/tests/addresses.test.d.ts +1 -0
- package/dist/contracts/contractController.cjs +3 -3
- package/dist/contracts/contractController.cjs.map +1 -1
- package/dist/contracts/contractController.d.ts +11 -28
- package/dist/contracts/contractController.js +4 -7
- package/dist/contracts/contractController.js.map +1 -1
- package/dist/contracts/tests/contractController.test.d.ts +1 -0
- package/dist/controllers/__tests__/schemas-edge-cases.test.d.ts +1 -0
- package/dist/controllers/base.cjs +83 -0
- package/dist/controllers/base.cjs.map +1 -0
- package/dist/controllers/base.d.ts +84 -0
- package/dist/controllers/base.js +59 -0
- package/dist/controllers/base.js.map +1 -0
- package/dist/controllers/data-error-handling.test.d.ts +1 -0
- package/dist/controllers/data.cjs +415 -172
- package/dist/controllers/data.cjs.map +1 -1
- package/dist/controllers/data.d.ts +149 -76
- package/dist/controllers/data.js +415 -172
- package/dist/controllers/data.js.map +1 -1
- package/dist/controllers/permissions.cjs +508 -257
- package/dist/controllers/permissions.cjs.map +1 -1
- package/dist/controllers/permissions.d.ts +1348 -25
- package/dist/controllers/permissions.js +508 -257
- package/dist/controllers/permissions.js.map +1 -1
- package/dist/controllers/protocol.cjs +15 -11
- package/dist/controllers/protocol.cjs.map +1 -1
- package/dist/controllers/protocol.d.ts +7 -35
- package/dist/controllers/protocol.js +15 -14
- package/dist/controllers/protocol.js.map +1 -1
- package/dist/controllers/schemas.cjs +69 -54
- package/dist/controllers/schemas.cjs.map +1 -1
- package/dist/controllers/schemas.d.ts +9 -36
- package/dist/controllers/schemas.js +69 -54
- package/dist/controllers/schemas.js.map +1 -1
- package/dist/controllers/server-additional.test.d.ts +1 -0
- package/dist/controllers/server.cjs +15 -10
- package/dist/controllers/server.cjs.map +1 -1
- package/dist/controllers/server.d.ts +7 -33
- package/dist/controllers/server.js +15 -10
- package/dist/controllers/server.js.map +1 -1
- package/dist/core/apiClient.cjs +15 -12
- package/dist/core/apiClient.cjs.map +1 -1
- package/dist/core/apiClient.d.ts +5 -9
- package/dist/core/apiClient.js +19 -19
- package/dist/core/apiClient.js.map +1 -1
- package/dist/core/client.cjs +7 -7
- package/dist/core/client.cjs.map +1 -1
- package/dist/core/client.d.ts +6 -9
- package/dist/core/client.js +7 -7
- package/dist/core/client.js.map +1 -1
- package/dist/core/core.test.d.ts +1 -0
- package/dist/core/generics.cjs +11 -9
- package/dist/core/generics.cjs.map +1 -1
- package/dist/core/generics.d.ts +9 -13
- package/dist/core/generics.js +22 -29
- package/dist/core/generics.js.map +1 -1
- package/dist/core/tests/apiClient.test.d.ts +1 -0
- package/dist/core/tests/client.test.d.ts +1 -0
- package/dist/core/tests/generics.test.d.ts +1 -0
- package/dist/core.cjs +114 -48
- package/dist/core.cjs.map +1 -1
- package/dist/core.d.ts +40 -65
- package/dist/core.js +127 -74
- package/dist/core.js.map +1 -1
- package/dist/crypto/ecies/__tests__/base.test.d.ts +4 -0
- package/dist/crypto/ecies/__tests__/compatibility.test.d.ts +8 -0
- package/dist/crypto/ecies/__tests__/constants.test.d.ts +4 -0
- package/dist/crypto/ecies/__tests__/native-parity.test.d.ts +7 -0
- package/dist/crypto/ecies/__tests__/normalization.test.d.ts +1 -0
- package/dist/crypto/ecies/__tests__/test-vectors.d.ts +2 -4
- package/dist/crypto/ecies/base.cjs +4 -3
- package/dist/crypto/ecies/base.cjs.map +1 -1
- package/dist/crypto/ecies/base.d.ts +2 -5
- package/dist/crypto/ecies/base.js +12 -15
- package/dist/crypto/ecies/base.js.map +1 -1
- package/dist/crypto/ecies/browser.cjs +2 -1
- package/dist/crypto/ecies/browser.cjs.map +1 -1
- package/dist/crypto/ecies/browser.d.ts +2 -7
- package/dist/crypto/ecies/browser.js +2 -1
- package/dist/crypto/ecies/browser.js.map +1 -1
- package/dist/crypto/ecies/constants.d.ts +7 -9
- package/dist/crypto/ecies/index.d.ts +8 -1
- package/dist/crypto/ecies/interface.cjs +4 -5
- package/dist/crypto/ecies/interface.cjs.map +1 -1
- package/dist/crypto/ecies/interface.d.ts +9 -11
- package/dist/crypto/ecies/interface.js +4 -5
- package/dist/crypto/ecies/interface.js.map +1 -1
- package/dist/crypto/ecies/node.cjs +3 -2
- package/dist/crypto/ecies/node.cjs.map +1 -1
- package/dist/crypto/ecies/node.d.ts +2 -7
- package/dist/crypto/ecies/node.js +11 -16
- package/dist/crypto/ecies/node.js.map +1 -1
- package/dist/crypto/ecies/test-vectors/eccrypto-vectors.json +72 -0
- package/dist/crypto/ecies/utils.cjs +2 -41
- package/dist/crypto/ecies/utils.cjs.map +1 -1
- package/dist/crypto/ecies/utils.d.ts +3 -40
- package/dist/crypto/ecies/utils.js +1 -35
- package/dist/crypto/ecies/utils.js.map +1 -1
- package/dist/crypto/services/WalletKeyEncryptionService.cjs +2 -2
- package/dist/crypto/services/WalletKeyEncryptionService.cjs.map +1 -1
- package/dist/crypto/services/WalletKeyEncryptionService.d.ts +3 -7
- package/dist/crypto/services/WalletKeyEncryptionService.js +5 -9
- package/dist/crypto/services/WalletKeyEncryptionService.js.map +1 -1
- package/dist/crypto/services/WalletKeyEncryptionService.test.d.ts +1 -0
- package/dist/diagnostics.d.ts +1 -3
- package/dist/diagnostics.test.d.ts +1 -0
- package/dist/errors.cjs +16 -0
- package/dist/errors.cjs.map +1 -1
- package/dist/errors.d.ts +53 -15
- package/dist/errors.js +18 -6
- package/dist/errors.js.map +1 -1
- package/dist/generated/abi/ComputeEngineImplementation.d.ts +2 -3
- package/dist/generated/abi/ComputeInstructionRegistryImplementation.d.ts +2 -3
- package/dist/generated/abi/DATFactoryImplementation.d.ts +2 -3
- package/dist/generated/abi/DATImplementation.d.ts +2 -3
- package/dist/generated/abi/DATPausableImplementation.d.ts +2 -3
- package/dist/generated/abi/DATVotesImplementation.d.ts +2 -3
- package/dist/generated/abi/DLPPerformanceImplementation.d.ts +2 -3
- package/dist/generated/abi/DLPRegistryImplementation.d.ts +2 -3
- package/dist/generated/abi/DLPRegistryTreasuryImplementation.d.ts +2 -3
- package/dist/generated/abi/DLPRewardDeployerImplementation.d.ts +2 -3
- package/dist/generated/abi/DLPRewardDeployerTreasuryImplementation.d.ts +2 -3
- package/dist/generated/abi/DLPRewardSwapImplementation.d.ts +2 -3
- package/dist/generated/abi/DLPRootImplementation.d.ts +1 -3
- package/dist/generated/abi/DLPTreasuryImplementation.d.ts +2 -3
- package/dist/generated/abi/DataLiquidityPoolImplementation.d.ts +1 -3
- package/dist/generated/abi/DataPortabilityGranteesImplementation.d.ts +2 -3
- package/dist/generated/abi/DataPortabilityPermissionsImplementation.d.ts +2 -3
- package/dist/generated/abi/DataPortabilityServersImplementation.d.ts +2 -3
- package/dist/generated/abi/DataRefinerRegistryImplementation.d.ts +2 -3
- package/dist/generated/abi/DataRegistryImplementation.cjs +13 -0
- package/dist/generated/abi/DataRegistryImplementation.cjs.map +1 -1
- package/dist/generated/abi/DataRegistryImplementation.d.ts +12 -3
- package/dist/generated/abi/DataRegistryImplementation.js +13 -0
- package/dist/generated/abi/DataRegistryImplementation.js.map +1 -1
- package/dist/generated/abi/QueryEngineImplementation.d.ts +2 -3
- package/dist/generated/abi/SwapHelperImplementation.d.ts +2 -3
- package/dist/generated/abi/TeePoolDedicatedGpuImplementation.d.ts +2 -3
- package/dist/generated/abi/TeePoolDedicatedStandardImplementation.d.ts +2 -3
- package/dist/generated/abi/TeePoolEphemeralStandardImplementation.d.ts +2 -3
- package/dist/generated/abi/TeePoolImplementation.d.ts +2 -3
- package/dist/generated/abi/TeePoolPersistentGpuImplementation.d.ts +2 -3
- package/dist/generated/abi/TeePoolPersistentStandardImplementation.d.ts +2 -3
- package/dist/generated/abi/TeePoolPhalaImplementation.d.ts +2 -3
- package/dist/generated/abi/VanaEpochImplementation.d.ts +2 -3
- package/dist/generated/abi/VanaPoolEntityImplementation.d.ts +2 -3
- package/dist/generated/abi/VanaPoolStakingImplementation.d.ts +2 -3
- package/dist/generated/abi/VanaPoolTreasuryImplementation.d.ts +2 -3
- package/dist/generated/abi/index.cjs +42 -0
- package/dist/generated/abi/index.cjs.map +1 -1
- package/dist/generated/abi/index.d.ts +47 -18
- package/dist/generated/abi/index.js +21 -0
- package/dist/generated/abi/index.js.map +1 -1
- package/dist/generated/event-types.cjs +17 -0
- package/dist/generated/event-types.cjs.map +1 -0
- package/dist/generated/event-types.d.ts +854 -0
- package/dist/generated/event-types.js +1 -0
- package/dist/generated/event-types.js.map +1 -0
- package/dist/generated/eventRegistry.cjs +3351 -0
- package/dist/generated/eventRegistry.cjs.map +1 -0
- package/dist/generated/eventRegistry.d.ts +14 -0
- package/dist/generated/eventRegistry.js +3326 -0
- package/dist/generated/eventRegistry.js.map +1 -0
- package/dist/generated/server/server-exports.d.ts +19 -21
- package/dist/generated/server/server.cjs.map +1 -1
- package/dist/generated/server/server.d.ts +113 -87
- package/dist/generated/subgraph.d.ts +329 -332
- package/dist/index.browser.d.ts +48 -73
- package/dist/index.browser.js +12 -0
- package/dist/index.browser.js.map +1 -1
- package/dist/index.cjs +3 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +0 -2
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/index.node.cjs +9 -0
- package/dist/index.node.cjs.map +1 -1
- package/dist/index.node.d.ts +181 -64
- package/dist/index.node.js +10 -0
- package/dist/index.node.js.map +1 -1
- package/dist/node.d.ts +4 -2
- package/dist/platform/browser-only.d.ts +5 -8
- package/dist/platform/browser-only.test.d.ts +1 -0
- package/dist/platform/browser-safe.d.ts +6 -9
- package/dist/platform/browser-safe.test.d.ts +1 -0
- package/dist/platform/browser.cjs +7 -6
- package/dist/platform/browser.cjs.map +1 -1
- package/dist/platform/browser.d.ts +3 -6
- package/dist/platform/browser.js +19 -27
- package/dist/platform/browser.js.map +1 -1
- package/dist/platform/browser.test.d.ts +1 -0
- package/dist/platform/index.d.ts +11 -5
- package/dist/platform/interface.d.ts +6 -8
- package/dist/platform/node.d.ts +3 -7
- package/dist/platform/node.js +12 -19
- package/dist/platform/node.js.map +1 -1
- package/dist/platform/ports/openpgp-port.cjs +74 -0
- package/dist/platform/ports/openpgp-port.cjs.map +1 -0
- package/dist/platform/ports/openpgp-port.d.ts +13 -0
- package/dist/platform/ports/openpgp-port.js +59 -0
- package/dist/platform/ports/openpgp-port.js.map +1 -0
- package/dist/platform/ports/pgp-port.cjs +17 -0
- package/dist/platform/ports/pgp-port.cjs.map +1 -0
- package/dist/platform/ports/pgp-port.d.ts +35 -0
- package/dist/platform/ports/pgp-port.js +1 -0
- package/dist/platform/ports/pgp-port.js.map +1 -0
- package/dist/platform/shared/error-utils.d.ts +2 -4
- package/dist/platform/shared/pgp-utils.cjs +2 -2
- package/dist/platform/shared/pgp-utils.cjs.map +1 -1
- package/dist/platform/shared/pgp-utils.d.ts +3 -5
- package/dist/platform/shared/pgp-utils.js +2 -2
- package/dist/platform/shared/pgp-utils.js.map +1 -1
- package/dist/platform/shared/stream-utils.d.ts +1 -3
- package/dist/platform/utils.d.ts +6 -10
- package/dist/platform/utils.test.d.ts +1 -0
- package/dist/platform.browser.d.ts +9 -4
- package/dist/platform.d.ts +11 -5
- package/dist/platform.node.d.ts +10 -5
- package/dist/schemas/dataSchema.schema.json +53 -0
- package/dist/schemas/grantFile.schema.json +43 -0
- package/dist/server/handler.cjs.map +1 -1
- package/dist/server/handler.d.ts +8 -203
- package/dist/server/handler.js.map +1 -1
- package/dist/storage/index.d.ts +56 -10
- package/dist/storage/manager.cjs +6 -6
- package/dist/storage/manager.cjs.map +1 -1
- package/dist/storage/manager.d.ts +2 -5
- package/dist/storage/manager.js +5 -12
- package/dist/storage/manager.js.map +1 -1
- package/dist/storage/providers/callback-storage.cjs +3 -3
- package/dist/storage/providers/callback-storage.cjs.map +1 -1
- package/dist/storage/providers/callback-storage.d.ts +3 -9
- package/dist/storage/providers/callback-storage.js +3 -3
- package/dist/storage/providers/callback-storage.js.map +1 -1
- package/dist/storage/providers/google-drive.cjs +2 -2
- package/dist/storage/providers/google-drive.cjs.map +1 -1
- package/dist/storage/providers/google-drive.d.ts +3 -7
- package/dist/storage/providers/google-drive.js +4 -7
- package/dist/storage/providers/google-drive.js.map +1 -1
- package/dist/storage/providers/google-drive.test.d.ts +1 -0
- package/dist/storage/providers/ipfs.cjs +5 -5
- package/dist/storage/providers/ipfs.cjs.map +1 -1
- package/dist/storage/providers/ipfs.d.ts +3 -6
- package/dist/storage/providers/ipfs.js +7 -10
- package/dist/storage/providers/ipfs.js.map +1 -1
- package/dist/storage/providers/pinata.cjs +6 -6
- package/dist/storage/providers/pinata.cjs.map +1 -1
- package/dist/storage/providers/pinata.d.ts +5 -8
- package/dist/storage/providers/pinata.js +8 -11
- package/dist/storage/providers/pinata.js.map +1 -1
- package/dist/storage/tests/callbackStorage.test.d.ts +1 -0
- package/dist/storage/tests/googleDriveStorage.test.d.ts +1 -0
- package/dist/storage/tests/ipfsStorage.test.d.ts +1 -0
- package/dist/storage/tests/pinataStorage.test.d.ts +1 -0
- package/dist/storage/tests/storageManager.test.d.ts +1 -0
- package/dist/tests/abi.test.d.ts +1 -0
- package/dist/tests/chains-definitions.test.d.ts +1 -0
- package/dist/tests/core-encryption.test.d.ts +1 -0
- package/dist/tests/core-extended.test.d.ts +1 -0
- package/dist/tests/core-generics-coverage.test.d.ts +1 -0
- package/dist/tests/coverage-boost.test.d.ts +1 -0
- package/dist/tests/crypto-cross-platform-compatibility.test.d.ts +1 -0
- package/dist/tests/data-addfile-permissions-schema.test.d.ts +1 -0
- package/dist/tests/data-additional-methods.test.d.ts +1 -0
- package/dist/tests/data-controller-edge-cases.test.d.ts +1 -0
- package/dist/tests/data-ipfs-gateways.test.d.ts +1 -0
- package/dist/tests/data-relayer.test.d.ts +1 -0
- package/dist/tests/data-schema-validation.test.d.ts +1 -0
- package/dist/tests/data-simple-methods.test.d.ts +1 -0
- package/dist/tests/data.test.d.ts +1 -0
- package/dist/tests/demo-integration.test.d.ts +1 -0
- package/dist/tests/demo-trusted-server-integration.test.d.ts +1 -0
- package/dist/tests/download-relayer.test.d.ts +1 -0
- package/dist/tests/dual-mode-permissions.test.d.ts +1 -0
- package/dist/tests/dual-mode-trusted-servers.test.d.ts +1 -0
- package/dist/tests/encryption-correct-implementation.test.d.ts +1 -0
- package/dist/tests/encryption-coverage.test.d.ts +1 -0
- package/dist/tests/encryption-edge-cases.test.d.ts +1 -0
- package/dist/tests/encryption-utils-updated.test.d.ts +1 -0
- package/dist/tests/errors-coverage.test.d.ts +1 -0
- package/dist/tests/errors.test.d.ts +1 -0
- package/dist/tests/factories/mockFactory.d.ts +316 -0
- package/dist/tests/fakes/FakeStorageManager.d.ts +200 -0
- package/dist/tests/fakes/FakeStorageManager.test.d.ts +1 -0
- package/dist/tests/fakes/FakeWaitForTransactionEvents.d.ts +170 -0
- package/dist/tests/fakes/FakeWaitForTransactionEvents.test.d.ts +1 -0
- package/dist/tests/fakes/fake-pgp-port.d.ts +13 -0
- package/dist/tests/grantValidation-edge-cases.test.d.ts +1 -0
- package/dist/tests/grantValidation-unreachable-branch.test.d.ts +1 -0
- package/dist/tests/helper-methods.test.d.ts +1 -0
- package/dist/tests/helpers/platformTestHelpers.d.ts +106 -0
- package/dist/tests/helpers/typedMocks.d.ts +64 -0
- package/dist/tests/index-browser.test.d.ts +1 -0
- package/dist/tests/index-node.test.d.ts +1 -0
- package/dist/tests/index.test.d.ts +1 -0
- package/dist/tests/mocks/platformAdapter.d.ts +12 -0
- package/dist/tests/new-permissions-methods.test.d.ts +1 -0
- package/dist/tests/no-buffer-browser.test.d.ts +1 -0
- package/dist/tests/permissions-grantee.test.d.ts +1 -0
- package/dist/tests/permissions-schema-validation.test.d.ts +1 -0
- package/dist/tests/permissions-server-files.test.d.ts +1 -0
- package/dist/tests/permissions-transaction-options.test.d.ts +1 -0
- package/dist/tests/permissions-trust-servers.test.d.ts +1 -0
- package/dist/tests/permissions.test.d.ts +1 -0
- package/dist/tests/personal.test.d.ts +1 -0
- package/dist/tests/platform-browser.test.d.ts +1 -0
- package/dist/tests/platform-crypto-expanded.test.d.ts +1 -0
- package/dist/tests/platform-crypto.test.d.ts +1 -0
- package/dist/tests/platform-index.test.d.ts +1 -0
- package/dist/tests/platform-node.test.d.ts +1 -0
- package/dist/tests/platform-shared-utils.test.d.ts +1 -0
- package/dist/tests/platform-updated.test.d.ts +1 -0
- package/dist/tests/protocol-additional-methods.test.d.ts +1 -0
- package/dist/tests/protocol.test.d.ts +1 -0
- package/dist/tests/read-only-mode.test.d.ts +1 -0
- package/dist/tests/schemas.test.d.ts +1 -0
- package/dist/tests/server-handler.test.d.ts +1 -0
- package/dist/tests/setup.d.ts +7 -0
- package/dist/tests/signatureFormatter.test.d.ts +1 -0
- package/dist/tests/trusted-server-queries.test.d.ts +1 -0
- package/dist/tests/typedDataConverter.test.d.ts +1 -0
- package/dist/tests/types-contracts.test.d.ts +1 -0
- package/dist/tests/types-data.test.d.ts +1 -0
- package/dist/tests/types-external-apis.test.d.ts +1 -0
- package/dist/tests/types-generics.test.d.ts +1 -0
- package/dist/tests/types-permissions.test.d.ts +1 -0
- package/dist/tests/types-upload-params.test.d.ts +1 -0
- package/dist/tests/types.test.d.ts +1 -0
- package/dist/tests/utils-formatters.test.d.ts +1 -0
- package/dist/tests/utils-grantFiles-edge-cases.test.d.ts +1 -0
- package/dist/tests/utils-grantFiles-validation.test.d.ts +1 -0
- package/dist/tests/utils-grantFiles.test.d.ts +1 -0
- package/dist/tests/utils-grantValidation-consolidated.test.d.ts +1 -0
- package/dist/tests/utils-grants.test.d.ts +1 -0
- package/dist/tests/utils-ipfs-additional.test.d.ts +1 -0
- package/dist/tests/utils-ipfs.test.d.ts +4 -0
- package/dist/tests/utils-schemaValidation.test.d.ts +1 -0
- package/dist/tests/vana.test.d.ts +1 -0
- package/dist/tests/wallet-crypto-compatibility.test.d.ts +1 -0
- package/dist/types/blockchain.cjs +17 -0
- package/dist/types/blockchain.cjs.map +1 -0
- package/dist/types/blockchain.d.ts +57 -0
- package/dist/types/blockchain.js +1 -0
- package/dist/types/blockchain.js.map +1 -0
- package/dist/types/chains-additional.test.d.ts +1 -0
- package/dist/types/chains.d.ts +6 -9
- package/dist/types/config.cjs +10 -0
- package/dist/types/config.cjs.map +1 -1
- package/dist/types/config.d.ts +161 -54
- package/dist/types/config.js +8 -0
- package/dist/types/config.js.map +1 -1
- package/dist/types/contracts.cjs.map +1 -1
- package/dist/types/contracts.d.ts +8 -11
- package/dist/types/controller-context.cjs +17 -0
- package/dist/types/controller-context.cjs.map +1 -0
- package/dist/types/controller-context.d.ts +64 -0
- package/dist/types/controller-context.js +1 -0
- package/dist/types/controller-context.js.map +1 -0
- package/dist/types/data.cjs.map +1 -1
- package/dist/types/data.d.ts +107 -39
- package/dist/types/external-apis.d.ts +10 -12
- package/dist/types/generics.d.ts +35 -38
- package/dist/types/index.cjs +5 -4
- package/dist/types/index.cjs.map +1 -1
- package/dist/types/index.d.ts +20 -34
- package/dist/types/index.js +9 -2
- package/dist/types/index.js.map +1 -1
- package/dist/types/operations.cjs +2 -2
- package/dist/types/operations.cjs.map +1 -1
- package/dist/types/operations.d.ts +32 -28
- package/dist/types/operations.js +2 -2
- package/dist/types/operations.js.map +1 -1
- package/dist/types/permissions.d.ts +55 -58
- package/dist/types/personal.cjs.map +1 -1
- package/dist/types/personal.d.ts +6 -8
- package/dist/types/relayer.d.ts +15 -18
- package/dist/types/storage.d.ts +6 -8
- package/dist/types/storage.js +2 -5
- package/dist/types/storage.js.map +1 -1
- package/dist/types/transactionResults.cjs.map +1 -1
- package/dist/types/transactionResults.d.ts +193 -25
- package/dist/types/utils.cjs.map +1 -1
- package/dist/types/utils.d.ts +26 -25
- package/dist/types.d.ts +4 -40
- package/dist/utils/__tests__/parseTransaction.test.d.ts +1 -0
- package/dist/utils/__tests__/pojo-serialization.test.d.ts +1 -0
- package/dist/utils/__tests__/signatureCache.test.d.ts +1 -0
- package/dist/utils/__tests__/transaction-edge-cases.test.d.ts +1 -0
- package/dist/utils/__tests__/transactionHelpers.test.d.ts +1 -0
- package/dist/utils/__tests__/urlResolver.test.d.ts +4 -0
- package/dist/utils/blockchain/registry.cjs +2 -2
- package/dist/utils/blockchain/registry.cjs.map +1 -1
- package/dist/utils/blockchain/registry.d.ts +6 -8
- package/dist/utils/blockchain/registry.js +2 -2
- package/dist/utils/blockchain/registry.js.map +1 -1
- package/dist/utils/blockchain/registry.test.d.ts +1 -0
- package/dist/utils/crypto-utils.cjs +0 -12
- package/dist/utils/crypto-utils.cjs.map +1 -1
- package/dist/utils/crypto-utils.d.ts +9 -27
- package/dist/utils/crypto-utils.js +0 -11
- package/dist/utils/crypto-utils.js.map +1 -1
- package/dist/utils/crypto-utils.test.d.ts +1 -0
- package/dist/utils/download.cjs +3 -3
- package/dist/utils/download.cjs.map +1 -1
- package/dist/utils/download.d.ts +13 -14
- package/dist/utils/download.js +2 -2
- package/dist/utils/download.js.map +1 -1
- package/dist/utils/encoding.cjs +1 -1
- package/dist/utils/encoding.cjs.map +1 -1
- package/dist/utils/encoding.d.ts +4 -6
- package/dist/utils/encoding.js +1 -1
- package/dist/utils/encoding.js.map +1 -1
- package/dist/utils/encoding.test.d.ts +1 -0
- package/dist/utils/encryption.cjs +16 -10
- package/dist/utils/encryption.cjs.map +1 -1
- package/dist/utils/encryption.d.ts +13 -17
- package/dist/utils/encryption.js +16 -10
- package/dist/utils/encryption.js.map +1 -1
- package/dist/utils/formatters.cjs +4 -2
- package/dist/utils/formatters.cjs.map +1 -1
- package/dist/utils/formatters.d.ts +4 -6
- package/dist/utils/formatters.js +4 -2
- package/dist/utils/formatters.js.map +1 -1
- package/dist/utils/grantFiles.cjs +7 -4
- package/dist/utils/grantFiles.cjs.map +1 -1
- package/dist/utils/grantFiles.d.ts +6 -10
- package/dist/utils/grantFiles.js +7 -4
- package/dist/utils/grantFiles.js.map +1 -1
- package/dist/utils/grantValidation.cjs +1 -1
- package/dist/utils/grantValidation.cjs.map +1 -1
- package/dist/utils/grantValidation.d.ts +14 -17
- package/dist/utils/grantValidation.js +1 -1
- package/dist/utils/grantValidation.js.map +1 -1
- package/dist/utils/grants.cjs +1 -1
- package/dist/utils/grants.cjs.map +1 -1
- package/dist/utils/grants.d.ts +10 -13
- package/dist/utils/grants.js +1 -1
- package/dist/utils/grants.js.map +1 -1
- package/dist/utils/ipfs.d.ts +8 -10
- package/dist/utils/lazy-import.cjs +4 -6
- package/dist/utils/lazy-import.cjs.map +1 -1
- package/dist/utils/lazy-import.d.ts +1 -3
- package/dist/utils/lazy-import.js +4 -6
- package/dist/utils/lazy-import.js.map +1 -1
- package/dist/utils/multicall.cjs +4 -2
- package/dist/utils/multicall.cjs.map +1 -1
- package/dist/utils/multicall.d.ts +5 -8
- package/dist/utils/multicall.js +4 -2
- package/dist/utils/multicall.js.map +1 -1
- package/dist/utils/parseTransactionPojo.cjs +87 -0
- package/dist/utils/parseTransactionPojo.cjs.map +1 -0
- package/dist/utils/parseTransactionPojo.d.ts +31 -0
- package/dist/utils/parseTransactionPojo.js +63 -0
- package/dist/utils/parseTransactionPojo.js.map +1 -0
- package/dist/utils/schemaValidation.cjs +5 -5
- package/dist/utils/schemaValidation.cjs.map +1 -1
- package/dist/utils/schemaValidation.d.ts +8 -12
- package/dist/utils/schemaValidation.js +7 -10
- package/dist/utils/schemaValidation.js.map +1 -1
- package/dist/utils/signatureCache.cjs +1 -2
- package/dist/utils/signatureCache.cjs.map +1 -1
- package/dist/utils/signatureCache.d.ts +4 -7
- package/dist/utils/signatureCache.js +4 -8
- package/dist/utils/signatureCache.js.map +1 -1
- package/dist/utils/signatureFormatter.cjs +6 -9
- package/dist/utils/signatureFormatter.cjs.map +1 -1
- package/dist/utils/signatureFormatter.d.ts +2 -5
- package/dist/utils/signatureFormatter.js +6 -9
- package/dist/utils/signatureFormatter.js.map +1 -1
- package/dist/utils/tests/multicall.test.d.ts +1 -0
- package/dist/utils/transactionHelpers.cjs +54 -0
- package/dist/utils/transactionHelpers.cjs.map +1 -0
- package/dist/utils/transactionHelpers.d.ts +80 -0
- package/dist/utils/transactionHelpers.js +29 -0
- package/dist/utils/transactionHelpers.js.map +1 -0
- package/dist/utils/typeGuards.cjs +109 -0
- package/dist/utils/typeGuards.cjs.map +1 -0
- package/dist/utils/typeGuards.d.ts +138 -0
- package/dist/utils/typeGuards.js +74 -0
- package/dist/utils/typeGuards.js.map +1 -0
- package/dist/utils/typedDataConverter.d.ts +3 -6
- package/dist/utils/urlResolver.cjs +1 -1
- package/dist/utils/urlResolver.cjs.map +1 -1
- package/dist/utils/urlResolver.d.ts +2 -4
- package/dist/utils/urlResolver.js +2 -2
- package/dist/utils/urlResolver.js.map +1 -1
- package/dist/utils/wallet.cjs +62 -0
- package/dist/utils/wallet.cjs.map +1 -0
- package/dist/utils/wallet.d.ts +32 -0
- package/dist/utils/wallet.js +36 -0
- package/dist/utils/wallet.js.map +1 -0
- package/dist/{chains.browser.cjs → utils/withEvents.cjs} +22 -15
- package/dist/utils/withEvents.cjs.map +1 -0
- package/dist/utils/withEvents.d.ts +56 -0
- package/dist/utils/withEvents.js +18 -0
- package/dist/utils/withEvents.js.map +1 -0
- package/package.json +23 -13
- package/dist/browser.d.cts +0 -2
- package/dist/chains/definitions.d.cts +0 -53
- package/dist/chains/index.d.cts +0 -2
- package/dist/chains.browser.cjs.map +0 -1
- package/dist/chains.browser.d.cts +0 -2
- package/dist/chains.d.cts +0 -2
- package/dist/chains.node.d.cts +0 -2
- package/dist/config/addresses.d.cts +0 -380
- package/dist/config/chains.d.cts +0 -85
- package/dist/config/eventMappings.cjs +0 -114
- package/dist/config/eventMappings.cjs.map +0 -1
- package/dist/config/eventMappings.d.cts +0 -108
- package/dist/config/eventMappings.d.ts +0 -108
- package/dist/config/eventMappings.js +0 -90
- package/dist/config/eventMappings.js.map +0 -1
- package/dist/config/features.d.cts +0 -64
- package/dist/contracts/contractController.d.cts +0 -96
- package/dist/controllers/data.d.cts +0 -941
- package/dist/controllers/permissions.d.cts +0 -25
- package/dist/controllers/protocol.d.cts +0 -167
- package/dist/controllers/schemas.d.cts +0 -272
- package/dist/controllers/server.d.cts +0 -243
- package/dist/core/apiClient.d.cts +0 -165
- package/dist/core/client.d.cts +0 -92
- package/dist/core/generics.d.cts +0 -120
- package/dist/core.d.cts +0 -466
- package/dist/crypto/ecies/__tests__/test-vectors.d.cts +0 -40
- package/dist/crypto/ecies/base.d.cts +0 -143
- package/dist/crypto/ecies/browser.d.cts +0 -48
- package/dist/crypto/ecies/constants.d.cts +0 -122
- package/dist/crypto/ecies/index.d.cts +0 -1
- package/dist/crypto/ecies/interface.d.cts +0 -176
- package/dist/crypto/ecies/node.d.cts +0 -50
- package/dist/crypto/ecies/utils.d.cts +0 -67
- package/dist/crypto/services/WalletKeyEncryptionService.d.cts +0 -92
- package/dist/diagnostics.d.cts +0 -26
- package/dist/errors.d.cts +0 -350
- package/dist/generated/abi/ComputeEngineImplementation.d.cts +0 -996
- package/dist/generated/abi/ComputeInstructionRegistryImplementation.d.cts +0 -545
- package/dist/generated/abi/DATFactoryImplementation.d.cts +0 -661
- package/dist/generated/abi/DATImplementation.d.cts +0 -693
- package/dist/generated/abi/DATPausableImplementation.d.cts +0 -1145
- package/dist/generated/abi/DATVotesImplementation.d.cts +0 -1095
- package/dist/generated/abi/DLPPerformanceImplementation.d.cts +0 -883
- package/dist/generated/abi/DLPRegistryImplementation.d.cts +0 -1123
- package/dist/generated/abi/DLPRegistryTreasuryImplementation.d.cts +0 -452
- package/dist/generated/abi/DLPRewardDeployerImplementation.d.cts +0 -714
- package/dist/generated/abi/DLPRewardDeployerTreasuryImplementation.d.cts +0 -452
- package/dist/generated/abi/DLPRewardSwapImplementation.d.cts +0 -706
- package/dist/generated/abi/DLPRootImplementation.d.cts +0 -1248
- package/dist/generated/abi/DLPTreasuryImplementation.d.cts +0 -452
- package/dist/generated/abi/DataLiquidityPoolImplementation.d.cts +0 -737
- package/dist/generated/abi/DataPortabilityGranteesImplementation.d.cts +0 -661
- package/dist/generated/abi/DataPortabilityPermissionsImplementation.d.cts +0 -989
- package/dist/generated/abi/DataPortabilityServersImplementation.d.cts +0 -1086
- package/dist/generated/abi/DataRefinerRegistryImplementation.d.cts +0 -737
- package/dist/generated/abi/DataRegistryImplementation.d.cts +0 -1004
- package/dist/generated/abi/QueryEngineImplementation.d.cts +0 -1001
- package/dist/generated/abi/SwapHelperImplementation.d.cts +0 -764
- package/dist/generated/abi/TeePoolDedicatedGpuImplementation.d.cts +0 -701
- package/dist/generated/abi/TeePoolDedicatedStandardImplementation.d.cts +0 -701
- package/dist/generated/abi/TeePoolEphemeralStandardImplementation.d.cts +0 -701
- package/dist/generated/abi/TeePoolImplementation.d.cts +0 -993
- package/dist/generated/abi/TeePoolPersistentGpuImplementation.d.cts +0 -701
- package/dist/generated/abi/TeePoolPersistentStandardImplementation.d.cts +0 -701
- package/dist/generated/abi/TeePoolPhalaImplementation.d.cts +0 -993
- package/dist/generated/abi/VanaEpochImplementation.d.cts +0 -900
- package/dist/generated/abi/VanaPoolEntityImplementation.d.cts +0 -934
- package/dist/generated/abi/VanaPoolStakingImplementation.d.cts +0 -693
- package/dist/generated/abi/VanaPoolTreasuryImplementation.d.cts +0 -394
- package/dist/generated/abi/index.d.cts +0 -26516
- package/dist/generated/server/server-exports.d.cts +0 -21
- package/dist/generated/server/server.d.cts +0 -512
- package/dist/generated/subgraph.d.cts +0 -5981
- package/dist/index.browser.cjs +0 -151
- package/dist/index.browser.cjs.map +0 -1
- package/dist/index.browser.d.cts +0 -177
- package/dist/index.d.cts +0 -2
- package/dist/index.node.d.cts +0 -64
- package/dist/node.d.cts +0 -2
- package/dist/permissions-DNKPu_G0.d.cts +0 -1666
- package/dist/permissions-eo8YeLGf.d.ts +0 -1666
- package/dist/platform/browser-only.d.cts +0 -25
- package/dist/platform/browser-safe.d.cts +0 -32
- package/dist/platform/browser.d.cts +0 -74
- package/dist/platform/index.d.cts +0 -5
- package/dist/platform/interface.d.cts +0 -218
- package/dist/platform/node.d.cts +0 -27
- package/dist/platform/shared/error-utils.d.cts +0 -25
- package/dist/platform/shared/pgp-utils.d.cts +0 -61
- package/dist/platform/shared/stream-utils.d.cts +0 -16
- package/dist/platform/utils.d.cts +0 -53
- package/dist/platform.browser.cjs +0 -41
- package/dist/platform.browser.cjs.map +0 -1
- package/dist/platform.browser.d.cts +0 -4
- package/dist/platform.d.cts +0 -5
- package/dist/platform.node.d.cts +0 -5
- package/dist/server/handler.d.cts +0 -282
- package/dist/storage/index.d.cts +0 -10
- package/dist/storage/manager.d.cts +0 -150
- package/dist/storage/providers/callback-storage.d.cts +0 -100
- package/dist/storage/providers/google-drive.d.cts +0 -156
- package/dist/storage/providers/ipfs.d.cts +0 -163
- package/dist/storage/providers/pinata.d.cts +0 -173
- package/dist/types/chains.d.cts +0 -34
- package/dist/types/config.d.cts +0 -726
- package/dist/types/contracts.d.cts +0 -68
- package/dist/types/data.d.cts +0 -694
- package/dist/types/eccrypto-js.d.d.cts +0 -13
- package/dist/types/eccrypto-js.d.d.ts +0 -13
- package/dist/types/external-apis.d.cts +0 -186
- package/dist/types/generics.d.cts +0 -450
- package/dist/types/index.d.cts +0 -34
- package/dist/types/operations.d.cts +0 -108
- package/dist/types/permissions.d.cts +0 -957
- package/dist/types/personal.d.cts +0 -40
- package/dist/types/relayer.d.cts +0 -284
- package/dist/types/storage.d.cts +0 -131
- package/dist/types/transactionResults.d.cts +0 -25
- package/dist/types/utils.d.cts +0 -819
- package/dist/types.d.cts +0 -66
- package/dist/utils/blockchain/registry.d.cts +0 -34
- package/dist/utils/crypto-utils.d.cts +0 -118
- package/dist/utils/download.d.cts +0 -41
- package/dist/utils/encoding.d.cts +0 -54
- package/dist/utils/encryption.d.cts +0 -275
- package/dist/utils/eventParsing.cjs +0 -111
- package/dist/utils/eventParsing.cjs.map +0 -1
- package/dist/utils/eventParsing.d.cts +0 -60
- package/dist/utils/eventParsing.d.ts +0 -60
- package/dist/utils/eventParsing.js +0 -86
- package/dist/utils/eventParsing.js.map +0 -1
- package/dist/utils/formatters.d.cts +0 -120
- package/dist/utils/grantFiles.d.cts +0 -186
- package/dist/utils/grantValidation.d.cts +0 -150
- package/dist/utils/grants.d.cts +0 -70
- package/dist/utils/ipfs.d.cts +0 -90
- package/dist/utils/lazy-import.d.cts +0 -20
- package/dist/utils/multicall.d.cts +0 -129
- package/dist/utils/schemaValidation.d.cts +0 -172
- package/dist/utils/signatureCache.d.cts +0 -134
- package/dist/utils/signatureFormatter.d.cts +0 -39
- package/dist/utils/transactionParsing.cjs +0 -84
- package/dist/utils/transactionParsing.cjs.map +0 -1
- package/dist/utils/transactionParsing.d.cts +0 -25
- package/dist/utils/transactionParsing.d.ts +0 -25
- package/dist/utils/transactionParsing.js +0 -62
- package/dist/utils/transactionParsing.js.map +0 -1
- package/dist/utils/typedDataConverter.d.cts +0 -13
- package/dist/utils/urlResolver.d.cts +0 -40
|
@@ -41,9 +41,10 @@ var import_grantValidation = require("../utils/grantValidation");
|
|
|
41
41
|
var import_signatureCache = require("../utils/signatureCache");
|
|
42
42
|
var import_signatureFormatter = require("../utils/signatureFormatter");
|
|
43
43
|
var import_typedDataConverter = require("../utils/typedDataConverter");
|
|
44
|
-
|
|
44
|
+
var import_base = require("./base");
|
|
45
|
+
class PermissionsController extends import_base.BaseController {
|
|
45
46
|
constructor(context) {
|
|
46
|
-
|
|
47
|
+
super(context);
|
|
47
48
|
}
|
|
48
49
|
/**
|
|
49
50
|
* Grants permission for an application to access user data with gasless transactions.
|
|
@@ -80,7 +81,10 @@ class PermissionsController {
|
|
|
80
81
|
* ```
|
|
81
82
|
*/
|
|
82
83
|
async grant(params) {
|
|
83
|
-
|
|
84
|
+
this.assertWallet();
|
|
85
|
+
const { typedData, signature } = await this.createAndSign(params);
|
|
86
|
+
const result = await this.submitSignedGrantWithEvents(typedData, signature);
|
|
87
|
+
return result;
|
|
84
88
|
}
|
|
85
89
|
/**
|
|
86
90
|
* Submits a permission grant transaction and returns a handle for flexible result access.
|
|
@@ -108,6 +112,7 @@ class PermissionsController {
|
|
|
108
112
|
* ```
|
|
109
113
|
*/
|
|
110
114
|
async submitPermissionGrant(params) {
|
|
115
|
+
this.assertWallet();
|
|
111
116
|
const { typedData, signature } = await this.createAndSign(params);
|
|
112
117
|
return await this.submitSignedGrant(typedData, signature);
|
|
113
118
|
}
|
|
@@ -137,13 +142,14 @@ class PermissionsController {
|
|
|
137
142
|
* ```
|
|
138
143
|
*/
|
|
139
144
|
async prepareGrant(params) {
|
|
145
|
+
this.assertWallet();
|
|
140
146
|
try {
|
|
141
147
|
const grantFile = (0, import_grantFiles.createGrantFile)(params);
|
|
142
148
|
(0, import_grantValidation.validateGrant)(grantFile);
|
|
143
149
|
return {
|
|
144
150
|
preview: grantFile,
|
|
145
151
|
confirm: async () => {
|
|
146
|
-
return await this.
|
|
152
|
+
return await this.confirmGrantInternalWithEvents(params, grantFile);
|
|
147
153
|
}
|
|
148
154
|
};
|
|
149
155
|
} catch (error) {
|
|
@@ -177,7 +183,7 @@ class PermissionsController {
|
|
|
177
183
|
*/
|
|
178
184
|
async confirmGrantInternal(params, grantFile) {
|
|
179
185
|
try {
|
|
180
|
-
let grantUrl = params
|
|
186
|
+
let { grantUrl } = params;
|
|
181
187
|
console.debug("\u{1F50D} Debug - Grant URL from params:", grantUrl);
|
|
182
188
|
if (!grantUrl) {
|
|
183
189
|
if (!this.context.relayerCallbacks?.storeGrantFile && !this.context.storageManager) {
|
|
@@ -267,10 +273,11 @@ class PermissionsController {
|
|
|
267
273
|
* ```
|
|
268
274
|
*/
|
|
269
275
|
async createAndSign(params) {
|
|
276
|
+
this.assertWallet();
|
|
270
277
|
try {
|
|
271
278
|
const grantFile = (0, import_grantFiles.createGrantFile)(params);
|
|
272
279
|
(0, import_grantValidation.validateGrant)(grantFile);
|
|
273
|
-
let grantUrl = params
|
|
280
|
+
let { grantUrl } = params;
|
|
274
281
|
console.debug("\u{1F50D} Debug - Grant URL from params:", grantUrl);
|
|
275
282
|
if (!grantUrl) {
|
|
276
283
|
if (!this.context.relayerCallbacks?.storeGrantFile && !this.context.storageManager) {
|
|
@@ -358,23 +365,26 @@ class PermissionsController {
|
|
|
358
365
|
"\u{1F50D} Debug - submitSignedGrant called with typed data:",
|
|
359
366
|
JSON.stringify(
|
|
360
367
|
typedData,
|
|
361
|
-
(
|
|
368
|
+
(_key, value) => typeof value === "bigint" ? value.toString() : value,
|
|
362
369
|
2
|
|
363
370
|
)
|
|
364
371
|
);
|
|
365
|
-
let hash;
|
|
366
372
|
if (this.context.relayerCallbacks?.submitPermissionGrant) {
|
|
367
|
-
hash = await this.context.relayerCallbacks.submitPermissionGrant(
|
|
373
|
+
const hash = await this.context.relayerCallbacks.submitPermissionGrant(
|
|
368
374
|
typedData,
|
|
369
375
|
signature
|
|
370
376
|
);
|
|
377
|
+
const account = this.context.walletClient?.account ?? this.context.userAddress;
|
|
378
|
+
const { tx } = await import("../utils/transactionHelpers");
|
|
379
|
+
return tx({
|
|
380
|
+
hash,
|
|
381
|
+
from: typeof account === "string" ? account : account.address,
|
|
382
|
+
contract: "DataPortabilityPermissions",
|
|
383
|
+
fn: "addPermission"
|
|
384
|
+
});
|
|
371
385
|
} else {
|
|
372
|
-
|
|
386
|
+
return await this.submitDirectTransaction(typedData, signature);
|
|
373
387
|
}
|
|
374
|
-
return {
|
|
375
|
-
hash,
|
|
376
|
-
from: this.context.walletClient.account?.address
|
|
377
|
-
};
|
|
378
388
|
} catch (error) {
|
|
379
389
|
if (error instanceof import_errors.RelayerError || error instanceof import_errors.NetworkError || error instanceof import_errors.UserRejectedRequestError || error instanceof import_errors.SignatureError || error instanceof import_errors.NonceError) {
|
|
380
390
|
throw error;
|
|
@@ -416,10 +426,14 @@ class PermissionsController {
|
|
|
416
426
|
trustServerInput,
|
|
417
427
|
signature
|
|
418
428
|
);
|
|
419
|
-
|
|
429
|
+
const account = this.context.userAddress;
|
|
430
|
+
const { tx } = await import("../utils/transactionHelpers");
|
|
431
|
+
return tx({
|
|
420
432
|
hash,
|
|
421
|
-
from:
|
|
422
|
-
|
|
433
|
+
from: account,
|
|
434
|
+
contract: "DataPortabilityServers",
|
|
435
|
+
fn: "trustServerWithSignature"
|
|
436
|
+
});
|
|
423
437
|
} catch (error) {
|
|
424
438
|
if (error instanceof import_errors.RelayerError || error instanceof import_errors.NetworkError || error instanceof import_errors.UserRejectedRequestError || error instanceof import_errors.SignatureError || error instanceof import_errors.NonceError) {
|
|
425
439
|
throw error;
|
|
@@ -477,10 +491,14 @@ class PermissionsController {
|
|
|
477
491
|
addAndTrustServerInput,
|
|
478
492
|
signature
|
|
479
493
|
);
|
|
480
|
-
|
|
494
|
+
const account = this.context.walletClient?.account ?? this.context.userAddress;
|
|
495
|
+
const { tx } = await import("../utils/transactionHelpers");
|
|
496
|
+
return tx({
|
|
481
497
|
hash,
|
|
482
|
-
from:
|
|
483
|
-
|
|
498
|
+
from: typeof account === "string" ? account : account.address,
|
|
499
|
+
contract: "DataPortabilityServers",
|
|
500
|
+
fn: "addAndTrustServerWithSignature"
|
|
501
|
+
});
|
|
484
502
|
} catch (error) {
|
|
485
503
|
if (error instanceof import_errors.RelayerError || error instanceof import_errors.NetworkError || error instanceof import_errors.UserRejectedRequestError || error instanceof import_errors.SignatureError || error instanceof import_errors.NonceError) {
|
|
486
504
|
throw error;
|
|
@@ -491,6 +509,72 @@ class PermissionsController {
|
|
|
491
509
|
);
|
|
492
510
|
}
|
|
493
511
|
}
|
|
512
|
+
/**
|
|
513
|
+
* Internal method to submit a signed grant and wait for events.
|
|
514
|
+
*
|
|
515
|
+
* @internal
|
|
516
|
+
* @param typedData - The EIP-712 typed data for the permission grant
|
|
517
|
+
* @param signature - The user's signature authorizing the transaction
|
|
518
|
+
* @returns Promise resolving to PermissionGrantResult with parsed events
|
|
519
|
+
*/
|
|
520
|
+
async submitSignedGrantWithEvents(typedData, signature) {
|
|
521
|
+
const txResult = await this.submitSignedGrant(typedData, signature);
|
|
522
|
+
if (!this.context.waitForTransactionEvents) {
|
|
523
|
+
throw new import_errors.BlockchainError("waitForTransactionEvents not configured");
|
|
524
|
+
}
|
|
525
|
+
const result = await this.context.waitForTransactionEvents(txResult);
|
|
526
|
+
const event = result.expectedEvents.PermissionAdded;
|
|
527
|
+
if (!event) {
|
|
528
|
+
throw new import_errors.BlockchainError(
|
|
529
|
+
"PermissionAdded event not found in transaction"
|
|
530
|
+
);
|
|
531
|
+
}
|
|
532
|
+
const receipt = await this.context.publicClient.getTransactionReceipt({
|
|
533
|
+
hash: result.hash
|
|
534
|
+
});
|
|
535
|
+
return {
|
|
536
|
+
transactionHash: result.hash,
|
|
537
|
+
blockNumber: receipt.blockNumber,
|
|
538
|
+
gasUsed: receipt.gasUsed,
|
|
539
|
+
permissionId: event.permissionId,
|
|
540
|
+
user: event.user,
|
|
541
|
+
grant: event.grant,
|
|
542
|
+
fileIds: event.fileIds
|
|
543
|
+
};
|
|
544
|
+
}
|
|
545
|
+
/**
|
|
546
|
+
* Internal method for confirm grant with events.
|
|
547
|
+
*
|
|
548
|
+
* @internal
|
|
549
|
+
* @param params - The permission grant parameters
|
|
550
|
+
* @param grantFile - The pre-created grant file object
|
|
551
|
+
* @returns Promise resolving to PermissionGrantResult with parsed events
|
|
552
|
+
*/
|
|
553
|
+
async confirmGrantInternalWithEvents(params, grantFile) {
|
|
554
|
+
const txResult = await this.confirmGrantInternal(params, grantFile);
|
|
555
|
+
if (!this.context.waitForTransactionEvents) {
|
|
556
|
+
throw new import_errors.BlockchainError("waitForTransactionEvents not configured");
|
|
557
|
+
}
|
|
558
|
+
const result = await this.context.waitForTransactionEvents(txResult);
|
|
559
|
+
const event = result.expectedEvents.PermissionAdded;
|
|
560
|
+
if (!event) {
|
|
561
|
+
throw new import_errors.BlockchainError(
|
|
562
|
+
"PermissionAdded event not found in transaction"
|
|
563
|
+
);
|
|
564
|
+
}
|
|
565
|
+
const receipt = await this.context.publicClient.getTransactionReceipt({
|
|
566
|
+
hash: result.hash
|
|
567
|
+
});
|
|
568
|
+
return {
|
|
569
|
+
transactionHash: result.hash,
|
|
570
|
+
blockNumber: receipt.blockNumber,
|
|
571
|
+
gasUsed: receipt.gasUsed,
|
|
572
|
+
permissionId: event.permissionId,
|
|
573
|
+
user: event.user,
|
|
574
|
+
grant: event.grant,
|
|
575
|
+
fileIds: event.fileIds
|
|
576
|
+
};
|
|
577
|
+
}
|
|
494
578
|
/**
|
|
495
579
|
* Submits an already-signed permission revoke transaction to the blockchain.
|
|
496
580
|
*
|
|
@@ -521,12 +605,19 @@ class PermissionsController {
|
|
|
521
605
|
signature
|
|
522
606
|
);
|
|
523
607
|
} else {
|
|
524
|
-
hash = await this.submitDirectRevokeTransaction(
|
|
608
|
+
hash = await this.submitDirectRevokeTransaction(
|
|
609
|
+
typedData,
|
|
610
|
+
signature
|
|
611
|
+
);
|
|
525
612
|
}
|
|
526
|
-
|
|
613
|
+
const account = this.context.walletClient?.account ?? this.context.userAddress;
|
|
614
|
+
const { tx } = await import("../utils/transactionHelpers");
|
|
615
|
+
return tx({
|
|
527
616
|
hash,
|
|
528
|
-
from:
|
|
529
|
-
|
|
617
|
+
from: typeof account === "string" ? account : account.address,
|
|
618
|
+
contract: "DataPortabilityPermissions",
|
|
619
|
+
fn: "revokePermissionWithSignature"
|
|
620
|
+
});
|
|
530
621
|
} catch (error) {
|
|
531
622
|
if (error instanceof import_errors.RelayerError || error instanceof import_errors.NetworkError || error instanceof import_errors.UserRejectedRequestError || error instanceof import_errors.SignatureError || error instanceof import_errors.NonceError) {
|
|
532
623
|
throw error;
|
|
@@ -567,12 +658,19 @@ class PermissionsController {
|
|
|
567
658
|
signature
|
|
568
659
|
);
|
|
569
660
|
} else {
|
|
570
|
-
hash = await this.submitSignedUntrustTransaction(
|
|
661
|
+
hash = await this.submitSignedUntrustTransaction(
|
|
662
|
+
typedData,
|
|
663
|
+
signature
|
|
664
|
+
);
|
|
571
665
|
}
|
|
572
|
-
|
|
666
|
+
const account = this.context.walletClient?.account ?? this.context.userAddress;
|
|
667
|
+
const { tx } = await import("../utils/transactionHelpers");
|
|
668
|
+
return tx({
|
|
573
669
|
hash,
|
|
574
|
-
from:
|
|
575
|
-
|
|
670
|
+
from: typeof account === "string" ? account : account.address,
|
|
671
|
+
contract: "DataPortabilityServers",
|
|
672
|
+
fn: "untrustServerWithSignature"
|
|
673
|
+
});
|
|
576
674
|
} catch (error) {
|
|
577
675
|
if (error instanceof import_errors.RelayerError || error instanceof import_errors.NetworkError || error instanceof import_errors.UserRejectedRequestError || error instanceof import_errors.SignatureError || error instanceof import_errors.NonceError) {
|
|
578
676
|
throw error;
|
|
@@ -596,7 +694,8 @@ class PermissionsController {
|
|
|
596
694
|
* @throws {BlockchainError} When contract submission fails
|
|
597
695
|
*/
|
|
598
696
|
async submitDirectTransaction(typedData, signature) {
|
|
599
|
-
|
|
697
|
+
this.assertWallet();
|
|
698
|
+
const chainId = await this.context.publicClient.getChainId();
|
|
600
699
|
const DataPortabilityPermissionsAddress = (0, import_addresses.getContractAddress)(
|
|
601
700
|
chainId,
|
|
602
701
|
"DataPortabilityPermissions"
|
|
@@ -616,18 +715,25 @@ class PermissionsController {
|
|
|
616
715
|
console.debug("\u{1F50D} Debug - Grant field value:", typedData.message.grant);
|
|
617
716
|
console.debug(
|
|
618
717
|
"\u{1F50D} Debug - Grant field length:",
|
|
619
|
-
typedData.message.grant?.length
|
|
718
|
+
typedData.message.grant?.length ?? 0
|
|
620
719
|
);
|
|
621
720
|
const formattedSignature = (0, import_signatureFormatter.formatSignatureForContract)(signature);
|
|
721
|
+
const account = this.context.walletClient?.account ?? this.context.userAddress;
|
|
622
722
|
const txHash = await this.context.walletClient.writeContract({
|
|
623
723
|
address: DataPortabilityPermissionsAddress,
|
|
624
724
|
abi: DataPortabilityPermissionsAbi,
|
|
625
725
|
functionName: "addPermission",
|
|
626
726
|
args: [permissionInput, formattedSignature],
|
|
627
|
-
account
|
|
628
|
-
chain: this.context.walletClient
|
|
727
|
+
account,
|
|
728
|
+
chain: this.context.walletClient?.chain ?? null
|
|
729
|
+
});
|
|
730
|
+
const { tx } = await import("../utils/transactionHelpers");
|
|
731
|
+
return tx({
|
|
732
|
+
hash: txHash,
|
|
733
|
+
from: typeof account === "string" ? account : account.address,
|
|
734
|
+
contract: "DataPortabilityPermissions",
|
|
735
|
+
fn: "addPermission"
|
|
629
736
|
});
|
|
630
|
-
return txHash;
|
|
631
737
|
}
|
|
632
738
|
/**
|
|
633
739
|
* Revokes a previously granted permission.
|
|
@@ -654,7 +760,27 @@ class PermissionsController {
|
|
|
654
760
|
* ```
|
|
655
761
|
*/
|
|
656
762
|
async revoke(params) {
|
|
657
|
-
|
|
763
|
+
this.assertWallet();
|
|
764
|
+
const txResult = await this.submitPermissionRevoke(params);
|
|
765
|
+
if (!this.context.waitForTransactionEvents) {
|
|
766
|
+
throw new import_errors.BlockchainError("waitForTransactionEvents not configured");
|
|
767
|
+
}
|
|
768
|
+
const result = await this.context.waitForTransactionEvents(txResult);
|
|
769
|
+
const event = result.expectedEvents.PermissionRevoked;
|
|
770
|
+
if (!event) {
|
|
771
|
+
throw new import_errors.BlockchainError(
|
|
772
|
+
"PermissionRevoked event not found in transaction"
|
|
773
|
+
);
|
|
774
|
+
}
|
|
775
|
+
const receipt = await this.context.publicClient.getTransactionReceipt({
|
|
776
|
+
hash: result.hash
|
|
777
|
+
});
|
|
778
|
+
return {
|
|
779
|
+
transactionHash: result.hash,
|
|
780
|
+
blockNumber: receipt.blockNumber,
|
|
781
|
+
gasUsed: receipt.gasUsed,
|
|
782
|
+
permissionId: event.permissionId
|
|
783
|
+
};
|
|
658
784
|
}
|
|
659
785
|
/**
|
|
660
786
|
* Submits a permission revocation transaction and returns the transaction hash immediately.
|
|
@@ -663,6 +789,7 @@ class PermissionsController {
|
|
|
663
789
|
* Use this when you want to handle transaction confirmation and event parsing separately.
|
|
664
790
|
*
|
|
665
791
|
* @param params - Parameters for revoking the permission
|
|
792
|
+
* @param options - Optional transaction options for gas parameters and timeout
|
|
666
793
|
* @returns Promise resolving to the transaction hash when successfully submitted
|
|
667
794
|
* @throws {BlockchainError} When revocation transaction fails
|
|
668
795
|
* @throws {UserRejectedRequestError} When user rejects the transaction
|
|
@@ -675,12 +802,13 @@ class PermissionsController {
|
|
|
675
802
|
* console.log(`Revocation submitted: ${txHash}`);
|
|
676
803
|
* ```
|
|
677
804
|
*/
|
|
678
|
-
async submitPermissionRevoke(params) {
|
|
805
|
+
async submitPermissionRevoke(params, options) {
|
|
806
|
+
this.assertWallet();
|
|
679
807
|
try {
|
|
680
|
-
if (!this.context.walletClient
|
|
808
|
+
if (!this.context.walletClient?.chain?.id) {
|
|
681
809
|
throw new import_errors.BlockchainError("Chain ID not available");
|
|
682
810
|
}
|
|
683
|
-
const chainId = await this.context.
|
|
811
|
+
const chainId = await this.context.publicClient.getChainId();
|
|
684
812
|
const DataPortabilityPermissionsAddress = (0, import_addresses.getContractAddress)(
|
|
685
813
|
chainId,
|
|
686
814
|
"DataPortabilityPermissions"
|
|
@@ -688,18 +816,33 @@ class PermissionsController {
|
|
|
688
816
|
const DataPortabilityPermissionsAbi = (0, import_abi.getAbi)(
|
|
689
817
|
"DataPortabilityPermissions"
|
|
690
818
|
);
|
|
819
|
+
const account = this.context.walletClient?.account ?? this.context.userAddress;
|
|
691
820
|
const txHash = await this.context.walletClient.writeContract({
|
|
692
821
|
address: DataPortabilityPermissionsAddress,
|
|
693
822
|
abi: DataPortabilityPermissionsAbi,
|
|
694
823
|
functionName: "revokePermission",
|
|
695
824
|
args: [params.permissionId],
|
|
696
|
-
account
|
|
697
|
-
chain: this.context.walletClient
|
|
825
|
+
account,
|
|
826
|
+
chain: this.context.walletClient?.chain ?? null,
|
|
827
|
+
...options?.gasLimit && { gas: options.gasLimit },
|
|
828
|
+
...options?.nonce && { nonce: options.nonce },
|
|
829
|
+
// Use EIP-1559 if available, otherwise fall back to legacy gasPrice
|
|
830
|
+
...options?.maxFeePerGas || options?.maxPriorityFeePerGas ? {
|
|
831
|
+
...options.maxFeePerGas && {
|
|
832
|
+
maxFeePerGas: options.maxFeePerGas
|
|
833
|
+
},
|
|
834
|
+
...options.maxPriorityFeePerGas && {
|
|
835
|
+
maxPriorityFeePerGas: options.maxPriorityFeePerGas
|
|
836
|
+
}
|
|
837
|
+
} : options?.gasPrice && { gasPrice: options.gasPrice }
|
|
698
838
|
});
|
|
699
|
-
|
|
839
|
+
const { tx } = await import("../utils/transactionHelpers");
|
|
840
|
+
return tx({
|
|
700
841
|
hash: txHash,
|
|
701
|
-
from:
|
|
702
|
-
|
|
842
|
+
from: typeof account === "string" ? account : account.address,
|
|
843
|
+
contract: "DataPortabilityPermissions",
|
|
844
|
+
fn: "revokePermission"
|
|
845
|
+
});
|
|
703
846
|
} catch (error) {
|
|
704
847
|
if (error instanceof Error) {
|
|
705
848
|
if (error instanceof import_errors.RelayerError || error instanceof import_errors.UserRejectedRequestError || error instanceof import_errors.SerializationError || error instanceof import_errors.SignatureError || error instanceof import_errors.NetworkError || error instanceof import_errors.NonceError) {
|
|
@@ -739,8 +882,9 @@ class PermissionsController {
|
|
|
739
882
|
* ```
|
|
740
883
|
*/
|
|
741
884
|
async submitRevokeWithSignature(params) {
|
|
885
|
+
this.assertWallet();
|
|
742
886
|
try {
|
|
743
|
-
if (!this.context.walletClient
|
|
887
|
+
if (!this.context.walletClient?.chain?.id) {
|
|
744
888
|
throw new import_errors.BlockchainError("Chain ID not available");
|
|
745
889
|
}
|
|
746
890
|
const nonce = await this.getPermissionsUserNonce();
|
|
@@ -767,12 +911,19 @@ class PermissionsController {
|
|
|
767
911
|
signature
|
|
768
912
|
);
|
|
769
913
|
} else {
|
|
770
|
-
hash = await this.submitDirectRevokeTransaction(
|
|
914
|
+
hash = await this.submitDirectRevokeTransaction(
|
|
915
|
+
typedData,
|
|
916
|
+
signature
|
|
917
|
+
);
|
|
771
918
|
}
|
|
772
|
-
|
|
919
|
+
const account = this.context.walletClient?.account ?? this.context.userAddress;
|
|
920
|
+
const { tx } = await import("../utils/transactionHelpers");
|
|
921
|
+
return tx({
|
|
773
922
|
hash,
|
|
774
|
-
from:
|
|
775
|
-
|
|
923
|
+
from: typeof account === "string" ? account : account.address,
|
|
924
|
+
contract: "DataPortabilityPermissions",
|
|
925
|
+
fn: "revokePermissionWithSignature"
|
|
926
|
+
});
|
|
776
927
|
} catch (error) {
|
|
777
928
|
throw new import_errors.PermissionError(
|
|
778
929
|
`Failed to revoke permission with signature: ${error instanceof Error ? error.message : "Unknown error"}`,
|
|
@@ -780,64 +931,6 @@ class PermissionsController {
|
|
|
780
931
|
);
|
|
781
932
|
}
|
|
782
933
|
}
|
|
783
|
-
/**
|
|
784
|
-
* @deprecated Use getPermissionsUserNonce() for permission operations or getServersUserNonce() for server operations
|
|
785
|
-
*
|
|
786
|
-
* Retrieves the user's current nonce from the DataPortabilityServers contract.
|
|
787
|
-
* This method is deprecated in favor of more specific nonce methods.
|
|
788
|
-
*
|
|
789
|
-
* The nonce is used to prevent replay attacks in signed transactions and must
|
|
790
|
-
* be incremented with each transaction to maintain security.
|
|
791
|
-
*
|
|
792
|
-
* @returns Promise resolving to the user's current nonce value as a bigint
|
|
793
|
-
* @throws {Error} When wallet account is not available
|
|
794
|
-
* @throws {Error} When chain ID is not available
|
|
795
|
-
* @throws {NonceError} When reading nonce from contract fails
|
|
796
|
-
* @private
|
|
797
|
-
* @example
|
|
798
|
-
* ```typescript
|
|
799
|
-
* // Deprecated - use specific methods instead
|
|
800
|
-
* const nonce = await this.getUserNonce();
|
|
801
|
-
*
|
|
802
|
-
* // Use these instead:
|
|
803
|
-
* const permissionsNonce = await this.getPermissionsUserNonce();
|
|
804
|
-
* const serversNonce = await this.getServersUserNonce();
|
|
805
|
-
* ```
|
|
806
|
-
*/
|
|
807
|
-
/**
|
|
808
|
-
* @deprecated Use getPermissionsUserNonce() for permission operations or getServersUserNonce() for server operations
|
|
809
|
-
*
|
|
810
|
-
* Retrieves the user's current nonce from the DataPortabilityServers contract.
|
|
811
|
-
*
|
|
812
|
-
* @remarks
|
|
813
|
-
* This method is deprecated in favor of more specific nonce methods that target
|
|
814
|
-
* the appropriate contract for the operation being performed.
|
|
815
|
-
*
|
|
816
|
-
* @returns Promise resolving to the user's current nonce as a bigint
|
|
817
|
-
* @throws {NonceError} When retrieving the nonce fails
|
|
818
|
-
*/
|
|
819
|
-
async getUserNonce() {
|
|
820
|
-
try {
|
|
821
|
-
const userAddress = await this.getUserAddress();
|
|
822
|
-
const chainId = await this.context.walletClient.getChainId();
|
|
823
|
-
const DataPortabilityServersAddress = (0, import_addresses.getContractAddress)(
|
|
824
|
-
chainId,
|
|
825
|
-
"DataPortabilityServers"
|
|
826
|
-
);
|
|
827
|
-
const DataPortabilityServersAbi = (0, import_abi.getAbi)("DataPortabilityServers");
|
|
828
|
-
const nonce = await this.context.publicClient.readContract({
|
|
829
|
-
address: DataPortabilityServersAddress,
|
|
830
|
-
abi: DataPortabilityServersAbi,
|
|
831
|
-
functionName: "userNonce",
|
|
832
|
-
args: [userAddress]
|
|
833
|
-
});
|
|
834
|
-
return nonce;
|
|
835
|
-
} catch (error) {
|
|
836
|
-
throw new import_errors.NonceError(
|
|
837
|
-
`Failed to retrieve user nonce: ${error instanceof Error ? error.message : "Unknown error"}`
|
|
838
|
-
);
|
|
839
|
-
}
|
|
840
|
-
}
|
|
841
934
|
/**
|
|
842
935
|
* Retrieves the user's current nonce from the DataPortabilityServers contract.
|
|
843
936
|
* This nonce is used for server-related operations (AddAndTrustServer, TrustServer, UntrustServer).
|
|
@@ -864,8 +957,8 @@ class PermissionsController {
|
|
|
864
957
|
*/
|
|
865
958
|
async getServersUserNonce() {
|
|
866
959
|
try {
|
|
867
|
-
const userAddress =
|
|
868
|
-
const chainId = await this.context.
|
|
960
|
+
const userAddress = this.context.userAddress;
|
|
961
|
+
const chainId = await this.context.publicClient.getChainId();
|
|
869
962
|
const DataPortabilityServersAddress = (0, import_addresses.getContractAddress)(
|
|
870
963
|
chainId,
|
|
871
964
|
"DataPortabilityServers"
|
|
@@ -910,8 +1003,8 @@ class PermissionsController {
|
|
|
910
1003
|
*/
|
|
911
1004
|
async getPermissionsUserNonce() {
|
|
912
1005
|
try {
|
|
913
|
-
const userAddress =
|
|
914
|
-
const chainId = await this.context.
|
|
1006
|
+
const userAddress = this.context.userAddress;
|
|
1007
|
+
const chainId = await this.context.publicClient.getChainId();
|
|
915
1008
|
const DataPortabilityPermissionsAddress = (0, import_addresses.getContractAddress)(
|
|
916
1009
|
chainId,
|
|
917
1010
|
"DataPortabilityPermissions"
|
|
@@ -950,7 +1043,7 @@ class PermissionsController {
|
|
|
950
1043
|
"\u{1F50D} Debug - Composing permission message with grantUrl:",
|
|
951
1044
|
params.grantUrl
|
|
952
1045
|
);
|
|
953
|
-
const chainId = await this.context.
|
|
1046
|
+
const chainId = await this.context.publicClient.getChainId();
|
|
954
1047
|
const DataPortabilityGranteesAddress = (0, import_addresses.getContractAddress)(
|
|
955
1048
|
chainId,
|
|
956
1049
|
"DataPortabilityGrantees"
|
|
@@ -1059,7 +1152,7 @@ class PermissionsController {
|
|
|
1059
1152
|
* @returns Promise resolving to the EIP-712 domain configuration
|
|
1060
1153
|
*/
|
|
1061
1154
|
async getPermissionDomain() {
|
|
1062
|
-
const chainId = await this.context.
|
|
1155
|
+
const chainId = await this.context.publicClient.getChainId();
|
|
1063
1156
|
const DataPortabilityPermissionsAddress = (0, import_addresses.getContractAddress)(
|
|
1064
1157
|
chainId,
|
|
1065
1158
|
"DataPortabilityPermissions"
|
|
@@ -1078,8 +1171,9 @@ class PermissionsController {
|
|
|
1078
1171
|
* @returns Promise resolving to the cryptographic signature
|
|
1079
1172
|
*/
|
|
1080
1173
|
async signTypedData(typedData) {
|
|
1174
|
+
this.assertWallet();
|
|
1081
1175
|
try {
|
|
1082
|
-
const walletAddress = this.context.walletClient.account?.address
|
|
1176
|
+
const walletAddress = this.context.walletClient.account?.address ?? this.context.userAddress;
|
|
1083
1177
|
return await (0, import_signatureCache.withSignatureCache)(
|
|
1084
1178
|
this.context.platform.cache,
|
|
1085
1179
|
walletAddress,
|
|
@@ -1088,9 +1182,9 @@ class PermissionsController {
|
|
|
1088
1182
|
const viemCompatibleTypedData = (0, import_typedDataConverter.toViemTypedDataDefinition)(typedData);
|
|
1089
1183
|
return await this.context.walletClient.signTypedData({
|
|
1090
1184
|
...viemCompatibleTypedData,
|
|
1091
|
-
//
|
|
1092
|
-
//
|
|
1093
|
-
account: this.context.walletClient.account
|
|
1185
|
+
// Use the account if available, otherwise use the wallet address
|
|
1186
|
+
// This follows the same pattern used throughout this file
|
|
1187
|
+
account: this.context.walletClient.account ?? walletAddress
|
|
1094
1188
|
});
|
|
1095
1189
|
}
|
|
1096
1190
|
);
|
|
@@ -1105,17 +1199,10 @@ class PermissionsController {
|
|
|
1105
1199
|
}
|
|
1106
1200
|
}
|
|
1107
1201
|
/**
|
|
1108
|
-
* Gets the user's address from the
|
|
1202
|
+
* Gets the user's address from the context.
|
|
1109
1203
|
*
|
|
1110
|
-
* @returns
|
|
1204
|
+
* @returns The user's address
|
|
1111
1205
|
*/
|
|
1112
|
-
async getUserAddress() {
|
|
1113
|
-
const addresses = await this.context.walletClient.getAddresses();
|
|
1114
|
-
if (addresses.length === 0) {
|
|
1115
|
-
throw new import_errors.BlockchainError("No addresses available in wallet client");
|
|
1116
|
-
}
|
|
1117
|
-
return addresses[0];
|
|
1118
|
-
}
|
|
1119
1206
|
/**
|
|
1120
1207
|
* Gets on-chain permission grant data without expensive off-chain resolution.
|
|
1121
1208
|
*
|
|
@@ -1154,8 +1241,8 @@ class PermissionsController {
|
|
|
1154
1241
|
async getUserPermissionGrantsOnChain(options = {}) {
|
|
1155
1242
|
const { limit = 50, subgraphUrl } = options;
|
|
1156
1243
|
try {
|
|
1157
|
-
const userAddress =
|
|
1158
|
-
const graphqlEndpoint = subgraphUrl
|
|
1244
|
+
const userAddress = this.context.userAddress;
|
|
1245
|
+
const graphqlEndpoint = subgraphUrl ?? this.context.subgraphUrl;
|
|
1159
1246
|
if (!graphqlEndpoint) {
|
|
1160
1247
|
throw new import_errors.BlockchainError(
|
|
1161
1248
|
"subgraphUrl is required. Please provide a valid subgraph endpoint or configure it in Vana constructor."
|
|
@@ -1207,7 +1294,7 @@ class PermissionsController {
|
|
|
1207
1294
|
);
|
|
1208
1295
|
}
|
|
1209
1296
|
const userData = result.data?.user;
|
|
1210
|
-
if (!userData
|
|
1297
|
+
if (!userData?.permissions?.length) {
|
|
1211
1298
|
return [];
|
|
1212
1299
|
}
|
|
1213
1300
|
const onChainGrants = userData.permissions.slice(0, limit).map(
|
|
@@ -1218,8 +1305,8 @@ class PermissionsController {
|
|
|
1218
1305
|
nonce: BigInt(permission.nonce),
|
|
1219
1306
|
startBlock: BigInt(permission.startBlock),
|
|
1220
1307
|
addedAtBlock: BigInt(permission.addedAtBlock),
|
|
1221
|
-
addedAtTimestamp: BigInt(permission.addedAtTimestamp
|
|
1222
|
-
transactionHash: permission.transactionHash
|
|
1308
|
+
addedAtTimestamp: BigInt(permission.addedAtTimestamp ?? "0"),
|
|
1309
|
+
transactionHash: permission.transactionHash ?? "",
|
|
1223
1310
|
grantor: userAddress,
|
|
1224
1311
|
grantee: permission.grantee,
|
|
1225
1312
|
active: !permission.endBlock || BigInt(permission.endBlock) === 0n
|
|
@@ -1240,26 +1327,6 @@ class PermissionsController {
|
|
|
1240
1327
|
);
|
|
1241
1328
|
}
|
|
1242
1329
|
}
|
|
1243
|
-
/**
|
|
1244
|
-
* Normalizes grant ID to hex format.
|
|
1245
|
-
* Handles conversion from permission ID (bigint/number/string) to proper hex hash format.
|
|
1246
|
-
*
|
|
1247
|
-
* @param grantId - Permission ID or grant hash in various formats
|
|
1248
|
-
* @returns Normalized hex hash
|
|
1249
|
-
*/
|
|
1250
|
-
normalizeGrantId(grantId) {
|
|
1251
|
-
if (typeof grantId === "string" && grantId.startsWith("0x") && grantId.length === 66) {
|
|
1252
|
-
return grantId;
|
|
1253
|
-
}
|
|
1254
|
-
try {
|
|
1255
|
-
const bigIntId = BigInt(grantId);
|
|
1256
|
-
return `0x${bigIntId.toString(16).padStart(64, "0")}`;
|
|
1257
|
-
} catch {
|
|
1258
|
-
throw new Error(
|
|
1259
|
-
`Invalid grant ID format: ${grantId}. Must be a permission ID (number/bigint/string) or a 32-byte hex hash.`
|
|
1260
|
-
);
|
|
1261
|
-
}
|
|
1262
|
-
}
|
|
1263
1330
|
/**
|
|
1264
1331
|
* Registers a new server and immediately trusts it in the DataPortabilityServers contract.
|
|
1265
1332
|
*
|
|
@@ -1268,7 +1335,6 @@ class PermissionsController {
|
|
|
1268
1335
|
* Trusted servers can handle data export and portability requests from the user.
|
|
1269
1336
|
*
|
|
1270
1337
|
* @param params - Parameters for adding and trusting the server
|
|
1271
|
-
* @param params.owner - Ethereum address that will own this server registration
|
|
1272
1338
|
* @param params.serverAddress - Ethereum address of the server
|
|
1273
1339
|
* @param params.serverUrl - HTTPS URL where the server can be reached
|
|
1274
1340
|
* @param params.publicKey - Server's public key for encryption (hex string)
|
|
@@ -1295,6 +1361,7 @@ class PermissionsController {
|
|
|
1295
1361
|
* ```
|
|
1296
1362
|
*/
|
|
1297
1363
|
async addAndTrustServer(params) {
|
|
1364
|
+
this.assertWallet();
|
|
1298
1365
|
try {
|
|
1299
1366
|
const chainId = await this.context.walletClient.getChainId();
|
|
1300
1367
|
const DataPortabilityServersAddress = (0, import_addresses.getContractAddress)(
|
|
@@ -1302,7 +1369,8 @@ class PermissionsController {
|
|
|
1302
1369
|
"DataPortabilityServers"
|
|
1303
1370
|
);
|
|
1304
1371
|
const DataPortabilityServersAbi = (0, import_abi.getAbi)("DataPortabilityServers");
|
|
1305
|
-
const
|
|
1372
|
+
const account = this.context.walletClient?.account ?? this.context.userAddress;
|
|
1373
|
+
const userAddress = typeof account === "string" ? account : account.address;
|
|
1306
1374
|
const normalizedUserAddress = (0, import_viem.getAddress)(userAddress);
|
|
1307
1375
|
const normalizedServerAddress = (0, import_viem.getAddress)(params.serverAddress);
|
|
1308
1376
|
const txHash = await this.context.walletClient.writeContract({
|
|
@@ -1317,12 +1385,40 @@ class PermissionsController {
|
|
|
1317
1385
|
publicKey: params.publicKey
|
|
1318
1386
|
}
|
|
1319
1387
|
],
|
|
1320
|
-
account
|
|
1321
|
-
chain: this.context.walletClient
|
|
1388
|
+
account,
|
|
1389
|
+
chain: this.context.walletClient?.chain ?? null
|
|
1322
1390
|
});
|
|
1323
|
-
|
|
1391
|
+
const { tx } = await import("../utils/transactionHelpers");
|
|
1392
|
+
const txResult = tx({
|
|
1324
1393
|
hash: txHash,
|
|
1325
|
-
from:
|
|
1394
|
+
from: userAddress,
|
|
1395
|
+
contract: "DataPortabilityServers",
|
|
1396
|
+
fn: "addAndTrustServerByManager"
|
|
1397
|
+
});
|
|
1398
|
+
if (!this.context.waitForTransactionEvents) {
|
|
1399
|
+
throw new import_errors.BlockchainError("waitForTransactionEvents not configured");
|
|
1400
|
+
}
|
|
1401
|
+
const result = await this.context.waitForTransactionEvents(txResult);
|
|
1402
|
+
const event = result.expectedEvents.ServerTrusted;
|
|
1403
|
+
if (!event) {
|
|
1404
|
+
throw new import_errors.BlockchainError(
|
|
1405
|
+
"ServerTrusted event not found in transaction"
|
|
1406
|
+
);
|
|
1407
|
+
}
|
|
1408
|
+
const receipt = await this.context.publicClient.getTransactionReceipt({
|
|
1409
|
+
hash: txHash
|
|
1410
|
+
});
|
|
1411
|
+
return {
|
|
1412
|
+
transactionHash: txHash,
|
|
1413
|
+
blockNumber: receipt.blockNumber,
|
|
1414
|
+
gasUsed: receipt.gasUsed,
|
|
1415
|
+
user: event.user,
|
|
1416
|
+
serverId: event.serverId,
|
|
1417
|
+
// bigint from event
|
|
1418
|
+
serverAddress: normalizedServerAddress,
|
|
1419
|
+
// derived from params
|
|
1420
|
+
serverUrl: params.serverUrl
|
|
1421
|
+
// provided in params
|
|
1326
1422
|
};
|
|
1327
1423
|
} catch (error) {
|
|
1328
1424
|
if (error instanceof Error && error.message.includes("rejected")) {
|
|
@@ -1342,6 +1438,7 @@ class PermissionsController {
|
|
|
1342
1438
|
* @deprecated Use addAndTrustServer instead
|
|
1343
1439
|
*/
|
|
1344
1440
|
async submitTrustServer(params) {
|
|
1441
|
+
this.assertWallet();
|
|
1345
1442
|
try {
|
|
1346
1443
|
const chainId = await this.context.walletClient.getChainId();
|
|
1347
1444
|
const DataPortabilityServersAddress = (0, import_addresses.getContractAddress)(
|
|
@@ -1349,18 +1446,22 @@ class PermissionsController {
|
|
|
1349
1446
|
"DataPortabilityServers"
|
|
1350
1447
|
);
|
|
1351
1448
|
const DataPortabilityServersAbi = (0, import_abi.getAbi)("DataPortabilityServers");
|
|
1449
|
+
const account = this.context.walletClient?.account ?? this.context.userAddress;
|
|
1352
1450
|
const txHash = await this.context.walletClient.writeContract({
|
|
1353
1451
|
address: DataPortabilityServersAddress,
|
|
1354
1452
|
abi: DataPortabilityServersAbi,
|
|
1355
1453
|
functionName: "trustServer",
|
|
1356
1454
|
args: [BigInt(params.serverId)],
|
|
1357
|
-
account
|
|
1358
|
-
chain: this.context.walletClient
|
|
1455
|
+
account,
|
|
1456
|
+
chain: this.context.walletClient?.chain ?? null
|
|
1359
1457
|
});
|
|
1360
|
-
|
|
1458
|
+
const { tx } = await import("../utils/transactionHelpers");
|
|
1459
|
+
return tx({
|
|
1361
1460
|
hash: txHash,
|
|
1362
|
-
from:
|
|
1363
|
-
|
|
1461
|
+
from: typeof account === "string" ? account : account.address,
|
|
1462
|
+
contract: "DataPortabilityServers",
|
|
1463
|
+
fn: "trustServer"
|
|
1464
|
+
});
|
|
1364
1465
|
} catch (error) {
|
|
1365
1466
|
if (error instanceof Error && error.message.includes("rejected")) {
|
|
1366
1467
|
throw new import_errors.UserRejectedRequestError();
|
|
@@ -1378,6 +1479,7 @@ class PermissionsController {
|
|
|
1378
1479
|
* @returns Promise resolving to TransactionResult with ServerTrustResult event data
|
|
1379
1480
|
*/
|
|
1380
1481
|
async submitAddAndTrustServerWithSignature(params) {
|
|
1482
|
+
this.assertWallet();
|
|
1381
1483
|
try {
|
|
1382
1484
|
const nonce = await this.getServersUserNonce();
|
|
1383
1485
|
const serverAddress = (0, import_viem.getAddress)(params.serverAddress);
|
|
@@ -1412,10 +1514,14 @@ class PermissionsController {
|
|
|
1412
1514
|
signature
|
|
1413
1515
|
);
|
|
1414
1516
|
}
|
|
1415
|
-
|
|
1517
|
+
const account = this.context.walletClient?.account ?? this.context.userAddress;
|
|
1518
|
+
const { tx } = await import("../utils/transactionHelpers");
|
|
1519
|
+
return tx({
|
|
1416
1520
|
hash,
|
|
1417
|
-
from:
|
|
1418
|
-
|
|
1521
|
+
from: typeof account === "string" ? account : account.address,
|
|
1522
|
+
contract: "DataPortabilityServers",
|
|
1523
|
+
fn: "addAndTrustServerWithSignature"
|
|
1524
|
+
});
|
|
1419
1525
|
} catch (error) {
|
|
1420
1526
|
if (error instanceof Error) {
|
|
1421
1527
|
if (error instanceof import_errors.RelayerError || error instanceof import_errors.UserRejectedRequestError || error instanceof import_errors.SerializationError || error instanceof import_errors.SignatureError || error instanceof import_errors.NetworkError || error instanceof import_errors.NonceError) {
|
|
@@ -1445,6 +1551,7 @@ class PermissionsController {
|
|
|
1445
1551
|
* @throws {BlockchainError} When trust operation fails for any other reason
|
|
1446
1552
|
*/
|
|
1447
1553
|
async submitTrustServerWithSignature(params) {
|
|
1554
|
+
this.assertWallet();
|
|
1448
1555
|
try {
|
|
1449
1556
|
const nonce = await this.getServersUserNonce();
|
|
1450
1557
|
const trustServerInput = {
|
|
@@ -1465,10 +1572,14 @@ class PermissionsController {
|
|
|
1465
1572
|
signature
|
|
1466
1573
|
);
|
|
1467
1574
|
}
|
|
1468
|
-
|
|
1575
|
+
const account = this.context.walletClient?.account ?? this.context.userAddress;
|
|
1576
|
+
const { tx } = await import("../utils/transactionHelpers");
|
|
1577
|
+
return tx({
|
|
1469
1578
|
hash,
|
|
1470
|
-
from:
|
|
1471
|
-
|
|
1579
|
+
from: typeof account === "string" ? account : account.address,
|
|
1580
|
+
contract: "DataPortabilityServers",
|
|
1581
|
+
fn: "trustServerWithSignature"
|
|
1582
|
+
});
|
|
1472
1583
|
} catch (error) {
|
|
1473
1584
|
if (error instanceof Error) {
|
|
1474
1585
|
if (error instanceof import_errors.RelayerError || error instanceof import_errors.UserRejectedRequestError || error instanceof import_errors.SerializationError || error instanceof import_errors.SignatureError || error instanceof import_errors.NetworkError || error instanceof import_errors.NonceError) {
|
|
@@ -1499,7 +1610,8 @@ class PermissionsController {
|
|
|
1499
1610
|
* @returns Promise resolving to TransactionResult for transaction tracking
|
|
1500
1611
|
* @throws {BlockchainError} When contract submission fails
|
|
1501
1612
|
*/
|
|
1502
|
-
async submitDirectUntrustTransaction(params) {
|
|
1613
|
+
async submitDirectUntrustTransaction(params, options) {
|
|
1614
|
+
this.assertWallet();
|
|
1503
1615
|
try {
|
|
1504
1616
|
const chainId = await this.context.walletClient.getChainId();
|
|
1505
1617
|
const DataPortabilityServersAddress = (0, import_addresses.getContractAddress)(
|
|
@@ -1507,18 +1619,33 @@ class PermissionsController {
|
|
|
1507
1619
|
"DataPortabilityServers"
|
|
1508
1620
|
);
|
|
1509
1621
|
const DataPortabilityServersAbi = (0, import_abi.getAbi)("DataPortabilityServers");
|
|
1622
|
+
const account = this.context.walletClient?.account ?? this.context.userAddress;
|
|
1510
1623
|
const txHash = await this.context.walletClient.writeContract({
|
|
1511
1624
|
address: DataPortabilityServersAddress,
|
|
1512
1625
|
abi: DataPortabilityServersAbi,
|
|
1513
1626
|
functionName: "untrustServer",
|
|
1514
1627
|
args: [BigInt(params.serverId)],
|
|
1515
|
-
account
|
|
1516
|
-
chain: this.context.walletClient
|
|
1628
|
+
account,
|
|
1629
|
+
chain: this.context.walletClient?.chain ?? null,
|
|
1630
|
+
...options?.gasLimit && { gas: options.gasLimit },
|
|
1631
|
+
...options?.nonce && { nonce: options.nonce },
|
|
1632
|
+
// Use EIP-1559 if available, otherwise fall back to legacy gasPrice
|
|
1633
|
+
...options?.maxFeePerGas || options?.maxPriorityFeePerGas ? {
|
|
1634
|
+
...options.maxFeePerGas && {
|
|
1635
|
+
maxFeePerGas: options.maxFeePerGas
|
|
1636
|
+
},
|
|
1637
|
+
...options.maxPriorityFeePerGas && {
|
|
1638
|
+
maxPriorityFeePerGas: options.maxPriorityFeePerGas
|
|
1639
|
+
}
|
|
1640
|
+
} : options?.gasPrice && { gasPrice: options.gasPrice }
|
|
1517
1641
|
});
|
|
1518
|
-
|
|
1642
|
+
const { tx } = await import("../utils/transactionHelpers");
|
|
1643
|
+
return tx({
|
|
1519
1644
|
hash: txHash,
|
|
1520
|
-
from:
|
|
1521
|
-
|
|
1645
|
+
from: typeof account === "string" ? account : account.address,
|
|
1646
|
+
contract: "DataPortabilityServers",
|
|
1647
|
+
fn: "untrustServer"
|
|
1648
|
+
});
|
|
1522
1649
|
} catch (error) {
|
|
1523
1650
|
if (error instanceof Error && error.message.includes("rejected")) {
|
|
1524
1651
|
throw new import_errors.UserRejectedRequestError();
|
|
@@ -1537,6 +1664,7 @@ class PermissionsController {
|
|
|
1537
1664
|
*
|
|
1538
1665
|
* @param params - Parameters for untrusting the server
|
|
1539
1666
|
* @param params.serverId - The numeric ID of the server to untrust
|
|
1667
|
+
* @param options - Optional transaction options for gas parameters and timeout
|
|
1540
1668
|
* @returns Promise resolving to transaction hash
|
|
1541
1669
|
* @throws {Error} When wallet account is not available
|
|
1542
1670
|
* @throws {NonceError} When retrieving user nonce fails
|
|
@@ -1557,13 +1685,17 @@ class PermissionsController {
|
|
|
1557
1685
|
* console.log('Still trusting servers:', trustedServers);
|
|
1558
1686
|
* ```
|
|
1559
1687
|
*/
|
|
1560
|
-
async submitUntrustServer(params) {
|
|
1688
|
+
async submitUntrustServer(params, options) {
|
|
1689
|
+
this.assertWallet();
|
|
1561
1690
|
const nonce = await this.getServersUserNonce();
|
|
1562
1691
|
const untrustServerInput = {
|
|
1563
1692
|
nonce,
|
|
1564
1693
|
serverId: params.serverId
|
|
1565
1694
|
};
|
|
1566
|
-
return await this.submitDirectUntrustTransaction(
|
|
1695
|
+
return await this.submitDirectUntrustTransaction(
|
|
1696
|
+
untrustServerInput,
|
|
1697
|
+
options
|
|
1698
|
+
);
|
|
1567
1699
|
}
|
|
1568
1700
|
/**
|
|
1569
1701
|
* Untrusts a server using a signature (gasless transaction).
|
|
@@ -1578,6 +1710,7 @@ class PermissionsController {
|
|
|
1578
1710
|
* @throws {BlockchainError} When untrust transaction fails
|
|
1579
1711
|
*/
|
|
1580
1712
|
async submitUntrustServerWithSignature(params) {
|
|
1713
|
+
this.assertWallet();
|
|
1581
1714
|
try {
|
|
1582
1715
|
const nonce = await this.getServersUserNonce();
|
|
1583
1716
|
const untrustServerInput = {
|
|
@@ -1595,10 +1728,14 @@ class PermissionsController {
|
|
|
1595
1728
|
} else {
|
|
1596
1729
|
hash = await this.submitSignedUntrustTransaction(typedData, signature);
|
|
1597
1730
|
}
|
|
1598
|
-
|
|
1731
|
+
const account = this.context.walletClient?.account ?? this.context.userAddress;
|
|
1732
|
+
const { tx } = await import("../utils/transactionHelpers");
|
|
1733
|
+
return tx({
|
|
1599
1734
|
hash,
|
|
1600
|
-
from:
|
|
1601
|
-
|
|
1735
|
+
from: typeof account === "string" ? account : account.address,
|
|
1736
|
+
contract: "DataPortabilityServers",
|
|
1737
|
+
fn: "untrustServerWithSignature"
|
|
1738
|
+
});
|
|
1602
1739
|
} catch (error) {
|
|
1603
1740
|
if (error instanceof Error) {
|
|
1604
1741
|
if (error instanceof import_errors.RelayerError || error instanceof import_errors.UserRejectedRequestError || error instanceof import_errors.SerializationError || error instanceof import_errors.SignatureError || error instanceof import_errors.NetworkError || error instanceof import_errors.NonceError) {
|
|
@@ -1636,8 +1773,8 @@ class PermissionsController {
|
|
|
1636
1773
|
*/
|
|
1637
1774
|
async getTrustedServers(userAddress) {
|
|
1638
1775
|
try {
|
|
1639
|
-
const user = userAddress
|
|
1640
|
-
const chainId = await this.context.
|
|
1776
|
+
const user = userAddress ?? this.context.userAddress;
|
|
1777
|
+
const chainId = await this.context.publicClient.getChainId();
|
|
1641
1778
|
const DataPortabilityServersAddress = (0, import_addresses.getContractAddress)(
|
|
1642
1779
|
chainId,
|
|
1643
1780
|
"DataPortabilityServers"
|
|
@@ -1666,8 +1803,8 @@ class PermissionsController {
|
|
|
1666
1803
|
*/
|
|
1667
1804
|
async getTrustedServersCount(userAddress) {
|
|
1668
1805
|
try {
|
|
1669
|
-
const user = userAddress
|
|
1670
|
-
const chainId = await this.context.
|
|
1806
|
+
const user = userAddress ?? this.context.userAddress;
|
|
1807
|
+
const chainId = await this.context.publicClient.getChainId();
|
|
1671
1808
|
const DataPortabilityServersAddress = (0, import_addresses.getContractAddress)(
|
|
1672
1809
|
chainId,
|
|
1673
1810
|
"DataPortabilityServers"
|
|
@@ -1696,10 +1833,10 @@ class PermissionsController {
|
|
|
1696
1833
|
*/
|
|
1697
1834
|
async getTrustedServersPaginated(options = {}) {
|
|
1698
1835
|
try {
|
|
1699
|
-
const user = options.userAddress
|
|
1700
|
-
const limit = options.limit
|
|
1701
|
-
const offset = options.offset
|
|
1702
|
-
const chainId = await this.context.
|
|
1836
|
+
const user = options.userAddress ?? this.context.userAddress;
|
|
1837
|
+
const limit = options.limit ?? 50;
|
|
1838
|
+
const offset = options.offset ?? 0;
|
|
1839
|
+
const chainId = await this.context.publicClient.getChainId();
|
|
1703
1840
|
const DataPortabilityServersAddress = (0, import_addresses.getContractAddress)(
|
|
1704
1841
|
chainId,
|
|
1705
1842
|
"DataPortabilityServers"
|
|
@@ -1845,7 +1982,7 @@ class PermissionsController {
|
|
|
1845
1982
|
};
|
|
1846
1983
|
}
|
|
1847
1984
|
try {
|
|
1848
|
-
const chainId = await this.context.
|
|
1985
|
+
const chainId = await this.context.publicClient.getChainId();
|
|
1849
1986
|
const DataPortabilityServersAddress = (0, import_addresses.getContractAddress)(
|
|
1850
1987
|
chainId,
|
|
1851
1988
|
"DataPortabilityServers"
|
|
@@ -1920,7 +2057,7 @@ class PermissionsController {
|
|
|
1920
2057
|
*/
|
|
1921
2058
|
async checkServerTrustStatus(serverId, userAddress) {
|
|
1922
2059
|
try {
|
|
1923
|
-
const user = userAddress
|
|
2060
|
+
const user = userAddress ?? this.context.userAddress;
|
|
1924
2061
|
const trustedServers = await this.getTrustedServers(user);
|
|
1925
2062
|
const trustIndex = trustedServers.findIndex(
|
|
1926
2063
|
(server) => server === serverId
|
|
@@ -2010,7 +2147,7 @@ class PermissionsController {
|
|
|
2010
2147
|
* @returns Promise resolving to the EIP-712 domain configuration
|
|
2011
2148
|
*/
|
|
2012
2149
|
async getServersDomain() {
|
|
2013
|
-
const chainId = await this.context.
|
|
2150
|
+
const chainId = await this.context.publicClient.getChainId();
|
|
2014
2151
|
const DataPortabilityServersAddress = (0, import_addresses.getContractAddress)(
|
|
2015
2152
|
chainId,
|
|
2016
2153
|
"DataPortabilityServers"
|
|
@@ -2030,6 +2167,7 @@ class PermissionsController {
|
|
|
2030
2167
|
* @returns Promise resolving to the transaction hash
|
|
2031
2168
|
*/
|
|
2032
2169
|
async submitAddAndTrustServerTransaction(addAndTrustServerInput, signature) {
|
|
2170
|
+
this.assertWallet();
|
|
2033
2171
|
const chainId = await this.context.walletClient.getChainId();
|
|
2034
2172
|
const DataPortabilityServersAddress = (0, import_addresses.getContractAddress)(
|
|
2035
2173
|
chainId,
|
|
@@ -2061,8 +2199,8 @@ class PermissionsController {
|
|
|
2061
2199
|
},
|
|
2062
2200
|
formattedSignature
|
|
2063
2201
|
],
|
|
2064
|
-
account: this.context.walletClient
|
|
2065
|
-
chain: this.context.walletClient
|
|
2202
|
+
account: this.context.walletClient?.account ?? this.context.userAddress,
|
|
2203
|
+
chain: this.context.walletClient?.chain ?? null
|
|
2066
2204
|
});
|
|
2067
2205
|
return txHash;
|
|
2068
2206
|
}
|
|
@@ -2074,6 +2212,7 @@ class PermissionsController {
|
|
|
2074
2212
|
* @returns Promise resolving to the transaction hash
|
|
2075
2213
|
*/
|
|
2076
2214
|
async submitTrustServerTransaction(trustServerInput, signature) {
|
|
2215
|
+
this.assertWallet();
|
|
2077
2216
|
const chainId = await this.context.walletClient.getChainId();
|
|
2078
2217
|
const DataPortabilityServersAddress = (0, import_addresses.getContractAddress)(
|
|
2079
2218
|
chainId,
|
|
@@ -2092,8 +2231,8 @@ class PermissionsController {
|
|
|
2092
2231
|
},
|
|
2093
2232
|
formattedSignature
|
|
2094
2233
|
],
|
|
2095
|
-
account: this.context.walletClient
|
|
2096
|
-
chain: this.context.walletClient
|
|
2234
|
+
account: this.context.walletClient?.account ?? this.context.userAddress,
|
|
2235
|
+
chain: this.context.walletClient?.chain ?? null
|
|
2097
2236
|
});
|
|
2098
2237
|
return txHash;
|
|
2099
2238
|
}
|
|
@@ -2105,6 +2244,7 @@ class PermissionsController {
|
|
|
2105
2244
|
* @returns Promise resolving to the transaction hash
|
|
2106
2245
|
*/
|
|
2107
2246
|
async submitDirectRevokeTransaction(typedData, signature) {
|
|
2247
|
+
this.assertWallet();
|
|
2108
2248
|
const chainId = await this.context.walletClient.getChainId();
|
|
2109
2249
|
const DataPortabilityPermissionsAddress = (0, import_addresses.getContractAddress)(
|
|
2110
2250
|
chainId,
|
|
@@ -2116,10 +2256,9 @@ class PermissionsController {
|
|
|
2116
2256
|
address: DataPortabilityPermissionsAddress,
|
|
2117
2257
|
abi: DataPortabilityPermissionsAbi,
|
|
2118
2258
|
functionName: "revokePermissionWithSignature",
|
|
2119
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
2120
2259
|
args: [typedData.message, formattedSignature],
|
|
2121
|
-
account: this.context.walletClient
|
|
2122
|
-
chain: this.context.walletClient
|
|
2260
|
+
account: this.context.walletClient?.account ?? this.context.userAddress,
|
|
2261
|
+
chain: this.context.walletClient?.chain ?? null
|
|
2123
2262
|
});
|
|
2124
2263
|
return txHash;
|
|
2125
2264
|
}
|
|
@@ -2131,6 +2270,7 @@ class PermissionsController {
|
|
|
2131
2270
|
* @returns Promise resolving to the transaction hash
|
|
2132
2271
|
*/
|
|
2133
2272
|
async submitSignedUntrustTransaction(typedData, signature) {
|
|
2273
|
+
this.assertWallet();
|
|
2134
2274
|
const chainId = await this.context.walletClient.getChainId();
|
|
2135
2275
|
const DataPortabilityServersAddress = (0, import_addresses.getContractAddress)(
|
|
2136
2276
|
chainId,
|
|
@@ -2138,14 +2278,17 @@ class PermissionsController {
|
|
|
2138
2278
|
);
|
|
2139
2279
|
const DataPortabilityServersAbi = (0, import_abi.getAbi)("DataPortabilityServers");
|
|
2140
2280
|
const formattedSignature = (0, import_signatureFormatter.formatSignatureForContract)(signature);
|
|
2281
|
+
const contractMessage = {
|
|
2282
|
+
nonce: typedData.message.nonce,
|
|
2283
|
+
serverId: BigInt(typedData.message.serverId)
|
|
2284
|
+
};
|
|
2141
2285
|
const txHash = await this.context.walletClient.writeContract({
|
|
2142
2286
|
address: DataPortabilityServersAddress,
|
|
2143
2287
|
abi: DataPortabilityServersAbi,
|
|
2144
2288
|
functionName: "untrustServerWithSignature",
|
|
2145
|
-
|
|
2146
|
-
|
|
2147
|
-
|
|
2148
|
-
chain: this.context.walletClient.chain || null
|
|
2289
|
+
args: [contractMessage, formattedSignature],
|
|
2290
|
+
account: this.context.walletClient?.account ?? this.context.userAddress,
|
|
2291
|
+
chain: this.context.walletClient?.chain ?? null
|
|
2149
2292
|
});
|
|
2150
2293
|
return txHash;
|
|
2151
2294
|
}
|
|
@@ -2162,6 +2305,7 @@ class PermissionsController {
|
|
|
2162
2305
|
* @param params.owner - The Ethereum address that will own this grantee registration
|
|
2163
2306
|
* @param params.granteeAddress - The Ethereum address of the grantee (application)
|
|
2164
2307
|
* @param params.publicKey - The public key used for data encryption/decryption (hex string)
|
|
2308
|
+
* @param options - Optional transaction options for gas parameters and timeout
|
|
2165
2309
|
* @returns Promise resolving to the transaction hash
|
|
2166
2310
|
* @throws {BlockchainError} When the grantee registration transaction fails
|
|
2167
2311
|
* @throws {UserRejectedRequestError} When user rejects the transaction
|
|
@@ -2177,7 +2321,8 @@ class PermissionsController {
|
|
|
2177
2321
|
* console.log(`Grantee registered in transaction: ${txHash}`);
|
|
2178
2322
|
* ```
|
|
2179
2323
|
*/
|
|
2180
|
-
async submitRegisterGrantee(params) {
|
|
2324
|
+
async submitRegisterGrantee(params, options) {
|
|
2325
|
+
this.assertWallet();
|
|
2181
2326
|
const chainId = await this.context.walletClient.getChainId();
|
|
2182
2327
|
const DataPortabilityGranteesAddress = (0, import_addresses.getContractAddress)(
|
|
2183
2328
|
chainId,
|
|
@@ -2186,18 +2331,31 @@ class PermissionsController {
|
|
|
2186
2331
|
const DataPortabilityGranteesAbi = (0, import_abi.getAbi)("DataPortabilityGrantees");
|
|
2187
2332
|
const ownerAddress = (0, import_viem.getAddress)(params.owner);
|
|
2188
2333
|
const granteeAddress = (0, import_viem.getAddress)(params.granteeAddress);
|
|
2334
|
+
const account = this.context.walletClient?.account ?? this.context.userAddress;
|
|
2189
2335
|
const txHash = await this.context.walletClient.writeContract({
|
|
2190
2336
|
address: DataPortabilityGranteesAddress,
|
|
2191
2337
|
abi: DataPortabilityGranteesAbi,
|
|
2192
2338
|
functionName: "registerGrantee",
|
|
2193
2339
|
args: [ownerAddress, granteeAddress, params.publicKey],
|
|
2194
|
-
account
|
|
2195
|
-
chain: this.context.walletClient
|
|
2340
|
+
account,
|
|
2341
|
+
chain: this.context.walletClient?.chain ?? null,
|
|
2342
|
+
...options?.gasLimit && { gas: options.gasLimit },
|
|
2343
|
+
...options?.nonce && { nonce: options.nonce },
|
|
2344
|
+
// Use EIP-1559 if available, otherwise fall back to legacy gasPrice
|
|
2345
|
+
...options?.maxFeePerGas || options?.maxPriorityFeePerGas ? {
|
|
2346
|
+
...options.maxFeePerGas && { maxFeePerGas: options.maxFeePerGas },
|
|
2347
|
+
...options.maxPriorityFeePerGas && {
|
|
2348
|
+
maxPriorityFeePerGas: options.maxPriorityFeePerGas
|
|
2349
|
+
}
|
|
2350
|
+
} : options?.gasPrice && { gasPrice: options.gasPrice }
|
|
2196
2351
|
});
|
|
2197
|
-
|
|
2352
|
+
const { tx } = await import("../utils/transactionHelpers");
|
|
2353
|
+
return tx({
|
|
2198
2354
|
hash: txHash,
|
|
2199
|
-
from:
|
|
2200
|
-
|
|
2355
|
+
from: typeof account === "string" ? account : account.address,
|
|
2356
|
+
contract: "DataPortabilityGrantees",
|
|
2357
|
+
fn: "registerGrantee"
|
|
2358
|
+
});
|
|
2201
2359
|
}
|
|
2202
2360
|
/**
|
|
2203
2361
|
* Registers a grantee with a signature (gasless transaction)
|
|
@@ -2215,6 +2373,7 @@ class PermissionsController {
|
|
|
2215
2373
|
* ```
|
|
2216
2374
|
*/
|
|
2217
2375
|
async submitRegisterGranteeWithSignature(params) {
|
|
2376
|
+
this.assertWallet();
|
|
2218
2377
|
const nonce = await this.getServersUserNonce();
|
|
2219
2378
|
const owner = (0, import_viem.getAddress)(params.owner);
|
|
2220
2379
|
const granteeAddress = (0, import_viem.getAddress)(params.granteeAddress);
|
|
@@ -2230,10 +2389,14 @@ class PermissionsController {
|
|
|
2230
2389
|
typedData,
|
|
2231
2390
|
signature
|
|
2232
2391
|
);
|
|
2233
|
-
|
|
2392
|
+
const account = this.context.walletClient?.account ?? this.context.userAddress;
|
|
2393
|
+
const { tx } = await import("../utils/transactionHelpers");
|
|
2394
|
+
return tx({
|
|
2234
2395
|
hash,
|
|
2235
|
-
from:
|
|
2236
|
-
|
|
2396
|
+
from: typeof account === "string" ? account : account.address,
|
|
2397
|
+
contract: "DataPortabilityGrantees",
|
|
2398
|
+
fn: "registerGrantee"
|
|
2399
|
+
});
|
|
2237
2400
|
}
|
|
2238
2401
|
/**
|
|
2239
2402
|
* Submits a signed register grantee transaction via relayer
|
|
@@ -2252,10 +2415,14 @@ class PermissionsController {
|
|
|
2252
2415
|
typedData,
|
|
2253
2416
|
signature
|
|
2254
2417
|
);
|
|
2255
|
-
|
|
2418
|
+
const account = this.context.walletClient?.account ?? this.context.userAddress;
|
|
2419
|
+
const { tx } = await import("../utils/transactionHelpers");
|
|
2420
|
+
return tx({
|
|
2256
2421
|
hash,
|
|
2257
|
-
from:
|
|
2258
|
-
|
|
2422
|
+
from: typeof account === "string" ? account : account.address,
|
|
2423
|
+
contract: "DataPortabilityGrantees",
|
|
2424
|
+
fn: "registerGrantee"
|
|
2425
|
+
});
|
|
2259
2426
|
}
|
|
2260
2427
|
/**
|
|
2261
2428
|
* Retrieves all registered grantees from the DataPortabilityGrantees contract.
|
|
@@ -2302,8 +2469,8 @@ class PermissionsController {
|
|
|
2302
2469
|
functionName: "granteesCount"
|
|
2303
2470
|
});
|
|
2304
2471
|
const total = Number(totalCount);
|
|
2305
|
-
const limit = options.limit
|
|
2306
|
-
const offset = options.offset
|
|
2472
|
+
const limit = options.limit ?? 50;
|
|
2473
|
+
const offset = options.offset ?? 0;
|
|
2307
2474
|
const grantees = [];
|
|
2308
2475
|
const endIndex = Math.min(offset + limit, total);
|
|
2309
2476
|
for (let i = offset; i < endIndex; i++) {
|
|
@@ -2451,7 +2618,7 @@ class PermissionsController {
|
|
|
2451
2618
|
* @private
|
|
2452
2619
|
*/
|
|
2453
2620
|
async buildRegisterGranteeTypedData(input) {
|
|
2454
|
-
const chainId = await this.context.
|
|
2621
|
+
const chainId = await this.context.publicClient.getChainId();
|
|
2455
2622
|
const verifyingContract = (0, import_addresses.getContractAddress)(
|
|
2456
2623
|
chainId,
|
|
2457
2624
|
"DataPortabilityGrantees"
|
|
@@ -2484,6 +2651,7 @@ class PermissionsController {
|
|
|
2484
2651
|
* @private
|
|
2485
2652
|
*/
|
|
2486
2653
|
async submitSignedRegisterGranteeTransaction(typedData, _signature) {
|
|
2654
|
+
this.assertWallet();
|
|
2487
2655
|
const chainId = await this.context.walletClient.getChainId();
|
|
2488
2656
|
const DataPortabilityGranteesAddress = (0, import_addresses.getContractAddress)(
|
|
2489
2657
|
chainId,
|
|
@@ -2499,8 +2667,8 @@ class PermissionsController {
|
|
|
2499
2667
|
typedData.message.granteeAddress,
|
|
2500
2668
|
typedData.message.publicKey
|
|
2501
2669
|
],
|
|
2502
|
-
account: this.context.walletClient
|
|
2503
|
-
chain: this.context.walletClient
|
|
2670
|
+
account: this.context.walletClient?.account ?? this.context.userAddress,
|
|
2671
|
+
chain: this.context.walletClient?.chain ?? null
|
|
2504
2672
|
});
|
|
2505
2673
|
return txHash;
|
|
2506
2674
|
}
|
|
@@ -2515,7 +2683,7 @@ class PermissionsController {
|
|
|
2515
2683
|
*/
|
|
2516
2684
|
async getUserServerIds(userAddress) {
|
|
2517
2685
|
try {
|
|
2518
|
-
const targetAddress = userAddress
|
|
2686
|
+
const targetAddress = userAddress ?? this.context.userAddress;
|
|
2519
2687
|
const chainId = await this.context.publicClient.getChainId();
|
|
2520
2688
|
const DataPortabilityServersAddress = (0, import_addresses.getContractAddress)(
|
|
2521
2689
|
chainId,
|
|
@@ -2573,7 +2741,7 @@ class PermissionsController {
|
|
|
2573
2741
|
*/
|
|
2574
2742
|
async getUserServerCount(userAddress) {
|
|
2575
2743
|
try {
|
|
2576
|
-
const targetAddress = userAddress
|
|
2744
|
+
const targetAddress = userAddress ?? this.context.userAddress;
|
|
2577
2745
|
const chainId = await this.context.publicClient.getChainId();
|
|
2578
2746
|
const DataPortabilityServersAddress = (0, import_addresses.getContractAddress)(
|
|
2579
2747
|
chainId,
|
|
@@ -2602,7 +2770,7 @@ class PermissionsController {
|
|
|
2602
2770
|
*/
|
|
2603
2771
|
async getUserTrustedServers(userAddress) {
|
|
2604
2772
|
try {
|
|
2605
|
-
const targetAddress = userAddress
|
|
2773
|
+
const targetAddress = userAddress ?? this.context.userAddress;
|
|
2606
2774
|
const chainId = await this.context.publicClient.getChainId();
|
|
2607
2775
|
const DataPortabilityServersAddress = (0, import_addresses.getContractAddress)(
|
|
2608
2776
|
chainId,
|
|
@@ -2719,7 +2887,7 @@ class PermissionsController {
|
|
|
2719
2887
|
*/
|
|
2720
2888
|
async getUserPermissionIds(userAddress) {
|
|
2721
2889
|
try {
|
|
2722
|
-
const targetAddress = userAddress
|
|
2890
|
+
const targetAddress = userAddress ?? this.context.userAddress;
|
|
2723
2891
|
const chainId = await this.context.publicClient.getChainId();
|
|
2724
2892
|
const DataPortabilityPermissionsAddress = (0, import_addresses.getContractAddress)(
|
|
2725
2893
|
chainId,
|
|
@@ -2781,7 +2949,7 @@ class PermissionsController {
|
|
|
2781
2949
|
*/
|
|
2782
2950
|
async getUserPermissionCount(userAddress) {
|
|
2783
2951
|
try {
|
|
2784
|
-
const targetAddress = userAddress
|
|
2952
|
+
const targetAddress = userAddress ?? this.context.userAddress;
|
|
2785
2953
|
const chainId = await this.context.publicClient.getChainId();
|
|
2786
2954
|
const DataPortabilityPermissionsAddress = (0, import_addresses.getContractAddress)(
|
|
2787
2955
|
chainId,
|
|
@@ -3223,9 +3391,11 @@ class PermissionsController {
|
|
|
3223
3391
|
*
|
|
3224
3392
|
* @param serverId - Server ID to update
|
|
3225
3393
|
* @param url - New URL for the server
|
|
3394
|
+
* @param options - Optional transaction options for gas parameters and timeout
|
|
3226
3395
|
* @returns Promise resolving to transaction hash
|
|
3227
3396
|
*/
|
|
3228
|
-
async submitUpdateServer(serverId, url) {
|
|
3397
|
+
async submitUpdateServer(serverId, url, options) {
|
|
3398
|
+
this.assertWallet();
|
|
3229
3399
|
try {
|
|
3230
3400
|
const chainId = await this.context.walletClient.getChainId();
|
|
3231
3401
|
const DataPortabilityServersAddress = (0, import_addresses.getContractAddress)(
|
|
@@ -3233,18 +3403,33 @@ class PermissionsController {
|
|
|
3233
3403
|
"DataPortabilityServers"
|
|
3234
3404
|
);
|
|
3235
3405
|
const DataPortabilityServersAbi = (0, import_abi.getAbi)("DataPortabilityServers");
|
|
3406
|
+
const account = this.context.walletClient?.account ?? this.context.userAddress;
|
|
3236
3407
|
const hash = await this.context.walletClient.writeContract({
|
|
3237
3408
|
address: DataPortabilityServersAddress,
|
|
3238
3409
|
abi: DataPortabilityServersAbi,
|
|
3239
3410
|
functionName: "updateServer",
|
|
3240
3411
|
args: [serverId, url],
|
|
3241
|
-
chain: this.context.walletClient
|
|
3242
|
-
account
|
|
3412
|
+
chain: this.context.walletClient?.chain,
|
|
3413
|
+
account,
|
|
3414
|
+
...options?.gasLimit && { gas: options.gasLimit },
|
|
3415
|
+
...options?.nonce && { nonce: options.nonce },
|
|
3416
|
+
// Use EIP-1559 if available, otherwise fall back to legacy gasPrice
|
|
3417
|
+
...options?.maxFeePerGas || options?.maxPriorityFeePerGas ? {
|
|
3418
|
+
...options.maxFeePerGas && {
|
|
3419
|
+
maxFeePerGas: options.maxFeePerGas
|
|
3420
|
+
},
|
|
3421
|
+
...options.maxPriorityFeePerGas && {
|
|
3422
|
+
maxPriorityFeePerGas: options.maxPriorityFeePerGas
|
|
3423
|
+
}
|
|
3424
|
+
} : options?.gasPrice && { gasPrice: options.gasPrice }
|
|
3243
3425
|
});
|
|
3244
|
-
|
|
3426
|
+
const { tx } = await import("../utils/transactionHelpers");
|
|
3427
|
+
return tx({
|
|
3245
3428
|
hash,
|
|
3246
|
-
from:
|
|
3247
|
-
|
|
3429
|
+
from: typeof account === "string" ? account : account.address,
|
|
3430
|
+
contract: "DataPortabilityServers",
|
|
3431
|
+
fn: "updateServer"
|
|
3432
|
+
});
|
|
3248
3433
|
} catch (error) {
|
|
3249
3434
|
throw new import_errors.BlockchainError(
|
|
3250
3435
|
`Failed to update server: ${error instanceof Error ? error.message : "Unknown error"}`,
|
|
@@ -3394,6 +3579,7 @@ class PermissionsController {
|
|
|
3394
3579
|
* @throws {NetworkError} When network communication fails
|
|
3395
3580
|
*/
|
|
3396
3581
|
async submitAddPermission(params) {
|
|
3582
|
+
this.assertWallet();
|
|
3397
3583
|
try {
|
|
3398
3584
|
const nonce = await this.getPermissionsUserNonce();
|
|
3399
3585
|
const addPermissionInput = {
|
|
@@ -3432,6 +3618,7 @@ class PermissionsController {
|
|
|
3432
3618
|
* @throws {NetworkError} When network communication fails
|
|
3433
3619
|
*/
|
|
3434
3620
|
async submitSignedAddPermission(typedData, signature) {
|
|
3621
|
+
this.assertWallet();
|
|
3435
3622
|
try {
|
|
3436
3623
|
let hash;
|
|
3437
3624
|
if (this.context.relayerCallbacks?.submitAddPermission) {
|
|
@@ -3445,10 +3632,14 @@ class PermissionsController {
|
|
|
3445
3632
|
signature
|
|
3446
3633
|
);
|
|
3447
3634
|
}
|
|
3448
|
-
|
|
3635
|
+
const account = this.context.walletClient?.account ?? this.context.userAddress;
|
|
3636
|
+
const { tx } = await import("../utils/transactionHelpers");
|
|
3637
|
+
return tx({
|
|
3449
3638
|
hash,
|
|
3450
|
-
from:
|
|
3451
|
-
|
|
3639
|
+
from: typeof account === "string" ? account : account.address,
|
|
3640
|
+
contract: "DataPortabilityPermissions",
|
|
3641
|
+
fn: "addPermission"
|
|
3642
|
+
});
|
|
3452
3643
|
} catch (error) {
|
|
3453
3644
|
if (error instanceof import_errors.RelayerError || error instanceof import_errors.NetworkError || error instanceof import_errors.UserRejectedRequestError || error instanceof import_errors.SignatureError || error instanceof import_errors.NonceError) {
|
|
3454
3645
|
throw error;
|
|
@@ -3477,8 +3668,11 @@ class PermissionsController {
|
|
|
3477
3668
|
* @param params.serverAddress - Server wallet address for decryption permissions
|
|
3478
3669
|
* @param params.serverUrl - Server endpoint URL
|
|
3479
3670
|
* @param params.serverPublicKey - Server's public key for encryption.
|
|
3480
|
-
* Obtain via `vana.server.getIdentity(userAddress).
|
|
3671
|
+
* Obtain via `vana.server.getIdentity(userAddress).publicKey`.
|
|
3481
3672
|
* @param params.filePermissions - Nested array of permissions for each file
|
|
3673
|
+
* @param options - Optional transaction options for gas parameters and timeout.
|
|
3674
|
+
* Note: These options are only applied for direct blockchain transactions.
|
|
3675
|
+
* When using relayer callbacks (gasless transactions), these options are ignored.
|
|
3482
3676
|
* @returns TransactionResult with immediate hash access and optional event data
|
|
3483
3677
|
* @throws {Error} When schemaIds array length doesn't match fileUrls array length
|
|
3484
3678
|
* @throws {SchemaValidationError} When file data doesn't match the specified schema.
|
|
@@ -3492,6 +3686,7 @@ class PermissionsController {
|
|
|
3492
3686
|
*
|
|
3493
3687
|
* @example
|
|
3494
3688
|
* ```typescript
|
|
3689
|
+
* // Submit with custom gas parameters and timeout
|
|
3495
3690
|
* const result = await vana.permissions.submitAddServerFilesAndPermissions({
|
|
3496
3691
|
* granteeId: BigInt(1),
|
|
3497
3692
|
* grant: "ipfs://QmXxx...",
|
|
@@ -3499,17 +3694,25 @@ class PermissionsController {
|
|
|
3499
3694
|
* schemaIds: [123], // LinkedIn profile schema ID
|
|
3500
3695
|
* serverAddress: "0x742d35Cc6634C0532925a3b844Bc9e7595f0b0Bb",
|
|
3501
3696
|
* serverUrl: "https://server.example.com",
|
|
3502
|
-
* serverPublicKey: serverInfo.
|
|
3697
|
+
* serverPublicKey: serverInfo.publicKey,
|
|
3503
3698
|
* filePermissions: [[{
|
|
3504
3699
|
* account: "0x742d35Cc6634C0532925a3b844Bc9e7595f0b0Bb",
|
|
3505
3700
|
* key: encryptedKey
|
|
3506
3701
|
* }]]
|
|
3702
|
+
* }, {
|
|
3703
|
+
* maxFeePerGas: 100n * 10n ** 9n, // 100 gwei
|
|
3704
|
+
* maxPriorityFeePerGas: 2n * 10n ** 9n, // 2 gwei tip
|
|
3507
3705
|
* });
|
|
3508
|
-
*
|
|
3509
|
-
*
|
|
3706
|
+
*
|
|
3707
|
+
* // Wait for confirmation with custom timeout
|
|
3708
|
+
* const receipt = await vana.waitForTransactionReceipt(result, {
|
|
3709
|
+
* timeout: 180000 // 3 minutes
|
|
3710
|
+
* });
|
|
3711
|
+
* console.log(`Transaction confirmed: ${receipt.transactionHash}`);
|
|
3510
3712
|
* ```
|
|
3511
3713
|
*/
|
|
3512
|
-
async submitAddServerFilesAndPermissions(params) {
|
|
3714
|
+
async submitAddServerFilesAndPermissions(params, options) {
|
|
3715
|
+
this.assertWallet();
|
|
3513
3716
|
try {
|
|
3514
3717
|
if (params.schemaIds.length !== params.fileUrls.length) {
|
|
3515
3718
|
throw new Error(
|
|
@@ -3534,7 +3737,8 @@ class PermissionsController {
|
|
|
3534
3737
|
const signature = await this.signTypedData(typedData);
|
|
3535
3738
|
return await this.submitSignedAddServerFilesAndPermissions(
|
|
3536
3739
|
typedData,
|
|
3537
|
-
signature
|
|
3740
|
+
signature,
|
|
3741
|
+
options
|
|
3538
3742
|
);
|
|
3539
3743
|
} catch (error) {
|
|
3540
3744
|
if (error instanceof import_errors.RelayerError || error instanceof import_errors.UserRejectedRequestError || error instanceof import_errors.SerializationError || error instanceof import_errors.SignatureError || error instanceof import_errors.NetworkError || error instanceof import_errors.NonceError) {
|
|
@@ -3555,6 +3759,9 @@ class PermissionsController {
|
|
|
3555
3759
|
*
|
|
3556
3760
|
* @param typedData - The EIP-712 typed data for AddServerFilesAndPermissions
|
|
3557
3761
|
* @param signature - The user's signature
|
|
3762
|
+
* @param options - Optional transaction options for gas parameters and timeout.
|
|
3763
|
+
* Note: These options are only applied for direct blockchain transactions.
|
|
3764
|
+
* When using relayer callbacks (gasless transactions), these options are ignored.
|
|
3558
3765
|
* @returns TransactionResult with immediate hash access and optional event data
|
|
3559
3766
|
* @throws {RelayerError} When gasless transaction submission fails
|
|
3560
3767
|
* @throws {BlockchainError} When server files and permissions addition fails
|
|
@@ -3573,7 +3780,8 @@ class PermissionsController {
|
|
|
3573
3780
|
* console.log(`Permission created with ID: ${permissionId}`);
|
|
3574
3781
|
* ```
|
|
3575
3782
|
*/
|
|
3576
|
-
async submitSignedAddServerFilesAndPermissions(typedData, signature) {
|
|
3783
|
+
async submitSignedAddServerFilesAndPermissions(typedData, signature, options) {
|
|
3784
|
+
this.assertWallet();
|
|
3577
3785
|
try {
|
|
3578
3786
|
console.debug("\u{1F50D} submitSignedAddServerFilesAndPermissions Debug Info:", {
|
|
3579
3787
|
hasRelayerCallbacks: !!this.context.relayerCallbacks,
|
|
@@ -3588,22 +3796,31 @@ class PermissionsController {
|
|
|
3588
3796
|
typedData,
|
|
3589
3797
|
signature
|
|
3590
3798
|
);
|
|
3591
|
-
|
|
3799
|
+
const account = this.context.walletClient?.account ?? this.context.userAddress;
|
|
3800
|
+
const { tx } = await import("../utils/transactionHelpers");
|
|
3801
|
+
return tx({
|
|
3592
3802
|
hash,
|
|
3593
|
-
from:
|
|
3594
|
-
|
|
3803
|
+
from: typeof account === "string" ? account : account.address,
|
|
3804
|
+
contract: "DataPortabilityPermissions",
|
|
3805
|
+
fn: "addServerFilesAndPermissions"
|
|
3806
|
+
});
|
|
3595
3807
|
} else {
|
|
3596
3808
|
console.debug(
|
|
3597
3809
|
"\u{1F4DD} Using direct transaction for submitAddServerFilesAndPermissions"
|
|
3598
3810
|
);
|
|
3599
3811
|
const hash = await this.submitDirectAddServerFilesAndPermissionsTransaction(
|
|
3600
3812
|
typedData,
|
|
3601
|
-
signature
|
|
3813
|
+
signature,
|
|
3814
|
+
options
|
|
3602
3815
|
);
|
|
3603
|
-
|
|
3816
|
+
const account = this.context.userAddress;
|
|
3817
|
+
const { tx } = await import("../utils/transactionHelpers");
|
|
3818
|
+
return tx({
|
|
3604
3819
|
hash,
|
|
3605
|
-
from:
|
|
3606
|
-
|
|
3820
|
+
from: account,
|
|
3821
|
+
contract: "DataPortabilityPermissions",
|
|
3822
|
+
fn: "addServerFilesAndPermissions"
|
|
3823
|
+
});
|
|
3607
3824
|
}
|
|
3608
3825
|
} catch (error) {
|
|
3609
3826
|
if (error instanceof import_errors.RelayerError || error instanceof import_errors.NetworkError || error instanceof import_errors.UserRejectedRequestError || error instanceof import_errors.SignatureError || error instanceof import_errors.NonceError) {
|
|
@@ -3619,9 +3836,11 @@ class PermissionsController {
|
|
|
3619
3836
|
* Submit permission revocation with signature to the blockchain
|
|
3620
3837
|
*
|
|
3621
3838
|
* @param permissionId - Permission ID to revoke
|
|
3839
|
+
* @param options - Optional transaction options for gas parameters and timeout
|
|
3622
3840
|
* @returns Promise resolving to transaction hash
|
|
3623
3841
|
*/
|
|
3624
|
-
async submitRevokePermission(permissionId) {
|
|
3842
|
+
async submitRevokePermission(permissionId, options) {
|
|
3843
|
+
this.assertWallet();
|
|
3625
3844
|
try {
|
|
3626
3845
|
const chainId = await this.context.walletClient.getChainId();
|
|
3627
3846
|
const DataPortabilityPermissionsAddress = (0, import_addresses.getContractAddress)(
|
|
@@ -3631,18 +3850,36 @@ class PermissionsController {
|
|
|
3631
3850
|
const DataPortabilityPermissionsAbi = (0, import_abi.getAbi)(
|
|
3632
3851
|
"DataPortabilityPermissions"
|
|
3633
3852
|
);
|
|
3853
|
+
const { account } = this.context.walletClient;
|
|
3854
|
+
if (!account) {
|
|
3855
|
+
throw new Error("No wallet account connected");
|
|
3856
|
+
}
|
|
3634
3857
|
const hash = await this.context.walletClient.writeContract({
|
|
3635
3858
|
address: DataPortabilityPermissionsAddress,
|
|
3636
3859
|
abi: DataPortabilityPermissionsAbi,
|
|
3637
3860
|
functionName: "revokePermission",
|
|
3638
3861
|
args: [permissionId],
|
|
3639
|
-
chain: this.context.walletClient
|
|
3640
|
-
account
|
|
3862
|
+
chain: this.context.walletClient?.chain,
|
|
3863
|
+
account,
|
|
3864
|
+
...options?.gasLimit && { gas: options.gasLimit },
|
|
3865
|
+
...options?.nonce && { nonce: options.nonce },
|
|
3866
|
+
// Use EIP-1559 if available, otherwise fall back to legacy gasPrice
|
|
3867
|
+
...options?.maxFeePerGas || options?.maxPriorityFeePerGas ? {
|
|
3868
|
+
...options.maxFeePerGas && {
|
|
3869
|
+
maxFeePerGas: options.maxFeePerGas
|
|
3870
|
+
},
|
|
3871
|
+
...options.maxPriorityFeePerGas && {
|
|
3872
|
+
maxPriorityFeePerGas: options.maxPriorityFeePerGas
|
|
3873
|
+
}
|
|
3874
|
+
} : options?.gasPrice && { gasPrice: options.gasPrice }
|
|
3641
3875
|
});
|
|
3642
|
-
|
|
3876
|
+
const { tx } = await import("../utils/transactionHelpers");
|
|
3877
|
+
return tx({
|
|
3643
3878
|
hash,
|
|
3644
|
-
from:
|
|
3645
|
-
|
|
3879
|
+
from: typeof account === "string" ? account : account.address,
|
|
3880
|
+
contract: "DataPortabilityPermissions",
|
|
3881
|
+
fn: "revokePermission"
|
|
3882
|
+
});
|
|
3646
3883
|
} catch (error) {
|
|
3647
3884
|
throw new import_errors.BlockchainError(
|
|
3648
3885
|
`Failed to revoke permission: ${error instanceof Error ? error.message : "Unknown error"}`,
|
|
@@ -3658,6 +3895,7 @@ class PermissionsController {
|
|
|
3658
3895
|
* @returns Promise resolving to the transaction hash
|
|
3659
3896
|
*/
|
|
3660
3897
|
async submitDirectAddPermissionTransaction(typedData, signature) {
|
|
3898
|
+
this.assertWallet();
|
|
3661
3899
|
const chainId = await this.context.walletClient.getChainId();
|
|
3662
3900
|
const DataPortabilityPermissionsAddress = (0, import_addresses.getContractAddress)(
|
|
3663
3901
|
chainId,
|
|
@@ -3668,7 +3906,7 @@ class PermissionsController {
|
|
|
3668
3906
|
nonce: typedData.message.nonce,
|
|
3669
3907
|
granteeId: typedData.message.granteeId,
|
|
3670
3908
|
grant: typedData.message.grant,
|
|
3671
|
-
fileIds: typedData.message.fileIds
|
|
3909
|
+
fileIds: typedData.message.fileIds ?? []
|
|
3672
3910
|
};
|
|
3673
3911
|
const formattedSignature = (0, import_signatureFormatter.formatSignatureForContract)(signature);
|
|
3674
3912
|
const hash = await this.context.walletClient.writeContract({
|
|
@@ -3676,8 +3914,8 @@ class PermissionsController {
|
|
|
3676
3914
|
abi: DataPortabilityPermissionsAbi,
|
|
3677
3915
|
functionName: "addPermission",
|
|
3678
3916
|
args: [permissionInput, formattedSignature],
|
|
3679
|
-
account: this.context.walletClient
|
|
3680
|
-
chain: this.context.walletClient
|
|
3917
|
+
account: this.context.walletClient?.account ?? this.context.userAddress,
|
|
3918
|
+
chain: this.context.walletClient?.chain ?? null
|
|
3681
3919
|
});
|
|
3682
3920
|
return hash;
|
|
3683
3921
|
}
|
|
@@ -3688,8 +3926,9 @@ class PermissionsController {
|
|
|
3688
3926
|
* @param signature - The cryptographic signature authorizing the transaction
|
|
3689
3927
|
* @returns Promise resolving to the transaction hash
|
|
3690
3928
|
*/
|
|
3691
|
-
async submitDirectAddServerFilesAndPermissionsTransaction(typedData, signature) {
|
|
3692
|
-
|
|
3929
|
+
async submitDirectAddServerFilesAndPermissionsTransaction(typedData, signature, options) {
|
|
3930
|
+
this.assertWallet();
|
|
3931
|
+
const chainId = await this.context.publicClient.getChainId();
|
|
3693
3932
|
const DataPortabilityPermissionsAddress = (0, import_addresses.getContractAddress)(
|
|
3694
3933
|
chainId,
|
|
3695
3934
|
"DataPortabilityPermissions"
|
|
@@ -3713,8 +3952,20 @@ class PermissionsController {
|
|
|
3713
3952
|
functionName: "addServerFilesAndPermissions",
|
|
3714
3953
|
// @ts-expect-error - Viem's type inference for nested Permission[][] arrays is incompatible with our Permission type
|
|
3715
3954
|
args: [serverFilesAndPermissionInput, formattedSignature],
|
|
3716
|
-
account: this.context.walletClient
|
|
3717
|
-
chain: this.context.walletClient
|
|
3955
|
+
account: this.context.walletClient?.account ?? this.context.userAddress,
|
|
3956
|
+
chain: this.context.walletClient?.chain ?? null,
|
|
3957
|
+
...options?.gasLimit && { gas: options.gasLimit },
|
|
3958
|
+
...options?.nonce && { nonce: options.nonce },
|
|
3959
|
+
...options?.value && { value: options.value },
|
|
3960
|
+
// Use EIP-1559 if available, otherwise fall back to legacy gasPrice
|
|
3961
|
+
...options?.maxFeePerGas || options?.maxPriorityFeePerGas ? {
|
|
3962
|
+
...options.maxFeePerGas && {
|
|
3963
|
+
maxFeePerGas: options.maxFeePerGas
|
|
3964
|
+
},
|
|
3965
|
+
...options.maxPriorityFeePerGas && {
|
|
3966
|
+
maxPriorityFeePerGas: options.maxPriorityFeePerGas
|
|
3967
|
+
}
|
|
3968
|
+
} : options?.gasPrice && { gasPrice: options.gasPrice }
|
|
3718
3969
|
});
|
|
3719
3970
|
return hash;
|
|
3720
3971
|
}
|