@aifinpay/agent 2.0.3 → 2.1.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/PAYMENT_RECEIPTS.md +49 -0
- package/README.md +11 -8
- package/dist/aifp1.d.ts +20 -2
- package/dist/aifp1.d.ts.map +1 -1
- package/dist/aifp1.js +130 -9
- package/dist/aifp1.js.map +1 -1
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +127 -0
- package/dist/cli.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/settlement.d.ts +2 -1
- package/dist/settlement.d.ts.map +1 -1
- package/dist/settlement.js +4 -0
- package/dist/settlement.js.map +1 -1
- package/dist/settlementV14.d.ts +22 -11
- package/dist/settlementV14.d.ts.map +1 -1
- package/dist/settlementV14.js +276 -11
- package/dist/settlementV14.js.map +1 -1
- package/dist/solanaV14Deployments.generated.d.ts +15 -5
- package/dist/solanaV14Deployments.generated.d.ts.map +1 -1
- package/dist/solanaV14Deployments.generated.js +54 -32
- package/dist/solanaV14Deployments.generated.js.map +1 -1
- package/dist/splitterRoutes.generated.d.ts +9 -11
- package/dist/splitterRoutes.generated.d.ts.map +1 -1
- package/dist/splitterRoutes.generated.js +21 -15
- package/dist/splitterRoutes.generated.js.map +1 -1
- package/dist/unifiedAgent.d.ts +7 -5
- package/dist/unifiedAgent.d.ts.map +1 -1
- package/dist/unifiedAgent.js +26 -12
- package/dist/unifiedAgent.js.map +1 -1
- package/dist/v14Deployments.generated.d.ts +19 -15
- package/dist/v14Deployments.generated.d.ts.map +1 -1
- package/dist/v14Deployments.generated.js +69 -393
- package/dist/v14Deployments.generated.js.map +1 -1
- package/package.json +2 -2
package/dist/settlementV14.js
CHANGED
|
@@ -13,7 +13,9 @@
|
|
|
13
13
|
* Responsibilities". Each check below cites the clause it implements, because
|
|
14
14
|
* a check nobody can trace back to a requirement is a check somebody deletes.
|
|
15
15
|
*/
|
|
16
|
-
import { keccak256, stringToHex, parseAbi } from "viem";
|
|
16
|
+
import { keccak256, stringToHex, parseAbi, encodeFunctionData, encodeAbiParameters, decodeEventLog, recoverTypedDataAddress, isAddress, } from "viem";
|
|
17
|
+
import { V14_DEPLOYMENTS } from "./generated/v14Deployments.generated.js";
|
|
18
|
+
import { SettlementConfirmationPendingError } from "./settlement.js";
|
|
17
19
|
export class V14SettlementError extends Error {
|
|
18
20
|
code;
|
|
19
21
|
constructor(code, message) {
|
|
@@ -175,17 +177,280 @@ export async function checkV14Submittable(publicClient, call) {
|
|
|
175
177
|
}
|
|
176
178
|
return { submittable: true };
|
|
177
179
|
}
|
|
180
|
+
const QUOTE_FIELDS = [
|
|
181
|
+
{ name: "payer", type: "address" },
|
|
182
|
+
{ name: "merchant", type: "address" },
|
|
183
|
+
{ name: "token", type: "address" },
|
|
184
|
+
{ name: "grossAmount", type: "uint256" },
|
|
185
|
+
{ name: "ipCreator", type: "address" },
|
|
186
|
+
{ name: "validUntil", type: "uint256" },
|
|
187
|
+
{ name: "orderIdHash", type: "bytes32" },
|
|
188
|
+
{ name: "nonce", type: "uint256" },
|
|
189
|
+
{ name: "routeId", type: "bytes32" },
|
|
190
|
+
];
|
|
191
|
+
const NATIVE_FUNCTION = "settleNative((address,address,address,uint256,address,uint256,bytes32,uint256,bytes32),bytes)";
|
|
192
|
+
const EXECUTION_ABI = parseAbi([
|
|
193
|
+
"event Payment(bytes32 indexed paymentId,address indexed payer,address indexed merchant,address token,uint256 grossAmount,uint256 merchantAmount,uint256 treasuryAmount,uint256 ipCreatorAmount,uint256 validUntil,bytes32 routeId,bytes32 orderIdHash)",
|
|
194
|
+
"function settleNative((address payer,address merchant,address token,uint256 grossAmount,address ipCreator,uint256 validUntil,bytes32 orderIdHash,uint256 nonce,bytes32 routeId) quote,bytes signature) payable",
|
|
195
|
+
"function profiles() view returns (address)",
|
|
196
|
+
"function tokenList() view returns (address)",
|
|
197
|
+
"function treasury() view returns (address)",
|
|
198
|
+
"function hasRole(bytes32,address) view returns (bool)",
|
|
199
|
+
]);
|
|
200
|
+
const PROFILE_ABI = parseAbi([
|
|
201
|
+
"function getProfile(bytes32) view returns ((uint16 treasuryBps,uint16 ipCreatorBps,bool enabled,uint64 configuredAt,address routeTreasury))",
|
|
202
|
+
]);
|
|
178
203
|
/**
|
|
179
|
-
*
|
|
180
|
-
*
|
|
181
|
-
*
|
|
182
|
-
*
|
|
183
|
-
*
|
|
184
|
-
*
|
|
204
|
+
* Execute the existing v1.4 native ABI using independently pinned deployments.
|
|
205
|
+
* Profiles/treasury remain administratively mutable by the accepted v1.4 trust
|
|
206
|
+
* model; preflight checks their current values, not an immutable fee guarantee.
|
|
207
|
+
* All legacy calls lacking explicit purchase authorization remain disabled.
|
|
208
|
+
* Only local signing is supported so an exact transaction hash can be persisted
|
|
209
|
+
* before transmission, including when the RPC loses the broadcast response.
|
|
185
210
|
*/
|
|
186
|
-
export async function executeV14Settlement(
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
211
|
+
export async function executeV14Settlement(call, ctx) {
|
|
212
|
+
const fail = (code, message) => {
|
|
213
|
+
throw new V14SettlementError(code, message);
|
|
214
|
+
};
|
|
215
|
+
if (!ctx.orderId ||
|
|
216
|
+
!ctx.expectedMerchant ||
|
|
217
|
+
typeof ctx.expectedGrossAmount !== "bigint" ||
|
|
218
|
+
ctx.expectedGrossAmount <= 0n ||
|
|
219
|
+
typeof ctx.maxGasWei !== "bigint" ||
|
|
220
|
+
ctx.maxGasWei <= 0n ||
|
|
221
|
+
typeof ctx.onPrepared !== "function" ||
|
|
222
|
+
ctx.skipPreflight) {
|
|
223
|
+
fail("V14_SETTLEMENT_DISABLED", "Native v1.4 execution requires an authorized order, merchant, exact gross, gas cap and durable prepared-transaction journal; preflight cannot be skipped.");
|
|
224
|
+
}
|
|
225
|
+
// Copy the untrusted call before awaiting: callers cannot change checked data
|
|
226
|
+
// while RPC requests are in flight.
|
|
227
|
+
call = structuredClone(call);
|
|
228
|
+
const q = call?.args?.quote;
|
|
229
|
+
if (!q)
|
|
230
|
+
fail("V14_MALFORMED", "missing quote");
|
|
231
|
+
for (const address of [call.contract, q.payer, q.merchant, q.token, q.ipCreator, ctx.account, ctx.expectedMerchant]) {
|
|
232
|
+
if (!address || !isAddress(address, { strict: false }))
|
|
233
|
+
fail("V14_MALFORMED", "invalid address");
|
|
234
|
+
}
|
|
235
|
+
for (const value of [q.grossAmount, q.validUntil, q.nonce, call.value_wei]) {
|
|
236
|
+
if (typeof value !== "string" || !/^(0|[1-9][0-9]*)$/.test(value) || BigInt(value) >= 2n ** 256n) {
|
|
237
|
+
fail("V14_MALFORMED", "invalid uint256");
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
if (!/^0x[0-9a-fA-F]{64}$/.test(q.orderIdHash) || !/^0x[0-9a-fA-F]{64}$/.test(q.routeId)) {
|
|
241
|
+
fail("V14_MALFORMED", "invalid bytes32");
|
|
242
|
+
}
|
|
243
|
+
if (ctx.minSecondsRemaining !== undefined &&
|
|
244
|
+
(!Number.isFinite(ctx.minSecondsRemaining) || ctx.minSecondsRemaining < 30)) {
|
|
245
|
+
fail("V14_MALFORMED", "expiry headroom must be at least 30 seconds");
|
|
246
|
+
}
|
|
247
|
+
const validated = validateV14SettlementCall(call, {
|
|
248
|
+
orderId: ctx.orderId,
|
|
249
|
+
payer: ctx.account,
|
|
250
|
+
minSecondsRemaining: ctx.minSecondsRemaining,
|
|
251
|
+
});
|
|
252
|
+
if (call.route !== validated.route ||
|
|
253
|
+
call.arg_encoding !== "struct+signature" ||
|
|
254
|
+
call.function !== NATIVE_FUNCTION ||
|
|
255
|
+
JSON.stringify(call.field_order) !== JSON.stringify(QUOTE_FIELDS.map((f) => f.name))) {
|
|
256
|
+
fail("V14_CALL_MISMATCH", "route, method or quote field order disagrees with the supported ABI");
|
|
257
|
+
}
|
|
258
|
+
if (lc(q.token) !== ZERO || call.asset !== "POL" || lc(q.ipCreator) !== ZERO) {
|
|
259
|
+
fail("V14_UNSUPPORTED_ASSET", "This executor supports native POL without creator payments only");
|
|
260
|
+
}
|
|
261
|
+
if (lc(q.merchant) === ZERO ||
|
|
262
|
+
lc(q.merchant) !== lc(ctx.expectedMerchant) ||
|
|
263
|
+
BigInt(q.grossAmount) !== ctx.expectedGrossAmount) {
|
|
264
|
+
fail("V14_PURCHASE_MISMATCH", "signed merchant or gross does not match the authorized purchase");
|
|
265
|
+
}
|
|
266
|
+
if (call.nonce_at_signing !== undefined && call.nonce_at_signing !== q.nonce)
|
|
267
|
+
fail("V14_MALFORMED", "nonce metadata disagrees with signed quote");
|
|
268
|
+
const deployment = V14_DEPLOYMENTS[call.chain];
|
|
269
|
+
if (!["polygon", "amoy"].includes(call.chain) ||
|
|
270
|
+
!deployment ||
|
|
271
|
+
deployment.status !== "enabled" ||
|
|
272
|
+
!deployment.settlementEnabled ||
|
|
273
|
+
lc(call.contract) !== lc(deployment.splitter.address)) {
|
|
274
|
+
fail("V14_UNTRUSTED_DEPLOYMENT", "settlement target is not an enabled pinned native deployment");
|
|
275
|
+
}
|
|
276
|
+
const { publicClient, walletClient } = ctx;
|
|
277
|
+
const account = walletClient.account;
|
|
278
|
+
if (!account || account.type !== "local" || lc(account.address) !== lc(ctx.account) || !account.signTransaction) {
|
|
279
|
+
fail("V14_LOCAL_SIGNER_REQUIRED", "A matching local signer is required for recoverable broadcast");
|
|
280
|
+
}
|
|
281
|
+
const [rpcChain, walletChain, code] = await Promise.all([
|
|
282
|
+
publicClient.getChainId(),
|
|
283
|
+
walletClient.getChainId(),
|
|
284
|
+
publicClient.getBytecode({ address: call.contract }),
|
|
285
|
+
]);
|
|
286
|
+
if (rpcChain !== deployment.chainId ||
|
|
287
|
+
walletChain !== deployment.chainId ||
|
|
288
|
+
(walletClient.chain && walletClient.chain.id !== deployment.chainId))
|
|
289
|
+
fail("V14_CHAIN_MISMATCH", "wallet or RPC chain differs from pinned deployment");
|
|
290
|
+
if (!code || code === "0x" || keccak256(code) !== deployment.runtimeCodeHash)
|
|
291
|
+
fail("V14_RUNTIME_MISMATCH", "splitter bytecode does not match independently pinned runtime");
|
|
292
|
+
const message = {
|
|
293
|
+
...q,
|
|
294
|
+
grossAmount: BigInt(q.grossAmount),
|
|
295
|
+
validUntil: BigInt(q.validUntil),
|
|
296
|
+
nonce: BigInt(q.nonce),
|
|
297
|
+
};
|
|
298
|
+
let signer;
|
|
299
|
+
try {
|
|
300
|
+
signer = await recoverTypedDataAddress({
|
|
301
|
+
domain: {
|
|
302
|
+
name: "B2BSplitterV14",
|
|
303
|
+
version: "1",
|
|
304
|
+
chainId: deployment.chainId,
|
|
305
|
+
verifyingContract: deployment.splitter.address,
|
|
306
|
+
},
|
|
307
|
+
types: { Quote: QUOTE_FIELDS },
|
|
308
|
+
primaryType: "Quote",
|
|
309
|
+
message,
|
|
310
|
+
signature: call.args.signature,
|
|
311
|
+
});
|
|
312
|
+
}
|
|
313
|
+
catch {
|
|
314
|
+
fail("V14_BAD_SIGNATURE", "quote signature cannot be recovered");
|
|
315
|
+
}
|
|
316
|
+
if (lc(signer) !== lc(deployment.splitter.signer))
|
|
317
|
+
fail("V14_UNTRUSTED_SIGNER", "quote signer does not match independent deployment pin");
|
|
318
|
+
const [profiles, tokenList, treasury, signerHasRole, profile, preflight] = await Promise.all([
|
|
319
|
+
publicClient.readContract({ address: call.contract, abi: EXECUTION_ABI, functionName: "profiles" }),
|
|
320
|
+
publicClient.readContract({ address: call.contract, abi: EXECUTION_ABI, functionName: "tokenList" }),
|
|
321
|
+
publicClient.readContract({ address: call.contract, abi: EXECUTION_ABI, functionName: "treasury" }),
|
|
322
|
+
publicClient.readContract({
|
|
323
|
+
address: call.contract,
|
|
324
|
+
abi: EXECUTION_ABI,
|
|
325
|
+
functionName: "hasRole",
|
|
326
|
+
args: [keccak256(stringToHex("SIGN_OPERATOR_ROLE")), deployment.splitter.signer],
|
|
327
|
+
}),
|
|
328
|
+
publicClient.readContract({
|
|
329
|
+
address: deployment.splitter.profiles,
|
|
330
|
+
abi: PROFILE_ABI,
|
|
331
|
+
functionName: "getProfile",
|
|
332
|
+
args: [q.routeId],
|
|
333
|
+
}),
|
|
334
|
+
checkV14Submittable(publicClient, call),
|
|
335
|
+
]);
|
|
336
|
+
if (lc(profiles) !== lc(deployment.splitter.profiles) ||
|
|
337
|
+
lc(tokenList) !== lc(deployment.splitter.tokenList) ||
|
|
338
|
+
lc(treasury) !== lc(deployment.splitter.treasury) ||
|
|
339
|
+
!signerHasRole)
|
|
340
|
+
fail("V14_DEPLOYMENT_STATE_MISMATCH", "satellite, treasury or signer role differs from deployment pin");
|
|
341
|
+
const effectiveTreasury = lc(profile.routeTreasury) === ZERO ? treasury : profile.routeTreasury;
|
|
342
|
+
if (!profile.enabled ||
|
|
343
|
+
profile.treasuryBps !== (validated.route === "merchant-aifp1" ? 100 : 0) ||
|
|
344
|
+
profile.ipCreatorBps !== 0 ||
|
|
345
|
+
lc(effectiveTreasury) !== lc(deployment.splitter.treasury)) {
|
|
346
|
+
fail("V14_PROFILE_MISMATCH", "current profile differs from accepted route economics");
|
|
347
|
+
}
|
|
348
|
+
if (!preflight.submittable)
|
|
349
|
+
fail(preflight.code, preflight.reason);
|
|
350
|
+
const args = [message, call.args.signature];
|
|
351
|
+
await publicClient.simulateContract({
|
|
352
|
+
address: call.contract,
|
|
353
|
+
abi: EXECUTION_ABI,
|
|
354
|
+
functionName: "settleNative",
|
|
355
|
+
args,
|
|
356
|
+
account: ctx.account,
|
|
357
|
+
value: message.grossAmount,
|
|
358
|
+
});
|
|
359
|
+
const data = encodeFunctionData({ abi: EXECUTION_ABI, functionName: "settleNative", args });
|
|
360
|
+
const [estimatedGas, fees, nonce, balance] = await Promise.all([
|
|
361
|
+
publicClient.estimateGas({ account: ctx.account, to: call.contract, data, value: message.grossAmount }),
|
|
362
|
+
publicClient.estimateFeesPerGas({ type: "eip1559", chain: publicClient.chain }),
|
|
363
|
+
publicClient.getTransactionCount({ address: ctx.account, blockTag: "pending" }),
|
|
364
|
+
publicClient.getBalance({ address: ctx.account, blockTag: "pending" }),
|
|
365
|
+
]);
|
|
366
|
+
const gas = (estimatedGas * 120n + 99n) / 100n;
|
|
367
|
+
if (gas <= 0n ||
|
|
368
|
+
fees.maxFeePerGas <= 0n ||
|
|
369
|
+
fees.maxPriorityFeePerGas < 0n ||
|
|
370
|
+
fees.maxPriorityFeePerGas > fees.maxFeePerGas ||
|
|
371
|
+
gas * fees.maxFeePerGas > ctx.maxGasWei) {
|
|
372
|
+
fail("V14_GAS_BUDGET_EXCEEDED", "estimated maximum transaction fee exceeds the operator gas budget");
|
|
373
|
+
}
|
|
374
|
+
if (balance < message.grossAmount + gas * fees.maxFeePerGas)
|
|
375
|
+
fail("V14_INSUFFICIENT_BALANCE", "balance cannot cover authorized gross and maximum gas");
|
|
376
|
+
// Check deadline again after slow RPCs, before signing or persisting anything.
|
|
377
|
+
validateV14SettlementCall(call, {
|
|
378
|
+
orderId: ctx.orderId,
|
|
379
|
+
payer: ctx.account,
|
|
380
|
+
minSecondsRemaining: ctx.minSecondsRemaining,
|
|
381
|
+
});
|
|
382
|
+
const serializedTransaction = await account.signTransaction({
|
|
383
|
+
type: "eip1559",
|
|
384
|
+
chainId: deployment.chainId,
|
|
385
|
+
to: call.contract,
|
|
386
|
+
value: message.grossAmount,
|
|
387
|
+
data,
|
|
388
|
+
gas,
|
|
389
|
+
maxFeePerGas: fees.maxFeePerGas,
|
|
390
|
+
maxPriorityFeePerGas: fees.maxPriorityFeePerGas,
|
|
391
|
+
nonce,
|
|
392
|
+
});
|
|
393
|
+
const hash = keccak256(serializedTransaction);
|
|
394
|
+
await ctx.onPrepared({ hash, serializedTransaction });
|
|
395
|
+
// Once transmission is attempted every unknown result refers to this exact
|
|
396
|
+
// signed transaction. A caller must recover it, never request a new quote.
|
|
397
|
+
try {
|
|
398
|
+
const returnedHash = await publicClient.sendRawTransaction({ serializedTransaction });
|
|
399
|
+
if (lc(returnedHash) !== lc(hash))
|
|
400
|
+
throw new Error("RPC returned a different transaction hash");
|
|
401
|
+
}
|
|
402
|
+
catch {
|
|
403
|
+
throw new SettlementConfirmationPendingError(hash, "settlement");
|
|
404
|
+
}
|
|
405
|
+
let receipt;
|
|
406
|
+
try {
|
|
407
|
+
receipt = await publicClient.waitForTransactionReceipt({ hash, confirmations: 1 });
|
|
408
|
+
}
|
|
409
|
+
catch {
|
|
410
|
+
throw new SettlementConfirmationPendingError(hash, "settlement");
|
|
411
|
+
}
|
|
412
|
+
if (lc(receipt.transactionHash) !== lc(hash))
|
|
413
|
+
throw new SettlementConfirmationPendingError(hash, "settlement");
|
|
414
|
+
if (receipt.status !== "success" && receipt.status !== "reverted")
|
|
415
|
+
throw new SettlementConfirmationPendingError(hash, "settlement");
|
|
416
|
+
if (receipt.status === "reverted")
|
|
417
|
+
fail("V14_TRANSACTION_REVERTED", `transaction ${hash} reverted; gas may have been charged`);
|
|
418
|
+
const paymentId = keccak256(encodeAbiParameters(QUOTE_FIELDS, [
|
|
419
|
+
q.payer,
|
|
420
|
+
q.merchant,
|
|
421
|
+
q.token,
|
|
422
|
+
message.grossAmount,
|
|
423
|
+
q.ipCreator,
|
|
424
|
+
message.validUntil,
|
|
425
|
+
q.orderIdHash,
|
|
426
|
+
message.nonce,
|
|
427
|
+
q.routeId,
|
|
428
|
+
]));
|
|
429
|
+
const payment = receipt.logs
|
|
430
|
+
.filter((log) => lc(log.address) === lc(call.contract))
|
|
431
|
+
.flatMap((log) => {
|
|
432
|
+
try {
|
|
433
|
+
const event = decodeEventLog({ abi: EXECUTION_ABI, data: log.data, topics: log.topics });
|
|
434
|
+
return event.eventName === "Payment" ? [event.args] : [];
|
|
435
|
+
}
|
|
436
|
+
catch {
|
|
437
|
+
return [];
|
|
438
|
+
}
|
|
439
|
+
});
|
|
440
|
+
if (payment.length !== 1 ||
|
|
441
|
+
!payment.some((p) => lc(p.paymentId) === lc(paymentId) &&
|
|
442
|
+
lc(p.payer) === lc(q.payer) &&
|
|
443
|
+
lc(p.merchant) === lc(q.merchant) &&
|
|
444
|
+
lc(p.token) === ZERO &&
|
|
445
|
+
p.grossAmount === message.grossAmount &&
|
|
446
|
+
p.validUntil === message.validUntil &&
|
|
447
|
+
lc(p.routeId) === lc(q.routeId) &&
|
|
448
|
+
lc(p.orderIdHash) === lc(q.orderIdHash) &&
|
|
449
|
+
p.merchantAmount + p.treasuryAmount + p.ipCreatorAmount === message.grossAmount)) {
|
|
450
|
+
// Confirmation exists but payment evidence is inconclusive; retain the
|
|
451
|
+
// prepared hash and prevent the purchase layer from starting another payment.
|
|
452
|
+
throw new SettlementConfirmationPendingError(hash, "settlement");
|
|
453
|
+
}
|
|
454
|
+
return { hash, route: validated.route };
|
|
190
455
|
}
|
|
191
456
|
//# sourceMappingURL=settlementV14.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settlementV14.js","sourceRoot":"","sources":["../src/settlementV14.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"settlementV14.js","sourceRoot":"","sources":["../src/settlementV14.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,EACL,SAAS,EACT,WAAW,EACX,QAAQ,EACR,kBAAkB,EAClB,mBAAmB,EACnB,cAAc,EACd,uBAAuB,EACvB,SAAS,GAKV,MAAM,MAAM,CAAC;AAEd,OAAO,EAAE,eAAe,EAAE,MAAM,yCAAyC,CAAC;AAC1E,OAAO,EAAE,kCAAkC,EAAE,MAAM,iBAAiB,CAAC;AAgCrE,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IAClC,IAAI,CAAS;IACtB,YAAY,IAAY,EAAE,OAAe;QACvC,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;QACjC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;CACF;AAED;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,gBAAgB,EAAE,YAAY,CAAU,CAAC;AAG1E,MAAM,UAAU,SAAS,CAAC,IAAY;IACpC,OAAO,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;AACtC,CAAC;AAED,4DAA4D;AAC5D,MAAM,UAAU,aAAa;IAC3B,MAAM,GAAG,GAAkC,EAAE,CAAC;IAC9C,KAAK,MAAM,CAAC,IAAI,gBAAgB;QAAE,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,CAAC;IACtE,OAAO,GAAiC,CAAC;AAC3C,CAAC;AAED,MAAM,IAAI,GAAG,4CAA4C,CAAC;AAC1D,MAAM,EAAE,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;AAoBxD;;;;;;;GAOG;AACH,MAAM,UAAU,yBAAyB,CACvC,IAAuB,EACvB,OAA2B,EAAE;IAE7B,MAAM,IAAI,GAAG,CAAC,IAAY,EAAE,GAAW,EAAE,EAAE;QACzC,MAAM,IAAI,kBAAkB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAC1C,CAAC,CAAC;IAEF,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,IAAI,CAAC,eAAe,EAAE,oBAAoB,CAAC,CAAC;IACnF,IAAI,IAAI,CAAC,gBAAgB,KAAK,KAAK,EAAE,CAAC;QACpC,IAAI,CACF,mBAAmB,EACnB,wCAAwC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,kDAAkD,CACxH,CAAC;IACJ,CAAC;IACD,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;IACvC,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;IAC7C,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG;QAAE,IAAI,CAAC,eAAe,EAAE,kDAAkD,CAAC,CAAC;IAE1F,4EAA4E;IAC5E,wEAAwE;IACxE,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACtC,IAAI,CAAC,mBAAmB,EAAE,mCAAmC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC/F,CAAC;IAED,8EAA8E;IAC9E,MAAM,OAAO,GAAG,EAAE,GAAG,aAAa,EAAE,EAA4B,CAAC;IACjE,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,WAAW,IAAI,EAAE;QAAE,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC,GAAG,KAAK,CAAC;IAC5F,MAAM,KAAK,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IACrC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,IAAI,CACF,mBAAmB,EACnB,WAAW,CAAC,CAAC,OAAO,qCAAqC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK;YAC7F,kFAAkF,CACrF,CAAC;IACJ,CAAC;IAED,2EAA2E;IAC3E,yEAAyE;IACzE,IAAI,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;QACjD,IAAI,CACF,iBAAiB,EACjB,4BAA4B,CAAC,CAAC,KAAK,6BAA6B,IAAI,CAAC,KAAK,qCAAqC,CAChH,CAAC;IACJ,CAAC;IACD,IAAI,IAAI,CAAC,cAAc,IAAI,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;QACnE,IAAI,CAAC,eAAe,EAAE,qEAAqE,CAAC,CAAC;IAC/F,CAAC;IAED,6EAA6E;IAC7E,6EAA6E;IAC7E,sCAAsC;IACtC,IAAI,cAAc,GAAG,KAAK,CAAC;IAC3B,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QAC/B,IAAI,EAAE,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC;YACnE,IAAI,CACF,oBAAoB,EACpB,+EAA+E,IAAI,CAAC,OAAO,IAAI,CAChG,CAAC;QACJ,CAAC;QACD,cAAc,GAAG,IAAI,CAAC;IACxB,CAAC;IAED,4EAA4E;IAC5E,mDAAmD;IACnD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;IAC1D,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7D,MAAM,IAAI,GAAG,IAAI,CAAC,mBAAmB,IAAI,EAAE,CAAC;IAC5C,IAAI,SAAS,IAAI,CAAC,EAAE,CAAC;QACnB,IAAI,CAAC,aAAa,EAAE,iBAAiB,CAAC,SAAS,iDAAiD,CAAC,CAAC;IACpG,CAAC;IACD,IAAI,SAAS,GAAG,IAAI,EAAE,CAAC;QACrB,IAAI,CACF,cAAc,EACd,oBAAoB,SAAS,oBAAoB,IAAI,2BAA2B;YAC9E,iEAAiE,CACpE,CAAC;IACJ,CAAC;IAED,2EAA2E;IAC3E,uEAAuE;IACvE,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC;QAC7E,IAAI,CAAC,oBAAoB,EAAE,cAAc,IAAI,CAAC,SAAS,wCAAwC,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC;IACnH,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,KAAe,EAAE,gBAAgB,EAAE,SAAS,EAAE,cAAc,EAAE,CAAC;AACjF,CAAC;AAED,MAAM,SAAS,GAAG,QAAQ,CAAC;IACzB,6DAA6D;IAC7D,qDAAqD;IACrD,uCAAuC;CACxC,CAAC,CAAC;AAEH;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,YAA0B,EAC1B,IAAuB;IAEvB,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;IAC1B,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAClD,YAAY,CAAC,YAAY,CAAC;YACxB,OAAO,EAAE,IAAI,CAAC,QAAQ;YACtB,GAAG,EAAE,SAAS;YACd,YAAY,EAAE,eAAe;YAC7B,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;SACjC,CAAC;QACF,YAAY,CAAC,YAAY,CAAC;YACxB,OAAO,EAAE,IAAI,CAAC,QAAQ;YACtB,GAAG,EAAE,SAAS;YACd,YAAY,EAAE,YAAY;YAC1B,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;SAChB,CAAC;QACF,YAAY,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,SAAS,EAAE,YAAY,EAAE,QAAQ,EAAE,CAAC;KAC9F,CAAC,CAAC;IAEH,IAAI,MAAM,EAAE,CAAC;QACX,OAAO;YACL,WAAW,EAAE,KAAK;YAClB,IAAI,EAAE,YAAY;YAClB,MAAM,EAAE,wEAAwE;SACjF,CAAC;IACJ,CAAC;IACD,IAAI,KAAK,EAAE,CAAC;QACV,OAAO;YACL,WAAW,EAAE,KAAK;YAClB,IAAI,EAAE,qBAAqB;YAC3B,MAAM,EAAE,SAAS,CAAC,CAAC,KAAK,8BAA8B,CAAC,CAAC,KAAK,4CAA4C;SAC1G,CAAC;IACJ,CAAC;IACD,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;QACzC,OAAO;YACL,WAAW,EAAE,KAAK;YAClB,IAAI,EAAE,iBAAiB;YACvB,MAAM,EACJ,kCAAkC,CAAC,CAAC,KAAK,iCAAiC,QAAQ,KAAK;gBACvF,uEAAuE;SAC1E,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;AAC/B,CAAC;AAED,MAAM,YAAY,GAAG;IACnB,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE;IAClC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE;IACrC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE;IAClC,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,SAAS,EAAE;IACxC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE;IACtC,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,SAAS,EAAE;IACvC,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,SAAS,EAAE;IACxC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE;IAClC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE;CAC5B,CAAC;AACX,MAAM,eAAe,GAAG,+FAA+F,CAAC;AACxH,MAAM,aAAa,GAAG,QAAQ,CAAC;IAC7B,wPAAwP;IACxP,gNAAgN;IAChN,4CAA4C;IAC5C,6CAA6C;IAC7C,4CAA4C;IAC5C,uDAAuD;CACxD,CAAC,CAAC;AACH,MAAM,WAAW,GAAG,QAAQ,CAAC;IAC3B,6IAA6I;CAC9I,CAAC,CAAC;AAmBH;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,IAAuB,EACvB,GAAwB;IAExB,MAAM,IAAI,GAAG,CAAC,IAAY,EAAE,OAAe,EAAS,EAAE;QACpD,MAAM,IAAI,kBAAkB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC9C,CAAC,CAAC;IACF,IACE,CAAC,GAAG,CAAC,OAAO;QACZ,CAAC,GAAG,CAAC,gBAAgB;QACrB,OAAO,GAAG,CAAC,mBAAmB,KAAK,QAAQ;QAC3C,GAAG,CAAC,mBAAmB,IAAI,EAAE;QAC7B,OAAO,GAAG,CAAC,SAAS,KAAK,QAAQ;QACjC,GAAG,CAAC,SAAS,IAAI,EAAE;QACnB,OAAO,GAAG,CAAC,UAAU,KAAK,UAAU;QACpC,GAAG,CAAC,aAAa,EACjB,CAAC;QACD,IAAI,CACF,yBAAyB,EACzB,2JAA2J,CAC5J,CAAC;IACJ,CAAC;IACD,8EAA8E;IAC9E,oCAAoC;IACpC,IAAI,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;IAC7B,MAAM,CAAC,GAAG,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC;IAC5B,IAAI,CAAC,CAAC;QAAE,IAAI,CAAC,eAAe,EAAE,eAAe,CAAC,CAAC;IAC/C,KAAK,MAAM,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,SAAS,EAAE,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACpH,IAAI,CAAC,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;YAAE,IAAI,CAAC,eAAe,EAAE,iBAAiB,CAAC,CAAC;IACnG,CAAC;IACD,KAAK,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;QAC3E,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC;YACjG,IAAI,CAAC,eAAe,EAAE,iBAAiB,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;IACD,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;QACzF,IAAI,CAAC,eAAe,EAAE,iBAAiB,CAAC,CAAC;IAC3C,CAAC;IACD,IACE,GAAG,CAAC,mBAAmB,KAAK,SAAS;QACrC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,mBAAmB,CAAC,IAAI,GAAG,CAAC,mBAAmB,GAAG,EAAE,CAAC,EAC3E,CAAC;QACD,IAAI,CAAC,eAAe,EAAE,6CAA6C,CAAC,CAAC;IACvE,CAAC;IACD,MAAM,SAAS,GAAG,yBAAyB,CAAC,IAAI,EAAE;QAChD,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,KAAK,EAAE,GAAG,CAAC,OAAO;QAClB,mBAAmB,EAAE,GAAG,CAAC,mBAAmB;KAC7C,CAAC,CAAC;IACH,IACE,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,KAAK;QAC9B,IAAI,CAAC,YAAY,KAAK,kBAAkB;QACxC,IAAI,CAAC,QAAQ,KAAK,eAAe;QACjC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EACpF,CAAC;QACD,IAAI,CAAC,mBAAmB,EAAE,qEAAqE,CAAC,CAAC;IACnG,CAAC;IACD,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,IAAI,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE,CAAC;QAC7E,IAAI,CAAC,uBAAuB,EAAE,iEAAiE,CAAC,CAAC;IACnG,CAAC;IACD,IACE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,IAAI;QACvB,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,gBAAiB,CAAC;QAC5C,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,GAAG,CAAC,mBAAmB,EACjD,CAAC;QACD,IAAI,CAAC,uBAAuB,EAAE,iEAAiE,CAAC,CAAC;IACnG,CAAC;IACD,IAAI,IAAI,CAAC,gBAAgB,KAAK,SAAS,IAAI,IAAI,CAAC,gBAAgB,KAAK,CAAC,CAAC,KAAK;QAC1E,IAAI,CAAC,eAAe,EAAE,4CAA4C,CAAC,CAAC;IACtE,MAAM,UAAU,GAAG,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC/C,IACE,CAAC,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;QACzC,CAAC,UAAU;QACX,UAAU,CAAC,MAAM,KAAK,SAAS;QAC/B,CAAC,UAAU,CAAC,iBAAiB;QAC7B,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,EACrD,CAAC;QACD,IAAI,CAAC,0BAA0B,EAAE,8DAA8D,CAAC,CAAC;IACnG,CAAC;IACD,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,GAAG,GAAG,CAAC;IAC3C,MAAM,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC;IACrC,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,IAAI,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC;QAChH,IAAI,CAAC,2BAA2B,EAAE,+DAA+D,CAAC,CAAC;IACrG,CAAC;IACD,MAAM,CAAC,QAAQ,EAAE,WAAW,EAAE,IAAI,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACtD,YAAY,CAAC,UAAU,EAAE;QACzB,YAAY,CAAC,UAAU,EAAE;QACzB,YAAY,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;KACrD,CAAC,CAAC;IACH,IACE,QAAQ,KAAK,UAAU,CAAC,OAAO;QAC/B,WAAW,KAAK,UAAU,CAAC,OAAO;QAClC,CAAC,YAAY,CAAC,KAAK,IAAI,YAAY,CAAC,KAAK,CAAC,EAAE,KAAK,UAAU,CAAC,OAAO,CAAC;QAEpE,IAAI,CAAC,oBAAoB,EAAE,oDAAoD,CAAC,CAAC;IACnF,IAAI,CAAC,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,SAAS,CAAC,IAAI,CAAC,KAAK,UAAU,CAAC,eAAe;QAC1E,IAAI,CAAC,sBAAsB,EAAE,+DAA+D,CAAC,CAAC;IAChG,MAAM,OAAO,GAAG;QACd,GAAG,CAAC;QACJ,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC;QAClC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC;QAChC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;KACvB,CAAC;IACF,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,MAAM,uBAAuB,CAAC;YACrC,MAAM,EAAE;gBACN,IAAI,EAAE,gBAAgB;gBACtB,OAAO,EAAE,GAAG;gBACZ,OAAO,EAAE,UAAU,CAAC,OAAO;gBAC3B,iBAAiB,EAAE,UAAU,CAAC,QAAQ,CAAC,OAAO;aAC/C;YACD,KAAK,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE;YAC9B,WAAW,EAAE,OAAO;YACpB,OAAO;YACP,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS;SAC/B,CAAC,CAAC;IACL,CAAC;IAAC,MAAM,CAAC;QACP,IAAI,CAAC,mBAAmB,EAAE,qCAAqC,CAAC,CAAC;IACnE,CAAC;IACD,IAAI,EAAE,CAAC,MAAO,CAAC,KAAK,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC;QAChD,IAAI,CAAC,sBAAsB,EAAE,wDAAwD,CAAC,CAAC;IACzF,MAAM,CAAC,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,aAAa,EAAE,OAAO,EAAE,SAAS,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAC3F,YAAY,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,aAAa,EAAE,YAAY,EAAE,UAAU,EAAE,CAAC;QACnG,YAAY,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,aAAa,EAAE,YAAY,EAAE,WAAW,EAAE,CAAC;QACpG,YAAY,CAAC,YAAY,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,aAAa,EAAE,YAAY,EAAE,UAAU,EAAE,CAAC;QACnG,YAAY,CAAC,YAAY,CAAC;YACxB,OAAO,EAAE,IAAI,CAAC,QAAQ;YACtB,GAAG,EAAE,aAAa;YAClB,YAAY,EAAE,SAAS;YACvB,IAAI,EAAE,CAAC,SAAS,CAAC,WAAW,CAAC,oBAAoB,CAAC,CAAC,EAAE,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC;SACjF,CAAC;QACF,YAAY,CAAC,YAAY,CAAC;YACxB,OAAO,EAAE,UAAU,CAAC,QAAQ,CAAC,QAAQ;YACrC,GAAG,EAAE,WAAW;YAChB,YAAY,EAAE,YAAY;YAC1B,IAAI,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;SAClB,CAAC;QACF,mBAAmB,CAAC,YAAY,EAAE,IAAI,CAAC;KACxC,CAAC,CAAC;IACH,IACE,EAAE,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC;QACjD,EAAE,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC;QACnD,EAAE,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC;QACjD,CAAC,aAAa;QAEd,IAAI,CAAC,+BAA+B,EAAE,gEAAgE,CAAC,CAAC;IAC1G,MAAM,iBAAiB,GAAG,EAAE,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC;IAChG,IACE,CAAC,OAAO,CAAC,OAAO;QAChB,OAAO,CAAC,WAAW,KAAK,CAAC,SAAS,CAAC,KAAK,KAAK,gBAAgB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACxE,OAAO,CAAC,YAAY,KAAK,CAAC;QAC1B,EAAE,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAC1D,CAAC;QACD,IAAI,CAAC,sBAAsB,EAAE,uDAAuD,CAAC,CAAC;IACxF,CAAC;IACD,IAAI,CAAC,SAAS,CAAC,WAAW;QAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;IACnE,MAAM,IAAI,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAU,CAAC;IACrD,MAAM,YAAY,CAAC,gBAAgB,CAAC;QAClC,OAAO,EAAE,IAAI,CAAC,QAAQ;QACtB,GAAG,EAAE,aAAa;QAClB,YAAY,EAAE,cAAc;QAC5B,IAAI;QACJ,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,KAAK,EAAE,OAAO,CAAC,WAAW;KAC3B,CAAC,CAAC;IACH,MAAM,IAAI,GAAG,kBAAkB,CAAC,EAAE,GAAG,EAAE,aAAa,EAAE,YAAY,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5F,MAAM,CAAC,YAAY,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAC7D,YAAY,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC;QACvG,YAAY,CAAC,kBAAkB,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,YAAY,CAAC,KAAK,EAAE,CAAC;QAC/E,YAAY,CAAC,mBAAmB,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;QAC/E,YAAY,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;KACvE,CAAC,CAAC;IACH,MAAM,GAAG,GAAG,CAAC,YAAY,GAAG,IAAI,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC;IAC/C,IACE,GAAG,IAAI,EAAE;QACT,IAAI,CAAC,YAAY,IAAI,EAAE;QACvB,IAAI,CAAC,oBAAoB,GAAG,EAAE;QAC9B,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,YAAY;QAC7C,GAAG,GAAG,IAAI,CAAC,YAAY,GAAG,GAAG,CAAC,SAAU,EACxC,CAAC;QACD,IAAI,CAAC,yBAAyB,EAAE,mEAAmE,CAAC,CAAC;IACvG,CAAC;IACD,IAAI,OAAO,GAAG,OAAO,CAAC,WAAW,GAAG,GAAG,GAAG,IAAI,CAAC,YAAY;QACzD,IAAI,CAAC,0BAA0B,EAAE,uDAAuD,CAAC,CAAC;IAC5F,+EAA+E;IAC/E,yBAAyB,CAAC,IAAI,EAAE;QAC9B,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,KAAK,EAAE,GAAG,CAAC,OAAO;QAClB,mBAAmB,EAAE,GAAG,CAAC,mBAAmB;KAC7C,CAAC,CAAC;IACH,MAAM,qBAAqB,GAAG,MAAM,OAAQ,CAAC,eAAgB,CAAC;QAC5D,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,UAAU,CAAC,OAAO;QAC3B,EAAE,EAAE,IAAI,CAAC,QAAQ;QACjB,KAAK,EAAE,OAAO,CAAC,WAAW;QAC1B,IAAI;QACJ,GAAG;QACH,YAAY,EAAE,IAAI,CAAC,YAAY;QAC/B,oBAAoB,EAAE,IAAI,CAAC,oBAAoB;QAC/C,KAAK;KACN,CAAC,CAAC;IACH,MAAM,IAAI,GAAG,SAAS,CAAC,qBAAqB,CAAC,CAAC;IAC9C,MAAM,GAAG,CAAC,UAAW,CAAC,EAAE,IAAI,EAAE,qBAAqB,EAAE,CAAC,CAAC;IACvD,2EAA2E;IAC3E,2EAA2E;IAC3E,IAAI,CAAC;QACH,MAAM,YAAY,GAAG,MAAM,YAAY,CAAC,kBAAkB,CAAC,EAAE,qBAAqB,EAAE,CAAC,CAAC;QACtF,IAAI,EAAE,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;IAClG,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,kCAAkC,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IACnE,CAAC;IACD,IAAI,OAAO,CAAC;IACZ,IAAI,CAAC;QACH,OAAO,GAAG,MAAM,YAAY,CAAC,yBAAyB,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,EAAE,CAAC,CAAC;IACrF,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,kCAAkC,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IACnE,CAAC;IACD,IAAI,EAAE,CAAC,OAAO,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC;QAAE,MAAM,IAAI,kCAAkC,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IAC/G,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,IAAI,OAAO,CAAC,MAAM,KAAK,UAAU;QAC/D,MAAM,IAAI,kCAAkC,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IACnE,IAAI,OAAO,CAAC,MAAM,KAAK,UAAU;QAC/B,IAAI,CAAC,0BAA0B,EAAE,eAAe,IAAI,sCAAsC,CAAC,CAAC;IAC9F,MAAM,SAAS,GAAG,SAAS,CACzB,mBAAmB,CAAC,YAAY,EAAE;QAChC,CAAC,CAAC,KAAK;QACP,CAAC,CAAC,QAAQ;QACV,CAAC,CAAC,KAAK;QACP,OAAO,CAAC,WAAW;QACnB,CAAC,CAAC,SAAS;QACX,OAAO,CAAC,UAAU;QAClB,CAAC,CAAC,WAAW;QACb,OAAO,CAAC,KAAK;QACb,CAAC,CAAC,OAAO;KACV,CAAC,CACH,CAAC;IACF,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI;SACzB,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;SACtD,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;QACf,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,cAAc,CAAC,EAAE,GAAG,EAAE,aAAa,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;YACzF,OAAO,KAAK,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3D,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC,CAAC,CAAC;IACL,IACE,OAAO,CAAC,MAAM,KAAK,CAAC;QACpB,CAAC,OAAO,CAAC,IAAI,CACX,CAAC,CAAC,EAAE,EAAE,CACJ,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,SAAS,CAAC;YACjC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;YAC3B,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;YACjC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,IAAI;YACpB,CAAC,CAAC,WAAW,KAAK,OAAO,CAAC,WAAW;YACrC,CAAC,CAAC,UAAU,KAAK,OAAO,CAAC,UAAU;YACnC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;YAC/B,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC;YACvC,CAAC,CAAC,cAAc,GAAG,CAAC,CAAC,cAAc,GAAG,CAAC,CAAC,eAAe,KAAK,OAAO,CAAC,WAAW,CAClF,EACD,CAAC;QACD,uEAAuE;QACvE,8EAA8E;QAC9E,MAAM,IAAI,kCAAkC,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IACnE,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,CAAC,KAAK,EAAE,CAAC;AAC1C,CAAC"}
|
|
@@ -1,25 +1,35 @@
|
|
|
1
1
|
import type { SdkEnvironment } from "./deploymentResolver.js";
|
|
2
|
+
/** Solana clusters the resolver understands. `dev` maps to devnet, `prod` to
|
|
3
|
+
* mainnet-beta. */
|
|
2
4
|
export type SolanaNetwork = "devnet" | "mainnet";
|
|
5
|
+
/** A Solana splitter v1.4 deployment, as recorded by the deploy scripts. */
|
|
3
6
|
export interface SolanaV14Deployment {
|
|
4
7
|
network: SolanaNetwork;
|
|
8
|
+
/** Which SDK environment this deployment belongs to: devnet is the dev
|
|
9
|
+
* target, mainnet is prod. */
|
|
5
10
|
environment: SdkEnvironment;
|
|
6
11
|
splitterVersion: "1.4";
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
disabledReason?: string;
|
|
12
|
+
/** Base58 on-chain program id, from the deploy log's "Canonical program ID
|
|
13
|
+
* confirmed" line. Never hardcoded in resolver logic — read from here. */
|
|
10
14
|
programId: string;
|
|
15
|
+
/** IDL metadata (Anchor), for callers that load the IDL. */
|
|
11
16
|
idl: {
|
|
12
17
|
name: string;
|
|
13
18
|
version: string;
|
|
19
|
+
/** Path of the source IDL artifact in solana-contract, for provenance. */
|
|
14
20
|
artifact: string;
|
|
15
21
|
};
|
|
16
22
|
}
|
|
23
|
+
/** Where this table came from, so a build can be traced to a commit. */
|
|
17
24
|
export declare const SOLANA_V14_DEPLOYMENTS_SOURCE: {
|
|
18
25
|
readonly repo: "AiFinPay/solana-contract";
|
|
19
|
-
readonly commit: "e5df8f5436cf646ab495381eee04e0d1a10b4e2f";
|
|
20
|
-
readonly path: "deployments/splitter_v14/";
|
|
21
26
|
readonly branch: "dev";
|
|
27
|
+
readonly commit: "8a13d10d6210cd37345f7ae6684068bf849e24b1";
|
|
28
|
+
readonly path: "deployments/splitter_v14/";
|
|
22
29
|
};
|
|
30
|
+
/** Solana v1.4 deployments, keyed by cluster. Devnet is dev-only; mainnet is
|
|
31
|
+
* prod-only. Absence of a cluster here means no v1.4 deployment for it. */
|
|
23
32
|
export declare const SOLANA_V14_DEPLOYMENTS: Record<string, SolanaV14Deployment>;
|
|
33
|
+
/** The single development cluster Solana v1.4 supports today. */
|
|
24
34
|
export declare const SOLANA_DEV_NETWORKS: readonly ["devnet"];
|
|
25
35
|
//# sourceMappingURL=solanaV14Deployments.generated.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"solanaV14Deployments.generated.d.ts","sourceRoot":"","sources":["../src/solanaV14Deployments.generated.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"solanaV14Deployments.generated.d.ts","sourceRoot":"","sources":["../src/solanaV14Deployments.generated.ts"],"names":[],"mappings":"AA0BA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAE9D;oBACoB;AACpB,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,SAAS,CAAC;AAEjD,4EAA4E;AAC5E,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,aAAa,CAAC;IACvB;mCAC+B;IAC/B,WAAW,EAAE,cAAc,CAAC;IAC5B,eAAe,EAAE,KAAK,CAAC;IACvB;+EAC2E;IAC3E,SAAS,EAAE,MAAM,CAAC;IAClB,4DAA4D;IAC5D,GAAG,EAAE;QACH,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,0EAA0E;QAC1E,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;CACH;AAED,wEAAwE;AACxE,eAAO,MAAM,6BAA6B;;;;;CAKhC,CAAC;AAEX;4EAC4E;AAC5E,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAyBtE,CAAC;AAEF,iEAAiE;AACjE,eAAO,MAAM,mBAAmB,qBAAsB,CAAC"}
|
|
@@ -1,39 +1,61 @@
|
|
|
1
|
-
// DO NOT EDIT.
|
|
1
|
+
// DO NOT EDIT BY HAND. Bundled copy of the Solana splitter v1.4 deployment
|
|
2
|
+
// artifacts from AiFinPay/solana-contract, so a shipped build resolves the
|
|
3
|
+
// Solana program id without a runtime GitHub fetch — the same discipline as
|
|
4
|
+
// v14Deployments.generated.ts (EVM) and splitterRoutes.generated.ts.
|
|
5
|
+
//
|
|
6
|
+
// Source: AiFinPay/solana-contract @ dev (commit
|
|
7
|
+
// 8a13d10d6210cd37345f7ae6684068bf849e24b1), files:
|
|
8
|
+
// deployments/splitter_v14/splitter.mainnet.20260910-170049.json (mainnet IDL)
|
|
9
|
+
// deployments/splitter_v14/splitter-mainnet-deploy-20260910-170049.log
|
|
10
|
+
// deployments/splitter_v14/splitter.devnet.20260910-143306.json (devnet IDL)
|
|
11
|
+
// deployments/splitter_v14/splitter-deploy-20260910-143306.log
|
|
12
|
+
//
|
|
13
|
+
// To refresh: read the same files off solana-contract's dev branch, e.g.
|
|
14
|
+
// git show origin/dev:deployments/splitter_v14/splitter.mainnet.<ts>.json
|
|
15
|
+
// and update the program ids below. Development deployments are, by design,
|
|
16
|
+
// devnet; production is mainnet-beta. The program id in each entry is the
|
|
17
|
+
// canonical program id confirmed in the deploy log for that cluster.
|
|
18
|
+
//
|
|
19
|
+
// NOTE ON FALLBACK: unlike EVM (which falls back v1.4 -> v1.2), Solana has NO
|
|
20
|
+
// v1.2-equivalent splitter to fall back to. The previous Solana program
|
|
21
|
+
// (5g9zWHF1Vv6GiGpA2ZbJQbSCDZd5hAk9AyvabRJvKFx2) was closed and removed from
|
|
22
|
+
// mainnet, and the SDK never bundled it — it takes the program id at runtime
|
|
23
|
+
// from the bridge's pay_solana challenge. So the Solana resolver offers v1.4
|
|
24
|
+
// only; "auto" resolves v1.4 and raises a typed no-deployment error where v1.4
|
|
25
|
+
// is absent rather than inventing a downgrade.
|
|
26
|
+
/** Where this table came from, so a build can be traced to a commit. */
|
|
2
27
|
export const SOLANA_V14_DEPLOYMENTS_SOURCE = {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
28
|
+
repo: "AiFinPay/solana-contract",
|
|
29
|
+
branch: "dev",
|
|
30
|
+
commit: "8a13d10d6210cd37345f7ae6684068bf849e24b1",
|
|
31
|
+
path: "deployments/splitter_v14/",
|
|
7
32
|
};
|
|
33
|
+
/** Solana v1.4 deployments, keyed by cluster. Devnet is dev-only; mainnet is
|
|
34
|
+
* prod-only. Absence of a cluster here means no v1.4 deployment for it. */
|
|
8
35
|
export const SOLANA_V14_DEPLOYMENTS = {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
36
|
+
devnet: {
|
|
37
|
+
network: "devnet",
|
|
38
|
+
environment: "dev",
|
|
39
|
+
splitterVersion: "1.4",
|
|
40
|
+
programId: "Dg9v95m6ofTwaU9V69PNAyRaKeELwxrne4THUYuUTeon",
|
|
41
|
+
idl: {
|
|
42
|
+
name: "splitter",
|
|
43
|
+
version: "1.4.1",
|
|
44
|
+
artifact: "deployments/splitter_v14/splitter.devnet.20260910-143306.json",
|
|
45
|
+
},
|
|
46
|
+
},
|
|
47
|
+
mainnet: {
|
|
48
|
+
network: "mainnet",
|
|
49
|
+
environment: "prod",
|
|
50
|
+
splitterVersion: "1.4",
|
|
51
|
+
programId: "8dty5bD738Z9TzEkDu8vLSnhpJNWtEGMUEcYaKCUTY6y",
|
|
52
|
+
idl: {
|
|
53
|
+
name: "splitter",
|
|
54
|
+
version: "1.4.1",
|
|
55
|
+
artifact: "deployments/splitter_v14/splitter.mainnet.20260910-170049.json",
|
|
56
|
+
},
|
|
22
57
|
},
|
|
23
|
-
"mainnet": {
|
|
24
|
-
"network": "mainnet",
|
|
25
|
-
"environment": "prod",
|
|
26
|
-
"splitterVersion": "1.4",
|
|
27
|
-
"status": "disabled",
|
|
28
|
-
"settlementEnabled": false,
|
|
29
|
-
"disabledReason": "Backend Solana receipt verification is not implemented and upgrade authority is not multisig",
|
|
30
|
-
"programId": "724Ut31i4ecY4dJ25z8HuZetu3A43xtNkPdk4JdbsfdD",
|
|
31
|
-
"idl": {
|
|
32
|
-
"name": "splitter",
|
|
33
|
-
"version": "1.4.1",
|
|
34
|
-
"artifact": "deployments/splitter_v14/splitter.mainnet.json"
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
58
|
};
|
|
59
|
+
/** The single development cluster Solana v1.4 supports today. */
|
|
38
60
|
export const SOLANA_DEV_NETWORKS = ["devnet"];
|
|
39
61
|
//# sourceMappingURL=solanaV14Deployments.generated.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"solanaV14Deployments.generated.js","sourceRoot":"","sources":["../src/solanaV14Deployments.generated.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"solanaV14Deployments.generated.js","sourceRoot":"","sources":["../src/solanaV14Deployments.generated.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,2EAA2E;AAC3E,4EAA4E;AAC5E,qEAAqE;AACrE,EAAE;AACF,iDAAiD;AACjD,oDAAoD;AACpD,kFAAkF;AAClF,yEAAyE;AACzE,iFAAiF;AACjF,iEAAiE;AACjE,EAAE;AACF,yEAAyE;AACzE,4EAA4E;AAC5E,4EAA4E;AAC5E,0EAA0E;AAC1E,qEAAqE;AACrE,EAAE;AACF,8EAA8E;AAC9E,wEAAwE;AACxE,6EAA6E;AAC7E,6EAA6E;AAC7E,6EAA6E;AAC7E,+EAA+E;AAC/E,+CAA+C;AA2B/C,wEAAwE;AACxE,MAAM,CAAC,MAAM,6BAA6B,GAAG;IAC3C,IAAI,EAAE,0BAA0B;IAChC,MAAM,EAAE,KAAK;IACb,MAAM,EAAE,0CAA0C;IAClD,IAAI,EAAE,2BAA2B;CACzB,CAAC;AAEX;4EAC4E;AAC5E,MAAM,CAAC,MAAM,sBAAsB,GAAwC;IACzE,MAAM,EAAE;QACN,OAAO,EAAE,QAAQ;QACjB,WAAW,EAAE,KAAK;QAClB,eAAe,EAAE,KAAK;QACtB,SAAS,EAAE,8CAA8C;QACzD,GAAG,EAAE;YACH,IAAI,EAAE,UAAU;YAChB,OAAO,EAAE,OAAO;YAChB,QAAQ,EACN,+DAA+D;SAClE;KACF;IACD,OAAO,EAAE;QACP,OAAO,EAAE,SAAS;QAClB,WAAW,EAAE,MAAM;QACnB,eAAe,EAAE,KAAK;QACtB,SAAS,EAAE,8CAA8C;QACzD,GAAG,EAAE;YACH,IAAI,EAAE,UAAU;YAChB,OAAO,EAAE,OAAO;YAChB,QAAQ,EACN,gEAAgE;SACnE;KACF;CACF,CAAC;AAEF,iEAAiE;AACjE,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,QAAQ,CAAU,CAAC"}
|
|
@@ -1,19 +1,17 @@
|
|
|
1
1
|
import type { SplitterRouteDeployment, SplitterRouteKey } from "./splitterRoutes.js";
|
|
2
|
-
/** Where this table came from, so a deployed build can be traced to
|
|
2
|
+
/** Where this table came from, so a deployed build can be traced to a commit. */
|
|
3
3
|
export declare const SPLITTER_REGISTRY_SOURCE: {
|
|
4
|
-
readonly
|
|
5
|
-
readonly path: "registry/splitter
|
|
6
|
-
readonly
|
|
7
|
-
readonly
|
|
8
|
-
readonly
|
|
9
|
-
readonly
|
|
10
|
-
readonly validFrom: "2026-08-27T00:00:00.000Z";
|
|
11
|
-
readonly validUntil: "2026-11-25T00:00:00.000Z";
|
|
12
|
-
};
|
|
4
|
+
readonly repo: "AiFinPay/evm-contract";
|
|
5
|
+
readonly path: "registry/generated/splitter-table.json";
|
|
6
|
+
readonly commit: "64e245fd613e97f95195239238d6ac75484a8a21";
|
|
7
|
+
readonly artifactSha256: "36ee672b1deccd7b851460b459af26984ca07802477bc8c1e78018f5d5154827";
|
|
8
|
+
readonly schemaVersion: 4;
|
|
9
|
+
readonly registryUpdatedAt: "2026-08-30";
|
|
13
10
|
};
|
|
14
11
|
/**
|
|
15
12
|
* The governance Safe that owns every splitter below, and the exact signer
|
|
16
|
-
* shape it was verified under. Read from the
|
|
13
|
+
* shape it was verified under. Read from the chain by verify-registry.mjs, which
|
|
14
|
+
* compares the signer set and threshold exactly rather than as a floor.
|
|
17
15
|
*/
|
|
18
16
|
export declare const SPLITTER_GOVERNANCE: {
|
|
19
17
|
readonly safe: "0xFd936f75D9221949f2FEaB54Cd342F7527154eD5";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"splitterRoutes.generated.d.ts","sourceRoot":"","sources":["../src/splitterRoutes.generated.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"splitterRoutes.generated.d.ts","sourceRoot":"","sources":["../src/splitterRoutes.generated.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,uBAAuB,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAErF,iFAAiF;AACjF,eAAO,MAAM,wBAAwB;;;;;;;CAO3B,CAAC;AAEX;;;;GAIG;AACH,eAAO,MAAM,mBAAmB;;;;CAUtB,CAAC;AAEX,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,gBAAgB,EAAE,uBAAuB,CAqa7E,CAAC"}
|
|
@@ -1,21 +1,27 @@
|
|
|
1
1
|
// DO NOT EDIT. Generated by scripts/generate-splitter-routes.mjs from
|
|
2
|
-
//
|
|
3
|
-
// CI regenerates this file and fails on any
|
|
4
|
-
// payout address turns the build red instead of
|
|
2
|
+
// registry/splitter-table.json, a byte-for-byte copy of the canonical registry
|
|
3
|
+
// artifact in AiFinPay/evm-contract. CI regenerates this file and fails on any
|
|
4
|
+
// difference, so a hand-edited payout address turns the build red instead of
|
|
5
|
+
// shipping.
|
|
6
|
+
//
|
|
7
|
+
// To change anything here: change registry/registry.json in evm-contract, let
|
|
8
|
+
// verify-registry.mjs read it back off the chain, then run
|
|
9
|
+
// npm run registry:sync -- --from <path-to-evm-contract>
|
|
5
10
|
import { arbitrum, avalanche, base, bsc, optimism, polygon, polygonAmoy, unichain } from "viem/chains";
|
|
6
11
|
import { botchain, xrplevm } from "./chains.js";
|
|
7
|
-
/** Where this table came from, so a deployed build can be traced to
|
|
12
|
+
/** Where this table came from, so a deployed build can be traced to a commit. */
|
|
8
13
|
export const SPLITTER_REGISTRY_SOURCE = {
|
|
9
|
-
|
|
10
|
-
path: "registry/splitter
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
14
|
+
repo: "AiFinPay/evm-contract",
|
|
15
|
+
path: "registry/generated/splitter-table.json",
|
|
16
|
+
commit: "64e245fd613e97f95195239238d6ac75484a8a21",
|
|
17
|
+
artifactSha256: "36ee672b1deccd7b851460b459af26984ca07802477bc8c1e78018f5d5154827",
|
|
18
|
+
schemaVersion: 4,
|
|
19
|
+
registryUpdatedAt: "2026-08-30",
|
|
15
20
|
};
|
|
16
21
|
/**
|
|
17
22
|
* The governance Safe that owns every splitter below, and the exact signer
|
|
18
|
-
* shape it was verified under. Read from the
|
|
23
|
+
* shape it was verified under. Read from the chain by verify-registry.mjs, which
|
|
24
|
+
* compares the signer set and threshold exactly rather than as a floor.
|
|
19
25
|
*/
|
|
20
26
|
export const SPLITTER_GOVERNANCE = {
|
|
21
27
|
safe: "0xFd936f75D9221949f2FEaB54Cd342F7527154eD5",
|
|
@@ -44,8 +50,8 @@ export const SPLITTER_ROUTES = {
|
|
|
44
50
|
testnet: true,
|
|
45
51
|
rpcQuorum: 2,
|
|
46
52
|
stablecoins: { "USDC": "0x41E94Eb019C0762f9Bfcf9Fb1E58725BfB0e7582", "USDT": null },
|
|
47
|
-
validFrom: "2026-08-
|
|
48
|
-
validUntil: "2026-11-
|
|
53
|
+
validFrom: "2026-08-29T00:00:00.000Z",
|
|
54
|
+
validUntil: "2026-11-27T00:00:00.000Z",
|
|
49
55
|
defaultRpc: "https://rpc-amoy.polygon.technology",
|
|
50
56
|
explorer: "https://amoy.polygonscan.com",
|
|
51
57
|
verifiedAt: "2026-08-30",
|
|
@@ -65,8 +71,8 @@ export const SPLITTER_ROUTES = {
|
|
|
65
71
|
testnet: true,
|
|
66
72
|
rpcQuorum: 2,
|
|
67
73
|
stablecoins: { "USDC": "0x41E94Eb019C0762f9Bfcf9Fb1E58725BfB0e7582", "USDT": null },
|
|
68
|
-
validFrom: "2026-08-
|
|
69
|
-
validUntil: "2026-11-
|
|
74
|
+
validFrom: "2026-08-29T00:00:00.000Z",
|
|
75
|
+
validUntil: "2026-11-27T00:00:00.000Z",
|
|
70
76
|
defaultRpc: "https://rpc-amoy.polygon.technology",
|
|
71
77
|
explorer: "https://amoy.polygonscan.com",
|
|
72
78
|
verifiedAt: "2026-08-29",
|