@layr-labs/ecloud-sdk 1.0.0-devep7 → 1.0.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/browser.cjs CHANGED
@@ -173,6 +173,7 @@ __export(browser_exports, {
173
173
  BillingApiClient: () => BillingApiClient,
174
174
  BillingSessionError: () => BillingSessionError,
175
175
  BuildApiClient: () => BuildApiClient,
176
+ EMPTY_CONTAINER_POLICY: () => EMPTY_CONTAINER_POLICY,
176
177
  SessionError: () => SessionError,
177
178
  UserApiClient: () => UserApiClient,
178
179
  addHexPrefix: () => addHexPrefix,
@@ -257,6 +258,13 @@ __export(browser_exports, {
257
258
  module.exports = __toCommonJS(browser_exports);
258
259
 
259
260
  // src/client/common/types/index.ts
261
+ var EMPTY_CONTAINER_POLICY = {
262
+ args: [],
263
+ cmdOverride: [],
264
+ env: [],
265
+ envOverride: [],
266
+ restartPolicy: ""
267
+ };
260
268
  var noopLogger = {
261
269
  debug: () => {
262
270
  },
@@ -290,27 +298,28 @@ var BILLING_ENVIRONMENTS = {
290
298
  billingApiServerURL: "https://billingapi.eigencloud.xyz"
291
299
  }
292
300
  };
293
- var PLATFORM_ENV_TESTNET_SEPOLIA = "testnet-sepolia";
294
- var PLATFORM_ENV_MAINNET_ETHEREUM = "mainnet-ethereum";
295
- var DEFAULT_APP_BASE_DOMAIN = "eigencloud.xyz";
296
301
  var ENVIRONMENTS = {
297
302
  "sepolia-dev": {
298
303
  name: "sepolia",
299
304
  build: "dev",
300
305
  appControllerAddress: "0xa86DC1C47cb2518327fB4f9A1627F51966c83B92",
306
+ releaseAbiVersion: "v1.5",
307
+ // AppController upgraded to v1.5.x (containerPolicy)
301
308
  permissionControllerAddress: ChainAddresses[SEPOLIA_CHAIN_ID].PermissionController,
302
309
  erc7702DelegatorAddress: CommonAddresses.ERC7702Delegator,
303
310
  kmsServerURL: "http://10.128.0.57:8080",
304
311
  userApiServerURL: "https://userapi-compute-sepolia-dev.eigencloud.xyz",
305
312
  defaultRPCURL: "https://ethereum-sepolia-rpc.publicnode.com",
306
313
  usdcCreditsAddress: "0xbdA3897c3A428763B59015C64AB766c288C97376",
307
- platformEnv: PLATFORM_ENV_TESTNET_SEPOLIA,
308
- appBaseDomain: DEFAULT_APP_BASE_DOMAIN
314
+ baseUsdcCreditsAddress: "0x7673a47463F80c6a3553Db9E54c8cDcd5313d0ac",
315
+ baseRPCURL: "https://base-sepolia-rpc.publicnode.com"
309
316
  },
310
317
  sepolia: {
311
318
  name: "sepolia",
312
319
  build: "prod",
313
320
  appControllerAddress: "0x0dd810a6ffba6a9820a10d97b659f07d8d23d4E2",
321
+ releaseAbiVersion: "v1.4",
322
+ // prod still on AppController v1.4.0 (3-field Release)
314
323
  permissionControllerAddress: ChainAddresses[SEPOLIA_CHAIN_ID].PermissionController,
315
324
  erc7702DelegatorAddress: CommonAddresses.ERC7702Delegator,
316
325
  kmsServerURL: "http://10.128.15.203:8080",
@@ -318,21 +327,21 @@ var ENVIRONMENTS = {
318
327
  defaultRPCURL: "https://ethereum-sepolia-rpc.publicnode.com",
319
328
  billingRPCURL: "https://ethereum-rpc.publicnode.com",
320
329
  usdcCreditsAddress: "0xed9c88640ca9149Bd9f7ee6620074af10F2E145d",
321
- platformEnv: PLATFORM_ENV_TESTNET_SEPOLIA,
322
- appBaseDomain: DEFAULT_APP_BASE_DOMAIN
330
+ baseUsdcCreditsAddress: "0x7673a47463F80c6a3553Db9E54c8cDcd5313d0ac",
331
+ baseRPCURL: "https://base-sepolia-rpc.publicnode.com"
323
332
  },
324
333
  "mainnet-alpha": {
325
334
  name: "mainnet-alpha",
326
335
  build: "prod",
327
336
  appControllerAddress: "0xc38d35Fc995e75342A21CBd6D770305b142Fbe67",
337
+ releaseAbiVersion: "v1.4",
338
+ // prod still on AppController v1.4.0 (3-field Release)
328
339
  permissionControllerAddress: ChainAddresses[MAINNET_CHAIN_ID].PermissionController,
329
340
  erc7702DelegatorAddress: CommonAddresses.ERC7702Delegator,
330
341
  kmsServerURL: "http://10.128.0.2:8080",
331
342
  userApiServerURL: "https://userapi-compute.eigencloud.xyz",
332
343
  defaultRPCURL: "https://ethereum-rpc.publicnode.com",
333
- usdcCreditsAddress: "0xed9c88640ca9149Bd9f7ee6620074af10F2E145d",
334
- platformEnv: PLATFORM_ENV_MAINNET_ETHEREUM,
335
- appBaseDomain: DEFAULT_APP_BASE_DOMAIN
344
+ usdcCreditsAddress: "0xed9c88640ca9149Bd9f7ee6620074af10F2E145d"
336
345
  }
337
346
  };
338
347
  var CHAIN_ID_TO_ENVIRONMENT = {
@@ -392,7 +401,7 @@ function getBillingEnvironmentConfig(build) {
392
401
  };
393
402
  }
394
403
  function getBuildType() {
395
- const buildTimeType = true ? "dev"?.toLowerCase() : void 0;
404
+ const buildTimeType = true ? "prod"?.toLowerCase() : void 0;
396
405
  const runtimeType = process.env.BUILD_TYPE?.toLowerCase();
397
406
  const buildType = buildTimeType || runtimeType;
398
407
  if (buildType === "dev") {
@@ -424,7 +433,7 @@ var import_accounts = require("viem/accounts");
424
433
 
425
434
  // src/client/common/constants.ts
426
435
  var import_chains = require("viem/chains");
427
- var SUPPORTED_CHAINS = [import_chains.mainnet, import_chains.sepolia];
436
+ var SUPPORTED_CHAINS = [import_chains.mainnet, import_chains.sepolia, import_chains.baseSepolia];
428
437
 
429
438
  // src/client/common/utils/helpers.ts
430
439
  function getChainFromID(chainID, fallback2 = import_chains2.sepolia) {
@@ -701,6 +710,7 @@ var import_axios = __toESM(require("axios"), 1);
701
710
  var MAX_RETRIES = 5;
702
711
  var INITIAL_BACKOFF_MS = 1e3;
703
712
  var MAX_BACKOFF_MS = 3e4;
713
+ var RETRYABLE_STATUSES = /* @__PURE__ */ new Set([429, 502, 503, 504]);
704
714
  function sleep(ms) {
705
715
  return new Promise((resolve) => setTimeout(resolve, ms));
706
716
  }
@@ -720,7 +730,7 @@ async function requestWithRetry(config) {
720
730
  for (let attempt = 0; attempt <= MAX_RETRIES; attempt++) {
721
731
  const res = await (0, import_axios.default)({ ...config, validateStatus: () => true });
722
732
  lastResponse = res;
723
- if (res.status !== 429) {
733
+ if (!RETRYABLE_STATUSES.has(res.status)) {
724
734
  return res;
725
735
  }
726
736
  if (attempt < MAX_RETRIES) {
@@ -749,7 +759,7 @@ var CanViewAppLogsPermission = "0x2fd3f2fe";
749
759
  var CanViewSensitiveAppInfoPermission = "0x0e67b22f";
750
760
  var CanUpdateAppProfilePermission = "0x036fef61";
751
761
  function getDefaultClientId() {
752
- const version = true ? "1.0.0-devep7" : "0.0.0";
762
+ const version = true ? "1.0.0" : "0.0.0";
753
763
  return `ecloud-sdk/v${version}`;
754
764
  }
755
765
  var UserApiClient = class {
@@ -784,7 +794,6 @@ var UserApiClient = class {
784
794
  status: app.app_status,
785
795
  ip: app.ip,
786
796
  machineType: app.machine_type,
787
- hostname: app.hostname,
788
797
  profile: app.profile,
789
798
  metrics: app.metrics,
790
799
  evmAddresses,
@@ -850,28 +859,6 @@ var UserApiClient = class {
850
859
  status: app.app_status || app.App_Status || ""
851
860
  }));
852
861
  }
853
- /**
854
- * Get deployments for an app from the gRPC-gateway endpoint.
855
- * Returns deployment records including upgrade_phase for tracking upgrade progress.
856
- *
857
- * Endpoint: GET /v1/apps/:appAddress/deployments
858
- */
859
- async getDeployments(appAddress) {
860
- const endpoint = `${this.config.userApiServerURL}/v1/apps/${appAddress}/deployments`;
861
- const response = await this.makeEIP712AuthenticatedRequest(endpoint);
862
- const result = await response.json();
863
- const deployments = result.deployments || [];
864
- return deployments.map((dep) => ({
865
- id: dep.id || "",
866
- externalId: dep.external_id || dep.externalId || "",
867
- endpoint: dep.endpoint || "",
868
- releaseId: dep.release_id || dep.releaseId || "",
869
- upgradePhase: dep.upgrade_phase || dep.upgradePhase || "",
870
- replacesDeploymentId: dep.replaces_deployment_id || dep.replacesDeploymentId || "",
871
- createdAt: dep.created_at || dep.createdAt || "",
872
- updatedAt: dep.updated_at || dep.updatedAt || ""
873
- }));
874
- }
875
862
  /**
876
863
  * Upload app profile information with optional image
877
864
  *
@@ -1005,48 +992,6 @@ Please check:
1005
992
  "X-eigenx-expiry": expiry.toString()
1006
993
  };
1007
994
  }
1008
- /**
1009
- * Make an EIP-712 authenticated request to the gRPC-gateway endpoints.
1010
- * Uses the billing/compute auth pattern: Authorization + X-Account + X-Expiry headers.
1011
- */
1012
- async makeEIP712AuthenticatedRequest(url) {
1013
- const expiry = BigInt(Math.floor(Date.now() / 1e3) + 5 * 60);
1014
- const { signature } = await calculateBillingAuthSignature({
1015
- walletClient: this.walletClient,
1016
- product: "compute",
1017
- expiry
1018
- });
1019
- const headers = {
1020
- Authorization: `Bearer ${signature}`,
1021
- "X-Account": this.address,
1022
- "X-Expiry": expiry.toString(),
1023
- "x-client-id": this.clientId
1024
- };
1025
- try {
1026
- const response = await requestWithRetry({
1027
- method: "GET",
1028
- url,
1029
- headers,
1030
- maxRedirects: 0,
1031
- withCredentials: true
1032
- });
1033
- const status = response.status;
1034
- if (status < 200 || status >= 300) {
1035
- const body = typeof response.data === "string" ? response.data : JSON.stringify(response.data);
1036
- throw new Error(`gRPC-gateway request failed: ${status} - ${body}`);
1037
- }
1038
- return {
1039
- json: async () => response.data,
1040
- text: async () => typeof response.data === "string" ? response.data : JSON.stringify(response.data)
1041
- };
1042
- } catch (error) {
1043
- if (error.message?.includes("fetch failed") || error.message?.includes("ECONNREFUSED") || error.message?.includes("ENOTFOUND") || error.cause) {
1044
- const cause = error.cause?.message || error.cause || error.message;
1045
- throw new Error(`Failed to connect to API at ${url}: ${cause}`);
1046
- }
1047
- throw error;
1048
- }
1049
- }
1050
995
  // ==========================================================================
1051
996
  // SIWE Session Management
1052
997
  // ==========================================================================
@@ -1417,6 +1362,63 @@ var BillingApiClient = class {
1417
1362
  return resp.json();
1418
1363
  }
1419
1364
  // ==========================================================================
1365
+ // Admin - Coupon Methods
1366
+ // ==========================================================================
1367
+ async createCoupon(amountCents) {
1368
+ const endpoint = `${this.config.billingApiServerURL}/admin/coupons`;
1369
+ const resp = await this.makeAuthenticatedRequest(endpoint, "POST", "compute", { amountCents });
1370
+ return resp.json();
1371
+ }
1372
+ async listCoupons(opts) {
1373
+ const params = new URLSearchParams();
1374
+ if (opts?.offset !== void 0) params.set("offset", opts.offset.toString());
1375
+ if (opts?.limit !== void 0) params.set("limit", opts.limit.toString());
1376
+ if (opts?.active !== void 0) params.set("active", opts.active.toString());
1377
+ if (opts?.redeemed !== void 0) params.set("redeemed", opts.redeemed.toString());
1378
+ const qs = params.toString();
1379
+ const endpoint = `${this.config.billingApiServerURL}/admin/coupons${qs ? `?${qs}` : ""}`;
1380
+ const resp = await this.makeAuthenticatedRequest(endpoint, "GET", "compute");
1381
+ return resp.json();
1382
+ }
1383
+ async getCoupon(id) {
1384
+ const endpoint = `${this.config.billingApiServerURL}/admin/coupons/${id}`;
1385
+ const resp = await this.makeAuthenticatedRequest(endpoint, "GET", "compute");
1386
+ return resp.json();
1387
+ }
1388
+ async deactivateCoupon(id) {
1389
+ const endpoint = `${this.config.billingApiServerURL}/admin/coupons/${id}/deactivate`;
1390
+ await this.makeAuthenticatedRequest(endpoint, "POST", "compute");
1391
+ }
1392
+ async redeemCouponForUser(id, address) {
1393
+ const endpoint = `${this.config.billingApiServerURL}/admin/coupons/${id}/redeem`;
1394
+ await this.makeAuthenticatedRequest(endpoint, "POST", "compute", { address });
1395
+ }
1396
+ // ==========================================================================
1397
+ // Admin - Admin Management Methods
1398
+ // ==========================================================================
1399
+ async addAdmin(address) {
1400
+ const endpoint = `${this.config.billingApiServerURL}/admin/admins`;
1401
+ const resp = await this.makeAuthenticatedRequest(endpoint, "POST", "compute", { address });
1402
+ return resp.json();
1403
+ }
1404
+ async removeAdmin(address) {
1405
+ const endpoint = `${this.config.billingApiServerURL}/admin/admins/${address}`;
1406
+ await this.makeAuthenticatedRequest(endpoint, "DELETE", "compute");
1407
+ }
1408
+ async listAdmins() {
1409
+ const endpoint = `${this.config.billingApiServerURL}/admin/admins`;
1410
+ const resp = await this.makeAuthenticatedRequest(endpoint, "GET", "compute");
1411
+ return resp.json();
1412
+ }
1413
+ // ==========================================================================
1414
+ // User - Coupon Redemption
1415
+ // ==========================================================================
1416
+ async redeemCoupon(code) {
1417
+ const endpoint = `${this.config.billingApiServerURL}/v1/coupons/redeem`;
1418
+ const resp = await this.makeAuthenticatedRequest(endpoint, "POST", "compute", { code });
1419
+ return resp.json();
1420
+ }
1421
+ // ==========================================================================
1420
1422
  // Internal Methods
1421
1423
  // ==========================================================================
1422
1424
  /**
@@ -3079,6 +3081,19 @@ var AppController_default = [
3079
3081
  ],
3080
3082
  stateMutability: "view"
3081
3083
  },
3084
+ {
3085
+ type: "function",
3086
+ name: "confirmUpgrade",
3087
+ inputs: [
3088
+ {
3089
+ name: "app",
3090
+ type: "address",
3091
+ internalType: "contractIApp"
3092
+ }
3093
+ ],
3094
+ outputs: [],
3095
+ stateMutability: "nonpayable"
3096
+ },
3082
3097
  {
3083
3098
  type: "function",
3084
3099
  name: "createApp",
@@ -3131,6 +3146,62 @@ var AppController_default = [
3131
3146
  name: "encryptedEnv",
3132
3147
  type: "bytes",
3133
3148
  internalType: "bytes"
3149
+ },
3150
+ {
3151
+ name: "containerPolicy",
3152
+ type: "tuple",
3153
+ internalType: "structIAppController.ContainerPolicy",
3154
+ components: [
3155
+ {
3156
+ name: "args",
3157
+ type: "string[]",
3158
+ internalType: "string[]"
3159
+ },
3160
+ {
3161
+ name: "cmdOverride",
3162
+ type: "string[]",
3163
+ internalType: "string[]"
3164
+ },
3165
+ {
3166
+ name: "env",
3167
+ type: "tuple[]",
3168
+ internalType: "structIAppController.EnvVar[]",
3169
+ components: [
3170
+ {
3171
+ name: "key",
3172
+ type: "string",
3173
+ internalType: "string"
3174
+ },
3175
+ {
3176
+ name: "value",
3177
+ type: "string",
3178
+ internalType: "string"
3179
+ }
3180
+ ]
3181
+ },
3182
+ {
3183
+ name: "envOverride",
3184
+ type: "tuple[]",
3185
+ internalType: "structIAppController.EnvVar[]",
3186
+ components: [
3187
+ {
3188
+ name: "key",
3189
+ type: "string",
3190
+ internalType: "string"
3191
+ },
3192
+ {
3193
+ name: "value",
3194
+ type: "string",
3195
+ internalType: "string"
3196
+ }
3197
+ ]
3198
+ },
3199
+ {
3200
+ name: "restartPolicy",
3201
+ type: "string",
3202
+ internalType: "string"
3203
+ }
3204
+ ]
3134
3205
  }
3135
3206
  ]
3136
3207
  }
@@ -3196,6 +3267,62 @@ var AppController_default = [
3196
3267
  name: "encryptedEnv",
3197
3268
  type: "bytes",
3198
3269
  internalType: "bytes"
3270
+ },
3271
+ {
3272
+ name: "containerPolicy",
3273
+ type: "tuple",
3274
+ internalType: "structIAppController.ContainerPolicy",
3275
+ components: [
3276
+ {
3277
+ name: "args",
3278
+ type: "string[]",
3279
+ internalType: "string[]"
3280
+ },
3281
+ {
3282
+ name: "cmdOverride",
3283
+ type: "string[]",
3284
+ internalType: "string[]"
3285
+ },
3286
+ {
3287
+ name: "env",
3288
+ type: "tuple[]",
3289
+ internalType: "structIAppController.EnvVar[]",
3290
+ components: [
3291
+ {
3292
+ name: "key",
3293
+ type: "string",
3294
+ internalType: "string"
3295
+ },
3296
+ {
3297
+ name: "value",
3298
+ type: "string",
3299
+ internalType: "string"
3300
+ }
3301
+ ]
3302
+ },
3303
+ {
3304
+ name: "envOverride",
3305
+ type: "tuple[]",
3306
+ internalType: "structIAppController.EnvVar[]",
3307
+ components: [
3308
+ {
3309
+ name: "key",
3310
+ type: "string",
3311
+ internalType: "string"
3312
+ },
3313
+ {
3314
+ name: "value",
3315
+ type: "string",
3316
+ internalType: "string"
3317
+ }
3318
+ ]
3319
+ },
3320
+ {
3321
+ name: "restartPolicy",
3322
+ type: "string",
3323
+ internalType: "string"
3324
+ }
3325
+ ]
3199
3326
  }
3200
3327
  ]
3201
3328
  }
@@ -3209,6 +3336,44 @@ var AppController_default = [
3209
3336
  ],
3210
3337
  stateMutability: "nonpayable"
3211
3338
  },
3339
+ {
3340
+ type: "function",
3341
+ name: "createEmptyApp",
3342
+ inputs: [
3343
+ {
3344
+ name: "salt",
3345
+ type: "bytes32",
3346
+ internalType: "bytes32"
3347
+ }
3348
+ ],
3349
+ outputs: [
3350
+ {
3351
+ name: "app",
3352
+ type: "address",
3353
+ internalType: "contractIApp"
3354
+ }
3355
+ ],
3356
+ stateMutability: "nonpayable"
3357
+ },
3358
+ {
3359
+ type: "function",
3360
+ name: "createEmptyAppWithIsolatedBilling",
3361
+ inputs: [
3362
+ {
3363
+ name: "salt",
3364
+ type: "bytes32",
3365
+ internalType: "bytes32"
3366
+ }
3367
+ ],
3368
+ outputs: [
3369
+ {
3370
+ name: "app",
3371
+ type: "address",
3372
+ internalType: "contractIApp"
3373
+ }
3374
+ ],
3375
+ stateMutability: "nonpayable"
3376
+ },
3212
3377
  {
3213
3378
  type: "function",
3214
3379
  name: "domainSeparator",
@@ -3243,26 +3408,26 @@ var AppController_default = [
3243
3408
  },
3244
3409
  {
3245
3410
  type: "function",
3246
- name: "getBillingType",
3411
+ name: "getAppCreator",
3247
3412
  inputs: [
3248
3413
  {
3249
3414
  name: "app",
3250
3415
  type: "address",
3251
- internalType: "address"
3416
+ internalType: "contractIApp"
3252
3417
  }
3253
3418
  ],
3254
3419
  outputs: [
3255
3420
  {
3256
3421
  name: "",
3257
- type: "uint8",
3258
- internalType: "uint8"
3422
+ type: "address",
3423
+ internalType: "address"
3259
3424
  }
3260
3425
  ],
3261
3426
  stateMutability: "view"
3262
3427
  },
3263
3428
  {
3264
3429
  type: "function",
3265
- name: "getAppCreator",
3430
+ name: "getAppLatestReleaseBlockNumber",
3266
3431
  inputs: [
3267
3432
  {
3268
3433
  name: "app",
@@ -3273,15 +3438,15 @@ var AppController_default = [
3273
3438
  outputs: [
3274
3439
  {
3275
3440
  name: "",
3276
- type: "address",
3277
- internalType: "address"
3441
+ type: "uint32",
3442
+ internalType: "uint32"
3278
3443
  }
3279
3444
  ],
3280
3445
  stateMutability: "view"
3281
3446
  },
3282
3447
  {
3283
3448
  type: "function",
3284
- name: "getAppLatestReleaseBlockNumber",
3449
+ name: "getAppOperatorSetId",
3285
3450
  inputs: [
3286
3451
  {
3287
3452
  name: "app",
@@ -3300,7 +3465,7 @@ var AppController_default = [
3300
3465
  },
3301
3466
  {
3302
3467
  type: "function",
3303
- name: "getAppOperatorSetId",
3468
+ name: "getAppPendingReleaseBlockNumber",
3304
3469
  inputs: [
3305
3470
  {
3306
3471
  name: "app",
@@ -3377,6 +3542,11 @@ var AppController_default = [
3377
3542
  type: "uint32",
3378
3543
  internalType: "uint32"
3379
3544
  },
3545
+ {
3546
+ name: "pendingReleaseBlockNumber",
3547
+ type: "uint32",
3548
+ internalType: "uint32"
3549
+ },
3380
3550
  {
3381
3551
  name: "status",
3382
3552
  type: "uint8",
@@ -3433,6 +3603,11 @@ var AppController_default = [
3433
3603
  type: "uint32",
3434
3604
  internalType: "uint32"
3435
3605
  },
3606
+ {
3607
+ name: "pendingReleaseBlockNumber",
3608
+ type: "uint32",
3609
+ internalType: "uint32"
3610
+ },
3436
3611
  {
3437
3612
  name: "status",
3438
3613
  type: "uint8",
@@ -3489,6 +3664,11 @@ var AppController_default = [
3489
3664
  type: "uint32",
3490
3665
  internalType: "uint32"
3491
3666
  },
3667
+ {
3668
+ name: "pendingReleaseBlockNumber",
3669
+ type: "uint32",
3670
+ internalType: "uint32"
3671
+ },
3492
3672
  {
3493
3673
  name: "status",
3494
3674
  type: "uint8",
@@ -3545,6 +3725,11 @@ var AppController_default = [
3545
3725
  type: "uint32",
3546
3726
  internalType: "uint32"
3547
3727
  },
3728
+ {
3729
+ name: "pendingReleaseBlockNumber",
3730
+ type: "uint32",
3731
+ internalType: "uint32"
3732
+ },
3548
3733
  {
3549
3734
  name: "status",
3550
3735
  type: "uint8",
@@ -3557,51 +3742,1413 @@ var AppController_default = [
3557
3742
  },
3558
3743
  {
3559
3744
  type: "function",
3560
- name: "getMaxActiveAppsPerUser",
3745
+ name: "getBillingAccount",
3561
3746
  inputs: [
3562
3747
  {
3563
- name: "user",
3748
+ name: "app",
3564
3749
  type: "address",
3565
- internalType: "address"
3750
+ internalType: "contractIApp"
3566
3751
  }
3567
3752
  ],
3568
3753
  outputs: [
3569
3754
  {
3570
3755
  name: "",
3571
- type: "uint32",
3572
- internalType: "uint32"
3756
+ type: "address",
3757
+ internalType: "address"
3573
3758
  }
3574
3759
  ],
3575
3760
  stateMutability: "view"
3576
3761
  },
3577
3762
  {
3578
3763
  type: "function",
3579
- name: "globalActiveAppCount",
3580
- inputs: [],
3764
+ name: "getBillingType",
3765
+ inputs: [
3766
+ {
3767
+ name: "app",
3768
+ type: "address",
3769
+ internalType: "contractIApp"
3770
+ }
3771
+ ],
3581
3772
  outputs: [
3582
3773
  {
3583
3774
  name: "",
3584
- type: "uint32",
3585
- internalType: "uint32"
3775
+ type: "uint8",
3776
+ internalType: "enumIAppController.BillingType"
3586
3777
  }
3587
3778
  ],
3588
3779
  stateMutability: "view"
3589
3780
  },
3590
3781
  {
3591
3782
  type: "function",
3592
- name: "initialize",
3783
+ name: "getMaxActiveAppsPerUser",
3593
3784
  inputs: [
3594
3785
  {
3595
- name: "admin",
3786
+ name: "user",
3596
3787
  type: "address",
3597
3788
  internalType: "address"
3598
3789
  }
3599
3790
  ],
3600
- outputs: [],
3601
- stateMutability: "nonpayable"
3602
- },
3603
- {
3604
- type: "function",
3791
+ outputs: [
3792
+ {
3793
+ name: "",
3794
+ type: "uint32",
3795
+ internalType: "uint32"
3796
+ }
3797
+ ],
3798
+ stateMutability: "view"
3799
+ },
3800
+ {
3801
+ type: "function",
3802
+ name: "globalActiveAppCount",
3803
+ inputs: [],
3804
+ outputs: [
3805
+ {
3806
+ name: "",
3807
+ type: "uint32",
3808
+ internalType: "uint32"
3809
+ }
3810
+ ],
3811
+ stateMutability: "view"
3812
+ },
3813
+ {
3814
+ type: "function",
3815
+ name: "initialize",
3816
+ inputs: [
3817
+ {
3818
+ name: "admin",
3819
+ type: "address",
3820
+ internalType: "address"
3821
+ }
3822
+ ],
3823
+ outputs: [],
3824
+ stateMutability: "nonpayable"
3825
+ },
3826
+ {
3827
+ type: "function",
3828
+ name: "maxGlobalActiveApps",
3829
+ inputs: [],
3830
+ outputs: [
3831
+ {
3832
+ name: "",
3833
+ type: "uint32",
3834
+ internalType: "uint32"
3835
+ }
3836
+ ],
3837
+ stateMutability: "view"
3838
+ },
3839
+ {
3840
+ type: "function",
3841
+ name: "permissionController",
3842
+ inputs: [],
3843
+ outputs: [
3844
+ {
3845
+ name: "",
3846
+ type: "address",
3847
+ internalType: "contractIPermissionController"
3848
+ }
3849
+ ],
3850
+ stateMutability: "view"
3851
+ },
3852
+ {
3853
+ type: "function",
3854
+ name: "releaseManager",
3855
+ inputs: [],
3856
+ outputs: [
3857
+ {
3858
+ name: "",
3859
+ type: "address",
3860
+ internalType: "contractIReleaseManager"
3861
+ }
3862
+ ],
3863
+ stateMutability: "view"
3864
+ },
3865
+ {
3866
+ type: "function",
3867
+ name: "setMaxActiveAppsPerUser",
3868
+ inputs: [
3869
+ {
3870
+ name: "user",
3871
+ type: "address",
3872
+ internalType: "address"
3873
+ },
3874
+ {
3875
+ name: "limit",
3876
+ type: "uint32",
3877
+ internalType: "uint32"
3878
+ }
3879
+ ],
3880
+ outputs: [],
3881
+ stateMutability: "nonpayable"
3882
+ },
3883
+ {
3884
+ type: "function",
3885
+ name: "setMaxGlobalActiveApps",
3886
+ inputs: [
3887
+ {
3888
+ name: "limit",
3889
+ type: "uint32",
3890
+ internalType: "uint32"
3891
+ }
3892
+ ],
3893
+ outputs: [],
3894
+ stateMutability: "nonpayable"
3895
+ },
3896
+ {
3897
+ type: "function",
3898
+ name: "startApp",
3899
+ inputs: [
3900
+ {
3901
+ name: "app",
3902
+ type: "address",
3903
+ internalType: "contractIApp"
3904
+ }
3905
+ ],
3906
+ outputs: [],
3907
+ stateMutability: "nonpayable"
3908
+ },
3909
+ {
3910
+ type: "function",
3911
+ name: "stopApp",
3912
+ inputs: [
3913
+ {
3914
+ name: "app",
3915
+ type: "address",
3916
+ internalType: "contractIApp"
3917
+ }
3918
+ ],
3919
+ outputs: [],
3920
+ stateMutability: "nonpayable"
3921
+ },
3922
+ {
3923
+ type: "function",
3924
+ name: "suspend",
3925
+ inputs: [
3926
+ {
3927
+ name: "account",
3928
+ type: "address",
3929
+ internalType: "address"
3930
+ },
3931
+ {
3932
+ name: "apps",
3933
+ type: "address[]",
3934
+ internalType: "contractIApp[]"
3935
+ }
3936
+ ],
3937
+ outputs: [],
3938
+ stateMutability: "nonpayable"
3939
+ },
3940
+ {
3941
+ type: "function",
3942
+ name: "terminateApp",
3943
+ inputs: [
3944
+ {
3945
+ name: "app",
3946
+ type: "address",
3947
+ internalType: "contractIApp"
3948
+ }
3949
+ ],
3950
+ outputs: [],
3951
+ stateMutability: "nonpayable"
3952
+ },
3953
+ {
3954
+ type: "function",
3955
+ name: "terminateAppByAdmin",
3956
+ inputs: [
3957
+ {
3958
+ name: "app",
3959
+ type: "address",
3960
+ internalType: "contractIApp"
3961
+ }
3962
+ ],
3963
+ outputs: [],
3964
+ stateMutability: "nonpayable"
3965
+ },
3966
+ {
3967
+ type: "function",
3968
+ name: "updateAppMetadataURI",
3969
+ inputs: [
3970
+ {
3971
+ name: "app",
3972
+ type: "address",
3973
+ internalType: "contractIApp"
3974
+ },
3975
+ {
3976
+ name: "metadataURI",
3977
+ type: "string",
3978
+ internalType: "string"
3979
+ }
3980
+ ],
3981
+ outputs: [],
3982
+ stateMutability: "nonpayable"
3983
+ },
3984
+ {
3985
+ type: "function",
3986
+ name: "upgradeApp",
3987
+ inputs: [
3988
+ {
3989
+ name: "app",
3990
+ type: "address",
3991
+ internalType: "contractIApp"
3992
+ },
3993
+ {
3994
+ name: "release",
3995
+ type: "tuple",
3996
+ internalType: "structIAppController.Release",
3997
+ components: [
3998
+ {
3999
+ name: "rmsRelease",
4000
+ type: "tuple",
4001
+ internalType: "structIReleaseManagerTypes.Release",
4002
+ components: [
4003
+ {
4004
+ name: "artifacts",
4005
+ type: "tuple[]",
4006
+ internalType: "structIReleaseManagerTypes.Artifact[]",
4007
+ components: [
4008
+ {
4009
+ name: "digest",
4010
+ type: "bytes32",
4011
+ internalType: "bytes32"
4012
+ },
4013
+ {
4014
+ name: "registry",
4015
+ type: "string",
4016
+ internalType: "string"
4017
+ }
4018
+ ]
4019
+ },
4020
+ {
4021
+ name: "upgradeByTime",
4022
+ type: "uint32",
4023
+ internalType: "uint32"
4024
+ }
4025
+ ]
4026
+ },
4027
+ {
4028
+ name: "publicEnv",
4029
+ type: "bytes",
4030
+ internalType: "bytes"
4031
+ },
4032
+ {
4033
+ name: "encryptedEnv",
4034
+ type: "bytes",
4035
+ internalType: "bytes"
4036
+ },
4037
+ {
4038
+ name: "containerPolicy",
4039
+ type: "tuple",
4040
+ internalType: "structIAppController.ContainerPolicy",
4041
+ components: [
4042
+ {
4043
+ name: "args",
4044
+ type: "string[]",
4045
+ internalType: "string[]"
4046
+ },
4047
+ {
4048
+ name: "cmdOverride",
4049
+ type: "string[]",
4050
+ internalType: "string[]"
4051
+ },
4052
+ {
4053
+ name: "env",
4054
+ type: "tuple[]",
4055
+ internalType: "structIAppController.EnvVar[]",
4056
+ components: [
4057
+ {
4058
+ name: "key",
4059
+ type: "string",
4060
+ internalType: "string"
4061
+ },
4062
+ {
4063
+ name: "value",
4064
+ type: "string",
4065
+ internalType: "string"
4066
+ }
4067
+ ]
4068
+ },
4069
+ {
4070
+ name: "envOverride",
4071
+ type: "tuple[]",
4072
+ internalType: "structIAppController.EnvVar[]",
4073
+ components: [
4074
+ {
4075
+ name: "key",
4076
+ type: "string",
4077
+ internalType: "string"
4078
+ },
4079
+ {
4080
+ name: "value",
4081
+ type: "string",
4082
+ internalType: "string"
4083
+ }
4084
+ ]
4085
+ },
4086
+ {
4087
+ name: "restartPolicy",
4088
+ type: "string",
4089
+ internalType: "string"
4090
+ }
4091
+ ]
4092
+ }
4093
+ ]
4094
+ }
4095
+ ],
4096
+ outputs: [
4097
+ {
4098
+ name: "",
4099
+ type: "uint256",
4100
+ internalType: "uint256"
4101
+ }
4102
+ ],
4103
+ stateMutability: "nonpayable"
4104
+ },
4105
+ {
4106
+ type: "function",
4107
+ name: "version",
4108
+ inputs: [],
4109
+ outputs: [
4110
+ {
4111
+ name: "",
4112
+ type: "string",
4113
+ internalType: "string"
4114
+ }
4115
+ ],
4116
+ stateMutability: "view"
4117
+ },
4118
+ {
4119
+ type: "event",
4120
+ name: "AppCreated",
4121
+ inputs: [
4122
+ {
4123
+ name: "creator",
4124
+ type: "address",
4125
+ indexed: true,
4126
+ internalType: "address"
4127
+ },
4128
+ {
4129
+ name: "app",
4130
+ type: "address",
4131
+ indexed: true,
4132
+ internalType: "contractIApp"
4133
+ },
4134
+ {
4135
+ name: "operatorSetId",
4136
+ type: "uint32",
4137
+ indexed: false,
4138
+ internalType: "uint32"
4139
+ }
4140
+ ],
4141
+ anonymous: false
4142
+ },
4143
+ {
4144
+ type: "event",
4145
+ name: "AppMetadataURIUpdated",
4146
+ inputs: [
4147
+ {
4148
+ name: "app",
4149
+ type: "address",
4150
+ indexed: true,
4151
+ internalType: "contractIApp"
4152
+ },
4153
+ {
4154
+ name: "metadataURI",
4155
+ type: "string",
4156
+ indexed: false,
4157
+ internalType: "string"
4158
+ }
4159
+ ],
4160
+ anonymous: false
4161
+ },
4162
+ {
4163
+ type: "event",
4164
+ name: "AppStarted",
4165
+ inputs: [
4166
+ {
4167
+ name: "app",
4168
+ type: "address",
4169
+ indexed: true,
4170
+ internalType: "contractIApp"
4171
+ }
4172
+ ],
4173
+ anonymous: false
4174
+ },
4175
+ {
4176
+ type: "event",
4177
+ name: "AppStopped",
4178
+ inputs: [
4179
+ {
4180
+ name: "app",
4181
+ type: "address",
4182
+ indexed: true,
4183
+ internalType: "contractIApp"
4184
+ }
4185
+ ],
4186
+ anonymous: false
4187
+ },
4188
+ {
4189
+ type: "event",
4190
+ name: "AppSuspended",
4191
+ inputs: [
4192
+ {
4193
+ name: "app",
4194
+ type: "address",
4195
+ indexed: true,
4196
+ internalType: "contractIApp"
4197
+ }
4198
+ ],
4199
+ anonymous: false
4200
+ },
4201
+ {
4202
+ type: "event",
4203
+ name: "AppTerminated",
4204
+ inputs: [
4205
+ {
4206
+ name: "app",
4207
+ type: "address",
4208
+ indexed: true,
4209
+ internalType: "contractIApp"
4210
+ }
4211
+ ],
4212
+ anonymous: false
4213
+ },
4214
+ {
4215
+ type: "event",
4216
+ name: "AppTerminatedByAdmin",
4217
+ inputs: [
4218
+ {
4219
+ name: "app",
4220
+ type: "address",
4221
+ indexed: true,
4222
+ internalType: "contractIApp"
4223
+ }
4224
+ ],
4225
+ anonymous: false
4226
+ },
4227
+ {
4228
+ type: "event",
4229
+ name: "AppUpgraded",
4230
+ inputs: [
4231
+ {
4232
+ name: "app",
4233
+ type: "address",
4234
+ indexed: true,
4235
+ internalType: "contractIApp"
4236
+ },
4237
+ {
4238
+ name: "rmsReleaseId",
4239
+ type: "uint256",
4240
+ indexed: false,
4241
+ internalType: "uint256"
4242
+ },
4243
+ {
4244
+ name: "release",
4245
+ type: "tuple",
4246
+ indexed: false,
4247
+ internalType: "structIAppController.Release",
4248
+ components: [
4249
+ {
4250
+ name: "rmsRelease",
4251
+ type: "tuple",
4252
+ internalType: "structIReleaseManagerTypes.Release",
4253
+ components: [
4254
+ {
4255
+ name: "artifacts",
4256
+ type: "tuple[]",
4257
+ internalType: "structIReleaseManagerTypes.Artifact[]",
4258
+ components: [
4259
+ {
4260
+ name: "digest",
4261
+ type: "bytes32",
4262
+ internalType: "bytes32"
4263
+ },
4264
+ {
4265
+ name: "registry",
4266
+ type: "string",
4267
+ internalType: "string"
4268
+ }
4269
+ ]
4270
+ },
4271
+ {
4272
+ name: "upgradeByTime",
4273
+ type: "uint32",
4274
+ internalType: "uint32"
4275
+ }
4276
+ ]
4277
+ },
4278
+ {
4279
+ name: "publicEnv",
4280
+ type: "bytes",
4281
+ internalType: "bytes"
4282
+ },
4283
+ {
4284
+ name: "encryptedEnv",
4285
+ type: "bytes",
4286
+ internalType: "bytes"
4287
+ },
4288
+ {
4289
+ name: "containerPolicy",
4290
+ type: "tuple",
4291
+ internalType: "structIAppController.ContainerPolicy",
4292
+ components: [
4293
+ {
4294
+ name: "args",
4295
+ type: "string[]",
4296
+ internalType: "string[]"
4297
+ },
4298
+ {
4299
+ name: "cmdOverride",
4300
+ type: "string[]",
4301
+ internalType: "string[]"
4302
+ },
4303
+ {
4304
+ name: "env",
4305
+ type: "tuple[]",
4306
+ internalType: "structIAppController.EnvVar[]",
4307
+ components: [
4308
+ {
4309
+ name: "key",
4310
+ type: "string",
4311
+ internalType: "string"
4312
+ },
4313
+ {
4314
+ name: "value",
4315
+ type: "string",
4316
+ internalType: "string"
4317
+ }
4318
+ ]
4319
+ },
4320
+ {
4321
+ name: "envOverride",
4322
+ type: "tuple[]",
4323
+ internalType: "structIAppController.EnvVar[]",
4324
+ components: [
4325
+ {
4326
+ name: "key",
4327
+ type: "string",
4328
+ internalType: "string"
4329
+ },
4330
+ {
4331
+ name: "value",
4332
+ type: "string",
4333
+ internalType: "string"
4334
+ }
4335
+ ]
4336
+ },
4337
+ {
4338
+ name: "restartPolicy",
4339
+ type: "string",
4340
+ internalType: "string"
4341
+ }
4342
+ ]
4343
+ }
4344
+ ]
4345
+ }
4346
+ ],
4347
+ anonymous: false
4348
+ },
4349
+ {
4350
+ type: "event",
4351
+ name: "GlobalMaxActiveAppsSet",
4352
+ inputs: [
4353
+ {
4354
+ name: "limit",
4355
+ type: "uint32",
4356
+ indexed: false,
4357
+ internalType: "uint32"
4358
+ }
4359
+ ],
4360
+ anonymous: false
4361
+ },
4362
+ {
4363
+ type: "event",
4364
+ name: "Initialized",
4365
+ inputs: [
4366
+ {
4367
+ name: "version",
4368
+ type: "uint8",
4369
+ indexed: false,
4370
+ internalType: "uint8"
4371
+ }
4372
+ ],
4373
+ anonymous: false
4374
+ },
4375
+ {
4376
+ type: "event",
4377
+ name: "MaxActiveAppsSet",
4378
+ inputs: [
4379
+ {
4380
+ name: "user",
4381
+ type: "address",
4382
+ indexed: true,
4383
+ internalType: "address"
4384
+ },
4385
+ {
4386
+ name: "limit",
4387
+ type: "uint32",
4388
+ indexed: false,
4389
+ internalType: "uint32"
4390
+ }
4391
+ ],
4392
+ anonymous: false
4393
+ },
4394
+ {
4395
+ type: "event",
4396
+ name: "UpgradeConfirmed",
4397
+ inputs: [
4398
+ {
4399
+ name: "app",
4400
+ type: "address",
4401
+ indexed: true,
4402
+ internalType: "contractIApp"
4403
+ },
4404
+ {
4405
+ name: "pendingReleaseBlockNumber",
4406
+ type: "uint32",
4407
+ indexed: false,
4408
+ internalType: "uint32"
4409
+ }
4410
+ ],
4411
+ anonymous: false
4412
+ },
4413
+ {
4414
+ type: "error",
4415
+ name: "AccountHasActiveApps",
4416
+ inputs: []
4417
+ },
4418
+ {
4419
+ type: "error",
4420
+ name: "AppAlreadyExists",
4421
+ inputs: []
4422
+ },
4423
+ {
4424
+ type: "error",
4425
+ name: "AppDoesNotExist",
4426
+ inputs: []
4427
+ },
4428
+ {
4429
+ type: "error",
4430
+ name: "GlobalMaxActiveAppsExceeded",
4431
+ inputs: []
4432
+ },
4433
+ {
4434
+ type: "error",
4435
+ name: "InvalidAppStatus",
4436
+ inputs: []
4437
+ },
4438
+ {
4439
+ type: "error",
4440
+ name: "InvalidPermissions",
4441
+ inputs: []
4442
+ },
4443
+ {
4444
+ type: "error",
4445
+ name: "InvalidReleaseMetadataURI",
4446
+ inputs: []
4447
+ },
4448
+ {
4449
+ type: "error",
4450
+ name: "InvalidShortString",
4451
+ inputs: []
4452
+ },
4453
+ {
4454
+ type: "error",
4455
+ name: "InvalidSignature",
4456
+ inputs: []
4457
+ },
4458
+ {
4459
+ type: "error",
4460
+ name: "MaxActiveAppsExceeded",
4461
+ inputs: []
4462
+ },
4463
+ {
4464
+ type: "error",
4465
+ name: "MoreThanOneArtifact",
4466
+ inputs: []
4467
+ },
4468
+ {
4469
+ type: "error",
4470
+ name: "NoPendingUpgrade",
4471
+ inputs: []
4472
+ },
4473
+ {
4474
+ type: "error",
4475
+ name: "SignatureExpired",
4476
+ inputs: []
4477
+ },
4478
+ {
4479
+ type: "error",
4480
+ name: "StringTooLong",
4481
+ inputs: [
4482
+ {
4483
+ name: "str",
4484
+ type: "string",
4485
+ internalType: "string"
4486
+ }
4487
+ ]
4488
+ }
4489
+ ];
4490
+
4491
+ // src/client/common/abis/AppController.v1_4.json
4492
+ var AppController_v1_4_default = [
4493
+ {
4494
+ type: "constructor",
4495
+ inputs: [
4496
+ {
4497
+ name: "_version",
4498
+ type: "string",
4499
+ internalType: "string"
4500
+ },
4501
+ {
4502
+ name: "_permissionController",
4503
+ type: "address",
4504
+ internalType: "contractIPermissionController"
4505
+ },
4506
+ {
4507
+ name: "_releaseManager",
4508
+ type: "address",
4509
+ internalType: "contractIReleaseManager"
4510
+ },
4511
+ {
4512
+ name: "_computeAVSRegistrar",
4513
+ type: "address",
4514
+ internalType: "contractIComputeAVSRegistrar"
4515
+ },
4516
+ {
4517
+ name: "_computeOperator",
4518
+ type: "address",
4519
+ internalType: "contractIComputeOperator"
4520
+ },
4521
+ {
4522
+ name: "_appBeacon",
4523
+ type: "address",
4524
+ internalType: "contractIBeacon"
4525
+ }
4526
+ ],
4527
+ stateMutability: "nonpayable"
4528
+ },
4529
+ {
4530
+ type: "function",
4531
+ name: "API_PERMISSION_TYPEHASH",
4532
+ inputs: [],
4533
+ outputs: [
4534
+ {
4535
+ name: "",
4536
+ type: "bytes32",
4537
+ internalType: "bytes32"
4538
+ }
4539
+ ],
4540
+ stateMutability: "view"
4541
+ },
4542
+ {
4543
+ type: "function",
4544
+ name: "appBeacon",
4545
+ inputs: [],
4546
+ outputs: [
4547
+ {
4548
+ name: "",
4549
+ type: "address",
4550
+ internalType: "contractIBeacon"
4551
+ }
4552
+ ],
4553
+ stateMutability: "view"
4554
+ },
4555
+ {
4556
+ type: "function",
4557
+ name: "calculateApiPermissionDigestHash",
4558
+ inputs: [
4559
+ {
4560
+ name: "permission",
4561
+ type: "bytes4",
4562
+ internalType: "bytes4"
4563
+ },
4564
+ {
4565
+ name: "expiry",
4566
+ type: "uint256",
4567
+ internalType: "uint256"
4568
+ }
4569
+ ],
4570
+ outputs: [
4571
+ {
4572
+ name: "",
4573
+ type: "bytes32",
4574
+ internalType: "bytes32"
4575
+ }
4576
+ ],
4577
+ stateMutability: "view"
4578
+ },
4579
+ {
4580
+ type: "function",
4581
+ name: "calculateAppId",
4582
+ inputs: [
4583
+ {
4584
+ name: "deployer",
4585
+ type: "address",
4586
+ internalType: "address"
4587
+ },
4588
+ {
4589
+ name: "salt",
4590
+ type: "bytes32",
4591
+ internalType: "bytes32"
4592
+ }
4593
+ ],
4594
+ outputs: [
4595
+ {
4596
+ name: "",
4597
+ type: "address",
4598
+ internalType: "contractIApp"
4599
+ }
4600
+ ],
4601
+ stateMutability: "view"
4602
+ },
4603
+ {
4604
+ type: "function",
4605
+ name: "computeAVSRegistrar",
4606
+ inputs: [],
4607
+ outputs: [
4608
+ {
4609
+ name: "",
4610
+ type: "address",
4611
+ internalType: "contractIComputeAVSRegistrar"
4612
+ }
4613
+ ],
4614
+ stateMutability: "view"
4615
+ },
4616
+ {
4617
+ type: "function",
4618
+ name: "computeOperator",
4619
+ inputs: [],
4620
+ outputs: [
4621
+ {
4622
+ name: "",
4623
+ type: "address",
4624
+ internalType: "contractIComputeOperator"
4625
+ }
4626
+ ],
4627
+ stateMutability: "view"
4628
+ },
4629
+ {
4630
+ type: "function",
4631
+ name: "createApp",
4632
+ inputs: [
4633
+ {
4634
+ name: "salt",
4635
+ type: "bytes32",
4636
+ internalType: "bytes32"
4637
+ },
4638
+ {
4639
+ name: "release",
4640
+ type: "tuple",
4641
+ internalType: "structIAppController.Release",
4642
+ components: [
4643
+ {
4644
+ name: "rmsRelease",
4645
+ type: "tuple",
4646
+ internalType: "structIReleaseManagerTypes.Release",
4647
+ components: [
4648
+ {
4649
+ name: "artifacts",
4650
+ type: "tuple[]",
4651
+ internalType: "structIReleaseManagerTypes.Artifact[]",
4652
+ components: [
4653
+ {
4654
+ name: "digest",
4655
+ type: "bytes32",
4656
+ internalType: "bytes32"
4657
+ },
4658
+ {
4659
+ name: "registry",
4660
+ type: "string",
4661
+ internalType: "string"
4662
+ }
4663
+ ]
4664
+ },
4665
+ {
4666
+ name: "upgradeByTime",
4667
+ type: "uint32",
4668
+ internalType: "uint32"
4669
+ }
4670
+ ]
4671
+ },
4672
+ {
4673
+ name: "publicEnv",
4674
+ type: "bytes",
4675
+ internalType: "bytes"
4676
+ },
4677
+ {
4678
+ name: "encryptedEnv",
4679
+ type: "bytes",
4680
+ internalType: "bytes"
4681
+ }
4682
+ ]
4683
+ }
4684
+ ],
4685
+ outputs: [
4686
+ {
4687
+ name: "app",
4688
+ type: "address",
4689
+ internalType: "contractIApp"
4690
+ }
4691
+ ],
4692
+ stateMutability: "nonpayable"
4693
+ },
4694
+ {
4695
+ type: "function",
4696
+ name: "createAppWithIsolatedBilling",
4697
+ inputs: [
4698
+ {
4699
+ name: "salt",
4700
+ type: "bytes32",
4701
+ internalType: "bytes32"
4702
+ },
4703
+ {
4704
+ name: "release",
4705
+ type: "tuple",
4706
+ internalType: "structIAppController.Release",
4707
+ components: [
4708
+ {
4709
+ name: "rmsRelease",
4710
+ type: "tuple",
4711
+ internalType: "structIReleaseManagerTypes.Release",
4712
+ components: [
4713
+ {
4714
+ name: "artifacts",
4715
+ type: "tuple[]",
4716
+ internalType: "structIReleaseManagerTypes.Artifact[]",
4717
+ components: [
4718
+ {
4719
+ name: "digest",
4720
+ type: "bytes32",
4721
+ internalType: "bytes32"
4722
+ },
4723
+ {
4724
+ name: "registry",
4725
+ type: "string",
4726
+ internalType: "string"
4727
+ }
4728
+ ]
4729
+ },
4730
+ {
4731
+ name: "upgradeByTime",
4732
+ type: "uint32",
4733
+ internalType: "uint32"
4734
+ }
4735
+ ]
4736
+ },
4737
+ {
4738
+ name: "publicEnv",
4739
+ type: "bytes",
4740
+ internalType: "bytes"
4741
+ },
4742
+ {
4743
+ name: "encryptedEnv",
4744
+ type: "bytes",
4745
+ internalType: "bytes"
4746
+ }
4747
+ ]
4748
+ }
4749
+ ],
4750
+ outputs: [
4751
+ {
4752
+ name: "app",
4753
+ type: "address",
4754
+ internalType: "contractIApp"
4755
+ }
4756
+ ],
4757
+ stateMutability: "nonpayable"
4758
+ },
4759
+ {
4760
+ type: "function",
4761
+ name: "domainSeparator",
4762
+ inputs: [],
4763
+ outputs: [
4764
+ {
4765
+ name: "",
4766
+ type: "bytes32",
4767
+ internalType: "bytes32"
4768
+ }
4769
+ ],
4770
+ stateMutability: "view"
4771
+ },
4772
+ {
4773
+ type: "function",
4774
+ name: "getActiveAppCount",
4775
+ inputs: [
4776
+ {
4777
+ name: "user",
4778
+ type: "address",
4779
+ internalType: "address"
4780
+ }
4781
+ ],
4782
+ outputs: [
4783
+ {
4784
+ name: "",
4785
+ type: "uint32",
4786
+ internalType: "uint32"
4787
+ }
4788
+ ],
4789
+ stateMutability: "view"
4790
+ },
4791
+ {
4792
+ type: "function",
4793
+ name: "getBillingType",
4794
+ inputs: [
4795
+ {
4796
+ name: "app",
4797
+ type: "address",
4798
+ internalType: "address"
4799
+ }
4800
+ ],
4801
+ outputs: [
4802
+ {
4803
+ name: "",
4804
+ type: "uint8",
4805
+ internalType: "uint8"
4806
+ }
4807
+ ],
4808
+ stateMutability: "view"
4809
+ },
4810
+ {
4811
+ type: "function",
4812
+ name: "getAppCreator",
4813
+ inputs: [
4814
+ {
4815
+ name: "app",
4816
+ type: "address",
4817
+ internalType: "contractIApp"
4818
+ }
4819
+ ],
4820
+ outputs: [
4821
+ {
4822
+ name: "",
4823
+ type: "address",
4824
+ internalType: "address"
4825
+ }
4826
+ ],
4827
+ stateMutability: "view"
4828
+ },
4829
+ {
4830
+ type: "function",
4831
+ name: "getAppLatestReleaseBlockNumber",
4832
+ inputs: [
4833
+ {
4834
+ name: "app",
4835
+ type: "address",
4836
+ internalType: "contractIApp"
4837
+ }
4838
+ ],
4839
+ outputs: [
4840
+ {
4841
+ name: "",
4842
+ type: "uint32",
4843
+ internalType: "uint32"
4844
+ }
4845
+ ],
4846
+ stateMutability: "view"
4847
+ },
4848
+ {
4849
+ type: "function",
4850
+ name: "getAppOperatorSetId",
4851
+ inputs: [
4852
+ {
4853
+ name: "app",
4854
+ type: "address",
4855
+ internalType: "contractIApp"
4856
+ }
4857
+ ],
4858
+ outputs: [
4859
+ {
4860
+ name: "",
4861
+ type: "uint32",
4862
+ internalType: "uint32"
4863
+ }
4864
+ ],
4865
+ stateMutability: "view"
4866
+ },
4867
+ {
4868
+ type: "function",
4869
+ name: "getAppStatus",
4870
+ inputs: [
4871
+ {
4872
+ name: "app",
4873
+ type: "address",
4874
+ internalType: "contractIApp"
4875
+ }
4876
+ ],
4877
+ outputs: [
4878
+ {
4879
+ name: "",
4880
+ type: "uint8",
4881
+ internalType: "enumIAppController.AppStatus"
4882
+ }
4883
+ ],
4884
+ stateMutability: "view"
4885
+ },
4886
+ {
4887
+ type: "function",
4888
+ name: "getApps",
4889
+ inputs: [
4890
+ {
4891
+ name: "offset",
4892
+ type: "uint256",
4893
+ internalType: "uint256"
4894
+ },
4895
+ {
4896
+ name: "limit",
4897
+ type: "uint256",
4898
+ internalType: "uint256"
4899
+ }
4900
+ ],
4901
+ outputs: [
4902
+ {
4903
+ name: "apps",
4904
+ type: "address[]",
4905
+ internalType: "contractIApp[]"
4906
+ },
4907
+ {
4908
+ name: "appConfigsMem",
4909
+ type: "tuple[]",
4910
+ internalType: "structIAppController.AppConfig[]",
4911
+ components: [
4912
+ {
4913
+ name: "creator",
4914
+ type: "address",
4915
+ internalType: "address"
4916
+ },
4917
+ {
4918
+ name: "operatorSetId",
4919
+ type: "uint32",
4920
+ internalType: "uint32"
4921
+ },
4922
+ {
4923
+ name: "latestReleaseBlockNumber",
4924
+ type: "uint32",
4925
+ internalType: "uint32"
4926
+ },
4927
+ {
4928
+ name: "status",
4929
+ type: "uint8",
4930
+ internalType: "enumIAppController.AppStatus"
4931
+ }
4932
+ ]
4933
+ }
4934
+ ],
4935
+ stateMutability: "view"
4936
+ },
4937
+ {
4938
+ type: "function",
4939
+ name: "getAppsByBillingAccount",
4940
+ inputs: [
4941
+ {
4942
+ name: "account",
4943
+ type: "address",
4944
+ internalType: "address"
4945
+ },
4946
+ {
4947
+ name: "offset",
4948
+ type: "uint256",
4949
+ internalType: "uint256"
4950
+ },
4951
+ {
4952
+ name: "limit",
4953
+ type: "uint256",
4954
+ internalType: "uint256"
4955
+ }
4956
+ ],
4957
+ outputs: [
4958
+ {
4959
+ name: "apps",
4960
+ type: "address[]",
4961
+ internalType: "contractIApp[]"
4962
+ },
4963
+ {
4964
+ name: "appConfigsMem",
4965
+ type: "tuple[]",
4966
+ internalType: "structIAppController.AppConfig[]",
4967
+ components: [
4968
+ {
4969
+ name: "creator",
4970
+ type: "address",
4971
+ internalType: "address"
4972
+ },
4973
+ {
4974
+ name: "operatorSetId",
4975
+ type: "uint32",
4976
+ internalType: "uint32"
4977
+ },
4978
+ {
4979
+ name: "latestReleaseBlockNumber",
4980
+ type: "uint32",
4981
+ internalType: "uint32"
4982
+ },
4983
+ {
4984
+ name: "status",
4985
+ type: "uint8",
4986
+ internalType: "enumIAppController.AppStatus"
4987
+ }
4988
+ ]
4989
+ }
4990
+ ],
4991
+ stateMutability: "view"
4992
+ },
4993
+ {
4994
+ type: "function",
4995
+ name: "getAppsByCreator",
4996
+ inputs: [
4997
+ {
4998
+ name: "creator",
4999
+ type: "address",
5000
+ internalType: "address"
5001
+ },
5002
+ {
5003
+ name: "offset",
5004
+ type: "uint256",
5005
+ internalType: "uint256"
5006
+ },
5007
+ {
5008
+ name: "limit",
5009
+ type: "uint256",
5010
+ internalType: "uint256"
5011
+ }
5012
+ ],
5013
+ outputs: [
5014
+ {
5015
+ name: "apps",
5016
+ type: "address[]",
5017
+ internalType: "contractIApp[]"
5018
+ },
5019
+ {
5020
+ name: "appConfigsMem",
5021
+ type: "tuple[]",
5022
+ internalType: "structIAppController.AppConfig[]",
5023
+ components: [
5024
+ {
5025
+ name: "creator",
5026
+ type: "address",
5027
+ internalType: "address"
5028
+ },
5029
+ {
5030
+ name: "operatorSetId",
5031
+ type: "uint32",
5032
+ internalType: "uint32"
5033
+ },
5034
+ {
5035
+ name: "latestReleaseBlockNumber",
5036
+ type: "uint32",
5037
+ internalType: "uint32"
5038
+ },
5039
+ {
5040
+ name: "status",
5041
+ type: "uint8",
5042
+ internalType: "enumIAppController.AppStatus"
5043
+ }
5044
+ ]
5045
+ }
5046
+ ],
5047
+ stateMutability: "view"
5048
+ },
5049
+ {
5050
+ type: "function",
5051
+ name: "getAppsByDeveloper",
5052
+ inputs: [
5053
+ {
5054
+ name: "developer",
5055
+ type: "address",
5056
+ internalType: "address"
5057
+ },
5058
+ {
5059
+ name: "offset",
5060
+ type: "uint256",
5061
+ internalType: "uint256"
5062
+ },
5063
+ {
5064
+ name: "limit",
5065
+ type: "uint256",
5066
+ internalType: "uint256"
5067
+ }
5068
+ ],
5069
+ outputs: [
5070
+ {
5071
+ name: "apps",
5072
+ type: "address[]",
5073
+ internalType: "contractIApp[]"
5074
+ },
5075
+ {
5076
+ name: "appConfigsMem",
5077
+ type: "tuple[]",
5078
+ internalType: "structIAppController.AppConfig[]",
5079
+ components: [
5080
+ {
5081
+ name: "creator",
5082
+ type: "address",
5083
+ internalType: "address"
5084
+ },
5085
+ {
5086
+ name: "operatorSetId",
5087
+ type: "uint32",
5088
+ internalType: "uint32"
5089
+ },
5090
+ {
5091
+ name: "latestReleaseBlockNumber",
5092
+ type: "uint32",
5093
+ internalType: "uint32"
5094
+ },
5095
+ {
5096
+ name: "status",
5097
+ type: "uint8",
5098
+ internalType: "enumIAppController.AppStatus"
5099
+ }
5100
+ ]
5101
+ }
5102
+ ],
5103
+ stateMutability: "view"
5104
+ },
5105
+ {
5106
+ type: "function",
5107
+ name: "getMaxActiveAppsPerUser",
5108
+ inputs: [
5109
+ {
5110
+ name: "user",
5111
+ type: "address",
5112
+ internalType: "address"
5113
+ }
5114
+ ],
5115
+ outputs: [
5116
+ {
5117
+ name: "",
5118
+ type: "uint32",
5119
+ internalType: "uint32"
5120
+ }
5121
+ ],
5122
+ stateMutability: "view"
5123
+ },
5124
+ {
5125
+ type: "function",
5126
+ name: "globalActiveAppCount",
5127
+ inputs: [],
5128
+ outputs: [
5129
+ {
5130
+ name: "",
5131
+ type: "uint32",
5132
+ internalType: "uint32"
5133
+ }
5134
+ ],
5135
+ stateMutability: "view"
5136
+ },
5137
+ {
5138
+ type: "function",
5139
+ name: "initialize",
5140
+ inputs: [
5141
+ {
5142
+ name: "admin",
5143
+ type: "address",
5144
+ internalType: "address"
5145
+ }
5146
+ ],
5147
+ outputs: [],
5148
+ stateMutability: "nonpayable"
5149
+ },
5150
+ {
5151
+ type: "function",
3605
5152
  name: "maxGlobalActiveApps",
3606
5153
  inputs: [],
3607
5154
  outputs: [
@@ -4626,6 +6173,38 @@ var PermissionController_default = [
4626
6173
  ];
4627
6174
 
4628
6175
  // src/client/common/contract/caller.ts
6176
+ function appControllerAbiFor(environmentConfig) {
6177
+ return environmentConfig.releaseAbiVersion === "v1.4" ? AppController_v1_4_default : AppController_default;
6178
+ }
6179
+ function supportsContainerPolicy(environmentConfig) {
6180
+ return environmentConfig.releaseAbiVersion !== "v1.4";
6181
+ }
6182
+ function containerPolicyForViem(policy = EMPTY_CONTAINER_POLICY) {
6183
+ return {
6184
+ args: policy.args,
6185
+ cmdOverride: policy.cmdOverride,
6186
+ env: policy.env.map((e) => ({ key: e.key, value: e.value })),
6187
+ envOverride: policy.envOverride.map((e) => ({ key: e.key, value: e.value })),
6188
+ restartPolicy: policy.restartPolicy
6189
+ };
6190
+ }
6191
+ function releaseForViem(release, environmentConfig) {
6192
+ const base = {
6193
+ rmsRelease: {
6194
+ artifacts: release.rmsRelease.artifacts.map((artifact) => ({
6195
+ digest: `0x${(0, import_viem5.bytesToHex)(artifact.digest).slice(2).padStart(64, "0")}`,
6196
+ registry: artifact.registry
6197
+ })),
6198
+ upgradeByTime: release.rmsRelease.upgradeByTime
6199
+ },
6200
+ publicEnv: (0, import_viem5.bytesToHex)(release.publicEnv),
6201
+ encryptedEnv: (0, import_viem5.bytesToHex)(release.encryptedEnv)
6202
+ };
6203
+ if (!supportsContainerPolicy(environmentConfig)) {
6204
+ return base;
6205
+ }
6206
+ return { ...base, containerPolicy: containerPolicyForViem(release.containerPolicy) };
6207
+ }
4629
6208
  function formatETH(wei) {
4630
6209
  const eth = Number(wei) / 1e18;
4631
6210
  const costStr = eth.toFixed(6);
@@ -4663,7 +6242,7 @@ async function calculateAppID(options) {
4663
6242
  const saltHex = `0x${paddedSaltHex}`;
4664
6243
  const appID = await publicClient.readContract({
4665
6244
  address: environmentConfig.appControllerAddress,
4666
- abi: AppController_default,
6245
+ abi: appControllerAbiFor(environmentConfig),
4667
6246
  functionName: "calculateAppId",
4668
6247
  args: [ownerAddress, saltHex]
4669
6248
  });
@@ -4687,22 +6266,12 @@ async function prepareDeployBatch(options, logger = noopLogger) {
4687
6266
  const saltHexString = (0, import_viem5.bytesToHex)(salt).slice(2);
4688
6267
  const paddedSaltHex = saltHexString.padStart(64, "0");
4689
6268
  const saltHex = `0x${paddedSaltHex}`;
4690
- const releaseForViem = {
4691
- rmsRelease: {
4692
- artifacts: release.rmsRelease.artifacts.map((artifact) => ({
4693
- digest: `0x${(0, import_viem5.bytesToHex)(artifact.digest).slice(2).padStart(64, "0")}`,
4694
- registry: artifact.registry
4695
- })),
4696
- upgradeByTime: release.rmsRelease.upgradeByTime
4697
- },
4698
- publicEnv: (0, import_viem5.bytesToHex)(release.publicEnv),
4699
- encryptedEnv: (0, import_viem5.bytesToHex)(release.encryptedEnv)
4700
- };
6269
+ const release_ = releaseForViem(release, environmentConfig);
4701
6270
  const functionName = options.billTo === "app" ? "createAppWithIsolatedBilling" : "createApp";
4702
6271
  const createData = (0, import_viem5.encodeFunctionData)({
4703
- abi: AppController_default,
6272
+ abi: appControllerAbiFor(environmentConfig),
4704
6273
  functionName,
4705
- args: [saltHex, releaseForViem]
6274
+ args: [saltHex, release_]
4706
6275
  });
4707
6276
  const acceptAdminData = (0, import_viem5.encodeFunctionData)({
4708
6277
  abi: PermissionController_default,
@@ -4958,21 +6527,11 @@ async function prepareUpgradeBatch(options) {
4958
6527
  publicLogs,
4959
6528
  needsPermissionChange
4960
6529
  } = options;
4961
- const releaseForViem = {
4962
- rmsRelease: {
4963
- artifacts: release.rmsRelease.artifacts.map((artifact) => ({
4964
- digest: `0x${(0, import_viem5.bytesToHex)(artifact.digest).slice(2).padStart(64, "0")}`,
4965
- registry: artifact.registry
4966
- })),
4967
- upgradeByTime: release.rmsRelease.upgradeByTime
4968
- },
4969
- publicEnv: (0, import_viem5.bytesToHex)(release.publicEnv),
4970
- encryptedEnv: (0, import_viem5.bytesToHex)(release.encryptedEnv)
4971
- };
6530
+ const release_ = releaseForViem(release, environmentConfig);
4972
6531
  const upgradeData = (0, import_viem5.encodeFunctionData)({
4973
- abi: AppController_default,
6532
+ abi: appControllerAbiFor(environmentConfig),
4974
6533
  functionName: "upgradeApp",
4975
- args: [appID, releaseForViem]
6534
+ args: [appID, release_]
4976
6535
  });
4977
6536
  const executions = [
4978
6537
  {
@@ -5106,7 +6665,7 @@ ${pendingMessage}`);
5106
6665
  if (callError.data) {
5107
6666
  try {
5108
6667
  const decoded = (0, import_viem5.decodeErrorResult)({
5109
- abi: AppController_default,
6668
+ abi: appControllerAbiFor(environmentConfig),
5110
6669
  data: callError.data
5111
6670
  });
5112
6671
  const formattedError = formatAppControllerError(decoded);
@@ -5159,7 +6718,7 @@ function formatAppControllerError(decoded) {
5159
6718
  async function getActiveAppCount(publicClient, environmentConfig, user) {
5160
6719
  const count = await publicClient.readContract({
5161
6720
  address: environmentConfig.appControllerAddress,
5162
- abi: AppController_default,
6721
+ abi: appControllerAbiFor(environmentConfig),
5163
6722
  functionName: "getActiveAppCount",
5164
6723
  args: [user]
5165
6724
  });
@@ -5168,7 +6727,7 @@ async function getActiveAppCount(publicClient, environmentConfig, user) {
5168
6727
  async function getMaxActiveAppsPerUser(publicClient, environmentConfig, user) {
5169
6728
  const quota = await publicClient.readContract({
5170
6729
  address: environmentConfig.appControllerAddress,
5171
- abi: AppController_default,
6730
+ abi: appControllerAbiFor(environmentConfig),
5172
6731
  functionName: "getMaxActiveAppsPerUser",
5173
6732
  args: [user]
5174
6733
  });
@@ -5177,7 +6736,7 @@ async function getMaxActiveAppsPerUser(publicClient, environmentConfig, user) {
5177
6736
  async function getAppsByCreator(publicClient, environmentConfig, creator, offset, limit) {
5178
6737
  const result = await publicClient.readContract({
5179
6738
  address: environmentConfig.appControllerAddress,
5180
- abi: AppController_default,
6739
+ abi: appControllerAbiFor(environmentConfig),
5181
6740
  functionName: "getAppsByCreator",
5182
6741
  args: [creator, offset, limit]
5183
6742
  });
@@ -5189,7 +6748,7 @@ async function getAppsByCreator(publicClient, environmentConfig, creator, offset
5189
6748
  async function getAppsByDeveloper(publicClient, environmentConfig, developer, offset, limit) {
5190
6749
  const result = await publicClient.readContract({
5191
6750
  address: environmentConfig.appControllerAddress,
5192
- abi: AppController_default,
6751
+ abi: appControllerAbiFor(environmentConfig),
5193
6752
  functionName: "getAppsByDeveloper",
5194
6753
  args: [developer, offset, limit]
5195
6754
  });
@@ -5201,7 +6760,7 @@ async function getAppsByDeveloper(publicClient, environmentConfig, developer, of
5201
6760
  async function getBillingType(publicClient, environmentConfig, app) {
5202
6761
  const result = await publicClient.readContract({
5203
6762
  address: environmentConfig.appControllerAddress,
5204
- abi: AppController_default,
6763
+ abi: appControllerAbiFor(environmentConfig),
5205
6764
  functionName: "getBillingType",
5206
6765
  args: [app]
5207
6766
  });
@@ -5210,7 +6769,7 @@ async function getBillingType(publicClient, environmentConfig, app) {
5210
6769
  async function getAppsByBillingAccount(publicClient, environmentConfig, account, offset, limit) {
5211
6770
  const result = await publicClient.readContract({
5212
6771
  address: environmentConfig.appControllerAddress,
5213
- abi: AppController_default,
6772
+ abi: appControllerAbiFor(environmentConfig),
5214
6773
  functionName: "getAppsByBillingAccount",
5215
6774
  args: [account, offset, limit]
5216
6775
  });
@@ -5242,7 +6801,7 @@ async function getAllAppsByDeveloper(publicClient, env, developer, pageSize = 10
5242
6801
  async function suspend(options, logger = noopLogger) {
5243
6802
  const { walletClient, publicClient, environmentConfig, account, apps } = options;
5244
6803
  const suspendData = (0, import_viem5.encodeFunctionData)({
5245
- abi: AppController_default,
6804
+ abi: appControllerAbiFor(environmentConfig),
5246
6805
  functionName: "suspend",
5247
6806
  args: [account, apps]
5248
6807
  });
@@ -5670,6 +7229,7 @@ function getKMSKeysForEnvironment(environment, build = "prod") {
5670
7229
  BillingApiClient,
5671
7230
  BillingSessionError,
5672
7231
  BuildApiClient,
7232
+ EMPTY_CONTAINER_POLICY,
5673
7233
  SessionError,
5674
7234
  UserApiClient,
5675
7235
  addHexPrefix,