@reclaimprotocol/js-sdk 0.1.1 → 0.1.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.
- package/dist/index.d.ts +18 -0
- package/dist/index.js +130 -12
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/readme/depemdency-diagram.svg +0 -4
- package/readme/usage-flow-2.svg +0 -1
- package/readme/usage-flow-3.svg +0 -1
- package/readme/usage-flow.svg +0 -1
package/dist/index.d.ts
CHANGED
|
@@ -7,6 +7,7 @@ interface ProviderV2 {
|
|
|
7
7
|
method?: 'GET' | 'POST';
|
|
8
8
|
loginUrl: string;
|
|
9
9
|
responseSelections: {
|
|
10
|
+
invert: boolean;
|
|
10
11
|
responseMatch: string;
|
|
11
12
|
xPath?: string | undefined;
|
|
12
13
|
jsonPath?: string | undefined;
|
|
@@ -33,6 +34,8 @@ interface ProviderV2 {
|
|
|
33
34
|
};
|
|
34
35
|
geoLocation?: string;
|
|
35
36
|
matchType?: string;
|
|
37
|
+
injectionType: string;
|
|
38
|
+
disableRequestReplay: boolean;
|
|
36
39
|
}
|
|
37
40
|
interface ResponseSelection {
|
|
38
41
|
JSONPath: string;
|
|
@@ -98,6 +101,7 @@ interface Payload {
|
|
|
98
101
|
url: string;
|
|
99
102
|
};
|
|
100
103
|
responseSelections: {
|
|
104
|
+
invert: boolean;
|
|
101
105
|
responseMatch: string;
|
|
102
106
|
xPath?: string;
|
|
103
107
|
jsonPath?: string;
|
|
@@ -116,6 +120,8 @@ interface Payload {
|
|
|
116
120
|
};
|
|
117
121
|
geoLocation?: string;
|
|
118
122
|
matchType?: string;
|
|
123
|
+
injectionType: string;
|
|
124
|
+
disableRequestReplay: boolean;
|
|
119
125
|
}
|
|
120
126
|
interface Context {
|
|
121
127
|
contextAddress: string;
|
|
@@ -155,6 +161,17 @@ type NoReturn = void;
|
|
|
155
161
|
|
|
156
162
|
declare class Reclaim {
|
|
157
163
|
static verifySignedProof(proof: Proof): Promise<boolean>;
|
|
164
|
+
static transformForOnchain(proof: Proof): {
|
|
165
|
+
claimInfo: {
|
|
166
|
+
[k: string]: string;
|
|
167
|
+
};
|
|
168
|
+
signedClaim: {
|
|
169
|
+
claim: {
|
|
170
|
+
[k: string]: string | number;
|
|
171
|
+
};
|
|
172
|
+
signatures: string[];
|
|
173
|
+
};
|
|
174
|
+
};
|
|
158
175
|
static ProofRequest: {
|
|
159
176
|
new (applicationId: string, options?: ProofRequestOptions): {
|
|
160
177
|
applicationId: ApplicationId;
|
|
@@ -164,6 +181,7 @@ declare class Reclaim {
|
|
|
164
181
|
statusUrl?: string | undefined;
|
|
165
182
|
context: Context;
|
|
166
183
|
requestedProofs?: RequestedProofs | undefined;
|
|
184
|
+
providerId?: string | undefined;
|
|
167
185
|
intervals: Map<string, NodeJS.Timer>;
|
|
168
186
|
addContext(address: string, message: string): NoReturn;
|
|
169
187
|
setAppCallbackUrl(url: string): NoReturn;
|
package/dist/index.js
CHANGED
|
@@ -752,11 +752,12 @@ function getContract(chainId) {
|
|
|
752
752
|
var import_canonicalize = __toESM(require("canonicalize"));
|
|
753
753
|
|
|
754
754
|
// src/constants.ts
|
|
755
|
+
var BACKEND_BASE_URL = "https://api.reclaimprotocol.org";
|
|
755
756
|
var constants = {
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
|
|
757
|
+
GET_PROVIDERS_BY_ID_API: BACKEND_BASE_URL + "/api/applications/providers",
|
|
758
|
+
DEFAULT_RECLAIM_CALLBACK_URL: BACKEND_BASE_URL + "/api/sdk/callback?callbackId=",
|
|
759
|
+
DEFAULT_RECLAIM_STATUS_URL: BACKEND_BASE_URL + "/api/sdk/session/",
|
|
760
|
+
RECLAIM_SHARE_URL: "https://share.reclaimprotocol.org/instant/?template="
|
|
760
761
|
};
|
|
761
762
|
|
|
762
763
|
// src/errors.ts
|
|
@@ -802,6 +803,24 @@ var InvalidSignatureError = class extends Error {
|
|
|
802
803
|
this.name = "InvalidSignatureError";
|
|
803
804
|
}
|
|
804
805
|
};
|
|
806
|
+
var UpdateSessionError = class extends Error {
|
|
807
|
+
constructor(message) {
|
|
808
|
+
super(message);
|
|
809
|
+
this.name = "UpdateSessionError";
|
|
810
|
+
}
|
|
811
|
+
};
|
|
812
|
+
var CreateSessionError = class extends Error {
|
|
813
|
+
constructor(message) {
|
|
814
|
+
super(message);
|
|
815
|
+
this.name = "CreateSessionError";
|
|
816
|
+
}
|
|
817
|
+
};
|
|
818
|
+
var ProviderFailedError = class extends Error {
|
|
819
|
+
constructor(message) {
|
|
820
|
+
super(message);
|
|
821
|
+
this.name = "ProviderFailedError";
|
|
822
|
+
}
|
|
823
|
+
};
|
|
805
824
|
|
|
806
825
|
// src/utils.ts
|
|
807
826
|
function validateURL(url) {
|
|
@@ -848,7 +867,7 @@ function assertValidSignedClaim(claim, expectedWitnessAddresses) {
|
|
|
848
867
|
function getShortenedUrl(url) {
|
|
849
868
|
return __async(this, null, function* () {
|
|
850
869
|
try {
|
|
851
|
-
const response = yield fetch("
|
|
870
|
+
const response = yield fetch(BACKEND_BASE_URL + "/api/sdk/shortener", {
|
|
852
871
|
method: "POST",
|
|
853
872
|
headers: {
|
|
854
873
|
"Content-Type": "application/json"
|
|
@@ -865,6 +884,53 @@ function getShortenedUrl(url) {
|
|
|
865
884
|
}
|
|
866
885
|
});
|
|
867
886
|
}
|
|
887
|
+
function createSession(sessionId, appId, providerId) {
|
|
888
|
+
return __async(this, null, function* () {
|
|
889
|
+
try {
|
|
890
|
+
const response = yield fetch(BACKEND_BASE_URL + "/api/sdk/create-session/", {
|
|
891
|
+
method: "POST",
|
|
892
|
+
headers: {
|
|
893
|
+
"Content-Type": "application/json"
|
|
894
|
+
},
|
|
895
|
+
body: JSON.stringify({
|
|
896
|
+
sessionId,
|
|
897
|
+
appId,
|
|
898
|
+
providerId
|
|
899
|
+
})
|
|
900
|
+
});
|
|
901
|
+
if (!response.ok) {
|
|
902
|
+
throw new CreateSessionError("Error creating session with sessionId: " + sessionId);
|
|
903
|
+
}
|
|
904
|
+
const res = yield response.json();
|
|
905
|
+
return res;
|
|
906
|
+
} catch (err) {
|
|
907
|
+
throw new CreateSessionError("Error creating session with sessionId: " + sessionId);
|
|
908
|
+
}
|
|
909
|
+
});
|
|
910
|
+
}
|
|
911
|
+
function updateSession(sessionId, status) {
|
|
912
|
+
return __async(this, null, function* () {
|
|
913
|
+
try {
|
|
914
|
+
const response = yield fetch(BACKEND_BASE_URL + "/api/sdk/update-session/", {
|
|
915
|
+
method: "POST",
|
|
916
|
+
headers: {
|
|
917
|
+
"Content-Type": "application/json"
|
|
918
|
+
},
|
|
919
|
+
body: JSON.stringify({
|
|
920
|
+
sessionId,
|
|
921
|
+
status
|
|
922
|
+
})
|
|
923
|
+
});
|
|
924
|
+
if (!response.ok) {
|
|
925
|
+
throw new UpdateSessionError("Error updating session with sessionId: " + sessionId);
|
|
926
|
+
}
|
|
927
|
+
const res = yield response.json();
|
|
928
|
+
return res;
|
|
929
|
+
} catch (err) {
|
|
930
|
+
throw new UpdateSessionError("Error updating session with sessionId: " + sessionId);
|
|
931
|
+
}
|
|
932
|
+
});
|
|
933
|
+
}
|
|
868
934
|
function fetchProvidersByAppId(appId) {
|
|
869
935
|
return __async(this, null, function* () {
|
|
870
936
|
try {
|
|
@@ -905,8 +971,10 @@ function generateRequestedProofs(provider, context, callbackUrl, statusUrl, sess
|
|
|
905
971
|
customInjection: provider.customInjection,
|
|
906
972
|
bodySniff: provider.bodySniff,
|
|
907
973
|
userAgent: provider.userAgent,
|
|
908
|
-
geoLocation: provider.geoLocation
|
|
909
|
-
matchType: provider.matchType
|
|
974
|
+
geoLocation: provider.geoLocation,
|
|
975
|
+
matchType: provider.matchType,
|
|
976
|
+
injectionType: provider.injectionType,
|
|
977
|
+
disableRequestReplay: provider.disableRequestReplay
|
|
910
978
|
}
|
|
911
979
|
}];
|
|
912
980
|
return {
|
|
@@ -982,6 +1050,25 @@ var _Reclaim = class _Reclaim {
|
|
|
982
1050
|
return true;
|
|
983
1051
|
});
|
|
984
1052
|
}
|
|
1053
|
+
static transformForOnchain(proof) {
|
|
1054
|
+
const claimInfoBuilder = /* @__PURE__ */ new Map([
|
|
1055
|
+
["context", proof.claimData.context],
|
|
1056
|
+
["parameters", proof.claimData.parameters],
|
|
1057
|
+
["provider", proof.claimData.provider]
|
|
1058
|
+
]);
|
|
1059
|
+
const claimInfo = Object.fromEntries(claimInfoBuilder);
|
|
1060
|
+
const claimBuilder = /* @__PURE__ */ new Map([
|
|
1061
|
+
["epoch", proof.claimData.epoch],
|
|
1062
|
+
["identifier", proof.claimData.identifier],
|
|
1063
|
+
["owner", proof.claimData.owner],
|
|
1064
|
+
["timestampS", proof.claimData.timestampS]
|
|
1065
|
+
]);
|
|
1066
|
+
const signedClaim = {
|
|
1067
|
+
claim: Object.fromEntries(claimBuilder),
|
|
1068
|
+
signatures: proof.signatures
|
|
1069
|
+
};
|
|
1070
|
+
return { claimInfo, signedClaim };
|
|
1071
|
+
}
|
|
985
1072
|
};
|
|
986
1073
|
_Reclaim.ProofRequest = class {
|
|
987
1074
|
constructor(applicationId, options) {
|
|
@@ -1018,7 +1105,9 @@ _Reclaim.ProofRequest = class {
|
|
|
1018
1105
|
return __async(this, null, function* () {
|
|
1019
1106
|
try {
|
|
1020
1107
|
if (!this.requestedProofs) {
|
|
1021
|
-
throw new BuildProofRequestError(
|
|
1108
|
+
throw new BuildProofRequestError(
|
|
1109
|
+
"Call buildProofRequest(providerId: string) first!"
|
|
1110
|
+
);
|
|
1022
1111
|
}
|
|
1023
1112
|
return this.requestedProofs;
|
|
1024
1113
|
} catch (err) {
|
|
@@ -1052,7 +1141,11 @@ _Reclaim.ProofRequest = class {
|
|
|
1052
1141
|
return __async(this, null, function* () {
|
|
1053
1142
|
try {
|
|
1054
1143
|
let providers = yield fetchProvidersByAppId(this.applicationId);
|
|
1055
|
-
const provider = validateProviderIdsAndReturnProviders(
|
|
1144
|
+
const provider = validateProviderIdsAndReturnProviders(
|
|
1145
|
+
providerId,
|
|
1146
|
+
providers
|
|
1147
|
+
);
|
|
1148
|
+
this.providerId = providerId;
|
|
1056
1149
|
this.requestedProofs = generateRequestedProofs(
|
|
1057
1150
|
provider,
|
|
1058
1151
|
this.context,
|
|
@@ -1074,7 +1167,9 @@ _Reclaim.ProofRequest = class {
|
|
|
1074
1167
|
try {
|
|
1075
1168
|
const requestedProofs = yield this.getRequestedProofs();
|
|
1076
1169
|
if (!requestedProofs) {
|
|
1077
|
-
throw new BuildProofRequestError(
|
|
1170
|
+
throw new BuildProofRequestError(
|
|
1171
|
+
"Requested proofs are not built yet. Call buildProofRequest(providerId: string) first!"
|
|
1172
|
+
);
|
|
1078
1173
|
}
|
|
1079
1174
|
if (!this.signature) {
|
|
1080
1175
|
throw new SignatureNotFoundError(
|
|
@@ -1091,6 +1186,7 @@ _Reclaim.ProofRequest = class {
|
|
|
1091
1186
|
template = replaceAll(template, "(", "%28");
|
|
1092
1187
|
template = replaceAll(template, ")", "%29");
|
|
1093
1188
|
template = yield getShortenedUrl(template);
|
|
1189
|
+
yield createSession(this.sessionId, this.applicationId, this.providerId);
|
|
1094
1190
|
return { requestUrl: template, statusUrl: this.getStatusUrl() };
|
|
1095
1191
|
} catch (error) {
|
|
1096
1192
|
logger.error("Error creating verification request:", error);
|
|
@@ -1106,12 +1202,21 @@ _Reclaim.ProofRequest = class {
|
|
|
1106
1202
|
const statusUrl = this.getStatusUrl();
|
|
1107
1203
|
if (statusUrl && this.sessionId) {
|
|
1108
1204
|
logger.info("Starting session");
|
|
1205
|
+
try {
|
|
1206
|
+
yield updateSession(this.sessionId, "SDK_STARTED" /* SDK_STARTED */);
|
|
1207
|
+
} catch (e) {
|
|
1208
|
+
logger.error(e);
|
|
1209
|
+
}
|
|
1109
1210
|
const interval = setInterval(() => __async(this, null, function* () {
|
|
1110
1211
|
try {
|
|
1111
1212
|
const res = yield fetch(statusUrl);
|
|
1112
1213
|
const data = yield res.json();
|
|
1113
1214
|
if (!data.session)
|
|
1114
1215
|
return;
|
|
1216
|
+
if (data.session.status === "FAILED" /* FAILED */)
|
|
1217
|
+
throw new ProviderFailedError();
|
|
1218
|
+
if (data.session.proofs.length === 0)
|
|
1219
|
+
return;
|
|
1115
1220
|
data.session.proofs.forEach((proof) => __async(this, null, function* () {
|
|
1116
1221
|
const verified = yield _Reclaim.verifySignedProof(proof);
|
|
1117
1222
|
if (!verified) {
|
|
@@ -1119,11 +1224,23 @@ _Reclaim.ProofRequest = class {
|
|
|
1119
1224
|
}
|
|
1120
1225
|
}));
|
|
1121
1226
|
if (onSuccessCallback) {
|
|
1227
|
+
try {
|
|
1228
|
+
yield updateSession(this.sessionId, "SDK_RECEIVED" /* SDK_RECEIVED */);
|
|
1229
|
+
} catch (e) {
|
|
1230
|
+
logger.error(e);
|
|
1231
|
+
}
|
|
1122
1232
|
onSuccessCallback(data.session.proofs);
|
|
1123
1233
|
}
|
|
1124
1234
|
clearInterval(this.intervals.get(this.sessionId));
|
|
1125
1235
|
this.intervals.delete(this.sessionId);
|
|
1126
1236
|
} catch (e) {
|
|
1237
|
+
if (!(e instanceof ProviderFailedError)) {
|
|
1238
|
+
try {
|
|
1239
|
+
yield updateSession(this.sessionId, "FAILED" /* FAILED */);
|
|
1240
|
+
} catch (e2) {
|
|
1241
|
+
logger.error(e2);
|
|
1242
|
+
}
|
|
1243
|
+
}
|
|
1127
1244
|
if (onFailureCallback) {
|
|
1128
1245
|
onFailureCallback(e);
|
|
1129
1246
|
}
|
|
@@ -1141,14 +1258,15 @@ _Reclaim.ProofRequest = class {
|
|
|
1141
1258
|
});
|
|
1142
1259
|
}
|
|
1143
1260
|
scheduleIntervalEndingTask(onFailureCallback) {
|
|
1144
|
-
setTimeout(() => {
|
|
1261
|
+
setTimeout(() => __async(this, null, function* () {
|
|
1145
1262
|
if (this.intervals.has(this.sessionId)) {
|
|
1146
1263
|
const message = "Interval ended without receiveing proofs";
|
|
1264
|
+
yield updateSession(this.sessionId, "FAILED" /* FAILED */);
|
|
1147
1265
|
onFailureCallback(new TimeoutError(message));
|
|
1148
1266
|
logger.warn(message);
|
|
1149
1267
|
clearInterval(this.intervals.get(this.sessionId));
|
|
1150
1268
|
}
|
|
1151
|
-
}, 1e3 * 60 * 5);
|
|
1269
|
+
}), 1e3 * 60 * 5);
|
|
1152
1270
|
}
|
|
1153
1271
|
};
|
|
1154
1272
|
var Reclaim = _Reclaim;
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/witness.ts","../src/Reclaim.ts","../src/utils.ts","../src/contract-types/contracts/factories/Reclaim__factory.ts","../src/contract-types/config.json","../src/smart-contract.ts","../src/constants.ts","../src/errors.ts"],"sourcesContent":["export * from './Reclaim';\nexport * from './interfaces';","import { ethers } from 'ethers';\nimport type { WitnessData } from './interfaces';\nimport type { ClaimID, ClaimInfo, CompleteClaimData } from './types';\n\ntype BeaconState = {\n witnesses: WitnessData[];\n epoch: number;\n witnessesRequiredForClaim: number;\n nextEpochTimestampS: number;\n};\n\nexport function fetchWitnessListForClaim(\n { witnesses, witnessesRequiredForClaim, epoch }: BeaconState,\n params: string | ClaimInfo,\n timestampS: number\n) {\n const identifier =\n typeof params === 'string' ? params : getIdentifierFromClaimInfo(params);\n const completeInput = [\n identifier,\n epoch.toString(),\n witnessesRequiredForClaim.toString(),\n timestampS.toString(),\n ].join('\\n');\n const completeHashStr = ethers.keccak256(strToUint8Array(completeInput));\n const completeHash = ethers.getBytes(completeHashStr);\n const completeHashView = uint8ArrayToDataView(completeHash);\n const witnessesLeft = [...witnesses];\n const selectedWitnesses: WitnessData[] = [];\n // we'll use 32 bits of the hash to select\n // each witness\n let byteOffset = 0;\n for (let i = 0; i < witnessesRequiredForClaim; i++) {\n const randomSeed = completeHashView.getUint32(byteOffset);\n const witnessIndex = randomSeed % witnessesLeft.length;\n const witness = witnessesLeft[witnessIndex] as WitnessData;\n selectedWitnesses.push(witness);\n\n // Remove the selected witness from the list of witnesses left\n witnessesLeft[witnessIndex] = witnessesLeft[\n witnessesLeft.length - 1\n ] as WitnessData;\n witnessesLeft.pop();\n byteOffset = (byteOffset + 4) % completeHash.length;\n }\n\n return selectedWitnesses;\n}\n\nexport function getIdentifierFromClaimInfo(info: ClaimInfo): ClaimID {\n const str = `${info.provider}\\n${info.parameters}\\n${info.context || ''}`;\n return ethers.keccak256(strToUint8Array(str)).toLowerCase();\n}\n\nexport function strToUint8Array(str: string) {\n return new TextEncoder().encode(str);\n}\n\nexport function uint8ArrayToDataView(arr: Uint8Array) {\n return new DataView(arr.buffer, arr.byteOffset, arr.byteLength);\n}\n\nexport function createSignDataForClaim(data: CompleteClaimData) {\n const identifier =\n 'identifier' in data ? data.identifier : getIdentifierFromClaimInfo(data);\n const lines = [\n identifier,\n data.owner.toLowerCase(),\n data.timestampS.toString(),\n data.epoch.toString(),\n ];\n\n return lines.join('\\n');\n}\n","import type { Proof, RequestedProofs, Context } from './interfaces'\nimport { getIdentifierFromClaimInfo } from './witness'\nimport type {\n AppCallbackUrl,\n ApplicationId,\n CreateVerificationRequest,\n NoReturn,\n OnFailureCallback,\n OnSuccessCallback,\n SessionId,\n Signature,\n SignedClaim,\n StatusUrl,\n ProofRequestOptions,\n StartSessionParams\n} from './types'\nimport { v4 } from 'uuid'\nimport { ethers } from 'ethers'\nimport canonicalize from 'canonicalize'\nimport {\n getWitnessesForClaim,\n assertValidSignedClaim,\n getShortenedUrl,\n fetchProvidersByAppId,\n generateRequestedProofs,\n validateProviderIdsAndReturnProviders,\n validateSignature,\n replaceAll,\n validateURL\n} from './utils'\nimport { constants } from './constants'\nimport P from 'pino'\nimport {\n BuildProofRequestError,\n ProofNotVerifiedError,\n SessionNotStartedError,\n SignatureNotFoundError,\n TimeoutError\n} from './errors'\n\nconst logger = P()\n\nexport class Reclaim {\n static async verifySignedProof (proof: Proof) {\n if (!proof.signatures.length) {\n throw new Error('No signatures')\n }\n const witnesses = await getWitnessesForClaim(\n proof.claimData.epoch,\n proof.identifier,\n proof.claimData.timestampS\n )\n\n try {\n // then hash the claim info with the encoded ctx to get the identifier\n const calculatedIdentifier = getIdentifierFromClaimInfo({\n parameters: JSON.parse(\n canonicalize(proof.claimData.parameters) as string\n ),\n provider: proof.claimData.provider,\n context: proof.claimData.context\n })\n proof.identifier = replaceAll(proof.identifier, '\"', '')\n // check if the identifier matches the one in the proof\n if (calculatedIdentifier !== proof.identifier) {\n throw new ProofNotVerifiedError('Identifier Mismatch')\n }\n\n const signedClaim: SignedClaim = {\n claim: {\n ...proof.claimData\n },\n signatures: proof.signatures.map(signature => {\n return ethers.getBytes(signature)\n })\n }\n\n // verify the witness signature\n assertValidSignedClaim(signedClaim, witnesses)\n } catch (e: Error | unknown) {\n logger.error(e)\n return false\n }\n\n return true\n }\n\n static ProofRequest = class {\n applicationId: ApplicationId\n signature?: Signature\n appCallbackUrl?: AppCallbackUrl\n sessionId: SessionId\n statusUrl?: StatusUrl\n context: Context = { contextAddress: '0x0', contextMessage: '' }\n requestedProofs?: RequestedProofs\n intervals: Map<string, NodeJS.Timer> = new Map()\n\n constructor (applicationId: string, options?: ProofRequestOptions) {\n this.applicationId = applicationId\n this.sessionId = options?.sessionId || v4().toString()\n logger.level = options?.log ? 'info' : 'silent'\n logger.info(\n `Initializing client with applicationId: ${this.applicationId} and sessionId: ${this.sessionId}`\n )\n }\n\n addContext (address: string, message: string): NoReturn {\n this.context = { contextAddress: address, contextMessage: message }\n }\n\n setAppCallbackUrl (url: string): NoReturn {\n validateURL(url)\n this.appCallbackUrl = url\n }\n\n setStatusUrl (url: string): NoReturn {\n validateURL(url)\n this.statusUrl = url\n }\n\n setSignature (signature: Signature): NoReturn {\n this.signature = signature\n }\n\n getAppCallbackUrl (): AppCallbackUrl {\n return (\n this.appCallbackUrl ||\n `${constants.DEFAULT_RECLAIM_CALLBACK_URL}${this.sessionId}`\n )\n }\n\n getStatusUrl (): StatusUrl {\n return (\n this.statusUrl ||\n `${constants.DEFAULT_RECLAIM_STATUS_URL}${this.sessionId}`\n )\n }\n\n async getRequestedProofs (): Promise<RequestedProofs> {\n try {\n if (!this.requestedProofs) {\n throw new BuildProofRequestError('Call buildProofRequest(providerId: string) first!')\n }\n return this.requestedProofs!\n } catch (err) {\n throw err\n }\n }\n\n async generateSignature (applicationSecret: string): Promise<Signature> {\n try {\n const wallet = new ethers.Wallet(applicationSecret)\n const signature: Signature = (await wallet.signMessage(\n ethers.getBytes(\n ethers.keccak256(\n new TextEncoder().encode(\n canonicalize(await this.getRequestedProofs())!\n )\n )\n )\n )) as unknown as Signature\n\n return signature\n } catch (err) {\n logger.error(err)\n throw new BuildProofRequestError(\n 'Error generating signature for applicationSecret: ' +\n applicationSecret\n )\n }\n }\n\n async buildProofRequest (providerId: string): Promise<RequestedProofs> {\n try {\n let providers = await fetchProvidersByAppId(this.applicationId)\n \n const provider = validateProviderIdsAndReturnProviders(providerId, providers)\n \n this.requestedProofs = generateRequestedProofs(\n provider,\n this.context,\n this.getAppCallbackUrl(),\n this.getStatusUrl(),\n this.sessionId\n )\n\n return this.requestedProofs\n } catch (err: Error | unknown) {\n logger.error(err)\n throw new BuildProofRequestError(\n 'Something went wrong while generating proof request'\n )\n }\n }\n\n async createVerificationRequest (): Promise<{statusUrl: StatusUrl, requestUrl: string}> {\n try {\n const requestedProofs = await this.getRequestedProofs()\n\n if (!requestedProofs) {\n throw new BuildProofRequestError('Requested proofs are not built yet. Call buildProofRequest(providerId: string) first!')\n }\n\n if (!this.signature) {\n throw new SignatureNotFoundError(\n 'Signature is not set. Use reclaim.setSignature(signature) to set the signature'\n )\n }\n\n validateSignature(requestedProofs, this.signature, this.applicationId)\n\n const templateData = {\n ...requestedProofs,\n signature: this.signature\n }\n let template = `${constants.RECLAIM_SHARE_URL}${encodeURIComponent(\n JSON.stringify(templateData)\n )}`\n template = replaceAll(template, '(', '%28')\n template = replaceAll(template, ')', '%29')\n template = await getShortenedUrl(template)\n\n return {requestUrl: template, statusUrl: this.getStatusUrl()}\n } catch (error) {\n logger.error('Error creating verification request:', error)\n throw error\n }\n }\n\n async startSession ({\n onSuccessCallback,\n onFailureCallback\n }: StartSessionParams) {\n const statusUrl = this.getStatusUrl()\n if (statusUrl && this.sessionId) {\n logger.info('Starting session')\n // TODO: add update session API to 'STARTED' state\n const interval = setInterval(async () => {\n try {\n const res = await fetch(statusUrl)\n const data = await res.json()\n\n if (!data.session) return\n\n data.session.proofs.forEach(async (proof: Proof) => {\n const verified = await Reclaim.verifySignedProof(proof)\n if (!verified) {\n throw new ProofNotVerifiedError()\n }\n })\n if (onSuccessCallback) {\n // TODO: add update session API to 'RECEIVED' state\n onSuccessCallback(data.session.proofs)\n }\n clearInterval(this.intervals.get(this.sessionId!))\n this.intervals.delete(this.sessionId!)\n } catch (e) {\n if (onFailureCallback) {\n // TODO: add update session API to 'FAILED' state\n onFailureCallback(e as Error)\n }\n clearInterval(this.intervals.get(this.sessionId!))\n this.intervals.delete(this.sessionId!)\n }\n }, 3000)\n\n this.intervals.set(this.sessionId, interval)\n this.scheduleIntervalEndingTask(onFailureCallback)\n } else {\n const message =\n \"Session can't be started due to undefined value of statusUrl and sessionId\"\n logger.error(message)\n throw new SessionNotStartedError(message)\n }\n }\n\n scheduleIntervalEndingTask (onFailureCallback: OnFailureCallback) {\n setTimeout(() => {\n if (this.intervals.has(this.sessionId)) {\n const message = 'Interval ended without receiveing proofs'\n // TODO: add update session API to 'FAILED' state\n onFailureCallback(new TimeoutError(message))\n logger.warn(message)\n clearInterval(this.intervals.get(this.sessionId!))\n }\n }, 1000 * 60 * 5)\n }\n }\n}\n","import URL from 'url-parse'\nimport type { ApplicationId, ParsedURL, SignedClaim, Signature } from './types'\nimport type { Context, ProviderV2, RequestedClaim, RequestedProofs, WitnessData } from './interfaces'\nimport { ethers } from 'ethers'\nimport { makeBeacon } from './smart-contract'\nimport { fetchWitnessListForClaim, createSignDataForClaim } from './witness'\nimport { v4 } from 'uuid'\nimport canonicalize from 'canonicalize'\nimport { constants } from './constants'\nimport { InvalidSignatureError, ProofNotVerifiedError, ProviderAPIError } from './errors'\n\n/*\n URL utils\n*/\nexport function parse(url: string): ParsedURL {\n validateURL(url)\n\n const parsed = URL(url, /* parseQueryString */ true)\n\n for (const param in parsed.query) {\n parsed.query[param] = decodeURIComponent(parsed.query[param]!)\n }\n const queryParams = parsed.query\n\n let path = parsed.pathname || null\n let hostname = parsed.hostname || null\n let scheme = parsed.protocol || null\n\n if (scheme) {\n // Remove colon at end\n scheme = scheme.substring(0, scheme.length - 1)\n }\n\n return {\n hostname,\n path,\n queryParams,\n scheme\n }\n}\n\nexport function validateURL(url: string): void {\n if (typeof url !== 'string') {\n throw new Error(`Invalid URL: ${url}. URL must be a string.`)\n }\n if (!url) {\n throw new Error(`Invalid URL: ${url}. URL cannot be empty`)\n }\n}\n\n/*\n Witness Utils\n*/\n\nexport async function getWitnessesForClaim(\n epoch: number,\n identifier: string,\n timestampS: number\n) {\n const beacon = makeBeacon()\n if (!beacon) throw new Error('No beacon')\n const state = await beacon.getState(epoch)\n const witnessList = fetchWitnessListForClaim(state, identifier, timestampS)\n return witnessList.map((w: WitnessData) => w.id.toLowerCase())\n}\n\n/*\n Proof Utils\n*/\n\n/** recovers the addresses of those that signed the claim */\nexport function recoverSignersOfSignedClaim({\n claim,\n signatures\n}: SignedClaim) {\n const dataStr = createSignDataForClaim({ ...claim })\n return signatures.map(signature =>\n ethers.verifyMessage(dataStr, ethers.hexlify(signature)).toLowerCase()\n )\n}\n\n/**\n * Asserts that the claim is signed by the expected witnesses\n * @param claim\n * @param expectedWitnessAddresses\n */\nexport function assertValidSignedClaim(\n claim: SignedClaim,\n expectedWitnessAddresses: string[]\n) {\n const witnessAddresses = recoverSignersOfSignedClaim(claim)\n // set of witnesses whose signatures we've not seen\n const witnessesNotSeen = new Set(expectedWitnessAddresses)\n for (const witness of witnessAddresses) {\n if (witnessesNotSeen.has(witness)) {\n witnessesNotSeen.delete(witness)\n }\n }\n\n // check if all witnesses have signed\n if (witnessesNotSeen.size > 0) {\n throw new ProofNotVerifiedError(\n `Missing signatures from ${expectedWitnessAddresses.join(', ')}`\n )\n }\n}\n\nexport async function getShortenedUrl(url: string) {\n try {\n const response = await fetch('https://api.reclaimprotocol.org/api/sdk/shortener', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n fullUrl: url\n })\n })\n const res = await response.json()\n const shortenedVerificationUrl = res.result.shortUrl\n return shortenedVerificationUrl\n } catch (err) {\n return url\n }\n}\n\nexport async function fetchProvidersByAppId(appId: string) {\n try {\n const response = await fetch(`${constants.GET_PROVIDERS_BY_ID_API}/${appId}`)\n const res = await response.json()\n return res.providers.httpProvider\n } catch (err) {\n throw new ProviderAPIError('Error fetching provider with AppId: ' + appId)\n }\n}\n\nexport function validateProviderIdsAndReturnProviders(providerId: string, providers: ProviderV2[]): ProviderV2 {\n let providerExists = providers.some(provider => providerId == provider.httpProviderId)\n if(!providerExists){\n throw new ProviderAPIError(`The following provider Id is not included in your application => ${providerId}`)\n } \n return providers.find(provider => providerId == provider.httpProviderId) as ProviderV2\n}\n\nexport function generateRequestedProofs(provider: ProviderV2, context: Context, callbackUrl: string, statusUrl: string, sessionId: string): RequestedProofs {\n const claims =[{\n provider: encodeURIComponent(provider.name),\n context: JSON.stringify(context),\n templateClaimId: provider.id,\n payload: {\n metadata: {\n name: encodeURIComponent(provider.name),\n logoUrl: provider.logoUrl,\n proofCardText: provider.proofCardText,\n proofCardTitle: provider.proofCardTitle,\n },\n url: provider.url,\n urlType: provider.urlType as \"CONSTANT\" | \"REGEX\",\n method: provider.method as \"GET\" | \"POST\",\n login: {\n url: provider.loginUrl\n },\n responseSelections: provider.responseSelections,\n customInjection: provider.customInjection,\n bodySniff: provider.bodySniff,\n userAgent: provider.userAgent, \n geoLocation: provider.geoLocation ? provider.geoLocation : '',\n matchType: provider.matchType ? provider.matchType : 'greedy'\n }\n }] as RequestedClaim[];\n \n\n return {\n id: sessionId,\n sessionId: sessionId,\n name: 'web-SDK',\n callbackUrl: callbackUrl,\n statusUrl: statusUrl,\n claims: claims\n };\n}\n\nexport function validateSignature(requestedProofs: RequestedProofs, signature: Signature, applicationId: ApplicationId) {\n try {\n const appId = ethers\n .verifyMessage(\n ethers.getBytes(\n ethers.keccak256(\n new TextEncoder().encode(canonicalize(requestedProofs)!)\n )\n ),\n ethers.hexlify(signature as unknown as string)\n )\n .toLowerCase()\n\n if (ethers.getAddress(appId) !== ethers.getAddress(applicationId)) {\n throw new InvalidSignatureError(`Signature does not match the application id: ${appId}`)\n }\n } catch (err) {\n throw err\n }\n}\n\nexport function escapeRegExp(string: string) {\n return string.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&'); // $& means the whole matched string\n}\n\nexport function replaceAll(str: string, find: string, replace: string) {\n return str.replace(new RegExp(escapeRegExp(find), 'g'), replace);\n}","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n\nimport { Contract } from 'ethers';\n\nconst _abi = [\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: 'address',\n name: 'previousAdmin',\n type: 'address',\n },\n {\n indexed: false,\n internalType: 'address',\n name: 'newAdmin',\n type: 'address',\n },\n ],\n name: 'AdminChanged',\n type: 'event',\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: 'address',\n name: 'beacon',\n type: 'address',\n },\n ],\n name: 'BeaconUpgraded',\n type: 'event',\n },\n {\n anonymous: false,\n inputs: [\n {\n components: [\n {\n internalType: 'uint32',\n name: 'id',\n type: 'uint32',\n },\n {\n internalType: 'uint32',\n name: 'timestampStart',\n type: 'uint32',\n },\n {\n internalType: 'uint32',\n name: 'timestampEnd',\n type: 'uint32',\n },\n {\n components: [\n {\n internalType: 'address',\n name: 'addr',\n type: 'address',\n },\n {\n internalType: 'string',\n name: 'host',\n type: 'string',\n },\n ],\n internalType: 'struct Reclaim.Witness[]',\n name: 'witnesses',\n type: 'tuple[]',\n },\n {\n internalType: 'uint8',\n name: 'minimumWitnessesForClaimCreation',\n type: 'uint8',\n },\n ],\n indexed: false,\n internalType: 'struct Reclaim.Epoch',\n name: 'epoch',\n type: 'tuple',\n },\n ],\n name: 'EpochAdded',\n type: 'event',\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: 'uint8',\n name: 'version',\n type: 'uint8',\n },\n ],\n name: 'Initialized',\n type: 'event',\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: 'address',\n name: 'previousOwner',\n type: 'address',\n },\n {\n indexed: true,\n internalType: 'address',\n name: 'newOwner',\n type: 'address',\n },\n ],\n name: 'OwnershipTransferred',\n type: 'event',\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: 'address',\n name: 'implementation',\n type: 'address',\n },\n ],\n name: 'Upgraded',\n type: 'event',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'witnessAddress',\n type: 'address',\n },\n {\n internalType: 'string',\n name: 'host',\n type: 'string',\n },\n ],\n name: 'addAsWitness',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [],\n name: 'addNewEpoch',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'uint32',\n name: 'epochNum',\n type: 'uint32',\n },\n {\n components: [\n {\n internalType: 'string',\n name: 'provider',\n type: 'string',\n },\n {\n internalType: 'string',\n name: 'parameters',\n type: 'string',\n },\n {\n internalType: 'string',\n name: 'context',\n type: 'string',\n },\n ],\n internalType: 'struct Claims.ClaimInfo',\n name: 'claimInfo',\n type: 'tuple',\n },\n {\n components: [\n {\n internalType: 'bytes32',\n name: 'identifier',\n type: 'bytes32',\n },\n {\n internalType: 'address',\n name: 'owner',\n type: 'address',\n },\n {\n internalType: 'uint32',\n name: 'timestampS',\n type: 'uint32',\n },\n {\n internalType: 'uint256',\n name: 'epoch',\n type: 'uint256',\n },\n ],\n internalType: 'struct Claims.CompleteClaimData',\n name: 'claimData',\n type: 'tuple',\n },\n {\n internalType: 'bytes[]',\n name: 'signatures',\n type: 'bytes[]',\n },\n ],\n name: 'assertValidEpochAndSignedClaim',\n outputs: [],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'currentEpoch',\n outputs: [\n {\n internalType: 'uint32',\n name: '',\n type: 'uint32',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'epochDurationS',\n outputs: [\n {\n internalType: 'uint32',\n name: '',\n type: 'uint32',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n name: 'epochs',\n outputs: [\n {\n internalType: 'uint32',\n name: 'id',\n type: 'uint32',\n },\n {\n internalType: 'uint32',\n name: 'timestampStart',\n type: 'uint32',\n },\n {\n internalType: 'uint32',\n name: 'timestampEnd',\n type: 'uint32',\n },\n {\n internalType: 'uint8',\n name: 'minimumWitnessesForClaimCreation',\n type: 'uint8',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'uint32',\n name: 'epoch',\n type: 'uint32',\n },\n ],\n name: 'fetchEpoch',\n outputs: [\n {\n components: [\n {\n internalType: 'uint32',\n name: 'id',\n type: 'uint32',\n },\n {\n internalType: 'uint32',\n name: 'timestampStart',\n type: 'uint32',\n },\n {\n internalType: 'uint32',\n name: 'timestampEnd',\n type: 'uint32',\n },\n {\n components: [\n {\n internalType: 'address',\n name: 'addr',\n type: 'address',\n },\n {\n internalType: 'string',\n name: 'host',\n type: 'string',\n },\n ],\n internalType: 'struct Reclaim.Witness[]',\n name: 'witnesses',\n type: 'tuple[]',\n },\n {\n internalType: 'uint8',\n name: 'minimumWitnessesForClaimCreation',\n type: 'uint8',\n },\n ],\n internalType: 'struct Reclaim.Epoch',\n name: '',\n type: 'tuple',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'uint32',\n name: 'epoch',\n type: 'uint32',\n },\n {\n internalType: 'bytes32',\n name: 'identifier',\n type: 'bytes32',\n },\n {\n internalType: 'uint32',\n name: 'timestampS',\n type: 'uint32',\n },\n ],\n name: 'fetchWitnessesForClaim',\n outputs: [\n {\n components: [\n {\n internalType: 'address',\n name: 'addr',\n type: 'address',\n },\n {\n internalType: 'string',\n name: 'host',\n type: 'string',\n },\n ],\n internalType: 'struct Reclaim.Witness[]',\n name: '',\n type: 'tuple[]',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'initialize',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [],\n name: 'minimumWitnessesForClaimCreation',\n outputs: [\n {\n internalType: 'uint8',\n name: '',\n type: 'uint8',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'owner',\n outputs: [\n {\n internalType: 'address',\n name: '',\n type: 'address',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'proxiableUUID',\n outputs: [\n {\n internalType: 'bytes32',\n name: '',\n type: 'bytes32',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'witnessAddress',\n type: 'address',\n },\n ],\n name: 'removeAsWitness',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [],\n name: 'renounceOwnership',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'newOwner',\n type: 'address',\n },\n ],\n name: 'transferOwnership',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'addr',\n type: 'address',\n },\n {\n internalType: 'bool',\n name: 'isWhitelisted',\n type: 'bool',\n },\n ],\n name: 'updateWitnessWhitelist',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'newImplementation',\n type: 'address',\n },\n ],\n name: 'upgradeTo',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'newImplementation',\n type: 'address',\n },\n {\n internalType: 'bytes',\n name: 'data',\n type: 'bytes',\n },\n ],\n name: 'upgradeToAndCall',\n outputs: [],\n stateMutability: 'payable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n name: 'witnesses',\n outputs: [\n {\n internalType: 'address',\n name: 'addr',\n type: 'address',\n },\n {\n internalType: 'string',\n name: 'host',\n type: 'string',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n] as const;\n\nexport class Reclaim__factory {\n static readonly abi = _abi;\n\n static connect(address: string, signerOrProvider: any): Contract {\n return new Contract(address, _abi, signerOrProvider);\n }\n}\n","{\n \"0x1a4\": {\n \"chainName\": \"opt-goerli\",\n \"address\": \"0xF93F605142Fb1Efad7Aa58253dDffF67775b4520\",\n \"rpcUrl\": \"https://opt-goerli.g.alchemy.com/v2/rksDkSUXd2dyk2ANy_zzODknx_AAokui\"\n }\n}\n","import type { Beacon, BeaconState } from './interfaces';\nimport { Reclaim__factory as ReclaimFactory } from './contract-types';\nimport CONTRACTS_CONFIG from './contract-types/config.json';\nimport { Contract, ethers } from 'ethers';\n\nconst DEFAULT_CHAIN_ID = 420;\n\nexport function makeBeacon(chainId?: number): Beacon | undefined {\n chainId = chainId || DEFAULT_CHAIN_ID;\n const contract = getContract(chainId);\n if (contract) {\n return makeBeaconCacheable({\n async getState(epochId: number | undefined): Promise<BeaconState> {\n //@ts-ignore\n const epoch = await contract.fetchEpoch(epochId || 0);\n if (!epoch.id) {\n throw new Error(`Invalid epoch ID: ${epochId}`);\n }\n\n return {\n epoch: epoch.id,\n witnesses: epoch.witnesses.map((w: any) => ({\n id: w.addr.toLowerCase(),\n url: w.host,\n })),\n witnessesRequiredForClaim: epoch.minimumWitnessesForClaimCreation,\n nextEpochTimestampS: epoch.timestampEnd,\n };\n },\n });\n } else {\n return undefined;\n }\n}\n\nexport function makeBeaconCacheable(beacon: Beacon): Beacon {\n const cache: { [epochId: number]: Promise<BeaconState> } = {};\n\n return {\n ...beacon,\n async getState(epochId: number | undefined): Promise<BeaconState> {\n if (!epochId) {\n // TODO: add cache here\n const state = await beacon.getState();\n return state;\n }\n\n const key = epochId;\n\n if (!cache[key]) {\n cache[key] = beacon.getState(epochId);\n }\n\n return cache[key] as unknown as BeaconState;\n },\n };\n}\n\nconst existingContractsMap: { [chain: string]: Contract } = {};\n\nfunction getContract(chainId: number): Contract {\n const chainKey = `0x${chainId.toString(16)}`;\n if (!existingContractsMap[chainKey]) {\n const contractData =\n CONTRACTS_CONFIG[chainKey as keyof typeof CONTRACTS_CONFIG];\n if (!contractData) {\n throw new Error(`Unsupported chain: \"${chainKey}\"`);\n }\n\n const rpcProvider = new ethers.JsonRpcProvider(contractData.rpcUrl);\n existingContractsMap[chainKey] = ReclaimFactory.connect(\n contractData.address,\n rpcProvider\n );\n }\n\n return existingContractsMap[chainKey] as Contract;\n}\n","export const constants = {\n \"GET_PROVIDERS_BY_ID_API\": \"https://api.reclaimprotocol.org/api/applications/providers\",\n \"DEFAULT_RECLAIM_CALLBACK_URL\": 'https://api.reclaimprotocol.org/api/sdk/callback?callbackId=',\n \"DEFAULT_RECLAIM_STATUS_URL\": 'https://api.reclaimprotocol.org/api/sdk/session/',\n \"RECLAIM_SHARE_URL\": 'https://share.reclaimprotocol.org/instant/?template=',\n};","\n\nexport class TimeoutError extends Error {\n constructor(message: string) {\n super(message)\n this.name = 'TimeoutError'\n }\n}\n\n\nexport class ProofNotVerifiedError extends Error {\n constructor(message?: string) {\n super(message)\n this.name = 'ProofNotVerifiedError'\n }\n}\n\nexport class SessionNotStartedError extends Error {\n constructor(message?: string) {\n super(message)\n this.name = 'SessionNotStartedError'\n }\n}\n\nexport class ProviderAPIError extends Error {\n constructor(message?: string) {\n super(message)\n this.name = 'ProviderAPIError'\n }\n}\n\nexport class BuildProofRequestError extends Error {\n constructor(message?: string) {\n super(message)\n this.name = 'BuildProofRequest'\n }\n}\n\nexport class SignatureGeneratingError extends Error {\n constructor(message?: string) {\n super(message)\n this.name = 'SignatureGeneratingError'\n }\n}\n\nexport class SignatureNotFoundError extends Error {\n constructor(message?: string) {\n super(message)\n this.name = 'SignatureNotFound'\n }\n}\n\nexport class InvalidSignatureError extends Error {\n constructor(message?: string) {\n super(message)\n this.name = 'InvalidSignatureError'\n }\n}\n"],"mappings":"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","names":["import_ethers","import_canonicalize","import_ethers","import_ethers","import_ethers","canonicalize","P","canonicalize"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/witness.ts","../src/Reclaim.ts","../src/utils.ts","../src/contract-types/contracts/factories/Reclaim__factory.ts","../src/contract-types/config.json","../src/smart-contract.ts","../src/constants.ts","../src/errors.ts"],"sourcesContent":["export * from './Reclaim';\nexport * from './interfaces';","import { ethers } from 'ethers';\nimport type { WitnessData } from './interfaces';\nimport type { ClaimID, ClaimInfo, CompleteClaimData } from './types';\n\ntype BeaconState = {\n witnesses: WitnessData[];\n epoch: number;\n witnessesRequiredForClaim: number;\n nextEpochTimestampS: number;\n};\n\nexport function fetchWitnessListForClaim(\n { witnesses, witnessesRequiredForClaim, epoch }: BeaconState,\n params: string | ClaimInfo,\n timestampS: number\n) {\n const identifier =\n typeof params === 'string' ? params : getIdentifierFromClaimInfo(params);\n const completeInput = [\n identifier,\n epoch.toString(),\n witnessesRequiredForClaim.toString(),\n timestampS.toString(),\n ].join('\\n');\n const completeHashStr = ethers.keccak256(strToUint8Array(completeInput));\n const completeHash = ethers.getBytes(completeHashStr);\n const completeHashView = uint8ArrayToDataView(completeHash);\n const witnessesLeft = [...witnesses];\n const selectedWitnesses: WitnessData[] = [];\n // we'll use 32 bits of the hash to select\n // each witness\n let byteOffset = 0;\n for (let i = 0; i < witnessesRequiredForClaim; i++) {\n const randomSeed = completeHashView.getUint32(byteOffset);\n const witnessIndex = randomSeed % witnessesLeft.length;\n const witness = witnessesLeft[witnessIndex] as WitnessData;\n selectedWitnesses.push(witness);\n\n // Remove the selected witness from the list of witnesses left\n witnessesLeft[witnessIndex] = witnessesLeft[\n witnessesLeft.length - 1\n ] as WitnessData;\n witnessesLeft.pop();\n byteOffset = (byteOffset + 4) % completeHash.length;\n }\n\n return selectedWitnesses;\n}\n\nexport function getIdentifierFromClaimInfo(info: ClaimInfo): ClaimID {\n const str = `${info.provider}\\n${info.parameters}\\n${info.context || ''}`;\n return ethers.keccak256(strToUint8Array(str)).toLowerCase();\n}\n\nexport function strToUint8Array(str: string) {\n return new TextEncoder().encode(str);\n}\n\nexport function uint8ArrayToDataView(arr: Uint8Array) {\n return new DataView(arr.buffer, arr.byteOffset, arr.byteLength);\n}\n\nexport function createSignDataForClaim(data: CompleteClaimData) {\n const identifier =\n 'identifier' in data ? data.identifier : getIdentifierFromClaimInfo(data);\n const lines = [\n identifier,\n data.owner.toLowerCase(),\n data.timestampS.toString(),\n data.epoch.toString(),\n ];\n\n return lines.join('\\n');\n}\n","import type { Proof, RequestedProofs, Context } from './interfaces'\nimport { getIdentifierFromClaimInfo } from './witness'\nimport type {\n AppCallbackUrl,\n ApplicationId,\n NoReturn,\n OnFailureCallback,\n SessionId,\n Signature,\n SignedClaim,\n StatusUrl,\n ProofRequestOptions,\n StartSessionParams\n} from './types'\nimport { SessionStatus } from './types'\nimport { v4 } from 'uuid'\nimport { ethers } from 'ethers'\nimport canonicalize from 'canonicalize'\nimport {\n getWitnessesForClaim,\n assertValidSignedClaim,\n getShortenedUrl,\n fetchProvidersByAppId,\n generateRequestedProofs,\n validateProviderIdsAndReturnProviders,\n validateSignature,\n replaceAll,\n validateURL,\n updateSession,\n createSession\n} from './utils'\nimport { constants } from './constants'\nimport P from 'pino'\nimport {\n BuildProofRequestError,\n ProofNotVerifiedError,\n ProviderFailedError,\n SessionNotStartedError,\n SignatureNotFoundError,\n TimeoutError\n} from './errors'\n\nconst logger = P()\n\nexport class Reclaim {\n static async verifySignedProof(proof: Proof) {\n if (!proof.signatures.length) {\n throw new Error('No signatures')\n }\n const witnesses = await getWitnessesForClaim(\n proof.claimData.epoch,\n proof.identifier,\n proof.claimData.timestampS\n )\n\n try {\n // then hash the claim info with the encoded ctx to get the identifier\n const calculatedIdentifier = getIdentifierFromClaimInfo({\n parameters: JSON.parse(\n canonicalize(proof.claimData.parameters) as string\n ),\n provider: proof.claimData.provider,\n context: proof.claimData.context\n })\n proof.identifier = replaceAll(proof.identifier, '\"', '')\n // check if the identifier matches the one in the proof\n if (calculatedIdentifier !== proof.identifier) {\n throw new ProofNotVerifiedError('Identifier Mismatch')\n }\n\n const signedClaim: SignedClaim = {\n claim: {\n ...proof.claimData\n },\n signatures: proof.signatures.map(signature => {\n return ethers.getBytes(signature)\n })\n }\n\n // verify the witness signature\n assertValidSignedClaim(signedClaim, witnesses)\n } catch (e: Error | unknown) {\n logger.error(e)\n return false\n }\n\n return true\n }\n static transformForOnchain(proof: Proof) {\n const claimInfoBuilder = new Map([\n ['context', proof.claimData.context],\n ['parameters', proof.claimData.parameters],\n ['provider', proof.claimData.provider],\n ]);\n const claimInfo = Object.fromEntries(claimInfoBuilder);\n const claimBuilder = new Map<string, number | string>([\n ['epoch', proof.claimData.epoch],\n ['identifier', proof.claimData.identifier],\n ['owner', proof.claimData.owner],\n ['timestampS', proof.claimData.timestampS],\n ]);\n const signedClaim = {\n claim: Object.fromEntries(claimBuilder),\n signatures: proof.signatures,\n };\n return { claimInfo, signedClaim };\n }\n static ProofRequest = class {\n applicationId: ApplicationId\n signature?: Signature\n appCallbackUrl?: AppCallbackUrl\n sessionId: SessionId\n statusUrl?: StatusUrl\n context: Context = { contextAddress: '0x0', contextMessage: '' }\n requestedProofs?: RequestedProofs\n providerId?: string\n intervals: Map<string, NodeJS.Timer> = new Map()\n\n constructor(applicationId: string, options?: ProofRequestOptions) {\n this.applicationId = applicationId\n this.sessionId = options?.sessionId || v4().toString()\n logger.level = options?.log ? 'info' : 'silent'\n logger.info(\n `Initializing client with applicationId: ${this.applicationId} and sessionId: ${this.sessionId}`\n )\n }\n\n addContext(address: string, message: string): NoReturn {\n this.context = { contextAddress: address, contextMessage: message }\n }\n\n setAppCallbackUrl(url: string): NoReturn {\n validateURL(url)\n this.appCallbackUrl = url\n }\n\n setStatusUrl(url: string): NoReturn {\n validateURL(url)\n this.statusUrl = url\n }\n\n setSignature(signature: Signature): NoReturn {\n this.signature = signature\n }\n\n getAppCallbackUrl(): AppCallbackUrl {\n return (\n this.appCallbackUrl ||\n `${constants.DEFAULT_RECLAIM_CALLBACK_URL}${this.sessionId}`\n )\n }\n\n getStatusUrl(): StatusUrl {\n return (\n this.statusUrl ||\n `${constants.DEFAULT_RECLAIM_STATUS_URL}${this.sessionId}`\n )\n }\n\n async getRequestedProofs(): Promise<RequestedProofs> {\n try {\n if (!this.requestedProofs) {\n throw new BuildProofRequestError(\n 'Call buildProofRequest(providerId: string) first!'\n )\n }\n return this.requestedProofs!\n } catch (err) {\n throw err\n }\n }\n\n async generateSignature(applicationSecret: string): Promise<Signature> {\n try {\n const wallet = new ethers.Wallet(applicationSecret)\n const signature: Signature = (await wallet.signMessage(\n ethers.getBytes(\n ethers.keccak256(\n new TextEncoder().encode(\n canonicalize(await this.getRequestedProofs())!\n )\n )\n )\n )) as unknown as Signature\n\n return signature\n } catch (err) {\n logger.error(err)\n throw new BuildProofRequestError(\n 'Error generating signature for applicationSecret: ' +\n applicationSecret\n )\n }\n }\n\n async buildProofRequest(providerId: string): Promise<RequestedProofs> {\n try {\n\n let providers = await fetchProvidersByAppId(this.applicationId)\n\n const provider = validateProviderIdsAndReturnProviders(\n providerId,\n providers\n )\n this.providerId = providerId\n this.requestedProofs = generateRequestedProofs(\n provider,\n this.context,\n this.getAppCallbackUrl(),\n this.getStatusUrl(),\n this.sessionId\n )\n\n return this.requestedProofs\n } catch (err: Error | unknown) {\n logger.error(err)\n throw new BuildProofRequestError(\n 'Something went wrong while generating proof request'\n )\n }\n }\n\n async createVerificationRequest(): Promise<{\n statusUrl: StatusUrl\n requestUrl: string\n }> {\n try {\n const requestedProofs = await this.getRequestedProofs()\n\n if (!requestedProofs) {\n throw new BuildProofRequestError(\n 'Requested proofs are not built yet. Call buildProofRequest(providerId: string) first!'\n )\n }\n\n if (!this.signature) {\n throw new SignatureNotFoundError(\n 'Signature is not set. Use reclaim.setSignature(signature) to set the signature'\n )\n }\n\n validateSignature(requestedProofs, this.signature, this.applicationId)\n\n const templateData = {\n ...requestedProofs,\n signature: this.signature\n }\n let template = `${constants.RECLAIM_SHARE_URL}${encodeURIComponent(\n JSON.stringify(templateData)\n )}`\n template = replaceAll(template, '(', '%28')\n template = replaceAll(template, ')', '%29')\n template = await getShortenedUrl(template)\n\n await createSession(this.sessionId, this.applicationId, this.providerId!)\n return { requestUrl: template, statusUrl: this.getStatusUrl() }\n } catch (error) {\n logger.error('Error creating verification request:', error)\n throw error\n }\n }\n\n async startSession({\n onSuccessCallback,\n onFailureCallback\n }: StartSessionParams) {\n const statusUrl = this.getStatusUrl()\n if (statusUrl && this.sessionId) {\n logger.info('Starting session')\n try {\n await updateSession(this.sessionId, SessionStatus.SDK_STARTED)\n } catch (e) {\n logger.error(e)\n }\n const interval = setInterval(async () => {\n try {\n const res = await fetch(statusUrl)\n const data = await res.json()\n\n if (!data.session) return\n if (data.session.status === SessionStatus.FAILED) throw new ProviderFailedError()\n if (data.session.proofs.length === 0) return\n\n data.session.proofs.forEach(async (proof: Proof) => {\n const verified = await Reclaim.verifySignedProof(proof)\n if (!verified) {\n throw new ProofNotVerifiedError()\n }\n })\n if (onSuccessCallback) {\n try {\n await updateSession(this.sessionId, SessionStatus.SDK_RECEIVED)\n } catch (e) {\n logger.error(e)\n }\n onSuccessCallback(data.session.proofs)\n }\n clearInterval(this.intervals.get(this.sessionId!))\n this.intervals.delete(this.sessionId!)\n } catch (e) {\n if (!(e instanceof ProviderFailedError)) {\n try {\n await updateSession(this.sessionId, SessionStatus.FAILED)\n } catch (e) {\n logger.error(e)\n }\n }\n if (onFailureCallback) {\n onFailureCallback(e as Error)\n }\n clearInterval(this.intervals.get(this.sessionId!))\n this.intervals.delete(this.sessionId!)\n }\n }, 3000)\n\n this.intervals.set(this.sessionId, interval)\n this.scheduleIntervalEndingTask(onFailureCallback)\n } else {\n const message =\n \"Session can't be started due to undefined value of statusUrl and sessionId\"\n logger.error(message)\n throw new SessionNotStartedError(message)\n }\n }\n\n scheduleIntervalEndingTask(onFailureCallback: OnFailureCallback) {\n setTimeout(async () => {\n if (this.intervals.has(this.sessionId)) {\n const message = 'Interval ended without receiveing proofs'\n await updateSession(this.sessionId, SessionStatus.FAILED)\n onFailureCallback(new TimeoutError(message))\n logger.warn(message)\n clearInterval(this.intervals.get(this.sessionId!))\n }\n }, 1000 * 60 * 5)\n }\n }\n}\n","import URL from 'url-parse'\nimport type { ApplicationId, ParsedURL, SignedClaim, Signature, SessionStatus } from './types'\nimport type { Context, ProviderV2, RequestedClaim, RequestedProofs, WitnessData } from './interfaces'\nimport { ethers } from 'ethers'\nimport { makeBeacon } from './smart-contract'\nimport { fetchWitnessListForClaim, createSignDataForClaim } from './witness'\nimport canonicalize from 'canonicalize'\nimport { BACKEND_BASE_URL, constants } from './constants'\nimport { CreateSessionError, InvalidSignatureError, ProofNotVerifiedError, ProviderAPIError, UpdateSessionError } from './errors'\n\n/*\n URL utils\n*/\nexport function parse(url: string): ParsedURL {\n validateURL(url)\n\n const parsed = URL(url, /* parseQueryString */ true)\n\n for (const param in parsed.query) {\n parsed.query[param] = decodeURIComponent(parsed.query[param]!)\n }\n const queryParams = parsed.query\n\n let path = parsed.pathname || null\n let hostname = parsed.hostname || null\n let scheme = parsed.protocol || null\n\n if (scheme) {\n // Remove colon at end\n scheme = scheme.substring(0, scheme.length - 1)\n }\n\n return {\n hostname,\n path,\n queryParams,\n scheme\n }\n}\n\nexport function validateURL(url: string): void {\n if (typeof url !== 'string') {\n throw new Error(`Invalid URL: ${url}. URL must be a string.`)\n }\n if (!url) {\n throw new Error(`Invalid URL: ${url}. URL cannot be empty`)\n }\n}\n\n/*\n Witness Utils\n*/\n\nexport async function getWitnessesForClaim(\n epoch: number,\n identifier: string,\n timestampS: number\n) {\n const beacon = makeBeacon()\n if (!beacon) throw new Error('No beacon')\n const state = await beacon.getState(epoch)\n const witnessList = fetchWitnessListForClaim(state, identifier, timestampS)\n return witnessList.map((w: WitnessData) => w.id.toLowerCase())\n}\n\n/*\n Proof Utils\n*/\n\n/** recovers the addresses of those that signed the claim */\nexport function recoverSignersOfSignedClaim({\n claim,\n signatures\n}: SignedClaim) {\n const dataStr = createSignDataForClaim({ ...claim })\n return signatures.map(signature =>\n ethers.verifyMessage(dataStr, ethers.hexlify(signature)).toLowerCase()\n )\n}\n\n/**\n * Asserts that the claim is signed by the expected witnesses\n * @param claim\n * @param expectedWitnessAddresses\n */\nexport function assertValidSignedClaim(\n claim: SignedClaim,\n expectedWitnessAddresses: string[]\n) {\n const witnessAddresses = recoverSignersOfSignedClaim(claim)\n // set of witnesses whose signatures we've not seen\n const witnessesNotSeen = new Set(expectedWitnessAddresses)\n for (const witness of witnessAddresses) {\n if (witnessesNotSeen.has(witness)) {\n witnessesNotSeen.delete(witness)\n }\n }\n\n // check if all witnesses have signed\n if (witnessesNotSeen.size > 0) {\n throw new ProofNotVerifiedError(\n `Missing signatures from ${expectedWitnessAddresses.join(', ')}`\n )\n }\n}\n\nexport async function getShortenedUrl(url: string) {\n try {\n const response = await fetch(BACKEND_BASE_URL + '/api/sdk/shortener', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n fullUrl: url\n })\n })\n const res = await response.json()\n const shortenedVerificationUrl = res.result.shortUrl\n return shortenedVerificationUrl\n } catch (err) {\n return url\n }\n}\n\nexport async function createSession(sessionId: string, appId: string, providerId: string) {\n try {\n const response = await fetch(BACKEND_BASE_URL + '/api/sdk/create-session/', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n sessionId,\n appId,\n providerId\n })\n })\n if (!response.ok) {\n throw new CreateSessionError('Error creating session with sessionId: ' + sessionId)\n }\n const res = await response.json()\n return res\n } catch (err) {\n throw new CreateSessionError('Error creating session with sessionId: ' + sessionId)\n }\n}\n\nexport async function updateSession(sessionId: string, status: SessionStatus) {\n try {\n const response = await fetch(BACKEND_BASE_URL + '/api/sdk/update-session/', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n sessionId,\n status\n })\n })\n if (!response.ok) {\n throw new UpdateSessionError('Error updating session with sessionId: ' + sessionId)\n }\n const res = await response.json()\n return res\n } catch (err) {\n throw new UpdateSessionError('Error updating session with sessionId: ' + sessionId)\n }\n}\n\nexport async function fetchProvidersByAppId(appId: string) {\n try {\n const response = await fetch(`${constants.GET_PROVIDERS_BY_ID_API}/${appId}`)\n const res = await response.json()\n return res.providers.httpProvider\n } catch (err) {\n throw new ProviderAPIError('Error fetching provider with AppId: ' + appId)\n }\n}\n\nexport function validateProviderIdsAndReturnProviders(providerId: string, providers: ProviderV2[]): ProviderV2 {\n let providerExists = providers.some(provider => providerId == provider.httpProviderId)\n if (!providerExists) {\n throw new ProviderAPIError(`The following provider Id is not included in your application => ${providerId}`)\n }\n return providers.find(provider => providerId == provider.httpProviderId) as ProviderV2\n}\n\nexport function generateRequestedProofs(provider: ProviderV2, context: Context, callbackUrl: string, statusUrl: string, sessionId: string): RequestedProofs {\n const claims = [{\n provider: encodeURIComponent(provider.name),\n context: JSON.stringify(context),\n templateClaimId: provider.id,\n payload: {\n metadata: {\n name: encodeURIComponent(provider.name),\n logoUrl: provider.logoUrl,\n proofCardText: provider.proofCardText,\n proofCardTitle: provider.proofCardTitle,\n },\n url: provider.url,\n urlType: provider.urlType as \"CONSTANT\" | \"REGEX\",\n method: provider.method as \"GET\" | \"POST\",\n login: {\n url: provider.loginUrl\n },\n responseSelections: provider.responseSelections,\n customInjection: provider.customInjection,\n bodySniff: provider.bodySniff,\n userAgent: provider.userAgent,\n geoLocation: provider.geoLocation,\n matchType: provider.matchType,\n injectionType: provider.injectionType,\n disableRequestReplay: provider.disableRequestReplay\n }\n }] as RequestedClaim[];\n\n\n return {\n id: sessionId,\n sessionId: sessionId,\n name: 'web-SDK',\n callbackUrl: callbackUrl,\n statusUrl: statusUrl,\n claims: claims\n };\n}\n\nexport function validateSignature(requestedProofs: RequestedProofs, signature: Signature, applicationId: ApplicationId) {\n try {\n const appId = ethers\n .verifyMessage(\n ethers.getBytes(\n ethers.keccak256(\n new TextEncoder().encode(canonicalize(requestedProofs)!)\n )\n ),\n ethers.hexlify(signature as unknown as string)\n )\n .toLowerCase()\n\n if (ethers.getAddress(appId) !== ethers.getAddress(applicationId)) {\n throw new InvalidSignatureError(`Signature does not match the application id: ${appId}`)\n }\n } catch (err) {\n throw err\n }\n}\n\nexport function escapeRegExp(string: string) {\n return string.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&'); // $& means the whole matched string\n}\n\nexport function replaceAll(str: string, find: string, replace: string) {\n return str.replace(new RegExp(escapeRegExp(find), 'g'), replace);\n}","/* Autogenerated file. Do not edit manually. */\n/* tslint:disable */\n\nimport { Contract } from 'ethers';\n\nconst _abi = [\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: 'address',\n name: 'previousAdmin',\n type: 'address',\n },\n {\n indexed: false,\n internalType: 'address',\n name: 'newAdmin',\n type: 'address',\n },\n ],\n name: 'AdminChanged',\n type: 'event',\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: 'address',\n name: 'beacon',\n type: 'address',\n },\n ],\n name: 'BeaconUpgraded',\n type: 'event',\n },\n {\n anonymous: false,\n inputs: [\n {\n components: [\n {\n internalType: 'uint32',\n name: 'id',\n type: 'uint32',\n },\n {\n internalType: 'uint32',\n name: 'timestampStart',\n type: 'uint32',\n },\n {\n internalType: 'uint32',\n name: 'timestampEnd',\n type: 'uint32',\n },\n {\n components: [\n {\n internalType: 'address',\n name: 'addr',\n type: 'address',\n },\n {\n internalType: 'string',\n name: 'host',\n type: 'string',\n },\n ],\n internalType: 'struct Reclaim.Witness[]',\n name: 'witnesses',\n type: 'tuple[]',\n },\n {\n internalType: 'uint8',\n name: 'minimumWitnessesForClaimCreation',\n type: 'uint8',\n },\n ],\n indexed: false,\n internalType: 'struct Reclaim.Epoch',\n name: 'epoch',\n type: 'tuple',\n },\n ],\n name: 'EpochAdded',\n type: 'event',\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: false,\n internalType: 'uint8',\n name: 'version',\n type: 'uint8',\n },\n ],\n name: 'Initialized',\n type: 'event',\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: 'address',\n name: 'previousOwner',\n type: 'address',\n },\n {\n indexed: true,\n internalType: 'address',\n name: 'newOwner',\n type: 'address',\n },\n ],\n name: 'OwnershipTransferred',\n type: 'event',\n },\n {\n anonymous: false,\n inputs: [\n {\n indexed: true,\n internalType: 'address',\n name: 'implementation',\n type: 'address',\n },\n ],\n name: 'Upgraded',\n type: 'event',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'witnessAddress',\n type: 'address',\n },\n {\n internalType: 'string',\n name: 'host',\n type: 'string',\n },\n ],\n name: 'addAsWitness',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [],\n name: 'addNewEpoch',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'uint32',\n name: 'epochNum',\n type: 'uint32',\n },\n {\n components: [\n {\n internalType: 'string',\n name: 'provider',\n type: 'string',\n },\n {\n internalType: 'string',\n name: 'parameters',\n type: 'string',\n },\n {\n internalType: 'string',\n name: 'context',\n type: 'string',\n },\n ],\n internalType: 'struct Claims.ClaimInfo',\n name: 'claimInfo',\n type: 'tuple',\n },\n {\n components: [\n {\n internalType: 'bytes32',\n name: 'identifier',\n type: 'bytes32',\n },\n {\n internalType: 'address',\n name: 'owner',\n type: 'address',\n },\n {\n internalType: 'uint32',\n name: 'timestampS',\n type: 'uint32',\n },\n {\n internalType: 'uint256',\n name: 'epoch',\n type: 'uint256',\n },\n ],\n internalType: 'struct Claims.CompleteClaimData',\n name: 'claimData',\n type: 'tuple',\n },\n {\n internalType: 'bytes[]',\n name: 'signatures',\n type: 'bytes[]',\n },\n ],\n name: 'assertValidEpochAndSignedClaim',\n outputs: [],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'currentEpoch',\n outputs: [\n {\n internalType: 'uint32',\n name: '',\n type: 'uint32',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'epochDurationS',\n outputs: [\n {\n internalType: 'uint32',\n name: '',\n type: 'uint32',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n name: 'epochs',\n outputs: [\n {\n internalType: 'uint32',\n name: 'id',\n type: 'uint32',\n },\n {\n internalType: 'uint32',\n name: 'timestampStart',\n type: 'uint32',\n },\n {\n internalType: 'uint32',\n name: 'timestampEnd',\n type: 'uint32',\n },\n {\n internalType: 'uint8',\n name: 'minimumWitnessesForClaimCreation',\n type: 'uint8',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'uint32',\n name: 'epoch',\n type: 'uint32',\n },\n ],\n name: 'fetchEpoch',\n outputs: [\n {\n components: [\n {\n internalType: 'uint32',\n name: 'id',\n type: 'uint32',\n },\n {\n internalType: 'uint32',\n name: 'timestampStart',\n type: 'uint32',\n },\n {\n internalType: 'uint32',\n name: 'timestampEnd',\n type: 'uint32',\n },\n {\n components: [\n {\n internalType: 'address',\n name: 'addr',\n type: 'address',\n },\n {\n internalType: 'string',\n name: 'host',\n type: 'string',\n },\n ],\n internalType: 'struct Reclaim.Witness[]',\n name: 'witnesses',\n type: 'tuple[]',\n },\n {\n internalType: 'uint8',\n name: 'minimumWitnessesForClaimCreation',\n type: 'uint8',\n },\n ],\n internalType: 'struct Reclaim.Epoch',\n name: '',\n type: 'tuple',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'uint32',\n name: 'epoch',\n type: 'uint32',\n },\n {\n internalType: 'bytes32',\n name: 'identifier',\n type: 'bytes32',\n },\n {\n internalType: 'uint32',\n name: 'timestampS',\n type: 'uint32',\n },\n ],\n name: 'fetchWitnessesForClaim',\n outputs: [\n {\n components: [\n {\n internalType: 'address',\n name: 'addr',\n type: 'address',\n },\n {\n internalType: 'string',\n name: 'host',\n type: 'string',\n },\n ],\n internalType: 'struct Reclaim.Witness[]',\n name: '',\n type: 'tuple[]',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'initialize',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [],\n name: 'minimumWitnessesForClaimCreation',\n outputs: [\n {\n internalType: 'uint8',\n name: '',\n type: 'uint8',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'owner',\n outputs: [\n {\n internalType: 'address',\n name: '',\n type: 'address',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [],\n name: 'proxiableUUID',\n outputs: [\n {\n internalType: 'bytes32',\n name: '',\n type: 'bytes32',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'witnessAddress',\n type: 'address',\n },\n ],\n name: 'removeAsWitness',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [],\n name: 'renounceOwnership',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'newOwner',\n type: 'address',\n },\n ],\n name: 'transferOwnership',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'addr',\n type: 'address',\n },\n {\n internalType: 'bool',\n name: 'isWhitelisted',\n type: 'bool',\n },\n ],\n name: 'updateWitnessWhitelist',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'newImplementation',\n type: 'address',\n },\n ],\n name: 'upgradeTo',\n outputs: [],\n stateMutability: 'nonpayable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'address',\n name: 'newImplementation',\n type: 'address',\n },\n {\n internalType: 'bytes',\n name: 'data',\n type: 'bytes',\n },\n ],\n name: 'upgradeToAndCall',\n outputs: [],\n stateMutability: 'payable',\n type: 'function',\n },\n {\n inputs: [\n {\n internalType: 'uint256',\n name: '',\n type: 'uint256',\n },\n ],\n name: 'witnesses',\n outputs: [\n {\n internalType: 'address',\n name: 'addr',\n type: 'address',\n },\n {\n internalType: 'string',\n name: 'host',\n type: 'string',\n },\n ],\n stateMutability: 'view',\n type: 'function',\n },\n] as const;\n\nexport class Reclaim__factory {\n static readonly abi = _abi;\n\n static connect(address: string, signerOrProvider: any): Contract {\n return new Contract(address, _abi, signerOrProvider);\n }\n}\n","{\n \"0x1a4\": {\n \"chainName\": \"opt-goerli\",\n \"address\": \"0xF93F605142Fb1Efad7Aa58253dDffF67775b4520\",\n \"rpcUrl\": \"https://opt-goerli.g.alchemy.com/v2/rksDkSUXd2dyk2ANy_zzODknx_AAokui\"\n }\n}\n","import type { Beacon, BeaconState } from './interfaces';\nimport { Reclaim__factory as ReclaimFactory } from './contract-types';\nimport CONTRACTS_CONFIG from './contract-types/config.json';\nimport { Contract, ethers } from 'ethers';\n\nconst DEFAULT_CHAIN_ID = 420;\n\nexport function makeBeacon(chainId?: number): Beacon | undefined {\n chainId = chainId || DEFAULT_CHAIN_ID;\n const contract = getContract(chainId);\n if (contract) {\n return makeBeaconCacheable({\n async getState(epochId: number | undefined): Promise<BeaconState> {\n //@ts-ignore\n const epoch = await contract.fetchEpoch(epochId || 0);\n if (!epoch.id) {\n throw new Error(`Invalid epoch ID: ${epochId}`);\n }\n\n return {\n epoch: epoch.id,\n witnesses: epoch.witnesses.map((w: any) => ({\n id: w.addr.toLowerCase(),\n url: w.host,\n })),\n witnessesRequiredForClaim: epoch.minimumWitnessesForClaimCreation,\n nextEpochTimestampS: epoch.timestampEnd,\n };\n },\n });\n } else {\n return undefined;\n }\n}\n\nexport function makeBeaconCacheable(beacon: Beacon): Beacon {\n const cache: { [epochId: number]: Promise<BeaconState> } = {};\n\n return {\n ...beacon,\n async getState(epochId: number | undefined): Promise<BeaconState> {\n if (!epochId) {\n // TODO: add cache here\n const state = await beacon.getState();\n return state;\n }\n\n const key = epochId;\n\n if (!cache[key]) {\n cache[key] = beacon.getState(epochId);\n }\n\n return cache[key] as unknown as BeaconState;\n },\n };\n}\n\nconst existingContractsMap: { [chain: string]: Contract } = {};\n\nfunction getContract(chainId: number): Contract {\n const chainKey = `0x${chainId.toString(16)}`;\n if (!existingContractsMap[chainKey]) {\n const contractData =\n CONTRACTS_CONFIG[chainKey as keyof typeof CONTRACTS_CONFIG];\n if (!contractData) {\n throw new Error(`Unsupported chain: \"${chainKey}\"`);\n }\n\n const rpcProvider = new ethers.JsonRpcProvider(contractData.rpcUrl);\n existingContractsMap[chainKey] = ReclaimFactory.connect(\n contractData.address,\n rpcProvider\n );\n }\n\n return existingContractsMap[chainKey] as Contract;\n}\n","// export const BACKEND_BASE_URL = \"http://localhost:3003\"\nexport const BACKEND_BASE_URL = \"https://api.reclaimprotocol.org\"\nexport const constants = {\n GET_PROVIDERS_BY_ID_API:\n BACKEND_BASE_URL + '/api/applications/providers',\n DEFAULT_RECLAIM_CALLBACK_URL:\n BACKEND_BASE_URL + '/api/sdk/callback?callbackId=',\n DEFAULT_RECLAIM_STATUS_URL:\n BACKEND_BASE_URL + '/api/sdk/session/',\n RECLAIM_SHARE_URL: 'https://share.reclaimprotocol.org/instant/?template=',\n};\n","\n\nexport class TimeoutError extends Error {\n constructor(message: string) {\n super(message)\n this.name = 'TimeoutError'\n }\n}\n\n\nexport class ProofNotVerifiedError extends Error {\n constructor(message?: string) {\n super(message)\n this.name = 'ProofNotVerifiedError'\n }\n}\n\nexport class SessionNotStartedError extends Error {\n constructor(message?: string) {\n super(message)\n this.name = 'SessionNotStartedError'\n }\n}\n\nexport class ProviderAPIError extends Error {\n constructor(message?: string) {\n super(message)\n this.name = 'ProviderAPIError'\n }\n}\n\nexport class BuildProofRequestError extends Error {\n constructor(message?: string) {\n super(message)\n this.name = 'BuildProofRequest'\n }\n}\n\nexport class SignatureGeneratingError extends Error {\n constructor(message?: string) {\n super(message)\n this.name = 'SignatureGeneratingError'\n }\n}\n\nexport class SignatureNotFoundError extends Error {\n constructor(message?: string) {\n super(message)\n this.name = 'SignatureNotFound'\n }\n}\n\nexport class InvalidSignatureError extends Error {\n constructor(message?: string) {\n super(message)\n this.name = 'InvalidSignatureError'\n }\n}\n\n\nexport class UpdateSessionError extends Error {\n constructor(message?: string) {\n super(message)\n this.name = 'UpdateSessionError'\n }\n}\n\nexport class CreateSessionError extends Error {\n constructor(message?: string) {\n super(message)\n this.name = 'CreateSessionError'\n }\n}\n\nexport class ProviderFailedError extends Error {\n constructor(message?: string) {\n super(message)\n this.name = 'ProviderFailedError'\n }\n}"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,oBAAuB;AAWhB,SAAS,yBACd,EAAE,WAAW,2BAA2B,MAAM,GAC9C,QACA,YACA;AACA,QAAM,aACJ,OAAO,WAAW,WAAW,SAAS,2BAA2B,MAAM;AACzE,QAAM,gBAAgB;AAAA,IACpB;AAAA,IACA,MAAM,SAAS;AAAA,IACf,0BAA0B,SAAS;AAAA,IACnC,WAAW,SAAS;AAAA,EACtB,EAAE,KAAK,IAAI;AACX,QAAM,kBAAkB,qBAAO,UAAU,gBAAgB,aAAa,CAAC;AACvE,QAAM,eAAe,qBAAO,SAAS,eAAe;AACpD,QAAM,mBAAmB,qBAAqB,YAAY;AAC1D,QAAM,gBAAgB,CAAC,GAAG,SAAS;AACnC,QAAM,oBAAmC,CAAC;AAG1C,MAAI,aAAa;AACjB,WAAS,IAAI,GAAG,IAAI,2BAA2B,KAAK;AAClD,UAAM,aAAa,iBAAiB,UAAU,UAAU;AACxD,UAAM,eAAe,aAAa,cAAc;AAChD,UAAM,UAAU,cAAc,YAAY;AAC1C,sBAAkB,KAAK,OAAO;AAG9B,kBAAc,YAAY,IAAI,cAC5B,cAAc,SAAS,CACzB;AACA,kBAAc,IAAI;AAClB,kBAAc,aAAa,KAAK,aAAa;AAAA,EAC/C;AAEA,SAAO;AACT;AAEO,SAAS,2BAA2B,MAA0B;AACnE,QAAM,MAAM,GAAG,KAAK,QAAQ;AAAA,EAAK,KAAK,UAAU;AAAA,EAAK,KAAK,WAAW,EAAE;AACvE,SAAO,qBAAO,UAAU,gBAAgB,GAAG,CAAC,EAAE,YAAY;AAC5D;AAEO,SAAS,gBAAgB,KAAa;AAC3C,SAAO,IAAI,YAAY,EAAE,OAAO,GAAG;AACrC;AAEO,SAAS,qBAAqB,KAAiB;AACpD,SAAO,IAAI,SAAS,IAAI,QAAQ,IAAI,YAAY,IAAI,UAAU;AAChE;AAEO,SAAS,uBAAuB,MAAyB;AAC9D,QAAM,aACJ,gBAAgB,OAAO,KAAK,aAAa,2BAA2B,IAAI;AAC1E,QAAM,QAAQ;AAAA,IACZ;AAAA,IACA,KAAK,MAAM,YAAY;AAAA,IACvB,KAAK,WAAW,SAAS;AAAA,IACzB,KAAK,MAAM,SAAS;AAAA,EACtB;AAEA,SAAO,MAAM,KAAK,IAAI;AACxB;;;AC1DA,kBAAmB;AACnB,IAAAA,iBAAuB;AACvB,IAAAC,uBAAyB;;;ACjBzB,uBAAgB;AAGhB,IAAAC,iBAAuB;;;ACAvB,IAAAC,iBAAyB;AAEzB,IAAM,OAAO;AAAA,EACX;AAAA,IACE,WAAW;AAAA,IACX,QAAQ;AAAA,MACN;AAAA,QACE,SAAS;AAAA,QACT,cAAc;AAAA,QACd,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,MACA;AAAA,QACE,SAAS;AAAA,QACT,cAAc;AAAA,QACd,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,MAAM;AAAA,IACN,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,WAAW;AAAA,IACX,QAAQ;AAAA,MACN;AAAA,QACE,SAAS;AAAA,QACT,cAAc;AAAA,QACd,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,MAAM;AAAA,IACN,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,WAAW;AAAA,IACX,QAAQ;AAAA,MACN;AAAA,QACE,YAAY;AAAA,UACV;AAAA,YACE,cAAc;AAAA,YACd,MAAM;AAAA,YACN,MAAM;AAAA,UACR;AAAA,UACA;AAAA,YACE,cAAc;AAAA,YACd,MAAM;AAAA,YACN,MAAM;AAAA,UACR;AAAA,UACA;AAAA,YACE,cAAc;AAAA,YACd,MAAM;AAAA,YACN,MAAM;AAAA,UACR;AAAA,UACA;AAAA,YACE,YAAY;AAAA,cACV;AAAA,gBACE,cAAc;AAAA,gBACd,MAAM;AAAA,gBACN,MAAM;AAAA,cACR;AAAA,cACA;AAAA,gBACE,cAAc;AAAA,gBACd,MAAM;AAAA,gBACN,MAAM;AAAA,cACR;AAAA,YACF;AAAA,YACA,cAAc;AAAA,YACd,MAAM;AAAA,YACN,MAAM;AAAA,UACR;AAAA,UACA;AAAA,YACE,cAAc;AAAA,YACd,MAAM;AAAA,YACN,MAAM;AAAA,UACR;AAAA,QACF;AAAA,QACA,SAAS;AAAA,QACT,cAAc;AAAA,QACd,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,MAAM;AAAA,IACN,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,WAAW;AAAA,IACX,QAAQ;AAAA,MACN;AAAA,QACE,SAAS;AAAA,QACT,cAAc;AAAA,QACd,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,MAAM;AAAA,IACN,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,WAAW;AAAA,IACX,QAAQ;AAAA,MACN;AAAA,QACE,SAAS;AAAA,QACT,cAAc;AAAA,QACd,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,MACA;AAAA,QACE,SAAS;AAAA,QACT,cAAc;AAAA,QACd,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,MAAM;AAAA,IACN,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,WAAW;AAAA,IACX,QAAQ;AAAA,MACN;AAAA,QACE,SAAS;AAAA,QACT,cAAc;AAAA,QACd,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,MAAM;AAAA,IACN,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,MACN;AAAA,QACE,cAAc;AAAA,QACd,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,MACA;AAAA,QACE,cAAc;AAAA,QACd,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,MAAM;AAAA,IACN,SAAS,CAAC;AAAA,IACV,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS,CAAC;AAAA,IACV,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,MACN;AAAA,QACE,cAAc;AAAA,QACd,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,MACA;AAAA,QACE,YAAY;AAAA,UACV;AAAA,YACE,cAAc;AAAA,YACd,MAAM;AAAA,YACN,MAAM;AAAA,UACR;AAAA,UACA;AAAA,YACE,cAAc;AAAA,YACd,MAAM;AAAA,YACN,MAAM;AAAA,UACR;AAAA,UACA;AAAA,YACE,cAAc;AAAA,YACd,MAAM;AAAA,YACN,MAAM;AAAA,UACR;AAAA,QACF;AAAA,QACA,cAAc;AAAA,QACd,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,MACA;AAAA,QACE,YAAY;AAAA,UACV;AAAA,YACE,cAAc;AAAA,YACd,MAAM;AAAA,YACN,MAAM;AAAA,UACR;AAAA,UACA;AAAA,YACE,cAAc;AAAA,YACd,MAAM;AAAA,YACN,MAAM;AAAA,UACR;AAAA,UACA;AAAA,YACE,cAAc;AAAA,YACd,MAAM;AAAA,YACN,MAAM;AAAA,UACR;AAAA,UACA;AAAA,YACE,cAAc;AAAA,YACd,MAAM;AAAA,YACN,MAAM;AAAA,UACR;AAAA,QACF;AAAA,QACA,cAAc;AAAA,QACd,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,MACA;AAAA,QACE,cAAc;AAAA,QACd,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,MAAM;AAAA,IACN,SAAS,CAAC;AAAA,IACV,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS;AAAA,MACP;AAAA,QACE,cAAc;AAAA,QACd,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS;AAAA,MACP;AAAA,QACE,cAAc;AAAA,QACd,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,MACN;AAAA,QACE,cAAc;AAAA,QACd,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,MAAM;AAAA,IACN,SAAS;AAAA,MACP;AAAA,QACE,cAAc;AAAA,QACd,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,MACA;AAAA,QACE,cAAc;AAAA,QACd,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,MACA;AAAA,QACE,cAAc;AAAA,QACd,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,MACA;AAAA,QACE,cAAc;AAAA,QACd,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,MACN;AAAA,QACE,cAAc;AAAA,QACd,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,MAAM;AAAA,IACN,SAAS;AAAA,MACP;AAAA,QACE,YAAY;AAAA,UACV;AAAA,YACE,cAAc;AAAA,YACd,MAAM;AAAA,YACN,MAAM;AAAA,UACR;AAAA,UACA;AAAA,YACE,cAAc;AAAA,YACd,MAAM;AAAA,YACN,MAAM;AAAA,UACR;AAAA,UACA;AAAA,YACE,cAAc;AAAA,YACd,MAAM;AAAA,YACN,MAAM;AAAA,UACR;AAAA,UACA;AAAA,YACE,YAAY;AAAA,cACV;AAAA,gBACE,cAAc;AAAA,gBACd,MAAM;AAAA,gBACN,MAAM;AAAA,cACR;AAAA,cACA;AAAA,gBACE,cAAc;AAAA,gBACd,MAAM;AAAA,gBACN,MAAM;AAAA,cACR;AAAA,YACF;AAAA,YACA,cAAc;AAAA,YACd,MAAM;AAAA,YACN,MAAM;AAAA,UACR;AAAA,UACA;AAAA,YACE,cAAc;AAAA,YACd,MAAM;AAAA,YACN,MAAM;AAAA,UACR;AAAA,QACF;AAAA,QACA,cAAc;AAAA,QACd,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,MACN;AAAA,QACE,cAAc;AAAA,QACd,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,MACA;AAAA,QACE,cAAc;AAAA,QACd,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,MACA;AAAA,QACE,cAAc;AAAA,QACd,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,MAAM;AAAA,IACN,SAAS;AAAA,MACP;AAAA,QACE,YAAY;AAAA,UACV;AAAA,YACE,cAAc;AAAA,YACd,MAAM;AAAA,YACN,MAAM;AAAA,UACR;AAAA,UACA;AAAA,YACE,cAAc;AAAA,YACd,MAAM;AAAA,YACN,MAAM;AAAA,UACR;AAAA,QACF;AAAA,QACA,cAAc;AAAA,QACd,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS,CAAC;AAAA,IACV,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS;AAAA,MACP;AAAA,QACE,cAAc;AAAA,QACd,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS;AAAA,MACP;AAAA,QACE,cAAc;AAAA,QACd,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS;AAAA,MACP;AAAA,QACE,cAAc;AAAA,QACd,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,MACN;AAAA,QACE,cAAc;AAAA,QACd,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,MAAM;AAAA,IACN,SAAS,CAAC;AAAA,IACV,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ,CAAC;AAAA,IACT,MAAM;AAAA,IACN,SAAS,CAAC;AAAA,IACV,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,MACN;AAAA,QACE,cAAc;AAAA,QACd,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,MAAM;AAAA,IACN,SAAS,CAAC;AAAA,IACV,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,MACN;AAAA,QACE,cAAc;AAAA,QACd,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,MACA;AAAA,QACE,cAAc;AAAA,QACd,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,MAAM;AAAA,IACN,SAAS,CAAC;AAAA,IACV,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,MACN;AAAA,QACE,cAAc;AAAA,QACd,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,MAAM;AAAA,IACN,SAAS,CAAC;AAAA,IACV,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,MACN;AAAA,QACE,cAAc;AAAA,QACd,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,MACA;AAAA,QACE,cAAc;AAAA,QACd,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,MAAM;AAAA,IACN,SAAS,CAAC;AAAA,IACV,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,MACN;AAAA,QACE,cAAc;AAAA,QACd,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,MAAM;AAAA,IACN,SAAS;AAAA,MACP;AAAA,QACE,cAAc;AAAA,QACd,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,MACA;AAAA,QACE,cAAc;AAAA,QACd,MAAM;AAAA,QACN,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,IACjB,MAAM;AAAA,EACR;AACF;AAEO,IAAM,mBAAN,MAAuB;AAAA,EAG5B,OAAO,QAAQ,SAAiB,kBAAiC;AAC/D,WAAO,IAAI,wBAAS,SAAS,MAAM,gBAAgB;AAAA,EACrD;AACF;AANa,iBACK,MAAM;;;AC7hBxB;AAAA,EACE,SAAS;AAAA,IACP,WAAa;AAAA,IACb,SAAW;AAAA,IACX,QAAU;AAAA,EACZ;AACF;;;ACHA,IAAAC,iBAAiC;AAEjC,IAAM,mBAAmB;AAElB,SAAS,WAAW,SAAsC;AAC/D,YAAU,WAAW;AACrB,QAAM,WAAW,YAAY,OAAO;AACpC,MAAI,UAAU;AAVhB;AAWI,WAAO,oBAAoB;AAAA,MACnB,SAAS,SAAmD;AAAA;AAEhE,gBAAM,QAAQ,MAAM,SAAS,WAAW,WAAW,CAAC;AACpD,cAAI,CAAC,MAAM,IAAI;AACb,kBAAM,IAAI,MAAM,qBAAqB,OAAO,EAAE;AAAA,UAChD;AAEA,iBAAO;AAAA,YACL,OAAO,MAAM;AAAA,YACb,WAAW,MAAM,UAAU,IAAI,CAAC,OAAY;AAAA,cAC1C,IAAI,EAAE,KAAK,YAAY;AAAA,cACvB,KAAK,EAAE;AAAA,YACT,EAAE;AAAA,YACF,2BAA2B,MAAM;AAAA,YACjC,qBAAqB,MAAM;AAAA,UAC7B;AAAA,QACF;AAAA;AAAA,IACF,CAAC;AAAA,EACH,OAAO;AACL,WAAO;AAAA,EACT;AACF;AAEO,SAAS,oBAAoB,QAAwB;AAC1D,QAAM,QAAqD,CAAC;AAE5D,SAAO,iCACF,SADE;AAAA,IAEC,SAAS,SAAmD;AAAA;AAChE,YAAI,CAAC,SAAS;AAEZ,gBAAM,QAAQ,MAAM,OAAO,SAAS;AACpC,iBAAO;AAAA,QACT;AAEA,cAAM,MAAM;AAEZ,YAAI,CAAC,MAAM,GAAG,GAAG;AACf,gBAAM,GAAG,IAAI,OAAO,SAAS,OAAO;AAAA,QACtC;AAEA,eAAO,MAAM,GAAG;AAAA,MAClB;AAAA;AAAA,EACF;AACF;AAEA,IAAM,uBAAsD,CAAC;AAE7D,SAAS,YAAY,SAA2B;AAC9C,QAAM,WAAW,KAAK,QAAQ,SAAS,EAAE,CAAC;AAC1C,MAAI,CAAC,qBAAqB,QAAQ,GAAG;AACnC,UAAM,eACJ,eAAiB,QAAyC;AAC5D,QAAI,CAAC,cAAc;AACjB,YAAM,IAAI,MAAM,uBAAuB,QAAQ,GAAG;AAAA,IACpD;AAEA,UAAM,cAAc,IAAI,sBAAO,gBAAgB,aAAa,MAAM;AAClE,yBAAqB,QAAQ,IAAI,iBAAe;AAAA,MAC9C,aAAa;AAAA,MACb;AAAA,IACF;AAAA,EACF;AAEA,SAAO,qBAAqB,QAAQ;AACtC;;;AHvEA,0BAAyB;;;AILlB,IAAM,mBAAmB;AACzB,IAAM,YAAY;AAAA,EACrB,yBACI,mBAAmB;AAAA,EACvB,8BACI,mBAAmB;AAAA,EACvB,4BACI,mBAAmB;AAAA,EACvB,mBAAmB;AACvB;;;ACRO,IAAM,eAAN,cAA2B,MAAM;AAAA,EACpC,YAAY,SAAiB;AACzB,UAAM,OAAO;AACb,SAAK,OAAO;AAAA,EAChB;AACJ;AAGO,IAAM,wBAAN,cAAoC,MAAM;AAAA,EAC7C,YAAY,SAAkB;AAC1B,UAAM,OAAO;AACb,SAAK,OAAO;AAAA,EAChB;AACJ;AAEO,IAAM,yBAAN,cAAqC,MAAM;AAAA,EAC9C,YAAY,SAAkB;AAC1B,UAAM,OAAO;AACb,SAAK,OAAO;AAAA,EAChB;AACJ;AAEO,IAAM,mBAAN,cAA+B,MAAM;AAAA,EACxC,YAAY,SAAkB;AAC1B,UAAM,OAAO;AACb,SAAK,OAAO;AAAA,EAChB;AACJ;AAEO,IAAM,yBAAN,cAAqC,MAAM;AAAA,EAC9C,YAAY,SAAkB;AAC1B,UAAM,OAAO;AACb,SAAK,OAAO;AAAA,EAChB;AACJ;AASO,IAAM,yBAAN,cAAqC,MAAM;AAAA,EAC9C,YAAY,SAAkB;AAC1B,UAAM,OAAO;AACb,SAAK,OAAO;AAAA,EAChB;AACJ;AAEO,IAAM,wBAAN,cAAoC,MAAM;AAAA,EAC7C,YAAY,SAAkB;AAC1B,UAAM,OAAO;AACb,SAAK,OAAO;AAAA,EAChB;AACJ;AAGO,IAAM,qBAAN,cAAiC,MAAM;AAAA,EAC1C,YAAY,SAAkB;AAC1B,UAAM,OAAO;AACb,SAAK,OAAO;AAAA,EAChB;AACJ;AAEO,IAAM,qBAAN,cAAiC,MAAM;AAAA,EAC1C,YAAY,SAAkB;AAC1B,UAAM,OAAO;AACb,SAAK,OAAO;AAAA,EAChB;AACJ;AAEO,IAAM,sBAAN,cAAkC,MAAM;AAAA,EAC3C,YAAY,SAAkB;AAC1B,UAAM,OAAO;AACb,SAAK,OAAO;AAAA,EAChB;AACJ;;;ALvCO,SAAS,YAAY,KAAmB;AAC7C,MAAI,OAAO,QAAQ,UAAU;AAC3B,UAAM,IAAI,MAAM,gBAAgB,GAAG,yBAAyB;AAAA,EAC9D;AACA,MAAI,CAAC,KAAK;AACR,UAAM,IAAI,MAAM,gBAAgB,GAAG,uBAAuB;AAAA,EAC5D;AACF;AAMA,SAAsB,qBACpB,OACA,YACA,YACA;AAAA;AACA,UAAM,SAAS,WAAW;AAC1B,QAAI,CAAC;AAAQ,YAAM,IAAI,MAAM,WAAW;AACxC,UAAM,QAAQ,MAAM,OAAO,SAAS,KAAK;AACzC,UAAM,cAAc,yBAAyB,OAAO,YAAY,UAAU;AAC1E,WAAO,YAAY,IAAI,CAAC,MAAmB,EAAE,GAAG,YAAY,CAAC;AAAA,EAC/D;AAAA;AAOO,SAAS,4BAA4B;AAAA,EAC1C;AAAA,EACA;AACF,GAAgB;AACd,QAAM,UAAU,uBAAuB,mBAAK,MAAO;AACnD,SAAO,WAAW;AAAA,IAAI,eACpB,sBAAO,cAAc,SAAS,sBAAO,QAAQ,SAAS,CAAC,EAAE,YAAY;AAAA,EACvE;AACF;AAOO,SAAS,uBACd,OACA,0BACA;AACA,QAAM,mBAAmB,4BAA4B,KAAK;AAE1D,QAAM,mBAAmB,IAAI,IAAI,wBAAwB;AACzD,aAAW,WAAW,kBAAkB;AACtC,QAAI,iBAAiB,IAAI,OAAO,GAAG;AACjC,uBAAiB,OAAO,OAAO;AAAA,IACjC;AAAA,EACF;AAGA,MAAI,iBAAiB,OAAO,GAAG;AAC7B,UAAM,IAAI;AAAA,MACR,2BAA2B,yBAAyB,KAAK,IAAI,CAAC;AAAA,IAChE;AAAA,EACF;AACF;AAEA,SAAsB,gBAAgB,KAAa;AAAA;AACjD,QAAI;AACF,YAAM,WAAW,MAAM,MAAM,mBAAmB,sBAAsB;AAAA,QACpE,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,gBAAgB;AAAA,QAClB;AAAA,QACA,MAAM,KAAK,UAAU;AAAA,UACnB,SAAS;AAAA,QACX,CAAC;AAAA,MACH,CAAC;AACD,YAAM,MAAM,MAAM,SAAS,KAAK;AAChC,YAAM,2BAA2B,IAAI,OAAO;AAC5C,aAAO;AAAA,IACT,SAAS,KAAK;AACZ,aAAO;AAAA,IACT;AAAA,EACF;AAAA;AAEA,SAAsB,cAAc,WAAmB,OAAe,YAAoB;AAAA;AACxF,QAAI;AACF,YAAM,WAAW,MAAM,MAAM,mBAAmB,4BAA4B;AAAA,QAC1E,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,gBAAgB;AAAA,QAClB;AAAA,QACA,MAAM,KAAK,UAAU;AAAA,UACnB;AAAA,UACA;AAAA,UACA;AAAA,QACF,CAAC;AAAA,MACH,CAAC;AACD,UAAI,CAAC,SAAS,IAAI;AAChB,cAAM,IAAI,mBAAmB,4CAA4C,SAAS;AAAA,MACpF;AACA,YAAM,MAAM,MAAM,SAAS,KAAK;AAChC,aAAO;AAAA,IACT,SAAS,KAAK;AACZ,YAAM,IAAI,mBAAmB,4CAA4C,SAAS;AAAA,IACpF;AAAA,EACF;AAAA;AAEA,SAAsB,cAAc,WAAmB,QAAuB;AAAA;AAC5E,QAAI;AACF,YAAM,WAAW,MAAM,MAAM,mBAAmB,4BAA4B;AAAA,QAC1E,QAAQ;AAAA,QACR,SAAS;AAAA,UACP,gBAAgB;AAAA,QAClB;AAAA,QACA,MAAM,KAAK,UAAU;AAAA,UACnB;AAAA,UACA;AAAA,QACF,CAAC;AAAA,MACH,CAAC;AACD,UAAI,CAAC,SAAS,IAAI;AAChB,cAAM,IAAI,mBAAmB,4CAA4C,SAAS;AAAA,MACpF;AACA,YAAM,MAAM,MAAM,SAAS,KAAK;AAChC,aAAO;AAAA,IACT,SAAS,KAAK;AACZ,YAAM,IAAI,mBAAmB,4CAA4C,SAAS;AAAA,IACpF;AAAA,EACF;AAAA;AAEA,SAAsB,sBAAsB,OAAe;AAAA;AACzD,QAAI;AACF,YAAM,WAAW,MAAM,MAAM,GAAG,UAAU,uBAAuB,IAAI,KAAK,EAAE;AAC5E,YAAM,MAAM,MAAM,SAAS,KAAK;AAChC,aAAO,IAAI,UAAU;AAAA,IACvB,SAAS,KAAK;AACZ,YAAM,IAAI,iBAAiB,yCAAyC,KAAK;AAAA,IAC3E;AAAA,EACF;AAAA;AAEO,SAAS,sCAAsC,YAAoB,WAAqC;AAC7G,MAAI,iBAAiB,UAAU,KAAK,cAAY,cAAc,SAAS,cAAc;AACrF,MAAI,CAAC,gBAAgB;AACnB,UAAM,IAAI,iBAAiB,oEAAoE,UAAU,EAAE;AAAA,EAC7G;AACA,SAAO,UAAU,KAAK,cAAY,cAAc,SAAS,cAAc;AACzE;AAEO,SAAS,wBAAwB,UAAsB,SAAkB,aAAqB,WAAmB,WAAoC;AAC1J,QAAM,SAAS,CAAC;AAAA,IACd,UAAU,mBAAmB,SAAS,IAAI;AAAA,IAC1C,SAAS,KAAK,UAAU,OAAO;AAAA,IAC/B,iBAAiB,SAAS;AAAA,IAC1B,SAAS;AAAA,MACP,UAAU;AAAA,QACR,MAAM,mBAAmB,SAAS,IAAI;AAAA,QACtC,SAAS,SAAS;AAAA,QAClB,eAAe,SAAS;AAAA,QACxB,gBAAgB,SAAS;AAAA,MAC3B;AAAA,MACA,KAAK,SAAS;AAAA,MACd,SAAS,SAAS;AAAA,MAClB,QAAQ,SAAS;AAAA,MACjB,OAAO;AAAA,QACL,KAAK,SAAS;AAAA,MAChB;AAAA,MACA,oBAAoB,SAAS;AAAA,MAC7B,iBAAiB,SAAS;AAAA,MAC1B,WAAW,SAAS;AAAA,MACpB,WAAW,SAAS;AAAA,MACpB,aAAa,SAAS;AAAA,MACtB,WAAW,SAAS;AAAA,MACpB,eAAe,SAAS;AAAA,MACxB,sBAAsB,SAAS;AAAA,IACjC;AAAA,EACF,CAAC;AAGD,SAAO;AAAA,IACL,IAAI;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,IACN;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAEO,SAAS,kBAAkB,iBAAkC,WAAsB,eAA8B;AACtH,MAAI;AACF,UAAM,QAAQ,sBACX;AAAA,MACC,sBAAO;AAAA,QACL,sBAAO;AAAA,UACL,IAAI,YAAY,EAAE,WAAO,oBAAAC,SAAa,eAAe,CAAE;AAAA,QACzD;AAAA,MACF;AAAA,MACA,sBAAO,QAAQ,SAA8B;AAAA,IAC/C,EACC,YAAY;AAEf,QAAI,sBAAO,WAAW,KAAK,MAAM,sBAAO,WAAW,aAAa,GAAG;AACjE,YAAM,IAAI,sBAAsB,gDAAgD,KAAK,EAAE;AAAA,IACzF;AAAA,EACF,SAAS,KAAK;AACZ,UAAM;AAAA,EACR;AACF;AAEO,SAAS,aAAa,QAAgB;AAC3C,SAAO,OAAO,QAAQ,uBAAuB,MAAM;AACrD;AAEO,SAAS,WAAW,KAAa,MAAc,SAAiB;AACrE,SAAO,IAAI,QAAQ,IAAI,OAAO,aAAa,IAAI,GAAG,GAAG,GAAG,OAAO;AACjE;;;AD/NA,kBAAc;AAUd,IAAM,aAAS,YAAAC,SAAE;AAEV,IAAM,WAAN,MAAM,SAAQ;AAAA,EACjB,OAAa,kBAAkB,OAAc;AAAA;AACzC,UAAI,CAAC,MAAM,WAAW,QAAQ;AAC1B,cAAM,IAAI,MAAM,eAAe;AAAA,MACnC;AACA,YAAM,YAAY,MAAM;AAAA,QACpB,MAAM,UAAU;AAAA,QAChB,MAAM;AAAA,QACN,MAAM,UAAU;AAAA,MACpB;AAEA,UAAI;AAEA,cAAM,uBAAuB,2BAA2B;AAAA,UACpD,YAAY,KAAK;AAAA,gBACb,qBAAAC,SAAa,MAAM,UAAU,UAAU;AAAA,UAC3C;AAAA,UACA,UAAU,MAAM,UAAU;AAAA,UAC1B,SAAS,MAAM,UAAU;AAAA,QAC7B,CAAC;AACD,cAAM,aAAa,WAAW,MAAM,YAAY,KAAK,EAAE;AAEvD,YAAI,yBAAyB,MAAM,YAAY;AAC3C,gBAAM,IAAI,sBAAsB,qBAAqB;AAAA,QACzD;AAEA,cAAM,cAA2B;AAAA,UAC7B,OAAO,mBACA,MAAM;AAAA,UAEb,YAAY,MAAM,WAAW,IAAI,eAAa;AAC1C,mBAAO,sBAAO,SAAS,SAAS;AAAA,UACpC,CAAC;AAAA,QACL;AAGA,+BAAuB,aAAa,SAAS;AAAA,MACjD,SAAS,GAAoB;AACzB,eAAO,MAAM,CAAC;AACd,eAAO;AAAA,MACX;AAEA,aAAO;AAAA,IACX;AAAA;AAAA,EACA,OAAO,oBAAoB,OAAc;AACvC,UAAM,mBAAmB,oBAAI,IAAI;AAAA,MAC/B,CAAC,WAAW,MAAM,UAAU,OAAO;AAAA,MACnC,CAAC,cAAc,MAAM,UAAU,UAAU;AAAA,MACzC,CAAC,YAAY,MAAM,UAAU,QAAQ;AAAA,IACvC,CAAC;AACD,UAAM,YAAY,OAAO,YAAY,gBAAgB;AACrD,UAAM,eAAe,oBAAI,IAA6B;AAAA,MACpD,CAAC,SAAS,MAAM,UAAU,KAAK;AAAA,MAC/B,CAAC,cAAc,MAAM,UAAU,UAAU;AAAA,MACzC,CAAC,SAAS,MAAM,UAAU,KAAK;AAAA,MAC/B,CAAC,cAAc,MAAM,UAAU,UAAU;AAAA,IAC3C,CAAC;AACD,UAAM,cAAc;AAAA,MAClB,OAAO,OAAO,YAAY,YAAY;AAAA,MACtC,YAAY,MAAM;AAAA,IACpB;AACA,WAAQ,EAAE,WAAW,YAAY;AAAA,EACnC;AAuOJ;AArSa,SA+DF,eAAe,MAAM;AAAA,EAWxB,YAAY,eAAuB,SAA+B;AALlE,mBAAmB,EAAE,gBAAgB,OAAO,gBAAgB,GAAG;AAG/D,qBAAuC,oBAAI,IAAI;AAG3C,SAAK,gBAAgB;AACrB,SAAK,aAAY,mCAAS,kBAAa,gBAAG,EAAE,SAAS;AACrD,WAAO,SAAQ,mCAAS,OAAM,SAAS;AACvC,WAAO;AAAA,MACH,2CAA2C,KAAK,aAAa,mBAAmB,KAAK,SAAS;AAAA,IAClG;AAAA,EACJ;AAAA,EAEA,WAAW,SAAiB,SAA2B;AACnD,SAAK,UAAU,EAAE,gBAAgB,SAAS,gBAAgB,QAAQ;AAAA,EACtE;AAAA,EAEA,kBAAkB,KAAuB;AACrC,gBAAY,GAAG;AACf,SAAK,iBAAiB;AAAA,EAC1B;AAAA,EAEA,aAAa,KAAuB;AAChC,gBAAY,GAAG;AACf,SAAK,YAAY;AAAA,EACrB;AAAA,EAEA,aAAa,WAAgC;AACzC,SAAK,YAAY;AAAA,EACrB;AAAA,EAEA,oBAAoC;AAChC,WACI,KAAK,kBACL,GAAG,UAAU,4BAA4B,GAAG,KAAK,SAAS;AAAA,EAElE;AAAA,EAEA,eAA0B;AACtB,WACI,KAAK,aACL,GAAG,UAAU,0BAA0B,GAAG,KAAK,SAAS;AAAA,EAEhE;AAAA,EAEM,qBAA+C;AAAA;AACjD,UAAI;AACA,YAAI,CAAC,KAAK,iBAAiB;AACvB,gBAAM,IAAI;AAAA,YACN;AAAA,UACJ;AAAA,QACJ;AACA,eAAO,KAAK;AAAA,MAChB,SAAS,KAAK;AACV,cAAM;AAAA,MACV;AAAA,IACJ;AAAA;AAAA,EAEM,kBAAkB,mBAA+C;AAAA;AACnE,UAAI;AACA,cAAM,SAAS,IAAI,sBAAO,OAAO,iBAAiB;AAClD,cAAM,YAAwB,MAAM,OAAO;AAAA,UACvC,sBAAO;AAAA,YACH,sBAAO;AAAA,cACH,IAAI,YAAY,EAAE;AAAA,oBACd,qBAAAA,SAAa,MAAM,KAAK,mBAAmB,CAAC;AAAA,cAChD;AAAA,YACJ;AAAA,UACJ;AAAA,QACJ;AAEA,eAAO;AAAA,MACX,SAAS,KAAK;AACV,eAAO,MAAM,GAAG;AAChB,cAAM,IAAI;AAAA,UACN,uDACA;AAAA,QACJ;AAAA,MACJ;AAAA,IACJ;AAAA;AAAA,EAEM,kBAAkB,YAA8C;AAAA;AAClE,UAAI;AAEA,YAAI,YAAY,MAAM,sBAAsB,KAAK,aAAa;AAE9D,cAAM,WAAW;AAAA,UACb;AAAA,UACA;AAAA,QACJ;AACA,aAAK,aAAa;AAClB,aAAK,kBAAkB;AAAA,UACnB;AAAA,UACA,KAAK;AAAA,UACL,KAAK,kBAAkB;AAAA,UACvB,KAAK,aAAa;AAAA,UAClB,KAAK;AAAA,QACT;AAEA,eAAO,KAAK;AAAA,MAChB,SAAS,KAAsB;AAC3B,eAAO,MAAM,GAAG;AAChB,cAAM,IAAI;AAAA,UACN;AAAA,QACJ;AAAA,MACJ;AAAA,IACJ;AAAA;AAAA,EAEM,4BAGH;AAAA;AACC,UAAI;AACA,cAAM,kBAAkB,MAAM,KAAK,mBAAmB;AAEtD,YAAI,CAAC,iBAAiB;AAClB,gBAAM,IAAI;AAAA,YACN;AAAA,UACJ;AAAA,QACJ;AAEA,YAAI,CAAC,KAAK,WAAW;AACjB,gBAAM,IAAI;AAAA,YACN;AAAA,UACJ;AAAA,QACJ;AAEA,0BAAkB,iBAAiB,KAAK,WAAW,KAAK,aAAa;AAErE,cAAM,eAAe,iCACd,kBADc;AAAA,UAEjB,WAAW,KAAK;AAAA,QACpB;AACA,YAAI,WAAW,GAAG,UAAU,iBAAiB,GAAG;AAAA,UAC5C,KAAK,UAAU,YAAY;AAAA,QAC/B,CAAC;AACD,mBAAW,WAAW,UAAU,KAAK,KAAK;AAC1C,mBAAW,WAAW,UAAU,KAAK,KAAK;AAC1C,mBAAW,MAAM,gBAAgB,QAAQ;AAEzC,cAAM,cAAc,KAAK,WAAW,KAAK,eAAe,KAAK,UAAW;AACxE,eAAO,EAAE,YAAY,UAAU,WAAW,KAAK,aAAa,EAAE;AAAA,MAClE,SAAS,OAAO;AACZ,eAAO,MAAM,wCAAwC,KAAK;AAC1D,cAAM;AAAA,MACV;AAAA,IACJ;AAAA;AAAA,EAEM,aAAa,IAGI;AAAA,+CAHJ;AAAA,MACf;AAAA,MACA;AAAA,IACJ,GAAuB;AACnB,YAAM,YAAY,KAAK,aAAa;AACpC,UAAI,aAAa,KAAK,WAAW;AAC7B,eAAO,KAAK,kBAAkB;AAC9B,YAAI;AACA,gBAAM,cAAc,KAAK,0CAAoC;AAAA,QACjE,SAAS,GAAG;AACR,iBAAO,MAAM,CAAC;AAAA,QAClB;AACA,cAAM,WAAW,YAAY,MAAY;AACrC,cAAI;AACA,kBAAM,MAAM,MAAM,MAAM,SAAS;AACjC,kBAAM,OAAO,MAAM,IAAI,KAAK;AAE5B,gBAAI,CAAC,KAAK;AAAS;AACnB,gBAAI,KAAK,QAAQ;AAAiC,oBAAM,IAAI,oBAAoB;AAChF,gBAAI,KAAK,QAAQ,OAAO,WAAW;AAAG;AAEtC,iBAAK,QAAQ,OAAO,QAAQ,CAAO,UAAiB;AAChD,oBAAM,WAAW,MAAM,SAAQ,kBAAkB,KAAK;AACtD,kBAAI,CAAC,UAAU;AACX,sBAAM,IAAI,sBAAsB;AAAA,cACpC;AAAA,YACJ,EAAC;AACD,gBAAI,mBAAmB;AACnB,kBAAI;AACA,sBAAM,cAAc,KAAK,4CAAqC;AAAA,cAClE,SAAS,GAAG;AACR,uBAAO,MAAM,CAAC;AAAA,cAClB;AACA,gCAAkB,KAAK,QAAQ,MAAM;AAAA,YACzC;AACA,0BAAc,KAAK,UAAU,IAAI,KAAK,SAAU,CAAC;AACjD,iBAAK,UAAU,OAAO,KAAK,SAAU;AAAA,UACzC,SAAS,GAAG;AACR,gBAAI,EAAE,aAAa,sBAAsB;AACrC,kBAAI;AACA,sBAAM,cAAc,KAAK,gCAA+B;AAAA,cAC5D,SAASC,IAAG;AACR,uBAAO,MAAMA,EAAC;AAAA,cAClB;AAAA,YACJ;AACA,gBAAI,mBAAmB;AACnB,gCAAkB,CAAU;AAAA,YAChC;AACA,0BAAc,KAAK,UAAU,IAAI,KAAK,SAAU,CAAC;AACjD,iBAAK,UAAU,OAAO,KAAK,SAAU;AAAA,UACzC;AAAA,QACJ,IAAG,GAAI;AAEP,aAAK,UAAU,IAAI,KAAK,WAAW,QAAQ;AAC3C,aAAK,2BAA2B,iBAAiB;AAAA,MACrD,OAAO;AACH,cAAM,UACF;AACJ,eAAO,MAAM,OAAO;AACpB,cAAM,IAAI,uBAAuB,OAAO;AAAA,MAC5C;AAAA,IACJ;AAAA;AAAA,EAEA,2BAA2B,mBAAsC;AAC7D,eAAW,MAAY;AACnB,UAAI,KAAK,UAAU,IAAI,KAAK,SAAS,GAAG;AACpC,cAAM,UAAU;AAChB,cAAM,cAAc,KAAK,gCAA+B;AACxD,0BAAkB,IAAI,aAAa,OAAO,CAAC;AAC3C,eAAO,KAAK,OAAO;AACnB,sBAAc,KAAK,UAAU,IAAI,KAAK,SAAU,CAAC;AAAA,MACrD;AAAA,IACJ,IAAG,MAAO,KAAK,CAAC;AAAA,EACpB;AACJ;AApSG,IAAM,UAAN;","names":["import_ethers","import_canonicalize","import_ethers","import_ethers","import_ethers","canonicalize","P","canonicalize","e"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@reclaimprotocol/js-sdk",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.3",
|
|
4
4
|
"description": "Designed to request proofs from the Reclaim protocol and manage the flow of claims and witness interactions.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
-
<!-- Do not edit this file with editors other than draw.io -->
|
|
3
|
-
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
|
4
|
-
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="413px" height="137px" viewBox="-0.5 -0.5 413 137" content="<mxfile host="app.diagrams.net" modified="2023-12-12T10:56:37.870Z" agent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36" etag="5c-IEuCihH7OA-rWiBcE" version="22.1.7" type="google"><diagram name="Page-1" id="Bim3TOI_uKPudQwilAti">zZbLjtsgFIafxstGBwO+LJvMdCpVlapm0XZJbRqjcUyEya1PXzxAbIaZKholTZXEsX8OmPP93BK8WB8eFNs0n2XN2ySF+pDguyRNUVZm5m9Qjl7JcquslKidNgpL8Zs7EZy6FTXvg0AtZavFJhQr2XW80oHGlJL7MOyXbMO3btiKR8KyYm2sfhO1bqxapPmof+Ri1fg3m5RtyZr5YJdJ37Ba7icSvk/wQkmp7d36sODtQM9zsfU+vFJ66pjinT6nQmor7Fi7dbl95VXLxNqIy7tPrpP66DPfN0Lz5YZVw/Pe2Jvgea+VfDyBMCnM4164ju240vwwkVyvHrhcc62OJsSXUmKr7EfAuePbTNhiF8acpatTS2PW5sYl/jIEHEHYmgF2w9yxS9TPD4CIBULoOjBIBKNineyEGf3DPLwZlLSEM6DAdaDQCArXDVf97XC8QzfE4dud8IhIVFu140M8ekLAlH4/rLxGMKPJxMx5V3vlZyurx0E6CP3dPMOMApQII1JiCpm5usIfrj3DTR1PkRnGhNDSfn3pEAp/Y93Lrap4sAyaXq6452QlXgdbQeyH4i3TYhfuDC/BfapqMmbHScBGik73EftT++fZga5rB5oBIJICoe6TTeyAWZFCaRZnXOA8z7LQHVKWeUlzioxHZZFZIy9hD/nH9riWvwzCOAsxCWdhDs+stA2+2dh4e77wPAMAArQgBFF/zQNzSwQpzjAYk81MpPi5vXlOswKMscMPXcpd+l+4S0Nz3SHujeaax/FYZ8PH0zG+/wM=</diagram></mxfile>" style="background-color: rgb(255, 255, 255);"><defs/><g><rect x="165" y="1" width="77" height="34" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-width="2" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 75px; height: 1px; padding-top: 18px; margin-left: 166px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Reclaim SDK</div></div></div></foreignObject><text x="204" y="22" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">Reclaim SDK</text></switch></g><rect x="148" y="101" width="111" height="34" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-width="2" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 109px; height: 1px; padding-top: 118px; margin-left: 149px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">uuid</div></div></div></foreignObject><text x="203" y="122" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">uuid</text></switch></g><rect x="301" y="101" width="110" height="34" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-width="2" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 108px; height: 1px; padding-top: 118px; margin-left: 302px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">canonicalize</div></div></div></foreignObject><text x="356" y="122" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">canonicalize</text></switch></g><rect x="1" y="101" width="110" height="34" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-width="2" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 108px; height: 1px; padding-top: 118px; margin-left: 2px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">ethers</div></div></div></foreignObject><text x="56" y="122" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">ethers</text></switch></g><path d="M 203.57 35 Q 203.57 35 203.57 92.88" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 203.57 99.88 L 200.07 92.88 L 207.07 92.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 242 28.88 Q 351 71 354.65 92.99" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 355.79 99.9 L 351.2 93.56 L 358.1 92.42 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 165 31.96 Q 61 70 57.11 93" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 55.94 99.9 L 53.66 92.41 L 60.56 93.58 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/></g><switch><g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/><a transform="translate(0,-5)" xlink:href="https://www.drawio.com/doc/faq/svg-export-text-problems" target="_blank"><text text-anchor="middle" font-size="10px" x="50%" y="100%">Text is not SVG - cannot display</text></a></switch></svg>
|
package/readme/usage-flow-2.svg
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1039" height="762"><desc>participant%20AppClip%2FInstanApp%0Aparticipant%20User%0Aparticipant%20SDK%20Sample%20Web%20App%0Aparticipant%20Reclaim%20SDK%0A%0AUser-%3ESDK%20Sample%20Web%20App%3A%20ask%20to%20provide%20proof%0A%0ASDK%20Sample%20Web%20App-%3EReclaim%20SDK%3A%20requestProof(request%2C%20AppCallbackUrl)%0Aactivate%20Reclaim%20SDK%0AReclaim%20SDK-%3EReclaim%20SDK%3A%20Validate%20request%0AReclaim%20SDK-%3EReclaim%20SDK%3A%20Generate%20Template%20Instance%0AReclaim%20SDK--%3ESDK%20Sample%20Web%20App%3A%20TemplateInstance%0Adeactivate%20Reclaim%20SDK%0ASDK%20Sample%20Web%20App-%3ESDK%20Sample%20Web%20App%3A%20Generate%20QrCode%20from%20template%0A%0AUser--%3ESDK%20Sample%20Web%20App%3A%20Scan%20QrCode%0A%0ASDK%20Sample%20Web%20App--%3EAppClip%2FInstanApp%3A%20Open%20AppClip%2FInstanApp%0A%0AAppClip%2FInstanApp-%3EAppClip%2FInstanApp%3A%20complete%20verification%20task%0A%0AAppClip%2FInstanApp-%3ESDK%20Sample%20Web%20App%3A%20Submit%20Proof%20using%20AppCallbackUrl%0A%0ASDK%20Sample%20Web%20App--%3EUser%3A%20notify%20user%20(proof%20received)%0A</desc><defs/><g><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g><rect fill="white" stroke="none" x="0" y="0" width="1039" height="762"/></g><g/><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 88.59873290331642 59.284222437999986 L 88.59873290331642 762.954518438" stroke-miterlimit="10" stroke-width="1.4659797833333332" stroke-dasharray="13.532121076923076,5.863919133333333"/><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 285.4386060077435 59.284222437999986 L 285.4386060077435 762.954518438" stroke-miterlimit="10" stroke-width="1.4659797833333332" stroke-dasharray="13.532121076923076,5.863919133333333"/><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 506.7163531173789 59.284222437999986 L 506.7163531173789 762.954518438" stroke-miterlimit="10" stroke-width="1.4659797833333332" stroke-dasharray="13.532121076923076,5.863919133333333"/><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 814.1986855920534 59.284222437999986 L 814.1986855920534 762.954518438" stroke-miterlimit="10" stroke-width="1.4659797833333332" stroke-dasharray="13.532121076923076,5.863919133333333"/></g><g><path fill="none" stroke="none"/><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 8.795878700000003 11.786477457999997 L 168.40158710663283 11.786477457999997 L 168.40158710663283 59.284222437999986 L 8.795878700000003 59.284222437999986 L 8.795878700000003 11.786477457999997 Z" stroke-miterlimit="10" stroke-width="2.814681184" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="27.88293547900001" y="41.692465037999995" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">AppClip/InstanApp</text></g><path fill="none" stroke="none"/><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 250.87553604514974 11.786477457999997 L 320.00167597033726 11.786477457999997 L 320.00167597033726 59.284222437999986 L 250.87553604514974 59.284222437999986 L 250.87553604514974 11.786477457999997 Z" stroke-miterlimit="10" stroke-width="2.814681184" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="269.96259282414974" y="41.692465037999995" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">User</text></g><path fill="none" stroke="none"/><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 413.6099863408203 11.786477457999997 L 599.8227198939375 11.786477457999997 L 599.8227198939375 59.284222437999986 L 413.6099863408203 59.284222437999986 L 413.6099863408203 11.786477457999997 Z" stroke-miterlimit="10" stroke-width="2.814681184" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="432.6970431198203" y="41.692465037999995" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">SDK Sample Web App</text></g><path fill="none" stroke="none"/><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 751.5289643233073 11.786477457999997 L 876.8684068607995 11.786477457999997 L 876.8684068607995 59.284222437999986 L 751.5289643233073 59.284222437999986 L 751.5289643233073 11.786477457999997 Z" stroke-miterlimit="10" stroke-width="2.814681184" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="770.6160211023073" y="41.692465037999995" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Reclaim SDK</text></g></g><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 805.4028068920534 166.593942578 L 822.9945642920534 166.593942578 L 822.9945642920534 360.103273978 L 805.4028068920534 360.103273978 L 805.4028068920534 166.593942578" stroke-miterlimit="10" stroke-width="1.4659797833333332" stroke-dasharray=""/><g><g><rect fill="white" stroke="none" x="329.0615110575416" y="94.46773723799998" width="134.03193701003906" height="22.86928462"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="331.70027466754163" y="110.30031889799997" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">ask to provide proof</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 285.4386060077435 117.33702185799999 L 492.2324728580456 117.33702185799999" stroke-miterlimit="10" stroke-width="1.4659797833333332" stroke-dasharray=""/><g transform="translate(506.7163531173789,117.33702185799999) translate(-506.7163531173789,-117.33702185799999)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 492.05655528404554 110.00712294133332 L 506.7163531173789 117.33702185799999 L 492.05655528404554 124.66692077466665 Z"/></g></g><g><g><rect fill="white" stroke="none" x="527.5332660407123" y="143.724657958" width="257.05262792800784" height="22.86928462"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="530.1720296507123" y="159.557239618" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">requestProof(request, AppCallbackUrl)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 506.7163531173789 166.593942578 L 790.9189266327201 166.593942578" stroke-miterlimit="10" stroke-width="1.4659797833333332" stroke-dasharray=""/><g transform="translate(805.4028068920534,166.593942578) translate(-805.4028068920534,-166.593942578)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 790.7430090587201 159.26404366133332 L 805.4028068920534 166.593942578 L 790.7430090587201 173.92384149466668 Z"/></g></g><g><g><rect fill="white" stroke="none" x="843.8114772153867" y="192.981578678" width="110.14505041335937" height="22.86928462"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="846.4502408253867" y="208.81416033800002" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Validate request</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 822.9945642920534 215.850863298 L 893.3615938920534 215.850863298 L 893.3615938920534 238.720147918 L 837.4784445513867 238.720147918" stroke-miterlimit="10" stroke-width="1.4659797833333332" stroke-dasharray=""/><g transform="translate(822.9945642920534,238.720147918) translate(-822.9945642920534,-238.720147918)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 837.6543621253867 231.39024900133333 L 822.9945642920534 238.720147918 L 837.6543621253867 246.0500468346667 Z"/></g></g><g><g><rect fill="white" stroke="none" x="843.8114772153867" y="265.107784018" width="189.45071447585937" height="22.86928462"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="846.4502408253867" y="280.94036567800003" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Generate Template Instance</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 822.9945642920534 287.97706863800005 L 893.3615938920534 287.97706863800005 L 893.3615938920534 310.846353258 L 837.4784445513867 310.846353258" stroke-miterlimit="10" stroke-width="1.4659797833333332" stroke-dasharray=""/><g transform="translate(822.9945642920534,310.846353258) translate(-822.9945642920534,-310.846353258)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 837.6543621253867 303.5164543413334 L 822.9945642920534 310.846353258 L 837.6543621253867 318.1762521746667 Z"/></g></g><g><g><rect fill="white" stroke="none" x="595.9691486090717" y="337.23398935800003" width="120.18086279128906" height="22.86928462"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="598.6079122190716" y="353.06657101800005" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">TemplateInstance</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 805.4028068920534 360.103273978 L 521.2002333767123 360.103273978" stroke-miterlimit="10" stroke-width="1.4659797833333332" stroke-dasharray="7.0367029599999995"/><g transform="translate(506.7163531173789,360.103273978) translate(-506.7163531173789,-360.103273978)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 521.3761509507123 352.77337506133335 L 506.7163531173789 360.103273978 L 521.3761509507123 367.43317289466665 Z"/></g></g><g><g><rect fill="white" stroke="none" x="527.5332660407123" y="386.490910078" width="215.49939001296875" height="22.86928462"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="530.1720296507123" y="402.32349173800003" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Generate QrCode from template</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 506.7163531173789 409.36019469800004 L 577.0833827173789 409.36019469800004 L 577.0833827173789 432.229479318 L 521.2002333767123 432.229479318" stroke-miterlimit="10" stroke-width="1.4659797833333332" stroke-dasharray=""/><g transform="translate(506.7163531173789,432.229479318) translate(-506.7163531173789,-432.229479318)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 521.3761509507123 424.89958040133337 L 506.7163531173789 432.229479318 L 521.3761509507123 439.55937823466667 Z"/></g></g><g><g><rect fill="white" stroke="none" x="349.0292768656471" y="458.617115418" width="94.09640539382812" height="22.86928462"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="351.6680404756471" y="474.44969707800004" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Scan QrCode</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 285.4386060077435 481.486400038 L 492.2324728580456 481.486400038" stroke-miterlimit="10" stroke-width="1.4659797833333332" stroke-dasharray="7.0367029599999995"/><g transform="translate(506.7163531173789,481.486400038) translate(-506.7163531173789,-481.486400038)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 492.05655528404554 474.15650112133335 L 506.7163531173789 481.486400038 L 492.05655528404554 488.81629895466665 Z"/></g></g><g><g><rect fill="white" stroke="none" x="214.33519327974216" y="507.874036138" width="166.64469946121093" height="22.86928462"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="216.97395688974217" y="523.706617798" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Open AppClip/InstanApp</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 506.7163531173789 530.743320758 L 103.08261316264975 530.743320758" stroke-miterlimit="10" stroke-width="1.4659797833333332" stroke-dasharray="7.0367029599999995"/><g transform="translate(88.59873290331642,530.743320758) translate(-88.59873290331642,-530.743320758)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 103.25853073664975 523.4134218413333 L 88.59873290331642 530.743320758 L 103.25853073664975 538.0732196746667 Z"/></g></g><g><g><rect fill="white" stroke="none" x="109.41564582664975" y="557.130956858" width="169.86584509109375" height="22.86928462"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="112.05440943664975" y="572.963538518" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">complete verification task</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 88.59873290331642 580.0002414779999 L 158.9657625033164 580.0002414779999 L 158.9657625033164 602.8695260979999 L 103.08261316264975 602.8695260979999" stroke-miterlimit="10" stroke-width="1.4659797833333332" stroke-dasharray=""/><g transform="translate(88.59873290331642,602.8695260979999) translate(-88.59873290331642,-602.8695260979999)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 103.25853073664975 595.5396271813332 L 88.59873290331642 602.8695260979999 L 103.25853073664975 610.1994250146666 Z"/></g></g><g><g><rect fill="white" stroke="none" x="180.53779948091403" y="629.257162198" width="234.23948705886718" height="22.86928462"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="183.17656309091404" y="645.0897438579999" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Submit Proof using AppCallbackUrl</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 88.59873290331642 652.126446818 L 492.2324728580456 652.126446818" stroke-miterlimit="10" stroke-width="1.4659797833333332" stroke-dasharray=""/><g transform="translate(506.7163531173789,652.126446818) translate(-506.7163531173789,-652.126446818)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 492.05655528404554 644.7965479013333 L 506.7163531173789 652.126446818 L 492.05655528404554 659.4563457346667 Z"/></g></g><g><g><rect fill="white" stroke="none" x="306.2555189310768" y="678.514082918" width="179.64392126296875" height="22.86928462"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="308.8942825410768" y="694.346664578" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">notify user (proof received)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 506.7163531173789 701.383367538 L 299.9224862670768 701.383367538" stroke-miterlimit="10" stroke-width="1.4659797833333332" stroke-dasharray="7.0367029599999995"/><g transform="translate(285.4386060077435,701.383367538) translate(-285.4386060077435,-701.383367538)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 300.09840384107684 694.0534686213333 L 285.4386060077435 701.383367538 L 300.09840384107684 708.7132664546667 Z"/></g></g></g><g/><g/><g/><g/></g></svg>
|
package/readme/usage-flow-3.svg
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1039" height="690"><desc>participant%20AppClip%2FInstanApp%0Aparticipant%20User%0Aparticipant%20SDK%20Sample%20Web%20App%0Aparticipant%20Reclaim%20SDK%0A%0AUser-%3ESDK%20Sample%20Web%20App%3A%20ask%20to%20provide%20proof%0A%0ASDK%20Sample%20Web%20App-%3EReclaim%20SDK%3A%20requestProof(request%2C%20AppCallbackUrl)%0Aactivate%20Reclaim%20SDK%0AReclaim%20SDK-%3EReclaim%20SDK%3A%20Generate%20Template%20Instance%0AReclaim%20SDK--%3ESDK%20Sample%20Web%20App%3A%20TemplateInstance%0Adeactivate%20Reclaim%20SDK%0A%0ASDK%20Sample%20Web%20App-%3ESDK%20Sample%20Web%20App%3A%20Generate%20QrCode%20from%20template%0A%0AUser--%3ESDK%20Sample%20Web%20App%3A%20Scan%20QrCode%0A%0ASDK%20Sample%20Web%20App--%3EAppClip%2FInstanApp%3A%20Open%20AppClip%2FInstanApp%0A%0AAppClip%2FInstanApp-%3EAppClip%2FInstanApp%3A%20complete%20verification%20task%0A%0AAppClip%2FInstanApp-%3ESDK%20Sample%20Web%20App%3A%20Submit%20Proof%20using%20AppCallbackUrl%0A%0ASDK%20Sample%20Web%20App--%3EUser%3A%20notify%20user%20(proof%20received)%0A</desc><defs/><g><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g><rect fill="white" stroke="none" x="0" y="0" width="1039" height="690"/></g><g/><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 88.59873290331642 59.284222437999986 L 88.59873290331642 690.8283130980001" stroke-miterlimit="10" stroke-width="1.4659797833333332" stroke-dasharray="13.532121076923076,5.863919133333333"/><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 285.4386060077435 59.284222437999986 L 285.4386060077435 690.8283130980001" stroke-miterlimit="10" stroke-width="1.4659797833333332" stroke-dasharray="13.532121076923076,5.863919133333333"/><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 506.7163531173789 59.284222437999986 L 506.7163531173789 690.8283130980001" stroke-miterlimit="10" stroke-width="1.4659797833333332" stroke-dasharray="13.532121076923076,5.863919133333333"/><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 814.1986855920534 59.284222437999986 L 814.1986855920534 690.8283130980001" stroke-miterlimit="10" stroke-width="1.4659797833333332" stroke-dasharray="13.532121076923076,5.863919133333333"/></g><g><path fill="none" stroke="none"/><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 8.795878700000003 11.786477457999997 L 168.40158710663283 11.786477457999997 L 168.40158710663283 59.284222437999986 L 8.795878700000003 59.284222437999986 L 8.795878700000003 11.786477457999997 Z" stroke-miterlimit="10" stroke-width="2.814681184" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="27.88293547900001" y="41.692465037999995" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">AppClip/InstanApp</text></g><path fill="none" stroke="none"/><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 250.87553604514974 11.786477457999997 L 320.00167597033726 11.786477457999997 L 320.00167597033726 59.284222437999986 L 250.87553604514974 59.284222437999986 L 250.87553604514974 11.786477457999997 Z" stroke-miterlimit="10" stroke-width="2.814681184" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="269.96259282414974" y="41.692465037999995" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">User</text></g><path fill="none" stroke="none"/><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 413.6099863408203 11.786477457999997 L 599.8227198939375 11.786477457999997 L 599.8227198939375 59.284222437999986 L 413.6099863408203 59.284222437999986 L 413.6099863408203 11.786477457999997 Z" stroke-miterlimit="10" stroke-width="2.814681184" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="432.6970431198203" y="41.692465037999995" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">SDK Sample Web App</text></g><path fill="none" stroke="none"/><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 751.5289643233073 11.786477457999997 L 876.8684068607995 11.786477457999997 L 876.8684068607995 59.284222437999986 L 751.5289643233073 59.284222437999986 L 751.5289643233073 11.786477457999997 Z" stroke-miterlimit="10" stroke-width="2.814681184" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="770.6160211023073" y="41.692465037999995" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Reclaim SDK</text></g></g><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 805.4028068920534 166.593942578 L 822.9945642920534 166.593942578 L 822.9945642920534 287.977068638 L 805.4028068920534 287.977068638 L 805.4028068920534 166.593942578" stroke-miterlimit="10" stroke-width="1.4659797833333332" stroke-dasharray=""/><g><g><rect fill="white" stroke="none" x="329.0615110575416" y="94.46773723799998" width="134.03193701003906" height="22.86928462"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="331.70027466754163" y="110.30031889799997" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">ask to provide proof</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 285.4386060077435 117.33702185799999 L 492.2324728580456 117.33702185799999" stroke-miterlimit="10" stroke-width="1.4659797833333332" stroke-dasharray=""/><g transform="translate(506.7163531173789,117.33702185799999) translate(-506.7163531173789,-117.33702185799999)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 492.05655528404554 110.00712294133332 L 506.7163531173789 117.33702185799999 L 492.05655528404554 124.66692077466665 Z"/></g></g><g><g><rect fill="white" stroke="none" x="527.5332660407123" y="143.724657958" width="257.05262792800784" height="22.86928462"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="530.1720296507123" y="159.557239618" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">requestProof(request, AppCallbackUrl)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 506.7163531173789 166.593942578 L 790.9189266327201 166.593942578" stroke-miterlimit="10" stroke-width="1.4659797833333332" stroke-dasharray=""/><g transform="translate(805.4028068920534,166.593942578) translate(-805.4028068920534,-166.593942578)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 790.7430090587201 159.26404366133332 L 805.4028068920534 166.593942578 L 790.7430090587201 173.92384149466668 Z"/></g></g><g><g><rect fill="white" stroke="none" x="843.8114772153867" y="192.981578678" width="189.45071447585937" height="22.86928462"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="846.4502408253867" y="208.81416033800002" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Generate Template Instance</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 822.9945642920534 215.850863298 L 893.3615938920534 215.850863298 L 893.3615938920534 238.720147918 L 837.4784445513867 238.720147918" stroke-miterlimit="10" stroke-width="1.4659797833333332" stroke-dasharray=""/><g transform="translate(822.9945642920534,238.720147918) translate(-822.9945642920534,-238.720147918)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 837.6543621253867 231.39024900133333 L 822.9945642920534 238.720147918 L 837.6543621253867 246.0500468346667 Z"/></g></g><g><g><rect fill="white" stroke="none" x="595.9691486090717" y="265.107784018" width="120.18086279128906" height="22.86928462"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="598.6079122190716" y="280.94036567800003" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">TemplateInstance</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 805.4028068920534 287.977068638 L 521.2002333767123 287.977068638" stroke-miterlimit="10" stroke-width="1.4659797833333332" stroke-dasharray="7.0367029599999995"/><g transform="translate(506.7163531173789,287.977068638) translate(-506.7163531173789,-287.977068638)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 521.3761509507123 280.64716972133334 L 506.7163531173789 287.977068638 L 521.3761509507123 295.30696755466664 Z"/></g></g><g><g><rect fill="white" stroke="none" x="527.5332660407123" y="314.364704738" width="215.49939001296875" height="22.86928462"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="530.1720296507123" y="330.197286398" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Generate QrCode from template</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 506.7163531173789 337.23398935800003 L 577.0833827173789 337.23398935800003 L 577.0833827173789 360.103273978 L 521.2002333767123 360.103273978" stroke-miterlimit="10" stroke-width="1.4659797833333332" stroke-dasharray=""/><g transform="translate(506.7163531173789,360.103273978) translate(-506.7163531173789,-360.103273978)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 521.3761509507123 352.77337506133335 L 506.7163531173789 360.103273978 L 521.3761509507123 367.43317289466665 Z"/></g></g><g><g><rect fill="white" stroke="none" x="349.0292768656471" y="386.490910078" width="94.09640539382812" height="22.86928462"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="351.6680404756471" y="402.32349173800003" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Scan QrCode</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 285.4386060077435 409.360194698 L 492.2324728580456 409.360194698" stroke-miterlimit="10" stroke-width="1.4659797833333332" stroke-dasharray="7.0367029599999995"/><g transform="translate(506.7163531173789,409.360194698) translate(-506.7163531173789,-409.360194698)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 492.05655528404554 402.03029578133334 L 506.7163531173789 409.360194698 L 492.05655528404554 416.69009361466664 Z"/></g></g><g><g><rect fill="white" stroke="none" x="214.33519327974216" y="435.747830798" width="166.64469946121093" height="22.86928462"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="216.97395688974217" y="451.580412458" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Open AppClip/InstanApp</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 506.7163531173789 458.61711541799997 L 103.08261316264975 458.61711541799997" stroke-miterlimit="10" stroke-width="1.4659797833333332" stroke-dasharray="7.0367029599999995"/><g transform="translate(88.59873290331642,458.61711541799997) translate(-88.59873290331642,-458.61711541799997)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 103.25853073664975 451.2872165013333 L 88.59873290331642 458.61711541799997 L 103.25853073664975 465.9470143346666 Z"/></g></g><g><g><rect fill="white" stroke="none" x="109.41564582664975" y="485.004751518" width="169.86584509109375" height="22.86928462"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="112.05440943664975" y="500.837333178" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">complete verification task</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 88.59873290331642 507.874036138 L 158.9657625033164 507.874036138 L 158.9657625033164 530.743320758 L 103.08261316264975 530.743320758" stroke-miterlimit="10" stroke-width="1.4659797833333332" stroke-dasharray=""/><g transform="translate(88.59873290331642,530.743320758) translate(-88.59873290331642,-530.743320758)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 103.25853073664975 523.4134218413333 L 88.59873290331642 530.743320758 L 103.25853073664975 538.0732196746667 Z"/></g></g><g><g><rect fill="white" stroke="none" x="180.53779948091403" y="557.130956858" width="234.23948705886718" height="22.86928462"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="183.17656309091404" y="572.963538518" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Submit Proof using AppCallbackUrl</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 88.59873290331642 580.000241478 L 492.2324728580456 580.000241478" stroke-miterlimit="10" stroke-width="1.4659797833333332" stroke-dasharray=""/><g transform="translate(506.7163531173789,580.000241478) translate(-506.7163531173789,-580.000241478)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 492.05655528404554 572.6703425613333 L 506.7163531173789 580.000241478 L 492.05655528404554 587.3301403946667 Z"/></g></g><g><g><rect fill="white" stroke="none" x="306.2555189310768" y="606.387877578" width="179.64392126296875" height="22.86928462"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="308.8942825410768" y="622.220459238" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">notify user (proof received)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 506.7163531173789 629.2571621980001 L 299.9224862670768 629.2571621980001" stroke-miterlimit="10" stroke-width="1.4659797833333332" stroke-dasharray="7.0367029599999995"/><g transform="translate(285.4386060077435,629.2571621980001) translate(-285.4386060077435,-629.2571621980001)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 300.09840384107684 621.9272632813334 L 285.4386060077435 629.2571621980001 L 300.09840384107684 636.5870611146668 Z"/></g></g></g><g/><g/><g/><g/></g></svg>
|
package/readme/usage-flow.svg
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1039" height="762"><desc>%0A%0Aparticipant%20AppClip%2FInstanApp%0Aparticipant%20User%0Aparticipant%Reclaim%0Aparticipant%20Reclaim%20SDK%0A%0AUser-%3EApp%3A%20ask%20to%20provide%20proof%0A%0AApp-%3EReclaim%20SDK%3A%20requestProof(request%2C%20AppCallbackUrl)%0Aactivate%20Reclaim%20SDK%0AReclaim%20SDK-%3EReclaim%20SDK%3A%20Validate%20request%0AReclaim%20SDK-%3EReclaim%20SDK%3A%20Generate%20Template%20Instance%0AReclaim%20SDK--%3EApp%3A%20TemplateInstance%0Adeactivate%20Reclaim%20SDK%0AApp-%3EApp%3A%20Generate%20QrCode%20from%20template%0A%0A%0AUser--%3EApp%3A%20Scan%20QrCode%0A%0AApp--%3EAppClip%2FInstanApp%3A%20Open%20AppClip%2FInstanApp%0A%0AAppClip%2FInstanApp-%3EAppClip%2FInstanApp%3A%20complete%20verification%20task%0A%0A%0AAppClip%2FInstanApp-%3EApp%3A%20Submit%20Proof%20using%20AppCallbackUrl%0A%0A%0AApp--%3EUser%3A%20notify%20user%20(proof%20received)%0A</desc><defs/><g><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g/><g><rect fill="white" stroke="none" x="0" y="0" width="1039" height="762"/></g><g/><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 88.59873290331642 59.284222437999986 L 88.59873290331642 762.954518438" stroke-miterlimit="10" stroke-width="1.4659797833333332" stroke-dasharray="13.532121076923076,5.863919133333333"/><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 285.4386060077435 59.284222437999986 L 285.4386060077435 762.954518438" stroke-miterlimit="10" stroke-width="1.4659797833333332" stroke-dasharray="13.532121076923076,5.863919133333333"/><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 506.7163531173789 59.284222437999986 L 506.7163531173789 762.954518438" stroke-miterlimit="10" stroke-width="1.4659797833333332" stroke-dasharray="13.532121076923076,5.863919133333333"/><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 814.1986855920534 59.284222437999986 L 814.1986855920534 762.954518438" stroke-miterlimit="10" stroke-width="1.4659797833333332" stroke-dasharray="13.532121076923076,5.863919133333333"/></g><g><path fill="none" stroke="none"/><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 8.795878700000003 11.786477457999997 L 168.40158710663283 11.786477457999997 L 168.40158710663283 59.284222437999986 L 8.795878700000003 59.284222437999986 L 8.795878700000003 11.786477457999997 Z" stroke-miterlimit="10" stroke-width="2.814681184" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="27.88293547900001" y="41.692465037999995" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">AppClip/InstanApp</text></g><path fill="none" stroke="none"/><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 250.87553604514974 11.786477457999997 L 320.00167597033726 11.786477457999997 L 320.00167597033726 59.284222437999986 L 250.87553604514974 59.284222437999986 L 250.87553604514974 11.786477457999997 Z" stroke-miterlimit="10" stroke-width="2.814681184" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="269.96259282414974" y="41.692465037999995" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">User</text></g><path fill="none" stroke="none"/><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 474.5870676396484 11.786477457999997 L 538.8456385951093 11.786477457999997 L 538.8456385951093 59.284222437999986 L 474.5870676396484 59.284222437999986 L 474.5870676396484 11.786477457999997 Z" stroke-miterlimit="10" stroke-width="2.814681184" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="493.67412441864843" y="41.692465037999995" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">App</text></g><path fill="none" stroke="none"/><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 751.5289643233073 11.786477457999997 L 876.8684068607995 11.786477457999997 L 876.8684068607995 59.284222437999986 L 751.5289643233073 59.284222437999986 L 751.5289643233073 11.786477457999997 Z" stroke-miterlimit="10" stroke-width="2.814681184" stroke-dasharray=""/></g><g><g/><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="770.6160211023073" y="41.692465037999995" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Reclaim SDK</text></g></g><g><path fill="white" stroke="black" paint-order="fill stroke markers" d=" M 805.4028068920534 166.593942578 L 822.9945642920534 166.593942578 L 822.9945642920534 360.103273978 L 805.4028068920534 360.103273978 L 805.4028068920534 166.593942578" stroke-miterlimit="10" stroke-width="1.4659797833333332" stroke-dasharray=""/><g><g><rect fill="white" stroke="none" x="329.0615110575416" y="94.46773723799998" width="134.03193701003906" height="22.86928462"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="331.70027466754163" y="110.30031889799997" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">ask to provide proof</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 285.4386060077435 117.33702185799999 L 492.2324728580456 117.33702185799999" stroke-miterlimit="10" stroke-width="1.4659797833333332" stroke-dasharray=""/><g transform="translate(506.7163531173789,117.33702185799999) translate(-506.7163531173789,-117.33702185799999)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 492.05655528404554 110.00712294133332 L 506.7163531173789 117.33702185799999 L 492.05655528404554 124.66692077466665 Z"/></g></g><g><g><rect fill="white" stroke="none" x="527.5332660407123" y="143.724657958" width="257.05262792800784" height="22.86928462"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="530.1720296507123" y="159.557239618" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">requestProof(request, AppCallbackUrl)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 506.7163531173789 166.593942578 L 790.9189266327201 166.593942578" stroke-miterlimit="10" stroke-width="1.4659797833333332" stroke-dasharray=""/><g transform="translate(805.4028068920534,166.593942578) translate(-805.4028068920534,-166.593942578)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 790.7430090587201 159.26404366133332 L 805.4028068920534 166.593942578 L 790.7430090587201 173.92384149466668 Z"/></g></g><g><g><rect fill="white" stroke="none" x="843.8114772153867" y="192.981578678" width="110.14505041335937" height="22.86928462"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="846.4502408253867" y="208.81416033800002" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Validate request</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 822.9945642920534 215.850863298 L 893.3615938920534 215.850863298 L 893.3615938920534 238.720147918 L 837.4784445513867 238.720147918" stroke-miterlimit="10" stroke-width="1.4659797833333332" stroke-dasharray=""/><g transform="translate(822.9945642920534,238.720147918) translate(-822.9945642920534,-238.720147918)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 837.6543621253867 231.39024900133333 L 822.9945642920534 238.720147918 L 837.6543621253867 246.0500468346667 Z"/></g></g><g><g><rect fill="white" stroke="none" x="843.8114772153867" y="265.107784018" width="189.45071447585937" height="22.86928462"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="846.4502408253867" y="280.94036567800003" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Generate Template Instance</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 822.9945642920534 287.97706863800005 L 893.3615938920534 287.97706863800005 L 893.3615938920534 310.846353258 L 837.4784445513867 310.846353258" stroke-miterlimit="10" stroke-width="1.4659797833333332" stroke-dasharray=""/><g transform="translate(822.9945642920534,310.846353258) translate(-822.9945642920534,-310.846353258)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 837.6543621253867 303.5164543413334 L 822.9945642920534 310.846353258 L 837.6543621253867 318.1762521746667 Z"/></g></g><g><g><rect fill="white" stroke="none" x="595.9691486090717" y="337.23398935800003" width="120.18086279128906" height="22.86928462"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="598.6079122190716" y="353.06657101800005" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">TemplateInstance</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 805.4028068920534 360.103273978 L 521.2002333767123 360.103273978" stroke-miterlimit="10" stroke-width="1.4659797833333332" stroke-dasharray="7.0367029599999995"/><g transform="translate(506.7163531173789,360.103273978) translate(-506.7163531173789,-360.103273978)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 521.3761509507123 352.77337506133335 L 506.7163531173789 360.103273978 L 521.3761509507123 367.43317289466665 Z"/></g></g><g><g><rect fill="white" stroke="none" x="527.5332660407123" y="386.490910078" width="215.49939001296875" height="22.86928462"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="530.1720296507123" y="402.32349173800003" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Generate QrCode from template</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 506.7163531173789 409.36019469800004 L 577.0833827173789 409.36019469800004 L 577.0833827173789 432.229479318 L 521.2002333767123 432.229479318" stroke-miterlimit="10" stroke-width="1.4659797833333332" stroke-dasharray=""/><g transform="translate(506.7163531173789,432.229479318) translate(-506.7163531173789,-432.229479318)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 521.3761509507123 424.89958040133337 L 506.7163531173789 432.229479318 L 521.3761509507123 439.55937823466667 Z"/></g></g><g><g><rect fill="white" stroke="none" x="349.0292768656471" y="458.617115418" width="94.09640539382812" height="22.86928462"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="351.6680404756471" y="474.44969707800004" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Scan QrCode</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 285.4386060077435 481.486400038 L 492.2324728580456 481.486400038" stroke-miterlimit="10" stroke-width="1.4659797833333332" stroke-dasharray="7.0367029599999995"/><g transform="translate(506.7163531173789,481.486400038) translate(-506.7163531173789,-481.486400038)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 492.05655528404554 474.15650112133335 L 506.7163531173789 481.486400038 L 492.05655528404554 488.81629895466665 Z"/></g></g><g><g><rect fill="white" stroke="none" x="214.33519327974216" y="507.874036138" width="166.64469946121093" height="22.86928462"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="216.97395688974217" y="523.706617798" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Open AppClip/InstanApp</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 506.7163531173789 530.743320758 L 103.08261316264975 530.743320758" stroke-miterlimit="10" stroke-width="1.4659797833333332" stroke-dasharray="7.0367029599999995"/><g transform="translate(88.59873290331642,530.743320758) translate(-88.59873290331642,-530.743320758)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 103.25853073664975 523.4134218413333 L 88.59873290331642 530.743320758 L 103.25853073664975 538.0732196746667 Z"/></g></g><g><g><rect fill="white" stroke="none" x="109.41564582664975" y="557.130956858" width="169.86584509109375" height="22.86928462"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="112.05440943664975" y="572.963538518" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">complete verification task</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 88.59873290331642 580.0002414779999 L 158.9657625033164 580.0002414779999 L 158.9657625033164 602.8695260979999 L 103.08261316264975 602.8695260979999" stroke-miterlimit="10" stroke-width="1.4659797833333332" stroke-dasharray=""/><g transform="translate(88.59873290331642,602.8695260979999) translate(-88.59873290331642,-602.8695260979999)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 103.25853073664975 595.5396271813332 L 88.59873290331642 602.8695260979999 L 103.25853073664975 610.1994250146666 Z"/></g></g><g><g><rect fill="white" stroke="none" x="180.53779948091403" y="629.257162198" width="234.23948705886718" height="22.86928462"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="183.17656309091404" y="645.0897438579999" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">Submit Proof using AppCallbackUrl</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 88.59873290331642 652.126446818 L 492.2324728580456 652.126446818" stroke-miterlimit="10" stroke-width="1.4659797833333332" stroke-dasharray=""/><g transform="translate(506.7163531173789,652.126446818) translate(-506.7163531173789,-652.126446818)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 492.05655528404554 644.7965479013333 L 506.7163531173789 652.126446818 L 492.05655528404554 659.4563457346667 Z"/></g></g><g><g><rect fill="white" stroke="none" x="306.2555189310768" y="678.514082918" width="179.64392126296875" height="22.86928462"/></g><text fill="black" stroke="none" font-family="sans-serif" font-size="11pt" font-style="normal" font-weight="normal" text-decoration="normal" x="308.8942825410768" y="694.346664578" text-anchor="start" dominant-baseline="alphabetic" xml:space="preserve">notify user (proof received)</text></g><g><path fill="none" stroke="black" paint-order="fill stroke markers" d=" M 506.7163531173789 701.383367538 L 299.9224862670768 701.383367538" stroke-miterlimit="10" stroke-width="1.4659797833333332" stroke-dasharray="7.0367029599999995"/><g transform="translate(285.4386060077435,701.383367538) translate(-285.4386060077435,-701.383367538)"><path fill="black" stroke="none" paint-order="stroke fill markers" d=" M 300.09840384107684 694.0534686213333 L 285.4386060077435 701.383367538 L 300.09840384107684 708.7132664546667 Z"/></g></g></g><g/><g/><g/><g/></g></svg>
|