tenzro-sdk 0.1.0 → 0.2.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 (111) hide show
  1. package/LICENSE +4 -15
  2. package/README.md +196 -3
  3. package/dist/adaptive-burn.d.ts +40 -0
  4. package/dist/adaptive-burn.d.ts.map +1 -0
  5. package/dist/adaptive-burn.js +53 -0
  6. package/dist/adaptive-burn.js.map +1 -0
  7. package/dist/agent.d.ts +8 -1
  8. package/dist/agent.d.ts.map +1 -1
  9. package/dist/agent.js +14 -2
  10. package/dist/agent.js.map +1 -1
  11. package/dist/ap2.d.ts +96 -0
  12. package/dist/ap2.d.ts.map +1 -1
  13. package/dist/ap2.js +65 -0
  14. package/dist/ap2.js.map +1 -1
  15. package/dist/app.js +4 -4
  16. package/dist/app.js.map +1 -1
  17. package/dist/auth.d.ts +357 -0
  18. package/dist/auth.d.ts.map +1 -0
  19. package/dist/auth.js +226 -0
  20. package/dist/auth.js.map +1 -0
  21. package/dist/bond.d.ts +70 -0
  22. package/dist/bond.d.ts.map +1 -0
  23. package/dist/bond.js +172 -0
  24. package/dist/bond.js.map +1 -0
  25. package/dist/cct.d.ts +53 -0
  26. package/dist/cct.d.ts.map +1 -0
  27. package/dist/cct.js +30 -0
  28. package/dist/cct.js.map +1 -0
  29. package/dist/client.d.ts +134 -2
  30. package/dist/client.d.ts.map +1 -1
  31. package/dist/client.js +196 -12
  32. package/dist/client.js.map +1 -1
  33. package/dist/cortex.d.ts +227 -0
  34. package/dist/cortex.d.ts.map +1 -0
  35. package/dist/cortex.js +137 -0
  36. package/dist/cortex.js.map +1 -0
  37. package/dist/custody.d.ts +251 -0
  38. package/dist/custody.d.ts.map +1 -1
  39. package/dist/custody.js +216 -0
  40. package/dist/custody.js.map +1 -1
  41. package/dist/eip6963.d.ts +63 -0
  42. package/dist/eip6963.d.ts.map +1 -0
  43. package/dist/eip6963.js +67 -0
  44. package/dist/eip6963.js.map +1 -0
  45. package/dist/erc8004.d.ts +97 -0
  46. package/dist/erc8004.d.ts.map +1 -0
  47. package/dist/erc8004.js +182 -0
  48. package/dist/erc8004.js.map +1 -0
  49. package/dist/identity.d.ts +15 -1
  50. package/dist/identity.d.ts.map +1 -1
  51. package/dist/identity.js +18 -0
  52. package/dist/identity.js.map +1 -1
  53. package/dist/index.d.ts +28 -4
  54. package/dist/index.d.ts.map +1 -1
  55. package/dist/index.js +49 -1
  56. package/dist/index.js.map +1 -1
  57. package/dist/insurance.d.ts +38 -0
  58. package/dist/insurance.d.ts.map +1 -0
  59. package/dist/insurance.js +51 -0
  60. package/dist/insurance.js.map +1 -0
  61. package/dist/lifecycle.d.ts +41 -0
  62. package/dist/lifecycle.d.ts.map +1 -0
  63. package/dist/lifecycle.js +56 -0
  64. package/dist/lifecycle.js.map +1 -0
  65. package/dist/marketplace.d.ts +30 -2
  66. package/dist/marketplace.d.ts.map +1 -1
  67. package/dist/marketplace.js +36 -2
  68. package/dist/marketplace.js.map +1 -1
  69. package/dist/payment.d.ts +14 -1
  70. package/dist/payment.d.ts.map +1 -1
  71. package/dist/payment.js +15 -0
  72. package/dist/payment.js.map +1 -1
  73. package/dist/principal-chain.d.ts +41 -0
  74. package/dist/principal-chain.d.ts.map +1 -0
  75. package/dist/principal-chain.js +56 -0
  76. package/dist/principal-chain.js.map +1 -0
  77. package/dist/provider.d.ts +2 -2
  78. package/dist/provider.js +1 -1
  79. package/dist/quota.d.ts +54 -0
  80. package/dist/quota.d.ts.map +1 -0
  81. package/dist/quota.js +71 -0
  82. package/dist/quota.js.map +1 -0
  83. package/dist/rpc.d.ts +43 -4
  84. package/dist/rpc.d.ts.map +1 -1
  85. package/dist/rpc.js +110 -3
  86. package/dist/rpc.js.map +1 -1
  87. package/dist/seed-agent.d.ts +52 -0
  88. package/dist/seed-agent.d.ts.map +1 -0
  89. package/dist/seed-agent.js +69 -0
  90. package/dist/seed-agent.js.map +1 -0
  91. package/dist/settlement.d.ts +52 -10
  92. package/dist/settlement.d.ts.map +1 -1
  93. package/dist/settlement.js +197 -16
  94. package/dist/settlement.js.map +1 -1
  95. package/dist/streaming.js.map +1 -1
  96. package/dist/svm-cross-vm.d.ts +109 -0
  97. package/dist/svm-cross-vm.d.ts.map +1 -0
  98. package/dist/svm-cross-vm.js +215 -0
  99. package/dist/svm-cross-vm.js.map +1 -0
  100. package/dist/types.d.ts +175 -6
  101. package/dist/types.d.ts.map +1 -1
  102. package/dist/types.js.map +1 -1
  103. package/dist/wallet.d.ts +26 -9
  104. package/dist/wallet.d.ts.map +1 -1
  105. package/dist/wallet.js +34 -19
  106. package/dist/wallet.js.map +1 -1
  107. package/dist/wormhole.d.ts +76 -0
  108. package/dist/wormhole.d.ts.map +1 -0
  109. package/dist/wormhole.js +56 -0
  110. package/dist/wormhole.js.map +1 -0
  111. package/package.json +2 -2
package/dist/rpc.js CHANGED
@@ -1,14 +1,32 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.RpcCallError = exports.RpcClient = void 0;
3
+ exports.RpcCallError = exports.RpcClient = exports.Eip1193Transport = void 0;
4
+ /**
5
+ * Adapter that turns an EIP-1193 provider into an `RpcTransport`. Used
6
+ * by `TenzroClient.fromInjected()` and any direct consumer that wants
7
+ * to route SDK calls through `window.tenzro` rather than a network
8
+ * endpoint.
9
+ */
10
+ class Eip1193Transport {
11
+ provider;
12
+ constructor(provider) {
13
+ this.provider = provider;
14
+ }
15
+ async call(method, params = []) {
16
+ return this.provider.request({ method, params });
17
+ }
18
+ }
19
+ exports.Eip1193Transport = Eip1193Transport;
4
20
  class RpcClient {
5
21
  endpoint;
6
22
  apiEndpoint;
7
23
  timeout;
8
24
  requestId = 0;
9
- constructor(endpoint, apiEndpoint, timeout = 30000) {
25
+ transport;
26
+ constructor(endpoint, apiEndpoint, timeout = 30000, transport) {
10
27
  this.endpoint = endpoint;
11
28
  this.timeout = timeout;
29
+ this.transport = transport;
12
30
  // Derive API endpoint from RPC endpoint if not provided
13
31
  if (apiEndpoint) {
14
32
  this.apiEndpoint = apiEndpoint;
@@ -25,15 +43,38 @@ class RpcClient {
25
43
  }
26
44
  }
27
45
  async call(method, params = []) {
46
+ // Injected-provider path: the extension owns auth + routing.
47
+ if (this.transport) {
48
+ return this.transport.call(method, params);
49
+ }
28
50
  // Use modular arithmetic to prevent overflow beyond Number.MAX_SAFE_INTEGER
29
51
  this.requestId = (this.requestId + 1) % Number.MAX_SAFE_INTEGER;
30
52
  const id = this.requestId;
31
53
  const controller = new AbortController();
32
54
  const timeoutId = setTimeout(() => controller.abort(), this.timeout);
55
+ // Ambient auth: forward `Authorization: DPoP <jwt>` and `DPoP: <proof>`
56
+ // headers from environment variables when set (Node only). This mirrors
57
+ // the Rust SDK's RpcClient and keeps SDK callsites free of private-key
58
+ // handling — the holder mints the JWT once during onboarding via
59
+ // AuthClient, then exports the token + per-call DPoP proof through
60
+ // TENZRO_BEARER_JWT / TENZRO_DPOP_PROOF.
61
+ const headers = { "Content-Type": "application/json" };
62
+ const proc = globalThis.process;
63
+ const env = proc && proc.env ? proc.env : undefined;
64
+ if (env) {
65
+ const bearer = env.TENZRO_BEARER_JWT;
66
+ if (bearer && bearer.length > 0) {
67
+ headers["Authorization"] = `DPoP ${bearer}`;
68
+ }
69
+ const dpop = env.TENZRO_DPOP_PROOF;
70
+ if (dpop && dpop.length > 0) {
71
+ headers["DPoP"] = dpop;
72
+ }
73
+ }
33
74
  try {
34
75
  const response = await fetch(this.endpoint, {
35
76
  method: "POST",
36
- headers: { "Content-Type": "application/json" },
77
+ headers,
37
78
  body: JSON.stringify({ jsonrpc: "2.0", method, params, id }),
38
79
  signal: controller.signal,
39
80
  });
@@ -105,6 +146,72 @@ class RpcClient {
105
146
  clearTimeout(timeoutId);
106
147
  }
107
148
  }
149
+ /**
150
+ * Authenticated POST to the Web API. The `/wallet/*` endpoints
151
+ * require a fresh DPoP proof per request that signs over the exact
152
+ * `(method, htu)` pair — only the wallet kernel can produce that
153
+ * proof, so the SDK accepts both the bearer JWT and the proof as
154
+ * explicit arguments instead of reading them from ambient env.
155
+ */
156
+ async postWithAuth(path, body, bearerJwt, dpopProof) {
157
+ const controller = new AbortController();
158
+ const timeoutId = setTimeout(() => controller.abort(), this.timeout);
159
+ try {
160
+ const response = await fetch(`${this.apiEndpoint}${path}`, {
161
+ method: "POST",
162
+ headers: {
163
+ "Content-Type": "application/json",
164
+ Accept: "application/json",
165
+ Authorization: `DPoP ${bearerJwt}`,
166
+ DPoP: dpopProof,
167
+ },
168
+ body: JSON.stringify(body),
169
+ signal: controller.signal,
170
+ });
171
+ if (!response.ok) {
172
+ throw new Error(`HTTP ${response.status}: ${response.statusText}`);
173
+ }
174
+ return (await response.json());
175
+ }
176
+ catch (error) {
177
+ if (error instanceof Error && error.name === "AbortError") {
178
+ throw new Error(`Request timed out after ${this.timeout}ms`);
179
+ }
180
+ throw error;
181
+ }
182
+ finally {
183
+ clearTimeout(timeoutId);
184
+ }
185
+ }
186
+ /** Authenticated GET counterpart to {@link postWithAuth}. */
187
+ async getWithAuth(path, bearerJwt, dpopProof) {
188
+ const controller = new AbortController();
189
+ const timeoutId = setTimeout(() => controller.abort(), this.timeout);
190
+ try {
191
+ const response = await fetch(`${this.apiEndpoint}${path}`, {
192
+ method: "GET",
193
+ headers: {
194
+ Accept: "application/json",
195
+ Authorization: `DPoP ${bearerJwt}`,
196
+ DPoP: dpopProof,
197
+ },
198
+ signal: controller.signal,
199
+ });
200
+ if (!response.ok) {
201
+ throw new Error(`HTTP ${response.status}: ${response.statusText}`);
202
+ }
203
+ return (await response.json());
204
+ }
205
+ catch (error) {
206
+ if (error instanceof Error && error.name === "AbortError") {
207
+ throw new Error(`Request timed out after ${this.timeout}ms`);
208
+ }
209
+ throw error;
210
+ }
211
+ finally {
212
+ clearTimeout(timeoutId);
213
+ }
214
+ }
108
215
  getEndpoint() {
109
216
  return this.endpoint;
110
217
  }
package/dist/rpc.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"rpc.js","sourceRoot":"","sources":["../src/rpc.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rpc.js","sourceRoot":"","sources":["../src/rpc.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,52 @@
1
+ import { RpcClient } from "./rpc";
2
+ /**
3
+ * Client for the SeedAgent treasury earmark and protocol-owned bootstrap
4
+ * agent registry (Spec 10).
5
+ *
6
+ * The SeedAgent earmark is a genesis-funded TNZO allocation governed by
7
+ * a decay schedule and `Charter`s that enumerate which `OperationKind`s
8
+ * a seed agent may exercise (inference, task marketplace, bridge, etc.)
9
+ * with per-charter spend caps, target throughput, and counterparty
10
+ * filters.
11
+ *
12
+ * All endpoints here are read-only — provisioning, monthly decay, and
13
+ * sunset wind-down land in a later wave with the off-chain provisioning
14
+ * daemon and governance-executor mutation paths.
15
+ */
16
+ export declare class SeedAgentClient {
17
+ private rpc;
18
+ constructor(rpc: RpcClient);
19
+ /**
20
+ * Returns the singleton `TreasuryEarmark` — genesis allocation,
21
+ * decay schedule, master enabled flag, and surplus-burn disposition.
22
+ * @returns Current `TreasuryEarmark`
23
+ */
24
+ getTreasuryEarmark(): Promise<any>;
25
+ /**
26
+ * Fetch a single `Charter` by its identifier.
27
+ * @param charterId - Charter identifier
28
+ * @returns Charter record or null if not found
29
+ */
30
+ getSeedAgentCharter(charterId: string): Promise<any>;
31
+ /**
32
+ * List every registered `Charter` (active and sunset).
33
+ * @returns Array of charter records
34
+ */
35
+ listSeedAgentCharters(): Promise<any[]>;
36
+ /**
37
+ * List provisioned `SeedAgentRecord`s, optionally filtered by charter.
38
+ * @param charterId - Optional charter filter
39
+ * @returns Array of seed agent records
40
+ */
41
+ listSeedAgents(charterId?: string): Promise<any[]>;
42
+ /**
43
+ * Returns network activity metrics over the requested window. Used by
44
+ * the SeedAgent counterparty filter and the organic-activity dashboards
45
+ * to exclude protocol-owned bootstrap traffic during the 12-month
46
+ * earmark window.
47
+ * @param windowBlocks - Optional rolling window (in blocks)
48
+ * @returns Activity metrics snapshot
49
+ */
50
+ getNetworkActivity(windowBlocks?: number): Promise<any>;
51
+ }
52
+ //# sourceMappingURL=seed-agent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"seed-agent.d.ts","sourceRoot":"","sources":["../src/seed-agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAElC;;;;;;;;;;;;;GAaG;AACH,qBAAa,eAAe;IACd,OAAO,CAAC,GAAG;gBAAH,GAAG,EAAE,SAAS;IAElC;;;;OAIG;IACG,kBAAkB,IAAI,OAAO,CAAC,GAAG,CAAC;IAIxC;;;;OAIG;IACG,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAI1D;;;OAGG;IACG,qBAAqB,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAI7C;;;;OAIG;IACG,cAAc,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAKxD;;;;;;;OAOG;IACG,kBAAkB,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;CAI9D"}
@@ -0,0 +1,69 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SeedAgentClient = void 0;
4
+ /**
5
+ * Client for the SeedAgent treasury earmark and protocol-owned bootstrap
6
+ * agent registry (Spec 10).
7
+ *
8
+ * The SeedAgent earmark is a genesis-funded TNZO allocation governed by
9
+ * a decay schedule and `Charter`s that enumerate which `OperationKind`s
10
+ * a seed agent may exercise (inference, task marketplace, bridge, etc.)
11
+ * with per-charter spend caps, target throughput, and counterparty
12
+ * filters.
13
+ *
14
+ * All endpoints here are read-only — provisioning, monthly decay, and
15
+ * sunset wind-down land in a later wave with the off-chain provisioning
16
+ * daemon and governance-executor mutation paths.
17
+ */
18
+ class SeedAgentClient {
19
+ rpc;
20
+ constructor(rpc) {
21
+ this.rpc = rpc;
22
+ }
23
+ /**
24
+ * Returns the singleton `TreasuryEarmark` — genesis allocation,
25
+ * decay schedule, master enabled flag, and surplus-burn disposition.
26
+ * @returns Current `TreasuryEarmark`
27
+ */
28
+ async getTreasuryEarmark() {
29
+ return this.rpc.call("tenzro_getTreasuryEarmark", []);
30
+ }
31
+ /**
32
+ * Fetch a single `Charter` by its identifier.
33
+ * @param charterId - Charter identifier
34
+ * @returns Charter record or null if not found
35
+ */
36
+ async getSeedAgentCharter(charterId) {
37
+ return this.rpc.call("tenzro_getSeedAgentCharter", [charterId]);
38
+ }
39
+ /**
40
+ * List every registered `Charter` (active and sunset).
41
+ * @returns Array of charter records
42
+ */
43
+ async listSeedAgentCharters() {
44
+ return this.rpc.call("tenzro_listSeedAgentCharters", []);
45
+ }
46
+ /**
47
+ * List provisioned `SeedAgentRecord`s, optionally filtered by charter.
48
+ * @param charterId - Optional charter filter
49
+ * @returns Array of seed agent records
50
+ */
51
+ async listSeedAgents(charterId) {
52
+ const params = charterId === undefined ? [] : [charterId];
53
+ return this.rpc.call("tenzro_listSeedAgents", params);
54
+ }
55
+ /**
56
+ * Returns network activity metrics over the requested window. Used by
57
+ * the SeedAgent counterparty filter and the organic-activity dashboards
58
+ * to exclude protocol-owned bootstrap traffic during the 12-month
59
+ * earmark window.
60
+ * @param windowBlocks - Optional rolling window (in blocks)
61
+ * @returns Activity metrics snapshot
62
+ */
63
+ async getNetworkActivity(windowBlocks) {
64
+ const params = windowBlocks === undefined ? [] : [windowBlocks];
65
+ return this.rpc.call("tenzro_getNetworkActivity", params);
66
+ }
67
+ }
68
+ exports.SeedAgentClient = SeedAgentClient;
69
+ //# sourceMappingURL=seed-agent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"seed-agent.js","sourceRoot":"","sources":["../src/seed-agent.ts"],"names":[],"mappings":";;;AAEA;;;;;;;;;;;;;GAaG;AACH,MAAa,eAAe;IACN;IAApB,YAAoB,GAAc;QAAd,QAAG,GAAH,GAAG,CAAW;IAAG,CAAC;IAEtC;;;;OAIG;IACH,KAAK,CAAC,kBAAkB;QACtB,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,2BAA2B,EAAE,EAAE,CAAC,CAAC;IACxD,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,mBAAmB,CAAC,SAAiB;QACzC,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,4BAA4B,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;IAClE,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,qBAAqB;QACzB,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAQ,8BAA8B,EAAE,EAAE,CAAC,CAAC;IAClE,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,cAAc,CAAC,SAAkB;QACrC,MAAM,MAAM,GAAc,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QACrE,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAQ,uBAAuB,EAAE,MAAM,CAAC,CAAC;IAC/D,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,kBAAkB,CAAC,YAAqB;QAC5C,MAAM,MAAM,GAAc,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;QAC3E,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,2BAA2B,EAAE,MAAM,CAAC,CAAC;IAC5D,CAAC;CACF;AAnDD,0CAmDC"}
@@ -20,21 +20,63 @@ export declare class SettlementClient {
20
20
  */
21
21
  getSettlement(receiptId: string): Promise<SettlementReceipt | null>;
22
22
  /**
23
- * Create an escrow that releases payment when conditions are met.
24
- * @param payee - Address receiving the payment
25
- * @param amount - Amount to escrow (in smallest unit)
23
+ * Create an on-chain escrow via a signed `CreateEscrow` transaction.
24
+ *
25
+ * The escrow_id is derived deterministically by the VM as
26
+ * `SHA-256("tenzro/escrow/id" || payer || nonce_le)` and the funds are
27
+ * locked at a vault address derived from that escrow_id. Only the signing
28
+ * payer can later release or refund.
29
+ *
30
+ * Authentication is ambient: the underlying RPC call carries the OAuth
31
+ * 2.1 bearer JWT and per-request DPoP proof from `TENZRO_BEARER_JWT` /
32
+ * `TENZRO_DPOP_PROOF` (set after onboarding via {@link AuthClient}). This
33
+ * SDK no longer takes raw private keys — signing happens server-side
34
+ * against the holder's MPC wallet, gated by the DPoP-bound bearer.
35
+ *
36
+ * @param payer - Payer address (the holder's MPC wallet address)
37
+ * @param payee - Recipient address upon successful release
38
+ * @param amount - Amount to lock in escrow (in wei, smallest unit)
26
39
  * @param asset - Asset identifier (e.g., "TNZO")
27
- * @param conditions - JSON-encoded release conditions
28
- * @returns Escrow ID
40
+ * @param expiresAt - Unix timestamp in milliseconds when the escrow expires
41
+ * @param releaseConditions - One of: "timeout" | "provider" | "consumer" |
42
+ * "both" | "verifier" | "custom"
43
+ * @returns Transaction hash
29
44
  */
30
- createEscrow(payee: string, amount: bigint, asset: string, conditions: string): Promise<string>;
45
+ createEscrow(payer: string, payee: string, amount: bigint, asset: string, expiresAt: bigint, releaseConditions: string): Promise<string>;
31
46
  /**
32
- * Release funds from an escrow.
33
- * @param escrowId - The escrow identifier
34
- * @param proof - Optional proof that conditions are met
47
+ * Release escrowed funds to the payee via a signed `ReleaseEscrow` transaction.
48
+ * Only the original payer can submit this — the VM rejects releases from any
49
+ * other address. Authentication is ambient (see {@link createEscrow}).
50
+ *
51
+ * @param payer - Payer address (the holder's MPC wallet address)
52
+ * @param escrowId - 32-byte escrow id (hex with or without 0x)
53
+ * @param proof - Optional proof bytes (hex with or without 0x)
35
54
  * @returns Transaction hash
36
55
  */
37
- releaseEscrow(escrowId: string, proof?: string): Promise<string>;
56
+ releaseEscrow(payer: string, escrowId: string, proof?: string): Promise<string>;
57
+ /**
58
+ * Refund escrowed funds back to the payer via a signed `RefundEscrow` transaction.
59
+ * Only the original payer can submit this, AND the escrow must be expired
60
+ * (or use Timeout/Custom release conditions). Authentication is ambient
61
+ * (see {@link createEscrow}).
62
+ */
63
+ refundEscrow(payer: string, escrowId: string): Promise<string>;
64
+ /** Inspect an escrow record by its 32-byte id. */
65
+ getEscrow(escrowId: string): Promise<any>;
66
+ /**
67
+ * List every escrow whose `payer` matches the given address.
68
+ * @param payer - Payer address (the wallet that created the escrow)
69
+ * @returns Array of escrow records (empty if payer has none)
70
+ */
71
+ listEscrowsByPayer(payer: string): Promise<any[]>;
72
+ /**
73
+ * List every escrow whose `payee` matches the given address.
74
+ * @param payee - Payee address (the recipient on successful release)
75
+ * @returns Array of escrow records (empty if payee has none)
76
+ */
77
+ listEscrowsByPayee(payee: string): Promise<any[]>;
78
+ /** Internal helper: fetch nonce + chain_id with safe defaults. */
79
+ private fetchNonceAndChainId;
38
80
  /**
39
81
  * Open a micropayment channel for streaming payments.
40
82
  * @param payee - Address receiving payments
@@ -1 +1 @@
1
- {"version":3,"file":"settlement.d.ts","sourceRoot":"","sources":["../src/settlement.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClC,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAE9D;;;GAGG;AACH,qBAAa,gBAAgB;IACf,OAAO,CAAC,GAAG;gBAAH,GAAG,EAAE,SAAS;IAElC;;;;OAIG;IACG,MAAM,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAInE;;;;OAIG;IACG,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;IAMzE;;;;;;;OAOG;IACG,YAAY,CAChB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,CAAC;IAWlB;;;;;OAKG;IACG,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAMtE;;;;;OAKG;IACG,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IASzE;;;;OAIG;IACG,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;CAK3D"}
1
+ {"version":3,"file":"settlement.d.ts","sourceRoot":"","sources":["../src/settlement.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClC,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAE9D;;;GAGG;AACH,qBAAa,gBAAgB;IACf,OAAO,CAAC,GAAG;gBAAH,GAAG,EAAE,SAAS;IAElC;;;;OAIG;IACG,MAAM,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAInE;;;;OAIG;IACG,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;IAMzE;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACG,YAAY,CAChB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,EACjB,iBAAiB,EAAE,MAAM,GACxB,OAAO,CAAC,MAAM,CAAC;IAwDlB;;;;;;;;;OASG;IACG,aAAa,CACjB,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,EAChB,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,MAAM,CAAC;IAqClB;;;;;OAKG;IACG,YAAY,CAChB,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,MAAM,CAAC;IA2BlB,kDAAkD;IAC5C,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAM/C;;;;OAIG;IACG,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAIvD;;;;OAIG;IACG,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAIvD,kEAAkE;YACpD,oBAAoB;IAuBlC;;;;;OAKG;IACG,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IASzE;;;;OAIG;IACG,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;CAK3D"}
@@ -29,33 +29,191 @@ class SettlementClient {
29
29
  ]);
30
30
  }
31
31
  /**
32
- * Create an escrow that releases payment when conditions are met.
33
- * @param payee - Address receiving the payment
34
- * @param amount - Amount to escrow (in smallest unit)
32
+ * Create an on-chain escrow via a signed `CreateEscrow` transaction.
33
+ *
34
+ * The escrow_id is derived deterministically by the VM as
35
+ * `SHA-256("tenzro/escrow/id" || payer || nonce_le)` and the funds are
36
+ * locked at a vault address derived from that escrow_id. Only the signing
37
+ * payer can later release or refund.
38
+ *
39
+ * Authentication is ambient: the underlying RPC call carries the OAuth
40
+ * 2.1 bearer JWT and per-request DPoP proof from `TENZRO_BEARER_JWT` /
41
+ * `TENZRO_DPOP_PROOF` (set after onboarding via {@link AuthClient}). This
42
+ * SDK no longer takes raw private keys — signing happens server-side
43
+ * against the holder's MPC wallet, gated by the DPoP-bound bearer.
44
+ *
45
+ * @param payer - Payer address (the holder's MPC wallet address)
46
+ * @param payee - Recipient address upon successful release
47
+ * @param amount - Amount to lock in escrow (in wei, smallest unit)
35
48
  * @param asset - Asset identifier (e.g., "TNZO")
36
- * @param conditions - JSON-encoded release conditions
37
- * @returns Escrow ID
49
+ * @param expiresAt - Unix timestamp in milliseconds when the escrow expires
50
+ * @param releaseConditions - One of: "timeout" | "provider" | "consumer" |
51
+ * "both" | "verifier" | "custom"
52
+ * @returns Transaction hash
38
53
  */
39
- async createEscrow(payee, amount, asset, conditions) {
40
- return this.rpc.call("tenzro_createEscrow", [
41
- {
54
+ async createEscrow(payer, payee, amount, asset, expiresAt, releaseConditions) {
55
+ const conditionsJson = (() => {
56
+ switch (releaseConditions.toLowerCase()) {
57
+ case "timeout":
58
+ return { type: "Timeout" };
59
+ case "provider":
60
+ case "provider_signature":
61
+ return { type: "ProviderSignature" };
62
+ case "consumer":
63
+ case "consumer_signature":
64
+ return { type: "ConsumerSignature" };
65
+ case "both":
66
+ case "both_signatures":
67
+ return { type: "BothSignatures" };
68
+ case "verifier":
69
+ case "verifier_signature":
70
+ return { type: "VerifierSignature" };
71
+ case "custom":
72
+ return { type: "Custom", data: "" };
73
+ default:
74
+ throw new Error(`unsupported release condition '${releaseConditions}': use timeout|provider|consumer|both|verifier|custom`);
75
+ }
76
+ })();
77
+ const { nonce, chainId } = await this.fetchNonceAndChainId(payer);
78
+ const txType = {
79
+ type: "CreateEscrow",
80
+ data: {
42
81
  payee,
43
82
  amount: amount.toString(),
44
- asset,
45
- conditions,
83
+ asset_id: asset,
84
+ expires_at: Number(expiresAt),
85
+ release_conditions: conditionsJson,
86
+ },
87
+ };
88
+ const result = await this.rpc.call("tenzro_signAndSendTransaction", [
89
+ {
90
+ from: payer,
91
+ to: payee,
92
+ value: 0,
93
+ gas_limit: 75_000,
94
+ gas_price: 1_000_000_000,
95
+ nonce,
96
+ chain_id: chainId,
97
+ tx_type: txType,
46
98
  },
47
99
  ]);
100
+ return typeof result === "string"
101
+ ? result
102
+ : result?.tx_hash || result?.transaction_hash || "";
48
103
  }
49
104
  /**
50
- * Release funds from an escrow.
51
- * @param escrowId - The escrow identifier
52
- * @param proof - Optional proof that conditions are met
105
+ * Release escrowed funds to the payee via a signed `ReleaseEscrow` transaction.
106
+ * Only the original payer can submit this — the VM rejects releases from any
107
+ * other address. Authentication is ambient (see {@link createEscrow}).
108
+ *
109
+ * @param payer - Payer address (the holder's MPC wallet address)
110
+ * @param escrowId - 32-byte escrow id (hex with or without 0x)
111
+ * @param proof - Optional proof bytes (hex with or without 0x)
53
112
  * @returns Transaction hash
54
113
  */
55
- async releaseEscrow(escrowId, proof) {
56
- return this.rpc.call("tenzro_releaseEscrow", [
57
- { escrow_id: escrowId, proof },
114
+ async releaseEscrow(payer, escrowId, proof) {
115
+ const escrowIdBytes = parseEscrowId(escrowId);
116
+ const proofBytes = proof
117
+ ? Array.from(hexToBytes(proof))
118
+ : [];
119
+ const { nonce, chainId } = await this.fetchNonceAndChainId(payer);
120
+ const txType = {
121
+ type: "ReleaseEscrow",
122
+ data: {
123
+ escrow_id: Array.from(escrowIdBytes),
124
+ proof: {
125
+ proof_type: "Timeout",
126
+ proof_data: proofBytes,
127
+ signatures: [],
128
+ },
129
+ },
130
+ };
131
+ const result = await this.rpc.call("tenzro_signAndSendTransaction", [
132
+ {
133
+ from: payer,
134
+ to: "0x0000000000000000000000000000000000000000000000000000000000000000",
135
+ value: 0,
136
+ gas_limit: 60_000,
137
+ gas_price: 1_000_000_000,
138
+ nonce,
139
+ chain_id: chainId,
140
+ tx_type: txType,
141
+ },
142
+ ]);
143
+ return typeof result === "string"
144
+ ? result
145
+ : result?.tx_hash || result?.transaction_hash || "";
146
+ }
147
+ /**
148
+ * Refund escrowed funds back to the payer via a signed `RefundEscrow` transaction.
149
+ * Only the original payer can submit this, AND the escrow must be expired
150
+ * (or use Timeout/Custom release conditions). Authentication is ambient
151
+ * (see {@link createEscrow}).
152
+ */
153
+ async refundEscrow(payer, escrowId) {
154
+ const escrowIdBytes = parseEscrowId(escrowId);
155
+ const { nonce, chainId } = await this.fetchNonceAndChainId(payer);
156
+ const txType = {
157
+ type: "RefundEscrow",
158
+ data: { escrow_id: Array.from(escrowIdBytes) },
159
+ };
160
+ const result = await this.rpc.call("tenzro_signAndSendTransaction", [
161
+ {
162
+ from: payer,
163
+ to: "0x0000000000000000000000000000000000000000000000000000000000000000",
164
+ value: 0,
165
+ gas_limit: 50_000,
166
+ gas_price: 1_000_000_000,
167
+ nonce,
168
+ chain_id: chainId,
169
+ tx_type: txType,
170
+ },
58
171
  ]);
172
+ return typeof result === "string"
173
+ ? result
174
+ : result?.tx_hash || result?.transaction_hash || "";
175
+ }
176
+ /** Inspect an escrow record by its 32-byte id. */
177
+ async getEscrow(escrowId) {
178
+ const escrowIdBytes = parseEscrowId(escrowId);
179
+ const escrowIdHex = "0x" + bytesToHex(escrowIdBytes);
180
+ return this.rpc.call("tenzro_getEscrow", [{ escrow_id: escrowIdHex }]);
181
+ }
182
+ /**
183
+ * List every escrow whose `payer` matches the given address.
184
+ * @param payer - Payer address (the wallet that created the escrow)
185
+ * @returns Array of escrow records (empty if payer has none)
186
+ */
187
+ async listEscrowsByPayer(payer) {
188
+ return this.rpc.call("tenzro_listEscrowsByPayer", [payer]);
189
+ }
190
+ /**
191
+ * List every escrow whose `payee` matches the given address.
192
+ * @param payee - Payee address (the recipient on successful release)
193
+ * @returns Array of escrow records (empty if payee has none)
194
+ */
195
+ async listEscrowsByPayee(payee) {
196
+ return this.rpc.call("tenzro_listEscrowsByPayee", [payee]);
197
+ }
198
+ /** Internal helper: fetch nonce + chain_id with safe defaults. */
199
+ async fetchNonceAndChainId(address) {
200
+ let nonce = 0;
201
+ let chainId = 1337;
202
+ try {
203
+ const nonceHex = await this.rpc.call("eth_getTransactionCount", [address, "latest"]);
204
+ nonce = parseInt(nonceHex.replace(/^0x/, ""), 16) || 0;
205
+ }
206
+ catch (_) {
207
+ // ignore — default to 0
208
+ }
209
+ try {
210
+ const chainIdHex = await this.rpc.call("eth_chainId", []);
211
+ chainId = parseInt(chainIdHex.replace(/^0x/, ""), 16) || 1337;
212
+ }
213
+ catch (_) {
214
+ // ignore — default to 1337
215
+ }
216
+ return { nonce, chainId };
59
217
  }
60
218
  /**
61
219
  * Open a micropayment channel for streaming payments.
@@ -83,4 +241,27 @@ class SettlementClient {
83
241
  }
84
242
  }
85
243
  exports.SettlementClient = SettlementClient;
244
+ function hexToBytes(hex) {
245
+ const clean = hex.replace(/^0x/, "");
246
+ if (clean.length % 2 !== 0) {
247
+ throw new Error(`invalid hex string (odd length): ${hex}`);
248
+ }
249
+ const bytes = new Uint8Array(clean.length / 2);
250
+ for (let i = 0; i < bytes.length; i++) {
251
+ bytes[i] = parseInt(clean.substring(i * 2, i * 2 + 2), 16);
252
+ }
253
+ return bytes;
254
+ }
255
+ function bytesToHex(bytes) {
256
+ return Array.from(bytes)
257
+ .map((b) => b.toString(16).padStart(2, "0"))
258
+ .join("");
259
+ }
260
+ function parseEscrowId(s) {
261
+ const bytes = hexToBytes(s);
262
+ if (bytes.length !== 32) {
263
+ throw new Error(`escrow_id must be 32 bytes, got ${bytes.length}`);
264
+ }
265
+ return bytes;
266
+ }
86
267
  //# sourceMappingURL=settlement.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"settlement.js","sourceRoot":"","sources":["../src/settlement.ts"],"names":[],"mappings":";;;AAGA;;;GAGG;AACH,MAAa,gBAAgB;IACP;IAApB,YAAoB,GAAc;QAAd,QAAG,GAAH,GAAG,CAAW;IAAG,CAAC;IAEtC;;;;OAIG;IACH,KAAK,CAAC,MAAM,CAAC,OAAyB;QACpC,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAoB,eAAe,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IACtE,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,aAAa,CAAC,SAAiB;QACnC,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAA2B,sBAAsB,EAAE;YACrE,SAAS;SACV,CAAC,CAAC;IACL,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,YAAY,CAChB,KAAa,EACb,MAAc,EACd,KAAa,EACb,UAAkB;QAElB,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAS,qBAAqB,EAAE;YAClD;gBACE,KAAK;gBACL,MAAM,EAAE,MAAM,CAAC,QAAQ,EAAE;gBACzB,KAAK;gBACL,UAAU;aACX;SACF,CAAC,CAAC;IACL,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,aAAa,CAAC,QAAgB,EAAE,KAAc;QAClD,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAS,sBAAsB,EAAE;YACnD,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE;SAC/B,CAAC,CAAC;IACL,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,kBAAkB,CAAC,KAAa,EAAE,OAAe;QACrD,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAS,2BAA2B,EAAE;YACxD;gBACE,KAAK;gBACL,OAAO,EAAE,OAAO,CAAC,QAAQ,EAAE;aAC5B;SACF,CAAC,CAAC;IACL,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,mBAAmB,CAAC,SAAiB;QACzC,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,4BAA4B,EAAE;YACjD,EAAE,UAAU,EAAE,SAAS,EAAE;SAC1B,CAAC,CAAC;IACL,CAAC;CACF;AApFD,4CAoFC"}
1
+ {"version":3,"file":"settlement.js","sourceRoot":"","sources":["../src/settlement.ts"],"names":[],"mappings":";;;AAGA;;;GAGG;AACH,MAAa,gBAAgB;IACP;IAApB,YAAoB,GAAc;QAAd,QAAG,GAAH,GAAG,CAAW;IAAG,CAAC;IAEtC;;;;OAIG;IACH,KAAK,CAAC,MAAM,CAAC,OAAyB;QACpC,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAoB,eAAe,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IACtE,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,aAAa,CAAC,SAAiB;QACnC,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAA2B,sBAAsB,EAAE;YACrE,SAAS;SACV,CAAC,CAAC;IACL,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,KAAK,CAAC,YAAY,CAChB,KAAa,EACb,KAAa,EACb,MAAc,EACd,KAAa,EACb,SAAiB,EACjB,iBAAyB;QAEzB,MAAM,cAAc,GAAG,CAAC,GAAG,EAAE;YAC3B,QAAQ,iBAAiB,CAAC,WAAW,EAAE,EAAE,CAAC;gBACxC,KAAK,SAAS;oBACZ,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;gBAC7B,KAAK,UAAU,CAAC;gBAChB,KAAK,oBAAoB;oBACvB,OAAO,EAAE,IAAI,EAAE,mBAAmB,EAAE,CAAC;gBACvC,KAAK,UAAU,CAAC;gBAChB,KAAK,oBAAoB;oBACvB,OAAO,EAAE,IAAI,EAAE,mBAAmB,EAAE,CAAC;gBACvC,KAAK,MAAM,CAAC;gBACZ,KAAK,iBAAiB;oBACpB,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC;gBACpC,KAAK,UAAU,CAAC;gBAChB,KAAK,oBAAoB;oBACvB,OAAO,EAAE,IAAI,EAAE,mBAAmB,EAAE,CAAC;gBACvC,KAAK,QAAQ;oBACX,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;gBACtC;oBACE,MAAM,IAAI,KAAK,CACb,kCAAkC,iBAAiB,uDAAuD,CAC3G,CAAC;YACN,CAAC;QACH,CAAC,CAAC,EAAE,CAAC;QAEL,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;QAClE,MAAM,MAAM,GAAG;YACb,IAAI,EAAE,cAAc;YACpB,IAAI,EAAE;gBACJ,KAAK;gBACL,MAAM,EAAE,MAAM,CAAC,QAAQ,EAAE;gBACzB,QAAQ,EAAE,KAAK;gBACf,UAAU,EAAE,MAAM,CAAC,SAAS,CAAC;gBAC7B,kBAAkB,EAAE,cAAc;aACnC;SACF,CAAC;QAEF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAM,+BAA+B,EAAE;YACvE;gBACE,IAAI,EAAE,KAAK;gBACX,EAAE,EAAE,KAAK;gBACT,KAAK,EAAE,CAAC;gBACR,SAAS,EAAE,MAAM;gBACjB,SAAS,EAAE,aAAa;gBACxB,KAAK;gBACL,QAAQ,EAAE,OAAO;gBACjB,OAAO,EAAE,MAAM;aAChB;SACF,CAAC,CAAC;QAEH,OAAO,OAAO,MAAM,KAAK,QAAQ;YAC/B,CAAC,CAAC,MAAM;YACR,CAAC,CAAC,MAAM,EAAE,OAAO,IAAI,MAAM,EAAE,gBAAgB,IAAI,EAAE,CAAC;IACxD,CAAC;IAED;;;;;;;;;OASG;IACH,KAAK,CAAC,aAAa,CACjB,KAAa,EACb,QAAgB,EAChB,KAAc;QAEd,MAAM,aAAa,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;QAC9C,MAAM,UAAU,GAAG,KAAK;YACtB,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YAC/B,CAAC,CAAC,EAAE,CAAC;QAEP,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;QAClE,MAAM,MAAM,GAAG;YACb,IAAI,EAAE,eAAe;YACrB,IAAI,EAAE;gBACJ,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC;gBACpC,KAAK,EAAE;oBACL,UAAU,EAAE,SAAS;oBACrB,UAAU,EAAE,UAAU;oBACtB,UAAU,EAAE,EAAE;iBACf;aACF;SACF,CAAC;QAEF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAM,+BAA+B,EAAE;YACvE;gBACE,IAAI,EAAE,KAAK;gBACX,EAAE,EAAE,oEAAoE;gBACxE,KAAK,EAAE,CAAC;gBACR,SAAS,EAAE,MAAM;gBACjB,SAAS,EAAE,aAAa;gBACxB,KAAK;gBACL,QAAQ,EAAE,OAAO;gBACjB,OAAO,EAAE,MAAM;aAChB;SACF,CAAC,CAAC;QAEH,OAAO,OAAO,MAAM,KAAK,QAAQ;YAC/B,CAAC,CAAC,MAAM;YACR,CAAC,CAAC,MAAM,EAAE,OAAO,IAAI,MAAM,EAAE,gBAAgB,IAAI,EAAE,CAAC;IACxD,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,YAAY,CAChB,KAAa,EACb,QAAgB;QAEhB,MAAM,aAAa,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;QAE9C,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;QAClE,MAAM,MAAM,GAAG;YACb,IAAI,EAAE,cAAc;YACpB,IAAI,EAAE,EAAE,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE;SAC/C,CAAC;QAEF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAM,+BAA+B,EAAE;YACvE;gBACE,IAAI,EAAE,KAAK;gBACX,EAAE,EAAE,oEAAoE;gBACxE,KAAK,EAAE,CAAC;gBACR,SAAS,EAAE,MAAM;gBACjB,SAAS,EAAE,aAAa;gBACxB,KAAK;gBACL,QAAQ,EAAE,OAAO;gBACjB,OAAO,EAAE,MAAM;aAChB;SACF,CAAC,CAAC;QAEH,OAAO,OAAO,MAAM,KAAK,QAAQ;YAC/B,CAAC,CAAC,MAAM;YACR,CAAC,CAAC,MAAM,EAAE,OAAO,IAAI,MAAM,EAAE,gBAAgB,IAAI,EAAE,CAAC;IACxD,CAAC;IAED,kDAAkD;IAClD,KAAK,CAAC,SAAS,CAAC,QAAgB;QAC9B,MAAM,aAAa,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;QAC9C,MAAM,WAAW,GAAG,IAAI,GAAG,UAAU,CAAC,aAAa,CAAC,CAAC;QACrD,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC;IACzE,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,kBAAkB,CAAC,KAAa;QACpC,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAQ,2BAA2B,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IACpE,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,kBAAkB,CAAC,KAAa;QACpC,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAQ,2BAA2B,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IACpE,CAAC;IAED,kEAAkE;IAC1D,KAAK,CAAC,oBAAoB,CAChC,OAAe;QAEf,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,IAAI,OAAO,GAAG,IAAI,CAAC;QACnB,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAClC,yBAAyB,EACzB,CAAC,OAAO,EAAE,QAAQ,CAAC,CACpB,CAAC;YACF,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;QACzD,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,wBAAwB;QAC1B,CAAC;QACD,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAS,aAAa,EAAE,EAAE,CAAC,CAAC;YAClE,OAAO,GAAG,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC;QAChE,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,2BAA2B;QAC7B,CAAC;QACD,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;IAC5B,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,kBAAkB,CAAC,KAAa,EAAE,OAAe;QACrD,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAS,2BAA2B,EAAE;YACxD;gBACE,KAAK;gBACL,OAAO,EAAE,OAAO,CAAC,QAAQ,EAAE;aAC5B;SACF,CAAC,CAAC;IACL,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,mBAAmB,CAAC,SAAiB;QACzC,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,4BAA4B,EAAE;YACjD,EAAE,UAAU,EAAE,SAAS,EAAE;SAC1B,CAAC,CAAC;IACL,CAAC;CACF;AA9QD,4CA8QC;AAED,SAAS,UAAU,CAAC,GAAW;IAC7B,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACrC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CAAC,oCAAoC,GAAG,EAAE,CAAC,CAAC;IAC7D,CAAC;IACD,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC/C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,KAAK,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC7D,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,UAAU,CAAC,KAAiB;IACnC,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;SACrB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;SAC3C,IAAI,CAAC,EAAE,CAAC,CAAC;AACd,CAAC;AAED,SAAS,aAAa,CAAC,CAAS;IAC9B,MAAM,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;IAC5B,IAAI,KAAK,CAAC,MAAM,KAAK,EAAE,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,mCAAmC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;IACrE,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}