@opendatalabs/vana-sdk 0.1.0-alpha.d6bebb0 → 0.1.0-alpha.d7fc764
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 +98 -36
- package/dist/browser.cjs +29 -0
- package/dist/browser.cjs.map +1 -0
- package/dist/browser.d.cts +2 -0
- package/dist/browser.d.ts +2 -0
- package/dist/browser.js +5 -0
- package/dist/browser.js.map +1 -0
- package/dist/chains/definitions.cjs +92 -0
- package/dist/chains/definitions.cjs.map +1 -0
- package/dist/chains/definitions.d.cts +53 -0
- package/dist/chains/definitions.d.ts +53 -0
- package/dist/chains/definitions.js +64 -0
- package/dist/chains/definitions.js.map +1 -0
- package/dist/chains/index.cjs +37 -0
- package/dist/chains/index.cjs.map +1 -0
- package/dist/chains/index.d.cts +2 -0
- package/dist/chains/index.d.ts +2 -0
- package/dist/chains/index.js +15 -0
- package/dist/chains/index.js.map +1 -0
- package/dist/chains.browser.cjs +6 -65
- package/dist/chains.browser.cjs.map +1 -1
- package/dist/chains.browser.d.cts +2 -53
- package/dist/chains.browser.d.ts +2 -53
- package/dist/chains.browser.js +7 -57
- package/dist/chains.browser.js.map +1 -1
- package/dist/chains.cjs +6 -65
- package/dist/chains.cjs.map +1 -1
- package/dist/chains.d.cts +1 -1
- package/dist/chains.d.ts +1 -1
- package/dist/chains.js +7 -57
- package/dist/chains.js.map +1 -1
- package/dist/chains.node.cjs +6 -65
- package/dist/chains.node.cjs.map +1 -1
- package/dist/chains.node.d.cts +1 -1
- package/dist/chains.node.d.ts +1 -1
- package/dist/chains.node.js +7 -57
- package/dist/chains.node.js.map +1 -1
- package/dist/config/addresses.cjs +325 -0
- package/dist/config/addresses.cjs.map +1 -0
- package/dist/config/addresses.d.cts +380 -0
- package/dist/config/addresses.d.ts +380 -0
- package/dist/config/addresses.js +295 -0
- package/dist/config/addresses.js.map +1 -0
- package/dist/config/chains.cjs +93 -0
- package/dist/config/chains.cjs.map +1 -0
- package/dist/config/chains.d.cts +85 -0
- package/dist/config/chains.d.ts +85 -0
- package/dist/config/chains.js +67 -0
- package/dist/config/chains.js.map +1 -0
- package/dist/config/eventMappings.cjs +114 -0
- package/dist/config/eventMappings.cjs.map +1 -0
- package/dist/config/eventMappings.d.cts +108 -0
- package/dist/config/eventMappings.d.ts +108 -0
- package/dist/config/eventMappings.js +90 -0
- package/dist/config/eventMappings.js.map +1 -0
- package/dist/config/features.cjs +52 -0
- package/dist/config/features.cjs.map +1 -0
- package/dist/config/features.d.cts +64 -0
- package/dist/config/features.d.ts +64 -0
- package/dist/config/features.js +28 -0
- package/dist/config/features.js.map +1 -0
- package/dist/contracts/contractController.cjs +126 -0
- package/dist/contracts/contractController.cjs.map +1 -0
- package/dist/contracts/contractController.d.cts +96 -0
- package/dist/contracts/contractController.d.ts +96 -0
- package/dist/contracts/contractController.js +103 -0
- package/dist/contracts/contractController.js.map +1 -0
- package/dist/controllers/data.cjs +2239 -0
- package/dist/controllers/data.cjs.map +1 -0
- package/dist/controllers/data.d.cts +941 -0
- package/dist/controllers/data.d.ts +941 -0
- package/dist/controllers/data.js +2222 -0
- package/dist/controllers/data.js.map +1 -0
- package/dist/controllers/permissions.cjs +3726 -0
- package/dist/controllers/permissions.cjs.map +1 -0
- package/dist/controllers/permissions.d.cts +25 -0
- package/dist/controllers/permissions.d.ts +25 -0
- package/dist/controllers/permissions.js +3702 -0
- package/dist/controllers/permissions.js.map +1 -0
- package/dist/controllers/protocol.cjs +179 -0
- package/dist/controllers/protocol.cjs.map +1 -0
- package/dist/controllers/protocol.d.cts +167 -0
- package/dist/controllers/protocol.d.ts +167 -0
- package/dist/controllers/protocol.js +162 -0
- package/dist/controllers/protocol.js.map +1 -0
- package/dist/controllers/schemas.cjs +584 -0
- package/dist/controllers/schemas.cjs.map +1 -0
- package/dist/controllers/schemas.d.cts +272 -0
- package/dist/controllers/schemas.d.ts +272 -0
- package/dist/controllers/schemas.js +560 -0
- package/dist/controllers/schemas.js.map +1 -0
- package/dist/controllers/server.cjs +427 -0
- package/dist/controllers/server.cjs.map +1 -0
- package/dist/controllers/server.d.cts +243 -0
- package/dist/controllers/server.d.ts +243 -0
- package/dist/controllers/server.js +408 -0
- package/dist/controllers/server.js.map +1 -0
- package/dist/core/apiClient.cjs +325 -0
- package/dist/core/apiClient.cjs.map +1 -0
- package/dist/core/apiClient.d.cts +165 -0
- package/dist/core/apiClient.d.ts +165 -0
- package/dist/core/apiClient.js +309 -0
- package/dist/core/apiClient.js.map +1 -0
- package/dist/core/client.cjs +70 -0
- package/dist/core/client.cjs.map +1 -0
- package/dist/core/client.d.cts +92 -0
- package/dist/core/client.d.ts +92 -0
- package/dist/core/client.js +47 -0
- package/dist/core/client.js.map +1 -0
- package/dist/core/generics.cjs +388 -0
- package/dist/core/generics.cjs.map +1 -0
- package/dist/core/generics.d.cts +120 -0
- package/dist/core/generics.d.ts +120 -0
- package/dist/core/generics.js +366 -0
- package/dist/core/generics.js.map +1 -0
- package/dist/core.cjs +640 -0
- package/dist/core.cjs.map +1 -0
- package/dist/core.d.cts +466 -0
- package/dist/core.d.ts +466 -0
- package/dist/core.js +628 -0
- package/dist/core.js.map +1 -0
- package/dist/crypto/ecies/__tests__/test-vectors.cjs +102 -0
- package/dist/crypto/ecies/__tests__/test-vectors.cjs.map +1 -0
- package/dist/crypto/ecies/__tests__/test-vectors.d.cts +40 -0
- package/dist/crypto/ecies/__tests__/test-vectors.d.ts +40 -0
- package/dist/crypto/ecies/__tests__/test-vectors.js +77 -0
- package/dist/crypto/ecies/__tests__/test-vectors.js.map +1 -0
- package/dist/crypto/ecies/base.cjs +231 -0
- package/dist/crypto/ecies/base.cjs.map +1 -0
- package/dist/crypto/ecies/base.d.cts +143 -0
- package/dist/crypto/ecies/base.d.ts +143 -0
- package/dist/crypto/ecies/base.js +211 -0
- package/dist/crypto/ecies/base.js.map +1 -0
- package/dist/crypto/ecies/browser.cjs +164 -0
- package/dist/crypto/ecies/browser.cjs.map +1 -0
- package/dist/crypto/ecies/browser.d.cts +48 -0
- package/dist/crypto/ecies/browser.d.ts +48 -0
- package/dist/crypto/ecies/browser.js +130 -0
- package/dist/crypto/ecies/browser.js.map +1 -0
- package/dist/crypto/ecies/constants.cjs +131 -0
- package/dist/crypto/ecies/constants.cjs.map +1 -0
- package/dist/crypto/ecies/constants.d.cts +122 -0
- package/dist/crypto/ecies/constants.d.ts +122 -0
- package/dist/crypto/ecies/constants.js +101 -0
- package/dist/crypto/ecies/constants.js.map +1 -0
- package/dist/crypto/ecies/index.cjs +35 -0
- package/dist/crypto/ecies/index.cjs.map +1 -0
- package/dist/crypto/ecies/index.d.cts +1 -0
- package/dist/crypto/ecies/index.d.ts +1 -0
- package/dist/crypto/ecies/index.js +13 -0
- package/dist/crypto/ecies/index.js.map +1 -0
- package/dist/crypto/ecies/interface.cjs +88 -0
- package/dist/crypto/ecies/interface.cjs.map +1 -0
- package/dist/crypto/ecies/interface.d.cts +176 -0
- package/dist/crypto/ecies/interface.d.ts +176 -0
- package/dist/crypto/ecies/interface.js +61 -0
- package/dist/crypto/ecies/interface.js.map +1 -0
- package/dist/crypto/ecies/node.cjs +166 -0
- package/dist/crypto/ecies/node.cjs.map +1 -0
- package/dist/crypto/ecies/node.d.cts +50 -0
- package/dist/crypto/ecies/node.d.ts +50 -0
- package/dist/crypto/ecies/node.js +144 -0
- package/dist/crypto/ecies/node.js.map +1 -0
- package/dist/crypto/ecies/utils.cjs +91 -0
- package/dist/crypto/ecies/utils.cjs.map +1 -0
- package/dist/crypto/ecies/utils.d.cts +67 -0
- package/dist/crypto/ecies/utils.d.ts +67 -0
- package/dist/crypto/ecies/utils.js +60 -0
- package/dist/crypto/ecies/utils.js.map +1 -0
- package/dist/crypto/services/WalletKeyEncryptionService.cjs +128 -0
- package/dist/crypto/services/WalletKeyEncryptionService.cjs.map +1 -0
- package/dist/crypto/services/WalletKeyEncryptionService.d.cts +92 -0
- package/dist/crypto/services/WalletKeyEncryptionService.d.ts +92 -0
- package/dist/crypto/services/WalletKeyEncryptionService.js +112 -0
- package/dist/crypto/services/WalletKeyEncryptionService.js.map +1 -0
- package/dist/diagnostics.cjs +37 -0
- package/dist/diagnostics.cjs.map +1 -0
- package/dist/diagnostics.d.cts +26 -0
- package/dist/diagnostics.d.ts +26 -0
- package/dist/diagnostics.js +13 -0
- package/dist/diagnostics.js.map +1 -0
- package/dist/errors.cjs +141 -0
- package/dist/errors.cjs.map +1 -0
- package/dist/errors.d.cts +350 -0
- package/dist/errors.d.ts +350 -0
- package/dist/errors.js +108 -0
- package/dist/errors.js.map +1 -0
- package/dist/generated/abi/ComputeEngineImplementation.cjs +1313 -0
- package/dist/generated/abi/ComputeEngineImplementation.cjs.map +1 -0
- package/dist/generated/abi/ComputeEngineImplementation.d.cts +996 -0
- package/dist/generated/abi/ComputeEngineImplementation.d.ts +996 -0
- package/dist/generated/abi/ComputeEngineImplementation.js +1289 -0
- package/dist/generated/abi/ComputeEngineImplementation.js.map +1 -0
- package/dist/generated/abi/ComputeInstructionRegistryImplementation.cjs +734 -0
- package/dist/generated/abi/ComputeInstructionRegistryImplementation.cjs.map +1 -0
- package/dist/generated/abi/ComputeInstructionRegistryImplementation.d.cts +545 -0
- package/dist/generated/abi/ComputeInstructionRegistryImplementation.d.ts +545 -0
- package/dist/generated/abi/ComputeInstructionRegistryImplementation.js +710 -0
- package/dist/generated/abi/ComputeInstructionRegistryImplementation.js.map +1 -0
- package/dist/generated/abi/DATFactoryImplementation.cjs +882 -0
- package/dist/generated/abi/DATFactoryImplementation.cjs.map +1 -0
- package/dist/generated/abi/DATFactoryImplementation.d.cts +661 -0
- package/dist/generated/abi/DATFactoryImplementation.d.ts +661 -0
- package/dist/generated/abi/DATFactoryImplementation.js +858 -0
- package/dist/generated/abi/DATFactoryImplementation.js.map +1 -0
- package/dist/generated/abi/DATImplementation.cjs +934 -0
- package/dist/generated/abi/DATImplementation.cjs.map +1 -0
- package/dist/generated/abi/DATImplementation.d.cts +693 -0
- package/dist/generated/abi/DATImplementation.d.ts +693 -0
- package/dist/generated/abi/DATImplementation.js +910 -0
- package/dist/generated/abi/DATImplementation.js.map +1 -0
- package/dist/generated/abi/DATPausableImplementation.cjs +1523 -0
- package/dist/generated/abi/DATPausableImplementation.cjs.map +1 -0
- package/dist/generated/abi/DATPausableImplementation.d.cts +1145 -0
- package/dist/generated/abi/DATPausableImplementation.d.ts +1145 -0
- package/dist/generated/abi/DATPausableImplementation.js +1499 -0
- package/dist/generated/abi/DATPausableImplementation.js.map +1 -0
- package/dist/generated/abi/DATVotesImplementation.cjs +1460 -0
- package/dist/generated/abi/DATVotesImplementation.cjs.map +1 -0
- package/dist/generated/abi/DATVotesImplementation.d.cts +1095 -0
- package/dist/generated/abi/DATVotesImplementation.d.ts +1095 -0
- package/dist/generated/abi/DATVotesImplementation.js +1436 -0
- package/dist/generated/abi/DATVotesImplementation.js.map +1 -0
- package/dist/generated/abi/DLPPerformanceImplementation.cjs +1160 -0
- package/dist/generated/abi/DLPPerformanceImplementation.cjs.map +1 -0
- package/dist/generated/abi/DLPPerformanceImplementation.d.cts +883 -0
- package/dist/generated/abi/DLPPerformanceImplementation.d.ts +883 -0
- package/dist/generated/abi/DLPPerformanceImplementation.js +1136 -0
- package/dist/generated/abi/DLPPerformanceImplementation.js.map +1 -0
- package/dist/generated/abi/DLPRegistryImplementation.cjs +1469 -0
- package/dist/generated/abi/DLPRegistryImplementation.cjs.map +1 -0
- package/dist/generated/abi/DLPRegistryImplementation.d.cts +1123 -0
- package/dist/generated/abi/DLPRegistryImplementation.d.ts +1123 -0
- package/dist/generated/abi/DLPRegistryImplementation.js +1445 -0
- package/dist/generated/abi/DLPRegistryImplementation.js.map +1 -0
- package/dist/generated/abi/DLPRegistryTreasuryImplementation.cjs +612 -0
- package/dist/generated/abi/DLPRegistryTreasuryImplementation.cjs.map +1 -0
- package/dist/generated/abi/DLPRegistryTreasuryImplementation.d.cts +452 -0
- package/dist/generated/abi/DLPRegistryTreasuryImplementation.d.ts +452 -0
- package/dist/generated/abi/DLPRegistryTreasuryImplementation.js +588 -0
- package/dist/generated/abi/DLPRegistryTreasuryImplementation.js.map +1 -0
- package/dist/generated/abi/DLPRewardDeployerImplementation.cjs +948 -0
- package/dist/generated/abi/DLPRewardDeployerImplementation.cjs.map +1 -0
- package/dist/generated/abi/DLPRewardDeployerImplementation.d.cts +714 -0
- package/dist/generated/abi/DLPRewardDeployerImplementation.d.ts +714 -0
- package/dist/generated/abi/DLPRewardDeployerImplementation.js +924 -0
- package/dist/generated/abi/DLPRewardDeployerImplementation.js.map +1 -0
- package/dist/generated/abi/DLPRewardDeployerTreasuryImplementation.cjs +612 -0
- package/dist/generated/abi/DLPRewardDeployerTreasuryImplementation.cjs.map +1 -0
- package/dist/generated/abi/DLPRewardDeployerTreasuryImplementation.d.cts +452 -0
- package/dist/generated/abi/DLPRewardDeployerTreasuryImplementation.d.ts +452 -0
- package/dist/generated/abi/DLPRewardDeployerTreasuryImplementation.js +588 -0
- package/dist/generated/abi/DLPRewardDeployerTreasuryImplementation.js.map +1 -0
- package/dist/generated/abi/DLPRewardSwapImplementation.cjs +939 -0
- package/dist/generated/abi/DLPRewardSwapImplementation.cjs.map +1 -0
- package/dist/generated/abi/DLPRewardSwapImplementation.d.cts +706 -0
- package/dist/generated/abi/DLPRewardSwapImplementation.d.ts +706 -0
- package/dist/generated/abi/DLPRewardSwapImplementation.js +915 -0
- package/dist/generated/abi/DLPRewardSwapImplementation.js.map +1 -0
- package/dist/generated/abi/DLPRootImplementation.cjs +1644 -0
- package/dist/generated/abi/DLPRootImplementation.cjs.map +1 -0
- package/dist/generated/abi/DLPRootImplementation.d.cts +1248 -0
- package/dist/generated/abi/DLPRootImplementation.d.ts +1248 -0
- package/dist/generated/abi/DLPRootImplementation.js +1620 -0
- package/dist/generated/abi/DLPRootImplementation.js.map +1 -0
- package/dist/generated/abi/DLPTreasuryImplementation.cjs +612 -0
- package/dist/generated/abi/DLPTreasuryImplementation.cjs.map +1 -0
- package/dist/generated/abi/DLPTreasuryImplementation.d.cts +452 -0
- package/dist/generated/abi/DLPTreasuryImplementation.d.ts +452 -0
- package/dist/generated/abi/DLPTreasuryImplementation.js +588 -0
- package/dist/generated/abi/DLPTreasuryImplementation.js.map +1 -0
- package/dist/generated/abi/DataLiquidityPoolImplementation.cjs +985 -0
- package/dist/generated/abi/DataLiquidityPoolImplementation.cjs.map +1 -0
- package/dist/generated/abi/DataLiquidityPoolImplementation.d.cts +737 -0
- package/dist/generated/abi/DataLiquidityPoolImplementation.d.ts +737 -0
- package/dist/generated/abi/DataLiquidityPoolImplementation.js +961 -0
- package/dist/generated/abi/DataLiquidityPoolImplementation.js.map +1 -0
- package/dist/generated/abi/DataPortabilityGranteesImplementation.cjs +888 -0
- package/dist/generated/abi/DataPortabilityGranteesImplementation.cjs.map +1 -0
- package/dist/generated/abi/DataPortabilityGranteesImplementation.d.cts +661 -0
- package/dist/generated/abi/DataPortabilityGranteesImplementation.d.ts +661 -0
- package/dist/generated/abi/DataPortabilityGranteesImplementation.js +864 -0
- package/dist/generated/abi/DataPortabilityGranteesImplementation.js.map +1 -0
- package/dist/generated/abi/DataPortabilityPermissionsImplementation.cjs +1317 -0
- package/dist/generated/abi/DataPortabilityPermissionsImplementation.cjs.map +1 -0
- package/dist/generated/abi/DataPortabilityPermissionsImplementation.d.cts +989 -0
- package/dist/generated/abi/DataPortabilityPermissionsImplementation.d.ts +989 -0
- package/dist/generated/abi/DataPortabilityPermissionsImplementation.js +1293 -0
- package/dist/generated/abi/DataPortabilityPermissionsImplementation.js.map +1 -0
- package/dist/generated/abi/DataPortabilityServersImplementation.cjs +1438 -0
- package/dist/generated/abi/DataPortabilityServersImplementation.cjs.map +1 -0
- package/dist/generated/abi/DataPortabilityServersImplementation.d.cts +1086 -0
- package/dist/generated/abi/DataPortabilityServersImplementation.d.ts +1086 -0
- package/dist/generated/abi/DataPortabilityServersImplementation.js +1414 -0
- package/dist/generated/abi/DataPortabilityServersImplementation.js.map +1 -0
- package/dist/generated/abi/DataRefinerRegistryImplementation.cjs +984 -0
- package/dist/generated/abi/DataRefinerRegistryImplementation.cjs.map +1 -0
- package/dist/generated/abi/DataRefinerRegistryImplementation.d.cts +737 -0
- package/dist/generated/abi/DataRefinerRegistryImplementation.d.ts +737 -0
- package/dist/generated/abi/DataRefinerRegistryImplementation.js +960 -0
- package/dist/generated/abi/DataRefinerRegistryImplementation.js.map +1 -0
- package/dist/generated/abi/DataRegistryImplementation.cjs +1328 -0
- package/dist/generated/abi/DataRegistryImplementation.cjs.map +1 -0
- package/dist/generated/abi/DataRegistryImplementation.d.cts +1004 -0
- package/dist/generated/abi/DataRegistryImplementation.d.ts +1004 -0
- package/dist/generated/abi/DataRegistryImplementation.js +1304 -0
- package/dist/generated/abi/DataRegistryImplementation.js.map +1 -0
- package/dist/generated/abi/QueryEngineImplementation.cjs +1319 -0
- package/dist/generated/abi/QueryEngineImplementation.cjs.map +1 -0
- package/dist/generated/abi/QueryEngineImplementation.d.cts +1001 -0
- package/dist/generated/abi/QueryEngineImplementation.d.ts +1001 -0
- package/dist/generated/abi/QueryEngineImplementation.js +1295 -0
- package/dist/generated/abi/QueryEngineImplementation.js.map +1 -0
- package/dist/generated/abi/SwapHelperImplementation.cjs +1019 -0
- package/dist/generated/abi/SwapHelperImplementation.cjs.map +1 -0
- package/dist/generated/abi/SwapHelperImplementation.d.cts +764 -0
- package/dist/generated/abi/SwapHelperImplementation.d.ts +764 -0
- package/dist/generated/abi/SwapHelperImplementation.js +995 -0
- package/dist/generated/abi/SwapHelperImplementation.js.map +1 -0
- package/dist/generated/abi/TeePoolDedicatedGpuImplementation.cjs +936 -0
- package/dist/generated/abi/TeePoolDedicatedGpuImplementation.cjs.map +1 -0
- package/dist/generated/abi/TeePoolDedicatedGpuImplementation.d.cts +701 -0
- package/dist/generated/abi/TeePoolDedicatedGpuImplementation.d.ts +701 -0
- package/dist/generated/abi/TeePoolDedicatedGpuImplementation.js +912 -0
- package/dist/generated/abi/TeePoolDedicatedGpuImplementation.js.map +1 -0
- package/dist/generated/abi/TeePoolDedicatedStandardImplementation.cjs +936 -0
- package/dist/generated/abi/TeePoolDedicatedStandardImplementation.cjs.map +1 -0
- package/dist/generated/abi/TeePoolDedicatedStandardImplementation.d.cts +701 -0
- package/dist/generated/abi/TeePoolDedicatedStandardImplementation.d.ts +701 -0
- package/dist/generated/abi/TeePoolDedicatedStandardImplementation.js +912 -0
- package/dist/generated/abi/TeePoolDedicatedStandardImplementation.js.map +1 -0
- package/dist/generated/abi/TeePoolEphemeralStandardImplementation.cjs +936 -0
- package/dist/generated/abi/TeePoolEphemeralStandardImplementation.cjs.map +1 -0
- package/dist/generated/abi/TeePoolEphemeralStandardImplementation.d.cts +701 -0
- package/dist/generated/abi/TeePoolEphemeralStandardImplementation.d.ts +701 -0
- package/dist/generated/abi/TeePoolEphemeralStandardImplementation.js +912 -0
- package/dist/generated/abi/TeePoolEphemeralStandardImplementation.js.map +1 -0
- package/dist/generated/abi/TeePoolImplementation.cjs +1313 -0
- package/dist/generated/abi/TeePoolImplementation.cjs.map +1 -0
- package/dist/generated/abi/TeePoolImplementation.d.cts +993 -0
- package/dist/generated/abi/TeePoolImplementation.d.ts +993 -0
- package/dist/generated/abi/TeePoolImplementation.js +1289 -0
- package/dist/generated/abi/TeePoolImplementation.js.map +1 -0
- package/dist/generated/abi/TeePoolPersistentGpuImplementation.cjs +936 -0
- package/dist/generated/abi/TeePoolPersistentGpuImplementation.cjs.map +1 -0
- package/dist/generated/abi/TeePoolPersistentGpuImplementation.d.cts +701 -0
- package/dist/generated/abi/TeePoolPersistentGpuImplementation.d.ts +701 -0
- package/dist/generated/abi/TeePoolPersistentGpuImplementation.js +912 -0
- package/dist/generated/abi/TeePoolPersistentGpuImplementation.js.map +1 -0
- package/dist/generated/abi/TeePoolPersistentStandardImplementation.cjs +936 -0
- package/dist/generated/abi/TeePoolPersistentStandardImplementation.cjs.map +1 -0
- package/dist/generated/abi/TeePoolPersistentStandardImplementation.d.cts +701 -0
- package/dist/generated/abi/TeePoolPersistentStandardImplementation.d.ts +701 -0
- package/dist/generated/abi/TeePoolPersistentStandardImplementation.js +912 -0
- package/dist/generated/abi/TeePoolPersistentStandardImplementation.js.map +1 -0
- package/dist/generated/abi/TeePoolPhalaImplementation.cjs +1313 -0
- package/dist/generated/abi/TeePoolPhalaImplementation.cjs.map +1 -0
- package/dist/generated/abi/TeePoolPhalaImplementation.d.cts +993 -0
- package/dist/generated/abi/TeePoolPhalaImplementation.d.ts +993 -0
- package/dist/generated/abi/TeePoolPhalaImplementation.js +1289 -0
- package/dist/generated/abi/TeePoolPhalaImplementation.js.map +1 -0
- package/dist/generated/abi/VanaEpochImplementation.cjs +1188 -0
- package/dist/generated/abi/VanaEpochImplementation.cjs.map +1 -0
- package/dist/generated/abi/VanaEpochImplementation.d.cts +900 -0
- package/dist/generated/abi/VanaEpochImplementation.d.ts +900 -0
- package/dist/generated/abi/VanaEpochImplementation.js +1164 -0
- package/dist/generated/abi/VanaEpochImplementation.js.map +1 -0
- package/dist/generated/abi/VanaPoolEntityImplementation.cjs +1234 -0
- package/dist/generated/abi/VanaPoolEntityImplementation.cjs.map +1 -0
- package/dist/generated/abi/VanaPoolEntityImplementation.d.cts +934 -0
- package/dist/generated/abi/VanaPoolEntityImplementation.d.ts +934 -0
- package/dist/generated/abi/VanaPoolEntityImplementation.js +1210 -0
- package/dist/generated/abi/VanaPoolEntityImplementation.js.map +1 -0
- package/dist/generated/abi/VanaPoolStakingImplementation.cjs +921 -0
- package/dist/generated/abi/VanaPoolStakingImplementation.cjs.map +1 -0
- package/dist/generated/abi/VanaPoolStakingImplementation.d.cts +693 -0
- package/dist/generated/abi/VanaPoolStakingImplementation.d.ts +693 -0
- package/dist/generated/abi/VanaPoolStakingImplementation.js +897 -0
- package/dist/generated/abi/VanaPoolStakingImplementation.js.map +1 -0
- package/dist/generated/abi/VanaPoolTreasuryImplementation.cjs +538 -0
- package/dist/generated/abi/VanaPoolTreasuryImplementation.cjs.map +1 -0
- package/dist/generated/abi/VanaPoolTreasuryImplementation.d.cts +394 -0
- package/dist/generated/abi/VanaPoolTreasuryImplementation.d.ts +394 -0
- package/dist/generated/abi/VanaPoolTreasuryImplementation.js +514 -0
- package/dist/generated/abi/VanaPoolTreasuryImplementation.js.map +1 -0
- package/dist/generated/abi/index.cjs +135 -0
- package/dist/generated/abi/index.cjs.map +1 -0
- package/dist/generated/abi/index.d.cts +26516 -0
- package/dist/generated/abi/index.d.ts +26516 -0
- package/dist/generated/abi/index.js +99 -0
- package/dist/generated/abi/index.js.map +1 -0
- package/dist/generated/server/server-exports.cjs +23 -0
- package/dist/generated/server/server-exports.cjs.map +1 -0
- package/dist/generated/server/server-exports.d.cts +21 -0
- package/dist/generated/server/server-exports.d.ts +21 -0
- package/dist/generated/server/server-exports.js +2 -0
- package/dist/generated/server/server-exports.js.map +1 -0
- package/dist/generated/server/server.cjs +17 -0
- package/dist/generated/server/server.cjs.map +1 -0
- package/dist/generated/server/server.d.cts +512 -0
- package/dist/generated/server/server.d.ts +512 -0
- package/dist/generated/server/server.js +1 -0
- package/dist/generated/server/server.js.map +1 -0
- package/dist/generated/subgraph.cjs +675 -0
- package/dist/generated/subgraph.cjs.map +1 -0
- package/dist/generated/subgraph.d.cts +5981 -0
- package/dist/generated/subgraph.d.ts +5981 -0
- package/dist/generated/subgraph.js +644 -0
- package/dist/generated/subgraph.js.map +1 -0
- package/dist/index.browser.cjs +151 -0
- package/dist/index.browser.cjs.map +1 -0
- package/dist/index.browser.d.cts +177 -0
- package/dist/index.browser.d.ts +67 -33072
- package/dist/index.browser.js +64 -41112
- package/dist/index.browser.js.map +1 -1
- package/dist/index.cjs +3 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -0
- package/dist/index.node.cjs +87 -41558
- package/dist/index.node.cjs.map +1 -1
- package/dist/index.node.d.cts +63 -33314
- package/dist/index.node.d.ts +63 -33314
- package/dist/index.node.js +68 -41448
- package/dist/index.node.js.map +1 -1
- package/dist/node.cjs +29 -0
- package/dist/node.cjs.map +1 -0
- package/dist/node.d.cts +2 -0
- package/dist/node.d.ts +2 -0
- package/dist/node.js +5 -0
- package/dist/node.js.map +1 -0
- package/dist/permissions-DNKPu_G0.d.cts +1666 -0
- package/dist/permissions-eo8YeLGf.d.ts +1666 -0
- package/dist/platform/browser-only.cjs +37 -0
- package/dist/platform/browser-only.cjs.map +1 -0
- package/dist/platform/browser-only.d.cts +25 -0
- package/dist/platform/browser-only.d.ts +25 -0
- package/dist/platform/browser-only.js +12 -0
- package/dist/platform/browser-only.js.map +1 -0
- package/dist/platform/browser-safe.cjs +57 -0
- package/dist/platform/browser-safe.cjs.map +1 -0
- package/dist/platform/browser-safe.d.cts +32 -0
- package/dist/platform/browser-safe.d.ts +32 -0
- package/dist/platform/browser-safe.js +31 -0
- package/dist/platform/browser-safe.js.map +1 -0
- package/dist/platform/browser.cjs +329 -0
- package/dist/platform/browser.cjs.map +1 -0
- package/dist/platform/browser.d.cts +74 -0
- package/dist/platform/browser.d.ts +74 -0
- package/dist/platform/browser.js +304 -0
- package/dist/platform/browser.js.map +1 -0
- package/dist/platform/index.cjs +50 -0
- package/dist/platform/index.cjs.map +1 -0
- package/dist/platform/index.d.cts +5 -0
- package/dist/platform/index.d.ts +5 -0
- package/dist/platform/index.js +27 -0
- package/dist/platform/index.js.map +1 -0
- package/dist/platform/interface.cjs +17 -0
- package/dist/platform/interface.cjs.map +1 -0
- package/dist/platform/interface.d.cts +218 -0
- package/dist/platform/interface.d.ts +218 -0
- package/dist/platform/interface.js +1 -0
- package/dist/platform/interface.js.map +1 -0
- package/dist/platform/node.cjs +351 -0
- package/dist/platform/node.cjs.map +1 -0
- package/dist/platform/node.d.cts +27 -0
- package/dist/platform/node.d.ts +27 -0
- package/dist/platform/node.js +327 -0
- package/dist/platform/node.js.map +1 -0
- package/dist/platform/shared/error-utils.cjs +43 -0
- package/dist/platform/shared/error-utils.cjs.map +1 -0
- package/dist/platform/shared/error-utils.d.cts +25 -0
- package/dist/platform/shared/error-utils.d.ts +25 -0
- package/dist/platform/shared/error-utils.js +18 -0
- package/dist/platform/shared/error-utils.js.map +1 -0
- package/dist/platform/shared/pgp-utils.cjs +55 -0
- package/dist/platform/shared/pgp-utils.cjs.map +1 -0
- package/dist/platform/shared/pgp-utils.d.cts +61 -0
- package/dist/platform/shared/pgp-utils.d.ts +61 -0
- package/dist/platform/shared/pgp-utils.js +29 -0
- package/dist/platform/shared/pgp-utils.js.map +1 -0
- package/dist/platform/shared/stream-utils.cjs +49 -0
- package/dist/platform/shared/stream-utils.cjs.map +1 -0
- package/dist/platform/shared/stream-utils.d.cts +16 -0
- package/dist/platform/shared/stream-utils.d.ts +16 -0
- package/dist/platform/shared/stream-utils.js +25 -0
- package/dist/platform/shared/stream-utils.js.map +1 -0
- package/dist/platform/utils.cjs +114 -0
- package/dist/platform/utils.cjs.map +1 -0
- package/dist/platform/utils.d.cts +53 -0
- package/dist/platform/utils.d.ts +53 -0
- package/dist/platform/utils.js +76 -0
- package/dist/platform/utils.js.map +1 -0
- package/dist/platform.browser.cjs +41 -0
- package/dist/platform.browser.cjs.map +1 -0
- package/dist/platform.browser.d.cts +4 -0
- package/dist/platform.browser.d.ts +4 -259
- package/dist/platform.browser.js +10 -309
- package/dist/platform.browser.js.map +1 -1
- package/dist/platform.cjs +14 -623
- package/dist/platform.cjs.map +1 -1
- package/dist/platform.d.cts +5 -1
- package/dist/platform.d.ts +5 -1
- package/dist/platform.js +14 -609
- package/dist/platform.js.map +1 -1
- package/dist/platform.node.cjs +14 -623
- package/dist/platform.node.cjs.map +1 -1
- package/dist/platform.node.d.cts +5 -299
- package/dist/platform.node.d.ts +5 -299
- package/dist/platform.node.js +14 -609
- package/dist/platform.node.js.map +1 -1
- package/dist/server/handler.cjs +101 -0
- package/dist/server/handler.cjs.map +1 -0
- package/dist/server/handler.d.cts +282 -0
- package/dist/server/handler.d.ts +282 -0
- package/dist/server/handler.js +77 -0
- package/dist/server/handler.js.map +1 -0
- package/dist/storage/index.cjs +44 -0
- package/dist/storage/index.cjs.map +1 -0
- package/dist/storage/index.d.cts +10 -0
- package/dist/storage/index.d.ts +10 -0
- package/dist/storage/index.js +15 -0
- package/dist/storage/index.js.map +1 -0
- package/dist/storage/manager.cjs +189 -0
- package/dist/storage/manager.cjs.map +1 -0
- package/dist/storage/manager.d.cts +150 -0
- package/dist/storage/manager.d.ts +150 -0
- package/dist/storage/manager.js +172 -0
- package/dist/storage/manager.js.map +1 -0
- package/dist/storage/providers/callback-storage.cjs +177 -0
- package/dist/storage/providers/callback-storage.cjs.map +1 -0
- package/dist/storage/providers/callback-storage.d.cts +100 -0
- package/dist/storage/providers/callback-storage.d.ts +100 -0
- package/dist/storage/providers/callback-storage.js +155 -0
- package/dist/storage/providers/callback-storage.js.map +1 -0
- package/dist/storage/providers/google-drive.cjs +516 -0
- package/dist/storage/providers/google-drive.cjs.map +1 -0
- package/dist/storage/providers/google-drive.d.cts +156 -0
- package/dist/storage/providers/google-drive.d.ts +156 -0
- package/dist/storage/providers/google-drive.js +497 -0
- package/dist/storage/providers/google-drive.js.map +1 -0
- package/dist/storage/providers/ipfs.cjs +283 -0
- package/dist/storage/providers/ipfs.cjs.map +1 -0
- package/dist/storage/providers/ipfs.d.cts +163 -0
- package/dist/storage/providers/ipfs.d.ts +163 -0
- package/dist/storage/providers/ipfs.js +264 -0
- package/dist/storage/providers/ipfs.js.map +1 -0
- package/dist/storage/providers/pinata.cjs +339 -0
- package/dist/storage/providers/pinata.cjs.map +1 -0
- package/dist/storage/providers/pinata.d.cts +173 -0
- package/dist/storage/providers/pinata.d.ts +173 -0
- package/dist/storage/providers/pinata.js +320 -0
- package/dist/storage/providers/pinata.js.map +1 -0
- package/dist/types/chains.cjs +36 -0
- package/dist/types/chains.cjs.map +1 -0
- package/dist/types/chains.d.cts +34 -0
- package/dist/types/chains.d.ts +34 -0
- package/dist/types/chains.js +11 -0
- package/dist/types/chains.js.map +1 -0
- package/dist/types/config.cjs +41 -0
- package/dist/types/config.cjs.map +1 -0
- package/dist/types/config.d.cts +726 -0
- package/dist/types/config.d.ts +726 -0
- package/dist/types/config.js +15 -0
- package/dist/types/config.js.map +1 -0
- package/dist/types/contracts.cjs +17 -0
- package/dist/types/contracts.cjs.map +1 -0
- package/dist/types/contracts.d.cts +68 -0
- package/dist/types/contracts.d.ts +68 -0
- package/dist/types/contracts.js +1 -0
- package/dist/types/contracts.js.map +1 -0
- package/dist/types/data.cjs +17 -0
- package/dist/types/data.cjs.map +1 -0
- package/dist/types/data.d.cts +694 -0
- package/dist/types/data.d.ts +694 -0
- package/dist/types/data.js +1 -0
- package/dist/types/data.js.map +1 -0
- package/dist/types/eccrypto-js.d.cjs +2 -0
- package/dist/types/eccrypto-js.d.cjs.map +1 -0
- package/dist/types/eccrypto-js.d.d.cts +13 -0
- package/dist/types/eccrypto-js.d.d.ts +13 -0
- package/dist/types/eccrypto-js.d.js +1 -0
- package/dist/types/eccrypto-js.d.js.map +1 -0
- package/dist/types/external-apis.cjs +61 -0
- package/dist/types/external-apis.cjs.map +1 -0
- package/dist/types/external-apis.d.cts +186 -0
- package/dist/types/external-apis.d.ts +186 -0
- package/dist/types/external-apis.js +34 -0
- package/dist/types/external-apis.js.map +1 -0
- package/dist/types/generics.cjs +17 -0
- package/dist/types/generics.cjs.map +1 -0
- package/dist/types/generics.d.cts +450 -0
- package/dist/types/generics.d.ts +450 -0
- package/dist/types/generics.js +1 -0
- package/dist/types/generics.js.map +1 -0
- package/dist/types/index.cjs +64 -0
- package/dist/types/index.cjs.map +1 -0
- package/dist/types/index.d.cts +34 -0
- package/dist/types/index.d.ts +34 -0
- package/dist/types/index.js +35 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/operations.cjs +65 -0
- package/dist/types/operations.cjs.map +1 -0
- package/dist/types/operations.d.cts +108 -0
- package/dist/types/operations.d.ts +108 -0
- package/dist/types/operations.js +37 -0
- package/dist/types/operations.js.map +1 -0
- package/dist/types/permissions.cjs +17 -0
- package/dist/types/permissions.cjs.map +1 -0
- package/dist/types/permissions.d.cts +957 -0
- package/dist/types/permissions.d.ts +957 -0
- package/dist/types/permissions.js +1 -0
- package/dist/types/permissions.js.map +1 -0
- package/dist/types/personal.cjs +17 -0
- package/dist/types/personal.cjs.map +1 -0
- package/dist/types/personal.d.cts +40 -0
- package/dist/types/personal.d.ts +40 -0
- package/dist/types/personal.js +1 -0
- package/dist/types/personal.js.map +1 -0
- package/dist/types/relayer.cjs +17 -0
- package/dist/types/relayer.cjs.map +1 -0
- package/dist/types/relayer.d.cts +284 -0
- package/dist/types/relayer.d.ts +284 -0
- package/dist/types/relayer.js +1 -0
- package/dist/types/relayer.js.map +1 -0
- package/dist/types/storage.cjs +39 -0
- package/dist/types/storage.cjs.map +1 -0
- package/dist/types/storage.d.cts +131 -0
- package/dist/types/storage.d.ts +131 -0
- package/dist/types/storage.js +18 -0
- package/dist/types/storage.js.map +1 -0
- package/dist/types/transactionResults.cjs +17 -0
- package/dist/types/transactionResults.cjs.map +1 -0
- package/dist/types/transactionResults.d.cts +25 -0
- package/dist/types/transactionResults.d.ts +25 -0
- package/dist/types/transactionResults.js +1 -0
- package/dist/types/transactionResults.js.map +1 -0
- package/dist/types/utils.cjs +17 -0
- package/dist/types/utils.cjs.map +1 -0
- package/dist/types/utils.d.cts +819 -0
- package/dist/types/utils.d.ts +819 -0
- package/dist/types/utils.js +1 -0
- package/dist/types/utils.js.map +1 -0
- package/dist/types.cjs +23 -0
- package/dist/types.cjs.map +1 -0
- package/dist/types.d.cts +66 -0
- package/dist/types.d.ts +66 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/blockchain/registry.cjs +81 -0
- package/dist/utils/blockchain/registry.cjs.map +1 -0
- package/dist/utils/blockchain/registry.d.cts +34 -0
- package/dist/utils/blockchain/registry.d.ts +34 -0
- package/dist/utils/blockchain/registry.js +56 -0
- package/dist/utils/blockchain/registry.js.map +1 -0
- package/dist/utils/crypto-utils.cjs +120 -0
- package/dist/utils/crypto-utils.cjs.map +1 -0
- package/dist/utils/crypto-utils.d.cts +118 -0
- package/dist/utils/crypto-utils.d.ts +118 -0
- package/dist/utils/crypto-utils.js +87 -0
- package/dist/utils/crypto-utils.js.map +1 -0
- package/dist/utils/download.cjs +69 -0
- package/dist/utils/download.cjs.map +1 -0
- package/dist/utils/download.d.cts +41 -0
- package/dist/utils/download.d.ts +41 -0
- package/dist/utils/download.js +45 -0
- package/dist/utils/download.js.map +1 -0
- package/dist/utils/encoding.cjs +66 -0
- package/dist/utils/encoding.cjs.map +1 -0
- package/dist/utils/encoding.d.cts +54 -0
- package/dist/utils/encoding.d.ts +54 -0
- package/dist/utils/encoding.js +39 -0
- package/dist/utils/encoding.js.map +1 -0
- package/dist/utils/encryption.cjs +170 -0
- package/dist/utils/encryption.cjs.map +1 -0
- package/dist/utils/encryption.d.cts +275 -0
- package/dist/utils/encryption.d.ts +275 -0
- package/dist/utils/encryption.js +136 -0
- package/dist/utils/encryption.js.map +1 -0
- package/dist/utils/eventParsing.cjs +111 -0
- package/dist/utils/eventParsing.cjs.map +1 -0
- package/dist/utils/eventParsing.d.cts +60 -0
- package/dist/utils/eventParsing.d.ts +60 -0
- package/dist/utils/eventParsing.js +86 -0
- package/dist/utils/eventParsing.js.map +1 -0
- package/dist/utils/formatters.cjs +53 -0
- package/dist/utils/formatters.cjs.map +1 -0
- package/dist/utils/formatters.d.cts +120 -0
- package/dist/utils/formatters.d.ts +120 -0
- package/dist/utils/formatters.js +26 -0
- package/dist/utils/formatters.js.map +1 -0
- package/dist/utils/grantFiles.cjs +175 -0
- package/dist/utils/grantFiles.cjs.map +1 -0
- package/dist/utils/grantFiles.d.cts +186 -0
- package/dist/utils/grantFiles.d.ts +186 -0
- package/dist/utils/grantFiles.js +137 -0
- package/dist/utils/grantFiles.js.map +1 -0
- package/dist/utils/grantValidation.cjs +243 -0
- package/dist/utils/grantValidation.cjs.map +1 -0
- package/dist/utils/grantValidation.d.cts +150 -0
- package/dist/utils/grantValidation.d.ts +150 -0
- package/dist/utils/grantValidation.js +201 -0
- package/dist/utils/grantValidation.js.map +1 -0
- package/dist/utils/grants.cjs +108 -0
- package/dist/utils/grants.cjs.map +1 -0
- package/dist/utils/grants.d.cts +70 -0
- package/dist/utils/grants.d.ts +70 -0
- package/dist/utils/grants.js +82 -0
- package/dist/utils/grants.js.map +1 -0
- package/dist/utils/ipfs.cjs +130 -0
- package/dist/utils/ipfs.cjs.map +1 -0
- package/dist/utils/ipfs.d.cts +90 -0
- package/dist/utils/ipfs.d.ts +90 -0
- package/dist/utils/ipfs.js +99 -0
- package/dist/utils/ipfs.js.map +1 -0
- package/dist/utils/lazy-import.cjs +40 -0
- package/dist/utils/lazy-import.cjs.map +1 -0
- package/dist/utils/lazy-import.d.cts +20 -0
- package/dist/utils/lazy-import.d.ts +20 -0
- package/dist/utils/lazy-import.js +16 -0
- package/dist/utils/lazy-import.js.map +1 -0
- package/dist/utils/multicall.cjs +231 -0
- package/dist/utils/multicall.cjs.map +1 -0
- package/dist/utils/multicall.d.cts +129 -0
- package/dist/utils/multicall.d.ts +129 -0
- package/dist/utils/multicall.js +206 -0
- package/dist/utils/multicall.js.map +1 -0
- package/dist/utils/schemaValidation.cjs +258 -0
- package/dist/utils/schemaValidation.cjs.map +1 -0
- package/dist/utils/schemaValidation.d.cts +172 -0
- package/dist/utils/schemaValidation.d.ts +172 -0
- package/dist/utils/schemaValidation.js +222 -0
- package/dist/utils/schemaValidation.js.map +1 -0
- package/dist/utils/signatureCache.cjs +187 -0
- package/dist/utils/signatureCache.cjs.map +1 -0
- package/dist/utils/signatureCache.d.cts +134 -0
- package/dist/utils/signatureCache.d.ts +134 -0
- package/dist/utils/signatureCache.js +165 -0
- package/dist/utils/signatureCache.js.map +1 -0
- package/dist/utils/signatureFormatter.cjs +45 -0
- package/dist/utils/signatureFormatter.cjs.map +1 -0
- package/dist/utils/signatureFormatter.d.cts +39 -0
- package/dist/utils/signatureFormatter.d.ts +39 -0
- package/dist/utils/signatureFormatter.js +21 -0
- package/dist/utils/signatureFormatter.js.map +1 -0
- package/dist/utils/transactionParsing.cjs +84 -0
- package/dist/utils/transactionParsing.cjs.map +1 -0
- package/dist/utils/transactionParsing.d.cts +25 -0
- package/dist/utils/transactionParsing.d.ts +25 -0
- package/dist/utils/transactionParsing.js +62 -0
- package/dist/utils/transactionParsing.js.map +1 -0
- package/dist/utils/typedDataConverter.cjs +43 -0
- package/dist/utils/typedDataConverter.cjs.map +1 -0
- package/dist/utils/typedDataConverter.d.cts +13 -0
- package/dist/utils/typedDataConverter.d.ts +13 -0
- package/dist/utils/typedDataConverter.js +19 -0
- package/dist/utils/typedDataConverter.js.map +1 -0
- package/dist/utils/urlResolver.cjs +55 -0
- package/dist/utils/urlResolver.cjs.map +1 -0
- package/dist/utils/urlResolver.d.cts +40 -0
- package/dist/utils/urlResolver.d.ts +40 -0
- package/dist/utils/urlResolver.js +30 -0
- package/dist/utils/urlResolver.js.map +1 -0
- package/package.json +54 -27
|
@@ -0,0 +1,560 @@
|
|
|
1
|
+
import { getContractAddress } from "../config/addresses";
|
|
2
|
+
import { getAbi } from "../generated/abi";
|
|
3
|
+
import { gasAwareMulticall } from "../utils/multicall";
|
|
4
|
+
import {
|
|
5
|
+
validateDataSchemaAgainstMetaSchema,
|
|
6
|
+
SchemaValidationError
|
|
7
|
+
} from "../utils/schemaValidation";
|
|
8
|
+
import {
|
|
9
|
+
fetchSchemaFromChain,
|
|
10
|
+
fetchSchemaCountFromChain
|
|
11
|
+
} from "../utils/blockchain/registry";
|
|
12
|
+
import {
|
|
13
|
+
GetSchemaDocument,
|
|
14
|
+
ListSchemasDocument,
|
|
15
|
+
CountSchemasDocument
|
|
16
|
+
} from "../generated/subgraph";
|
|
17
|
+
import { print } from "graphql";
|
|
18
|
+
import { fetchFromUrl, UrlResolutionError } from "../utils/urlResolver";
|
|
19
|
+
class SchemaController {
|
|
20
|
+
constructor(context) {
|
|
21
|
+
this.context = context;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Creates a new schema with automatic validation and IPFS upload.
|
|
25
|
+
*
|
|
26
|
+
* @remarks
|
|
27
|
+
* This is the primary method for creating schemas on the Vana network. It handles
|
|
28
|
+
* the complete workflow including schema validation, IPFS upload, and blockchain
|
|
29
|
+
* registration. The schema definition is stored unencrypted on IPFS to enable
|
|
30
|
+
* public access and reusability.
|
|
31
|
+
*
|
|
32
|
+
* The method automatically:
|
|
33
|
+
* - Validates the schema definition against the Vana metaschema
|
|
34
|
+
* - Uploads the definition to IPFS to generate a permanent URL
|
|
35
|
+
* - Registers the schema on the blockchain with the generated URL
|
|
36
|
+
*
|
|
37
|
+
* @param params - Schema creation parameters including name, dialect, and definition
|
|
38
|
+
* @returns Promise resolving to creation results with schema ID and transaction hash
|
|
39
|
+
* @throws {SchemaValidationError} When the schema definition is invalid
|
|
40
|
+
* @throws {Error} When IPFS upload or blockchain registration fails
|
|
41
|
+
* @example
|
|
42
|
+
* ```typescript
|
|
43
|
+
* // Create a JSON schema for user profiles
|
|
44
|
+
* const result = await vana.schemas.create({
|
|
45
|
+
* name: "User Profile",
|
|
46
|
+
* dialect: "json",
|
|
47
|
+
* schema: {
|
|
48
|
+
* type: "object",
|
|
49
|
+
* properties: {
|
|
50
|
+
* name: { type: "string" },
|
|
51
|
+
* age: { type: "number", minimum: 0 }
|
|
52
|
+
* },
|
|
53
|
+
* required: ["name"]
|
|
54
|
+
* }
|
|
55
|
+
* });
|
|
56
|
+
*
|
|
57
|
+
* console.log(`Schema created with ID: ${result.schemaId}`);
|
|
58
|
+
* ```
|
|
59
|
+
*/
|
|
60
|
+
async create(params) {
|
|
61
|
+
const { name, dialect, schema } = params;
|
|
62
|
+
try {
|
|
63
|
+
let schemaDefinition;
|
|
64
|
+
if (typeof schema === "string") {
|
|
65
|
+
try {
|
|
66
|
+
schemaDefinition = JSON.parse(schema);
|
|
67
|
+
} catch {
|
|
68
|
+
throw new SchemaValidationError(
|
|
69
|
+
"Invalid JSON in schema definition",
|
|
70
|
+
[]
|
|
71
|
+
);
|
|
72
|
+
}
|
|
73
|
+
} else {
|
|
74
|
+
schemaDefinition = schema;
|
|
75
|
+
}
|
|
76
|
+
const dataSchema = {
|
|
77
|
+
name,
|
|
78
|
+
version: "1.0.0",
|
|
79
|
+
dialect,
|
|
80
|
+
schema: schemaDefinition
|
|
81
|
+
};
|
|
82
|
+
validateDataSchemaAgainstMetaSchema(dataSchema);
|
|
83
|
+
if (!this.context.storageManager) {
|
|
84
|
+
if (this.context.validateStorageRequired) {
|
|
85
|
+
this.context.validateStorageRequired();
|
|
86
|
+
throw new Error("Storage validation failed");
|
|
87
|
+
} else {
|
|
88
|
+
throw new Error(
|
|
89
|
+
"Storage manager not configured. Please provide storage providers in VanaConfig."
|
|
90
|
+
);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
const schemaBlob = new Blob([JSON.stringify(dataSchema)], {
|
|
94
|
+
type: "application/json"
|
|
95
|
+
});
|
|
96
|
+
const uploadResult = await this.context.storageManager.upload(
|
|
97
|
+
schemaBlob,
|
|
98
|
+
`${name.replace(/[^a-zA-Z0-9]/g, "_")}.json`,
|
|
99
|
+
"ipfs"
|
|
100
|
+
// Use IPFS for public schema storage
|
|
101
|
+
);
|
|
102
|
+
const chainId = this.context.walletClient.chain?.id;
|
|
103
|
+
if (!chainId) {
|
|
104
|
+
throw new Error("Chain ID not available");
|
|
105
|
+
}
|
|
106
|
+
const dataRefinerRegistryAddress = getContractAddress(
|
|
107
|
+
chainId,
|
|
108
|
+
"DataRefinerRegistry"
|
|
109
|
+
);
|
|
110
|
+
const dataRefinerRegistryAbi = getAbi("DataRefinerRegistry");
|
|
111
|
+
const userAddress = await this.getUserAddress();
|
|
112
|
+
const txHash = await this.context.walletClient.writeContract({
|
|
113
|
+
address: dataRefinerRegistryAddress,
|
|
114
|
+
abi: dataRefinerRegistryAbi,
|
|
115
|
+
functionName: "addSchema",
|
|
116
|
+
args: [name, dialect, uploadResult.url],
|
|
117
|
+
account: this.context.walletClient.account || userAddress,
|
|
118
|
+
chain: this.context.walletClient.chain || null
|
|
119
|
+
});
|
|
120
|
+
const receipt = await this.context.publicClient.waitForTransactionReceipt(
|
|
121
|
+
{
|
|
122
|
+
hash: txHash,
|
|
123
|
+
confirmations: 1
|
|
124
|
+
}
|
|
125
|
+
);
|
|
126
|
+
const { parseSchemaAddedEvent } = await import("../utils/eventParsing");
|
|
127
|
+
const eventData = parseSchemaAddedEvent(receipt);
|
|
128
|
+
return {
|
|
129
|
+
schemaId: Number(eventData.schemaId),
|
|
130
|
+
definitionUrl: uploadResult.url,
|
|
131
|
+
transactionHash: txHash
|
|
132
|
+
};
|
|
133
|
+
} catch (error) {
|
|
134
|
+
if (error instanceof SchemaValidationError) {
|
|
135
|
+
throw error;
|
|
136
|
+
}
|
|
137
|
+
throw new Error(
|
|
138
|
+
`Schema creation failed: ${error instanceof Error ? error.message : "Unknown error"}`
|
|
139
|
+
);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Retrieves a complete schema by its ID with definition fetched and flattened.
|
|
144
|
+
*
|
|
145
|
+
* @param schemaId - The ID of the schema to retrieve
|
|
146
|
+
* @param options - Optional parameters
|
|
147
|
+
* @param options.subgraphUrl - Custom subgraph URL to use instead of default
|
|
148
|
+
* @returns Promise resolving to the complete schema object with all fields populated
|
|
149
|
+
* @throws {Error} When the schema is not found, definition cannot be fetched, or chain is unavailable
|
|
150
|
+
* @example
|
|
151
|
+
* ```typescript
|
|
152
|
+
* const schema = await vana.schemas.get(1);
|
|
153
|
+
* console.log(`Schema: ${schema.name} (${schema.dialect})`);
|
|
154
|
+
* console.log(`Version: ${schema.version}`);
|
|
155
|
+
* console.log(`Description: ${schema.description}`);
|
|
156
|
+
* console.log('Schema:', schema.schema);
|
|
157
|
+
*
|
|
158
|
+
* // Use directly with validator (schema has all required fields)
|
|
159
|
+
* validator.validateDataAgainstSchema(data, schema);
|
|
160
|
+
* ```
|
|
161
|
+
*/
|
|
162
|
+
async get(schemaId, options = {}) {
|
|
163
|
+
const subgraphUrl = options.subgraphUrl || this.context.subgraphUrl;
|
|
164
|
+
let metadata;
|
|
165
|
+
if (subgraphUrl) {
|
|
166
|
+
try {
|
|
167
|
+
metadata = await this._getSchemaViaSubgraph({ schemaId, subgraphUrl });
|
|
168
|
+
} catch (error) {
|
|
169
|
+
console.debug("Subgraph query failed, falling back to RPC:", error);
|
|
170
|
+
try {
|
|
171
|
+
metadata = await fetchSchemaFromChain(this.context, schemaId);
|
|
172
|
+
} catch (rpcError) {
|
|
173
|
+
throw new Error(
|
|
174
|
+
`Failed to get schema: ${rpcError instanceof Error ? rpcError.message : "Unknown error"}`
|
|
175
|
+
);
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
} else {
|
|
179
|
+
try {
|
|
180
|
+
metadata = await fetchSchemaFromChain(this.context, schemaId);
|
|
181
|
+
} catch (error) {
|
|
182
|
+
throw new Error(
|
|
183
|
+
`Failed to get schema: ${error instanceof Error ? error.message : "Unknown error"}`
|
|
184
|
+
);
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
const definition = await fetchFromUrl(
|
|
188
|
+
metadata.definitionUrl,
|
|
189
|
+
this.context.downloadRelayer
|
|
190
|
+
);
|
|
191
|
+
if (!definition || typeof definition !== "object") {
|
|
192
|
+
throw new Error(
|
|
193
|
+
`Invalid schema definition format for schema ${schemaId}`
|
|
194
|
+
);
|
|
195
|
+
}
|
|
196
|
+
validateDataSchemaAgainstMetaSchema(definition);
|
|
197
|
+
const dataSchema = definition;
|
|
198
|
+
if (dataSchema.name !== metadata.name) {
|
|
199
|
+
throw new Error(
|
|
200
|
+
`Schema name mismatch: on-chain="${metadata.name}" off-chain="${dataSchema.name}"`
|
|
201
|
+
);
|
|
202
|
+
}
|
|
203
|
+
if (dataSchema.dialect !== metadata.dialect) {
|
|
204
|
+
throw new Error(
|
|
205
|
+
`Schema dialect mismatch: on-chain="${metadata.dialect}" off-chain="${dataSchema.dialect}"`
|
|
206
|
+
);
|
|
207
|
+
}
|
|
208
|
+
return {
|
|
209
|
+
...metadata,
|
|
210
|
+
version: dataSchema.version,
|
|
211
|
+
description: dataSchema.description,
|
|
212
|
+
schema: dataSchema.schema
|
|
213
|
+
};
|
|
214
|
+
}
|
|
215
|
+
/**
|
|
216
|
+
* Gets the total number of schemas registered on the network.
|
|
217
|
+
*
|
|
218
|
+
* @param options - Optional parameters
|
|
219
|
+
* @param options.subgraphUrl - Custom subgraph URL to use instead of default
|
|
220
|
+
* @returns Promise resolving to the total schema count
|
|
221
|
+
* @throws {Error} When the count cannot be retrieved
|
|
222
|
+
* @example
|
|
223
|
+
* ```typescript
|
|
224
|
+
* const count = await vana.schemas.count();
|
|
225
|
+
* console.log(`Total schemas: ${count}`);
|
|
226
|
+
*
|
|
227
|
+
* // With custom subgraph
|
|
228
|
+
* const count = await vana.schemas.count({
|
|
229
|
+
* subgraphUrl: 'https://custom-subgraph.com/graphql'
|
|
230
|
+
* });
|
|
231
|
+
* ```
|
|
232
|
+
*/
|
|
233
|
+
async count(options = {}) {
|
|
234
|
+
const subgraphUrl = options.subgraphUrl || this.context.subgraphUrl;
|
|
235
|
+
if (subgraphUrl) {
|
|
236
|
+
try {
|
|
237
|
+
return await this._countSchemasViaSubgraph({ subgraphUrl });
|
|
238
|
+
} catch (error) {
|
|
239
|
+
console.debug("Subgraph query failed, falling back to RPC:", error);
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
try {
|
|
243
|
+
return await fetchSchemaCountFromChain(this.context);
|
|
244
|
+
} catch (error) {
|
|
245
|
+
throw new Error(
|
|
246
|
+
`Failed to get schemas count: ${error instanceof Error ? error.message : "Unknown error"}`
|
|
247
|
+
);
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
/**
|
|
251
|
+
* Lists all schemas with pagination.
|
|
252
|
+
*
|
|
253
|
+
* @param options - Optional parameters for listing schemas
|
|
254
|
+
* @param options.limit - Maximum number of schemas to return
|
|
255
|
+
* @param options.offset - Number of schemas to skip
|
|
256
|
+
* @param options.subgraphUrl - Custom subgraph URL to use instead of default
|
|
257
|
+
* @param options.includeDefinitions - Whether to fetch and include schema definitions (default: false for performance)
|
|
258
|
+
* @returns Promise resolving to an array of schemas
|
|
259
|
+
* @example
|
|
260
|
+
* ```typescript
|
|
261
|
+
* // Get all schemas (without definitions for performance)
|
|
262
|
+
* const schemas = await vana.schemas.list();
|
|
263
|
+
*
|
|
264
|
+
* // Get schemas with definitions
|
|
265
|
+
* const schemas = await vana.schemas.list({ includeDefinitions: true });
|
|
266
|
+
*
|
|
267
|
+
* // Get schemas with pagination
|
|
268
|
+
* const schemas = await vana.schemas.list({ limit: 10, offset: 0 });
|
|
269
|
+
* ```
|
|
270
|
+
*/
|
|
271
|
+
async list(options = {}) {
|
|
272
|
+
const { limit = 100, offset = 0, includeDefinitions = false } = options;
|
|
273
|
+
const subgraphUrl = options.subgraphUrl || this.context.subgraphUrl;
|
|
274
|
+
if (subgraphUrl) {
|
|
275
|
+
try {
|
|
276
|
+
return await this._listSchemasViaSubgraph({
|
|
277
|
+
limit,
|
|
278
|
+
offset,
|
|
279
|
+
subgraphUrl
|
|
280
|
+
});
|
|
281
|
+
} catch (error) {
|
|
282
|
+
console.debug("Subgraph query failed, falling back to RPC:", error);
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
try {
|
|
286
|
+
const totalCount = await this.count();
|
|
287
|
+
const start = offset;
|
|
288
|
+
const end = Math.min(start + limit, totalCount);
|
|
289
|
+
if (end <= start) {
|
|
290
|
+
return [];
|
|
291
|
+
}
|
|
292
|
+
const chainId = this.context.walletClient.chain?.id;
|
|
293
|
+
if (!chainId) {
|
|
294
|
+
throw new Error("Chain ID not available");
|
|
295
|
+
}
|
|
296
|
+
const dataRefinerRegistryAddress = getContractAddress(
|
|
297
|
+
chainId,
|
|
298
|
+
"DataRefinerRegistry"
|
|
299
|
+
);
|
|
300
|
+
const dataRefinerRegistryAbi = getAbi("DataRefinerRegistry");
|
|
301
|
+
const schemaCalls = [];
|
|
302
|
+
for (let i = start; i < end; i++) {
|
|
303
|
+
schemaCalls.push({
|
|
304
|
+
address: dataRefinerRegistryAddress,
|
|
305
|
+
abi: dataRefinerRegistryAbi,
|
|
306
|
+
functionName: "schemas",
|
|
307
|
+
args: [BigInt(i + 1)]
|
|
308
|
+
// Schema IDs are 1-based
|
|
309
|
+
});
|
|
310
|
+
}
|
|
311
|
+
const schemaResults = await gasAwareMulticall(this.context.publicClient, {
|
|
312
|
+
contracts: schemaCalls,
|
|
313
|
+
allowFailure: true
|
|
314
|
+
});
|
|
315
|
+
const schemas = [];
|
|
316
|
+
schemaResults.forEach((result, index) => {
|
|
317
|
+
if (result.status === "success" && result.result) {
|
|
318
|
+
const schemaId = start + index + 1;
|
|
319
|
+
const schemaData = result.result;
|
|
320
|
+
if (schemaData.name && schemaData.dialect && schemaData.definitionUrl) {
|
|
321
|
+
schemas.push({
|
|
322
|
+
id: schemaId,
|
|
323
|
+
name: schemaData.name,
|
|
324
|
+
dialect: schemaData.dialect,
|
|
325
|
+
definitionUrl: schemaData.definitionUrl
|
|
326
|
+
});
|
|
327
|
+
} else {
|
|
328
|
+
console.warn(`Incomplete schema data for ID ${schemaId}`);
|
|
329
|
+
}
|
|
330
|
+
} else {
|
|
331
|
+
console.warn(`Failed to retrieve schema ${start + index + 1}`);
|
|
332
|
+
}
|
|
333
|
+
});
|
|
334
|
+
if (includeDefinitions) {
|
|
335
|
+
await this._fetchDefinitionsForSchemas(schemas);
|
|
336
|
+
}
|
|
337
|
+
return schemas;
|
|
338
|
+
} catch (error) {
|
|
339
|
+
throw new Error(
|
|
340
|
+
`Failed to list schemas: ${error instanceof Error ? error.message : "Unknown error"}`
|
|
341
|
+
);
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
/**
|
|
345
|
+
* Adds a schema using the legacy method (low-level API).
|
|
346
|
+
*
|
|
347
|
+
* @deprecated Use create() instead for the high-level API with automatic IPFS upload
|
|
348
|
+
* @param params - Schema parameters including pre-generated definition URL
|
|
349
|
+
* @returns Promise resolving to the add schema result
|
|
350
|
+
*/
|
|
351
|
+
async addSchema(params) {
|
|
352
|
+
try {
|
|
353
|
+
const chainId = this.context.walletClient.chain?.id;
|
|
354
|
+
if (!chainId) {
|
|
355
|
+
throw new Error("Chain ID not available");
|
|
356
|
+
}
|
|
357
|
+
const dataRefinerRegistryAddress = getContractAddress(
|
|
358
|
+
chainId,
|
|
359
|
+
"DataRefinerRegistry"
|
|
360
|
+
);
|
|
361
|
+
const dataRefinerRegistryAbi = getAbi("DataRefinerRegistry");
|
|
362
|
+
const userAddress = await this.getUserAddress();
|
|
363
|
+
const txHash = await this.context.walletClient.writeContract({
|
|
364
|
+
address: dataRefinerRegistryAddress,
|
|
365
|
+
abi: dataRefinerRegistryAbi,
|
|
366
|
+
functionName: "addSchema",
|
|
367
|
+
args: [params.name, params.dialect, params.definitionUrl],
|
|
368
|
+
account: this.context.walletClient.account || userAddress,
|
|
369
|
+
chain: this.context.walletClient.chain || null
|
|
370
|
+
});
|
|
371
|
+
const receipt = await this.context.publicClient.waitForTransactionReceipt(
|
|
372
|
+
{
|
|
373
|
+
hash: txHash,
|
|
374
|
+
confirmations: 1
|
|
375
|
+
}
|
|
376
|
+
);
|
|
377
|
+
const { parseSchemaAddedEvent } = await import("../utils/eventParsing");
|
|
378
|
+
const eventData = parseSchemaAddedEvent(receipt);
|
|
379
|
+
return {
|
|
380
|
+
schemaId: Number(eventData.schemaId),
|
|
381
|
+
transactionHash: txHash
|
|
382
|
+
};
|
|
383
|
+
} catch (error) {
|
|
384
|
+
throw new Error(
|
|
385
|
+
`Failed to add schema: ${error instanceof Error ? error.message : "Unknown error"}`
|
|
386
|
+
);
|
|
387
|
+
}
|
|
388
|
+
}
|
|
389
|
+
/**
|
|
390
|
+
* Internal method: Query schema via subgraph
|
|
391
|
+
*
|
|
392
|
+
* @param params - Query parameters
|
|
393
|
+
* @param params.schemaId - The ID of the schema to retrieve
|
|
394
|
+
* @param params.subgraphUrl - The subgraph URL to query
|
|
395
|
+
* @returns Promise resolving to the schema object
|
|
396
|
+
* @private
|
|
397
|
+
*/
|
|
398
|
+
async _getSchemaViaSubgraph(params) {
|
|
399
|
+
const { schemaId, subgraphUrl } = params;
|
|
400
|
+
const response = await fetch(subgraphUrl, {
|
|
401
|
+
method: "POST",
|
|
402
|
+
headers: { "Content-Type": "application/json" },
|
|
403
|
+
body: JSON.stringify({
|
|
404
|
+
query: print(GetSchemaDocument),
|
|
405
|
+
variables: { id: schemaId.toString() }
|
|
406
|
+
})
|
|
407
|
+
});
|
|
408
|
+
if (!response.ok) {
|
|
409
|
+
throw new Error(
|
|
410
|
+
`Subgraph request failed: ${response.status} ${response.statusText}`
|
|
411
|
+
);
|
|
412
|
+
}
|
|
413
|
+
const result = await response.json();
|
|
414
|
+
if (result.errors) {
|
|
415
|
+
throw new Error(
|
|
416
|
+
`Subgraph query errors: ${result.errors.map((e) => e.message).join(", ")}`
|
|
417
|
+
);
|
|
418
|
+
}
|
|
419
|
+
if (!result.data?.schema) {
|
|
420
|
+
throw new Error(`Schema ${schemaId} not found in subgraph`);
|
|
421
|
+
}
|
|
422
|
+
const subgraphSchema = result.data.schema;
|
|
423
|
+
return {
|
|
424
|
+
id: parseInt(subgraphSchema.id),
|
|
425
|
+
name: subgraphSchema.name,
|
|
426
|
+
dialect: subgraphSchema.dialect,
|
|
427
|
+
definitionUrl: subgraphSchema.definitionUrl
|
|
428
|
+
};
|
|
429
|
+
}
|
|
430
|
+
/**
|
|
431
|
+
* Internal method: List schemas via subgraph
|
|
432
|
+
*
|
|
433
|
+
* @param params - Query parameters
|
|
434
|
+
* @param params.limit - Maximum number of schemas to return
|
|
435
|
+
* @param params.offset - Number of schemas to skip
|
|
436
|
+
* @param params.subgraphUrl - The subgraph URL to query
|
|
437
|
+
* @returns Promise resolving to an array of schemas
|
|
438
|
+
* @private
|
|
439
|
+
*/
|
|
440
|
+
async _listSchemasViaSubgraph(params) {
|
|
441
|
+
const { limit, offset, subgraphUrl } = params;
|
|
442
|
+
const response = await fetch(subgraphUrl, {
|
|
443
|
+
method: "POST",
|
|
444
|
+
headers: { "Content-Type": "application/json" },
|
|
445
|
+
body: JSON.stringify({
|
|
446
|
+
query: print(ListSchemasDocument),
|
|
447
|
+
variables: { first: limit, skip: offset }
|
|
448
|
+
})
|
|
449
|
+
});
|
|
450
|
+
if (!response.ok) {
|
|
451
|
+
throw new Error(
|
|
452
|
+
`Subgraph request failed: ${response.status} ${response.statusText}`
|
|
453
|
+
);
|
|
454
|
+
}
|
|
455
|
+
const result = await response.json();
|
|
456
|
+
if (result.errors) {
|
|
457
|
+
throw new Error(
|
|
458
|
+
`Subgraph query errors: ${result.errors.map((e) => e.message).join(", ")}`
|
|
459
|
+
);
|
|
460
|
+
}
|
|
461
|
+
if (!result.data?.schemas) {
|
|
462
|
+
return [];
|
|
463
|
+
}
|
|
464
|
+
const schemas = result.data.schemas.map((schema) => ({
|
|
465
|
+
id: parseInt(schema.id),
|
|
466
|
+
name: schema.name,
|
|
467
|
+
dialect: schema.dialect,
|
|
468
|
+
definitionUrl: schema.definitionUrl
|
|
469
|
+
}));
|
|
470
|
+
const includeDefinitions = params.includeDefinitions;
|
|
471
|
+
if (includeDefinitions) {
|
|
472
|
+
await this._fetchDefinitionsForSchemas(schemas);
|
|
473
|
+
}
|
|
474
|
+
return schemas;
|
|
475
|
+
}
|
|
476
|
+
/**
|
|
477
|
+
* Internal method: Count schemas via subgraph
|
|
478
|
+
*
|
|
479
|
+
* @param params - Query parameters
|
|
480
|
+
* @param params.subgraphUrl - The subgraph URL to query
|
|
481
|
+
* @returns Promise resolving to the total schema count
|
|
482
|
+
* @private
|
|
483
|
+
*/
|
|
484
|
+
async _countSchemasViaSubgraph(params) {
|
|
485
|
+
const { subgraphUrl } = params;
|
|
486
|
+
const response = await fetch(subgraphUrl, {
|
|
487
|
+
method: "POST",
|
|
488
|
+
headers: { "Content-Type": "application/json" },
|
|
489
|
+
body: JSON.stringify({
|
|
490
|
+
query: print(CountSchemasDocument),
|
|
491
|
+
variables: {}
|
|
492
|
+
})
|
|
493
|
+
});
|
|
494
|
+
if (!response.ok) {
|
|
495
|
+
throw new Error(
|
|
496
|
+
`Subgraph request failed: ${response.status} ${response.statusText}`
|
|
497
|
+
);
|
|
498
|
+
}
|
|
499
|
+
const result = await response.json();
|
|
500
|
+
if (result.errors) {
|
|
501
|
+
throw new Error(
|
|
502
|
+
`Subgraph query errors: ${result.errors.map((e) => e.message).join(", ")}`
|
|
503
|
+
);
|
|
504
|
+
}
|
|
505
|
+
return result.data?.schemas?.length || 0;
|
|
506
|
+
}
|
|
507
|
+
/**
|
|
508
|
+
* Gets the user's wallet address.
|
|
509
|
+
*
|
|
510
|
+
* @private
|
|
511
|
+
* @returns Promise resolving to the user's address
|
|
512
|
+
*/
|
|
513
|
+
async getUserAddress() {
|
|
514
|
+
if (!this.context.walletClient.account) {
|
|
515
|
+
throw new Error("No wallet account connected");
|
|
516
|
+
}
|
|
517
|
+
if (typeof this.context.walletClient.account === "string") {
|
|
518
|
+
return this.context.walletClient.account;
|
|
519
|
+
}
|
|
520
|
+
if (typeof this.context.walletClient.account === "object" && this.context.walletClient.account.address) {
|
|
521
|
+
return this.context.walletClient.account.address;
|
|
522
|
+
}
|
|
523
|
+
throw new Error("Unable to determine wallet address");
|
|
524
|
+
}
|
|
525
|
+
/**
|
|
526
|
+
* Fetches and attaches definitions to an array of schemas.
|
|
527
|
+
*
|
|
528
|
+
* @param schemas - Array of schemas to fetch definitions for
|
|
529
|
+
* @private
|
|
530
|
+
*/
|
|
531
|
+
async _fetchDefinitionsForSchemas(schemas) {
|
|
532
|
+
await Promise.all(
|
|
533
|
+
schemas.map(async (schema) => {
|
|
534
|
+
if (!schema.definitionUrl) return;
|
|
535
|
+
try {
|
|
536
|
+
const definition = await fetchFromUrl(
|
|
537
|
+
schema.definitionUrl,
|
|
538
|
+
this.context.downloadRelayer
|
|
539
|
+
);
|
|
540
|
+
if (definition && typeof definition === "object") {
|
|
541
|
+
validateDataSchemaAgainstMetaSchema(definition);
|
|
542
|
+
const dataSchema = definition;
|
|
543
|
+
schema.version = dataSchema.version;
|
|
544
|
+
schema.description = dataSchema.description;
|
|
545
|
+
schema.schema = dataSchema.schema;
|
|
546
|
+
}
|
|
547
|
+
} catch (error) {
|
|
548
|
+
console.error(
|
|
549
|
+
`Failed to fetch/validate definition for schema ${schema.id}:`,
|
|
550
|
+
error instanceof UrlResolutionError || error instanceof SchemaValidationError ? error.message : error
|
|
551
|
+
);
|
|
552
|
+
}
|
|
553
|
+
})
|
|
554
|
+
);
|
|
555
|
+
}
|
|
556
|
+
}
|
|
557
|
+
export {
|
|
558
|
+
SchemaController
|
|
559
|
+
};
|
|
560
|
+
//# sourceMappingURL=schemas.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/controllers/schemas.ts"],"sourcesContent":["import { Address } from \"viem\";\nimport {\n Schema,\n SchemaMetadata,\n CompleteSchema,\n AddSchemaParams,\n AddSchemaResult,\n} from \"../types/index\";\nimport { ControllerContext } from \"./permissions\";\nimport { getContractAddress } from \"../config/addresses\";\nimport { getAbi } from \"../generated/abi\";\nimport { gasAwareMulticall } from \"../utils/multicall\";\nimport {\n validateDataSchemaAgainstMetaSchema,\n SchemaValidationError,\n type DataSchema,\n} from \"../utils/schemaValidation\";\nimport {\n fetchSchemaFromChain,\n fetchSchemaCountFromChain,\n} from \"../utils/blockchain/registry\";\nimport {\n GetSchemaDocument,\n ListSchemasDocument,\n CountSchemasDocument,\n type GetSchemaQuery,\n type ListSchemasQuery,\n type CountSchemasQuery,\n} from \"../generated/subgraph\";\nimport { print } from \"graphql\";\nimport { fetchFromUrl, UrlResolutionError } from \"../utils/urlResolver\";\n\n/**\n * Parameters for creating a new schema with automatic IPFS upload.\n *\n * @remarks\n * This interface is used with the high-level `schemas.create()` method which\n * automatically uploads the schema definition to IPFS and registers it on-chain.\n * @category Schema Management\n */\nexport interface CreateSchemaParams {\n /** The name of the schema */\n name: string;\n /** The dialect of the schema (e.g., 'json' or 'sqlite') */\n dialect: \"json\" | \"sqlite\";\n /** The schema definition object or JSON string */\n schema: object | string;\n}\n\n/**\n * Result of creating a new schema.\n *\n * @remarks\n * Returned by the `schemas.create()` method after successful upload and registration.\n * @category Schema Management\n */\nexport interface CreateSchemaResult {\n /** The schema ID assigned by the contract */\n schemaId: number;\n /** The IPFS URL where the schema definition is stored */\n definitionUrl: string;\n /** The transaction hash of the schema registration */\n transactionHash: string;\n}\n\n/**\n * Manages data schemas and refiners on the Vana network.\n *\n * @remarks\n * This controller handles the complete lifecycle of data schemas including creation,\n * validation, IPFS upload, and blockchain registration. It provides methods for managing\n * both schemas (data structure definitions) and refiners (data processing definitions).\n *\n * **Schema Storage:**\n * Schemas are stored unencrypted on IPFS for public access and reusability across the network.\n * Schema definitions use JSON Schema format for data validation and structure definition.\n *\n * **Method Selection:**\n * - `create()` validates, uploads to IPFS, and registers new schemas on blockchain\n * - `get()` retrieves existing schema metadata by ID from blockchain contracts\n * - `count()` returns total number of registered schemas for pagination\n * - `list()` provides paginated access to all schemas with optional filtering\n * - `addSchema()` provides lower-level schema registration with pre-uploaded URLs\n *\n * **Storage Requirements:**\n * Methods requiring storage configuration: `create()`\n * Methods working without storage: `get()`, `count()`, `list()`, `addSchema()`\n *\n * @example\n * ```typescript\n * // Create a new schema with automatic IPFS upload\n * const result = await vana.schemas.create({\n * name: \"User Profile\",\n * dialect: \"json\",\n * schema: {\n * type: \"object\",\n * properties: {\n * name: { type: \"string\" },\n * age: { type: \"number\" }\n * },\n * required: [\"name\"]\n * }\n * });\n *\n * // Get an existing schema\n * const schema = await vana.schemas.get(1);\n *\n * // List all schemas\n * const count = await vana.schemas.count();\n * ```\n * @category Schema Management\n */\nexport class SchemaController {\n constructor(private readonly context: ControllerContext) {}\n\n /**\n * Creates a new schema with automatic validation and IPFS upload.\n *\n * @remarks\n * This is the primary method for creating schemas on the Vana network. It handles\n * the complete workflow including schema validation, IPFS upload, and blockchain\n * registration. The schema definition is stored unencrypted on IPFS to enable\n * public access and reusability.\n *\n * The method automatically:\n * - Validates the schema definition against the Vana metaschema\n * - Uploads the definition to IPFS to generate a permanent URL\n * - Registers the schema on the blockchain with the generated URL\n *\n * @param params - Schema creation parameters including name, dialect, and definition\n * @returns Promise resolving to creation results with schema ID and transaction hash\n * @throws {SchemaValidationError} When the schema definition is invalid\n * @throws {Error} When IPFS upload or blockchain registration fails\n * @example\n * ```typescript\n * // Create a JSON schema for user profiles\n * const result = await vana.schemas.create({\n * name: \"User Profile\",\n * dialect: \"json\",\n * schema: {\n * type: \"object\",\n * properties: {\n * name: { type: \"string\" },\n * age: { type: \"number\", minimum: 0 }\n * },\n * required: [\"name\"]\n * }\n * });\n *\n * console.log(`Schema created with ID: ${result.schemaId}`);\n * ```\n */\n async create(params: CreateSchemaParams): Promise<CreateSchemaResult> {\n const { name, dialect, schema } = params;\n\n try {\n // Step 1: Normalize and validate the schema definition\n let schemaDefinition: object;\n if (typeof schema === \"string\") {\n try {\n schemaDefinition = JSON.parse(schema);\n } catch {\n throw new SchemaValidationError(\n \"Invalid JSON in schema definition\",\n [],\n );\n }\n } else {\n schemaDefinition = schema;\n }\n\n // Step 2: Validate against metaschema\n const dataSchema: DataSchema = {\n name,\n version: \"1.0.0\",\n dialect,\n schema: schemaDefinition,\n };\n\n validateDataSchemaAgainstMetaSchema(dataSchema);\n\n // Step 3: Upload to IPFS (unencrypted for public access)\n if (!this.context.storageManager) {\n // Use centralized validation if available, otherwise fall back to old behavior\n if (this.context.validateStorageRequired) {\n this.context.validateStorageRequired();\n // The validateStorageRequired method throws, so this line should never be reached\n // but TypeScript doesn't know that, so we need this fallback\n throw new Error(\"Storage validation failed\");\n } else {\n throw new Error(\n \"Storage manager not configured. Please provide storage providers in VanaConfig.\",\n );\n }\n }\n\n const schemaBlob = new Blob([JSON.stringify(dataSchema)], {\n type: \"application/json\",\n });\n\n const uploadResult = await this.context.storageManager.upload(\n schemaBlob,\n `${name.replace(/[^a-zA-Z0-9]/g, \"_\")}.json`,\n \"ipfs\", // Use IPFS for public schema storage\n );\n\n // Step 4: Register on blockchain\n const chainId = this.context.walletClient.chain?.id;\n if (!chainId) {\n throw new Error(\"Chain ID not available\");\n }\n\n const dataRefinerRegistryAddress = getContractAddress(\n chainId,\n \"DataRefinerRegistry\",\n );\n const dataRefinerRegistryAbi = getAbi(\"DataRefinerRegistry\");\n\n const userAddress = await this.getUserAddress();\n\n const txHash = await this.context.walletClient.writeContract({\n address: dataRefinerRegistryAddress,\n abi: dataRefinerRegistryAbi,\n functionName: \"addSchema\",\n args: [name, dialect, uploadResult.url],\n account: this.context.walletClient.account || userAddress,\n chain: this.context.walletClient.chain || null,\n });\n\n // Wait for transaction confirmation and parse events\n const receipt = await this.context.publicClient.waitForTransactionReceipt(\n {\n hash: txHash,\n confirmations: 1,\n },\n );\n\n // Parse the SchemaAdded event to get the schema ID\n const { parseSchemaAddedEvent } = await import(\"../utils/eventParsing\");\n const eventData = parseSchemaAddedEvent(receipt);\n\n return {\n schemaId: Number(eventData.schemaId),\n definitionUrl: uploadResult.url,\n transactionHash: txHash,\n };\n } catch (error) {\n if (error instanceof SchemaValidationError) {\n throw error;\n }\n throw new Error(\n `Schema creation failed: ${error instanceof Error ? error.message : \"Unknown error\"}`,\n );\n }\n }\n\n /**\n * Retrieves a complete schema by its ID with definition fetched and flattened.\n *\n * @param schemaId - The ID of the schema to retrieve\n * @param options - Optional parameters\n * @param options.subgraphUrl - Custom subgraph URL to use instead of default\n * @returns Promise resolving to the complete schema object with all fields populated\n * @throws {Error} When the schema is not found, definition cannot be fetched, or chain is unavailable\n * @example\n * ```typescript\n * const schema = await vana.schemas.get(1);\n * console.log(`Schema: ${schema.name} (${schema.dialect})`);\n * console.log(`Version: ${schema.version}`);\n * console.log(`Description: ${schema.description}`);\n * console.log('Schema:', schema.schema);\n *\n * // Use directly with validator (schema has all required fields)\n * validator.validateDataAgainstSchema(data, schema);\n * ```\n */\n async get(\n schemaId: number,\n options: { subgraphUrl?: string } = {},\n ): Promise<CompleteSchema> {\n const subgraphUrl = options.subgraphUrl || this.context.subgraphUrl;\n\n let metadata: SchemaMetadata;\n\n // Try subgraph first if available\n if (subgraphUrl) {\n try {\n metadata = await this._getSchemaViaSubgraph({ schemaId, subgraphUrl });\n } catch (error) {\n console.debug(\"Subgraph query failed, falling back to RPC:\", error);\n // Fall through to RPC\n try {\n metadata = await fetchSchemaFromChain(this.context, schemaId);\n } catch (rpcError) {\n throw new Error(\n `Failed to get schema: ${rpcError instanceof Error ? rpcError.message : \"Unknown error\"}`,\n );\n }\n }\n } else {\n // Use RPC directly\n try {\n metadata = await fetchSchemaFromChain(this.context, schemaId);\n } catch (error) {\n throw new Error(\n `Failed to get schema: ${error instanceof Error ? error.message : \"Unknown error\"}`,\n );\n }\n }\n\n // Fetch the definition (should be a complete DataSchema)\n const definition = await fetchFromUrl(\n metadata.definitionUrl,\n this.context.downloadRelayer,\n );\n\n if (!definition || typeof definition !== \"object\") {\n throw new Error(\n `Invalid schema definition format for schema ${schemaId}`,\n );\n }\n\n // Validate the fetched DataSchema\n validateDataSchemaAgainstMetaSchema(definition);\n const dataSchema = definition as DataSchema;\n\n // Verify on-chain and off-chain data match\n if (dataSchema.name !== metadata.name) {\n throw new Error(\n `Schema name mismatch: on-chain=\"${metadata.name}\" off-chain=\"${dataSchema.name}\"`,\n );\n }\n if (dataSchema.dialect !== metadata.dialect) {\n throw new Error(\n `Schema dialect mismatch: on-chain=\"${metadata.dialect}\" off-chain=\"${dataSchema.dialect}\"`,\n );\n }\n\n // Return using on-chain values as authoritative source\n return {\n ...metadata,\n version: dataSchema.version,\n description: dataSchema.description,\n schema: dataSchema.schema,\n };\n }\n\n /**\n * Gets the total number of schemas registered on the network.\n *\n * @param options - Optional parameters\n * @param options.subgraphUrl - Custom subgraph URL to use instead of default\n * @returns Promise resolving to the total schema count\n * @throws {Error} When the count cannot be retrieved\n * @example\n * ```typescript\n * const count = await vana.schemas.count();\n * console.log(`Total schemas: ${count}`);\n *\n * // With custom subgraph\n * const count = await vana.schemas.count({\n * subgraphUrl: 'https://custom-subgraph.com/graphql'\n * });\n * ```\n */\n async count(options: { subgraphUrl?: string } = {}): Promise<number> {\n const subgraphUrl = options.subgraphUrl || this.context.subgraphUrl;\n\n // Try subgraph first if available\n if (subgraphUrl) {\n try {\n return await this._countSchemasViaSubgraph({ subgraphUrl });\n } catch (error) {\n console.debug(\"Subgraph query failed, falling back to RPC:\", error);\n // Fall through to RPC\n }\n }\n\n // Use RPC (as fallback or primary method)\n try {\n return await fetchSchemaCountFromChain(this.context);\n } catch (error) {\n throw new Error(\n `Failed to get schemas count: ${error instanceof Error ? error.message : \"Unknown error\"}`,\n );\n }\n }\n\n /**\n * Lists all schemas with pagination.\n *\n * @param options - Optional parameters for listing schemas\n * @param options.limit - Maximum number of schemas to return\n * @param options.offset - Number of schemas to skip\n * @param options.subgraphUrl - Custom subgraph URL to use instead of default\n * @param options.includeDefinitions - Whether to fetch and include schema definitions (default: false for performance)\n * @returns Promise resolving to an array of schemas\n * @example\n * ```typescript\n * // Get all schemas (without definitions for performance)\n * const schemas = await vana.schemas.list();\n *\n * // Get schemas with definitions\n * const schemas = await vana.schemas.list({ includeDefinitions: true });\n *\n * // Get schemas with pagination\n * const schemas = await vana.schemas.list({ limit: 10, offset: 0 });\n * ```\n */\n async list(\n options: {\n limit?: number;\n offset?: number;\n subgraphUrl?: string;\n includeDefinitions?: boolean;\n } = {},\n ): Promise<Schema[]> {\n const { limit = 100, offset = 0, includeDefinitions = false } = options;\n const subgraphUrl = options.subgraphUrl || this.context.subgraphUrl;\n\n // Try subgraph first if available\n if (subgraphUrl) {\n try {\n return await this._listSchemasViaSubgraph({\n limit,\n offset,\n subgraphUrl,\n });\n } catch (error) {\n console.debug(\"Subgraph query failed, falling back to RPC:\", error);\n // Fall through to RPC\n }\n }\n\n try {\n const totalCount = await this.count();\n const start = offset;\n const end = Math.min(start + limit, totalCount);\n\n if (end <= start) {\n return [];\n }\n\n // Get contract address and ABI\n const chainId = this.context.walletClient.chain?.id;\n if (!chainId) {\n throw new Error(\"Chain ID not available\");\n }\n const dataRefinerRegistryAddress = getContractAddress(\n chainId,\n \"DataRefinerRegistry\",\n );\n const dataRefinerRegistryAbi = getAbi(\"DataRefinerRegistry\");\n\n // Build multicall batch for fetching schemas\n const schemaCalls = [];\n for (let i = start; i < end; i++) {\n schemaCalls.push({\n address: dataRefinerRegistryAddress,\n abi: dataRefinerRegistryAbi,\n functionName: \"schemas\",\n args: [BigInt(i + 1)], // Schema IDs are 1-based\n } as const);\n }\n\n // Fetch all schemas in batches using gasAwareMulticall\n const schemaResults = await gasAwareMulticall<\n typeof schemaCalls,\n true // Allow failures for individual schema lookups\n >(this.context.publicClient, {\n contracts: schemaCalls,\n allowFailure: true,\n });\n\n // Process results\n const schemas: Schema[] = [];\n schemaResults.forEach((result, index) => {\n if (result.status === \"success\" && result.result) {\n const schemaId = start + index + 1; // Schema IDs are 1-based\n const schemaData = result.result as {\n name: string;\n dialect: string;\n definitionUrl: string;\n };\n\n if (\n schemaData.name &&\n schemaData.dialect &&\n schemaData.definitionUrl\n ) {\n schemas.push({\n id: schemaId,\n name: schemaData.name,\n dialect: schemaData.dialect as \"json\" | \"sqlite\",\n definitionUrl: schemaData.definitionUrl,\n });\n } else {\n console.warn(`Incomplete schema data for ID ${schemaId}`);\n }\n } else {\n // Skip schemas that can't be retrieved\n console.warn(`Failed to retrieve schema ${start + index + 1}`);\n }\n });\n\n // Optionally fetch definitions for all schemas\n if (includeDefinitions) {\n await this._fetchDefinitionsForSchemas(schemas);\n }\n\n return schemas;\n } catch (error) {\n throw new Error(\n `Failed to list schemas: ${error instanceof Error ? error.message : \"Unknown error\"}`,\n );\n }\n }\n\n /**\n * Adds a schema using the legacy method (low-level API).\n *\n * @deprecated Use create() instead for the high-level API with automatic IPFS upload\n * @param params - Schema parameters including pre-generated definition URL\n * @returns Promise resolving to the add schema result\n */\n async addSchema(params: AddSchemaParams): Promise<AddSchemaResult> {\n try {\n const chainId = this.context.walletClient.chain?.id;\n if (!chainId) {\n throw new Error(\"Chain ID not available\");\n }\n\n const dataRefinerRegistryAddress = getContractAddress(\n chainId,\n \"DataRefinerRegistry\",\n );\n const dataRefinerRegistryAbi = getAbi(\"DataRefinerRegistry\");\n\n const userAddress = await this.getUserAddress();\n\n const txHash = await this.context.walletClient.writeContract({\n address: dataRefinerRegistryAddress,\n abi: dataRefinerRegistryAbi,\n functionName: \"addSchema\",\n args: [params.name, params.dialect, params.definitionUrl],\n account: this.context.walletClient.account || userAddress,\n chain: this.context.walletClient.chain || null,\n });\n\n // Wait for transaction confirmation and parse events\n const receipt = await this.context.publicClient.waitForTransactionReceipt(\n {\n hash: txHash,\n confirmations: 1,\n },\n );\n\n // Parse the SchemaAdded event to get the schema ID\n const { parseSchemaAddedEvent } = await import(\"../utils/eventParsing\");\n const eventData = parseSchemaAddedEvent(receipt);\n\n return {\n schemaId: Number(eventData.schemaId),\n transactionHash: txHash,\n };\n } catch (error) {\n throw new Error(\n `Failed to add schema: ${error instanceof Error ? error.message : \"Unknown error\"}`,\n );\n }\n }\n\n /**\n * Internal method: Query schema via subgraph\n *\n * @param params - Query parameters\n * @param params.schemaId - The ID of the schema to retrieve\n * @param params.subgraphUrl - The subgraph URL to query\n * @returns Promise resolving to the schema object\n * @private\n */\n private async _getSchemaViaSubgraph(params: {\n schemaId: number;\n subgraphUrl: string;\n }): Promise<SchemaMetadata> {\n const { schemaId, subgraphUrl } = params;\n\n const response = await fetch(subgraphUrl, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({\n query: print(GetSchemaDocument),\n variables: { id: schemaId.toString() },\n }),\n });\n\n if (!response.ok) {\n throw new Error(\n `Subgraph request failed: ${response.status} ${response.statusText}`,\n );\n }\n\n const result = (await response.json()) as {\n data?: GetSchemaQuery;\n errors?: { message: string }[];\n };\n\n if (result.errors) {\n throw new Error(\n `Subgraph query errors: ${result.errors.map((e) => e.message).join(\", \")}`,\n );\n }\n\n if (!result.data?.schema) {\n throw new Error(`Schema ${schemaId} not found in subgraph`);\n }\n\n // Map subgraph schema to SDK schema type\n const subgraphSchema = result.data.schema;\n return {\n id: parseInt(subgraphSchema.id),\n name: subgraphSchema.name,\n dialect: subgraphSchema.dialect as \"json\" | \"sqlite\",\n definitionUrl: subgraphSchema.definitionUrl,\n };\n }\n\n /**\n * Internal method: List schemas via subgraph\n *\n * @param params - Query parameters\n * @param params.limit - Maximum number of schemas to return\n * @param params.offset - Number of schemas to skip\n * @param params.subgraphUrl - The subgraph URL to query\n * @returns Promise resolving to an array of schemas\n * @private\n */\n private async _listSchemasViaSubgraph(params: {\n limit: number;\n offset: number;\n subgraphUrl: string;\n }): Promise<Schema[]> {\n const { limit, offset, subgraphUrl } = params;\n\n const response = await fetch(subgraphUrl, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({\n query: print(ListSchemasDocument),\n variables: { first: limit, skip: offset },\n }),\n });\n\n if (!response.ok) {\n throw new Error(\n `Subgraph request failed: ${response.status} ${response.statusText}`,\n );\n }\n\n const result = (await response.json()) as {\n data?: ListSchemasQuery;\n errors?: { message: string }[];\n };\n\n if (result.errors) {\n throw new Error(\n `Subgraph query errors: ${result.errors.map((e) => e.message).join(\", \")}`,\n );\n }\n\n if (!result.data?.schemas) {\n return [];\n }\n\n // Map subgraph schemas to SDK schema type\n const schemas = result.data.schemas.map((schema) => ({\n id: parseInt(schema.id),\n name: schema.name,\n dialect: schema.dialect as \"json\" | \"sqlite\",\n definitionUrl: schema.definitionUrl,\n }));\n\n // Optionally fetch definitions if requested\n const includeDefinitions = (params as { includeDefinitions?: boolean })\n .includeDefinitions;\n if (includeDefinitions) {\n await this._fetchDefinitionsForSchemas(schemas);\n }\n\n return schemas;\n }\n\n /**\n * Internal method: Count schemas via subgraph\n *\n * @param params - Query parameters\n * @param params.subgraphUrl - The subgraph URL to query\n * @returns Promise resolving to the total schema count\n * @private\n */\n private async _countSchemasViaSubgraph(params: {\n subgraphUrl: string;\n }): Promise<number> {\n const { subgraphUrl } = params;\n\n const response = await fetch(subgraphUrl, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({\n query: print(CountSchemasDocument),\n variables: {},\n }),\n });\n\n if (!response.ok) {\n throw new Error(\n `Subgraph request failed: ${response.status} ${response.statusText}`,\n );\n }\n\n const result = (await response.json()) as {\n data?: CountSchemasQuery;\n errors?: { message: string }[];\n };\n\n if (result.errors) {\n throw new Error(\n `Subgraph query errors: ${result.errors.map((e) => e.message).join(\", \")}`,\n );\n }\n\n return result.data?.schemas?.length || 0;\n }\n\n /**\n * Gets the user's wallet address.\n *\n * @private\n * @returns Promise resolving to the user's address\n */\n private async getUserAddress(): Promise<Address> {\n if (!this.context.walletClient.account) {\n throw new Error(\"No wallet account connected\");\n }\n\n // Return the account address directly if available\n if (typeof this.context.walletClient.account === \"string\") {\n return this.context.walletClient.account as Address;\n }\n\n // If account is an object, get the address property\n if (\n typeof this.context.walletClient.account === \"object\" &&\n this.context.walletClient.account.address\n ) {\n return this.context.walletClient.account.address;\n }\n\n throw new Error(\"Unable to determine wallet address\");\n }\n\n /**\n * Fetches and attaches definitions to an array of schemas.\n *\n * @param schemas - Array of schemas to fetch definitions for\n * @private\n */\n private async _fetchDefinitionsForSchemas(schemas: Schema[]): Promise<void> {\n // Fetch definitions concurrently for performance\n await Promise.all(\n schemas.map(async (schema) => {\n if (!schema.definitionUrl) return;\n\n try {\n const definition = await fetchFromUrl(\n schema.definitionUrl,\n this.context.downloadRelayer,\n );\n\n if (definition && typeof definition === \"object\") {\n // Validate the fetched DataSchema\n validateDataSchemaAgainstMetaSchema(definition);\n const dataSchema = definition as DataSchema;\n\n // Populate flat fields\n schema.version = dataSchema.version;\n schema.description = dataSchema.description;\n schema.schema = dataSchema.schema;\n }\n } catch (error) {\n // Don't fail the entire list operation if one definition fails\n console.error(\n `Failed to fetch/validate definition for schema ${schema.id}:`,\n error instanceof UrlResolutionError ||\n error instanceof SchemaValidationError\n ? error.message\n : error,\n );\n }\n }),\n );\n }\n}\n"],"mappings":"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","names":[]}
|