@gvnrdao/dh-sdk 0.0.311 → 0.0.313
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/browser/dist/browser.js +1 -1
- package/dist/constants/chunks/deployment-addresses.d.ts +4 -0
- package/dist/constants/chunks/network-configs.d.ts +2 -0
- package/dist/contracts/typechain-contracts/factories/src/agent/AgentDelegationRegistry__factory.d.ts +1324 -0
- package/dist/contracts/typechain-contracts/src/agent/AgentDelegationRegistry.d.ts +995 -0
- package/dist/deployments.js +14 -7
- package/dist/deployments.mjs +14 -7
- package/dist/index.d.ts +2 -0
- package/dist/index.js +2412 -337
- package/dist/index.mjs +2381 -306
- package/dist/interfaces/chunks/config.i.d.ts +17 -0
- package/dist/modules/diamond-hands-sdk.d.ts +59 -0
- package/dist/modules/loan/loan-creator.module.d.ts +26 -0
- package/dist/utils/agent-delegation.utils.d.ts +20 -0
- package/dist/utils/server-session.d.ts +30 -0
- package/package.json +3 -3
package/dist/index.mjs
CHANGED
|
@@ -94,13 +94,15 @@ var init_deployment_addresses = __esm({
|
|
|
94
94
|
PositionDelegateRegistry: "0x482369De283622E7b05731875ec137d4E3D208F9",
|
|
95
95
|
FeeRecipientRegistry: "0x95795F8403DDb629E8527B2934C4e71f5fC0C374",
|
|
96
96
|
BitcoinWithdrawalAddressRegistry: "0x6376D392097F0A81e51BD83960A97EA20eaf1dbe",
|
|
97
|
-
CarryAgentRegistry: "0x5595CB538D44E6Cf179D20364fD631D0477e69f7"
|
|
97
|
+
CarryAgentRegistry: "0x5595CB538D44E6Cf179D20364fD631D0477e69f7",
|
|
98
|
+
AgentDelegationRegistry: "0xA6040Ee7c52220634C6cC565885d6956C95Faaf5",
|
|
99
|
+
DHAgentDelegate: "0x3Ea189b22Db147A7c79fF3FD8AaDfA8B0Bd0f4FB"
|
|
98
100
|
},
|
|
99
101
|
upgraded: {
|
|
100
102
|
PositionManager: {
|
|
101
|
-
previousImplementation: "
|
|
102
|
-
newImplementation: "
|
|
103
|
-
upgradedAt: "2026-07-
|
|
103
|
+
previousImplementation: "0x3a493909920DF104D4048c2c20270B9DAFC81716",
|
|
104
|
+
newImplementation: "0x607a80aee6eF425C7eC7bA5230E5FAFC95B0388F",
|
|
105
|
+
upgradedAt: "2026-07-23T23:55:25.994Z",
|
|
104
106
|
upgradedBy: "0xF20986F02420EF443AE9BE5092FB8A4975cF3aA6",
|
|
105
107
|
reason: "Shared upgrade script: PositionManager implementation update"
|
|
106
108
|
},
|
|
@@ -327,7 +329,7 @@ var init_deployment_addresses = __esm({
|
|
|
327
329
|
CIRCUIT_BREAKER_MODULE_IMPL: "0xF6277dEF72D51312CC99616B5380f34Eb7603D75",
|
|
328
330
|
ADMIN_MODULE_IMPL: "0xBBA86246169f81a307Fafff02C1e3D8456aab973",
|
|
329
331
|
POSITION_MANAGER_VIEWS_IMPL: "0xA455B542cFb36AF8451fc420dB89e590E5c87cef",
|
|
330
|
-
POSITION_MANAGER_IMPL: "
|
|
332
|
+
POSITION_MANAGER_IMPL: "0x607a80aee6eF425C7eC7bA5230E5FAFC95B0388F",
|
|
331
333
|
SIMPLE_PSM_V2: "0x19EcF7BA26e054fd4Ff06009A03070103dbBB058",
|
|
332
334
|
SIMPLE_PSM_V2_IMPL: "0xE38010BE47B389922A1cd4b533470F0af7d20101",
|
|
333
335
|
UCD_TOKEN_IMPL: "0xa6C8C4cfc7DD3dCE5F1259A4a1eAf8461aA8CeC8",
|
|
@@ -358,7 +360,10 @@ var init_deployment_addresses = __esm({
|
|
|
358
360
|
BITCOIN_WITHDRAWAL_ADDRESS_REGISTRY: "0x6376D392097F0A81e51BD83960A97EA20eaf1dbe",
|
|
359
361
|
BITCOIN_WITHDRAWAL_ADDRESS_REGISTRY_IMPL: "0xFF270BC4470dBA80430Bd1a3a66EB691599354fA",
|
|
360
362
|
CARRY_AGENT_REGISTRY: "0x5595CB538D44E6Cf179D20364fD631D0477e69f7",
|
|
361
|
-
CARRY_AGENT_REGISTRY_IMPL: "0x1b11a3D5e46F3672E643c997f0d569DFf0b64a01"
|
|
363
|
+
CARRY_AGENT_REGISTRY_IMPL: "0x1b11a3D5e46F3672E643c997f0d569DFf0b64a01",
|
|
364
|
+
AGENT_DELEGATION_REGISTRY: "0xA6040Ee7c52220634C6cC565885d6956C95Faaf5",
|
|
365
|
+
AGENT_DELEGATION_REGISTRY_IMPL: "0x4cCB77306A1EE0F1F686EeF83B66eD8796E6dd90",
|
|
366
|
+
DH_AGENT_DELEGATE: "0x3Ea189b22Db147A7c79fF3FD8AaDfA8B0Bd0f4FB"
|
|
362
367
|
}
|
|
363
368
|
};
|
|
364
369
|
SEPOLIA_CONTRACTS = {
|
|
@@ -387,7 +392,9 @@ var init_deployment_addresses = __esm({
|
|
|
387
392
|
PositionDelegateRegistry: "0x482369De283622E7b05731875ec137d4E3D208F9",
|
|
388
393
|
FeeRecipientRegistry: "0x95795F8403DDb629E8527B2934C4e71f5fC0C374",
|
|
389
394
|
BitcoinWithdrawalAddressRegistry: "0x6376D392097F0A81e51BD83960A97EA20eaf1dbe",
|
|
390
|
-
CarryAgentRegistry: "0x5595CB538D44E6Cf179D20364fD631D0477e69f7"
|
|
395
|
+
CarryAgentRegistry: "0x5595CB538D44E6Cf179D20364fD631D0477e69f7",
|
|
396
|
+
AgentDelegationRegistry: "0xA6040Ee7c52220634C6cC565885d6956C95Faaf5",
|
|
397
|
+
DHAgentDelegate: "0x3Ea189b22Db147A7c79fF3FD8AaDfA8B0Bd0f4FB"
|
|
391
398
|
};
|
|
392
399
|
MAINNET_DEPLOYMENT = {
|
|
393
400
|
network: "mainnet",
|
|
@@ -1309,30 +1316,30 @@ var require_pkg_src = __commonJS({
|
|
|
1309
1316
|
}
|
|
1310
1317
|
},
|
|
1311
1318
|
btcTransactionSigner: {
|
|
1312
|
-
cid: "
|
|
1319
|
+
cid: "QmZFzjpdwpiBxHPv3t1mhjv8hfPRD1hPZGJ7jUU9w6V2Ca",
|
|
1313
1320
|
authorizedCidHex: cidToHex(
|
|
1314
|
-
"
|
|
1321
|
+
"QmZFzjpdwpiBxHPv3t1mhjv8hfPRD1hPZGJ7jUU9w6V2Ca"
|
|
1315
1322
|
),
|
|
1316
1323
|
name: "Btc Transaction Signer",
|
|
1317
1324
|
description: "Production Btc Transaction Signer",
|
|
1318
1325
|
version: "1.1.1",
|
|
1319
1326
|
deployed: true,
|
|
1320
|
-
deployedAt:
|
|
1321
|
-
size:
|
|
1322
|
-
hash: "
|
|
1327
|
+
deployedAt: 1785173232972,
|
|
1328
|
+
size: 66562,
|
|
1329
|
+
hash: "13639ec13bfed381c3c9d81e17e37917446ba30d04d4d8e45809a6868139c3cb"
|
|
1323
1330
|
},
|
|
1324
1331
|
ucdMintValidator: {
|
|
1325
|
-
cid: "
|
|
1332
|
+
cid: "Qmb1TPCaNYRTHsnhZrE1J4BtVYNWBnWSneXRqyAco1XKku",
|
|
1326
1333
|
authorizedCidHex: cidToHex(
|
|
1327
|
-
"
|
|
1334
|
+
"Qmb1TPCaNYRTHsnhZrE1J4BtVYNWBnWSneXRqyAco1XKku"
|
|
1328
1335
|
),
|
|
1329
1336
|
name: "Ucd Mint Validator",
|
|
1330
1337
|
description: "Production Ucd Mint Validator",
|
|
1331
1338
|
version: "1.2.1",
|
|
1332
1339
|
deployed: true,
|
|
1333
|
-
deployedAt:
|
|
1334
|
-
size:
|
|
1335
|
-
hash: "
|
|
1340
|
+
deployedAt: 1785173240530,
|
|
1341
|
+
size: 81596,
|
|
1342
|
+
hash: "fdaa7abb4ad28ae1f20f5cd6e3e03e5a8787fd6ac05938f51070ed16844f80f5",
|
|
1336
1343
|
validatorWalletAddress: "0x82DB9F515957aA380B596C6eA2Bd30CEF181f236",
|
|
1337
1344
|
pkp: {
|
|
1338
1345
|
publicKey: "0x041ab17cd91fc5c0b761eea6092d032807561b621b82c488826776e04a9158d61ba64d809a4729f0501289d980732cb06d8dfd06999dd9c8efd2f495dad78b31bb",
|
|
@@ -1340,17 +1347,17 @@ var require_pkg_src = __commonJS({
|
|
|
1340
1347
|
}
|
|
1341
1348
|
},
|
|
1342
1349
|
processPaymentValidator: {
|
|
1343
|
-
cid: "
|
|
1350
|
+
cid: "QmWSSAgmLtfVsRawHU2Uf72Xw4hM5T5Jcx2n7EVmEHQD1E",
|
|
1344
1351
|
authorizedCidHex: cidToHex(
|
|
1345
|
-
"
|
|
1352
|
+
"QmWSSAgmLtfVsRawHU2Uf72Xw4hM5T5Jcx2n7EVmEHQD1E"
|
|
1346
1353
|
),
|
|
1347
1354
|
name: "Process Payment Validator",
|
|
1348
1355
|
description: "Production Process Payment Validator",
|
|
1349
1356
|
version: "1.2.1",
|
|
1350
1357
|
deployed: true,
|
|
1351
|
-
deployedAt:
|
|
1352
|
-
size:
|
|
1353
|
-
hash: "
|
|
1358
|
+
deployedAt: 1785173245463,
|
|
1359
|
+
size: 77593,
|
|
1360
|
+
hash: "0f1015e51702abd9834e295ea12ac8dbd906909d25f72ad6a509c061e625c75d",
|
|
1354
1361
|
validatorWalletAddress: "0x82DB9F515957aA380B596C6eA2Bd30CEF181f236",
|
|
1355
1362
|
pkp: {
|
|
1356
1363
|
publicKey: "0x04cfccb9b6c7addc79469c0e9fafebef4c70801302c62cdb26b610723a9b8527d23f98a40158c7340d83fd0e62d02b5ec74c12f7a86d98e8c6973b4811110f19ad",
|
|
@@ -1358,17 +1365,17 @@ var require_pkg_src = __commonJS({
|
|
|
1358
1365
|
}
|
|
1359
1366
|
},
|
|
1360
1367
|
extendPositionValidator: {
|
|
1361
|
-
cid: "
|
|
1368
|
+
cid: "QmZyx9qUVyWu7deCJFLZxB1WDVRBgobs1Vm6m4ECGMbpkS",
|
|
1362
1369
|
authorizedCidHex: cidToHex(
|
|
1363
|
-
"
|
|
1370
|
+
"QmZyx9qUVyWu7deCJFLZxB1WDVRBgobs1Vm6m4ECGMbpkS"
|
|
1364
1371
|
),
|
|
1365
1372
|
name: "Extend Position Validator",
|
|
1366
1373
|
description: "Production Extend Position Validator",
|
|
1367
1374
|
version: "1.2.1",
|
|
1368
1375
|
deployed: true,
|
|
1369
|
-
deployedAt:
|
|
1370
|
-
size:
|
|
1371
|
-
hash: "
|
|
1376
|
+
deployedAt: 1785173255906,
|
|
1377
|
+
size: 75372,
|
|
1378
|
+
hash: "545dc96a7e9b4d0aaadf239127b804a92df60b6b5b2fbb3203ef7de9ad97980a",
|
|
1372
1379
|
validatorWalletAddress: "0x82DB9F515957aA380B596C6eA2Bd30CEF181f236",
|
|
1373
1380
|
pkp: {
|
|
1374
1381
|
publicKey: "0x04e52338f6a0c3362800f1a94c4c8f08be5030dde0fa217388c53d1c1a4790f4443c9f2886b2d2d8f4b75a9a156e9b028011b1a1cf7648da0e556aa980ec692836",
|
|
@@ -1376,17 +1383,17 @@ var require_pkg_src = __commonJS({
|
|
|
1376
1383
|
}
|
|
1377
1384
|
},
|
|
1378
1385
|
btcWithdrawal: {
|
|
1379
|
-
cid: "
|
|
1386
|
+
cid: "QmXKsozVz832mvU5xgvFnAAms1kfQrHAKj1areHfkDkoK7",
|
|
1380
1387
|
authorizedCidHex: cidToHex(
|
|
1381
|
-
"
|
|
1388
|
+
"QmXKsozVz832mvU5xgvFnAAms1kfQrHAKj1areHfkDkoK7"
|
|
1382
1389
|
),
|
|
1383
1390
|
name: "Btc Withdrawal",
|
|
1384
1391
|
description: "Production Btc Withdrawal",
|
|
1385
|
-
version: "1.2.
|
|
1392
|
+
version: "1.2.1",
|
|
1386
1393
|
deployed: true,
|
|
1387
|
-
deployedAt:
|
|
1388
|
-
size:
|
|
1389
|
-
hash: "
|
|
1394
|
+
deployedAt: 1785173260209,
|
|
1395
|
+
size: 92692,
|
|
1396
|
+
hash: "18ade8e4f0c79896eee613d16c86de135f1d3daaa0fa056bcdbcaa0dff793c77",
|
|
1390
1397
|
validatorWalletAddress: "0x82DB9F515957aA380B596C6eA2Bd30CEF181f236",
|
|
1391
1398
|
pkp: {
|
|
1392
1399
|
publicKey: "0x043616787c5432415c24378c4ef48de2bcd6bb7b575b837e3cff09171802662da7105d79586c7659677a0ecbaddac4cce06cb2a11f69a16fa0c4d7002ac7d51a4d",
|
|
@@ -1394,17 +1401,17 @@ var require_pkg_src = __commonJS({
|
|
|
1394
1401
|
}
|
|
1395
1402
|
},
|
|
1396
1403
|
liquidationValidator: {
|
|
1397
|
-
cid: "
|
|
1404
|
+
cid: "Qme6aGADhiszkQbZL977E6nmBacd2PEB7K9Hs8puVrscNx",
|
|
1398
1405
|
authorizedCidHex: cidToHex(
|
|
1399
|
-
"
|
|
1406
|
+
"Qme6aGADhiszkQbZL977E6nmBacd2PEB7K9Hs8puVrscNx"
|
|
1400
1407
|
),
|
|
1401
1408
|
name: "Liquidation Validator",
|
|
1402
1409
|
description: "Production Liquidation Validator",
|
|
1403
1410
|
version: "1.2.1",
|
|
1404
1411
|
deployed: true,
|
|
1405
|
-
deployedAt:
|
|
1406
|
-
size:
|
|
1407
|
-
hash: "
|
|
1412
|
+
deployedAt: 1785173262533,
|
|
1413
|
+
size: 66846,
|
|
1414
|
+
hash: "b35ee7706d733d625faa4dbe37f73c8e20f0c1befa897cd7875e827de52003de",
|
|
1408
1415
|
validatorWalletAddress: "0x82DB9F515957aA380B596C6eA2Bd30CEF181f236",
|
|
1409
1416
|
pkp: {
|
|
1410
1417
|
publicKey: "0x041a241de58976c13e3d7ca5a18e494f7330151e3818706135d50176e78ffb673e58b11f0b67a87c73fade6c6b27d6e7a7377ea9f4c10bf31880f1d725f18cc6f8",
|
|
@@ -1430,17 +1437,17 @@ var require_pkg_src = __commonJS({
|
|
|
1430
1437
|
}
|
|
1431
1438
|
},
|
|
1432
1439
|
loanVaultBtcBalance: {
|
|
1433
|
-
cid: "
|
|
1440
|
+
cid: "QmaeQoHYvcMYobNbu9hQavGDudi8AXoW9tg3YHrvy1g2A4",
|
|
1434
1441
|
authorizedCidHex: cidToHex(
|
|
1435
|
-
"
|
|
1442
|
+
"QmaeQoHYvcMYobNbu9hQavGDudi8AXoW9tg3YHrvy1g2A4"
|
|
1436
1443
|
),
|
|
1437
1444
|
name: "Loan Vault Btc Balance",
|
|
1438
1445
|
description: "Production Loan Vault Btc Balance",
|
|
1439
1446
|
version: "1.2.1",
|
|
1440
1447
|
deployed: true,
|
|
1441
|
-
deployedAt:
|
|
1442
|
-
size:
|
|
1443
|
-
hash: "
|
|
1448
|
+
deployedAt: 1785173271802,
|
|
1449
|
+
size: 56800,
|
|
1450
|
+
hash: "a059133214e6ba0a73d655a15600c4b33e361fb340c98f8eecaf8ab7b95aaf83",
|
|
1444
1451
|
validatorWalletAddress: "0x82DB9F515957aA380B596C6eA2Bd30CEF181f236",
|
|
1445
1452
|
pkp: {
|
|
1446
1453
|
publicKey: "0x043616787c5432415c24378c4ef48de2bcd6bb7b575b837e3cff09171802662da7105d79586c7659677a0ecbaddac4cce06cb2a11f69a16fa0c4d7002ac7d51a4d",
|
|
@@ -1454,17 +1461,17 @@ var require_pkg_src = __commonJS({
|
|
|
1454
1461
|
// Requires BitcoinProviderRegistry.addAllowedCid(chainId, keccak256(utf8(cid)))
|
|
1455
1462
|
// on each target chain (the action decrypts registry slots). No OAR entry.
|
|
1456
1463
|
btcAddressBalance: {
|
|
1457
|
-
cid: "
|
|
1464
|
+
cid: "QmUXUtU9r1HhQVYgkXPN5s19SKXanhn4pMsCtFEP3GK4Kj",
|
|
1458
1465
|
authorizedCidHex: cidToHex(
|
|
1459
|
-
"
|
|
1466
|
+
"QmUXUtU9r1HhQVYgkXPN5s19SKXanhn4pMsCtFEP3GK4Kj"
|
|
1460
1467
|
),
|
|
1461
1468
|
name: "Btc Address Balance",
|
|
1462
1469
|
description: "Address-only signed total BTC balance via registry consensus (no positionId, no price)",
|
|
1463
1470
|
version: "0.2.1",
|
|
1464
1471
|
deployed: true,
|
|
1465
|
-
deployedAt:
|
|
1466
|
-
size:
|
|
1467
|
-
hash: "
|
|
1472
|
+
deployedAt: 1785173280221,
|
|
1473
|
+
size: 27309,
|
|
1474
|
+
hash: "f0d08938713d9d89a56a3a386cacbc2b57afd5ad367ea82d827d40e1bfc70989",
|
|
1468
1475
|
validatorWalletAddress: "0x82DB9F515957aA380B596C6eA2Bd30CEF181f236",
|
|
1469
1476
|
pkp: {
|
|
1470
1477
|
publicKey: "0x0498cbb31facfa26e3ec83ccdabfe4fe341ca0282e0c3cb81da7113723b9726e1e49efa92165cc3faa66ced4454cea56dbab12267852d6525a55d7c4f128b912cd",
|
|
@@ -1498,17 +1505,17 @@ var require_pkg_src = __commonJS({
|
|
|
1498
1505
|
hash: "03ee5be239c91c735d2c95db89a0d1b77e602cfc18af8eb64b3281fddcd90a72"
|
|
1499
1506
|
},
|
|
1500
1507
|
staleSpendRecoveryValidator: {
|
|
1501
|
-
cid: "
|
|
1508
|
+
cid: "QmXQWT8V4wjuvH8BbC7xrkYxsVu5AKfvfWcS7jnYfrexYm",
|
|
1502
1509
|
authorizedCidHex: cidToHex(
|
|
1503
|
-
"
|
|
1510
|
+
"QmXQWT8V4wjuvH8BbC7xrkYxsVu5AKfvfWcS7jnYfrexYm"
|
|
1504
1511
|
),
|
|
1505
1512
|
name: "Stale Spend Recovery Validator",
|
|
1506
1513
|
description: "Production Stale Spend Recovery Validator",
|
|
1507
1514
|
version: "1.1.2",
|
|
1508
1515
|
deployed: true,
|
|
1509
|
-
deployedAt:
|
|
1510
|
-
size:
|
|
1511
|
-
hash: "
|
|
1516
|
+
deployedAt: 1785173285829,
|
|
1517
|
+
size: 37108,
|
|
1518
|
+
hash: "04de5fc5b6f5131dc1544e3d3d187a1f9ef9616ffd12483d119f9102b3671791",
|
|
1512
1519
|
validatorWalletAddress: "0x82DB9F515957aA380B596C6eA2Bd30CEF181f236",
|
|
1513
1520
|
pkp: {
|
|
1514
1521
|
publicKey: "0x046da0ad6da7dd4a0063cbeac6f2bdb6a9889c2178b23470833356a8ee5630f7f0eee0db348d9d9aaaadd23eccf0063c8f68ee5e446abe30b882bf1de4c932bc21",
|
|
@@ -1516,17 +1523,17 @@ var require_pkg_src = __commonJS({
|
|
|
1516
1523
|
}
|
|
1517
1524
|
},
|
|
1518
1525
|
btcUtxoInvalidator: {
|
|
1519
|
-
cid: "
|
|
1526
|
+
cid: "Qmc9W2dgGpRax5Q2nXw8ciGF9RHjWj1y9v2MMWNbrCwnZb",
|
|
1520
1527
|
authorizedCidHex: cidToHex(
|
|
1521
|
-
"
|
|
1528
|
+
"Qmc9W2dgGpRax5Q2nXw8ciGF9RHjWj1y9v2MMWNbrCwnZb"
|
|
1522
1529
|
),
|
|
1523
1530
|
name: "Btc Utxo Invalidator",
|
|
1524
1531
|
description: "Production Btc Utxo Invalidator",
|
|
1525
1532
|
version: "1.0.0",
|
|
1526
1533
|
deployed: true,
|
|
1527
|
-
deployedAt:
|
|
1528
|
-
size:
|
|
1529
|
-
hash: "
|
|
1534
|
+
deployedAt: 1785173292828,
|
|
1535
|
+
size: 61410,
|
|
1536
|
+
hash: "9ca3817ea626b4ebca184e20cae827a8a982f48d6cd1497e81bb4469aa282627"
|
|
1530
1537
|
}
|
|
1531
1538
|
};
|
|
1532
1539
|
function getDeploymentsForNetwork(network) {
|
|
@@ -2272,7 +2279,7 @@ ${errorReport}`);
|
|
|
2272
2279
|
}
|
|
2273
2280
|
init_debug_logger();
|
|
2274
2281
|
init_session_signature_cache();
|
|
2275
|
-
var
|
|
2282
|
+
var import_ethers18 = __require("ethers");
|
|
2276
2283
|
var EXPIRED_LOAN_MIN_LIQUIDATION_THRESHOLD_BPS = 11e3;
|
|
2277
2284
|
var GRACE_PERIOD_DAYS = 30;
|
|
2278
2285
|
var SATOSHIS_PER_BITCOIN = 100000000n;
|
|
@@ -5046,6 +5053,7 @@ ${auth.clientId}`;
|
|
|
5046
5053
|
],
|
|
5047
5054
|
allowArbitraryBitcoinProvider: true,
|
|
5048
5055
|
allowArbitraryEvmRpc: true,
|
|
5056
|
+
pinContractAddresses: false,
|
|
5049
5057
|
allowDevSinglePriceProvider: true,
|
|
5050
5058
|
minBitcoinBalanceConfirmations: 1,
|
|
5051
5059
|
minBitcoinSpendConfirmations: 1,
|
|
@@ -5066,6 +5074,7 @@ ${auth.clientId}`;
|
|
|
5066
5074
|
],
|
|
5067
5075
|
allowArbitraryBitcoinProvider: false,
|
|
5068
5076
|
allowArbitraryEvmRpc: false,
|
|
5077
|
+
pinContractAddresses: true,
|
|
5069
5078
|
allowDevSinglePriceProvider: false,
|
|
5070
5079
|
minBitcoinBalanceConfirmations: 1,
|
|
5071
5080
|
minBitcoinSpendConfirmations: 1,
|
|
@@ -5086,6 +5095,7 @@ ${auth.clientId}`;
|
|
|
5086
5095
|
],
|
|
5087
5096
|
allowArbitraryBitcoinProvider: false,
|
|
5088
5097
|
allowArbitraryEvmRpc: false,
|
|
5098
|
+
pinContractAddresses: true,
|
|
5089
5099
|
allowDevSinglePriceProvider: false,
|
|
5090
5100
|
minBitcoinBalanceConfirmations: 6,
|
|
5091
5101
|
minBitcoinSpendConfirmations: 6,
|
|
@@ -5102,12 +5112,12 @@ ${auth.clientId}`;
|
|
|
5102
5112
|
}
|
|
5103
5113
|
async function executeVaultSnapshot(params) {
|
|
5104
5114
|
global.ethers = {
|
|
5105
|
-
...
|
|
5115
|
+
...import_ethers18.ethers,
|
|
5106
5116
|
providers: {
|
|
5107
|
-
StaticJsonRpcProvider:
|
|
5117
|
+
StaticJsonRpcProvider: import_ethers18.ethers.JsonRpcProvider
|
|
5108
5118
|
},
|
|
5109
|
-
Contract:
|
|
5110
|
-
utils:
|
|
5119
|
+
Contract: import_ethers18.ethers.Contract,
|
|
5120
|
+
utils: import_ethers18.ethers
|
|
5111
5121
|
// v6 moved utils to top level
|
|
5112
5122
|
};
|
|
5113
5123
|
global.Lit = {
|
|
@@ -5379,7 +5389,9 @@ function getSepoliaConfig() {
|
|
|
5379
5389
|
feeRecipientRegistry: SEPOLIA_CONTRACTS.FeeRecipientRegistry || "",
|
|
5380
5390
|
positionDelegateRegistry: SEPOLIA_CONTRACTS.PositionDelegateRegistry || "",
|
|
5381
5391
|
bitcoinWithdrawalAddressRegistry: SEPOLIA_CONTRACTS.BitcoinWithdrawalAddressRegistry || "",
|
|
5382
|
-
carryAgentRegistry: SEPOLIA_CONTRACTS.CarryAgentRegistry || ""
|
|
5392
|
+
carryAgentRegistry: SEPOLIA_CONTRACTS.CarryAgentRegistry || "",
|
|
5393
|
+
agentDelegationRegistry: SEPOLIA_CONTRACTS.AgentDelegationRegistry || "",
|
|
5394
|
+
dhAgentDelegate: SEPOLIA_CONTRACTS.DHAgentDelegate || ""
|
|
5383
5395
|
},
|
|
5384
5396
|
subgraphs: {
|
|
5385
5397
|
// Lazy getter for the same module-init snapshot reason as serviceEndpoint.
|
|
@@ -5420,7 +5432,9 @@ function getMainnetConfig() {
|
|
|
5420
5432
|
feeRecipientRegistry: MAINNET_CONTRACTS.FeeRecipientRegistry || "",
|
|
5421
5433
|
positionDelegateRegistry: MAINNET_CONTRACTS.PositionDelegateRegistry || "",
|
|
5422
5434
|
bitcoinWithdrawalAddressRegistry: MAINNET_CONTRACTS.BitcoinWithdrawalAddressRegistry || "",
|
|
5423
|
-
carryAgentRegistry: MAINNET_CONTRACTS.CarryAgentRegistry || ""
|
|
5435
|
+
carryAgentRegistry: MAINNET_CONTRACTS.CarryAgentRegistry || "",
|
|
5436
|
+
agentDelegationRegistry: MAINNET_CONTRACTS.AgentDelegationRegistry || "",
|
|
5437
|
+
dhAgentDelegate: MAINNET_CONTRACTS.DHAgentDelegate || ""
|
|
5424
5438
|
},
|
|
5425
5439
|
subgraphs: {
|
|
5426
5440
|
diamondHandsUrl: "https://gateway-arbitrum.network.thegraph.com/api/subgraphs/id/CCTPsdYqco2jChDLLBQTbdJWwoukVoMt1cXeR9ti6r9A"
|
|
@@ -5565,7 +5579,7 @@ var init_network_configs = __esm({
|
|
|
5565
5579
|
});
|
|
5566
5580
|
|
|
5567
5581
|
// src/modules/diamond-hands-sdk.ts
|
|
5568
|
-
import { Contract as
|
|
5582
|
+
import { Contract as Contract9, Interface as Interface5, JsonRpcProvider, AbiCoder as AbiCoder2, keccak256 as keccak2566, solidityPackedKeccak256 as solidityPackedKeccak2565, toUtf8Bytes as toUtf8Bytes6, getBytes as getBytes5, zeroPadValue as zeroPadValue5, toBeHex as toBeHex2, parseEther, formatEther, formatUnits, computeAddress, Signature, ZeroHash, ZeroAddress as ZeroAddress3, MaxUint256 } from "ethers";
|
|
5569
5583
|
|
|
5570
5584
|
// src/types/result.ts
|
|
5571
5585
|
function success(value) {
|
|
@@ -6619,6 +6633,7 @@ function isLoginRejection(error) {
|
|
|
6619
6633
|
var ServerSession = class {
|
|
6620
6634
|
signer;
|
|
6621
6635
|
serviceEndpoint;
|
|
6636
|
+
loginAudience;
|
|
6622
6637
|
chainId;
|
|
6623
6638
|
store;
|
|
6624
6639
|
onSignaturePrompt;
|
|
@@ -6649,6 +6664,10 @@ var ServerSession = class {
|
|
|
6649
6664
|
assertSafeServiceEndpoint(opts.serviceEndpoint);
|
|
6650
6665
|
this.signer = opts.signer;
|
|
6651
6666
|
this.serviceEndpoint = opts.serviceEndpoint.replace(/\/+$/, "");
|
|
6667
|
+
this.loginAudience = (opts.loginAudience ?? this.serviceEndpoint).replace(
|
|
6668
|
+
/\/+$/,
|
|
6669
|
+
""
|
|
6670
|
+
);
|
|
6652
6671
|
this.chainId = opts.chainId;
|
|
6653
6672
|
this.store = opts.persistSession === false ? null : opts.sessionStore ?? createDefaultSessionStore();
|
|
6654
6673
|
this.onSignaturePrompt = opts.onSignaturePrompt;
|
|
@@ -6748,6 +6767,53 @@ var ServerSession = class {
|
|
|
6748
6767
|
);
|
|
6749
6768
|
}
|
|
6750
6769
|
}
|
|
6770
|
+
/**
|
|
6771
|
+
* Adopt a login envelope signed ELSEWHERE and exchange it for a session now.
|
|
6772
|
+
*
|
|
6773
|
+
* The browser frontend collects one wallet signature and spends it at both the
|
|
6774
|
+
* api and this service, so the envelope is minted outside the SDK. Without this
|
|
6775
|
+
* seam the SDK would mint its own — a second wallet prompt, which for a
|
|
6776
|
+
* multi-sig Safe is another full propose-and-confirm ceremony across owners.
|
|
6777
|
+
*
|
|
6778
|
+
* Must be called PROMPTLY after signing. Each server pins the nonce on FIRST
|
|
6779
|
+
* use and requires that first use to be fresh (±120s EOA, ±600s contract
|
|
6780
|
+
* wallet); the stores are independent, so a late hand-off is rejected as
|
|
6781
|
+
* `stale_first_use` even though the other service already accepted it. After a
|
|
6782
|
+
* successful first use, silent re-mint covers the next 24h.
|
|
6783
|
+
*
|
|
6784
|
+
* No-ops the prompt path entirely: on success the session is cached and
|
|
6785
|
+
* persisted exactly as a self-minted login would be.
|
|
6786
|
+
*/
|
|
6787
|
+
adoptLoginPayload(payload) {
|
|
6788
|
+
const gen = this.generation;
|
|
6789
|
+
const notCleared = () => gen === this.generation;
|
|
6790
|
+
const attempt = (async () => {
|
|
6791
|
+
if (payload?.chainId !== this.chainId) {
|
|
6792
|
+
throw new Error(
|
|
6793
|
+
`ServerSession: cannot adopt a login for chain ${payload?.chainId} \u2014 this session is on ${this.chainId}`
|
|
6794
|
+
);
|
|
6795
|
+
}
|
|
6796
|
+
const payloadAddress = payload.message?.address?.toLowerCase();
|
|
6797
|
+
const signerAddress = (await this.signer.getAddress()).toLowerCase();
|
|
6798
|
+
if (!payloadAddress || payloadAddress !== signerAddress) {
|
|
6799
|
+
throw new Error(
|
|
6800
|
+
"ServerSession: cannot adopt a login signed by a different address"
|
|
6801
|
+
);
|
|
6802
|
+
}
|
|
6803
|
+
const session = await this.login(payload);
|
|
6804
|
+
if (notCleared()) {
|
|
6805
|
+
this.persist(payload, session);
|
|
6806
|
+
this.cached = session;
|
|
6807
|
+
this.promptBackoff = null;
|
|
6808
|
+
}
|
|
6809
|
+
return session;
|
|
6810
|
+
})();
|
|
6811
|
+
this.inFlight = attempt;
|
|
6812
|
+
return attempt.then(() => void 0).finally(() => {
|
|
6813
|
+
if (notCleared())
|
|
6814
|
+
this.inFlight = null;
|
|
6815
|
+
});
|
|
6816
|
+
}
|
|
6751
6817
|
/**
|
|
6752
6818
|
* Resolve a session WITHOUT ever prompting for a wallet signature: a live
|
|
6753
6819
|
* cached token, else the persisted JWT (adopted if still fresh, otherwise
|
|
@@ -6820,7 +6886,7 @@ var ServerSession = class {
|
|
|
6820
6886
|
const payload = await buildSignedLoginPayload(
|
|
6821
6887
|
this.signer,
|
|
6822
6888
|
this.chainId,
|
|
6823
|
-
this.
|
|
6889
|
+
this.loginAudience,
|
|
6824
6890
|
reuse
|
|
6825
6891
|
);
|
|
6826
6892
|
if (storeKey && !reuse) {
|
|
@@ -9031,7 +9097,7 @@ function createPKPManager(config) {
|
|
|
9031
9097
|
}
|
|
9032
9098
|
|
|
9033
9099
|
// src/modules/loan/loan-creator.module.ts
|
|
9034
|
-
import { Interface as Interface2, zeroPadValue as zeroPadValue4, toBeHex, SigningKey } from "ethers";
|
|
9100
|
+
import { Contract as Contract3, Interface as Interface2, zeroPadValue as zeroPadValue4, toBeHex, SigningKey } from "ethers";
|
|
9035
9101
|
var import_dh_lit_actions = __toESM(require_pkg_src());
|
|
9036
9102
|
var LoanCreator = class {
|
|
9037
9103
|
config;
|
|
@@ -9294,7 +9360,14 @@ var LoanCreator = class {
|
|
|
9294
9360
|
if (!positionIdResult.success) {
|
|
9295
9361
|
return failure(positionIdResult.error);
|
|
9296
9362
|
}
|
|
9297
|
-
const
|
|
9363
|
+
const confirmedIdResult = await this.confirmPositionId(
|
|
9364
|
+
receipt,
|
|
9365
|
+
positionIdResult.value
|
|
9366
|
+
);
|
|
9367
|
+
if (!confirmedIdResult.success) {
|
|
9368
|
+
return failure(confirmedIdResult.error);
|
|
9369
|
+
}
|
|
9370
|
+
const positionId = confirmedIdResult.value;
|
|
9298
9371
|
const result = {
|
|
9299
9372
|
success: true,
|
|
9300
9373
|
transactionHash: receipt.hash,
|
|
@@ -9445,8 +9518,9 @@ var LoanCreator = class {
|
|
|
9445
9518
|
hash: tx.hash
|
|
9446
9519
|
});
|
|
9447
9520
|
}
|
|
9521
|
+
const confirmations = await this.createPositionConfirmations();
|
|
9448
9522
|
const receipt = await Promise.race([
|
|
9449
|
-
tx.wait(
|
|
9523
|
+
tx.wait(confirmations),
|
|
9450
9524
|
new Promise(
|
|
9451
9525
|
(_, reject) => setTimeout(
|
|
9452
9526
|
() => reject(new Error("Transaction confirmation timeout")),
|
|
@@ -9568,6 +9642,88 @@ var LoanCreator = class {
|
|
|
9568
9642
|
);
|
|
9569
9643
|
}
|
|
9570
9644
|
}
|
|
9645
|
+
/**
|
|
9646
|
+
* Confirmation depth to wait for before trusting `positionId` from a receipt.
|
|
9647
|
+
*
|
|
9648
|
+
* Deeper is safer but slower, so local chains (instant mining, no reorgs) stay at 1.
|
|
9649
|
+
* Override with `createPositionConfirmations` when a chain needs more.
|
|
9650
|
+
*/
|
|
9651
|
+
async createPositionConfirmations() {
|
|
9652
|
+
const configured = this.config.createPositionConfirmations;
|
|
9653
|
+
if (typeof configured === "number" && configured >= 1)
|
|
9654
|
+
return configured;
|
|
9655
|
+
try {
|
|
9656
|
+
const network = await this.config.contractManager.getProvider().getNetwork();
|
|
9657
|
+
const chainId = Number(network.chainId);
|
|
9658
|
+
if (chainId === 31337 || chainId === 1337)
|
|
9659
|
+
return 1;
|
|
9660
|
+
} catch {
|
|
9661
|
+
}
|
|
9662
|
+
return 3;
|
|
9663
|
+
}
|
|
9664
|
+
/**
|
|
9665
|
+
* Re-read the receipt after confirmations and re-derive `positionId`, so a reorg
|
|
9666
|
+
* cannot leave the caller holding an id that never survived to the canonical chain.
|
|
9667
|
+
*
|
|
9668
|
+
* Returns the authoritative id. If the re-read disagrees with what was first
|
|
9669
|
+
* extracted, the fresh value wins and the divergence is logged loudly — silently
|
|
9670
|
+
* returning a phantom id is how this surfaced as a `PositionNotFound()` hundreds of
|
|
9671
|
+
* lines downstream, long after the real cause.
|
|
9672
|
+
*/
|
|
9673
|
+
async confirmPositionId(receipt, extractedId) {
|
|
9674
|
+
let authoritativeId = extractedId;
|
|
9675
|
+
try {
|
|
9676
|
+
const provider = this.config.contractManager.getProvider();
|
|
9677
|
+
const fresh = await provider.getTransactionReceipt(receipt.hash);
|
|
9678
|
+
if (!fresh) {
|
|
9679
|
+
return failure(
|
|
9680
|
+
new SDKError({
|
|
9681
|
+
message: `Loan creation receipt ${receipt.hash} is no longer on-chain after confirmation (dropped or reorged). The position, if any, must be rediscovered before use.`,
|
|
9682
|
+
category: "CONTRACT" /* CONTRACT */,
|
|
9683
|
+
severity: "HIGH" /* HIGH */,
|
|
9684
|
+
originalError: new Error("Receipt vanished after confirmation")
|
|
9685
|
+
})
|
|
9686
|
+
);
|
|
9687
|
+
}
|
|
9688
|
+
const reExtracted = this.extractPositionId(
|
|
9689
|
+
fresh
|
|
9690
|
+
);
|
|
9691
|
+
if (reExtracted.success && reExtracted.value !== extractedId) {
|
|
9692
|
+
log.warn(
|
|
9693
|
+
"\u26A0\uFE0F positionId changed after confirmation \u2014 the block was reorged and the transaction re-executed with a different block.timestamp/positionCounter. Using the canonical value.",
|
|
9694
|
+
{ transactionHash: receipt.hash, before: extractedId, after: reExtracted.value }
|
|
9695
|
+
);
|
|
9696
|
+
authoritativeId = reExtracted.value;
|
|
9697
|
+
}
|
|
9698
|
+
} catch (e) {
|
|
9699
|
+
log.warn("Could not re-read loan creation receipt for confirmation", {
|
|
9700
|
+
error: e?.message ?? String(e)
|
|
9701
|
+
});
|
|
9702
|
+
}
|
|
9703
|
+
const coreAddress = this.config.contractManager.getContractAddresses().positionManagerCore;
|
|
9704
|
+
if (coreAddress) {
|
|
9705
|
+
try {
|
|
9706
|
+
const core = new Contract3(
|
|
9707
|
+
coreAddress,
|
|
9708
|
+
[
|
|
9709
|
+
"function getPositionDetails(bytes32) view returns (tuple(bytes32 positionId, bytes32 pkpId, uint256 ucdDebt, string vaultAddress, address borrower, uint40 createdAt, uint40 lastUpdated, uint16 selectedTerm, uint40 expiryAt, uint8 status))"
|
|
9710
|
+
],
|
|
9711
|
+
this.config.contractManager.getProvider()
|
|
9712
|
+
);
|
|
9713
|
+
await core.getFunction("getPositionDetails")(authoritativeId);
|
|
9714
|
+
} catch {
|
|
9715
|
+
return failure(
|
|
9716
|
+
new SDKError({
|
|
9717
|
+
message: `Loan creation reported positionId ${authoritativeId}, but no such position exists on-chain (tx ${receipt.hash}). This usually means the block was reorged after the receipt was read. Retry loan creation; do not use this id.`,
|
|
9718
|
+
category: "CONTRACT" /* CONTRACT */,
|
|
9719
|
+
severity: "HIGH" /* HIGH */,
|
|
9720
|
+
originalError: new Error("positionId not found on-chain after creation")
|
|
9721
|
+
})
|
|
9722
|
+
);
|
|
9723
|
+
}
|
|
9724
|
+
}
|
|
9725
|
+
return success(authoritativeId);
|
|
9726
|
+
}
|
|
9571
9727
|
/**
|
|
9572
9728
|
* Extract position ID from transaction receipt
|
|
9573
9729
|
*/
|
|
@@ -9684,7 +9840,7 @@ var LoanStatus = /* @__PURE__ */ ((LoanStatus2) => {
|
|
|
9684
9840
|
})(LoanStatus || {});
|
|
9685
9841
|
|
|
9686
9842
|
// src/modules/loan/loan-query.module.ts
|
|
9687
|
-
import { Contract as
|
|
9843
|
+
import { Contract as Contract4 } from "ethers";
|
|
9688
9844
|
var POSITION_CORE_ABI = [
|
|
9689
9845
|
"function getPositionDetails(bytes32) view returns (tuple(bytes32 positionId, bytes32 pkpId, uint256 ucdDebt, string vaultAddress, address borrower, uint40 createdAt, uint40 lastUpdated, uint16 selectedTerm, uint40 expiryAt, uint8 status, uint40 previousExpiryAt, uint16 totalTerm))"
|
|
9690
9846
|
];
|
|
@@ -9982,7 +10138,7 @@ var LoanQuery = class {
|
|
|
9982
10138
|
const isChipotlePkpId2 = typeof rawId === "string" && rawId.length === 40 && !rawId.toLowerCase().startsWith("04");
|
|
9983
10139
|
if (isChipotlePkpId2) {
|
|
9984
10140
|
if (this.config.positionManagerCoreAddress && this.config.provider) {
|
|
9985
|
-
const pmContract = new
|
|
10141
|
+
const pmContract = new Contract4(
|
|
9986
10142
|
this.config.positionManagerCoreAddress,
|
|
9987
10143
|
POSITION_CORE_ABI,
|
|
9988
10144
|
this.config.provider
|
|
@@ -13387,7 +13543,7 @@ var DiamondHandsGraph = class {
|
|
|
13387
13543
|
|
|
13388
13544
|
// src/contracts/typechain-contracts/factories/src/psm/SimplePSMV2__factory.ts
|
|
13389
13545
|
import {
|
|
13390
|
-
Contract as
|
|
13546
|
+
Contract as Contract6,
|
|
13391
13547
|
ContractFactory,
|
|
13392
13548
|
Interface as Interface3
|
|
13393
13549
|
} from "ethers";
|
|
@@ -15981,184 +16137,1963 @@ var SimplePSMV2__factory = class extends ContractFactory {
|
|
|
15981
16137
|
return new Interface3(_abi);
|
|
15982
16138
|
}
|
|
15983
16139
|
static connect(address, runner) {
|
|
15984
|
-
return new
|
|
16140
|
+
return new Contract6(address, _abi, runner);
|
|
15985
16141
|
}
|
|
15986
16142
|
};
|
|
15987
16143
|
|
|
15988
|
-
// src/
|
|
15989
|
-
|
|
15990
|
-
|
|
15991
|
-
|
|
15992
|
-
|
|
15993
|
-
|
|
15994
|
-
|
|
15995
|
-
|
|
15996
|
-
|
|
15997
|
-
|
|
15998
|
-
|
|
15999
|
-
|
|
16000
|
-
|
|
16001
|
-
|
|
16002
|
-
|
|
16003
|
-
|
|
16004
|
-
|
|
16005
|
-
|
|
16006
|
-
|
|
16007
|
-
|
|
16008
|
-
|
|
16009
|
-
|
|
16010
|
-
|
|
16011
|
-
});
|
|
16012
|
-
}
|
|
16013
|
-
if (this.isProductionNetwork()) {
|
|
16014
|
-
return failure(
|
|
16015
|
-
new SDKError({
|
|
16016
|
-
message: "Cannot mint mock tokens on production network",
|
|
16017
|
-
category: "CONFIGURATION" /* CONFIGURATION */,
|
|
16018
|
-
severity: "HIGH" /* HIGH */,
|
|
16019
|
-
originalError: new Error("Production network detected")
|
|
16020
|
-
})
|
|
16021
|
-
);
|
|
16022
|
-
}
|
|
16023
|
-
return tryCatchAsync(
|
|
16024
|
-
async () => {
|
|
16025
|
-
const signerResult = this.config.contractManager.getSigner();
|
|
16026
|
-
if (!signerResult.success) {
|
|
16027
|
-
throw signerResult.error;
|
|
16028
|
-
}
|
|
16029
|
-
throw new Error("Mock BTC contract not yet integrated");
|
|
16030
|
-
},
|
|
16031
|
-
(error) => new SDKError({
|
|
16032
|
-
message: "Failed to mint mock BTC",
|
|
16033
|
-
category: "CONTRACT" /* CONTRACT */,
|
|
16034
|
-
severity: "MEDIUM" /* MEDIUM */,
|
|
16035
|
-
originalError: error instanceof Error ? error : new Error(String(error)),
|
|
16036
|
-
context: { amount: amount.toString(), recipient }
|
|
16037
|
-
})
|
|
16038
|
-
);
|
|
16039
|
-
}
|
|
16040
|
-
/**
|
|
16041
|
-
* Approve mock BTC spending
|
|
16042
|
-
*
|
|
16043
|
-
* @param spender - Spender address
|
|
16044
|
-
* @param amount - Amount to approve in satoshis
|
|
16045
|
-
* @returns Transaction result
|
|
16046
|
-
*/
|
|
16047
|
-
async approveMockBTC(spender, amount) {
|
|
16048
|
-
if (this.config.debug) {
|
|
16049
|
-
log.info("\u2705 Approving mock BTC spending", {
|
|
16050
|
-
spender,
|
|
16051
|
-
amount: amount.toString()
|
|
16052
|
-
});
|
|
16053
|
-
}
|
|
16054
|
-
if (this.isProductionNetwork()) {
|
|
16055
|
-
return failure(
|
|
16056
|
-
new SDKError({
|
|
16057
|
-
message: "Cannot approve mock tokens on production network",
|
|
16058
|
-
category: "CONFIGURATION" /* CONFIGURATION */,
|
|
16059
|
-
severity: "HIGH" /* HIGH */,
|
|
16060
|
-
originalError: new Error("Production network detected")
|
|
16061
|
-
})
|
|
16062
|
-
);
|
|
16063
|
-
}
|
|
16064
|
-
return tryCatchAsync(
|
|
16065
|
-
async () => {
|
|
16066
|
-
const signerResult = this.config.contractManager.getSigner();
|
|
16067
|
-
if (!signerResult.success) {
|
|
16068
|
-
throw signerResult.error;
|
|
16069
|
-
}
|
|
16070
|
-
throw new Error("Mock BTC contract not yet integrated");
|
|
16071
|
-
},
|
|
16072
|
-
(error) => new SDKError({
|
|
16073
|
-
message: "Failed to approve mock BTC",
|
|
16074
|
-
category: "CONTRACT" /* CONTRACT */,
|
|
16075
|
-
severity: "MEDIUM" /* MEDIUM */,
|
|
16076
|
-
originalError: error instanceof Error ? error : new Error(String(error)),
|
|
16077
|
-
context: { spender, amount: amount.toString() }
|
|
16078
|
-
})
|
|
16079
|
-
);
|
|
16080
|
-
}
|
|
16081
|
-
/**
|
|
16082
|
-
* Get mock BTC balance
|
|
16083
|
-
*
|
|
16084
|
-
* @param address - Address to query
|
|
16085
|
-
* @returns Balance in satoshis
|
|
16086
|
-
*/
|
|
16087
|
-
async getMockBTCBalance(address) {
|
|
16088
|
-
if (this.config.debug) {
|
|
16089
|
-
log.info("\u{1F50D} Querying mock BTC balance", { address });
|
|
16090
|
-
}
|
|
16091
|
-
return tryCatchAsync(
|
|
16092
|
-
async () => {
|
|
16093
|
-
throw new Error("Mock BTC contract not yet integrated");
|
|
16144
|
+
// src/contracts/typechain-contracts/factories/src/agent/AgentDelegationRegistry__factory.ts
|
|
16145
|
+
import {
|
|
16146
|
+
Contract as Contract7,
|
|
16147
|
+
ContractFactory as ContractFactory2,
|
|
16148
|
+
Interface as Interface4
|
|
16149
|
+
} from "ethers";
|
|
16150
|
+
var _abi2 = [
|
|
16151
|
+
{
|
|
16152
|
+
inputs: [],
|
|
16153
|
+
stateMutability: "nonpayable",
|
|
16154
|
+
type: "constructor"
|
|
16155
|
+
},
|
|
16156
|
+
{
|
|
16157
|
+
inputs: [],
|
|
16158
|
+
name: "AccessControlBadConfirmation",
|
|
16159
|
+
type: "error"
|
|
16160
|
+
},
|
|
16161
|
+
{
|
|
16162
|
+
inputs: [
|
|
16163
|
+
{
|
|
16164
|
+
internalType: "address",
|
|
16165
|
+
name: "account",
|
|
16166
|
+
type: "address"
|
|
16094
16167
|
},
|
|
16095
|
-
|
|
16096
|
-
|
|
16097
|
-
|
|
16098
|
-
|
|
16099
|
-
|
|
16100
|
-
|
|
16101
|
-
|
|
16102
|
-
|
|
16103
|
-
}
|
|
16104
|
-
|
|
16105
|
-
|
|
16106
|
-
|
|
16107
|
-
|
|
16108
|
-
|
|
16109
|
-
|
|
16110
|
-
}
|
|
16111
|
-
|
|
16112
|
-
|
|
16113
|
-
|
|
16114
|
-
|
|
16115
|
-
|
|
16116
|
-
|
|
16117
|
-
|
|
16118
|
-
|
|
16119
|
-
|
|
16120
|
-
|
|
16121
|
-
|
|
16122
|
-
|
|
16123
|
-
|
|
16124
|
-
}
|
|
16125
|
-
|
|
16126
|
-
|
|
16127
|
-
|
|
16128
|
-
|
|
16129
|
-
|
|
16130
|
-
|
|
16131
|
-
|
|
16132
|
-
|
|
16133
|
-
|
|
16134
|
-
|
|
16135
|
-
|
|
16136
|
-
|
|
16137
|
-
|
|
16138
|
-
|
|
16139
|
-
|
|
16140
|
-
|
|
16141
|
-
}
|
|
16142
|
-
|
|
16143
|
-
|
|
16144
|
-
|
|
16145
|
-
|
|
16146
|
-
|
|
16147
|
-
|
|
16148
|
-
|
|
16149
|
-
|
|
16150
|
-
|
|
16151
|
-
|
|
16152
|
-
|
|
16153
|
-
|
|
16154
|
-
|
|
16155
|
-
|
|
16156
|
-
|
|
16157
|
-
|
|
16158
|
-
|
|
16159
|
-
|
|
16160
|
-
|
|
16161
|
-
|
|
16168
|
+
{
|
|
16169
|
+
internalType: "bytes32",
|
|
16170
|
+
name: "neededRole",
|
|
16171
|
+
type: "bytes32"
|
|
16172
|
+
}
|
|
16173
|
+
],
|
|
16174
|
+
name: "AccessControlUnauthorizedAccount",
|
|
16175
|
+
type: "error"
|
|
16176
|
+
},
|
|
16177
|
+
{
|
|
16178
|
+
inputs: [
|
|
16179
|
+
{
|
|
16180
|
+
internalType: "address",
|
|
16181
|
+
name: "target",
|
|
16182
|
+
type: "address"
|
|
16183
|
+
}
|
|
16184
|
+
],
|
|
16185
|
+
name: "AddressEmptyCode",
|
|
16186
|
+
type: "error"
|
|
16187
|
+
},
|
|
16188
|
+
{
|
|
16189
|
+
inputs: [],
|
|
16190
|
+
name: "AgentAddressReused",
|
|
16191
|
+
type: "error"
|
|
16192
|
+
},
|
|
16193
|
+
{
|
|
16194
|
+
inputs: [],
|
|
16195
|
+
name: "AgentIsActiveUseRotate",
|
|
16196
|
+
type: "error"
|
|
16197
|
+
},
|
|
16198
|
+
{
|
|
16199
|
+
inputs: [],
|
|
16200
|
+
name: "AgentNotActive",
|
|
16201
|
+
type: "error"
|
|
16202
|
+
},
|
|
16203
|
+
{
|
|
16204
|
+
inputs: [],
|
|
16205
|
+
name: "CannotUpgradeToSelf",
|
|
16206
|
+
type: "error"
|
|
16207
|
+
},
|
|
16208
|
+
{
|
|
16209
|
+
inputs: [
|
|
16210
|
+
{
|
|
16211
|
+
internalType: "address",
|
|
16212
|
+
name: "implementation",
|
|
16213
|
+
type: "address"
|
|
16214
|
+
}
|
|
16215
|
+
],
|
|
16216
|
+
name: "ERC1967InvalidImplementation",
|
|
16217
|
+
type: "error"
|
|
16218
|
+
},
|
|
16219
|
+
{
|
|
16220
|
+
inputs: [],
|
|
16221
|
+
name: "ERC1967NonPayable",
|
|
16222
|
+
type: "error"
|
|
16223
|
+
},
|
|
16224
|
+
{
|
|
16225
|
+
inputs: [],
|
|
16226
|
+
name: "EnforcedPause",
|
|
16227
|
+
type: "error"
|
|
16228
|
+
},
|
|
16229
|
+
{
|
|
16230
|
+
inputs: [],
|
|
16231
|
+
name: "ExceedsMaxTtl",
|
|
16232
|
+
type: "error"
|
|
16233
|
+
},
|
|
16234
|
+
{
|
|
16235
|
+
inputs: [],
|
|
16236
|
+
name: "ExpectedPause",
|
|
16237
|
+
type: "error"
|
|
16238
|
+
},
|
|
16239
|
+
{
|
|
16240
|
+
inputs: [],
|
|
16241
|
+
name: "FailedCall",
|
|
16242
|
+
type: "error"
|
|
16243
|
+
},
|
|
16244
|
+
{
|
|
16245
|
+
inputs: [],
|
|
16246
|
+
name: "FloorBelowProtocolMin",
|
|
16247
|
+
type: "error"
|
|
16248
|
+
},
|
|
16249
|
+
{
|
|
16250
|
+
inputs: [],
|
|
16251
|
+
name: "ImplementationNotDeployed",
|
|
16252
|
+
type: "error"
|
|
16253
|
+
},
|
|
16254
|
+
{
|
|
16255
|
+
inputs: [],
|
|
16256
|
+
name: "InvalidAddress",
|
|
16257
|
+
type: "error"
|
|
16258
|
+
},
|
|
16259
|
+
{
|
|
16260
|
+
inputs: [],
|
|
16261
|
+
name: "InvalidFloor",
|
|
16262
|
+
type: "error"
|
|
16263
|
+
},
|
|
16264
|
+
{
|
|
16265
|
+
inputs: [],
|
|
16266
|
+
name: "InvalidInitialization",
|
|
16267
|
+
type: "error"
|
|
16268
|
+
},
|
|
16269
|
+
{
|
|
16270
|
+
inputs: [],
|
|
16271
|
+
name: "InvalidPositionId",
|
|
16272
|
+
type: "error"
|
|
16273
|
+
},
|
|
16274
|
+
{
|
|
16275
|
+
inputs: [],
|
|
16276
|
+
name: "NoActiveAgent",
|
|
16277
|
+
type: "error"
|
|
16278
|
+
},
|
|
16279
|
+
{
|
|
16280
|
+
inputs: [],
|
|
16281
|
+
name: "NotAdminModule",
|
|
16282
|
+
type: "error"
|
|
16283
|
+
},
|
|
16284
|
+
{
|
|
16285
|
+
inputs: [],
|
|
16286
|
+
name: "NotAuthorizedConsumer",
|
|
16287
|
+
type: "error"
|
|
16288
|
+
},
|
|
16289
|
+
{
|
|
16290
|
+
inputs: [],
|
|
16291
|
+
name: "NotBorrowerOrRegistrar",
|
|
16292
|
+
type: "error"
|
|
16293
|
+
},
|
|
16294
|
+
{
|
|
16295
|
+
inputs: [],
|
|
16296
|
+
name: "NotContract",
|
|
16297
|
+
type: "error"
|
|
16298
|
+
},
|
|
16299
|
+
{
|
|
16300
|
+
inputs: [],
|
|
16301
|
+
name: "NotInitializing",
|
|
16302
|
+
type: "error"
|
|
16303
|
+
},
|
|
16304
|
+
{
|
|
16305
|
+
inputs: [],
|
|
16306
|
+
name: "NotUserOrRegistrar",
|
|
16307
|
+
type: "error"
|
|
16308
|
+
},
|
|
16309
|
+
{
|
|
16310
|
+
inputs: [],
|
|
16311
|
+
name: "PositionNotActive",
|
|
16312
|
+
type: "error"
|
|
16313
|
+
},
|
|
16314
|
+
{
|
|
16315
|
+
inputs: [],
|
|
16316
|
+
name: "PositionNotDelegable",
|
|
16317
|
+
type: "error"
|
|
16318
|
+
},
|
|
16319
|
+
{
|
|
16320
|
+
inputs: [],
|
|
16321
|
+
name: "RenewalCapReached",
|
|
16322
|
+
type: "error"
|
|
16323
|
+
},
|
|
16324
|
+
{
|
|
16325
|
+
inputs: [],
|
|
16326
|
+
name: "ScopeNotGranted",
|
|
16327
|
+
type: "error"
|
|
16328
|
+
},
|
|
16329
|
+
{
|
|
16330
|
+
inputs: [],
|
|
16331
|
+
name: "UUPSUnauthorizedCallContext",
|
|
16332
|
+
type: "error"
|
|
16333
|
+
},
|
|
16334
|
+
{
|
|
16335
|
+
inputs: [
|
|
16336
|
+
{
|
|
16337
|
+
internalType: "bytes32",
|
|
16338
|
+
name: "slot",
|
|
16339
|
+
type: "bytes32"
|
|
16340
|
+
}
|
|
16341
|
+
],
|
|
16342
|
+
name: "UUPSUnsupportedProxiableUUID",
|
|
16343
|
+
type: "error"
|
|
16344
|
+
},
|
|
16345
|
+
{
|
|
16346
|
+
inputs: [],
|
|
16347
|
+
name: "UnauthorizedUnpause",
|
|
16348
|
+
type: "error"
|
|
16349
|
+
},
|
|
16350
|
+
{
|
|
16351
|
+
inputs: [],
|
|
16352
|
+
name: "UnexpectedRoleGrantFailure",
|
|
16353
|
+
type: "error"
|
|
16354
|
+
},
|
|
16355
|
+
{
|
|
16356
|
+
inputs: [],
|
|
16357
|
+
name: "ValidUntilInPast",
|
|
16358
|
+
type: "error"
|
|
16359
|
+
},
|
|
16360
|
+
{
|
|
16361
|
+
anonymous: false,
|
|
16362
|
+
inputs: [
|
|
16363
|
+
{
|
|
16364
|
+
indexed: true,
|
|
16365
|
+
internalType: "address",
|
|
16366
|
+
name: "oldAdminModule",
|
|
16367
|
+
type: "address"
|
|
16368
|
+
},
|
|
16369
|
+
{
|
|
16370
|
+
indexed: true,
|
|
16371
|
+
internalType: "address",
|
|
16372
|
+
name: "newAdminModule",
|
|
16373
|
+
type: "address"
|
|
16374
|
+
}
|
|
16375
|
+
],
|
|
16376
|
+
name: "AdminModuleUpdated",
|
|
16377
|
+
type: "event"
|
|
16378
|
+
},
|
|
16379
|
+
{
|
|
16380
|
+
anonymous: false,
|
|
16381
|
+
inputs: [
|
|
16382
|
+
{
|
|
16383
|
+
indexed: false,
|
|
16384
|
+
internalType: "uint32",
|
|
16385
|
+
name: "oldBps",
|
|
16386
|
+
type: "uint32"
|
|
16387
|
+
},
|
|
16388
|
+
{
|
|
16389
|
+
indexed: false,
|
|
16390
|
+
internalType: "uint32",
|
|
16391
|
+
name: "newBps",
|
|
16392
|
+
type: "uint32"
|
|
16393
|
+
}
|
|
16394
|
+
],
|
|
16395
|
+
name: "AgentMintFloorMinUpdated",
|
|
16396
|
+
type: "event"
|
|
16397
|
+
},
|
|
16398
|
+
{
|
|
16399
|
+
anonymous: false,
|
|
16400
|
+
inputs: [
|
|
16401
|
+
{
|
|
16402
|
+
indexed: true,
|
|
16403
|
+
internalType: "address",
|
|
16404
|
+
name: "user",
|
|
16405
|
+
type: "address"
|
|
16406
|
+
},
|
|
16407
|
+
{
|
|
16408
|
+
indexed: true,
|
|
16409
|
+
internalType: "address",
|
|
16410
|
+
name: "agent",
|
|
16411
|
+
type: "address"
|
|
16412
|
+
},
|
|
16413
|
+
{
|
|
16414
|
+
indexed: false,
|
|
16415
|
+
internalType: "uint64",
|
|
16416
|
+
name: "validUntil",
|
|
16417
|
+
type: "uint64"
|
|
16418
|
+
}
|
|
16419
|
+
],
|
|
16420
|
+
name: "AgentRegistered",
|
|
16421
|
+
type: "event"
|
|
16422
|
+
},
|
|
16423
|
+
{
|
|
16424
|
+
anonymous: false,
|
|
16425
|
+
inputs: [
|
|
16426
|
+
{
|
|
16427
|
+
indexed: true,
|
|
16428
|
+
internalType: "address",
|
|
16429
|
+
name: "user",
|
|
16430
|
+
type: "address"
|
|
16431
|
+
},
|
|
16432
|
+
{
|
|
16433
|
+
indexed: true,
|
|
16434
|
+
internalType: "address",
|
|
16435
|
+
name: "agent",
|
|
16436
|
+
type: "address"
|
|
16437
|
+
},
|
|
16438
|
+
{
|
|
16439
|
+
indexed: false,
|
|
16440
|
+
internalType: "bytes32",
|
|
16441
|
+
name: "reason",
|
|
16442
|
+
type: "bytes32"
|
|
16443
|
+
}
|
|
16444
|
+
],
|
|
16445
|
+
name: "AgentRevoked",
|
|
16446
|
+
type: "event"
|
|
16447
|
+
},
|
|
16448
|
+
{
|
|
16449
|
+
anonymous: false,
|
|
16450
|
+
inputs: [
|
|
16451
|
+
{
|
|
16452
|
+
indexed: true,
|
|
16453
|
+
internalType: "address",
|
|
16454
|
+
name: "user",
|
|
16455
|
+
type: "address"
|
|
16456
|
+
},
|
|
16457
|
+
{
|
|
16458
|
+
indexed: true,
|
|
16459
|
+
internalType: "address",
|
|
16460
|
+
name: "oldAgent",
|
|
16461
|
+
type: "address"
|
|
16462
|
+
},
|
|
16463
|
+
{
|
|
16464
|
+
indexed: true,
|
|
16465
|
+
internalType: "address",
|
|
16466
|
+
name: "newAgent",
|
|
16467
|
+
type: "address"
|
|
16468
|
+
},
|
|
16469
|
+
{
|
|
16470
|
+
indexed: false,
|
|
16471
|
+
internalType: "uint64",
|
|
16472
|
+
name: "validUntil",
|
|
16473
|
+
type: "uint64"
|
|
16474
|
+
}
|
|
16475
|
+
],
|
|
16476
|
+
name: "AgentRotated",
|
|
16477
|
+
type: "event"
|
|
16478
|
+
},
|
|
16479
|
+
{
|
|
16480
|
+
anonymous: false,
|
|
16481
|
+
inputs: [
|
|
16482
|
+
{
|
|
16483
|
+
indexed: true,
|
|
16484
|
+
internalType: "address",
|
|
16485
|
+
name: "previous",
|
|
16486
|
+
type: "address"
|
|
16487
|
+
},
|
|
16488
|
+
{
|
|
16489
|
+
indexed: true,
|
|
16490
|
+
internalType: "address",
|
|
16491
|
+
name: "next",
|
|
16492
|
+
type: "address"
|
|
16493
|
+
}
|
|
16494
|
+
],
|
|
16495
|
+
name: "AuthorizedConsumerUpdated",
|
|
16496
|
+
type: "event"
|
|
16497
|
+
},
|
|
16498
|
+
{
|
|
16499
|
+
anonymous: false,
|
|
16500
|
+
inputs: [
|
|
16501
|
+
{
|
|
16502
|
+
indexed: true,
|
|
16503
|
+
internalType: "bytes32",
|
|
16504
|
+
name: "positionId",
|
|
16505
|
+
type: "bytes32"
|
|
16506
|
+
},
|
|
16507
|
+
{
|
|
16508
|
+
indexed: true,
|
|
16509
|
+
internalType: "address",
|
|
16510
|
+
name: "borrower",
|
|
16511
|
+
type: "address"
|
|
16512
|
+
}
|
|
16513
|
+
],
|
|
16514
|
+
name: "AutoMintDisabled",
|
|
16515
|
+
type: "event"
|
|
16516
|
+
},
|
|
16517
|
+
{
|
|
16518
|
+
anonymous: false,
|
|
16519
|
+
inputs: [
|
|
16520
|
+
{
|
|
16521
|
+
indexed: true,
|
|
16522
|
+
internalType: "bytes32",
|
|
16523
|
+
name: "positionId",
|
|
16524
|
+
type: "bytes32"
|
|
16525
|
+
},
|
|
16526
|
+
{
|
|
16527
|
+
indexed: true,
|
|
16528
|
+
internalType: "address",
|
|
16529
|
+
name: "borrower",
|
|
16530
|
+
type: "address"
|
|
16531
|
+
},
|
|
16532
|
+
{
|
|
16533
|
+
indexed: false,
|
|
16534
|
+
internalType: "uint32",
|
|
16535
|
+
name: "minCollateralRatioBps",
|
|
16536
|
+
type: "uint32"
|
|
16537
|
+
}
|
|
16538
|
+
],
|
|
16539
|
+
name: "AutoMintEnabled",
|
|
16540
|
+
type: "event"
|
|
16541
|
+
},
|
|
16542
|
+
{
|
|
16543
|
+
anonymous: false,
|
|
16544
|
+
inputs: [
|
|
16545
|
+
{
|
|
16546
|
+
indexed: true,
|
|
16547
|
+
internalType: "bytes32",
|
|
16548
|
+
name: "positionId",
|
|
16549
|
+
type: "bytes32"
|
|
16550
|
+
},
|
|
16551
|
+
{
|
|
16552
|
+
indexed: true,
|
|
16553
|
+
internalType: "address",
|
|
16554
|
+
name: "borrower",
|
|
16555
|
+
type: "address"
|
|
16556
|
+
}
|
|
16557
|
+
],
|
|
16558
|
+
name: "AutoRenewDisabled",
|
|
16559
|
+
type: "event"
|
|
16560
|
+
},
|
|
16561
|
+
{
|
|
16562
|
+
anonymous: false,
|
|
16563
|
+
inputs: [
|
|
16564
|
+
{
|
|
16565
|
+
indexed: true,
|
|
16566
|
+
internalType: "bytes32",
|
|
16567
|
+
name: "positionId",
|
|
16568
|
+
type: "bytes32"
|
|
16569
|
+
},
|
|
16570
|
+
{
|
|
16571
|
+
indexed: true,
|
|
16572
|
+
internalType: "address",
|
|
16573
|
+
name: "borrower",
|
|
16574
|
+
type: "address"
|
|
16575
|
+
},
|
|
16576
|
+
{
|
|
16577
|
+
indexed: false,
|
|
16578
|
+
internalType: "uint32",
|
|
16579
|
+
name: "maxRenewals",
|
|
16580
|
+
type: "uint32"
|
|
16581
|
+
},
|
|
16582
|
+
{
|
|
16583
|
+
indexed: false,
|
|
16584
|
+
internalType: "uint40",
|
|
16585
|
+
name: "maxEndTimestamp",
|
|
16586
|
+
type: "uint40"
|
|
16587
|
+
}
|
|
16588
|
+
],
|
|
16589
|
+
name: "AutoRenewEnabled",
|
|
16590
|
+
type: "event"
|
|
16591
|
+
},
|
|
16592
|
+
{
|
|
16593
|
+
anonymous: false,
|
|
16594
|
+
inputs: [
|
|
16595
|
+
{
|
|
16596
|
+
indexed: true,
|
|
16597
|
+
internalType: "bytes32",
|
|
16598
|
+
name: "positionId",
|
|
16599
|
+
type: "bytes32"
|
|
16600
|
+
},
|
|
16601
|
+
{
|
|
16602
|
+
indexed: true,
|
|
16603
|
+
internalType: "address",
|
|
16604
|
+
name: "borrower",
|
|
16605
|
+
type: "address"
|
|
16606
|
+
}
|
|
16607
|
+
],
|
|
16608
|
+
name: "AutoRepayDisabled",
|
|
16609
|
+
type: "event"
|
|
16610
|
+
},
|
|
16611
|
+
{
|
|
16612
|
+
anonymous: false,
|
|
16613
|
+
inputs: [
|
|
16614
|
+
{
|
|
16615
|
+
indexed: true,
|
|
16616
|
+
internalType: "bytes32",
|
|
16617
|
+
name: "positionId",
|
|
16618
|
+
type: "bytes32"
|
|
16619
|
+
},
|
|
16620
|
+
{
|
|
16621
|
+
indexed: true,
|
|
16622
|
+
internalType: "address",
|
|
16623
|
+
name: "borrower",
|
|
16624
|
+
type: "address"
|
|
16625
|
+
}
|
|
16626
|
+
],
|
|
16627
|
+
name: "AutoRepayEnabled",
|
|
16628
|
+
type: "event"
|
|
16629
|
+
},
|
|
16630
|
+
{
|
|
16631
|
+
anonymous: false,
|
|
16632
|
+
inputs: [
|
|
16633
|
+
{
|
|
16634
|
+
indexed: true,
|
|
16635
|
+
internalType: "address",
|
|
16636
|
+
name: "caller",
|
|
16637
|
+
type: "address"
|
|
16638
|
+
},
|
|
16639
|
+
{
|
|
16640
|
+
indexed: false,
|
|
16641
|
+
internalType: "uint256",
|
|
16642
|
+
name: "timestamp",
|
|
16643
|
+
type: "uint256"
|
|
16644
|
+
}
|
|
16645
|
+
],
|
|
16646
|
+
name: "ContractPaused",
|
|
16647
|
+
type: "event"
|
|
16648
|
+
},
|
|
16649
|
+
{
|
|
16650
|
+
anonymous: false,
|
|
16651
|
+
inputs: [
|
|
16652
|
+
{
|
|
16653
|
+
indexed: true,
|
|
16654
|
+
internalType: "address",
|
|
16655
|
+
name: "caller",
|
|
16656
|
+
type: "address"
|
|
16657
|
+
},
|
|
16658
|
+
{
|
|
16659
|
+
indexed: false,
|
|
16660
|
+
internalType: "uint256",
|
|
16661
|
+
name: "timestamp",
|
|
16662
|
+
type: "uint256"
|
|
16663
|
+
}
|
|
16664
|
+
],
|
|
16665
|
+
name: "ContractUnpaused",
|
|
16666
|
+
type: "event"
|
|
16667
|
+
},
|
|
16668
|
+
{
|
|
16669
|
+
anonymous: false,
|
|
16670
|
+
inputs: [
|
|
16671
|
+
{
|
|
16672
|
+
indexed: true,
|
|
16673
|
+
internalType: "address",
|
|
16674
|
+
name: "oldImplementation",
|
|
16675
|
+
type: "address"
|
|
16676
|
+
},
|
|
16677
|
+
{
|
|
16678
|
+
indexed: true,
|
|
16679
|
+
internalType: "address",
|
|
16680
|
+
name: "newImplementation",
|
|
16681
|
+
type: "address"
|
|
16682
|
+
},
|
|
16683
|
+
{
|
|
16684
|
+
indexed: false,
|
|
16685
|
+
internalType: "string",
|
|
16686
|
+
name: "version",
|
|
16687
|
+
type: "string"
|
|
16688
|
+
},
|
|
16689
|
+
{
|
|
16690
|
+
indexed: false,
|
|
16691
|
+
internalType: "uint256",
|
|
16692
|
+
name: "timestamp",
|
|
16693
|
+
type: "uint256"
|
|
16694
|
+
}
|
|
16695
|
+
],
|
|
16696
|
+
name: "ContractUpgraded",
|
|
16697
|
+
type: "event"
|
|
16698
|
+
},
|
|
16699
|
+
{
|
|
16700
|
+
anonymous: false,
|
|
16701
|
+
inputs: [
|
|
16702
|
+
{
|
|
16703
|
+
indexed: false,
|
|
16704
|
+
internalType: "uint64",
|
|
16705
|
+
name: "version",
|
|
16706
|
+
type: "uint64"
|
|
16707
|
+
}
|
|
16708
|
+
],
|
|
16709
|
+
name: "Initialized",
|
|
16710
|
+
type: "event"
|
|
16711
|
+
},
|
|
16712
|
+
{
|
|
16713
|
+
anonymous: false,
|
|
16714
|
+
inputs: [
|
|
16715
|
+
{
|
|
16716
|
+
indexed: false,
|
|
16717
|
+
internalType: "uint64",
|
|
16718
|
+
name: "oldTtl",
|
|
16719
|
+
type: "uint64"
|
|
16720
|
+
},
|
|
16721
|
+
{
|
|
16722
|
+
indexed: false,
|
|
16723
|
+
internalType: "uint64",
|
|
16724
|
+
name: "newTtl",
|
|
16725
|
+
type: "uint64"
|
|
16726
|
+
}
|
|
16727
|
+
],
|
|
16728
|
+
name: "MaxAgentTtlUpdated",
|
|
16729
|
+
type: "event"
|
|
16730
|
+
},
|
|
16731
|
+
{
|
|
16732
|
+
anonymous: false,
|
|
16733
|
+
inputs: [
|
|
16734
|
+
{
|
|
16735
|
+
indexed: true,
|
|
16736
|
+
internalType: "bytes32",
|
|
16737
|
+
name: "positionId",
|
|
16738
|
+
type: "bytes32"
|
|
16739
|
+
},
|
|
16740
|
+
{
|
|
16741
|
+
indexed: false,
|
|
16742
|
+
internalType: "uint32",
|
|
16743
|
+
name: "oldFloorBps",
|
|
16744
|
+
type: "uint32"
|
|
16745
|
+
},
|
|
16746
|
+
{
|
|
16747
|
+
indexed: false,
|
|
16748
|
+
internalType: "uint32",
|
|
16749
|
+
name: "newFloorBps",
|
|
16750
|
+
type: "uint32"
|
|
16751
|
+
}
|
|
16752
|
+
],
|
|
16753
|
+
name: "MintCollateralFloorUpdated",
|
|
16754
|
+
type: "event"
|
|
16755
|
+
},
|
|
16756
|
+
{
|
|
16757
|
+
anonymous: false,
|
|
16758
|
+
inputs: [
|
|
16759
|
+
{
|
|
16760
|
+
indexed: false,
|
|
16761
|
+
internalType: "address",
|
|
16762
|
+
name: "account",
|
|
16763
|
+
type: "address"
|
|
16764
|
+
}
|
|
16765
|
+
],
|
|
16766
|
+
name: "Paused",
|
|
16767
|
+
type: "event"
|
|
16768
|
+
},
|
|
16769
|
+
{
|
|
16770
|
+
anonymous: false,
|
|
16771
|
+
inputs: [
|
|
16772
|
+
{
|
|
16773
|
+
indexed: true,
|
|
16774
|
+
internalType: "bytes32",
|
|
16775
|
+
name: "positionId",
|
|
16776
|
+
type: "bytes32"
|
|
16777
|
+
},
|
|
16778
|
+
{
|
|
16779
|
+
indexed: false,
|
|
16780
|
+
internalType: "uint32",
|
|
16781
|
+
name: "renewalsUsed",
|
|
16782
|
+
type: "uint32"
|
|
16783
|
+
}
|
|
16784
|
+
],
|
|
16785
|
+
name: "RenewalRecorded",
|
|
16786
|
+
type: "event"
|
|
16787
|
+
},
|
|
16788
|
+
{
|
|
16789
|
+
anonymous: false,
|
|
16790
|
+
inputs: [
|
|
16791
|
+
{
|
|
16792
|
+
indexed: true,
|
|
16793
|
+
internalType: "bytes32",
|
|
16794
|
+
name: "role",
|
|
16795
|
+
type: "bytes32"
|
|
16796
|
+
},
|
|
16797
|
+
{
|
|
16798
|
+
indexed: true,
|
|
16799
|
+
internalType: "bytes32",
|
|
16800
|
+
name: "previousAdminRole",
|
|
16801
|
+
type: "bytes32"
|
|
16802
|
+
},
|
|
16803
|
+
{
|
|
16804
|
+
indexed: true,
|
|
16805
|
+
internalType: "bytes32",
|
|
16806
|
+
name: "newAdminRole",
|
|
16807
|
+
type: "bytes32"
|
|
16808
|
+
}
|
|
16809
|
+
],
|
|
16810
|
+
name: "RoleAdminChanged",
|
|
16811
|
+
type: "event"
|
|
16812
|
+
},
|
|
16813
|
+
{
|
|
16814
|
+
anonymous: false,
|
|
16815
|
+
inputs: [
|
|
16816
|
+
{
|
|
16817
|
+
indexed: true,
|
|
16818
|
+
internalType: "bytes32",
|
|
16819
|
+
name: "role",
|
|
16820
|
+
type: "bytes32"
|
|
16821
|
+
},
|
|
16822
|
+
{
|
|
16823
|
+
indexed: true,
|
|
16824
|
+
internalType: "address",
|
|
16825
|
+
name: "account",
|
|
16826
|
+
type: "address"
|
|
16827
|
+
},
|
|
16828
|
+
{
|
|
16829
|
+
indexed: true,
|
|
16830
|
+
internalType: "address",
|
|
16831
|
+
name: "sender",
|
|
16832
|
+
type: "address"
|
|
16833
|
+
}
|
|
16834
|
+
],
|
|
16835
|
+
name: "RoleGranted",
|
|
16836
|
+
type: "event"
|
|
16837
|
+
},
|
|
16838
|
+
{
|
|
16839
|
+
anonymous: false,
|
|
16840
|
+
inputs: [
|
|
16841
|
+
{
|
|
16842
|
+
indexed: true,
|
|
16843
|
+
internalType: "bytes32",
|
|
16844
|
+
name: "role",
|
|
16845
|
+
type: "bytes32"
|
|
16846
|
+
},
|
|
16847
|
+
{
|
|
16848
|
+
indexed: true,
|
|
16849
|
+
internalType: "address",
|
|
16850
|
+
name: "account",
|
|
16851
|
+
type: "address"
|
|
16852
|
+
},
|
|
16853
|
+
{
|
|
16854
|
+
indexed: true,
|
|
16855
|
+
internalType: "address",
|
|
16856
|
+
name: "sender",
|
|
16857
|
+
type: "address"
|
|
16858
|
+
}
|
|
16859
|
+
],
|
|
16860
|
+
name: "RoleRevoked",
|
|
16861
|
+
type: "event"
|
|
16862
|
+
},
|
|
16863
|
+
{
|
|
16864
|
+
anonymous: false,
|
|
16865
|
+
inputs: [
|
|
16866
|
+
{
|
|
16867
|
+
indexed: false,
|
|
16868
|
+
internalType: "address",
|
|
16869
|
+
name: "account",
|
|
16870
|
+
type: "address"
|
|
16871
|
+
}
|
|
16872
|
+
],
|
|
16873
|
+
name: "Unpaused",
|
|
16874
|
+
type: "event"
|
|
16875
|
+
},
|
|
16876
|
+
{
|
|
16877
|
+
anonymous: false,
|
|
16878
|
+
inputs: [
|
|
16879
|
+
{
|
|
16880
|
+
indexed: true,
|
|
16881
|
+
internalType: "address",
|
|
16882
|
+
name: "implementation",
|
|
16883
|
+
type: "address"
|
|
16884
|
+
}
|
|
16885
|
+
],
|
|
16886
|
+
name: "Upgraded",
|
|
16887
|
+
type: "event"
|
|
16888
|
+
},
|
|
16889
|
+
{
|
|
16890
|
+
inputs: [],
|
|
16891
|
+
name: "DEFAULT_ADMIN_ROLE",
|
|
16892
|
+
outputs: [
|
|
16893
|
+
{
|
|
16894
|
+
internalType: "bytes32",
|
|
16895
|
+
name: "",
|
|
16896
|
+
type: "bytes32"
|
|
16897
|
+
}
|
|
16898
|
+
],
|
|
16899
|
+
stateMutability: "view",
|
|
16900
|
+
type: "function"
|
|
16901
|
+
},
|
|
16902
|
+
{
|
|
16903
|
+
inputs: [],
|
|
16904
|
+
name: "EMERGENCY_PAUSE_ROLE",
|
|
16905
|
+
outputs: [
|
|
16906
|
+
{
|
|
16907
|
+
internalType: "bytes32",
|
|
16908
|
+
name: "",
|
|
16909
|
+
type: "bytes32"
|
|
16910
|
+
}
|
|
16911
|
+
],
|
|
16912
|
+
stateMutability: "view",
|
|
16913
|
+
type: "function"
|
|
16914
|
+
},
|
|
16915
|
+
{
|
|
16916
|
+
inputs: [],
|
|
16917
|
+
name: "REGISTRAR_ROLE",
|
|
16918
|
+
outputs: [
|
|
16919
|
+
{
|
|
16920
|
+
internalType: "bytes32",
|
|
16921
|
+
name: "",
|
|
16922
|
+
type: "bytes32"
|
|
16923
|
+
}
|
|
16924
|
+
],
|
|
16925
|
+
stateMutability: "view",
|
|
16926
|
+
type: "function"
|
|
16927
|
+
},
|
|
16928
|
+
{
|
|
16929
|
+
inputs: [],
|
|
16930
|
+
name: "SCOPE_MINT",
|
|
16931
|
+
outputs: [
|
|
16932
|
+
{
|
|
16933
|
+
internalType: "uint32",
|
|
16934
|
+
name: "",
|
|
16935
|
+
type: "uint32"
|
|
16936
|
+
}
|
|
16937
|
+
],
|
|
16938
|
+
stateMutability: "view",
|
|
16939
|
+
type: "function"
|
|
16940
|
+
},
|
|
16941
|
+
{
|
|
16942
|
+
inputs: [],
|
|
16943
|
+
name: "SCOPE_RENEW",
|
|
16944
|
+
outputs: [
|
|
16945
|
+
{
|
|
16946
|
+
internalType: "uint32",
|
|
16947
|
+
name: "",
|
|
16948
|
+
type: "uint32"
|
|
16949
|
+
}
|
|
16950
|
+
],
|
|
16951
|
+
stateMutability: "view",
|
|
16952
|
+
type: "function"
|
|
16953
|
+
},
|
|
16954
|
+
{
|
|
16955
|
+
inputs: [],
|
|
16956
|
+
name: "SCOPE_REPAY",
|
|
16957
|
+
outputs: [
|
|
16958
|
+
{
|
|
16959
|
+
internalType: "uint32",
|
|
16960
|
+
name: "",
|
|
16961
|
+
type: "uint32"
|
|
16962
|
+
}
|
|
16963
|
+
],
|
|
16964
|
+
stateMutability: "view",
|
|
16965
|
+
type: "function"
|
|
16966
|
+
},
|
|
16967
|
+
{
|
|
16968
|
+
inputs: [],
|
|
16969
|
+
name: "UPGRADE_INTERFACE_VERSION",
|
|
16970
|
+
outputs: [
|
|
16971
|
+
{
|
|
16972
|
+
internalType: "string",
|
|
16973
|
+
name: "",
|
|
16974
|
+
type: "string"
|
|
16975
|
+
}
|
|
16976
|
+
],
|
|
16977
|
+
stateMutability: "view",
|
|
16978
|
+
type: "function"
|
|
16979
|
+
},
|
|
16980
|
+
{
|
|
16981
|
+
inputs: [],
|
|
16982
|
+
name: "VERSION",
|
|
16983
|
+
outputs: [
|
|
16984
|
+
{
|
|
16985
|
+
internalType: "string",
|
|
16986
|
+
name: "",
|
|
16987
|
+
type: "string"
|
|
16988
|
+
}
|
|
16989
|
+
],
|
|
16990
|
+
stateMutability: "view",
|
|
16991
|
+
type: "function"
|
|
16992
|
+
},
|
|
16993
|
+
{
|
|
16994
|
+
inputs: [],
|
|
16995
|
+
name: "adminModule",
|
|
16996
|
+
outputs: [
|
|
16997
|
+
{
|
|
16998
|
+
internalType: "address",
|
|
16999
|
+
name: "",
|
|
17000
|
+
type: "address"
|
|
17001
|
+
}
|
|
17002
|
+
],
|
|
17003
|
+
stateMutability: "view",
|
|
17004
|
+
type: "function"
|
|
17005
|
+
},
|
|
17006
|
+
{
|
|
17007
|
+
inputs: [],
|
|
17008
|
+
name: "agentMintFloorMinBps",
|
|
17009
|
+
outputs: [
|
|
17010
|
+
{
|
|
17011
|
+
internalType: "uint32",
|
|
17012
|
+
name: "",
|
|
17013
|
+
type: "uint32"
|
|
17014
|
+
}
|
|
17015
|
+
],
|
|
17016
|
+
stateMutability: "view",
|
|
17017
|
+
type: "function"
|
|
17018
|
+
},
|
|
17019
|
+
{
|
|
17020
|
+
inputs: [
|
|
17021
|
+
{
|
|
17022
|
+
internalType: "address",
|
|
17023
|
+
name: "user",
|
|
17024
|
+
type: "address"
|
|
17025
|
+
}
|
|
17026
|
+
],
|
|
17027
|
+
name: "agentOf",
|
|
17028
|
+
outputs: [
|
|
17029
|
+
{
|
|
17030
|
+
components: [
|
|
17031
|
+
{
|
|
17032
|
+
internalType: "address",
|
|
17033
|
+
name: "agent",
|
|
17034
|
+
type: "address"
|
|
17035
|
+
},
|
|
17036
|
+
{
|
|
17037
|
+
internalType: "uint64",
|
|
17038
|
+
name: "validUntil",
|
|
17039
|
+
type: "uint64"
|
|
17040
|
+
},
|
|
17041
|
+
{
|
|
17042
|
+
internalType: "enum IAgentDelegateRegistryBase.AgentStatus",
|
|
17043
|
+
name: "status",
|
|
17044
|
+
type: "uint8"
|
|
17045
|
+
},
|
|
17046
|
+
{
|
|
17047
|
+
internalType: "uint64",
|
|
17048
|
+
name: "registeredAt",
|
|
17049
|
+
type: "uint64"
|
|
17050
|
+
},
|
|
17051
|
+
{
|
|
17052
|
+
internalType: "uint64",
|
|
17053
|
+
name: "revokedAt",
|
|
17054
|
+
type: "uint64"
|
|
17055
|
+
}
|
|
17056
|
+
],
|
|
17057
|
+
internalType: "struct IAgentDelegateRegistryBase.AgentRecord",
|
|
17058
|
+
name: "",
|
|
17059
|
+
type: "tuple"
|
|
17060
|
+
}
|
|
17061
|
+
],
|
|
17062
|
+
stateMutability: "view",
|
|
17063
|
+
type: "function"
|
|
17064
|
+
},
|
|
17065
|
+
{
|
|
17066
|
+
inputs: [],
|
|
17067
|
+
name: "authorizedConsumer",
|
|
17068
|
+
outputs: [
|
|
17069
|
+
{
|
|
17070
|
+
internalType: "address",
|
|
17071
|
+
name: "",
|
|
17072
|
+
type: "address"
|
|
17073
|
+
}
|
|
17074
|
+
],
|
|
17075
|
+
stateMutability: "view",
|
|
17076
|
+
type: "function"
|
|
17077
|
+
},
|
|
17078
|
+
{
|
|
17079
|
+
inputs: [
|
|
17080
|
+
{
|
|
17081
|
+
internalType: "bytes32",
|
|
17082
|
+
name: "positionId",
|
|
17083
|
+
type: "bytes32"
|
|
17084
|
+
},
|
|
17085
|
+
{
|
|
17086
|
+
internalType: "address",
|
|
17087
|
+
name: "caller",
|
|
17088
|
+
type: "address"
|
|
17089
|
+
}
|
|
17090
|
+
],
|
|
17091
|
+
name: "canMint",
|
|
17092
|
+
outputs: [
|
|
17093
|
+
{
|
|
17094
|
+
internalType: "bool",
|
|
17095
|
+
name: "ok",
|
|
17096
|
+
type: "bool"
|
|
17097
|
+
},
|
|
17098
|
+
{
|
|
17099
|
+
internalType: "enum IAgentDelegationRegistry.DenyReason",
|
|
17100
|
+
name: "reason",
|
|
17101
|
+
type: "uint8"
|
|
17102
|
+
},
|
|
17103
|
+
{
|
|
17104
|
+
internalType: "uint32",
|
|
17105
|
+
name: "effectiveFloorBps",
|
|
17106
|
+
type: "uint32"
|
|
17107
|
+
}
|
|
17108
|
+
],
|
|
17109
|
+
stateMutability: "view",
|
|
17110
|
+
type: "function"
|
|
17111
|
+
},
|
|
17112
|
+
{
|
|
17113
|
+
inputs: [
|
|
17114
|
+
{
|
|
17115
|
+
internalType: "bytes32",
|
|
17116
|
+
name: "positionId",
|
|
17117
|
+
type: "bytes32"
|
|
17118
|
+
},
|
|
17119
|
+
{
|
|
17120
|
+
internalType: "address",
|
|
17121
|
+
name: "caller",
|
|
17122
|
+
type: "address"
|
|
17123
|
+
}
|
|
17124
|
+
],
|
|
17125
|
+
name: "canRenew",
|
|
17126
|
+
outputs: [
|
|
17127
|
+
{
|
|
17128
|
+
internalType: "bool",
|
|
17129
|
+
name: "ok",
|
|
17130
|
+
type: "bool"
|
|
17131
|
+
},
|
|
17132
|
+
{
|
|
17133
|
+
internalType: "enum IAgentDelegationRegistry.DenyReason",
|
|
17134
|
+
name: "reason",
|
|
17135
|
+
type: "uint8"
|
|
17136
|
+
}
|
|
17137
|
+
],
|
|
17138
|
+
stateMutability: "view",
|
|
17139
|
+
type: "function"
|
|
17140
|
+
},
|
|
17141
|
+
{
|
|
17142
|
+
inputs: [
|
|
17143
|
+
{
|
|
17144
|
+
internalType: "bytes32",
|
|
17145
|
+
name: "positionId",
|
|
17146
|
+
type: "bytes32"
|
|
17147
|
+
},
|
|
17148
|
+
{
|
|
17149
|
+
internalType: "address",
|
|
17150
|
+
name: "caller",
|
|
17151
|
+
type: "address"
|
|
17152
|
+
}
|
|
17153
|
+
],
|
|
17154
|
+
name: "canRepay",
|
|
17155
|
+
outputs: [
|
|
17156
|
+
{
|
|
17157
|
+
internalType: "bool",
|
|
17158
|
+
name: "ok",
|
|
17159
|
+
type: "bool"
|
|
17160
|
+
},
|
|
17161
|
+
{
|
|
17162
|
+
internalType: "enum IAgentDelegationRegistry.DenyReason",
|
|
17163
|
+
name: "reason",
|
|
17164
|
+
type: "uint8"
|
|
17165
|
+
}
|
|
17166
|
+
],
|
|
17167
|
+
stateMutability: "view",
|
|
17168
|
+
type: "function"
|
|
17169
|
+
},
|
|
17170
|
+
{
|
|
17171
|
+
inputs: [],
|
|
17172
|
+
name: "core",
|
|
17173
|
+
outputs: [
|
|
17174
|
+
{
|
|
17175
|
+
internalType: "contract IPositionManagerCore",
|
|
17176
|
+
name: "",
|
|
17177
|
+
type: "address"
|
|
17178
|
+
}
|
|
17179
|
+
],
|
|
17180
|
+
stateMutability: "view",
|
|
17181
|
+
type: "function"
|
|
17182
|
+
},
|
|
17183
|
+
{
|
|
17184
|
+
inputs: [
|
|
17185
|
+
{
|
|
17186
|
+
internalType: "bytes32",
|
|
17187
|
+
name: "positionId",
|
|
17188
|
+
type: "bytes32"
|
|
17189
|
+
}
|
|
17190
|
+
],
|
|
17191
|
+
name: "disableAutoMint",
|
|
17192
|
+
outputs: [],
|
|
17193
|
+
stateMutability: "nonpayable",
|
|
17194
|
+
type: "function"
|
|
17195
|
+
},
|
|
17196
|
+
{
|
|
17197
|
+
inputs: [
|
|
17198
|
+
{
|
|
17199
|
+
internalType: "bytes32",
|
|
17200
|
+
name: "positionId",
|
|
17201
|
+
type: "bytes32"
|
|
17202
|
+
}
|
|
17203
|
+
],
|
|
17204
|
+
name: "disableAutoRenew",
|
|
17205
|
+
outputs: [],
|
|
17206
|
+
stateMutability: "nonpayable",
|
|
17207
|
+
type: "function"
|
|
17208
|
+
},
|
|
17209
|
+
{
|
|
17210
|
+
inputs: [
|
|
17211
|
+
{
|
|
17212
|
+
internalType: "bytes32",
|
|
17213
|
+
name: "positionId",
|
|
17214
|
+
type: "bytes32"
|
|
17215
|
+
}
|
|
17216
|
+
],
|
|
17217
|
+
name: "disableAutoRepay",
|
|
17218
|
+
outputs: [],
|
|
17219
|
+
stateMutability: "nonpayable",
|
|
17220
|
+
type: "function"
|
|
17221
|
+
},
|
|
17222
|
+
{
|
|
17223
|
+
inputs: [
|
|
17224
|
+
{
|
|
17225
|
+
internalType: "bytes32",
|
|
17226
|
+
name: "positionId",
|
|
17227
|
+
type: "bytes32"
|
|
17228
|
+
},
|
|
17229
|
+
{
|
|
17230
|
+
internalType: "uint32",
|
|
17231
|
+
name: "minCollateralRatioBps",
|
|
17232
|
+
type: "uint32"
|
|
17233
|
+
}
|
|
17234
|
+
],
|
|
17235
|
+
name: "enableAutoMint",
|
|
17236
|
+
outputs: [],
|
|
17237
|
+
stateMutability: "nonpayable",
|
|
17238
|
+
type: "function"
|
|
17239
|
+
},
|
|
17240
|
+
{
|
|
17241
|
+
inputs: [
|
|
17242
|
+
{
|
|
17243
|
+
internalType: "bytes32",
|
|
17244
|
+
name: "positionId",
|
|
17245
|
+
type: "bytes32"
|
|
17246
|
+
},
|
|
17247
|
+
{
|
|
17248
|
+
internalType: "uint32",
|
|
17249
|
+
name: "maxRenewals",
|
|
17250
|
+
type: "uint32"
|
|
17251
|
+
},
|
|
17252
|
+
{
|
|
17253
|
+
internalType: "uint40",
|
|
17254
|
+
name: "maxEndTimestamp",
|
|
17255
|
+
type: "uint40"
|
|
17256
|
+
}
|
|
17257
|
+
],
|
|
17258
|
+
name: "enableAutoRenew",
|
|
17259
|
+
outputs: [],
|
|
17260
|
+
stateMutability: "nonpayable",
|
|
17261
|
+
type: "function"
|
|
17262
|
+
},
|
|
17263
|
+
{
|
|
17264
|
+
inputs: [
|
|
17265
|
+
{
|
|
17266
|
+
internalType: "bytes32",
|
|
17267
|
+
name: "positionId",
|
|
17268
|
+
type: "bytes32"
|
|
17269
|
+
}
|
|
17270
|
+
],
|
|
17271
|
+
name: "enableAutoRepay",
|
|
17272
|
+
outputs: [],
|
|
17273
|
+
stateMutability: "nonpayable",
|
|
17274
|
+
type: "function"
|
|
17275
|
+
},
|
|
17276
|
+
{
|
|
17277
|
+
inputs: [
|
|
17278
|
+
{
|
|
17279
|
+
internalType: "bytes32",
|
|
17280
|
+
name: "positionId",
|
|
17281
|
+
type: "bytes32"
|
|
17282
|
+
}
|
|
17283
|
+
],
|
|
17284
|
+
name: "getLoanGrant",
|
|
17285
|
+
outputs: [
|
|
17286
|
+
{
|
|
17287
|
+
components: [
|
|
17288
|
+
{
|
|
17289
|
+
internalType: "address",
|
|
17290
|
+
name: "borrower",
|
|
17291
|
+
type: "address"
|
|
17292
|
+
},
|
|
17293
|
+
{
|
|
17294
|
+
internalType: "uint32",
|
|
17295
|
+
name: "scopeBits",
|
|
17296
|
+
type: "uint32"
|
|
17297
|
+
},
|
|
17298
|
+
{
|
|
17299
|
+
internalType: "uint32",
|
|
17300
|
+
name: "maxRenewals",
|
|
17301
|
+
type: "uint32"
|
|
17302
|
+
},
|
|
17303
|
+
{
|
|
17304
|
+
internalType: "uint32",
|
|
17305
|
+
name: "renewalsUsed",
|
|
17306
|
+
type: "uint32"
|
|
17307
|
+
},
|
|
17308
|
+
{
|
|
17309
|
+
internalType: "uint40",
|
|
17310
|
+
name: "maxEndTimestamp",
|
|
17311
|
+
type: "uint40"
|
|
17312
|
+
},
|
|
17313
|
+
{
|
|
17314
|
+
internalType: "uint32",
|
|
17315
|
+
name: "minCollateralRatioBps",
|
|
17316
|
+
type: "uint32"
|
|
17317
|
+
}
|
|
17318
|
+
],
|
|
17319
|
+
internalType: "struct IAgentDelegationRegistry.LoanGrant",
|
|
17320
|
+
name: "",
|
|
17321
|
+
type: "tuple"
|
|
17322
|
+
}
|
|
17323
|
+
],
|
|
17324
|
+
stateMutability: "view",
|
|
17325
|
+
type: "function"
|
|
17326
|
+
},
|
|
17327
|
+
{
|
|
17328
|
+
inputs: [
|
|
17329
|
+
{
|
|
17330
|
+
internalType: "bytes32",
|
|
17331
|
+
name: "role",
|
|
17332
|
+
type: "bytes32"
|
|
17333
|
+
}
|
|
17334
|
+
],
|
|
17335
|
+
name: "getRoleAdmin",
|
|
17336
|
+
outputs: [
|
|
17337
|
+
{
|
|
17338
|
+
internalType: "bytes32",
|
|
17339
|
+
name: "",
|
|
17340
|
+
type: "bytes32"
|
|
17341
|
+
}
|
|
17342
|
+
],
|
|
17343
|
+
stateMutability: "view",
|
|
17344
|
+
type: "function"
|
|
17345
|
+
},
|
|
17346
|
+
{
|
|
17347
|
+
inputs: [
|
|
17348
|
+
{
|
|
17349
|
+
internalType: "bytes32",
|
|
17350
|
+
name: "role",
|
|
17351
|
+
type: "bytes32"
|
|
17352
|
+
},
|
|
17353
|
+
{
|
|
17354
|
+
internalType: "uint256",
|
|
17355
|
+
name: "index",
|
|
17356
|
+
type: "uint256"
|
|
17357
|
+
}
|
|
17358
|
+
],
|
|
17359
|
+
name: "getRoleMember",
|
|
17360
|
+
outputs: [
|
|
17361
|
+
{
|
|
17362
|
+
internalType: "address",
|
|
17363
|
+
name: "",
|
|
17364
|
+
type: "address"
|
|
17365
|
+
}
|
|
17366
|
+
],
|
|
17367
|
+
stateMutability: "view",
|
|
17368
|
+
type: "function"
|
|
17369
|
+
},
|
|
17370
|
+
{
|
|
17371
|
+
inputs: [
|
|
17372
|
+
{
|
|
17373
|
+
internalType: "bytes32",
|
|
17374
|
+
name: "role",
|
|
17375
|
+
type: "bytes32"
|
|
17376
|
+
}
|
|
17377
|
+
],
|
|
17378
|
+
name: "getRoleMemberCount",
|
|
17379
|
+
outputs: [
|
|
17380
|
+
{
|
|
17381
|
+
internalType: "uint256",
|
|
17382
|
+
name: "",
|
|
17383
|
+
type: "uint256"
|
|
17384
|
+
}
|
|
17385
|
+
],
|
|
17386
|
+
stateMutability: "view",
|
|
17387
|
+
type: "function"
|
|
17388
|
+
},
|
|
17389
|
+
{
|
|
17390
|
+
inputs: [
|
|
17391
|
+
{
|
|
17392
|
+
internalType: "bytes32",
|
|
17393
|
+
name: "role",
|
|
17394
|
+
type: "bytes32"
|
|
17395
|
+
}
|
|
17396
|
+
],
|
|
17397
|
+
name: "getRoleMembers",
|
|
17398
|
+
outputs: [
|
|
17399
|
+
{
|
|
17400
|
+
internalType: "address[]",
|
|
17401
|
+
name: "",
|
|
17402
|
+
type: "address[]"
|
|
17403
|
+
}
|
|
17404
|
+
],
|
|
17405
|
+
stateMutability: "view",
|
|
17406
|
+
type: "function"
|
|
17407
|
+
},
|
|
17408
|
+
{
|
|
17409
|
+
inputs: [
|
|
17410
|
+
{
|
|
17411
|
+
internalType: "bytes32",
|
|
17412
|
+
name: "role",
|
|
17413
|
+
type: "bytes32"
|
|
17414
|
+
},
|
|
17415
|
+
{
|
|
17416
|
+
internalType: "address",
|
|
17417
|
+
name: "account",
|
|
17418
|
+
type: "address"
|
|
17419
|
+
}
|
|
17420
|
+
],
|
|
17421
|
+
name: "grantRole",
|
|
17422
|
+
outputs: [],
|
|
17423
|
+
stateMutability: "nonpayable",
|
|
17424
|
+
type: "function"
|
|
17425
|
+
},
|
|
17426
|
+
{
|
|
17427
|
+
inputs: [
|
|
17428
|
+
{
|
|
17429
|
+
internalType: "bytes32",
|
|
17430
|
+
name: "role",
|
|
17431
|
+
type: "bytes32"
|
|
17432
|
+
},
|
|
17433
|
+
{
|
|
17434
|
+
internalType: "address",
|
|
17435
|
+
name: "account",
|
|
17436
|
+
type: "address"
|
|
17437
|
+
}
|
|
17438
|
+
],
|
|
17439
|
+
name: "hasRole",
|
|
17440
|
+
outputs: [
|
|
17441
|
+
{
|
|
17442
|
+
internalType: "bool",
|
|
17443
|
+
name: "",
|
|
17444
|
+
type: "bool"
|
|
17445
|
+
}
|
|
17446
|
+
],
|
|
17447
|
+
stateMutability: "view",
|
|
17448
|
+
type: "function"
|
|
17449
|
+
},
|
|
17450
|
+
{
|
|
17451
|
+
inputs: [
|
|
17452
|
+
{
|
|
17453
|
+
internalType: "address",
|
|
17454
|
+
name: "admin",
|
|
17455
|
+
type: "address"
|
|
17456
|
+
},
|
|
17457
|
+
{
|
|
17458
|
+
internalType: "address",
|
|
17459
|
+
name: "adminModule_",
|
|
17460
|
+
type: "address"
|
|
17461
|
+
},
|
|
17462
|
+
{
|
|
17463
|
+
internalType: "address",
|
|
17464
|
+
name: "registrar",
|
|
17465
|
+
type: "address"
|
|
17466
|
+
},
|
|
17467
|
+
{
|
|
17468
|
+
internalType: "address",
|
|
17469
|
+
name: "pauser",
|
|
17470
|
+
type: "address"
|
|
17471
|
+
},
|
|
17472
|
+
{
|
|
17473
|
+
internalType: "contract IPositionManagerCore",
|
|
17474
|
+
name: "core_",
|
|
17475
|
+
type: "address"
|
|
17476
|
+
}
|
|
17477
|
+
],
|
|
17478
|
+
name: "initialize",
|
|
17479
|
+
outputs: [],
|
|
17480
|
+
stateMutability: "nonpayable",
|
|
17481
|
+
type: "function"
|
|
17482
|
+
},
|
|
17483
|
+
{
|
|
17484
|
+
inputs: [
|
|
17485
|
+
{
|
|
17486
|
+
internalType: "uint32",
|
|
17487
|
+
name: "floorMinBps",
|
|
17488
|
+
type: "uint32"
|
|
17489
|
+
}
|
|
17490
|
+
],
|
|
17491
|
+
name: "initializeV2",
|
|
17492
|
+
outputs: [],
|
|
17493
|
+
stateMutability: "nonpayable",
|
|
17494
|
+
type: "function"
|
|
17495
|
+
},
|
|
17496
|
+
{
|
|
17497
|
+
inputs: [
|
|
17498
|
+
{
|
|
17499
|
+
internalType: "address",
|
|
17500
|
+
name: "user",
|
|
17501
|
+
type: "address"
|
|
17502
|
+
}
|
|
17503
|
+
],
|
|
17504
|
+
name: "isAgentActive",
|
|
17505
|
+
outputs: [
|
|
17506
|
+
{
|
|
17507
|
+
internalType: "bool",
|
|
17508
|
+
name: "",
|
|
17509
|
+
type: "bool"
|
|
17510
|
+
}
|
|
17511
|
+
],
|
|
17512
|
+
stateMutability: "view",
|
|
17513
|
+
type: "function"
|
|
17514
|
+
},
|
|
17515
|
+
{
|
|
17516
|
+
inputs: [
|
|
17517
|
+
{
|
|
17518
|
+
internalType: "address",
|
|
17519
|
+
name: "",
|
|
17520
|
+
type: "address"
|
|
17521
|
+
}
|
|
17522
|
+
],
|
|
17523
|
+
name: "keyOfAgent",
|
|
17524
|
+
outputs: [
|
|
17525
|
+
{
|
|
17526
|
+
internalType: "bytes32",
|
|
17527
|
+
name: "",
|
|
17528
|
+
type: "bytes32"
|
|
17529
|
+
}
|
|
17530
|
+
],
|
|
17531
|
+
stateMutability: "view",
|
|
17532
|
+
type: "function"
|
|
17533
|
+
},
|
|
17534
|
+
{
|
|
17535
|
+
inputs: [],
|
|
17536
|
+
name: "maxAgentTtl",
|
|
17537
|
+
outputs: [
|
|
17538
|
+
{
|
|
17539
|
+
internalType: "uint64",
|
|
17540
|
+
name: "",
|
|
17541
|
+
type: "uint64"
|
|
17542
|
+
}
|
|
17543
|
+
],
|
|
17544
|
+
stateMutability: "view",
|
|
17545
|
+
type: "function"
|
|
17546
|
+
},
|
|
17547
|
+
{
|
|
17548
|
+
inputs: [],
|
|
17549
|
+
name: "pause",
|
|
17550
|
+
outputs: [],
|
|
17551
|
+
stateMutability: "nonpayable",
|
|
17552
|
+
type: "function"
|
|
17553
|
+
},
|
|
17554
|
+
{
|
|
17555
|
+
inputs: [],
|
|
17556
|
+
name: "paused",
|
|
17557
|
+
outputs: [
|
|
17558
|
+
{
|
|
17559
|
+
internalType: "bool",
|
|
17560
|
+
name: "",
|
|
17561
|
+
type: "bool"
|
|
17562
|
+
}
|
|
17563
|
+
],
|
|
17564
|
+
stateMutability: "view",
|
|
17565
|
+
type: "function"
|
|
17566
|
+
},
|
|
17567
|
+
{
|
|
17568
|
+
inputs: [],
|
|
17569
|
+
name: "proxiableUUID",
|
|
17570
|
+
outputs: [
|
|
17571
|
+
{
|
|
17572
|
+
internalType: "bytes32",
|
|
17573
|
+
name: "",
|
|
17574
|
+
type: "bytes32"
|
|
17575
|
+
}
|
|
17576
|
+
],
|
|
17577
|
+
stateMutability: "view",
|
|
17578
|
+
type: "function"
|
|
17579
|
+
},
|
|
17580
|
+
{
|
|
17581
|
+
inputs: [
|
|
17582
|
+
{
|
|
17583
|
+
internalType: "bytes32",
|
|
17584
|
+
name: "positionId",
|
|
17585
|
+
type: "bytes32"
|
|
17586
|
+
}
|
|
17587
|
+
],
|
|
17588
|
+
name: "recordRenewal",
|
|
17589
|
+
outputs: [],
|
|
17590
|
+
stateMutability: "nonpayable",
|
|
17591
|
+
type: "function"
|
|
17592
|
+
},
|
|
17593
|
+
{
|
|
17594
|
+
inputs: [
|
|
17595
|
+
{
|
|
17596
|
+
internalType: "address",
|
|
17597
|
+
name: "user",
|
|
17598
|
+
type: "address"
|
|
17599
|
+
},
|
|
17600
|
+
{
|
|
17601
|
+
internalType: "address",
|
|
17602
|
+
name: "agent",
|
|
17603
|
+
type: "address"
|
|
17604
|
+
},
|
|
17605
|
+
{
|
|
17606
|
+
internalType: "uint64",
|
|
17607
|
+
name: "validUntil",
|
|
17608
|
+
type: "uint64"
|
|
17609
|
+
}
|
|
17610
|
+
],
|
|
17611
|
+
name: "registerAgent",
|
|
17612
|
+
outputs: [],
|
|
17613
|
+
stateMutability: "nonpayable",
|
|
17614
|
+
type: "function"
|
|
17615
|
+
},
|
|
17616
|
+
{
|
|
17617
|
+
inputs: [
|
|
17618
|
+
{
|
|
17619
|
+
internalType: "bytes32",
|
|
17620
|
+
name: "role",
|
|
17621
|
+
type: "bytes32"
|
|
17622
|
+
},
|
|
17623
|
+
{
|
|
17624
|
+
internalType: "address",
|
|
17625
|
+
name: "callerConfirmation",
|
|
17626
|
+
type: "address"
|
|
17627
|
+
}
|
|
17628
|
+
],
|
|
17629
|
+
name: "renounceRole",
|
|
17630
|
+
outputs: [],
|
|
17631
|
+
stateMutability: "nonpayable",
|
|
17632
|
+
type: "function"
|
|
17633
|
+
},
|
|
17634
|
+
{
|
|
17635
|
+
inputs: [
|
|
17636
|
+
{
|
|
17637
|
+
internalType: "address",
|
|
17638
|
+
name: "user",
|
|
17639
|
+
type: "address"
|
|
17640
|
+
},
|
|
17641
|
+
{
|
|
17642
|
+
internalType: "bytes32",
|
|
17643
|
+
name: "reason",
|
|
17644
|
+
type: "bytes32"
|
|
17645
|
+
}
|
|
17646
|
+
],
|
|
17647
|
+
name: "revokeAgent",
|
|
17648
|
+
outputs: [],
|
|
17649
|
+
stateMutability: "nonpayable",
|
|
17650
|
+
type: "function"
|
|
17651
|
+
},
|
|
17652
|
+
{
|
|
17653
|
+
inputs: [
|
|
17654
|
+
{
|
|
17655
|
+
internalType: "bytes32",
|
|
17656
|
+
name: "role",
|
|
17657
|
+
type: "bytes32"
|
|
17658
|
+
},
|
|
17659
|
+
{
|
|
17660
|
+
internalType: "address",
|
|
17661
|
+
name: "account",
|
|
17662
|
+
type: "address"
|
|
17663
|
+
}
|
|
17664
|
+
],
|
|
17665
|
+
name: "revokeRole",
|
|
17666
|
+
outputs: [],
|
|
17667
|
+
stateMutability: "nonpayable",
|
|
17668
|
+
type: "function"
|
|
17669
|
+
},
|
|
17670
|
+
{
|
|
17671
|
+
inputs: [
|
|
17672
|
+
{
|
|
17673
|
+
internalType: "address",
|
|
17674
|
+
name: "user",
|
|
17675
|
+
type: "address"
|
|
17676
|
+
},
|
|
17677
|
+
{
|
|
17678
|
+
internalType: "address",
|
|
17679
|
+
name: "newAgent",
|
|
17680
|
+
type: "address"
|
|
17681
|
+
},
|
|
17682
|
+
{
|
|
17683
|
+
internalType: "uint64",
|
|
17684
|
+
name: "validUntil",
|
|
17685
|
+
type: "uint64"
|
|
17686
|
+
}
|
|
17687
|
+
],
|
|
17688
|
+
name: "rotateAgent",
|
|
17689
|
+
outputs: [],
|
|
17690
|
+
stateMutability: "nonpayable",
|
|
17691
|
+
type: "function"
|
|
17692
|
+
},
|
|
17693
|
+
{
|
|
17694
|
+
inputs: [
|
|
17695
|
+
{
|
|
17696
|
+
internalType: "address",
|
|
17697
|
+
name: "newAdminModule",
|
|
17698
|
+
type: "address"
|
|
17699
|
+
}
|
|
17700
|
+
],
|
|
17701
|
+
name: "setAdminModule",
|
|
17702
|
+
outputs: [],
|
|
17703
|
+
stateMutability: "nonpayable",
|
|
17704
|
+
type: "function"
|
|
17705
|
+
},
|
|
17706
|
+
{
|
|
17707
|
+
inputs: [
|
|
17708
|
+
{
|
|
17709
|
+
internalType: "uint32",
|
|
17710
|
+
name: "bps",
|
|
17711
|
+
type: "uint32"
|
|
17712
|
+
}
|
|
17713
|
+
],
|
|
17714
|
+
name: "setAgentMintFloorMin",
|
|
17715
|
+
outputs: [],
|
|
17716
|
+
stateMutability: "nonpayable",
|
|
17717
|
+
type: "function"
|
|
17718
|
+
},
|
|
17719
|
+
{
|
|
17720
|
+
inputs: [
|
|
17721
|
+
{
|
|
17722
|
+
internalType: "address",
|
|
17723
|
+
name: "consumer",
|
|
17724
|
+
type: "address"
|
|
17725
|
+
}
|
|
17726
|
+
],
|
|
17727
|
+
name: "setAuthorizedConsumer",
|
|
17728
|
+
outputs: [],
|
|
17729
|
+
stateMutability: "nonpayable",
|
|
17730
|
+
type: "function"
|
|
17731
|
+
},
|
|
17732
|
+
{
|
|
17733
|
+
inputs: [
|
|
17734
|
+
{
|
|
17735
|
+
internalType: "uint64",
|
|
17736
|
+
name: "newMaxAgentTtl",
|
|
17737
|
+
type: "uint64"
|
|
17738
|
+
}
|
|
17739
|
+
],
|
|
17740
|
+
name: "setMaxAgentTtl",
|
|
17741
|
+
outputs: [],
|
|
17742
|
+
stateMutability: "nonpayable",
|
|
17743
|
+
type: "function"
|
|
17744
|
+
},
|
|
17745
|
+
{
|
|
17746
|
+
inputs: [
|
|
17747
|
+
{
|
|
17748
|
+
internalType: "bytes32",
|
|
17749
|
+
name: "positionId",
|
|
17750
|
+
type: "bytes32"
|
|
17751
|
+
},
|
|
17752
|
+
{
|
|
17753
|
+
internalType: "uint32",
|
|
17754
|
+
name: "newFloorBps",
|
|
17755
|
+
type: "uint32"
|
|
17756
|
+
}
|
|
17757
|
+
],
|
|
17758
|
+
name: "setMintCollateralFloor",
|
|
17759
|
+
outputs: [],
|
|
17760
|
+
stateMutability: "nonpayable",
|
|
17761
|
+
type: "function"
|
|
17762
|
+
},
|
|
17763
|
+
{
|
|
17764
|
+
inputs: [
|
|
17765
|
+
{
|
|
17766
|
+
internalType: "bytes4",
|
|
17767
|
+
name: "interfaceId",
|
|
17768
|
+
type: "bytes4"
|
|
17769
|
+
}
|
|
17770
|
+
],
|
|
17771
|
+
name: "supportsInterface",
|
|
17772
|
+
outputs: [
|
|
17773
|
+
{
|
|
17774
|
+
internalType: "bool",
|
|
17775
|
+
name: "",
|
|
17776
|
+
type: "bool"
|
|
17777
|
+
}
|
|
17778
|
+
],
|
|
17779
|
+
stateMutability: "view",
|
|
17780
|
+
type: "function"
|
|
17781
|
+
},
|
|
17782
|
+
{
|
|
17783
|
+
inputs: [],
|
|
17784
|
+
name: "unpause",
|
|
17785
|
+
outputs: [],
|
|
17786
|
+
stateMutability: "nonpayable",
|
|
17787
|
+
type: "function"
|
|
17788
|
+
},
|
|
17789
|
+
{
|
|
17790
|
+
inputs: [
|
|
17791
|
+
{
|
|
17792
|
+
internalType: "address",
|
|
17793
|
+
name: "newImplementation",
|
|
17794
|
+
type: "address"
|
|
17795
|
+
},
|
|
17796
|
+
{
|
|
17797
|
+
internalType: "bytes",
|
|
17798
|
+
name: "data",
|
|
17799
|
+
type: "bytes"
|
|
17800
|
+
}
|
|
17801
|
+
],
|
|
17802
|
+
name: "upgradeToAndCall",
|
|
17803
|
+
outputs: [],
|
|
17804
|
+
stateMutability: "payable",
|
|
17805
|
+
type: "function"
|
|
17806
|
+
},
|
|
17807
|
+
{
|
|
17808
|
+
inputs: [
|
|
17809
|
+
{
|
|
17810
|
+
internalType: "address",
|
|
17811
|
+
name: "agent",
|
|
17812
|
+
type: "address"
|
|
17813
|
+
}
|
|
17814
|
+
],
|
|
17815
|
+
name: "userOfAgent",
|
|
17816
|
+
outputs: [
|
|
17817
|
+
{
|
|
17818
|
+
internalType: "address",
|
|
17819
|
+
name: "",
|
|
17820
|
+
type: "address"
|
|
17821
|
+
}
|
|
17822
|
+
],
|
|
17823
|
+
stateMutability: "view",
|
|
17824
|
+
type: "function"
|
|
17825
|
+
}
|
|
17826
|
+
];
|
|
17827
|
+
var _bytecode2 = "0x60a080604052346100ea57306080527ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005460ff8160401c166100d9576002600160401b03196001600160401b03821601610073575b60405161308690816100f0823960805181818161121b015261140e0152f35b6001600160401b0319166001600160401b039081177ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005581527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a13880610054565b63f92ee8a960e01b60005260046000fd5b600080fdfe608080604052600436101561001357600080fd5b60003560e01c90816301ffc9a7146120b4575080630d33f3c2146120905780630f3f4a94146120445780631459457a14611cfd578063188787e814611c2b57806318c38b8914611b1a5780631b02993114611aa65780631d44454114611a0b578063248a9ca3146119e55780632ec22d4c1461191c5780632f0647ce1461189d5780632f2ff15d1461186c57806336568abe14611826578063392f1087146117db5780633f4ba83a146116e35780633f5aadc9146116745780634f1ef28614611392578063523403631461129b5780635273b6f61461127257806352d1902d14611208578063554c4f4b14611178578063561b7f8a146110145780635bc26aea14610f875780635c975abb14610f575780636289d18c14610ed65780636711cc0b14610eba5780636e852a7814610da95780637e35bf6e14610d755780638343f67414610d485780638456cb5914610c525780638f33527f14610c185780639010d07c14610bc457806391d1485414610b6a5780639b9d30c114610b41578063a19af3f614610a7c578063a217fddf14610a60578063a3246ad31461099e578063a878086414610982578063ac3c0e3014610875578063ad3cb1cc1461082e578063b3fad6381461074b578063c34e9c261461072f578063c6fbbb87146105dd578063ca15c873146105a4578063d547741f1461056c578063dd71d99a1461052a578063e0922fa11461047d578063e187828314610454578063f2f4eb261461042b578063f68e955314610402578063fd437d39146102945763ffa1ad741461025b57600080fd5b3461028f57600036600319011261028f5761028b610277612282565b60405191829160208352602083019061225d565b0390f35b600080fd5b3461028f57606036600319011261028f576102ad612137565b6102b5612121565b906102be612224565b336000908152600080516020612f9a833981519152602052604090205490919060ff16156103db576001600160a01b031660008181526001602052604090208054939060e085901c60ff1660038110156103c5576001036103b45781600160209261034b877fc5d5c5bbf10444998e0ea6d4725e79027b574e1c14ec929279e8a9a95c6c6e919688612c79565b818060a01b038316828060a01b031982541617815561036a878261243b565b0180546001600160401b031916426001600160401b03908116919091179091556001600160a01b0391821660008181526002855260409081902087905551969091168652951693a4005b632437e77160e11b60005260046000fd5b634e487b7160e01b600052602160045260246000fd5b63e2517d3f60e01b6000523360045260008051602061301a83398151915260245260446000fd5b3461028f57600036600319011261028f57602060405160008051602061301a8339815191528152f35b3461028f57600036600319011261028f576003546040516001600160a01b039091168152602090f35b3461028f57600036600319011261028f576004546040516001600160a01b039091168152602090f35b3461028f57602036600319011261028f576004356001600160401b0381169081810361028f576000546001600160a01b038116330361051957600160a01b600160e01b0319811660a092831b600160a01b600160e01b031617600055604080519190921c6001600160401b0316815260208101929092527f9c195448332abd01f716db873b329752ea02f19d33f7e311fb0daf082c4edd0391a1005b6349db3bd360e01b60005260046000fd5b3461028f57602036600319011261028f576001600160a01b0361054b612137565b166000526002602052602060018060a01b0360406000205416604051908152f35b3461028f57604036600319011261028f576105a260043561058b612121565b9061059d61059882612302565b612a2c565b612abe565b005b3461028f57602036600319011261028f57600435600052600080516020612f1a8339815191526020526020604060002054604051908152f35b3461028f57602036600319011261028f5760043560018060a01b036004541633141580610708575b6106f757600081815260056020526040902080546001600160a01b038116156106e65760018160a01c16156106e65763ffffffff8160c01c1680151590816106d8575b506106c75760e01c6001019063ffffffff82116106b15780546001600160e01b031660e083901b6001600160e01b03191617905560405163ffffffff90911681527f859a3b34c0d733a1033c6089d4d18643a0705b707970a0d0d79c84423f089da190602090a2005b634e487b7160e01b600052601160045260246000fd5b638a6ea6bf60e01b60005260046000fd5b90508160e01c101584610648565b6360eb6c2360e01b60005260046000fd5b634b95b20b60e11b60005260046000fd5b50336000908152600080516020612f9a833981519152602052604090205460ff1615610605565b3461028f57600036600319011261028f57602060405160028152f35b3461028f57602036600319011261028f57600060a060405161076c816121cb565b8281528260208201528260408201528260608201528260808201520152600435600052600560205260c0604060002063ffffffff604051916107ad836121cb565b64ffffffffff8154938360018060a01b03861695868352816020840195818360a01c168752816001604087019282868e1c168452606088019560e01c86520154978160a060808901988a8c168a52019960281c1689526040519a8b52511660208a0152511660408801525116606086015251166080840152511660a0820152f35b3461028f57600036600319011261028f5761028b604080519061085181836121e6565b60058252640352e302e360dc1b60208301525191829160208352602083019061225d565b3461028f57602036600319011261028f5761088e612137565b6000608060405161089e8161219a565b828152826020820152826040820152826060820152015260018060a01b0316600052600160205260406000206040516108d68161219a565b81546001600160a01b038116825260a081901c6001600160401b03166020830190815292604083019160e01c60ff169060038210156103c557908252600101546001600160401b0380821660608501908152604092831c821660808601908152925194516001600160a01b03168552945116602084015290519260038410156103c557604083019390935291516001600160401b0390811660608301529151909116608082015260a090f35b3461028f57600036600319011261028f57602060405160018152f35b3461028f57602036600319011261028f57600435600052600080516020612f1a83398151915260205260406000206040518060208354918281520190819360005260206000209060005b818110610a4a57505050816109fe9103826121e6565b6040519182916020830190602084525180915260408301919060005b818110610a28575050500390f35b82516001600160a01b0316845285945060209384019390920191600101610a1a565b82548452602090930192600192830192016109e8565b3461028f57600036600319011261028f57602060405160008152f35b3461028f57604036600319011261028f57600435610a98612174565b90610aa1612639565b63ffffffff600654169163ffffffff811692808410908115610b38575b50610b275760206001610b147f1da95b87b4c773f68c1447ffc5644e41a8a8887d55065beb64852014cf7140be93610af586612684565b9390610b0e600463ffffffff835460a01c1617826122a5565b016122c8565b6040519485526001600160a01b031693a3005b634346c13160e01b60005260046000fd5b90501584610abe565b3461028f57600036600319011261028f576020604051600080516020612f5a8339815191528152f35b3461028f57604036600319011261028f57610b83612121565b600435600052600080516020612ffa83398151915260205260406000209060018060a01b0316600052602052602060ff604060002054166040519015158152f35b3461028f57604036600319011261028f57600435600052600080516020612f1a8339815191526020526020610bff6024356040600020612d46565b905460405160039290921b1c6001600160a01b03168152f35b3461028f57602036600319011261028f576001600160a01b03610c39612137565b1660005260026020526020604060002054604051908152f35b3461028f57600036600319011261028f573360009081527f0ac8cc3d209806126662940717264973110c39045b305f6ba49613325a615e09602052604090205460ff1615610d2157610ca2612639565b600160ff1960008051602061303a83398151915254161760008051602061303a833981519152557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586020604051338152a16040514281527f80170b5fcdd2bf1e0660ef4b8851f86685f64d41b1a19de1471947ece8725aac60203392a2005b63e2517d3f60e01b60005233600452600080516020612f5a83398151915260245260446000fd5b3461028f57600036600319011261028f5760005460405160a09190911c6001600160401b03168152602090f35b3461028f57604036600319011261028f57610d99610d91612121565b6004356123a5565b9061028b6040519283928361215a565b3461028f57604036600319011261028f57610dc2612137565b336000908152600080516020612f9a833981519152602052604090205460ff161580610ea7575b610e97576001600160a01b03166000818152600160205260409020805460e01c60ff1660038110156103c5576001036103b457805460ff60e01b198116600160e11b1782556001919091018054600160401b600160801b03191642604090811b600160401b600160801b0316919091179091555160243581526001600160a01b0390911691907fc0499cc07ed9d734deec6857802d3f0fa8d5afaf79a7008beb8ba7bef62a271b90602090a3005b62fca64560e31b60005260046000fd5b50336001600160a01b0382161415610de9565b3461028f57600036600319011261028f57602060405160048152f35b3461028f57602036600319011261028f57610eef612187565b6000546001600160a01b031633036105195763ffffffff8116908115610f4657600080516020612fda83398151915291610f4163ffffffff9260065492841984161760065560405193849316836122eb565b0390a1005b6338f3377360e21b60005260046000fd5b3461028f57600036600319011261028f57602060ff60008051602061303a83398151915254166040519015158152f35b3461028f57602036600319011261028f57610fa0612137565b6000546001600160a01b0381169033829003610519576001600160a01b038316928315611003573b15610ff2576001600160a01b03191682176000908155600080516020612fba8339815191529080a3005b636f7c43f160e01b60005260046000fd5b63e6c4247b60e01b60005260046000fd5b3461028f57606036600319011261028f5761102d612137565b611035612121565b61103d612224565b91611046612639565b336000908152600080516020612f9a833981519152602052604090205460ff161580611165575b610e97576001600160a01b03166000818152600160205260409020805491929160e01c60ff1660038110156103c55760011461115457816020916110d3867ff223dc085722c94c84dcf67427e225799be616382a2a484d378f8921c69a20339587612c79565b80546001600160a01b0319166001600160a01b0383161781556110f6868261243b565b6001810180546001600160801b031916426001600160401b0390811691909117909155815460ff60e01b1916600160e01b179091556001600160a01b03919091166000818152600284526040908190208690555195909116855293a3005b639d2c8fdf60e01b60005260046000fd5b50336001600160a01b038216141561106d565b3461028f57602036600319011261028f576001600160a01b03611199612137565b166000526001602052604060002060ff60008051602061303a833981519152541615806111ec575b602091816111d5575b506040519015158152f35b5460a01c6001600160401b031642109050826111ca565b5060ff815460e01c169060038210156103c557906001146111c1565b3461028f57600036600319011261028f577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163003611261576020604051600080516020612f7a8339815191528152f35b63703e46dd60e11b60005260046000fd5b3461028f57600036600319011261028f576000546040516001600160a01b039091168152602090f35b3461028f57602036600319011261028f57600435600081815260056020526040902080546001600160a01b0381169291908315908115611383575b506106e657336000908152600080516020612f9a833981519152602052604090205460ff161580611379575b611368578061131e63fffffffe611341935460a01c16826122a5565b80546001600160c01b0316815560018101805464ffffffffff1916905582612a02565b7fa5ffbdba01b15df97334e34ad816b9986b6057a5ddc97aba93b7e8ccd21759ed600080a3005b630a606ec360e11b60005260046000fd5b5082331415611302565b6001915060a01c1615846112d6565b604036600319011261028f576113a6612137565b602435906001600160401b03821161028f573660238301121561028f578160040135906113d282612209565b916113e060405193846121e6565b8083526020830193366024838301011161028f57816000926024602093018737840101526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016308114908115611651575b50611261576000546001600160a01b03163303610519576001600160a01b03811692831561100357813b156116405730841461163157600080516020612f7a8339815191525484611488612282565b7f6ea8b34d59b2818d3f37a08dddaa06f5886b9c20c907b36f03ca6528e106e86f6114be6040519260408452604084019061225d565b4260208401526001600160a01b038516929081900390a36040516352d1902d60e01b8152602081600481895afa600091816115fd575b5061150e5785634c9c8ce360e01b60005260045260246000fd5b9081600080516020612f7a8339815191528793036115e95750833b156115d4576001600160a01b0319168117600080516020612f7a833981519152557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b600080a28251156115b957600080916105a2945190845af43d156115b1573d9161159483612209565b926115a260405194856121e6565b83523d6000602085013e612eb8565b606091612eb8565b505050346115c357005b63b398979f60e01b60005260046000fd5b50634c9c8ce360e01b60005260045260246000fd5b632a87526960e21b60005260045260246000fd5b9091506020813d602011611629575b81611619602093836121e6565b8101031261028f575190876114f4565b3d915061160c565b614e8d60eb1b60005260046000fd5b632e07c4bd60e11b60005260046000fd5b600080516020612f7a833981519152546001600160a01b03161415905084611439565b3461028f57602036600319011261028f57600435611690612639565b6116b261169c82612684565b9190600263ffffffff825460a01c1617906122a5565b6001600160a01b0316907fc2713e691344add4705edc62a0ee5aede95ba66ad68f97316efef9cb50644edd600080a3005b3461028f57600036600319011261028f57336000908152600080516020612f9a833981519152602052604090205460ff1615806117c6575b6117b55760008051602061303a8339815191525460ff8116156117a45760ff191660008051602061303a833981519152557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6020604051338152a16040514281527f107553d8191d85b405879cf752997865edd48d94e20bda4dd27223c94b31a7cc60203392a2005b638dfc202b60e01b60005260046000fd5b63659a07b360e11b60005260046000fd5b506000546001600160a01b031633141561171b565b3461028f57604036600319011261028f57606061181e63ffffffff611809611801612121565b600435612323565b9193906040519415158552602085019061214d565b166040820152f35b3461028f57604036600319011261028f5761183f612121565b336001600160a01b0382160361185b576105a290600435612abe565b63334bd91960e11b60005260046000fd5b3461028f57604036600319011261028f576105a260043561188b612121565b9061189861059882612302565b612a76565b3461028f57602036600319011261028f576004356118eb6118bd82612990565b91906118d363fffffffb825460a01c16826122a5565b60018101805463ffffffff60281b1916905583612a02565b6001600160a01b0316907f09cb4ec44cdef8489412844b9682f87f7900758fa2bd7e039113e9125e538e0f600080a3005b3461028f57602036600319011261028f57600435600081815260056020526040902080546001600160a01b03811692919083159081156119d6575b506106e657336000908152600080516020612f9a833981519152602052604090205460ff1615806119cc575b611368578061199f63fffffffd6119a5935460a01c16826122a5565b82612a02565b7fb390ab029eab314bd18190ebe73d7e5c1c336beaa5c83ac22578378dc9ccc405600080a3005b5082331415611983565b6002915060a01c161584611957565b3461028f57602036600319011261028f576020611a03600435612302565b604051908152f35b3461028f57604036600319011261028f57600435611a27612174565b63ffffffff600654168063ffffffff831610908115611a9d575b50610b27577e8a218591d4362499c38c38eb1c12e7a7cc97a9068818d1fe6046a42ba4a5ba906001611a7284612990565b5001611a898263ffffffff835460281c16926122c8565b611a98604051928392836122eb565b0390a2005b90501583611a41565b3461028f57602036600319011261028f57611abf612137565b6000546001600160a01b0316330361051957600480546001600160a01b039283166001600160a01b0319821681179092559091167f8556037c5648b2d5b51736f07a8fa4d099812ef06abf79a5731be619b111e4d4600080a3005b3461028f57602036600319011261028f57611b33612187565b60008051602061305a8339815191525460ff8160401c16908115611c13575b50611c025760008051602061305a833981519152805460026001600160401b0319821681179092556000546001600160481b031990911690911791906001600160a01b031633036105195763ffffffff168015610f4657604081600080516020612fda8339815191529263ffffffff196006541617600655815190600082526020820152a160008051602061305a83398151915255600080516020612f3a833981519152602060405160028152a1005b63f92ee8a960e01b60005260046000fd5b60026001600160401b03919091161015905082611b52565b3461028f57606036600319011261028f57600435611c47612174565b9060443564ffffffffff811680910361028f57604060017ef8e9f2101420b089a9228a3e9fa546f669754196824e19ec1adab7cab1f2e992611c87612639565b611c9085612684565b9290611ca88263ffffffff835460a01c1617826122a5565b805463ffffffff60c01b60c08a901b1663ffffffff60c01b199091161760e083901b83900316815501805464ffffffffff191682179055825163ffffffff909616865260208601526001600160a01b031693a3005b3461028f5760a036600319011261028f57611d16612137565b611d1e612121565b906044356001600160a01b03811680820361028f576064356001600160a01b0381169182820361028f576084356001600160a01b038116949085900361028f5760008051602061305a83398151915254604081901c60ff161596906001600160401b03168015908161203c575b6001149081612032575b159081612029575b50611c025760008051602061305a83398151915280546001600160401b031916600117905586612004575b611dd0612b02565b611dd8612b02565b611de0612b02565b611de8612b02565b6001600160a01b038116908115611003578315611003578515611003576001600160a01b038916988915611003573b15610ff257611e27906000612b30565b9081611fbd575b5015611f0257611e4c9060008051602061301a833981519152612b30565b9081611f68575b5015611f0257611e7190600080516020612f5a833981519152612b30565b9081611f13575b5015611f0257600080546001600160a01b031916841781556040519390600080516020612fba8339815191528180a3801561100357803b15610ff257600380546001600160a01b031916919091179055611ece57005b60008051602061305a833981519152805460ff60401b1916905560018152600080516020612f3a83398151915290602090a1005b63cf5a8e3360e01b60005260046000fd5b600080516020612f5a833981519152600052600080516020612f1a833981519152602052611f61907ffff5b43478fa6840382eb63777e0da6941d320b940e3f70f0ea4780feff95827612d74565b5084611e78565b60008051602061301a833981519152600052600080516020612f1a833981519152602052611fb6907f32d31393d541a265984ec379cddd8b1fcbe5f2b0eb8ad81dddfead454f135eaa612d74565b5086611e53565b60008052600080516020612f1a833981519152602052611ffd907f615f0f9e84155bea8cc509fe18befeb1baf65611e38a6ba60964480fb29dfd44612d74565b5088611e2e565b60008051602061305a833981519152805460ff60401b1916600160401b179055611dc8565b90501589611d9d565b303b159150611d95565b889150611d8b565b3461028f57604036600319011261028f57612075612060612121565b60043560005260056020526040600020612464565b600a8110156103c55761028b9060405191818392158361215a565b3461028f57600036600319011261028f57602063ffffffff60065416604051908152f35b3461028f57602036600319011261028f576004359063ffffffff60e01b821680920361028f57602091635a05180f60e01b81149081156120f6575b5015158152f35b637965db0b60e01b811491508115612110575b50836120ef565b6301ffc9a760e01b14905083612109565b602435906001600160a01b038216820361028f57565b600435906001600160a01b038216820361028f57565b90600a8210156103c55752565b9015158152604081019291612172916020019061214d565b565b6024359063ffffffff8216820361028f57565b6004359063ffffffff8216820361028f57565b60a081019081106001600160401b038211176121b557604052565b634e487b7160e01b600052604160045260246000fd5b60c081019081106001600160401b038211176121b557604052565b601f909101601f19168101906001600160401b038211908210176121b557604052565b6001600160401b0381116121b557601f01601f191660200190565b604435906001600160401b038216820361028f57565b60005b83811061224d5750506000910152565b818101518382015260200161223d565b906020916122768151809281855285808601910161223a565b601f01601f1916010190565b604051906122916040836121e6565b6005825264312e312e3160d81b6020830152565b805463ffffffff60a01b191660a09290921b63ffffffff60a01b16919091179055565b805463ffffffff60281b191660289290921b63ffffffff60281b16919091179055565b63ffffffff91821681529116602082015260400190565b600052600080516020612ffa83398151915260205260016040600020015490565b600052600560205261233a60406000209182612521565b600a8110156103c5578061239b5750600163ffffffff91015460281c1663ffffffff6006541681158015612393575b6123865780821061237f57505b60019160009190565b9050612376565b5050600090600390600090565b508015612369565b6000929091508290565b60005260056020526123bc604060002091826125ad565b600a8110156103c557806124335750805463ffffffff8160c01c168015159182612425575b505061241c576001015464ffffffffff168015159081612411575b5061240957600190600090565b600090600990565b9050421015386123fc565b50600090600890565b60e01c1015905038806123e1565b600092909150565b8054600160a01b600160e01b03191660a09290921b600160a01b600160e01b0316919091179055565b60ff60008051602061303a833981519152541661251a57546001600160a01b0381169081156125125760a01c6002161561250b5760005260016020526040600020549060ff8260e01c1660038110156103c5578015612503576002146124fc574260a083901c6001600160401b031611156124f5576001600160a01b039081169116036124f057600090565b600790565b5050600690565b5050600590565b505050600490565b5050600390565b505050600290565b5050600190565b60ff60008051602061303a833981519152541661251a57546001600160a01b0381169081156125125760a01c6004161561250b5760005260016020526040600020549060ff8260e01c1660038110156103c5578015612503576002146124fc574260a083901c6001600160401b031611156124f5576001600160a01b039081169116036124f057600090565b60ff60008051602061303a833981519152541661251a57546001600160a01b0381169081156125125760a01c6001161561250b5760005260016020526040600020549060ff8260e01c1660038110156103c5578015612503576002146124fc574260a083901c6001600160401b031611156124f5576001600160a01b039081169116036124f057600090565b60ff60008051602061303a833981519152541661265257565b63d93c066560e01b60005260046000fd5b519064ffffffffff8216820361028f57565b519061ffff8216820361028f57565b801561297f57600354604051638d34875560e01b8152600481018390529190600090839060249082906001600160a01b03165afa918215612973576000926127c8575b506080820151336000908152600080516020612f9a83398151915260205260409020546001600160a01b03909116929060ff1615806127be575b61136857610120015160088110156103c5576003811490600082156127b0575b821561279f575b505061278e5781600052600160205260ff60406000205460e01c1660038110156103c55760010361277d57600090815260056020526040902080546001600160a01b0319166001600160a01b03831617815591565b632e68d1d360e21b60005260046000fd5b63e9f6db8560e01b60005260046000fd5b9091506103c5576007143880612728565b506005811491506000612721565b5082331415612701565b90913d8082843e6127d981846121e6565b820191602081840312612953578051906001600160401b03821161295b5701906101a08284031261295057604051926101a084016001600160401b0381118582101761295f5760409081528351855260208085015190860152838101519085015260608301516001600160401b03811161295b57830181601f8201121561295b5780519061286682612209565b9261287460405194856121e6565b828452602083830101116129575790612893916020808501910161223a565b606084015260808201516001600160a01b03811681036129535760808401526128be60a08301612663565b60a08401526128cf60c08301612663565b60c08401526128e060e08301612675565b60e08401526128f26101008301612663565b610100840152610120820151906008821015612950575061294391610180916101208501526129246101408201612663565b6101408501526129376101608201612675565b61016085015201612663565b61018082015290386126c7565b80fd5b5080fd5b8380fd5b8280fd5b634e487b7160e01b83526041600452602483fd5b6040513d6000823e3d90fd5b637bb0b62160e01b60005260046000fd5b6000908152600560205260409020805490916001600160a01b0382169182159081156129f3575b506106e657336000908152600080516020612f9a833981519152602052604090205460ff1615806129e9575b61136857565b50813314156129e3565b6004915060a01c1615386129b7565b905460a01c63ffffffff1615612a155750565b600052600560205260006001604082208281550155565b6000818152600080516020612ffa8339815191526020908152604080832033845290915290205460ff1615612a5e5750565b63e2517d3f60e01b6000523360045260245260446000fd5b612a808282612b30565b9182612a8b57505090565b6000918252600080516020612f1a8339815191526020526040909120612aba916001600160a01b031690612d74565b5090565b612ac88282612bd9565b9182612ad357505090565b6000918252600080516020612f1a8339815191526020526040909120612aba916001600160a01b031690612de5565b60ff60008051602061305a8339815191525460401c1615612b1f57565b631afcd79f60e31b60005260046000fd5b6000818152600080516020612ffa833981519152602090815260408083206001600160a01b038616845290915290205460ff16612bd2576000818152600080516020612ffa833981519152602090815260408083206001600160a01b0395909516808452949091528120805460ff19166001179055339291907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9080a4600190565b5050600090565b6000818152600080516020612ffa833981519152602090815260408083206001600160a01b038616845290915290205460ff1615612bd2576000818152600080516020612ffa833981519152602090815260408083206001600160a01b0395909516808452949091528120805460ff19169055339291907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9080a4600190565b9081158015612d35575b611003576001600160a01b0316600090815260026020526040902054801515919082612d2a575b5050612d19576001600160401b031642811115612d085760005460a01c6001600160401b03168015159182612cf3575b5050612ce257565b63e774e7b560e01b60005260046000fd5b9091504281039081116106b157113880612cda565b63efa7aefd60e01b60005260046000fd5b633b53f64f60e21b60005260046000fd5b141590503880612caa565b506001600160a01b03811615612c83565b8054821015612d5e5760005260206000200190600090565b634e487b7160e01b600052603260045260246000fd5b6001810190826000528160205260406000205415600014612ddd578054600160401b8110156121b557612dc8612db1826001879401855584612d46565b819391549060031b91821b91600019901b19161790565b90555491600052602052604060002055600190565b505050600090565b9060018201918160005282602052604060002054801515600014612eaf5760001981018181116106b15782546000198101919082116106b157818103612e78575b50505080548015612e62576000190190612e408282612d46565b8154906000199060031b1b191690555560005260205260006040812055600190565b634e487b7160e01b600052603160045260246000fd5b612e98612e88612db19386612d46565b90549060031b1c92839286612d46565b905560005283602052604060002055388080612e26565b50505050600090565b90612ede5750805115612ecd57602081519101fd5b63d6bda27560e01b60005260046000fd5b81511580612f10575b612eef575090565b639996b31560e01b60009081526001600160a01b0391909116600452602490fd5b50803b15612ee756fec1f6fe24621ce81ec5827caf0253cadb74709b061630e6b55e82371705932000c7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d275027301df982f5215b4963a854cf9c73219df80cb6acd8f098189c9480c7bbc360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc07966f2ab141347034724e9b2a472c2f77f5cd745aeba27cacba797b8fcb708617dc5b1290f7495d7f8cc68476e6941aaf510598fa925d0d2720edc8805a846cd37bc77615afefc793aa17d75d4249a9b517ba91b0e54a49c9c4a44b3d7e228302dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800edcc084d3dcd65a1f7f23c65c46722faca6953d28e43150a467cf43e5c309238cd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a164736f6c6343000822000a";
|
|
17828
|
+
var isSuperArgs2 = (xs) => xs.length > 1;
|
|
17829
|
+
var AgentDelegationRegistry__factory = class extends ContractFactory2 {
|
|
17830
|
+
constructor(...args) {
|
|
17831
|
+
if (isSuperArgs2(args)) {
|
|
17832
|
+
super(...args);
|
|
17833
|
+
} else {
|
|
17834
|
+
super(_abi2, _bytecode2, args[0]);
|
|
17835
|
+
}
|
|
17836
|
+
}
|
|
17837
|
+
getDeployTransaction(overrides) {
|
|
17838
|
+
return super.getDeployTransaction(overrides || {});
|
|
17839
|
+
}
|
|
17840
|
+
deploy(overrides) {
|
|
17841
|
+
return super.deploy(overrides || {});
|
|
17842
|
+
}
|
|
17843
|
+
connect(runner) {
|
|
17844
|
+
return super.connect(runner);
|
|
17845
|
+
}
|
|
17846
|
+
static bytecode = _bytecode2;
|
|
17847
|
+
static abi = _abi2;
|
|
17848
|
+
static createInterface() {
|
|
17849
|
+
return new Interface4(_abi2);
|
|
17850
|
+
}
|
|
17851
|
+
static connect(address, runner) {
|
|
17852
|
+
return new Contract7(
|
|
17853
|
+
address,
|
|
17854
|
+
_abi2,
|
|
17855
|
+
runner
|
|
17856
|
+
);
|
|
17857
|
+
}
|
|
17858
|
+
};
|
|
17859
|
+
|
|
17860
|
+
// src/utils/position-delegate.utils.ts
|
|
17861
|
+
import { Contract as Contract8 } from "ethers";
|
|
17862
|
+
var POSITION_DELEGATE_REGISTRY_ABI = [
|
|
17863
|
+
"function positionDelegate(bytes32 positionId) view returns (address)",
|
|
17864
|
+
"function setPositionDelegate(bytes32 positionId, address newDelegate) external",
|
|
17865
|
+
"event PositionDelegateUpdated(bytes32 indexed positionId, address indexed oldDelegate, address indexed newDelegate)"
|
|
17866
|
+
];
|
|
17867
|
+
async function setPositionDelegate(positionId, delegate, signer, registryAddress) {
|
|
17868
|
+
const registry = new Contract8(
|
|
17869
|
+
registryAddress,
|
|
17870
|
+
POSITION_DELEGATE_REGISTRY_ABI,
|
|
17871
|
+
signer
|
|
17872
|
+
);
|
|
17873
|
+
return registry["setPositionDelegate"](positionId, delegate);
|
|
17874
|
+
}
|
|
17875
|
+
async function getPositionDelegate(positionId, provider, registryAddress) {
|
|
17876
|
+
const registry = new Contract8(
|
|
17877
|
+
registryAddress,
|
|
17878
|
+
POSITION_DELEGATE_REGISTRY_ABI,
|
|
17879
|
+
provider
|
|
17880
|
+
);
|
|
17881
|
+
return registry["positionDelegate"](positionId);
|
|
17882
|
+
}
|
|
17883
|
+
|
|
17884
|
+
// src/utils/agent-delegation.utils.ts
|
|
17885
|
+
async function mintAgentPkp(params) {
|
|
17886
|
+
const { serviceEndpoint, authHeader, timeoutMs = 3e4 } = params;
|
|
17887
|
+
if (!serviceEndpoint) {
|
|
17888
|
+
throw new Error(
|
|
17889
|
+
"serviceEndpoint is required to mint an agent PKP (SDK must be in service mode)"
|
|
17890
|
+
);
|
|
17891
|
+
}
|
|
17892
|
+
const url = `${serviceEndpoint}/api/lit/pkp/mint-agent`;
|
|
17893
|
+
const controller = new AbortController();
|
|
17894
|
+
const timeout = setTimeout(() => controller.abort(), timeoutMs);
|
|
17895
|
+
try {
|
|
17896
|
+
const headers = {
|
|
17897
|
+
"Content-Type": "application/json",
|
|
17898
|
+
...authHeader ? await authHeader() : {}
|
|
17899
|
+
};
|
|
17900
|
+
const response = await fetch(url, {
|
|
17901
|
+
method: "POST",
|
|
17902
|
+
headers,
|
|
17903
|
+
body: "{}",
|
|
17904
|
+
signal: controller.signal
|
|
17905
|
+
});
|
|
17906
|
+
if (!response.ok) {
|
|
17907
|
+
throw new Error(
|
|
17908
|
+
`Agent PKP mint failed (${response.status}): ${await response.text()}`
|
|
17909
|
+
);
|
|
17910
|
+
}
|
|
17911
|
+
const data = await response.json();
|
|
17912
|
+
if (!data.success || !data.walletAddress) {
|
|
17913
|
+
throw new Error(
|
|
17914
|
+
`Agent PKP mint returned no address: ${data.error ?? JSON.stringify(data)}`
|
|
17915
|
+
);
|
|
17916
|
+
}
|
|
17917
|
+
return data.walletAddress;
|
|
17918
|
+
} finally {
|
|
17919
|
+
clearTimeout(timeout);
|
|
17920
|
+
}
|
|
17921
|
+
}
|
|
17922
|
+
|
|
17923
|
+
// src/modules/mock/mock-token-manager.module.ts
|
|
17924
|
+
var MockTokenManager = class {
|
|
17925
|
+
config;
|
|
17926
|
+
constructor(config) {
|
|
17927
|
+
this.config = config;
|
|
17928
|
+
if (this.isProductionNetwork()) {
|
|
17929
|
+
log.warn("\u26A0\uFE0F MockTokenManager initialized on production network", {
|
|
17930
|
+
network: config.network
|
|
17931
|
+
});
|
|
17932
|
+
}
|
|
17933
|
+
}
|
|
17934
|
+
/**
|
|
17935
|
+
* Mint mock BTC tokens
|
|
17936
|
+
*
|
|
17937
|
+
* @param amount - Amount to mint in satoshis
|
|
17938
|
+
* @param recipient - Recipient address
|
|
17939
|
+
* @returns Transaction result
|
|
17940
|
+
*/
|
|
17941
|
+
async mintMockBTC(amount, recipient) {
|
|
17942
|
+
if (this.config.debug) {
|
|
17943
|
+
log.info("\u{1FA99} Minting mock BTC", {
|
|
17944
|
+
amount: amount.toString(),
|
|
17945
|
+
recipient
|
|
17946
|
+
});
|
|
17947
|
+
}
|
|
17948
|
+
if (this.isProductionNetwork()) {
|
|
17949
|
+
return failure(
|
|
17950
|
+
new SDKError({
|
|
17951
|
+
message: "Cannot mint mock tokens on production network",
|
|
17952
|
+
category: "CONFIGURATION" /* CONFIGURATION */,
|
|
17953
|
+
severity: "HIGH" /* HIGH */,
|
|
17954
|
+
originalError: new Error("Production network detected")
|
|
17955
|
+
})
|
|
17956
|
+
);
|
|
17957
|
+
}
|
|
17958
|
+
return tryCatchAsync(
|
|
17959
|
+
async () => {
|
|
17960
|
+
const signerResult = this.config.contractManager.getSigner();
|
|
17961
|
+
if (!signerResult.success) {
|
|
17962
|
+
throw signerResult.error;
|
|
17963
|
+
}
|
|
17964
|
+
throw new Error("Mock BTC contract not yet integrated");
|
|
17965
|
+
},
|
|
17966
|
+
(error) => new SDKError({
|
|
17967
|
+
message: "Failed to mint mock BTC",
|
|
17968
|
+
category: "CONTRACT" /* CONTRACT */,
|
|
17969
|
+
severity: "MEDIUM" /* MEDIUM */,
|
|
17970
|
+
originalError: error instanceof Error ? error : new Error(String(error)),
|
|
17971
|
+
context: { amount: amount.toString(), recipient }
|
|
17972
|
+
})
|
|
17973
|
+
);
|
|
17974
|
+
}
|
|
17975
|
+
/**
|
|
17976
|
+
* Approve mock BTC spending
|
|
17977
|
+
*
|
|
17978
|
+
* @param spender - Spender address
|
|
17979
|
+
* @param amount - Amount to approve in satoshis
|
|
17980
|
+
* @returns Transaction result
|
|
17981
|
+
*/
|
|
17982
|
+
async approveMockBTC(spender, amount) {
|
|
17983
|
+
if (this.config.debug) {
|
|
17984
|
+
log.info("\u2705 Approving mock BTC spending", {
|
|
17985
|
+
spender,
|
|
17986
|
+
amount: amount.toString()
|
|
17987
|
+
});
|
|
17988
|
+
}
|
|
17989
|
+
if (this.isProductionNetwork()) {
|
|
17990
|
+
return failure(
|
|
17991
|
+
new SDKError({
|
|
17992
|
+
message: "Cannot approve mock tokens on production network",
|
|
17993
|
+
category: "CONFIGURATION" /* CONFIGURATION */,
|
|
17994
|
+
severity: "HIGH" /* HIGH */,
|
|
17995
|
+
originalError: new Error("Production network detected")
|
|
17996
|
+
})
|
|
17997
|
+
);
|
|
17998
|
+
}
|
|
17999
|
+
return tryCatchAsync(
|
|
18000
|
+
async () => {
|
|
18001
|
+
const signerResult = this.config.contractManager.getSigner();
|
|
18002
|
+
if (!signerResult.success) {
|
|
18003
|
+
throw signerResult.error;
|
|
18004
|
+
}
|
|
18005
|
+
throw new Error("Mock BTC contract not yet integrated");
|
|
18006
|
+
},
|
|
18007
|
+
(error) => new SDKError({
|
|
18008
|
+
message: "Failed to approve mock BTC",
|
|
18009
|
+
category: "CONTRACT" /* CONTRACT */,
|
|
18010
|
+
severity: "MEDIUM" /* MEDIUM */,
|
|
18011
|
+
originalError: error instanceof Error ? error : new Error(String(error)),
|
|
18012
|
+
context: { spender, amount: amount.toString() }
|
|
18013
|
+
})
|
|
18014
|
+
);
|
|
18015
|
+
}
|
|
18016
|
+
/**
|
|
18017
|
+
* Get mock BTC balance
|
|
18018
|
+
*
|
|
18019
|
+
* @param address - Address to query
|
|
18020
|
+
* @returns Balance in satoshis
|
|
18021
|
+
*/
|
|
18022
|
+
async getMockBTCBalance(address) {
|
|
18023
|
+
if (this.config.debug) {
|
|
18024
|
+
log.info("\u{1F50D} Querying mock BTC balance", { address });
|
|
18025
|
+
}
|
|
18026
|
+
return tryCatchAsync(
|
|
18027
|
+
async () => {
|
|
18028
|
+
throw new Error("Mock BTC contract not yet integrated");
|
|
18029
|
+
},
|
|
18030
|
+
(error) => new SDKError({
|
|
18031
|
+
message: "Failed to get mock BTC balance",
|
|
18032
|
+
category: "CONTRACT" /* CONTRACT */,
|
|
18033
|
+
severity: "MEDIUM" /* MEDIUM */,
|
|
18034
|
+
originalError: error instanceof Error ? error : new Error(String(error)),
|
|
18035
|
+
context: { address }
|
|
18036
|
+
})
|
|
18037
|
+
);
|
|
18038
|
+
}
|
|
18039
|
+
/**
|
|
18040
|
+
* Check if current network is production (mainnet)
|
|
18041
|
+
*/
|
|
18042
|
+
isProductionNetwork() {
|
|
18043
|
+
return this.config.network.toLowerCase().includes("mainnet");
|
|
18044
|
+
}
|
|
18045
|
+
};
|
|
18046
|
+
function createMockTokenManager(config) {
|
|
18047
|
+
try {
|
|
18048
|
+
const manager = new MockTokenManager(config);
|
|
18049
|
+
return success(manager);
|
|
18050
|
+
} catch (error) {
|
|
18051
|
+
return failure(
|
|
18052
|
+
new SDKError({
|
|
18053
|
+
message: "Failed to create MockTokenManager",
|
|
18054
|
+
category: "INITIALIZATION" /* INITIALIZATION */,
|
|
18055
|
+
severity: "HIGH" /* HIGH */,
|
|
18056
|
+
originalError: error instanceof Error ? error : new Error(String(error))
|
|
18057
|
+
})
|
|
18058
|
+
);
|
|
18059
|
+
}
|
|
18060
|
+
}
|
|
18061
|
+
|
|
18062
|
+
// src/modules/diamond-hands-sdk.ts
|
|
18063
|
+
var import_dh_lit_actions2 = __toESM(require_pkg_src());
|
|
18064
|
+
import { LitOps, broadcastSignedBitcoinTransaction } from "@gvnrdao/dh-lit-ops";
|
|
18065
|
+
|
|
18066
|
+
// src/utils/telegram-messaging.utils.ts
|
|
18067
|
+
var TelegramBot = null;
|
|
18068
|
+
try {
|
|
18069
|
+
if (typeof window === "undefined" && typeof global !== "undefined") {
|
|
18070
|
+
TelegramBot = __require("node-telegram-bot-api");
|
|
18071
|
+
}
|
|
18072
|
+
} catch (error) {
|
|
18073
|
+
log.warn("Telegram bot API not available", {
|
|
18074
|
+
error: error instanceof Error ? error.message : String(error)
|
|
18075
|
+
});
|
|
18076
|
+
}
|
|
18077
|
+
function formatMintMessage(mintAmount, loanId, txHash) {
|
|
18078
|
+
return `\u2705 DH SDK: ${mintAmount} UCD was minted for loan id: ${loanId} Tx: https://sepolia.etherscan.io/tx/${txHash}`;
|
|
18079
|
+
}
|
|
18080
|
+
function formatPartialPaymentMessage(paymentAmount, loanId, txHash) {
|
|
18081
|
+
return `\u2705 DH SDK: ${paymentAmount} UCD was repaid for loan id: ${loanId} Tx: https://sepolia.etherscan.io/tx/${txHash}`;
|
|
18082
|
+
}
|
|
18083
|
+
function formatPartialPaymentFailureMessage(paymentAmount, loanId, txHash) {
|
|
18084
|
+
const baseMessage = `\u274C DH SDK: FAILED to repay ${paymentAmount} UCD for loan id: ${loanId}`;
|
|
18085
|
+
if (txHash) {
|
|
18086
|
+
return `${baseMessage} Tx: https://sepolia.etherscan.io/tx/${txHash}`;
|
|
18087
|
+
}
|
|
18088
|
+
return baseMessage;
|
|
18089
|
+
}
|
|
18090
|
+
function formatLoanCreationMessage(positionId, pkpId, vaultAddress) {
|
|
18091
|
+
const vault = vaultAddress || "unknown";
|
|
18092
|
+
return `\u2705 DH SDK: A new loan was created Id: ${positionId} Pkp: ${pkpId} Regtest BTC vault: ${vault}`;
|
|
18093
|
+
}
|
|
18094
|
+
function formatBTCWithdrawalFailureMessage(withdrawalAmount, btcVault, btcDestinationAddress, loanId) {
|
|
18095
|
+
const formattedAmount = formatBTCAmount(withdrawalAmount);
|
|
18096
|
+
return `\u274C DH SDK: BTC withdrawal FAILED: ${formattedAmount} from ${btcVault} to ${btcDestinationAddress} for loan id: ${loanId}`;
|
|
16162
18097
|
}
|
|
16163
18098
|
function formatLoanRenewalMessage(positionId, txHash) {
|
|
16164
18099
|
return `\u2705 DH SDK: Loan id ${positionId} was successfully renewed. Tx: https://sepolia.etherscan.io/tx/${txHash}`;
|
|
@@ -16474,6 +18409,32 @@ var DiamondHandsSDK = class _DiamondHandsSDK {
|
|
|
16474
18409
|
await this.serverSession.clearPersisted();
|
|
16475
18410
|
}
|
|
16476
18411
|
}
|
|
18412
|
+
/**
|
|
18413
|
+
* Establish the lit-ops-server session from a login envelope the CALLER already
|
|
18414
|
+
* had signed, instead of prompting the wallet for one.
|
|
18415
|
+
*
|
|
18416
|
+
* For a host that authenticates several services from one wallet signature (the
|
|
18417
|
+
* browser frontend signs once and spends the same envelope at the api and here),
|
|
18418
|
+
* this is what turns two wallet prompts into one — and for a multi-sig Safe each
|
|
18419
|
+
* prompt saved is a whole propose-and-confirm ceremony across owners.
|
|
18420
|
+
*
|
|
18421
|
+
* Call it PROMPTLY after signing: each server pins the nonce on first use and
|
|
18422
|
+
* requires that first use to be fresh (±120s EOA, ±600s contract wallet), and
|
|
18423
|
+
* the two servers' replay stores are independent, so a late hand-off is rejected
|
|
18424
|
+
* as stale even though the other service already accepted the same envelope.
|
|
18425
|
+
* Once accepted, silent re-mint covers the next 24h with no further prompts.
|
|
18426
|
+
*
|
|
18427
|
+
* Requires `loginAudience` to be configured to a value BOTH servers accept —
|
|
18428
|
+
* otherwise this service rejects the envelope as `audience_mismatch`.
|
|
18429
|
+
*
|
|
18430
|
+
* Throws if the exchange fails, so a caller can fall back to the prompt path.
|
|
18431
|
+
* No-op in standalone mode (no server session to prime).
|
|
18432
|
+
*/
|
|
18433
|
+
async primeServerSession(payload) {
|
|
18434
|
+
if (!this.serverSession)
|
|
18435
|
+
return;
|
|
18436
|
+
await this.serverSession.adoptLoginPayload(payload);
|
|
18437
|
+
}
|
|
16477
18438
|
/**
|
|
16478
18439
|
* Audit H-9: invalidate the LoanQuery cache so subsequent reads return
|
|
16479
18440
|
* the post-write state. We clear the entire loan-query cache (not just
|
|
@@ -16585,6 +18546,7 @@ var DiamondHandsSDK = class _DiamondHandsSDK {
|
|
|
16585
18546
|
this.serverSession = new ServerSession({
|
|
16586
18547
|
signer: config.authSigner ?? config.contractSigner,
|
|
16587
18548
|
serviceEndpoint: config.serviceEndpoint,
|
|
18549
|
+
loginAudience: config.loginAudience,
|
|
16588
18550
|
chainId: config.chainId,
|
|
16589
18551
|
persistSession: config.sessionPersistence?.enabled,
|
|
16590
18552
|
sessionStore: config.sessionPersistence?.store,
|
|
@@ -17860,7 +19822,7 @@ var DiamondHandsSDK = class _DiamondHandsSDK {
|
|
|
17860
19822
|
const coreAbi = [
|
|
17861
19823
|
"function getPositionDetails(bytes32) view returns (tuple(bytes32 positionId, bytes32 pkpId, uint256 ucdDebt, string vaultAddress, address borrower, uint40 createdAt, uint40 lastUpdated, uint16 selectedTerm, uint40 expiryAt, uint8 status, uint40 previousExpiryAt, uint16 totalTerm))"
|
|
17862
19824
|
];
|
|
17863
|
-
const positionCore = new
|
|
19825
|
+
const positionCore = new Contract9(
|
|
17864
19826
|
coreAddress,
|
|
17865
19827
|
coreAbi,
|
|
17866
19828
|
this.getSignerOrThrow().provider
|
|
@@ -17916,7 +19878,7 @@ var DiamondHandsSDK = class _DiamondHandsSDK {
|
|
|
17916
19878
|
"function getCurrentQuantum() view returns (uint256)",
|
|
17917
19879
|
"function isQuantumValid(bytes32,uint256) view returns (bool)"
|
|
17918
19880
|
];
|
|
17919
|
-
const registry = new
|
|
19881
|
+
const registry = new Contract9(
|
|
17920
19882
|
registryAddress,
|
|
17921
19883
|
registryAbi,
|
|
17922
19884
|
this.getSignerOrThrow().provider
|
|
@@ -18032,7 +19994,7 @@ var DiamondHandsSDK = class _DiamondHandsSDK {
|
|
|
18032
19994
|
});
|
|
18033
19995
|
}
|
|
18034
19996
|
const signatureHexMint = finalSignature.startsWith("0x") ? finalSignature : "0x" + finalSignature;
|
|
18035
|
-
const mintIface = new
|
|
19997
|
+
const mintIface = new Interface5(positionManagerAbi);
|
|
18036
19998
|
const mintCalldata = mintIface.encodeFunctionData("mintUCD", [
|
|
18037
19999
|
positionIdBytes32,
|
|
18038
20000
|
validationResponse.mintAmount,
|
|
@@ -18068,7 +20030,7 @@ var DiamondHandsSDK = class _DiamondHandsSDK {
|
|
|
18068
20030
|
if (viewsAddress) {
|
|
18069
20031
|
let diagnosis = null;
|
|
18070
20032
|
try {
|
|
18071
|
-
const views = new
|
|
20033
|
+
const views = new Contract9(
|
|
18072
20034
|
viewsAddress,
|
|
18073
20035
|
[
|
|
18074
20036
|
"function diagnoseMintUCD(bytes32,uint256,uint256,uint256,uint256,uint256,bytes32,bytes32,bytes32,uint256,bytes) view returns (string)"
|
|
@@ -18178,7 +20140,7 @@ Message: ${causeMessage}${quantumContext}${mintDebtDiagnostics}`
|
|
|
18178
20140
|
if (receipt.logs && receipt.logs.length > 0) {
|
|
18179
20141
|
for (const receiptLog of receipt.logs) {
|
|
18180
20142
|
if (receiptLog.topics && receiptLog.topics[0] === "0x08c379a0") {
|
|
18181
|
-
const iface = new
|
|
20143
|
+
const iface = new Interface5([
|
|
18182
20144
|
"error Error(string)"
|
|
18183
20145
|
]);
|
|
18184
20146
|
const decoded = iface.decodeErrorResult("Error", receiptLog.data);
|
|
@@ -18195,7 +20157,7 @@ Message: ${causeMessage}${quantumContext}${mintDebtDiagnostics}`
|
|
|
18195
20157
|
const minimalAbi = [
|
|
18196
20158
|
"event UCDMintedWithAuthorization(bytes32 indexed positionId, address indexed borrower, uint256 mintAmount, uint256 mintFee, uint256 newDebt, uint256 newCollateral, uint256 btcPrice, uint256 quantumTimestamp, bytes32 authorizedSpendsHash)"
|
|
18197
20159
|
];
|
|
18198
|
-
const iface = new
|
|
20160
|
+
const iface = new Interface5(minimalAbi);
|
|
18199
20161
|
for (const receiptLog of receipt.logs) {
|
|
18200
20162
|
const parsed = (() => {
|
|
18201
20163
|
const logIface = iface;
|
|
@@ -18784,7 +20746,7 @@ Message: ${causeMessage}${quantumContext}${mintDebtDiagnostics}`
|
|
|
18784
20746
|
}
|
|
18785
20747
|
const loanOpsForUcd = loanOpsForUcdResult.value;
|
|
18786
20748
|
const ucdTokenAddress = await loanOpsForUcd.ucdToken();
|
|
18787
|
-
const ucdToken = new
|
|
20749
|
+
const ucdToken = new Contract9(
|
|
18788
20750
|
ucdTokenAddress,
|
|
18789
20751
|
[
|
|
18790
20752
|
"function balanceOf(address) view returns (uint256)",
|
|
@@ -19329,7 +21291,7 @@ Message: ${causeMessage}${quantumContext}${mintDebtDiagnostics}`
|
|
|
19329
21291
|
if (!signatureBytes.startsWith("0x")) {
|
|
19330
21292
|
signatureBytes = "0x" + signatureBytes;
|
|
19331
21293
|
}
|
|
19332
|
-
const extendIface = new
|
|
21294
|
+
const extendIface = new Interface5([
|
|
19333
21295
|
"function extendPosition(bytes32 positionId, uint256 selectedTerm, uint256 quantumTimestamp, uint256 btcPrice, uint256 availableBTCBalance, uint256 proRataRenewalFee, bytes calldata extensionValidatorSignature) external returns (bool)"
|
|
19334
21296
|
]);
|
|
19335
21297
|
const extendCalldata = extendIface.encodeFunctionData("extendPosition", [
|
|
@@ -19941,7 +21903,7 @@ Message: ${causeMessage}${quantumContext}${mintDebtDiagnostics}`
|
|
|
19941
21903
|
};
|
|
19942
21904
|
}
|
|
19943
21905
|
const ucdTokenAddress = await loanOps.ucdToken();
|
|
19944
|
-
const ucdToken = new
|
|
21906
|
+
const ucdToken = new Contract9(
|
|
19945
21907
|
ucdTokenAddress,
|
|
19946
21908
|
[
|
|
19947
21909
|
"function balanceOf(address) view returns (uint256)",
|
|
@@ -19951,15 +21913,22 @@ Message: ${causeMessage}${quantumContext}${mintDebtDiagnostics}`
|
|
|
19951
21913
|
signer
|
|
19952
21914
|
);
|
|
19953
21915
|
const signerAddress = await signer.getAddress();
|
|
21916
|
+
let fundsSource = signerAddress;
|
|
21917
|
+
try {
|
|
21918
|
+
const posView = await this.getPositionDetailsView(request.positionId);
|
|
21919
|
+
if (posView?.borrower)
|
|
21920
|
+
fundsSource = posView.borrower;
|
|
21921
|
+
} catch {
|
|
21922
|
+
}
|
|
21923
|
+
const isSelfRepay = fundsSource.toLowerCase() === signerAddress.toLowerCase();
|
|
19954
21924
|
const [balance, allowance] = await Promise.all([
|
|
19955
|
-
ucdToken["balanceOf"](
|
|
19956
|
-
ucdToken["allowance"](
|
|
21925
|
+
ucdToken["balanceOf"](fundsSource),
|
|
21926
|
+
ucdToken["allowance"](fundsSource, positionManagerAddress)
|
|
19957
21927
|
]);
|
|
19958
21928
|
if (this.config.debug) {
|
|
21929
|
+
log.info(` UCD funds source: ${fundsSource}${isSelfRepay ? " (self)" : " (borrower; agent submitting)"}`);
|
|
19959
21930
|
log.info(` UCD Balance: ${formatEther(balance)} UCD`);
|
|
19960
|
-
log.info(
|
|
19961
|
-
` UCD Allowance: ${formatEther(allowance)} UCD`
|
|
19962
|
-
);
|
|
21931
|
+
log.info(` UCD Allowance: ${formatEther(allowance)} UCD`);
|
|
19963
21932
|
log.info(` Required: ${request.paymentAmount} UCD`);
|
|
19964
21933
|
}
|
|
19965
21934
|
if (balance < paymentAmountWei) {
|
|
@@ -19967,15 +21936,18 @@ Message: ${causeMessage}${quantumContext}${mintDebtDiagnostics}`
|
|
|
19967
21936
|
success: false,
|
|
19968
21937
|
error: `Insufficient UCD balance: ${formatEther(
|
|
19969
21938
|
balance
|
|
19970
|
-
)} UCD (need ${request.paymentAmount} UCD)`
|
|
21939
|
+
)} UCD (need ${request.paymentAmount} UCD)${isSelfRepay ? "" : ` \u2014 borrower ${fundsSource} lacks funds`}`
|
|
19971
21940
|
};
|
|
19972
21941
|
}
|
|
19973
21942
|
if (allowance < paymentAmountWei) {
|
|
21943
|
+
if (!isSelfRepay) {
|
|
21944
|
+
return {
|
|
21945
|
+
success: false,
|
|
21946
|
+
error: `Borrower ${fundsSource} has insufficient UCD allowance to PositionManager (${formatEther(allowance)} UCD, need ${request.paymentAmount}). The borrower must approve PositionManager before a delegated agent can repay.`
|
|
21947
|
+
};
|
|
21948
|
+
}
|
|
19974
21949
|
if (this.config.debug) {
|
|
19975
|
-
log.info(
|
|
19976
|
-
" Insufficient allowance, sending approval transaction...",
|
|
19977
|
-
{}
|
|
19978
|
-
);
|
|
21950
|
+
log.info(" Insufficient allowance, sending approval transaction...", {});
|
|
19979
21951
|
}
|
|
19980
21952
|
const approveTx = await ucdToken["approve"](
|
|
19981
21953
|
positionManagerAddress,
|
|
@@ -19983,16 +21955,13 @@ Message: ${causeMessage}${quantumContext}${mintDebtDiagnostics}`
|
|
|
19983
21955
|
);
|
|
19984
21956
|
if (this.config.debug) {
|
|
19985
21957
|
log.info(` Approval tx sent: ${approveTx.hash}`);
|
|
19986
|
-
log.info(" Waiting for approval confirmation...", {});
|
|
19987
21958
|
}
|
|
19988
21959
|
await approveTx.wait();
|
|
19989
21960
|
if (this.config.debug) {
|
|
19990
21961
|
log.info(" \u2705 UCD approval confirmed", {});
|
|
19991
21962
|
}
|
|
19992
|
-
} else {
|
|
19993
|
-
|
|
19994
|
-
log.info(" \u2705 Sufficient allowance already exists", {});
|
|
19995
|
-
}
|
|
21963
|
+
} else if (this.config.debug) {
|
|
21964
|
+
log.info(" \u2705 Sufficient allowance already exists", {});
|
|
19996
21965
|
}
|
|
19997
21966
|
let auth;
|
|
19998
21967
|
try {
|
|
@@ -20234,7 +22203,7 @@ Message: ${causeMessage}${quantumContext}${mintDebtDiagnostics}`
|
|
|
20234
22203
|
const paymentSigner = this.getSignerOrThrow();
|
|
20235
22204
|
const paymentFrom = await paymentSigner.getAddress();
|
|
20236
22205
|
const paymentProvider = contractManager.getProvider();
|
|
20237
|
-
const paymentIface = new
|
|
22206
|
+
const paymentIface = new Interface5([
|
|
20238
22207
|
"function makePayment(bytes32 positionId, uint256 paymentAmount, uint256 quantumTimestamp, uint256 btcPrice, bytes calldata paymentValidatorSignature) external returns (bool)"
|
|
20239
22208
|
]);
|
|
20240
22209
|
const paymentCalldata = paymentIface.encodeFunctionData("makePayment", [
|
|
@@ -20551,7 +22520,7 @@ Message: ${causeMessage}${quantumContext}${mintDebtDiagnostics}`
|
|
|
20551
22520
|
const pkpId = position.pkpId;
|
|
20552
22521
|
if (litValidatorAddr && pkpId) {
|
|
20553
22522
|
try {
|
|
20554
|
-
const litValidator = new
|
|
22523
|
+
const litValidator = new Contract9(
|
|
20555
22524
|
litValidatorAddr,
|
|
20556
22525
|
["function pkpOwners(bytes32) view returns (address)"],
|
|
20557
22526
|
this.getProviderOrThrow()
|
|
@@ -20974,7 +22943,7 @@ Message: ${causeMessage}${quantumContext}${mintDebtDiagnostics}`
|
|
|
20974
22943
|
utxoVout: withdrawalParams.utxoVout
|
|
20975
22944
|
});
|
|
20976
22945
|
}
|
|
20977
|
-
const withdrawIface = new
|
|
22946
|
+
const withdrawIface = new Interface5([
|
|
20978
22947
|
"function withdrawBTC((bytes32 positionId, bytes32 actionHash, bytes32 authorizedSpendsHash, bytes32 ucdDebtHash, bytes32 contractBundleHash, string withdrawalAddress, uint256 totalDeduction, uint256 newCollateral, uint256 quantumTimestamp, uint256 btcPrice, string utxoTxid, uint32 utxoVout) params, bytes withdrawalValidatorSignature, bytes btcSpendAuthSignature) external returns (bool)"
|
|
20979
22948
|
]);
|
|
20980
22949
|
const withdrawCalldata = withdrawIface.encodeFunctionData("withdrawBTC", [
|
|
@@ -21536,7 +23505,7 @@ Message: ${causeMessage}${quantumContext}${mintDebtDiagnostics}`
|
|
|
21536
23505
|
const btcSpendAuthorizerAbi = [
|
|
21537
23506
|
"function getAuthorizedSpends(bytes32) view returns (tuple(string txid, uint32 vout, uint256 satoshis, string targetAddress, uint256 targetAmount, uint256 authorizedAt)[])"
|
|
21538
23507
|
];
|
|
21539
|
-
const btcSpendAuthorizer = new
|
|
23508
|
+
const btcSpendAuthorizer = new Contract9(
|
|
21540
23509
|
btcSpendAuthorizerAddress,
|
|
21541
23510
|
btcSpendAuthorizerAbi,
|
|
21542
23511
|
this.getProviderOrThrow()
|
|
@@ -21622,7 +23591,7 @@ Message: ${causeMessage}${quantumContext}${mintDebtDiagnostics}`
|
|
|
21622
23591
|
const abi = [
|
|
21623
23592
|
"function getAuthorizedSpends(bytes32) view returns (tuple(string txid, uint32 vout, uint256 satoshis, string targetAddress, uint256 targetAmount, uint256 authorizedAt)[])"
|
|
21624
23593
|
];
|
|
21625
|
-
const contract = new
|
|
23594
|
+
const contract = new Contract9(
|
|
21626
23595
|
btcSpendAuthorizerAddress,
|
|
21627
23596
|
abi,
|
|
21628
23597
|
this.getProviderOrThrow()
|
|
@@ -21809,7 +23778,7 @@ Message: ${causeMessage}${quantumContext}${mintDebtDiagnostics}`
|
|
|
21809
23778
|
error: attRes.error ?? attRes.reason ?? `LIT recovery attestation rejected${attRes.failedStep ? ` at step ${attRes.failedStep}` : ""}`
|
|
21810
23779
|
};
|
|
21811
23780
|
}
|
|
21812
|
-
const btcSpendAuthorizer = new
|
|
23781
|
+
const btcSpendAuthorizer = new Contract9(
|
|
21813
23782
|
btcSpendAuthorizerAddress,
|
|
21814
23783
|
[
|
|
21815
23784
|
"function cancelStaleSpendWithProof(bytes32 positionId, bytes32 utxoKey, uint256 authorizedAt, string calldata invalidatorTxid, uint256 attestationTimestamp, bytes calldata litSignature) external"
|
|
@@ -22499,7 +24468,7 @@ Message: ${causeMessage}${quantumContext}${mintDebtDiagnostics}`
|
|
|
22499
24468
|
"function allowance(address owner, address spender) view returns (uint256)",
|
|
22500
24469
|
"function approve(address spender, uint256 amount) returns (bool)"
|
|
22501
24470
|
];
|
|
22502
|
-
const stablecoin = new
|
|
24471
|
+
const stablecoin = new Contract9(params.stablecoinAddress, erc20Abi, params.signer);
|
|
22503
24472
|
const allowance = await stablecoin.allowance(signerAddress, psmAddress);
|
|
22504
24473
|
if (allowance < params.amountWei) {
|
|
22505
24474
|
const approveTx = await stablecoin.approve(psmAddress, MaxUint256);
|
|
@@ -22537,7 +24506,7 @@ Message: ${causeMessage}${quantumContext}${mintDebtDiagnostics}`
|
|
|
22537
24506
|
"function allowance(address owner, address spender) view returns (uint256)",
|
|
22538
24507
|
"function approve(address spender, uint256 amount) returns (bool)"
|
|
22539
24508
|
];
|
|
22540
|
-
const ucdToken = new
|
|
24509
|
+
const ucdToken = new Contract9(ucdAddress, erc20Abi, params.signer);
|
|
22541
24510
|
const allowance = await ucdToken.allowance(signerAddress, ucdControllerAddress);
|
|
22542
24511
|
if (allowance < params.ucdAmountWei) {
|
|
22543
24512
|
const approveTx = await ucdToken.approve(ucdControllerAddress, MaxUint256);
|
|
@@ -22559,6 +24528,132 @@ Message: ${causeMessage}${quantumContext}${mintDebtDiagnostics}`
|
|
|
22559
24528
|
* @throws if timeout is reached before subgraph catches up
|
|
22560
24529
|
*/
|
|
22561
24530
|
// ============================================================================
|
|
24531
|
+
// HIGH-LEVEL API - Agent Delegation (auto-renew) — SEPOLIA ONLY
|
|
24532
|
+
// ============================================================================
|
|
24533
|
+
/** Guard: the AgentDelegationRegistry MVP is deployed on Sepolia only. */
|
|
24534
|
+
async assertAgentDelegationSepolia() {
|
|
24535
|
+
const chainId = Number((await this.getProviderOrThrow().getNetwork()).chainId);
|
|
24536
|
+
if (chainId !== 11155111) {
|
|
24537
|
+
throw new SDKError({
|
|
24538
|
+
message: `Agent auto-renew delegation is Sepolia-only (chainId 11155111); got ${chainId}`,
|
|
24539
|
+
category: "NETWORK" /* NETWORK */,
|
|
24540
|
+
severity: "HIGH" /* HIGH */
|
|
24541
|
+
});
|
|
24542
|
+
}
|
|
24543
|
+
const addr = this.config.contractAddresses?.agentDelegationRegistry;
|
|
24544
|
+
if (!addr) {
|
|
24545
|
+
throw new SDKError({
|
|
24546
|
+
message: "AgentDelegationRegistry address not configured \u2014 provide contractAddresses.agentDelegationRegistry",
|
|
24547
|
+
category: "CONFIGURATION" /* CONFIGURATION */,
|
|
24548
|
+
severity: "HIGH" /* HIGH */
|
|
24549
|
+
});
|
|
24550
|
+
}
|
|
24551
|
+
return addr;
|
|
24552
|
+
}
|
|
24553
|
+
/**
|
|
24554
|
+
* Read a position's auto-renew delegation state (used to drive the Enable/Disable toggle).
|
|
24555
|
+
* Pure view — no signer required.
|
|
24556
|
+
*/
|
|
24557
|
+
async getAutoRenewStatus(positionId, user) {
|
|
24558
|
+
const addr = await this.assertAgentDelegationSepolia();
|
|
24559
|
+
const registry = AgentDelegationRegistry__factory.connect(addr, this.getProviderOrThrow());
|
|
24560
|
+
const pid = this.toBytes32(positionId);
|
|
24561
|
+
const grant = await registry.getLoanGrant(pid);
|
|
24562
|
+
const enabled = grant.borrower !== "0x0000000000000000000000000000000000000000" && (Number(grant.scopeBits) & 1) !== 0;
|
|
24563
|
+
const agentActive = user ? await registry.isAgentActive(user) : null;
|
|
24564
|
+
const canRenew = user ? await registry.canRenew(pid, user).then((r) => ({ ok: r.ok, reason: Number(r.reason) })) : null;
|
|
24565
|
+
return {
|
|
24566
|
+
enabled,
|
|
24567
|
+
borrower: grant.borrower,
|
|
24568
|
+
maxRenewals: Number(grant.maxRenewals),
|
|
24569
|
+
renewalsUsed: Number(grant.renewalsUsed),
|
|
24570
|
+
agentActive,
|
|
24571
|
+
canRenew
|
|
24572
|
+
};
|
|
24573
|
+
}
|
|
24574
|
+
/**
|
|
24575
|
+
* Enable auto-renew delegation for a position. Orchestrates the first-time setup: if the
|
|
24576
|
+
* borrower has no active agent, mints a fresh per-user agent PKP (via lit-ops-server) and
|
|
24577
|
+
* registers it, then records the position's renew grant. Borrower-signed.
|
|
24578
|
+
*/
|
|
24579
|
+
async enableAutoRenew(positionId, options) {
|
|
24580
|
+
const addr = await this.assertAgentDelegationSepolia();
|
|
24581
|
+
const pdrAddr = this.config.contractAddresses?.positionDelegateRegistry;
|
|
24582
|
+
if (!pdrAddr) {
|
|
24583
|
+
throw new SDKError({
|
|
24584
|
+
message: "PositionDelegateRegistry address not configured \u2014 required to authorize the renewal agent (contractAddresses.positionDelegateRegistry)",
|
|
24585
|
+
category: "CONFIGURATION" /* CONFIGURATION */,
|
|
24586
|
+
severity: "HIGH" /* HIGH */
|
|
24587
|
+
});
|
|
24588
|
+
}
|
|
24589
|
+
const signer = this.getSignerOrThrow();
|
|
24590
|
+
const user = await signer.getAddress();
|
|
24591
|
+
const registry = AgentDelegationRegistry__factory.connect(addr, signer);
|
|
24592
|
+
const pid = this.toBytes32(positionId);
|
|
24593
|
+
let agentAddress;
|
|
24594
|
+
const hasActiveAgent = await registry.isAgentActive(user);
|
|
24595
|
+
if (hasActiveAgent) {
|
|
24596
|
+
agentAddress = (await registry.agentOf(user)).agent;
|
|
24597
|
+
} else {
|
|
24598
|
+
agentAddress = await mintAgentPkp({
|
|
24599
|
+
serviceEndpoint: this.config.serviceEndpoint,
|
|
24600
|
+
authHeader: this.serverSession ? () => this.serverSession.getAuthHeader() : void 0
|
|
24601
|
+
});
|
|
24602
|
+
const validitySeconds = options?.agentValiditySeconds ?? 90 * 24 * 60 * 60;
|
|
24603
|
+
const validUntil = Math.floor(Date.now() / 1e3) + validitySeconds;
|
|
24604
|
+
const regTx = await registry.registerAgent(user, agentAddress, validUntil);
|
|
24605
|
+
await regTx.wait();
|
|
24606
|
+
}
|
|
24607
|
+
const currentDelegate = await getPositionDelegate(pid, signer, pdrAddr).catch(
|
|
24608
|
+
() => null
|
|
24609
|
+
);
|
|
24610
|
+
if (!currentDelegate || currentDelegate.toLowerCase() !== agentAddress.toLowerCase()) {
|
|
24611
|
+
const delTx = await setPositionDelegate(pid, agentAddress, signer, pdrAddr);
|
|
24612
|
+
await delTx.wait();
|
|
24613
|
+
}
|
|
24614
|
+
const tx = await registry.enableAutoRenew(
|
|
24615
|
+
pid,
|
|
24616
|
+
options?.maxRenewals ?? 0,
|
|
24617
|
+
options?.maxEndTimestamp ?? 0
|
|
24618
|
+
);
|
|
24619
|
+
const receipt = await tx.wait();
|
|
24620
|
+
return { hash: tx.hash, blockNumber: receipt?.blockNumber ?? 0, agentAddress };
|
|
24621
|
+
}
|
|
24622
|
+
/** Disable auto-renew delegation for a position (clears the grant). Borrower-signed. */
|
|
24623
|
+
async disableAutoRenew(positionId) {
|
|
24624
|
+
const addr = await this.assertAgentDelegationSepolia();
|
|
24625
|
+
const signer = this.getSignerOrThrow();
|
|
24626
|
+
const user = await signer.getAddress();
|
|
24627
|
+
const registry = AgentDelegationRegistry__factory.connect(addr, signer);
|
|
24628
|
+
const pid = this.toBytes32(positionId);
|
|
24629
|
+
const pdrAddr = this.config.contractAddresses?.positionDelegateRegistry;
|
|
24630
|
+
if (!pdrAddr) {
|
|
24631
|
+
throw new SDKError({
|
|
24632
|
+
message: "PositionDelegateRegistry address not configured \u2014 required to clear the renewal agent's Gate-1 authorization (contractAddresses.positionDelegateRegistry)",
|
|
24633
|
+
category: "CONFIGURATION" /* CONFIGURATION */,
|
|
24634
|
+
severity: "HIGH" /* HIGH */
|
|
24635
|
+
});
|
|
24636
|
+
}
|
|
24637
|
+
{
|
|
24638
|
+
const [currentDelegate, userAgent] = await Promise.all([
|
|
24639
|
+
getPositionDelegate(pid, signer, pdrAddr).catch(() => null),
|
|
24640
|
+
registry.agentOf(user).then((a) => a.agent).catch(() => null)
|
|
24641
|
+
]);
|
|
24642
|
+
if (currentDelegate && userAgent && currentDelegate.toLowerCase() === userAgent.toLowerCase()) {
|
|
24643
|
+
const clearTx = await setPositionDelegate(
|
|
24644
|
+
pid,
|
|
24645
|
+
"0x0000000000000000000000000000000000000000",
|
|
24646
|
+
signer,
|
|
24647
|
+
pdrAddr
|
|
24648
|
+
);
|
|
24649
|
+
await clearTx.wait();
|
|
24650
|
+
}
|
|
24651
|
+
}
|
|
24652
|
+
const tx = await registry.disableAutoRenew(pid);
|
|
24653
|
+
const receipt = await tx.wait();
|
|
24654
|
+
return { hash: tx.hash, blockNumber: receipt?.blockNumber ?? 0 };
|
|
24655
|
+
}
|
|
24656
|
+
// ============================================================================
|
|
22562
24657
|
// HIGH-LEVEL API - Bitcoin Operations
|
|
22563
24658
|
// ============================================================================
|
|
22564
24659
|
/**
|
|
@@ -23220,7 +25315,7 @@ Message: ${causeMessage}${quantumContext}${mintDebtDiagnostics}`
|
|
|
23220
25315
|
const coreModuleAbi = [
|
|
23221
25316
|
"function getPositionDetails(bytes32) view returns (tuple(bytes32 positionId, bytes32 pkpId, uint256 ucdDebt, string vaultAddress, address borrower, uint40 createdAt, uint40 lastUpdated, uint16 selectedTerm, uint40 expiryAt, uint8 status, uint40 previousExpiryAt, uint16 totalTerm))"
|
|
23222
25317
|
];
|
|
23223
|
-
const coreModule = new
|
|
25318
|
+
const coreModule = new Contract9(
|
|
23224
25319
|
coreModuleAddress,
|
|
23225
25320
|
coreModuleAbi,
|
|
23226
25321
|
provider
|
|
@@ -23287,7 +25382,7 @@ Message: ${causeMessage}${quantumContext}${mintDebtDiagnostics}`
|
|
|
23287
25382
|
const corePositionAbi = [
|
|
23288
25383
|
"function getPositionDetails(bytes32) view returns (tuple(bytes32 positionId, bytes32 pkpId, uint256 ucdDebt, string vaultAddress, address borrower, uint40 createdAt, uint40 lastUpdated, uint16 selectedTerm, uint40 expiryAt, uint8 status, uint40 previousExpiryAt, uint16 totalTerm))"
|
|
23289
25384
|
];
|
|
23290
|
-
const corePositionContract = new
|
|
25385
|
+
const corePositionContract = new Contract9(
|
|
23291
25386
|
coreAddress,
|
|
23292
25387
|
corePositionAbi,
|
|
23293
25388
|
provider
|
|
@@ -23366,7 +25461,7 @@ Message: ${causeMessage}${quantumContext}${mintDebtDiagnostics}`
|
|
|
23366
25461
|
throw new Error("loanOperationsManager address not configured");
|
|
23367
25462
|
}
|
|
23368
25463
|
const runner = this.config.contractSigner || this.getProviderOrThrow();
|
|
23369
|
-
const contract = new
|
|
25464
|
+
const contract = new Contract9(
|
|
23370
25465
|
addr.loanOperationsManager,
|
|
23371
25466
|
[
|
|
23372
25467
|
"function getProtocolConfig() external view returns (uint256 liquidationThreshold, uint256 minimumLoanValueUcd, uint256 minimumLoanValueWei, uint256 maxSingleLoanValueUcd)"
|
|
@@ -23756,30 +25851,6 @@ var EventHelpers = {
|
|
|
23756
25851
|
});
|
|
23757
25852
|
}
|
|
23758
25853
|
};
|
|
23759
|
-
|
|
23760
|
-
// src/utils/position-delegate.utils.ts
|
|
23761
|
-
import { Contract as Contract7 } from "ethers";
|
|
23762
|
-
var POSITION_DELEGATE_REGISTRY_ABI = [
|
|
23763
|
-
"function positionDelegate(bytes32 positionId) view returns (address)",
|
|
23764
|
-
"function setPositionDelegate(bytes32 positionId, address newDelegate) external",
|
|
23765
|
-
"event PositionDelegateUpdated(bytes32 indexed positionId, address indexed oldDelegate, address indexed newDelegate)"
|
|
23766
|
-
];
|
|
23767
|
-
async function setPositionDelegate(positionId, delegate, signer, registryAddress) {
|
|
23768
|
-
const registry = new Contract7(
|
|
23769
|
-
registryAddress,
|
|
23770
|
-
POSITION_DELEGATE_REGISTRY_ABI,
|
|
23771
|
-
signer
|
|
23772
|
-
);
|
|
23773
|
-
return registry["setPositionDelegate"](positionId, delegate);
|
|
23774
|
-
}
|
|
23775
|
-
async function getPositionDelegate(positionId, provider, registryAddress) {
|
|
23776
|
-
const registry = new Contract7(
|
|
23777
|
-
registryAddress,
|
|
23778
|
-
POSITION_DELEGATE_REGISTRY_ABI,
|
|
23779
|
-
provider
|
|
23780
|
-
);
|
|
23781
|
-
return registry["positionDelegate"](positionId);
|
|
23782
|
-
}
|
|
23783
25854
|
export {
|
|
23784
25855
|
ALL_CONTRACTS,
|
|
23785
25856
|
ALL_DEPLOYMENTS,
|
|
@@ -23794,6 +25865,8 @@ export {
|
|
|
23794
25865
|
ErrorSeverity,
|
|
23795
25866
|
EventHelpers,
|
|
23796
25867
|
LOCALHOST_CONTRACTS,
|
|
25868
|
+
LOGIN_TYPES,
|
|
25869
|
+
LOGIN_TYPES_WITH_AUDIENCE,
|
|
23797
25870
|
LRUCache,
|
|
23798
25871
|
LoanCreator,
|
|
23799
25872
|
LoanQuery,
|
|
@@ -23816,6 +25889,8 @@ export {
|
|
|
23816
25889
|
buildBtcExecuteEnvelope,
|
|
23817
25890
|
buildInvalidateMessageHash,
|
|
23818
25891
|
buildInvalidateStaleSpendEnvelope,
|
|
25892
|
+
buildLoginDomain,
|
|
25893
|
+
buildSignedLoginPayload,
|
|
23819
25894
|
collectFailures,
|
|
23820
25895
|
collectSuccesses,
|
|
23821
25896
|
combine,
|