@layr-labs/ecloud-sdk 1.0.0-devep8 → 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,14 +298,13 @@ 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",
@@ -305,14 +312,14 @@ var ENVIRONMENTS = {
305
312
  defaultRPCURL: "https://ethereum-sepolia-rpc.publicnode.com",
306
313
  usdcCreditsAddress: "0xbdA3897c3A428763B59015C64AB766c288C97376",
307
314
  baseUsdcCreditsAddress: "0x7673a47463F80c6a3553Db9E54c8cDcd5313d0ac",
308
- baseRPCURL: "https://base-sepolia-rpc.publicnode.com",
309
- platformEnv: PLATFORM_ENV_TESTNET_SEPOLIA,
310
- appBaseDomain: DEFAULT_APP_BASE_DOMAIN
315
+ baseRPCURL: "https://base-sepolia-rpc.publicnode.com"
311
316
  },
312
317
  sepolia: {
313
318
  name: "sepolia",
314
319
  build: "prod",
315
320
  appControllerAddress: "0x0dd810a6ffba6a9820a10d97b659f07d8d23d4E2",
321
+ releaseAbiVersion: "v1.4",
322
+ // prod still on AppController v1.4.0 (3-field Release)
316
323
  permissionControllerAddress: ChainAddresses[SEPOLIA_CHAIN_ID].PermissionController,
317
324
  erc7702DelegatorAddress: CommonAddresses.ERC7702Delegator,
318
325
  kmsServerURL: "http://10.128.15.203:8080",
@@ -321,22 +328,20 @@ var ENVIRONMENTS = {
321
328
  billingRPCURL: "https://ethereum-rpc.publicnode.com",
322
329
  usdcCreditsAddress: "0xed9c88640ca9149Bd9f7ee6620074af10F2E145d",
323
330
  baseUsdcCreditsAddress: "0x7673a47463F80c6a3553Db9E54c8cDcd5313d0ac",
324
- baseRPCURL: "https://base-sepolia-rpc.publicnode.com",
325
- platformEnv: PLATFORM_ENV_TESTNET_SEPOLIA,
326
- appBaseDomain: DEFAULT_APP_BASE_DOMAIN
331
+ baseRPCURL: "https://base-sepolia-rpc.publicnode.com"
327
332
  },
328
333
  "mainnet-alpha": {
329
334
  name: "mainnet-alpha",
330
335
  build: "prod",
331
336
  appControllerAddress: "0xc38d35Fc995e75342A21CBd6D770305b142Fbe67",
337
+ releaseAbiVersion: "v1.4",
338
+ // prod still on AppController v1.4.0 (3-field Release)
332
339
  permissionControllerAddress: ChainAddresses[MAINNET_CHAIN_ID].PermissionController,
333
340
  erc7702DelegatorAddress: CommonAddresses.ERC7702Delegator,
334
341
  kmsServerURL: "http://10.128.0.2:8080",
335
342
  userApiServerURL: "https://userapi-compute.eigencloud.xyz",
336
343
  defaultRPCURL: "https://ethereum-rpc.publicnode.com",
337
- usdcCreditsAddress: "0xed9c88640ca9149Bd9f7ee6620074af10F2E145d",
338
- platformEnv: PLATFORM_ENV_MAINNET_ETHEREUM,
339
- appBaseDomain: DEFAULT_APP_BASE_DOMAIN
344
+ usdcCreditsAddress: "0xed9c88640ca9149Bd9f7ee6620074af10F2E145d"
340
345
  }
341
346
  };
342
347
  var CHAIN_ID_TO_ENVIRONMENT = {
@@ -396,7 +401,7 @@ function getBillingEnvironmentConfig(build) {
396
401
  };
397
402
  }
398
403
  function getBuildType() {
399
- const buildTimeType = true ? "dev"?.toLowerCase() : void 0;
404
+ const buildTimeType = true ? "prod"?.toLowerCase() : void 0;
400
405
  const runtimeType = process.env.BUILD_TYPE?.toLowerCase();
401
406
  const buildType = buildTimeType || runtimeType;
402
407
  if (buildType === "dev") {
@@ -705,6 +710,7 @@ var import_axios = __toESM(require("axios"), 1);
705
710
  var MAX_RETRIES = 5;
706
711
  var INITIAL_BACKOFF_MS = 1e3;
707
712
  var MAX_BACKOFF_MS = 3e4;
713
+ var RETRYABLE_STATUSES = /* @__PURE__ */ new Set([429, 502, 503, 504]);
708
714
  function sleep(ms) {
709
715
  return new Promise((resolve) => setTimeout(resolve, ms));
710
716
  }
@@ -724,7 +730,7 @@ async function requestWithRetry(config) {
724
730
  for (let attempt = 0; attempt <= MAX_RETRIES; attempt++) {
725
731
  const res = await (0, import_axios.default)({ ...config, validateStatus: () => true });
726
732
  lastResponse = res;
727
- if (res.status !== 429) {
733
+ if (!RETRYABLE_STATUSES.has(res.status)) {
728
734
  return res;
729
735
  }
730
736
  if (attempt < MAX_RETRIES) {
@@ -753,7 +759,7 @@ var CanViewAppLogsPermission = "0x2fd3f2fe";
753
759
  var CanViewSensitiveAppInfoPermission = "0x0e67b22f";
754
760
  var CanUpdateAppProfilePermission = "0x036fef61";
755
761
  function getDefaultClientId() {
756
- const version = true ? "1.0.0-devep8" : "0.0.0";
762
+ const version = true ? "1.0.0" : "0.0.0";
757
763
  return `ecloud-sdk/v${version}`;
758
764
  }
759
765
  var UserApiClient = class {
@@ -788,7 +794,6 @@ var UserApiClient = class {
788
794
  status: app.app_status,
789
795
  ip: app.ip,
790
796
  machineType: app.machine_type,
791
- hostname: app.hostname,
792
797
  profile: app.profile,
793
798
  metrics: app.metrics,
794
799
  evmAddresses,
@@ -854,28 +859,6 @@ var UserApiClient = class {
854
859
  status: app.app_status || app.App_Status || ""
855
860
  }));
856
861
  }
857
- /**
858
- * Get deployments for an app from the gRPC-gateway endpoint.
859
- * Returns deployment records including upgrade_phase for tracking upgrade progress.
860
- *
861
- * Endpoint: GET /v1/apps/:appAddress/deployments
862
- */
863
- async getDeployments(appAddress) {
864
- const endpoint = `${this.config.userApiServerURL}/v1/apps/${appAddress}/deployments`;
865
- const response = await this.makeEIP712AuthenticatedRequest(endpoint);
866
- const result = await response.json();
867
- const deployments = result.deployments || [];
868
- return deployments.map((dep) => ({
869
- id: dep.id || "",
870
- externalId: dep.external_id || dep.externalId || "",
871
- endpoint: dep.endpoint || "",
872
- releaseId: dep.release_id || dep.releaseId || "",
873
- upgradePhase: dep.upgrade_phase || dep.upgradePhase || "",
874
- replacesDeploymentId: dep.replaces_deployment_id || dep.replacesDeploymentId || "",
875
- createdAt: dep.created_at || dep.createdAt || "",
876
- updatedAt: dep.updated_at || dep.updatedAt || ""
877
- }));
878
- }
879
862
  /**
880
863
  * Upload app profile information with optional image
881
864
  *
@@ -1009,48 +992,6 @@ Please check:
1009
992
  "X-eigenx-expiry": expiry.toString()
1010
993
  };
1011
994
  }
1012
- /**
1013
- * Make an EIP-712 authenticated request to the gRPC-gateway endpoints.
1014
- * Uses the billing/compute auth pattern: Authorization + X-Account + X-Expiry headers.
1015
- */
1016
- async makeEIP712AuthenticatedRequest(url) {
1017
- const expiry = BigInt(Math.floor(Date.now() / 1e3) + 5 * 60);
1018
- const { signature } = await calculateBillingAuthSignature({
1019
- walletClient: this.walletClient,
1020
- product: "compute",
1021
- expiry
1022
- });
1023
- const headers = {
1024
- Authorization: `Bearer ${signature}`,
1025
- "X-Account": this.address,
1026
- "X-Expiry": expiry.toString(),
1027
- "x-client-id": this.clientId
1028
- };
1029
- try {
1030
- const response = await requestWithRetry({
1031
- method: "GET",
1032
- url,
1033
- headers,
1034
- maxRedirects: 0,
1035
- withCredentials: true
1036
- });
1037
- const status = response.status;
1038
- if (status < 200 || status >= 300) {
1039
- const body = typeof response.data === "string" ? response.data : JSON.stringify(response.data);
1040
- throw new Error(`gRPC-gateway request failed: ${status} - ${body}`);
1041
- }
1042
- return {
1043
- json: async () => response.data,
1044
- text: async () => typeof response.data === "string" ? response.data : JSON.stringify(response.data)
1045
- };
1046
- } catch (error) {
1047
- if (error.message?.includes("fetch failed") || error.message?.includes("ECONNREFUSED") || error.message?.includes("ENOTFOUND") || error.cause) {
1048
- const cause = error.cause?.message || error.cause || error.message;
1049
- throw new Error(`Failed to connect to API at ${url}: ${cause}`);
1050
- }
1051
- throw error;
1052
- }
1053
- }
1054
995
  // ==========================================================================
1055
996
  // SIWE Session Management
1056
997
  // ==========================================================================
@@ -1421,6 +1362,63 @@ var BillingApiClient = class {
1421
1362
  return resp.json();
1422
1363
  }
1423
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
+ // ==========================================================================
1424
1422
  // Internal Methods
1425
1423
  // ==========================================================================
1426
1424
  /**
@@ -3083,6 +3081,19 @@ var AppController_default = [
3083
3081
  ],
3084
3082
  stateMutability: "view"
3085
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
+ },
3086
3097
  {
3087
3098
  type: "function",
3088
3099
  name: "createApp",
@@ -3135,6 +3146,62 @@ var AppController_default = [
3135
3146
  name: "encryptedEnv",
3136
3147
  type: "bytes",
3137
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
+ ]
3138
3205
  }
3139
3206
  ]
3140
3207
  }
@@ -3200,6 +3267,62 @@ var AppController_default = [
3200
3267
  name: "encryptedEnv",
3201
3268
  type: "bytes",
3202
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
+ ]
3203
3326
  }
3204
3327
  ]
3205
3328
  }
@@ -3213,6 +3336,44 @@ var AppController_default = [
3213
3336
  ],
3214
3337
  stateMutability: "nonpayable"
3215
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
+ },
3216
3377
  {
3217
3378
  type: "function",
3218
3379
  name: "domainSeparator",
@@ -3247,26 +3408,26 @@ var AppController_default = [
3247
3408
  },
3248
3409
  {
3249
3410
  type: "function",
3250
- name: "getBillingType",
3411
+ name: "getAppCreator",
3251
3412
  inputs: [
3252
3413
  {
3253
3414
  name: "app",
3254
3415
  type: "address",
3255
- internalType: "address"
3416
+ internalType: "contractIApp"
3256
3417
  }
3257
3418
  ],
3258
3419
  outputs: [
3259
3420
  {
3260
3421
  name: "",
3261
- type: "uint8",
3262
- internalType: "uint8"
3422
+ type: "address",
3423
+ internalType: "address"
3263
3424
  }
3264
3425
  ],
3265
3426
  stateMutability: "view"
3266
3427
  },
3267
3428
  {
3268
3429
  type: "function",
3269
- name: "getAppCreator",
3430
+ name: "getAppLatestReleaseBlockNumber",
3270
3431
  inputs: [
3271
3432
  {
3272
3433
  name: "app",
@@ -3277,15 +3438,15 @@ var AppController_default = [
3277
3438
  outputs: [
3278
3439
  {
3279
3440
  name: "",
3280
- type: "address",
3281
- internalType: "address"
3441
+ type: "uint32",
3442
+ internalType: "uint32"
3282
3443
  }
3283
3444
  ],
3284
3445
  stateMutability: "view"
3285
3446
  },
3286
3447
  {
3287
3448
  type: "function",
3288
- name: "getAppLatestReleaseBlockNumber",
3449
+ name: "getAppOperatorSetId",
3289
3450
  inputs: [
3290
3451
  {
3291
3452
  name: "app",
@@ -3304,7 +3465,7 @@ var AppController_default = [
3304
3465
  },
3305
3466
  {
3306
3467
  type: "function",
3307
- name: "getAppOperatorSetId",
3468
+ name: "getAppPendingReleaseBlockNumber",
3308
3469
  inputs: [
3309
3470
  {
3310
3471
  name: "app",
@@ -3381,6 +3542,11 @@ var AppController_default = [
3381
3542
  type: "uint32",
3382
3543
  internalType: "uint32"
3383
3544
  },
3545
+ {
3546
+ name: "pendingReleaseBlockNumber",
3547
+ type: "uint32",
3548
+ internalType: "uint32"
3549
+ },
3384
3550
  {
3385
3551
  name: "status",
3386
3552
  type: "uint8",
@@ -3437,6 +3603,11 @@ var AppController_default = [
3437
3603
  type: "uint32",
3438
3604
  internalType: "uint32"
3439
3605
  },
3606
+ {
3607
+ name: "pendingReleaseBlockNumber",
3608
+ type: "uint32",
3609
+ internalType: "uint32"
3610
+ },
3440
3611
  {
3441
3612
  name: "status",
3442
3613
  type: "uint8",
@@ -3493,6 +3664,11 @@ var AppController_default = [
3493
3664
  type: "uint32",
3494
3665
  internalType: "uint32"
3495
3666
  },
3667
+ {
3668
+ name: "pendingReleaseBlockNumber",
3669
+ type: "uint32",
3670
+ internalType: "uint32"
3671
+ },
3496
3672
  {
3497
3673
  name: "status",
3498
3674
  type: "uint8",
@@ -3549,6 +3725,11 @@ var AppController_default = [
3549
3725
  type: "uint32",
3550
3726
  internalType: "uint32"
3551
3727
  },
3728
+ {
3729
+ name: "pendingReleaseBlockNumber",
3730
+ type: "uint32",
3731
+ internalType: "uint32"
3732
+ },
3552
3733
  {
3553
3734
  name: "status",
3554
3735
  type: "uint8",
@@ -3561,51 +3742,1413 @@ var AppController_default = [
3561
3742
  },
3562
3743
  {
3563
3744
  type: "function",
3564
- name: "getMaxActiveAppsPerUser",
3745
+ name: "getBillingAccount",
3565
3746
  inputs: [
3566
3747
  {
3567
- name: "user",
3748
+ name: "app",
3568
3749
  type: "address",
3569
- internalType: "address"
3750
+ internalType: "contractIApp"
3570
3751
  }
3571
3752
  ],
3572
3753
  outputs: [
3573
3754
  {
3574
3755
  name: "",
3575
- type: "uint32",
3576
- internalType: "uint32"
3756
+ type: "address",
3757
+ internalType: "address"
3577
3758
  }
3578
3759
  ],
3579
3760
  stateMutability: "view"
3580
3761
  },
3581
3762
  {
3582
3763
  type: "function",
3583
- name: "globalActiveAppCount",
3584
- inputs: [],
3764
+ name: "getBillingType",
3765
+ inputs: [
3766
+ {
3767
+ name: "app",
3768
+ type: "address",
3769
+ internalType: "contractIApp"
3770
+ }
3771
+ ],
3585
3772
  outputs: [
3586
3773
  {
3587
3774
  name: "",
3588
- type: "uint32",
3589
- internalType: "uint32"
3775
+ type: "uint8",
3776
+ internalType: "enumIAppController.BillingType"
3590
3777
  }
3591
3778
  ],
3592
3779
  stateMutability: "view"
3593
3780
  },
3594
3781
  {
3595
3782
  type: "function",
3596
- name: "initialize",
3783
+ name: "getMaxActiveAppsPerUser",
3597
3784
  inputs: [
3598
3785
  {
3599
- name: "admin",
3786
+ name: "user",
3600
3787
  type: "address",
3601
3788
  internalType: "address"
3602
3789
  }
3603
3790
  ],
3604
- outputs: [],
3605
- stateMutability: "nonpayable"
3606
- },
3607
- {
3608
- 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",
3609
5152
  name: "maxGlobalActiveApps",
3610
5153
  inputs: [],
3611
5154
  outputs: [
@@ -4630,6 +6173,38 @@ var PermissionController_default = [
4630
6173
  ];
4631
6174
 
4632
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
+ }
4633
6208
  function formatETH(wei) {
4634
6209
  const eth = Number(wei) / 1e18;
4635
6210
  const costStr = eth.toFixed(6);
@@ -4667,7 +6242,7 @@ async function calculateAppID(options) {
4667
6242
  const saltHex = `0x${paddedSaltHex}`;
4668
6243
  const appID = await publicClient.readContract({
4669
6244
  address: environmentConfig.appControllerAddress,
4670
- abi: AppController_default,
6245
+ abi: appControllerAbiFor(environmentConfig),
4671
6246
  functionName: "calculateAppId",
4672
6247
  args: [ownerAddress, saltHex]
4673
6248
  });
@@ -4691,22 +6266,12 @@ async function prepareDeployBatch(options, logger = noopLogger) {
4691
6266
  const saltHexString = (0, import_viem5.bytesToHex)(salt).slice(2);
4692
6267
  const paddedSaltHex = saltHexString.padStart(64, "0");
4693
6268
  const saltHex = `0x${paddedSaltHex}`;
4694
- const releaseForViem = {
4695
- rmsRelease: {
4696
- artifacts: release.rmsRelease.artifacts.map((artifact) => ({
4697
- digest: `0x${(0, import_viem5.bytesToHex)(artifact.digest).slice(2).padStart(64, "0")}`,
4698
- registry: artifact.registry
4699
- })),
4700
- upgradeByTime: release.rmsRelease.upgradeByTime
4701
- },
4702
- publicEnv: (0, import_viem5.bytesToHex)(release.publicEnv),
4703
- encryptedEnv: (0, import_viem5.bytesToHex)(release.encryptedEnv)
4704
- };
6269
+ const release_ = releaseForViem(release, environmentConfig);
4705
6270
  const functionName = options.billTo === "app" ? "createAppWithIsolatedBilling" : "createApp";
4706
6271
  const createData = (0, import_viem5.encodeFunctionData)({
4707
- abi: AppController_default,
6272
+ abi: appControllerAbiFor(environmentConfig),
4708
6273
  functionName,
4709
- args: [saltHex, releaseForViem]
6274
+ args: [saltHex, release_]
4710
6275
  });
4711
6276
  const acceptAdminData = (0, import_viem5.encodeFunctionData)({
4712
6277
  abi: PermissionController_default,
@@ -4962,21 +6527,11 @@ async function prepareUpgradeBatch(options) {
4962
6527
  publicLogs,
4963
6528
  needsPermissionChange
4964
6529
  } = options;
4965
- const releaseForViem = {
4966
- rmsRelease: {
4967
- artifacts: release.rmsRelease.artifacts.map((artifact) => ({
4968
- digest: `0x${(0, import_viem5.bytesToHex)(artifact.digest).slice(2).padStart(64, "0")}`,
4969
- registry: artifact.registry
4970
- })),
4971
- upgradeByTime: release.rmsRelease.upgradeByTime
4972
- },
4973
- publicEnv: (0, import_viem5.bytesToHex)(release.publicEnv),
4974
- encryptedEnv: (0, import_viem5.bytesToHex)(release.encryptedEnv)
4975
- };
6530
+ const release_ = releaseForViem(release, environmentConfig);
4976
6531
  const upgradeData = (0, import_viem5.encodeFunctionData)({
4977
- abi: AppController_default,
6532
+ abi: appControllerAbiFor(environmentConfig),
4978
6533
  functionName: "upgradeApp",
4979
- args: [appID, releaseForViem]
6534
+ args: [appID, release_]
4980
6535
  });
4981
6536
  const executions = [
4982
6537
  {
@@ -5110,7 +6665,7 @@ ${pendingMessage}`);
5110
6665
  if (callError.data) {
5111
6666
  try {
5112
6667
  const decoded = (0, import_viem5.decodeErrorResult)({
5113
- abi: AppController_default,
6668
+ abi: appControllerAbiFor(environmentConfig),
5114
6669
  data: callError.data
5115
6670
  });
5116
6671
  const formattedError = formatAppControllerError(decoded);
@@ -5163,7 +6718,7 @@ function formatAppControllerError(decoded) {
5163
6718
  async function getActiveAppCount(publicClient, environmentConfig, user) {
5164
6719
  const count = await publicClient.readContract({
5165
6720
  address: environmentConfig.appControllerAddress,
5166
- abi: AppController_default,
6721
+ abi: appControllerAbiFor(environmentConfig),
5167
6722
  functionName: "getActiveAppCount",
5168
6723
  args: [user]
5169
6724
  });
@@ -5172,7 +6727,7 @@ async function getActiveAppCount(publicClient, environmentConfig, user) {
5172
6727
  async function getMaxActiveAppsPerUser(publicClient, environmentConfig, user) {
5173
6728
  const quota = await publicClient.readContract({
5174
6729
  address: environmentConfig.appControllerAddress,
5175
- abi: AppController_default,
6730
+ abi: appControllerAbiFor(environmentConfig),
5176
6731
  functionName: "getMaxActiveAppsPerUser",
5177
6732
  args: [user]
5178
6733
  });
@@ -5181,7 +6736,7 @@ async function getMaxActiveAppsPerUser(publicClient, environmentConfig, user) {
5181
6736
  async function getAppsByCreator(publicClient, environmentConfig, creator, offset, limit) {
5182
6737
  const result = await publicClient.readContract({
5183
6738
  address: environmentConfig.appControllerAddress,
5184
- abi: AppController_default,
6739
+ abi: appControllerAbiFor(environmentConfig),
5185
6740
  functionName: "getAppsByCreator",
5186
6741
  args: [creator, offset, limit]
5187
6742
  });
@@ -5193,7 +6748,7 @@ async function getAppsByCreator(publicClient, environmentConfig, creator, offset
5193
6748
  async function getAppsByDeveloper(publicClient, environmentConfig, developer, offset, limit) {
5194
6749
  const result = await publicClient.readContract({
5195
6750
  address: environmentConfig.appControllerAddress,
5196
- abi: AppController_default,
6751
+ abi: appControllerAbiFor(environmentConfig),
5197
6752
  functionName: "getAppsByDeveloper",
5198
6753
  args: [developer, offset, limit]
5199
6754
  });
@@ -5205,7 +6760,7 @@ async function getAppsByDeveloper(publicClient, environmentConfig, developer, of
5205
6760
  async function getBillingType(publicClient, environmentConfig, app) {
5206
6761
  const result = await publicClient.readContract({
5207
6762
  address: environmentConfig.appControllerAddress,
5208
- abi: AppController_default,
6763
+ abi: appControllerAbiFor(environmentConfig),
5209
6764
  functionName: "getBillingType",
5210
6765
  args: [app]
5211
6766
  });
@@ -5214,7 +6769,7 @@ async function getBillingType(publicClient, environmentConfig, app) {
5214
6769
  async function getAppsByBillingAccount(publicClient, environmentConfig, account, offset, limit) {
5215
6770
  const result = await publicClient.readContract({
5216
6771
  address: environmentConfig.appControllerAddress,
5217
- abi: AppController_default,
6772
+ abi: appControllerAbiFor(environmentConfig),
5218
6773
  functionName: "getAppsByBillingAccount",
5219
6774
  args: [account, offset, limit]
5220
6775
  });
@@ -5246,7 +6801,7 @@ async function getAllAppsByDeveloper(publicClient, env, developer, pageSize = 10
5246
6801
  async function suspend(options, logger = noopLogger) {
5247
6802
  const { walletClient, publicClient, environmentConfig, account, apps } = options;
5248
6803
  const suspendData = (0, import_viem5.encodeFunctionData)({
5249
- abi: AppController_default,
6804
+ abi: appControllerAbiFor(environmentConfig),
5250
6805
  functionName: "suspend",
5251
6806
  args: [account, apps]
5252
6807
  });
@@ -5674,6 +7229,7 @@ function getKMSKeysForEnvironment(environment, build = "prod") {
5674
7229
  BillingApiClient,
5675
7230
  BillingSessionError,
5676
7231
  BuildApiClient,
7232
+ EMPTY_CONTAINER_POLICY,
5677
7233
  SessionError,
5678
7234
  UserApiClient,
5679
7235
  addHexPrefix,