@shielded-x402/client 0.2.1 → 0.2.2

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 (58) hide show
  1. package/dist/circuits/spend_change.json +156 -156
  2. package/package.json +3 -3
  3. package/dist/packages/shared-types/src/crypto-spec.d.ts +0 -16
  4. package/dist/packages/shared-types/src/crypto-spec.d.ts.map +0 -1
  5. package/dist/packages/shared-types/src/crypto-spec.js +0 -15
  6. package/dist/packages/shared-types/src/crypto-spec.js.map +0 -1
  7. package/dist/packages/shared-types/src/index.d.ts +0 -4
  8. package/dist/packages/shared-types/src/index.d.ts.map +0 -1
  9. package/dist/packages/shared-types/src/index.js +0 -4
  10. package/dist/packages/shared-types/src/index.js.map +0 -1
  11. package/dist/packages/shared-types/src/types.d.ts +0 -115
  12. package/dist/packages/shared-types/src/types.d.ts.map +0 -1
  13. package/dist/packages/shared-types/src/types.js +0 -2
  14. package/dist/packages/shared-types/src/types.js.map +0 -1
  15. package/dist/packages/shared-types/src/x402.d.ts +0 -20
  16. package/dist/packages/shared-types/src/x402.d.ts.map +0 -1
  17. package/dist/packages/shared-types/src/x402.js +0 -96
  18. package/dist/packages/shared-types/src/x402.js.map +0 -1
  19. package/dist/sdk/client/src/client.d.ts +0 -26
  20. package/dist/sdk/client/src/client.d.ts.map +0 -1
  21. package/dist/sdk/client/src/client.js +0 -174
  22. package/dist/sdk/client/src/client.js.map +0 -1
  23. package/dist/sdk/client/src/crypto.d.ts +0 -5
  24. package/dist/sdk/client/src/crypto.d.ts.map +0 -1
  25. package/dist/sdk/client/src/crypto.js +0 -15
  26. package/dist/sdk/client/src/crypto.js.map +0 -1
  27. package/dist/sdk/client/src/index.d.ts +0 -10
  28. package/dist/sdk/client/src/index.d.ts.map +0 -1
  29. package/dist/sdk/client/src/index.js +0 -10
  30. package/dist/sdk/client/src/index.js.map +0 -1
  31. package/dist/sdk/client/src/indexer.d.ts +0 -22
  32. package/dist/sdk/client/src/indexer.d.ts.map +0 -1
  33. package/dist/sdk/client/src/indexer.js +0 -20
  34. package/dist/sdk/client/src/indexer.js.map +0 -1
  35. package/dist/sdk/client/src/merkle.d.ts +0 -11
  36. package/dist/sdk/client/src/merkle.d.ts.map +0 -1
  37. package/dist/sdk/client/src/merkle.js +0 -63
  38. package/dist/sdk/client/src/merkle.js.map +0 -1
  39. package/dist/sdk/client/src/notes.d.ts +0 -19
  40. package/dist/sdk/client/src/notes.d.ts.map +0 -1
  41. package/dist/sdk/client/src/notes.js +0 -105
  42. package/dist/sdk/client/src/notes.js.map +0 -1
  43. package/dist/sdk/client/src/proofProvider.d.ts +0 -33
  44. package/dist/sdk/client/src/proofProvider.d.ts.map +0 -1
  45. package/dist/sdk/client/src/proofProvider.js +0 -207
  46. package/dist/sdk/client/src/proofProvider.js.map +0 -1
  47. package/dist/sdk/client/src/relayerFetch.d.ts +0 -36
  48. package/dist/sdk/client/src/relayerFetch.d.ts.map +0 -1
  49. package/dist/sdk/client/src/relayerFetch.js +0 -195
  50. package/dist/sdk/client/src/relayerFetch.js.map +0 -1
  51. package/dist/sdk/client/src/shieldedFetch.d.ts +0 -39
  52. package/dist/sdk/client/src/shieldedFetch.d.ts.map +0 -1
  53. package/dist/sdk/client/src/shieldedFetch.js +0 -88
  54. package/dist/sdk/client/src/shieldedFetch.js.map +0 -1
  55. package/dist/sdk/client/src/types.d.ts +0 -57
  56. package/dist/sdk/client/src/types.d.ts.map +0 -1
  57. package/dist/sdk/client/src/types.js +0 -2
  58. package/dist/sdk/client/src/types.js.map +0 -1
@@ -1,195 +0,0 @@
1
- import { parsePaymentRequiredEnvelope, parsePaymentRequiredHeader, RELAYER_ROUTES, X402_HEADERS } from '@shielded-x402/shared-types';
2
- function normalizeInput(input) {
3
- if (typeof input === 'string')
4
- return input;
5
- return input.toString();
6
- }
7
- function headersToRecord(headers) {
8
- if (!headers)
9
- return {};
10
- const out = {};
11
- const cast = new Headers(headers);
12
- cast.forEach((value, key) => {
13
- out[key] = value;
14
- });
15
- return out;
16
- }
17
- function bytesToBase64(bytes) {
18
- return Buffer.from(bytes).toString('base64');
19
- }
20
- function serializedToFetchInit(method, serialized) {
21
- const init = {
22
- method,
23
- headers: serialized.headers
24
- };
25
- if (method !== 'GET' && method !== 'HEAD' && serialized.bodyBase64 !== undefined) {
26
- init.body = Buffer.from(serialized.bodyBase64, 'base64');
27
- }
28
- return init;
29
- }
30
- async function requestShieldedRequirementFromRelayer(baseFetch, relayerEndpoint, relayerChallengePath, merchantRequest, merchantPaymentRequiredHeader) {
31
- const challengeRequest = {
32
- merchantRequest,
33
- merchantPaymentRequiredHeader
34
- };
35
- const response = await baseFetch(`${relayerEndpoint.replace(/\/$/, '')}${relayerChallengePath}`, {
36
- method: 'POST',
37
- headers: {
38
- 'content-type': 'application/json'
39
- },
40
- body: JSON.stringify(challengeRequest)
41
- });
42
- if (!response.ok) {
43
- const body = await response.text();
44
- throw new Error(`relayer challenge request failed: ${response.status} ${body}`);
45
- }
46
- const payload = (await response.json());
47
- if (payload.requirement) {
48
- return payload.requirement;
49
- }
50
- if (payload.paymentRequiredHeader) {
51
- return parsePaymentRequiredHeader(payload.paymentRequiredHeader);
52
- }
53
- throw new Error('relayer challenge response missing requirement');
54
- }
55
- async function serializeMerchantRequestBody(method, headers, body) {
56
- const normalizedMethod = method.toUpperCase();
57
- const supportsBody = normalizedMethod !== 'GET' && normalizedMethod !== 'HEAD';
58
- const requestInit = {
59
- method: normalizedMethod
60
- };
61
- if (headers !== undefined) {
62
- requestInit.headers = headers;
63
- }
64
- if (supportsBody && body !== undefined && body !== null) {
65
- requestInit.body = body;
66
- }
67
- const request = new Request('http://relay.local', requestInit);
68
- const serializedHeaders = headersToRecord(request.headers);
69
- if (!supportsBody || body === undefined || body === null) {
70
- return { headers: serializedHeaders };
71
- }
72
- const bytes = new Uint8Array(await request.arrayBuffer());
73
- return {
74
- headers: serializedHeaders,
75
- bodyBase64: bytesToBase64(bytes)
76
- };
77
- }
78
- function toRelayResultResponse(relayResponse) {
79
- const settlementIdHeader = { 'x-relayer-settlement-id': relayResponse.settlementId };
80
- if (!relayResponse.merchantResult) {
81
- const status = relayResponse.status === 'DONE' ? 200 : 502;
82
- return new Response(JSON.stringify(relayResponse), {
83
- status,
84
- headers: {
85
- ...settlementIdHeader,
86
- 'content-type': 'application/json'
87
- }
88
- });
89
- }
90
- return new Response(Buffer.from(relayResponse.merchantResult.bodyBase64, 'base64'), {
91
- status: relayResponse.merchantResult.status,
92
- headers: {
93
- ...relayResponse.merchantResult.headers,
94
- ...settlementIdHeader
95
- }
96
- });
97
- }
98
- export function createRelayedShieldedFetch(config) {
99
- const baseFetch = config.fetchImpl ?? fetch;
100
- const relayerPath = config.relayerPath ?? RELAYER_ROUTES.pay;
101
- const relayerChallengePath = config.relayerChallengePath ?? RELAYER_ROUTES.challenge;
102
- return async (input, init) => {
103
- const normalizedInput = normalizeInput(input);
104
- const requestInit = init ?? {};
105
- const method = (requestInit.method ?? 'GET').toUpperCase();
106
- const serializedRequest = await serializeMerchantRequestBody(method, requestInit.headers, requestInit.body);
107
- const baseMerchantRequest = {
108
- url: normalizedInput,
109
- method,
110
- headers: serializedRequest.headers,
111
- ...(serializedRequest.bodyBase64 !== undefined
112
- ? { bodyBase64: serializedRequest.bodyBase64 }
113
- : {})
114
- };
115
- const first = await baseFetch(normalizedInput, serializedToFetchInit(method, serializedRequest));
116
- if (first.status !== 402)
117
- return first;
118
- const merchantRequiredHeader = first.headers.get(X402_HEADERS.paymentRequired);
119
- if (!merchantRequiredHeader) {
120
- throw new Error(`missing ${X402_HEADERS.paymentRequired} header`);
121
- }
122
- parsePaymentRequiredEnvelope(merchantRequiredHeader);
123
- let requirement;
124
- let parsedRequirement;
125
- try {
126
- parsedRequirement = config.sdk.parse402Response(first).requirement;
127
- }
128
- catch {
129
- parsedRequirement = undefined;
130
- }
131
- if (parsedRequirement?.rail === 'shielded-usdc') {
132
- requirement = parsedRequirement;
133
- }
134
- else {
135
- const challengeUrl = config.challengeUrlResolver?.(parsedRequirement
136
- ? {
137
- input: normalizedInput,
138
- requirement: parsedRequirement
139
- }
140
- : {
141
- input: normalizedInput
142
- });
143
- try {
144
- requirement = await requestShieldedRequirementFromRelayer(baseFetch, config.relayerEndpoint, relayerChallengePath, {
145
- ...baseMerchantRequest,
146
- ...(challengeUrl ? { challengeUrl } : {})
147
- }, merchantRequiredHeader);
148
- }
149
- catch (error) {
150
- if (parsedRequirement && config.onUnsupportedRail) {
151
- return config.onUnsupportedRail({
152
- input: normalizedInput,
153
- init: requestInit,
154
- requirement: parsedRequirement,
155
- challengeResponse: first
156
- });
157
- }
158
- throw error;
159
- }
160
- }
161
- const context = await config.resolveContext({
162
- input: normalizedInput,
163
- init: requestInit,
164
- requirement,
165
- challengeResponse: first
166
- });
167
- const prepared = await config.sdk.prepare402Payment(requirement, context.note, context.witness, context.payerPkHash, serializedRequest.headers);
168
- const paymentSignatureHeader = prepared.headers.get(X402_HEADERS.paymentSignature);
169
- if (!paymentSignatureHeader) {
170
- throw new Error('failed to build relayer payment headers');
171
- }
172
- const challengeUrl = config.challengeUrlResolver?.({
173
- input: normalizedInput,
174
- requirement
175
- });
176
- const relayRequest = {
177
- merchantRequest: {
178
- ...baseMerchantRequest,
179
- ...(challengeUrl ? { challengeUrl } : {})
180
- },
181
- requirement,
182
- paymentSignatureHeader
183
- };
184
- const relayerResponse = await baseFetch(`${config.relayerEndpoint.replace(/\/$/, '')}${relayerPath}`, {
185
- method: 'POST',
186
- headers: {
187
- 'content-type': 'application/json'
188
- },
189
- body: JSON.stringify(relayRequest)
190
- });
191
- const relayPayload = (await relayerResponse.json());
192
- return toRelayResultResponse(relayPayload);
193
- };
194
- }
195
- //# sourceMappingURL=relayerFetch.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"relayerFetch.js","sourceRoot":"","sources":["../../../../src/relayerFetch.ts"],"names":[],"mappings":"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"}
@@ -1,39 +0,0 @@
1
- import { type Hex, type PaymentRequirement, type ShieldedNote } from '@shielded-x402/shared-types';
2
- import { ShieldedClientSDK } from './client.js';
3
- import type { MerkleWitness } from './merkle.js';
4
- export interface ShieldedFetchContext {
5
- note: ShieldedNote;
6
- witness: MerkleWitness;
7
- payerPkHash: Hex;
8
- }
9
- export interface ResolveShieldedContextArgs {
10
- input: string;
11
- init: RequestInit;
12
- requirement: PaymentRequirement;
13
- challengeResponse: Response;
14
- }
15
- export interface UnsupportedRailArgs {
16
- input: string;
17
- init: RequestInit;
18
- requirement: PaymentRequirement;
19
- challengeResponse: Response;
20
- }
21
- export interface CreateShieldedFetchConfig {
22
- sdk: ShieldedClientSDK;
23
- resolveContext: (args: ResolveShieldedContextArgs) => Promise<ShieldedFetchContext>;
24
- onUnsupportedRail?: (args: UnsupportedRailArgs) => Promise<Response>;
25
- prefetchRequirement?: (args: {
26
- input: string;
27
- init: RequestInit;
28
- }) => Promise<PaymentRequirement | null>;
29
- fetchImpl?: typeof fetch;
30
- relayerEndpoint?: string;
31
- relayerPath?: string;
32
- challengeUrlResolver?: (args: {
33
- input: string;
34
- requirement?: PaymentRequirement;
35
- }) => string | undefined;
36
- }
37
- export type ShieldedFetch = (input: string | URL, init?: RequestInit) => Promise<Response>;
38
- export declare function createShieldedFetch(config: CreateShieldedFetchConfig): ShieldedFetch;
39
- //# sourceMappingURL=shieldedFetch.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"shieldedFetch.d.ts","sourceRoot":"","sources":["../../../../src/shieldedFetch.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,GAAG,EACR,KAAK,kBAAkB,EACvB,KAAK,YAAY,EAClB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAMjD,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,YAAY,CAAC;IACnB,OAAO,EAAE,aAAa,CAAC;IACvB,WAAW,EAAE,GAAG,CAAC;CAClB;AAED,MAAM,WAAW,0BAA0B;IACzC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,WAAW,CAAC;IAClB,WAAW,EAAE,kBAAkB,CAAC;IAChC,iBAAiB,EAAE,QAAQ,CAAC;CAC7B;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,WAAW,CAAC;IAClB,WAAW,EAAE,kBAAkB,CAAC;IAChC,iBAAiB,EAAE,QAAQ,CAAC;CAC7B;AAED,MAAM,WAAW,yBAAyB;IACxC,GAAG,EAAE,iBAAiB,CAAC;IACvB,cAAc,EAAE,CAAC,IAAI,EAAE,0BAA0B,KAAK,OAAO,CAAC,oBAAoB,CAAC,CAAC;IACpF,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,mBAAmB,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;IACrE,mBAAmB,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,WAAW,CAAA;KAAE,KAAK,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAAC;IACzG,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oBAAoB,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,kBAAkB,CAAA;KAAE,KAAK,MAAM,GAAG,SAAS,CAAC;CAC1G;AAED,MAAM,MAAM,aAAa,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,GAAG,EAAE,IAAI,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;AAO3F,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,yBAAyB,GAAG,aAAa,CAiGpF"}
@@ -1,88 +0,0 @@
1
- import { X402_HEADERS, buildPaymentRequiredHeader } from '@shielded-x402/shared-types';
2
- import { createRelayedShieldedFetch } from './relayerFetch.js';
3
- const normalizeInput = (input) => {
4
- if (typeof input === 'string')
5
- return input;
6
- return input.toString();
7
- };
8
- export function createShieldedFetch(config) {
9
- if (config.relayerEndpoint) {
10
- const relayedConfig = {
11
- sdk: config.sdk,
12
- relayerEndpoint: config.relayerEndpoint,
13
- resolveContext: config.resolveContext
14
- };
15
- if (config.onUnsupportedRail) {
16
- relayedConfig.onUnsupportedRail = config.onUnsupportedRail;
17
- }
18
- if (config.relayerPath) {
19
- relayedConfig.relayerPath = config.relayerPath;
20
- }
21
- if (config.fetchImpl) {
22
- relayedConfig.fetchImpl = config.fetchImpl;
23
- }
24
- if (config.challengeUrlResolver) {
25
- relayedConfig.challengeUrlResolver = config.challengeUrlResolver;
26
- }
27
- return createRelayedShieldedFetch(relayedConfig);
28
- }
29
- const baseFetch = config.fetchImpl ?? fetch;
30
- return async (input, init) => {
31
- const normalizedInput = normalizeInput(input);
32
- const requestInit = init ?? {};
33
- let first = null;
34
- if (config.prefetchRequirement) {
35
- const prefetched = await config.prefetchRequirement({
36
- input: normalizedInput,
37
- init: requestInit
38
- });
39
- if (prefetched?.rail === 'shielded-usdc') {
40
- const syntheticChallenge = new Response(null, {
41
- status: 402,
42
- headers: {
43
- [X402_HEADERS.paymentRequired]: buildPaymentRequiredHeader(prefetched)
44
- }
45
- });
46
- const context = await config.resolveContext({
47
- input: normalizedInput,
48
- init: requestInit,
49
- requirement: prefetched,
50
- challengeResponse: syntheticChallenge
51
- });
52
- const prepared = await config.sdk.prepare402Payment(prefetched, context.note, context.witness, context.payerPkHash, requestInit.headers);
53
- first = await baseFetch(normalizedInput, {
54
- ...requestInit,
55
- headers: prepared.headers
56
- });
57
- if (first.status !== 402) {
58
- return first;
59
- }
60
- }
61
- }
62
- if (!first) {
63
- first = await baseFetch(normalizedInput, requestInit);
64
- }
65
- if (first.status !== 402)
66
- return first;
67
- const parsed = config.sdk.parse402Response(first);
68
- if (parsed.requirement.rail !== 'shielded-usdc') {
69
- if (config.onUnsupportedRail) {
70
- return config.onUnsupportedRail({
71
- input: normalizedInput,
72
- init: requestInit,
73
- requirement: parsed.requirement,
74
- challengeResponse: first
75
- });
76
- }
77
- return first;
78
- }
79
- const context = await config.resolveContext({
80
- input: normalizedInput,
81
- init: requestInit,
82
- requirement: parsed.requirement,
83
- challengeResponse: first
84
- });
85
- return config.sdk.complete402Payment(normalizedInput, requestInit, parsed.requirement, context.note, context.witness, context.payerPkHash, baseFetch);
86
- };
87
- }
88
- //# sourceMappingURL=shieldedFetch.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"shieldedFetch.js","sourceRoot":"","sources":["../../../../src/shieldedFetch.ts"],"names":[],"mappings":"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"}
@@ -1,57 +0,0 @@
1
- import type { Hex, PaymentRequirement, ShieldedNote, ShieldedPaymentResponse } from '@shielded-x402/shared-types';
2
- import type { MerkleWitness } from './merkle.js';
3
- export interface ProofProviderRequest {
4
- note: ShieldedNote;
5
- witness: MerkleWitness;
6
- nullifierSecret: Hex;
7
- merchantPubKey: Hex;
8
- merchantRho: Hex;
9
- changePkHash: Hex;
10
- changeRho: Hex;
11
- amount: bigint;
12
- challengeNonce: Hex;
13
- merchantAddress: Hex;
14
- expectedPublicInputs: Hex[];
15
- }
16
- export interface ProofProviderResult {
17
- proof: Hex;
18
- publicInputs?: Hex[];
19
- }
20
- export interface ProofProvider {
21
- generateProof: (request: ProofProviderRequest) => Promise<ProofProviderResult>;
22
- }
23
- export interface SpendBuildParams {
24
- note: ShieldedNote;
25
- witness: MerkleWitness;
26
- nullifierSecret: Hex;
27
- merchantPubKey: Hex;
28
- merchantRho?: Hex;
29
- merchantAddress: Hex;
30
- changeRho?: Hex;
31
- amount: bigint;
32
- challengeNonce: Hex;
33
- encryptedReceipt: Hex;
34
- }
35
- export interface SpendProofBundle {
36
- response: ShieldedPaymentResponse;
37
- changeNote: ShieldedNote;
38
- merchantRho: Hex;
39
- }
40
- export interface ShieldedClientConfig {
41
- endpoint: string;
42
- signer: (message: string) => Promise<string>;
43
- depositFn?: (amount: bigint, commitment: Hex) => Promise<{
44
- txHash: Hex;
45
- leafIndex: number;
46
- }>;
47
- proofProvider?: ProofProvider;
48
- }
49
- export interface Parsed402 {
50
- requirement: PaymentRequirement;
51
- }
52
- export interface Prepared402Payment {
53
- requirement: PaymentRequirement;
54
- headers: Headers;
55
- response: ShieldedPaymentResponse;
56
- }
57
- //# sourceMappingURL=types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,kBAAkB,EAAE,YAAY,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AAClH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,YAAY,CAAC;IACnB,OAAO,EAAE,aAAa,CAAC;IACvB,eAAe,EAAE,GAAG,CAAC;IACrB,cAAc,EAAE,GAAG,CAAC;IACpB,WAAW,EAAE,GAAG,CAAC;IACjB,YAAY,EAAE,GAAG,CAAC;IAClB,SAAS,EAAE,GAAG,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,GAAG,CAAC;IACpB,eAAe,EAAE,GAAG,CAAC;IACrB,oBAAoB,EAAE,GAAG,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,GAAG,CAAC;IACX,YAAY,CAAC,EAAE,GAAG,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,aAAa;IAC5B,aAAa,EAAE,CAAC,OAAO,EAAE,oBAAoB,KAAK,OAAO,CAAC,mBAAmB,CAAC,CAAC;CAChF;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,YAAY,CAAC;IACnB,OAAO,EAAE,aAAa,CAAC;IACvB,eAAe,EAAE,GAAG,CAAC;IACrB,cAAc,EAAE,GAAG,CAAC;IACpB,WAAW,CAAC,EAAE,GAAG,CAAC;IAClB,eAAe,EAAE,GAAG,CAAC;IACrB,SAAS,CAAC,EAAE,GAAG,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,GAAG,CAAC;IACpB,gBAAgB,EAAE,GAAG,CAAC;CACvB;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,uBAAuB,CAAC;IAClC,UAAU,EAAE,YAAY,CAAC;IACzB,WAAW,EAAE,GAAG,CAAC;CAClB;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAC7C,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,KAAK,OAAO,CAAC;QAAE,MAAM,EAAE,GAAG,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC7F,aAAa,CAAC,EAAE,aAAa,CAAC;CAC/B;AAED,MAAM,WAAW,SAAS;IACxB,WAAW,EAAE,kBAAkB,CAAC;CACjC;AAED,MAAM,WAAW,kBAAkB;IACjC,WAAW,EAAE,kBAAkB,CAAC;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,uBAAuB,CAAC;CACnC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/types.ts"],"names":[],"mappings":""}