@serve.zone/interfaces 32.51.0 → 32.53.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.
Files changed (110) hide show
  1. package/changelog.md +93 -0
  2. package/dist_ts/00_commitinfo_data.js +1 -1
  3. package/dist_ts/appstore/catalog.d.ts +92 -12
  4. package/dist_ts/appstore/catalog.js +119 -5
  5. package/dist_ts/appstore/types.d.ts +28 -4
  6. package/dist_ts/appstore/types.js +1 -1
  7. package/dist_ts/appstore/versionconfig.d.ts +1 -1
  8. package/dist_ts/data/cluster.d.ts +1 -1
  9. package/dist_ts/data/clusteringress.d.ts +4 -4
  10. package/dist_ts/data/clusteringressdesignation.d.ts +2 -2
  11. package/dist_ts/data/clusternode.d.ts +13 -6
  12. package/dist_ts/data/clusternode.js +1 -1
  13. package/dist_ts/data/clusternodehostname.d.ts +63 -0
  14. package/dist_ts/data/clusternodehostname.js +122 -0
  15. package/dist_ts/data/clusterrelaycredential.d.ts +3 -3
  16. package/dist_ts/data/clusterruntime.d.ts +1 -1
  17. package/dist_ts/data/clustervpn.d.ts +4 -4
  18. package/dist_ts/data/coremail.d.ts +11 -11
  19. package/dist_ts/data/coremail.runtime.d.ts +6 -6
  20. package/dist_ts/data/coremail.runtime.js +1 -1
  21. package/dist_ts/data/corestorecontroltoken.d.ts +1 -1
  22. package/dist_ts/data/corestorelegacyadoption.d.ts +2 -2
  23. package/dist_ts/data/deploymentmachineuser.d.ts +1 -1
  24. package/dist_ts/data/deploymentpreflight.d.ts +26 -1
  25. package/dist_ts/data/fleetcutover.d.ts +28 -28
  26. package/dist_ts/data/hostedapp.d.ts +4 -4
  27. package/dist_ts/data/immutableimage.d.ts +3 -3
  28. package/dist_ts/data/index.d.ts +1 -0
  29. package/dist_ts/data/index.js +2 -1
  30. package/dist_ts/data/isolatedrestore.d.ts +7 -7
  31. package/dist_ts/data/isolatedrestore.js +1 -1
  32. package/dist_ts/data/networkaddressplan.d.ts +2 -2
  33. package/dist_ts/data/networkapplication.d.ts +9 -9
  34. package/dist_ts/data/networkauthority.d.ts +5 -5
  35. package/dist_ts/data/networkcredential.js +1 -1
  36. package/dist_ts/data/networkegressretirement.d.ts +3 -3
  37. package/dist_ts/data/networkegressretirement.js +1 -1
  38. package/dist_ts/data/networkhost.d.ts +3 -3
  39. package/dist_ts/data/networklease.d.ts +9 -9
  40. package/dist_ts/data/networkprojection.d.ts +7 -7
  41. package/dist_ts/data/networkprojectionretirement.d.ts +6 -6
  42. package/dist_ts/data/networkprotection.d.ts +9 -9
  43. package/dist_ts/data/networksigning.d.ts +6 -6
  44. package/dist_ts/data/networkworkloadingress.d.ts +3 -3
  45. package/dist_ts/data/nodeenrollment.d.ts +8 -8
  46. package/dist_ts/data/noderetirement.d.ts +1 -1
  47. package/dist_ts/data/noderuntimebinding.d.ts +11 -11
  48. package/dist_ts/data/privatenetwork.d.ts +3 -3
  49. package/dist_ts/data/runtimeassignment.d.ts +9 -9
  50. package/dist_ts/data/runtimeassignment.js +1 -1
  51. package/dist_ts/data/runtimeassignmentexec.d.ts +2 -2
  52. package/dist_ts/data/runtimeassignmentlogs.d.ts +4 -4
  53. package/dist_ts/data/runtimeassignmentstats.d.ts +2 -2
  54. package/dist_ts/data/runtimeconfig.d.ts +1 -1
  55. package/dist_ts/data/runtimelocalstorageclaim.d.ts +4 -4
  56. package/dist_ts/data/runtimelocalvolumearchive.d.ts +5 -5
  57. package/dist_ts/data/runtimesession.d.ts +5 -5
  58. package/dist_ts/data/runtimesession.js +1 -1
  59. package/dist_ts/data/runtimestorageclaim.d.ts +4 -4
  60. package/dist_ts/data/runtimeterminalreceipt.d.ts +2 -2
  61. package/dist_ts/data/runtimeterminalreceipt.js +1 -1
  62. package/dist_ts/data/secret.d.ts +4 -4
  63. package/dist_ts/data/secret.js +1 -1
  64. package/dist_ts/data/service.d.ts +10 -3
  65. package/dist_ts/data/serviceplatformownership.d.ts +1 -1
  66. package/dist_ts/data/serviceports.js +1 -1
  67. package/dist_ts/data/serviceruntime.d.ts +3 -3
  68. package/dist_ts/data/servicevolumeinitialization.d.ts +1 -1
  69. package/dist_ts/data/settings.d.ts +37 -31
  70. package/dist_ts/data/settings.js +1 -1
  71. package/dist_ts/data/sparklegacyretirement.d.ts +4 -4
  72. package/dist_ts/data/sparknodereport.d.ts +61 -1
  73. package/dist_ts/data/sparknodereport.js +66 -3
  74. package/dist_ts/platform/storage.d.ts +1 -1
  75. package/dist_ts/platform/storagemigration.d.ts +6 -6
  76. package/dist_ts/platform/storagemigration.golden.d.ts +13 -13
  77. package/dist_ts/platform/types.d.ts +1 -1
  78. package/dist_ts/private/canonicaljson.d.ts +6 -6
  79. package/dist_ts/private/canonicaljson.js +1 -1
  80. package/dist_ts/private/dataproperties.js +1 -1
  81. package/dist_ts/private/networkcontract.js +1 -1
  82. package/dist_ts/private/storagecontract.d.ts +1 -1
  83. package/dist_ts/private/storagecontract.js +1 -1
  84. package/dist_ts/protocol.d.ts +1 -1
  85. package/dist_ts/requests/appstore.d.ts +18 -0
  86. package/dist_ts/requests/hostedapp.d.ts +6 -0
  87. package/dist_ts/requests/hostedapp.js +1 -1
  88. package/dist_ts/requests/node.d.ts +59 -0
  89. package/dist_ts/runtime.appstorecatalog.d.ts +17 -0
  90. package/dist_ts/runtime.appstorecatalog.js +84 -12
  91. package/dist_ts/runtime.assignmentsecret.d.ts +3 -3
  92. package/dist_ts/runtime.assignmentsecret.js +1 -1
  93. package/dist_ts/runtime.corestore.d.ts +13 -13
  94. package/dist_ts/runtime.d.ts +1 -1
  95. package/dist_ts/runtime.workloadinit.d.ts +11 -11
  96. package/package.json +4 -3
  97. package/readme.md +27 -0
  98. package/ts/00_commitinfo_data.ts +1 -1
  99. package/ts/appstore/catalog.ts +175 -5
  100. package/ts/appstore/types.ts +25 -0
  101. package/ts/data/clusternode.ts +8 -0
  102. package/ts/data/clusternodehostname.ts +153 -0
  103. package/ts/data/index.ts +1 -0
  104. package/ts/data/service.ts +10 -2
  105. package/ts/data/settings.ts +6 -0
  106. package/ts/data/sparknodereport.ts +112 -2
  107. package/ts/requests/appstore.ts +22 -0
  108. package/ts/requests/hostedapp.ts +6 -0
  109. package/ts/requests/node.ts +67 -0
  110. package/ts/runtime.appstorecatalog.ts +91 -11
@@ -0,0 +1,122 @@
1
+ import { readExactDataRecord } from '../private/dataproperties.js';
2
+ /**
3
+ * The static hostname a cluster node runs under, and the scheme Cloudly names a node by default.
4
+ *
5
+ * Cloudly owns the hostname a node should carry (`IClusterNode.data.hostnameIntent`); Spark applies
6
+ * it on the host and reports the hostname it observes, so a node has converged when its report
7
+ * states the intent's hostname. The default scheme is `cloudly-worker-<name>`: `name` is the
8
+ * operator's short name for the node (`alpha`, `bravo`), kept beside the hostname so the node
9
+ * can always be reset to the default however it was renamed.
10
+ *
11
+ * A hostname here is one RFC 1123 label, lowercase: the node's short static hostname, which is
12
+ * what enrollment already requires of a host. A fully qualified name is DNS, not the host's name.
13
+ */
14
+ export const clusterNodeHostnameContract = Object.freeze({
15
+ /** The default hostname is this prefix followed by the node's name. */
16
+ defaultPrefix: 'cloudly-worker-',
17
+ /** One DNS label. */
18
+ maximumHostnameLength: 63,
19
+ /** What is left of one label after `defaultPrefix`. */
20
+ maximumNameLength: 48,
21
+ /** `requestedBy` is an identity's user id. */
22
+ maximumRequestedByLength: 256,
23
+ error: 'Cluster node hostname contract rejected.',
24
+ });
25
+ const hostnameLabel = /^[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?$/;
26
+ /** True for one lowercase RFC 1123 label of 1 to 63 characters: a node's static hostname. */
27
+ export const isClusterNodeHostname = (valueArg) => (typeof valueArg === 'string'
28
+ && valueArg.length <= clusterNodeHostnameContract.maximumHostnameLength
29
+ && hostnameLabel.test(valueArg));
30
+ /** True for a node name the default scheme can carry: a label of at most 48 characters. */
31
+ export const isClusterNodeName = (valueArg) => (isClusterNodeHostname(valueArg) && valueArg.length <= clusterNodeHostnameContract.maximumNameLength);
32
+ /** `cloudly-worker-<name>`; throws for a name the scheme cannot carry. */
33
+ export const deriveDefaultClusterNodeHostname = (nameArg) => {
34
+ if (!isClusterNodeName(nameArg)) {
35
+ throw new Error(clusterNodeHostnameContract.error);
36
+ }
37
+ return `${clusterNodeHostnameContract.defaultPrefix}${nameArg}`;
38
+ };
39
+ /**
40
+ * The node name an observed hostname suggests, or `null` when it suggests none.
41
+ *
42
+ * It reads the first label of the hostname, so a report that states a dotted name proposes its
43
+ * short name. A label already in the default scheme proposes what follows the prefix
44
+ * (`cloudly-worker-bravo` → `bravo`); any other valid label proposes itself unchanged
45
+ * (`cloudlyworkeralpha` stays `cloudlyworkeralpha`). It never guesses a name out of a
46
+ * label in another scheme: an operator states that name when resetting the node to the default.
47
+ */
48
+ export const proposeClusterNodeName = (hostnameArg) => {
49
+ const label = hostnameArg.split('.')[0];
50
+ if (!isClusterNodeHostname(label)) {
51
+ return null;
52
+ }
53
+ const prefix = clusterNodeHostnameContract.defaultPrefix;
54
+ if (label.startsWith(prefix) && isClusterNodeName(label.slice(prefix.length))) {
55
+ return label.slice(prefix.length);
56
+ }
57
+ return isClusterNodeName(label) ? label : null;
58
+ };
59
+ /** True when the intent's hostname is the default its name derives. */
60
+ export const isDefaultClusterNodeHostname = (intentArg) => (isClusterNodeName(intentArg.name) && intentArg.hostname === deriveDefaultClusterNodeHostname(intentArg.name));
61
+ const fail = () => { throw new Error(clusterNodeHostnameContract.error); };
62
+ function requireValue(valueArg) {
63
+ if (!valueArg)
64
+ fail();
65
+ }
66
+ const counter = (valueArg, minimumArg) => {
67
+ requireValue(typeof valueArg === 'number' && Number.isSafeInteger(valueArg) && valueArg >= minimumArg);
68
+ return valueArg;
69
+ };
70
+ /** Exact, detached and frozen; refuses every key and value this contract does not state. */
71
+ export const snapshotClusterNodeHostnameIntent = (valueArg) => {
72
+ const keys = ['name', 'hostname', 'generation', 'requestedAt'];
73
+ const value = readExactDataRecord(valueArg, keys) ?? readExactDataRecord(valueArg, [...keys, 'requestedBy']);
74
+ requireValue(value !== null);
75
+ requireValue(isClusterNodeName(value.name) && isClusterNodeHostname(value.hostname));
76
+ const intent = {
77
+ name: value.name, hostname: value.hostname,
78
+ generation: counter(value.generation, 1), requestedAt: counter(value.requestedAt, 1),
79
+ };
80
+ if (Object.hasOwn(value, 'requestedBy')) {
81
+ const requestedBy = value.requestedBy;
82
+ requireValue(typeof requestedBy === 'string' && requestedBy.length > 0
83
+ && requestedBy.length <= clusterNodeHostnameContract.maximumRequestedByLength
84
+ && /^[\x21-\x7e]+$/.test(requestedBy));
85
+ intent.requestedBy = requestedBy;
86
+ }
87
+ return Object.freeze(intent);
88
+ };
89
+ /**
90
+ * Every reason Cloudly answers instead of renaming a node or resetting it to the default. Each
91
+ * travels by name as a `TypedResponseError`, and a refused request changes nothing.
92
+ */
93
+ export const clusterNodeHostnameRefusals = Object.freeze([
94
+ /** No node of that id exists. */
95
+ 'node-missing',
96
+ /** The requested hostname is not one lowercase RFC 1123 label (`isClusterNodeHostname`). */
97
+ 'hostname-invalid',
98
+ /**
99
+ * The node would carry no name the default scheme can carry (`isClusterNodeName`). A rename keeps
100
+ * the name of the node's intent; a node without an intent takes
101
+ * `proposeClusterNodeName(<requested hostname>)`, and is refused when that is `null`. A reset
102
+ * names no valid name, or names none while the node has no intent whose name it could reuse.
103
+ */
104
+ 'name-invalid',
105
+ /** Another node of the cluster carries that hostname, as reported or as its intent. */
106
+ 'hostname-in-use',
107
+ /** The node's intent already is that hostname under that name. */
108
+ 'hostname-unchanged',
109
+ /**
110
+ * Cloudly holds state naming the node by its current hostname that it cannot move to the new
111
+ * hostname with the change, such as a rollout in flight that targets the node.
112
+ */
113
+ 'node-hostname-referenced',
114
+ /** The node does not run the Pallet-era node runtime, the only one that applies a hostname. */
115
+ 'node-runtime-unsupported',
116
+ /**
117
+ * `expectedGeneration` is not the node's current intent generation: read the node again. This
118
+ * fence alone serializes changes; an intent the node has not converged to may always be replaced.
119
+ */
120
+ 'conflict',
121
+ ]);
122
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2x1c3Rlcm5vZGVob3N0bmFtZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3RzL2RhdGEvY2x1c3Rlcm5vZGVob3N0bmFtZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUVuRTs7Ozs7Ozs7Ozs7R0FXRztBQUNILE1BQU0sQ0FBQyxNQUFNLDJCQUEyQixHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7SUFDdkQsdUVBQXVFO0lBQ3ZFLGFBQWEsRUFBRSxpQkFBaUI7SUFDaEMscUJBQXFCO0lBQ3JCLHFCQUFxQixFQUFFLEVBQUU7SUFDekIsdURBQXVEO0lBQ3ZELGlCQUFpQixFQUFFLEVBQUU7SUFDckIsOENBQThDO0lBQzlDLHdCQUF3QixFQUFFLEdBQUc7SUFDN0IsS0FBSyxFQUFFLDBDQUEwQztDQUN6QyxDQUFDLENBQUM7QUFFWixNQUFNLGFBQWEsR0FBRyx3Q0FBd0MsQ0FBQztBQUUvRCw2RkFBNkY7QUFDN0YsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsQ0FBQyxRQUFpQixFQUFzQixFQUFFLENBQUMsQ0FDOUUsT0FBTyxRQUFRLEtBQUssUUFBUTtPQUN6QixRQUFRLENBQUMsTUFBTSxJQUFJLDJCQUEyQixDQUFDLHFCQUFxQjtPQUNwRSxhQUFhLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUNoQyxDQUFDO0FBRUYsMkZBQTJGO0FBQzNGLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLENBQUMsUUFBaUIsRUFBc0IsRUFBRSxDQUFDLENBQzFFLHFCQUFxQixDQUFDLFFBQVEsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxNQUFNLElBQUksMkJBQTJCLENBQUMsaUJBQWlCLENBQ3BHLENBQUM7QUFFRiwwRUFBMEU7QUFDMUUsTUFBTSxDQUFDLE1BQU0sZ0NBQWdDLEdBQUcsQ0FBQyxPQUFlLEVBQVUsRUFBRTtJQUMxRSxJQUFJLENBQUMsaUJBQWlC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
@@ -151,9 +151,9 @@ export interface IClusterRelayAuthorizationExport {
151
151
  receipt: IClusterRelayAuthorizationExportReceipt;
152
152
  }
153
153
  export declare const clusterRelayCredentialContract: Readonly<{
154
- readonly credentialDigestDomain: "serve.zone/cluster-relay-credential";
155
- readonly legacyCredentialDigestDomain: "serve.zone/cluster-relay-legacy-credential";
156
- readonly legacyInvalidationDigestDomain: "serve.zone/cluster-relay-legacy-credential-invalidation";
154
+ readonly credentialDigestDomain: 'serve.zone/cluster-relay-credential';
155
+ readonly legacyCredentialDigestDomain: 'serve.zone/cluster-relay-legacy-credential';
156
+ readonly legacyInvalidationDigestDomain: 'serve.zone/cluster-relay-legacy-credential-invalidation';
157
157
  }>;
158
158
  /** Every reason Cloudly answers instead of mutating or retiring a cluster relay authority. */
159
159
  export declare const clusterRelayCredentialRefusals: readonly ["relay-credential-absent", "legacy-credential-absent", "legacy-credential-already-retired", "legacy-retirement-replacement-not-current", "legacy-retirement-registration-not-current", "legacy-retirement-relay-not-live", "conflict"];
@@ -1,4 +1,4 @@
1
- declare const clusterRuntimePhases: readonly ["swarm", "draining", "switching", "pallet"];
1
+ declare const clusterRuntimePhases: readonly ['swarm', 'draining', 'switching', 'pallet'];
2
2
  /**
3
3
  * Which runtime owns a cluster's workloads.
4
4
  *
@@ -50,9 +50,9 @@ export interface IClusterVpnNetwork {
50
50
  }
51
51
  export declare const clusterVpnNetworkContract: Readonly<{
52
52
  /** The policy domain of a node's control address; the hub relays no grant between control domains. */
53
- readonly controlPolicyDomainPrefix: "control:";
53
+ readonly controlPolicyDomainPrefix: 'control:';
54
54
  /** The policy domain of one workload lease, named by that lease's digest. */
55
- readonly workloadPolicyDomainPrefix: "workload:";
55
+ readonly workloadPolicyDomainPrefix: 'workload:';
56
56
  readonly maximumNodes: 256;
57
57
  /** Per node; one workload lease the node's signed projection carries. */
58
58
  readonly maximumWorkloadPrefixes: 128;
@@ -63,8 +63,8 @@ export declare const clusterVpnNetworkContract: Readonly<{
63
63
  */
64
64
  readonly maximumAuthorityIdBytes: 128;
65
65
  readonly maximumCanonicalBytes: 917504;
66
- readonly completeness: "whole-authority-never-a-patch";
67
- readonly membership: "presence-only-an-absent-node-is-withdrawn";
66
+ readonly completeness: 'whole-authority-never-a-patch';
67
+ readonly membership: 'presence-only-an-absent-node-is-withdrawn';
68
68
  }>;
69
69
  /**
70
70
  * Every reason a relay refuses a pushed network, in the words the refusal leads with.
@@ -333,18 +333,18 @@ export declare const coreMailLimits: Readonly<{
333
333
  readonly transferOverallTimeoutMs: number;
334
334
  }>;
335
335
  export declare const coreMailTransferTokenPolicy: Readonly<{
336
- format: "base64url-256";
336
+ format: 'base64url-256';
337
337
  decodedBytes: 32;
338
338
  encodedCharacters: 43;
339
339
  }>;
340
340
  export declare const coreMailWorkloadOperationPolicy: Readonly<{
341
341
  active: Readonly<{
342
- outbound: readonly ("coreMailPrepareOutboundSubmission" | "coreMailPrepareOutboundPartUpload" | "coreMailCompleteOutboundPartUpload" | "coreMailFinalizeOutboundSubmission" | "coreMailGetOutboundSubmission")[];
343
- inbound: readonly ("coreMailListInboundDeliveries" | "coreMailPrepareInboundFetch" | "coreMailCompleteInboundFetch" | "coreMailAcknowledgeInboundDelivery")[];
342
+ outbound: readonly ("coreMailCompleteOutboundPartUpload" | "coreMailFinalizeOutboundSubmission" | "coreMailGetOutboundSubmission" | "coreMailPrepareOutboundPartUpload" | "coreMailPrepareOutboundSubmission")[];
343
+ inbound: readonly ("coreMailAcknowledgeInboundDelivery" | "coreMailCompleteInboundFetch" | "coreMailListInboundDeliveries" | "coreMailPrepareInboundFetch")[];
344
344
  }>;
345
345
  draining: Readonly<{
346
346
  outbound: readonly "coreMailGetOutboundSubmission"[];
347
- inbound: readonly ("coreMailListInboundDeliveries" | "coreMailPrepareInboundFetch" | "coreMailCompleteInboundFetch" | "coreMailAcknowledgeInboundDelivery")[];
347
+ inbound: readonly ("coreMailAcknowledgeInboundDelivery" | "coreMailCompleteInboundFetch" | "coreMailListInboundDeliveries" | "coreMailPrepareInboundFetch")[];
348
348
  }>;
349
349
  disabled: Readonly<{
350
350
  outbound: readonly never[];
@@ -359,8 +359,8 @@ export declare const coreMailRetentionPolicy: Readonly<{
359
359
  pendingInboundAgePurge: false;
360
360
  }>;
361
361
  export declare const coreMailQuotaPolicy: Readonly<{
362
- windows: "fixed-utc-minute-and-day";
363
- outboundUnit: "first-durable-idempotency-insert";
362
+ windows: 'fixed-utc-minute-and-day';
363
+ outboundUnit: 'first-durable-idempotency-insert';
364
364
  outboundReplayConsumesUnit: false;
365
365
  pendingInboundStates: readonly ["pending", "fetching", "fetched"];
366
366
  inboundAcknowledgementReleasesUnit: true;
@@ -372,10 +372,10 @@ export declare const coreMailTransferProtocol: Readonly<{
372
372
  getSuccessStatus: 200;
373
373
  requireContentLength: true;
374
374
  requireContentType: true;
375
- integritySource: "grant-metadata-and-completion";
375
+ integritySource: 'grant-metadata-and-completion';
376
376
  }>;
377
377
  export declare const coreMailCredentialVerifierPolicy: Readonly<{
378
- readonly format: "argon2id";
378
+ readonly format: 'argon2id';
379
379
  readonly version: 19;
380
380
  readonly memoryCost: 65536;
381
381
  readonly timeCost: 3;
@@ -384,7 +384,7 @@ export declare const coreMailCredentialVerifierPolicy: Readonly<{
384
384
  readonly hashLengthBytes: 32;
385
385
  }>;
386
386
  export declare const coreMailRuntimeKeys: Readonly<{
387
- readonly controlBootstrap: "COREMAIL_CONTROL_BOOTSTRAP";
388
- readonly controlCredentialSecret: "COREMAIL_CONTROL_CREDENTIAL_SECRET";
389
- readonly gatewayCredentialSecret: "COREMAIL_GATEWAY_CREDENTIAL";
387
+ readonly controlBootstrap: 'COREMAIL_CONTROL_BOOTSTRAP';
388
+ readonly controlCredentialSecret: 'COREMAIL_CONTROL_CREDENTIAL_SECRET';
389
+ readonly gatewayCredentialSecret: 'COREMAIL_GATEWAY_CREDENTIAL';
390
390
  }>;
@@ -1,12 +1,12 @@
1
1
  import { type ICoreMailBindingCredentialVerifier, type ICoreMailControlBootstrap, type ICoreMailDesiredState, type ICoreMailDownloadGrant, type ICoreMailEnvelope, type ICoreMailErrorData, type ICoreMailGatewayMessageDescriptor, type ICoreMailGatewayOutboundStatus, type ICoreMailGatewayPeerDesiredState, type ICoreMailInboundDelivery, type ICoreMailInboundDeliveryPage, type ICoreMailOutboundMessageDescriptor, type ICoreMailRecipientResolution, type ICoreMailRuntimeKeyReference, type ICoreMailReconciliationStatus, type ICoreMailReplicaIdentity, type ICoreMailServiceMailStatistics, type ICoreMailSubmission, type ICoreMailTransferGrant, type ICoreMailUploadGrant, type TCoreMailCapability, type TCoreMailBindingState, type TCoreMailErrorCode, type TCoreMailSha256, type TCoreMailWorkloadOperation } from './coremail.js';
2
2
  import type { IMailConnectionInfo } from './mail.js';
3
3
  export declare const coreMailCanonicalJsonRules: Readonly<{
4
- encoding: "utf-8";
5
- objectKeyOrdering: "utf-16-code-unit-ascending";
6
- arrayOrdering: "preserved-dense";
7
- unicodeNormalization: "preserved";
8
- numberEncoding: "safe-integer-json-no-negative-zero";
9
- digest: "sha256-lowercase-hex";
4
+ encoding: 'utf-8';
5
+ objectKeyOrdering: 'utf-16-code-unit-ascending';
6
+ arrayOrdering: 'preserved-dense';
7
+ unicodeNormalization: 'preserved';
8
+ numberEncoding: 'safe-integer-json-no-negative-zero';
9
+ digest: 'sha256-lowercase-hex';
10
10
  }>;
11
11
  export declare const resolveCoreMailWorkloadOperations: (stateArg: TCoreMailBindingState, capabilitiesArg: readonly TCoreMailCapability[]) => readonly TCoreMailWorkloadOperation[];
12
12
  export declare const coreMailContractLimits: Readonly<{