@opendatalabs/vana-sdk 0.1.0-alpha.eebb656 → 0.1.0-alpha.ef15099
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +67 -351
- package/dist/browser.cjs.map +1 -1
- package/dist/browser.d.ts +33 -1
- package/dist/browser.js.map +1 -1
- package/dist/chains/definitions.cjs +9 -6
- package/dist/chains/definitions.cjs.map +1 -1
- package/dist/chains/definitions.d.ts +2 -0
- package/dist/chains/definitions.js +9 -6
- package/dist/chains/definitions.js.map +1 -1
- package/dist/chains/index.cjs.map +1 -1
- package/dist/chains/index.d.ts +30 -1
- package/dist/chains/index.js.map +1 -1
- package/dist/client/enhancedResponse.cjs +164 -0
- package/dist/client/enhancedResponse.cjs.map +1 -0
- package/dist/client/enhancedResponse.d.ts +120 -0
- package/dist/client/enhancedResponse.js +138 -0
- package/dist/client/enhancedResponse.js.map +1 -0
- package/dist/config/chains.cjs.map +1 -1
- package/dist/config/chains.d.ts +99 -0
- package/dist/config/chains.js.map +1 -1
- package/dist/config/contracts.config.cjs +400 -0
- package/dist/config/contracts.config.cjs.map +1 -0
- package/dist/config/contracts.config.d.ts +84 -0
- package/dist/config/contracts.config.js +375 -0
- package/dist/config/contracts.config.js.map +1 -0
- 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/contracts/contractController.cjs +1 -1
- package/dist/contracts/contractController.cjs.map +1 -1
- package/dist/contracts/contractController.d.ts +66 -10
- package/dist/contracts/contractController.js +1 -1
- package/dist/contracts/contractController.js.map +1 -1
- package/dist/controllers/__tests__/data-consistency-integration.test.d.ts +7 -0
- package/dist/controllers/__tests__/operations.processQueue.test.d.ts +1 -0
- package/dist/controllers/accessSettlement.cjs +289 -0
- package/dist/controllers/accessSettlement.cjs.map +1 -0
- package/dist/controllers/accessSettlement.d.ts +157 -0
- package/dist/controllers/accessSettlement.js +265 -0
- package/dist/controllers/accessSettlement.js.map +1 -0
- package/dist/controllers/accessSettlement.test.d.ts +1 -0
- package/dist/controllers/base.cjs +116 -0
- package/dist/controllers/base.cjs.map +1 -0
- package/dist/controllers/base.d.ts +94 -0
- package/dist/controllers/base.js +92 -0
- package/dist/controllers/base.js.map +1 -0
- package/dist/controllers/data.cjs +634 -352
- package/dist/controllers/data.cjs.map +1 -1
- package/dist/controllers/data.d.ts +348 -213
- package/dist/controllers/data.js +647 -355
- package/dist/controllers/data.js.map +1 -1
- package/dist/controllers/operations.cjs +430 -0
- package/dist/controllers/operations.cjs.map +1 -0
- package/dist/controllers/operations.d.ts +229 -0
- package/dist/controllers/operations.js +406 -0
- package/dist/controllers/operations.js.map +1 -0
- package/dist/controllers/permissions.cjs +943 -443
- package/dist/controllers/permissions.cjs.map +1 -1
- package/dist/controllers/permissions.d.ts +201 -120
- package/dist/controllers/permissions.js +943 -443
- package/dist/controllers/permissions.js.map +1 -1
- package/dist/controllers/protocol.cjs +14 -10
- package/dist/controllers/protocol.cjs.map +1 -1
- package/dist/controllers/protocol.d.ts +30 -31
- package/dist/controllers/protocol.js +14 -10
- package/dist/controllers/protocol.js.map +1 -1
- package/dist/controllers/runtimePermissions.cjs +272 -0
- package/dist/controllers/runtimePermissions.cjs.map +1 -0
- package/dist/controllers/runtimePermissions.d.ts +152 -0
- package/dist/controllers/runtimePermissions.js +251 -0
- package/dist/controllers/runtimePermissions.js.map +1 -0
- package/dist/controllers/runtimePermissions.test.d.ts +1 -0
- package/dist/controllers/schemas.cjs +113 -43
- package/dist/controllers/schemas.cjs.map +1 -1
- package/dist/controllers/schemas.d.ts +90 -43
- package/dist/controllers/schemas.js +113 -43
- package/dist/controllers/schemas.js.map +1 -1
- package/dist/controllers/server.cjs +276 -60
- package/dist/controllers/server.cjs.map +1 -1
- package/dist/controllers/server.d.ts +159 -54
- package/dist/controllers/server.js +276 -60
- package/dist/controllers/server.js.map +1 -1
- package/dist/core/__tests__/health.test.d.ts +1 -0
- package/dist/core/__tests__/inMemoryNonceManager.test.d.ts +1 -0
- package/dist/core/__tests__/nonceManager.test.d.ts +1 -0
- package/dist/core/__tests__/pollingManager.test.d.ts +4 -0
- package/dist/core/apiClient.cjs +53 -3
- package/dist/core/apiClient.cjs.map +1 -1
- package/dist/core/apiClient.d.ts +132 -7
- package/dist/core/apiClient.js +53 -3
- package/dist/core/apiClient.js.map +1 -1
- package/dist/core/generics.cjs +30 -3
- package/dist/core/generics.cjs.map +1 -1
- package/dist/core/generics.d.ts +95 -6
- package/dist/core/generics.js +30 -3
- package/dist/core/generics.js.map +1 -1
- package/dist/core/health.cjs +289 -0
- package/dist/core/health.cjs.map +1 -0
- package/dist/core/health.d.ts +143 -0
- package/dist/core/health.js +265 -0
- package/dist/core/health.js.map +1 -0
- package/dist/core/inMemoryNonceManager.cjs +138 -0
- package/dist/core/inMemoryNonceManager.cjs.map +1 -0
- package/dist/core/inMemoryNonceManager.d.ts +69 -0
- package/dist/core/inMemoryNonceManager.js +114 -0
- package/dist/core/inMemoryNonceManager.js.map +1 -0
- package/dist/core/nonceManager.cjs +304 -0
- package/dist/core/nonceManager.cjs.map +1 -0
- package/dist/core/nonceManager.d.ts +116 -0
- package/dist/core/nonceManager.js +280 -0
- package/dist/core/nonceManager.js.map +1 -0
- package/dist/core/pollingManager.cjs +292 -0
- package/dist/core/pollingManager.cjs.map +1 -0
- package/dist/core/pollingManager.d.ts +120 -0
- package/dist/core/pollingManager.js +268 -0
- package/dist/core/pollingManager.js.map +1 -0
- package/dist/core.cjs +164 -36
- package/dist/core.cjs.map +1 -1
- package/dist/core.d.ts +69 -10
- package/dist/core.js +167 -37
- package/dist/core.js.map +1 -1
- package/dist/crypto/ecies/__tests__/constants.test.d.ts +1 -1
- package/dist/crypto/ecies/__tests__/interface.test.d.ts +1 -0
- package/dist/crypto/ecies/__tests__/serialization.test.d.ts +8 -0
- package/dist/crypto/ecies/__tests__/utils.test.d.ts +1 -0
- package/dist/crypto/ecies/base.cjs +59 -23
- package/dist/crypto/ecies/base.cjs.map +1 -1
- package/dist/crypto/ecies/base.js +59 -23
- package/dist/crypto/ecies/base.js.map +1 -1
- package/dist/crypto/ecies/constants.cjs +2 -10
- package/dist/crypto/ecies/constants.cjs.map +1 -1
- package/dist/crypto/ecies/constants.d.ts +0 -9
- package/dist/crypto/ecies/constants.js +1 -8
- package/dist/crypto/ecies/constants.js.map +1 -1
- package/dist/crypto/ecies/interface.cjs +19 -2
- package/dist/crypto/ecies/interface.cjs.map +1 -1
- package/dist/crypto/ecies/interface.js +19 -2
- package/dist/crypto/ecies/interface.js.map +1 -1
- package/dist/errors.cjs +45 -0
- package/dist/errors.cjs.map +1 -1
- package/dist/errors.d.ts +104 -0
- package/dist/errors.js +43 -0
- package/dist/errors.js.map +1 -1
- package/dist/generated/abi/AccessSettlementImplementation.cjs +635 -0
- package/dist/generated/abi/AccessSettlementImplementation.cjs.map +1 -0
- package/dist/generated/abi/AccessSettlementImplementation.d.ts +468 -0
- package/dist/generated/abi/AccessSettlementImplementation.js +611 -0
- package/dist/generated/abi/AccessSettlementImplementation.js.map +1 -0
- package/dist/generated/abi/AttestationPolicyImplementation.cjs +614 -0
- package/dist/generated/abi/AttestationPolicyImplementation.cjs.map +1 -0
- package/dist/generated/abi/AttestationPolicyImplementation.d.ts +449 -0
- package/dist/generated/abi/AttestationPolicyImplementation.js +590 -0
- package/dist/generated/abi/AttestationPolicyImplementation.js.map +1 -0
- package/dist/generated/abi/ComputeEngineImplementation.cjs.map +1 -1
- package/dist/generated/abi/ComputeEngineImplementation.js.map +1 -1
- package/dist/generated/abi/{DLPTreasuryImplementation.cjs → ComputeEngineTreasuryImplementation.cjs} +16 -92
- package/dist/generated/abi/ComputeEngineTreasuryImplementation.cjs.map +1 -0
- package/dist/generated/abi/{DLPTreasuryImplementation.d.ts → ComputeEngineTreasuryImplementation.d.ts} +9 -67
- package/dist/generated/abi/{DLPTreasuryImplementation.js → ComputeEngineTreasuryImplementation.js} +12 -88
- package/dist/generated/abi/ComputeEngineTreasuryImplementation.js.map +1 -0
- package/dist/generated/abi/ComputeInstructionRegistryImplementation.cjs.map +1 -1
- package/dist/generated/abi/ComputeInstructionRegistryImplementation.js.map +1 -1
- package/dist/generated/abi/DATFactoryImplementation.cjs.map +1 -1
- package/dist/generated/abi/DATFactoryImplementation.js.map +1 -1
- package/dist/generated/abi/DATImplementation.cjs.map +1 -1
- package/dist/generated/abi/DATImplementation.js.map +1 -1
- package/dist/generated/abi/DATPausableImplementation.cjs.map +1 -1
- package/dist/generated/abi/DATPausableImplementation.js.map +1 -1
- package/dist/generated/abi/DATVotesImplementation.cjs.map +1 -1
- package/dist/generated/abi/DATVotesImplementation.js.map +1 -1
- package/dist/generated/abi/DLPPerformanceImplementation.cjs +42 -0
- package/dist/generated/abi/DLPPerformanceImplementation.cjs.map +1 -1
- package/dist/generated/abi/DLPPerformanceImplementation.d.ts +32 -0
- package/dist/generated/abi/DLPPerformanceImplementation.js +42 -0
- package/dist/generated/abi/DLPPerformanceImplementation.js.map +1 -1
- package/dist/generated/abi/DLPRegistryImplementation.cjs +5 -5
- package/dist/generated/abi/DLPRegistryImplementation.cjs.map +1 -1
- package/dist/generated/abi/DLPRegistryImplementation.d.ts +4 -4
- package/dist/generated/abi/DLPRegistryImplementation.js +5 -5
- package/dist/generated/abi/DLPRegistryImplementation.js.map +1 -1
- package/dist/generated/abi/DLPRegistryTreasuryImplementation.cjs.map +1 -1
- package/dist/generated/abi/DLPRegistryTreasuryImplementation.js.map +1 -1
- package/dist/generated/abi/DLPRewardDeployerImplementation.cjs +166 -2
- package/dist/generated/abi/DLPRewardDeployerImplementation.cjs.map +1 -1
- package/dist/generated/abi/DLPRewardDeployerImplementation.d.ts +129 -2
- package/dist/generated/abi/DLPRewardDeployerImplementation.js +166 -2
- package/dist/generated/abi/DLPRewardDeployerImplementation.js.map +1 -1
- package/dist/generated/abi/DLPRewardSwapImplementation.cjs.map +1 -1
- package/dist/generated/abi/DLPRewardSwapImplementation.js.map +1 -1
- package/dist/generated/abi/DataLiquidityPoolImplementation.cjs +282 -100
- package/dist/generated/abi/DataLiquidityPoolImplementation.cjs.map +1 -1
- package/dist/generated/abi/DataLiquidityPoolImplementation.d.ts +218 -79
- package/dist/generated/abi/DataLiquidityPoolImplementation.js +281 -99
- package/dist/generated/abi/DataLiquidityPoolImplementation.js.map +1 -1
- package/dist/generated/abi/DataPortabilityGranteesImplementation.cjs +167 -19
- package/dist/generated/abi/DataPortabilityGranteesImplementation.cjs.map +1 -1
- package/dist/generated/abi/DataPortabilityGranteesImplementation.d.ts +127 -14
- package/dist/generated/abi/DataPortabilityGranteesImplementation.js +167 -19
- package/dist/generated/abi/DataPortabilityGranteesImplementation.js.map +1 -1
- package/dist/generated/abi/DataPortabilityPermissionsImplementation.cjs +0 -19
- package/dist/generated/abi/DataPortabilityPermissionsImplementation.cjs.map +1 -1
- package/dist/generated/abi/DataPortabilityPermissionsImplementation.d.ts +0 -14
- package/dist/generated/abi/DataPortabilityPermissionsImplementation.js +0 -19
- package/dist/generated/abi/DataPortabilityPermissionsImplementation.js.map +1 -1
- package/dist/generated/abi/DataPortabilityServersImplementation.cjs +0 -19
- package/dist/generated/abi/DataPortabilityServersImplementation.cjs.map +1 -1
- package/dist/generated/abi/DataPortabilityServersImplementation.d.ts +0 -14
- package/dist/generated/abi/DataPortabilityServersImplementation.js +0 -19
- package/dist/generated/abi/DataPortabilityServersImplementation.js.map +1 -1
- package/dist/generated/abi/DataRefinerRegistryImplementation.cjs.map +1 -1
- package/dist/generated/abi/DataRefinerRegistryImplementation.js.map +1 -1
- package/dist/generated/abi/DataRegistryImplementation.cjs +0 -13
- package/dist/generated/abi/DataRegistryImplementation.cjs.map +1 -1
- package/dist/generated/abi/DataRegistryImplementation.d.ts +0 -10
- package/dist/generated/abi/DataRegistryImplementation.js +0 -13
- package/dist/generated/abi/DataRegistryImplementation.js.map +1 -1
- package/dist/generated/abi/DatasetRegistryImplementation.cjs +751 -0
- package/dist/generated/abi/DatasetRegistryImplementation.cjs.map +1 -0
- package/dist/generated/abi/DatasetRegistryImplementation.d.ts +557 -0
- package/dist/generated/abi/DatasetRegistryImplementation.js +727 -0
- package/dist/generated/abi/DatasetRegistryImplementation.js.map +1 -0
- package/dist/generated/abi/ProtocolConfigImplementation.cjs +578 -0
- package/dist/generated/abi/ProtocolConfigImplementation.cjs.map +1 -0
- package/dist/generated/abi/ProtocolConfigImplementation.d.ts +423 -0
- package/dist/generated/abi/ProtocolConfigImplementation.js +554 -0
- package/dist/generated/abi/ProtocolConfigImplementation.js.map +1 -0
- package/dist/generated/abi/QueryEngineImplementation.cjs.map +1 -1
- package/dist/generated/abi/QueryEngineImplementation.js.map +1 -1
- package/dist/generated/abi/SwapHelperImplementation.cjs +0 -43
- package/dist/generated/abi/SwapHelperImplementation.cjs.map +1 -1
- package/dist/generated/abi/SwapHelperImplementation.d.ts +0 -35
- package/dist/generated/abi/SwapHelperImplementation.js +0 -43
- package/dist/generated/abi/SwapHelperImplementation.js.map +1 -1
- package/dist/generated/abi/TeePoolDedicatedGpuImplementation.cjs.map +1 -1
- package/dist/generated/abi/TeePoolDedicatedGpuImplementation.js.map +1 -1
- package/dist/generated/abi/TeePoolDedicatedStandardImplementation.cjs.map +1 -1
- package/dist/generated/abi/TeePoolDedicatedStandardImplementation.js.map +1 -1
- package/dist/generated/abi/TeePoolEphemeralStandardImplementation.cjs.map +1 -1
- package/dist/generated/abi/TeePoolEphemeralStandardImplementation.js.map +1 -1
- package/dist/generated/abi/TeePoolPersistentGpuImplementation.cjs.map +1 -1
- package/dist/generated/abi/TeePoolPersistentGpuImplementation.js.map +1 -1
- package/dist/generated/abi/TeePoolPersistentStandardImplementation.cjs.map +1 -1
- package/dist/generated/abi/TeePoolPersistentStandardImplementation.js.map +1 -1
- package/dist/generated/abi/TeePoolPhalaImplementation.cjs.map +1 -1
- package/dist/generated/abi/TeePoolPhalaImplementation.js.map +1 -1
- package/dist/generated/abi/UniswapV3NonfungiblePositionManagerImplementation.cjs +1251 -0
- package/dist/generated/abi/UniswapV3NonfungiblePositionManagerImplementation.cjs.map +1 -0
- package/dist/generated/abi/UniswapV3NonfungiblePositionManagerImplementation.d.ts +948 -0
- package/dist/generated/abi/UniswapV3NonfungiblePositionManagerImplementation.js +1227 -0
- package/dist/generated/abi/UniswapV3NonfungiblePositionManagerImplementation.js.map +1 -0
- package/dist/generated/abi/UniswapV3QuoterV2Implementation.cjs +297 -0
- package/dist/generated/abi/UniswapV3QuoterV2Implementation.cjs.map +1 -0
- package/dist/generated/abi/UniswapV3QuoterV2Implementation.d.ts +206 -0
- package/dist/generated/abi/UniswapV3QuoterV2Implementation.js +273 -0
- package/dist/generated/abi/UniswapV3QuoterV2Implementation.js.map +1 -0
- package/dist/generated/abi/VanaEpochImplementation.cjs +195 -0
- package/dist/generated/abi/VanaEpochImplementation.cjs.map +1 -1
- package/dist/generated/abi/VanaEpochImplementation.d.ts +151 -0
- package/dist/generated/abi/VanaEpochImplementation.js +195 -0
- package/dist/generated/abi/VanaEpochImplementation.js.map +1 -1
- package/dist/generated/abi/VanaPoolEntityImplementation.cjs +22 -65
- package/dist/generated/abi/VanaPoolEntityImplementation.cjs.map +1 -1
- package/dist/generated/abi/VanaPoolEntityImplementation.d.ts +17 -51
- package/dist/generated/abi/VanaPoolEntityImplementation.js +22 -65
- package/dist/generated/abi/VanaPoolEntityImplementation.js.map +1 -1
- package/dist/generated/abi/VanaPoolStakingImplementation.cjs +113 -1
- package/dist/generated/abi/VanaPoolStakingImplementation.cjs.map +1 -1
- package/dist/generated/abi/VanaPoolStakingImplementation.d.ts +85 -1
- package/dist/generated/abi/VanaPoolStakingImplementation.js +113 -1
- package/dist/generated/abi/VanaPoolStakingImplementation.js.map +1 -1
- package/dist/generated/abi/VanaPoolTreasuryImplementation.cjs.map +1 -1
- package/dist/generated/abi/VanaPoolTreasuryImplementation.js.map +1 -1
- package/dist/generated/abi/VanaRuntimePermissionsImplementation.cjs +759 -0
- package/dist/generated/abi/VanaRuntimePermissionsImplementation.cjs.map +1 -0
- package/dist/generated/abi/VanaRuntimePermissionsImplementation.d.ts +563 -0
- package/dist/generated/abi/VanaRuntimePermissionsImplementation.js +735 -0
- package/dist/generated/abi/VanaRuntimePermissionsImplementation.js.map +1 -0
- package/dist/generated/abi/VanaRuntimeServersImplementation.cjs +820 -0
- package/dist/generated/abi/VanaRuntimeServersImplementation.cjs.map +1 -0
- package/dist/generated/abi/VanaRuntimeServersImplementation.d.ts +609 -0
- package/dist/generated/abi/VanaRuntimeServersImplementation.js +796 -0
- package/dist/generated/abi/VanaRuntimeServersImplementation.js.map +1 -0
- package/dist/generated/abi/VanaTreasuryImplementation.cjs +536 -0
- package/dist/generated/abi/VanaTreasuryImplementation.cjs.map +1 -0
- package/dist/generated/abi/VanaTreasuryImplementation.d.ts +393 -0
- package/dist/generated/abi/VanaTreasuryImplementation.js +512 -0
- package/dist/generated/abi/VanaTreasuryImplementation.js.map +1 -0
- package/dist/generated/abi/WVANAImplementation.cjs +339 -0
- package/dist/generated/abi/WVANAImplementation.cjs.map +1 -0
- package/dist/generated/abi/WVANAImplementation.d.ts +244 -0
- package/dist/generated/abi/WVANAImplementation.js +315 -0
- package/dist/generated/abi/WVANAImplementation.js.map +1 -0
- package/dist/generated/abi/index.cjs +79 -47
- package/dist/generated/abi/index.cjs.map +1 -1
- package/dist/generated/abi/index.d.ts +15783 -10449
- package/dist/generated/abi/index.js +65 -43
- package/dist/generated/abi/index.js.map +1 -1
- package/dist/{config → generated}/addresses.cjs +174 -75
- package/dist/generated/addresses.cjs.map +1 -0
- package/dist/{config → generated}/addresses.d.ts +174 -165
- package/dist/{config → generated}/addresses.js +174 -75
- package/dist/generated/addresses.js.map +1 -0
- package/dist/generated/event-types.cjs.map +1 -1
- package/dist/generated/event-types.d.ts +482 -399
- package/dist/generated/eventRegistry.cjs +2601 -724
- package/dist/generated/eventRegistry.cjs.map +1 -1
- package/dist/generated/eventRegistry.d.ts +2 -2
- package/dist/generated/eventRegistry.js +2601 -724
- package/dist/generated/eventRegistry.js.map +1 -1
- package/dist/generated/server/server-exports.cjs +22 -0
- package/dist/generated/server/server-exports.cjs.map +1 -1
- package/dist/generated/server/server-exports.d.ts +31 -11
- package/dist/generated/server/server-exports.js +17 -0
- package/dist/generated/server/server-exports.js.map +1 -1
- package/dist/generated/server/server.cjs.map +1 -1
- package/dist/generated/server/server.d.ts +771 -402
- package/dist/generated/subgraph.cjs +797 -32
- package/dist/generated/subgraph.cjs.map +1 -1
- package/dist/generated/subgraph.d.ts +135 -0
- package/dist/generated/subgraph.js +792 -32
- package/dist/generated/subgraph.js.map +1 -1
- package/dist/index.browser.d.ts +6 -1
- package/dist/index.browser.js +26 -1
- package/dist/index.browser.js.map +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/index.node.cjs +47 -4
- package/dist/index.node.cjs.map +1 -1
- package/dist/index.node.d.ts +60 -14
- package/dist/index.node.js +42 -3
- package/dist/index.node.js.map +1 -1
- package/dist/lib/__tests__/redisAtomicStore.test.d.ts +1 -0
- package/dist/lib/redisAtomicStore.cjs +201 -0
- package/dist/lib/redisAtomicStore.cjs.map +1 -0
- package/dist/lib/redisAtomicStore.d.ts +120 -0
- package/dist/lib/redisAtomicStore.js +177 -0
- package/dist/lib/redisAtomicStore.js.map +1 -0
- package/dist/node.cjs.map +1 -1
- package/dist/node.d.ts +39 -1
- package/dist/node.js.map +1 -1
- package/dist/platform/browser.cjs +160 -2
- package/dist/platform/browser.cjs.map +1 -1
- package/dist/platform/browser.d.ts +232 -12
- package/dist/platform/browser.js +160 -2
- package/dist/platform/browser.js.map +1 -1
- package/dist/platform/interface.cjs.map +1 -1
- package/dist/platform/interface.d.ts +283 -90
- package/dist/platform/node.cjs +163 -2
- package/dist/platform/node.cjs.map +1 -1
- package/dist/platform/node.d.ts +69 -6
- package/dist/platform/node.js +163 -2
- package/dist/platform/node.js.map +1 -1
- package/dist/server/relayerHandler.cjs +452 -0
- package/dist/server/relayerHandler.cjs.map +1 -0
- package/dist/server/relayerHandler.d.ts +69 -0
- package/dist/server/relayerHandler.js +428 -0
- package/dist/server/relayerHandler.js.map +1 -0
- package/dist/storage/index.cjs +3 -0
- package/dist/storage/index.cjs.map +1 -1
- package/dist/storage/index.d.ts +1 -0
- package/dist/storage/index.js +2 -0
- package/dist/storage/index.js.map +1 -1
- package/dist/storage/manager.cjs +108 -25
- package/dist/storage/manager.cjs.map +1 -1
- package/dist/storage/manager.d.ts +119 -25
- package/dist/storage/manager.js +108 -25
- package/dist/storage/manager.js.map +1 -1
- package/dist/storage/providers/callback-storage.cjs +86 -15
- package/dist/storage/providers/callback-storage.cjs.map +1 -1
- package/dist/storage/providers/callback-storage.d.ts +109 -20
- package/dist/storage/providers/callback-storage.js +86 -15
- package/dist/storage/providers/callback-storage.js.map +1 -1
- package/dist/storage/providers/dropbox.cjs +237 -0
- package/dist/storage/providers/dropbox.cjs.map +1 -0
- package/dist/storage/providers/dropbox.d.ts +39 -0
- package/dist/storage/providers/dropbox.js +215 -0
- package/dist/storage/providers/dropbox.js.map +1 -0
- package/dist/storage/providers/dropbox.test.d.ts +1 -0
- package/dist/storage/providers/pinata.cjs.map +1 -1
- package/dist/storage/providers/pinata.d.ts +12 -14
- package/dist/storage/providers/pinata.js.map +1 -1
- package/dist/tests/data-upload-owner-validation.test.d.ts +1 -0
- package/dist/tests/factories/mockFactory.d.ts +6 -6
- package/dist/tests/fakes/FakeWaitForTransactionEvents.d.ts +2 -2
- package/dist/tests/permissions-revoke-relayer.test.d.ts +1 -0
- package/dist/tests/permissions-transaction-options.test.d.ts +1 -0
- package/dist/tests/read-only-mode.test.d.ts +1 -0
- package/dist/tests/relayer-integration.test.d.ts +1 -0
- package/dist/tests/relayer-unified.test.d.ts +1 -0
- package/dist/tests/server-relayer-handler.test.d.ts +1 -0
- package/dist/types/accessSettlement.cjs +17 -0
- package/dist/types/accessSettlement.cjs.map +1 -0
- package/dist/types/accessSettlement.d.ts +66 -0
- package/dist/types/accessSettlement.js +1 -0
- package/dist/types/accessSettlement.js.map +1 -0
- package/dist/types/atomicStore.cjs +31 -0
- package/dist/types/atomicStore.cjs.map +1 -0
- package/dist/types/atomicStore.d.ts +236 -0
- package/dist/types/atomicStore.js +7 -0
- package/dist/types/atomicStore.js.map +1 -0
- package/dist/types/blockchain.cjs.map +1 -1
- package/dist/types/blockchain.d.ts +39 -11
- package/dist/types/chains.cjs.map +1 -1
- package/dist/types/chains.d.ts +74 -7
- package/dist/types/chains.js.map +1 -1
- package/dist/types/config.cjs +10 -0
- package/dist/types/config.cjs.map +1 -1
- package/dist/types/config.d.ts +217 -220
- 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 +71 -7
- package/dist/types/controller-context.cjs.map +1 -1
- package/dist/types/controller-context.d.ts +12 -6
- package/dist/types/data.cjs.map +1 -1
- package/dist/types/data.d.ts +82 -10
- package/dist/types/generics.cjs.map +1 -1
- package/dist/types/generics.d.ts +81 -10
- package/dist/types/index.cjs +4 -0
- package/dist/types/index.cjs.map +1 -1
- package/dist/types/index.d.ts +36 -6
- package/dist/types/index.js +9 -1
- package/dist/types/index.js.map +1 -1
- package/dist/types/operationStore.cjs +17 -0
- package/dist/types/operationStore.cjs.map +1 -0
- package/dist/types/operationStore.d.ts +171 -0
- package/dist/types/operationStore.js +1 -0
- package/dist/types/operationStore.js.map +1 -0
- package/dist/types/operations.cjs +3 -15
- package/dist/types/operations.cjs.map +1 -1
- package/dist/types/operations.d.ts +131 -39
- package/dist/types/operations.js +2 -13
- package/dist/types/operations.js.map +1 -1
- package/dist/types/options.cjs +17 -0
- package/dist/types/options.cjs.map +1 -0
- package/dist/types/options.d.ts +308 -0
- package/dist/types/options.js +1 -0
- package/dist/types/options.js.map +1 -0
- package/dist/types/permissions.cjs.map +1 -1
- package/dist/types/permissions.d.ts +19 -20
- package/dist/types/personal.cjs.map +1 -1
- package/dist/types/personal.d.ts +150 -14
- package/dist/types/relayer.cjs.map +1 -1
- package/dist/types/relayer.d.ts +307 -35
- package/dist/types/runtimePermissions.cjs +17 -0
- package/dist/types/runtimePermissions.cjs.map +1 -0
- package/dist/types/runtimePermissions.d.ts +122 -0
- package/dist/types/runtimePermissions.js +1 -0
- package/dist/types/runtimePermissions.js.map +1 -0
- package/dist/types/storage.cjs.map +1 -1
- package/dist/types/storage.d.ts +9 -21
- package/dist/types/storage.js.map +1 -1
- package/dist/types/utils.cjs.map +1 -1
- package/dist/types/utils.d.ts +0 -45
- package/dist/utils/__tests__/chainQuery.test.d.ts +1 -0
- package/dist/utils/__tests__/subgraphConsistency.test.d.ts +4 -0
- package/dist/utils/__tests__/subgraphPagination.test.d.ts +4 -0
- package/dist/utils/blockchain/registry.cjs +3 -3
- package/dist/utils/blockchain/registry.cjs.map +1 -1
- package/dist/utils/blockchain/registry.d.ts +1 -1
- package/dist/utils/blockchain/registry.js +3 -3
- package/dist/utils/blockchain/registry.js.map +1 -1
- package/dist/utils/chainQuery.cjs +107 -0
- package/dist/utils/chainQuery.cjs.map +1 -0
- package/dist/utils/chainQuery.d.ts +31 -0
- package/dist/utils/chainQuery.js +82 -0
- package/dist/utils/chainQuery.js.map +1 -0
- package/dist/utils/grantFiles.cjs +4 -1
- package/dist/utils/grantFiles.cjs.map +1 -1
- package/dist/utils/grantFiles.d.ts +10 -20
- package/dist/utils/grantFiles.js +4 -1
- package/dist/utils/grantFiles.js.map +1 -1
- package/dist/utils/grantValidation.cjs.map +1 -1
- package/dist/utils/grantValidation.d.ts +95 -16
- package/dist/utils/grantValidation.js.map +1 -1
- package/dist/utils/grants.cjs.map +1 -1
- package/dist/utils/grants.d.ts +93 -12
- package/dist/utils/grants.js.map +1 -1
- package/dist/utils/ipfs.cjs +2 -4
- package/dist/utils/ipfs.cjs.map +1 -1
- package/dist/utils/ipfs.d.ts +1 -1
- package/dist/utils/ipfs.js +2 -4
- package/dist/utils/ipfs.js.map +1 -1
- package/dist/utils/lazy-import.cjs.map +1 -1
- package/dist/utils/lazy-import.d.ts +32 -7
- package/dist/utils/lazy-import.js.map +1 -1
- package/dist/utils/multicall.cjs +1 -1
- package/dist/utils/multicall.cjs.map +1 -1
- package/dist/utils/multicall.js +1 -1
- package/dist/utils/multicall.js.map +1 -1
- package/dist/utils/runtimeGrantFiles.cjs +84 -0
- package/dist/utils/runtimeGrantFiles.cjs.map +1 -0
- package/dist/utils/runtimeGrantFiles.d.ts +66 -0
- package/dist/utils/runtimeGrantFiles.js +58 -0
- package/dist/utils/runtimeGrantFiles.js.map +1 -0
- package/dist/utils/signatureCache.cjs +8 -2
- package/dist/utils/signatureCache.cjs.map +1 -1
- package/dist/utils/signatureCache.d.ts +49 -8
- package/dist/utils/signatureCache.js +8 -2
- package/dist/utils/signatureCache.js.map +1 -1
- package/dist/utils/subgraphConsistency.cjs +184 -0
- package/dist/utils/subgraphConsistency.cjs.map +1 -0
- package/dist/utils/subgraphConsistency.d.ts +65 -0
- package/dist/utils/subgraphConsistency.js +155 -0
- package/dist/utils/subgraphConsistency.js.map +1 -0
- package/dist/utils/subgraphMetaCache.cjs +101 -0
- package/dist/utils/subgraphMetaCache.cjs.map +1 -0
- package/dist/utils/subgraphMetaCache.d.ts +56 -0
- package/dist/utils/subgraphMetaCache.js +76 -0
- package/dist/utils/subgraphMetaCache.js.map +1 -0
- package/dist/utils/subgraphPagination.cjs +104 -0
- package/dist/utils/subgraphPagination.cjs.map +1 -0
- package/dist/utils/subgraphPagination.d.ts +78 -0
- package/dist/utils/subgraphPagination.js +78 -0
- package/dist/utils/subgraphPagination.js.map +1 -0
- package/dist/utils/transactionHelpers.cjs.map +1 -1
- package/dist/utils/transactionHelpers.d.ts +12 -12
- package/dist/utils/transactionHelpers.js.map +1 -1
- package/dist/utils/typedDataConverter.cjs.map +1 -1
- package/dist/utils/typedDataConverter.d.ts +39 -3
- package/dist/utils/typedDataConverter.js.map +1 -1
- package/dist/utils/urlResolver.cjs +7 -0
- package/dist/utils/urlResolver.cjs.map +1 -1
- package/dist/utils/urlResolver.d.ts +22 -4
- package/dist/utils/urlResolver.js +7 -0
- package/dist/utils/urlResolver.js.map +1 -1
- package/dist/utils/wallet.cjs +63 -0
- package/dist/utils/wallet.cjs.map +1 -0
- package/dist/utils/wallet.d.ts +94 -0
- package/dist/utils/wallet.js +37 -0
- package/dist/utils/wallet.js.map +1 -0
- package/package.json +7 -2
- package/dist/config/addresses.cjs.map +0 -1
- package/dist/config/addresses.js.map +0 -1
- package/dist/generated/abi/DLPTreasuryImplementation.cjs.map +0 -1
- package/dist/generated/abi/DLPTreasuryImplementation.js.map +0 -1
- package/dist/server/handler.cjs +0 -101
- package/dist/server/handler.cjs.map +0 -1
- package/dist/server/handler.d.ts +0 -87
- package/dist/server/handler.js +0 -77
- package/dist/server/handler.js.map +0 -1
- /package/dist/{tests/server-handler.test.d.ts → client/__tests__/enhancedResponse.test.d.ts} +0 -0
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
import { BaseController } from "./base";
|
|
2
|
+
import type { RuntimePermissionParams, RuntimePermission, RuntimeGrantFile, RuntimePermissionResult } from "../types/runtimePermissions";
|
|
3
|
+
/**
|
|
4
|
+
* Controller for VanaRuntimePermissions contract
|
|
5
|
+
*
|
|
6
|
+
* @remarks
|
|
7
|
+
* Manages permissions for data access via Vana Runtime. Allows dataset owners
|
|
8
|
+
* to create monetized access permissions for data consumers to execute operations
|
|
9
|
+
* on their datasets within TEE environments.
|
|
10
|
+
*
|
|
11
|
+
* Follows the same pattern as PermissionsController but for runtime-specific permissions.
|
|
12
|
+
*
|
|
13
|
+
* @category Controllers
|
|
14
|
+
* @example
|
|
15
|
+
* ```typescript
|
|
16
|
+
* // Create a permission for a data consumer
|
|
17
|
+
* const result = await sdk.runtimePermissions.createPermission({
|
|
18
|
+
* datasetId: 123n,
|
|
19
|
+
* grantee: "0x...",
|
|
20
|
+
* task: "vanaorg/vana-task-demo:latest",
|
|
21
|
+
* operation: "aggregate_keywords",
|
|
22
|
+
* pricing: { price_per_file_vana: 0.1 }
|
|
23
|
+
* });
|
|
24
|
+
*
|
|
25
|
+
* console.log(`Permission created with ID: ${result.permissionId}`);
|
|
26
|
+
* console.log(`Grant stored at: ${result.grantUrl}`);
|
|
27
|
+
* ```
|
|
28
|
+
*/
|
|
29
|
+
export declare class RuntimePermissionsController extends BaseController {
|
|
30
|
+
/**
|
|
31
|
+
* Create a new runtime permission grant
|
|
32
|
+
*
|
|
33
|
+
* @remarks
|
|
34
|
+
* This method:
|
|
35
|
+
* 1. Creates a grant file with pricing and operation details
|
|
36
|
+
* 2. Uploads the grant to IPFS (via relayer if available)
|
|
37
|
+
* 3. Calls VanaRuntimePermissions.createPermission() on-chain
|
|
38
|
+
* 4. Waits for transaction confirmation
|
|
39
|
+
* 5. Returns the permission ID and grant URL
|
|
40
|
+
*
|
|
41
|
+
* @param params - Permission parameters including dataset, grantee, pricing
|
|
42
|
+
* @returns Permission ID, transaction hash, and grant URL
|
|
43
|
+
* @throws {BlockchainError} When permission creation fails
|
|
44
|
+
* @throws {NetworkError} When IPFS upload fails
|
|
45
|
+
*
|
|
46
|
+
* @example
|
|
47
|
+
* ```typescript
|
|
48
|
+
* const result = await sdk.runtimePermissions.createPermission({
|
|
49
|
+
* datasetId: 123n,
|
|
50
|
+
* grantee: "0x742d35Cc...",
|
|
51
|
+
* task: "vanaorg/vana-task-demo:latest",
|
|
52
|
+
* operation: "aggregate_keywords",
|
|
53
|
+
* pricing: {
|
|
54
|
+
* price_per_file_vana: 0.1,
|
|
55
|
+
* minimum_price_vana: 0.01,
|
|
56
|
+
* maximum_price_vana: 100
|
|
57
|
+
* },
|
|
58
|
+
* parameters: {
|
|
59
|
+
* maxFiles: 1000
|
|
60
|
+
* },
|
|
61
|
+
* });
|
|
62
|
+
* ```
|
|
63
|
+
*/
|
|
64
|
+
createPermission(params: RuntimePermissionParams): Promise<RuntimePermissionResult>;
|
|
65
|
+
/**
|
|
66
|
+
* Get permission by ID
|
|
67
|
+
*
|
|
68
|
+
* @remarks
|
|
69
|
+
* Fetches permission details from the VanaRuntimePermissions contract.
|
|
70
|
+
* The returned permission contains an IPFS hash in the grant field,
|
|
71
|
+
* which can be resolved using fetchGrant().
|
|
72
|
+
*
|
|
73
|
+
* @param permissionId - Permission identifier
|
|
74
|
+
* @returns Permission details including dataset, grantee, and grant hash
|
|
75
|
+
*
|
|
76
|
+
* @example
|
|
77
|
+
* ```typescript
|
|
78
|
+
* const permission = await sdk.runtimePermissions.getPermission(1024n);
|
|
79
|
+
* console.log(`Dataset: ${permission.datasetId}`);
|
|
80
|
+
* console.log(`Grant: ${permission.grant}`); // IPFS hash
|
|
81
|
+
*
|
|
82
|
+
* // Resolve full grant details
|
|
83
|
+
* const grantFile = await sdk.runtimePermissions.fetchGrant(permission);
|
|
84
|
+
* console.log(`Price: ${grantFile.pricing.price_per_file_vana} VANA`);
|
|
85
|
+
* ```
|
|
86
|
+
*/
|
|
87
|
+
getPermission(permissionId: bigint): Promise<RuntimePermission>;
|
|
88
|
+
/**
|
|
89
|
+
* Check if permission is active (not expired)
|
|
90
|
+
*
|
|
91
|
+
* @remarks
|
|
92
|
+
* Returns true if the current block number is between startBlock and endBlock.
|
|
93
|
+
*
|
|
94
|
+
* @param permissionId - Permission identifier
|
|
95
|
+
* @returns Whether permission is currently active
|
|
96
|
+
*
|
|
97
|
+
* @example
|
|
98
|
+
* ```typescript
|
|
99
|
+
* const isActive = await sdk.runtimePermissions.isPermissionActive(1024n);
|
|
100
|
+
* if (isActive) {
|
|
101
|
+
* console.log("Permission is valid");
|
|
102
|
+
* } else {
|
|
103
|
+
* console.log("Permission has expired");
|
|
104
|
+
* }
|
|
105
|
+
* ```
|
|
106
|
+
*/
|
|
107
|
+
isPermissionActive(permissionId: bigint): Promise<boolean>;
|
|
108
|
+
/**
|
|
109
|
+
* Get all permissions for a dataset
|
|
110
|
+
*
|
|
111
|
+
* @remarks
|
|
112
|
+
* Returns an array of permissions that have been granted for the specified dataset.
|
|
113
|
+
* Useful for dataset owners to view all active permissions.
|
|
114
|
+
*
|
|
115
|
+
* @param datasetId - Dataset identifier
|
|
116
|
+
* @returns Array of runtime permissions
|
|
117
|
+
*
|
|
118
|
+
* @example
|
|
119
|
+
* ```typescript
|
|
120
|
+
* const permissions = await sdk.runtimePermissions.getDatasetPermissions(123n);
|
|
121
|
+
* console.log(`Found ${permissions.length} permissions`);
|
|
122
|
+
*
|
|
123
|
+
* // Access each permission directly
|
|
124
|
+
* for (const permission of permissions) {
|
|
125
|
+
* console.log(`Permission ${permission.id}: ${permission.grant}`);
|
|
126
|
+
* }
|
|
127
|
+
* ```
|
|
128
|
+
*/
|
|
129
|
+
getDatasetPermissions(datasetId: bigint): Promise<RuntimePermission[]>;
|
|
130
|
+
/**
|
|
131
|
+
* Fetch and parse grant file from IPFS
|
|
132
|
+
*
|
|
133
|
+
* @remarks
|
|
134
|
+
* Resolves the IPFS hash stored in permission.grant and returns the
|
|
135
|
+
* full grant file with pricing and operation details.
|
|
136
|
+
*
|
|
137
|
+
* @param permission - Permission with grant URL/hash
|
|
138
|
+
* @returns Parsed grant file with pricing and parameters
|
|
139
|
+
* @throws {NetworkError} When IPFS fetch fails
|
|
140
|
+
*
|
|
141
|
+
* @example
|
|
142
|
+
* ```typescript
|
|
143
|
+
* const permission = await sdk.runtimePermissions.getPermission(1024n);
|
|
144
|
+
* const grant = await sdk.runtimePermissions.fetchGrant(permission);
|
|
145
|
+
*
|
|
146
|
+
* console.log(`Task: ${grant.task}`);
|
|
147
|
+
* console.log(`Operation: ${grant.operation}`);
|
|
148
|
+
* console.log(`Price: ${grant.pricing.price_per_file_vana} VANA per file`);
|
|
149
|
+
* ```
|
|
150
|
+
*/
|
|
151
|
+
fetchGrant(permission: RuntimePermission): Promise<RuntimeGrantFile>;
|
|
152
|
+
}
|
|
@@ -0,0 +1,251 @@
|
|
|
1
|
+
import { getContract } from "viem";
|
|
2
|
+
import { BaseController } from "./base";
|
|
3
|
+
import {
|
|
4
|
+
createRuntimeGrantFile,
|
|
5
|
+
retrieveRuntimeGrantFile
|
|
6
|
+
} from "../utils/runtimeGrantFiles";
|
|
7
|
+
import { BlockchainError, NetworkError } from "../errors";
|
|
8
|
+
import { getContractAddress } from "../generated/addresses";
|
|
9
|
+
import { getAbi } from "../generated/abi";
|
|
10
|
+
class RuntimePermissionsController extends BaseController {
|
|
11
|
+
/**
|
|
12
|
+
* Create a new runtime permission grant
|
|
13
|
+
*
|
|
14
|
+
* @remarks
|
|
15
|
+
* This method:
|
|
16
|
+
* 1. Creates a grant file with pricing and operation details
|
|
17
|
+
* 2. Uploads the grant to IPFS (via relayer if available)
|
|
18
|
+
* 3. Calls VanaRuntimePermissions.createPermission() on-chain
|
|
19
|
+
* 4. Waits for transaction confirmation
|
|
20
|
+
* 5. Returns the permission ID and grant URL
|
|
21
|
+
*
|
|
22
|
+
* @param params - Permission parameters including dataset, grantee, pricing
|
|
23
|
+
* @returns Permission ID, transaction hash, and grant URL
|
|
24
|
+
* @throws {BlockchainError} When permission creation fails
|
|
25
|
+
* @throws {NetworkError} When IPFS upload fails
|
|
26
|
+
*
|
|
27
|
+
* @example
|
|
28
|
+
* ```typescript
|
|
29
|
+
* const result = await sdk.runtimePermissions.createPermission({
|
|
30
|
+
* datasetId: 123n,
|
|
31
|
+
* grantee: "0x742d35Cc...",
|
|
32
|
+
* task: "vanaorg/vana-task-demo:latest",
|
|
33
|
+
* operation: "aggregate_keywords",
|
|
34
|
+
* pricing: {
|
|
35
|
+
* price_per_file_vana: 0.1,
|
|
36
|
+
* minimum_price_vana: 0.01,
|
|
37
|
+
* maximum_price_vana: 100
|
|
38
|
+
* },
|
|
39
|
+
* parameters: {
|
|
40
|
+
* maxFiles: 1000
|
|
41
|
+
* },
|
|
42
|
+
* });
|
|
43
|
+
* ```
|
|
44
|
+
*/
|
|
45
|
+
async createPermission(params) {
|
|
46
|
+
this.assertWallet();
|
|
47
|
+
try {
|
|
48
|
+
const grantFile = createRuntimeGrantFile(params);
|
|
49
|
+
let grantUrl = params.grantUrl;
|
|
50
|
+
if (!grantUrl) {
|
|
51
|
+
if (!this.context.relayer) {
|
|
52
|
+
throw new NetworkError(
|
|
53
|
+
"No relayer configured and no grantUrl provided. Configure relayer or provide grantUrl parameter."
|
|
54
|
+
);
|
|
55
|
+
}
|
|
56
|
+
const request = {
|
|
57
|
+
type: "direct",
|
|
58
|
+
operation: "storeGrantFile",
|
|
59
|
+
params: grantFile
|
|
60
|
+
};
|
|
61
|
+
const response = await this.context.relayer(request);
|
|
62
|
+
if (response.type === "error") {
|
|
63
|
+
throw new NetworkError(
|
|
64
|
+
`Failed to store grant file: ${response.error}`
|
|
65
|
+
);
|
|
66
|
+
}
|
|
67
|
+
if (response.type === "direct" && typeof response.result === "object" && response.result !== null && "url" in response.result && typeof response.result.url === "string") {
|
|
68
|
+
grantUrl = response.result.url;
|
|
69
|
+
} else {
|
|
70
|
+
throw new NetworkError("Upload succeeded but no URL was returned");
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
const chainId = await this.context.publicClient.getChainId();
|
|
74
|
+
const contractAddress = getContractAddress(
|
|
75
|
+
chainId,
|
|
76
|
+
"VanaRuntimePermissions"
|
|
77
|
+
);
|
|
78
|
+
const abi = getAbi("VanaRuntimePermissions");
|
|
79
|
+
const granteeId = BigInt(params.grantee);
|
|
80
|
+
const startBlock = await this.context.publicClient.getBlockNumber();
|
|
81
|
+
const endBlock = 2n ** 256n - 1n;
|
|
82
|
+
const account = this.context.walletClient?.account ?? this.context.userAddress;
|
|
83
|
+
const hash = await this.context.walletClient.writeContract({
|
|
84
|
+
address: contractAddress,
|
|
85
|
+
abi,
|
|
86
|
+
functionName: "createPermission",
|
|
87
|
+
args: [params.datasetId, granteeId, grantUrl, startBlock, endBlock],
|
|
88
|
+
account,
|
|
89
|
+
chain: this.context.walletClient?.chain ?? null
|
|
90
|
+
});
|
|
91
|
+
await this.context.publicClient.waitForTransactionReceipt({
|
|
92
|
+
hash
|
|
93
|
+
});
|
|
94
|
+
const permissionId = 0n;
|
|
95
|
+
return {
|
|
96
|
+
permissionId,
|
|
97
|
+
hash,
|
|
98
|
+
grantUrl
|
|
99
|
+
};
|
|
100
|
+
} catch (error) {
|
|
101
|
+
if (error instanceof NetworkError) {
|
|
102
|
+
throw error;
|
|
103
|
+
}
|
|
104
|
+
if (error instanceof Error) {
|
|
105
|
+
throw new BlockchainError(
|
|
106
|
+
`Failed to create runtime permission: ${error.message}`,
|
|
107
|
+
error
|
|
108
|
+
);
|
|
109
|
+
}
|
|
110
|
+
throw new BlockchainError(
|
|
111
|
+
"Failed to create runtime permission with unknown error"
|
|
112
|
+
);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Get permission by ID
|
|
117
|
+
*
|
|
118
|
+
* @remarks
|
|
119
|
+
* Fetches permission details from the VanaRuntimePermissions contract.
|
|
120
|
+
* The returned permission contains an IPFS hash in the grant field,
|
|
121
|
+
* which can be resolved using fetchGrant().
|
|
122
|
+
*
|
|
123
|
+
* @param permissionId - Permission identifier
|
|
124
|
+
* @returns Permission details including dataset, grantee, and grant hash
|
|
125
|
+
*
|
|
126
|
+
* @example
|
|
127
|
+
* ```typescript
|
|
128
|
+
* const permission = await sdk.runtimePermissions.getPermission(1024n);
|
|
129
|
+
* console.log(`Dataset: ${permission.datasetId}`);
|
|
130
|
+
* console.log(`Grant: ${permission.grant}`); // IPFS hash
|
|
131
|
+
*
|
|
132
|
+
* // Resolve full grant details
|
|
133
|
+
* const grantFile = await sdk.runtimePermissions.fetchGrant(permission);
|
|
134
|
+
* console.log(`Price: ${grantFile.pricing.price_per_file_vana} VANA`);
|
|
135
|
+
* ```
|
|
136
|
+
*/
|
|
137
|
+
async getPermission(permissionId) {
|
|
138
|
+
const chainId = await this.context.publicClient.getChainId();
|
|
139
|
+
const contractAddress = getContractAddress(
|
|
140
|
+
chainId,
|
|
141
|
+
"VanaRuntimePermissions"
|
|
142
|
+
);
|
|
143
|
+
const abi = getAbi("VanaRuntimePermissions");
|
|
144
|
+
const contract = getContract({
|
|
145
|
+
address: contractAddress,
|
|
146
|
+
abi,
|
|
147
|
+
client: this.context.publicClient
|
|
148
|
+
});
|
|
149
|
+
return await contract.read.getPermission([
|
|
150
|
+
permissionId
|
|
151
|
+
]);
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Check if permission is active (not expired)
|
|
155
|
+
*
|
|
156
|
+
* @remarks
|
|
157
|
+
* Returns true if the current block number is between startBlock and endBlock.
|
|
158
|
+
*
|
|
159
|
+
* @param permissionId - Permission identifier
|
|
160
|
+
* @returns Whether permission is currently active
|
|
161
|
+
*
|
|
162
|
+
* @example
|
|
163
|
+
* ```typescript
|
|
164
|
+
* const isActive = await sdk.runtimePermissions.isPermissionActive(1024n);
|
|
165
|
+
* if (isActive) {
|
|
166
|
+
* console.log("Permission is valid");
|
|
167
|
+
* } else {
|
|
168
|
+
* console.log("Permission has expired");
|
|
169
|
+
* }
|
|
170
|
+
* ```
|
|
171
|
+
*/
|
|
172
|
+
async isPermissionActive(permissionId) {
|
|
173
|
+
const chainId = await this.context.publicClient.getChainId();
|
|
174
|
+
const contractAddress = getContractAddress(
|
|
175
|
+
chainId,
|
|
176
|
+
"VanaRuntimePermissions"
|
|
177
|
+
);
|
|
178
|
+
const abi = getAbi("VanaRuntimePermissions");
|
|
179
|
+
const contract = getContract({
|
|
180
|
+
address: contractAddress,
|
|
181
|
+
abi,
|
|
182
|
+
client: this.context.publicClient
|
|
183
|
+
});
|
|
184
|
+
return await contract.read.isPermissionActive([permissionId]);
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Get all permissions for a dataset
|
|
188
|
+
*
|
|
189
|
+
* @remarks
|
|
190
|
+
* Returns an array of permissions that have been granted for the specified dataset.
|
|
191
|
+
* Useful for dataset owners to view all active permissions.
|
|
192
|
+
*
|
|
193
|
+
* @param datasetId - Dataset identifier
|
|
194
|
+
* @returns Array of runtime permissions
|
|
195
|
+
*
|
|
196
|
+
* @example
|
|
197
|
+
* ```typescript
|
|
198
|
+
* const permissions = await sdk.runtimePermissions.getDatasetPermissions(123n);
|
|
199
|
+
* console.log(`Found ${permissions.length} permissions`);
|
|
200
|
+
*
|
|
201
|
+
* // Access each permission directly
|
|
202
|
+
* for (const permission of permissions) {
|
|
203
|
+
* console.log(`Permission ${permission.id}: ${permission.grant}`);
|
|
204
|
+
* }
|
|
205
|
+
* ```
|
|
206
|
+
*/
|
|
207
|
+
async getDatasetPermissions(datasetId) {
|
|
208
|
+
const chainId = await this.context.publicClient.getChainId();
|
|
209
|
+
const contractAddress = getContractAddress(
|
|
210
|
+
chainId,
|
|
211
|
+
"VanaRuntimePermissions"
|
|
212
|
+
);
|
|
213
|
+
const abi = getAbi("VanaRuntimePermissions");
|
|
214
|
+
const contract = getContract({
|
|
215
|
+
address: contractAddress,
|
|
216
|
+
abi,
|
|
217
|
+
client: this.context.publicClient
|
|
218
|
+
});
|
|
219
|
+
return await contract.read.getDatasetPermissions([
|
|
220
|
+
datasetId
|
|
221
|
+
]);
|
|
222
|
+
}
|
|
223
|
+
/**
|
|
224
|
+
* Fetch and parse grant file from IPFS
|
|
225
|
+
*
|
|
226
|
+
* @remarks
|
|
227
|
+
* Resolves the IPFS hash stored in permission.grant and returns the
|
|
228
|
+
* full grant file with pricing and operation details.
|
|
229
|
+
*
|
|
230
|
+
* @param permission - Permission with grant URL/hash
|
|
231
|
+
* @returns Parsed grant file with pricing and parameters
|
|
232
|
+
* @throws {NetworkError} When IPFS fetch fails
|
|
233
|
+
*
|
|
234
|
+
* @example
|
|
235
|
+
* ```typescript
|
|
236
|
+
* const permission = await sdk.runtimePermissions.getPermission(1024n);
|
|
237
|
+
* const grant = await sdk.runtimePermissions.fetchGrant(permission);
|
|
238
|
+
*
|
|
239
|
+
* console.log(`Task: ${grant.task}`);
|
|
240
|
+
* console.log(`Operation: ${grant.operation}`);
|
|
241
|
+
* console.log(`Price: ${grant.pricing.price_per_file_vana} VANA per file`);
|
|
242
|
+
* ```
|
|
243
|
+
*/
|
|
244
|
+
async fetchGrant(permission) {
|
|
245
|
+
return await retrieveRuntimeGrantFile(permission.grant);
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
export {
|
|
249
|
+
RuntimePermissionsController
|
|
250
|
+
};
|
|
251
|
+
//# sourceMappingURL=runtimePermissions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/controllers/runtimePermissions.ts"],"sourcesContent":["import { getContract } from \"viem\";\nimport { BaseController } from \"./base\";\nimport type {\n RuntimePermissionParams,\n RuntimePermission,\n RuntimeGrantFile,\n RuntimePermissionResult,\n} from \"../types/runtimePermissions\";\nimport type { UnifiedRelayerRequest } from \"../types/relayer\";\nimport {\n createRuntimeGrantFile,\n retrieveRuntimeGrantFile,\n} from \"../utils/runtimeGrantFiles\";\nimport { BlockchainError, NetworkError } from \"../errors\";\nimport { getContractAddress } from \"../generated/addresses\";\nimport { getAbi } from \"../generated/abi\";\n\n/**\n * Controller for VanaRuntimePermissions contract\n *\n * @remarks\n * Manages permissions for data access via Vana Runtime. Allows dataset owners\n * to create monetized access permissions for data consumers to execute operations\n * on their datasets within TEE environments.\n *\n * Follows the same pattern as PermissionsController but for runtime-specific permissions.\n *\n * @category Controllers\n * @example\n * ```typescript\n * // Create a permission for a data consumer\n * const result = await sdk.runtimePermissions.createPermission({\n * datasetId: 123n,\n * grantee: \"0x...\",\n * task: \"vanaorg/vana-task-demo:latest\",\n * operation: \"aggregate_keywords\",\n * pricing: { price_per_file_vana: 0.1 }\n * });\n *\n * console.log(`Permission created with ID: ${result.permissionId}`);\n * console.log(`Grant stored at: ${result.grantUrl}`);\n * ```\n */\nexport class RuntimePermissionsController extends BaseController {\n /**\n * Create a new runtime permission grant\n *\n * @remarks\n * This method:\n * 1. Creates a grant file with pricing and operation details\n * 2. Uploads the grant to IPFS (via relayer if available)\n * 3. Calls VanaRuntimePermissions.createPermission() on-chain\n * 4. Waits for transaction confirmation\n * 5. Returns the permission ID and grant URL\n *\n * @param params - Permission parameters including dataset, grantee, pricing\n * @returns Permission ID, transaction hash, and grant URL\n * @throws {BlockchainError} When permission creation fails\n * @throws {NetworkError} When IPFS upload fails\n *\n * @example\n * ```typescript\n * const result = await sdk.runtimePermissions.createPermission({\n * datasetId: 123n,\n * grantee: \"0x742d35Cc...\",\n * task: \"vanaorg/vana-task-demo:latest\",\n * operation: \"aggregate_keywords\",\n * pricing: {\n * price_per_file_vana: 0.1,\n * minimum_price_vana: 0.01,\n * maximum_price_vana: 100\n * },\n * parameters: {\n * maxFiles: 1000\n * },\n * });\n * ```\n */\n async createPermission(\n params: RuntimePermissionParams,\n ): Promise<RuntimePermissionResult> {\n this.assertWallet();\n\n try {\n // 1. Create grant file\n const grantFile = createRuntimeGrantFile(params);\n\n // 2. Upload to IPFS (via relayer if available, or use provided URL)\n let grantUrl = params.grantUrl;\n if (!grantUrl) {\n if (!this.context.relayer) {\n throw new NetworkError(\n \"No relayer configured and no grantUrl provided. \" +\n \"Configure relayer or provide grantUrl parameter.\",\n );\n }\n\n // Store via relayer\n const request: UnifiedRelayerRequest = {\n type: \"direct\",\n operation: \"storeGrantFile\",\n params: grantFile,\n };\n const response = await this.context.relayer(request);\n if (response.type === \"error\") {\n throw new NetworkError(\n `Failed to store grant file: ${response.error}`,\n );\n }\n if (\n response.type === \"direct\" &&\n typeof response.result === \"object\" &&\n response.result !== null &&\n \"url\" in response.result &&\n typeof response.result.url === \"string\"\n ) {\n grantUrl = response.result.url;\n } else {\n throw new NetworkError(\"Upload succeeded but no URL was returned\");\n }\n }\n\n // 3. Get contract address and ABI\n const chainId = await this.context.publicClient.getChainId();\n const contractAddress = getContractAddress(\n chainId,\n \"VanaRuntimePermissions\",\n );\n const abi = getAbi(\"VanaRuntimePermissions\");\n\n // 4. Convert grantee address to ID\n // NOTE: For MVP, we use address as ID. In production, this should\n // query a grantee registry contract or use a proper ID scheme.\n const granteeId = BigInt(params.grantee);\n\n // 5. Get current block for startBlock\n const startBlock = await this.context.publicClient.getBlockNumber();\n\n // 6. Set endBlock to max uint256 (never expires)\n // Note: Unlike DataPortabilityPermissions which has no on-chain expiration,\n // VanaRuntimePermissions contract requires endBlock. We always set it to\n // max uint256 since we have no way to predict future block numbers from timestamps.\n const endBlock = 2n ** 256n - 1n;\n\n // 7. Call contract to create permission\n const account =\n this.context.walletClient?.account ?? this.context.userAddress;\n\n const hash = await this.context.walletClient.writeContract({\n address: contractAddress,\n abi,\n functionName: \"createPermission\",\n args: [params.datasetId, granteeId, grantUrl, startBlock, endBlock],\n account,\n chain: this.context.walletClient?.chain ?? null,\n });\n\n // 8. Wait for transaction confirmation\n await this.context.publicClient.waitForTransactionReceipt({\n hash,\n });\n\n // 9. Parse PermissionCreated event to get permission ID\n // For MVP, we'll use a placeholder. In production, parse event logs.\n // TODO: Add proper event parsing from receipt.logs\n const permissionId = 0n; // Placeholder\n\n return {\n permissionId,\n hash,\n grantUrl,\n };\n } catch (error) {\n if (error instanceof NetworkError) {\n throw error;\n }\n if (error instanceof Error) {\n throw new BlockchainError(\n `Failed to create runtime permission: ${error.message}`,\n error,\n );\n }\n throw new BlockchainError(\n \"Failed to create runtime permission with unknown error\",\n );\n }\n }\n\n /**\n * Get permission by ID\n *\n * @remarks\n * Fetches permission details from the VanaRuntimePermissions contract.\n * The returned permission contains an IPFS hash in the grant field,\n * which can be resolved using fetchGrant().\n *\n * @param permissionId - Permission identifier\n * @returns Permission details including dataset, grantee, and grant hash\n *\n * @example\n * ```typescript\n * const permission = await sdk.runtimePermissions.getPermission(1024n);\n * console.log(`Dataset: ${permission.datasetId}`);\n * console.log(`Grant: ${permission.grant}`); // IPFS hash\n *\n * // Resolve full grant details\n * const grantFile = await sdk.runtimePermissions.fetchGrant(permission);\n * console.log(`Price: ${grantFile.pricing.price_per_file_vana} VANA`);\n * ```\n */\n async getPermission(permissionId: bigint): Promise<RuntimePermission> {\n const chainId = await this.context.publicClient.getChainId();\n const contractAddress = getContractAddress(\n chainId,\n \"VanaRuntimePermissions\",\n );\n const abi = getAbi(\"VanaRuntimePermissions\");\n\n const contract = getContract({\n address: contractAddress,\n abi,\n client: this.context.publicClient,\n });\n\n return (await contract.read.getPermission([\n permissionId,\n ])) as RuntimePermission;\n }\n\n /**\n * Check if permission is active (not expired)\n *\n * @remarks\n * Returns true if the current block number is between startBlock and endBlock.\n *\n * @param permissionId - Permission identifier\n * @returns Whether permission is currently active\n *\n * @example\n * ```typescript\n * const isActive = await sdk.runtimePermissions.isPermissionActive(1024n);\n * if (isActive) {\n * console.log(\"Permission is valid\");\n * } else {\n * console.log(\"Permission has expired\");\n * }\n * ```\n */\n async isPermissionActive(permissionId: bigint): Promise<boolean> {\n const chainId = await this.context.publicClient.getChainId();\n const contractAddress = getContractAddress(\n chainId,\n \"VanaRuntimePermissions\",\n );\n const abi = getAbi(\"VanaRuntimePermissions\");\n\n const contract = getContract({\n address: contractAddress,\n abi,\n client: this.context.publicClient,\n });\n\n return (await contract.read.isPermissionActive([permissionId])) as boolean;\n }\n\n /**\n * Get all permissions for a dataset\n *\n * @remarks\n * Returns an array of permissions that have been granted for the specified dataset.\n * Useful for dataset owners to view all active permissions.\n *\n * @param datasetId - Dataset identifier\n * @returns Array of runtime permissions\n *\n * @example\n * ```typescript\n * const permissions = await sdk.runtimePermissions.getDatasetPermissions(123n);\n * console.log(`Found ${permissions.length} permissions`);\n *\n * // Access each permission directly\n * for (const permission of permissions) {\n * console.log(`Permission ${permission.id}: ${permission.grant}`);\n * }\n * ```\n */\n async getDatasetPermissions(datasetId: bigint): Promise<RuntimePermission[]> {\n const chainId = await this.context.publicClient.getChainId();\n const contractAddress = getContractAddress(\n chainId,\n \"VanaRuntimePermissions\",\n );\n const abi = getAbi(\"VanaRuntimePermissions\");\n\n const contract = getContract({\n address: contractAddress,\n abi,\n client: this.context.publicClient,\n });\n\n return (await contract.read.getDatasetPermissions([\n datasetId,\n ])) as RuntimePermission[];\n }\n\n /**\n * Fetch and parse grant file from IPFS\n *\n * @remarks\n * Resolves the IPFS hash stored in permission.grant and returns the\n * full grant file with pricing and operation details.\n *\n * @param permission - Permission with grant URL/hash\n * @returns Parsed grant file with pricing and parameters\n * @throws {NetworkError} When IPFS fetch fails\n *\n * @example\n * ```typescript\n * const permission = await sdk.runtimePermissions.getPermission(1024n);\n * const grant = await sdk.runtimePermissions.fetchGrant(permission);\n *\n * console.log(`Task: ${grant.task}`);\n * console.log(`Operation: ${grant.operation}`);\n * console.log(`Price: ${grant.pricing.price_per_file_vana} VANA per file`);\n * ```\n */\n async fetchGrant(permission: RuntimePermission): Promise<RuntimeGrantFile> {\n return await retrieveRuntimeGrantFile(permission.grant);\n }\n}\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -31,7 +31,8 @@ __export(schemas_exports, {
|
|
|
31
31
|
SchemaController: () => SchemaController
|
|
32
32
|
});
|
|
33
33
|
module.exports = __toCommonJS(schemas_exports);
|
|
34
|
-
var
|
|
34
|
+
var import_base = require("./base");
|
|
35
|
+
var import_addresses = require("../generated/addresses");
|
|
35
36
|
var import_abi = require("../generated/abi");
|
|
36
37
|
var import_multicall = require("../utils/multicall");
|
|
37
38
|
var import_schemaValidation = require("../utils/schemaValidation");
|
|
@@ -39,48 +40,51 @@ var import_registry = require("../utils/blockchain/registry");
|
|
|
39
40
|
var import_subgraph = require("../generated/subgraph");
|
|
40
41
|
var import_graphql = require("graphql");
|
|
41
42
|
var import_urlResolver = require("../utils/urlResolver");
|
|
42
|
-
class SchemaController {
|
|
43
|
+
class SchemaController extends import_base.BaseController {
|
|
43
44
|
constructor(context) {
|
|
44
|
-
|
|
45
|
+
super(context);
|
|
45
46
|
}
|
|
46
47
|
/**
|
|
47
|
-
* Creates a
|
|
48
|
+
* Creates a schema with validation and IPFS upload.
|
|
48
49
|
*
|
|
49
50
|
* @remarks
|
|
50
|
-
*
|
|
51
|
-
*
|
|
52
|
-
*
|
|
53
|
-
* public access and reusability.
|
|
51
|
+
* Primary method for schema creation. Validates definition,
|
|
52
|
+
* uploads to IPFS (unencrypted for reusability), and registers
|
|
53
|
+
* on blockchain. Schema becomes immediately available network-wide.
|
|
54
54
|
*
|
|
55
|
-
*
|
|
56
|
-
* -
|
|
57
|
-
*
|
|
58
|
-
*
|
|
55
|
+
* @param params - Creation configuration
|
|
56
|
+
* @param params.name - Human-readable schema name
|
|
57
|
+
* @param params.dialect - Schema format (`"json"` or `"sqlite"`)
|
|
58
|
+
* @param params.schema - Definition object or JSON string
|
|
59
|
+
*
|
|
60
|
+
* @returns Schema ID, IPFS URL, and transaction hash
|
|
61
|
+
*
|
|
62
|
+
* @throws {SchemaValidationError} Invalid schema definition.
|
|
63
|
+
* Verify schema follows JSON Schema or SQLite format.
|
|
64
|
+
* @throws {Error} Storage not configured.
|
|
65
|
+
* Configure storage providers in VanaConfig.
|
|
66
|
+
* @throws {Error} IPFS upload failed.
|
|
67
|
+
* Check network and storage provider status.
|
|
59
68
|
*
|
|
60
|
-
* @param params - Schema creation parameters including name, dialect, and definition
|
|
61
|
-
* @returns Promise resolving to creation results with schema ID and transaction hash
|
|
62
|
-
* @throws {SchemaValidationError} When the schema definition is invalid
|
|
63
|
-
* @throws {Error} When IPFS upload or blockchain registration fails
|
|
64
69
|
* @example
|
|
65
70
|
* ```typescript
|
|
66
|
-
* // Create a JSON schema for user profiles
|
|
67
71
|
* const result = await vana.schemas.create({
|
|
68
72
|
* name: "User Profile",
|
|
69
73
|
* dialect: "json",
|
|
70
74
|
* schema: {
|
|
71
75
|
* type: "object",
|
|
72
76
|
* properties: {
|
|
73
|
-
* name: { type: "string" },
|
|
77
|
+
* name: { type: "string", minLength: 1 },
|
|
74
78
|
* age: { type: "number", minimum: 0 }
|
|
75
79
|
* },
|
|
76
80
|
* required: ["name"]
|
|
77
81
|
* }
|
|
78
82
|
* });
|
|
79
|
-
*
|
|
80
|
-
* console.log(`Schema created with ID: ${result.schemaId}`);
|
|
83
|
+
* console.log(`Schema ${result.schemaId} at ${result.definitionUrl}`);
|
|
81
84
|
* ```
|
|
82
85
|
*/
|
|
83
86
|
async create(params) {
|
|
87
|
+
this.assertWallet();
|
|
84
88
|
const { name, dialect, schema } = params;
|
|
85
89
|
try {
|
|
86
90
|
let schemaDefinition;
|
|
@@ -118,11 +122,9 @@ class SchemaController {
|
|
|
118
122
|
});
|
|
119
123
|
const uploadResult = await this.context.storageManager.upload(
|
|
120
124
|
schemaBlob,
|
|
121
|
-
`${name.replace(/[^a-zA-Z0-9]/g, "_")}.json
|
|
122
|
-
"ipfs"
|
|
123
|
-
// Use IPFS for public schema storage
|
|
125
|
+
`${name.replace(/[^a-zA-Z0-9]/g, "_")}.json`
|
|
124
126
|
);
|
|
125
|
-
const chainId = this.context.walletClient.chain?.id;
|
|
127
|
+
const chainId = this.context.walletClient?.chain?.id ?? this.context.publicClient.chain?.id;
|
|
126
128
|
if (!chainId) {
|
|
127
129
|
throw new Error("Chain ID not available");
|
|
128
130
|
}
|
|
@@ -131,8 +133,8 @@ class SchemaController {
|
|
|
131
133
|
"DataRefinerRegistry"
|
|
132
134
|
);
|
|
133
135
|
const dataRefinerRegistryAbi = (0, import_abi.getAbi)("DataRefinerRegistry");
|
|
134
|
-
const account = this.context.walletClient.account ??
|
|
135
|
-
const from = typeof account === "string" ? account : account
|
|
136
|
+
const account = this.context.walletClient.account ?? this.context.userAddress;
|
|
137
|
+
const from = typeof account === "string" ? account : account?.address;
|
|
136
138
|
const hash = await this.context.walletClient.writeContract({
|
|
137
139
|
address: dataRefinerRegistryAddress,
|
|
138
140
|
abi: dataRefinerRegistryAbi,
|
|
@@ -300,8 +302,18 @@ class SchemaController {
|
|
|
300
302
|
* ```
|
|
301
303
|
*/
|
|
302
304
|
async list(options = {}) {
|
|
303
|
-
const {
|
|
305
|
+
const {
|
|
306
|
+
limit = 100,
|
|
307
|
+
offset = 0,
|
|
308
|
+
includeDefinitions = false,
|
|
309
|
+
minBlock,
|
|
310
|
+
waitForSync
|
|
311
|
+
} = options;
|
|
304
312
|
const subgraphUrl = options.subgraphUrl ?? this.context.subgraphUrl;
|
|
313
|
+
if (subgraphUrl && (minBlock || waitForSync)) {
|
|
314
|
+
const { checkSubgraphConsistency } = await import("../utils/subgraphConsistency");
|
|
315
|
+
await checkSubgraphConsistency(subgraphUrl, { minBlock, waitForSync });
|
|
316
|
+
}
|
|
305
317
|
if (subgraphUrl) {
|
|
306
318
|
try {
|
|
307
319
|
return await this._listSchemasViaSubgraph({
|
|
@@ -320,7 +332,7 @@ class SchemaController {
|
|
|
320
332
|
if (end <= start) {
|
|
321
333
|
return [];
|
|
322
334
|
}
|
|
323
|
-
const chainId = this.context.walletClient.chain?.id;
|
|
335
|
+
const chainId = this.context.walletClient?.chain?.id ?? this.context.publicClient.chain?.id;
|
|
324
336
|
if (!chainId) {
|
|
325
337
|
throw new Error("Chain ID not available");
|
|
326
338
|
}
|
|
@@ -372,6 +384,75 @@ class SchemaController {
|
|
|
372
384
|
);
|
|
373
385
|
}
|
|
374
386
|
}
|
|
387
|
+
/**
|
|
388
|
+
* Retrieves schema definition content directly from a URL.
|
|
389
|
+
*
|
|
390
|
+
* @remarks
|
|
391
|
+
* Use this method to fetch and format schema definitions from IPFS or HTTP URLs.
|
|
392
|
+
* Automatically uses the SDK's configured download proxy to bypass CORS restrictions.
|
|
393
|
+
* Returns formatted JSON string if content is valid JSON, otherwise raw content.
|
|
394
|
+
*
|
|
395
|
+
* @param url - The definition URL (typically from schema.definitionUrl)
|
|
396
|
+
* @returns Promise resolving to the formatted definition content
|
|
397
|
+
* @throws {Error} When the content cannot be fetched or network errors occur
|
|
398
|
+
* @example
|
|
399
|
+
* ```typescript
|
|
400
|
+
* const schema = await vana.schemas.get(1);
|
|
401
|
+
* const definition = await vana.schemas.retrieveDefinition(schema.definitionUrl);
|
|
402
|
+
* console.log(definition); // Pretty-printed JSON
|
|
403
|
+
* ```
|
|
404
|
+
*/
|
|
405
|
+
async retrieveDefinition(url) {
|
|
406
|
+
try {
|
|
407
|
+
const { universalFetch } = await import("../utils/download");
|
|
408
|
+
const response = await universalFetch(url, this.context.downloadRelayer);
|
|
409
|
+
if (!response.ok) {
|
|
410
|
+
throw new Error(`HTTP ${response.status}: ${response.statusText}`);
|
|
411
|
+
}
|
|
412
|
+
const text = await response.text();
|
|
413
|
+
try {
|
|
414
|
+
const json = JSON.parse(text);
|
|
415
|
+
return JSON.stringify(json, null, 2);
|
|
416
|
+
} catch {
|
|
417
|
+
return text;
|
|
418
|
+
}
|
|
419
|
+
} catch (error) {
|
|
420
|
+
throw new Error(
|
|
421
|
+
`Failed to retrieve schema definition: ${error instanceof Error ? error.message : "Unknown error"}`
|
|
422
|
+
);
|
|
423
|
+
}
|
|
424
|
+
}
|
|
425
|
+
/**
|
|
426
|
+
* Retrieves refinement instruction content from a URL.
|
|
427
|
+
*
|
|
428
|
+
* @remarks
|
|
429
|
+
* Use this method to fetch refinement instructions from IPFS or HTTP URLs.
|
|
430
|
+
* Temporarily housed in SchemaController since refiners use schemas and we don't
|
|
431
|
+
* have a dedicated RefinerController yet. Uses the SDK's configured download proxy.
|
|
432
|
+
*
|
|
433
|
+
* @param url - The instruction URL (typically from refiner.refinementInstructionUrl)
|
|
434
|
+
* @returns Promise resolving to the formatted instruction content
|
|
435
|
+
* @throws {Error} When the content cannot be fetched or network errors occur
|
|
436
|
+
* @example
|
|
437
|
+
* ```typescript
|
|
438
|
+
* const instructions = await vana.schemas.retrieveRefinementInstructions(
|
|
439
|
+
* refiner.refinementInstructionUrl
|
|
440
|
+
* );
|
|
441
|
+
* console.log(instructions);
|
|
442
|
+
* ```
|
|
443
|
+
*/
|
|
444
|
+
async retrieveRefinementInstructions(url) {
|
|
445
|
+
try {
|
|
446
|
+
return await this.retrieveDefinition(url);
|
|
447
|
+
} catch (error) {
|
|
448
|
+
throw new Error(
|
|
449
|
+
`Failed to retrieve refinement instructions: ${error instanceof Error ? error.message.replace(
|
|
450
|
+
"Failed to retrieve schema definition: ",
|
|
451
|
+
""
|
|
452
|
+
) : "Unknown error"}`
|
|
453
|
+
);
|
|
454
|
+
}
|
|
455
|
+
}
|
|
375
456
|
/**
|
|
376
457
|
* Adds a schema using the legacy method (low-level API).
|
|
377
458
|
*
|
|
@@ -380,8 +461,9 @@ class SchemaController {
|
|
|
380
461
|
* @returns Promise resolving to the add schema result
|
|
381
462
|
*/
|
|
382
463
|
async addSchema(params) {
|
|
464
|
+
this.assertWallet();
|
|
383
465
|
try {
|
|
384
|
-
const chainId = this.context.walletClient.chain?.id;
|
|
466
|
+
const chainId = this.context.walletClient?.chain?.id ?? this.context.publicClient.chain?.id;
|
|
385
467
|
if (!chainId) {
|
|
386
468
|
throw new Error("Chain ID not available");
|
|
387
469
|
}
|
|
@@ -390,8 +472,8 @@ class SchemaController {
|
|
|
390
472
|
"DataRefinerRegistry"
|
|
391
473
|
);
|
|
392
474
|
const dataRefinerRegistryAbi = (0, import_abi.getAbi)("DataRefinerRegistry");
|
|
393
|
-
const account = this.context.walletClient.account ??
|
|
394
|
-
const from = typeof account === "string" ? account : account
|
|
475
|
+
const account = this.context.walletClient.account ?? this.context.userAddress;
|
|
476
|
+
const from = typeof account === "string" ? account : account?.address;
|
|
395
477
|
const hash = await this.context.walletClient.writeContract({
|
|
396
478
|
address: dataRefinerRegistryAddress,
|
|
397
479
|
abi: dataRefinerRegistryAbi,
|
|
@@ -557,18 +639,6 @@ class SchemaController {
|
|
|
557
639
|
* @private
|
|
558
640
|
* @returns Promise resolving to the user's address
|
|
559
641
|
*/
|
|
560
|
-
async getUserAddress() {
|
|
561
|
-
if (!this.context.walletClient.account) {
|
|
562
|
-
throw new Error("No wallet account connected");
|
|
563
|
-
}
|
|
564
|
-
if (typeof this.context.walletClient.account === "string") {
|
|
565
|
-
return this.context.walletClient.account;
|
|
566
|
-
}
|
|
567
|
-
if (typeof this.context.walletClient.account === "object" && this.context.walletClient.account.address) {
|
|
568
|
-
return this.context.walletClient.account.address;
|
|
569
|
-
}
|
|
570
|
-
throw new Error("Unable to determine wallet address");
|
|
571
|
-
}
|
|
572
642
|
/**
|
|
573
643
|
* Fetches and attaches definitions to an array of schemas.
|
|
574
644
|
*
|