tenzro-sdk 0.1.0 → 0.3.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 (172) hide show
  1. package/LICENSE +4 -15
  2. package/README.md +197 -4
  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 +127 -12
  8. package/dist/agent.d.ts.map +1 -1
  9. package/dist/agent.js +176 -15
  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 +5 -5
  16. package/dist/app.js.map +1 -1
  17. package/dist/auth.d.ts +394 -0
  18. package/dist/auth.d.ts.map +1 -0
  19. package/dist/auth.js +237 -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 +215 -2
  30. package/dist/client.d.ts.map +1 -1
  31. package/dist/client.js +295 -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/eip7702.d.ts +110 -0
  46. package/dist/eip7702.d.ts.map +1 -0
  47. package/dist/eip7702.js +73 -0
  48. package/dist/eip7702.js.map +1 -0
  49. package/dist/erc7683.d.ts +79 -0
  50. package/dist/erc7683.d.ts.map +1 -0
  51. package/dist/erc7683.js +82 -0
  52. package/dist/erc7683.js.map +1 -0
  53. package/dist/erc8004.d.ts +97 -0
  54. package/dist/erc8004.d.ts.map +1 -0
  55. package/dist/erc8004.js +182 -0
  56. package/dist/erc8004.js.map +1 -0
  57. package/dist/events.d.ts +45 -15
  58. package/dist/events.d.ts.map +1 -1
  59. package/dist/events.js +38 -8
  60. package/dist/events.js.map +1 -1
  61. package/dist/identity.d.ts +16 -2
  62. package/dist/identity.d.ts.map +1 -1
  63. package/dist/identity.js +19 -1
  64. package/dist/identity.js.map +1 -1
  65. package/dist/index.d.ts +52 -6
  66. package/dist/index.d.ts.map +1 -1
  67. package/dist/index.js +83 -1
  68. package/dist/index.js.map +1 -1
  69. package/dist/insurance.d.ts +38 -0
  70. package/dist/insurance.d.ts.map +1 -0
  71. package/dist/insurance.js +51 -0
  72. package/dist/insurance.js.map +1 -0
  73. package/dist/iroh.d.ts +104 -0
  74. package/dist/iroh.d.ts.map +1 -0
  75. package/dist/iroh.js +102 -0
  76. package/dist/iroh.js.map +1 -0
  77. package/dist/lifecycle.d.ts +41 -0
  78. package/dist/lifecycle.d.ts.map +1 -0
  79. package/dist/lifecycle.js +56 -0
  80. package/dist/lifecycle.js.map +1 -0
  81. package/dist/marketplace.d.ts +30 -2
  82. package/dist/marketplace.d.ts.map +1 -1
  83. package/dist/marketplace.js +36 -2
  84. package/dist/marketplace.js.map +1 -1
  85. package/dist/memory.d.ts +78 -0
  86. package/dist/memory.d.ts.map +1 -0
  87. package/dist/memory.js +60 -0
  88. package/dist/memory.js.map +1 -0
  89. package/dist/multimodal.d.ts +294 -0
  90. package/dist/multimodal.d.ts.map +1 -0
  91. package/dist/multimodal.js +160 -0
  92. package/dist/multimodal.js.map +1 -0
  93. package/dist/passkey.d.ts +193 -0
  94. package/dist/passkey.d.ts.map +1 -0
  95. package/dist/passkey.js +481 -0
  96. package/dist/passkey.js.map +1 -0
  97. package/dist/payment.d.ts +14 -1
  98. package/dist/payment.d.ts.map +1 -1
  99. package/dist/payment.js +15 -0
  100. package/dist/payment.js.map +1 -1
  101. package/dist/principal-chain.d.ts +41 -0
  102. package/dist/principal-chain.d.ts.map +1 -0
  103. package/dist/principal-chain.js +56 -0
  104. package/dist/principal-chain.js.map +1 -0
  105. package/dist/provider.d.ts +7 -6
  106. package/dist/provider.d.ts.map +1 -1
  107. package/dist/provider.js +9 -6
  108. package/dist/provider.js.map +1 -1
  109. package/dist/quota.d.ts +54 -0
  110. package/dist/quota.d.ts.map +1 -0
  111. package/dist/quota.js +71 -0
  112. package/dist/quota.js.map +1 -0
  113. package/dist/rpc.d.ts +43 -4
  114. package/dist/rpc.d.ts.map +1 -1
  115. package/dist/rpc.js +110 -3
  116. package/dist/rpc.js.map +1 -1
  117. package/dist/seed-agent.d.ts +52 -0
  118. package/dist/seed-agent.d.ts.map +1 -0
  119. package/dist/seed-agent.js +69 -0
  120. package/dist/seed-agent.js.map +1 -0
  121. package/dist/settlement.d.ts +69 -10
  122. package/dist/settlement.d.ts.map +1 -1
  123. package/dist/settlement.js +220 -16
  124. package/dist/settlement.js.map +1 -1
  125. package/dist/signer.d.ts +181 -0
  126. package/dist/signer.d.ts.map +1 -0
  127. package/dist/signer.js +69 -0
  128. package/dist/signer.js.map +1 -0
  129. package/dist/sla.d.ts +95 -0
  130. package/dist/sla.d.ts.map +1 -0
  131. package/dist/sla.js +70 -0
  132. package/dist/sla.js.map +1 -0
  133. package/dist/snapshot.d.ts +122 -0
  134. package/dist/snapshot.d.ts.map +1 -0
  135. package/dist/snapshot.js +80 -0
  136. package/dist/snapshot.js.map +1 -0
  137. package/dist/staking.d.ts +5 -5
  138. package/dist/staking.d.ts.map +1 -1
  139. package/dist/staking.js +8 -6
  140. package/dist/staking.js.map +1 -1
  141. package/dist/streaming.js.map +1 -1
  142. package/dist/svm-cross-vm.d.ts +109 -0
  143. package/dist/svm-cross-vm.d.ts.map +1 -0
  144. package/dist/svm-cross-vm.js +215 -0
  145. package/dist/svm-cross-vm.js.map +1 -0
  146. package/dist/task.d.ts +56 -22
  147. package/dist/task.d.ts.map +1 -1
  148. package/dist/task.js +65 -31
  149. package/dist/task.js.map +1 -1
  150. package/dist/token.d.ts +41 -11
  151. package/dist/token.d.ts.map +1 -1
  152. package/dist/token.js.map +1 -1
  153. package/dist/training.d.ts +108 -0
  154. package/dist/training.d.ts.map +1 -0
  155. package/dist/training.js +53 -0
  156. package/dist/training.js.map +1 -0
  157. package/dist/types.d.ts +247 -17
  158. package/dist/types.d.ts.map +1 -1
  159. package/dist/types.js.map +1 -1
  160. package/dist/validator.d.ts +76 -0
  161. package/dist/validator.d.ts.map +1 -0
  162. package/dist/validator.js +47 -0
  163. package/dist/validator.js.map +1 -0
  164. package/dist/wallet.d.ts +26 -9
  165. package/dist/wallet.d.ts.map +1 -1
  166. package/dist/wallet.js +34 -19
  167. package/dist/wallet.js.map +1 -1
  168. package/dist/wormhole.d.ts +76 -0
  169. package/dist/wormhole.d.ts.map +1 -0
  170. package/dist/wormhole.js +56 -0
  171. package/dist/wormhole.js.map +1 -0
  172. package/package.json +3 -2
@@ -0,0 +1,63 @@
1
+ /**
2
+ * Minimal EIP-6963 provider discovery for `TenzroClient.fromInjected()`.
3
+ *
4
+ * The browser extension installs `window.tenzro` and announces itself
5
+ * via `eip6963:announceProvider` (the multi-wallet discovery standard
6
+ * from EIP-6963 §Specification). This helper listens for the matching
7
+ * announcement and returns the provider, with a typed
8
+ * `TenzroNotInstalledError` for the not-installed case.
9
+ *
10
+ * The discovery code is inlined here rather than imported from a
11
+ * separate `@tenzro/inject` package so the SDK has zero peer
12
+ * dependencies — `npm install tenzro-sdk` is enough to opt into the
13
+ * injected-provider path.
14
+ */
15
+ export interface EIP1193Provider {
16
+ request<T = unknown>(args: {
17
+ method: string;
18
+ params?: readonly unknown[] | Record<string, unknown>;
19
+ }): Promise<T>;
20
+ }
21
+ export interface EIP6963ProviderInfo {
22
+ readonly uuid: string;
23
+ readonly name: string;
24
+ readonly icon: string;
25
+ readonly rdns: string;
26
+ }
27
+ export interface EIP6963ProviderDetail {
28
+ readonly info: EIP6963ProviderInfo;
29
+ readonly provider: EIP1193Provider;
30
+ }
31
+ /**
32
+ * Default `rdns` for the Tenzro browser-extension provider.
33
+ *
34
+ * Pre-registration value — kept aligned with the extension's
35
+ * `installTenzroProvider({ rdns })` default. Will become a
36
+ * formally-registered RDNS once the CAIP-2 `tenzro:` namespace PR
37
+ * lands upstream.
38
+ */
39
+ export declare const TENZRO_PROVIDER_RDNS = "network.tenzro.wallet";
40
+ /**
41
+ * Listen for EIP-6963 announcements and resolve when a provider
42
+ * matching `rdns` arrives. Defaults to the Tenzro extension's RDNS.
43
+ *
44
+ * Rejects with {@link TenzroNotInstalledError} if no matching
45
+ * provider announces within `timeoutMs` (default 3000ms).
46
+ */
47
+ export declare function discoverEip6963Provider(options?: {
48
+ rdns?: string;
49
+ timeoutMs?: number;
50
+ }): Promise<EIP6963ProviderDetail>;
51
+ /**
52
+ * Thrown when a Tenzro provider is expected but not present in the page.
53
+ *
54
+ * Catch this in dApps to render an "Install Tenzro" CTA rather than
55
+ * a generic error. The `code` field is also set to the literal string
56
+ * `"TENZRO_NOT_INSTALLED"` for callers that prefer duck-typing over
57
+ * `instanceof`.
58
+ */
59
+ export declare class TenzroNotInstalledError extends Error {
60
+ readonly code: "TENZRO_NOT_INSTALLED";
61
+ constructor(message: string);
62
+ }
63
+ //# sourceMappingURL=eip6963.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eip6963.d.ts","sourceRoot":"","sources":["../src/eip6963.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,eAAe;IAC9B,OAAO,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE;QACzB,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,SAAS,OAAO,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACvD,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;CAChB;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,IAAI,EAAE,mBAAmB,CAAC;IACnC,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC;CACpC;AAMD;;;;;;;GAOG;AACH,eAAO,MAAM,oBAAoB,0BAA0B,CAAC;AAE5D;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,CAAC,EAAE;IAChD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAwCjC;AAED;;;;;;;GAOG;AACH,qBAAa,uBAAwB,SAAQ,KAAK;IAChD,QAAQ,CAAC,IAAI,EAAG,sBAAsB,CAAU;gBAEpC,OAAO,EAAE,MAAM;CAI5B"}
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TenzroNotInstalledError = exports.TENZRO_PROVIDER_RDNS = void 0;
4
+ exports.discoverEip6963Provider = discoverEip6963Provider;
5
+ /**
6
+ * Default `rdns` for the Tenzro browser-extension provider.
7
+ *
8
+ * Pre-registration value — kept aligned with the extension's
9
+ * `installTenzroProvider({ rdns })` default. Will become a
10
+ * formally-registered RDNS once the CAIP-2 `tenzro:` namespace PR
11
+ * lands upstream.
12
+ */
13
+ exports.TENZRO_PROVIDER_RDNS = "network.tenzro.wallet";
14
+ /**
15
+ * Listen for EIP-6963 announcements and resolve when a provider
16
+ * matching `rdns` arrives. Defaults to the Tenzro extension's RDNS.
17
+ *
18
+ * Rejects with {@link TenzroNotInstalledError} if no matching
19
+ * provider announces within `timeoutMs` (default 3000ms).
20
+ */
21
+ function discoverEip6963Provider(options) {
22
+ const wantRdns = options?.rdns ?? exports.TENZRO_PROVIDER_RDNS;
23
+ const timeoutMs = options?.timeoutMs ?? 3000;
24
+ if (typeof window === "undefined") {
25
+ return Promise.reject(new TenzroNotInstalledError("not running in a browser context"));
26
+ }
27
+ return new Promise((resolve, reject) => {
28
+ let settled = false;
29
+ const onAnnounce = (rawEvent) => {
30
+ const event = rawEvent;
31
+ if (event.detail?.info?.rdns === wantRdns && !settled) {
32
+ settled = true;
33
+ window.removeEventListener("eip6963:announceProvider", onAnnounce);
34
+ window.clearTimeout(timer);
35
+ resolve(event.detail);
36
+ }
37
+ };
38
+ window.addEventListener("eip6963:announceProvider", onAnnounce);
39
+ // Per EIP-6963 §Specification, dApps signal readiness with this
40
+ // event; already-installed wallets re-announce in response.
41
+ window.dispatchEvent(new Event("eip6963:requestProvider"));
42
+ const timer = window.setTimeout(() => {
43
+ if (settled)
44
+ return;
45
+ settled = true;
46
+ window.removeEventListener("eip6963:announceProvider", onAnnounce);
47
+ reject(new TenzroNotInstalledError(`no EIP-6963 provider with rdns="${wantRdns}" announced within ${timeoutMs}ms`));
48
+ }, timeoutMs);
49
+ });
50
+ }
51
+ /**
52
+ * Thrown when a Tenzro provider is expected but not present in the page.
53
+ *
54
+ * Catch this in dApps to render an "Install Tenzro" CTA rather than
55
+ * a generic error. The `code` field is also set to the literal string
56
+ * `"TENZRO_NOT_INSTALLED"` for callers that prefer duck-typing over
57
+ * `instanceof`.
58
+ */
59
+ class TenzroNotInstalledError extends Error {
60
+ code = "TENZRO_NOT_INSTALLED";
61
+ constructor(message) {
62
+ super(message);
63
+ this.name = "TenzroNotInstalledError";
64
+ }
65
+ }
66
+ exports.TenzroNotInstalledError = TenzroNotInstalledError;
67
+ //# sourceMappingURL=eip6963.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eip6963.js","sourceRoot":"","sources":["../src/eip6963.ts"],"names":[],"mappings":";;;AAsDA,0DA2CC;AA5DD;;;;;;;GAOG;AACU,QAAA,oBAAoB,GAAG,uBAAuB,CAAC;AAE5D;;;;;;GAMG;AACH,SAAgB,uBAAuB,CAAC,OAGvC;IACC,MAAM,QAAQ,GAAG,OAAO,EAAE,IAAI,IAAI,4BAAoB,CAAC;IACvD,MAAM,SAAS,GAAG,OAAO,EAAE,SAAS,IAAI,IAAI,CAAC;IAE7C,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;QAClC,OAAO,OAAO,CAAC,MAAM,CACnB,IAAI,uBAAuB,CAAC,kCAAkC,CAAC,CAChE,CAAC;IACJ,CAAC;IAED,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,IAAI,OAAO,GAAG,KAAK,CAAC;QAEpB,MAAM,UAAU,GAAG,CAAC,QAAe,EAAE,EAAE;YACrC,MAAM,KAAK,GAAG,QAAwC,CAAC;YACvD,IAAI,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,KAAK,QAAQ,IAAI,CAAC,OAAO,EAAE,CAAC;gBACtD,OAAO,GAAG,IAAI,CAAC;gBACf,MAAM,CAAC,mBAAmB,CAAC,0BAA0B,EAAE,UAAU,CAAC,CAAC;gBACnE,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;gBAC3B,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACxB,CAAC;QACH,CAAC,CAAC;QAEF,MAAM,CAAC,gBAAgB,CAAC,0BAA0B,EAAE,UAAU,CAAC,CAAC;QAEhE,gEAAgE;QAChE,4DAA4D;QAC5D,MAAM,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC,CAAC;QAE3D,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE;YACnC,IAAI,OAAO;gBAAE,OAAO;YACpB,OAAO,GAAG,IAAI,CAAC;YACf,MAAM,CAAC,mBAAmB,CAAC,0BAA0B,EAAE,UAAU,CAAC,CAAC;YACnE,MAAM,CACJ,IAAI,uBAAuB,CACzB,mCAAmC,QAAQ,sBAAsB,SAAS,IAAI,CAC/E,CACF,CAAC;QACJ,CAAC,EAAE,SAAS,CAAC,CAAC;IAChB,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;GAOG;AACH,MAAa,uBAAwB,SAAQ,KAAK;IACvC,IAAI,GAAG,sBAA+B,CAAC;IAEhD,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,yBAAyB,CAAC;IACxC,CAAC;CACF;AAPD,0DAOC"}
@@ -0,0 +1,110 @@
1
+ import type { RpcClient } from './rpc';
2
+ /** Result of `tenzro_eip7702SigningHash`. */
3
+ export interface Eip7702SigningHash {
4
+ /**
5
+ * 32-byte keccak-256 signing hash, 0x-prefixed hex. Sign with the
6
+ * EOA's secp256k1 private key.
7
+ */
8
+ signing_hash: string;
9
+ /**
10
+ * The full signing preimage
11
+ * (`MAGIC(0x05) || rlp([chain_id, delegate_address, nonce])`),
12
+ * 0x-prefixed hex. Provided for auditing / debugging.
13
+ */
14
+ signing_data: string;
15
+ /** Always `"0x05"` — the EIP-7702 magic byte. */
16
+ magic_byte: string;
17
+ }
18
+ /** Result of `tenzro_eip7702BuildDesignator`. */
19
+ export interface Eip7702Designator {
20
+ /** 23-byte designator, 0x-prefixed hex. */
21
+ designator: string;
22
+ /** Always 23. */
23
+ length: number;
24
+ /** Always `"0xef0100"`. */
25
+ prefix: string;
26
+ /** The delegate address echoed back. */
27
+ delegate_address: string;
28
+ }
29
+ /** Result of `tenzro_eip7702ParseDesignator`. */
30
+ export interface Eip7702ParsedDesignator {
31
+ /** `true` if `code` is a valid 23-byte 7702 designator. */
32
+ is_designator: boolean;
33
+ /**
34
+ * The delegate address (0x-prefixed hex) if `is_designator=true`,
35
+ * otherwise `null`.
36
+ */
37
+ delegate_address: string | null;
38
+ }
39
+ /** Result of `tenzro_eip7702ProtocolInfo`. */
40
+ export interface Eip7702ProtocolInfo {
41
+ /** EIP-7702 transaction type (`0x04` per the EIP). */
42
+ tx_type: number;
43
+ /** Authorization preimage magic byte (`"0x05"`). */
44
+ magic_byte: string;
45
+ /** Designator prefix (`"0xef0100"`). */
46
+ designator_prefix: string;
47
+ /** Designator length in bytes (always 23). */
48
+ designator_length: number;
49
+ /** Signing scheme used for the authorization (`"secp256k1"`). */
50
+ signing_scheme: string;
51
+ /** Wire format of the secp256k1 signature. */
52
+ signature_format: string;
53
+ /** Description of the signing preimage shape. */
54
+ preimage: string;
55
+ /**
56
+ * Operator note describing the current state of transaction-side
57
+ * support (`eth_sendRawTransaction` integration is a follow-up).
58
+ */
59
+ note: string;
60
+ }
61
+ /**
62
+ * EIP-7702 (Set EOA Account Code) helper client.
63
+ *
64
+ * EIP-7702 lets an externally-owned account temporarily delegate its
65
+ * code to a smart-contract address. The delegation is encoded as a
66
+ * 23-byte designator (`0xef0100 || delegate_address`) written into the
67
+ * EOA's code slot, signed by the EOA's secp256k1 key over a domain-
68
+ * separated preimage.
69
+ *
70
+ * This client wraps the **stateless helper RPCs** the node exposes to
71
+ * support 7702 tooling end-to-end:
72
+ * - `tenzro_eip7702SigningHash` — compute the secp256k1 signing hash
73
+ * - `tenzro_eip7702BuildDesignator` — build the 23-byte designator
74
+ * - `tenzro_eip7702ParseDesignator` — decode an account's code
75
+ * - `tenzro_eip7702ProtocolInfo` — static protocol metadata
76
+ *
77
+ * Full EIP-7702 txtype `0x04` decoding inside `eth_sendRawTransaction`
78
+ * is a separate mainnet task. For now, produce the signing hash with
79
+ * `signingHash`, sign client-side, and use `buildDesignator` + a
80
+ * direct state write to install the delegation.
81
+ */
82
+ export declare class Eip7702Client {
83
+ private readonly rpc;
84
+ constructor(rpc: RpcClient);
85
+ /**
86
+ * Compute the secp256k1 signing hash for an EIP-7702 authorization
87
+ * tuple `(chainId, delegateAddress, nonce)`. The returned
88
+ * `signing_hash` is what the EOA private key signs client-side.
89
+ */
90
+ signingHash(chainId: number, delegateAddress: string, nonce: number): Promise<Eip7702SigningHash>;
91
+ /**
92
+ * Build the 23-byte EIP-7702 delegation designator
93
+ * (`0xef0100 || delegateAddress`) that gets written into the EOA's
94
+ * code slot once an authorization is accepted.
95
+ */
96
+ buildDesignator(delegateAddress: string): Promise<Eip7702Designator>;
97
+ /**
98
+ * Decode an account's `code` (hex with or without `0x` prefix) and
99
+ * extract the delegate address if it is a valid EIP-7702 designator.
100
+ * Returns `{ is_designator: false, delegate_address: null }` for
101
+ * code that is not a 7702 designator.
102
+ */
103
+ parseDesignator(code: string): Promise<Eip7702ParsedDesignator>;
104
+ /**
105
+ * Read static metadata about the EIP-7702 support surface (tx type,
106
+ * magic byte, designator layout, signing scheme).
107
+ */
108
+ protocolInfo(): Promise<Eip7702ProtocolInfo>;
109
+ }
110
+ //# sourceMappingURL=eip7702.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eip7702.d.ts","sourceRoot":"","sources":["../src/eip7702.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAIvC,6CAA6C;AAC7C,MAAM,WAAW,kBAAkB;IACjC;;;OAGG;IACH,YAAY,EAAE,MAAM,CAAC;IACrB;;;;OAIG;IACH,YAAY,EAAE,MAAM,CAAC;IACrB,iDAAiD;IACjD,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,iDAAiD;AACjD,MAAM,WAAW,iBAAiB;IAChC,2CAA2C;IAC3C,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,2BAA2B;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,wCAAwC;IACxC,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,iDAAiD;AACjD,MAAM,WAAW,uBAAuB;IACtC,2DAA2D;IAC3D,aAAa,EAAE,OAAO,CAAC;IACvB;;;OAGG;IACH,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;CACjC;AAED,8CAA8C;AAC9C,MAAM,WAAW,mBAAmB;IAClC,sDAAsD;IACtD,OAAO,EAAE,MAAM,CAAC;IAChB,oDAAoD;IACpD,UAAU,EAAE,MAAM,CAAC;IACnB,wCAAwC;IACxC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,8CAA8C;IAC9C,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iEAAiE;IACjE,cAAc,EAAE,MAAM,CAAC;IACvB,8CAA8C;IAC9C,gBAAgB,EAAE,MAAM,CAAC;IACzB,iDAAiD;IACjD,QAAQ,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,IAAI,EAAE,MAAM,CAAC;CACd;AAID;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qBAAa,aAAa;IACZ,OAAO,CAAC,QAAQ,CAAC,GAAG;gBAAH,GAAG,EAAE,SAAS;IAE3C;;;;OAIG;IACG,WAAW,CACf,OAAO,EAAE,MAAM,EACf,eAAe,EAAE,MAAM,EACvB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,kBAAkB,CAAC;IAU9B;;;;OAIG;IACG,eAAe,CAAC,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAM1E;;;;;OAKG;IACG,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAOrE;;;OAGG;IACG,YAAY,IAAI,OAAO,CAAC,mBAAmB,CAAC;CAMnD"}
@@ -0,0 +1,73 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Eip7702Client = void 0;
4
+ // ── Client ──
5
+ /**
6
+ * EIP-7702 (Set EOA Account Code) helper client.
7
+ *
8
+ * EIP-7702 lets an externally-owned account temporarily delegate its
9
+ * code to a smart-contract address. The delegation is encoded as a
10
+ * 23-byte designator (`0xef0100 || delegate_address`) written into the
11
+ * EOA's code slot, signed by the EOA's secp256k1 key over a domain-
12
+ * separated preimage.
13
+ *
14
+ * This client wraps the **stateless helper RPCs** the node exposes to
15
+ * support 7702 tooling end-to-end:
16
+ * - `tenzro_eip7702SigningHash` — compute the secp256k1 signing hash
17
+ * - `tenzro_eip7702BuildDesignator` — build the 23-byte designator
18
+ * - `tenzro_eip7702ParseDesignator` — decode an account's code
19
+ * - `tenzro_eip7702ProtocolInfo` — static protocol metadata
20
+ *
21
+ * Full EIP-7702 txtype `0x04` decoding inside `eth_sendRawTransaction`
22
+ * is a separate mainnet task. For now, produce the signing hash with
23
+ * `signingHash`, sign client-side, and use `buildDesignator` + a
24
+ * direct state write to install the delegation.
25
+ */
26
+ class Eip7702Client {
27
+ rpc;
28
+ constructor(rpc) {
29
+ this.rpc = rpc;
30
+ }
31
+ /**
32
+ * Compute the secp256k1 signing hash for an EIP-7702 authorization
33
+ * tuple `(chainId, delegateAddress, nonce)`. The returned
34
+ * `signing_hash` is what the EOA private key signs client-side.
35
+ */
36
+ async signingHash(chainId, delegateAddress, nonce) {
37
+ return this.rpc.call('tenzro_eip7702SigningHash', [
38
+ {
39
+ chain_id: chainId,
40
+ delegate_address: delegateAddress,
41
+ nonce,
42
+ },
43
+ ]);
44
+ }
45
+ /**
46
+ * Build the 23-byte EIP-7702 delegation designator
47
+ * (`0xef0100 || delegateAddress`) that gets written into the EOA's
48
+ * code slot once an authorization is accepted.
49
+ */
50
+ async buildDesignator(delegateAddress) {
51
+ return this.rpc.call('tenzro_eip7702BuildDesignator', [
52
+ { delegate_address: delegateAddress },
53
+ ]);
54
+ }
55
+ /**
56
+ * Decode an account's `code` (hex with or without `0x` prefix) and
57
+ * extract the delegate address if it is a valid EIP-7702 designator.
58
+ * Returns `{ is_designator: false, delegate_address: null }` for
59
+ * code that is not a 7702 designator.
60
+ */
61
+ async parseDesignator(code) {
62
+ return this.rpc.call('tenzro_eip7702ParseDesignator', [{ code }]);
63
+ }
64
+ /**
65
+ * Read static metadata about the EIP-7702 support surface (tx type,
66
+ * magic byte, designator layout, signing scheme).
67
+ */
68
+ async protocolInfo() {
69
+ return this.rpc.call('tenzro_eip7702ProtocolInfo', []);
70
+ }
71
+ }
72
+ exports.Eip7702Client = Eip7702Client;
73
+ //# sourceMappingURL=eip7702.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eip7702.js","sourceRoot":"","sources":["../src/eip7702.ts"],"names":[],"mappings":";;;AAmEA,eAAe;AAEf;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAa,aAAa;IACK;IAA7B,YAA6B,GAAc;QAAd,QAAG,GAAH,GAAG,CAAW;IAAG,CAAC;IAE/C;;;;OAIG;IACH,KAAK,CAAC,WAAW,CACf,OAAe,EACf,eAAuB,EACvB,KAAa;QAEb,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAqB,2BAA2B,EAAE;YACpE;gBACE,QAAQ,EAAE,OAAO;gBACjB,gBAAgB,EAAE,eAAe;gBACjC,KAAK;aACN;SACF,CAAC,CAAC;IACL,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,eAAe,CAAC,eAAuB;QAC3C,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAoB,+BAA+B,EAAE;YACvE,EAAE,gBAAgB,EAAE,eAAe,EAAE;SACtC,CAAC,CAAC;IACL,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,eAAe,CAAC,IAAY;QAChC,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAClB,+BAA+B,EAC/B,CAAC,EAAE,IAAI,EAAE,CAAC,CACX,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,YAAY;QAChB,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAClB,4BAA4B,EAC5B,EAAE,CACH,CAAC;IACJ,CAAC;CACF;AAxDD,sCAwDC"}
@@ -0,0 +1,79 @@
1
+ import { RpcClient } from "./rpc";
2
+ /**
3
+ * A single ERC-7683 `Output` — chain-discriminated 32-byte recipient +
4
+ * uint256 amount.
5
+ */
6
+ export interface Erc7683Output {
7
+ /** Token address (hex, chain-native — 20-byte EVM left-padded to 32, or 32-byte SVM mint). */
8
+ token: string;
9
+ /** uint256 amount in token's smallest unit, as 32-byte big-endian hex. */
10
+ amount: string;
11
+ /** 32-byte recipient on the destination chain (hex). */
12
+ recipient: string;
13
+ /** CAIP-2 numeric chain id of the destination chain. */
14
+ chain_id: number;
15
+ }
16
+ /** Result of `tenzro_list7683Orders`. */
17
+ export interface Erc7683OrderList {
18
+ orders: unknown[];
19
+ count: number;
20
+ }
21
+ /**
22
+ * Client for ERC-7683 cross-chain intent settler (Spec 4).
23
+ *
24
+ * Wraps the `tenzro_get7683Order` / `tenzro_list7683Orders` read RPCs on the
25
+ * origin side and the `tenzro_recordFill7683` / `tenzro_getFill7683` /
26
+ * `tenzro_listFills7683` RPCs on the destination side. The Tenzro ERC-7683
27
+ * envelope is `Tenzro7683Order` persisted in `CF_SETTLEMENTS` under the
28
+ * `7683_origin:` keyspace; fill records live under `7683_dest:`.
29
+ *
30
+ * Order state machine: `Open → AwaitingProof → Settled / Refunded /
31
+ * ForceRefundEligible`.
32
+ */
33
+ export declare class Erc7683Client {
34
+ private rpc;
35
+ constructor(rpc: RpcClient);
36
+ /**
37
+ * Fetch a single persisted `Tenzro7683Order` by 32-byte `order_id`
38
+ * (hex, with or without `0x` prefix).
39
+ * @param orderId - 32-byte order id (hex)
40
+ * @returns JSON envelope produced by the node's `tenzro_7683_order_to_json` projection
41
+ */
42
+ getOrder(orderId: string): Promise<any>;
43
+ /**
44
+ * Paginated scan over the `7683_origin:` keyspace. All filters are
45
+ * optional; omit to skip a filter.
46
+ * @param opts.state - one of `open`, `awaiting_proof`, `settled`, `refunded`, `force_refund_eligible`
47
+ * @param opts.destChain - CAIP-2 numeric destination chain id
48
+ * @param opts.limit - cap on returned envelopes (default 50)
49
+ */
50
+ listOrders(opts?: {
51
+ state?: string;
52
+ destChain?: number;
53
+ limit?: number;
54
+ }): Promise<Erc7683OrderList>;
55
+ /**
56
+ * Destination-side write: commit a `FillRecord` for an order that has
57
+ * been filled on the destination chain. Idempotency-guarded — the
58
+ * second call for the same `(order_id, origin_chain_id)` pair is
59
+ * rejected by the node.
60
+ *
61
+ * @param args.proofRoute - one of `layerzero`, `wormhole`, `debridge`, `hyperlane`
62
+ */
63
+ recordFill(args: {
64
+ orderId: string;
65
+ originChainId: number;
66
+ originSettler: string;
67
+ filler: string;
68
+ recipient: string;
69
+ fillTxHash: string;
70
+ filledAtMs: number;
71
+ proofRoute: string;
72
+ outputs: Erc7683Output[];
73
+ }): Promise<any>;
74
+ /** Fetch a single persisted `FillRecord` by `(order_id, origin_chain_id)`. */
75
+ getFill(orderId: string, originChainId: number): Promise<any>;
76
+ /** List every persisted `FillRecord` in the `7683_dest:` keyspace. */
77
+ listFills(): Promise<any>;
78
+ }
79
+ //# sourceMappingURL=erc7683.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"erc7683.d.ts","sourceRoot":"","sources":["../src/erc7683.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAElC;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B,8FAA8F;IAC9F,KAAK,EAAE,MAAM,CAAC;IACd,0EAA0E;IAC1E,MAAM,EAAE,MAAM,CAAC;IACf,wDAAwD;IACxD,SAAS,EAAE,MAAM,CAAC;IAClB,wDAAwD;IACxD,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,yCAAyC;AACzC,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,OAAO,EAAE,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;;;;;GAWG;AACH,qBAAa,aAAa;IACZ,OAAO,CAAC,GAAG;gBAAH,GAAG,EAAE,SAAS;IAElC;;;;;OAKG;IACG,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAI7C;;;;;;OAMG;IACG,UAAU,CAAC,IAAI,GAAE;QACrB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,KAAK,CAAC,EAAE,MAAM,CAAC;KACX,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAQlC;;;;;;;OAOG;IACG,UAAU,CAAC,IAAI,EAAE;QACrB,OAAO,EAAE,MAAM,CAAC;QAChB,aAAa,EAAE,MAAM,CAAC;QACtB,aAAa,EAAE,MAAM,CAAC;QACtB,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,EAAE,MAAM,CAAC;QACnB,OAAO,EAAE,aAAa,EAAE,CAAC;KAC1B,GAAG,OAAO,CAAC,GAAG,CAAC;IAgBhB,8EAA8E;IACxE,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAMnE,sEAAsE;IAChE,SAAS,IAAI,OAAO,CAAC,GAAG,CAAC;CAGhC"}
@@ -0,0 +1,82 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Erc7683Client = void 0;
4
+ /**
5
+ * Client for ERC-7683 cross-chain intent settler (Spec 4).
6
+ *
7
+ * Wraps the `tenzro_get7683Order` / `tenzro_list7683Orders` read RPCs on the
8
+ * origin side and the `tenzro_recordFill7683` / `tenzro_getFill7683` /
9
+ * `tenzro_listFills7683` RPCs on the destination side. The Tenzro ERC-7683
10
+ * envelope is `Tenzro7683Order` persisted in `CF_SETTLEMENTS` under the
11
+ * `7683_origin:` keyspace; fill records live under `7683_dest:`.
12
+ *
13
+ * Order state machine: `Open → AwaitingProof → Settled / Refunded /
14
+ * ForceRefundEligible`.
15
+ */
16
+ class Erc7683Client {
17
+ rpc;
18
+ constructor(rpc) {
19
+ this.rpc = rpc;
20
+ }
21
+ /**
22
+ * Fetch a single persisted `Tenzro7683Order` by 32-byte `order_id`
23
+ * (hex, with or without `0x` prefix).
24
+ * @param orderId - 32-byte order id (hex)
25
+ * @returns JSON envelope produced by the node's `tenzro_7683_order_to_json` projection
26
+ */
27
+ async getOrder(orderId) {
28
+ return this.rpc.call("tenzro_get7683Order", [{ order_id: orderId }]);
29
+ }
30
+ /**
31
+ * Paginated scan over the `7683_origin:` keyspace. All filters are
32
+ * optional; omit to skip a filter.
33
+ * @param opts.state - one of `open`, `awaiting_proof`, `settled`, `refunded`, `force_refund_eligible`
34
+ * @param opts.destChain - CAIP-2 numeric destination chain id
35
+ * @param opts.limit - cap on returned envelopes (default 50)
36
+ */
37
+ async listOrders(opts = {}) {
38
+ const params = {};
39
+ if (opts.state !== undefined)
40
+ params.state = opts.state;
41
+ if (opts.destChain !== undefined)
42
+ params.dest_chain = opts.destChain;
43
+ if (opts.limit !== undefined)
44
+ params.limit = opts.limit;
45
+ return this.rpc.call("tenzro_list7683Orders", [params]);
46
+ }
47
+ /**
48
+ * Destination-side write: commit a `FillRecord` for an order that has
49
+ * been filled on the destination chain. Idempotency-guarded — the
50
+ * second call for the same `(order_id, origin_chain_id)` pair is
51
+ * rejected by the node.
52
+ *
53
+ * @param args.proofRoute - one of `layerzero`, `wormhole`, `debridge`, `hyperlane`
54
+ */
55
+ async recordFill(args) {
56
+ return this.rpc.call("tenzro_recordFill7683", [
57
+ {
58
+ order_id: args.orderId,
59
+ origin_chain_id: args.originChainId,
60
+ origin_settler: args.originSettler,
61
+ filler: args.filler,
62
+ recipient: args.recipient,
63
+ fill_tx_hash: args.fillTxHash,
64
+ filled_at_ms: args.filledAtMs,
65
+ proof_route: args.proofRoute,
66
+ outputs: args.outputs,
67
+ },
68
+ ]);
69
+ }
70
+ /** Fetch a single persisted `FillRecord` by `(order_id, origin_chain_id)`. */
71
+ async getFill(orderId, originChainId) {
72
+ return this.rpc.call("tenzro_getFill7683", [
73
+ { order_id: orderId, origin_chain_id: originChainId },
74
+ ]);
75
+ }
76
+ /** List every persisted `FillRecord` in the `7683_dest:` keyspace. */
77
+ async listFills() {
78
+ return this.rpc.call("tenzro_listFills7683", [{}]);
79
+ }
80
+ }
81
+ exports.Erc7683Client = Erc7683Client;
82
+ //# sourceMappingURL=erc7683.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"erc7683.js","sourceRoot":"","sources":["../src/erc7683.ts"],"names":[],"mappings":";;;AAuBA;;;;;;;;;;;GAWG;AACH,MAAa,aAAa;IACJ;IAApB,YAAoB,GAAc;QAAd,QAAG,GAAH,GAAG,CAAW;IAAG,CAAC;IAEtC;;;;;OAKG;IACH,KAAK,CAAC,QAAQ,CAAC,OAAe;QAC5B,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;IACvE,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,UAAU,CAAC,OAIb,EAAE;QACJ,MAAM,MAAM,GAA4B,EAAE,CAAC;QAC3C,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS;YAAE,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACxD,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS;YAAE,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC;QACrE,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS;YAAE,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACxD,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAmB,uBAAuB,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAC5E,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,UAAU,CAAC,IAUhB;QACC,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,uBAAuB,EAAE;YAC5C;gBACE,QAAQ,EAAE,IAAI,CAAC,OAAO;gBACtB,eAAe,EAAE,IAAI,CAAC,aAAa;gBACnC,cAAc,EAAE,IAAI,CAAC,aAAa;gBAClC,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,YAAY,EAAE,IAAI,CAAC,UAAU;gBAC7B,YAAY,EAAE,IAAI,CAAC,UAAU;gBAC7B,WAAW,EAAE,IAAI,CAAC,UAAU;gBAC5B,OAAO,EAAE,IAAI,CAAC,OAAO;aACtB;SACF,CAAC,CAAC;IACL,CAAC;IAED,8EAA8E;IAC9E,KAAK,CAAC,OAAO,CAAC,OAAe,EAAE,aAAqB;QAClD,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,oBAAoB,EAAE;YACzC,EAAE,QAAQ,EAAE,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE;SACtD,CAAC,CAAC;IACL,CAAC;IAED,sEAAsE;IACtE,KAAK,CAAC,SAAS;QACb,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,sBAAsB,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACrD,CAAC;CACF;AA7ED,sCA6EC"}
@@ -0,0 +1,97 @@
1
+ import type { RpcClient } from './rpc';
2
+ /**
3
+ * Deterministic agent id derived from a Tenzro DID via
4
+ * `keccak256(utf8(did))`.
5
+ */
6
+ export interface Erc8004AgentId {
7
+ /** DID echoed back. */
8
+ did: string;
9
+ /** 32-byte agent id as 0x-prefixed hex. */
10
+ agent_id: string;
11
+ }
12
+ /**
13
+ * Hex-encoded ABI calldata ready for `eth_sendRawTransaction` / `eth_call`.
14
+ */
15
+ export interface Erc8004Calldata {
16
+ /** Full hex-encoded calldata (selector + abi-encoded args). */
17
+ calldata: string;
18
+ /** Echoed agent id from `encodeRegister`; empty for other encoders. */
19
+ agent_id?: string;
20
+ }
21
+ /**
22
+ * Decoded agent record returned by `IdentityRegistry.getAgent()`.
23
+ */
24
+ export interface Erc8004Agent {
25
+ /** Agent owner / controller address. */
26
+ agent_address: string;
27
+ /** Off-chain metadata URI (e.g. IPFS, HTTPS). */
28
+ metadata_uri: string;
29
+ }
30
+ /**
31
+ * Decoded `bytes` value returned by `IdentityRegistry.getMetadata()`.
32
+ */
33
+ export interface Erc8004Metadata {
34
+ /** Hex-encoded value (`0x` prefix), or empty hex when unset. */
35
+ metadata_value: string;
36
+ }
37
+ /**
38
+ * Client for the ERC-8004 Trustless Agents Registry family
39
+ * (IdentityRegistry, ReputationRegistry, ValidationRegistry).
40
+ *
41
+ * Covers the canonical v0.6+ surface — base register/feedback/validation
42
+ * plus `setAgentURI` / `setAgentWallet` / `setMetadata` / `getMetadata`
43
+ * / `getAgentURI` / `getAgentWallet` / `revokeFeedback` /
44
+ * `appendResponse` / `isFeedbackRevoked` / `getFeedbackResponses` /
45
+ * `getFeedback` / `getFeedbackCount` / `getValidation`.
46
+ *
47
+ * All `encode*` methods return hex calldata that callers can sign and
48
+ * broadcast through any EVM wallet. `decode*` helpers round-trip
49
+ * return data from `eth_call` into typed structs.
50
+ */
51
+ export declare class Erc8004Client {
52
+ private readonly rpc;
53
+ constructor(rpc: RpcClient);
54
+ /** Derive a canonical ERC-8004 `agentId = keccak256(utf8(did))`. */
55
+ deriveAgentId(did: string): Promise<Erc8004AgentId>;
56
+ /** ABI-encode `IdentityRegistry.registerAgent(bytes32 agentId, address agentAddress, string metadataURI)`. */
57
+ encodeRegister(did: string, agentAddress: string, metadataUri: string): Promise<Erc8004Calldata>;
58
+ /** ABI-encode `IdentityRegistry.getAgent(bytes32 agentId)`. */
59
+ encodeGetAgent(agentId: string): Promise<Erc8004Calldata>;
60
+ /** Decode `(address, string)` returndata from `getAgent()`. */
61
+ decodeGetAgent(returnData: string): Promise<Erc8004Agent>;
62
+ /** ABI-encode `IdentityRegistry.setAgentURI(uint256 agentId, string metadataURI)`. */
63
+ encodeSetAgentURI(agentId: string, metadataUri: string): Promise<Erc8004Calldata>;
64
+ /** ABI-encode `IdentityRegistry.setAgentWallet(uint256 agentId, address newWallet, uint256 deadline, bytes signature)`. */
65
+ encodeSetAgentWallet(agentId: string, newWallet: string, deadline: number, signature: string): Promise<Erc8004Calldata>;
66
+ /** ABI-encode `IdentityRegistry.setMetadata(uint256 agentId, string metadataKey, bytes metadataValue)`. */
67
+ encodeSetMetadata(agentId: string, metadataKey: string, metadataValue: string): Promise<Erc8004Calldata>;
68
+ /** ABI-encode `IdentityRegistry.getMetadata(uint256 agentId, string metadataKey)`. */
69
+ encodeGetMetadata(agentId: string, metadataKey: string): Promise<Erc8004Calldata>;
70
+ /** Decode `bytes` returndata from `getMetadata()`. */
71
+ decodeGetMetadata(returnData: string): Promise<Erc8004Metadata>;
72
+ /** ABI-encode `IdentityRegistry.getAgentURI(uint256 agentId)`. */
73
+ encodeGetAgentURI(agentId: string): Promise<Erc8004Calldata>;
74
+ /** ABI-encode `IdentityRegistry.getAgentWallet(uint256 agentId)`. */
75
+ encodeGetAgentWallet(agentId: string): Promise<Erc8004Calldata>;
76
+ /** ABI-encode `ReputationRegistry.submitFeedback(bytes32 subjectAgentId, int8 rating, string contextURI)`. */
77
+ encodeFeedback(subjectAgentId: string, rating: number, contextUri: string): Promise<Erc8004Calldata>;
78
+ /** ABI-encode `ReputationRegistry.getFeedback(bytes32 subject, uint256 index)`. */
79
+ encodeGetFeedback(subjectAgentId: string, index: number): Promise<Erc8004Calldata>;
80
+ /** ABI-encode `ReputationRegistry.getFeedbackCount(bytes32 subject)`. */
81
+ encodeGetFeedbackCount(subjectAgentId: string): Promise<Erc8004Calldata>;
82
+ /** ABI-encode `ReputationRegistry.revokeFeedback(uint256 agentId, bytes32 feedbackId)` (v0.6+). */
83
+ encodeRevokeFeedback(agentId: string, feedbackId: string): Promise<Erc8004Calldata>;
84
+ /** ABI-encode `ReputationRegistry.appendResponse(uint256 agentId, bytes32 feedbackId, string responseURI)` (v0.6+). */
85
+ encodeAppendResponse(agentId: string, feedbackId: string, responseUri: string): Promise<Erc8004Calldata>;
86
+ /** ABI-encode `ReputationRegistry.isFeedbackRevoked(uint256 agentId, bytes32 feedbackId)` (v0.6+). */
87
+ encodeIsFeedbackRevoked(agentId: string, feedbackId: string): Promise<Erc8004Calldata>;
88
+ /** ABI-encode `ReputationRegistry.getFeedbackResponses(uint256 agentId, bytes32 feedbackId)` (v0.6+). */
89
+ encodeGetFeedbackResponses(agentId: string, feedbackId: string): Promise<Erc8004Calldata>;
90
+ /** ABI-encode `ValidationRegistry.validationRequest(address validatorAddress, uint256 agentId, string requestURI, bytes32 requestHash)`. */
91
+ encodeValidationRequest(validatorAddress: string, agentId: string, requestUri: string, requestHash: string): Promise<Erc8004Calldata>;
92
+ /** ABI-encode `ValidationRegistry.validationResponse(bytes32 requestHash, uint8 response, string responseURI, bytes32 responseHash, string tag)`. `response` is a 0-100 quality score. */
93
+ encodeValidationResponse(requestHash: string, response: number, responseUri: string, responseHash: string, tag: string): Promise<Erc8004Calldata>;
94
+ /** ABI-encode `ValidationRegistry.getValidation(bytes32 requestHash)`. */
95
+ encodeGetValidation(requestHash: string): Promise<Erc8004Calldata>;
96
+ }
97
+ //# sourceMappingURL=erc8004.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"erc8004.d.ts","sourceRoot":"","sources":["../src/erc8004.ts"],"names":[],"mappings":"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"}