@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.js
CHANGED
|
@@ -88,13 +88,15 @@ var init_deployment_addresses = __esm({
|
|
|
88
88
|
PositionDelegateRegistry: "0x482369De283622E7b05731875ec137d4E3D208F9",
|
|
89
89
|
FeeRecipientRegistry: "0x95795F8403DDb629E8527B2934C4e71f5fC0C374",
|
|
90
90
|
BitcoinWithdrawalAddressRegistry: "0x6376D392097F0A81e51BD83960A97EA20eaf1dbe",
|
|
91
|
-
CarryAgentRegistry: "0x5595CB538D44E6Cf179D20364fD631D0477e69f7"
|
|
91
|
+
CarryAgentRegistry: "0x5595CB538D44E6Cf179D20364fD631D0477e69f7",
|
|
92
|
+
AgentDelegationRegistry: "0xA6040Ee7c52220634C6cC565885d6956C95Faaf5",
|
|
93
|
+
DHAgentDelegate: "0x3Ea189b22Db147A7c79fF3FD8AaDfA8B0Bd0f4FB"
|
|
92
94
|
},
|
|
93
95
|
upgraded: {
|
|
94
96
|
PositionManager: {
|
|
95
|
-
previousImplementation: "
|
|
96
|
-
newImplementation: "
|
|
97
|
-
upgradedAt: "2026-07-
|
|
97
|
+
previousImplementation: "0x3a493909920DF104D4048c2c20270B9DAFC81716",
|
|
98
|
+
newImplementation: "0x607a80aee6eF425C7eC7bA5230E5FAFC95B0388F",
|
|
99
|
+
upgradedAt: "2026-07-23T23:55:25.994Z",
|
|
98
100
|
upgradedBy: "0xF20986F02420EF443AE9BE5092FB8A4975cF3aA6",
|
|
99
101
|
reason: "Shared upgrade script: PositionManager implementation update"
|
|
100
102
|
},
|
|
@@ -321,7 +323,7 @@ var init_deployment_addresses = __esm({
|
|
|
321
323
|
CIRCUIT_BREAKER_MODULE_IMPL: "0xF6277dEF72D51312CC99616B5380f34Eb7603D75",
|
|
322
324
|
ADMIN_MODULE_IMPL: "0xBBA86246169f81a307Fafff02C1e3D8456aab973",
|
|
323
325
|
POSITION_MANAGER_VIEWS_IMPL: "0xA455B542cFb36AF8451fc420dB89e590E5c87cef",
|
|
324
|
-
POSITION_MANAGER_IMPL: "
|
|
326
|
+
POSITION_MANAGER_IMPL: "0x607a80aee6eF425C7eC7bA5230E5FAFC95B0388F",
|
|
325
327
|
SIMPLE_PSM_V2: "0x19EcF7BA26e054fd4Ff06009A03070103dbBB058",
|
|
326
328
|
SIMPLE_PSM_V2_IMPL: "0xE38010BE47B389922A1cd4b533470F0af7d20101",
|
|
327
329
|
UCD_TOKEN_IMPL: "0xa6C8C4cfc7DD3dCE5F1259A4a1eAf8461aA8CeC8",
|
|
@@ -352,7 +354,10 @@ var init_deployment_addresses = __esm({
|
|
|
352
354
|
BITCOIN_WITHDRAWAL_ADDRESS_REGISTRY: "0x6376D392097F0A81e51BD83960A97EA20eaf1dbe",
|
|
353
355
|
BITCOIN_WITHDRAWAL_ADDRESS_REGISTRY_IMPL: "0xFF270BC4470dBA80430Bd1a3a66EB691599354fA",
|
|
354
356
|
CARRY_AGENT_REGISTRY: "0x5595CB538D44E6Cf179D20364fD631D0477e69f7",
|
|
355
|
-
CARRY_AGENT_REGISTRY_IMPL: "0x1b11a3D5e46F3672E643c997f0d569DFf0b64a01"
|
|
357
|
+
CARRY_AGENT_REGISTRY_IMPL: "0x1b11a3D5e46F3672E643c997f0d569DFf0b64a01",
|
|
358
|
+
AGENT_DELEGATION_REGISTRY: "0xA6040Ee7c52220634C6cC565885d6956C95Faaf5",
|
|
359
|
+
AGENT_DELEGATION_REGISTRY_IMPL: "0x4cCB77306A1EE0F1F686EeF83B66eD8796E6dd90",
|
|
360
|
+
DH_AGENT_DELEGATE: "0x3Ea189b22Db147A7c79fF3FD8AaDfA8B0Bd0f4FB"
|
|
356
361
|
}
|
|
357
362
|
};
|
|
358
363
|
SEPOLIA_CONTRACTS = {
|
|
@@ -381,7 +386,9 @@ var init_deployment_addresses = __esm({
|
|
|
381
386
|
PositionDelegateRegistry: "0x482369De283622E7b05731875ec137d4E3D208F9",
|
|
382
387
|
FeeRecipientRegistry: "0x95795F8403DDb629E8527B2934C4e71f5fC0C374",
|
|
383
388
|
BitcoinWithdrawalAddressRegistry: "0x6376D392097F0A81e51BD83960A97EA20eaf1dbe",
|
|
384
|
-
CarryAgentRegistry: "0x5595CB538D44E6Cf179D20364fD631D0477e69f7"
|
|
389
|
+
CarryAgentRegistry: "0x5595CB538D44E6Cf179D20364fD631D0477e69f7",
|
|
390
|
+
AgentDelegationRegistry: "0xA6040Ee7c52220634C6cC565885d6956C95Faaf5",
|
|
391
|
+
DHAgentDelegate: "0x3Ea189b22Db147A7c79fF3FD8AaDfA8B0Bd0f4FB"
|
|
385
392
|
};
|
|
386
393
|
MAINNET_DEPLOYMENT = {
|
|
387
394
|
network: "mainnet",
|
|
@@ -1303,30 +1310,30 @@ var require_pkg_src = __commonJS({
|
|
|
1303
1310
|
}
|
|
1304
1311
|
},
|
|
1305
1312
|
btcTransactionSigner: {
|
|
1306
|
-
cid: "
|
|
1313
|
+
cid: "QmZFzjpdwpiBxHPv3t1mhjv8hfPRD1hPZGJ7jUU9w6V2Ca",
|
|
1307
1314
|
authorizedCidHex: cidToHex(
|
|
1308
|
-
"
|
|
1315
|
+
"QmZFzjpdwpiBxHPv3t1mhjv8hfPRD1hPZGJ7jUU9w6V2Ca"
|
|
1309
1316
|
),
|
|
1310
1317
|
name: "Btc Transaction Signer",
|
|
1311
1318
|
description: "Production Btc Transaction Signer",
|
|
1312
1319
|
version: "1.1.1",
|
|
1313
1320
|
deployed: true,
|
|
1314
|
-
deployedAt:
|
|
1315
|
-
size:
|
|
1316
|
-
hash: "
|
|
1321
|
+
deployedAt: 1785173232972,
|
|
1322
|
+
size: 66562,
|
|
1323
|
+
hash: "13639ec13bfed381c3c9d81e17e37917446ba30d04d4d8e45809a6868139c3cb"
|
|
1317
1324
|
},
|
|
1318
1325
|
ucdMintValidator: {
|
|
1319
|
-
cid: "
|
|
1326
|
+
cid: "Qmb1TPCaNYRTHsnhZrE1J4BtVYNWBnWSneXRqyAco1XKku",
|
|
1320
1327
|
authorizedCidHex: cidToHex(
|
|
1321
|
-
"
|
|
1328
|
+
"Qmb1TPCaNYRTHsnhZrE1J4BtVYNWBnWSneXRqyAco1XKku"
|
|
1322
1329
|
),
|
|
1323
1330
|
name: "Ucd Mint Validator",
|
|
1324
1331
|
description: "Production Ucd Mint Validator",
|
|
1325
1332
|
version: "1.2.1",
|
|
1326
1333
|
deployed: true,
|
|
1327
|
-
deployedAt:
|
|
1328
|
-
size:
|
|
1329
|
-
hash: "
|
|
1334
|
+
deployedAt: 1785173240530,
|
|
1335
|
+
size: 81596,
|
|
1336
|
+
hash: "fdaa7abb4ad28ae1f20f5cd6e3e03e5a8787fd6ac05938f51070ed16844f80f5",
|
|
1330
1337
|
validatorWalletAddress: "0x82DB9F515957aA380B596C6eA2Bd30CEF181f236",
|
|
1331
1338
|
pkp: {
|
|
1332
1339
|
publicKey: "0x041ab17cd91fc5c0b761eea6092d032807561b621b82c488826776e04a9158d61ba64d809a4729f0501289d980732cb06d8dfd06999dd9c8efd2f495dad78b31bb",
|
|
@@ -1334,17 +1341,17 @@ var require_pkg_src = __commonJS({
|
|
|
1334
1341
|
}
|
|
1335
1342
|
},
|
|
1336
1343
|
processPaymentValidator: {
|
|
1337
|
-
cid: "
|
|
1344
|
+
cid: "QmWSSAgmLtfVsRawHU2Uf72Xw4hM5T5Jcx2n7EVmEHQD1E",
|
|
1338
1345
|
authorizedCidHex: cidToHex(
|
|
1339
|
-
"
|
|
1346
|
+
"QmWSSAgmLtfVsRawHU2Uf72Xw4hM5T5Jcx2n7EVmEHQD1E"
|
|
1340
1347
|
),
|
|
1341
1348
|
name: "Process Payment Validator",
|
|
1342
1349
|
description: "Production Process Payment Validator",
|
|
1343
1350
|
version: "1.2.1",
|
|
1344
1351
|
deployed: true,
|
|
1345
|
-
deployedAt:
|
|
1346
|
-
size:
|
|
1347
|
-
hash: "
|
|
1352
|
+
deployedAt: 1785173245463,
|
|
1353
|
+
size: 77593,
|
|
1354
|
+
hash: "0f1015e51702abd9834e295ea12ac8dbd906909d25f72ad6a509c061e625c75d",
|
|
1348
1355
|
validatorWalletAddress: "0x82DB9F515957aA380B596C6eA2Bd30CEF181f236",
|
|
1349
1356
|
pkp: {
|
|
1350
1357
|
publicKey: "0x04cfccb9b6c7addc79469c0e9fafebef4c70801302c62cdb26b610723a9b8527d23f98a40158c7340d83fd0e62d02b5ec74c12f7a86d98e8c6973b4811110f19ad",
|
|
@@ -1352,17 +1359,17 @@ var require_pkg_src = __commonJS({
|
|
|
1352
1359
|
}
|
|
1353
1360
|
},
|
|
1354
1361
|
extendPositionValidator: {
|
|
1355
|
-
cid: "
|
|
1362
|
+
cid: "QmZyx9qUVyWu7deCJFLZxB1WDVRBgobs1Vm6m4ECGMbpkS",
|
|
1356
1363
|
authorizedCidHex: cidToHex(
|
|
1357
|
-
"
|
|
1364
|
+
"QmZyx9qUVyWu7deCJFLZxB1WDVRBgobs1Vm6m4ECGMbpkS"
|
|
1358
1365
|
),
|
|
1359
1366
|
name: "Extend Position Validator",
|
|
1360
1367
|
description: "Production Extend Position Validator",
|
|
1361
1368
|
version: "1.2.1",
|
|
1362
1369
|
deployed: true,
|
|
1363
|
-
deployedAt:
|
|
1364
|
-
size:
|
|
1365
|
-
hash: "
|
|
1370
|
+
deployedAt: 1785173255906,
|
|
1371
|
+
size: 75372,
|
|
1372
|
+
hash: "545dc96a7e9b4d0aaadf239127b804a92df60b6b5b2fbb3203ef7de9ad97980a",
|
|
1366
1373
|
validatorWalletAddress: "0x82DB9F515957aA380B596C6eA2Bd30CEF181f236",
|
|
1367
1374
|
pkp: {
|
|
1368
1375
|
publicKey: "0x04e52338f6a0c3362800f1a94c4c8f08be5030dde0fa217388c53d1c1a4790f4443c9f2886b2d2d8f4b75a9a156e9b028011b1a1cf7648da0e556aa980ec692836",
|
|
@@ -1370,17 +1377,17 @@ var require_pkg_src = __commonJS({
|
|
|
1370
1377
|
}
|
|
1371
1378
|
},
|
|
1372
1379
|
btcWithdrawal: {
|
|
1373
|
-
cid: "
|
|
1380
|
+
cid: "QmXKsozVz832mvU5xgvFnAAms1kfQrHAKj1areHfkDkoK7",
|
|
1374
1381
|
authorizedCidHex: cidToHex(
|
|
1375
|
-
"
|
|
1382
|
+
"QmXKsozVz832mvU5xgvFnAAms1kfQrHAKj1areHfkDkoK7"
|
|
1376
1383
|
),
|
|
1377
1384
|
name: "Btc Withdrawal",
|
|
1378
1385
|
description: "Production Btc Withdrawal",
|
|
1379
|
-
version: "1.2.
|
|
1386
|
+
version: "1.2.1",
|
|
1380
1387
|
deployed: true,
|
|
1381
|
-
deployedAt:
|
|
1382
|
-
size:
|
|
1383
|
-
hash: "
|
|
1388
|
+
deployedAt: 1785173260209,
|
|
1389
|
+
size: 92692,
|
|
1390
|
+
hash: "18ade8e4f0c79896eee613d16c86de135f1d3daaa0fa056bcdbcaa0dff793c77",
|
|
1384
1391
|
validatorWalletAddress: "0x82DB9F515957aA380B596C6eA2Bd30CEF181f236",
|
|
1385
1392
|
pkp: {
|
|
1386
1393
|
publicKey: "0x043616787c5432415c24378c4ef48de2bcd6bb7b575b837e3cff09171802662da7105d79586c7659677a0ecbaddac4cce06cb2a11f69a16fa0c4d7002ac7d51a4d",
|
|
@@ -1388,17 +1395,17 @@ var require_pkg_src = __commonJS({
|
|
|
1388
1395
|
}
|
|
1389
1396
|
},
|
|
1390
1397
|
liquidationValidator: {
|
|
1391
|
-
cid: "
|
|
1398
|
+
cid: "Qme6aGADhiszkQbZL977E6nmBacd2PEB7K9Hs8puVrscNx",
|
|
1392
1399
|
authorizedCidHex: cidToHex(
|
|
1393
|
-
"
|
|
1400
|
+
"Qme6aGADhiszkQbZL977E6nmBacd2PEB7K9Hs8puVrscNx"
|
|
1394
1401
|
),
|
|
1395
1402
|
name: "Liquidation Validator",
|
|
1396
1403
|
description: "Production Liquidation Validator",
|
|
1397
1404
|
version: "1.2.1",
|
|
1398
1405
|
deployed: true,
|
|
1399
|
-
deployedAt:
|
|
1400
|
-
size:
|
|
1401
|
-
hash: "
|
|
1406
|
+
deployedAt: 1785173262533,
|
|
1407
|
+
size: 66846,
|
|
1408
|
+
hash: "b35ee7706d733d625faa4dbe37f73c8e20f0c1befa897cd7875e827de52003de",
|
|
1402
1409
|
validatorWalletAddress: "0x82DB9F515957aA380B596C6eA2Bd30CEF181f236",
|
|
1403
1410
|
pkp: {
|
|
1404
1411
|
publicKey: "0x041a241de58976c13e3d7ca5a18e494f7330151e3818706135d50176e78ffb673e58b11f0b67a87c73fade6c6b27d6e7a7377ea9f4c10bf31880f1d725f18cc6f8",
|
|
@@ -1424,17 +1431,17 @@ var require_pkg_src = __commonJS({
|
|
|
1424
1431
|
}
|
|
1425
1432
|
},
|
|
1426
1433
|
loanVaultBtcBalance: {
|
|
1427
|
-
cid: "
|
|
1434
|
+
cid: "QmaeQoHYvcMYobNbu9hQavGDudi8AXoW9tg3YHrvy1g2A4",
|
|
1428
1435
|
authorizedCidHex: cidToHex(
|
|
1429
|
-
"
|
|
1436
|
+
"QmaeQoHYvcMYobNbu9hQavGDudi8AXoW9tg3YHrvy1g2A4"
|
|
1430
1437
|
),
|
|
1431
1438
|
name: "Loan Vault Btc Balance",
|
|
1432
1439
|
description: "Production Loan Vault Btc Balance",
|
|
1433
1440
|
version: "1.2.1",
|
|
1434
1441
|
deployed: true,
|
|
1435
|
-
deployedAt:
|
|
1436
|
-
size:
|
|
1437
|
-
hash: "
|
|
1442
|
+
deployedAt: 1785173271802,
|
|
1443
|
+
size: 56800,
|
|
1444
|
+
hash: "a059133214e6ba0a73d655a15600c4b33e361fb340c98f8eecaf8ab7b95aaf83",
|
|
1438
1445
|
validatorWalletAddress: "0x82DB9F515957aA380B596C6eA2Bd30CEF181f236",
|
|
1439
1446
|
pkp: {
|
|
1440
1447
|
publicKey: "0x043616787c5432415c24378c4ef48de2bcd6bb7b575b837e3cff09171802662da7105d79586c7659677a0ecbaddac4cce06cb2a11f69a16fa0c4d7002ac7d51a4d",
|
|
@@ -1448,17 +1455,17 @@ var require_pkg_src = __commonJS({
|
|
|
1448
1455
|
// Requires BitcoinProviderRegistry.addAllowedCid(chainId, keccak256(utf8(cid)))
|
|
1449
1456
|
// on each target chain (the action decrypts registry slots). No OAR entry.
|
|
1450
1457
|
btcAddressBalance: {
|
|
1451
|
-
cid: "
|
|
1458
|
+
cid: "QmUXUtU9r1HhQVYgkXPN5s19SKXanhn4pMsCtFEP3GK4Kj",
|
|
1452
1459
|
authorizedCidHex: cidToHex(
|
|
1453
|
-
"
|
|
1460
|
+
"QmUXUtU9r1HhQVYgkXPN5s19SKXanhn4pMsCtFEP3GK4Kj"
|
|
1454
1461
|
),
|
|
1455
1462
|
name: "Btc Address Balance",
|
|
1456
1463
|
description: "Address-only signed total BTC balance via registry consensus (no positionId, no price)",
|
|
1457
1464
|
version: "0.2.1",
|
|
1458
1465
|
deployed: true,
|
|
1459
|
-
deployedAt:
|
|
1460
|
-
size:
|
|
1461
|
-
hash: "
|
|
1466
|
+
deployedAt: 1785173280221,
|
|
1467
|
+
size: 27309,
|
|
1468
|
+
hash: "f0d08938713d9d89a56a3a386cacbc2b57afd5ad367ea82d827d40e1bfc70989",
|
|
1462
1469
|
validatorWalletAddress: "0x82DB9F515957aA380B596C6eA2Bd30CEF181f236",
|
|
1463
1470
|
pkp: {
|
|
1464
1471
|
publicKey: "0x0498cbb31facfa26e3ec83ccdabfe4fe341ca0282e0c3cb81da7113723b9726e1e49efa92165cc3faa66ced4454cea56dbab12267852d6525a55d7c4f128b912cd",
|
|
@@ -1492,17 +1499,17 @@ var require_pkg_src = __commonJS({
|
|
|
1492
1499
|
hash: "03ee5be239c91c735d2c95db89a0d1b77e602cfc18af8eb64b3281fddcd90a72"
|
|
1493
1500
|
},
|
|
1494
1501
|
staleSpendRecoveryValidator: {
|
|
1495
|
-
cid: "
|
|
1502
|
+
cid: "QmXQWT8V4wjuvH8BbC7xrkYxsVu5AKfvfWcS7jnYfrexYm",
|
|
1496
1503
|
authorizedCidHex: cidToHex(
|
|
1497
|
-
"
|
|
1504
|
+
"QmXQWT8V4wjuvH8BbC7xrkYxsVu5AKfvfWcS7jnYfrexYm"
|
|
1498
1505
|
),
|
|
1499
1506
|
name: "Stale Spend Recovery Validator",
|
|
1500
1507
|
description: "Production Stale Spend Recovery Validator",
|
|
1501
1508
|
version: "1.1.2",
|
|
1502
1509
|
deployed: true,
|
|
1503
|
-
deployedAt:
|
|
1504
|
-
size:
|
|
1505
|
-
hash: "
|
|
1510
|
+
deployedAt: 1785173285829,
|
|
1511
|
+
size: 37108,
|
|
1512
|
+
hash: "04de5fc5b6f5131dc1544e3d3d187a1f9ef9616ffd12483d119f9102b3671791",
|
|
1506
1513
|
validatorWalletAddress: "0x82DB9F515957aA380B596C6eA2Bd30CEF181f236",
|
|
1507
1514
|
pkp: {
|
|
1508
1515
|
publicKey: "0x046da0ad6da7dd4a0063cbeac6f2bdb6a9889c2178b23470833356a8ee5630f7f0eee0db348d9d9aaaadd23eccf0063c8f68ee5e446abe30b882bf1de4c932bc21",
|
|
@@ -1510,17 +1517,17 @@ var require_pkg_src = __commonJS({
|
|
|
1510
1517
|
}
|
|
1511
1518
|
},
|
|
1512
1519
|
btcUtxoInvalidator: {
|
|
1513
|
-
cid: "
|
|
1520
|
+
cid: "Qmc9W2dgGpRax5Q2nXw8ciGF9RHjWj1y9v2MMWNbrCwnZb",
|
|
1514
1521
|
authorizedCidHex: cidToHex(
|
|
1515
|
-
"
|
|
1522
|
+
"Qmc9W2dgGpRax5Q2nXw8ciGF9RHjWj1y9v2MMWNbrCwnZb"
|
|
1516
1523
|
),
|
|
1517
1524
|
name: "Btc Utxo Invalidator",
|
|
1518
1525
|
description: "Production Btc Utxo Invalidator",
|
|
1519
1526
|
version: "1.0.0",
|
|
1520
1527
|
deployed: true,
|
|
1521
|
-
deployedAt:
|
|
1522
|
-
size:
|
|
1523
|
-
hash: "
|
|
1528
|
+
deployedAt: 1785173292828,
|
|
1529
|
+
size: 61410,
|
|
1530
|
+
hash: "9ca3817ea626b4ebca184e20cae827a8a982f48d6cd1497e81bb4469aa282627"
|
|
1524
1531
|
}
|
|
1525
1532
|
};
|
|
1526
1533
|
function getDeploymentsForNetwork(network) {
|
|
@@ -2266,7 +2273,7 @@ ${errorReport}`);
|
|
|
2266
2273
|
}
|
|
2267
2274
|
init_debug_logger();
|
|
2268
2275
|
init_session_signature_cache();
|
|
2269
|
-
var
|
|
2276
|
+
var import_ethers18 = require("ethers");
|
|
2270
2277
|
var EXPIRED_LOAN_MIN_LIQUIDATION_THRESHOLD_BPS = 11e3;
|
|
2271
2278
|
var GRACE_PERIOD_DAYS = 30;
|
|
2272
2279
|
var SATOSHIS_PER_BITCOIN = 100000000n;
|
|
@@ -5040,6 +5047,7 @@ ${auth.clientId}`;
|
|
|
5040
5047
|
],
|
|
5041
5048
|
allowArbitraryBitcoinProvider: true,
|
|
5042
5049
|
allowArbitraryEvmRpc: true,
|
|
5050
|
+
pinContractAddresses: false,
|
|
5043
5051
|
allowDevSinglePriceProvider: true,
|
|
5044
5052
|
minBitcoinBalanceConfirmations: 1,
|
|
5045
5053
|
minBitcoinSpendConfirmations: 1,
|
|
@@ -5060,6 +5068,7 @@ ${auth.clientId}`;
|
|
|
5060
5068
|
],
|
|
5061
5069
|
allowArbitraryBitcoinProvider: false,
|
|
5062
5070
|
allowArbitraryEvmRpc: false,
|
|
5071
|
+
pinContractAddresses: true,
|
|
5063
5072
|
allowDevSinglePriceProvider: false,
|
|
5064
5073
|
minBitcoinBalanceConfirmations: 1,
|
|
5065
5074
|
minBitcoinSpendConfirmations: 1,
|
|
@@ -5080,6 +5089,7 @@ ${auth.clientId}`;
|
|
|
5080
5089
|
],
|
|
5081
5090
|
allowArbitraryBitcoinProvider: false,
|
|
5082
5091
|
allowArbitraryEvmRpc: false,
|
|
5092
|
+
pinContractAddresses: true,
|
|
5083
5093
|
allowDevSinglePriceProvider: false,
|
|
5084
5094
|
minBitcoinBalanceConfirmations: 6,
|
|
5085
5095
|
minBitcoinSpendConfirmations: 6,
|
|
@@ -5096,12 +5106,12 @@ ${auth.clientId}`;
|
|
|
5096
5106
|
}
|
|
5097
5107
|
async function executeVaultSnapshot(params) {
|
|
5098
5108
|
global.ethers = {
|
|
5099
|
-
...
|
|
5109
|
+
...import_ethers18.ethers,
|
|
5100
5110
|
providers: {
|
|
5101
|
-
StaticJsonRpcProvider:
|
|
5111
|
+
StaticJsonRpcProvider: import_ethers18.ethers.JsonRpcProvider
|
|
5102
5112
|
},
|
|
5103
|
-
Contract:
|
|
5104
|
-
utils:
|
|
5113
|
+
Contract: import_ethers18.ethers.Contract,
|
|
5114
|
+
utils: import_ethers18.ethers
|
|
5105
5115
|
// v6 moved utils to top level
|
|
5106
5116
|
};
|
|
5107
5117
|
global.Lit = {
|
|
@@ -5373,7 +5383,9 @@ function getSepoliaConfig() {
|
|
|
5373
5383
|
feeRecipientRegistry: SEPOLIA_CONTRACTS.FeeRecipientRegistry || "",
|
|
5374
5384
|
positionDelegateRegistry: SEPOLIA_CONTRACTS.PositionDelegateRegistry || "",
|
|
5375
5385
|
bitcoinWithdrawalAddressRegistry: SEPOLIA_CONTRACTS.BitcoinWithdrawalAddressRegistry || "",
|
|
5376
|
-
carryAgentRegistry: SEPOLIA_CONTRACTS.CarryAgentRegistry || ""
|
|
5386
|
+
carryAgentRegistry: SEPOLIA_CONTRACTS.CarryAgentRegistry || "",
|
|
5387
|
+
agentDelegationRegistry: SEPOLIA_CONTRACTS.AgentDelegationRegistry || "",
|
|
5388
|
+
dhAgentDelegate: SEPOLIA_CONTRACTS.DHAgentDelegate || ""
|
|
5377
5389
|
},
|
|
5378
5390
|
subgraphs: {
|
|
5379
5391
|
// Lazy getter for the same module-init snapshot reason as serviceEndpoint.
|
|
@@ -5414,7 +5426,9 @@ function getMainnetConfig() {
|
|
|
5414
5426
|
feeRecipientRegistry: MAINNET_CONTRACTS.FeeRecipientRegistry || "",
|
|
5415
5427
|
positionDelegateRegistry: MAINNET_CONTRACTS.PositionDelegateRegistry || "",
|
|
5416
5428
|
bitcoinWithdrawalAddressRegistry: MAINNET_CONTRACTS.BitcoinWithdrawalAddressRegistry || "",
|
|
5417
|
-
carryAgentRegistry: MAINNET_CONTRACTS.CarryAgentRegistry || ""
|
|
5429
|
+
carryAgentRegistry: MAINNET_CONTRACTS.CarryAgentRegistry || "",
|
|
5430
|
+
agentDelegationRegistry: MAINNET_CONTRACTS.AgentDelegationRegistry || "",
|
|
5431
|
+
dhAgentDelegate: MAINNET_CONTRACTS.DHAgentDelegate || ""
|
|
5418
5432
|
},
|
|
5419
5433
|
subgraphs: {
|
|
5420
5434
|
diamondHandsUrl: "https://gateway-arbitrum.network.thegraph.com/api/subgraphs/id/CCTPsdYqco2jChDLLBQTbdJWwoukVoMt1cXeR9ti6r9A"
|
|
@@ -5574,6 +5588,8 @@ __export(src_exports, {
|
|
|
5574
5588
|
ErrorSeverity: () => ErrorSeverity,
|
|
5575
5589
|
EventHelpers: () => EventHelpers,
|
|
5576
5590
|
LOCALHOST_CONTRACTS: () => LOCALHOST_CONTRACTS,
|
|
5591
|
+
LOGIN_TYPES: () => LOGIN_TYPES,
|
|
5592
|
+
LOGIN_TYPES_WITH_AUDIENCE: () => LOGIN_TYPES_WITH_AUDIENCE,
|
|
5577
5593
|
LRUCache: () => LRUCache,
|
|
5578
5594
|
LoanCreator: () => LoanCreator,
|
|
5579
5595
|
LoanQuery: () => LoanQuery,
|
|
@@ -5596,6 +5612,8 @@ __export(src_exports, {
|
|
|
5596
5612
|
buildBtcExecuteEnvelope: () => buildBtcExecuteEnvelope,
|
|
5597
5613
|
buildInvalidateMessageHash: () => buildInvalidateMessageHash,
|
|
5598
5614
|
buildInvalidateStaleSpendEnvelope: () => buildInvalidateStaleSpendEnvelope,
|
|
5615
|
+
buildLoginDomain: () => buildLoginDomain,
|
|
5616
|
+
buildSignedLoginPayload: () => buildSignedLoginPayload,
|
|
5599
5617
|
collectFailures: () => collectFailures,
|
|
5600
5618
|
collectSuccesses: () => collectSuccesses,
|
|
5601
5619
|
combine: () => combine,
|
|
@@ -5646,7 +5664,7 @@ __export(src_exports, {
|
|
|
5646
5664
|
module.exports = __toCommonJS(src_exports);
|
|
5647
5665
|
|
|
5648
5666
|
// src/modules/diamond-hands-sdk.ts
|
|
5649
|
-
var
|
|
5667
|
+
var import_ethers17 = require("ethers");
|
|
5650
5668
|
|
|
5651
5669
|
// src/types/result.ts
|
|
5652
5670
|
function success(value) {
|
|
@@ -6700,6 +6718,7 @@ function isLoginRejection(error) {
|
|
|
6700
6718
|
var ServerSession = class {
|
|
6701
6719
|
signer;
|
|
6702
6720
|
serviceEndpoint;
|
|
6721
|
+
loginAudience;
|
|
6703
6722
|
chainId;
|
|
6704
6723
|
store;
|
|
6705
6724
|
onSignaturePrompt;
|
|
@@ -6730,6 +6749,10 @@ var ServerSession = class {
|
|
|
6730
6749
|
assertSafeServiceEndpoint(opts.serviceEndpoint);
|
|
6731
6750
|
this.signer = opts.signer;
|
|
6732
6751
|
this.serviceEndpoint = opts.serviceEndpoint.replace(/\/+$/, "");
|
|
6752
|
+
this.loginAudience = (opts.loginAudience ?? this.serviceEndpoint).replace(
|
|
6753
|
+
/\/+$/,
|
|
6754
|
+
""
|
|
6755
|
+
);
|
|
6733
6756
|
this.chainId = opts.chainId;
|
|
6734
6757
|
this.store = opts.persistSession === false ? null : opts.sessionStore ?? createDefaultSessionStore();
|
|
6735
6758
|
this.onSignaturePrompt = opts.onSignaturePrompt;
|
|
@@ -6829,6 +6852,53 @@ var ServerSession = class {
|
|
|
6829
6852
|
);
|
|
6830
6853
|
}
|
|
6831
6854
|
}
|
|
6855
|
+
/**
|
|
6856
|
+
* Adopt a login envelope signed ELSEWHERE and exchange it for a session now.
|
|
6857
|
+
*
|
|
6858
|
+
* The browser frontend collects one wallet signature and spends it at both the
|
|
6859
|
+
* api and this service, so the envelope is minted outside the SDK. Without this
|
|
6860
|
+
* seam the SDK would mint its own — a second wallet prompt, which for a
|
|
6861
|
+
* multi-sig Safe is another full propose-and-confirm ceremony across owners.
|
|
6862
|
+
*
|
|
6863
|
+
* Must be called PROMPTLY after signing. Each server pins the nonce on FIRST
|
|
6864
|
+
* use and requires that first use to be fresh (±120s EOA, ±600s contract
|
|
6865
|
+
* wallet); the stores are independent, so a late hand-off is rejected as
|
|
6866
|
+
* `stale_first_use` even though the other service already accepted it. After a
|
|
6867
|
+
* successful first use, silent re-mint covers the next 24h.
|
|
6868
|
+
*
|
|
6869
|
+
* No-ops the prompt path entirely: on success the session is cached and
|
|
6870
|
+
* persisted exactly as a self-minted login would be.
|
|
6871
|
+
*/
|
|
6872
|
+
adoptLoginPayload(payload) {
|
|
6873
|
+
const gen = this.generation;
|
|
6874
|
+
const notCleared = () => gen === this.generation;
|
|
6875
|
+
const attempt = (async () => {
|
|
6876
|
+
if (payload?.chainId !== this.chainId) {
|
|
6877
|
+
throw new Error(
|
|
6878
|
+
`ServerSession: cannot adopt a login for chain ${payload?.chainId} \u2014 this session is on ${this.chainId}`
|
|
6879
|
+
);
|
|
6880
|
+
}
|
|
6881
|
+
const payloadAddress = payload.message?.address?.toLowerCase();
|
|
6882
|
+
const signerAddress = (await this.signer.getAddress()).toLowerCase();
|
|
6883
|
+
if (!payloadAddress || payloadAddress !== signerAddress) {
|
|
6884
|
+
throw new Error(
|
|
6885
|
+
"ServerSession: cannot adopt a login signed by a different address"
|
|
6886
|
+
);
|
|
6887
|
+
}
|
|
6888
|
+
const session = await this.login(payload);
|
|
6889
|
+
if (notCleared()) {
|
|
6890
|
+
this.persist(payload, session);
|
|
6891
|
+
this.cached = session;
|
|
6892
|
+
this.promptBackoff = null;
|
|
6893
|
+
}
|
|
6894
|
+
return session;
|
|
6895
|
+
})();
|
|
6896
|
+
this.inFlight = attempt;
|
|
6897
|
+
return attempt.then(() => void 0).finally(() => {
|
|
6898
|
+
if (notCleared())
|
|
6899
|
+
this.inFlight = null;
|
|
6900
|
+
});
|
|
6901
|
+
}
|
|
6832
6902
|
/**
|
|
6833
6903
|
* Resolve a session WITHOUT ever prompting for a wallet signature: a live
|
|
6834
6904
|
* cached token, else the persisted JWT (adopted if still fresh, otherwise
|
|
@@ -6901,7 +6971,7 @@ var ServerSession = class {
|
|
|
6901
6971
|
const payload = await buildSignedLoginPayload(
|
|
6902
6972
|
this.signer,
|
|
6903
6973
|
this.chainId,
|
|
6904
|
-
this.
|
|
6974
|
+
this.loginAudience,
|
|
6905
6975
|
reuse
|
|
6906
6976
|
);
|
|
6907
6977
|
if (storeKey && !reuse) {
|
|
@@ -9369,7 +9439,14 @@ var LoanCreator = class {
|
|
|
9369
9439
|
if (!positionIdResult.success) {
|
|
9370
9440
|
return failure(positionIdResult.error);
|
|
9371
9441
|
}
|
|
9372
|
-
const
|
|
9442
|
+
const confirmedIdResult = await this.confirmPositionId(
|
|
9443
|
+
receipt,
|
|
9444
|
+
positionIdResult.value
|
|
9445
|
+
);
|
|
9446
|
+
if (!confirmedIdResult.success) {
|
|
9447
|
+
return failure(confirmedIdResult.error);
|
|
9448
|
+
}
|
|
9449
|
+
const positionId = confirmedIdResult.value;
|
|
9373
9450
|
const result = {
|
|
9374
9451
|
success: true,
|
|
9375
9452
|
transactionHash: receipt.hash,
|
|
@@ -9520,8 +9597,9 @@ var LoanCreator = class {
|
|
|
9520
9597
|
hash: tx.hash
|
|
9521
9598
|
});
|
|
9522
9599
|
}
|
|
9600
|
+
const confirmations = await this.createPositionConfirmations();
|
|
9523
9601
|
const receipt = await Promise.race([
|
|
9524
|
-
tx.wait(
|
|
9602
|
+
tx.wait(confirmations),
|
|
9525
9603
|
new Promise(
|
|
9526
9604
|
(_, reject) => setTimeout(
|
|
9527
9605
|
() => reject(new Error("Transaction confirmation timeout")),
|
|
@@ -9643,6 +9721,88 @@ var LoanCreator = class {
|
|
|
9643
9721
|
);
|
|
9644
9722
|
}
|
|
9645
9723
|
}
|
|
9724
|
+
/**
|
|
9725
|
+
* Confirmation depth to wait for before trusting `positionId` from a receipt.
|
|
9726
|
+
*
|
|
9727
|
+
* Deeper is safer but slower, so local chains (instant mining, no reorgs) stay at 1.
|
|
9728
|
+
* Override with `createPositionConfirmations` when a chain needs more.
|
|
9729
|
+
*/
|
|
9730
|
+
async createPositionConfirmations() {
|
|
9731
|
+
const configured = this.config.createPositionConfirmations;
|
|
9732
|
+
if (typeof configured === "number" && configured >= 1)
|
|
9733
|
+
return configured;
|
|
9734
|
+
try {
|
|
9735
|
+
const network = await this.config.contractManager.getProvider().getNetwork();
|
|
9736
|
+
const chainId = Number(network.chainId);
|
|
9737
|
+
if (chainId === 31337 || chainId === 1337)
|
|
9738
|
+
return 1;
|
|
9739
|
+
} catch {
|
|
9740
|
+
}
|
|
9741
|
+
return 3;
|
|
9742
|
+
}
|
|
9743
|
+
/**
|
|
9744
|
+
* Re-read the receipt after confirmations and re-derive `positionId`, so a reorg
|
|
9745
|
+
* cannot leave the caller holding an id that never survived to the canonical chain.
|
|
9746
|
+
*
|
|
9747
|
+
* Returns the authoritative id. If the re-read disagrees with what was first
|
|
9748
|
+
* extracted, the fresh value wins and the divergence is logged loudly — silently
|
|
9749
|
+
* returning a phantom id is how this surfaced as a `PositionNotFound()` hundreds of
|
|
9750
|
+
* lines downstream, long after the real cause.
|
|
9751
|
+
*/
|
|
9752
|
+
async confirmPositionId(receipt, extractedId) {
|
|
9753
|
+
let authoritativeId = extractedId;
|
|
9754
|
+
try {
|
|
9755
|
+
const provider = this.config.contractManager.getProvider();
|
|
9756
|
+
const fresh = await provider.getTransactionReceipt(receipt.hash);
|
|
9757
|
+
if (!fresh) {
|
|
9758
|
+
return failure(
|
|
9759
|
+
new SDKError({
|
|
9760
|
+
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.`,
|
|
9761
|
+
category: "CONTRACT" /* CONTRACT */,
|
|
9762
|
+
severity: "HIGH" /* HIGH */,
|
|
9763
|
+
originalError: new Error("Receipt vanished after confirmation")
|
|
9764
|
+
})
|
|
9765
|
+
);
|
|
9766
|
+
}
|
|
9767
|
+
const reExtracted = this.extractPositionId(
|
|
9768
|
+
fresh
|
|
9769
|
+
);
|
|
9770
|
+
if (reExtracted.success && reExtracted.value !== extractedId) {
|
|
9771
|
+
log.warn(
|
|
9772
|
+
"\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.",
|
|
9773
|
+
{ transactionHash: receipt.hash, before: extractedId, after: reExtracted.value }
|
|
9774
|
+
);
|
|
9775
|
+
authoritativeId = reExtracted.value;
|
|
9776
|
+
}
|
|
9777
|
+
} catch (e) {
|
|
9778
|
+
log.warn("Could not re-read loan creation receipt for confirmation", {
|
|
9779
|
+
error: e?.message ?? String(e)
|
|
9780
|
+
});
|
|
9781
|
+
}
|
|
9782
|
+
const coreAddress = this.config.contractManager.getContractAddresses().positionManagerCore;
|
|
9783
|
+
if (coreAddress) {
|
|
9784
|
+
try {
|
|
9785
|
+
const core = new import_ethers11.Contract(
|
|
9786
|
+
coreAddress,
|
|
9787
|
+
[
|
|
9788
|
+
"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))"
|
|
9789
|
+
],
|
|
9790
|
+
this.config.contractManager.getProvider()
|
|
9791
|
+
);
|
|
9792
|
+
await core.getFunction("getPositionDetails")(authoritativeId);
|
|
9793
|
+
} catch {
|
|
9794
|
+
return failure(
|
|
9795
|
+
new SDKError({
|
|
9796
|
+
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.`,
|
|
9797
|
+
category: "CONTRACT" /* CONTRACT */,
|
|
9798
|
+
severity: "HIGH" /* HIGH */,
|
|
9799
|
+
originalError: new Error("positionId not found on-chain after creation")
|
|
9800
|
+
})
|
|
9801
|
+
);
|
|
9802
|
+
}
|
|
9803
|
+
}
|
|
9804
|
+
return success(authoritativeId);
|
|
9805
|
+
}
|
|
9646
9806
|
/**
|
|
9647
9807
|
* Extract position ID from transaction receipt
|
|
9648
9808
|
*/
|
|
@@ -16056,180 +16216,1955 @@ var SimplePSMV2__factory = class extends import_ethers14.ContractFactory {
|
|
|
16056
16216
|
}
|
|
16057
16217
|
};
|
|
16058
16218
|
|
|
16059
|
-
// src/
|
|
16060
|
-
var
|
|
16061
|
-
|
|
16062
|
-
|
|
16063
|
-
|
|
16064
|
-
|
|
16065
|
-
|
|
16066
|
-
|
|
16067
|
-
|
|
16068
|
-
|
|
16069
|
-
|
|
16070
|
-
|
|
16071
|
-
|
|
16072
|
-
|
|
16073
|
-
|
|
16074
|
-
|
|
16075
|
-
|
|
16076
|
-
|
|
16077
|
-
|
|
16078
|
-
if (this.config.debug) {
|
|
16079
|
-
log.info("\u{1FA99} Minting mock BTC", {
|
|
16080
|
-
amount: amount.toString(),
|
|
16081
|
-
recipient
|
|
16082
|
-
});
|
|
16083
|
-
}
|
|
16084
|
-
if (this.isProductionNetwork()) {
|
|
16085
|
-
return failure(
|
|
16086
|
-
new SDKError({
|
|
16087
|
-
message: "Cannot mint mock tokens on production network",
|
|
16088
|
-
category: "CONFIGURATION" /* CONFIGURATION */,
|
|
16089
|
-
severity: "HIGH" /* HIGH */,
|
|
16090
|
-
originalError: new Error("Production network detected")
|
|
16091
|
-
})
|
|
16092
|
-
);
|
|
16093
|
-
}
|
|
16094
|
-
return tryCatchAsync(
|
|
16095
|
-
async () => {
|
|
16096
|
-
const signerResult = this.config.contractManager.getSigner();
|
|
16097
|
-
if (!signerResult.success) {
|
|
16098
|
-
throw signerResult.error;
|
|
16099
|
-
}
|
|
16100
|
-
throw new Error("Mock BTC contract not yet integrated");
|
|
16101
|
-
},
|
|
16102
|
-
(error) => new SDKError({
|
|
16103
|
-
message: "Failed to mint mock BTC",
|
|
16104
|
-
category: "CONTRACT" /* CONTRACT */,
|
|
16105
|
-
severity: "MEDIUM" /* MEDIUM */,
|
|
16106
|
-
originalError: error instanceof Error ? error : new Error(String(error)),
|
|
16107
|
-
context: { amount: amount.toString(), recipient }
|
|
16108
|
-
})
|
|
16109
|
-
);
|
|
16110
|
-
}
|
|
16111
|
-
/**
|
|
16112
|
-
* Approve mock BTC spending
|
|
16113
|
-
*
|
|
16114
|
-
* @param spender - Spender address
|
|
16115
|
-
* @param amount - Amount to approve in satoshis
|
|
16116
|
-
* @returns Transaction result
|
|
16117
|
-
*/
|
|
16118
|
-
async approveMockBTC(spender, amount) {
|
|
16119
|
-
if (this.config.debug) {
|
|
16120
|
-
log.info("\u2705 Approving mock BTC spending", {
|
|
16121
|
-
spender,
|
|
16122
|
-
amount: amount.toString()
|
|
16123
|
-
});
|
|
16124
|
-
}
|
|
16125
|
-
if (this.isProductionNetwork()) {
|
|
16126
|
-
return failure(
|
|
16127
|
-
new SDKError({
|
|
16128
|
-
message: "Cannot approve mock tokens on production network",
|
|
16129
|
-
category: "CONFIGURATION" /* CONFIGURATION */,
|
|
16130
|
-
severity: "HIGH" /* HIGH */,
|
|
16131
|
-
originalError: new Error("Production network detected")
|
|
16132
|
-
})
|
|
16133
|
-
);
|
|
16134
|
-
}
|
|
16135
|
-
return tryCatchAsync(
|
|
16136
|
-
async () => {
|
|
16137
|
-
const signerResult = this.config.contractManager.getSigner();
|
|
16138
|
-
if (!signerResult.success) {
|
|
16139
|
-
throw signerResult.error;
|
|
16140
|
-
}
|
|
16141
|
-
throw new Error("Mock BTC contract not yet integrated");
|
|
16142
|
-
},
|
|
16143
|
-
(error) => new SDKError({
|
|
16144
|
-
message: "Failed to approve mock BTC",
|
|
16145
|
-
category: "CONTRACT" /* CONTRACT */,
|
|
16146
|
-
severity: "MEDIUM" /* MEDIUM */,
|
|
16147
|
-
originalError: error instanceof Error ? error : new Error(String(error)),
|
|
16148
|
-
context: { spender, amount: amount.toString() }
|
|
16149
|
-
})
|
|
16150
|
-
);
|
|
16151
|
-
}
|
|
16152
|
-
/**
|
|
16153
|
-
* Get mock BTC balance
|
|
16154
|
-
*
|
|
16155
|
-
* @param address - Address to query
|
|
16156
|
-
* @returns Balance in satoshis
|
|
16157
|
-
*/
|
|
16158
|
-
async getMockBTCBalance(address) {
|
|
16159
|
-
if (this.config.debug) {
|
|
16160
|
-
log.info("\u{1F50D} Querying mock BTC balance", { address });
|
|
16161
|
-
}
|
|
16162
|
-
return tryCatchAsync(
|
|
16163
|
-
async () => {
|
|
16164
|
-
throw new Error("Mock BTC contract not yet integrated");
|
|
16219
|
+
// src/contracts/typechain-contracts/factories/src/agent/AgentDelegationRegistry__factory.ts
|
|
16220
|
+
var import_ethers15 = require("ethers");
|
|
16221
|
+
var _abi2 = [
|
|
16222
|
+
{
|
|
16223
|
+
inputs: [],
|
|
16224
|
+
stateMutability: "nonpayable",
|
|
16225
|
+
type: "constructor"
|
|
16226
|
+
},
|
|
16227
|
+
{
|
|
16228
|
+
inputs: [],
|
|
16229
|
+
name: "AccessControlBadConfirmation",
|
|
16230
|
+
type: "error"
|
|
16231
|
+
},
|
|
16232
|
+
{
|
|
16233
|
+
inputs: [
|
|
16234
|
+
{
|
|
16235
|
+
internalType: "address",
|
|
16236
|
+
name: "account",
|
|
16237
|
+
type: "address"
|
|
16165
16238
|
},
|
|
16166
|
-
|
|
16167
|
-
|
|
16168
|
-
|
|
16169
|
-
|
|
16170
|
-
|
|
16171
|
-
|
|
16172
|
-
|
|
16173
|
-
|
|
16174
|
-
}
|
|
16175
|
-
|
|
16176
|
-
|
|
16177
|
-
|
|
16178
|
-
|
|
16179
|
-
|
|
16180
|
-
|
|
16181
|
-
}
|
|
16182
|
-
|
|
16183
|
-
|
|
16184
|
-
|
|
16185
|
-
|
|
16186
|
-
|
|
16187
|
-
|
|
16188
|
-
|
|
16189
|
-
|
|
16190
|
-
|
|
16191
|
-
|
|
16192
|
-
|
|
16193
|
-
|
|
16194
|
-
|
|
16195
|
-
}
|
|
16196
|
-
|
|
16197
|
-
|
|
16198
|
-
|
|
16199
|
-
|
|
16200
|
-
|
|
16201
|
-
|
|
16202
|
-
|
|
16203
|
-
|
|
16204
|
-
|
|
16205
|
-
|
|
16206
|
-
|
|
16207
|
-
|
|
16208
|
-
|
|
16209
|
-
|
|
16210
|
-
|
|
16211
|
-
|
|
16212
|
-
}
|
|
16213
|
-
|
|
16214
|
-
|
|
16215
|
-
|
|
16216
|
-
|
|
16217
|
-
|
|
16218
|
-
|
|
16219
|
-
|
|
16220
|
-
|
|
16221
|
-
|
|
16222
|
-
|
|
16223
|
-
|
|
16224
|
-
|
|
16225
|
-
|
|
16226
|
-
|
|
16227
|
-
|
|
16228
|
-
|
|
16229
|
-
|
|
16230
|
-
|
|
16231
|
-
|
|
16232
|
-
|
|
16239
|
+
{
|
|
16240
|
+
internalType: "bytes32",
|
|
16241
|
+
name: "neededRole",
|
|
16242
|
+
type: "bytes32"
|
|
16243
|
+
}
|
|
16244
|
+
],
|
|
16245
|
+
name: "AccessControlUnauthorizedAccount",
|
|
16246
|
+
type: "error"
|
|
16247
|
+
},
|
|
16248
|
+
{
|
|
16249
|
+
inputs: [
|
|
16250
|
+
{
|
|
16251
|
+
internalType: "address",
|
|
16252
|
+
name: "target",
|
|
16253
|
+
type: "address"
|
|
16254
|
+
}
|
|
16255
|
+
],
|
|
16256
|
+
name: "AddressEmptyCode",
|
|
16257
|
+
type: "error"
|
|
16258
|
+
},
|
|
16259
|
+
{
|
|
16260
|
+
inputs: [],
|
|
16261
|
+
name: "AgentAddressReused",
|
|
16262
|
+
type: "error"
|
|
16263
|
+
},
|
|
16264
|
+
{
|
|
16265
|
+
inputs: [],
|
|
16266
|
+
name: "AgentIsActiveUseRotate",
|
|
16267
|
+
type: "error"
|
|
16268
|
+
},
|
|
16269
|
+
{
|
|
16270
|
+
inputs: [],
|
|
16271
|
+
name: "AgentNotActive",
|
|
16272
|
+
type: "error"
|
|
16273
|
+
},
|
|
16274
|
+
{
|
|
16275
|
+
inputs: [],
|
|
16276
|
+
name: "CannotUpgradeToSelf",
|
|
16277
|
+
type: "error"
|
|
16278
|
+
},
|
|
16279
|
+
{
|
|
16280
|
+
inputs: [
|
|
16281
|
+
{
|
|
16282
|
+
internalType: "address",
|
|
16283
|
+
name: "implementation",
|
|
16284
|
+
type: "address"
|
|
16285
|
+
}
|
|
16286
|
+
],
|
|
16287
|
+
name: "ERC1967InvalidImplementation",
|
|
16288
|
+
type: "error"
|
|
16289
|
+
},
|
|
16290
|
+
{
|
|
16291
|
+
inputs: [],
|
|
16292
|
+
name: "ERC1967NonPayable",
|
|
16293
|
+
type: "error"
|
|
16294
|
+
},
|
|
16295
|
+
{
|
|
16296
|
+
inputs: [],
|
|
16297
|
+
name: "EnforcedPause",
|
|
16298
|
+
type: "error"
|
|
16299
|
+
},
|
|
16300
|
+
{
|
|
16301
|
+
inputs: [],
|
|
16302
|
+
name: "ExceedsMaxTtl",
|
|
16303
|
+
type: "error"
|
|
16304
|
+
},
|
|
16305
|
+
{
|
|
16306
|
+
inputs: [],
|
|
16307
|
+
name: "ExpectedPause",
|
|
16308
|
+
type: "error"
|
|
16309
|
+
},
|
|
16310
|
+
{
|
|
16311
|
+
inputs: [],
|
|
16312
|
+
name: "FailedCall",
|
|
16313
|
+
type: "error"
|
|
16314
|
+
},
|
|
16315
|
+
{
|
|
16316
|
+
inputs: [],
|
|
16317
|
+
name: "FloorBelowProtocolMin",
|
|
16318
|
+
type: "error"
|
|
16319
|
+
},
|
|
16320
|
+
{
|
|
16321
|
+
inputs: [],
|
|
16322
|
+
name: "ImplementationNotDeployed",
|
|
16323
|
+
type: "error"
|
|
16324
|
+
},
|
|
16325
|
+
{
|
|
16326
|
+
inputs: [],
|
|
16327
|
+
name: "InvalidAddress",
|
|
16328
|
+
type: "error"
|
|
16329
|
+
},
|
|
16330
|
+
{
|
|
16331
|
+
inputs: [],
|
|
16332
|
+
name: "InvalidFloor",
|
|
16333
|
+
type: "error"
|
|
16334
|
+
},
|
|
16335
|
+
{
|
|
16336
|
+
inputs: [],
|
|
16337
|
+
name: "InvalidInitialization",
|
|
16338
|
+
type: "error"
|
|
16339
|
+
},
|
|
16340
|
+
{
|
|
16341
|
+
inputs: [],
|
|
16342
|
+
name: "InvalidPositionId",
|
|
16343
|
+
type: "error"
|
|
16344
|
+
},
|
|
16345
|
+
{
|
|
16346
|
+
inputs: [],
|
|
16347
|
+
name: "NoActiveAgent",
|
|
16348
|
+
type: "error"
|
|
16349
|
+
},
|
|
16350
|
+
{
|
|
16351
|
+
inputs: [],
|
|
16352
|
+
name: "NotAdminModule",
|
|
16353
|
+
type: "error"
|
|
16354
|
+
},
|
|
16355
|
+
{
|
|
16356
|
+
inputs: [],
|
|
16357
|
+
name: "NotAuthorizedConsumer",
|
|
16358
|
+
type: "error"
|
|
16359
|
+
},
|
|
16360
|
+
{
|
|
16361
|
+
inputs: [],
|
|
16362
|
+
name: "NotBorrowerOrRegistrar",
|
|
16363
|
+
type: "error"
|
|
16364
|
+
},
|
|
16365
|
+
{
|
|
16366
|
+
inputs: [],
|
|
16367
|
+
name: "NotContract",
|
|
16368
|
+
type: "error"
|
|
16369
|
+
},
|
|
16370
|
+
{
|
|
16371
|
+
inputs: [],
|
|
16372
|
+
name: "NotInitializing",
|
|
16373
|
+
type: "error"
|
|
16374
|
+
},
|
|
16375
|
+
{
|
|
16376
|
+
inputs: [],
|
|
16377
|
+
name: "NotUserOrRegistrar",
|
|
16378
|
+
type: "error"
|
|
16379
|
+
},
|
|
16380
|
+
{
|
|
16381
|
+
inputs: [],
|
|
16382
|
+
name: "PositionNotActive",
|
|
16383
|
+
type: "error"
|
|
16384
|
+
},
|
|
16385
|
+
{
|
|
16386
|
+
inputs: [],
|
|
16387
|
+
name: "PositionNotDelegable",
|
|
16388
|
+
type: "error"
|
|
16389
|
+
},
|
|
16390
|
+
{
|
|
16391
|
+
inputs: [],
|
|
16392
|
+
name: "RenewalCapReached",
|
|
16393
|
+
type: "error"
|
|
16394
|
+
},
|
|
16395
|
+
{
|
|
16396
|
+
inputs: [],
|
|
16397
|
+
name: "ScopeNotGranted",
|
|
16398
|
+
type: "error"
|
|
16399
|
+
},
|
|
16400
|
+
{
|
|
16401
|
+
inputs: [],
|
|
16402
|
+
name: "UUPSUnauthorizedCallContext",
|
|
16403
|
+
type: "error"
|
|
16404
|
+
},
|
|
16405
|
+
{
|
|
16406
|
+
inputs: [
|
|
16407
|
+
{
|
|
16408
|
+
internalType: "bytes32",
|
|
16409
|
+
name: "slot",
|
|
16410
|
+
type: "bytes32"
|
|
16411
|
+
}
|
|
16412
|
+
],
|
|
16413
|
+
name: "UUPSUnsupportedProxiableUUID",
|
|
16414
|
+
type: "error"
|
|
16415
|
+
},
|
|
16416
|
+
{
|
|
16417
|
+
inputs: [],
|
|
16418
|
+
name: "UnauthorizedUnpause",
|
|
16419
|
+
type: "error"
|
|
16420
|
+
},
|
|
16421
|
+
{
|
|
16422
|
+
inputs: [],
|
|
16423
|
+
name: "UnexpectedRoleGrantFailure",
|
|
16424
|
+
type: "error"
|
|
16425
|
+
},
|
|
16426
|
+
{
|
|
16427
|
+
inputs: [],
|
|
16428
|
+
name: "ValidUntilInPast",
|
|
16429
|
+
type: "error"
|
|
16430
|
+
},
|
|
16431
|
+
{
|
|
16432
|
+
anonymous: false,
|
|
16433
|
+
inputs: [
|
|
16434
|
+
{
|
|
16435
|
+
indexed: true,
|
|
16436
|
+
internalType: "address",
|
|
16437
|
+
name: "oldAdminModule",
|
|
16438
|
+
type: "address"
|
|
16439
|
+
},
|
|
16440
|
+
{
|
|
16441
|
+
indexed: true,
|
|
16442
|
+
internalType: "address",
|
|
16443
|
+
name: "newAdminModule",
|
|
16444
|
+
type: "address"
|
|
16445
|
+
}
|
|
16446
|
+
],
|
|
16447
|
+
name: "AdminModuleUpdated",
|
|
16448
|
+
type: "event"
|
|
16449
|
+
},
|
|
16450
|
+
{
|
|
16451
|
+
anonymous: false,
|
|
16452
|
+
inputs: [
|
|
16453
|
+
{
|
|
16454
|
+
indexed: false,
|
|
16455
|
+
internalType: "uint32",
|
|
16456
|
+
name: "oldBps",
|
|
16457
|
+
type: "uint32"
|
|
16458
|
+
},
|
|
16459
|
+
{
|
|
16460
|
+
indexed: false,
|
|
16461
|
+
internalType: "uint32",
|
|
16462
|
+
name: "newBps",
|
|
16463
|
+
type: "uint32"
|
|
16464
|
+
}
|
|
16465
|
+
],
|
|
16466
|
+
name: "AgentMintFloorMinUpdated",
|
|
16467
|
+
type: "event"
|
|
16468
|
+
},
|
|
16469
|
+
{
|
|
16470
|
+
anonymous: false,
|
|
16471
|
+
inputs: [
|
|
16472
|
+
{
|
|
16473
|
+
indexed: true,
|
|
16474
|
+
internalType: "address",
|
|
16475
|
+
name: "user",
|
|
16476
|
+
type: "address"
|
|
16477
|
+
},
|
|
16478
|
+
{
|
|
16479
|
+
indexed: true,
|
|
16480
|
+
internalType: "address",
|
|
16481
|
+
name: "agent",
|
|
16482
|
+
type: "address"
|
|
16483
|
+
},
|
|
16484
|
+
{
|
|
16485
|
+
indexed: false,
|
|
16486
|
+
internalType: "uint64",
|
|
16487
|
+
name: "validUntil",
|
|
16488
|
+
type: "uint64"
|
|
16489
|
+
}
|
|
16490
|
+
],
|
|
16491
|
+
name: "AgentRegistered",
|
|
16492
|
+
type: "event"
|
|
16493
|
+
},
|
|
16494
|
+
{
|
|
16495
|
+
anonymous: false,
|
|
16496
|
+
inputs: [
|
|
16497
|
+
{
|
|
16498
|
+
indexed: true,
|
|
16499
|
+
internalType: "address",
|
|
16500
|
+
name: "user",
|
|
16501
|
+
type: "address"
|
|
16502
|
+
},
|
|
16503
|
+
{
|
|
16504
|
+
indexed: true,
|
|
16505
|
+
internalType: "address",
|
|
16506
|
+
name: "agent",
|
|
16507
|
+
type: "address"
|
|
16508
|
+
},
|
|
16509
|
+
{
|
|
16510
|
+
indexed: false,
|
|
16511
|
+
internalType: "bytes32",
|
|
16512
|
+
name: "reason",
|
|
16513
|
+
type: "bytes32"
|
|
16514
|
+
}
|
|
16515
|
+
],
|
|
16516
|
+
name: "AgentRevoked",
|
|
16517
|
+
type: "event"
|
|
16518
|
+
},
|
|
16519
|
+
{
|
|
16520
|
+
anonymous: false,
|
|
16521
|
+
inputs: [
|
|
16522
|
+
{
|
|
16523
|
+
indexed: true,
|
|
16524
|
+
internalType: "address",
|
|
16525
|
+
name: "user",
|
|
16526
|
+
type: "address"
|
|
16527
|
+
},
|
|
16528
|
+
{
|
|
16529
|
+
indexed: true,
|
|
16530
|
+
internalType: "address",
|
|
16531
|
+
name: "oldAgent",
|
|
16532
|
+
type: "address"
|
|
16533
|
+
},
|
|
16534
|
+
{
|
|
16535
|
+
indexed: true,
|
|
16536
|
+
internalType: "address",
|
|
16537
|
+
name: "newAgent",
|
|
16538
|
+
type: "address"
|
|
16539
|
+
},
|
|
16540
|
+
{
|
|
16541
|
+
indexed: false,
|
|
16542
|
+
internalType: "uint64",
|
|
16543
|
+
name: "validUntil",
|
|
16544
|
+
type: "uint64"
|
|
16545
|
+
}
|
|
16546
|
+
],
|
|
16547
|
+
name: "AgentRotated",
|
|
16548
|
+
type: "event"
|
|
16549
|
+
},
|
|
16550
|
+
{
|
|
16551
|
+
anonymous: false,
|
|
16552
|
+
inputs: [
|
|
16553
|
+
{
|
|
16554
|
+
indexed: true,
|
|
16555
|
+
internalType: "address",
|
|
16556
|
+
name: "previous",
|
|
16557
|
+
type: "address"
|
|
16558
|
+
},
|
|
16559
|
+
{
|
|
16560
|
+
indexed: true,
|
|
16561
|
+
internalType: "address",
|
|
16562
|
+
name: "next",
|
|
16563
|
+
type: "address"
|
|
16564
|
+
}
|
|
16565
|
+
],
|
|
16566
|
+
name: "AuthorizedConsumerUpdated",
|
|
16567
|
+
type: "event"
|
|
16568
|
+
},
|
|
16569
|
+
{
|
|
16570
|
+
anonymous: false,
|
|
16571
|
+
inputs: [
|
|
16572
|
+
{
|
|
16573
|
+
indexed: true,
|
|
16574
|
+
internalType: "bytes32",
|
|
16575
|
+
name: "positionId",
|
|
16576
|
+
type: "bytes32"
|
|
16577
|
+
},
|
|
16578
|
+
{
|
|
16579
|
+
indexed: true,
|
|
16580
|
+
internalType: "address",
|
|
16581
|
+
name: "borrower",
|
|
16582
|
+
type: "address"
|
|
16583
|
+
}
|
|
16584
|
+
],
|
|
16585
|
+
name: "AutoMintDisabled",
|
|
16586
|
+
type: "event"
|
|
16587
|
+
},
|
|
16588
|
+
{
|
|
16589
|
+
anonymous: false,
|
|
16590
|
+
inputs: [
|
|
16591
|
+
{
|
|
16592
|
+
indexed: true,
|
|
16593
|
+
internalType: "bytes32",
|
|
16594
|
+
name: "positionId",
|
|
16595
|
+
type: "bytes32"
|
|
16596
|
+
},
|
|
16597
|
+
{
|
|
16598
|
+
indexed: true,
|
|
16599
|
+
internalType: "address",
|
|
16600
|
+
name: "borrower",
|
|
16601
|
+
type: "address"
|
|
16602
|
+
},
|
|
16603
|
+
{
|
|
16604
|
+
indexed: false,
|
|
16605
|
+
internalType: "uint32",
|
|
16606
|
+
name: "minCollateralRatioBps",
|
|
16607
|
+
type: "uint32"
|
|
16608
|
+
}
|
|
16609
|
+
],
|
|
16610
|
+
name: "AutoMintEnabled",
|
|
16611
|
+
type: "event"
|
|
16612
|
+
},
|
|
16613
|
+
{
|
|
16614
|
+
anonymous: false,
|
|
16615
|
+
inputs: [
|
|
16616
|
+
{
|
|
16617
|
+
indexed: true,
|
|
16618
|
+
internalType: "bytes32",
|
|
16619
|
+
name: "positionId",
|
|
16620
|
+
type: "bytes32"
|
|
16621
|
+
},
|
|
16622
|
+
{
|
|
16623
|
+
indexed: true,
|
|
16624
|
+
internalType: "address",
|
|
16625
|
+
name: "borrower",
|
|
16626
|
+
type: "address"
|
|
16627
|
+
}
|
|
16628
|
+
],
|
|
16629
|
+
name: "AutoRenewDisabled",
|
|
16630
|
+
type: "event"
|
|
16631
|
+
},
|
|
16632
|
+
{
|
|
16633
|
+
anonymous: false,
|
|
16634
|
+
inputs: [
|
|
16635
|
+
{
|
|
16636
|
+
indexed: true,
|
|
16637
|
+
internalType: "bytes32",
|
|
16638
|
+
name: "positionId",
|
|
16639
|
+
type: "bytes32"
|
|
16640
|
+
},
|
|
16641
|
+
{
|
|
16642
|
+
indexed: true,
|
|
16643
|
+
internalType: "address",
|
|
16644
|
+
name: "borrower",
|
|
16645
|
+
type: "address"
|
|
16646
|
+
},
|
|
16647
|
+
{
|
|
16648
|
+
indexed: false,
|
|
16649
|
+
internalType: "uint32",
|
|
16650
|
+
name: "maxRenewals",
|
|
16651
|
+
type: "uint32"
|
|
16652
|
+
},
|
|
16653
|
+
{
|
|
16654
|
+
indexed: false,
|
|
16655
|
+
internalType: "uint40",
|
|
16656
|
+
name: "maxEndTimestamp",
|
|
16657
|
+
type: "uint40"
|
|
16658
|
+
}
|
|
16659
|
+
],
|
|
16660
|
+
name: "AutoRenewEnabled",
|
|
16661
|
+
type: "event"
|
|
16662
|
+
},
|
|
16663
|
+
{
|
|
16664
|
+
anonymous: false,
|
|
16665
|
+
inputs: [
|
|
16666
|
+
{
|
|
16667
|
+
indexed: true,
|
|
16668
|
+
internalType: "bytes32",
|
|
16669
|
+
name: "positionId",
|
|
16670
|
+
type: "bytes32"
|
|
16671
|
+
},
|
|
16672
|
+
{
|
|
16673
|
+
indexed: true,
|
|
16674
|
+
internalType: "address",
|
|
16675
|
+
name: "borrower",
|
|
16676
|
+
type: "address"
|
|
16677
|
+
}
|
|
16678
|
+
],
|
|
16679
|
+
name: "AutoRepayDisabled",
|
|
16680
|
+
type: "event"
|
|
16681
|
+
},
|
|
16682
|
+
{
|
|
16683
|
+
anonymous: false,
|
|
16684
|
+
inputs: [
|
|
16685
|
+
{
|
|
16686
|
+
indexed: true,
|
|
16687
|
+
internalType: "bytes32",
|
|
16688
|
+
name: "positionId",
|
|
16689
|
+
type: "bytes32"
|
|
16690
|
+
},
|
|
16691
|
+
{
|
|
16692
|
+
indexed: true,
|
|
16693
|
+
internalType: "address",
|
|
16694
|
+
name: "borrower",
|
|
16695
|
+
type: "address"
|
|
16696
|
+
}
|
|
16697
|
+
],
|
|
16698
|
+
name: "AutoRepayEnabled",
|
|
16699
|
+
type: "event"
|
|
16700
|
+
},
|
|
16701
|
+
{
|
|
16702
|
+
anonymous: false,
|
|
16703
|
+
inputs: [
|
|
16704
|
+
{
|
|
16705
|
+
indexed: true,
|
|
16706
|
+
internalType: "address",
|
|
16707
|
+
name: "caller",
|
|
16708
|
+
type: "address"
|
|
16709
|
+
},
|
|
16710
|
+
{
|
|
16711
|
+
indexed: false,
|
|
16712
|
+
internalType: "uint256",
|
|
16713
|
+
name: "timestamp",
|
|
16714
|
+
type: "uint256"
|
|
16715
|
+
}
|
|
16716
|
+
],
|
|
16717
|
+
name: "ContractPaused",
|
|
16718
|
+
type: "event"
|
|
16719
|
+
},
|
|
16720
|
+
{
|
|
16721
|
+
anonymous: false,
|
|
16722
|
+
inputs: [
|
|
16723
|
+
{
|
|
16724
|
+
indexed: true,
|
|
16725
|
+
internalType: "address",
|
|
16726
|
+
name: "caller",
|
|
16727
|
+
type: "address"
|
|
16728
|
+
},
|
|
16729
|
+
{
|
|
16730
|
+
indexed: false,
|
|
16731
|
+
internalType: "uint256",
|
|
16732
|
+
name: "timestamp",
|
|
16733
|
+
type: "uint256"
|
|
16734
|
+
}
|
|
16735
|
+
],
|
|
16736
|
+
name: "ContractUnpaused",
|
|
16737
|
+
type: "event"
|
|
16738
|
+
},
|
|
16739
|
+
{
|
|
16740
|
+
anonymous: false,
|
|
16741
|
+
inputs: [
|
|
16742
|
+
{
|
|
16743
|
+
indexed: true,
|
|
16744
|
+
internalType: "address",
|
|
16745
|
+
name: "oldImplementation",
|
|
16746
|
+
type: "address"
|
|
16747
|
+
},
|
|
16748
|
+
{
|
|
16749
|
+
indexed: true,
|
|
16750
|
+
internalType: "address",
|
|
16751
|
+
name: "newImplementation",
|
|
16752
|
+
type: "address"
|
|
16753
|
+
},
|
|
16754
|
+
{
|
|
16755
|
+
indexed: false,
|
|
16756
|
+
internalType: "string",
|
|
16757
|
+
name: "version",
|
|
16758
|
+
type: "string"
|
|
16759
|
+
},
|
|
16760
|
+
{
|
|
16761
|
+
indexed: false,
|
|
16762
|
+
internalType: "uint256",
|
|
16763
|
+
name: "timestamp",
|
|
16764
|
+
type: "uint256"
|
|
16765
|
+
}
|
|
16766
|
+
],
|
|
16767
|
+
name: "ContractUpgraded",
|
|
16768
|
+
type: "event"
|
|
16769
|
+
},
|
|
16770
|
+
{
|
|
16771
|
+
anonymous: false,
|
|
16772
|
+
inputs: [
|
|
16773
|
+
{
|
|
16774
|
+
indexed: false,
|
|
16775
|
+
internalType: "uint64",
|
|
16776
|
+
name: "version",
|
|
16777
|
+
type: "uint64"
|
|
16778
|
+
}
|
|
16779
|
+
],
|
|
16780
|
+
name: "Initialized",
|
|
16781
|
+
type: "event"
|
|
16782
|
+
},
|
|
16783
|
+
{
|
|
16784
|
+
anonymous: false,
|
|
16785
|
+
inputs: [
|
|
16786
|
+
{
|
|
16787
|
+
indexed: false,
|
|
16788
|
+
internalType: "uint64",
|
|
16789
|
+
name: "oldTtl",
|
|
16790
|
+
type: "uint64"
|
|
16791
|
+
},
|
|
16792
|
+
{
|
|
16793
|
+
indexed: false,
|
|
16794
|
+
internalType: "uint64",
|
|
16795
|
+
name: "newTtl",
|
|
16796
|
+
type: "uint64"
|
|
16797
|
+
}
|
|
16798
|
+
],
|
|
16799
|
+
name: "MaxAgentTtlUpdated",
|
|
16800
|
+
type: "event"
|
|
16801
|
+
},
|
|
16802
|
+
{
|
|
16803
|
+
anonymous: false,
|
|
16804
|
+
inputs: [
|
|
16805
|
+
{
|
|
16806
|
+
indexed: true,
|
|
16807
|
+
internalType: "bytes32",
|
|
16808
|
+
name: "positionId",
|
|
16809
|
+
type: "bytes32"
|
|
16810
|
+
},
|
|
16811
|
+
{
|
|
16812
|
+
indexed: false,
|
|
16813
|
+
internalType: "uint32",
|
|
16814
|
+
name: "oldFloorBps",
|
|
16815
|
+
type: "uint32"
|
|
16816
|
+
},
|
|
16817
|
+
{
|
|
16818
|
+
indexed: false,
|
|
16819
|
+
internalType: "uint32",
|
|
16820
|
+
name: "newFloorBps",
|
|
16821
|
+
type: "uint32"
|
|
16822
|
+
}
|
|
16823
|
+
],
|
|
16824
|
+
name: "MintCollateralFloorUpdated",
|
|
16825
|
+
type: "event"
|
|
16826
|
+
},
|
|
16827
|
+
{
|
|
16828
|
+
anonymous: false,
|
|
16829
|
+
inputs: [
|
|
16830
|
+
{
|
|
16831
|
+
indexed: false,
|
|
16832
|
+
internalType: "address",
|
|
16833
|
+
name: "account",
|
|
16834
|
+
type: "address"
|
|
16835
|
+
}
|
|
16836
|
+
],
|
|
16837
|
+
name: "Paused",
|
|
16838
|
+
type: "event"
|
|
16839
|
+
},
|
|
16840
|
+
{
|
|
16841
|
+
anonymous: false,
|
|
16842
|
+
inputs: [
|
|
16843
|
+
{
|
|
16844
|
+
indexed: true,
|
|
16845
|
+
internalType: "bytes32",
|
|
16846
|
+
name: "positionId",
|
|
16847
|
+
type: "bytes32"
|
|
16848
|
+
},
|
|
16849
|
+
{
|
|
16850
|
+
indexed: false,
|
|
16851
|
+
internalType: "uint32",
|
|
16852
|
+
name: "renewalsUsed",
|
|
16853
|
+
type: "uint32"
|
|
16854
|
+
}
|
|
16855
|
+
],
|
|
16856
|
+
name: "RenewalRecorded",
|
|
16857
|
+
type: "event"
|
|
16858
|
+
},
|
|
16859
|
+
{
|
|
16860
|
+
anonymous: false,
|
|
16861
|
+
inputs: [
|
|
16862
|
+
{
|
|
16863
|
+
indexed: true,
|
|
16864
|
+
internalType: "bytes32",
|
|
16865
|
+
name: "role",
|
|
16866
|
+
type: "bytes32"
|
|
16867
|
+
},
|
|
16868
|
+
{
|
|
16869
|
+
indexed: true,
|
|
16870
|
+
internalType: "bytes32",
|
|
16871
|
+
name: "previousAdminRole",
|
|
16872
|
+
type: "bytes32"
|
|
16873
|
+
},
|
|
16874
|
+
{
|
|
16875
|
+
indexed: true,
|
|
16876
|
+
internalType: "bytes32",
|
|
16877
|
+
name: "newAdminRole",
|
|
16878
|
+
type: "bytes32"
|
|
16879
|
+
}
|
|
16880
|
+
],
|
|
16881
|
+
name: "RoleAdminChanged",
|
|
16882
|
+
type: "event"
|
|
16883
|
+
},
|
|
16884
|
+
{
|
|
16885
|
+
anonymous: false,
|
|
16886
|
+
inputs: [
|
|
16887
|
+
{
|
|
16888
|
+
indexed: true,
|
|
16889
|
+
internalType: "bytes32",
|
|
16890
|
+
name: "role",
|
|
16891
|
+
type: "bytes32"
|
|
16892
|
+
},
|
|
16893
|
+
{
|
|
16894
|
+
indexed: true,
|
|
16895
|
+
internalType: "address",
|
|
16896
|
+
name: "account",
|
|
16897
|
+
type: "address"
|
|
16898
|
+
},
|
|
16899
|
+
{
|
|
16900
|
+
indexed: true,
|
|
16901
|
+
internalType: "address",
|
|
16902
|
+
name: "sender",
|
|
16903
|
+
type: "address"
|
|
16904
|
+
}
|
|
16905
|
+
],
|
|
16906
|
+
name: "RoleGranted",
|
|
16907
|
+
type: "event"
|
|
16908
|
+
},
|
|
16909
|
+
{
|
|
16910
|
+
anonymous: false,
|
|
16911
|
+
inputs: [
|
|
16912
|
+
{
|
|
16913
|
+
indexed: true,
|
|
16914
|
+
internalType: "bytes32",
|
|
16915
|
+
name: "role",
|
|
16916
|
+
type: "bytes32"
|
|
16917
|
+
},
|
|
16918
|
+
{
|
|
16919
|
+
indexed: true,
|
|
16920
|
+
internalType: "address",
|
|
16921
|
+
name: "account",
|
|
16922
|
+
type: "address"
|
|
16923
|
+
},
|
|
16924
|
+
{
|
|
16925
|
+
indexed: true,
|
|
16926
|
+
internalType: "address",
|
|
16927
|
+
name: "sender",
|
|
16928
|
+
type: "address"
|
|
16929
|
+
}
|
|
16930
|
+
],
|
|
16931
|
+
name: "RoleRevoked",
|
|
16932
|
+
type: "event"
|
|
16933
|
+
},
|
|
16934
|
+
{
|
|
16935
|
+
anonymous: false,
|
|
16936
|
+
inputs: [
|
|
16937
|
+
{
|
|
16938
|
+
indexed: false,
|
|
16939
|
+
internalType: "address",
|
|
16940
|
+
name: "account",
|
|
16941
|
+
type: "address"
|
|
16942
|
+
}
|
|
16943
|
+
],
|
|
16944
|
+
name: "Unpaused",
|
|
16945
|
+
type: "event"
|
|
16946
|
+
},
|
|
16947
|
+
{
|
|
16948
|
+
anonymous: false,
|
|
16949
|
+
inputs: [
|
|
16950
|
+
{
|
|
16951
|
+
indexed: true,
|
|
16952
|
+
internalType: "address",
|
|
16953
|
+
name: "implementation",
|
|
16954
|
+
type: "address"
|
|
16955
|
+
}
|
|
16956
|
+
],
|
|
16957
|
+
name: "Upgraded",
|
|
16958
|
+
type: "event"
|
|
16959
|
+
},
|
|
16960
|
+
{
|
|
16961
|
+
inputs: [],
|
|
16962
|
+
name: "DEFAULT_ADMIN_ROLE",
|
|
16963
|
+
outputs: [
|
|
16964
|
+
{
|
|
16965
|
+
internalType: "bytes32",
|
|
16966
|
+
name: "",
|
|
16967
|
+
type: "bytes32"
|
|
16968
|
+
}
|
|
16969
|
+
],
|
|
16970
|
+
stateMutability: "view",
|
|
16971
|
+
type: "function"
|
|
16972
|
+
},
|
|
16973
|
+
{
|
|
16974
|
+
inputs: [],
|
|
16975
|
+
name: "EMERGENCY_PAUSE_ROLE",
|
|
16976
|
+
outputs: [
|
|
16977
|
+
{
|
|
16978
|
+
internalType: "bytes32",
|
|
16979
|
+
name: "",
|
|
16980
|
+
type: "bytes32"
|
|
16981
|
+
}
|
|
16982
|
+
],
|
|
16983
|
+
stateMutability: "view",
|
|
16984
|
+
type: "function"
|
|
16985
|
+
},
|
|
16986
|
+
{
|
|
16987
|
+
inputs: [],
|
|
16988
|
+
name: "REGISTRAR_ROLE",
|
|
16989
|
+
outputs: [
|
|
16990
|
+
{
|
|
16991
|
+
internalType: "bytes32",
|
|
16992
|
+
name: "",
|
|
16993
|
+
type: "bytes32"
|
|
16994
|
+
}
|
|
16995
|
+
],
|
|
16996
|
+
stateMutability: "view",
|
|
16997
|
+
type: "function"
|
|
16998
|
+
},
|
|
16999
|
+
{
|
|
17000
|
+
inputs: [],
|
|
17001
|
+
name: "SCOPE_MINT",
|
|
17002
|
+
outputs: [
|
|
17003
|
+
{
|
|
17004
|
+
internalType: "uint32",
|
|
17005
|
+
name: "",
|
|
17006
|
+
type: "uint32"
|
|
17007
|
+
}
|
|
17008
|
+
],
|
|
17009
|
+
stateMutability: "view",
|
|
17010
|
+
type: "function"
|
|
17011
|
+
},
|
|
17012
|
+
{
|
|
17013
|
+
inputs: [],
|
|
17014
|
+
name: "SCOPE_RENEW",
|
|
17015
|
+
outputs: [
|
|
17016
|
+
{
|
|
17017
|
+
internalType: "uint32",
|
|
17018
|
+
name: "",
|
|
17019
|
+
type: "uint32"
|
|
17020
|
+
}
|
|
17021
|
+
],
|
|
17022
|
+
stateMutability: "view",
|
|
17023
|
+
type: "function"
|
|
17024
|
+
},
|
|
17025
|
+
{
|
|
17026
|
+
inputs: [],
|
|
17027
|
+
name: "SCOPE_REPAY",
|
|
17028
|
+
outputs: [
|
|
17029
|
+
{
|
|
17030
|
+
internalType: "uint32",
|
|
17031
|
+
name: "",
|
|
17032
|
+
type: "uint32"
|
|
17033
|
+
}
|
|
17034
|
+
],
|
|
17035
|
+
stateMutability: "view",
|
|
17036
|
+
type: "function"
|
|
17037
|
+
},
|
|
17038
|
+
{
|
|
17039
|
+
inputs: [],
|
|
17040
|
+
name: "UPGRADE_INTERFACE_VERSION",
|
|
17041
|
+
outputs: [
|
|
17042
|
+
{
|
|
17043
|
+
internalType: "string",
|
|
17044
|
+
name: "",
|
|
17045
|
+
type: "string"
|
|
17046
|
+
}
|
|
17047
|
+
],
|
|
17048
|
+
stateMutability: "view",
|
|
17049
|
+
type: "function"
|
|
17050
|
+
},
|
|
17051
|
+
{
|
|
17052
|
+
inputs: [],
|
|
17053
|
+
name: "VERSION",
|
|
17054
|
+
outputs: [
|
|
17055
|
+
{
|
|
17056
|
+
internalType: "string",
|
|
17057
|
+
name: "",
|
|
17058
|
+
type: "string"
|
|
17059
|
+
}
|
|
17060
|
+
],
|
|
17061
|
+
stateMutability: "view",
|
|
17062
|
+
type: "function"
|
|
17063
|
+
},
|
|
17064
|
+
{
|
|
17065
|
+
inputs: [],
|
|
17066
|
+
name: "adminModule",
|
|
17067
|
+
outputs: [
|
|
17068
|
+
{
|
|
17069
|
+
internalType: "address",
|
|
17070
|
+
name: "",
|
|
17071
|
+
type: "address"
|
|
17072
|
+
}
|
|
17073
|
+
],
|
|
17074
|
+
stateMutability: "view",
|
|
17075
|
+
type: "function"
|
|
17076
|
+
},
|
|
17077
|
+
{
|
|
17078
|
+
inputs: [],
|
|
17079
|
+
name: "agentMintFloorMinBps",
|
|
17080
|
+
outputs: [
|
|
17081
|
+
{
|
|
17082
|
+
internalType: "uint32",
|
|
17083
|
+
name: "",
|
|
17084
|
+
type: "uint32"
|
|
17085
|
+
}
|
|
17086
|
+
],
|
|
17087
|
+
stateMutability: "view",
|
|
17088
|
+
type: "function"
|
|
17089
|
+
},
|
|
17090
|
+
{
|
|
17091
|
+
inputs: [
|
|
17092
|
+
{
|
|
17093
|
+
internalType: "address",
|
|
17094
|
+
name: "user",
|
|
17095
|
+
type: "address"
|
|
17096
|
+
}
|
|
17097
|
+
],
|
|
17098
|
+
name: "agentOf",
|
|
17099
|
+
outputs: [
|
|
17100
|
+
{
|
|
17101
|
+
components: [
|
|
17102
|
+
{
|
|
17103
|
+
internalType: "address",
|
|
17104
|
+
name: "agent",
|
|
17105
|
+
type: "address"
|
|
17106
|
+
},
|
|
17107
|
+
{
|
|
17108
|
+
internalType: "uint64",
|
|
17109
|
+
name: "validUntil",
|
|
17110
|
+
type: "uint64"
|
|
17111
|
+
},
|
|
17112
|
+
{
|
|
17113
|
+
internalType: "enum IAgentDelegateRegistryBase.AgentStatus",
|
|
17114
|
+
name: "status",
|
|
17115
|
+
type: "uint8"
|
|
17116
|
+
},
|
|
17117
|
+
{
|
|
17118
|
+
internalType: "uint64",
|
|
17119
|
+
name: "registeredAt",
|
|
17120
|
+
type: "uint64"
|
|
17121
|
+
},
|
|
17122
|
+
{
|
|
17123
|
+
internalType: "uint64",
|
|
17124
|
+
name: "revokedAt",
|
|
17125
|
+
type: "uint64"
|
|
17126
|
+
}
|
|
17127
|
+
],
|
|
17128
|
+
internalType: "struct IAgentDelegateRegistryBase.AgentRecord",
|
|
17129
|
+
name: "",
|
|
17130
|
+
type: "tuple"
|
|
17131
|
+
}
|
|
17132
|
+
],
|
|
17133
|
+
stateMutability: "view",
|
|
17134
|
+
type: "function"
|
|
17135
|
+
},
|
|
17136
|
+
{
|
|
17137
|
+
inputs: [],
|
|
17138
|
+
name: "authorizedConsumer",
|
|
17139
|
+
outputs: [
|
|
17140
|
+
{
|
|
17141
|
+
internalType: "address",
|
|
17142
|
+
name: "",
|
|
17143
|
+
type: "address"
|
|
17144
|
+
}
|
|
17145
|
+
],
|
|
17146
|
+
stateMutability: "view",
|
|
17147
|
+
type: "function"
|
|
17148
|
+
},
|
|
17149
|
+
{
|
|
17150
|
+
inputs: [
|
|
17151
|
+
{
|
|
17152
|
+
internalType: "bytes32",
|
|
17153
|
+
name: "positionId",
|
|
17154
|
+
type: "bytes32"
|
|
17155
|
+
},
|
|
17156
|
+
{
|
|
17157
|
+
internalType: "address",
|
|
17158
|
+
name: "caller",
|
|
17159
|
+
type: "address"
|
|
17160
|
+
}
|
|
17161
|
+
],
|
|
17162
|
+
name: "canMint",
|
|
17163
|
+
outputs: [
|
|
17164
|
+
{
|
|
17165
|
+
internalType: "bool",
|
|
17166
|
+
name: "ok",
|
|
17167
|
+
type: "bool"
|
|
17168
|
+
},
|
|
17169
|
+
{
|
|
17170
|
+
internalType: "enum IAgentDelegationRegistry.DenyReason",
|
|
17171
|
+
name: "reason",
|
|
17172
|
+
type: "uint8"
|
|
17173
|
+
},
|
|
17174
|
+
{
|
|
17175
|
+
internalType: "uint32",
|
|
17176
|
+
name: "effectiveFloorBps",
|
|
17177
|
+
type: "uint32"
|
|
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
|
+
internalType: "address",
|
|
17192
|
+
name: "caller",
|
|
17193
|
+
type: "address"
|
|
17194
|
+
}
|
|
17195
|
+
],
|
|
17196
|
+
name: "canRenew",
|
|
17197
|
+
outputs: [
|
|
17198
|
+
{
|
|
17199
|
+
internalType: "bool",
|
|
17200
|
+
name: "ok",
|
|
17201
|
+
type: "bool"
|
|
17202
|
+
},
|
|
17203
|
+
{
|
|
17204
|
+
internalType: "enum IAgentDelegationRegistry.DenyReason",
|
|
17205
|
+
name: "reason",
|
|
17206
|
+
type: "uint8"
|
|
17207
|
+
}
|
|
17208
|
+
],
|
|
17209
|
+
stateMutability: "view",
|
|
17210
|
+
type: "function"
|
|
17211
|
+
},
|
|
17212
|
+
{
|
|
17213
|
+
inputs: [
|
|
17214
|
+
{
|
|
17215
|
+
internalType: "bytes32",
|
|
17216
|
+
name: "positionId",
|
|
17217
|
+
type: "bytes32"
|
|
17218
|
+
},
|
|
17219
|
+
{
|
|
17220
|
+
internalType: "address",
|
|
17221
|
+
name: "caller",
|
|
17222
|
+
type: "address"
|
|
17223
|
+
}
|
|
17224
|
+
],
|
|
17225
|
+
name: "canRepay",
|
|
17226
|
+
outputs: [
|
|
17227
|
+
{
|
|
17228
|
+
internalType: "bool",
|
|
17229
|
+
name: "ok",
|
|
17230
|
+
type: "bool"
|
|
17231
|
+
},
|
|
17232
|
+
{
|
|
17233
|
+
internalType: "enum IAgentDelegationRegistry.DenyReason",
|
|
17234
|
+
name: "reason",
|
|
17235
|
+
type: "uint8"
|
|
17236
|
+
}
|
|
17237
|
+
],
|
|
17238
|
+
stateMutability: "view",
|
|
17239
|
+
type: "function"
|
|
17240
|
+
},
|
|
17241
|
+
{
|
|
17242
|
+
inputs: [],
|
|
17243
|
+
name: "core",
|
|
17244
|
+
outputs: [
|
|
17245
|
+
{
|
|
17246
|
+
internalType: "contract IPositionManagerCore",
|
|
17247
|
+
name: "",
|
|
17248
|
+
type: "address"
|
|
17249
|
+
}
|
|
17250
|
+
],
|
|
17251
|
+
stateMutability: "view",
|
|
17252
|
+
type: "function"
|
|
17253
|
+
},
|
|
17254
|
+
{
|
|
17255
|
+
inputs: [
|
|
17256
|
+
{
|
|
17257
|
+
internalType: "bytes32",
|
|
17258
|
+
name: "positionId",
|
|
17259
|
+
type: "bytes32"
|
|
17260
|
+
}
|
|
17261
|
+
],
|
|
17262
|
+
name: "disableAutoMint",
|
|
17263
|
+
outputs: [],
|
|
17264
|
+
stateMutability: "nonpayable",
|
|
17265
|
+
type: "function"
|
|
17266
|
+
},
|
|
17267
|
+
{
|
|
17268
|
+
inputs: [
|
|
17269
|
+
{
|
|
17270
|
+
internalType: "bytes32",
|
|
17271
|
+
name: "positionId",
|
|
17272
|
+
type: "bytes32"
|
|
17273
|
+
}
|
|
17274
|
+
],
|
|
17275
|
+
name: "disableAutoRenew",
|
|
17276
|
+
outputs: [],
|
|
17277
|
+
stateMutability: "nonpayable",
|
|
17278
|
+
type: "function"
|
|
17279
|
+
},
|
|
17280
|
+
{
|
|
17281
|
+
inputs: [
|
|
17282
|
+
{
|
|
17283
|
+
internalType: "bytes32",
|
|
17284
|
+
name: "positionId",
|
|
17285
|
+
type: "bytes32"
|
|
17286
|
+
}
|
|
17287
|
+
],
|
|
17288
|
+
name: "disableAutoRepay",
|
|
17289
|
+
outputs: [],
|
|
17290
|
+
stateMutability: "nonpayable",
|
|
17291
|
+
type: "function"
|
|
17292
|
+
},
|
|
17293
|
+
{
|
|
17294
|
+
inputs: [
|
|
17295
|
+
{
|
|
17296
|
+
internalType: "bytes32",
|
|
17297
|
+
name: "positionId",
|
|
17298
|
+
type: "bytes32"
|
|
17299
|
+
},
|
|
17300
|
+
{
|
|
17301
|
+
internalType: "uint32",
|
|
17302
|
+
name: "minCollateralRatioBps",
|
|
17303
|
+
type: "uint32"
|
|
17304
|
+
}
|
|
17305
|
+
],
|
|
17306
|
+
name: "enableAutoMint",
|
|
17307
|
+
outputs: [],
|
|
17308
|
+
stateMutability: "nonpayable",
|
|
17309
|
+
type: "function"
|
|
17310
|
+
},
|
|
17311
|
+
{
|
|
17312
|
+
inputs: [
|
|
17313
|
+
{
|
|
17314
|
+
internalType: "bytes32",
|
|
17315
|
+
name: "positionId",
|
|
17316
|
+
type: "bytes32"
|
|
17317
|
+
},
|
|
17318
|
+
{
|
|
17319
|
+
internalType: "uint32",
|
|
17320
|
+
name: "maxRenewals",
|
|
17321
|
+
type: "uint32"
|
|
17322
|
+
},
|
|
17323
|
+
{
|
|
17324
|
+
internalType: "uint40",
|
|
17325
|
+
name: "maxEndTimestamp",
|
|
17326
|
+
type: "uint40"
|
|
17327
|
+
}
|
|
17328
|
+
],
|
|
17329
|
+
name: "enableAutoRenew",
|
|
17330
|
+
outputs: [],
|
|
17331
|
+
stateMutability: "nonpayable",
|
|
17332
|
+
type: "function"
|
|
17333
|
+
},
|
|
17334
|
+
{
|
|
17335
|
+
inputs: [
|
|
17336
|
+
{
|
|
17337
|
+
internalType: "bytes32",
|
|
17338
|
+
name: "positionId",
|
|
17339
|
+
type: "bytes32"
|
|
17340
|
+
}
|
|
17341
|
+
],
|
|
17342
|
+
name: "enableAutoRepay",
|
|
17343
|
+
outputs: [],
|
|
17344
|
+
stateMutability: "nonpayable",
|
|
17345
|
+
type: "function"
|
|
17346
|
+
},
|
|
17347
|
+
{
|
|
17348
|
+
inputs: [
|
|
17349
|
+
{
|
|
17350
|
+
internalType: "bytes32",
|
|
17351
|
+
name: "positionId",
|
|
17352
|
+
type: "bytes32"
|
|
17353
|
+
}
|
|
17354
|
+
],
|
|
17355
|
+
name: "getLoanGrant",
|
|
17356
|
+
outputs: [
|
|
17357
|
+
{
|
|
17358
|
+
components: [
|
|
17359
|
+
{
|
|
17360
|
+
internalType: "address",
|
|
17361
|
+
name: "borrower",
|
|
17362
|
+
type: "address"
|
|
17363
|
+
},
|
|
17364
|
+
{
|
|
17365
|
+
internalType: "uint32",
|
|
17366
|
+
name: "scopeBits",
|
|
17367
|
+
type: "uint32"
|
|
17368
|
+
},
|
|
17369
|
+
{
|
|
17370
|
+
internalType: "uint32",
|
|
17371
|
+
name: "maxRenewals",
|
|
17372
|
+
type: "uint32"
|
|
17373
|
+
},
|
|
17374
|
+
{
|
|
17375
|
+
internalType: "uint32",
|
|
17376
|
+
name: "renewalsUsed",
|
|
17377
|
+
type: "uint32"
|
|
17378
|
+
},
|
|
17379
|
+
{
|
|
17380
|
+
internalType: "uint40",
|
|
17381
|
+
name: "maxEndTimestamp",
|
|
17382
|
+
type: "uint40"
|
|
17383
|
+
},
|
|
17384
|
+
{
|
|
17385
|
+
internalType: "uint32",
|
|
17386
|
+
name: "minCollateralRatioBps",
|
|
17387
|
+
type: "uint32"
|
|
17388
|
+
}
|
|
17389
|
+
],
|
|
17390
|
+
internalType: "struct IAgentDelegationRegistry.LoanGrant",
|
|
17391
|
+
name: "",
|
|
17392
|
+
type: "tuple"
|
|
17393
|
+
}
|
|
17394
|
+
],
|
|
17395
|
+
stateMutability: "view",
|
|
17396
|
+
type: "function"
|
|
17397
|
+
},
|
|
17398
|
+
{
|
|
17399
|
+
inputs: [
|
|
17400
|
+
{
|
|
17401
|
+
internalType: "bytes32",
|
|
17402
|
+
name: "role",
|
|
17403
|
+
type: "bytes32"
|
|
17404
|
+
}
|
|
17405
|
+
],
|
|
17406
|
+
name: "getRoleAdmin",
|
|
17407
|
+
outputs: [
|
|
17408
|
+
{
|
|
17409
|
+
internalType: "bytes32",
|
|
17410
|
+
name: "",
|
|
17411
|
+
type: "bytes32"
|
|
17412
|
+
}
|
|
17413
|
+
],
|
|
17414
|
+
stateMutability: "view",
|
|
17415
|
+
type: "function"
|
|
17416
|
+
},
|
|
17417
|
+
{
|
|
17418
|
+
inputs: [
|
|
17419
|
+
{
|
|
17420
|
+
internalType: "bytes32",
|
|
17421
|
+
name: "role",
|
|
17422
|
+
type: "bytes32"
|
|
17423
|
+
},
|
|
17424
|
+
{
|
|
17425
|
+
internalType: "uint256",
|
|
17426
|
+
name: "index",
|
|
17427
|
+
type: "uint256"
|
|
17428
|
+
}
|
|
17429
|
+
],
|
|
17430
|
+
name: "getRoleMember",
|
|
17431
|
+
outputs: [
|
|
17432
|
+
{
|
|
17433
|
+
internalType: "address",
|
|
17434
|
+
name: "",
|
|
17435
|
+
type: "address"
|
|
17436
|
+
}
|
|
17437
|
+
],
|
|
17438
|
+
stateMutability: "view",
|
|
17439
|
+
type: "function"
|
|
17440
|
+
},
|
|
17441
|
+
{
|
|
17442
|
+
inputs: [
|
|
17443
|
+
{
|
|
17444
|
+
internalType: "bytes32",
|
|
17445
|
+
name: "role",
|
|
17446
|
+
type: "bytes32"
|
|
17447
|
+
}
|
|
17448
|
+
],
|
|
17449
|
+
name: "getRoleMemberCount",
|
|
17450
|
+
outputs: [
|
|
17451
|
+
{
|
|
17452
|
+
internalType: "uint256",
|
|
17453
|
+
name: "",
|
|
17454
|
+
type: "uint256"
|
|
17455
|
+
}
|
|
17456
|
+
],
|
|
17457
|
+
stateMutability: "view",
|
|
17458
|
+
type: "function"
|
|
17459
|
+
},
|
|
17460
|
+
{
|
|
17461
|
+
inputs: [
|
|
17462
|
+
{
|
|
17463
|
+
internalType: "bytes32",
|
|
17464
|
+
name: "role",
|
|
17465
|
+
type: "bytes32"
|
|
17466
|
+
}
|
|
17467
|
+
],
|
|
17468
|
+
name: "getRoleMembers",
|
|
17469
|
+
outputs: [
|
|
17470
|
+
{
|
|
17471
|
+
internalType: "address[]",
|
|
17472
|
+
name: "",
|
|
17473
|
+
type: "address[]"
|
|
17474
|
+
}
|
|
17475
|
+
],
|
|
17476
|
+
stateMutability: "view",
|
|
17477
|
+
type: "function"
|
|
17478
|
+
},
|
|
17479
|
+
{
|
|
17480
|
+
inputs: [
|
|
17481
|
+
{
|
|
17482
|
+
internalType: "bytes32",
|
|
17483
|
+
name: "role",
|
|
17484
|
+
type: "bytes32"
|
|
17485
|
+
},
|
|
17486
|
+
{
|
|
17487
|
+
internalType: "address",
|
|
17488
|
+
name: "account",
|
|
17489
|
+
type: "address"
|
|
17490
|
+
}
|
|
17491
|
+
],
|
|
17492
|
+
name: "grantRole",
|
|
17493
|
+
outputs: [],
|
|
17494
|
+
stateMutability: "nonpayable",
|
|
17495
|
+
type: "function"
|
|
17496
|
+
},
|
|
17497
|
+
{
|
|
17498
|
+
inputs: [
|
|
17499
|
+
{
|
|
17500
|
+
internalType: "bytes32",
|
|
17501
|
+
name: "role",
|
|
17502
|
+
type: "bytes32"
|
|
17503
|
+
},
|
|
17504
|
+
{
|
|
17505
|
+
internalType: "address",
|
|
17506
|
+
name: "account",
|
|
17507
|
+
type: "address"
|
|
17508
|
+
}
|
|
17509
|
+
],
|
|
17510
|
+
name: "hasRole",
|
|
17511
|
+
outputs: [
|
|
17512
|
+
{
|
|
17513
|
+
internalType: "bool",
|
|
17514
|
+
name: "",
|
|
17515
|
+
type: "bool"
|
|
17516
|
+
}
|
|
17517
|
+
],
|
|
17518
|
+
stateMutability: "view",
|
|
17519
|
+
type: "function"
|
|
17520
|
+
},
|
|
17521
|
+
{
|
|
17522
|
+
inputs: [
|
|
17523
|
+
{
|
|
17524
|
+
internalType: "address",
|
|
17525
|
+
name: "admin",
|
|
17526
|
+
type: "address"
|
|
17527
|
+
},
|
|
17528
|
+
{
|
|
17529
|
+
internalType: "address",
|
|
17530
|
+
name: "adminModule_",
|
|
17531
|
+
type: "address"
|
|
17532
|
+
},
|
|
17533
|
+
{
|
|
17534
|
+
internalType: "address",
|
|
17535
|
+
name: "registrar",
|
|
17536
|
+
type: "address"
|
|
17537
|
+
},
|
|
17538
|
+
{
|
|
17539
|
+
internalType: "address",
|
|
17540
|
+
name: "pauser",
|
|
17541
|
+
type: "address"
|
|
17542
|
+
},
|
|
17543
|
+
{
|
|
17544
|
+
internalType: "contract IPositionManagerCore",
|
|
17545
|
+
name: "core_",
|
|
17546
|
+
type: "address"
|
|
17547
|
+
}
|
|
17548
|
+
],
|
|
17549
|
+
name: "initialize",
|
|
17550
|
+
outputs: [],
|
|
17551
|
+
stateMutability: "nonpayable",
|
|
17552
|
+
type: "function"
|
|
17553
|
+
},
|
|
17554
|
+
{
|
|
17555
|
+
inputs: [
|
|
17556
|
+
{
|
|
17557
|
+
internalType: "uint32",
|
|
17558
|
+
name: "floorMinBps",
|
|
17559
|
+
type: "uint32"
|
|
17560
|
+
}
|
|
17561
|
+
],
|
|
17562
|
+
name: "initializeV2",
|
|
17563
|
+
outputs: [],
|
|
17564
|
+
stateMutability: "nonpayable",
|
|
17565
|
+
type: "function"
|
|
17566
|
+
},
|
|
17567
|
+
{
|
|
17568
|
+
inputs: [
|
|
17569
|
+
{
|
|
17570
|
+
internalType: "address",
|
|
17571
|
+
name: "user",
|
|
17572
|
+
type: "address"
|
|
17573
|
+
}
|
|
17574
|
+
],
|
|
17575
|
+
name: "isAgentActive",
|
|
17576
|
+
outputs: [
|
|
17577
|
+
{
|
|
17578
|
+
internalType: "bool",
|
|
17579
|
+
name: "",
|
|
17580
|
+
type: "bool"
|
|
17581
|
+
}
|
|
17582
|
+
],
|
|
17583
|
+
stateMutability: "view",
|
|
17584
|
+
type: "function"
|
|
17585
|
+
},
|
|
17586
|
+
{
|
|
17587
|
+
inputs: [
|
|
17588
|
+
{
|
|
17589
|
+
internalType: "address",
|
|
17590
|
+
name: "",
|
|
17591
|
+
type: "address"
|
|
17592
|
+
}
|
|
17593
|
+
],
|
|
17594
|
+
name: "keyOfAgent",
|
|
17595
|
+
outputs: [
|
|
17596
|
+
{
|
|
17597
|
+
internalType: "bytes32",
|
|
17598
|
+
name: "",
|
|
17599
|
+
type: "bytes32"
|
|
17600
|
+
}
|
|
17601
|
+
],
|
|
17602
|
+
stateMutability: "view",
|
|
17603
|
+
type: "function"
|
|
17604
|
+
},
|
|
17605
|
+
{
|
|
17606
|
+
inputs: [],
|
|
17607
|
+
name: "maxAgentTtl",
|
|
17608
|
+
outputs: [
|
|
17609
|
+
{
|
|
17610
|
+
internalType: "uint64",
|
|
17611
|
+
name: "",
|
|
17612
|
+
type: "uint64"
|
|
17613
|
+
}
|
|
17614
|
+
],
|
|
17615
|
+
stateMutability: "view",
|
|
17616
|
+
type: "function"
|
|
17617
|
+
},
|
|
17618
|
+
{
|
|
17619
|
+
inputs: [],
|
|
17620
|
+
name: "pause",
|
|
17621
|
+
outputs: [],
|
|
17622
|
+
stateMutability: "nonpayable",
|
|
17623
|
+
type: "function"
|
|
17624
|
+
},
|
|
17625
|
+
{
|
|
17626
|
+
inputs: [],
|
|
17627
|
+
name: "paused",
|
|
17628
|
+
outputs: [
|
|
17629
|
+
{
|
|
17630
|
+
internalType: "bool",
|
|
17631
|
+
name: "",
|
|
17632
|
+
type: "bool"
|
|
17633
|
+
}
|
|
17634
|
+
],
|
|
17635
|
+
stateMutability: "view",
|
|
17636
|
+
type: "function"
|
|
17637
|
+
},
|
|
17638
|
+
{
|
|
17639
|
+
inputs: [],
|
|
17640
|
+
name: "proxiableUUID",
|
|
17641
|
+
outputs: [
|
|
17642
|
+
{
|
|
17643
|
+
internalType: "bytes32",
|
|
17644
|
+
name: "",
|
|
17645
|
+
type: "bytes32"
|
|
17646
|
+
}
|
|
17647
|
+
],
|
|
17648
|
+
stateMutability: "view",
|
|
17649
|
+
type: "function"
|
|
17650
|
+
},
|
|
17651
|
+
{
|
|
17652
|
+
inputs: [
|
|
17653
|
+
{
|
|
17654
|
+
internalType: "bytes32",
|
|
17655
|
+
name: "positionId",
|
|
17656
|
+
type: "bytes32"
|
|
17657
|
+
}
|
|
17658
|
+
],
|
|
17659
|
+
name: "recordRenewal",
|
|
17660
|
+
outputs: [],
|
|
17661
|
+
stateMutability: "nonpayable",
|
|
17662
|
+
type: "function"
|
|
17663
|
+
},
|
|
17664
|
+
{
|
|
17665
|
+
inputs: [
|
|
17666
|
+
{
|
|
17667
|
+
internalType: "address",
|
|
17668
|
+
name: "user",
|
|
17669
|
+
type: "address"
|
|
17670
|
+
},
|
|
17671
|
+
{
|
|
17672
|
+
internalType: "address",
|
|
17673
|
+
name: "agent",
|
|
17674
|
+
type: "address"
|
|
17675
|
+
},
|
|
17676
|
+
{
|
|
17677
|
+
internalType: "uint64",
|
|
17678
|
+
name: "validUntil",
|
|
17679
|
+
type: "uint64"
|
|
17680
|
+
}
|
|
17681
|
+
],
|
|
17682
|
+
name: "registerAgent",
|
|
17683
|
+
outputs: [],
|
|
17684
|
+
stateMutability: "nonpayable",
|
|
17685
|
+
type: "function"
|
|
17686
|
+
},
|
|
17687
|
+
{
|
|
17688
|
+
inputs: [
|
|
17689
|
+
{
|
|
17690
|
+
internalType: "bytes32",
|
|
17691
|
+
name: "role",
|
|
17692
|
+
type: "bytes32"
|
|
17693
|
+
},
|
|
17694
|
+
{
|
|
17695
|
+
internalType: "address",
|
|
17696
|
+
name: "callerConfirmation",
|
|
17697
|
+
type: "address"
|
|
17698
|
+
}
|
|
17699
|
+
],
|
|
17700
|
+
name: "renounceRole",
|
|
17701
|
+
outputs: [],
|
|
17702
|
+
stateMutability: "nonpayable",
|
|
17703
|
+
type: "function"
|
|
17704
|
+
},
|
|
17705
|
+
{
|
|
17706
|
+
inputs: [
|
|
17707
|
+
{
|
|
17708
|
+
internalType: "address",
|
|
17709
|
+
name: "user",
|
|
17710
|
+
type: "address"
|
|
17711
|
+
},
|
|
17712
|
+
{
|
|
17713
|
+
internalType: "bytes32",
|
|
17714
|
+
name: "reason",
|
|
17715
|
+
type: "bytes32"
|
|
17716
|
+
}
|
|
17717
|
+
],
|
|
17718
|
+
name: "revokeAgent",
|
|
17719
|
+
outputs: [],
|
|
17720
|
+
stateMutability: "nonpayable",
|
|
17721
|
+
type: "function"
|
|
17722
|
+
},
|
|
17723
|
+
{
|
|
17724
|
+
inputs: [
|
|
17725
|
+
{
|
|
17726
|
+
internalType: "bytes32",
|
|
17727
|
+
name: "role",
|
|
17728
|
+
type: "bytes32"
|
|
17729
|
+
},
|
|
17730
|
+
{
|
|
17731
|
+
internalType: "address",
|
|
17732
|
+
name: "account",
|
|
17733
|
+
type: "address"
|
|
17734
|
+
}
|
|
17735
|
+
],
|
|
17736
|
+
name: "revokeRole",
|
|
17737
|
+
outputs: [],
|
|
17738
|
+
stateMutability: "nonpayable",
|
|
17739
|
+
type: "function"
|
|
17740
|
+
},
|
|
17741
|
+
{
|
|
17742
|
+
inputs: [
|
|
17743
|
+
{
|
|
17744
|
+
internalType: "address",
|
|
17745
|
+
name: "user",
|
|
17746
|
+
type: "address"
|
|
17747
|
+
},
|
|
17748
|
+
{
|
|
17749
|
+
internalType: "address",
|
|
17750
|
+
name: "newAgent",
|
|
17751
|
+
type: "address"
|
|
17752
|
+
},
|
|
17753
|
+
{
|
|
17754
|
+
internalType: "uint64",
|
|
17755
|
+
name: "validUntil",
|
|
17756
|
+
type: "uint64"
|
|
17757
|
+
}
|
|
17758
|
+
],
|
|
17759
|
+
name: "rotateAgent",
|
|
17760
|
+
outputs: [],
|
|
17761
|
+
stateMutability: "nonpayable",
|
|
17762
|
+
type: "function"
|
|
17763
|
+
},
|
|
17764
|
+
{
|
|
17765
|
+
inputs: [
|
|
17766
|
+
{
|
|
17767
|
+
internalType: "address",
|
|
17768
|
+
name: "newAdminModule",
|
|
17769
|
+
type: "address"
|
|
17770
|
+
}
|
|
17771
|
+
],
|
|
17772
|
+
name: "setAdminModule",
|
|
17773
|
+
outputs: [],
|
|
17774
|
+
stateMutability: "nonpayable",
|
|
17775
|
+
type: "function"
|
|
17776
|
+
},
|
|
17777
|
+
{
|
|
17778
|
+
inputs: [
|
|
17779
|
+
{
|
|
17780
|
+
internalType: "uint32",
|
|
17781
|
+
name: "bps",
|
|
17782
|
+
type: "uint32"
|
|
17783
|
+
}
|
|
17784
|
+
],
|
|
17785
|
+
name: "setAgentMintFloorMin",
|
|
17786
|
+
outputs: [],
|
|
17787
|
+
stateMutability: "nonpayable",
|
|
17788
|
+
type: "function"
|
|
17789
|
+
},
|
|
17790
|
+
{
|
|
17791
|
+
inputs: [
|
|
17792
|
+
{
|
|
17793
|
+
internalType: "address",
|
|
17794
|
+
name: "consumer",
|
|
17795
|
+
type: "address"
|
|
17796
|
+
}
|
|
17797
|
+
],
|
|
17798
|
+
name: "setAuthorizedConsumer",
|
|
17799
|
+
outputs: [],
|
|
17800
|
+
stateMutability: "nonpayable",
|
|
17801
|
+
type: "function"
|
|
17802
|
+
},
|
|
17803
|
+
{
|
|
17804
|
+
inputs: [
|
|
17805
|
+
{
|
|
17806
|
+
internalType: "uint64",
|
|
17807
|
+
name: "newMaxAgentTtl",
|
|
17808
|
+
type: "uint64"
|
|
17809
|
+
}
|
|
17810
|
+
],
|
|
17811
|
+
name: "setMaxAgentTtl",
|
|
17812
|
+
outputs: [],
|
|
17813
|
+
stateMutability: "nonpayable",
|
|
17814
|
+
type: "function"
|
|
17815
|
+
},
|
|
17816
|
+
{
|
|
17817
|
+
inputs: [
|
|
17818
|
+
{
|
|
17819
|
+
internalType: "bytes32",
|
|
17820
|
+
name: "positionId",
|
|
17821
|
+
type: "bytes32"
|
|
17822
|
+
},
|
|
17823
|
+
{
|
|
17824
|
+
internalType: "uint32",
|
|
17825
|
+
name: "newFloorBps",
|
|
17826
|
+
type: "uint32"
|
|
17827
|
+
}
|
|
17828
|
+
],
|
|
17829
|
+
name: "setMintCollateralFloor",
|
|
17830
|
+
outputs: [],
|
|
17831
|
+
stateMutability: "nonpayable",
|
|
17832
|
+
type: "function"
|
|
17833
|
+
},
|
|
17834
|
+
{
|
|
17835
|
+
inputs: [
|
|
17836
|
+
{
|
|
17837
|
+
internalType: "bytes4",
|
|
17838
|
+
name: "interfaceId",
|
|
17839
|
+
type: "bytes4"
|
|
17840
|
+
}
|
|
17841
|
+
],
|
|
17842
|
+
name: "supportsInterface",
|
|
17843
|
+
outputs: [
|
|
17844
|
+
{
|
|
17845
|
+
internalType: "bool",
|
|
17846
|
+
name: "",
|
|
17847
|
+
type: "bool"
|
|
17848
|
+
}
|
|
17849
|
+
],
|
|
17850
|
+
stateMutability: "view",
|
|
17851
|
+
type: "function"
|
|
17852
|
+
},
|
|
17853
|
+
{
|
|
17854
|
+
inputs: [],
|
|
17855
|
+
name: "unpause",
|
|
17856
|
+
outputs: [],
|
|
17857
|
+
stateMutability: "nonpayable",
|
|
17858
|
+
type: "function"
|
|
17859
|
+
},
|
|
17860
|
+
{
|
|
17861
|
+
inputs: [
|
|
17862
|
+
{
|
|
17863
|
+
internalType: "address",
|
|
17864
|
+
name: "newImplementation",
|
|
17865
|
+
type: "address"
|
|
17866
|
+
},
|
|
17867
|
+
{
|
|
17868
|
+
internalType: "bytes",
|
|
17869
|
+
name: "data",
|
|
17870
|
+
type: "bytes"
|
|
17871
|
+
}
|
|
17872
|
+
],
|
|
17873
|
+
name: "upgradeToAndCall",
|
|
17874
|
+
outputs: [],
|
|
17875
|
+
stateMutability: "payable",
|
|
17876
|
+
type: "function"
|
|
17877
|
+
},
|
|
17878
|
+
{
|
|
17879
|
+
inputs: [
|
|
17880
|
+
{
|
|
17881
|
+
internalType: "address",
|
|
17882
|
+
name: "agent",
|
|
17883
|
+
type: "address"
|
|
17884
|
+
}
|
|
17885
|
+
],
|
|
17886
|
+
name: "userOfAgent",
|
|
17887
|
+
outputs: [
|
|
17888
|
+
{
|
|
17889
|
+
internalType: "address",
|
|
17890
|
+
name: "",
|
|
17891
|
+
type: "address"
|
|
17892
|
+
}
|
|
17893
|
+
],
|
|
17894
|
+
stateMutability: "view",
|
|
17895
|
+
type: "function"
|
|
17896
|
+
}
|
|
17897
|
+
];
|
|
17898
|
+
var _bytecode2 = "0x60a080604052346100ea57306080527ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005460ff8160401c166100d9576002600160401b03196001600160401b03821601610073575b60405161308690816100f0823960805181818161121b015261140e0152f35b6001600160401b0319166001600160401b039081177ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005581527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a13880610054565b63f92ee8a960e01b60005260046000fd5b600080fdfe608080604052600436101561001357600080fd5b60003560e01c90816301ffc9a7146120b4575080630d33f3c2146120905780630f3f4a94146120445780631459457a14611cfd578063188787e814611c2b57806318c38b8914611b1a5780631b02993114611aa65780631d44454114611a0b578063248a9ca3146119e55780632ec22d4c1461191c5780632f0647ce1461189d5780632f2ff15d1461186c57806336568abe14611826578063392f1087146117db5780633f4ba83a146116e35780633f5aadc9146116745780634f1ef28614611392578063523403631461129b5780635273b6f61461127257806352d1902d14611208578063554c4f4b14611178578063561b7f8a146110145780635bc26aea14610f875780635c975abb14610f575780636289d18c14610ed65780636711cc0b14610eba5780636e852a7814610da95780637e35bf6e14610d755780638343f67414610d485780638456cb5914610c525780638f33527f14610c185780639010d07c14610bc457806391d1485414610b6a5780639b9d30c114610b41578063a19af3f614610a7c578063a217fddf14610a60578063a3246ad31461099e578063a878086414610982578063ac3c0e3014610875578063ad3cb1cc1461082e578063b3fad6381461074b578063c34e9c261461072f578063c6fbbb87146105dd578063ca15c873146105a4578063d547741f1461056c578063dd71d99a1461052a578063e0922fa11461047d578063e187828314610454578063f2f4eb261461042b578063f68e955314610402578063fd437d39146102945763ffa1ad741461025b57600080fd5b3461028f57600036600319011261028f5761028b610277612282565b60405191829160208352602083019061225d565b0390f35b600080fd5b3461028f57606036600319011261028f576102ad612137565b6102b5612121565b906102be612224565b336000908152600080516020612f9a833981519152602052604090205490919060ff16156103db576001600160a01b031660008181526001602052604090208054939060e085901c60ff1660038110156103c5576001036103b45781600160209261034b877fc5d5c5bbf10444998e0ea6d4725e79027b574e1c14ec929279e8a9a95c6c6e919688612c79565b818060a01b038316828060a01b031982541617815561036a878261243b565b0180546001600160401b031916426001600160401b03908116919091179091556001600160a01b0391821660008181526002855260409081902087905551969091168652951693a4005b632437e77160e11b60005260046000fd5b634e487b7160e01b600052602160045260246000fd5b63e2517d3f60e01b6000523360045260008051602061301a83398151915260245260446000fd5b3461028f57600036600319011261028f57602060405160008051602061301a8339815191528152f35b3461028f57600036600319011261028f576003546040516001600160a01b039091168152602090f35b3461028f57600036600319011261028f576004546040516001600160a01b039091168152602090f35b3461028f57602036600319011261028f576004356001600160401b0381169081810361028f576000546001600160a01b038116330361051957600160a01b600160e01b0319811660a092831b600160a01b600160e01b031617600055604080519190921c6001600160401b0316815260208101929092527f9c195448332abd01f716db873b329752ea02f19d33f7e311fb0daf082c4edd0391a1005b6349db3bd360e01b60005260046000fd5b3461028f57602036600319011261028f576001600160a01b0361054b612137565b166000526002602052602060018060a01b0360406000205416604051908152f35b3461028f57604036600319011261028f576105a260043561058b612121565b9061059d61059882612302565b612a2c565b612abe565b005b3461028f57602036600319011261028f57600435600052600080516020612f1a8339815191526020526020604060002054604051908152f35b3461028f57602036600319011261028f5760043560018060a01b036004541633141580610708575b6106f757600081815260056020526040902080546001600160a01b038116156106e65760018160a01c16156106e65763ffffffff8160c01c1680151590816106d8575b506106c75760e01c6001019063ffffffff82116106b15780546001600160e01b031660e083901b6001600160e01b03191617905560405163ffffffff90911681527f859a3b34c0d733a1033c6089d4d18643a0705b707970a0d0d79c84423f089da190602090a2005b634e487b7160e01b600052601160045260246000fd5b638a6ea6bf60e01b60005260046000fd5b90508160e01c101584610648565b6360eb6c2360e01b60005260046000fd5b634b95b20b60e11b60005260046000fd5b50336000908152600080516020612f9a833981519152602052604090205460ff1615610605565b3461028f57600036600319011261028f57602060405160028152f35b3461028f57602036600319011261028f57600060a060405161076c816121cb565b8281528260208201528260408201528260608201528260808201520152600435600052600560205260c0604060002063ffffffff604051916107ad836121cb565b64ffffffffff8154938360018060a01b03861695868352816020840195818360a01c168752816001604087019282868e1c168452606088019560e01c86520154978160a060808901988a8c168a52019960281c1689526040519a8b52511660208a0152511660408801525116606086015251166080840152511660a0820152f35b3461028f57600036600319011261028f5761028b604080519061085181836121e6565b60058252640352e302e360dc1b60208301525191829160208352602083019061225d565b3461028f57602036600319011261028f5761088e612137565b6000608060405161089e8161219a565b828152826020820152826040820152826060820152015260018060a01b0316600052600160205260406000206040516108d68161219a565b81546001600160a01b038116825260a081901c6001600160401b03166020830190815292604083019160e01c60ff169060038210156103c557908252600101546001600160401b0380821660608501908152604092831c821660808601908152925194516001600160a01b03168552945116602084015290519260038410156103c557604083019390935291516001600160401b0390811660608301529151909116608082015260a090f35b3461028f57600036600319011261028f57602060405160018152f35b3461028f57602036600319011261028f57600435600052600080516020612f1a83398151915260205260406000206040518060208354918281520190819360005260206000209060005b818110610a4a57505050816109fe9103826121e6565b6040519182916020830190602084525180915260408301919060005b818110610a28575050500390f35b82516001600160a01b0316845285945060209384019390920191600101610a1a565b82548452602090930192600192830192016109e8565b3461028f57600036600319011261028f57602060405160008152f35b3461028f57604036600319011261028f57600435610a98612174565b90610aa1612639565b63ffffffff600654169163ffffffff811692808410908115610b38575b50610b275760206001610b147f1da95b87b4c773f68c1447ffc5644e41a8a8887d55065beb64852014cf7140be93610af586612684565b9390610b0e600463ffffffff835460a01c1617826122a5565b016122c8565b6040519485526001600160a01b031693a3005b634346c13160e01b60005260046000fd5b90501584610abe565b3461028f57600036600319011261028f576020604051600080516020612f5a8339815191528152f35b3461028f57604036600319011261028f57610b83612121565b600435600052600080516020612ffa83398151915260205260406000209060018060a01b0316600052602052602060ff604060002054166040519015158152f35b3461028f57604036600319011261028f57600435600052600080516020612f1a8339815191526020526020610bff6024356040600020612d46565b905460405160039290921b1c6001600160a01b03168152f35b3461028f57602036600319011261028f576001600160a01b03610c39612137565b1660005260026020526020604060002054604051908152f35b3461028f57600036600319011261028f573360009081527f0ac8cc3d209806126662940717264973110c39045b305f6ba49613325a615e09602052604090205460ff1615610d2157610ca2612639565b600160ff1960008051602061303a83398151915254161760008051602061303a833981519152557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586020604051338152a16040514281527f80170b5fcdd2bf1e0660ef4b8851f86685f64d41b1a19de1471947ece8725aac60203392a2005b63e2517d3f60e01b60005233600452600080516020612f5a83398151915260245260446000fd5b3461028f57600036600319011261028f5760005460405160a09190911c6001600160401b03168152602090f35b3461028f57604036600319011261028f57610d99610d91612121565b6004356123a5565b9061028b6040519283928361215a565b3461028f57604036600319011261028f57610dc2612137565b336000908152600080516020612f9a833981519152602052604090205460ff161580610ea7575b610e97576001600160a01b03166000818152600160205260409020805460e01c60ff1660038110156103c5576001036103b457805460ff60e01b198116600160e11b1782556001919091018054600160401b600160801b03191642604090811b600160401b600160801b0316919091179091555160243581526001600160a01b0390911691907fc0499cc07ed9d734deec6857802d3f0fa8d5afaf79a7008beb8ba7bef62a271b90602090a3005b62fca64560e31b60005260046000fd5b50336001600160a01b0382161415610de9565b3461028f57600036600319011261028f57602060405160048152f35b3461028f57602036600319011261028f57610eef612187565b6000546001600160a01b031633036105195763ffffffff8116908115610f4657600080516020612fda83398151915291610f4163ffffffff9260065492841984161760065560405193849316836122eb565b0390a1005b6338f3377360e21b60005260046000fd5b3461028f57600036600319011261028f57602060ff60008051602061303a83398151915254166040519015158152f35b3461028f57602036600319011261028f57610fa0612137565b6000546001600160a01b0381169033829003610519576001600160a01b038316928315611003573b15610ff2576001600160a01b03191682176000908155600080516020612fba8339815191529080a3005b636f7c43f160e01b60005260046000fd5b63e6c4247b60e01b60005260046000fd5b3461028f57606036600319011261028f5761102d612137565b611035612121565b61103d612224565b91611046612639565b336000908152600080516020612f9a833981519152602052604090205460ff161580611165575b610e97576001600160a01b03166000818152600160205260409020805491929160e01c60ff1660038110156103c55760011461115457816020916110d3867ff223dc085722c94c84dcf67427e225799be616382a2a484d378f8921c69a20339587612c79565b80546001600160a01b0319166001600160a01b0383161781556110f6868261243b565b6001810180546001600160801b031916426001600160401b0390811691909117909155815460ff60e01b1916600160e01b179091556001600160a01b03919091166000818152600284526040908190208690555195909116855293a3005b639d2c8fdf60e01b60005260046000fd5b50336001600160a01b038216141561106d565b3461028f57602036600319011261028f576001600160a01b03611199612137565b166000526001602052604060002060ff60008051602061303a833981519152541615806111ec575b602091816111d5575b506040519015158152f35b5460a01c6001600160401b031642109050826111ca565b5060ff815460e01c169060038210156103c557906001146111c1565b3461028f57600036600319011261028f577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163003611261576020604051600080516020612f7a8339815191528152f35b63703e46dd60e11b60005260046000fd5b3461028f57600036600319011261028f576000546040516001600160a01b039091168152602090f35b3461028f57602036600319011261028f57600435600081815260056020526040902080546001600160a01b0381169291908315908115611383575b506106e657336000908152600080516020612f9a833981519152602052604090205460ff161580611379575b611368578061131e63fffffffe611341935460a01c16826122a5565b80546001600160c01b0316815560018101805464ffffffffff1916905582612a02565b7fa5ffbdba01b15df97334e34ad816b9986b6057a5ddc97aba93b7e8ccd21759ed600080a3005b630a606ec360e11b60005260046000fd5b5082331415611302565b6001915060a01c1615846112d6565b604036600319011261028f576113a6612137565b602435906001600160401b03821161028f573660238301121561028f578160040135906113d282612209565b916113e060405193846121e6565b8083526020830193366024838301011161028f57816000926024602093018737840101526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016308114908115611651575b50611261576000546001600160a01b03163303610519576001600160a01b03811692831561100357813b156116405730841461163157600080516020612f7a8339815191525484611488612282565b7f6ea8b34d59b2818d3f37a08dddaa06f5886b9c20c907b36f03ca6528e106e86f6114be6040519260408452604084019061225d565b4260208401526001600160a01b038516929081900390a36040516352d1902d60e01b8152602081600481895afa600091816115fd575b5061150e5785634c9c8ce360e01b60005260045260246000fd5b9081600080516020612f7a8339815191528793036115e95750833b156115d4576001600160a01b0319168117600080516020612f7a833981519152557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b600080a28251156115b957600080916105a2945190845af43d156115b1573d9161159483612209565b926115a260405194856121e6565b83523d6000602085013e612eb8565b606091612eb8565b505050346115c357005b63b398979f60e01b60005260046000fd5b50634c9c8ce360e01b60005260045260246000fd5b632a87526960e21b60005260045260246000fd5b9091506020813d602011611629575b81611619602093836121e6565b8101031261028f575190876114f4565b3d915061160c565b614e8d60eb1b60005260046000fd5b632e07c4bd60e11b60005260046000fd5b600080516020612f7a833981519152546001600160a01b03161415905084611439565b3461028f57602036600319011261028f57600435611690612639565b6116b261169c82612684565b9190600263ffffffff825460a01c1617906122a5565b6001600160a01b0316907fc2713e691344add4705edc62a0ee5aede95ba66ad68f97316efef9cb50644edd600080a3005b3461028f57600036600319011261028f57336000908152600080516020612f9a833981519152602052604090205460ff1615806117c6575b6117b55760008051602061303a8339815191525460ff8116156117a45760ff191660008051602061303a833981519152557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6020604051338152a16040514281527f107553d8191d85b405879cf752997865edd48d94e20bda4dd27223c94b31a7cc60203392a2005b638dfc202b60e01b60005260046000fd5b63659a07b360e11b60005260046000fd5b506000546001600160a01b031633141561171b565b3461028f57604036600319011261028f57606061181e63ffffffff611809611801612121565b600435612323565b9193906040519415158552602085019061214d565b166040820152f35b3461028f57604036600319011261028f5761183f612121565b336001600160a01b0382160361185b576105a290600435612abe565b63334bd91960e11b60005260046000fd5b3461028f57604036600319011261028f576105a260043561188b612121565b9061189861059882612302565b612a76565b3461028f57602036600319011261028f576004356118eb6118bd82612990565b91906118d363fffffffb825460a01c16826122a5565b60018101805463ffffffff60281b1916905583612a02565b6001600160a01b0316907f09cb4ec44cdef8489412844b9682f87f7900758fa2bd7e039113e9125e538e0f600080a3005b3461028f57602036600319011261028f57600435600081815260056020526040902080546001600160a01b03811692919083159081156119d6575b506106e657336000908152600080516020612f9a833981519152602052604090205460ff1615806119cc575b611368578061199f63fffffffd6119a5935460a01c16826122a5565b82612a02565b7fb390ab029eab314bd18190ebe73d7e5c1c336beaa5c83ac22578378dc9ccc405600080a3005b5082331415611983565b6002915060a01c161584611957565b3461028f57602036600319011261028f576020611a03600435612302565b604051908152f35b3461028f57604036600319011261028f57600435611a27612174565b63ffffffff600654168063ffffffff831610908115611a9d575b50610b27577e8a218591d4362499c38c38eb1c12e7a7cc97a9068818d1fe6046a42ba4a5ba906001611a7284612990565b5001611a898263ffffffff835460281c16926122c8565b611a98604051928392836122eb565b0390a2005b90501583611a41565b3461028f57602036600319011261028f57611abf612137565b6000546001600160a01b0316330361051957600480546001600160a01b039283166001600160a01b0319821681179092559091167f8556037c5648b2d5b51736f07a8fa4d099812ef06abf79a5731be619b111e4d4600080a3005b3461028f57602036600319011261028f57611b33612187565b60008051602061305a8339815191525460ff8160401c16908115611c13575b50611c025760008051602061305a833981519152805460026001600160401b0319821681179092556000546001600160481b031990911690911791906001600160a01b031633036105195763ffffffff168015610f4657604081600080516020612fda8339815191529263ffffffff196006541617600655815190600082526020820152a160008051602061305a83398151915255600080516020612f3a833981519152602060405160028152a1005b63f92ee8a960e01b60005260046000fd5b60026001600160401b03919091161015905082611b52565b3461028f57606036600319011261028f57600435611c47612174565b9060443564ffffffffff811680910361028f57604060017ef8e9f2101420b089a9228a3e9fa546f669754196824e19ec1adab7cab1f2e992611c87612639565b611c9085612684565b9290611ca88263ffffffff835460a01c1617826122a5565b805463ffffffff60c01b60c08a901b1663ffffffff60c01b199091161760e083901b83900316815501805464ffffffffff191682179055825163ffffffff909616865260208601526001600160a01b031693a3005b3461028f5760a036600319011261028f57611d16612137565b611d1e612121565b906044356001600160a01b03811680820361028f576064356001600160a01b0381169182820361028f576084356001600160a01b038116949085900361028f5760008051602061305a83398151915254604081901c60ff161596906001600160401b03168015908161203c575b6001149081612032575b159081612029575b50611c025760008051602061305a83398151915280546001600160401b031916600117905586612004575b611dd0612b02565b611dd8612b02565b611de0612b02565b611de8612b02565b6001600160a01b038116908115611003578315611003578515611003576001600160a01b038916988915611003573b15610ff257611e27906000612b30565b9081611fbd575b5015611f0257611e4c9060008051602061301a833981519152612b30565b9081611f68575b5015611f0257611e7190600080516020612f5a833981519152612b30565b9081611f13575b5015611f0257600080546001600160a01b031916841781556040519390600080516020612fba8339815191528180a3801561100357803b15610ff257600380546001600160a01b031916919091179055611ece57005b60008051602061305a833981519152805460ff60401b1916905560018152600080516020612f3a83398151915290602090a1005b63cf5a8e3360e01b60005260046000fd5b600080516020612f5a833981519152600052600080516020612f1a833981519152602052611f61907ffff5b43478fa6840382eb63777e0da6941d320b940e3f70f0ea4780feff95827612d74565b5084611e78565b60008051602061301a833981519152600052600080516020612f1a833981519152602052611fb6907f32d31393d541a265984ec379cddd8b1fcbe5f2b0eb8ad81dddfead454f135eaa612d74565b5086611e53565b60008052600080516020612f1a833981519152602052611ffd907f615f0f9e84155bea8cc509fe18befeb1baf65611e38a6ba60964480fb29dfd44612d74565b5088611e2e565b60008051602061305a833981519152805460ff60401b1916600160401b179055611dc8565b90501589611d9d565b303b159150611d95565b889150611d8b565b3461028f57604036600319011261028f57612075612060612121565b60043560005260056020526040600020612464565b600a8110156103c55761028b9060405191818392158361215a565b3461028f57600036600319011261028f57602063ffffffff60065416604051908152f35b3461028f57602036600319011261028f576004359063ffffffff60e01b821680920361028f57602091635a05180f60e01b81149081156120f6575b5015158152f35b637965db0b60e01b811491508115612110575b50836120ef565b6301ffc9a760e01b14905083612109565b602435906001600160a01b038216820361028f57565b600435906001600160a01b038216820361028f57565b90600a8210156103c55752565b9015158152604081019291612172916020019061214d565b565b6024359063ffffffff8216820361028f57565b6004359063ffffffff8216820361028f57565b60a081019081106001600160401b038211176121b557604052565b634e487b7160e01b600052604160045260246000fd5b60c081019081106001600160401b038211176121b557604052565b601f909101601f19168101906001600160401b038211908210176121b557604052565b6001600160401b0381116121b557601f01601f191660200190565b604435906001600160401b038216820361028f57565b60005b83811061224d5750506000910152565b818101518382015260200161223d565b906020916122768151809281855285808601910161223a565b601f01601f1916010190565b604051906122916040836121e6565b6005825264312e312e3160d81b6020830152565b805463ffffffff60a01b191660a09290921b63ffffffff60a01b16919091179055565b805463ffffffff60281b191660289290921b63ffffffff60281b16919091179055565b63ffffffff91821681529116602082015260400190565b600052600080516020612ffa83398151915260205260016040600020015490565b600052600560205261233a60406000209182612521565b600a8110156103c5578061239b5750600163ffffffff91015460281c1663ffffffff6006541681158015612393575b6123865780821061237f57505b60019160009190565b9050612376565b5050600090600390600090565b508015612369565b6000929091508290565b60005260056020526123bc604060002091826125ad565b600a8110156103c557806124335750805463ffffffff8160c01c168015159182612425575b505061241c576001015464ffffffffff168015159081612411575b5061240957600190600090565b600090600990565b9050421015386123fc565b50600090600890565b60e01c1015905038806123e1565b600092909150565b8054600160a01b600160e01b03191660a09290921b600160a01b600160e01b0316919091179055565b60ff60008051602061303a833981519152541661251a57546001600160a01b0381169081156125125760a01c6002161561250b5760005260016020526040600020549060ff8260e01c1660038110156103c5578015612503576002146124fc574260a083901c6001600160401b031611156124f5576001600160a01b039081169116036124f057600090565b600790565b5050600690565b5050600590565b505050600490565b5050600390565b505050600290565b5050600190565b60ff60008051602061303a833981519152541661251a57546001600160a01b0381169081156125125760a01c6004161561250b5760005260016020526040600020549060ff8260e01c1660038110156103c5578015612503576002146124fc574260a083901c6001600160401b031611156124f5576001600160a01b039081169116036124f057600090565b60ff60008051602061303a833981519152541661251a57546001600160a01b0381169081156125125760a01c6001161561250b5760005260016020526040600020549060ff8260e01c1660038110156103c5578015612503576002146124fc574260a083901c6001600160401b031611156124f5576001600160a01b039081169116036124f057600090565b60ff60008051602061303a833981519152541661265257565b63d93c066560e01b60005260046000fd5b519064ffffffffff8216820361028f57565b519061ffff8216820361028f57565b801561297f57600354604051638d34875560e01b8152600481018390529190600090839060249082906001600160a01b03165afa918215612973576000926127c8575b506080820151336000908152600080516020612f9a83398151915260205260409020546001600160a01b03909116929060ff1615806127be575b61136857610120015160088110156103c5576003811490600082156127b0575b821561279f575b505061278e5781600052600160205260ff60406000205460e01c1660038110156103c55760010361277d57600090815260056020526040902080546001600160a01b0319166001600160a01b03831617815591565b632e68d1d360e21b60005260046000fd5b63e9f6db8560e01b60005260046000fd5b9091506103c5576007143880612728565b506005811491506000612721565b5082331415612701565b90913d8082843e6127d981846121e6565b820191602081840312612953578051906001600160401b03821161295b5701906101a08284031261295057604051926101a084016001600160401b0381118582101761295f5760409081528351855260208085015190860152838101519085015260608301516001600160401b03811161295b57830181601f8201121561295b5780519061286682612209565b9261287460405194856121e6565b828452602083830101116129575790612893916020808501910161223a565b606084015260808201516001600160a01b03811681036129535760808401526128be60a08301612663565b60a08401526128cf60c08301612663565b60c08401526128e060e08301612675565b60e08401526128f26101008301612663565b610100840152610120820151906008821015612950575061294391610180916101208501526129246101408201612663565b6101408501526129376101608201612675565b61016085015201612663565b61018082015290386126c7565b80fd5b5080fd5b8380fd5b8280fd5b634e487b7160e01b83526041600452602483fd5b6040513d6000823e3d90fd5b637bb0b62160e01b60005260046000fd5b6000908152600560205260409020805490916001600160a01b0382169182159081156129f3575b506106e657336000908152600080516020612f9a833981519152602052604090205460ff1615806129e9575b61136857565b50813314156129e3565b6004915060a01c1615386129b7565b905460a01c63ffffffff1615612a155750565b600052600560205260006001604082208281550155565b6000818152600080516020612ffa8339815191526020908152604080832033845290915290205460ff1615612a5e5750565b63e2517d3f60e01b6000523360045260245260446000fd5b612a808282612b30565b9182612a8b57505090565b6000918252600080516020612f1a8339815191526020526040909120612aba916001600160a01b031690612d74565b5090565b612ac88282612bd9565b9182612ad357505090565b6000918252600080516020612f1a8339815191526020526040909120612aba916001600160a01b031690612de5565b60ff60008051602061305a8339815191525460401c1615612b1f57565b631afcd79f60e31b60005260046000fd5b6000818152600080516020612ffa833981519152602090815260408083206001600160a01b038616845290915290205460ff16612bd2576000818152600080516020612ffa833981519152602090815260408083206001600160a01b0395909516808452949091528120805460ff19166001179055339291907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9080a4600190565b5050600090565b6000818152600080516020612ffa833981519152602090815260408083206001600160a01b038616845290915290205460ff1615612bd2576000818152600080516020612ffa833981519152602090815260408083206001600160a01b0395909516808452949091528120805460ff19169055339291907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9080a4600190565b9081158015612d35575b611003576001600160a01b0316600090815260026020526040902054801515919082612d2a575b5050612d19576001600160401b031642811115612d085760005460a01c6001600160401b03168015159182612cf3575b5050612ce257565b63e774e7b560e01b60005260046000fd5b9091504281039081116106b157113880612cda565b63efa7aefd60e01b60005260046000fd5b633b53f64f60e21b60005260046000fd5b141590503880612caa565b506001600160a01b03811615612c83565b8054821015612d5e5760005260206000200190600090565b634e487b7160e01b600052603260045260246000fd5b6001810190826000528160205260406000205415600014612ddd578054600160401b8110156121b557612dc8612db1826001879401855584612d46565b819391549060031b91821b91600019901b19161790565b90555491600052602052604060002055600190565b505050600090565b9060018201918160005282602052604060002054801515600014612eaf5760001981018181116106b15782546000198101919082116106b157818103612e78575b50505080548015612e62576000190190612e408282612d46565b8154906000199060031b1b191690555560005260205260006040812055600190565b634e487b7160e01b600052603160045260246000fd5b612e98612e88612db19386612d46565b90549060031b1c92839286612d46565b905560005283602052604060002055388080612e26565b50505050600090565b90612ede5750805115612ecd57602081519101fd5b63d6bda27560e01b60005260046000fd5b81511580612f10575b612eef575090565b639996b31560e01b60009081526001600160a01b0391909116600452602490fd5b50803b15612ee756fec1f6fe24621ce81ec5827caf0253cadb74709b061630e6b55e82371705932000c7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d275027301df982f5215b4963a854cf9c73219df80cb6acd8f098189c9480c7bbc360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc07966f2ab141347034724e9b2a472c2f77f5cd745aeba27cacba797b8fcb708617dc5b1290f7495d7f8cc68476e6941aaf510598fa925d0d2720edc8805a846cd37bc77615afefc793aa17d75d4249a9b517ba91b0e54a49c9c4a44b3d7e228302dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800edcc084d3dcd65a1f7f23c65c46722faca6953d28e43150a467cf43e5c309238cd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a164736f6c6343000822000a";
|
|
17899
|
+
var isSuperArgs2 = (xs) => xs.length > 1;
|
|
17900
|
+
var AgentDelegationRegistry__factory = class extends import_ethers15.ContractFactory {
|
|
17901
|
+
constructor(...args) {
|
|
17902
|
+
if (isSuperArgs2(args)) {
|
|
17903
|
+
super(...args);
|
|
17904
|
+
} else {
|
|
17905
|
+
super(_abi2, _bytecode2, args[0]);
|
|
17906
|
+
}
|
|
17907
|
+
}
|
|
17908
|
+
getDeployTransaction(overrides) {
|
|
17909
|
+
return super.getDeployTransaction(overrides || {});
|
|
17910
|
+
}
|
|
17911
|
+
deploy(overrides) {
|
|
17912
|
+
return super.deploy(overrides || {});
|
|
17913
|
+
}
|
|
17914
|
+
connect(runner) {
|
|
17915
|
+
return super.connect(runner);
|
|
17916
|
+
}
|
|
17917
|
+
static bytecode = _bytecode2;
|
|
17918
|
+
static abi = _abi2;
|
|
17919
|
+
static createInterface() {
|
|
17920
|
+
return new import_ethers15.Interface(_abi2);
|
|
17921
|
+
}
|
|
17922
|
+
static connect(address, runner) {
|
|
17923
|
+
return new import_ethers15.Contract(
|
|
17924
|
+
address,
|
|
17925
|
+
_abi2,
|
|
17926
|
+
runner
|
|
17927
|
+
);
|
|
17928
|
+
}
|
|
17929
|
+
};
|
|
17930
|
+
|
|
17931
|
+
// src/utils/position-delegate.utils.ts
|
|
17932
|
+
var import_ethers16 = require("ethers");
|
|
17933
|
+
var POSITION_DELEGATE_REGISTRY_ABI = [
|
|
17934
|
+
"function positionDelegate(bytes32 positionId) view returns (address)",
|
|
17935
|
+
"function setPositionDelegate(bytes32 positionId, address newDelegate) external",
|
|
17936
|
+
"event PositionDelegateUpdated(bytes32 indexed positionId, address indexed oldDelegate, address indexed newDelegate)"
|
|
17937
|
+
];
|
|
17938
|
+
async function setPositionDelegate(positionId, delegate, signer, registryAddress) {
|
|
17939
|
+
const registry = new import_ethers16.Contract(
|
|
17940
|
+
registryAddress,
|
|
17941
|
+
POSITION_DELEGATE_REGISTRY_ABI,
|
|
17942
|
+
signer
|
|
17943
|
+
);
|
|
17944
|
+
return registry["setPositionDelegate"](positionId, delegate);
|
|
17945
|
+
}
|
|
17946
|
+
async function getPositionDelegate(positionId, provider, registryAddress) {
|
|
17947
|
+
const registry = new import_ethers16.Contract(
|
|
17948
|
+
registryAddress,
|
|
17949
|
+
POSITION_DELEGATE_REGISTRY_ABI,
|
|
17950
|
+
provider
|
|
17951
|
+
);
|
|
17952
|
+
return registry["positionDelegate"](positionId);
|
|
17953
|
+
}
|
|
17954
|
+
|
|
17955
|
+
// src/utils/agent-delegation.utils.ts
|
|
17956
|
+
async function mintAgentPkp(params) {
|
|
17957
|
+
const { serviceEndpoint, authHeader, timeoutMs = 3e4 } = params;
|
|
17958
|
+
if (!serviceEndpoint) {
|
|
17959
|
+
throw new Error(
|
|
17960
|
+
"serviceEndpoint is required to mint an agent PKP (SDK must be in service mode)"
|
|
17961
|
+
);
|
|
17962
|
+
}
|
|
17963
|
+
const url = `${serviceEndpoint}/api/lit/pkp/mint-agent`;
|
|
17964
|
+
const controller = new AbortController();
|
|
17965
|
+
const timeout = setTimeout(() => controller.abort(), timeoutMs);
|
|
17966
|
+
try {
|
|
17967
|
+
const headers = {
|
|
17968
|
+
"Content-Type": "application/json",
|
|
17969
|
+
...authHeader ? await authHeader() : {}
|
|
17970
|
+
};
|
|
17971
|
+
const response = await fetch(url, {
|
|
17972
|
+
method: "POST",
|
|
17973
|
+
headers,
|
|
17974
|
+
body: "{}",
|
|
17975
|
+
signal: controller.signal
|
|
17976
|
+
});
|
|
17977
|
+
if (!response.ok) {
|
|
17978
|
+
throw new Error(
|
|
17979
|
+
`Agent PKP mint failed (${response.status}): ${await response.text()}`
|
|
17980
|
+
);
|
|
17981
|
+
}
|
|
17982
|
+
const data = await response.json();
|
|
17983
|
+
if (!data.success || !data.walletAddress) {
|
|
17984
|
+
throw new Error(
|
|
17985
|
+
`Agent PKP mint returned no address: ${data.error ?? JSON.stringify(data)}`
|
|
17986
|
+
);
|
|
17987
|
+
}
|
|
17988
|
+
return data.walletAddress;
|
|
17989
|
+
} finally {
|
|
17990
|
+
clearTimeout(timeout);
|
|
17991
|
+
}
|
|
17992
|
+
}
|
|
17993
|
+
|
|
17994
|
+
// src/modules/mock/mock-token-manager.module.ts
|
|
17995
|
+
var MockTokenManager = class {
|
|
17996
|
+
config;
|
|
17997
|
+
constructor(config) {
|
|
17998
|
+
this.config = config;
|
|
17999
|
+
if (this.isProductionNetwork()) {
|
|
18000
|
+
log.warn("\u26A0\uFE0F MockTokenManager initialized on production network", {
|
|
18001
|
+
network: config.network
|
|
18002
|
+
});
|
|
18003
|
+
}
|
|
18004
|
+
}
|
|
18005
|
+
/**
|
|
18006
|
+
* Mint mock BTC tokens
|
|
18007
|
+
*
|
|
18008
|
+
* @param amount - Amount to mint in satoshis
|
|
18009
|
+
* @param recipient - Recipient address
|
|
18010
|
+
* @returns Transaction result
|
|
18011
|
+
*/
|
|
18012
|
+
async mintMockBTC(amount, recipient) {
|
|
18013
|
+
if (this.config.debug) {
|
|
18014
|
+
log.info("\u{1FA99} Minting mock BTC", {
|
|
18015
|
+
amount: amount.toString(),
|
|
18016
|
+
recipient
|
|
18017
|
+
});
|
|
18018
|
+
}
|
|
18019
|
+
if (this.isProductionNetwork()) {
|
|
18020
|
+
return failure(
|
|
18021
|
+
new SDKError({
|
|
18022
|
+
message: "Cannot mint mock tokens on production network",
|
|
18023
|
+
category: "CONFIGURATION" /* CONFIGURATION */,
|
|
18024
|
+
severity: "HIGH" /* HIGH */,
|
|
18025
|
+
originalError: new Error("Production network detected")
|
|
18026
|
+
})
|
|
18027
|
+
);
|
|
18028
|
+
}
|
|
18029
|
+
return tryCatchAsync(
|
|
18030
|
+
async () => {
|
|
18031
|
+
const signerResult = this.config.contractManager.getSigner();
|
|
18032
|
+
if (!signerResult.success) {
|
|
18033
|
+
throw signerResult.error;
|
|
18034
|
+
}
|
|
18035
|
+
throw new Error("Mock BTC contract not yet integrated");
|
|
18036
|
+
},
|
|
18037
|
+
(error) => new SDKError({
|
|
18038
|
+
message: "Failed to mint mock BTC",
|
|
18039
|
+
category: "CONTRACT" /* CONTRACT */,
|
|
18040
|
+
severity: "MEDIUM" /* MEDIUM */,
|
|
18041
|
+
originalError: error instanceof Error ? error : new Error(String(error)),
|
|
18042
|
+
context: { amount: amount.toString(), recipient }
|
|
18043
|
+
})
|
|
18044
|
+
);
|
|
18045
|
+
}
|
|
18046
|
+
/**
|
|
18047
|
+
* Approve mock BTC spending
|
|
18048
|
+
*
|
|
18049
|
+
* @param spender - Spender address
|
|
18050
|
+
* @param amount - Amount to approve in satoshis
|
|
18051
|
+
* @returns Transaction result
|
|
18052
|
+
*/
|
|
18053
|
+
async approveMockBTC(spender, amount) {
|
|
18054
|
+
if (this.config.debug) {
|
|
18055
|
+
log.info("\u2705 Approving mock BTC spending", {
|
|
18056
|
+
spender,
|
|
18057
|
+
amount: amount.toString()
|
|
18058
|
+
});
|
|
18059
|
+
}
|
|
18060
|
+
if (this.isProductionNetwork()) {
|
|
18061
|
+
return failure(
|
|
18062
|
+
new SDKError({
|
|
18063
|
+
message: "Cannot approve mock tokens on production network",
|
|
18064
|
+
category: "CONFIGURATION" /* CONFIGURATION */,
|
|
18065
|
+
severity: "HIGH" /* HIGH */,
|
|
18066
|
+
originalError: new Error("Production network detected")
|
|
18067
|
+
})
|
|
18068
|
+
);
|
|
18069
|
+
}
|
|
18070
|
+
return tryCatchAsync(
|
|
18071
|
+
async () => {
|
|
18072
|
+
const signerResult = this.config.contractManager.getSigner();
|
|
18073
|
+
if (!signerResult.success) {
|
|
18074
|
+
throw signerResult.error;
|
|
18075
|
+
}
|
|
18076
|
+
throw new Error("Mock BTC contract not yet integrated");
|
|
18077
|
+
},
|
|
18078
|
+
(error) => new SDKError({
|
|
18079
|
+
message: "Failed to approve mock BTC",
|
|
18080
|
+
category: "CONTRACT" /* CONTRACT */,
|
|
18081
|
+
severity: "MEDIUM" /* MEDIUM */,
|
|
18082
|
+
originalError: error instanceof Error ? error : new Error(String(error)),
|
|
18083
|
+
context: { spender, amount: amount.toString() }
|
|
18084
|
+
})
|
|
18085
|
+
);
|
|
18086
|
+
}
|
|
18087
|
+
/**
|
|
18088
|
+
* Get mock BTC balance
|
|
18089
|
+
*
|
|
18090
|
+
* @param address - Address to query
|
|
18091
|
+
* @returns Balance in satoshis
|
|
18092
|
+
*/
|
|
18093
|
+
async getMockBTCBalance(address) {
|
|
18094
|
+
if (this.config.debug) {
|
|
18095
|
+
log.info("\u{1F50D} Querying mock BTC balance", { address });
|
|
18096
|
+
}
|
|
18097
|
+
return tryCatchAsync(
|
|
18098
|
+
async () => {
|
|
18099
|
+
throw new Error("Mock BTC contract not yet integrated");
|
|
18100
|
+
},
|
|
18101
|
+
(error) => new SDKError({
|
|
18102
|
+
message: "Failed to get mock BTC balance",
|
|
18103
|
+
category: "CONTRACT" /* CONTRACT */,
|
|
18104
|
+
severity: "MEDIUM" /* MEDIUM */,
|
|
18105
|
+
originalError: error instanceof Error ? error : new Error(String(error)),
|
|
18106
|
+
context: { address }
|
|
18107
|
+
})
|
|
18108
|
+
);
|
|
18109
|
+
}
|
|
18110
|
+
/**
|
|
18111
|
+
* Check if current network is production (mainnet)
|
|
18112
|
+
*/
|
|
18113
|
+
isProductionNetwork() {
|
|
18114
|
+
return this.config.network.toLowerCase().includes("mainnet");
|
|
18115
|
+
}
|
|
18116
|
+
};
|
|
18117
|
+
function createMockTokenManager(config) {
|
|
18118
|
+
try {
|
|
18119
|
+
const manager = new MockTokenManager(config);
|
|
18120
|
+
return success(manager);
|
|
18121
|
+
} catch (error) {
|
|
18122
|
+
return failure(
|
|
18123
|
+
new SDKError({
|
|
18124
|
+
message: "Failed to create MockTokenManager",
|
|
18125
|
+
category: "INITIALIZATION" /* INITIALIZATION */,
|
|
18126
|
+
severity: "HIGH" /* HIGH */,
|
|
18127
|
+
originalError: error instanceof Error ? error : new Error(String(error))
|
|
18128
|
+
})
|
|
18129
|
+
);
|
|
18130
|
+
}
|
|
18131
|
+
}
|
|
18132
|
+
|
|
18133
|
+
// src/modules/diamond-hands-sdk.ts
|
|
18134
|
+
var import_dh_lit_ops = require("@gvnrdao/dh-lit-ops");
|
|
18135
|
+
var import_dh_lit_actions2 = __toESM(require_pkg_src());
|
|
18136
|
+
|
|
18137
|
+
// src/utils/telegram-messaging.utils.ts
|
|
18138
|
+
var TelegramBot = null;
|
|
18139
|
+
try {
|
|
18140
|
+
if (typeof window === "undefined" && typeof global !== "undefined") {
|
|
18141
|
+
TelegramBot = require("node-telegram-bot-api");
|
|
18142
|
+
}
|
|
18143
|
+
} catch (error) {
|
|
18144
|
+
log.warn("Telegram bot API not available", {
|
|
18145
|
+
error: error instanceof Error ? error.message : String(error)
|
|
18146
|
+
});
|
|
18147
|
+
}
|
|
18148
|
+
function formatMintMessage(mintAmount, loanId, txHash) {
|
|
18149
|
+
return `\u2705 DH SDK: ${mintAmount} UCD was minted for loan id: ${loanId} Tx: https://sepolia.etherscan.io/tx/${txHash}`;
|
|
18150
|
+
}
|
|
18151
|
+
function formatPartialPaymentMessage(paymentAmount, loanId, txHash) {
|
|
18152
|
+
return `\u2705 DH SDK: ${paymentAmount} UCD was repaid for loan id: ${loanId} Tx: https://sepolia.etherscan.io/tx/${txHash}`;
|
|
18153
|
+
}
|
|
18154
|
+
function formatPartialPaymentFailureMessage(paymentAmount, loanId, txHash) {
|
|
18155
|
+
const baseMessage = `\u274C DH SDK: FAILED to repay ${paymentAmount} UCD for loan id: ${loanId}`;
|
|
18156
|
+
if (txHash) {
|
|
18157
|
+
return `${baseMessage} Tx: https://sepolia.etherscan.io/tx/${txHash}`;
|
|
18158
|
+
}
|
|
18159
|
+
return baseMessage;
|
|
18160
|
+
}
|
|
18161
|
+
function formatLoanCreationMessage(positionId, pkpId, vaultAddress) {
|
|
18162
|
+
const vault = vaultAddress || "unknown";
|
|
18163
|
+
return `\u2705 DH SDK: A new loan was created Id: ${positionId} Pkp: ${pkpId} Regtest BTC vault: ${vault}`;
|
|
18164
|
+
}
|
|
18165
|
+
function formatBTCWithdrawalFailureMessage(withdrawalAmount, btcVault, btcDestinationAddress, loanId) {
|
|
18166
|
+
const formattedAmount = formatBTCAmount(withdrawalAmount);
|
|
18167
|
+
return `\u274C DH SDK: BTC withdrawal FAILED: ${formattedAmount} from ${btcVault} to ${btcDestinationAddress} for loan id: ${loanId}`;
|
|
16233
18168
|
}
|
|
16234
18169
|
function formatLoanRenewalMessage(positionId, txHash) {
|
|
16235
18170
|
return `\u2705 DH SDK: Loan id ${positionId} was successfully renewed. Tx: https://sepolia.etherscan.io/tx/${txHash}`;
|
|
@@ -16545,6 +18480,32 @@ var DiamondHandsSDK = class _DiamondHandsSDK {
|
|
|
16545
18480
|
await this.serverSession.clearPersisted();
|
|
16546
18481
|
}
|
|
16547
18482
|
}
|
|
18483
|
+
/**
|
|
18484
|
+
* Establish the lit-ops-server session from a login envelope the CALLER already
|
|
18485
|
+
* had signed, instead of prompting the wallet for one.
|
|
18486
|
+
*
|
|
18487
|
+
* For a host that authenticates several services from one wallet signature (the
|
|
18488
|
+
* browser frontend signs once and spends the same envelope at the api and here),
|
|
18489
|
+
* this is what turns two wallet prompts into one — and for a multi-sig Safe each
|
|
18490
|
+
* prompt saved is a whole propose-and-confirm ceremony across owners.
|
|
18491
|
+
*
|
|
18492
|
+
* Call it PROMPTLY after signing: each server pins the nonce on first use and
|
|
18493
|
+
* requires that first use to be fresh (±120s EOA, ±600s contract wallet), and
|
|
18494
|
+
* the two servers' replay stores are independent, so a late hand-off is rejected
|
|
18495
|
+
* as stale even though the other service already accepted the same envelope.
|
|
18496
|
+
* Once accepted, silent re-mint covers the next 24h with no further prompts.
|
|
18497
|
+
*
|
|
18498
|
+
* Requires `loginAudience` to be configured to a value BOTH servers accept —
|
|
18499
|
+
* otherwise this service rejects the envelope as `audience_mismatch`.
|
|
18500
|
+
*
|
|
18501
|
+
* Throws if the exchange fails, so a caller can fall back to the prompt path.
|
|
18502
|
+
* No-op in standalone mode (no server session to prime).
|
|
18503
|
+
*/
|
|
18504
|
+
async primeServerSession(payload) {
|
|
18505
|
+
if (!this.serverSession)
|
|
18506
|
+
return;
|
|
18507
|
+
await this.serverSession.adoptLoginPayload(payload);
|
|
18508
|
+
}
|
|
16548
18509
|
/**
|
|
16549
18510
|
* Audit H-9: invalidate the LoanQuery cache so subsequent reads return
|
|
16550
18511
|
* the post-write state. We clear the entire loan-query cache (not just
|
|
@@ -16640,7 +18601,7 @@ var DiamondHandsSDK = class _DiamondHandsSDK {
|
|
|
16640
18601
|
*/
|
|
16641
18602
|
constructor(config) {
|
|
16642
18603
|
if (!config.provider && config.ethRpcUrl) {
|
|
16643
|
-
config.provider = new
|
|
18604
|
+
config.provider = new import_ethers17.JsonRpcProvider(config.ethRpcUrl);
|
|
16644
18605
|
}
|
|
16645
18606
|
this.config = config;
|
|
16646
18607
|
if (config.debug) {
|
|
@@ -16656,6 +18617,7 @@ var DiamondHandsSDK = class _DiamondHandsSDK {
|
|
|
16656
18617
|
this.serverSession = new ServerSession({
|
|
16657
18618
|
signer: config.authSigner ?? config.contractSigner,
|
|
16658
18619
|
serviceEndpoint: config.serviceEndpoint,
|
|
18620
|
+
loginAudience: config.loginAudience,
|
|
16659
18621
|
chainId: config.chainId,
|
|
16660
18622
|
persistSession: config.sessionPersistence?.enabled,
|
|
16661
18623
|
sessionStore: config.sessionPersistence?.store,
|
|
@@ -16914,7 +18876,7 @@ var DiamondHandsSDK = class _DiamondHandsSDK {
|
|
|
16914
18876
|
const network = await config.provider.getNetwork();
|
|
16915
18877
|
chainId = Number(network.chainId);
|
|
16916
18878
|
} else if (config.ethRpcUrl) {
|
|
16917
|
-
const tempProvider = new
|
|
18879
|
+
const tempProvider = new import_ethers17.JsonRpcProvider(
|
|
16918
18880
|
config.ethRpcUrl
|
|
16919
18881
|
);
|
|
16920
18882
|
const network = await tempProvider.getNetwork();
|
|
@@ -17450,7 +19412,7 @@ var DiamondHandsSDK = class _DiamondHandsSDK {
|
|
|
17450
19412
|
}
|
|
17451
19413
|
const loanOps = this.loanOps();
|
|
17452
19414
|
const protocolConfig = await loanOps.getProtocolConfig();
|
|
17453
|
-
const requestAmountWei = (0,
|
|
19415
|
+
const requestAmountWei = (0, import_ethers17.parseEther)(
|
|
17454
19416
|
request.amount.toString()
|
|
17455
19417
|
);
|
|
17456
19418
|
const minLoanValueWei = BigInt(protocolConfig.minimumLoanValueWei);
|
|
@@ -17532,7 +19494,7 @@ var DiamondHandsSDK = class _DiamondHandsSDK {
|
|
|
17532
19494
|
pkpNftAddress,
|
|
17533
19495
|
this.getChipotlePublicKeyFallback()
|
|
17534
19496
|
);
|
|
17535
|
-
pkpEthAddress = (0,
|
|
19497
|
+
pkpEthAddress = (0, import_ethers17.computeAddress)(pkpPublicKey);
|
|
17536
19498
|
pkpCache.set(request.positionId, {
|
|
17537
19499
|
publicKey: pkpPublicKey,
|
|
17538
19500
|
ethAddress: pkpEthAddress,
|
|
@@ -17861,8 +19823,8 @@ var DiamondHandsSDK = class _DiamondHandsSDK {
|
|
|
17861
19823
|
throw new Error(`Position not found: ${request.positionId}`);
|
|
17862
19824
|
}
|
|
17863
19825
|
const currentDebt = position.ucdDebt.toString();
|
|
17864
|
-
const ucdDebtHash = (0,
|
|
17865
|
-
const contractHash = (0,
|
|
19826
|
+
const ucdDebtHash = (0, import_ethers17.keccak256)(import_ethers17.AbiCoder.defaultAbiCoder().encode(["uint256"], [currentDebt]));
|
|
19827
|
+
const contractHash = (0, import_ethers17.keccak256)(import_ethers17.AbiCoder.defaultAbiCoder().encode(
|
|
17866
19828
|
["address", "address", "address", "address"],
|
|
17867
19829
|
[
|
|
17868
19830
|
positionManagerAddress,
|
|
@@ -17931,7 +19893,7 @@ var DiamondHandsSDK = class _DiamondHandsSDK {
|
|
|
17931
19893
|
const coreAbi = [
|
|
17932
19894
|
"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))"
|
|
17933
19895
|
];
|
|
17934
|
-
const positionCore = new
|
|
19896
|
+
const positionCore = new import_ethers17.Contract(
|
|
17935
19897
|
coreAddress,
|
|
17936
19898
|
coreAbi,
|
|
17937
19899
|
this.getSignerOrThrow().provider
|
|
@@ -17939,8 +19901,8 @@ var DiamondHandsSDK = class _DiamondHandsSDK {
|
|
|
17939
19901
|
const currentPosition = await positionCore["getPositionDetails"](
|
|
17940
19902
|
positionIdBytes32
|
|
17941
19903
|
);
|
|
17942
|
-
const currentDebtHash = (0,
|
|
17943
|
-
|
|
19904
|
+
const currentDebtHash = (0, import_ethers17.keccak256)(
|
|
19905
|
+
import_ethers17.AbiCoder.defaultAbiCoder().encode(
|
|
17944
19906
|
["uint256"],
|
|
17945
19907
|
[currentPosition.ucdDebt]
|
|
17946
19908
|
)
|
|
@@ -17987,7 +19949,7 @@ var DiamondHandsSDK = class _DiamondHandsSDK {
|
|
|
17987
19949
|
"function getCurrentQuantum() view returns (uint256)",
|
|
17988
19950
|
"function isQuantumValid(bytes32,uint256) view returns (bool)"
|
|
17989
19951
|
];
|
|
17990
|
-
const registry = new
|
|
19952
|
+
const registry = new import_ethers17.Contract(
|
|
17991
19953
|
registryAddress,
|
|
17992
19954
|
registryAbi,
|
|
17993
19955
|
this.getSignerOrThrow().provider
|
|
@@ -18103,7 +20065,7 @@ var DiamondHandsSDK = class _DiamondHandsSDK {
|
|
|
18103
20065
|
});
|
|
18104
20066
|
}
|
|
18105
20067
|
const signatureHexMint = finalSignature.startsWith("0x") ? finalSignature : "0x" + finalSignature;
|
|
18106
|
-
const mintIface = new
|
|
20068
|
+
const mintIface = new import_ethers17.Interface(positionManagerAbi);
|
|
18107
20069
|
const mintCalldata = mintIface.encodeFunctionData("mintUCD", [
|
|
18108
20070
|
positionIdBytes32,
|
|
18109
20071
|
validationResponse.mintAmount,
|
|
@@ -18139,7 +20101,7 @@ var DiamondHandsSDK = class _DiamondHandsSDK {
|
|
|
18139
20101
|
if (viewsAddress) {
|
|
18140
20102
|
let diagnosis = null;
|
|
18141
20103
|
try {
|
|
18142
|
-
const views = new
|
|
20104
|
+
const views = new import_ethers17.Contract(
|
|
18143
20105
|
viewsAddress,
|
|
18144
20106
|
[
|
|
18145
20107
|
"function diagnoseMintUCD(bytes32,uint256,uint256,uint256,uint256,uint256,bytes32,bytes32,bytes32,uint256,bytes) view returns (string)"
|
|
@@ -18249,7 +20211,7 @@ Message: ${causeMessage}${quantumContext}${mintDebtDiagnostics}`
|
|
|
18249
20211
|
if (receipt.logs && receipt.logs.length > 0) {
|
|
18250
20212
|
for (const receiptLog of receipt.logs) {
|
|
18251
20213
|
if (receiptLog.topics && receiptLog.topics[0] === "0x08c379a0") {
|
|
18252
|
-
const iface = new
|
|
20214
|
+
const iface = new import_ethers17.Interface([
|
|
18253
20215
|
"error Error(string)"
|
|
18254
20216
|
]);
|
|
18255
20217
|
const decoded = iface.decodeErrorResult("Error", receiptLog.data);
|
|
@@ -18266,7 +20228,7 @@ Message: ${causeMessage}${quantumContext}${mintDebtDiagnostics}`
|
|
|
18266
20228
|
const minimalAbi = [
|
|
18267
20229
|
"event UCDMintedWithAuthorization(bytes32 indexed positionId, address indexed borrower, uint256 mintAmount, uint256 mintFee, uint256 newDebt, uint256 newCollateral, uint256 btcPrice, uint256 quantumTimestamp, bytes32 authorizedSpendsHash)"
|
|
18268
20230
|
];
|
|
18269
|
-
const iface = new
|
|
20231
|
+
const iface = new import_ethers17.Interface(minimalAbi);
|
|
18270
20232
|
for (const receiptLog of receipt.logs) {
|
|
18271
20233
|
const parsed = (() => {
|
|
18272
20234
|
const logIface = iface;
|
|
@@ -18453,7 +20415,7 @@ Message: ${causeMessage}${quantumContext}${mintDebtDiagnostics}`
|
|
|
18453
20415
|
pkpNftAddress,
|
|
18454
20416
|
this.getChipotlePublicKeyFallback()
|
|
18455
20417
|
);
|
|
18456
|
-
const pkpEthAddress = (0,
|
|
20418
|
+
const pkpEthAddress = (0, import_ethers17.computeAddress)(pkpPublicKey);
|
|
18457
20419
|
pkpData = {
|
|
18458
20420
|
publicKey: pkpPublicKey,
|
|
18459
20421
|
ethAddress: pkpEthAddress,
|
|
@@ -18855,7 +20817,7 @@ Message: ${causeMessage}${quantumContext}${mintDebtDiagnostics}`
|
|
|
18855
20817
|
}
|
|
18856
20818
|
const loanOpsForUcd = loanOpsForUcdResult.value;
|
|
18857
20819
|
const ucdTokenAddress = await loanOpsForUcd.ucdToken();
|
|
18858
|
-
const ucdToken = new
|
|
20820
|
+
const ucdToken = new import_ethers17.Contract(
|
|
18859
20821
|
ucdTokenAddress,
|
|
18860
20822
|
[
|
|
18861
20823
|
"function balanceOf(address) view returns (uint256)",
|
|
@@ -18871,9 +20833,9 @@ Message: ${causeMessage}${quantumContext}${mintDebtDiagnostics}`
|
|
|
18871
20833
|
if (ucdBalance < debtWei) {
|
|
18872
20834
|
return {
|
|
18873
20835
|
success: false,
|
|
18874
|
-
error: `Insufficient UCD balance for liquidation: ${(0,
|
|
20836
|
+
error: `Insufficient UCD balance for liquidation: ${(0, import_ethers17.formatEther)(
|
|
18875
20837
|
ucdBalance
|
|
18876
|
-
)} UCD (need ${(0,
|
|
20838
|
+
)} UCD (need ${(0, import_ethers17.formatEther)(debtWei)} UCD)`,
|
|
18877
20839
|
positionId: request.positionId,
|
|
18878
20840
|
wasLiquidated: false
|
|
18879
20841
|
};
|
|
@@ -18882,7 +20844,7 @@ Message: ${causeMessage}${quantumContext}${mintDebtDiagnostics}`
|
|
|
18882
20844
|
if (request.skipUcdApproval) {
|
|
18883
20845
|
return {
|
|
18884
20846
|
success: false,
|
|
18885
|
-
error: `Insufficient UCD allowance for UCDController: need at least ${(0,
|
|
20847
|
+
error: `Insufficient UCD allowance for UCDController: need at least ${(0, import_ethers17.formatEther)(
|
|
18886
20848
|
debtWei
|
|
18887
20849
|
)} UCD, or omit skipUcdApproval to let the SDK submit approve`,
|
|
18888
20850
|
positionId: request.positionId,
|
|
@@ -19389,7 +21351,7 @@ Message: ${causeMessage}${quantumContext}${mintDebtDiagnostics}`
|
|
|
19389
21351
|
if (typeof signatureBytes === "string" && signatureBytes.startsWith("{")) {
|
|
19390
21352
|
try {
|
|
19391
21353
|
const parsed = JSON.parse(signatureBytes);
|
|
19392
|
-
signatureBytes = parsed.signature ?? (parsed.r && parsed.s && parsed.v ?
|
|
21354
|
+
signatureBytes = parsed.signature ?? (parsed.r && parsed.s && parsed.v ? import_ethers17.Signature.from({
|
|
19393
21355
|
r: parsed.r,
|
|
19394
21356
|
s: parsed.s,
|
|
19395
21357
|
v: parsed.v
|
|
@@ -19400,7 +21362,7 @@ Message: ${causeMessage}${quantumContext}${mintDebtDiagnostics}`
|
|
|
19400
21362
|
if (!signatureBytes.startsWith("0x")) {
|
|
19401
21363
|
signatureBytes = "0x" + signatureBytes;
|
|
19402
21364
|
}
|
|
19403
|
-
const extendIface = new
|
|
21365
|
+
const extendIface = new import_ethers17.Interface([
|
|
19404
21366
|
"function extendPosition(bytes32 positionId, uint256 selectedTerm, uint256 quantumTimestamp, uint256 btcPrice, uint256 availableBTCBalance, uint256 proRataRenewalFee, bytes calldata extensionValidatorSignature) external returns (bool)"
|
|
19405
21367
|
]);
|
|
19406
21368
|
const extendCalldata = extendIface.encodeFunctionData("extendPosition", [
|
|
@@ -19950,7 +21912,7 @@ Message: ${causeMessage}${quantumContext}${mintDebtDiagnostics}`
|
|
|
19950
21912
|
` Converting payment amount: ${request.paymentAmount} (type: ${typeof request.paymentAmount})`
|
|
19951
21913
|
);
|
|
19952
21914
|
}
|
|
19953
|
-
const paymentAmountWei = (0,
|
|
21915
|
+
const paymentAmountWei = (0, import_ethers17.parseEther)(
|
|
19954
21916
|
request.paymentAmount.toString()
|
|
19955
21917
|
);
|
|
19956
21918
|
if (this.config.debug) {
|
|
@@ -20012,7 +21974,7 @@ Message: ${causeMessage}${quantumContext}${mintDebtDiagnostics}`
|
|
|
20012
21974
|
};
|
|
20013
21975
|
}
|
|
20014
21976
|
const ucdTokenAddress = await loanOps.ucdToken();
|
|
20015
|
-
const ucdToken = new
|
|
21977
|
+
const ucdToken = new import_ethers17.Contract(
|
|
20016
21978
|
ucdTokenAddress,
|
|
20017
21979
|
[
|
|
20018
21980
|
"function balanceOf(address) view returns (uint256)",
|
|
@@ -20022,31 +21984,41 @@ Message: ${causeMessage}${quantumContext}${mintDebtDiagnostics}`
|
|
|
20022
21984
|
signer
|
|
20023
21985
|
);
|
|
20024
21986
|
const signerAddress = await signer.getAddress();
|
|
21987
|
+
let fundsSource = signerAddress;
|
|
21988
|
+
try {
|
|
21989
|
+
const posView = await this.getPositionDetailsView(request.positionId);
|
|
21990
|
+
if (posView?.borrower)
|
|
21991
|
+
fundsSource = posView.borrower;
|
|
21992
|
+
} catch {
|
|
21993
|
+
}
|
|
21994
|
+
const isSelfRepay = fundsSource.toLowerCase() === signerAddress.toLowerCase();
|
|
20025
21995
|
const [balance, allowance] = await Promise.all([
|
|
20026
|
-
ucdToken["balanceOf"](
|
|
20027
|
-
ucdToken["allowance"](
|
|
21996
|
+
ucdToken["balanceOf"](fundsSource),
|
|
21997
|
+
ucdToken["allowance"](fundsSource, positionManagerAddress)
|
|
20028
21998
|
]);
|
|
20029
21999
|
if (this.config.debug) {
|
|
20030
|
-
log.info(` UCD
|
|
20031
|
-
log.info(
|
|
20032
|
-
|
|
20033
|
-
);
|
|
22000
|
+
log.info(` UCD funds source: ${fundsSource}${isSelfRepay ? " (self)" : " (borrower; agent submitting)"}`);
|
|
22001
|
+
log.info(` UCD Balance: ${(0, import_ethers17.formatEther)(balance)} UCD`);
|
|
22002
|
+
log.info(` UCD Allowance: ${(0, import_ethers17.formatEther)(allowance)} UCD`);
|
|
20034
22003
|
log.info(` Required: ${request.paymentAmount} UCD`);
|
|
20035
22004
|
}
|
|
20036
22005
|
if (balance < paymentAmountWei) {
|
|
20037
22006
|
return {
|
|
20038
22007
|
success: false,
|
|
20039
|
-
error: `Insufficient UCD balance: ${(0,
|
|
22008
|
+
error: `Insufficient UCD balance: ${(0, import_ethers17.formatEther)(
|
|
20040
22009
|
balance
|
|
20041
|
-
)} UCD (need ${request.paymentAmount} UCD)`
|
|
22010
|
+
)} UCD (need ${request.paymentAmount} UCD)${isSelfRepay ? "" : ` \u2014 borrower ${fundsSource} lacks funds`}`
|
|
20042
22011
|
};
|
|
20043
22012
|
}
|
|
20044
22013
|
if (allowance < paymentAmountWei) {
|
|
22014
|
+
if (!isSelfRepay) {
|
|
22015
|
+
return {
|
|
22016
|
+
success: false,
|
|
22017
|
+
error: `Borrower ${fundsSource} has insufficient UCD allowance to PositionManager (${(0, import_ethers17.formatEther)(allowance)} UCD, need ${request.paymentAmount}). The borrower must approve PositionManager before a delegated agent can repay.`
|
|
22018
|
+
};
|
|
22019
|
+
}
|
|
20045
22020
|
if (this.config.debug) {
|
|
20046
|
-
log.info(
|
|
20047
|
-
" Insufficient allowance, sending approval transaction...",
|
|
20048
|
-
{}
|
|
20049
|
-
);
|
|
22021
|
+
log.info(" Insufficient allowance, sending approval transaction...", {});
|
|
20050
22022
|
}
|
|
20051
22023
|
const approveTx = await ucdToken["approve"](
|
|
20052
22024
|
positionManagerAddress,
|
|
@@ -20054,16 +22026,13 @@ Message: ${causeMessage}${quantumContext}${mintDebtDiagnostics}`
|
|
|
20054
22026
|
);
|
|
20055
22027
|
if (this.config.debug) {
|
|
20056
22028
|
log.info(` Approval tx sent: ${approveTx.hash}`);
|
|
20057
|
-
log.info(" Waiting for approval confirmation...", {});
|
|
20058
22029
|
}
|
|
20059
22030
|
await approveTx.wait();
|
|
20060
22031
|
if (this.config.debug) {
|
|
20061
22032
|
log.info(" \u2705 UCD approval confirmed", {});
|
|
20062
22033
|
}
|
|
20063
|
-
} else {
|
|
20064
|
-
|
|
20065
|
-
log.info(" \u2705 Sufficient allowance already exists", {});
|
|
20066
|
-
}
|
|
22034
|
+
} else if (this.config.debug) {
|
|
22035
|
+
log.info(" \u2705 Sufficient allowance already exists", {});
|
|
20067
22036
|
}
|
|
20068
22037
|
let auth;
|
|
20069
22038
|
try {
|
|
@@ -20305,7 +22274,7 @@ Message: ${causeMessage}${quantumContext}${mintDebtDiagnostics}`
|
|
|
20305
22274
|
const paymentSigner = this.getSignerOrThrow();
|
|
20306
22275
|
const paymentFrom = await paymentSigner.getAddress();
|
|
20307
22276
|
const paymentProvider = contractManager.getProvider();
|
|
20308
|
-
const paymentIface = new
|
|
22277
|
+
const paymentIface = new import_ethers17.Interface([
|
|
20309
22278
|
"function makePayment(bytes32 positionId, uint256 paymentAmount, uint256 quantumTimestamp, uint256 btcPrice, bytes calldata paymentValidatorSignature) external returns (bool)"
|
|
20310
22279
|
]);
|
|
20311
22280
|
const paymentCalldata = paymentIface.encodeFunctionData("makePayment", [
|
|
@@ -20622,7 +22591,7 @@ Message: ${causeMessage}${quantumContext}${mintDebtDiagnostics}`
|
|
|
20622
22591
|
const pkpId = position.pkpId;
|
|
20623
22592
|
if (litValidatorAddr && pkpId) {
|
|
20624
22593
|
try {
|
|
20625
|
-
const litValidator = new
|
|
22594
|
+
const litValidator = new import_ethers17.Contract(
|
|
20626
22595
|
litValidatorAddr,
|
|
20627
22596
|
["function pkpOwners(bytes32) view returns (address)"],
|
|
20628
22597
|
this.getProviderOrThrow()
|
|
@@ -20630,7 +22599,7 @@ Message: ${causeMessage}${quantumContext}${mintDebtDiagnostics}`
|
|
|
20630
22599
|
const owner = await litValidator.pkpOwners(
|
|
20631
22600
|
pkpId
|
|
20632
22601
|
);
|
|
20633
|
-
if (owner && owner !==
|
|
22602
|
+
if (owner && owner !== import_ethers17.ZeroAddress) {
|
|
20634
22603
|
controller = owner;
|
|
20635
22604
|
}
|
|
20636
22605
|
} catch {
|
|
@@ -20682,7 +22651,7 @@ Message: ${causeMessage}${quantumContext}${mintDebtDiagnostics}`
|
|
|
20682
22651
|
pkpNftAddress,
|
|
20683
22652
|
this.getChipotlePublicKeyFallback()
|
|
20684
22653
|
);
|
|
20685
|
-
pkpEthAddress = (0,
|
|
22654
|
+
pkpEthAddress = (0, import_ethers17.computeAddress)(pkpPublicKey);
|
|
20686
22655
|
pkpCache.set(positionId, {
|
|
20687
22656
|
publicKey: pkpPublicKey,
|
|
20688
22657
|
ethAddress: pkpEthAddress,
|
|
@@ -21045,7 +23014,7 @@ Message: ${causeMessage}${quantumContext}${mintDebtDiagnostics}`
|
|
|
21045
23014
|
utxoVout: withdrawalParams.utxoVout
|
|
21046
23015
|
});
|
|
21047
23016
|
}
|
|
21048
|
-
const withdrawIface = new
|
|
23017
|
+
const withdrawIface = new import_ethers17.Interface([
|
|
21049
23018
|
"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)"
|
|
21050
23019
|
]);
|
|
21051
23020
|
const withdrawCalldata = withdrawIface.encodeFunctionData("withdrawBTC", [
|
|
@@ -21237,7 +23206,7 @@ Message: ${causeMessage}${quantumContext}${mintDebtDiagnostics}`
|
|
|
21237
23206
|
}
|
|
21238
23207
|
const pkpId = positionDetails.pkpId;
|
|
21239
23208
|
const vaultAddress = positionDetails.vaultAddress;
|
|
21240
|
-
if (!pkpId || pkpId ===
|
|
23209
|
+
if (!pkpId || pkpId === import_ethers17.ZeroHash) {
|
|
21241
23210
|
return { success: false, error: "Position has no PKP" };
|
|
21242
23211
|
}
|
|
21243
23212
|
if (!vaultAddress) {
|
|
@@ -21257,7 +23226,7 @@ Message: ${causeMessage}${quantumContext}${mintDebtDiagnostics}`
|
|
|
21257
23226
|
if (!publicKey) {
|
|
21258
23227
|
return { success: false, error: "Failed to resolve PKP public key" };
|
|
21259
23228
|
}
|
|
21260
|
-
const chipotlePkpAddress = (0,
|
|
23229
|
+
const chipotlePkpAddress = (0, import_ethers17.computeAddress)(publicKey);
|
|
21261
23230
|
const STANDALONE_CHAIN_NAMES = {
|
|
21262
23231
|
1: "ethereum",
|
|
21263
23232
|
11155111: "sepolia",
|
|
@@ -21607,7 +23576,7 @@ Message: ${causeMessage}${quantumContext}${mintDebtDiagnostics}`
|
|
|
21607
23576
|
const btcSpendAuthorizerAbi = [
|
|
21608
23577
|
"function getAuthorizedSpends(bytes32) view returns (tuple(string txid, uint32 vout, uint256 satoshis, string targetAddress, uint256 targetAmount, uint256 authorizedAt)[])"
|
|
21609
23578
|
];
|
|
21610
|
-
const btcSpendAuthorizer = new
|
|
23579
|
+
const btcSpendAuthorizer = new import_ethers17.Contract(
|
|
21611
23580
|
btcSpendAuthorizerAddress,
|
|
21612
23581
|
btcSpendAuthorizerAbi,
|
|
21613
23582
|
this.getProviderOrThrow()
|
|
@@ -21693,7 +23662,7 @@ Message: ${causeMessage}${quantumContext}${mintDebtDiagnostics}`
|
|
|
21693
23662
|
const abi = [
|
|
21694
23663
|
"function getAuthorizedSpends(bytes32) view returns (tuple(string txid, uint32 vout, uint256 satoshis, string targetAddress, uint256 targetAmount, uint256 authorizedAt)[])"
|
|
21695
23664
|
];
|
|
21696
|
-
const contract = new
|
|
23665
|
+
const contract = new import_ethers17.Contract(
|
|
21697
23666
|
btcSpendAuthorizerAddress,
|
|
21698
23667
|
abi,
|
|
21699
23668
|
this.getProviderOrThrow()
|
|
@@ -21707,7 +23676,7 @@ Message: ${causeMessage}${quantumContext}${mintDebtDiagnostics}`
|
|
|
21707
23676
|
targetAddress: spend.targetAddress,
|
|
21708
23677
|
targetAmount: Number(spend.targetAmount),
|
|
21709
23678
|
authorizedAt: Number(spend.authorizedAt),
|
|
21710
|
-
utxoKey: (0,
|
|
23679
|
+
utxoKey: (0, import_ethers17.solidityPackedKeccak256)(
|
|
21711
23680
|
["string", "uint32"],
|
|
21712
23681
|
[spend.txid, Number(spend.vout)]
|
|
21713
23682
|
)
|
|
@@ -21880,7 +23849,7 @@ Message: ${causeMessage}${quantumContext}${mintDebtDiagnostics}`
|
|
|
21880
23849
|
error: attRes.error ?? attRes.reason ?? `LIT recovery attestation rejected${attRes.failedStep ? ` at step ${attRes.failedStep}` : ""}`
|
|
21881
23850
|
};
|
|
21882
23851
|
}
|
|
21883
|
-
const btcSpendAuthorizer = new
|
|
23852
|
+
const btcSpendAuthorizer = new import_ethers17.Contract(
|
|
21884
23853
|
btcSpendAuthorizerAddress,
|
|
21885
23854
|
[
|
|
21886
23855
|
"function cancelStaleSpendWithProof(bytes32 positionId, bytes32 utxoKey, uint256 authorizedAt, string calldata invalidatorTxid, uint256 attestationTimestamp, bytes calldata litSignature) external"
|
|
@@ -21977,7 +23946,7 @@ Message: ${causeMessage}${quantumContext}${mintDebtDiagnostics}`
|
|
|
21977
23946
|
const positionDetails = await this.getPositionDetailsView(
|
|
21978
23947
|
params.positionId
|
|
21979
23948
|
);
|
|
21980
|
-
if (!positionDetails?.pkpId || positionDetails.pkpId ===
|
|
23949
|
+
if (!positionDetails?.pkpId || positionDetails.pkpId === import_ethers17.ZeroHash) {
|
|
21981
23950
|
return { success: false, error: "Position has no PKP" };
|
|
21982
23951
|
}
|
|
21983
23952
|
const pkpCache = this.cacheManager.getCache("pkp-data", {
|
|
@@ -21994,7 +23963,7 @@ Message: ${causeMessage}${quantumContext}${mintDebtDiagnostics}`
|
|
|
21994
23963
|
if (!publicKey) {
|
|
21995
23964
|
return { success: false, error: "Failed to resolve PKP public key" };
|
|
21996
23965
|
}
|
|
21997
|
-
const chipotlePkpAddress = (0,
|
|
23966
|
+
const chipotlePkpAddress = (0, import_ethers17.computeAddress)(publicKey);
|
|
21998
23967
|
const dc = this.config.contractAddresses || {};
|
|
21999
23968
|
const chainName = chainId === 1 ? "ethereum" : chainId === 11155111 ? "sepolia" : chainId === 1337 || chainId === 31337 ? "hardhat" : void 0;
|
|
22000
23969
|
if (!chainName) {
|
|
@@ -22570,10 +24539,10 @@ Message: ${causeMessage}${quantumContext}${mintDebtDiagnostics}`
|
|
|
22570
24539
|
"function allowance(address owner, address spender) view returns (uint256)",
|
|
22571
24540
|
"function approve(address spender, uint256 amount) returns (bool)"
|
|
22572
24541
|
];
|
|
22573
|
-
const stablecoin = new
|
|
24542
|
+
const stablecoin = new import_ethers17.Contract(params.stablecoinAddress, erc20Abi, params.signer);
|
|
22574
24543
|
const allowance = await stablecoin.allowance(signerAddress, psmAddress);
|
|
22575
24544
|
if (allowance < params.amountWei) {
|
|
22576
|
-
const approveTx = await stablecoin.approve(psmAddress,
|
|
24545
|
+
const approveTx = await stablecoin.approve(psmAddress, import_ethers17.MaxUint256);
|
|
22577
24546
|
await approveTx.wait();
|
|
22578
24547
|
}
|
|
22579
24548
|
const psm = SimplePSMV2__factory.connect(psmAddress, params.signer);
|
|
@@ -22608,10 +24577,10 @@ Message: ${causeMessage}${quantumContext}${mintDebtDiagnostics}`
|
|
|
22608
24577
|
"function allowance(address owner, address spender) view returns (uint256)",
|
|
22609
24578
|
"function approve(address spender, uint256 amount) returns (bool)"
|
|
22610
24579
|
];
|
|
22611
|
-
const ucdToken = new
|
|
24580
|
+
const ucdToken = new import_ethers17.Contract(ucdAddress, erc20Abi, params.signer);
|
|
22612
24581
|
const allowance = await ucdToken.allowance(signerAddress, ucdControllerAddress);
|
|
22613
24582
|
if (allowance < params.ucdAmountWei) {
|
|
22614
|
-
const approveTx = await ucdToken.approve(ucdControllerAddress,
|
|
24583
|
+
const approveTx = await ucdToken.approve(ucdControllerAddress, import_ethers17.MaxUint256);
|
|
22615
24584
|
await approveTx.wait();
|
|
22616
24585
|
}
|
|
22617
24586
|
const psm = SimplePSMV2__factory.connect(psmAddress, params.signer);
|
|
@@ -22630,6 +24599,132 @@ Message: ${causeMessage}${quantumContext}${mintDebtDiagnostics}`
|
|
|
22630
24599
|
* @throws if timeout is reached before subgraph catches up
|
|
22631
24600
|
*/
|
|
22632
24601
|
// ============================================================================
|
|
24602
|
+
// HIGH-LEVEL API - Agent Delegation (auto-renew) — SEPOLIA ONLY
|
|
24603
|
+
// ============================================================================
|
|
24604
|
+
/** Guard: the AgentDelegationRegistry MVP is deployed on Sepolia only. */
|
|
24605
|
+
async assertAgentDelegationSepolia() {
|
|
24606
|
+
const chainId = Number((await this.getProviderOrThrow().getNetwork()).chainId);
|
|
24607
|
+
if (chainId !== 11155111) {
|
|
24608
|
+
throw new SDKError({
|
|
24609
|
+
message: `Agent auto-renew delegation is Sepolia-only (chainId 11155111); got ${chainId}`,
|
|
24610
|
+
category: "NETWORK" /* NETWORK */,
|
|
24611
|
+
severity: "HIGH" /* HIGH */
|
|
24612
|
+
});
|
|
24613
|
+
}
|
|
24614
|
+
const addr = this.config.contractAddresses?.agentDelegationRegistry;
|
|
24615
|
+
if (!addr) {
|
|
24616
|
+
throw new SDKError({
|
|
24617
|
+
message: "AgentDelegationRegistry address not configured \u2014 provide contractAddresses.agentDelegationRegistry",
|
|
24618
|
+
category: "CONFIGURATION" /* CONFIGURATION */,
|
|
24619
|
+
severity: "HIGH" /* HIGH */
|
|
24620
|
+
});
|
|
24621
|
+
}
|
|
24622
|
+
return addr;
|
|
24623
|
+
}
|
|
24624
|
+
/**
|
|
24625
|
+
* Read a position's auto-renew delegation state (used to drive the Enable/Disable toggle).
|
|
24626
|
+
* Pure view — no signer required.
|
|
24627
|
+
*/
|
|
24628
|
+
async getAutoRenewStatus(positionId, user) {
|
|
24629
|
+
const addr = await this.assertAgentDelegationSepolia();
|
|
24630
|
+
const registry = AgentDelegationRegistry__factory.connect(addr, this.getProviderOrThrow());
|
|
24631
|
+
const pid = this.toBytes32(positionId);
|
|
24632
|
+
const grant = await registry.getLoanGrant(pid);
|
|
24633
|
+
const enabled = grant.borrower !== "0x0000000000000000000000000000000000000000" && (Number(grant.scopeBits) & 1) !== 0;
|
|
24634
|
+
const agentActive = user ? await registry.isAgentActive(user) : null;
|
|
24635
|
+
const canRenew = user ? await registry.canRenew(pid, user).then((r) => ({ ok: r.ok, reason: Number(r.reason) })) : null;
|
|
24636
|
+
return {
|
|
24637
|
+
enabled,
|
|
24638
|
+
borrower: grant.borrower,
|
|
24639
|
+
maxRenewals: Number(grant.maxRenewals),
|
|
24640
|
+
renewalsUsed: Number(grant.renewalsUsed),
|
|
24641
|
+
agentActive,
|
|
24642
|
+
canRenew
|
|
24643
|
+
};
|
|
24644
|
+
}
|
|
24645
|
+
/**
|
|
24646
|
+
* Enable auto-renew delegation for a position. Orchestrates the first-time setup: if the
|
|
24647
|
+
* borrower has no active agent, mints a fresh per-user agent PKP (via lit-ops-server) and
|
|
24648
|
+
* registers it, then records the position's renew grant. Borrower-signed.
|
|
24649
|
+
*/
|
|
24650
|
+
async enableAutoRenew(positionId, options) {
|
|
24651
|
+
const addr = await this.assertAgentDelegationSepolia();
|
|
24652
|
+
const pdrAddr = this.config.contractAddresses?.positionDelegateRegistry;
|
|
24653
|
+
if (!pdrAddr) {
|
|
24654
|
+
throw new SDKError({
|
|
24655
|
+
message: "PositionDelegateRegistry address not configured \u2014 required to authorize the renewal agent (contractAddresses.positionDelegateRegistry)",
|
|
24656
|
+
category: "CONFIGURATION" /* CONFIGURATION */,
|
|
24657
|
+
severity: "HIGH" /* HIGH */
|
|
24658
|
+
});
|
|
24659
|
+
}
|
|
24660
|
+
const signer = this.getSignerOrThrow();
|
|
24661
|
+
const user = await signer.getAddress();
|
|
24662
|
+
const registry = AgentDelegationRegistry__factory.connect(addr, signer);
|
|
24663
|
+
const pid = this.toBytes32(positionId);
|
|
24664
|
+
let agentAddress;
|
|
24665
|
+
const hasActiveAgent = await registry.isAgentActive(user);
|
|
24666
|
+
if (hasActiveAgent) {
|
|
24667
|
+
agentAddress = (await registry.agentOf(user)).agent;
|
|
24668
|
+
} else {
|
|
24669
|
+
agentAddress = await mintAgentPkp({
|
|
24670
|
+
serviceEndpoint: this.config.serviceEndpoint,
|
|
24671
|
+
authHeader: this.serverSession ? () => this.serverSession.getAuthHeader() : void 0
|
|
24672
|
+
});
|
|
24673
|
+
const validitySeconds = options?.agentValiditySeconds ?? 90 * 24 * 60 * 60;
|
|
24674
|
+
const validUntil = Math.floor(Date.now() / 1e3) + validitySeconds;
|
|
24675
|
+
const regTx = await registry.registerAgent(user, agentAddress, validUntil);
|
|
24676
|
+
await regTx.wait();
|
|
24677
|
+
}
|
|
24678
|
+
const currentDelegate = await getPositionDelegate(pid, signer, pdrAddr).catch(
|
|
24679
|
+
() => null
|
|
24680
|
+
);
|
|
24681
|
+
if (!currentDelegate || currentDelegate.toLowerCase() !== agentAddress.toLowerCase()) {
|
|
24682
|
+
const delTx = await setPositionDelegate(pid, agentAddress, signer, pdrAddr);
|
|
24683
|
+
await delTx.wait();
|
|
24684
|
+
}
|
|
24685
|
+
const tx = await registry.enableAutoRenew(
|
|
24686
|
+
pid,
|
|
24687
|
+
options?.maxRenewals ?? 0,
|
|
24688
|
+
options?.maxEndTimestamp ?? 0
|
|
24689
|
+
);
|
|
24690
|
+
const receipt = await tx.wait();
|
|
24691
|
+
return { hash: tx.hash, blockNumber: receipt?.blockNumber ?? 0, agentAddress };
|
|
24692
|
+
}
|
|
24693
|
+
/** Disable auto-renew delegation for a position (clears the grant). Borrower-signed. */
|
|
24694
|
+
async disableAutoRenew(positionId) {
|
|
24695
|
+
const addr = await this.assertAgentDelegationSepolia();
|
|
24696
|
+
const signer = this.getSignerOrThrow();
|
|
24697
|
+
const user = await signer.getAddress();
|
|
24698
|
+
const registry = AgentDelegationRegistry__factory.connect(addr, signer);
|
|
24699
|
+
const pid = this.toBytes32(positionId);
|
|
24700
|
+
const pdrAddr = this.config.contractAddresses?.positionDelegateRegistry;
|
|
24701
|
+
if (!pdrAddr) {
|
|
24702
|
+
throw new SDKError({
|
|
24703
|
+
message: "PositionDelegateRegistry address not configured \u2014 required to clear the renewal agent's Gate-1 authorization (contractAddresses.positionDelegateRegistry)",
|
|
24704
|
+
category: "CONFIGURATION" /* CONFIGURATION */,
|
|
24705
|
+
severity: "HIGH" /* HIGH */
|
|
24706
|
+
});
|
|
24707
|
+
}
|
|
24708
|
+
{
|
|
24709
|
+
const [currentDelegate, userAgent] = await Promise.all([
|
|
24710
|
+
getPositionDelegate(pid, signer, pdrAddr).catch(() => null),
|
|
24711
|
+
registry.agentOf(user).then((a) => a.agent).catch(() => null)
|
|
24712
|
+
]);
|
|
24713
|
+
if (currentDelegate && userAgent && currentDelegate.toLowerCase() === userAgent.toLowerCase()) {
|
|
24714
|
+
const clearTx = await setPositionDelegate(
|
|
24715
|
+
pid,
|
|
24716
|
+
"0x0000000000000000000000000000000000000000",
|
|
24717
|
+
signer,
|
|
24718
|
+
pdrAddr
|
|
24719
|
+
);
|
|
24720
|
+
await clearTx.wait();
|
|
24721
|
+
}
|
|
24722
|
+
}
|
|
24723
|
+
const tx = await registry.disableAutoRenew(pid);
|
|
24724
|
+
const receipt = await tx.wait();
|
|
24725
|
+
return { hash: tx.hash, blockNumber: receipt?.blockNumber ?? 0 };
|
|
24726
|
+
}
|
|
24727
|
+
// ============================================================================
|
|
22633
24728
|
// HIGH-LEVEL API - Bitcoin Operations
|
|
22634
24729
|
// ============================================================================
|
|
22635
24730
|
/**
|
|
@@ -22823,7 +24918,7 @@ Message: ${causeMessage}${quantumContext}${mintDebtDiagnostics}`
|
|
|
22823
24918
|
const maxUcdWhole = BigInt(result[3].toString());
|
|
22824
24919
|
return success({
|
|
22825
24920
|
liquidationThreshold: result[0].toString(),
|
|
22826
|
-
minimumLoanValueUcd: (0,
|
|
24921
|
+
minimumLoanValueUcd: (0, import_ethers17.formatUnits)(result[2], 18),
|
|
22827
24922
|
minimumLoanValueWei: result[2].toString(),
|
|
22828
24923
|
maxSingleLoanValueUcd: maxUcdWhole.toString(),
|
|
22829
24924
|
maxSingleLoanValueWei: (maxUcdWhole * 10n ** 18n).toString()
|
|
@@ -22860,7 +24955,7 @@ Message: ${causeMessage}${quantumContext}${mintDebtDiagnostics}`
|
|
|
22860
24955
|
const balanceWei = await provider.getBalance(address);
|
|
22861
24956
|
return success({
|
|
22862
24957
|
balanceWei: balanceWei.toString(),
|
|
22863
|
-
balanceEth: (0,
|
|
24958
|
+
balanceEth: (0, import_ethers17.formatEther)(balanceWei)
|
|
22864
24959
|
});
|
|
22865
24960
|
} catch (error) {
|
|
22866
24961
|
return failure(new SDKError({
|
|
@@ -23250,7 +25345,7 @@ Message: ${causeMessage}${quantumContext}${mintDebtDiagnostics}`
|
|
|
23250
25345
|
* Convert decimal position ID to bytes32 format
|
|
23251
25346
|
*/
|
|
23252
25347
|
toBytes32(value) {
|
|
23253
|
-
return (0,
|
|
25348
|
+
return (0, import_ethers17.zeroPadValue)((0, import_ethers17.toBeHex)(BigInt(value)), 32);
|
|
23254
25349
|
}
|
|
23255
25350
|
/**
|
|
23256
25351
|
* Check if an error indicates a technical failure vs business logic rejection
|
|
@@ -23291,7 +25386,7 @@ Message: ${causeMessage}${quantumContext}${mintDebtDiagnostics}`
|
|
|
23291
25386
|
const coreModuleAbi = [
|
|
23292
25387
|
"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))"
|
|
23293
25388
|
];
|
|
23294
|
-
const coreModule = new
|
|
25389
|
+
const coreModule = new import_ethers17.Contract(
|
|
23295
25390
|
coreModuleAddress,
|
|
23296
25391
|
coreModuleAbi,
|
|
23297
25392
|
provider
|
|
@@ -23358,7 +25453,7 @@ Message: ${causeMessage}${quantumContext}${mintDebtDiagnostics}`
|
|
|
23358
25453
|
const corePositionAbi = [
|
|
23359
25454
|
"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))"
|
|
23360
25455
|
];
|
|
23361
|
-
const corePositionContract = new
|
|
25456
|
+
const corePositionContract = new import_ethers17.Contract(
|
|
23362
25457
|
coreAddress,
|
|
23363
25458
|
corePositionAbi,
|
|
23364
25459
|
provider
|
|
@@ -23369,7 +25464,7 @@ Message: ${causeMessage}${quantumContext}${mintDebtDiagnostics}`
|
|
|
23369
25464
|
positionIdBytes32
|
|
23370
25465
|
);
|
|
23371
25466
|
const positionIdFromCore = corePosition?.positionId || corePosition?.[0] || null;
|
|
23372
|
-
if (positionIdFromCore && positionIdFromCore !==
|
|
25467
|
+
if (positionIdFromCore && positionIdFromCore !== import_ethers17.ZeroHash && positionIdFromCore !== "0x0000000000000000000000000000000000000000000000000000000000000000") {
|
|
23373
25468
|
if (this.config.debug) {
|
|
23374
25469
|
log.info("Position exists in core contract", {
|
|
23375
25470
|
positionId,
|
|
@@ -23437,7 +25532,7 @@ Message: ${causeMessage}${quantumContext}${mintDebtDiagnostics}`
|
|
|
23437
25532
|
throw new Error("loanOperationsManager address not configured");
|
|
23438
25533
|
}
|
|
23439
25534
|
const runner = this.config.contractSigner || this.getProviderOrThrow();
|
|
23440
|
-
const contract = new
|
|
25535
|
+
const contract = new import_ethers17.Contract(
|
|
23441
25536
|
addr.loanOperationsManager,
|
|
23442
25537
|
[
|
|
23443
25538
|
"function getProtocolConfig() external view returns (uint256 liquidationThreshold, uint256 minimumLoanValueUcd, uint256 minimumLoanValueWei, uint256 maxSingleLoanValueUcd)"
|
|
@@ -23450,7 +25545,7 @@ Message: ${causeMessage}${quantumContext}${mintDebtDiagnostics}`
|
|
|
23450
25545
|
const maxUcdWhole = BigInt(result[3].toString());
|
|
23451
25546
|
return {
|
|
23452
25547
|
liquidationThreshold: result[0].toString(),
|
|
23453
|
-
minimumLoanValueUcd: (0,
|
|
25548
|
+
minimumLoanValueUcd: (0, import_ethers17.formatUnits)(result[2], 18),
|
|
23454
25549
|
minimumLoanValueWei: result[2].toString(),
|
|
23455
25550
|
maxSingleLoanValueUcd: maxUcdWhole.toString(),
|
|
23456
25551
|
maxSingleLoanValueWei: (maxUcdWhole * 10n ** 18n).toString()
|
|
@@ -23468,8 +25563,8 @@ Message: ${causeMessage}${quantumContext}${mintDebtDiagnostics}`
|
|
|
23468
25563
|
const MIN_REVEAL_DELAY = 60;
|
|
23469
25564
|
const MAX_RANDOM_DELAY = 240;
|
|
23470
25565
|
const entropyInput = positionId + quantumTimestamp.toString();
|
|
23471
|
-
const hash = (0,
|
|
23472
|
-
(0,
|
|
25566
|
+
const hash = (0, import_ethers17.keccak256)(
|
|
25567
|
+
(0, import_ethers17.toUtf8Bytes)(entropyInput)
|
|
23473
25568
|
);
|
|
23474
25569
|
const randomValue = BigInt(hash);
|
|
23475
25570
|
const randomDelay = Number(randomValue % BigInt(MAX_RANDOM_DELAY));
|
|
@@ -23494,12 +25589,12 @@ Message: ${causeMessage}${quantumContext}${mintDebtDiagnostics}`
|
|
|
23494
25589
|
const rawPositionId = /^0x/i.test(params.positionId.trim()) ? params.positionId.trim().slice(2) : params.positionId.trim();
|
|
23495
25590
|
const canonicalPositionId = "0x" + rawPositionId.padStart(64, "0").toLowerCase();
|
|
23496
25591
|
const intentTimestamp = Math.floor(Date.now() / 1e3);
|
|
23497
|
-
const intentActionHash = (0,
|
|
23498
|
-
const intentHash = (0,
|
|
25592
|
+
const intentActionHash = (0, import_ethers17.keccak256)((0, import_ethers17.toUtf8Bytes)("liquidate-position"));
|
|
25593
|
+
const intentHash = (0, import_ethers17.solidityPackedKeccak256)(
|
|
23499
25594
|
["bytes32", "uint256", "uint256", "address", "bytes32"],
|
|
23500
25595
|
[canonicalPositionId, intentTimestamp, chainId, intentSigner, intentActionHash]
|
|
23501
25596
|
);
|
|
23502
|
-
const intentSignature = await signer.signMessage((0,
|
|
25597
|
+
const intentSignature = await signer.signMessage((0, import_ethers17.getBytes)(intentHash));
|
|
23503
25598
|
const response = await fetch(endpoint, {
|
|
23504
25599
|
method: "POST",
|
|
23505
25600
|
headers: { "Content-Type": "application/json" },
|
|
@@ -23551,7 +25646,7 @@ Message: ${causeMessage}${quantumContext}${mintDebtDiagnostics}`
|
|
|
23551
25646
|
const vrfSeedRaw = await lmResult.value["vrfSeeds"](positionId);
|
|
23552
25647
|
const vrfSeed = BigInt(vrfSeedRaw.toString());
|
|
23553
25648
|
if (vrfSeed !== 0n) {
|
|
23554
|
-
const finalEntropy = (0,
|
|
25649
|
+
const finalEntropy = (0, import_ethers17.solidityPackedKeccak256)(
|
|
23555
25650
|
["uint256", "uint256", "bytes32"],
|
|
23556
25651
|
[vrfSeed, BigInt(quantumTimestamp.toString()), positionId]
|
|
23557
25652
|
);
|
|
@@ -23827,30 +25922,6 @@ var EventHelpers = {
|
|
|
23827
25922
|
});
|
|
23828
25923
|
}
|
|
23829
25924
|
};
|
|
23830
|
-
|
|
23831
|
-
// src/utils/position-delegate.utils.ts
|
|
23832
|
-
var import_ethers16 = require("ethers");
|
|
23833
|
-
var POSITION_DELEGATE_REGISTRY_ABI = [
|
|
23834
|
-
"function positionDelegate(bytes32 positionId) view returns (address)",
|
|
23835
|
-
"function setPositionDelegate(bytes32 positionId, address newDelegate) external",
|
|
23836
|
-
"event PositionDelegateUpdated(bytes32 indexed positionId, address indexed oldDelegate, address indexed newDelegate)"
|
|
23837
|
-
];
|
|
23838
|
-
async function setPositionDelegate(positionId, delegate, signer, registryAddress) {
|
|
23839
|
-
const registry = new import_ethers16.Contract(
|
|
23840
|
-
registryAddress,
|
|
23841
|
-
POSITION_DELEGATE_REGISTRY_ABI,
|
|
23842
|
-
signer
|
|
23843
|
-
);
|
|
23844
|
-
return registry["setPositionDelegate"](positionId, delegate);
|
|
23845
|
-
}
|
|
23846
|
-
async function getPositionDelegate(positionId, provider, registryAddress) {
|
|
23847
|
-
const registry = new import_ethers16.Contract(
|
|
23848
|
-
registryAddress,
|
|
23849
|
-
POSITION_DELEGATE_REGISTRY_ABI,
|
|
23850
|
-
provider
|
|
23851
|
-
);
|
|
23852
|
-
return registry["positionDelegate"](positionId);
|
|
23853
|
-
}
|
|
23854
25925
|
// Annotate the CommonJS export names for ESM import in node:
|
|
23855
25926
|
0 && (module.exports = {
|
|
23856
25927
|
ALL_CONTRACTS,
|
|
@@ -23866,6 +25937,8 @@ async function getPositionDelegate(positionId, provider, registryAddress) {
|
|
|
23866
25937
|
ErrorSeverity,
|
|
23867
25938
|
EventHelpers,
|
|
23868
25939
|
LOCALHOST_CONTRACTS,
|
|
25940
|
+
LOGIN_TYPES,
|
|
25941
|
+
LOGIN_TYPES_WITH_AUDIENCE,
|
|
23869
25942
|
LRUCache,
|
|
23870
25943
|
LoanCreator,
|
|
23871
25944
|
LoanQuery,
|
|
@@ -23888,6 +25961,8 @@ async function getPositionDelegate(positionId, provider, registryAddress) {
|
|
|
23888
25961
|
buildBtcExecuteEnvelope,
|
|
23889
25962
|
buildInvalidateMessageHash,
|
|
23890
25963
|
buildInvalidateStaleSpendEnvelope,
|
|
25964
|
+
buildLoginDomain,
|
|
25965
|
+
buildSignedLoginPayload,
|
|
23891
25966
|
collectFailures,
|
|
23892
25967
|
collectSuccesses,
|
|
23893
25968
|
combine,
|