@reclaimprotocol/attestor-core 3.0.1

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 (204) hide show
  1. package/README.md +39 -0
  2. package/lib/avs/abis/avsDirectoryABI.d.ts +60 -0
  3. package/lib/avs/abis/avsDirectoryABI.js +344 -0
  4. package/lib/avs/abis/delegationABI.d.ts +126 -0
  5. package/lib/avs/abis/delegationABI.js +5 -0
  6. package/lib/avs/abis/registryABI.d.ts +136 -0
  7. package/lib/avs/abis/registryABI.js +729 -0
  8. package/lib/avs/client/create-claim-on-avs.d.ts +10 -0
  9. package/lib/avs/client/create-claim-on-avs.js +147 -0
  10. package/lib/avs/config.d.ts +7 -0
  11. package/lib/avs/config.js +24 -0
  12. package/lib/avs/contracts/ReclaimServiceManager.d.ts +697 -0
  13. package/lib/avs/contracts/ReclaimServiceManager.js +3 -0
  14. package/lib/avs/contracts/common.d.ts +21 -0
  15. package/lib/avs/contracts/common.js +3 -0
  16. package/lib/avs/contracts/factories/ReclaimServiceManager__factory.d.ts +888 -0
  17. package/lib/avs/contracts/factories/ReclaimServiceManager__factory.js +1174 -0
  18. package/lib/avs/contracts/factories/index.d.ts +1 -0
  19. package/lib/avs/contracts/factories/index.js +9 -0
  20. package/lib/avs/contracts/index.d.ts +3 -0
  21. package/lib/avs/contracts/index.js +30 -0
  22. package/lib/avs/tests/test.operator.d.ts +11 -0
  23. package/lib/avs/tests/test.operator.js +313 -0
  24. package/lib/avs/tests/utils.d.ts +2 -0
  25. package/lib/avs/tests/utils.js +50 -0
  26. package/lib/avs/types/index.d.ts +55 -0
  27. package/lib/avs/types/index.js +3 -0
  28. package/lib/avs/utils/contracts.d.ts +21 -0
  29. package/lib/avs/utils/contracts.js +38 -0
  30. package/lib/avs/utils/register.d.ts +27 -0
  31. package/lib/avs/utils/register.js +76 -0
  32. package/lib/avs/utils/tasks.d.ts +22 -0
  33. package/lib/avs/utils/tasks.js +45 -0
  34. package/lib/client/create-claim.d.ts +5 -0
  35. package/lib/client/create-claim.js +357 -0
  36. package/lib/client/index.d.ts +3 -0
  37. package/lib/client/index.js +20 -0
  38. package/lib/client/tunnels/make-rpc-tcp-tunnel.d.ts +16 -0
  39. package/lib/client/tunnels/make-rpc-tcp-tunnel.js +60 -0
  40. package/lib/client/tunnels/make-rpc-tls-tunnel.d.ts +25 -0
  41. package/lib/client/tunnels/make-rpc-tls-tunnel.js +135 -0
  42. package/lib/client/utils/attestor-pool.d.ts +6 -0
  43. package/lib/client/utils/attestor-pool.js +28 -0
  44. package/lib/client/utils/client-socket.d.ts +9 -0
  45. package/lib/client/utils/client-socket.js +77 -0
  46. package/lib/client/utils/message-handler.d.ts +4 -0
  47. package/lib/client/utils/message-handler.js +93 -0
  48. package/lib/config/index.d.ts +23 -0
  49. package/lib/config/index.js +35 -0
  50. package/lib/index.d.ts +9 -0
  51. package/lib/index.js +39 -0
  52. package/lib/proto/api.d.ts +414 -0
  53. package/lib/proto/api.js +2756 -0
  54. package/lib/providers/http/index.d.ts +3 -0
  55. package/lib/providers/http/index.js +472 -0
  56. package/lib/providers/http/utils.d.ts +44 -0
  57. package/lib/providers/http/utils.js +302 -0
  58. package/lib/providers/index.d.ts +4 -0
  59. package/lib/providers/index.js +11 -0
  60. package/lib/scripts/check-avs-registration.d.ts +1 -0
  61. package/lib/scripts/check-avs-registration.js +28 -0
  62. package/lib/scripts/generate-provider-types.d.ts +5 -0
  63. package/lib/scripts/generate-provider-types.js +82 -0
  64. package/lib/scripts/generate-receipt.d.ts +9 -0
  65. package/lib/scripts/generate-receipt.js +93 -0
  66. package/lib/scripts/register-avs-operator.d.ts +1 -0
  67. package/lib/scripts/register-avs-operator.js +6 -0
  68. package/lib/scripts/start-server.d.ts +1 -0
  69. package/lib/scripts/start-server.js +6 -0
  70. package/lib/scripts/verify-root-ca.d.ts +1 -0
  71. package/lib/scripts/verify-root-ca.js +51 -0
  72. package/lib/server/create-server.d.ts +7 -0
  73. package/lib/server/create-server.js +85 -0
  74. package/lib/server/handlers/claimTunnel.d.ts +2 -0
  75. package/lib/server/handlers/claimTunnel.js +55 -0
  76. package/lib/server/handlers/completeClaimOnChain.d.ts +2 -0
  77. package/lib/server/handlers/completeClaimOnChain.js +28 -0
  78. package/lib/server/handlers/createClaimOnChain.d.ts +2 -0
  79. package/lib/server/handlers/createClaimOnChain.js +31 -0
  80. package/lib/server/handlers/createTunnel.d.ts +2 -0
  81. package/lib/server/handlers/createTunnel.js +65 -0
  82. package/lib/server/handlers/disconnectTunnel.d.ts +2 -0
  83. package/lib/server/handlers/disconnectTunnel.js +10 -0
  84. package/lib/server/handlers/index.d.ts +4 -0
  85. package/lib/server/handlers/index.js +18 -0
  86. package/lib/server/handlers/init.d.ts +2 -0
  87. package/lib/server/handlers/init.js +21 -0
  88. package/lib/server/index.d.ts +4 -0
  89. package/lib/server/index.js +21 -0
  90. package/lib/server/socket.d.ts +11 -0
  91. package/lib/server/socket.js +95 -0
  92. package/lib/server/tunnels/make-tcp-tunnel.d.ts +20 -0
  93. package/lib/server/tunnels/make-tcp-tunnel.js +182 -0
  94. package/lib/server/utils/apm.d.ts +11 -0
  95. package/lib/server/utils/apm.js +39 -0
  96. package/lib/server/utils/assert-valid-claim-request.d.ts +29 -0
  97. package/lib/server/utils/assert-valid-claim-request.js +189 -0
  98. package/lib/server/utils/config-env.d.ts +1 -0
  99. package/lib/server/utils/config-env.js +7 -0
  100. package/lib/server/utils/generics.d.ts +22 -0
  101. package/lib/server/utils/generics.js +59 -0
  102. package/lib/server/utils/iso.d.ts +1 -0
  103. package/lib/server/utils/iso.js +260 -0
  104. package/lib/server/utils/keep-alive.d.ts +7 -0
  105. package/lib/server/utils/keep-alive.js +42 -0
  106. package/lib/server/utils/process-handshake.d.ts +13 -0
  107. package/lib/server/utils/process-handshake.js +179 -0
  108. package/lib/server/utils/verify-server-certificates.d.ts +7 -0
  109. package/lib/server/utils/verify-server-certificates.js +102 -0
  110. package/lib/tests/describe-with-server.d.ts +21 -0
  111. package/lib/tests/describe-with-server.js +67 -0
  112. package/lib/tests/mock-provider-server.d.ts +13 -0
  113. package/lib/tests/mock-provider-server.js +65 -0
  114. package/lib/tests/mocks.d.ts +4 -0
  115. package/lib/tests/mocks.js +23 -0
  116. package/lib/tests/test.claim-creation.d.ts +1 -0
  117. package/lib/tests/test.claim-creation.js +187 -0
  118. package/lib/tests/test.http-parser.d.ts +1 -0
  119. package/lib/tests/test.http-parser.js +118 -0
  120. package/lib/tests/test.http-provider-utils.d.ts +1 -0
  121. package/lib/tests/test.http-provider-utils.js +1932 -0
  122. package/lib/tests/test.http-provider.d.ts +1 -0
  123. package/lib/tests/test.http-provider.js +43 -0
  124. package/lib/tests/test.rpc-communication.d.ts +1 -0
  125. package/lib/tests/test.rpc-communication.js +64 -0
  126. package/lib/tests/test.rpc-tunnel.d.ts +1 -0
  127. package/lib/tests/test.rpc-tunnel.js +168 -0
  128. package/lib/tests/test.signatures.d.ts +1 -0
  129. package/lib/tests/test.signatures.js +24 -0
  130. package/lib/tests/test.tcp-tunnel.d.ts +1 -0
  131. package/lib/tests/test.tcp-tunnel.js +64 -0
  132. package/lib/tests/test.zk.d.ts +1 -0
  133. package/lib/tests/test.zk.js +169 -0
  134. package/lib/tests/utils.d.ts +12 -0
  135. package/lib/tests/utils.js +49 -0
  136. package/lib/types/claims.d.ts +64 -0
  137. package/lib/types/claims.js +3 -0
  138. package/lib/types/client.d.ts +136 -0
  139. package/lib/types/client.js +3 -0
  140. package/lib/types/general.d.ts +39 -0
  141. package/lib/types/general.js +3 -0
  142. package/lib/types/handlers.d.ts +10 -0
  143. package/lib/types/handlers.js +3 -0
  144. package/lib/types/index.d.ts +9 -0
  145. package/lib/types/index.js +26 -0
  146. package/lib/types/providers.d.ts +135 -0
  147. package/lib/types/providers.gen.d.ts +414 -0
  148. package/lib/types/providers.gen.js +14 -0
  149. package/lib/types/providers.js +3 -0
  150. package/lib/types/rpc.d.ts +35 -0
  151. package/lib/types/rpc.js +3 -0
  152. package/lib/types/signatures.d.ts +28 -0
  153. package/lib/types/signatures.js +3 -0
  154. package/lib/types/tunnel.d.ts +18 -0
  155. package/lib/types/tunnel.js +3 -0
  156. package/lib/types/zk.d.ts +16 -0
  157. package/lib/types/zk.js +3 -0
  158. package/lib/utils/benchmark.d.ts +1 -0
  159. package/lib/utils/benchmark.js +70 -0
  160. package/lib/utils/claims.d.ts +33 -0
  161. package/lib/utils/claims.js +112 -0
  162. package/lib/utils/env.d.ts +3 -0
  163. package/lib/utils/env.js +20 -0
  164. package/lib/utils/error.d.ts +27 -0
  165. package/lib/utils/error.js +43 -0
  166. package/lib/utils/generics.d.ts +112 -0
  167. package/lib/utils/generics.js +348 -0
  168. package/lib/utils/http-parser.d.ts +55 -0
  169. package/lib/utils/http-parser.js +249 -0
  170. package/lib/utils/index.d.ts +10 -0
  171. package/lib/utils/index.js +27 -0
  172. package/lib/utils/logger.d.ts +13 -0
  173. package/lib/utils/logger.js +100 -0
  174. package/lib/utils/prepare-packets.d.ts +16 -0
  175. package/lib/utils/prepare-packets.js +61 -0
  176. package/lib/utils/redactions.d.ts +41 -0
  177. package/lib/utils/redactions.js +111 -0
  178. package/lib/utils/retries.d.ts +12 -0
  179. package/lib/utils/retries.js +28 -0
  180. package/lib/utils/signatures/eth.d.ts +2 -0
  181. package/lib/utils/signatures/eth.js +33 -0
  182. package/lib/utils/signatures/index.d.ts +5 -0
  183. package/lib/utils/signatures/index.js +11 -0
  184. package/lib/utils/socket-base.d.ts +21 -0
  185. package/lib/utils/socket-base.js +89 -0
  186. package/lib/utils/tls.d.ts +2 -0
  187. package/lib/utils/tls.js +32 -0
  188. package/lib/utils/validation.d.ts +2 -0
  189. package/lib/utils/validation.js +46 -0
  190. package/lib/utils/ws.d.ts +12 -0
  191. package/lib/utils/ws.js +21 -0
  192. package/lib/utils/zk.d.ts +50 -0
  193. package/lib/utils/zk.js +282 -0
  194. package/lib/window-rpc/index.d.ts +3 -0
  195. package/lib/window-rpc/index.js +20 -0
  196. package/lib/window-rpc/setup-window-rpc.d.ts +5 -0
  197. package/lib/window-rpc/setup-window-rpc.js +239 -0
  198. package/lib/window-rpc/types.d.ts +184 -0
  199. package/lib/window-rpc/types.js +3 -0
  200. package/lib/window-rpc/utils.d.ts +13 -0
  201. package/lib/window-rpc/utils.js +76 -0
  202. package/lib/window-rpc/window-rpc-zk.d.ts +11 -0
  203. package/lib/window-rpc/window-rpc-zk.js +72 -0
  204. package/package.json +117 -0
@@ -0,0 +1,25 @@
1
+ import { makeTLSClient, TLSConnectionOptions } from '@reclaimprotocol/tls';
2
+ import { CreateTunnelRequest, RPCMessage } from 'src/proto/api';
3
+ import { CompleteTLSPacket, IAttestorClient, Logger, MakeTunnelFn, Transcript } from 'src/types';
4
+ type ExtraTLSOptions = {
5
+ request: Partial<CreateTunnelRequest>;
6
+ logger: Logger;
7
+ /**
8
+ * Either create a client with the given initMessages,
9
+ * or simply send the messages to the server via an existing
10
+ * client
11
+ *
12
+ * @returns the client that was used to send the messages
13
+ */
14
+ connect(initMessages: Partial<RPCMessage>[]): IAttestorClient;
15
+ tlsOpts?: TLSConnectionOptions;
16
+ };
17
+ type TLSTunnelProperties = {
18
+ transcript: Transcript<CompleteTLSPacket>;
19
+ tls: ReturnType<typeof makeTLSClient>;
20
+ };
21
+ /**
22
+ * Makes a TLS tunnel that connects to the server via RPC protocol
23
+ */
24
+ export declare const makeRpcTlsTunnel: MakeTunnelFn<ExtraTLSOptions, TLSTunnelProperties>;
25
+ export {};
@@ -0,0 +1,135 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.makeRpcTlsTunnel = void 0;
4
+ const tls_1 = require("@reclaimprotocol/tls");
5
+ const make_rpc_tcp_tunnel_1 = require("src/client/tunnels/make-rpc-tcp-tunnel");
6
+ const config_1 = require("src/config");
7
+ const utils_1 = require("src/utils");
8
+ /**
9
+ * Makes a TLS tunnel that connects to the server via RPC protocol
10
+ */
11
+ const makeRpcTlsTunnel = async ({ onMessage, onClose, tlsOpts, request, connect, logger }) => {
12
+ const transcript = [];
13
+ const tunnelId = request.id || (0, utils_1.generateTunnelId)();
14
+ let tunnel;
15
+ let client;
16
+ let handshakeResolve;
17
+ let handshakeReject;
18
+ const waitForHandshake = new Promise((resolve, reject) => {
19
+ handshakeResolve = resolve;
20
+ handshakeReject = reject;
21
+ });
22
+ const tls = (0, tls_1.makeTLSClient)({
23
+ host: request.host,
24
+ ...tlsOpts,
25
+ logger,
26
+ onHandshake() {
27
+ handshakeResolve === null || handshakeResolve === void 0 ? void 0 : handshakeResolve();
28
+ },
29
+ onApplicationData(plaintext) {
30
+ return onMessage === null || onMessage === void 0 ? void 0 : onMessage(plaintext);
31
+ },
32
+ onTlsEnd: onConnectionClose,
33
+ async write(packet, ctx) {
34
+ const message = (0, tls_1.concatenateUint8Arrays)([
35
+ packet.header,
36
+ packet.content
37
+ ]);
38
+ transcript.push({
39
+ sender: 'client',
40
+ message: { ...ctx, data: message }
41
+ });
42
+ if (!tunnel) {
43
+ // sends the packet as the initial message
44
+ // to the plaintext tunnel. Prevents another
45
+ // round trip to the server as we send the packet
46
+ // in the same message as the tunnel creation.
47
+ const createTunnelReqId = (0, utils_1.generateRpcMessageId)();
48
+ client = connect([
49
+ {
50
+ id: createTunnelReqId,
51
+ createTunnelRequest: {
52
+ host: request.host || '',
53
+ port: request.port || config_1.DEFAULT_HTTPS_PORT,
54
+ geoLocation: request.geoLocation || '',
55
+ id: tunnelId
56
+ },
57
+ },
58
+ { tunnelMessage: { tunnelId, message } }
59
+ ]);
60
+ try {
61
+ await makeTunnel();
62
+ // wait for tunnel to be successfully created
63
+ await client.waitForResponse(createTunnelReqId);
64
+ }
65
+ catch (err) {
66
+ onConnectionClose(err);
67
+ }
68
+ return;
69
+ }
70
+ return tunnel.write(message);
71
+ },
72
+ onRead(packet, ctx) {
73
+ transcript.push({
74
+ sender: 'server',
75
+ message: {
76
+ ...ctx,
77
+ data: (0, tls_1.concatenateUint8Arrays)([
78
+ packet.header,
79
+ // the TLS package sends us the decrypted
80
+ // content, so we need to get the orginal
81
+ // ciphertext received from the server
82
+ // as that's part of the true transcript.
83
+ ctx.type === 'ciphertext'
84
+ ? ctx.ciphertext
85
+ : packet.content
86
+ ])
87
+ }
88
+ });
89
+ },
90
+ });
91
+ await tls.startHandshake();
92
+ // wait for handshake completion
93
+ await waitForHandshake;
94
+ handshakeResolve = handshakeReject = undefined;
95
+ return {
96
+ transcript,
97
+ tls,
98
+ write(data) {
99
+ return tls.write(data);
100
+ },
101
+ async close(err) {
102
+ onConnectionClose(err);
103
+ try {
104
+ await tunnel.close(err);
105
+ }
106
+ catch (err) {
107
+ logger === null || logger === void 0 ? void 0 : logger.error({ err }, 'err in close tunnel');
108
+ }
109
+ },
110
+ };
111
+ function onConnectionClose(err) {
112
+ onClose === null || onClose === void 0 ? void 0 : onClose(err);
113
+ // once the TLS connection is closed, we no longer
114
+ // want to send `onClose` events back to the caller
115
+ // of this function.
116
+ onClose = undefined;
117
+ handshakeReject === null || handshakeReject === void 0 ? void 0 : handshakeReject(err);
118
+ }
119
+ async function makeTunnel() {
120
+ tunnel = await (0, make_rpc_tcp_tunnel_1.makeRpcTcpTunnel)({
121
+ tunnelId,
122
+ client: client,
123
+ onMessage(data) {
124
+ tls.handleReceivedBytes(data);
125
+ },
126
+ onClose(err) {
127
+ tls.end(err);
128
+ },
129
+ });
130
+ logger === null || logger === void 0 ? void 0 : logger.debug('plaintext tunnel created');
131
+ return tunnel;
132
+ }
133
+ };
134
+ exports.makeRpcTlsTunnel = makeRpcTlsTunnel;
135
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFrZS1ycGMtdGxzLXR1bm5lbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jbGllbnQvdHVubmVscy9tYWtlLXJwYy10bHMtdHVubmVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDhDQUFrRztBQUNsRyxnRkFBeUU7QUFDekUsdUNBQStDO0FBRy9DLHFDQUFrRTtBQXFCbEU7O0dBRUc7QUFDSSxNQUFNLGdCQUFnQixHQUF1RCxLQUFLLEVBQUMsRUFDekYsU0FBUyxFQUFFLE9BQU8sRUFDbEIsT0FBTyxFQUFFLE9BQU8sRUFDaEIsT0FBTyxFQUFFLE1BQU0sRUFDZixFQUFFLEVBQUU7SUFDSixNQUFNLFVBQVUsR0FBc0MsRUFBRSxDQUFBO0lBQ3hELE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxFQUFFLElBQUksSUFBQSx3QkFBZ0IsR0FBRSxDQUFBO0lBQ2pELElBQUksTUFBa0IsQ0FBQTtJQUN0QixJQUFJLE1BQW1DLENBQUE7SUFFdkMsSUFBSSxnQkFBcUQsQ0FBQTtJQUN6RCxJQUFJLGVBQW9ELENBQUE7SUFDeEQsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLE9BQU8sQ0FBTyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtRQUM5RCxnQkFBZ0IsR0FBRyxPQUFPLENBQUE7UUFDMUIsZUFBZSxHQUFHLE1BQU0sQ0FBQTtJQUN6QixDQUFDLENBQUMsQ0FBQTtJQUVGLE1BQU0sR0FBRyxHQUFHLElBQUEsbUJBQWEsRUFBQztRQUN6QixJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUs7UUFDbkIsR0FBRyxPQUFPO1FBQ1YsTUFBTTtRQUNOLFdBQVc7WUFDVixnQkFBZ0IsYUFBaEIsZ0JBQWdCLHVCQUFoQixnQkFBZ0IsRUFBSSxDQUFBO1FBQ3JCLENBQUM7UUFDRCxpQkFBaUIsQ0FBQyxTQUFTO1lBQzFCLE9BQU8sU0FBUyxhQUFULFNBQVMsdUJBQVQsU0FBUyxDQUFHLFNBQVMsQ0FBQyxDQUFBO1FBQzlC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
@@ -0,0 +1,6 @@
1
+ import { IAttestorClient, IAttestorClientCreateOpts } from 'src/types';
2
+ /**
3
+ * Get a attestor client from the pool,
4
+ * if it doesn't exist, create one.
5
+ */
6
+ export declare function getAttestorClientFromPool(url: string | URL, getCreateOpts?: () => Omit<IAttestorClientCreateOpts, 'url'>): IAttestorClient;
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getAttestorClientFromPool = getAttestorClientFromPool;
4
+ const client_socket_1 = require("src/client/utils/client-socket");
5
+ const POOL = {};
6
+ /**
7
+ * Get a attestor client from the pool,
8
+ * if it doesn't exist, create one.
9
+ */
10
+ function getAttestorClientFromPool(url, getCreateOpts = () => ({})) {
11
+ var _a;
12
+ const key = url.toString();
13
+ let client = POOL[key];
14
+ let createReason;
15
+ if (client === null || client === void 0 ? void 0 : client.isClosed) {
16
+ createReason = 'closed';
17
+ }
18
+ else if (!client) {
19
+ createReason = 'non-existent';
20
+ }
21
+ if (createReason) {
22
+ const createOpts = getCreateOpts();
23
+ (_a = createOpts === null || createOpts === void 0 ? void 0 : createOpts.logger) === null || _a === void 0 ? void 0 : _a.info({ key, createReason }, 'creating new client');
24
+ client = (POOL[key] = new client_socket_1.AttestorClient({ ...createOpts, url }));
25
+ }
26
+ return client;
27
+ }
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0ZXN0b3ItcG9vbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jbGllbnQvdXRpbHMvYXR0ZXN0b3ItcG9vbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQVNBLDhEQXVCQztBQWhDRCxrRUFBK0Q7QUFHL0QsTUFBTSxJQUFJLEdBQW1ELEVBQUUsQ0FBQTtBQUUvRDs7O0dBR0c7QUFDSCxTQUFnQix5QkFBeUIsQ0FDeEMsR0FBaUIsRUFDakIsZ0JBQThELEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDOztJQUV4RSxNQUFNLEdBQUcsR0FBRyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUE7SUFDMUIsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQ3RCLElBQUksWUFBZ0MsQ0FBQTtJQUNwQyxJQUFHLE1BQU0sYUFBTixNQUFNLHVCQUFOLE1BQU0sQ0FBRSxRQUFRLEVBQUUsQ0FBQztRQUNyQixZQUFZLEdBQUcsUUFBUSxDQUFBO0lBQ3hCLENBQUM7U0FBTSxJQUFHLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDbkIsWUFBWSxHQUFHLGNBQWMsQ0FBQTtJQUM5QixDQUFDO0lBRUQsSUFBRyxZQUFZLEVBQUUsQ0FBQztRQUNqQixNQUFNLFVBQVUsR0FBRyxhQUFhLEVBQUUsQ0FBQTtRQUNsQyxNQUFBLFVBQVUsYUFBVixVQUFVLHVCQUFWLFVBQVUsQ0FBRSxNQUFNLDBDQUFFLElBQUksQ0FDdkIsRUFBRSxHQUFHLEVBQUUsWUFBWSxFQUFFLEVBQ3JCLHFCQUFxQixDQUNyQixDQUFBO1FBQ0QsTUFBTSxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksOEJBQWMsQ0FBQyxFQUFFLEdBQUcsVUFBVSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQTtJQUNsRSxDQUFDO0lBRUQsT0FBTyxNQUFPLENBQUE7QUFDZixDQUFDIn0=
@@ -0,0 +1,9 @@
1
+ import { IAttestorClient, IAttestorClientCreateOpts, RPCRequestData, RPCResponseData, RPCType } from 'src/types';
2
+ import { AttestorSocket } from 'src/utils/socket-base';
3
+ export declare class AttestorClient extends AttestorSocket implements IAttestorClient {
4
+ private waitForInitPromise;
5
+ constructor({ url, initMessages, signatureType, logger, Websocket }: IAttestorClientCreateOpts);
6
+ rpc<T extends RPCType>(type: T, request: Partial<RPCRequestData<T>>): Promise<Exclude<import("src/proto/api").RPCMessage[`${T}Response`], undefined>>;
7
+ waitForResponse<T extends RPCType>(id: number): Promise<RPCResponseData<T>>;
8
+ waitForInit: () => Promise<void>;
9
+ }
@@ -0,0 +1,77 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AttestorClient = void 0;
4
+ const utils_1 = require("ethers/lib/utils");
5
+ const config_1 = require("src/config");
6
+ const api_1 = require("src/proto/api");
7
+ const utils_2 = require("src/utils");
8
+ const socket_base_1 = require("src/utils/socket-base");
9
+ const ws_1 = require("src/utils/ws");
10
+ class AttestorClient extends socket_base_1.AttestorSocket {
11
+ constructor({ url, initMessages = [], signatureType = config_1.DEFAULT_METADATA.signatureType, logger = utils_2.logger, Websocket = ws_1.Websocket }) {
12
+ const initRequest = { ...config_1.DEFAULT_METADATA, signatureType };
13
+ const msg = (0, utils_2.packRpcMessages)({ initRequest }, ...initMessages);
14
+ const initRequestBytes = api_1.RPCMessages.encode(msg).finish();
15
+ const initRequestB64 = utils_1.base64.encode(initRequestBytes);
16
+ url = new URL(url.toString());
17
+ url.searchParams.set('messages', initRequestB64);
18
+ super(new Websocket(url), initRequest, logger);
19
+ this.waitForInit = () => {
20
+ if (this.isClosed) {
21
+ throw new utils_2.AttestorError('ERROR_NETWORK_ERROR', 'Client connection already closed');
22
+ }
23
+ return this.waitForInitPromise;
24
+ };
25
+ const initReqId = msg.messages[0].id;
26
+ this.waitForInitPromise = this
27
+ .waitForResponse(initReqId)
28
+ .then(() => {
29
+ logger.info('client initialised');
30
+ this.isInitialised = true;
31
+ });
32
+ this.addEventListener('connection-terminated', ev => (logger.info({ err: ev.data }, 'connection terminated')));
33
+ }
34
+ async rpc(type, request) {
35
+ const { messages: [{ id }] } = await this.sendMessage({ [(0, utils_2.getRpcRequestType)(type)]: request });
36
+ const rslt = await this.waitForResponse(id);
37
+ return rslt;
38
+ }
39
+ waitForResponse(id) {
40
+ if (this.isClosed) {
41
+ throw new utils_2.AttestorError('ERROR_NETWORK_ERROR', 'Client connection already closed');
42
+ }
43
+ // setup a promise to wait for the response
44
+ return new Promise((resolve, reject) => {
45
+ const handler = (event) => {
46
+ if (event.data.id !== id) {
47
+ return;
48
+ }
49
+ removeHandlers();
50
+ if ('error' in event.data) {
51
+ reject(event.data.error);
52
+ return;
53
+ }
54
+ // @ts-expect-error
55
+ resolve(event.data.data);
56
+ };
57
+ const terminateHandler = (event) => {
58
+ removeHandlers();
59
+ // if the connection was terminated, reject the promise
60
+ // but update the error code to reflect the network error
61
+ if (event.data.code === 'ERROR_NO_ERROR') {
62
+ reject(new utils_2.AttestorError('ERROR_NETWORK_ERROR', event.data.message, event.data.data));
63
+ return;
64
+ }
65
+ reject(event.data);
66
+ };
67
+ const removeHandlers = () => {
68
+ this.removeEventListener('rpc-response', handler);
69
+ this.removeEventListener('connection-terminated', terminateHandler);
70
+ };
71
+ this.addEventListener('rpc-response', handler);
72
+ this.addEventListener('connection-terminated', terminateHandler);
73
+ });
74
+ }
75
+ }
76
+ exports.AttestorClient = AttestorClient;
77
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50LXNvY2tldC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jbGllbnQvdXRpbHMvY2xpZW50LXNvY2tldC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw0Q0FBeUM7QUFDekMsdUNBQTZDO0FBQzdDLHVDQUEyQztBQUUzQyxxQ0FBK0Y7QUFDL0YsdURBQXNEO0FBQ3RELHFDQUE0RDtBQUU1RCxNQUFhLGNBQWUsU0FBUSw0QkFBYztJQUlqRCxZQUFZLEVBQ1gsR0FBRyxFQUNILFlBQVksR0FBRyxFQUFFLEVBQ2pCLGFBQWEsR0FBRyx5QkFBZ0IsQ0FBQyxhQUFhLEVBQzlDLE1BQU0sR0FBRyxjQUFNLEVBQ2YsU0FBUyxHQUFHLGNBQWdCLEVBQ0Q7UUFDM0IsTUFBTSxXQUFXLEdBQUcsRUFBRSxHQUFHLHlCQUFnQixFQUFFLGFBQWEsRUFBRSxDQUFBO1FBQzFELE1BQU0sR0FBRyxHQUFHLElBQUEsdUJBQWUsRUFBQyxFQUFFLFdBQVcsRUFBRSxFQUFFLEdBQUcsWUFBWSxDQUFDLENBQUE7UUFDN0QsTUFBTSxnQkFBZ0IsR0FBRyxpQkFBVyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQTtRQUN6RCxNQUFNLGNBQWMsR0FBRyxjQUFNLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUE7UUFFdEQsR0FBRyxHQUFHLElBQUksR0FBRyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFBO1FBQzdCLEdBQUcsQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxjQUFjLENBQUMsQ0FBQTtRQUVoRCxLQUFLLENBQ0osSUFBSSxTQUFTLENBQUMsR0FBRyxDQUFjLEVBQy9CLFdBQVcsRUFDWCxNQUFNLENBQ04sQ0FBQTtRQStFRixnQkFBVyxHQUFHLEdBQUcsRUFBRTtZQUNsQixJQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDbEIsTUFBTSxJ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
@@ -0,0 +1,4 @@
1
+ import { RPCMessage } from 'src/proto/api';
2
+ import { IAttestorSocket } from 'src/types';
3
+ export declare function wsMessageHandler(this: IAttestorSocket, data: unknown): Promise<void>;
4
+ export declare function handleMessage(this: IAttestorSocket, msg: RPCMessage): Promise<void> | undefined;
@@ -0,0 +1,93 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.wsMessageHandler = wsMessageHandler;
4
+ exports.handleMessage = handleMessage;
5
+ const api_1 = require("src/proto/api");
6
+ const utils_1 = require("src/utils");
7
+ async function wsMessageHandler(data) {
8
+ // extract array buffer from WS data & decode proto
9
+ const buff = await (0, utils_1.extractArrayBufferFromWsData)(data);
10
+ const { messages } = api_1.RPCMessages.decode(buff);
11
+ for (const msg of messages) {
12
+ await handleMessage.call(this, msg);
13
+ }
14
+ }
15
+ function handleMessage(msg) {
16
+ var _a;
17
+ // handle connection termination alert
18
+ if (msg.connectionTerminationAlert) {
19
+ const err = utils_1.AttestorError.fromProto(msg.connectionTerminationAlert);
20
+ (_a = this.logger) === null || _a === void 0 ? void 0 : _a.warn({
21
+ err: err.code !== 'ERROR_NO_ERROR'
22
+ ? err
23
+ : undefined
24
+ }, 'received connection termination alert');
25
+ this.dispatchRPCEvent('connection-terminated', err);
26
+ return;
27
+ }
28
+ const rpcRequest = (0, utils_1.getRpcRequest)(msg);
29
+ if (rpcRequest) {
30
+ if (rpcRequest.direction === 'response'
31
+ && rpcRequest.type === 'error') {
32
+ this.dispatchRPCEvent('rpc-response', {
33
+ id: msg.id,
34
+ error: utils_1.AttestorError.fromProto(msg.requestError)
35
+ });
36
+ return;
37
+ }
38
+ const resType = (0, utils_1.getRpcResponseType)(rpcRequest.type);
39
+ if (rpcRequest.direction === 'response') {
40
+ this.dispatchRPCEvent('rpc-response', {
41
+ id: msg.id,
42
+ type: rpcRequest.type,
43
+ data: msg[resType]
44
+ });
45
+ return;
46
+ }
47
+ if (!this.isInitialised && rpcRequest.type !== 'init') {
48
+ this.logger.warn({ type: rpcRequest.type }, 'RPC request received before initialisation');
49
+ this.sendMessage({
50
+ id: msg.id,
51
+ requestError: utils_1.AttestorError
52
+ .badRequest('Initialise connection first')
53
+ .toProto()
54
+ });
55
+ return;
56
+ }
57
+ return new Promise((resolve, reject) => {
58
+ this.dispatchRPCEvent('rpc-request', {
59
+ requestId: msg.id,
60
+ type: rpcRequest.type,
61
+ data: msg[(0, utils_1.getRpcRequestType)(rpcRequest.type)],
62
+ respond: (res) => {
63
+ var _a;
64
+ if (!this.isOpen) {
65
+ (_a = this.logger) === null || _a === void 0 ? void 0 : _a.debug({ type: rpcRequest.type, res }, 'connection closed before responding');
66
+ reject(new Error('connection closed'));
67
+ return;
68
+ }
69
+ if ('code' in res) {
70
+ reject(res);
71
+ return this.sendMessage({
72
+ id: msg.id,
73
+ requestError: res.toProto()
74
+ });
75
+ }
76
+ resolve();
77
+ return this
78
+ .sendMessage({ id: msg.id, [resType]: res });
79
+ },
80
+ });
81
+ });
82
+ }
83
+ if (msg.tunnelMessage) {
84
+ this.dispatchRPCEvent('tunnel-message', msg.tunnelMessage);
85
+ return;
86
+ }
87
+ if (msg.tunnelDisconnectEvent) {
88
+ this.dispatchRPCEvent('tunnel-disconnect-event', msg.tunnelDisconnectEvent);
89
+ return;
90
+ }
91
+ this.logger.warn({ msg }, 'unhandled message');
92
+ }
93
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS1oYW5kbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NsaWVudC91dGlscy9tZXNzYWdlLWhhbmRsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFJQSw0Q0FPQztBQUVELHNDQW9HQztBQWpIRCx1Q0FBdUQ7QUFFdkQscUNBQTZIO0FBRXRILEtBQUssVUFBVSxnQkFBZ0IsQ0FBd0IsSUFBYTtJQUMxRSxtREFBbUQ7SUFDbkQsTUFBTSxJQUFJLEdBQUcsTUFBTSxJQUFBLG9DQUE0QixFQUFDLElBQUksQ0FBQyxDQUFBO0lBQ3JELE1BQU0sRUFBRSxRQUFRLEVBQUUsR0FBRyxpQkFBVyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUM3QyxLQUFJLE1BQU0sR0FBRyxJQUFJLFFBQVEsRUFBRSxDQUFDO1FBQzNCLE1BQU0sYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUE7SUFDcEMsQ0FBQztBQUNGLENBQUM7QUFFRCxTQUFnQixhQUFhLENBQXdCLEdBQWU7O0lBQ25FLHNDQUFzQztJQUN0QyxJQUFHLEdBQUcsQ0FBQywwQkFBMEIsRUFBRSxDQUFDO1FBQ25DLE1BQU0sR0FBRyxHQUFHLHFCQUFhLENBQUMsU0FBUyxDQUNsQyxHQUFHLENBQUMsMEJBQTBCLENBQzlCLENBQUE7UUFDRCxNQUFBLElBQUksQ0FBQyxNQUFNLDBDQUFFLElBQUksQ0FDaEI7WUFDQyxHQUFHLEVBQUUsR0FBRyxDQUFDLElBQUksS0FBSyxnQkFBZ0I7Z0JBQ2pDLENBQUMsQ0FBQyxHQUFHO2dCQUNMLENBQUMsQ0FBQyxTQUFTO1NBQ1osRUFDRCx1Q0FBdUMsQ0FDdkMsQ0FBQTtRQUNELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyx1QkFBdUIsRUFBRSxHQUFHLENBQUMsQ0FBQTtRQUNuRCxPQUFNO0lBQ1AsQ0FBQztJQUVELE1BQU0sVUFBVSxHQUFHLElBQUEscUJBQWEsRUFBQyxHQUFH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
@@ -0,0 +1,23 @@
1
+ import { InitRequest } from 'src/proto/api';
2
+ export declare const MAX_ZK_CHUNKS = 200;
3
+ export declare const DEFAULT_ZK_CONCURRENCY = 10;
4
+ export declare const RECLAIM_USER_AGENT = "reclaim/0.0.1";
5
+ export declare const DEFAULT_HTTPS_PORT = 443;
6
+ export declare const WS_PATHNAME = "/ws";
7
+ export declare const BROWSER_RPC_PATHNAME = "/browser-rpc";
8
+ export declare const DEFAULT_REMOTE_ZK_PARAMS: {
9
+ zkeyUrl: string;
10
+ circuitWasmUrl: string;
11
+ };
12
+ export declare const API_SERVER_PORT = 8001;
13
+ export declare const CONNECTION_TIMEOUT_MS = 10000;
14
+ export declare const DNS_SERVERS: string[];
15
+ export declare const MAX_CLAIM_TIMESTAMP_DIFF_S: number;
16
+ export declare const DEFAULT_METADATA: InitRequest;
17
+ export declare const PING_INTERVAL_MS = 10000;
18
+ /**
19
+ * Maximum interval in seconds to wait for before assuming
20
+ * the connection is dead
21
+ * @default 30s
22
+ */
23
+ export declare const MAX_NO_DATA_INTERVAL_MS = 30000;
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MAX_NO_DATA_INTERVAL_MS = exports.PING_INTERVAL_MS = exports.DEFAULT_METADATA = exports.MAX_CLAIM_TIMESTAMP_DIFF_S = exports.DNS_SERVERS = exports.CONNECTION_TIMEOUT_MS = exports.API_SERVER_PORT = exports.DEFAULT_REMOTE_ZK_PARAMS = exports.BROWSER_RPC_PATHNAME = exports.WS_PATHNAME = exports.DEFAULT_HTTPS_PORT = exports.RECLAIM_USER_AGENT = exports.DEFAULT_ZK_CONCURRENCY = exports.MAX_ZK_CHUNKS = void 0;
4
+ const api_1 = require("src/proto/api");
5
+ exports.MAX_ZK_CHUNKS = 200;
6
+ exports.DEFAULT_ZK_CONCURRENCY = 10;
7
+ exports.RECLAIM_USER_AGENT = 'reclaim/0.0.1';
8
+ exports.DEFAULT_HTTPS_PORT = 443;
9
+ exports.WS_PATHNAME = '/ws';
10
+ exports.BROWSER_RPC_PATHNAME = '/browser-rpc';
11
+ exports.DEFAULT_REMOTE_ZK_PARAMS = {
12
+ zkeyUrl: `${exports.BROWSER_RPC_PATHNAME}/resources/{algorithm}/circuit_final.zkey`,
13
+ circuitWasmUrl: `${exports.BROWSER_RPC_PATHNAME}/resources/{algorithm}/circuit.wasm`,
14
+ };
15
+ exports.API_SERVER_PORT = 8001;
16
+ // 10s
17
+ exports.CONNECTION_TIMEOUT_MS = 10000;
18
+ exports.DNS_SERVERS = [
19
+ '8.8.8.8',
20
+ '8.8.4.4'
21
+ ];
22
+ // 10m
23
+ exports.MAX_CLAIM_TIMESTAMP_DIFF_S = 10 * 60;
24
+ exports.DEFAULT_METADATA = {
25
+ signatureType: api_1.ServiceSignatureType.SERVICE_SIGNATURE_TYPE_ETH,
26
+ clientVersion: api_1.AttestorVersion.ATTESTOR_VERSION_2_0_0
27
+ };
28
+ exports.PING_INTERVAL_MS = 10000;
29
+ /**
30
+ * Maximum interval in seconds to wait for before assuming
31
+ * the connection is dead
32
+ * @default 30s
33
+ */
34
+ exports.MAX_NO_DATA_INTERVAL_MS = 30000;
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29uZmlnL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHVDQUFrRjtBQUVyRSxRQUFBLGFBQWEsR0FBRyxHQUFHLENBQUE7QUFFbkIsUUFBQSxzQkFBc0IsR0FBRyxFQUFFLENBQUE7QUFFM0IsUUFBQSxrQkFBa0IsR0FBRyxlQUFlLENBQUE7QUFFcEMsUUFBQSxrQkFBa0IsR0FBRyxHQUFHLENBQUE7QUFFeEIsUUFBQSxXQUFXLEdBQUcsS0FBSyxDQUFBO0FBRW5CLFFBQUEsb0JBQW9CLEdBQUcsY0FBYyxDQUFBO0FBRXJDLFFBQUEsd0JBQXdCLEdBQUc7SUFDdkMsT0FBTyxFQUFFLEdBQUcsNEJBQW9CLDJDQUEyQztJQUMzRSxjQUFjLEVBQUUsR0FBRyw0QkFBb0IscUNBQXFDO0NBQzVFLENBQUE7QUFFWSxRQUFBLGVBQWUsR0FBRyxJQUFJLENBQUE7QUFFbkMsTUFBTTtBQUNPLFFBQUEscUJBQXFCLEdBQUcsS0FBTSxDQUFBO0FBRTlCLFFBQUEsV0FBVyxHQUFHO0lBQzFCLFNBQVM7SUFDVCxTQUFTO0NBQ1QsQ0FBQTtBQUVELE1BQU07QUFDTyxRQUFBLDBCQUEwQixHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUE7QUFFcEMsUUFBQSxnQkFBZ0IsR0FBZ0I7SUFDNUMsYUFBYSxFQUFFLDBCQUFvQixDQUFDLDBCQUEwQjtJQUM5RCxhQUFhLEVBQUUscUJBQWUsQ0FBQyxzQkFBc0I7Q0FDckQsQ0FBQTtBQUVZLFFBQUEsZ0JBQWdCLEdBQUcsS0FBTSxDQUFBO0FBQ3RDOzs7O0dBSUc7QUFDVSxRQUFBLHVCQUF1QixHQUFHLEtBQU0sQ0FBQSJ9
package/lib/index.d.ts ADDED
@@ -0,0 +1,9 @@
1
+ export * as tls from '@reclaimprotocol/tls';
2
+ export * from './client/utils/client-socket';
3
+ export * from './config';
4
+ export * from './types';
5
+ export * from './utils';
6
+ export * from './providers';
7
+ export * as proto from './proto/api';
8
+ export * from './client';
9
+ export * from './window-rpc';
package/lib/index.js ADDED
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
26
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports.proto = exports.tls = void 0;
30
+ exports.tls = __importStar(require("@reclaimprotocol/tls"));
31
+ __exportStar(require("./client/utils/client-socket"), exports);
32
+ __exportStar(require("./config"), exports);
33
+ __exportStar(require("./types"), exports);
34
+ __exportStar(require("./utils"), exports);
35
+ __exportStar(require("./providers"), exports);
36
+ exports.proto = __importStar(require("./proto/api"));
37
+ __exportStar(require("./client"), exports);
38
+ __exportStar(require("./window-rpc"), exports);
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSw0REFBMkM7QUFDM0MsK0RBQTRDO0FBQzVDLDJDQUF3QjtBQUN4QiwwQ0FBdUI7QUFDdkIsMENBQXVCO0FBQ3ZCLDhDQUEyQjtBQUMzQixxREFBb0M7QUFDcEMsMkNBQXdCO0FBQ3hCLCtDQUE0QiJ9