@openzeppelin/ui-builder-adapter-stellar 1.3.0 → 1.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -3672,11 +3672,12 @@ var StellarIndexerClient = class {
3672
3672
  }
3673
3673
  const grantMap = /* @__PURE__ */ new Map();
3674
3674
  for (const entry of result.data.accessControlEvents.nodes) {
3675
- if (!grantMap.has(entry.account)) {
3676
- grantMap.set(entry.account, {
3675
+ const account = entry.account || "";
3676
+ if (account && !grantMap.has(account)) {
3677
+ grantMap.set(account, {
3677
3678
  timestamp: entry.timestamp,
3678
3679
  txId: entry.txHash,
3679
- ledger: parseInt(entry.blockHeight, 10)
3680
+ ledger: parseInt(entry.blockNumber, 10)
3680
3681
  });
3681
3682
  }
3682
3683
  }
@@ -3793,10 +3794,17 @@ var StellarIndexerClient = class {
3793
3794
  import_ui_utils20.logger.debug(LOG_SYSTEM3, `Ownership transfer was completed for ${contractAddress}`);
3794
3795
  return null;
3795
3796
  }
3796
- if (!latestInitiation.admin) {
3797
+ if (!latestInitiation.previousOwner) {
3797
3798
  import_ui_utils20.logger.warn(
3798
3799
  LOG_SYSTEM3,
3799
- `Indexer returned OWNERSHIP_TRANSFER_STARTED event without admin field for ${contractAddress}. This indicates incomplete indexer data. Treating as no valid pending transfer.`
3800
+ `Indexer returned OWNERSHIP_TRANSFER_STARTED event without previousOwner field for ${contractAddress}. This indicates incomplete indexer data. Treating as no valid pending transfer.`
3801
+ );
3802
+ return null;
3803
+ }
3804
+ if (!latestInitiation.newOwner) {
3805
+ import_ui_utils20.logger.warn(
3806
+ LOG_SYSTEM3,
3807
+ `Indexer returned OWNERSHIP_TRANSFER_STARTED event without newOwner field for ${contractAddress}. This indicates incomplete indexer data. Treating as no valid pending transfer.`
3800
3808
  );
3801
3809
  return null;
3802
3810
  }
@@ -3809,14 +3817,14 @@ var StellarIndexerClient = class {
3809
3817
  }
3810
3818
  import_ui_utils20.logger.info(
3811
3819
  LOG_SYSTEM3,
3812
- `Found pending ownership transfer for ${contractAddress}: pending owner=${latestInitiation.account}, expires at ledger ${latestInitiation.liveUntilLedger}`
3820
+ `Found pending ownership transfer for ${contractAddress}: pending owner=${latestInitiation.newOwner}, expires at ledger ${latestInitiation.liveUntilLedger}`
3813
3821
  );
3814
3822
  return {
3815
- previousOwner: latestInitiation.admin,
3816
- pendingOwner: latestInitiation.account,
3823
+ previousOwner: latestInitiation.previousOwner,
3824
+ pendingOwner: latestInitiation.newOwner,
3817
3825
  txHash: latestInitiation.txHash,
3818
3826
  timestamp: latestInitiation.timestamp,
3819
- ledger: parseInt(latestInitiation.ledger || latestInitiation.blockHeight, 10),
3827
+ ledger: parseInt(latestInitiation.blockNumber, 10),
3820
3828
  liveUntilLedger: latestInitiation.liveUntilLedger
3821
3829
  };
3822
3830
  } catch (error) {
@@ -3934,10 +3942,17 @@ var StellarIndexerClient = class {
3934
3942
  import_ui_utils20.logger.debug(LOG_SYSTEM3, `Admin transfer was completed for ${contractAddress}`);
3935
3943
  return null;
3936
3944
  }
3937
- if (!latestInitiation.admin) {
3945
+ if (!latestInitiation.previousAdmin) {
3946
+ import_ui_utils20.logger.warn(
3947
+ LOG_SYSTEM3,
3948
+ `Indexer returned ADMIN_TRANSFER_INITIATED event without previousAdmin field for ${contractAddress}. This indicates incomplete indexer data. Treating as no valid pending transfer.`
3949
+ );
3950
+ return null;
3951
+ }
3952
+ if (!latestInitiation.newAdmin) {
3938
3953
  import_ui_utils20.logger.warn(
3939
3954
  LOG_SYSTEM3,
3940
- `Indexer returned ADMIN_TRANSFER_INITIATED event without admin field for ${contractAddress}. This indicates incomplete indexer data. Treating as no valid pending transfer.`
3955
+ `Indexer returned ADMIN_TRANSFER_INITIATED event without newAdmin field for ${contractAddress}. This indicates incomplete indexer data. Treating as no valid pending transfer.`
3941
3956
  );
3942
3957
  return null;
3943
3958
  }
@@ -3950,14 +3965,14 @@ var StellarIndexerClient = class {
3950
3965
  }
3951
3966
  import_ui_utils20.logger.info(
3952
3967
  LOG_SYSTEM3,
3953
- `Found pending admin transfer for ${contractAddress}: pending admin=${latestInitiation.account}, expires at ledger ${latestInitiation.liveUntilLedger}`
3968
+ `Found pending admin transfer for ${contractAddress}: pending admin=${latestInitiation.newAdmin}, expires at ledger ${latestInitiation.liveUntilLedger}`
3954
3969
  );
3955
3970
  return {
3956
- previousAdmin: latestInitiation.admin,
3957
- pendingAdmin: latestInitiation.account,
3971
+ previousAdmin: latestInitiation.previousAdmin,
3972
+ pendingAdmin: latestInitiation.newAdmin,
3958
3973
  txHash: latestInitiation.txHash,
3959
3974
  timestamp: latestInitiation.timestamp,
3960
- ledger: parseInt(latestInitiation.ledger || latestInitiation.blockHeight, 10),
3975
+ ledger: parseInt(latestInitiation.blockNumber, 10),
3961
3976
  liveUntilLedger: latestInitiation.liveUntilLedger
3962
3977
  };
3963
3978
  } catch (error) {
@@ -3981,11 +3996,6 @@ var StellarIndexerClient = class {
3981
3996
  * Note: The OpenZeppelin Stellar contract emits `ownership_transfer` event
3982
3997
  * which is indexed as `OWNERSHIP_TRANSFER_STARTED`.
3983
3998
  *
3984
- * Schema mapping:
3985
- * - `account`: pending new owner
3986
- * - `admin`: current owner who initiated the transfer
3987
- * - `ledger`: block height of the event
3988
- * - `liveUntilLedger`: expiration ledger for the pending transfer
3989
3999
  */
3990
4000
  buildOwnershipTransferStartedQuery() {
3991
4001
  return `
@@ -3993,19 +4003,18 @@ var StellarIndexerClient = class {
3993
4003
  accessControlEvents(
3994
4004
  filter: {
3995
4005
  contract: { equalTo: $contract }
3996
- type: { equalTo: OWNERSHIP_TRANSFER_STARTED }
4006
+ eventType: { equalTo: OWNERSHIP_TRANSFER_STARTED }
3997
4007
  }
3998
4008
  orderBy: TIMESTAMP_DESC
3999
4009
  first: 1
4000
4010
  ) {
4001
4011
  nodes {
4002
4012
  id
4003
- account
4004
- admin
4013
+ previousOwner
4014
+ newOwner
4005
4015
  txHash
4006
4016
  timestamp
4007
- ledger
4008
- blockHeight
4017
+ blockNumber
4009
4018
  liveUntilLedger
4010
4019
  }
4011
4020
  }
@@ -4021,7 +4030,7 @@ var StellarIndexerClient = class {
4021
4030
  accessControlEvents(
4022
4031
  filter: {
4023
4032
  contract: { equalTo: $contract }
4024
- type: { equalTo: OWNERSHIP_TRANSFER_COMPLETED }
4033
+ eventType: { equalTo: OWNERSHIP_TRANSFER_COMPLETED }
4025
4034
  timestamp: { greaterThan: $afterTimestamp }
4026
4035
  }
4027
4036
  orderBy: TIMESTAMP_DESC
@@ -4041,12 +4050,6 @@ var StellarIndexerClient = class {
4041
4050
  *
4042
4051
  * Note: The OpenZeppelin Stellar contract emits `admin_transfer_initiated` event
4043
4052
  * which is indexed as `ADMIN_TRANSFER_INITIATED`.
4044
- *
4045
- * Schema mapping:
4046
- * - `account`: pending new admin
4047
- * - `admin`: current admin who initiated the transfer
4048
- * - `ledger`: block height of the event
4049
- * - `liveUntilLedger`: expiration ledger for the pending transfer
4050
4053
  */
4051
4054
  buildAdminTransferInitiatedQuery() {
4052
4055
  return `
@@ -4054,19 +4057,18 @@ var StellarIndexerClient = class {
4054
4057
  accessControlEvents(
4055
4058
  filter: {
4056
4059
  contract: { equalTo: $contract }
4057
- type: { equalTo: ADMIN_TRANSFER_INITIATED }
4060
+ eventType: { equalTo: ADMIN_TRANSFER_INITIATED }
4058
4061
  }
4059
4062
  orderBy: TIMESTAMP_DESC
4060
4063
  first: 1
4061
4064
  ) {
4062
4065
  nodes {
4063
4066
  id
4064
- account
4065
- admin
4067
+ previousAdmin
4068
+ newAdmin
4066
4069
  txHash
4067
4070
  timestamp
4068
- ledger
4069
- blockHeight
4071
+ blockNumber
4070
4072
  liveUntilLedger
4071
4073
  }
4072
4074
  }
@@ -4082,7 +4084,7 @@ var StellarIndexerClient = class {
4082
4084
  accessControlEvents(
4083
4085
  filter: {
4084
4086
  contract: { equalTo: $contract }
4085
- type: { equalTo: ADMIN_TRANSFER_COMPLETED }
4087
+ eventType: { equalTo: ADMIN_TRANSFER_COMPLETED }
4086
4088
  timestamp: { greaterThan: $afterTimestamp }
4087
4089
  }
4088
4090
  orderBy: TIMESTAMP_DESC
@@ -4179,17 +4181,18 @@ var StellarIndexerClient = class {
4179
4181
  }
4180
4182
  /**
4181
4183
  * Maps internal changeType to GraphQL EventType enum
4182
- * GraphQL enum values: ROLE_GRANTED, ROLE_REVOKED, OWNERSHIP_TRANSFER_STARTED,
4183
- * OWNERSHIP_TRANSFER_COMPLETED, ADMIN_TRANSFER_INITIATED, ADMIN_TRANSFER_COMPLETED
4184
4184
  */
4185
4185
  mapChangeTypeToGraphQLEnum(changeType) {
4186
4186
  const mapping = {
4187
4187
  GRANTED: "ROLE_GRANTED",
4188
4188
  REVOKED: "ROLE_REVOKED",
4189
+ ROLE_ADMIN_CHANGED: "ROLE_ADMIN_CHANGED",
4189
4190
  OWNERSHIP_TRANSFER_STARTED: "OWNERSHIP_TRANSFER_STARTED",
4190
4191
  OWNERSHIP_TRANSFER_COMPLETED: "OWNERSHIP_TRANSFER_COMPLETED",
4192
+ OWNERSHIP_RENOUNCED: "OWNERSHIP_RENOUNCED",
4191
4193
  ADMIN_TRANSFER_INITIATED: "ADMIN_TRANSFER_INITIATED",
4192
4194
  ADMIN_TRANSFER_COMPLETED: "ADMIN_TRANSFER_COMPLETED",
4195
+ ADMIN_RENOUNCED: "ADMIN_RENOUNCED",
4193
4196
  UNKNOWN: "UNKNOWN"
4194
4197
  };
4195
4198
  return mapping[changeType];
@@ -4200,7 +4203,7 @@ var StellarIndexerClient = class {
4200
4203
  buildHistoryQuery(_contractAddress, options) {
4201
4204
  const roleFilter = options?.roleId ? ", role: { equalTo: $role }" : "";
4202
4205
  const accountFilter = options?.account ? ", account: { equalTo: $account }" : "";
4203
- const typeFilter = options?.changeType ? `, type: { equalTo: ${this.mapChangeTypeToGraphQLEnum(options.changeType)} }` : "";
4206
+ const typeFilter = options?.changeType ? `, eventType: { equalTo: ${this.mapChangeTypeToGraphQLEnum(options.changeType)} }` : "";
4204
4207
  const txFilter = options?.txId ? ", txHash: { equalTo: $txHash }" : "";
4205
4208
  const timestampConditions = [];
4206
4209
  if (options?.timestampFrom) {
@@ -4210,7 +4213,7 @@ var StellarIndexerClient = class {
4210
4213
  timestampConditions.push("lessThanOrEqualTo: $timestampTo");
4211
4214
  }
4212
4215
  const timestampFilter = timestampConditions.length > 0 ? `, timestamp: { ${timestampConditions.join(", ")} }` : "";
4213
- const ledgerFilter = options?.ledger ? ", blockHeight: { equalTo: $blockHeight }" : "";
4216
+ const ledgerFilter = options?.ledger ? ", blockNumber: { equalTo: $blockNumber }" : "";
4214
4217
  const limitClause = options?.limit ? ", first: $limit" : "";
4215
4218
  const cursorClause = options?.cursor ? ", after: $cursor" : "";
4216
4219
  const varDeclarations = [
@@ -4220,7 +4223,7 @@ var StellarIndexerClient = class {
4220
4223
  options?.txId ? "$txHash: String" : "",
4221
4224
  options?.timestampFrom ? "$timestampFrom: Datetime" : "",
4222
4225
  options?.timestampTo ? "$timestampTo: Datetime" : "",
4223
- options?.ledger ? "$blockHeight: BigFloat" : "",
4226
+ options?.ledger ? "$blockNumber: BigFloat" : "",
4224
4227
  options?.limit ? "$limit: Int" : "",
4225
4228
  options?.cursor ? "$cursor: Cursor" : ""
4226
4229
  ].filter(Boolean).join(", ");
@@ -4236,10 +4239,14 @@ var StellarIndexerClient = class {
4236
4239
  id
4237
4240
  role
4238
4241
  account
4239
- type
4242
+ eventType
4240
4243
  txHash
4241
4244
  timestamp
4242
- blockHeight
4245
+ blockNumber
4246
+ previousOwner
4247
+ newOwner
4248
+ previousAdmin
4249
+ newAdmin
4243
4250
  }
4244
4251
  pageInfo {
4245
4252
  hasNextPage
@@ -4272,7 +4279,7 @@ var StellarIndexerClient = class {
4272
4279
  variables.timestampTo = options.timestampTo;
4273
4280
  }
4274
4281
  if (options?.ledger) {
4275
- variables.blockHeight = String(options.ledger);
4282
+ variables.blockNumber = String(options.ledger);
4276
4283
  }
4277
4284
  if (options?.limit) {
4278
4285
  variables.limit = options.limit;
@@ -4293,7 +4300,7 @@ var StellarIndexerClient = class {
4293
4300
  accessControlEvents(
4294
4301
  filter: {
4295
4302
  contract: { equalTo: $contract }
4296
- type: { in: [ROLE_GRANTED, ROLE_REVOKED] }
4303
+ eventType: { in: [ROLE_GRANTED, ROLE_REVOKED] }
4297
4304
  }
4298
4305
  ) {
4299
4306
  nodes {
@@ -4316,7 +4323,7 @@ var StellarIndexerClient = class {
4316
4323
  contract: { equalTo: $contract }
4317
4324
  role: { equalTo: $role }
4318
4325
  account: { in: $accounts }
4319
- type: { equalTo: ROLE_GRANTED }
4326
+ eventType: { equalTo: ROLE_GRANTED }
4320
4327
  }
4321
4328
  orderBy: TIMESTAMP_DESC
4322
4329
  ) {
@@ -4324,12 +4331,32 @@ var StellarIndexerClient = class {
4324
4331
  account
4325
4332
  txHash
4326
4333
  timestamp
4327
- blockHeight
4334
+ blockNumber
4328
4335
  }
4329
4336
  }
4330
4337
  }
4331
4338
  `;
4332
4339
  }
4340
+ /**
4341
+ * Normalize account from indexer entry
4342
+ *
4343
+ * Multi-chain schema uses different fields for different event types:
4344
+ * - Role events: `account` field
4345
+ * - Ownership events: `newOwner` field (pending/new owner)
4346
+ * - Admin events: `newAdmin` field (pending/new admin)
4347
+ */
4348
+ normalizeAccount(entry) {
4349
+ if (entry.eventType === "ROLE_GRANTED" || entry.eventType === "ROLE_REVOKED" || entry.eventType === "ROLE_ADMIN_CHANGED") {
4350
+ return entry.account || "";
4351
+ }
4352
+ if (entry.eventType === "OWNERSHIP_TRANSFER_STARTED" || entry.eventType === "OWNERSHIP_TRANSFER_COMPLETED" || entry.eventType === "OWNERSHIP_RENOUNCED") {
4353
+ return entry.newOwner || "";
4354
+ }
4355
+ if (entry.eventType === "ADMIN_TRANSFER_INITIATED" || entry.eventType === "ADMIN_TRANSFER_COMPLETED" || entry.eventType === "ADMIN_RENOUNCED") {
4356
+ return entry.newAdmin || "";
4357
+ }
4358
+ return entry.account || "";
4359
+ }
4333
4360
  /**
4334
4361
  * Transform indexer entries to standard HistoryEntry format
4335
4362
  */
@@ -4340,39 +4367,48 @@ var StellarIndexerClient = class {
4340
4367
  // Map ownership events to special role
4341
4368
  };
4342
4369
  let changeType;
4343
- switch (entry.type) {
4370
+ switch (entry.eventType) {
4344
4371
  case "ROLE_GRANTED":
4345
4372
  changeType = "GRANTED";
4346
4373
  break;
4347
4374
  case "ROLE_REVOKED":
4348
4375
  changeType = "REVOKED";
4349
4376
  break;
4377
+ case "ROLE_ADMIN_CHANGED":
4378
+ changeType = "ROLE_ADMIN_CHANGED";
4379
+ break;
4350
4380
  case "OWNERSHIP_TRANSFER_STARTED":
4351
4381
  changeType = "OWNERSHIP_TRANSFER_STARTED";
4352
4382
  break;
4353
4383
  case "OWNERSHIP_TRANSFER_COMPLETED":
4354
4384
  changeType = "OWNERSHIP_TRANSFER_COMPLETED";
4355
4385
  break;
4386
+ case "OWNERSHIP_RENOUNCED":
4387
+ changeType = "OWNERSHIP_RENOUNCED";
4388
+ break;
4356
4389
  case "ADMIN_TRANSFER_INITIATED":
4357
4390
  changeType = "ADMIN_TRANSFER_INITIATED";
4358
4391
  break;
4359
4392
  case "ADMIN_TRANSFER_COMPLETED":
4360
4393
  changeType = "ADMIN_TRANSFER_COMPLETED";
4361
4394
  break;
4395
+ case "ADMIN_RENOUNCED":
4396
+ changeType = "ADMIN_RENOUNCED";
4397
+ break;
4362
4398
  default:
4363
4399
  import_ui_utils20.logger.warn(
4364
4400
  LOG_SYSTEM3,
4365
- `Unknown event type: ${entry.type}, assigning changeType to UNKNOWN`
4401
+ `Unknown event type: ${entry.eventType}, assigning changeType to UNKNOWN`
4366
4402
  );
4367
4403
  changeType = "UNKNOWN";
4368
4404
  }
4369
4405
  return {
4370
4406
  role,
4371
- account: entry.account,
4407
+ account: this.normalizeAccount(entry),
4372
4408
  changeType,
4373
4409
  txId: entry.txHash,
4374
4410
  timestamp: entry.timestamp,
4375
- ledger: parseInt(entry.blockHeight, 10)
4411
+ ledger: parseInt(entry.blockNumber, 10)
4376
4412
  };
4377
4413
  });
4378
4414
  }
@@ -5660,6 +5696,24 @@ async function testWithFallbackMethod(rpcConfig, signal, startTime) {
5660
5696
  }
5661
5697
 
5662
5698
  // src/configuration/network-services.ts
5699
+ function getStellarDefaultServiceConfig(networkConfig, serviceId) {
5700
+ switch (serviceId) {
5701
+ case "rpc":
5702
+ if (networkConfig.sorobanRpcUrl) {
5703
+ return { sorobanRpcUrl: networkConfig.sorobanRpcUrl };
5704
+ }
5705
+ break;
5706
+ case "indexer":
5707
+ if (networkConfig.indexerUri && networkConfig.indexerWsUri) {
5708
+ return {
5709
+ indexerUri: networkConfig.indexerUri,
5710
+ indexerWsUri: networkConfig.indexerWsUri
5711
+ };
5712
+ }
5713
+ break;
5714
+ }
5715
+ return null;
5716
+ }
5663
5717
  function getStellarNetworkServiceForms(exclude = []) {
5664
5718
  const forms = [
5665
5719
  {
@@ -8017,6 +8071,12 @@ var StellarAdapter = class {
8017
8071
  async testNetworkServiceConnection(serviceId, values) {
8018
8072
  return testStellarNetworkServiceConnection(serviceId, values);
8019
8073
  }
8074
+ /**
8075
+ * @inheritdoc
8076
+ */
8077
+ getDefaultServiceConfig(serviceId) {
8078
+ return getStellarDefaultServiceConfig(this.networkConfig, serviceId);
8079
+ }
8020
8080
  /**
8021
8081
  * NOTE about artifact inputs (single input with auto-detection):
8022
8082
  *
@@ -8459,8 +8519,8 @@ var stellarAdapterConfig = {
8459
8519
  "lossless-json": "^4.0.2",
8460
8520
  // Wallet connection and integration
8461
8521
  "@creit.tech/stellar-wallets-kit": "^1.9.5",
8462
- // OpenZeppelin Relayer integration (optional, for gasless transactions)
8463
- "@openzeppelin/relayer-sdk": "1.1.0",
8522
+ // OpenZeppelin Relayer integration for gasless transactions
8523
+ "@openzeppelin/relayer-sdk": "1.9.0",
8464
8524
  // React integration for wallet components
8465
8525
  react: "^19.0.0",
8466
8526
  "react-dom": "^19.0.0"