@reclaimprotocol/attestor-core 5.0.1-beta.2 → 5.0.1-beta.3

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 (169) hide show
  1. package/lib/browser/avs/abis/avsDirectoryABI.d.ts +60 -0
  2. package/lib/browser/avs/abis/avsDirectoryABI.js +343 -0
  3. package/lib/browser/avs/abis/delegationABI.d.ts +126 -0
  4. package/lib/browser/avs/abis/delegationABI.js +4 -0
  5. package/lib/browser/avs/abis/registryABI.d.ts +136 -0
  6. package/lib/browser/avs/abis/registryABI.js +728 -0
  7. package/lib/browser/avs/client/create-claim-on-avs.d.ts +12 -0
  8. package/lib/browser/avs/client/create-claim-on-avs.js +168 -0
  9. package/lib/browser/avs/config.d.ts +7 -0
  10. package/lib/browser/avs/config.js +26 -0
  11. package/lib/browser/avs/contracts/ReclaimServiceManager.d.ts +601 -0
  12. package/lib/browser/avs/contracts/ReclaimServiceManager.js +0 -0
  13. package/lib/browser/avs/contracts/common.d.ts +50 -0
  14. package/lib/browser/avs/contracts/common.js +0 -0
  15. package/lib/browser/avs/contracts/factories/ReclaimServiceManager__factory.d.ts +890 -0
  16. package/lib/browser/avs/contracts/factories/ReclaimServiceManager__factory.js +1183 -0
  17. package/lib/browser/avs/contracts/factories/index.d.ts +1 -0
  18. package/lib/browser/avs/contracts/factories/index.js +4 -0
  19. package/lib/browser/avs/contracts/index.d.ts +3 -0
  20. package/lib/browser/avs/contracts/index.js +6 -0
  21. package/lib/browser/avs/types/index.d.ts +55 -0
  22. package/lib/browser/avs/types/index.js +0 -0
  23. package/lib/browser/avs/utils/contracts.d.ts +21 -0
  24. package/lib/browser/avs/utils/contracts.js +53 -0
  25. package/lib/browser/avs/utils/register.d.ts +27 -0
  26. package/lib/browser/avs/utils/register.js +74 -0
  27. package/lib/browser/avs/utils/tasks.d.ts +22 -0
  28. package/lib/browser/avs/utils/tasks.js +48 -0
  29. package/lib/browser/client/create-claim.d.ts +5 -0
  30. package/lib/browser/client/create-claim.js +461 -0
  31. package/lib/browser/client/index.d.ts +3 -0
  32. package/lib/browser/client/index.js +3 -0
  33. package/lib/browser/client/tunnels/make-rpc-tcp-tunnel.d.ts +16 -0
  34. package/lib/browser/client/tunnels/make-rpc-tcp-tunnel.js +53 -0
  35. package/lib/browser/client/tunnels/make-rpc-tls-tunnel.d.ts +26 -0
  36. package/lib/browser/client/tunnels/make-rpc-tls-tunnel.js +127 -0
  37. package/lib/browser/client/utils/attestor-pool.d.ts +8 -0
  38. package/lib/browser/client/utils/attestor-pool.js +24 -0
  39. package/lib/browser/client/utils/client-socket.d.ts +11 -0
  40. package/lib/browser/client/utils/client-socket.js +120 -0
  41. package/lib/browser/client/utils/message-handler.d.ts +4 -0
  42. package/lib/browser/client/utils/message-handler.js +97 -0
  43. package/lib/browser/config/index.d.ts +31 -0
  44. package/lib/browser/config/index.js +62 -0
  45. package/lib/browser/external-rpc/benchmark.d.ts +1 -0
  46. package/lib/browser/external-rpc/benchmark.js +82 -0
  47. package/lib/browser/external-rpc/event-bus.d.ts +7 -0
  48. package/lib/browser/external-rpc/event-bus.js +17 -0
  49. package/lib/browser/external-rpc/global.d.js +0 -0
  50. package/lib/browser/external-rpc/handle-incoming-msg.d.ts +2 -0
  51. package/lib/browser/external-rpc/handle-incoming-msg.js +241 -0
  52. package/lib/browser/external-rpc/index.d.ts +3 -0
  53. package/lib/browser/external-rpc/index.js +3 -0
  54. package/lib/browser/external-rpc/jsc-polyfills/1.d.ts +14 -0
  55. package/lib/browser/external-rpc/jsc-polyfills/1.js +80 -0
  56. package/lib/browser/external-rpc/jsc-polyfills/2.d.ts +1 -0
  57. package/lib/browser/external-rpc/jsc-polyfills/2.js +15 -0
  58. package/lib/browser/external-rpc/jsc-polyfills/event.d.ts +10 -0
  59. package/lib/browser/external-rpc/jsc-polyfills/event.js +19 -0
  60. package/lib/browser/external-rpc/jsc-polyfills/index.d.ts +2 -0
  61. package/lib/browser/external-rpc/jsc-polyfills/index.js +2 -0
  62. package/lib/browser/external-rpc/jsc-polyfills/ws.d.ts +21 -0
  63. package/lib/browser/external-rpc/jsc-polyfills/ws.js +83 -0
  64. package/lib/browser/external-rpc/setup-browser.d.ts +6 -0
  65. package/lib/browser/external-rpc/setup-browser.js +33 -0
  66. package/lib/browser/external-rpc/setup-jsc.d.ts +24 -0
  67. package/lib/browser/external-rpc/setup-jsc.js +22 -0
  68. package/lib/browser/external-rpc/types.d.ts +213 -0
  69. package/lib/browser/external-rpc/types.js +0 -0
  70. package/lib/browser/external-rpc/utils.d.ts +20 -0
  71. package/lib/browser/external-rpc/utils.js +100 -0
  72. package/lib/browser/external-rpc/zk.d.ts +14 -0
  73. package/lib/browser/external-rpc/zk.js +58 -0
  74. package/lib/browser/index.browser.js +13 -0
  75. package/lib/browser/index.d.ts +9 -0
  76. package/lib/browser/index.js +13 -0
  77. package/lib/browser/mechain/abis/governanceABI.d.ts +50 -0
  78. package/lib/browser/mechain/abis/governanceABI.js +461 -0
  79. package/lib/browser/mechain/abis/taskABI.d.ts +157 -0
  80. package/lib/browser/mechain/abis/taskABI.js +512 -0
  81. package/lib/browser/mechain/client/create-claim-on-mechain.d.ts +10 -0
  82. package/lib/browser/mechain/client/create-claim-on-mechain.js +33 -0
  83. package/lib/browser/mechain/client/index.d.ts +1 -0
  84. package/lib/browser/mechain/client/index.js +1 -0
  85. package/lib/browser/mechain/constants/index.d.ts +3 -0
  86. package/lib/browser/mechain/constants/index.js +8 -0
  87. package/lib/browser/mechain/index.d.ts +2 -0
  88. package/lib/browser/mechain/index.js +2 -0
  89. package/lib/browser/mechain/types/index.d.ts +23 -0
  90. package/lib/browser/mechain/types/index.js +0 -0
  91. package/lib/browser/proto/api.d.ts +651 -0
  92. package/lib/browser/proto/api.js +4250 -0
  93. package/lib/browser/proto/tee-bundle.d.ts +156 -0
  94. package/lib/browser/proto/tee-bundle.js +1296 -0
  95. package/lib/browser/providers/http/index.d.ts +18 -0
  96. package/lib/browser/providers/http/index.js +640 -0
  97. package/lib/browser/providers/http/patch-parse5-tree.d.ts +6 -0
  98. package/lib/browser/providers/http/patch-parse5-tree.js +34 -0
  99. package/lib/browser/providers/http/utils.d.ts +77 -0
  100. package/lib/browser/providers/http/utils.js +283 -0
  101. package/lib/browser/providers/index.d.ts +4 -0
  102. package/lib/browser/providers/index.js +7 -0
  103. package/lib/browser/types/bgp.d.ts +11 -0
  104. package/lib/browser/types/bgp.js +0 -0
  105. package/lib/browser/types/claims.d.ts +70 -0
  106. package/lib/browser/types/claims.js +0 -0
  107. package/lib/browser/types/client.d.ts +163 -0
  108. package/lib/browser/types/client.js +0 -0
  109. package/lib/browser/types/general.d.ts +77 -0
  110. package/lib/browser/types/general.js +0 -0
  111. package/lib/browser/types/handlers.d.ts +10 -0
  112. package/lib/browser/types/handlers.js +0 -0
  113. package/lib/browser/types/index.d.ts +10 -0
  114. package/lib/browser/types/index.js +10 -0
  115. package/lib/browser/types/providers.d.ts +161 -0
  116. package/lib/browser/types/providers.gen.d.ts +443 -0
  117. package/lib/browser/types/providers.gen.js +16 -0
  118. package/lib/browser/types/providers.js +0 -0
  119. package/lib/browser/types/rpc.d.ts +35 -0
  120. package/lib/browser/types/rpc.js +0 -0
  121. package/lib/browser/types/signatures.d.ts +28 -0
  122. package/lib/browser/types/signatures.js +0 -0
  123. package/lib/browser/types/tunnel.d.ts +18 -0
  124. package/lib/browser/types/tunnel.js +0 -0
  125. package/lib/browser/types/zk.d.ts +38 -0
  126. package/lib/browser/types/zk.js +0 -0
  127. package/lib/browser/utils/auth.d.ts +8 -0
  128. package/lib/browser/utils/auth.js +71 -0
  129. package/lib/browser/utils/b64-json.d.ts +2 -0
  130. package/lib/browser/utils/b64-json.js +17 -0
  131. package/lib/browser/utils/claims.d.ts +33 -0
  132. package/lib/browser/utils/claims.js +89 -0
  133. package/lib/browser/utils/env.d.ts +3 -0
  134. package/lib/browser/utils/env.js +19 -0
  135. package/lib/browser/utils/error.d.ts +26 -0
  136. package/lib/browser/utils/error.js +54 -0
  137. package/lib/browser/utils/generics.d.ts +114 -0
  138. package/lib/browser/utils/generics.js +268 -0
  139. package/lib/browser/utils/http-parser.d.ts +59 -0
  140. package/lib/browser/utils/http-parser.js +201 -0
  141. package/lib/browser/utils/index.browser.js +12 -0
  142. package/lib/browser/utils/index.d.ts +12 -0
  143. package/lib/browser/utils/index.js +12 -0
  144. package/lib/browser/utils/logger.browser.js +88 -0
  145. package/lib/browser/utils/logger.d.ts +14 -0
  146. package/lib/browser/utils/logger.js +88 -0
  147. package/lib/browser/utils/prepare-packets.d.ts +16 -0
  148. package/lib/browser/utils/prepare-packets.js +69 -0
  149. package/lib/browser/utils/redactions.d.ts +73 -0
  150. package/lib/browser/utils/redactions.js +135 -0
  151. package/lib/browser/utils/retries.d.ts +12 -0
  152. package/lib/browser/utils/retries.js +26 -0
  153. package/lib/browser/utils/signatures/eth.d.ts +2 -0
  154. package/lib/browser/utils/signatures/eth.js +31 -0
  155. package/lib/browser/utils/signatures/index.d.ts +5 -0
  156. package/lib/browser/utils/signatures/index.js +12 -0
  157. package/lib/browser/utils/socket-base.d.ts +23 -0
  158. package/lib/browser/utils/socket-base.js +96 -0
  159. package/lib/browser/utils/tls.d.ts +2 -0
  160. package/lib/browser/utils/tls.js +58 -0
  161. package/lib/browser/utils/ws.d.ts +7 -0
  162. package/lib/browser/utils/ws.js +22 -0
  163. package/lib/browser/utils/zk.d.ts +71 -0
  164. package/lib/browser/utils/zk.js +625 -0
  165. package/lib/index.browser.d.ts +9 -0
  166. package/lib/types/general.d.ts +1 -0
  167. package/lib/utils/index.browser.d.ts +12 -0
  168. package/lib/utils/logger.browser.d.ts +14 -0
  169. package/package.json +18 -2
@@ -0,0 +1,77 @@
1
+ import type { Logger as TLSLogger, TLSPacketContext, TLSProtocolVersion } from '@reclaimprotocol/tls';
2
+ import type { OPRFRawMarker, TOPRFProofParams } from '#src/types/zk.ts';
3
+ /**
4
+ * Represents a slice of any array or string
5
+ */
6
+ export type ArraySlice = {
7
+ fromIndex: number;
8
+ toIndex: number;
9
+ };
10
+ export type RedactedOrHashedArraySlice = {
11
+ fromIndex: number;
12
+ toIndex: number;
13
+ /**
14
+ * By default, the data is redacted. Instead if you'd like
15
+ * a deterministic hash, set this to:
16
+ * - 'oprf' for client-side TOPRF with ZK proof
17
+ * - 'oprf-mpc' for TEE-to-TEE MPC OPRF
18
+ * - 'oprf-raw' for server-side OPRF (data revealed to attestor)
19
+ * @default undefined
20
+ */
21
+ hash?: 'oprf' | 'oprf-mpc' | 'oprf-raw';
22
+ };
23
+ export type Logger = TLSLogger & {
24
+ fatal: (...args: any[]) => void;
25
+ child: (opts: {
26
+ [_: string]: any;
27
+ }) => Logger;
28
+ };
29
+ export type LogLevel = 'debug' | 'info' | 'warn' | 'error' | 'trace' | 'fatal';
30
+ export type ZKRevealInfo = {
31
+ type: 'zk';
32
+ redactedPlaintext: Uint8Array;
33
+ toprfs?: TOPRFProofParams[];
34
+ oprfRawMarkers?: OPRFRawMarker[];
35
+ overshotToprfFromPrevBlock?: {
36
+ length: number;
37
+ };
38
+ /**
39
+ * If an oprf-raw marker from the previous block overshot into this block.
40
+ * The server will collect plaintext from this block to complete the OPRF.
41
+ */
42
+ overshotOprfRawFromPrevBlock?: {
43
+ length: number;
44
+ };
45
+ };
46
+ export type MessageRevealInfo = {
47
+ type: 'complete';
48
+ } | ZKRevealInfo;
49
+ export type CompleteTLSPacket = TLSPacketContext & {
50
+ /**
51
+ * Full data that was sent/recv across the wire
52
+ */
53
+ data: Uint8Array;
54
+ };
55
+ export type IDecryptedTranscriptMessage = {
56
+ sender: 'client' | 'server';
57
+ redacted: boolean;
58
+ message: Uint8Array;
59
+ plaintextLength: number;
60
+ recordHeader: Uint8Array;
61
+ };
62
+ export type IDecryptedTranscript = {
63
+ transcript: IDecryptedTranscriptMessage[];
64
+ tlsVersion: TLSProtocolVersion;
65
+ hostname: string;
66
+ /**
67
+ * oprf-raw replacements: original plaintext -> nullifier mappings
68
+ * for server-side parameter replacement
69
+ */
70
+ oprfRawReplacements?: OPRFRawReplacement[];
71
+ };
72
+ export type OPRFRawReplacement = {
73
+ /** Original plaintext that was OPRF'd */
74
+ originalText: string;
75
+ /** OPRF nullifier string to replace with */
76
+ nullifierText: string;
77
+ };
File without changes
@@ -0,0 +1,10 @@
1
+ import type { Transaction } from 'elastic-apm-node';
2
+ import type { IAttestorServerSocket } from '#src/types/client.ts';
3
+ import type { Logger } from '#src/types/general.ts';
4
+ import type { RPCRequestData, RPCResponseData, RPCType } from '#src/types/rpc.ts';
5
+ export type RPCHandlerMetadata = {
6
+ logger: Logger;
7
+ tx?: Transaction;
8
+ client: IAttestorServerSocket;
9
+ };
10
+ export type RPCHandler<R extends RPCType> = (data: RPCRequestData<R>, ctx: RPCHandlerMetadata) => Promise<RPCResponseData<R>>;
File without changes
@@ -0,0 +1,10 @@
1
+ export * from './providers.ts';
2
+ export * from './general.ts';
3
+ export * from './signatures.ts';
4
+ export * from './claims.ts';
5
+ export * from './zk.ts';
6
+ export * from './client.ts';
7
+ export * from './rpc.ts';
8
+ export * from './tunnel.ts';
9
+ export * from './handlers.ts';
10
+ export * from './bgp.ts';
@@ -0,0 +1,10 @@
1
+ export * from "./providers.js";
2
+ export * from "./general.js";
3
+ export * from "./signatures.js";
4
+ export * from "./claims.js";
5
+ export * from "./zk.js";
6
+ export * from "./client.js";
7
+ export * from "./rpc.js";
8
+ export * from "./tunnel.js";
9
+ export * from "./handlers.js";
10
+ export * from "./bgp.js";
@@ -0,0 +1,161 @@
1
+ import type { TLSConnectionOptions } from '@reclaimprotocol/tls';
2
+ import type { AttestorVersion, ProviderClaimData } from '#src/proto/api.ts';
3
+ import type { ArraySlice, Logger, RedactedOrHashedArraySlice } from '#src/types/general.ts';
4
+ import type { ProvidersConfig } from '#src/types/providers.gen.ts';
5
+ import type { Transcript } from '#src/types/tunnel.ts';
6
+ export type AttestorData = {
7
+ id: string;
8
+ url: string;
9
+ };
10
+ type CreateRequestResult = {
11
+ /**
12
+ * Raw request to be sent
13
+ * If a string, it is assumed to be an
14
+ * ASCII encoded string. If it contains
15
+ * non-ASCII characters, the redactions
16
+ * may not work as expected
17
+ */
18
+ data: Uint8Array | string;
19
+ redactions: ArraySlice[];
20
+ };
21
+ export type ProviderName = keyof ProvidersConfig;
22
+ export type ProviderParams<T extends ProviderName> = ProvidersConfig[T]['parameters'];
23
+ export type ProviderSecretParams<T extends ProviderName> = ProvidersConfig[T]['secretParameters'];
24
+ export type RedactionMode = 'key-update' | 'zk';
25
+ export type ProviderField<Params, SecretParams, T> = T | ((params: Params, secretParams?: SecretParams) => T);
26
+ export type ProviderCtx = {
27
+ version: AttestorVersion;
28
+ };
29
+ type GetResponseRedactionsOpts<P> = {
30
+ response: Uint8Array;
31
+ params: P;
32
+ logger: Logger;
33
+ ctx: ProviderCtx;
34
+ };
35
+ type AssertValidProviderReceipt<P> = {
36
+ receipt: Transcript<Uint8Array>;
37
+ params: P;
38
+ logger: Logger;
39
+ ctx: ProviderCtx;
40
+ };
41
+ /**
42
+ * Generic interface for a provider that can be used to verify
43
+ * claims on a TLS receipt
44
+ *
45
+ * @notice "Params" are the parameters you want to claim against.
46
+ * These would typically be found in the response body
47
+ *
48
+ * @notice "SecretParams" are the parameters that are used to make the API request.
49
+ * These must be redacted in the request construction in "createRequest" & cannot be viewed by anyone
50
+ */
51
+ export interface Provider<N extends ProviderName, Params = ProviderParams<N>, SecretParams = ProviderSecretParams<N>> {
52
+ /**
53
+ * host:port to connect to for this provider;
54
+ * the protocol establishes a connection to the first one
55
+ * when a request is received from a user.
56
+ *
57
+ * Run on attestor side when creating a new session
58
+ *
59
+ * Eg. "www.google.com:443", (p) => p.url.host
60
+ * */
61
+ hostPort: ProviderField<Params, SecretParams, string>;
62
+ /**
63
+ * Which geo location to send the request from
64
+ * Provide 2 letter country code, or a function
65
+ * that returns the country code
66
+ * @example "US", "IN"
67
+ */
68
+ geoLocation?: ProviderField<Params, SecretParams, string | undefined>;
69
+ /**
70
+ * Session identifier for proxy IP persistence.
71
+ *
72
+ * When provided, ensures all requests within the same session
73
+ * are routed through the same proxy IP address. Useful for
74
+ * maintaining IP consistency across multiple requests.
75
+ *
76
+ * Can be a smallcase alphanumeric string of length 8-14 characters.
77
+ * @example "mystring12345", "something1234"
78
+ */
79
+ proxySessionId?: ProviderField<Params, SecretParams, string | undefined>;
80
+ /** extra options to pass to the client like root CA certificates */
81
+ additionalClientOptions?: ProviderField<Params, SecretParams, TLSConnectionOptions | undefined>;
82
+ /**
83
+ * default redaction mode to use. If not specified,
84
+ * the default is 'key-update'.
85
+ *
86
+ * It's switched to 'zk' for TLS1.2 requests as TLS1.2
87
+ * don't support key updates
88
+ *
89
+ * @default 'key-update'
90
+ */
91
+ writeRedactionMode?: ProviderField<Params, SecretParams, RedactionMode | undefined>;
92
+ /** generate the raw request to be sent to through the TLS receipt */
93
+ createRequest(secretParams: SecretParams, params: Params, logger: Logger): CreateRequestResult;
94
+ /**
95
+ * Return the slices of the response to redact
96
+ * Eg. if the response is "hello my secret is xyz",
97
+ * and you want to redact "xyz", you would return
98
+ * [{start: 17, end: 20}]
99
+ *
100
+ * This is run on the client side, to selct which portions of
101
+ * the server response to send to the attestor
102
+ * */
103
+ getResponseRedactions?(opts: GetResponseRedactionsOpts<Params>): RedactedOrHashedArraySlice[];
104
+ /**
105
+ * verify a generated TLS receipt against given parameters
106
+ * to ensure the receipt does contain the claims the
107
+ * user is claiming to have
108
+ *
109
+ * This is run on the attestor side.
110
+ * @param receipt application data messages exchanged in the TLS session
111
+ * @param params the parameters to verify the receipt against.
112
+ * Eg. `{"email": "abcd@gmail.com"}`
113
+ * @returns sucessful verification or throws an error message.
114
+ * Optionally return parameters extracted from the receipt
115
+ * that will then be included in the claim context
116
+ * */
117
+ assertValidProviderReceipt(opts: AssertValidProviderReceipt<Params>): void | Promise<void> | {
118
+ extractedParameters: {
119
+ [key: string]: string;
120
+ };
121
+ };
122
+ }
123
+ export type ProofGenerationStep = {
124
+ name: 'connecting';
125
+ } | {
126
+ name: 'sending-request-data';
127
+ } | {
128
+ name: 'waiting-for-response';
129
+ } | {
130
+ name: 'generating-zk-proofs';
131
+ proofsDone: number;
132
+ proofsTotal: number;
133
+ /**
134
+ * approximate time left in seconds.
135
+ * Only computed after the first block
136
+ * is done
137
+ * */
138
+ approxTimeLeftS?: number;
139
+ } | {
140
+ name: 'waiting-for-verification';
141
+ };
142
+ type StepData = {
143
+ timestampS: number;
144
+ epoch: number;
145
+ attestors: AttestorData[];
146
+ };
147
+ export type CreateStep = ({
148
+ name: 'creating';
149
+ } & StepData) | ({
150
+ name: 'attestor-progress';
151
+ currentAttestor: AttestorData;
152
+ step: ProofGenerationStep;
153
+ } & StepData) | {
154
+ name: 'attestor-done';
155
+ timestampS: number;
156
+ epoch: number;
157
+ attestorsLeft: AttestorData[];
158
+ claimData: ProviderClaimData;
159
+ signaturesDone: string[];
160
+ };
161
+ export {};