@bankofai/x402 0.5.5 → 0.5.6-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/client/policies.d.ts +6 -5
- package/dist/client/policies.d.ts.map +1 -1
- package/dist/client/policies.js +24 -13
- package/dist/client/policies.js.map +1 -1
- package/dist/client/x402Client.d.ts +6 -0
- package/dist/client/x402Client.d.ts.map +1 -1
- package/dist/client/x402Client.js +6 -0
- package/dist/client/x402Client.js.map +1 -1
- package/dist/mechanisms/exactGasfree.d.ts +3 -0
- package/dist/mechanisms/exactGasfree.d.ts.map +1 -1
- package/dist/mechanisms/exactGasfree.js +27 -12
- package/dist/mechanisms/exactGasfree.js.map +1 -1
- package/package.json +1 -1
|
@@ -10,17 +10,18 @@ import type { X402Client } from './x402Client.js';
|
|
|
10
10
|
* Policy that filters out requirements with insufficient balance.
|
|
11
11
|
*
|
|
12
12
|
* When the server accepts multiple tokens (e.g. USDT and USDD),
|
|
13
|
-
* this policy checks the
|
|
14
|
-
* and removes requirements the user
|
|
13
|
+
* this policy checks the balance for each payment option via the
|
|
14
|
+
* mechanism's checkBalance() and removes requirements the user
|
|
15
|
+
* cannot afford.
|
|
15
16
|
*
|
|
16
|
-
*
|
|
17
|
+
* Mechanisms are auto-resolved from registered entries via the
|
|
17
18
|
* X402Client instance passed at construction time.
|
|
18
19
|
*
|
|
19
20
|
* Usage:
|
|
20
21
|
* x402.registerPolicy(SufficientBalancePolicy);
|
|
21
22
|
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
23
|
+
* If no mechanism is registered for a requirement's scheme+network,
|
|
24
|
+
* that requirement is skipped (excluded from results).
|
|
24
25
|
*
|
|
25
26
|
* If all requirements are unaffordable, returns an empty array so the
|
|
26
27
|
* caller can raise an appropriate error.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"policies.d.ts","sourceRoot":"","sources":["../../src/client/policies.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAOlD
|
|
1
|
+
{"version":3,"file":"policies.d.ts","sourceRoot":"","sources":["../../src/client/policies.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAOlD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,qBAAa,uBAAwB,YAAW,aAAa;IAC3D,OAAO,CAAC,MAAM,CAAa;gBAEf,MAAM,EAAE,UAAU;IAIxB,KAAK,CAAC,YAAY,EAAE,mBAAmB,EAAE,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC;CAuDjF"}
|
package/dist/client/policies.js
CHANGED
|
@@ -12,17 +12,18 @@ function getDecimals(req) {
|
|
|
12
12
|
* Policy that filters out requirements with insufficient balance.
|
|
13
13
|
*
|
|
14
14
|
* When the server accepts multiple tokens (e.g. USDT and USDD),
|
|
15
|
-
* this policy checks the
|
|
16
|
-
* and removes requirements the user
|
|
15
|
+
* this policy checks the balance for each payment option via the
|
|
16
|
+
* mechanism's checkBalance() and removes requirements the user
|
|
17
|
+
* cannot afford.
|
|
17
18
|
*
|
|
18
|
-
*
|
|
19
|
+
* Mechanisms are auto-resolved from registered entries via the
|
|
19
20
|
* X402Client instance passed at construction time.
|
|
20
21
|
*
|
|
21
22
|
* Usage:
|
|
22
23
|
* x402.registerPolicy(SufficientBalancePolicy);
|
|
23
24
|
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
25
|
+
* If no mechanism is registered for a requirement's scheme+network,
|
|
26
|
+
* that requirement is skipped (excluded from results).
|
|
26
27
|
*
|
|
27
28
|
* If all requirements are unaffordable, returns an empty array so the
|
|
28
29
|
* caller can raise an appropriate error.
|
|
@@ -35,19 +36,29 @@ export class SufficientBalancePolicy {
|
|
|
35
36
|
async apply(requirements) {
|
|
36
37
|
const affordable = [];
|
|
37
38
|
for (const req of requirements) {
|
|
38
|
-
const
|
|
39
|
-
if (!
|
|
40
|
-
|
|
41
|
-
// matching can still select it (balance check is best-effort).
|
|
42
|
-
affordable.push(req);
|
|
39
|
+
const mechanism = this.client.resolveMechanism(req.scheme, req.network);
|
|
40
|
+
if (!mechanism) {
|
|
41
|
+
console.debug(`[x402] No mechanism for scheme=${req.scheme} network=${req.network} (skipped)`);
|
|
43
42
|
continue;
|
|
44
43
|
}
|
|
45
44
|
let balance;
|
|
46
45
|
try {
|
|
47
|
-
|
|
46
|
+
if (mechanism.checkBalance) {
|
|
47
|
+
balance = await mechanism.checkBalance(req.asset, req.network);
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
const signer = mechanism.getSigner?.();
|
|
51
|
+
if (!signer) {
|
|
52
|
+
// Cannot determine balance; keep the requirement and let
|
|
53
|
+
// createPaymentPayload decide.
|
|
54
|
+
affordable.push(req);
|
|
55
|
+
continue;
|
|
56
|
+
}
|
|
57
|
+
balance = await signer.checkBalance(req.asset, req.network);
|
|
58
|
+
}
|
|
48
59
|
}
|
|
49
|
-
catch {
|
|
50
|
-
|
|
60
|
+
catch (err) {
|
|
61
|
+
console.warn(`[x402] checkBalance raised for ${req.asset} on ${req.network}; keeping requirement.`, err);
|
|
51
62
|
affordable.push(req);
|
|
52
63
|
continue;
|
|
53
64
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"policies.js","sourceRoot":"","sources":["../../src/client/policies.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAK7C,SAAS,WAAW,CAAC,GAAwB;IAC3C,MAAM,KAAK,GAAG,aAAa,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;IACpD,OAAO,KAAK,EAAE,QAAQ,IAAI,CAAC,CAAC;AAC9B,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"policies.js","sourceRoot":"","sources":["../../src/client/policies.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,6 +15,8 @@ export interface ClientMechanism {
|
|
|
15
15
|
* Used by X402Client to auto-register balance-aware policies.
|
|
16
16
|
*/
|
|
17
17
|
getSigner?(): ClientSigner;
|
|
18
|
+
/** Check token balance for this mechanism's payment scheme */
|
|
19
|
+
checkBalance?(token: string, network: string): Promise<bigint>;
|
|
18
20
|
/** Create payment payload */
|
|
19
21
|
createPaymentPayload(requirements: PaymentRequirements, resource: string, extensions?: {
|
|
20
22
|
paymentPermitContext?: PaymentPermitContext;
|
|
@@ -80,6 +82,10 @@ export declare class X402Client {
|
|
|
80
82
|
* Resolve a signer from registered mechanisms for the given scheme+network.
|
|
81
83
|
*/
|
|
82
84
|
resolveSigner(scheme: string, network: string): ClientSigner | null;
|
|
85
|
+
/**
|
|
86
|
+
* Resolve a mechanism for the given scheme+network.
|
|
87
|
+
*/
|
|
88
|
+
resolveMechanism(scheme: string, network: string): ClientMechanism | null;
|
|
83
89
|
/**
|
|
84
90
|
* Register payment mechanism for network pattern
|
|
85
91
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"x402Client.d.ts","sourceRoot":"","sources":["../../src/client/x402Client.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"x402Client.d.ts","sourceRoot":"","sources":["../../src/client/x402Client.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EACV,mBAAmB,EACnB,cAAc,EACd,oBAAoB,EACrB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAGlE,iCAAiC;AACjC,MAAM,WAAW,eAAe;IAC9B,8BAA8B;IAC9B,MAAM,IAAI,MAAM,CAAC;IAEjB;;;OAGG;IACH,SAAS,CAAC,IAAI,YAAY,CAAC;IAE3B,8DAA8D;IAC9D,YAAY,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAE/D,6BAA6B;IAC7B,oBAAoB,CAClB,YAAY,EAAE,mBAAmB,EACjC,QAAQ,EAAE,MAAM,EAChB,UAAU,CAAC,EAAE;QAAE,oBAAoB,CAAC,EAAE,oBAAoB,CAAA;KAAE,GAC3D,OAAO,CAAC,cAAc,CAAC,CAAC;CAC5B;AAED,8BAA8B;AAC9B,MAAM,WAAW,YAAY;IAC3B,yBAAyB;IACzB,UAAU,IAAI,MAAM,CAAC;IAErB,uBAAuB;IACvB,WAAW,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAElD,gCAAgC;IAChC,aAAa,CACX,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,MAAM,CAAC,CAAC;IAEnB,0BAA0B;IAC1B,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAEhF,4BAA4B;IAC5B,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAEhF,kCAAkC;IAClC,eAAe,CACb,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,IAAI,CAAC,EAAE,MAAM,GAAG,aAAa,GAAG,MAAM,GACrC,OAAO,CAAC,OAAO,CAAC,CAAC;CACrB;AAED,6CAA6C;AAC7C,MAAM,MAAM,2BAA2B,GAAG,CACxC,YAAY,EAAE,mBAAmB,EAAE,KAChC,mBAAmB,CAAC;AAEzB;;;;;GAKG;AACH,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,YAAY,EAAE,mBAAmB,EAAE,GAAG,mBAAmB,EAAE,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAAC;CACpG;AAED,wDAAwD;AACxD,MAAM,WAAW,yBAAyB;IACxC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AASD;;;;GAIG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,UAAU,CAAwB;IAC1C,OAAO,CAAC,QAAQ,CAAuB;IACvC,OAAO,CAAC,aAAa,CAAC,CAAyB;gBAEnC,OAAO,CAAC,EAAE;QAAE,aAAa,CAAC,EAAE,sBAAsB,CAAA;KAAE;IAIhE;;;;;;;;OAQG;IACH,cAAc,CAAC,MAAM,EAAE,aAAa,GAAG;QAAE,KAAI,MAAM,EAAE,UAAU,GAAG,aAAa,CAAA;KAAE,GAAG,UAAU;IAQ9F;;OAEG;IACH,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI;IAKnE;;OAEG;IACH,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI;IAIzE;;;;;;OAMG;IACH,QAAQ,CAAC,cAAc,EAAE,MAAM,EAAE,SAAS,EAAE,eAAe,GAAG,UAAU;IAWxE;;;;;;OAMG;IACH,eAAe,CAAC,MAAM,EAAE,YAAY,EAAE,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAM,GAAG,UAAU;IAIjG;;;;;;OAMG;IACG,yBAAyB,CAC7B,OAAO,EAAE,mBAAmB,EAAE,EAC9B,OAAO,CAAC,EAAE,yBAAyB,GAClC,OAAO,CAAC,mBAAmB,CAAC;IAiC/B;;;;;;;OAOG;IACG,oBAAoB,CACxB,YAAY,EAAE,mBAAmB,EACjC,QAAQ,EAAE,MAAM,EAChB,UAAU,CAAC,EAAE;QAAE,oBAAoB,CAAC,EAAE,oBAAoB,CAAA;KAAE,GAC3D,OAAO,CAAC,cAAc,CAAC;IAW1B;;;;;;;;OAQG;IACG,aAAa,CACjB,OAAO,EAAE,mBAAmB,EAAE,EAC9B,QAAQ,EAAE,MAAM,EAChB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACpC,QAAQ,CAAC,EAAE,2BAA2B,GACrC,OAAO,CAAC,cAAc,CAAC;IAQ1B;;OAEG;IACH,OAAO,CAAC,aAAa;IASrB;;OAEG;IACH,OAAO,CAAC,YAAY;IASpB;;OAEG;IACH,OAAO,CAAC,iBAAiB;CAI1B"}
|
|
@@ -41,6 +41,12 @@ export class X402Client {
|
|
|
41
41
|
const mechanism = this.findMechanism(scheme, network);
|
|
42
42
|
return mechanism?.getSigner?.() ?? null;
|
|
43
43
|
}
|
|
44
|
+
/**
|
|
45
|
+
* Resolve a mechanism for the given scheme+network.
|
|
46
|
+
*/
|
|
47
|
+
resolveMechanism(scheme, network) {
|
|
48
|
+
return this.findMechanism(scheme, network);
|
|
49
|
+
}
|
|
44
50
|
/**
|
|
45
51
|
* Register payment mechanism for network pattern
|
|
46
52
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"x402Client.js","sourceRoot":"","sources":["../../src/client/x402Client.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAO5E,OAAO,EAAE,6BAA6B,EAAE,MAAM,qBAAqB,CAAC;AAEpE,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"x402Client.js","sourceRoot":"","sources":["../../src/client/x402Client.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAO5E,OAAO,EAAE,6BAA6B,EAAE,MAAM,qBAAqB,CAAC;AAEpE,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAoFvD;;;;GAIG;AACH,MAAM,OAAO,UAAU;IACb,UAAU,GAAqB,EAAE,CAAC;IAClC,QAAQ,GAAoB,EAAE,CAAC;IAC/B,aAAa,CAA0B;IAE/C,YAAY,OAAoD;QAC9D,IAAI,CAAC,aAAa,GAAG,OAAO,EAAE,aAAa,CAAC;IAC9C,CAAC;IAED;;;;;;;;OAQG;IACH,cAAc,CAAC,MAAkE;QAC/E,MAAM,QAAQ,GAAG,OAAO,MAAM,KAAK,UAAU;YAC3C,CAAC,CAAC,IAAK,MAAqD,CAAC,IAAI,CAAC;YAClE,CAAC,CAAC,MAAM,CAAC;QACX,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC7B,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,aAAa,CAAC,MAAc,EAAE,OAAe;QAC3C,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACtD,OAAO,SAAS,EAAE,SAAS,EAAE,EAAE,IAAI,IAAI,CAAC;IAC1C,CAAC;IAED;;OAEG;IACH,gBAAgB,CAAC,MAAc,EAAE,OAAe;QAC9C,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC7C,CAAC;IAED;;;;;;OAMG;IACH,QAAQ,CAAC,cAAsB,EAAE,SAA0B;QACzD,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC;QACxD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;YACnB,OAAO,EAAE,cAAc;YACvB,SAAS;YACT,QAAQ;SACT,CAAC,CAAC;QACH,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC;QACxD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;OAMG;IACH,eAAe,CAAC,MAAoB,EAAE,UAA4C,EAAE;QAClF,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,2BAA2B,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACnF,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,yBAAyB,CAC7B,OAA8B,EAC9B,OAAmC;QAEnC,IAAI,UAAU,GAAG,OAAO,CAAC;QAEzB,IAAI,OAAO,EAAE,MAAM,EAAE,CAAC;YACpB,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;QACnE,CAAC;QAED,IAAI,OAAO,EAAE,OAAO,EAAE,CAAC;YACrB,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;QACrE,CAAC;QAED,IAAI,OAAO,EAAE,SAAS,EAAE,CAAC;YACvB,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YACtC,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC;QAC/D,CAAC;QAED,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC;QAEtF,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnC,UAAU,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAC9C,CAAC;QAED,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5B,MAAM,IAAI,uBAAuB,CAAC,yCAAyC,CAAC,CAAC;QAC/E,CAAC;QAED,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAC/C,CAAC;QAED,OAAO,IAAI,6BAA6B,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAChE,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,oBAAoB,CACxB,YAAiC,EACjC,QAAgB,EAChB,UAA4D;QAE5D,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,MAAM,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC;QAChF,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,IAAI,uBAAuB,CAC/B,sCAAsC,YAAY,CAAC,MAAM,aAAa,YAAY,CAAC,OAAO,EAAE,CAC7F,CAAC;QACJ,CAAC;QAED,OAAO,SAAS,CAAC,oBAAoB,CAAC,YAAY,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;IAC5E,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,aAAa,CACjB,OAA8B,EAC9B,QAAgB,EAChB,UAAoC,EACpC,QAAsC;QAEtC,MAAM,YAAY,GAAG,QAAQ;YAC3B,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;YACnB,CAAC,CAAC,MAAM,IAAI,CAAC,yBAAyB,CAAC,OAAO,CAAC,CAAC;QAElD,OAAO,IAAI,CAAC,oBAAoB,CAAC,YAAY,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;IACvE,CAAC;IAED;;OAEG;IACK,aAAa,CAAC,MAAc,EAAE,OAAe;QACnD,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpC,IAAI,KAAK,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,MAAM,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,CAAC;gBACrF,OAAO,KAAK,CAAC,SAAS,CAAC;YACzB,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACK,YAAY,CAAC,OAAe,EAAE,OAAe;QACnD,IAAI,OAAO,KAAK,OAAO;YAAE,OAAO,IAAI,CAAC;QACrC,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3B,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACpC,OAAO,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QACpC,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IACK,iBAAiB,CAAC,OAAe;QACvC,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;YAAE,OAAO,CAAC,CAAC;QACrC,OAAO,EAAE,CAAC;IACZ,CAAC;CACF"}
|
|
@@ -8,6 +8,9 @@ export declare class ExactGasFreeClientMechanism implements ClientMechanism {
|
|
|
8
8
|
private getDeadlineBounds;
|
|
9
9
|
private clampDeadline;
|
|
10
10
|
scheme(): string;
|
|
11
|
+
getSigner(): ClientSigner;
|
|
12
|
+
private checkGasFreeBalance;
|
|
13
|
+
checkBalance(token: string, network: string): Promise<bigint>;
|
|
11
14
|
createPaymentPayload(requirements: PaymentRequirements, resource: string, extensions?: Record<string, unknown>): Promise<PaymentPayload>;
|
|
12
15
|
}
|
|
13
16
|
//# sourceMappingURL=exactGasfree.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exactGasfree.d.ts","sourceRoot":"","sources":["../../src/mechanisms/exactGasfree.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,cAAc,EACd,mBAAmB,EAGnB,eAAe,EACf,YAAY,
|
|
1
|
+
{"version":3,"file":"exactGasfree.d.ts","sourceRoot":"","sources":["../../src/mechanisms/exactGasfree.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,cAAc,EACd,mBAAmB,EAGnB,eAAe,EACf,YAAY,EAKb,MAAM,aAAa,CAAC;AACrB,OAAO,EAAiB,gBAAgB,EAA2B,MAAM,qBAAqB,CAAC;AAuB/F,qBAAa,2BAA4B,YAAW,eAAe;IACjE,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,OAAO,CAAmC;gBAEtC,MAAM,EAAE,YAAY,EAAE,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAM;IAKhF,OAAO,CAAC,YAAY;IAQpB,OAAO,CAAC,iBAAiB;IASzB,OAAO,CAAC,aAAa;IAqBrB,MAAM,IAAI,MAAM;IAIhB,SAAS,IAAI,YAAY;YAIX,mBAAmB;IAiB3B,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAI7D,oBAAoB,CACxB,YAAY,EAAE,mBAAmB,EACjC,QAAQ,EAAE,MAAM,EAChB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACnC,OAAO,CAAC,cAAc,CAAC;CA4K3B"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import gasFreeSDK from '@gasfree/gasfree-sdk';
|
|
2
2
|
const { TronGasFree } = gasFreeSDK;
|
|
3
|
-
import { GASFREE_PRIMARY_TYPE, getChainId, } from '../index.js';
|
|
3
|
+
import { GASFREE_PRIMARY_TYPE, getChainId, UnsupportedNetworkError, } from '../index.js';
|
|
4
4
|
import { findByAddress } from '../tokens.js';
|
|
5
5
|
import { TronAddressConverter, ZERO_ADDRESS_HEX } from '../address.js';
|
|
6
6
|
function requireEvmAddress(raw, fieldName, converter) {
|
|
@@ -25,7 +25,7 @@ export class ExactGasFreeClientMechanism {
|
|
|
25
25
|
if (client) {
|
|
26
26
|
return client;
|
|
27
27
|
}
|
|
28
|
-
throw new
|
|
28
|
+
throw new UnsupportedNetworkError(`GasFree is not configured for network: ${network}`);
|
|
29
29
|
}
|
|
30
30
|
getDeadlineBounds(network) {
|
|
31
31
|
if (network === 'tron:mainnet') {
|
|
@@ -52,10 +52,28 @@ export class ExactGasFreeClientMechanism {
|
|
|
52
52
|
scheme() {
|
|
53
53
|
return 'exact_gasfree';
|
|
54
54
|
}
|
|
55
|
+
getSigner() {
|
|
56
|
+
return this.signer;
|
|
57
|
+
}
|
|
58
|
+
async checkGasFreeBalance(token, network, accountInfo) {
|
|
59
|
+
if (!accountInfo) {
|
|
60
|
+
const apiClient = this.getApiClient(network);
|
|
61
|
+
const userAddress = this.signer.getAddress();
|
|
62
|
+
accountInfo = await apiClient.getAddressInfo(userAddress);
|
|
63
|
+
}
|
|
64
|
+
const gasfreeAddress = accountInfo.gasFreeAddress;
|
|
65
|
+
if (!gasfreeAddress) {
|
|
66
|
+
throw new Error(`Could not retrieve GasFree address for ${this.signer.getAddress()}`);
|
|
67
|
+
}
|
|
68
|
+
return this.signer.checkBalance(token, network, gasfreeAddress);
|
|
69
|
+
}
|
|
70
|
+
async checkBalance(token, network) {
|
|
71
|
+
return this.checkGasFreeBalance(token, network);
|
|
72
|
+
}
|
|
55
73
|
async createPaymentPayload(requirements, resource, extensions) {
|
|
56
74
|
const chainId = getChainId(requirements.network);
|
|
57
75
|
const apiClient = this.getApiClient(requirements.network);
|
|
58
|
-
const userAddress =
|
|
76
|
+
const userAddress = this.signer.getAddress();
|
|
59
77
|
// 1. Fetch account info
|
|
60
78
|
console.debug(`Fetching account info for ${userAddress} from GasFree API...`);
|
|
61
79
|
const accountInfo = await apiClient.getAddressInfo(userAddress);
|
|
@@ -108,17 +126,14 @@ export class ExactGasFreeClientMechanism {
|
|
|
108
126
|
// 4. Balance verification
|
|
109
127
|
const skipBalanceCheck = extensions?.skipBalanceCheck || false;
|
|
110
128
|
if (!skipBalanceCheck) {
|
|
111
|
-
if (asset) {
|
|
112
|
-
// Fetch balance directly from the contract for the gasfreeAddress
|
|
113
|
-
const assetBalance = await this.signer.checkBalance(requirements.asset, requirements.network, gasfreeAddress);
|
|
114
|
-
const requiredTotal = BigInt(requirements.amount) + maxFeeBig;
|
|
115
|
-
if (assetBalance < requiredTotal) {
|
|
116
|
-
throw new Error(`Insufficient balance in GasFree wallet ${gasfreeAddress}.`);
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
else {
|
|
129
|
+
if (!asset) {
|
|
120
130
|
throw new Error(`Asset ${requirements.asset} not found in GasFree account ${gasfreeAddress}.`);
|
|
121
131
|
}
|
|
132
|
+
const assetBalance = await this.checkGasFreeBalance(requirements.asset, requirements.network, accountInfo);
|
|
133
|
+
const requiredTotal = BigInt(requirements.amount) + maxFeeBig;
|
|
134
|
+
if (assetBalance < requiredTotal) {
|
|
135
|
+
throw new Error(`Insufficient balance in GasFree wallet ${gasfreeAddress}.`);
|
|
136
|
+
}
|
|
122
137
|
}
|
|
123
138
|
const { maxDelta } = this.getDeadlineBounds(requirements.network);
|
|
124
139
|
const deadlineRaw = extensions?.paymentPermitContext?.meta?.validBefore ||
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exactGasfree.js","sourceRoot":"","sources":["../../src/mechanisms/exactGasfree.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,sBAAsB,CAAC;AAC9C,MAAM,EAAE,WAAW,EAAE,GAAG,UAAU,CAAC;AACnC,OAAO,EAOL,oBAAoB,EACpB,UAAU,
|
|
1
|
+
{"version":3,"file":"exactGasfree.js","sourceRoot":"","sources":["../../src/mechanisms/exactGasfree.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,sBAAsB,CAAC;AAC9C,MAAM,EAAE,WAAW,EAAE,GAAG,UAAU,CAAC;AACnC,OAAO,EAOL,oBAAoB,EACpB,UAAU,EAEV,uBAAuB,GACxB,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEvE,SAAS,iBAAiB,CACxB,GAAY,EACZ,SAAiB,EACjB,SAA+B;IAE/B,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;QACtC,MAAM,IAAI,KAAK,CAAC,mCAAmC,SAAS,wBAAwB,CAAC,CAAC;IACxF,CAAC;IAED,MAAM,SAAS,GAAG,SAAS,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IACrD,IAAI,SAAS,KAAK,gBAAgB,EAAE,CAAC;QACnC,MAAM,IAAI,KAAK,CACb,uCAAuC,SAAS,YAAY,GAAG,iBAAiB,CACjF,CAAC;IACJ,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,OAAO,2BAA2B;IAC9B,MAAM,CAAe;IACrB,OAAO,CAAmC;IAElD,YAAY,MAAoB,EAAE,UAA4C,EAAE;QAC9E,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAEO,YAAY,CAAC,OAAe;QAClC,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACrC,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,MAAM,IAAI,uBAAuB,CAAC,0CAA0C,OAAO,EAAE,CAAC,CAAC;IACzF,CAAC;IAEO,iBAAiB,CAAC,OAAe;QACvC,IAAI,OAAO,KAAK,cAAc,EAAE,CAAC;YAC/B,sFAAsF;YACtF,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;QACzC,CAAC;QACD,mFAAmF;QACnF,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC1C,CAAC;IAEO,aAAa,CAAC,OAAe,EAAE,eAAuB;QAC5D,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;QAC1C,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;QAE/D,MAAM,WAAW,GAAG,GAAG,GAAG,QAAQ,CAAC;QACnC,MAAM,WAAW,GAAG,GAAG,GAAG,QAAQ,CAAC;QACnC,IAAI,eAAe,GAAG,WAAW,EAAE,CAAC;YAClC,MAAM,IAAI,KAAK,CACb,iCAAiC,OAAO,KAAK,eAAe,MAAM,WAAW,EAAE,CAChF,CAAC;QACJ,CAAC;QACD,IAAI,eAAe,GAAG,WAAW,EAAE,CAAC;YAClC,OAAO,CAAC,IAAI,CACV,iCAAiC,EACjC,EAAE,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,EAAE,EAAE,WAAW,EAAE,CACpD,CAAC;YACF,OAAO,WAAW,CAAC;QACrB,CAAC;QACD,OAAO,eAAe,CAAC;IACzB,CAAC;IAED,MAAM;QACJ,OAAO,eAAe,CAAC;IACzB,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAEO,KAAK,CAAC,mBAAmB,CAC/B,KAAa,EACb,OAAe,EACf,WAAgC;QAEhC,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;YAC7C,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;YAC7C,WAAW,GAAG,MAAM,SAAS,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;QAC5D,CAAC;QACD,MAAM,cAAc,GAAG,WAAW,CAAC,cAAc,CAAC;QAClD,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,0CAA0C,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;QACxF,CAAC;QACD,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE,cAAc,CAAC,CAAC;IAClE,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,KAAa,EAAE,OAAe;QAC/C,OAAO,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAClD,CAAC;IAED,KAAK,CAAC,oBAAoB,CACxB,YAAiC,EACjC,QAAgB,EAChB,UAAoC;QAEpC,MAAM,OAAO,GAAG,UAAU,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QACjD,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QAC1D,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;QAE7C,wBAAwB;QACxB,OAAO,CAAC,KAAK,CAAC,6BAA6B,WAAW,sBAAsB,CAAC,CAAC;QAC9E,MAAM,WAAW,GAAG,MAAM,SAAS,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;QAChE,MAAM,cAAc,GAAG,WAAW,CAAC,cAAc,CAAC;QAElD,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,0CAA0C,WAAW,EAAE,CAAC,CAAC;QAC3E,CAAC;QAED,6BAA6B;QAC7B,MAAM,WAAW,GAAI,WAAmB,CAAC,WAAW,IAAI,KAAK,CAAC;QAC9D,IAAI,CAAC,WAAW,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;YACxC,MAAM,IAAI,KAAK,CAAC,uBAAuB,WAAW,KAAK,cAAc,qBAAqB,CAAC,CAAC;QAC9F,CAAC;QAED,0BAA0B;QAC1B,MAAM,OAAO,GAAG,YAAY,CAAC,KAAK,EAAE,GAAG,CAAC;QACxC,IAAI,mBAA2B,CAAC;QAChC,IAAI,OAAO,EAAE,KAAK,EAAE,CAAC;YACnB,4CAA4C;YAC5C,mBAAmB,GAAG,OAAO,CAAC,KAAK,CAAC;YACpC,OAAO,CAAC,KAAK,CAAC,6CAA6C,mBAAmB,EAAE,CAAC,CAAC;QACpF,CAAC;aAAM,CAAC;YACN,sDAAsD;YACtD,OAAO,CAAC,KAAK,CAAC,2DAA2D,CAAC,CAAC;YAC3E,MAAM,SAAS,GAAG,MAAM,SAAS,CAAC,YAAY,EAAE,CAAC;YACjD,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACzC,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;YAC5D,CAAC;YACD,mBAAmB,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;YACtF,OAAO,CAAC,KAAK,CAAC,8BAA8B,mBAAmB,EAAE,CAAC,CAAC;QACrE,CAAC;QAED,iDAAiD;QACjD,MAAM,KAAK,GAAG,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,KAAK,YAAY,CAAC,KAAK,CAAC,CAAC;QACzF,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,EAAE,WAAW,IAAI,GAAG,CAAC,CAAC;QACtD,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,EAAE,WAAW,IAAI,GAAG,CAAC,CAAC;QAEtD,mBAAmB;QACnB,MAAM,cAAc,GAAG,MAAM,CAAC,OAAO,EAAE,SAAS,IAAI,GAAG,CAAC,CAAC;QACzD,IAAI,SAAS,GAAG,WAAW,GAAG,cAAc,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,cAAc,CAAC;QAE5E,qEAAqE;QACrE,IAAI,SAAS,KAAK,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;YACjC,MAAM,SAAS,GAAG,aAAa,CAAC,YAAY,CAAC,OAAO,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC;YAC1E,MAAM,QAAQ,GAAG,SAAS,EAAE,QAAQ,IAAI,CAAC,CAAC;YAC1C,SAAS,GAAG,MAAM,CAAC,EAAE,IAAI,QAAQ,CAAC,CAAC;QACrC,CAAC;QAED,iEAAiE;QACjE,IAAI,CAAC,WAAW,CAAC,MAAM,IAAI,WAAW,GAAG,EAAE,EAAE,CAAC;YAC5C,SAAS,GAAG,SAAS,GAAG,WAAW,CAAC;YACpC,OAAO,CAAC,KAAK,CAAC,qDAAqD,WAAW,YAAY,CAAC,CAAC;QAC9F,CAAC;QACD,IAAI,MAAM,GAAG,SAAS,CAAC,QAAQ,EAAE,CAAC;QAElC,0BAA0B;QAC1B,MAAM,gBAAgB,GAAI,UAAkB,EAAE,gBAAgB,IAAI,KAAK,CAAC;QACxE,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACtB,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,MAAM,IAAI,KAAK,CAAC,SAAS,YAAY,CAAC,KAAK,iCAAiC,cAAc,GAAG,CAAC,CAAC;YACjG,CAAC;YACD,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,YAAY,CAAC,KAAK,EAAE,YAAY,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;YAC3G,MAAM,aAAa,GAAG,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC;YAC9D,IAAI,YAAY,GAAG,aAAa,EAAE,CAAC;gBACjC,MAAM,IAAI,KAAK,CAAC,0CAA0C,cAAc,GAAG,CAAC,CAAC;YAC/E,CAAC;QACH,CAAC;QAED,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QAClE,MAAM,WAAW,GACd,UAAkB,EAAE,oBAAoB,EAAE,IAAI,EAAE,WAAW;YAC5D,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,QAAQ,CAAC;QAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC;QAE/E,MAAM,OAAO,GAAG,IAAI,WAAW,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;QAC7C,MAAM,gBAAgB,GAAG,IAAI,oBAAoB,EAAE,CAAC;QAEpD,6BAA6B;QAC7B,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,8BAA8B,CAAC;YACxE,KAAK,EAAE,YAAY,CAAC,KAAK;YACzB,eAAe,EAAE,mBAAmB;YACpC,IAAI,EAAE,WAAW;YACjB,QAAQ,EAAE,YAAY,CAAC,KAAK;YAC5B,KAAK,EAAE,YAAY,CAAC,MAAM;YAC1B,MAAM,EAAE,MAAM;YACd,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAAE;YAC7B,OAAO,EAAE,GAAG;YACZ,KAAK,EAAE,WAAW,CAAC,KAAK,CAAC,QAAQ,EAAE;SACpC,CAAC,CAAC;QAEH,MAAM,aAAa,GAAG;YACpB,GAAG,MAAM;YACT,iBAAiB,EAAE,iBAAiB,CAClC,MAAM,CAAC,iBAAiB,EACxB,mBAAmB,EACnB,gBAAgB,CACjB;SACF,CAAC;QACF,MAAM,cAAc,GAAG;YACrB,GAAG,OAAO;YACV,4DAA4D;YAC5D,wEAAwE;YACxE,oEAAoE;YACpE,gBAAgB;YAChB,KAAK,EAAE,iBAAiB,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,gBAAgB,CAAC;YAClE,eAAe,EAAE,iBAAiB,CAChC,OAAO,CAAC,eAAe,EACvB,iBAAiB,EACjB,gBAAgB,CACjB;YACD,IAAI,EAAE,iBAAiB,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,gBAAgB,CAAC;YAC/D,QAAQ,EAAE,iBAAiB,CAAC,OAAO,CAAC,QAAQ,EAAE,UAAU,EAAE,gBAAgB,CAAC;SAC5E,CAAC;QAEF,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAE,YAAY,CAAC,OAAO,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;QAClF,OAAO,CAAC,KAAK,CAAC,sCAAsC,EAAE,MAAM,CAAC,iBAAiB,CAAC,CAAC;QAChF,OAAO,CAAC,KAAK,CAAC,uBAAuB,EAAE,WAAW,CAAC,CAAC;QACpD,OAAO,CAAC,KAAK,CAAC,uBAAuB,EAAE,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC;QACtE,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAE,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,CAAC;QAExE,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,CAC/C,aAAa,EACb,KAAK,EACL,cAAc,EACd,oBAAoB,CACrB,CAAC;QAEF,mCAAmC;QACnC,MAAM,aAAa,GAAkB;YACnC,IAAI,EAAE;gBACJ,IAAI,EAAE,cAA8B;gBACpC,SAAS,EAAG,UAAkB,EAAE,oBAAoB,EAAE,IAAI,EAAE,SAAS,IAAI,EAAE;gBAC3E,KAAK,EAAE,WAAW,CAAC,KAAK,CAAC,QAAQ,EAAE;gBACnC,UAAU,EAAG,UAAkB,EAAE,oBAAoB,EAAE,IAAI,EAAE,UAAU,IAAI,CAAC;gBAC5E,WAAW,EAAE,MAAM,CAAC,QAAQ,CAAC;aAC9B;YACD,KAAK,EAAE,WAAW;YAClB,MAAM,EAAE,mBAAmB;YAC3B,OAAO,EAAE;gBACP,QAAQ,EAAE,YAAY,CAAC,KAAK;gBAC5B,SAAS,EAAE,YAAY,CAAC,MAAM;gBAC9B,KAAK,EAAE,YAAY,CAAC,KAAK;aAC1B;YACD,GAAG,EAAE;gBACH,KAAK,EAAE,mBAAmB;gBAC1B,SAAS,EAAE,MAAM;aAClB;SACF,CAAC;QAEF,MAAM,OAAO,GAAmB;YAC9B,WAAW,EAAE,CAAC;YACd,QAAQ,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE;YAC3B,QAAQ,EAAE,YAAY;YACtB,OAAO,EAAE;gBACP,SAAS;gBACT,aAAa;aACd;YACD,UAAU,EAAE;gBACV,GAAG,UAAU;gBACb,cAAc;gBACd,MAAM,EAAE,eAAe;aACxB;SACF,CAAC;QAEF,OAAO,OAAO,CAAC;IACjB,CAAC;CACF"}
|