@opendatalabs/vana-sdk 3.4.0 → 3.4.1-canary.ba2cfd7

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.
Files changed (37) hide show
  1. package/dist/index.browser.d.ts +5 -3
  2. package/dist/index.browser.js +353 -73
  3. package/dist/index.browser.js.map +3 -3
  4. package/dist/index.node.cjs +369 -74
  5. package/dist/index.node.cjs.map +4 -4
  6. package/dist/index.node.d.ts +5 -3
  7. package/dist/index.node.js +353 -73
  8. package/dist/index.node.js.map +3 -3
  9. package/dist/protocol/eip712.cjs +58 -3
  10. package/dist/protocol/eip712.cjs.map +1 -1
  11. package/dist/protocol/eip712.d.ts +98 -6
  12. package/dist/protocol/eip712.js +52 -3
  13. package/dist/protocol/eip712.js.map +1 -1
  14. package/dist/protocol/escrow-deposit.cjs +89 -0
  15. package/dist/protocol/escrow-deposit.cjs.map +1 -0
  16. package/dist/protocol/escrow-deposit.d.ts +47 -0
  17. package/dist/protocol/escrow-deposit.js +60 -0
  18. package/dist/protocol/escrow-deposit.js.map +1 -0
  19. package/dist/protocol/escrow-deposit.test.d.ts +1 -0
  20. package/dist/protocol/escrow-flow.test.d.ts +21 -0
  21. package/dist/protocol/fee-registry.cjs +116 -0
  22. package/dist/protocol/fee-registry.cjs.map +1 -0
  23. package/dist/protocol/fee-registry.d.ts +151 -0
  24. package/dist/protocol/fee-registry.js +89 -0
  25. package/dist/protocol/fee-registry.js.map +1 -0
  26. package/dist/protocol/fee-registry.test.d.ts +1 -0
  27. package/dist/protocol/gateway.cjs +130 -7
  28. package/dist/protocol/gateway.cjs.map +1 -1
  29. package/dist/protocol/gateway.d.ts +213 -16
  30. package/dist/protocol/gateway.js +130 -7
  31. package/dist/protocol/gateway.js.map +1 -1
  32. package/dist/protocol/grants.cjs +24 -64
  33. package/dist/protocol/grants.cjs.map +1 -1
  34. package/dist/protocol/grants.d.ts +6 -13
  35. package/dist/protocol/grants.js +24 -63
  36. package/dist/protocol/grants.js.map +1 -1
  37. package/package.json +3 -2
@@ -1174,6 +1174,7 @@ var init_browser2 = __esm({
1174
1174
  var index_node_exports = {};
1175
1175
  __export(index_node_exports, {
1176
1176
  ACCOUNT_PERSONAL_SERVER_REGISTRATION_INTENT: () => ACCOUNT_PERSONAL_SERVER_REGISTRATION_INTENT,
1177
+ ADD_DATA_TYPES: () => ADD_DATA_TYPES,
1177
1178
  AccountPersonalServerLiteOwnerBindingError: () => AccountPersonalServerLiteOwnerBindingError,
1178
1179
  AccountPersonalServerRegistrationError: () => AccountPersonalServerRegistrationError,
1179
1180
  BUILDER_REGISTRATION_TYPES: () => BUILDER_REGISTRATION_TYPES,
@@ -1186,9 +1187,12 @@ __export(index_node_exports, {
1186
1187
  DataFileEnvelopeSchema: () => DataFileEnvelopeSchema,
1187
1188
  DropboxStorage: () => DropboxStorage,
1188
1189
  ECIESError: () => ECIESError,
1190
+ ESCROW_DEPOSIT_ABI: () => ESCROW_DEPOSIT_ABI,
1189
1191
  ExpiredTokenError: () => ExpiredTokenError,
1192
+ FEE_REGISTRY_ABI: () => FEE_REGISTRY_ABI,
1190
1193
  FILE_DELETION_TYPES: () => FILE_DELETION_TYPES,
1191
1194
  FILE_REGISTRATION_TYPES: () => FILE_REGISTRATION_TYPES,
1195
+ GENERIC_PAYMENT_TYPES: () => GENERIC_PAYMENT_TYPES,
1192
1196
  GRANT_REGISTRATION_TYPES: () => GRANT_REGISTRATION_TYPES,
1193
1197
  GRANT_REVOCATION_TYPES: () => GRANT_REVOCATION_TYPES,
1194
1198
  GoogleDriveStorage: () => GoogleDriveStorage,
@@ -1199,6 +1203,7 @@ __export(index_node_exports, {
1199
1203
  IpfsStorage: () => IpfsStorage,
1200
1204
  MASTER_KEY_MESSAGE: () => MASTER_KEY_MESSAGE,
1201
1205
  MissingAuthError: () => MissingAuthError,
1206
+ NATIVE_VANA_ASSET: () => NATIVE_VANA_ASSET,
1202
1207
  NetworkError: () => NetworkError,
1203
1208
  NodeECIESProvider: () => NodeECIESUint8Provider,
1204
1209
  NodePlatformAdapter: () => NodePlatformAdapter,
@@ -1216,6 +1221,8 @@ __export(index_node_exports, {
1216
1221
  PersonalServerError: () => PersonalServerError,
1217
1222
  PinataStorage: () => PinataStorage,
1218
1223
  R2Storage: () => R2Storage,
1224
+ RECORD_DATA_ACCESS_TYPES: () => RECORD_DATA_ACCESS_TYPES,
1225
+ REGISTRATION_KIND_FOR_OP: () => REGISTRATION_KIND_FOR_OP,
1219
1226
  ReadOnlyError: () => ReadOnlyError,
1220
1227
  RelayerError: () => RelayerError,
1221
1228
  SERVER_REGISTRATION_TYPES: () => SERVER_REGISTRATION_TYPES,
@@ -1230,6 +1237,8 @@ __export(index_node_exports, {
1230
1237
  VanaError: () => VanaError,
1231
1238
  VanaStorage: () => VanaStorage,
1232
1239
  assertValidPkceVerifier: () => assertValidPkceVerifier,
1240
+ buildDepositNativeRequest: () => buildDepositNativeRequest,
1241
+ buildDepositTokenRequest: () => buildDepositTokenRequest,
1233
1242
  buildPersonalServerLiteOwnerBindingMessage: () => buildPersonalServerLiteOwnerBindingMessage,
1234
1243
  buildPersonalServerLiteOwnerBindingSignature: () => buildPersonalServerLiteOwnerBindingSignature,
1235
1244
  buildPersonalServerRegistrationSignature: () => buildPersonalServerRegistrationSignature,
@@ -1251,12 +1260,17 @@ __export(index_node_exports, {
1251
1260
  createVanaStorageProvider: () => createVanaStorageProvider,
1252
1261
  createViemPersonalServerLiteOwnerBindingSigner: () => createViemPersonalServerLiteOwnerBindingSigner,
1253
1262
  createViemPersonalServerRegistrationSigner: () => createViemPersonalServerRegistrationSigner,
1263
+ dataRegistryDomain: () => dataRegistryDomain,
1254
1264
  decryptWithPassword: () => decryptWithPassword,
1255
1265
  deriveMasterKey: () => deriveMasterKey,
1256
1266
  deriveScopeKey: () => deriveScopeKey,
1257
1267
  deserializeECIES: () => deserializeECIES,
1258
1268
  detectPlatform: () => detectPlatform,
1269
+ encodeDepositNativeData: () => encodeDepositNativeData,
1270
+ encodeDepositTokenData: () => encodeDepositTokenData,
1259
1271
  encryptWithPassword: () => encryptWithPassword,
1272
+ escrowContractAddress: () => escrowContractAddress,
1273
+ escrowPaymentDomain: () => escrowPaymentDomain,
1260
1274
  fileDeletionDomain: () => fileDeletionDomain,
1261
1275
  fileRegistrationDomain: () => fileRegistrationDomain,
1262
1276
  generatePkceVerifier: () => generatePkceVerifier,
@@ -1266,6 +1280,8 @@ __export(index_node_exports, {
1266
1280
  getContractAddress: () => getContractAddress,
1267
1281
  getContractController: () => getContractController,
1268
1282
  getContractInfo: () => getContractInfo,
1283
+ getFee: () => getFee,
1284
+ getOpFee: () => getOpFee,
1269
1285
  getPlatformCapabilities: () => getPlatformCapabilities,
1270
1286
  getServiceEndpoints: () => getServiceEndpoints,
1271
1287
  grantRegistrationDomain: () => grantRegistrationDomain,
@@ -1277,7 +1293,6 @@ __export(index_node_exports, {
1277
1293
  moksha: () => moksha,
1278
1294
  mokshaServices: () => mokshaServices,
1279
1295
  mokshaTestnet: () => mokshaTestnet2,
1280
- parseGrantRegistrationPayload: () => parseGrantRegistrationPayload,
1281
1296
  parsePSError: () => parsePSError,
1282
1297
  parseScope: () => parseScope,
1283
1298
  parseWeb3SignedHeader: () => parseWeb3SignedHeader,
@@ -32649,6 +32664,7 @@ function formatOAuthError(body, status) {
32649
32664
  // src/protocol/eip712.ts
32650
32665
  var DOMAIN_NAME = "Vana Data Portability";
32651
32666
  var DOMAIN_VERSION = "1";
32667
+ var NATIVE_VANA_ASSET = "0x0000000000000000000000000000000000000000";
32652
32668
  function buildDomain(chainId, verifyingContract) {
32653
32669
  return {
32654
32670
  name: DOMAIN_NAME,
@@ -32663,6 +32679,12 @@ function fileRegistrationDomain(config) {
32663
32679
  config.contracts.dataRegistry
32664
32680
  );
32665
32681
  }
32682
+ function dataRegistryDomain(config) {
32683
+ return buildDomain(
32684
+ config.chainId,
32685
+ config.contracts.dataRegistry
32686
+ );
32687
+ }
32666
32688
  function fileDeletionDomain(config) {
32667
32689
  return buildDomain(
32668
32690
  config.chainId,
@@ -32693,6 +32715,12 @@ function builderRegistrationDomain(config) {
32693
32715
  config.contracts.dataPortabilityGrantees
32694
32716
  );
32695
32717
  }
32718
+ function escrowPaymentDomain(config) {
32719
+ return buildDomain(
32720
+ config.chainId,
32721
+ config.contracts.dataPortabilityEscrow
32722
+ );
32723
+ }
32696
32724
  var FILE_REGISTRATION_TYPES = {
32697
32725
  FileRegistration: [
32698
32726
  { name: "ownerAddress", type: "address" },
@@ -32710,14 +32738,16 @@ var GRANT_REGISTRATION_TYPES = {
32710
32738
  GrantRegistration: [
32711
32739
  { name: "grantorAddress", type: "address" },
32712
32740
  { name: "granteeId", type: "bytes32" },
32713
- { name: "grant", type: "string" },
32714
- { name: "fileIds", type: "uint256[]" }
32741
+ { name: "scopes", type: "string[]" },
32742
+ { name: "grantVersion", type: "uint256" },
32743
+ { name: "expiresAt", type: "uint256" }
32715
32744
  ]
32716
32745
  };
32717
32746
  var GRANT_REVOCATION_TYPES = {
32718
32747
  GrantRevocation: [
32719
32748
  { name: "grantorAddress", type: "address" },
32720
- { name: "grantId", type: "bytes32" }
32749
+ { name: "grantId", type: "bytes32" },
32750
+ { name: "grantVersion", type: "uint256" }
32721
32751
  ]
32722
32752
  };
32723
32753
  var SERVER_REGISTRATION_TYPES = {
@@ -32736,6 +32766,34 @@ var BUILDER_REGISTRATION_TYPES = {
32736
32766
  { name: "appUrl", type: "string" }
32737
32767
  ]
32738
32768
  };
32769
+ var GENERIC_PAYMENT_TYPES = {
32770
+ GenericPayment: [
32771
+ { name: "payerAddress", type: "address" },
32772
+ { name: "opType", type: "string" },
32773
+ { name: "opId", type: "bytes32" },
32774
+ { name: "asset", type: "address" },
32775
+ { name: "amount", type: "uint256" },
32776
+ { name: "paymentNonce", type: "uint256" }
32777
+ ]
32778
+ };
32779
+ var ADD_DATA_TYPES = {
32780
+ AddData: [
32781
+ { name: "ownerAddress", type: "address" },
32782
+ { name: "scope", type: "string" },
32783
+ { name: "dataHash", type: "bytes32" },
32784
+ { name: "metadataHash", type: "bytes32" },
32785
+ { name: "expectedVersion", type: "uint256" }
32786
+ ]
32787
+ };
32788
+ var RECORD_DATA_ACCESS_TYPES = {
32789
+ RecordDataAccess: [
32790
+ { name: "ownerAddress", type: "address" },
32791
+ { name: "scope", type: "string" },
32792
+ { name: "version", type: "uint256" },
32793
+ { name: "accessor", type: "address" },
32794
+ { name: "recordId", type: "bytes32" }
32795
+ ]
32796
+ };
32739
32797
 
32740
32798
  // src/protocol/personal-server-registration.ts
32741
32799
  var import_viem14 = require("viem");
@@ -33173,67 +33231,31 @@ function isDataPortabilityGatewayConfig(value) {
33173
33231
  return false;
33174
33232
  }
33175
33233
  const c = contracts;
33176
- return isHexString(c["dataRegistry"]) && isHexString(c["dataPortabilityPermissions"]) && isHexString(c["dataPortabilityServer"]) && isHexString(c["dataPortabilityGrantees"]);
33234
+ return isHexString(c["dataRegistry"]) && isHexString(c["dataPortabilityPermissions"]) && isHexString(c["dataPortabilityServer"]) && isHexString(c["dataPortabilityGrantees"]) && isHexString(c["dataPortabilityEscrow"]) && isHexString(c["feeRegistry"]);
33177
33235
  }
33178
- function parseGrantRegistrationPayload(grant) {
33179
- let parsed;
33236
+ function toUint256(value) {
33180
33237
  try {
33181
- parsed = JSON.parse(grant);
33182
- } catch {
33183
- return null;
33184
- }
33185
- if (parsed === null || typeof parsed !== "object" || Array.isArray(parsed)) {
33186
- return null;
33187
- }
33188
- const value = parsed;
33189
- if (!Array.isArray(value["scopes"]) || value["scopes"].length === 0) {
33190
- return null;
33191
- }
33192
- if (!value["scopes"].every((scope) => typeof scope === "string")) {
33193
- return null;
33194
- }
33195
- if (typeof value["expiresAt"] !== "number" || !Number.isFinite(value["expiresAt"])) {
33196
- return null;
33197
- }
33198
- if (value["user"] !== void 0 && !isHexString(value["user"])) {
33199
- return null;
33200
- }
33201
- if (value["builder"] !== void 0 && !isHexString(value["builder"])) {
33202
- return null;
33203
- }
33204
- if (value["nonce"] !== void 0 && (typeof value["nonce"] !== "number" || !Number.isFinite(value["nonce"]))) {
33205
- return null;
33206
- }
33207
- return {
33208
- user: value["user"],
33209
- builder: value["builder"],
33210
- scopes: value["scopes"],
33211
- expiresAt: value["expiresAt"],
33212
- nonce: value["nonce"]
33213
- };
33214
- }
33215
- function parseFileIds(fileIds) {
33216
- try {
33217
- const values = (fileIds ?? []).map((fileId) => BigInt(fileId));
33218
- return {
33219
- values,
33220
- display: values.map((fileId) => fileId.toString())
33221
- };
33238
+ const big = typeof value === "bigint" ? value : BigInt(value);
33239
+ if (big < 0n) return null;
33240
+ return big;
33222
33241
  } catch {
33223
33242
  return null;
33224
33243
  }
33225
33244
  }
33226
33245
  async function verifyGrantRegistration(input) {
33227
- const payload = parseGrantRegistrationPayload(input.grant);
33228
- if (!payload) {
33229
- return {
33230
- valid: false,
33231
- error: "Grant must be JSON with scopes and expiresAt"
33232
- };
33246
+ if (!Array.isArray(input.scopes) || input.scopes.length === 0) {
33247
+ return { valid: false, error: "scopes must be a non-empty array" };
33248
+ }
33249
+ if (!input.scopes.every((scope) => typeof scope === "string")) {
33250
+ return { valid: false, error: "scopes must contain only strings" };
33251
+ }
33252
+ const grantVersion = toUint256(input.grantVersion);
33253
+ if (grantVersion === null || grantVersion < 1n) {
33254
+ return { valid: false, error: "grantVersion must be a uint256 >= 1" };
33233
33255
  }
33234
- const fileIds = parseFileIds(input.fileIds);
33235
- if (!fileIds) {
33236
- return { valid: false, error: "fileIds must contain integer values" };
33256
+ const expiresAt = toUint256(input.expiresAt);
33257
+ if (expiresAt === null) {
33258
+ return { valid: false, error: "expiresAt must be a non-negative uint256" };
33237
33259
  }
33238
33260
  let valid;
33239
33261
  try {
@@ -33245,8 +33267,9 @@ async function verifyGrantRegistration(input) {
33245
33267
  message: {
33246
33268
  grantorAddress: input.grantorAddress,
33247
33269
  granteeId: input.granteeId,
33248
- grant: input.grant,
33249
- fileIds: fileIds.values
33270
+ scopes: input.scopes,
33271
+ grantVersion,
33272
+ expiresAt
33250
33273
  },
33251
33274
  signature: input.signature
33252
33275
  });
@@ -33257,19 +33280,153 @@ async function verifyGrantRegistration(input) {
33257
33280
  return { valid: false, error: "Grant signature does not match grantor" };
33258
33281
  }
33259
33282
  const nowSeconds = input.nowSeconds ?? Math.floor(Date.now() / 1e3);
33260
- if (payload.expiresAt > 0 && payload.expiresAt < nowSeconds) {
33283
+ if (expiresAt > 0n && expiresAt < BigInt(nowSeconds)) {
33261
33284
  return { valid: false, error: "Grant has expired" };
33262
33285
  }
33263
- if (payload.user !== void 0 && payload.user.toLowerCase() !== input.grantorAddress.toLowerCase()) {
33264
- return { valid: false, error: "Grant user does not match grantorAddress" };
33265
- }
33266
33286
  return {
33267
33287
  valid: true,
33268
33288
  grantorAddress: input.grantorAddress,
33269
33289
  granteeId: input.granteeId,
33270
- grant: input.grant,
33271
- payload,
33272
- fileIds: fileIds.display
33290
+ scopes: input.scopes,
33291
+ grantVersion: grantVersion.toString(),
33292
+ expiresAt: expiresAt.toString()
33293
+ };
33294
+ }
33295
+
33296
+ // src/protocol/escrow-deposit.ts
33297
+ var import_viem18 = require("viem");
33298
+ var ESCROW_DEPOSIT_ABI = [
33299
+ {
33300
+ type: "function",
33301
+ name: "depositNative",
33302
+ stateMutability: "payable",
33303
+ inputs: [{ name: "account", type: "address" }],
33304
+ outputs: []
33305
+ },
33306
+ {
33307
+ type: "function",
33308
+ name: "depositToken",
33309
+ stateMutability: "nonpayable",
33310
+ inputs: [
33311
+ { name: "account", type: "address" },
33312
+ { name: "token", type: "address" },
33313
+ { name: "amount", type: "uint256" }
33314
+ ],
33315
+ outputs: []
33316
+ }
33317
+ ];
33318
+ function escrowContractAddress(config) {
33319
+ return config.contracts.dataPortabilityEscrow;
33320
+ }
33321
+ function encodeDepositNativeData(input) {
33322
+ return (0, import_viem18.encodeFunctionData)({
33323
+ abi: ESCROW_DEPOSIT_ABI,
33324
+ functionName: "depositNative",
33325
+ args: [input.account]
33326
+ });
33327
+ }
33328
+ function encodeDepositTokenData(input) {
33329
+ return (0, import_viem18.encodeFunctionData)({
33330
+ abi: ESCROW_DEPOSIT_ABI,
33331
+ functionName: "depositToken",
33332
+ args: [input.account, input.token, input.amount]
33333
+ });
33334
+ }
33335
+ function buildDepositNativeRequest(config, input) {
33336
+ return {
33337
+ to: escrowContractAddress(config),
33338
+ data: encodeDepositNativeData({ account: input.account }),
33339
+ value: input.amount
33340
+ };
33341
+ }
33342
+ function buildDepositTokenRequest(config, input) {
33343
+ return {
33344
+ to: escrowContractAddress(config),
33345
+ data: encodeDepositTokenData(input)
33346
+ };
33347
+ }
33348
+
33349
+ // src/protocol/fee-registry.ts
33350
+ var import_viem19 = require("viem");
33351
+ var FEE_REGISTRY_ABI = (0, import_viem19.parseAbi)([
33352
+ "struct Fee { uint256 amount; address asset; address payee; bool enabled; }",
33353
+ "function fees(bytes32 operation) view returns (Fee)",
33354
+ "function operationKey(string name) pure returns (bytes32)"
33355
+ ]);
33356
+ var REGISTRATION_KIND_FOR_OP = {
33357
+ grant: "grant_registration",
33358
+ data: "data_registration",
33359
+ server: "server_registration",
33360
+ builder: "builder_registration"
33361
+ };
33362
+ function operationNameFor(kind, opts) {
33363
+ switch (kind) {
33364
+ case "grant_registration":
33365
+ return opts?.grantRegistrationOpName ?? "grant_registration";
33366
+ case "data_access":
33367
+ return opts?.dataAccessOpName ?? "data_access";
33368
+ case "data_registration":
33369
+ return opts?.dataRegistrationOpName ?? "data_registration";
33370
+ case "server_registration":
33371
+ return opts?.serverRegistrationOpName ?? "server_registration";
33372
+ case "builder_registration":
33373
+ return opts?.builderRegistrationOpName ?? "builder_registration";
33374
+ }
33375
+ }
33376
+ var ZERO_ADDRESS = "0x0000000000000000000000000000000000000000";
33377
+ async function getFee(client, config, kind, opts) {
33378
+ const address = config.contracts.feeRegistry;
33379
+ const opName = operationNameFor(kind, opts);
33380
+ const opKey = await client.readContract({
33381
+ address,
33382
+ abi: FEE_REGISTRY_ABI,
33383
+ functionName: "operationKey",
33384
+ args: [opName]
33385
+ });
33386
+ const fee = await client.readContract({
33387
+ address,
33388
+ abi: FEE_REGISTRY_ABI,
33389
+ functionName: "fees",
33390
+ args: [opKey]
33391
+ });
33392
+ if (fee.enabled && fee.payee === ZERO_ADDRESS) {
33393
+ throw new Error(
33394
+ `FeeRegistry: enabled operation "${opName}" has zero-address payee \u2014 contract pre-flight rejects payouts to 0x0`
33395
+ );
33396
+ }
33397
+ return fee;
33398
+ }
33399
+ async function getOpFee(client, config, opType, opts) {
33400
+ const registrationKind = REGISTRATION_KIND_FOR_OP[opType];
33401
+ if (!registrationKind) {
33402
+ throw new Error(
33403
+ `getOpFee: unknown opType "${opType}" \u2014 supported types are ${Object.keys(REGISTRATION_KIND_FOR_OP).join(", ")}`
33404
+ );
33405
+ }
33406
+ const includeDataAccess = opType === "grant";
33407
+ const [registration, dataAccess] = await Promise.all([
33408
+ getFee(client, config, registrationKind, opts),
33409
+ includeDataAccess ? getFee(client, config, "data_access", opts) : Promise.resolve({
33410
+ amount: 0n,
33411
+ asset: ZERO_ADDRESS,
33412
+ payee: ZERO_ADDRESS,
33413
+ enabled: false
33414
+ })
33415
+ ]);
33416
+ if (registration.enabled && dataAccess.enabled && registration.asset.toLowerCase() !== dataAccess.asset.toLowerCase()) {
33417
+ throw new Error(
33418
+ `FeeRegistry asset mismatch for "${opType}": registration=${registration.asset} vs data_access=${dataAccess.asset}. The gateway requires both kinds to settle in the same asset when both are enabled.`
33419
+ );
33420
+ }
33421
+ const asset = registration.enabled ? registration.asset : dataAccess.enabled ? dataAccess.asset : ZERO_ADDRESS;
33422
+ return {
33423
+ asset,
33424
+ registrationFee: registration.enabled ? registration.amount : 0n,
33425
+ dataAccessFee: dataAccess.enabled ? dataAccess.amount : 0n,
33426
+ registrationEnabled: registration.enabled,
33427
+ dataAccessEnabled: dataAccess.enabled,
33428
+ registrationPayee: registration.enabled ? registration.payee : ZERO_ADDRESS,
33429
+ dataAccessPayee: dataAccess.enabled ? dataAccess.payee : ZERO_ADDRESS
33273
33430
  };
33274
33431
  }
33275
33432
 
@@ -33420,7 +33577,7 @@ function createGatewayClient(baseUrl) {
33420
33577
  async listFilesSince(owner, cursor, options) {
33421
33578
  const params = new URLSearchParams({ user: owner });
33422
33579
  if (cursor !== null) {
33423
- params.set("since", cursor);
33580
+ params.set("cursor", cursor);
33424
33581
  }
33425
33582
  if (options?.includeDeleted) {
33426
33583
  params.set("includeDeleted", "true");
@@ -33429,10 +33586,12 @@ function createGatewayClient(baseUrl) {
33429
33586
  if (!res.ok) {
33430
33587
  throw new Error(`Gateway error: ${res.status} ${res.statusText}`);
33431
33588
  }
33432
- const data = await unwrapEnvelope(res);
33589
+ const envelope = await res.json();
33590
+ const { pagination } = envelope;
33591
+ const nextCursor = pagination?.hasMore === false ? null : pagination?.nextCursor ?? envelope.data.cursor ?? null;
33433
33592
  return {
33434
- files: data.files.map(normalizeFileRecord),
33435
- cursor: data.cursor
33593
+ files: envelope.data.files.map(normalizeFileRecord),
33594
+ cursor: nextCursor
33436
33595
  };
33437
33596
  },
33438
33597
  async getSchema(schemaId) {
@@ -33473,6 +33632,68 @@ function createGatewayClient(baseUrl) {
33473
33632
  alreadyRegistered: false
33474
33633
  };
33475
33634
  },
33635
+ async registerBuilder(params) {
33636
+ const res = await fetch(`${base}/v1/builders`, {
33637
+ method: "POST",
33638
+ headers: {
33639
+ "Content-Type": "application/json",
33640
+ Authorization: `Web3Signed ${params.signature}`
33641
+ },
33642
+ body: JSON.stringify({
33643
+ ownerAddress: params.ownerAddress,
33644
+ granteeAddress: params.granteeAddress,
33645
+ publicKey: params.publicKey,
33646
+ appUrl: params.appUrl
33647
+ })
33648
+ });
33649
+ if (res.status === 409) {
33650
+ const body2 = await res.json().catch(() => ({}));
33651
+ return {
33652
+ builderId: getMutationId(
33653
+ body2,
33654
+ "builderId"
33655
+ ),
33656
+ alreadyRegistered: true
33657
+ };
33658
+ }
33659
+ if (!res.ok) {
33660
+ throw new Error(`Gateway error: ${res.status} ${res.statusText}`);
33661
+ }
33662
+ const body = await res.json().catch(() => ({}));
33663
+ return {
33664
+ builderId: getMutationId(body, "builderId"),
33665
+ alreadyRegistered: false
33666
+ };
33667
+ },
33668
+ async registerDataPoint(params) {
33669
+ const res = await fetch(`${base}/v1/data`, {
33670
+ method: "POST",
33671
+ headers: {
33672
+ "Content-Type": "application/json",
33673
+ Authorization: `Web3Signed ${params.signature}`
33674
+ },
33675
+ body: JSON.stringify({
33676
+ ownerAddress: params.ownerAddress,
33677
+ scope: params.scope,
33678
+ dataHash: params.dataHash,
33679
+ metadataHash: params.metadataHash,
33680
+ expectedVersion: params.expectedVersion
33681
+ })
33682
+ });
33683
+ if (!res.ok) {
33684
+ const body2 = await res.json().catch(() => ({}));
33685
+ const detail = body2.error ?? res.statusText;
33686
+ throw new Error(`Gateway error: ${res.status} ${detail}`);
33687
+ }
33688
+ const body = await res.json().catch(() => ({}));
33689
+ return {
33690
+ dataPointId: getMutationId(
33691
+ body,
33692
+ "dataPointId"
33693
+ ),
33694
+ expectedVersion: body.expectedVersion
33695
+ };
33696
+ },
33476
33697
  async registerFile(params) {
33477
33698
  const res = await fetch(`${base}/v1/files`, {
33478
33699
  method: "POST",
@@ -33510,8 +33731,9 @@ function createGatewayClient(baseUrl) {
33510
33731
  body: JSON.stringify({
33511
33732
  grantorAddress: params.grantorAddress,
33512
33733
  granteeId: params.granteeId,
33513
- grant: params.grant,
33514
- fileIds: params.fileIds
33734
+ scopes: params.scopes,
33735
+ grantVersion: params.grantVersion,
33736
+ expiresAt: params.expiresAt
33515
33737
  })
33516
33738
  });
33517
33739
  if (res.status === 409) {
@@ -33536,7 +33758,8 @@ function createGatewayClient(baseUrl) {
33536
33758
  Authorization: `Web3Signed ${params.signature}`
33537
33759
  },
33538
33760
  body: JSON.stringify({
33539
- grantorAddress: params.grantorAddress
33761
+ grantorAddress: params.grantorAddress,
33762
+ grantVersion: params.grantVersion
33540
33763
  })
33541
33764
  });
33542
33765
  if (res.status === 409) return;
@@ -33544,6 +33767,63 @@ function createGatewayClient(baseUrl) {
33544
33767
  throw new Error(`Gateway error: ${res.status} ${res.statusText}`);
33545
33768
  }
33546
33769
  },
33770
+ async getEscrowBalance(account) {
33771
+ const res = await fetch(`${base}/v1/escrow/balance?account=${account}`);
33772
+ if (!res.ok) {
33773
+ throw new Error(`Gateway error: ${res.status} ${res.statusText}`);
33774
+ }
33775
+ return await res.json();
33776
+ },
33777
+ async submitEscrowDeposit(params) {
33778
+ const res = await fetch(`${base}/v1/escrow/deposit`, {
33779
+ method: "POST",
33780
+ headers: { "Content-Type": "application/json" },
33781
+ body: JSON.stringify({ txHash: params.txHash })
33782
+ });
33783
+ if (res.status !== 200 && res.status !== 202) {
33784
+ throw new Error(`Gateway error: ${res.status} ${res.statusText}`);
33785
+ }
33786
+ return await res.json();
33787
+ },
33788
+ async payForOperation(params) {
33789
+ const body = {
33790
+ payerAddress: params.payerAddress,
33791
+ opType: params.opType,
33792
+ opId: params.opId,
33793
+ asset: params.asset,
33794
+ amount: params.amount,
33795
+ paymentNonce: params.paymentNonce
33796
+ };
33797
+ if (params.accessRecord) {
33798
+ body["accessRecord"] = params.accessRecord;
33799
+ }
33800
+ const res = await fetch(`${base}/v1/escrow/pay`, {
33801
+ method: "POST",
33802
+ headers: {
33803
+ "Content-Type": "application/json",
33804
+ Authorization: `Web3Signed ${params.signature}`
33805
+ },
33806
+ body: JSON.stringify(body)
33807
+ });
33808
+ if (!res.ok) {
33809
+ throw new Error(`Gateway error: ${res.status} ${res.statusText}`);
33810
+ }
33811
+ return await res.json();
33812
+ },
33813
+ async settle(params) {
33814
+ const res = await fetch(`${base}/v1/settle`, {
33815
+ method: "POST",
33816
+ headers: { "Content-Type": "application/json" },
33817
+ // The gateway accepts an empty body; only `limit` is recognised.
33818
+ // Always send a JSON body so the gateway's req.body shape parse
33819
+ // doesn't have to deal with an undefined.
33820
+ body: JSON.stringify(params ?? {})
33821
+ });
33822
+ if (!res.ok) {
33823
+ throw new Error(`Gateway error: ${res.status} ${res.statusText}`);
33824
+ }
33825
+ return await res.json();
33826
+ },
33547
33827
  async deleteFile(params) {
33548
33828
  const res = await fetch(`${base}/v1/files/${params.fileId}`, {
33549
33829
  method: "DELETE",
@@ -33628,6 +33908,7 @@ async function parsePSError(response) {
33628
33908
  // Annotate the CommonJS export names for ESM import in node:
33629
33909
  0 && (module.exports = {
33630
33910
  ACCOUNT_PERSONAL_SERVER_REGISTRATION_INTENT,
33911
+ ADD_DATA_TYPES,
33631
33912
  AccountPersonalServerLiteOwnerBindingError,
33632
33913
  AccountPersonalServerRegistrationError,
33633
33914
  BUILDER_REGISTRATION_TYPES,
@@ -33640,9 +33921,12 @@ async function parsePSError(response) {
33640
33921
  DataFileEnvelopeSchema,
33641
33922
  DropboxStorage,
33642
33923
  ECIESError,
33924
+ ESCROW_DEPOSIT_ABI,
33643
33925
  ExpiredTokenError,
33926
+ FEE_REGISTRY_ABI,
33644
33927
  FILE_DELETION_TYPES,
33645
33928
  FILE_REGISTRATION_TYPES,
33929
+ GENERIC_PAYMENT_TYPES,
33646
33930
  GRANT_REGISTRATION_TYPES,
33647
33931
  GRANT_REVOCATION_TYPES,
33648
33932
  GoogleDriveStorage,
@@ -33653,6 +33937,7 @@ async function parsePSError(response) {
33653
33937
  IpfsStorage,
33654
33938
  MASTER_KEY_MESSAGE,
33655
33939
  MissingAuthError,
33940
+ NATIVE_VANA_ASSET,
33656
33941
  NetworkError,
33657
33942
  NodeECIESProvider,
33658
33943
  NodePlatformAdapter,
@@ -33670,6 +33955,8 @@ async function parsePSError(response) {
33670
33955
  PersonalServerError,
33671
33956
  PinataStorage,
33672
33957
  R2Storage,
33958
+ RECORD_DATA_ACCESS_TYPES,
33959
+ REGISTRATION_KIND_FOR_OP,
33673
33960
  ReadOnlyError,
33674
33961
  RelayerError,
33675
33962
  SERVER_REGISTRATION_TYPES,
@@ -33684,6 +33971,8 @@ async function parsePSError(response) {
33684
33971
  VanaError,
33685
33972
  VanaStorage,
33686
33973
  assertValidPkceVerifier,
33974
+ buildDepositNativeRequest,
33975
+ buildDepositTokenRequest,
33687
33976
  buildPersonalServerLiteOwnerBindingMessage,
33688
33977
  buildPersonalServerLiteOwnerBindingSignature,
33689
33978
  buildPersonalServerRegistrationSignature,
@@ -33705,12 +33994,17 @@ async function parsePSError(response) {
33705
33994
  createVanaStorageProvider,
33706
33995
  createViemPersonalServerLiteOwnerBindingSigner,
33707
33996
  createViemPersonalServerRegistrationSigner,
33997
+ dataRegistryDomain,
33708
33998
  decryptWithPassword,
33709
33999
  deriveMasterKey,
33710
34000
  deriveScopeKey,
33711
34001
  deserializeECIES,
33712
34002
  detectPlatform,
34003
+ encodeDepositNativeData,
34004
+ encodeDepositTokenData,
33713
34005
  encryptWithPassword,
34006
+ escrowContractAddress,
34007
+ escrowPaymentDomain,
33714
34008
  fileDeletionDomain,
33715
34009
  fileRegistrationDomain,
33716
34010
  generatePkceVerifier,
@@ -33720,6 +34014,8 @@ async function parsePSError(response) {
33720
34014
  getContractAddress,
33721
34015
  getContractController,
33722
34016
  getContractInfo,
34017
+ getFee,
34018
+ getOpFee,
33723
34019
  getPlatformCapabilities,
33724
34020
  getServiceEndpoints,
33725
34021
  grantRegistrationDomain,
@@ -33731,7 +34027,6 @@ async function parsePSError(response) {
33731
34027
  moksha,
33732
34028
  mokshaServices,
33733
34029
  mokshaTestnet,
33734
- parseGrantRegistrationPayload,
33735
34030
  parsePSError,
33736
34031
  parseScope,
33737
34032
  parseWeb3SignedHeader,