@gvnrdao/dh-sdk 0.0.340 → 0.0.342
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/contract-errors.generated.d.ts +15 -0
- package/dist/contract-errors.js +498 -0
- package/dist/contract-errors.mjs +461 -0
- package/dist/index.js +587 -225
- package/dist/index.mjs +453 -92
- package/dist/sign-guard.js +6 -0
- package/dist/sign-guard.mjs +4 -0
- package/dist/utils/chunks/eip1559-broadcast.utils.d.ts +2 -2
- package/dist/utils/contract-error-decoder.d.ts +47 -0
- package/dist/utils/quantum-revert.utils.d.ts +14 -2
- package/dist/utils/sign-guard/fee-ceiling.d.ts +16 -0
- package/dist/utils/sign-guard/index.d.ts +1 -1
- package/package.json +13 -3
package/dist/index.js
CHANGED
|
@@ -2351,7 +2351,7 @@ ${errorReport}`);
|
|
|
2351
2351
|
}
|
|
2352
2352
|
init_debug_logger();
|
|
2353
2353
|
init_session_signature_cache();
|
|
2354
|
-
var
|
|
2354
|
+
var import_ethers24 = require("ethers");
|
|
2355
2355
|
var EXPIRED_LOAN_MIN_LIQUIDATION_THRESHOLD_BPS = 11e3;
|
|
2356
2356
|
var GRACE_PERIOD_DAYS = 30;
|
|
2357
2357
|
var SATOSHIS_PER_BITCOIN = 100000000n;
|
|
@@ -5279,12 +5279,12 @@ ${auth.clientId}`;
|
|
|
5279
5279
|
}
|
|
5280
5280
|
async function executeVaultSnapshot(params) {
|
|
5281
5281
|
global.ethers = {
|
|
5282
|
-
...
|
|
5282
|
+
...import_ethers24.ethers,
|
|
5283
5283
|
providers: {
|
|
5284
|
-
StaticJsonRpcProvider:
|
|
5284
|
+
StaticJsonRpcProvider: import_ethers24.ethers.JsonRpcProvider
|
|
5285
5285
|
},
|
|
5286
|
-
Contract:
|
|
5287
|
-
utils:
|
|
5286
|
+
Contract: import_ethers24.ethers.Contract,
|
|
5287
|
+
utils: import_ethers24.ethers
|
|
5288
5288
|
// v6 moved utils to top level
|
|
5289
5289
|
};
|
|
5290
5290
|
global.Lit = {
|
|
@@ -5866,7 +5866,7 @@ __export(src_exports, {
|
|
|
5866
5866
|
module.exports = __toCommonJS(src_exports);
|
|
5867
5867
|
|
|
5868
5868
|
// src/modules/diamond-hands-sdk.ts
|
|
5869
|
-
var
|
|
5869
|
+
var import_ethers22 = require("ethers");
|
|
5870
5870
|
|
|
5871
5871
|
// src/types/result.ts
|
|
5872
5872
|
function success(value) {
|
|
@@ -6249,15 +6249,55 @@ var SDKError = class _SDKError extends Error {
|
|
|
6249
6249
|
};
|
|
6250
6250
|
|
|
6251
6251
|
// src/utils/chunks/eip1559-broadcast.utils.ts
|
|
6252
|
+
var import_ethers2 = require("ethers");
|
|
6253
|
+
|
|
6254
|
+
// src/utils/sign-guard/fee-ceiling.ts
|
|
6252
6255
|
var import_ethers = require("ethers");
|
|
6256
|
+
var MAX_GAS_LIMIT = 5000000n;
|
|
6257
|
+
var MAX_FEE_PER_GAS_WEI = 2000000000000n;
|
|
6258
|
+
var DEFAULT_MAX_TX_FEE_WEI = 250000000000000000n;
|
|
6259
|
+
var PRIORITY_FEE_FLOOR_WEI = 100000000n;
|
|
6260
|
+
var PRIORITY_FEE_CAP_WEI = 3000000000n;
|
|
6261
|
+
var DEFAULT_FEE_CEILING = {
|
|
6262
|
+
maxGasLimit: MAX_GAS_LIMIT,
|
|
6263
|
+
maxFeePerGasWei: MAX_FEE_PER_GAS_WEI,
|
|
6264
|
+
maxTxFeeWei: DEFAULT_MAX_TX_FEE_WEI
|
|
6265
|
+
};
|
|
6266
|
+
function fmtEth(wei) {
|
|
6267
|
+
return `${import_ethers.ethers.formatEther(wei)} ETH`;
|
|
6268
|
+
}
|
|
6269
|
+
function fmtGwei(wei) {
|
|
6270
|
+
return `${import_ethers.ethers.formatUnits(wei, "gwei")} gwei`;
|
|
6271
|
+
}
|
|
6272
|
+
function worstCaseFeeWei(gasLimit, maxFeePerGas) {
|
|
6273
|
+
if (gasLimit == null || maxFeePerGas == null)
|
|
6274
|
+
return null;
|
|
6275
|
+
return gasLimit * maxFeePerGas;
|
|
6276
|
+
}
|
|
6277
|
+
function assertFeeCeiling(gasLimit, maxFeePerGas, raise, ceiling = DEFAULT_FEE_CEILING) {
|
|
6278
|
+
if (gasLimit != null && gasLimit > ceiling.maxGasLimit) {
|
|
6279
|
+
raise(`gasLimit ${gasLimit} exceeds the signing ceiling of ${ceiling.maxGasLimit}`);
|
|
6280
|
+
}
|
|
6281
|
+
if (maxFeePerGas != null && maxFeePerGas > ceiling.maxFeePerGasWei) {
|
|
6282
|
+
raise(
|
|
6283
|
+
`maxFeePerGas ${fmtGwei(maxFeePerGas)} exceeds the signing ceiling of ${fmtGwei(ceiling.maxFeePerGasWei)}`
|
|
6284
|
+
);
|
|
6285
|
+
}
|
|
6286
|
+
const worst = worstCaseFeeWei(gasLimit, maxFeePerGas);
|
|
6287
|
+
if (worst != null && worst > ceiling.maxTxFeeWei) {
|
|
6288
|
+
raise(
|
|
6289
|
+
`worst-case transaction fee ${fmtEth(worst)} (gasLimit ${gasLimit} \xD7 ${fmtGwei(maxFeePerGas)}) exceeds the signing ceiling of ${fmtEth(ceiling.maxTxFeeWei)}.${ceiling.raiseHint ? ` ${ceiling.raiseHint}` : ""}`
|
|
6290
|
+
);
|
|
6291
|
+
}
|
|
6292
|
+
}
|
|
6293
|
+
|
|
6294
|
+
// src/utils/chunks/eip1559-broadcast.utils.ts
|
|
6253
6295
|
var MINT_UCD_GAS_CEILING = BigInt(13e5);
|
|
6254
6296
|
var WITHDRAW_BTC_GAS_CEILING = BigInt(3e6);
|
|
6255
6297
|
var MAKE_PAYMENT_GAS_CEILING = BigInt(1e6);
|
|
6256
6298
|
var EXTEND_POSITION_GAS_CEILING = BigInt(1e6);
|
|
6257
6299
|
var LIQUIDATION_COMMIT_GAS_CEILING = BigInt(1e6);
|
|
6258
6300
|
var LIQUIDATION_REVEAL_GAS_CEILING = BigInt(2e6);
|
|
6259
|
-
var PRIORITY_FEE_FLOOR_WEI = (0, import_ethers.parseUnits)("0.1", "gwei");
|
|
6260
|
-
var PRIORITY_FEE_CAP_WEI = (0, import_ethers.parseUnits)("3", "gwei");
|
|
6261
6301
|
var FEE_HISTORY_BLOCK_COUNT = 20;
|
|
6262
6302
|
var FEE_HISTORY_REWARD_PERCENTILE = 75;
|
|
6263
6303
|
function isJsonRpcSendable(provider) {
|
|
@@ -6278,12 +6318,12 @@ function parseFeeHistory(raw) {
|
|
|
6278
6318
|
`eth_feeHistory returned no reward percentiles \u2014 the RPC ignored the rewardPercentiles argument: ${JSON.stringify(raw)}`
|
|
6279
6319
|
);
|
|
6280
6320
|
}
|
|
6281
|
-
const nextBaseFee = (0,
|
|
6321
|
+
const nextBaseFee = (0, import_ethers2.getBigInt)(baseFeePerGas[baseFeePerGas.length - 1], "baseFeePerGas");
|
|
6282
6322
|
const tips = reward.map((perBlock, i) => {
|
|
6283
6323
|
if (!Array.isArray(perBlock) || perBlock.length === 0) {
|
|
6284
6324
|
throw new Error(`eth_feeHistory reward row ${i} is empty: ${JSON.stringify(raw)}`);
|
|
6285
6325
|
}
|
|
6286
|
-
return (0,
|
|
6326
|
+
return (0, import_ethers2.getBigInt)(perBlock[0], `reward[${i}]`);
|
|
6287
6327
|
});
|
|
6288
6328
|
return { nextBaseFee, tips };
|
|
6289
6329
|
}
|
|
@@ -6317,7 +6357,7 @@ async function resolveEip1559FeeFields(feeProvider) {
|
|
|
6317
6357
|
}
|
|
6318
6358
|
const history = parseFeeHistory(
|
|
6319
6359
|
await feeProvider.send("eth_feeHistory", [
|
|
6320
|
-
(0,
|
|
6360
|
+
(0, import_ethers2.toQuantity)(FEE_HISTORY_BLOCK_COUNT),
|
|
6321
6361
|
"latest",
|
|
6322
6362
|
[FEE_HISTORY_REWARD_PERCENTILE]
|
|
6323
6363
|
])
|
|
@@ -6440,7 +6480,7 @@ function validateSDKConfig(config) {
|
|
|
6440
6480
|
}
|
|
6441
6481
|
|
|
6442
6482
|
// src/utils/mint-authorization.utils.ts
|
|
6443
|
-
var
|
|
6483
|
+
var import_ethers4 = require("ethers");
|
|
6444
6484
|
|
|
6445
6485
|
// src/utils/quantum-timing.ts
|
|
6446
6486
|
var QUANTUM_WINDOW_SECONDS = 60;
|
|
@@ -6548,7 +6588,7 @@ async function awaitSafeSubmissionWindowOnChain(signatureQuantum, chainNow, slee
|
|
|
6548
6588
|
}
|
|
6549
6589
|
|
|
6550
6590
|
// src/utils/borrower-authorization-712.ts
|
|
6551
|
-
var
|
|
6591
|
+
var import_ethers3 = require("ethers");
|
|
6552
6592
|
init_deployment_addresses();
|
|
6553
6593
|
var BORROWER_AUTHORIZATION_712_DOMAIN_NAME = "DiamondHands.Protocol";
|
|
6554
6594
|
var BORROWER_AUTHORIZATION_712_DOMAIN_VERSION = "1";
|
|
@@ -6754,7 +6794,7 @@ async function getPKPPublicKeyFromTokenId(pkpTokenId, provider, pkpNftContractAd
|
|
|
6754
6794
|
`pkpNftContractAddress is required for getPKPPublicKeyFromTokenId`
|
|
6755
6795
|
);
|
|
6756
6796
|
}
|
|
6757
|
-
const pkpNft = new
|
|
6797
|
+
const pkpNft = new import_ethers4.Contract(
|
|
6758
6798
|
pkpNftContractAddress,
|
|
6759
6799
|
PKP_NFT_ABI,
|
|
6760
6800
|
provider
|
|
@@ -6791,7 +6831,7 @@ async function generateBalanceConfirmationAuthorization(positionId, chainId, sig
|
|
|
6791
6831
|
const timestamp = calculateNextQuantumTimestamp();
|
|
6792
6832
|
const caller = await signer.getAddress();
|
|
6793
6833
|
const action = "confirm-balance";
|
|
6794
|
-
const actionHash = (0,
|
|
6834
|
+
const actionHash = (0, import_ethers4.keccak256)((0, import_ethers4.toUtf8Bytes)(action));
|
|
6795
6835
|
const types = [
|
|
6796
6836
|
"bytes32",
|
|
6797
6837
|
// positionId
|
|
@@ -6805,8 +6845,8 @@ async function generateBalanceConfirmationAuthorization(positionId, chainId, sig
|
|
|
6805
6845
|
// actionHash
|
|
6806
6846
|
];
|
|
6807
6847
|
const values = [positionId, timestamp, chainId, caller, actionHash];
|
|
6808
|
-
const messageHash = (0,
|
|
6809
|
-
const messageHashBytes = (0,
|
|
6848
|
+
const messageHash = (0, import_ethers4.solidityPackedKeccak256)(types, values);
|
|
6849
|
+
const messageHashBytes = (0, import_ethers4.getBytes)(messageHash);
|
|
6810
6850
|
const signature = await signer.signMessage(messageHashBytes);
|
|
6811
6851
|
return {
|
|
6812
6852
|
positionId,
|
|
@@ -6901,7 +6941,7 @@ function maxPrincipalWithinLoanCap(params) {
|
|
|
6901
6941
|
}
|
|
6902
6942
|
|
|
6903
6943
|
// src/utils/eip712-login.ts
|
|
6904
|
-
var
|
|
6944
|
+
var import_ethers5 = require("ethers");
|
|
6905
6945
|
function buildLoginDomain(chainId) {
|
|
6906
6946
|
return {
|
|
6907
6947
|
name: "Diamond Hands",
|
|
@@ -6947,7 +6987,7 @@ async function buildSignedLoginPayload(signer, chainId, audience, reuse, withSta
|
|
|
6947
6987
|
...statement ? { statement } : {},
|
|
6948
6988
|
address,
|
|
6949
6989
|
issuedAt: reuse?.issuedAt ?? Math.floor(Date.now() / 1e3),
|
|
6950
|
-
nonce: reuse?.nonce ?? (0,
|
|
6990
|
+
nonce: reuse?.nonce ?? (0, import_ethers5.hexlify)((0, import_ethers5.randomBytes)(32)),
|
|
6951
6991
|
...audience ? { audience } : {}
|
|
6952
6992
|
};
|
|
6953
6993
|
const signature = await signer.signTypedData(
|
|
@@ -7549,22 +7589,19 @@ var ServerSession = class {
|
|
|
7549
7589
|
};
|
|
7550
7590
|
|
|
7551
7591
|
// src/utils/quantum-revert.utils.ts
|
|
7552
|
-
var
|
|
7592
|
+
var import_ethers6 = require("ethers");
|
|
7553
7593
|
var DEAD_ZONE_VIOLATION_SELECTOR = "0xbe4b82c1";
|
|
7554
7594
|
var ERROR_STRING_SELECTOR = "0x08c379a0";
|
|
7555
7595
|
var PANIC_SELECTOR = "0x4e487b71";
|
|
7556
7596
|
var QUANTUM_REVERT_NAMES = {
|
|
7557
7597
|
"0xbe4b82c1": "DeadZoneViolation()",
|
|
7558
|
-
"0x137f3b70": "InDeadZone()",
|
|
7559
|
-
"0x131d9a21": "QuantumExpired()",
|
|
7560
7598
|
"0x52ce5d58": "QuantumAlreadyUsed()",
|
|
7561
7599
|
"0x3e76a3c9": "QuantumOutsideWindow()",
|
|
7562
|
-
"0x8baa579f": "InvalidSignature()",
|
|
7563
7600
|
"0x62278171": "InvalidValidatorSignature()",
|
|
7564
|
-
"
|
|
7565
|
-
"
|
|
7566
|
-
"
|
|
7567
|
-
"0xd92e233d": "
|
|
7601
|
+
"0x82b42900": "Unauthorized()",
|
|
7602
|
+
"0x3ee5aeb5": "ReentrancyGuardReentrantCall()",
|
|
7603
|
+
"0x0a0b0d79": "ValidationFailed()",
|
|
7604
|
+
"0xd92e233d": "ZeroAddress()",
|
|
7568
7605
|
"0x36bfdeea": "StateHashMismatch()",
|
|
7569
7606
|
"0xb9d419a7": "DebtUpdateVerificationFailed()",
|
|
7570
7607
|
"0xc7e20553": "DebtUpdateVerificationFailedDetailed(bytes32,uint256,uint256,uint256,uint256,uint256)",
|
|
@@ -7580,13 +7617,13 @@ function decodeQuantumRevert(e) {
|
|
|
7580
7617
|
if (!name && selector && data) {
|
|
7581
7618
|
try {
|
|
7582
7619
|
if (selector === ERROR_STRING_SELECTOR) {
|
|
7583
|
-
const [message] =
|
|
7620
|
+
const [message] = import_ethers6.AbiCoder.defaultAbiCoder().decode(
|
|
7584
7621
|
["string"],
|
|
7585
7622
|
"0x" + data.slice(10)
|
|
7586
7623
|
);
|
|
7587
7624
|
name = `Error("${message}")`;
|
|
7588
7625
|
} else if (selector === PANIC_SELECTOR) {
|
|
7589
|
-
const [code] =
|
|
7626
|
+
const [code] = import_ethers6.AbiCoder.defaultAbiCoder().decode(
|
|
7590
7627
|
["uint256"],
|
|
7591
7628
|
"0x" + data.slice(10)
|
|
7592
7629
|
);
|
|
@@ -7838,17 +7875,17 @@ async function reconcileAuthorizedSpend(spend, esploraBaseUrl, httpGetJson = def
|
|
|
7838
7875
|
}
|
|
7839
7876
|
|
|
7840
7877
|
// src/utils/stale-spend-invalidate-message.ts
|
|
7841
|
-
var
|
|
7878
|
+
var import_ethers7 = require("ethers");
|
|
7842
7879
|
var RECOVERY_INVALIDATE_ACTION = "btc-utxo-invalidator";
|
|
7843
7880
|
var QUANTUM_SECONDS = 60;
|
|
7844
7881
|
var QUANTUM_SAFE_THRESHOLD = 40;
|
|
7845
7882
|
function buildInvalidateMessageHash(params) {
|
|
7846
|
-
const positionIdBytes32 = (0,
|
|
7883
|
+
const positionIdBytes32 = (0, import_ethers7.zeroPadValue)(
|
|
7847
7884
|
params.positionId.startsWith("0x") ? params.positionId : `0x${params.positionId}`,
|
|
7848
7885
|
32
|
|
7849
7886
|
);
|
|
7850
|
-
const actionHash = (0,
|
|
7851
|
-
return (0,
|
|
7887
|
+
const actionHash = (0, import_ethers7.keccak256)((0, import_ethers7.toUtf8Bytes)(RECOVERY_INVALIDATE_ACTION));
|
|
7888
|
+
return (0, import_ethers7.solidityPackedKeccak256)(
|
|
7852
7889
|
[
|
|
7853
7890
|
"bytes32",
|
|
7854
7891
|
// positionId
|
|
@@ -7894,7 +7931,7 @@ async function buildInvalidateStaleSpendEnvelope(params) {
|
|
|
7894
7931
|
utxoTxid,
|
|
7895
7932
|
utxoVout
|
|
7896
7933
|
});
|
|
7897
|
-
const signature = await signer.signMessage((0,
|
|
7934
|
+
const signature = await signer.signMessage((0, import_ethers7.getBytes)(messageHash));
|
|
7898
7935
|
const borrowerAddress = await signer.getAddress();
|
|
7899
7936
|
return {
|
|
7900
7937
|
positionId,
|
|
@@ -7909,7 +7946,7 @@ async function buildInvalidateStaleSpendEnvelope(params) {
|
|
|
7909
7946
|
}
|
|
7910
7947
|
|
|
7911
7948
|
// src/utils/btc-withdrawal-message.ts
|
|
7912
|
-
var
|
|
7949
|
+
var import_ethers8 = require("ethers");
|
|
7913
7950
|
var QUANTUM_SECONDS2 = 60;
|
|
7914
7951
|
var QUANTUM_SAFE_THRESHOLD2 = 40;
|
|
7915
7952
|
function hashBtcInputSet(utxos) {
|
|
@@ -7940,7 +7977,7 @@ function hashBtcInputSet(utxos) {
|
|
|
7940
7977
|
seen.add(key);
|
|
7941
7978
|
}
|
|
7942
7979
|
const canonical = normalized.sort((a, b) => a.txid < b.txid ? -1 : a.txid > b.txid ? 1 : a.vout - b.vout).map((u) => `${u.txid}:${u.vout}:${u.value}`).join("|");
|
|
7943
|
-
return (0,
|
|
7980
|
+
return (0, import_ethers8.keccak256)((0, import_ethers8.toUtf8Bytes)(canonical));
|
|
7944
7981
|
}
|
|
7945
7982
|
async function buildBtcExecuteEnvelope(params) {
|
|
7946
7983
|
const {
|
|
@@ -7985,15 +8022,15 @@ async function buildBtcExecuteEnvelope(params) {
|
|
|
7985
8022
|
} else {
|
|
7986
8023
|
timestamp = currentQuantumStart;
|
|
7987
8024
|
}
|
|
7988
|
-
const actionHash = (0,
|
|
7989
|
-
(0,
|
|
8025
|
+
const actionHash = (0, import_ethers8.keccak256)(
|
|
8026
|
+
(0, import_ethers8.toUtf8Bytes)("execute-btc-withdrawal")
|
|
7990
8027
|
);
|
|
7991
8028
|
const utxoIdentifier = `${txid}:${vout}`;
|
|
7992
|
-
const positionIdBytes32 = (0,
|
|
8029
|
+
const positionIdBytes32 = (0, import_ethers8.zeroPadValue)(
|
|
7993
8030
|
positionId.startsWith("0x") ? positionId : `0x${positionId}`,
|
|
7994
8031
|
32
|
|
7995
8032
|
);
|
|
7996
|
-
const messageHash = (0,
|
|
8033
|
+
const messageHash = (0, import_ethers8.solidityPackedKeccak256)(
|
|
7997
8034
|
[
|
|
7998
8035
|
"bytes32",
|
|
7999
8036
|
// positionId
|
|
@@ -8026,7 +8063,7 @@ async function buildBtcExecuteEnvelope(params) {
|
|
|
8026
8063
|
actionHash
|
|
8027
8064
|
]
|
|
8028
8065
|
);
|
|
8029
|
-
const userSignature = await signer.signMessage((0,
|
|
8066
|
+
const userSignature = await signer.signMessage((0, import_ethers8.getBytes)(messageHash));
|
|
8030
8067
|
const borrowerAddress = await signer.getAddress();
|
|
8031
8068
|
return {
|
|
8032
8069
|
positionId,
|
|
@@ -8090,7 +8127,7 @@ function maybeTemperSignature(signature, shouldTemper, operationName) {
|
|
|
8090
8127
|
}
|
|
8091
8128
|
|
|
8092
8129
|
// src/utils/address-conversion.utils.ts
|
|
8093
|
-
var
|
|
8130
|
+
var import_ethers9 = require("ethers");
|
|
8094
8131
|
|
|
8095
8132
|
// src/utils/chunks/bitcoin-utils.ts
|
|
8096
8133
|
var import_sha256 = require("@noble/hashes/sha256");
|
|
@@ -8388,7 +8425,7 @@ function normalizeBitcoinAddress(address) {
|
|
|
8388
8425
|
}
|
|
8389
8426
|
|
|
8390
8427
|
// src/protocol/protocol-pause.ts
|
|
8391
|
-
var
|
|
8428
|
+
var import_ethers10 = require("ethers");
|
|
8392
8429
|
var GET_PROTOCOL_PAUSE_STATUS_ABI = [
|
|
8393
8430
|
"function getProtocolPauseStatus() view returns (tuple(bool positionManagerPaused, bool positionManagerLiquidationsPaused, bool positionManagerCorePaused, bool loanOperationsPaused, bool collateralManagerPaused, bool liquidationManagerPaused, bool circuitBreakerPaused, bool ucdControllerPaused, bool ucdTokenPaused, bool simplePsmPaused))"
|
|
8394
8431
|
];
|
|
@@ -8410,7 +8447,7 @@ function rowToStatus(row) {
|
|
|
8410
8447
|
return row;
|
|
8411
8448
|
}
|
|
8412
8449
|
async function fetchProtocolPauseStatus(provider, positionManagerAddress) {
|
|
8413
|
-
const iface = new
|
|
8450
|
+
const iface = new import_ethers10.Interface(GET_PROTOCOL_PAUSE_STATUS_ABI);
|
|
8414
8451
|
const data = iface.encodeFunctionData("getProtocolPauseStatus", []);
|
|
8415
8452
|
const raw = await provider.call({ to: positionManagerAddress, data });
|
|
8416
8453
|
const decoded = iface.decodeFunctionResult("getProtocolPauseStatus", raw);
|
|
@@ -8543,7 +8580,7 @@ function extractOptionalLitSignature(raw) {
|
|
|
8543
8580
|
}
|
|
8544
8581
|
|
|
8545
8582
|
// src/modules/contract/contract-manager.module.ts
|
|
8546
|
-
var
|
|
8583
|
+
var import_ethers11 = require("ethers");
|
|
8547
8584
|
init_deployment_addresses();
|
|
8548
8585
|
var POSITION_MANAGER_ABI = [
|
|
8549
8586
|
"function createPosition(bytes32 pkpId, bytes calldata validatorSignature, string mainnetVaultAddress, string regtestVaultAddress, uint256 selectedTermMonths, uint256 validatorVersion, bytes calldata pkpPublicKey) external returns (bytes32 positionId)",
|
|
@@ -8617,38 +8654,38 @@ var ContractManager = class {
|
|
|
8617
8654
|
}
|
|
8618
8655
|
const contractRunner = runner;
|
|
8619
8656
|
const contracts = {
|
|
8620
|
-
positionManager: new
|
|
8657
|
+
positionManager: new import_ethers11.Contract(
|
|
8621
8658
|
contractAddresses.positionManager,
|
|
8622
8659
|
POSITION_MANAGER_ABI,
|
|
8623
8660
|
contractRunner
|
|
8624
8661
|
),
|
|
8625
|
-
loanOperationsManager: new
|
|
8626
|
-
contractAddresses.loanOperationsManager ||
|
|
8662
|
+
loanOperationsManager: new import_ethers11.Contract(
|
|
8663
|
+
contractAddresses.loanOperationsManager || import_ethers11.ZeroAddress,
|
|
8627
8664
|
LOAN_OPS_ABI,
|
|
8628
8665
|
contractRunner
|
|
8629
8666
|
),
|
|
8630
|
-
ucdController: new
|
|
8667
|
+
ucdController: new import_ethers11.Contract(
|
|
8631
8668
|
contractAddresses.ucdToken,
|
|
8632
8669
|
UCD_CONTROLLER_ABI,
|
|
8633
8670
|
contractRunner
|
|
8634
8671
|
),
|
|
8635
|
-
termManager: new
|
|
8636
|
-
contractAddresses.termManager ||
|
|
8672
|
+
termManager: new import_ethers11.Contract(
|
|
8673
|
+
contractAddresses.termManager || import_ethers11.ZeroAddress,
|
|
8637
8674
|
TERM_MANAGER_ABI,
|
|
8638
8675
|
contractRunner
|
|
8639
8676
|
),
|
|
8640
|
-
circuitBreaker: new
|
|
8641
|
-
contractAddresses.circuitBreaker ||
|
|
8677
|
+
circuitBreaker: new import_ethers11.Contract(
|
|
8678
|
+
contractAddresses.circuitBreaker || import_ethers11.ZeroAddress,
|
|
8642
8679
|
CIRCUIT_BREAKER_ABI,
|
|
8643
8680
|
contractRunner
|
|
8644
8681
|
),
|
|
8645
|
-
liquidationManager: new
|
|
8646
|
-
contractAddresses.liquidationManager ||
|
|
8682
|
+
liquidationManager: new import_ethers11.Contract(
|
|
8683
|
+
contractAddresses.liquidationManager || import_ethers11.ZeroAddress,
|
|
8647
8684
|
LIQUIDATION_MANAGER_ABI,
|
|
8648
8685
|
contractRunner
|
|
8649
8686
|
),
|
|
8650
|
-
bitcoinWithdrawalAddressRegistry: new
|
|
8651
|
-
contractAddresses.bitcoinWithdrawalAddressRegistry ||
|
|
8687
|
+
bitcoinWithdrawalAddressRegistry: new import_ethers11.Contract(
|
|
8688
|
+
contractAddresses.bitcoinWithdrawalAddressRegistry || import_ethers11.ZeroAddress,
|
|
8652
8689
|
BITCOIN_WITHDRAWAL_ADDRESS_REGISTRY_ABI,
|
|
8653
8690
|
contractRunner
|
|
8654
8691
|
)
|
|
@@ -8697,13 +8734,13 @@ var ContractManager = class {
|
|
|
8697
8734
|
const address = addresses[key];
|
|
8698
8735
|
if (!address) {
|
|
8699
8736
|
missing.push(String(key));
|
|
8700
|
-
} else if (!(0,
|
|
8737
|
+
} else if (!(0, import_ethers11.isAddress)(address)) {
|
|
8701
8738
|
invalid.push(String(key));
|
|
8702
8739
|
}
|
|
8703
8740
|
}
|
|
8704
8741
|
for (const key of optionalAddresses) {
|
|
8705
8742
|
const address = addresses[key];
|
|
8706
|
-
if (address && !(0,
|
|
8743
|
+
if (address && !(0, import_ethers11.isAddress)(address)) {
|
|
8707
8744
|
invalid.push(String(key));
|
|
8708
8745
|
}
|
|
8709
8746
|
}
|
|
@@ -9669,7 +9706,7 @@ function createPKPManager(config) {
|
|
|
9669
9706
|
}
|
|
9670
9707
|
|
|
9671
9708
|
// src/modules/loan/loan-creator.module.ts
|
|
9672
|
-
var
|
|
9709
|
+
var import_ethers12 = require("ethers");
|
|
9673
9710
|
var import_dh_lit_actions = __toESM(require_pkg_src());
|
|
9674
9711
|
|
|
9675
9712
|
// src/utils/contract-wallet.utils.ts
|
|
@@ -10028,11 +10065,11 @@ var LoanCreator = class {
|
|
|
10028
10065
|
try {
|
|
10029
10066
|
const mainnetVaultAddress = bitcoinAddresses.mainnet;
|
|
10030
10067
|
const regtestVaultAddress = bitcoinAddresses.regtest;
|
|
10031
|
-
const pkpIdBytes32 = (0,
|
|
10032
|
-
(0,
|
|
10068
|
+
const pkpIdBytes32 = (0, import_ethers12.zeroPadValue)(
|
|
10069
|
+
(0, import_ethers12.toBeHex)(BigInt(pkpData.tokenId)),
|
|
10033
10070
|
32
|
|
10034
10071
|
);
|
|
10035
|
-
const pkpPublicKeyUncompressed =
|
|
10072
|
+
const pkpPublicKeyUncompressed = import_ethers12.SigningKey.computePublicKey(
|
|
10036
10073
|
pkpData.publicKey,
|
|
10037
10074
|
false
|
|
10038
10075
|
);
|
|
@@ -10045,7 +10082,7 @@ var LoanCreator = class {
|
|
|
10045
10082
|
);
|
|
10046
10083
|
log.debug(`BigInt conversion: ${BigInt(pkpData.tokenId).toString()}`);
|
|
10047
10084
|
log.debug(
|
|
10048
|
-
`Hex from BigInt: ${(0,
|
|
10085
|
+
`Hex from BigInt: ${(0, import_ethers12.toBeHex)(BigInt(pkpData.tokenId))}`
|
|
10049
10086
|
);
|
|
10050
10087
|
log.debug(`Final bytes32 (zero-padded): ${pkpIdBytes32}`);
|
|
10051
10088
|
log.debug(
|
|
@@ -10217,8 +10254,8 @@ var LoanCreator = class {
|
|
|
10217
10254
|
}
|
|
10218
10255
|
}
|
|
10219
10256
|
if (this.config.debug) {
|
|
10220
|
-
const pkpIdBytes32Check = (0,
|
|
10221
|
-
(0,
|
|
10257
|
+
const pkpIdBytes32Check = (0, import_ethers12.zeroPadValue)(
|
|
10258
|
+
(0, import_ethers12.toBeHex)(BigInt(pkpData.tokenId)),
|
|
10222
10259
|
32
|
|
10223
10260
|
);
|
|
10224
10261
|
log.error("\u274C Loan creation transaction failed", {
|
|
@@ -10379,7 +10416,7 @@ var LoanCreator = class {
|
|
|
10379
10416
|
const coreAddress = this.config.contractManager.getContractAddresses().positionManagerCore;
|
|
10380
10417
|
if (coreAddress) {
|
|
10381
10418
|
try {
|
|
10382
|
-
const core = new
|
|
10419
|
+
const core = new import_ethers12.Contract(
|
|
10383
10420
|
coreAddress,
|
|
10384
10421
|
[
|
|
10385
10422
|
"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))"
|
|
@@ -10421,8 +10458,8 @@ var LoanCreator = class {
|
|
|
10421
10458
|
const newEventAbi = [
|
|
10422
10459
|
"event PositionCreated(bytes32 indexed positionId, bytes32 indexed pkpId, address indexed borrower, uint256 requestedCollateralRatio, uint256 selectedTerm, uint256 expiryAt)"
|
|
10423
10460
|
];
|
|
10424
|
-
const oldIface = new
|
|
10425
|
-
const newIface = new
|
|
10461
|
+
const oldIface = new import_ethers12.Interface(oldEventAbi);
|
|
10462
|
+
const newIface = new import_ethers12.Interface(newEventAbi);
|
|
10426
10463
|
let positionId;
|
|
10427
10464
|
if (this.config.debug) {
|
|
10428
10465
|
log.info("\u{1F50D} Parsing transaction receipt logs", {
|
|
@@ -10516,7 +10553,7 @@ var LoanStatus = /* @__PURE__ */ ((LoanStatus2) => {
|
|
|
10516
10553
|
})(LoanStatus || {});
|
|
10517
10554
|
|
|
10518
10555
|
// src/modules/loan/loan-query.module.ts
|
|
10519
|
-
var
|
|
10556
|
+
var import_ethers13 = require("ethers");
|
|
10520
10557
|
|
|
10521
10558
|
// src/constants/chunks/sdk-limits.ts
|
|
10522
10559
|
var THE_GRAPH_MAX_BATCH_SIZE = 1e3;
|
|
@@ -10913,7 +10950,7 @@ var LoanQuery = class {
|
|
|
10913
10950
|
const isChipotlePkpId2 = typeof rawId === "string" && isNormalizedChipotlePkpId(rawId);
|
|
10914
10951
|
if (isChipotlePkpId2) {
|
|
10915
10952
|
if (this.config.positionManagerCoreAddress && this.config.provider) {
|
|
10916
|
-
const pmContract = new
|
|
10953
|
+
const pmContract = new import_ethers13.Contract(
|
|
10917
10954
|
this.config.positionManagerCoreAddress,
|
|
10918
10955
|
POSITION_CORE_ABI,
|
|
10919
10956
|
this.config.provider
|
|
@@ -11016,7 +11053,7 @@ var LoanQuery = class {
|
|
|
11016
11053
|
*/
|
|
11017
11054
|
async getBorrowerUcdDebtSummary(borrower) {
|
|
11018
11055
|
const trimmed = typeof borrower === "string" ? borrower.trim() : "";
|
|
11019
|
-
if (!(0,
|
|
11056
|
+
if (!(0, import_ethers13.isAddress)(trimmed)) {
|
|
11020
11057
|
return failure(
|
|
11021
11058
|
new SDKError({
|
|
11022
11059
|
message: `Borrower must be an EVM address for a UCD debt summary, got "${trimmed}"`,
|
|
@@ -11273,7 +11310,7 @@ function createLoanQuery(config) {
|
|
|
11273
11310
|
}
|
|
11274
11311
|
|
|
11275
11312
|
// src/modules/withdrawal-address/withdrawal-address.module.ts
|
|
11276
|
-
var
|
|
11313
|
+
var import_ethers14 = require("ethers");
|
|
11277
11314
|
var STATIC_CALL_DIAGNOSTIC_TIMEOUT_MS = 5e3;
|
|
11278
11315
|
var WithdrawalAddressModule = class {
|
|
11279
11316
|
config;
|
|
@@ -11291,7 +11328,7 @@ var WithdrawalAddressModule = class {
|
|
|
11291
11328
|
if (!res.success)
|
|
11292
11329
|
return res;
|
|
11293
11330
|
const target = res.value.target;
|
|
11294
|
-
if (!target || target ===
|
|
11331
|
+
if (!target || target === import_ethers14.ZeroAddress) {
|
|
11295
11332
|
return failure(
|
|
11296
11333
|
new SDKError({
|
|
11297
11334
|
code: "SDK_WITHDRAWAL_REGISTRY_NOT_CONFIGURED",
|
|
@@ -11309,7 +11346,7 @@ var WithdrawalAddressModule = class {
|
|
|
11309
11346
|
}
|
|
11310
11347
|
/** keccak256 of the canonicalized address — matches the on-chain key. */
|
|
11311
11348
|
static addressHash(btcAddress) {
|
|
11312
|
-
return (0,
|
|
11349
|
+
return (0, import_ethers14.keccak256)((0, import_ethers14.toUtf8Bytes)(normalizeBitcoinAddress(btcAddress)));
|
|
11313
11350
|
}
|
|
11314
11351
|
/**
|
|
11315
11352
|
* Add a Bitcoin address to the caller's allowlist. It becomes usable only
|
|
@@ -14775,7 +14812,7 @@ var DiamondHandsGraph = class {
|
|
|
14775
14812
|
};
|
|
14776
14813
|
|
|
14777
14814
|
// src/contracts/typechain-contracts/factories/src/psm/SimplePSMV2__factory.ts
|
|
14778
|
-
var
|
|
14815
|
+
var import_ethers15 = require("ethers");
|
|
14779
14816
|
var _abi = [
|
|
14780
14817
|
{
|
|
14781
14818
|
inputs: [],
|
|
@@ -17343,7 +17380,7 @@ var _abi = [
|
|
|
17343
17380
|
];
|
|
17344
17381
|
var _bytecode = "0x60a080604052346100ea57306080527ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005460ff8160401c166100d9576002600160401b03196001600160401b03821601610073575b60405161485a90816100f0823960805181818161278e01526128870152f35b6001600160401b0319166001600160401b039081177ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005581527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a13880610054565b63f92ee8a960e01b60005260046000fd5b600080fdfe6080604052600436101561001257600080fd5b6000803560e01c8062f7fce91461384657806301ffc9a7146137d5578063021d28931461377c5780630871b20614613743578063114249d214610f6157806311d954f81461371a57806313da3166146136e15780631d44a904146136385780631f77bf65146135ff578063248a9ca3146135e05780632b83cccd146131205780632f2ff15d146130ee57806334bac370146130b557806334e181251461307c57806336568abe14613037578063373c86b614612ffe5780633f4ba83a14612f375780634373b57214612f0e5780634451e89b14612b3a5780634ebd25a514612b015780634f1ef2861461280c5780635273b6f6146127e357806352d1902d1461277b578063568fafca146126ed57806359d5d02a146124205780635bc26aea146123eb5780635c975abb146123bb5780635ecc27081461229d5780638456cb59146121a257806385c15d9a1461216957806389d3ad00146120a25780638bff608e146120695780639010d07c1461201657806390ad8b4014611ffa57806391d1485414611fa15780639b759bf714611f5e5780639baf58d214611f415780639f1d0f59146118a8578063a217fddf1461188c578063a3246ad3146117cf578063ad3cb1cc14611788578063b492fc691461168e578063b9f637af14611463578063bf7d911914611424578063c4c5f62414611371578063c55f15ea1461134e578063ca15c87314611317578063ca2ce65d146112de578063cc1f8ffa146112ac578063cf46075e146111a2578063d21a74ff14611165578063d2f8253614611142578063d547741f14611107578063d5d3f78b14610f9a578063d66bd52414610f61578063e1f1c4a714610f44578063e1f3962c14610f18578063ec2f96fe14610ef4578063eda5a26a14610af7578063f1a1eb8414610ab4578063f385116d14610a7b578063f77c479114610a54578063f8c8765e14610661578063faaebd2114610628578063facdfb5e14610488578063fc99bd9a14610377578063fe32e7281461033e5763ffa1ad741461030857600080fd5b3461033b578060031936011261033b57610337610323613a68565b604051918291602083526020830190613a17565b0390f35b80fd5b503461033b57602036600319011261033b576020906040906001600160a01b0361036661392e565b168152601283522054604051908152f35b503461033b57604036600319011261033b5761039161392e565b6010546024359291906001600160a01b03163303610479576001600160a01b03168082526002602052604082205490929060ff16156104665780156104575782825260076020526040822054926103e88285613cb0565b848110610448576001600160ff1b0381116104395760008051602061482e833981519152604085968493846104369852600760205280838a205582519182526020820152a23090339061421c565b80f35b630700fcb360e11b8452600484fd5b63446c8cc960e01b8452600484fd5b63162908e360e11b8252600482fd5b506024916374ed46ad60e01b8252600452fd5b6349db3bd360e01b8252600482fd5b503461033b57602036600319011261033b576104a261392e565b6104aa613f12565b6010546001600160a01b03163303610479576001600160a01b03168082526002602052604082205460ff161561061657808252600760205260408220546040516370a0823160e01b8152306004820152602081602481865afa90811561060b5784916105d4575b50818111156105c5576105248282613b6c565b8215908115610570575b505060008051602061482e833981519152916040918486526007602052808387205582519182526020820152a260016000805160206147ce8339815191525580f35b61271081029080820461271014901517156105b157606484029184830460641417156105b157116105a257388061052e565b63a73af74d60e01b8452600484fd5b634e487b7160e01b86526011600452602486fd5b6105cf8183613b6c565b610524565b90506020813d602011610603575b816105ef602093836139c3565b810103126105fe575138610511565b600080fd5b3d91506105e2565b6040513d86823e3d90fd5b6374ed46ad60e01b8252600452602490fd5b503461033b57602036600319011261033b576020906040906001600160a01b0361065061392e565b168152600483522054604051908152f35b503461033b57608036600319011261033b5761067b61392e565b610683613944565b6044356001600160a01b03811690818103610a50576064356001600160a01b0381169390849003610a4c5760008051602061480e83398151915254604081901c60ff161595906001600160401b031680159081610a44575b6001149081610a3a575b159081610a31575b50610a225760008051602061480e83398151915280546001600160401b0319166001179055856109fd575b6001600160a01b03169081156109ee576001600160a01b03169081156109df5783156109d05761074661448a565b61074e61448a565b61075661448a565b61075e61448a565b60016000805160206147ce8339815191525561077861448a565b61078061448a565b86546001600160a01b0319908116919091178755600180549182168317905560405163313ce56760e01b8152909190602081600481855afa88918161099f575b506107d457633a24e95b60e11b8852600488fd5b6001600160a81b03199092161760a091821b60ff60a01b16176001819055901c60ff16601119810161098d575061080b8186614348565b80610965575b156109205761082e816000805160206147ee833981519152614348565b8061092f575b15610920576108519060008051602061470e833981519152614348565b90816108e9575b50156108da57806108af575b5061086c5780f35b60ff60401b1960008051602061480e833981519152541660008051602061480e833981519152556000805160206146ee833981519152602060405160018152a180f35b601080546001600160a01b031916821790558260008051602061474e8339815191528180a338610864565b63cf5a8e3360e01b8352600483fd5b6109199060008051602061470e83398151915286526000805160206146ae833981519152602052604086206144d0565b5038610858565b63cf5a8e3360e01b8552600485fd5b6000805160206147ee83398151915286526000805160206146ae83398151915260205261095f83604088206144d0565b50610834565b8580526000805160206146ae83398151915260205261098783604088206144d0565b50610811565b63167738cf60e21b8652600452602485fd5b6109c291925060203d6020116109c9575b6109ba81836139c3565b810190613ba9565b90386107c0565b503d6109b0565b630b5eba9f60e41b8752600487fd5b63c1ab6dc160e01b8752600487fd5b6336abb4df60e11b8752600487fd5b60008051602061480e833981519152805460ff60401b1916600160401b179055610718565b63f92ee8a960e01b8752600487fd5b905015386106ed565b303b1591506106e5565b8791506106db565b8580fd5b8480fd5b503461033b578060031936011261033b57546040516001600160a01b039091168152602090f35b503461033b57602036600319011261033b576020906040906001600160a01b03610aa361392e565b168152600a83522054604051908152f35b503461033b57604036600319011261033b576020906040906001600160a01b03610adc61392e565b16815260158352818120602435825283522054604051908152f35b503461033b5761016036600319011261033b57610b1261392e565b90606435604435602435610b24613a58565b9160a4359160c43560e43561010435916101243595610144359760018060a01b03601054163303610ee5576001600160a01b038c16808c52600260205260408c2054909a9060ff16610ed1578a15610ec2578615610eb3576127108811610e99576103e88111610e815760ff82169c60128e118e8115610e76575b50610e6257803b15610e4e578915610e3a578a15610e265782610bc191614260565b84151580610e1d575b610e065785151580610dfd575b610de6578b9c602460208d9e9d604051928380926370a0823160e01b82523060048301525afa9c8d15610dda579c610da6575b506001600160ff1b038c11610d97578a8d8f9760408f97838f918f8f8f8f90859f988f99879f9660008051602061476e8339815191529f978b9f988f8d6000805160206146ce8339815191529f988e8e610d4f9b60008051602061468e8339815191529f8f8f8487526002602052878720600160ff198254161790558487526003602052878720558386526004602052868620558285526006602052878686205582855260056020528585209060ff19825416179055818452600c6020528885852055818452600d6020528985852055818452600e6020528a85852055818452600f6020528b8585205581845260076020528484205582526012602052828220558d8152601360205220558a7f991d1ef1b5c0820d213328cba6682059e00a50e49c469a454eb3557e78eaf6668e80518b81528c6020820152a28c5198899889613cbd565b0390a28151908b82526020820152a28151908782526020820152a280610d73578280f35b604060008051602061482e833981519152918151908582526020820152a281808280f35b63556e7a8160e01b8e5260048efd5b909b506020813d602011610dd2575b81610dc2602093836139c3565b810103126105fe57519a38610c0a565b3d9150610db5565b604051903d90823e3d90fd5b60448c858863dd85772b60e01b8352600452602452fd5b50838610610bd7565b60448c8487637449915760e01b8352600452602452fd5b50828510610bca565b636835314760e11b8d52600160045260248dfd5b636835314760e11b8d5260048d905260248dfd5b63377e3f9960e21b8d5260048c905260248dfd5b63ca95039160e01b8d5260048e905260248dfd5b60069150108e610b9f565b631051834f60e11b8c526004526103e860245260448bfd5b63c1e9a14160e01b8c52600488905261271060245260448cfd5b63a2ec3a5560e01b8c5260048cfd5b63df407ac560e01b8c5260048cfd5b6317f4215b60e21b8c5260048b905260248cfd5b6349db3bd360e01b8b5260048bfd5b503461033b578060031936011261033b57602060ff60015460a01c16604051908152f35b503461033b57602036600319011261033b576020610f3c610f3761392e565b613df5565b604051908152f35b503461033b578060031936011261033b5760206040516127108152f35b503461033b57602036600319011261033b576020906040906001600160a01b03610f8961392e565b168152600783522054604051908152f35b503461033b57602036600319011261033b57610fb461392e565b6010546001600160a01b03163303610479576001600160a01b03168082526002602052604082205460ff16156106165780825260076020526040822054806110f1575080825260026020526040822060ff1981541690558082526003602052816040812055808252600460205281604081205580825260056020526040822060ff198154169055808252600c602052816040812055808252600d602052816040812055808252600e602052816040812055808252600f602052816040812055808252600660205281604081205580825260076020526040822054818352600760205282604081205560405190827f3302a1b37f04242bb55603f5449e7ecd690a35eef08ba1353c48c20e2aae9cda8580a2806110ce578380f35b8160409160008051602061482e8339815191529352846020820152a23880808380f35b604492916376bc059760e11b8352600452602452fd5b503461033b57604036600319011261033b5761113e600435611127613944565b9061113961113482613b79565b614088565b61411a565b5080f35b503461033b578060031936011261033b57602060ff600854166040519015158152f35b503461033b57602036600319011261033b5760209060ff906040906001600160a01b0361119061392e565b16815260058452205416604051908152f35b503461033b57602036600319011261033b576111bc61392e565b6111c4613f12565b6010546001600160a01b03163303610479576001600160a01b03168082526002602052604082205460ff161561061657808252600760205260408220546040516370a0823160e01b8152306004820152602081602481865afa90811561060b57849161126c575b5060008051602061482e833981519152916040918486526007602052808387205582519182526020820152a260016000805160206147ce8339815191525580f35b90506020813d6020116112a4575b81611287602093836139c3565b810103126105fe575160008051602061482e83398151915261122b565b3d915061127a565b503461033b57604036600319011261033b5760206112d46112cb61392e565b60243590613cf6565b6040519015158152f35b503461033b57602036600319011261033b576020906040906001600160a01b0361130661392e565b168152601383522054604051908152f35b503461033b57602036600319011261033b57604060209160043581526000805160206146ae83398151915283522054604051908152f35b503461033b578060031936011261033b576020604051670de0b6b3a76400008152f35b503461033b57604036600319011261033b5761138b61392e565b6010546024359291906001600160a01b03163303610479576001600160a01b031680825260076020526040822054929081841061140d578060008051602061482e8339815191526040866113e3866104369899613b6c565b84895260076020528289205583885260076020528188205482519182526020820152a2339061404c565b5091604492633cb8e07360e01b8352600452602452fd5b503461033b57602036600319011261033b5760209060ff906040906001600160a01b0361144f61392e565b168152600284522054166040519015158152f35b503461033b5761012036600319011261033b5761147e61392e565b6064359190604435602435611491613a58565b601054610104359660e4359260c4359260a43592906001600160a01b0316330361167f576001600160a01b038816808a52600260205260408a205490989060ff161561166b57861561165c576127108811611642576103e882116116285760ff83169060128211801561161e575b61160a578361150d91614260565b85151580611601575b6115ea578a1515806115e1575b6115ca579260008051602061468e83398151915297969592828c956115c4979460408e8e80825260036020528c8383205580825260046020528d838320558152600660205220558b8d52600560205260408d209060ff198254161790558a8c52600c6020528260408d20558a8c52600d6020528360408d20558a8c52600e6020528460408d20558a8c52600f6020528560408d205560405198899889613cbd565b0390a280f35b60448a868d63dd85772b60e01b8352600452602452fd5b50848b10611523565b60448a8588637449915760e01b8352600452602452fd5b50838610611516565b63ca95039160e01b8b52600482905260248bfd5b50600682106114ff565b631051834f60e11b8a5260048290526103e860245260448afd5b63c1e9a14160e01b8a52600488905261271060245260448afd5b63a2ec3a5560e01b8a5260048afd5b6374ed46ad60e01b8a52600489905260248afd5b6349db3bd360e01b8952600489fd5b503461033b57604036600319011261033b576116a861392e565b6001600160a01b0316808252600260205260408220546024359060ff16156117745780156117655761271061172a604085670de0b6b3a76400006117196117329688859a52600560205260ff85852054169080916012811061173f575b505088845260036020528484205490613a8b565b049581526004602052205484613a8b565b048092613b6c565b9082519182526020820152f35b61175e925060ff61175261175892613ad4565b16613ae5565b90613a8b565b3880611705565b63162908e360e11b8352600483fd5b6374ed46ad60e01b83526004829052602483fd5b503461033b578060031936011261033b5761033760408051906117ab81836139c3565b60058252640352e302e360dc1b602083015251918291602083526020830190613a17565b503461033b57602036600319011261033b5760043581526000805160206146ae83398151915260205260408120604051908160208254918281520190819285526020852090855b818110611876575050508261182c9103836139c3565b604051928392602084019060208552518091526040840192915b818110611854575050500390f35b82516001600160a01b0316845285945060209384019390920191600101611846565b8254845260209093019260019283019201611816565b503461033b578060031936011261033b57602090604051908152f35b503461033b576118b736613969565b9190926118c2613f12565b6118ca613f4e565b338152600960205260408120544303611f1f57338152600a602052600360408220541015611f1057338152600a602052604081206119088154613b9a565b90555b6001600160a01b0382168082526002602052604082205490929060ff16611e6f575b828252600260205260ff60408320541615610466578415610457578315611e6057828252600c60205260408220548510611e3b57828252600e60205260408220548015611e2c57808611611e155750846119869161415e565b6040516370a0823160e01b8152306004820152602081602481865afa908115611e0a578291611dd8575b506119bd8530338661421c565b6040516370a0823160e01b8152306004820152602081602481875afa908115611cef57908692918491611d9f575b50906119f691613b6c565b10611d905781815260076020526040812054611a128582613cb0565b818110611d81576001600160ff1b038111611d72576040849260008051602061482e833981519152928486526007602052808387205582519182526020820152a2818152600560205260ff604082205416849060128110611d11575b50611a8f670de0b6b3a7640000918484526003602052604084205490613a8b565b04908281526004602052612710611aaa604083205484613a8b565b0491611ab68382613b6c565b94808610611cfa57506001546040516318160ddd60e01b815290602090829060049082906001600160a01b03165afa908115611cef578391611cbd575b5082546001600160a01b0316803b15611ca45783809160846040518094819363ae494fa160e01b83523360048401528c60248401528b60448401528d60648401525af1801561060b57908491611ca8575b505083611c34575b6001546040516318160ddd60e01b81529190602090839060049082906001600160a01b03165afa801561060b578490611c00575b611b8a9250613b6c565b90808203611bea575050507fb3e2773606abfd36b5bd91394b3a54d1398336c65005baf7bf7a05efeffaf75b611bcd602095604051918291339588429285613bdd565b0390a360016000805160206147ce83398151915255604051908152f35b632d8562a360e11b835260045260245260449150fd5b506020823d602011611c2c575b81611c1a602093836139c3565b810103126105fe57611b8a9151611b80565b3d9150611c0d565b82546001600160a01b0316803b15611ca45783809160846040518094819363ae494fa160e01b83523060048401528a60248401528b60448401528160648401525af1801561060b57908491611c8b575b5050611b4c565b81611c95916139c3565b611ca0578238611c84565b8280fd5b8380fd5b81611cb2916139c3565b611ca0578238611b44565b90506020813d602011611ce7575b81611cd8602093836139c3565b810103126105fe575138611af3565b3d9150611ccb565b6040513d85823e3d90fd5b6371c4efed60e01b83526004869052602452604482fd5b611d21915061175260ff91613ad4565b8015611d5e5780600019048511611d4f57611a8f611d48670de0b6b3a76400009287613a8b565b9150611a6e565b63035fc53d60e41b8252600482fd5b634e487b7160e01b82526012600452602482fd5b630700fcb360e11b8352600483fd5b63446c8cc960e01b8352600483fd5b639bfa3c1760e01b8152600490fd5b919250506020813d602011611dd0575b81611dbc602093836139c3565b810103126105fe57518591906119f66119eb565b3d9150611daf565b90506020813d602011611e02575b81611df3602093836139c3565b810103126105fe5751386119b0565b3d9150611de6565b6040513d84823e3d90fd5b631d7f2ac360e01b83526004869052602452604482fd5b633b5db2f360e11b8352600483fd5b50908152600c6020526040812054630d54e9e160e01b82526004849052602452604490fd5b632cd84af360e01b8252600482fd5b60405163313ce56760e01b815291939291602081600481865afa859181611eef575b50611ea55763105482c760e21b8552600485fd5b93919293838352600560205260ff806040852054169116908103611ec9575061192d565b90506044928252600560205260ff604083205416631e43476360e11b8352600452602452fd5b611f0991925060203d6020116109c9576109ba81836139c3565b9038611e91565b63a74c1c5f60e01b8152600490fd5b3381526009602052436040822055338152600a6020526001604082205561190b565b503461033b578060031936011261033b5760206040516103e88152f35b503461033b57604036600319011261033b576020906040906001600160a01b03611f8661392e565b16815260148352818120602435825283522054604051908152f35b503461033b57604036600319011261033b576040611fbd613944565b91600435815260008051602061478e833981519152602052209060018060a01b0316600052602052602060ff604060002054166040519015158152f35b503461033b578060031936011261033b57602060405160648152f35b503461033b57604036600319011261033b5761205060209160043581526000805160206146ae8339815191528352604060243591206144b8565b905460405160039290921b1c6001600160a01b03168152f35b503461033b57602036600319011261033b576020906040906001600160a01b0361209161392e565b168152600983522054604051908152f35b503461033b57604036600319011261033b576120bc61392e565b60105460243591906001600160a01b0316330361215a576001600160a01b031690811561214b57604060008051602061476e8339815191529183855260136020528185205490848652601360205280838720558486526015602052828620438752602052828620548587526019602052838720558486526017602052438387205582519182526020820152a280f35b63df407ac560e01b8352600483fd5b6349db3bd360e01b8352600483fd5b503461033b57602036600319011261033b576020906040906001600160a01b0361219161392e565b168152600383522054604051908152f35b503461033b578060031936011261033b5760008051602061470e833981519152815260008051602061478e83398151915260209081526040808320336000908152925290205460ff1615612278576121f8613f4e565b600160ff196000805160206147ae8339815191525416176000805160206147ae833981519152557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586020604051338152a16040514281527f80170b5fcdd2bf1e0660ef4b8851f86685f64d41b1a19de1471947ece8725aac60203392a280f35b63e2517d3f60e01b81523360045260008051602061470e833981519152602452604490fd5b503461033b57602036600319011261033b576122b761392e565b60008051602061480e8339815191525460ff8160401c169081156123a3575b506123945760008051602061480e83398151915280546001600160481b0319166003600160401b0117905581805260008051602061478e83398151915260209081526040808420336000908152925290205460ff161561237c5761233990613c5e565b60ff60401b1960008051602061480e833981519152541660008051602061480e833981519152556000805160206146ee833981519152602060405160038152a180f35b63e2517d3f60e01b8252336004526024829052604482fd5b63f92ee8a960e01b8252600482fd5b60036001600160401b039190911610159050386122d6565b503461033b578060031936011261033b57602060ff6000805160206147ae83398151915254166040519015158152f35b503461033b57602036600319011261033b5761240561392e565b6010546001600160a01b031633036104795761043690613c5e565b503461033b57606036600319011261033b5761243a61392e565b612442613944565b60105490926044359290916001600160a01b0316330361047957612464613f4e565b6011546001600160a01b03169182156126de5760405163babcc53960e01b81526001600160a01b0386166004820181905293602090829060249082905afa908115611e0a57829161269f575b5015612690578215612681576001546001600160a01b03928316921682036125d1576040516370a0823160e01b8152306004820152602081602481865afa908115611e0a57829161259f575b50935b841561259057600019810361258a5750835b841561257b5780851161256357505061252d836020958361404c565b7f0bf519e4b3821615dbdd874fa1a5fbb4bb651b4e6beabedd4ac318e770233b2c604080518581524287820152a3604051908152f35b630555ed4f60e31b8252600485905260245260449150fd5b632e11316f60e11b8252600482fd5b93612511565b63f09872eb60e01b8252600482fd5b90506020813d6020116125c9575b816125ba602093836139c3565b810103126105fe5751386124fc565b3d91506125ad565b8181526002602052604081205460ff161561266f576040516370a0823160e01b8152306004820152602081602481865afa908115611e0a57829161263d575b5082825260076020526040822054808211156126355761262f91613b6c565b936124ff565b50508061262f565b90506020813d602011612667575b81612658602093836139c3565b810103126105fe575138612610565b3d915061264b565b60249163eef7849760e01b8252600452fd5b634e46966960e11b8152600490fd5b63133307bb60e21b8152600490fd5b90506020813d6020116126d6575b816126ba602093836139c3565b810103126126d2575180151581036126d257386124b0565b5080fd5b3d91506126ad565b630e048e7160e41b8152600490fd5b503461033b57602036600319011261033b5761270761392e565b6010546001600160a01b03163303610479576001600160a01b0316801561276c57601180546001600160a01b0319811683179091556001600160a01b03167f1e9c406f2707909cfd9f61e744f73bcab77e5997d063276f67883c5257d51cf08380a380f35b634e46966960e11b8252600482fd5b503461033b578060031936011261033b577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031630036127d457602060405160008051602061472e8339815191528152f35b63703e46dd60e11b8152600490fd5b503461033b578060031936011261033b576010546040516001600160a01b039091168152602090f35b50604036600319011261033b5761282161392e565b602435906001600160401b038211611ca05736602383011215611ca0578160040135908361284e836139fc565b9361285c60405195866139c3565b83855260208501933660248284010111611ca057806024602093018637850101526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016308114908115612ade575b50612acf576010546001600160a01b03163303612ac0576001600160a01b038116928315612ab157813b15612aa25760008051602061472e83398151915254846128fa613a68565b7f6ea8b34d59b2818d3f37a08dddaa06f5886b9c20c907b36f03ca6528e106e86f61293060405192604084526040840190613a17565b4260208401526001600160a01b038516929081900390a36040516352d1902d60e01b8152602081600481895afa879181612a6a575b5061297e57634c9c8ce360e01b87526004869052602487fd5b908160008051602061472e83398151915288979303612a585750833b15612a44576001600160a01b031916811760008051602061472e833981519152558491907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b8380a2805115612a295761113e9382915190845af43d15612a21573d91612a05836139fc565b92612a1360405194856139c3565b83523d85602085013e61460c565b60609161460c565b5050505034612a355780f35b63b398979f60e01b8152600490fd5b634c9c8ce360e01b86526004829052602486fd5b632a87526960e21b8752600452602486fd5b9091506020813d602011612a9a575b81612a86602093836139c3565b81010312612a9657519038612965565b8780fd5b3d9150612a79565b636f7c43f160e01b8552600485fd5b63e6c4247b60e01b8552600485fd5b6349db3bd360e01b8452600484fd5b63703e46dd60e11b8452600484fd5b60008051602061472e833981519152546001600160a01b031614159050386128b2565b503461033b57602036600319011261033b576020906040906001600160a01b03612b2961392e565b168152600e83522054604051908152f35b503461033b57606036600319011261033b57612b5461395a565b6024356001600160401b038111611ca057612b73903690600401613993565b916044356001600160401b038111610a5057612b93903690600401613993565b60008051602061480e8339815191529291925460ff8160401c16908115612ef6575b50612ee75760008051602061480e83398151915280546001600160481b0319166002600160401b011790556000805160206147ee833981519152865260008051602061478e83398151915260209081526040808820336000908152925290205460ff1615612ec257612c2561448a565b612c2d61448a565b60016000805160206147ce83398151915255600b549160ff8316612eb357818603612ea457612c5b86613bf9565b92612c6960405194856139c3565b868452601f19612c7888613bf9565b01366020860137875b878110612daf575060019060ff191617600b5515159460ff196008541660ff871617600855865b818110612d0c578760008051602061466e833981519152602089604051908152a160ff60401b1960008051602061480e833981519152541660008051602061480e833981519152556000805160206146ee833981519152602060405160028152a180f35b808860008051602061482e8339815191526040612d34612d2f600196888d613c10565b613c36565b612d3f85898c613c10565b357f8f955fa878b4aae8b1ac37b1ab715307470f2822ceff87e23d33ef1e044814a783612d6c888d613c4a565b5193898060a01b0316968793848252600660205280838320558482526007602052858383205582519182526020820152a28151908d82526020820152a201612ca8565b612dbd612d2f828a8a613c10565b612dc8828689613c10565b6001600160a01b03909116808b52600260205260408b20549091359060ff1615612e90576103e88111612e785750906020602492604051938480926370a0823160e01b82523060048301525afa8015612e6d578a90612e37575b60019250612e308288613c4a565b5201612c81565b509060203d8111612e66575b612e4d81836139c3565b6020826000928101031261033b57509060019151612e22565b503d612e43565b6040513d8c823e3d90fd5b631051834f60e11b8b526004526103e860245260448afd5b6351104c5960e01b8b52600482905260248bfd5b63512509d360e11b8752600487fd5b6324d0d1fd60e01b8752600487fd5b63e2517d3f60e01b8652336004526000805160206147ee833981519152602452604486fd5b63f92ee8a960e01b8652600486fd5b60026001600160401b03919091161015905038612bb5565b503461033b578060031936011261033b576011546040516001600160a01b039091168152602090f35b503461033b578060031936011261033b576010546001600160a01b03163303612fef576000805160206147ae8339815191525460ff811615612fe05760ff19166000805160206147ae833981519152557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6020604051338152a16040514281527f107553d8191d85b405879cf752997865edd48d94e20bda4dd27223c94b31a7cc60203392a280f35b638dfc202b60e01b8252600482fd5b6349db3bd360e01b8152600490fd5b503461033b57602036600319011261033b576020906040906001600160a01b0361302661392e565b168152601683522054604051908152f35b503461033b57604036600319011261033b57613051613944565b336001600160a01b0382160361306d5761113e9060043561411a565b63334bd91960e11b8252600482fd5b503461033b57602036600319011261033b576020906040906001600160a01b036130a461392e565b168152600c83522054604051908152f35b503461033b57602036600319011261033b576020906040906001600160a01b036130dd61392e565b168152601783522054604051908152f35b503461033b57604036600319011261033b5761113e60043561310e613944565b9061311b61113482613b79565b6140d2565b503461033b5761312f36613969565b91909261313a613f12565b613142613f4e565b3381526009602052604081205443036135be57338152600a602052600360408220541015611f1057338152600a602052604081206131808154613b9a565b90555b6001600160a01b0382168082526002602052604082205490929060ff16613543575b828252600260205260ff604083205416156104665760ff6008541615613534578415610457578315611e6057828252600d602052604082205480861061351d5750828252600f6020526040822054801561350e578086116134f857508461320b91613f78565b670de0b6b3a76400008402848104670de0b6b3a7640000036134e4578282526003602052604082205461323d91613ab4565b90828152600560205260ff604082205416601281106134c4575b50828152600660205261327c612710613274604084205485613a8b565b048093613b6c565b938085106134ac575082815260076020528360408220541061348857828152600760205260408120548481106134795760008051602061482e8339815191526040826132c9888895613b6c565b8486526007602052808387205582519182526020820152a26001546040516318160ddd60e01b815290602090829060049082906001600160a01b03165afa908115611e0a578291613447575b5081546001600160a01b0316803b15611ca057826040518092633a52b90760e11b82528183816133498d3360048401613bc2565b03925af18015611cef57613432575b506001546040516318160ddd60e01b81529190602090839060049082906001600160a01b03165afa908115611cef5783916133fc575b6133989250613b6c565b8581036133e45750507f8caf04742286d017f9ac3924388e188c73e6e5094311c5e59a61a7ef86dda8bf611bcd6020956133d386338761404c565b604051918291339588429285613bdd565b635ab6e2db60e01b8252600486905260245260449150fd5b90506020823d60201161342a575b81613417602093836139c3565b810103126105fe5761339891519061338e565b3d915061340a565b9161344081600493946139c3565b9190613358565b90506020813d602011613471575b81613462602093836139c3565b810103126126d2575138613315565b3d9150613455565b6308aed4ef60e31b8252600482fd5b82815260076020526040812054635960d22160e01b82526004526024849052604490fd5b6371c4efed60e01b8252600485905260245260449150fd5b916134d760ff6117526134dd9495613ad4565b90613ab4565b9038613257565b634e487b7160e01b82526011600452602482fd5b625502a360e91b83526004869052602452604482fd5b636c6ff70d60e11b8352600483fd5b6361767b8560e01b83526004869052602452604482fd5b630df65d9f60e01b8252600482fd5b60405163313ce56760e01b815291939291602081600481865afa85918161359d575b506135795763105482c760e21b8552600485fd5b93919293838352600560205260ff806040852054169116908103611ec957506131a5565b6135b791925060203d6020116109c9576109ba81836139c3565b9038613565565b3381526009602052436040822055338152600a60205260016040822055613183565b503461033b57602036600319011261033b576020610f3c600435613b79565b503461033b57602036600319011261033b576020906040906001600160a01b0361362761392e565b168152600f83522054604051908152f35b503461033b57604036600319011261033b5761365261392e565b60105460243591906001600160a01b0316330361215a576001600160a01b031690811561214b5760406000805160206146ce8339815191529183855260126020528185205490848652601260205280838720558486526014602052828620438752602052828620548587526018602052838720558486526016602052438387205582519182526020820152a280f35b503461033b57602036600319011261033b576020906040906001600160a01b0361370961392e565b168152600683522054604051908152f35b503461033b578060031936011261033b576001546040516001600160a01b039091168152602090f35b503461033b57602036600319011261033b576020906040906001600160a01b0361376b61392e565b168152600d83522054604051908152f35b503461033b57602036600319011261033b5761379661395a565b6010546001600160a01b0316330361047957602060008051602061466e83398151915291151560ff196008541660ff821617600855604051908152a180f35b503461033b57602036600319011261033b5760043563ffffffff60e01b81168091036126d257602090635a05180f60e01b811490811561381b575b506040519015158152f35b637965db0b60e01b811491508115613835575b5082613810565b6301ffc9a760e01b1490508261382e565b503461033b57604036600319011261033b5761386061392e565b6001600160a01b0316808252600260205260408220546024359060ff161561177457670de0b6b3a7640000810290808204670de0b6b3a7640000149015171561391a57916138bc60409383835260036020528483205490613ab4565b91808252600560205260ff8483205416601281106138f1575b5061172a84836127109361173295526006602052205484613a8b565b846117329361390f61271094966134d760ff61175261172a97613ad4565b9593509350506138d5565b634e487b7160e01b83526011600452602483fd5b600435906001600160a01b03821682036105fe57565b602435906001600160a01b03821682036105fe57565b6004359081151582036105fe57565b60609060031901126105fe576004356001600160a01b03811681036105fe57906024359060443590565b9181601f840112156105fe578235916001600160401b0383116105fe576020808501948460051b0101116105fe57565b601f909101601f19168101906001600160401b038211908210176139e657604052565b634e487b7160e01b600052604160045260246000fd5b6001600160401b0381116139e657601f01601f191660200190565b919082519283825260005b848110613a43575050826000602080949584010152601f8019910116010190565b80602080928401015182828601015201613a22565b6084359060ff821682036105fe57565b60405190613a776040836139c3565b6005825264322e332e3360d81b6020830152565b81810292918115918404141715613a9e57565b634e487b7160e01b600052601160045260246000fd5b8115613abe570490565b634e487b7160e01b600052601260045260246000fd5b60ff166012039060ff8211613a9e57565b8015613b665760009060208110600116604e821060011617613b5e57600a916001915b60018111613b35575082600019048211613b2157500290565b634e487b7160e01b81526011600452602490fd5b92806000190481116134e45760018416613b55575b80029260011c613b08565b80920291613b4a565b9050600a0a90565b50600190565b91908203918211613a9e57565b60005260008051602061478e83398151915260205260016040600020015490565b6000198114613a9e5760010190565b908160209103126105fe575160ff811681036105fe5790565b6001600160a01b039091168152602081019190915260400190565b9094939260609260808301968352602083015260408201520152565b6001600160401b0381116139e65760051b60200190565b9190811015613c205760051b0190565b634e487b7160e01b600052603260045260246000fd5b356001600160a01b03811681036105fe5790565b8051821015613c205760209160051b010190565b6001600160a01b03168015613c9f57601080546001600160a01b0319811683179091556001600160a01b031660008051602061474e833981519152600080a3565b63e6c4247b60e01b60005260046000fd5b91908201809211613a9e57565b94919360e0969360ff929a99989561010088019b885260208801526040870152166060850152608084015260a083015260c08201520152565b6001600160a01b03811660008181526002602052604090205490919060ff16158015613de8575b8015613de0575b613dce5781600052600f6020526040600020548015908115613dd6575b50613dce57613d66926040918251948592839262f7fce960e01b845260048401613bc2565b0381305afa918215613dc257600092613d8e575b506000526007602052604060002054101590565b9091506040813d604011613dba575b81613daa604093836139c3565b810103126105fe57519038613d7a565b3d9150613d9d565b6040513d6000823e3d90fd5b505050600090565b9050831138613d41565b508215613d24565b5060ff6008541615613d1d565b6001546001600160a01b0391821691168103613e6a576020602491604051928380926370a0823160e01b82523060048301525afa908115613dc257600091613e3b575090565b90506020813d602011613e62575b81613e56602093836139c3565b810103126105fe575190565b3d9150613e49565b80600052600260205260ff60406000205416613e865750600090565b6040516370a0823160e01b815230600482015290602082602481845afa918215613dc257600092613ede575b506000526007602052604060002054808211600014613ed757613ed491613b6c565b90565b5050600090565b90916020823d602011613f0a575b81613ef9602093836139c3565b8101031261033b5750519038613eb2565b3d9150613eec565b60026000805160206147ce8339815191525414613f3d5760026000805160206147ce83398151915255565b633ee5aeb560e01b60005260046000fd5b60ff6000805160206147ae8339815191525416613f6757565b63d93c066560e01b60005260046000fd5b6001600160a01b0316600081815260136020526040902054801561404757816000526015602052604060002043600052602052613fbb6040600020549384613cb0565b92831061403657808260005260176020524360406000205414614018575b8311613ffc57506000526015602052604060002043600052602052604060002055565b925063029359d560e41b60005260045260245260445260646000fd5b5081600052601960205261403160406000205482613cb0565b613fd9565b63446c8cc960e01b60005260046000fd5b505050565b614081614086939261407360405194859263a9059cbb60e01b602085015260248401613bc2565b03601f1981018452836139c3565b6142ed565b565b600081815260008051602061478e8339815191526020908152604080832033845290915290205460ff16156140ba5750565b63e2517d3f60e01b6000523360045260245260446000fd5b6140dc8282614348565b91826140e757505090565b60009182526000805160206146ae8339815191526020526040909120614116916001600160a01b0316906144d0565b5090565b61412482826143ea565b918261412f57505090565b60009182526000805160206146ae8339815191526020526040909120614116916001600160a01b031690614539565b6001600160a01b03166000818152601260205260409020548015614047578160005260146020526040600020436000526020526141a16040600020549384613cb0565b928310614036578082600052601660205243604060002054146141fe575b83116141e257506000526014602052604060002043600052602052604060002055565b92506319a4e2a760e01b60005260045260245260445260646000fd5b5081600052601860205261421760406000205482613cb0565b6141bf565b6040516323b872dd60e01b60208201526001600160a01b039283166024820152929091166044830152606480830193909352918152614086916140816084836139c3565b60405163313ce56760e01b81529190602090839060049082906001600160a01b03165afa600092816142cc575b506142a357631eecbb6560e01b60005260046000fd5b60ff91821691168082036142b5575050565b631e43476360e11b60005260045260245260446000fd5b6142e691935060203d6020116109c9576109ba81836139c3565b913861428d565b906000602091828151910182855af115613dc2576000513d61433f57506001600160a01b0381163b155b61431e5750565b635274afe760e01b60009081526001600160a01b0391909116600452602490fd5b60011415614317565b600081815260008051602061478e833981519152602090815260408083206001600160a01b038616845290915290205460ff16613ed757600081815260008051602061478e833981519152602090815260408083206001600160a01b0395909516808452949091528120805460ff19166001179055339291907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9080a4600190565b600081815260008051602061478e833981519152602090815260408083206001600160a01b038616845290915290205460ff1615613ed757600081815260008051602061478e833981519152602090815260408083206001600160a01b0395909516808452949091528120805460ff19169055339291907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9080a4600190565b60ff60008051602061480e8339815191525460401c16156144a757565b631afcd79f60e31b60005260046000fd5b8054821015613c205760005260206000200190600090565b6001810190826000528160205260406000205415600014613dce578054600160401b8110156139e65761452461450d8260018794018555846144b8565b819391549060031b91821b91600019901b19161790565b90555491600052602052604060002055600190565b9060018201918160005282602052604060002054801515600014614603576000198101818111613a9e578254600019810191908211613a9e578181036145cc575b505050805480156145b657600019019061459482826144b8565b8154906000199060031b1b191690555560005260205260006040812055600190565b634e487b7160e01b600052603160045260246000fd5b6145ec6145dc61450d93866144b8565b90549060031b1c928392866144b8565b90556000528360205260406000205538808061457a565b50505050600090565b90614632575080511561462157602081519101fd5b63d6bda27560e01b60005260046000fd5b81511580614664575b614643575090565b639996b31560e01b60009081526001600160a01b0391909116600452602490fd5b50803b1561463b56fe2c0a5f5ab0ba371221bb3612c2d2f90d36566279309f526000c5b354efd1b0658c67aaac7f77de07240e5a9b36dfdccb2a89c438635abbb27a73142d2aa0f629c1f6fe24621ce81ec5827caf0253cadb74709b061630e6b55e8237170593200048b07fab687f450848f1df8a96db08fef7840f53415f18fdc2ec8e9f810f0930c7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d275027301df982f5215b4963a854cf9c73219df80cb6acd8f098189c9480c7bbc360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc17dc5b1290f7495d7f8cc68476e6941aaf510598fa925d0d2720edc8805a846c4460507c21097c15f6883572ebd157a9ee4b1d989a312314e93afd9d2ecd494002dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800cd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033009b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00a49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a006d129bd71f2401cbe77f49f546d7d5f58992faecfca6e51ba06b50b261e83331a164736f6c6343000822000a";
|
|
17345
17382
|
var isSuperArgs = (xs) => xs.length > 1;
|
|
17346
|
-
var SimplePSMV2__factory = class extends
|
|
17383
|
+
var SimplePSMV2__factory = class extends import_ethers15.ContractFactory {
|
|
17347
17384
|
constructor(...args) {
|
|
17348
17385
|
if (isSuperArgs(args)) {
|
|
17349
17386
|
super(...args);
|
|
@@ -17363,15 +17400,15 @@ var SimplePSMV2__factory = class extends import_ethers14.ContractFactory {
|
|
|
17363
17400
|
static bytecode = _bytecode;
|
|
17364
17401
|
static abi = _abi;
|
|
17365
17402
|
static createInterface() {
|
|
17366
|
-
return new
|
|
17403
|
+
return new import_ethers15.Interface(_abi);
|
|
17367
17404
|
}
|
|
17368
17405
|
static connect(address, runner) {
|
|
17369
|
-
return new
|
|
17406
|
+
return new import_ethers15.Contract(address, _abi, runner);
|
|
17370
17407
|
}
|
|
17371
17408
|
};
|
|
17372
17409
|
|
|
17373
17410
|
// src/contracts/typechain-contracts/factories/src/agent/AgentDelegationRegistry__factory.ts
|
|
17374
|
-
var
|
|
17411
|
+
var import_ethers16 = require("ethers");
|
|
17375
17412
|
var _abi2 = [
|
|
17376
17413
|
{
|
|
17377
17414
|
inputs: [],
|
|
@@ -19064,7 +19101,7 @@ var _abi2 = [
|
|
|
19064
19101
|
];
|
|
19065
19102
|
var _bytecode2 = "0x60a080604052346100ea57306080527ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005460ff8160401c166100d9576002600160401b03196001600160401b03821601610073575b60405161304c90816100f0823960805181818161114401526113290152f35b6001600160401b0319166001600160401b039081177ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005581527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a13880610054565b63f92ee8a960e01b60005260046000fd5b600080fdfe608080604052600436101561001357600080fd5b60003560e01c90816301ffc9a714611ff7575080630d33f3c214611fd35780630f3f4a9414611f885780631459457a14611be257806318c38b8914611ad15780631d44454114611a005780632106764c146119d9578063248a9ca3146119b35780632ec22d4c146118f25780632f0647ce146118775780632f2ff15d14611846578063324207441461177257806336568abe1461172c578063392f1087146116f65780633f4ba83a146115fe5780633f5aadc91461158f5780634f1ef286146112ad57806352340363146111c45780635273b6f61461119b57806352d1902d14611131578063554c4f4b146110a1578063561b7f8a14610f755780635bc26aea14610ee85780635c975abb14610eb85780636289d18c14610e375780636711cc0b14610e1b5780636e852a7814610d1a5780637e35bf6e14610ce65780638343f67414610cb95780638456cb5914610bc35780638f33527f14610b895780639010d07c14610b3557806391d1485414610adb5780639b9d30c114610ab2578063a19af3f614610a01578063a217fddf146109e5578063a3246ad314610923578063a878086414610907578063ac3c0e30146107fa578063ad3cb1cc146107b3578063b3fad6381461070e578063c34e9c26146106f2578063c86deb31146106d6578063ca15c8731461069d578063d547741f14610665578063dd71d99a14610623578063e0922fa114610576578063efa9b4ae14610507578063f2f4eb26146104de578063f68e9553146104b5578063f94f67ab146103de578063fd437d391461029f5763ffa1ad741461026657600080fd5b3461029a57600036600319011261029a576102966102826121ed565b6040519182916020835260208301906121c8565b0390f35b600080fd5b3461029a57606036600319011261029a576102b861207a565b6102c0612064565b906102c961218f565b906102d2612795565b6001600160a01b0316338190036103ce5780600052600160205260406000209283549360ff8560e01c1660038110156103b8576001036103a75781600160209261033e877fc5d5c5bbf10444998e0ea6d4725e79027b574e1c14ec929279e8a9a95c6c6e919688612c43565b818060a01b038316828060a01b031982541617815561035d878261239f565b0180546001600160401b031916426001600160401b03908116919091179091556001600160a01b0391821660008181526002855260409081902087905551969091168652951693a4005b632437e77160e11b60005260046000fd5b634e487b7160e01b600052602160045260246000fd5b62fca64560e31b60005260046000fd5b3461029a57604036600319011261029a576004356103fa6120c9565b90610403612795565b63ffffffff600554169163ffffffff8116928084109081156104ac575b5061049b5760207f6b7727cc9c3df4a29acf0afe01594c1b7e845d20f40f4a14e4c292164a9ed8e191610452846127e0565b9161046a600863ffffffff845460a01c1617836122e3565b81546001600160e01b031660e09190911b6001600160e01b0319161790556040519485526001600160a01b031693a3005b634346c13160e01b60005260046000fd5b90501584610420565b3461029a57600036600319011261029a576020604051600080516020612fe08339815191528152f35b3461029a57600036600319011261029a576003546040516001600160a01b039091168152602090f35b3461029a57602036600319011261029a57600435610523612795565b61054561052f826127e0565b9190600163ffffffff825460a01c1617906122e3565b6001600160a01b0316907f812690e0a9dff5bf3add998111b8af5c8299608d859025bfe35662060ab4267d600080a3005b3461029a57602036600319011261029a576004356001600160401b0381169081810361029a576000546001600160a01b038116330361061257600160a01b600160e01b0319811660a092831b600160a01b600160e01b031617600055604080519190921c6001600160401b0316815260208101929092527f9c195448332abd01f716db873b329752ea02f19d33f7e311fb0daf082c4edd0391a1005b6349db3bd360e01b60005260046000fd5b3461029a57602036600319011261029a576001600160a01b0361064461207a565b166000526002602052602060018060a01b0360406000205416604051908152f35b3461029a57604036600319011261029a5761069b600435610684612064565b90610696610691826122c2565b6126bf565b612751565b005b3461029a57602036600319011261029a57600435600052600080516020612ee08339815191526020526020604060002054604051908152f35b3461029a57600036600319011261029a57602060405160088152f35b3461029a57600036600319011261029a57602060405160028152f35b3461029a57602036600319011261029a576000606060405161072f81612136565b828152826020820152826040820152015260043560005260046020526080604060002063ffffffff6040519161076483612136565b548160018060a01b038216938481528160208201818560a01c16815260606040840193838760c01c168552019460e01c8552604051968752511660208601525116604084015251166060820152f35b3461029a57600036600319011261029a5761029660408051906107d68183612151565b60058252640352e302e360dc1b6020830152519182916020835260208301906121c8565b3461029a57602036600319011261029a5761081361207a565b6000608060405161082381612105565b828152826020820152826040820152826060820152015260018060a01b03166000526001602052604060002060405161085b81612105565b81546001600160a01b038116825260a081901c6001600160401b03166020830190815292604083019160e01c60ff169060038210156103b857908252600101546001600160401b0380821660608501908152604092831c821660808601908152925194516001600160a01b03168552945116602084015290519260038410156103b857604083019390935291516001600160401b0390811660608301529151909116608082015260a090f35b3461029a57600036600319011261029a57602060405160018152f35b3461029a57602036600319011261029a57600435600052600080516020612ee083398151915260205260406000206040518060208354918281520190819360005260206000209060005b8181106109cf5750505081610983910382612151565b6040519182916020830190602084525180915260408301919060005b8181106109ad575050500390f35b82516001600160a01b031684528594506020938401939092019160010161099f565b825484526020909301926001928301920161096d565b3461029a57600036600319011261029a57602060405160008152f35b3461029a57604036600319011261029a57600435610a1d6120c9565b90610a26612795565b63ffffffff600554169163ffffffff811692808410908115610aa9575b5061049b5760207f1da95b87b4c773f68c1447ffc5644e41a8a8887d55065beb64852014cf7140be91610a96610a78856127e0565b9290610a91600463ffffffff835460a01c1617826122e3565b612210565b6040519485526001600160a01b031693a3005b90501584610a43565b3461029a57600036600319011261029a576020604051600080516020612f208339815191528152f35b3461029a57604036600319011261029a57610af4612064565b600435600052600080516020612fc083398151915260205260406000209060018060a01b0316600052602052602060ff604060002054166040519015158152f35b3461029a57604036600319011261029a57600435600052600080516020612ee08339815191526020526020610b706024356040600020612d0c565b905460405160039290921b1c6001600160a01b03168152f35b3461029a57602036600319011261029a576001600160a01b03610baa61207a565b1660005260026020526020604060002054604051908152f35b3461029a57600036600319011261029a573360009081527f0ac8cc3d209806126662940717264973110c39045b305f6ba49613325a615e09602052604090205460ff1615610c9257610c13612795565b600160ff19600080516020613000833981519152541617600080516020613000833981519152557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586020604051338152a16040514281527f80170b5fcdd2bf1e0660ef4b8851f86685f64d41b1a19de1471947ece8725aac60203392a2005b63e2517d3f60e01b60005233600452600080516020612f2083398151915260245260446000fd5b3461029a57600036600319011261029a5760005460405160a09190911c6001600160401b03168152602090f35b3461029a57604036600319011261029a57610d0a610d02612064565b60043561236c565b906102966040519283928361209a565b3461029a57604036600319011261029a57610d3361207a565b336000908152600080516020612f60833981519152602052604090205460ff161580610e08575b6103ce576001600160a01b03166000818152600160205260409020805460e01c60ff1660038110156103b8576001036103a757805460ff60e01b198116600160e11b1782556001919091018054600160401b600160801b03191642604090811b600160401b600160801b0316919091179091555160243581526001600160a01b0390911691907fc0499cc07ed9d734deec6857802d3f0fa8d5afaf79a7008beb8ba7bef62a271b90602090a3005b50336001600160a01b0382161415610d5a565b3461029a57600036600319011261029a57602060405160048152f35b3461029a57602036600319011261029a57610e506120b6565b6000546001600160a01b031633036106125763ffffffff8116908115610ea757600080516020612fa083398151915291610ea263ffffffff926005549284198416176005556040519384931683612233565b0390a1005b6338f3377360e21b60005260046000fd5b3461029a57600036600319011261029a57602060ff60008051602061300083398151915254166040519015158152f35b3461029a57602036600319011261029a57610f0161207a565b6000546001600160a01b0381169033829003610612576001600160a01b038316928315610f64573b15610f53576001600160a01b03191682176000908155600080516020612f808339815191529080a3005b636f7c43f160e01b60005260046000fd5b63e6c4247b60e01b60005260046000fd5b3461029a57606036600319011261029a57610f8e61207a565b610f96612064565b610f9e61218f565b91610fa7612795565b6001600160a01b031690338290036103ce57816000526001602052604060002060ff815460e01c1660038110156103b857600114611090578160209161100f867ff223dc085722c94c84dcf67427e225799be616382a2a484d378f8921c69a20339587612c43565b80546001600160a01b0319166001600160a01b038316178155611032868261239f565b6001810180546001600160801b031916426001600160401b0390811691909117909155815460ff60e01b1916600160e01b179091556001600160a01b03919091166000818152600284526040908190208690555195909116855293a3005b639d2c8fdf60e01b60005260046000fd5b3461029a57602036600319011261029a576001600160a01b036110c261207a565b166000526001602052604060002060ff60008051602061300083398151915254161580611115575b602091816110fe575b506040519015158152f35b5460a01c6001600160401b031642109050826110f3565b5060ff815460e01c169060038210156103b857906001146110ea565b3461029a57600036600319011261029a577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316300361118a576020604051600080516020612f408339815191528152f35b63703e46dd60e11b60005260046000fd5b3461029a57600036600319011261029a576000546040516001600160a01b039091168152602090f35b3461029a57602036600319011261029a57600435604060008281526004602052209081549160018060a01b03831692831590811561129e575b5061128d57336000908152600080516020612f60833981519152602052604090205460ff161580611283575b611272578061124563fffffffe61124b935460a01c16826122e3565b8261269b565b7fa5ffbdba01b15df97334e34ad816b9986b6057a5ddc97aba93b7e8ccd21759ed600080a3005b630a606ec360e11b60005260046000fd5b5082331415611229565b6360eb6c2360e01b60005260046000fd5b6001915060a01c1615846111fd565b604036600319011261029a576112c161207a565b602435906001600160401b03821161029a573660238301121561029a578160040135906112ed82612174565b916112fb6040519384612151565b8083526020830193366024838301011161029a57816000926024602093018737840101526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630811490811561156c575b5061118a576000546001600160a01b03163303610612576001600160a01b038116928315610f6457813b1561155b5730841461154c57600080516020612f4083398151915254846113a36121ed565b7f6ea8b34d59b2818d3f37a08dddaa06f5886b9c20c907b36f03ca6528e106e86f6113d9604051926040845260408401906121c8565b4260208401526001600160a01b038516929081900390a36040516352d1902d60e01b8152602081600481895afa60009181611518575b506114295785634c9c8ce360e01b60005260045260246000fd5b9081600080516020612f408339815191528793036115045750833b156114ef576001600160a01b0319168117600080516020612f40833981519152557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b600080a28251156114d4576000809161069b945190845af43d156114cc573d916114af83612174565b926114bd6040519485612151565b83523d6000602085013e612e7e565b606091612e7e565b505050346114de57005b63b398979f60e01b60005260046000fd5b50634c9c8ce360e01b60005260045260246000fd5b632a87526960e21b60005260045260246000fd5b9091506020813d602011611544575b8161153460209383612151565b8101031261029a5751908761140f565b3d9150611527565b614e8d60eb1b60005260046000fd5b632e07c4bd60e11b60005260046000fd5b600080516020612f40833981519152546001600160a01b03161415905084611354565b3461029a57602036600319011261029a576004356115ab612795565b6115cd6115b7826127e0565b9190600263ffffffff825460a01c1617906122e3565b6001600160a01b0316907fc2713e691344add4705edc62a0ee5aede95ba66ad68f97316efef9cb50644edd600080a3005b3461029a57600036600319011261029a57336000908152600080516020612f60833981519152602052604090205460ff1615806116e1575b6116d0576000805160206130008339815191525460ff8116156116bf5760ff1916600080516020613000833981519152557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6020604051338152a16040514281527f107553d8191d85b405879cf752997865edd48d94e20bda4dd27223c94b31a7cc60203392a2005b638dfc202b60e01b60005260046000fd5b63659a07b360e11b60005260046000fd5b506000546001600160a01b0316331415611636565b3461029a57604036600319011261029a5761029661171d611715612064565b600435612306565b604093919351938493846120dc565b3461029a57604036600319011261029a57611745612064565b336001600160a01b038216036117615761069b90600435612751565b63334bd91960e11b60005260046000fd5b3461029a57602036600319011261029a57600435604060008281526004602052209081549160018060a01b038316928315908115611837575b5061128d57336000908152600080516020612f60833981519152602052604090205460ff16158061182d575b61127257806117f363fffffff7611806935460a01c16826122e3565b80546001600160e01b031681558261269b565b7f054490ec6650e07db9b97a06ea31d44cebd44b390c9975a380055e1b4d3cac21600080a3005b50823314156117d7565b6008915060a01c1615846117ab565b3461029a57604036600319011261029a5761069b600435611865612064565b90611872610691826122c2565b612709565b3461029a57602036600319011261029a576004356118c161189782612629565b91906118ad63fffffffb825460a01c16826122e3565b805463ffffffff60c01b191681558361269b565b6001600160a01b0316907f09cb4ec44cdef8489412844b9682f87f7900758fa2bd7e039113e9125e538e0f600080a3005b3461029a57602036600319011261029a57600435604060008281526004602052209081549160018060a01b0383169283159081156119a4575b5061128d57336000908152600080516020612f60833981519152602052604090205460ff16158061199a575b611272578061124563fffffffd611973935460a01c16826122e3565b7fb390ab029eab314bd18190ebe73d7e5c1c336beaa5c83ac22578378dc9ccc405600080a3005b5082331415611957565b6002915060a01c16158461192b565b3461029a57602036600319011261029a5760206119d16004356122c2565b604051908152f35b3461029a57604036600319011261029a5761029661171d6119f8612064565b60043561224a565b3461029a57604036600319011261029a57600435611a1c6120c9565b63ffffffff600554169063ffffffff811691808310908115611ac8575b5061049b57611a4783612629565b909263ffffffff845460c01c16809260018060a01b03163314159182611abd575b5050611aac57611a98827e8a218591d4362499c38c38eb1c12e7a7cc97a9068818d1fe6046a42ba4a5ba94612210565b611aa760405192839283612233565b0390a2005b634e80a40760e11b60005260046000fd5b111590508186611a68565b90501584611a39565b3461029a57602036600319011261029a57611aea6120b6565b6000805160206130208339815191525460ff8160401c16908115611bca575b50611bb957600080516020613020833981519152805460026001600160401b0319821681179092556000546001600160481b031990911690911791906001600160a01b031633036106125763ffffffff168015610ea757604081600080516020612fa08339815191529263ffffffff196005541617600555815190600082526020820152a160008051602061302083398151915255600080516020612f00833981519152602060405160028152a1005b63f92ee8a960e01b60005260046000fd5b60026001600160401b03919091161015905082611b09565b3461029a5760a036600319011261029a57611bfb61207a565b611c03612064565b906044356001600160a01b03811680820361029a576064356001600160a01b0381169182820361029a576084356001600160a01b038116949085900361029a5760008051602061302083398151915254604081901c60ff161596906001600160401b031680159081611f80575b6001149081611f76575b159081611f6d575b50611bb95760008051602061302083398151915280546001600160401b031916600117905586611f48575b611cb5612acc565b611cbd612acc565b611cc5612acc565b611ccd612acc565b6001600160a01b038116908115610f64578315610f64578515610f64576001600160a01b038916988915610f64573b15610f5357858414611f375762aa36a746148015611f2c575b8015611f21575b1580611f0f575b610f5357611d32906000612afa565b9081611ec8575b5015611e0d57611d5790600080516020612fe0833981519152612afa565b9081611e73575b5015611e0d57611d7c90600080516020612f20833981519152612afa565b9081611e1e575b5015611e0d57600080546001600160a01b031916841781556040519390600080516020612f808339815191528180a38015610f6457803b15610f5357600380546001600160a01b031916919091179055611dd957005b600080516020613020833981519152805460ff60401b1916905560018152600080516020612f0083398151915290602090a1005b63cf5a8e3360e01b60005260046000fd5b600080516020612f20833981519152600052600080516020612ee0833981519152602052611e6c907ffff5b43478fa6840382eb63777e0da6941d320b940e3f70f0ea4780feff95827612d3a565b5084611d83565b600080516020612fe0833981519152600052600080516020612ee0833981519152602052611ec1907f32d31393d541a265984ec379cddd8b1fcbe5f2b0eb8ad81dddfead454f135eaa612d3a565b5086611d5e565b60008052600080516020612ee0833981519152602052611f08907f615f0f9e84155bea8cc509fe18befeb1baf65611e38a6ba60964480fb29dfd44612d3a565b5088611d39565b50823b1580611d235750843b15611d23565b50617a694614611d1c565b506105394614611d15565b638135316560e01b60005260046000fd5b600080516020613020833981519152805460ff60401b1916600160401b179055611cad565b90501589611c82565b303b159150611c7a565b889150611c70565b3461029a57604036600319011261029a57610296611fbc611fa7612064565b600435600052600460205260406000206123c8565b611fc581612090565b60405191818392158361209a565b3461029a57600036600319011261029a57602063ffffffff60055416604051908152f35b3461029a57602036600319011261029a576004359063ffffffff60e01b821680920361029a57602091635a05180f60e01b8114908115612039575b5015158152f35b637965db0b60e01b811491508115612053575b5083612032565b6301ffc9a760e01b1490508361204c565b602435906001600160a01b038216820361029a57565b600435906001600160a01b038216820361029a57565b600811156103b857565b9015158152604081019291906020906120b283612090565b0152565b6004359063ffffffff8216820361029a57565b6024359063ffffffff8216820361029a57565b91604091949363ffffffff916060850196151585526120fa81612090565b602085015216910152565b60a081019081106001600160401b0382111761212057604052565b634e487b7160e01b600052604160045260246000fd5b608081019081106001600160401b0382111761212057604052565b601f909101601f19168101906001600160401b0382119082101761212057604052565b6001600160401b03811161212057601f01601f191660200190565b604435906001600160401b038216820361029a57565b60005b8381106121b85750506000910152565b81810151838201526020016121a8565b906020916121e1815180928185528580860191016121a5565b601f01601f1916010190565b604051906121fc604083612151565b60058252640322e312e360dc1b6020830152565b805463ffffffff60c01b191660c09290921b63ffffffff60c01b16919091179055565b63ffffffff91821681529116602082015260400190565b600052600460205261226160406000209182612485565b61226a81612090565b806122b857505460e01c63ffffffff60055416811580156122b0575b6122a35780821061229c57505b60019160009190565b9050612293565b5050600090600390600090565b508015612286565b6000929091508290565b600052600080516020612fc083398151915260205260016040600020015490565b805463ffffffff60a01b191660a09290921b63ffffffff60a01b16919091179055565b919091600052600460205261232060406000209283612511565b9161232a83612090565b826123625763ffffffff9192505460c01c1663ffffffff60055416811580156122b0576122a35780821061229c575060019160009190565b5060009190600090565b90612383916000526004602052604060002061259d565b61238c81612090565b8061239a5750600190600090565b600091565b8054600160a01b600160e01b03191660a09290921b600160a01b600160e01b0316919091179055565b60ff600080516020613000833981519152541661247e57546001600160a01b0381169081156124765760a01c6002161561246f5760005260016020526040600020549060ff8260e01c1660038110156103b857801561246757600214612460574260a083901c6001600160401b03161115612459576001600160a01b0390811691160361245457600090565b600790565b5050600690565b5050600590565b505050600490565b5050600390565b505050600290565b5050600190565b60ff600080516020613000833981519152541661247e57546001600160a01b0381169081156124765760a01c6008161561246f5760005260016020526040600020549060ff8260e01c1660038110156103b857801561246757600214612460574260a083901c6001600160401b03161115612459576001600160a01b0390811691160361245457600090565b60ff600080516020613000833981519152541661247e57546001600160a01b0381169081156124765760a01c6004161561246f5760005260016020526040600020549060ff8260e01c1660038110156103b857801561246757600214612460574260a083901c6001600160401b03161115612459576001600160a01b0390811691160361245457600090565b60ff600080516020613000833981519152541661247e57546001600160a01b0381169081156124765760a01c6001161561246f5760005260016020526040600020549060ff8260e01c1660038110156103b857801561246757600214612460574260a083901c6001600160401b03161115612459576001600160a01b0390811691160361245457600090565b6000908152600460205260409020805490916001600160a01b03821691821590811561268c575b5061128d57336000908152600080516020612f60833981519152602052604090205460ff161580612682575b61127257565b508133141561267c565b6004915060a01c161538612650565b905460a01c63ffffffff16156126ae5750565b600052600460205260006040812055565b6000818152600080516020612fc08339815191526020908152604080832033845290915290205460ff16156126f15750565b63e2517d3f60e01b6000523360045260245260446000fd5b6127138282612afa565b918261271e57505090565b6000918252600080516020612ee0833981519152602052604090912061274d916001600160a01b031690612d3a565b5090565b61275b8282612ba3565b918261276657505090565b6000918252600080516020612ee0833981519152602052604090912061274d916001600160a01b031690612dab565b60ff60008051602061300083398151915254166127ae57565b63d93c066560e01b60005260046000fd5b519064ffffffffff8216820361029a57565b519061ffff8216820361029a57565b8015612abb57600354604051638d34875560e01b8152600481018390529190600090839060249082906001600160a01b03165afa918215612aaf57600092612904575b5060808201516001600160a01b0316913383900361127257610120015161284981612090565b61285281612090565b600381149081156128ef575b81156128db575b506128ca5781600052600160205260ff60406000205460e01c1660038110156103b8576001036128b957600090815260046020526040902080546001600160a01b0319166001600160a01b03831617815591565b632e68d1d360e21b60005260046000fd5b63e9f6db8560e01b60005260046000fd5b600791506128e881612090565b1438612865565b90506128fa81612090565b600581149061285e565b90913d8082843e6129158184612151565b820191602081840312612a8f578051906001600160401b038211612a975701906101a082840312612a8c57604051926101a084016001600160401b03811185821017612a9b5760409081528351855260208085015190860152838101519085015260608301516001600160401b038111612a9757830181601f82011215612a97578051906129a282612174565b926129b06040519485612151565b82845260208383010111612a9357906129cf91602080850191016121a5565b606084015260808201516001600160a01b0381168103612a8f5760808401526129fa60a083016127bf565b60a0840152612a0b60c083016127bf565b60c0840152612a1c60e083016127d1565b60e0840152612a2e61010083016127bf565b610100840152610120820151906008821015612a8c5750612a7f9161018091610120850152612a6061014082016127bf565b610140850152612a7361016082016127d1565b610160850152016127bf565b6101808201529038612823565b80fd5b5080fd5b8380fd5b8280fd5b634e487b7160e01b83526041600452602483fd5b6040513d6000823e3d90fd5b637bb0b62160e01b60005260046000fd5b60ff6000805160206130208339815191525460401c1615612ae957565b631afcd79f60e31b60005260046000fd5b6000818152600080516020612fc0833981519152602090815260408083206001600160a01b038616845290915290205460ff16612b9c576000818152600080516020612fc0833981519152602090815260408083206001600160a01b0395909516808452949091528120805460ff19166001179055339291907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9080a4600190565b5050600090565b6000818152600080516020612fc0833981519152602090815260408083206001600160a01b038616845290915290205460ff1615612b9c576000818152600080516020612fc0833981519152602090815260408083206001600160a01b0395909516808452949091528120805460ff19169055339291907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9080a4600190565b158015612cfb575b610f64576001600160a01b0316600090815260026020526040902054612cea576001600160401b031642811115612cd95760005460a01c6001600160401b03168015159182612cae575b5050612c9d57565b63e774e7b560e01b60005260046000fd5b909150428103908111612cc357113880612c95565b634e487b7160e01b600052601160045260246000fd5b63efa7aefd60e01b60005260046000fd5b633b53f64f60e21b60005260046000fd5b506001600160a01b03811615612c4b565b8054821015612d245760005260206000200190600090565b634e487b7160e01b600052603260045260246000fd5b6001810190826000528160205260406000205415600014612da3578054600160401b81101561212057612d8e612d77826001879401855584612d0c565b819391549060031b91821b91600019901b19161790565b90555491600052602052604060002055600190565b505050600090565b9060018201918160005282602052604060002054801515600014612e75576000198101818111612cc3578254600019810191908211612cc357818103612e3e575b50505080548015612e28576000190190612e068282612d0c565b8154906000199060031b1b191690555560005260205260006040812055600190565b634e487b7160e01b600052603160045260246000fd5b612e5e612e4e612d779386612d0c565b90549060031b1c92839286612d0c565b905560005283602052604060002055388080612dec565b50505050600090565b90612ea45750805115612e9357602081519101fd5b63d6bda27560e01b60005260046000fd5b81511580612ed6575b612eb5575090565b639996b31560e01b60009081526001600160a01b0391909116600452602490fd5b50803b15612ead56fec1f6fe24621ce81ec5827caf0253cadb74709b061630e6b55e82371705932000c7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d275027301df982f5215b4963a854cf9c73219df80cb6acd8f098189c9480c7bbc360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc07966f2ab141347034724e9b2a472c2f77f5cd745aeba27cacba797b8fcb708617dc5b1290f7495d7f8cc68476e6941aaf510598fa925d0d2720edc8805a846cd37bc77615afefc793aa17d75d4249a9b517ba91b0e54a49c9c4a44b3d7e228302dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800edcc084d3dcd65a1f7f23c65c46722faca6953d28e43150a467cf43e5c309238cd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00a164736f6c6343000822000a";
|
|
19066
19103
|
var isSuperArgs2 = (xs) => xs.length > 1;
|
|
19067
|
-
var AgentDelegationRegistry__factory = class extends
|
|
19104
|
+
var AgentDelegationRegistry__factory = class extends import_ethers16.ContractFactory {
|
|
19068
19105
|
constructor(...args) {
|
|
19069
19106
|
if (isSuperArgs2(args)) {
|
|
19070
19107
|
super(...args);
|
|
@@ -19084,10 +19121,10 @@ var AgentDelegationRegistry__factory = class extends import_ethers15.ContractFac
|
|
|
19084
19121
|
static bytecode = _bytecode2;
|
|
19085
19122
|
static abi = _abi2;
|
|
19086
19123
|
static createInterface() {
|
|
19087
|
-
return new
|
|
19124
|
+
return new import_ethers16.Interface(_abi2);
|
|
19088
19125
|
}
|
|
19089
19126
|
static connect(address, runner) {
|
|
19090
|
-
return new
|
|
19127
|
+
return new import_ethers16.Contract(
|
|
19091
19128
|
address,
|
|
19092
19129
|
_abi2,
|
|
19093
19130
|
runner
|
|
@@ -19096,7 +19133,7 @@ var AgentDelegationRegistry__factory = class extends import_ethers15.ContractFac
|
|
|
19096
19133
|
};
|
|
19097
19134
|
|
|
19098
19135
|
// src/utils/position-delegate.utils.ts
|
|
19099
|
-
var
|
|
19136
|
+
var import_ethers17 = require("ethers");
|
|
19100
19137
|
var POSITION_DELEGATE_REGISTRY_ABI = [
|
|
19101
19138
|
"function positionDelegate(bytes32 positionId) view returns (address)",
|
|
19102
19139
|
"function isDelegate(bytes32 positionId, address delegate) view returns (bool)",
|
|
@@ -19115,7 +19152,7 @@ var DELEGATE_STATUS_ABI = [
|
|
|
19115
19152
|
"function delegateStatus(bytes32 positionId, address delegate) view returns (bool ok, uint8 reason)"
|
|
19116
19153
|
];
|
|
19117
19154
|
async function setPositionDelegate(positionId, delegate, signer, registryAddress) {
|
|
19118
|
-
const registry = new
|
|
19155
|
+
const registry = new import_ethers17.Contract(
|
|
19119
19156
|
registryAddress,
|
|
19120
19157
|
POSITION_DELEGATE_REGISTRY_ABI,
|
|
19121
19158
|
signer
|
|
@@ -19123,7 +19160,7 @@ async function setPositionDelegate(positionId, delegate, signer, registryAddress
|
|
|
19123
19160
|
return registry["setPositionDelegate"](positionId, delegate);
|
|
19124
19161
|
}
|
|
19125
19162
|
async function getPositionDelegate(positionId, provider, registryAddress) {
|
|
19126
|
-
const registry = new
|
|
19163
|
+
const registry = new import_ethers17.Contract(
|
|
19127
19164
|
registryAddress,
|
|
19128
19165
|
POSITION_DELEGATE_REGISTRY_ABI,
|
|
19129
19166
|
provider
|
|
@@ -19131,7 +19168,7 @@ async function getPositionDelegate(positionId, provider, registryAddress) {
|
|
|
19131
19168
|
return registry["positionDelegate"](positionId);
|
|
19132
19169
|
}
|
|
19133
19170
|
async function isPositionDelegate(positionId, delegate, provider, registryAddress) {
|
|
19134
|
-
const registry = new
|
|
19171
|
+
const registry = new import_ethers17.Contract(
|
|
19135
19172
|
registryAddress,
|
|
19136
19173
|
POSITION_DELEGATE_REGISTRY_ABI,
|
|
19137
19174
|
provider
|
|
@@ -19139,7 +19176,7 @@ async function isPositionDelegate(positionId, delegate, provider, registryAddres
|
|
|
19139
19176
|
return registry["isDelegate"](positionId, delegate);
|
|
19140
19177
|
}
|
|
19141
19178
|
async function getDelegateStatus(positionId, delegate, provider, registryAddress) {
|
|
19142
|
-
const registry = new
|
|
19179
|
+
const registry = new import_ethers17.Contract(
|
|
19143
19180
|
registryAddress,
|
|
19144
19181
|
DELEGATE_STATUS_ABI,
|
|
19145
19182
|
provider
|
|
@@ -19235,7 +19272,7 @@ var TxValidationError = class extends Error {
|
|
|
19235
19272
|
};
|
|
19236
19273
|
|
|
19237
19274
|
// src/utils/sign-guard/signable-functions.ts
|
|
19238
|
-
var
|
|
19275
|
+
var import_ethers18 = require("ethers");
|
|
19239
19276
|
var SIGNABLE_FUNCTIONS = [
|
|
19240
19277
|
"function mintUCD(bytes32 positionId, uint256 mintAmount, uint256 mintFee, uint256 newDebt, uint256 newCollateral, uint256 btcPrice, bytes32 authorizedSpendsHash, bytes32 ucdDebtHash, bytes32 contractHash, uint256 quantumTimestamp, bytes calldata mintValidatorSignature) external returns (bool)",
|
|
19241
19278
|
// `makePayment` is the ONLY repayment entry point. A `repayPosition` entry
|
|
@@ -19272,7 +19309,7 @@ var SIGNABLE_FUNCTIONS = [
|
|
|
19272
19309
|
// this too is client-only and never module-whitelisted.
|
|
19273
19310
|
"function addAddress(string btcAddress) external"
|
|
19274
19311
|
];
|
|
19275
|
-
var IFACE = new
|
|
19312
|
+
var IFACE = new import_ethers18.ethers.Interface(SIGNABLE_FUNCTIONS);
|
|
19276
19313
|
function encodeSignable(fn, args) {
|
|
19277
19314
|
return IFACE.encodeFunctionData(fn, args);
|
|
19278
19315
|
}
|
|
@@ -19296,46 +19333,6 @@ function decodeSignable(data) {
|
|
|
19296
19333
|
|
|
19297
19334
|
// src/utils/sign-guard/tx-validator.ts
|
|
19298
19335
|
var import_ethers19 = require("ethers");
|
|
19299
|
-
|
|
19300
|
-
// src/utils/sign-guard/fee-ceiling.ts
|
|
19301
|
-
var import_ethers18 = require("ethers");
|
|
19302
|
-
var MAX_GAS_LIMIT = 5000000n;
|
|
19303
|
-
var MAX_FEE_PER_GAS_WEI = 2000000000000n;
|
|
19304
|
-
var DEFAULT_MAX_TX_FEE_WEI = 250000000000000000n;
|
|
19305
|
-
var DEFAULT_FEE_CEILING = {
|
|
19306
|
-
maxGasLimit: MAX_GAS_LIMIT,
|
|
19307
|
-
maxFeePerGasWei: MAX_FEE_PER_GAS_WEI,
|
|
19308
|
-
maxTxFeeWei: DEFAULT_MAX_TX_FEE_WEI
|
|
19309
|
-
};
|
|
19310
|
-
function fmtEth(wei) {
|
|
19311
|
-
return `${import_ethers18.ethers.formatEther(wei)} ETH`;
|
|
19312
|
-
}
|
|
19313
|
-
function fmtGwei(wei) {
|
|
19314
|
-
return `${import_ethers18.ethers.formatUnits(wei, "gwei")} gwei`;
|
|
19315
|
-
}
|
|
19316
|
-
function worstCaseFeeWei(gasLimit, maxFeePerGas) {
|
|
19317
|
-
if (gasLimit == null || maxFeePerGas == null)
|
|
19318
|
-
return null;
|
|
19319
|
-
return gasLimit * maxFeePerGas;
|
|
19320
|
-
}
|
|
19321
|
-
function assertFeeCeiling(gasLimit, maxFeePerGas, raise, ceiling = DEFAULT_FEE_CEILING) {
|
|
19322
|
-
if (gasLimit != null && gasLimit > ceiling.maxGasLimit) {
|
|
19323
|
-
raise(`gasLimit ${gasLimit} exceeds the signing ceiling of ${ceiling.maxGasLimit}`);
|
|
19324
|
-
}
|
|
19325
|
-
if (maxFeePerGas != null && maxFeePerGas > ceiling.maxFeePerGasWei) {
|
|
19326
|
-
raise(
|
|
19327
|
-
`maxFeePerGas ${fmtGwei(maxFeePerGas)} exceeds the signing ceiling of ${fmtGwei(ceiling.maxFeePerGasWei)}`
|
|
19328
|
-
);
|
|
19329
|
-
}
|
|
19330
|
-
const worst = worstCaseFeeWei(gasLimit, maxFeePerGas);
|
|
19331
|
-
if (worst != null && worst > ceiling.maxTxFeeWei) {
|
|
19332
|
-
raise(
|
|
19333
|
-
`worst-case transaction fee ${fmtEth(worst)} (gasLimit ${gasLimit} \xD7 ${fmtGwei(maxFeePerGas)}) exceeds the signing ceiling of ${fmtEth(ceiling.maxTxFeeWei)}.${ceiling.raiseHint ? ` ${ceiling.raiseHint}` : ""}`
|
|
19334
|
-
);
|
|
19335
|
-
}
|
|
19336
|
-
}
|
|
19337
|
-
|
|
19338
|
-
// src/utils/sign-guard/tx-validator.ts
|
|
19339
19336
|
function eqAddr(a, b) {
|
|
19340
19337
|
if (!a || !b)
|
|
19341
19338
|
return false;
|
|
@@ -20038,6 +20035,391 @@ function formatLiquidationFailureMessage(loanId, errorMessage, btcVault, btcVaul
|
|
|
20038
20035
|
return `\u274C DH SDK: Loan Id ${loanId} liquidation FAILED: ${errorMessage}; BTC vault ${btcVault} balance is ${formattedBalance}, UCD Debt of ${ucdDebt} and BTC Price of ${formattedPrice}`;
|
|
20039
20036
|
}
|
|
20040
20037
|
|
|
20038
|
+
// src/utils/contract-error-decoder.ts
|
|
20039
|
+
var import_ethers21 = require("ethers");
|
|
20040
|
+
|
|
20041
|
+
// src/constants/chunks/contract-errors.generated.ts
|
|
20042
|
+
var CONTRACT_ERROR_FRAGMENTS = [
|
|
20043
|
+
{ fragment: "error AboveMaxRedeem(uint256 amount, uint256 maximum)", contracts: ["SimplePSMV2"] },
|
|
20044
|
+
{ fragment: "error AboveMaxSwap(uint256 amount, uint256 maximum)", contracts: ["SimplePSMV2"] },
|
|
20045
|
+
{ fragment: "error AccessControlBadConfirmation()", contracts: ["PositionManager", "LoanOperationsManagerModule", "CollateralManagerModule", "BTCSpendAuthorizer", "UCDController", "SimplePSMV2"] },
|
|
20046
|
+
{ fragment: "error AccessControlUnauthorizedAccount(address account, bytes32 neededRole)", contracts: ["PositionManager", "LoanOperationsManagerModule", "CollateralManagerModule", "BTCSpendAuthorizer", "UCDController", "SimplePSMV2"] },
|
|
20047
|
+
{ fragment: "error AddressEmptyCode(address target)", contracts: ["PositionManager", "LoanOperationsManagerModule", "OperationAuthorizationRegistry", "CollateralManagerModule", "BTCSpendAuthorizer", "UCDController", "SimplePSMV2"] },
|
|
20048
|
+
{ fragment: "error AlreadyActive()", contracts: ["PositionManagerErrors"] },
|
|
20049
|
+
{ fragment: "error AlreadySigned()", contracts: ["PositionManagerErrors", "OperationAuthorizationRegistry"] },
|
|
20050
|
+
{ fragment: "error AmountMustBePositive()", contracts: ["LoanOperationsManagerModule", "SimplePSMV2"] },
|
|
20051
|
+
{ fragment: "error ArrayLengthMismatch()", contracts: ["BTCSpendAuthorizer", "SimplePSMV2"] },
|
|
20052
|
+
{ fragment: "error BTCSpendAuthorizerNotSet()", contracts: ["LoanOperationsManagerModule"] },
|
|
20053
|
+
{ fragment: "error BalanceMismatch()", contracts: ["UCDController"] },
|
|
20054
|
+
{ fragment: "error BatchSizeTooLarge()", contracts: ["BTCSpendAuthorizer"] },
|
|
20055
|
+
{ fragment: "error BelowMinRedeem(uint256 amount, uint256 minimum)", contracts: ["SimplePSMV2"] },
|
|
20056
|
+
{ fragment: "error BelowMinSwap(uint256 amount, uint256 minimum)", contracts: ["SimplePSMV2"] },
|
|
20057
|
+
{ fragment: "error BorrowerBTCSpendMutationDisabled()", contracts: ["LoanOperationsManagerModule"] },
|
|
20058
|
+
{ fragment: "error BtcAmountTooLarge()", contracts: ["PositionManager", "LoanOperationsManagerModule", "CollateralManagerModule"] },
|
|
20059
|
+
{ fragment: "error BtcPriceBoundOutOfRange()", contracts: ["LoanOperationsManagerModule"] },
|
|
20060
|
+
{ fragment: "error BtcPriceDeviationExceeded(uint256 signedPrice, uint256 chainlinkPrice, uint16 deviationBps)", contracts: ["LoanOperationsManagerModule"] },
|
|
20061
|
+
{ fragment: "error BtcPriceFeedStale(uint256 updatedAt, uint256 maxAge)", contracts: ["LoanOperationsManagerModule"] },
|
|
20062
|
+
{ fragment: "error BtcPriceTooHigh()", contracts: ["PositionManager", "LoanOperationsManagerModule", "CollateralManagerModule"] },
|
|
20063
|
+
{ fragment: "error BurnCallFailed()", contracts: ["UCDController"] },
|
|
20064
|
+
{ fragment: "error BurnGuardFailed(uint8 code)", contracts: ["UCDController"] },
|
|
20065
|
+
{ fragment: "error BurnVerificationFailed()", contracts: ["PositionManager", "PositionManagerErrors"] },
|
|
20066
|
+
{ fragment: "error CannotRemoveLastTerm()", contracts: ["PositionManagerErrors"] },
|
|
20067
|
+
{ fragment: "error CannotUpgradeToSelf()", contracts: ["PositionManagerErrors", "LoanOperationsManagerModule", "CollateralManagerModule", "BTCSpendAuthorizer"] },
|
|
20068
|
+
{ fragment: "error CircuitBreakerNotActive()", contracts: ["PositionManagerErrors"] },
|
|
20069
|
+
{ fragment: "error CircuitBreakerTriggered()", contracts: ["PositionManagerErrors"] },
|
|
20070
|
+
{ fragment: "error CollateralOverflow()", contracts: ["PositionManager", "LoanOperationsManagerModule", "CollateralManagerModule"] },
|
|
20071
|
+
{ fragment: "error CollateralRatioTooLargeForStorage()", contracts: ["PositionManagerErrors"] },
|
|
20072
|
+
{ fragment: "error CollateralRatioTooLow()", contracts: ["PositionManager", "PositionManagerErrors", "LoanOperationsManagerModule"] },
|
|
20073
|
+
{ fragment: "error ContractNotDeployed(address addr)", contracts: ["PositionManager"] },
|
|
20074
|
+
{ fragment: "error DailyLimitExceeded()", contracts: ["UCDController"] },
|
|
20075
|
+
{ fragment: "error DeadZoneViolation()", contracts: ["OperationAuthorizationRegistry"] },
|
|
20076
|
+
{ fragment: "error DebtCalculationMismatch()", contracts: ["LoanOperationsManagerModule"] },
|
|
20077
|
+
{ fragment: "error DebtNotZero()", contracts: ["PositionManager", "PositionManagerErrors"] },
|
|
20078
|
+
{ fragment: "error DebtOverflow()", contracts: ["LoanOperationsManagerModule"] },
|
|
20079
|
+
{ fragment: "error DebtUpdateVerificationFailed()", contracts: ["LoanOperationsValidation", "LoanOperationsManagerModule"] },
|
|
20080
|
+
{ fragment: "error DebtUpdateVerificationFailedDetailed(bytes32 positionId, uint256 currentDebt, uint256 newDebt, uint256 quantumTimestamp, uint256 supplyAfterMint, uint256 expectedIncrease)", contracts: ["LoanOperationsManagerModule"] },
|
|
20081
|
+
{ fragment: "error DecimalsMismatch(uint8 provided, uint8 actual)", contracts: ["SimplePSMV2"] },
|
|
20082
|
+
{ fragment: "error DecimalsQueryFailed()", contracts: ["SimplePSMV2"] },
|
|
20083
|
+
{ fragment: "error DivisionByZero()", contracts: ["PositionManager", "CollateralManagerModule"] },
|
|
20084
|
+
{ fragment: "error ECDSAInvalidSignature()", contracts: ["BTCSpendAuthorizer"] },
|
|
20085
|
+
{ fragment: "error ECDSAInvalidSignatureLength(uint256 length)", contracts: ["BTCSpendAuthorizer"] },
|
|
20086
|
+
{ fragment: "error ECDSAInvalidSignatureS(bytes32 s)", contracts: ["BTCSpendAuthorizer"] },
|
|
20087
|
+
{ fragment: "error ERC1967InvalidImplementation(address implementation)", contracts: ["PositionManager", "LoanOperationsManagerModule", "OperationAuthorizationRegistry", "CollateralManagerModule", "BTCSpendAuthorizer", "UCDController", "SimplePSMV2"] },
|
|
20088
|
+
{ fragment: "error ERC1967NonPayable()", contracts: ["PositionManager", "LoanOperationsManagerModule", "OperationAuthorizationRegistry", "CollateralManagerModule", "BTCSpendAuthorizer", "UCDController", "SimplePSMV2"] },
|
|
20089
|
+
{ fragment: "error EnforcedPause()", contracts: ["PositionManager", "LoanOperationsManagerModule", "CollateralManagerModule", "BTCSpendAuthorizer", "UCDController", "SimplePSMV2"] },
|
|
20090
|
+
{ fragment: "error EntryFeeTooHigh(uint256 fee, uint256 max)", contracts: ["SimplePSMV2"] },
|
|
20091
|
+
{ fragment: "error ExceedsFeeBalance(uint256 requested, uint256 max)", contracts: ["SimplePSMV2"] },
|
|
20092
|
+
{ fragment: "error ExceedsMaxLoan()", contracts: ["PositionManagerErrors"] },
|
|
20093
|
+
{ fragment: "error ExitFeeTooHigh(uint256 fee, uint256 max)", contracts: ["SimplePSMV2"] },
|
|
20094
|
+
{ fragment: "error ExpectedPause()", contracts: ["PositionManager", "LoanOperationsManagerModule", "CollateralManagerModule", "BTCSpendAuthorizer", "UCDController", "SimplePSMV2"] },
|
|
20095
|
+
{ fragment: "error ExtensionFeeMintingFailed()", contracts: ["PositionManager", "PositionManagerErrors"] },
|
|
20096
|
+
{ fragment: "error ExtensionNotAllowed()", contracts: ["PositionManagerErrors"] },
|
|
20097
|
+
{ fragment: "error FailedCall()", contracts: ["PositionManager", "LoanOperationsManagerModule", "OperationAuthorizationRegistry", "CollateralManagerModule", "BTCSpendAuthorizer", "UCDController", "SimplePSMV2"] },
|
|
20098
|
+
{ fragment: "error FailedToGetStablecoinDecimals()", contracts: ["SimplePSMV2"] },
|
|
20099
|
+
{ fragment: "error FailedToGetUCDDecimals()", contracts: ["SimplePSMV2"] },
|
|
20100
|
+
{ fragment: "error FeeOnTransferNotSupported()", contracts: ["SimplePSMV2"] },
|
|
20101
|
+
{ fragment: "error FeeTooHigh(uint256 fee, uint256 max)", contracts: ["PositionManagerErrors"] },
|
|
20102
|
+
{ fragment: "error FeeTooLow(uint256 fee, uint256 min)", contracts: ["PositionManagerErrors"] },
|
|
20103
|
+
{ fragment: "error ImplNotDeployed()", contracts: ["LoanOperationsManagerModule", "BTCSpendAuthorizer"] },
|
|
20104
|
+
{ fragment: "error ImplementationNotDeployed()", contracts: ["UCDController"] },
|
|
20105
|
+
{ fragment: "error InitialBalanceTooLarge()", contracts: ["SimplePSMV2"] },
|
|
20106
|
+
{ fragment: "error InsufficientBalance()", contracts: ["PositionManagerErrors"] },
|
|
20107
|
+
{ fragment: "error InsufficientCollateralForAmount()", contracts: ["PositionManagerErrors"] },
|
|
20108
|
+
{ fragment: "error InsufficientCollateralRatio()", contracts: ["CollateralManagerModule"] },
|
|
20109
|
+
{ fragment: "error InsufficientFeeBal()", contracts: ["LoanOperationsManagerModule"] },
|
|
20110
|
+
{ fragment: "error InsufficientReserves(uint256 available, uint256 required)", contracts: ["SimplePSMV2"] },
|
|
20111
|
+
{ fragment: "error InsufficientSignatures()", contracts: ["OperationAuthorizationRegistry"] },
|
|
20112
|
+
{ fragment: "error IntegrityCheckFailed()", contracts: ["PositionManagerErrors"] },
|
|
20113
|
+
{ fragment: "error InvalidActionHash()", contracts: ["CollateralManagerModule"] },
|
|
20114
|
+
{ fragment: "error InvalidAddress()", contracts: ["PositionManager", "PositionManagerErrors", "OperationAuthorizationRegistry", "CollateralManagerModule", "SimplePSMV2"] },
|
|
20115
|
+
{ fragment: "error InvalidAdmin()", contracts: ["LoanOperationsManagerModule", "BTCSpendAuthorizer", "SimplePSMV2"] },
|
|
20116
|
+
{ fragment: "error InvalidAmount()", contracts: ["PositionManagerErrors", "SimplePSMV2"] },
|
|
20117
|
+
{ fragment: "error InvalidBTCPrice()", contracts: ["PositionManager", "PositionManagerErrors"] },
|
|
20118
|
+
{ fragment: "error InvalidBytes32()", contracts: ["PositionManager"] },
|
|
20119
|
+
{ fragment: "error InvalidCollateralAmount()", contracts: ["PositionManager", "PositionManagerErrors"] },
|
|
20120
|
+
{ fragment: "error InvalidController()", contracts: ["SimplePSMV2"] },
|
|
20121
|
+
{ fragment: "error InvalidDecimals(uint8 decimals)", contracts: ["SimplePSMV2"] },
|
|
20122
|
+
{ fragment: "error InvalidExchangeRate()", contracts: ["SimplePSMV2"] },
|
|
20123
|
+
{ fragment: "error InvalidImpl()", contracts: ["LoanOperationsManagerModule", "BTCSpendAuthorizer"] },
|
|
20124
|
+
{ fragment: "error InvalidImplementation()", contracts: ["UCDController"] },
|
|
20125
|
+
{ fragment: "error InvalidInitialization()", contracts: ["PositionManager", "LoanOperationsManagerModule", "OperationAuthorizationRegistry", "CollateralManagerModule", "BTCSpendAuthorizer", "UCDController", "SimplePSMV2"] },
|
|
20126
|
+
{ fragment: "error InvalidLitSignature()", contracts: ["BTCSpendAuthorizer"] },
|
|
20127
|
+
{ fragment: "error InvalidLoanOps()", contracts: ["BTCSpendAuthorizer"] },
|
|
20128
|
+
{ fragment: "error InvalidModuleAddress()", contracts: ["UCDController"] },
|
|
20129
|
+
{ fragment: "error InvalidNetwork()", contracts: ["PositionManager", "PositionManagerErrors"] },
|
|
20130
|
+
{ fragment: "error InvalidNetworkMode()", contracts: ["PositionManagerErrors"] },
|
|
20131
|
+
{ fragment: "error InvalidOracleConfig()", contracts: ["LoanOperationsManagerModule"] },
|
|
20132
|
+
{ fragment: "error InvalidPKPId()", contracts: ["PositionManagerErrors"] },
|
|
20133
|
+
{ fragment: "error InvalidParameter()", contracts: ["UCDController"] },
|
|
20134
|
+
{ fragment: "error InvalidPkpPublicKey()", contracts: ["PositionManager", "PositionManagerErrors"] },
|
|
20135
|
+
{ fragment: "error InvalidPosMgr()", contracts: ["LoanOperationsManagerModule"] },
|
|
20136
|
+
{ fragment: "error InvalidPositionId()", contracts: ["PositionManager", "PositionManagerErrors", "LoanOperationsValidation", "LoanOperationsManagerModule", "CollateralManagerModule"] },
|
|
20137
|
+
{ fragment: "error InvalidPositionState()", contracts: ["LoanOperationsManagerModule"] },
|
|
20138
|
+
{ fragment: "error InvalidPriceFeed()", contracts: ["LoanOperationsManagerModule"] },
|
|
20139
|
+
{ fragment: "error InvalidRecipient()", contracts: ["LoanOperationsManagerModule", "SimplePSMV2"] },
|
|
20140
|
+
{ fragment: "error InvalidRegistry()", contracts: ["LoanOperationsManagerModule"] },
|
|
20141
|
+
{ fragment: "error InvalidRequestedExpiryDate()", contracts: ["PositionManagerErrors"] },
|
|
20142
|
+
{ fragment: "error InvalidSignature(string reason)", contracts: ["PositionManager"] },
|
|
20143
|
+
{ fragment: "error InvalidSignatureLength()", contracts: ["PositionManagerErrors"] },
|
|
20144
|
+
{ fragment: "error InvalidStablecoinAddress()", contracts: ["SimplePSMV2"] },
|
|
20145
|
+
{ fragment: "error InvalidStaleSpendAttestation()", contracts: ["BTCSpendAuthorizer"] },
|
|
20146
|
+
{ fragment: "error InvalidString(string value)", contracts: ["PositionManager"] },
|
|
20147
|
+
{ fragment: "error InvalidTerm()", contracts: ["PositionManager", "PositionManagerErrors"] },
|
|
20148
|
+
{ fragment: "error InvalidTerm(uint256 term, uint256 min, uint256 max)", contracts: ["PositionManager"] },
|
|
20149
|
+
{ fragment: "error InvalidTermMgr()", contracts: ["LoanOperationsManagerModule"] },
|
|
20150
|
+
{ fragment: "error InvalidTermStartTime()", contracts: ["PositionManagerErrors"] },
|
|
20151
|
+
{ fragment: "error InvalidToken()", contracts: ["SimplePSMV2"] },
|
|
20152
|
+
{ fragment: "error InvalidUCDCtrl()", contracts: ["LoanOperationsManagerModule"] },
|
|
20153
|
+
{ fragment: "error InvalidUCDDecimals(uint8 decimals)", contracts: ["SimplePSMV2"] },
|
|
20154
|
+
{ fragment: "error InvalidUCDToken()", contracts: ["LoanOperationsManagerModule"] },
|
|
20155
|
+
{ fragment: "error InvalidValidatorAddress()", contracts: ["BTCSpendAuthorizer"] },
|
|
20156
|
+
{ fragment: "error InvalidValidatorSignature()", contracts: ["PositionManagerErrors"] },
|
|
20157
|
+
{ fragment: "error InvalidVaultAddress()", contracts: ["PositionManagerErrors"] },
|
|
20158
|
+
{ fragment: "error InvalidVolumeCap(bool isRedeem)", contracts: ["SimplePSMV2"] },
|
|
20159
|
+
{ fragment: "error InvalidWithdrawalAddress()", contracts: ["CollateralManagerModule"] },
|
|
20160
|
+
{ fragment: "error InvalidWithdrawalLoanStatusType()", contracts: ["CollateralManagerModule"] },
|
|
20161
|
+
{ fragment: "error LiquidationsPaused()", contracts: ["PositionManager", "PositionManagerErrors"] },
|
|
20162
|
+
{ fragment: "error LoanAmountTooHigh()", contracts: ["PositionManagerErrors"] },
|
|
20163
|
+
{ fragment: "error LoanAmountTooLow()", contracts: ["PositionManagerErrors"] },
|
|
20164
|
+
{ fragment: "error MaxAuthorizedSpendsReached()", contracts: ["BTCSpendAuthorizer"] },
|
|
20165
|
+
{ fragment: "error MaxLoanOutOfBounds()", contracts: ["LoanOperationsManagerModule"] },
|
|
20166
|
+
{ fragment: "error MaxRedeemBelowMin(uint256 maximum, uint256 minimum)", contracts: ["SimplePSMV2"] },
|
|
20167
|
+
{ fragment: "error MaxRedeemCapDisabled()", contracts: ["SimplePSMV2"] },
|
|
20168
|
+
{ fragment: "error MaxSupplyExceeded()", contracts: ["UCDController"] },
|
|
20169
|
+
{ fragment: "error MaxSwapBelowMin(uint256 maximum, uint256 minimum)", contracts: ["SimplePSMV2"] },
|
|
20170
|
+
{ fragment: "error MaxSwapCapDisabled()", contracts: ["SimplePSMV2"] },
|
|
20171
|
+
{ fragment: "error MinLoanOutOfBounds()", contracts: ["LoanOperationsManagerModule"] },
|
|
20172
|
+
{ fragment: "error MintBorrowerMismatch()", contracts: ["LoanOperationsManagerModule"] },
|
|
20173
|
+
{ fragment: "error MintCallFailed()", contracts: ["UCDController"] },
|
|
20174
|
+
{ fragment: "error MintFailed()", contracts: ["LoanOperationsManagerModule"] },
|
|
20175
|
+
{ fragment: "error MintGuardFailed(uint8 code)", contracts: ["UCDController"] },
|
|
20176
|
+
{ fragment: "error MintVerificationFailed()", contracts: ["PositionManager", "PositionManagerErrors"] },
|
|
20177
|
+
{ fragment: "error MintVerificationMismatch(uint256 expectedSupply, uint256 currentSupply)", contracts: ["PositionManager", "PositionManagerErrors"] },
|
|
20178
|
+
{ fragment: "error MissingVERSION()", contracts: ["LoanOperationsManagerModule", "BTCSpendAuthorizer", "UCDController"] },
|
|
20179
|
+
{ fragment: "error MissingVersion()", contracts: ["PositionManagerErrors", "CollateralManagerModule"] },
|
|
20180
|
+
{ fragment: "error ModuleCallFailed()", contracts: ["PositionManager", "PositionManagerErrors"] },
|
|
20181
|
+
{ fragment: "error NoFeesToTransfer()", contracts: ["SimplePSMV2"] },
|
|
20182
|
+
{ fragment: "error NoRegistry()", contracts: ["PositionManager", "PositionManagerErrors"] },
|
|
20183
|
+
{ fragment: "error NoVersion()", contracts: ["LoanOperationsManagerModule", "BTCSpendAuthorizer", "UCDController"] },
|
|
20184
|
+
{ fragment: "error NonZeroReserves(address stablecoin, uint256 reserves)", contracts: ["SimplePSMV2"] },
|
|
20185
|
+
{ fragment: "error NormalizationOverflow()", contracts: ["SimplePSMV2"] },
|
|
20186
|
+
{ fragment: "error NotAdminModule()", contracts: ["PositionManager", "PositionManagerErrors", "LoanOperationsManagerModule", "OperationAuthorizationRegistry", "CollateralManagerModule", "BTCSpendAuthorizer", "UCDController", "SimplePSMV2"] },
|
|
20187
|
+
{ fragment: "error NotAuthorized()", contracts: ["PositionManager", "PositionManagerErrors"] },
|
|
20188
|
+
{ fragment: "error NotAuthorizedConsumer()", contracts: ["OperationAuthorizationRegistry"] },
|
|
20189
|
+
{ fragment: "error NotAuthorizedSigner()", contracts: ["OperationAuthorizationRegistry"] },
|
|
20190
|
+
{ fragment: "error NotBorrower()", contracts: ["PositionManager", "PositionManagerErrors", "LoanOperationsManagerModule"] },
|
|
20191
|
+
{ fragment: "error NotContract()", contracts: ["PositionManagerErrors", "LoanOperationsManagerModule", "OperationAuthorizationRegistry", "CollateralManagerModule", "BTCSpendAuthorizer", "SimplePSMV2"] },
|
|
20192
|
+
{ fragment: "error NotInitializing()", contracts: ["PositionManager", "LoanOperationsManagerModule", "OperationAuthorizationRegistry", "CollateralManagerModule", "BTCSpendAuthorizer", "UCDController", "SimplePSMV2"] },
|
|
20193
|
+
{ fragment: "error NotLiquidationPkpOwner()", contracts: ["PositionManager", "PositionManagerErrors"] },
|
|
20194
|
+
{ fragment: "error NotLiquidator()", contracts: ["PositionManager", "PositionManagerErrors"] },
|
|
20195
|
+
{ fragment: "error NotOwner()", contracts: ["OperationAuthorizationRegistry"] },
|
|
20196
|
+
{ fragment: "error NotPendingOwner()", contracts: ["OperationAuthorizationRegistry"] },
|
|
20197
|
+
{ fragment: "error NotProductionAuthorizer()", contracts: ["PositionManagerErrors", "LoanOperationsManagerModule"] },
|
|
20198
|
+
{ fragment: "error NotProductionRegistry()", contracts: ["PositionManager", "PositionManagerErrors", "LoanOperationsManagerModule"] },
|
|
20199
|
+
{ fragment: "error OnlyCore()", contracts: ["CollateralManagerModule"] },
|
|
20200
|
+
{ fragment: "error OnlyLoanOps()", contracts: ["BTCSpendAuthorizer"] },
|
|
20201
|
+
{ fragment: "error OnlyPosMgr()", contracts: ["LoanOperationsManagerModule"] },
|
|
20202
|
+
{ fragment: "error OnlyPositionManager()", contracts: ["LoanOperationsManagerModule"] },
|
|
20203
|
+
{ fragment: "error OperationInProgress()", contracts: ["PositionManager", "PositionManagerErrors"] },
|
|
20204
|
+
{ fragment: "error OracleDecimalMismatch()", contracts: ["LoanOperationsManagerModule"] },
|
|
20205
|
+
{ fragment: "error PKPAlreadyUsed()", contracts: ["PositionManagerErrors"] },
|
|
20206
|
+
{ fragment: "error PaymentAmountTooLarge()", contracts: ["PositionManager", "PositionManagerErrors"] },
|
|
20207
|
+
{ fragment: "error PaymentAmountZero()", contracts: ["PositionManager", "PositionManagerErrors"] },
|
|
20208
|
+
{ fragment: "error PaymentMustBeLessThanDebt()", contracts: ["LoanOperationsManagerModule"] },
|
|
20209
|
+
{ fragment: "error PaymentMustBePositive()", contracts: ["LoanOperationsManagerModule"] },
|
|
20210
|
+
{ fragment: "error PositionAlreadyExists()", contracts: ["PositionManager", "PositionManagerErrors"] },
|
|
20211
|
+
{ fragment: "error PositionDoesNotExist()", contracts: ["CollateralManagerModule"] },
|
|
20212
|
+
{ fragment: "error PositionLiquidatable()", contracts: ["PositionManagerErrors"] },
|
|
20213
|
+
{ fragment: "error PositionManagerNotContract()", contracts: ["LoanOperationsValidation"] },
|
|
20214
|
+
{ fragment: "error PositionManagerNotSet()", contracts: ["LoanOperationsValidation"] },
|
|
20215
|
+
{ fragment: "error PositionNotActive()", contracts: ["PositionManager", "PositionManagerErrors"] },
|
|
20216
|
+
{ fragment: "error PositionNotEligible()", contracts: ["LoanOperationsManagerModule"] },
|
|
20217
|
+
{ fragment: "error PositionNotEligibleForOperation()", contracts: ["PositionManager", "PositionManagerErrors"] },
|
|
20218
|
+
{ fragment: "error PositionNotFound()", contracts: ["PositionManager", "PositionManagerErrors", "LoanOperationsManagerModule"] },
|
|
20219
|
+
{ fragment: "error PositionNotInCore()", contracts: ["LoanOperationsValidation"] },
|
|
20220
|
+
{ fragment: "error PositionStatusInvalid()", contracts: ["PositionManager", "PositionManagerErrors", "LoanOperationsManagerModule"] },
|
|
20221
|
+
{ fragment: "error PositionWouldBecomeLiquidatable()", contracts: ["PositionManagerErrors"] },
|
|
20222
|
+
{ fragment: "error ProposalAlreadyExecuted()", contracts: ["OperationAuthorizationRegistry"] },
|
|
20223
|
+
{ fragment: "error ProposalAlreadyExists()", contracts: ["OperationAuthorizationRegistry"] },
|
|
20224
|
+
{ fragment: "error ProposalCancelled()", contracts: ["OperationAuthorizationRegistry"] },
|
|
20225
|
+
{ fragment: "error ProposalNotFound()", contracts: ["OperationAuthorizationRegistry"] },
|
|
20226
|
+
{ fragment: "error PsmBurnSupplyMismatch(uint256 expected, uint256 actual)", contracts: ["SimplePSMV2"] },
|
|
20227
|
+
{ fragment: "error PsmMintSupplyMismatch(uint256 expected, uint256 actual)", contracts: ["SimplePSMV2"] },
|
|
20228
|
+
{ fragment: "error QuantumAlreadyUsed()", contracts: ["OperationAuthorizationRegistry"] },
|
|
20229
|
+
{ fragment: "error QuantumOutsideWindow()", contracts: ["OperationAuthorizationRegistry"] },
|
|
20230
|
+
{ fragment: "error RateLimitExceeded()", contracts: ["SimplePSMV2"] },
|
|
20231
|
+
{ fragment: "error RatioOverflow()", contracts: ["PositionManager", "LoanOperationsManagerModule", "CollateralManagerModule"] },
|
|
20232
|
+
{ fragment: "error RecipientNotAllowed()", contracts: ["LoanOperationsManagerModule", "SimplePSMV2"] },
|
|
20233
|
+
{ fragment: "error RedeemVolumeExceededThisBlock(address stablecoin, uint256 attempted, uint256 cap)", contracts: ["SimplePSMV2"] },
|
|
20234
|
+
{ fragment: "error RedemptionsPaused()", contracts: ["SimplePSMV2"] },
|
|
20235
|
+
{ fragment: "error ReentrancyGuardReentrantCall()", contracts: ["PositionManager", "LoanOperationsManagerModule", "CollateralManagerModule", "BTCSpendAuthorizer", "UCDController", "SimplePSMV2"] },
|
|
20236
|
+
{ fragment: "error RegistryNotSet()", contracts: ["LoanOperationsManagerModule", "SimplePSMV2"] },
|
|
20237
|
+
{ fragment: "error ReserveOverflow()", contracts: ["SimplePSMV2"] },
|
|
20238
|
+
{ fragment: "error ReserveTooLarge()", contracts: ["SimplePSMV2"] },
|
|
20239
|
+
{ fragment: "error ReserveUnderflow()", contracts: ["SimplePSMV2"] },
|
|
20240
|
+
{ fragment: "error SafeERC20FailedOperation(address token)", contracts: ["PositionManager", "LoanOperationsManagerModule", "SimplePSMV2"] },
|
|
20241
|
+
{ fragment: "error SameBlockInteraction()", contracts: ["PositionManager", "PositionManagerErrors"] },
|
|
20242
|
+
{ fragment: "error SameImpl()", contracts: ["LoanOperationsManagerModule", "BTCSpendAuthorizer"] },
|
|
20243
|
+
{ fragment: "error SameImplementation()", contracts: ["PositionManagerErrors", "CollateralManagerModule"] },
|
|
20244
|
+
{ fragment: "error SignatureVerificationFailed(bytes4 selector, address recovered, address expected, bytes32 messageHash, uint8 errorCode)", contracts: ["OperationAuthorizationRegistry"] },
|
|
20245
|
+
{ fragment: "error SlippageExceeded(uint256 got, uint256 minimum)", contracts: ["SimplePSMV2"] },
|
|
20246
|
+
{ fragment: "error SlippageProtectionRequired()", contracts: ["SimplePSMV2"] },
|
|
20247
|
+
{ fragment: "error StablecoinAlreadySupported(address stablecoin)", contracts: ["SimplePSMV2"] },
|
|
20248
|
+
{ fragment: "error StablecoinNotContract(address stablecoin)", contracts: ["SimplePSMV2"] },
|
|
20249
|
+
{ fragment: "error StablecoinNotSupported(address stablecoin)", contracts: ["SimplePSMV2"] },
|
|
20250
|
+
{ fragment: "error StablecoinNotSupportedInV1(address stablecoin)", contracts: ["SimplePSMV2"] },
|
|
20251
|
+
{ fragment: "error StaleAttestationMismatch()", contracts: ["BTCSpendAuthorizer"] },
|
|
20252
|
+
{ fragment: "error StaleAttestationTooOld()", contracts: ["BTCSpendAuthorizer"] },
|
|
20253
|
+
{ fragment: "error StaleSpendValidatorNotSet()", contracts: ["BTCSpendAuthorizer"] },
|
|
20254
|
+
{ fragment: "error StateHashMismatch()", contracts: ["LoanOperationsValidation", "LoanOperationsManagerModule", "CollateralManagerModule"] },
|
|
20255
|
+
{ fragment: "error SwapVolumeExceededThisBlock(address stablecoin, uint256 attempted, uint256 cap)", contracts: ["SimplePSMV2"] },
|
|
20256
|
+
{ fragment: "error SyncDriftTooLarge()", contracts: ["SimplePSMV2"] },
|
|
20257
|
+
{ fragment: "error TargetAddrRequired()", contracts: ["BTCSpendAuthorizer"] },
|
|
20258
|
+
{ fragment: "error TargetExceedsInputValue()", contracts: ["BTCSpendAuthorizer"] },
|
|
20259
|
+
{ fragment: "error TargetMustBePositive()", contracts: ["BTCSpendAuthorizer"] },
|
|
20260
|
+
{ fragment: "error TermAlreadyExists()", contracts: ["PositionManagerErrors"] },
|
|
20261
|
+
{ fragment: "error TermExceedsMaximum()", contracts: ["PositionManager", "PositionManagerErrors"] },
|
|
20262
|
+
{ fragment: "error TermNotFound()", contracts: ["PositionManagerErrors"] },
|
|
20263
|
+
{ fragment: "error ThresholdTooHigh()", contracts: ["LoanOperationsManagerModule"] },
|
|
20264
|
+
{ fragment: "error TimelockNotMet()", contracts: ["OperationAuthorizationRegistry"] },
|
|
20265
|
+
{ fragment: "error TimelockRequiredOnThisChain()", contracts: ["OperationAuthorizationRegistry"] },
|
|
20266
|
+
{ fragment: "error TimestampOverflow()", contracts: ["LoanOperationsManagerModule"] },
|
|
20267
|
+
{ fragment: "error TooManySigners()", contracts: ["OperationAuthorizationRegistry"] },
|
|
20268
|
+
{ fragment: "error UTXOAlreadyAuthorized()", contracts: ["BTCSpendAuthorizer"] },
|
|
20269
|
+
{ fragment: "error UTXONotAuthorized()", contracts: ["BTCSpendAuthorizer"] },
|
|
20270
|
+
{ fragment: "error UUPSUnauthorizedCallContext()", contracts: ["PositionManager", "LoanOperationsManagerModule", "OperationAuthorizationRegistry", "CollateralManagerModule", "BTCSpendAuthorizer", "UCDController", "SimplePSMV2"] },
|
|
20271
|
+
{ fragment: "error UUPSUnsupportedProxiableUUID(bytes32 slot)", contracts: ["PositionManager", "LoanOperationsManagerModule", "OperationAuthorizationRegistry", "CollateralManagerModule", "BTCSpendAuthorizer", "UCDController", "SimplePSMV2"] },
|
|
20272
|
+
{ fragment: "error UcdAmountTooLarge()", contracts: ["PositionManager", "LoanOperationsManagerModule", "CollateralManagerModule"] },
|
|
20273
|
+
{ fragment: "error Unauthorized()", contracts: ["UCDController"] },
|
|
20274
|
+
{ fragment: "error UnexpectedRoleGrantFailure()", contracts: ["PositionManager", "PositionManagerErrors", "LoanOperationsManagerModule", "CollateralManagerModule", "BTCSpendAuthorizer", "UCDController", "SimplePSMV2"] },
|
|
20275
|
+
{ fragment: "error UnsupportedFeeToken(address token)", contracts: ["SimplePSMV2"] },
|
|
20276
|
+
{ fragment: "error UserDailyMintLimitExceeded()", contracts: ["LoanOperationsManagerModule"] },
|
|
20277
|
+
{ fragment: "error V2AlreadyInitialized()", contracts: ["SimplePSMV2"] },
|
|
20278
|
+
{ fragment: "error ValidationFailed()", contracts: ["PositionManager", "PositionManagerErrors"] },
|
|
20279
|
+
{ fragment: "error ValidatorNotActive()", contracts: ["OperationAuthorizationRegistry"] },
|
|
20280
|
+
{ fragment: "error WithdrawalAddressNotApproved()", contracts: ["CollateralManagerModule"] },
|
|
20281
|
+
{ fragment: "error WithdrawalExceedsReserves(uint256 amount, uint256 reserves)", contracts: ["SimplePSMV2"] },
|
|
20282
|
+
{ fragment: "error ZeroAddress()", contracts: ["PositionManager", "UCDController"] },
|
|
20283
|
+
{ fragment: "error ZeroAmount()", contracts: ["UCDController"] }
|
|
20284
|
+
];
|
|
20285
|
+
|
|
20286
|
+
// src/utils/contract-error-decoder.ts
|
|
20287
|
+
var TABLE = null;
|
|
20288
|
+
function contractErrorTable() {
|
|
20289
|
+
if (TABLE)
|
|
20290
|
+
return TABLE;
|
|
20291
|
+
const table = /* @__PURE__ */ new Map();
|
|
20292
|
+
const iface = new import_ethers21.Interface(CONTRACT_ERROR_FRAGMENTS.map((e) => e.fragment));
|
|
20293
|
+
const contractsByName = new Map(
|
|
20294
|
+
CONTRACT_ERROR_FRAGMENTS.map((e) => [e.fragment.slice("error ".length, e.fragment.indexOf("(")), e.contracts])
|
|
20295
|
+
);
|
|
20296
|
+
iface.forEachError((fragment) => {
|
|
20297
|
+
const existing = table.get(fragment.selector);
|
|
20298
|
+
const contracts = contractsByName.get(fragment.name) ?? [];
|
|
20299
|
+
if (existing) {
|
|
20300
|
+
for (const c of contracts)
|
|
20301
|
+
if (!existing.contracts.includes(c))
|
|
20302
|
+
existing.contracts.push(c);
|
|
20303
|
+
return;
|
|
20304
|
+
}
|
|
20305
|
+
table.set(fragment.selector, {
|
|
20306
|
+
signature: fragment.format("sighash"),
|
|
20307
|
+
fragment,
|
|
20308
|
+
contracts: [...contracts]
|
|
20309
|
+
});
|
|
20310
|
+
});
|
|
20311
|
+
TABLE = table;
|
|
20312
|
+
return table;
|
|
20313
|
+
}
|
|
20314
|
+
function lookupContractError(selector) {
|
|
20315
|
+
return contractErrorTable().get(selector.toLowerCase()) ?? null;
|
|
20316
|
+
}
|
|
20317
|
+
function extractErrorData(error) {
|
|
20318
|
+
const viaQuantum = decodeQuantumRevert(error).data;
|
|
20319
|
+
if (viaQuantum && viaQuantum.length >= 10)
|
|
20320
|
+
return viaQuantum;
|
|
20321
|
+
const candidates = [
|
|
20322
|
+
error?.error?.error?.error?.data,
|
|
20323
|
+
error?.error?.error?.data,
|
|
20324
|
+
error?.data?.data,
|
|
20325
|
+
error?.transaction?.data
|
|
20326
|
+
];
|
|
20327
|
+
for (const data of candidates) {
|
|
20328
|
+
if (typeof data === "string" && data.startsWith("0x") && data.length >= 10)
|
|
20329
|
+
return data;
|
|
20330
|
+
}
|
|
20331
|
+
const body = typeof error?.body === "string" ? error.body : null;
|
|
20332
|
+
if (body) {
|
|
20333
|
+
try {
|
|
20334
|
+
const parsed = JSON.parse(body);
|
|
20335
|
+
const data = parsed?.error?.data;
|
|
20336
|
+
if (typeof data === "string" && data.startsWith("0x") && data.length >= 10)
|
|
20337
|
+
return data;
|
|
20338
|
+
} catch {
|
|
20339
|
+
}
|
|
20340
|
+
}
|
|
20341
|
+
return null;
|
|
20342
|
+
}
|
|
20343
|
+
function extractRevertString(error) {
|
|
20344
|
+
if (typeof error?.reason === "string" && error.reason.length > 0)
|
|
20345
|
+
return error.reason;
|
|
20346
|
+
const message = typeof error?.message === "string" ? error.message : null;
|
|
20347
|
+
if (!message)
|
|
20348
|
+
return null;
|
|
20349
|
+
const withReasonString = message.match(/reverted with reason string ['"](.+?)['"]/);
|
|
20350
|
+
if (withReasonString)
|
|
20351
|
+
return withReasonString[1];
|
|
20352
|
+
const withReason = message.match(/reason: ['"](.+?)['"]/);
|
|
20353
|
+
return withReason ? withReason[1] : null;
|
|
20354
|
+
}
|
|
20355
|
+
function renderArgs(args) {
|
|
20356
|
+
return args.map((arg) => typeof arg === "object" && arg !== null ? JSON.stringify(arg) : String(arg)).join(", ");
|
|
20357
|
+
}
|
|
20358
|
+
function decodeContractError(error) {
|
|
20359
|
+
const errorData = extractErrorData(error);
|
|
20360
|
+
if (!errorData) {
|
|
20361
|
+
const revertString2 = extractRevertString(error);
|
|
20362
|
+
if (revertString2 && !revertString2.includes("cannot estimate gas")) {
|
|
20363
|
+
return {
|
|
20364
|
+
name: "RevertString",
|
|
20365
|
+
selector: "0x00000000",
|
|
20366
|
+
args: [revertString2],
|
|
20367
|
+
contract: "Unknown",
|
|
20368
|
+
message: `Revert: ${revertString2}`
|
|
20369
|
+
};
|
|
20370
|
+
}
|
|
20371
|
+
return null;
|
|
20372
|
+
}
|
|
20373
|
+
const selector = errorData.slice(0, 10).toLowerCase();
|
|
20374
|
+
if (selector === ERROR_STRING_SELECTOR || selector === PANIC_SELECTOR) {
|
|
20375
|
+
const { name } = decodeQuantumRevert(error);
|
|
20376
|
+
if (name) {
|
|
20377
|
+
return { name, selector, args: [], contract: "Solidity", message: name };
|
|
20378
|
+
}
|
|
20379
|
+
}
|
|
20380
|
+
const entry = lookupContractError(selector);
|
|
20381
|
+
if (entry) {
|
|
20382
|
+
const contract = entry.contracts.join(" | ");
|
|
20383
|
+
let args = [];
|
|
20384
|
+
try {
|
|
20385
|
+
const decoded = new import_ethers21.Interface([entry.fragment]).decodeErrorResult(entry.fragment, errorData);
|
|
20386
|
+
args = Array.from(decoded);
|
|
20387
|
+
} catch {
|
|
20388
|
+
args = [];
|
|
20389
|
+
}
|
|
20390
|
+
return {
|
|
20391
|
+
name: entry.fragment.name,
|
|
20392
|
+
selector,
|
|
20393
|
+
args,
|
|
20394
|
+
contract,
|
|
20395
|
+
message: `${contract}.${entry.fragment.name}(${renderArgs(args)})`
|
|
20396
|
+
};
|
|
20397
|
+
}
|
|
20398
|
+
const revertString = extractRevertString(error);
|
|
20399
|
+
if (revertString && !revertString.includes("cannot estimate gas")) {
|
|
20400
|
+
return {
|
|
20401
|
+
name: "RevertString",
|
|
20402
|
+
selector,
|
|
20403
|
+
args: [revertString],
|
|
20404
|
+
contract: "Unknown",
|
|
20405
|
+
message: `Revert: ${revertString}`
|
|
20406
|
+
};
|
|
20407
|
+
}
|
|
20408
|
+
return {
|
|
20409
|
+
name: "UnknownError",
|
|
20410
|
+
selector,
|
|
20411
|
+
args: [],
|
|
20412
|
+
contract: "Unknown",
|
|
20413
|
+
message: `Unknown error (selector: ${selector})`
|
|
20414
|
+
};
|
|
20415
|
+
}
|
|
20416
|
+
function formatDecodedError(decoded) {
|
|
20417
|
+
if (decoded.args && decoded.args.length > 0) {
|
|
20418
|
+
return `${decoded.contract}.${decoded.name}(${renderArgs(decoded.args)})`;
|
|
20419
|
+
}
|
|
20420
|
+
return `${decoded.contract}.${decoded.name}()`;
|
|
20421
|
+
}
|
|
20422
|
+
|
|
20041
20423
|
// src/utils/ethers-interop.utils.ts
|
|
20042
20424
|
function normalizeBigNumberish(value) {
|
|
20043
20425
|
if (value === null || value === void 0) {
|
|
@@ -20563,7 +20945,7 @@ var DiamondHandsSDK = class _DiamondHandsSDK {
|
|
|
20563
20945
|
*/
|
|
20564
20946
|
constructor(config) {
|
|
20565
20947
|
if (!config.provider && config.ethRpcUrl) {
|
|
20566
|
-
config.provider = new
|
|
20948
|
+
config.provider = new import_ethers22.JsonRpcProvider(config.ethRpcUrl);
|
|
20567
20949
|
}
|
|
20568
20950
|
this.config = config;
|
|
20569
20951
|
if (config.debug) {
|
|
@@ -20855,7 +21237,7 @@ var DiamondHandsSDK = class _DiamondHandsSDK {
|
|
|
20855
21237
|
const network = await config.provider.getNetwork();
|
|
20856
21238
|
chainId = Number(network.chainId);
|
|
20857
21239
|
} else if (config.ethRpcUrl) {
|
|
20858
|
-
const tempProvider = new
|
|
21240
|
+
const tempProvider = new import_ethers22.JsonRpcProvider(
|
|
20859
21241
|
config.ethRpcUrl
|
|
20860
21242
|
);
|
|
20861
21243
|
const network = await tempProvider.getNetwork();
|
|
@@ -21391,7 +21773,7 @@ var DiamondHandsSDK = class _DiamondHandsSDK {
|
|
|
21391
21773
|
}
|
|
21392
21774
|
const loanOps = this.loanOps();
|
|
21393
21775
|
const protocolConfig = await loanOps.getProtocolConfig();
|
|
21394
|
-
const requestAmountWei = (0,
|
|
21776
|
+
const requestAmountWei = (0, import_ethers22.parseEther)(
|
|
21395
21777
|
request.amount.toString()
|
|
21396
21778
|
);
|
|
21397
21779
|
const minLoanValueWei = BigInt(protocolConfig.minimumLoanValueWei);
|
|
@@ -21484,12 +21866,12 @@ var DiamondHandsSDK = class _DiamondHandsSDK {
|
|
|
21484
21866
|
);
|
|
21485
21867
|
return {
|
|
21486
21868
|
success: false,
|
|
21487
|
-
error: `Amount ${request.amount} UCD plus the ${positionTerm.originationFeeBps / 100}% origination fee (${(0,
|
|
21869
|
+
error: `Amount ${request.amount} UCD plus the ${positionTerm.originationFeeBps / 100}% origination fee (${(0, import_ethers22.formatEther)(baseFeeWei)} UCD) would take this loan's debt to ${(0, import_ethers22.formatEther)(debtAfterWei)} UCD, above the protocol maximum of ${(0, import_ethers22.formatEther)(maxLoanValueWei)} UCD. The largest amount you can mint now is ${maxPrincipalUcd} UCD.`
|
|
21488
21870
|
};
|
|
21489
21871
|
}
|
|
21490
21872
|
if (this.config.debug) {
|
|
21491
21873
|
log.info(
|
|
21492
|
-
`\u2705 Fee-inclusive loan cap check passed: ${(0,
|
|
21874
|
+
`\u2705 Fee-inclusive loan cap check passed: ${(0, import_ethers22.formatEther)(currentDebtWei + requestAmountWei + baseFeeWei)} UCD <= ${(0, import_ethers22.formatEther)(maxLoanValueWei)} UCD`,
|
|
21493
21875
|
{}
|
|
21494
21876
|
);
|
|
21495
21877
|
}
|
|
@@ -21520,7 +21902,7 @@ var DiamondHandsSDK = class _DiamondHandsSDK {
|
|
|
21520
21902
|
pkpNftAddress,
|
|
21521
21903
|
this.getChipotlePublicKeyFallback()
|
|
21522
21904
|
);
|
|
21523
|
-
pkpEthAddress = (0,
|
|
21905
|
+
pkpEthAddress = (0, import_ethers22.computeAddress)(pkpPublicKey);
|
|
21524
21906
|
pkpCache.set(request.positionId, {
|
|
21525
21907
|
publicKey: pkpPublicKey,
|
|
21526
21908
|
ethAddress: pkpEthAddress,
|
|
@@ -21863,8 +22245,8 @@ var DiamondHandsSDK = class _DiamondHandsSDK {
|
|
|
21863
22245
|
throw new Error(`Position not found: ${request.positionId}`);
|
|
21864
22246
|
}
|
|
21865
22247
|
const currentDebt = position.ucdDebt.toString();
|
|
21866
|
-
const ucdDebtHash = (0,
|
|
21867
|
-
const contractHash = (0,
|
|
22248
|
+
const ucdDebtHash = (0, import_ethers22.keccak256)(import_ethers22.AbiCoder.defaultAbiCoder().encode(["uint256"], [currentDebt]));
|
|
22249
|
+
const contractHash = (0, import_ethers22.keccak256)(import_ethers22.AbiCoder.defaultAbiCoder().encode(
|
|
21868
22250
|
["address", "address", "address", "address"],
|
|
21869
22251
|
[
|
|
21870
22252
|
positionManagerAddress,
|
|
@@ -21933,7 +22315,7 @@ var DiamondHandsSDK = class _DiamondHandsSDK {
|
|
|
21933
22315
|
const coreAbi = [
|
|
21934
22316
|
"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))"
|
|
21935
22317
|
];
|
|
21936
|
-
const positionCore = new
|
|
22318
|
+
const positionCore = new import_ethers22.Contract(
|
|
21937
22319
|
coreAddress,
|
|
21938
22320
|
coreAbi,
|
|
21939
22321
|
this.getSignerOrThrow().provider
|
|
@@ -21941,8 +22323,8 @@ var DiamondHandsSDK = class _DiamondHandsSDK {
|
|
|
21941
22323
|
const currentPosition = await positionCore["getPositionDetails"](
|
|
21942
22324
|
positionIdBytes32
|
|
21943
22325
|
);
|
|
21944
|
-
const currentDebtHash = (0,
|
|
21945
|
-
|
|
22326
|
+
const currentDebtHash = (0, import_ethers22.keccak256)(
|
|
22327
|
+
import_ethers22.AbiCoder.defaultAbiCoder().encode(
|
|
21946
22328
|
["uint256"],
|
|
21947
22329
|
[currentPosition.ucdDebt]
|
|
21948
22330
|
)
|
|
@@ -21989,7 +22371,7 @@ var DiamondHandsSDK = class _DiamondHandsSDK {
|
|
|
21989
22371
|
"function getCurrentQuantum() view returns (uint256)",
|
|
21990
22372
|
"function isQuantumValid(bytes32,uint256) view returns (bool)"
|
|
21991
22373
|
];
|
|
21992
|
-
const registry = new
|
|
22374
|
+
const registry = new import_ethers22.Contract(
|
|
21993
22375
|
registryAddress,
|
|
21994
22376
|
registryAbi,
|
|
21995
22377
|
this.getSignerOrThrow().provider
|
|
@@ -22105,7 +22487,7 @@ var DiamondHandsSDK = class _DiamondHandsSDK {
|
|
|
22105
22487
|
});
|
|
22106
22488
|
}
|
|
22107
22489
|
const signatureHexMint = finalSignature.startsWith("0x") ? finalSignature : "0x" + finalSignature;
|
|
22108
|
-
const mintIface = new
|
|
22490
|
+
const mintIface = new import_ethers22.Interface(positionManagerAbi);
|
|
22109
22491
|
const mintCalldata = mintIface.encodeFunctionData("mintUCD", [
|
|
22110
22492
|
positionIdBytes32,
|
|
22111
22493
|
validationResponse.mintAmount,
|
|
@@ -22141,7 +22523,7 @@ var DiamondHandsSDK = class _DiamondHandsSDK {
|
|
|
22141
22523
|
if (viewsAddress) {
|
|
22142
22524
|
let diagnosis = null;
|
|
22143
22525
|
try {
|
|
22144
|
-
const views = new
|
|
22526
|
+
const views = new import_ethers22.Contract(
|
|
22145
22527
|
viewsAddress,
|
|
22146
22528
|
[
|
|
22147
22529
|
"function diagnoseMintUCD(bytes32,uint256,uint256,uint256,uint256,uint256,bytes32,bytes32,bytes32,uint256,bytes) view returns (string)"
|
|
@@ -22199,7 +22581,7 @@ MintGuardFailed(${guardCode}): ${guardMeaning}
|
|
|
22199
22581
|
Lit mintAmount: ${validationResponse.mintAmount}
|
|
22200
22582
|
Lit mintFee: ${validationResponse.mintFee}
|
|
22201
22583
|
Lit newDebt: ${validationResponse.newDebt}
|
|
22202
|
-
Protocol maximum: ${(0,
|
|
22584
|
+
Protocol maximum: ${(0, import_ethers22.formatEther)(maxLoanValueWei)} UCD (fee-inclusive)`;
|
|
22203
22585
|
}
|
|
22204
22586
|
const mintDebtDiagnostics = selector === "0xb9d419a7" || // DebtUpdateVerificationFailed()
|
|
22205
22587
|
selector === "0xc7e20553" || // DebtUpdateVerificationFailedDetailed(...)
|
|
@@ -22218,7 +22600,6 @@ Mint/debt diagnostics (LoanOperationsManager mint path \u2192 increaseDebtFromMi
|
|
|
22218
22600
|
let quantumContext = "";
|
|
22219
22601
|
if (selector === "0x131d9a21" || // QuantumExpired()
|
|
22220
22602
|
selector === "0x52ce5d58" || // QuantumAlreadyUsed()
|
|
22221
|
-
selector === "0x137f3b70" || // InDeadZone()
|
|
22222
22603
|
selector === "0xbe4b82c1" || // DeadZoneViolation()
|
|
22223
22604
|
selector === "0x3e76a3c9") {
|
|
22224
22605
|
const nowSecs = Math.floor(Date.now() / 1e3);
|
|
@@ -22271,7 +22652,7 @@ Message: ${causeMessage}${quantumContext}${loanCapDiagnostics}${mintDebtDiagnost
|
|
|
22271
22652
|
if (receipt.logs && receipt.logs.length > 0) {
|
|
22272
22653
|
for (const receiptLog of receipt.logs) {
|
|
22273
22654
|
if (receiptLog.topics && receiptLog.topics[0] === "0x08c379a0") {
|
|
22274
|
-
const iface = new
|
|
22655
|
+
const iface = new import_ethers22.Interface([
|
|
22275
22656
|
"error Error(string)"
|
|
22276
22657
|
]);
|
|
22277
22658
|
const decoded = iface.decodeErrorResult("Error", receiptLog.data);
|
|
@@ -22288,7 +22669,7 @@ Message: ${causeMessage}${quantumContext}${loanCapDiagnostics}${mintDebtDiagnost
|
|
|
22288
22669
|
const minimalAbi = [
|
|
22289
22670
|
"event UCDMintedWithAuthorization(bytes32 indexed positionId, address indexed borrower, uint256 mintAmount, uint256 mintFee, uint256 newDebt, uint256 newCollateral, uint256 btcPrice, uint256 quantumTimestamp, bytes32 authorizedSpendsHash)"
|
|
22290
22671
|
];
|
|
22291
|
-
const iface = new
|
|
22672
|
+
const iface = new import_ethers22.Interface(minimalAbi);
|
|
22292
22673
|
for (const receiptLog of receipt.logs) {
|
|
22293
22674
|
const parsed = (() => {
|
|
22294
22675
|
const logIface = iface;
|
|
@@ -22341,33 +22722,14 @@ Message: ${causeMessage}${quantumContext}${loanCapDiagnostics}${mintDebtDiagnost
|
|
|
22341
22722
|
return result;
|
|
22342
22723
|
} catch (error) {
|
|
22343
22724
|
let customErrorDetails = "";
|
|
22344
|
-
const
|
|
22345
|
-
if (
|
|
22346
|
-
|
|
22347
|
-
const knownErrors = {
|
|
22348
|
-
"0x8baa579f": "InvalidSignature()",
|
|
22349
|
-
"0xd92e233d": "ValidationFailed()",
|
|
22350
|
-
"0x3ee5aeb5": "OperationNotAuthorized()",
|
|
22351
|
-
"0x70f4b32a": "UnauthorizedSigner()",
|
|
22352
|
-
"0x48f5c3ed": "Unauthorized()",
|
|
22353
|
-
"0x36bfdeea": "StateHashMismatch()",
|
|
22354
|
-
"0xb9d419a7": "DebtUpdateVerificationFailed()",
|
|
22355
|
-
"0xc7e20553": "DebtUpdateVerificationFailedDetailed(bytes32,uint256,uint256,uint256,uint256,uint256)",
|
|
22356
|
-
"0x0cfd2a97": "MintVerificationMismatch(uint256,uint256)",
|
|
22357
|
-
"0x07637bd8": "MintFailed()",
|
|
22358
|
-
"0x131d9a21": "QuantumExpired() - Signature quantum window has closed",
|
|
22359
|
-
"0x52ce5d58": "QuantumAlreadyUsed() - This quantum was already used for this position",
|
|
22360
|
-
"0x137f3b70": "InDeadZone() - Timestamp in dead zone (near quantum boundary)",
|
|
22361
|
-
"0xbe4b82c1": "DeadZoneViolation() - Non-current-quantum signature mined in the last 8s of the current quantum",
|
|
22362
|
-
"0x3e76a3c9": "QuantumOutsideWindow() - Timestamp not in past/current/next quantum window"
|
|
22363
|
-
};
|
|
22364
|
-
const errorName = knownErrors[selector] || `Unknown error ${selector}`;
|
|
22365
|
-
customErrorDetails = ` [${errorName}]`;
|
|
22725
|
+
const decoded = decodeContractError(error);
|
|
22726
|
+
if (decoded) {
|
|
22727
|
+
customErrorDetails = ` [${formatDecodedError(decoded)}]`;
|
|
22366
22728
|
if (this.config.debug) {
|
|
22367
22729
|
log.error("Custom error decoded from transaction receipt", {
|
|
22368
|
-
selector,
|
|
22369
|
-
errorName,
|
|
22370
|
-
|
|
22730
|
+
selector: decoded.selector,
|
|
22731
|
+
errorName: decoded.name,
|
|
22732
|
+
contract: decoded.contract
|
|
22371
22733
|
});
|
|
22372
22734
|
}
|
|
22373
22735
|
}
|
|
@@ -22475,7 +22837,7 @@ Message: ${causeMessage}${quantumContext}${loanCapDiagnostics}${mintDebtDiagnost
|
|
|
22475
22837
|
pkpNftAddress,
|
|
22476
22838
|
this.getChipotlePublicKeyFallback()
|
|
22477
22839
|
);
|
|
22478
|
-
const pkpEthAddress = (0,
|
|
22840
|
+
const pkpEthAddress = (0, import_ethers22.computeAddress)(pkpPublicKey);
|
|
22479
22841
|
pkpData = {
|
|
22480
22842
|
publicKey: pkpPublicKey,
|
|
22481
22843
|
ethAddress: pkpEthAddress,
|
|
@@ -22877,7 +23239,7 @@ Message: ${causeMessage}${quantumContext}${loanCapDiagnostics}${mintDebtDiagnost
|
|
|
22877
23239
|
}
|
|
22878
23240
|
const loanOpsForUcd = loanOpsForUcdResult.value;
|
|
22879
23241
|
const ucdTokenAddress = await loanOpsForUcd.ucdToken();
|
|
22880
|
-
const ucdToken = new
|
|
23242
|
+
const ucdToken = new import_ethers22.Contract(
|
|
22881
23243
|
ucdTokenAddress,
|
|
22882
23244
|
[
|
|
22883
23245
|
"function balanceOf(address) view returns (uint256)",
|
|
@@ -22893,9 +23255,9 @@ Message: ${causeMessage}${quantumContext}${loanCapDiagnostics}${mintDebtDiagnost
|
|
|
22893
23255
|
if (ucdBalance < debtWei) {
|
|
22894
23256
|
return {
|
|
22895
23257
|
success: false,
|
|
22896
|
-
error: `Insufficient UCD balance for liquidation: ${(0,
|
|
23258
|
+
error: `Insufficient UCD balance for liquidation: ${(0, import_ethers22.formatEther)(
|
|
22897
23259
|
ucdBalance
|
|
22898
|
-
)} UCD (need ${(0,
|
|
23260
|
+
)} UCD (need ${(0, import_ethers22.formatEther)(debtWei)} UCD)`,
|
|
22899
23261
|
positionId: request.positionId,
|
|
22900
23262
|
wasLiquidated: false
|
|
22901
23263
|
};
|
|
@@ -22904,7 +23266,7 @@ Message: ${causeMessage}${quantumContext}${loanCapDiagnostics}${mintDebtDiagnost
|
|
|
22904
23266
|
if (request.skipUcdApproval) {
|
|
22905
23267
|
return {
|
|
22906
23268
|
success: false,
|
|
22907
|
-
error: `Insufficient UCD allowance for UCDController: need at least ${(0,
|
|
23269
|
+
error: `Insufficient UCD allowance for UCDController: need at least ${(0, import_ethers22.formatEther)(
|
|
22908
23270
|
debtWei
|
|
22909
23271
|
)} UCD, or omit skipUcdApproval to let the SDK submit approve`,
|
|
22910
23272
|
positionId: request.positionId,
|
|
@@ -23428,7 +23790,7 @@ Message: ${causeMessage}${quantumContext}${loanCapDiagnostics}${mintDebtDiagnost
|
|
|
23428
23790
|
if (typeof signatureBytes === "string" && signatureBytes.startsWith("{")) {
|
|
23429
23791
|
try {
|
|
23430
23792
|
const parsed = JSON.parse(signatureBytes);
|
|
23431
|
-
signatureBytes = parsed.signature ?? (parsed.r && parsed.s && parsed.v ?
|
|
23793
|
+
signatureBytes = parsed.signature ?? (parsed.r && parsed.s && parsed.v ? import_ethers22.Signature.from({
|
|
23432
23794
|
r: parsed.r,
|
|
23433
23795
|
s: parsed.s,
|
|
23434
23796
|
v: parsed.v
|
|
@@ -23439,7 +23801,7 @@ Message: ${causeMessage}${quantumContext}${loanCapDiagnostics}${mintDebtDiagnost
|
|
|
23439
23801
|
if (!signatureBytes.startsWith("0x")) {
|
|
23440
23802
|
signatureBytes = "0x" + signatureBytes;
|
|
23441
23803
|
}
|
|
23442
|
-
const extendIface = new
|
|
23804
|
+
const extendIface = new import_ethers22.Interface([
|
|
23443
23805
|
"function extendPosition(bytes32 positionId, uint256 selectedTerm, uint256 quantumTimestamp, uint256 btcPrice, uint256 availableBTCBalance, uint256 proRataRenewalFee, bytes calldata extensionValidatorSignature) external returns (bool)"
|
|
23444
23806
|
]);
|
|
23445
23807
|
const extendCalldata = extendIface.encodeFunctionData("extendPosition", [
|
|
@@ -23988,7 +24350,7 @@ Message: ${causeMessage}${quantumContext}${loanCapDiagnostics}${mintDebtDiagnost
|
|
|
23988
24350
|
` Converting payment amount: ${request.paymentAmount} (type: ${typeof request.paymentAmount})`
|
|
23989
24351
|
);
|
|
23990
24352
|
}
|
|
23991
|
-
const paymentAmountWei = (0,
|
|
24353
|
+
const paymentAmountWei = (0, import_ethers22.parseEther)(
|
|
23992
24354
|
request.paymentAmount.toString()
|
|
23993
24355
|
);
|
|
23994
24356
|
if (this.config.debug) {
|
|
@@ -24055,7 +24417,7 @@ Message: ${causeMessage}${quantumContext}${loanCapDiagnostics}${mintDebtDiagnost
|
|
|
24055
24417
|
};
|
|
24056
24418
|
}
|
|
24057
24419
|
const ucdTokenAddress = await loanOps.ucdToken();
|
|
24058
|
-
const ucdToken = new
|
|
24420
|
+
const ucdToken = new import_ethers22.Contract(
|
|
24059
24421
|
ucdTokenAddress,
|
|
24060
24422
|
[
|
|
24061
24423
|
"function balanceOf(address) view returns (uint256)",
|
|
@@ -24079,14 +24441,14 @@ Message: ${causeMessage}${quantumContext}${loanCapDiagnostics}${mintDebtDiagnost
|
|
|
24079
24441
|
]);
|
|
24080
24442
|
if (this.config.debug) {
|
|
24081
24443
|
log.info(` UCD funds source: ${fundsSource}${isSelfRepay ? " (self)" : " (borrower; agent submitting)"}`);
|
|
24082
|
-
log.info(` UCD Balance: ${(0,
|
|
24083
|
-
log.info(` UCD Allowance: ${(0,
|
|
24444
|
+
log.info(` UCD Balance: ${(0, import_ethers22.formatEther)(balance)} UCD`);
|
|
24445
|
+
log.info(` UCD Allowance: ${(0, import_ethers22.formatEther)(allowance)} UCD`);
|
|
24084
24446
|
log.info(` Required: ${request.paymentAmount} UCD`);
|
|
24085
24447
|
}
|
|
24086
24448
|
if (balance < paymentAmountWei) {
|
|
24087
24449
|
return {
|
|
24088
24450
|
success: false,
|
|
24089
|
-
error: `Insufficient UCD balance: ${(0,
|
|
24451
|
+
error: `Insufficient UCD balance: ${(0, import_ethers22.formatEther)(
|
|
24090
24452
|
balance
|
|
24091
24453
|
)} UCD (need ${request.paymentAmount} UCD)${isSelfRepay ? "" : ` \u2014 borrower ${fundsSource} lacks funds`}`
|
|
24092
24454
|
};
|
|
@@ -24095,7 +24457,7 @@ Message: ${causeMessage}${quantumContext}${loanCapDiagnostics}${mintDebtDiagnost
|
|
|
24095
24457
|
if (!isSelfRepay) {
|
|
24096
24458
|
return {
|
|
24097
24459
|
success: false,
|
|
24098
|
-
error: `Borrower ${fundsSource} has insufficient UCD allowance to PositionManager (${(0,
|
|
24460
|
+
error: `Borrower ${fundsSource} has insufficient UCD allowance to PositionManager (${(0, import_ethers22.formatEther)(allowance)} UCD, need ${request.paymentAmount}). The borrower must approve PositionManager before a delegated agent can repay.`
|
|
24099
24461
|
};
|
|
24100
24462
|
}
|
|
24101
24463
|
if (this.config.debug) {
|
|
@@ -24364,7 +24726,7 @@ Message: ${causeMessage}${quantumContext}${loanCapDiagnostics}${mintDebtDiagnost
|
|
|
24364
24726
|
const paymentSigner = this.getSignerOrThrow();
|
|
24365
24727
|
const paymentFrom = await paymentSigner.getAddress();
|
|
24366
24728
|
const paymentProvider = contractManager.getProvider();
|
|
24367
|
-
const paymentIface = new
|
|
24729
|
+
const paymentIface = new import_ethers22.Interface([
|
|
24368
24730
|
"function makePayment(bytes32 positionId, uint256 paymentAmount, uint256 quantumTimestamp, uint256 btcPrice, bytes calldata paymentValidatorSignature) external returns (bool)"
|
|
24369
24731
|
]);
|
|
24370
24732
|
const paymentCalldata = paymentIface.encodeFunctionData("makePayment", [
|
|
@@ -24713,7 +25075,7 @@ Message: ${causeMessage}${quantumContext}${loanCapDiagnostics}${mintDebtDiagnost
|
|
|
24713
25075
|
const pkpId = position.pkpId;
|
|
24714
25076
|
if (litValidatorAddr && pkpId) {
|
|
24715
25077
|
try {
|
|
24716
|
-
const litValidator = new
|
|
25078
|
+
const litValidator = new import_ethers22.Contract(
|
|
24717
25079
|
litValidatorAddr,
|
|
24718
25080
|
["function pkpOwners(bytes32) view returns (address)"],
|
|
24719
25081
|
this.getProviderOrThrow()
|
|
@@ -24721,7 +25083,7 @@ Message: ${causeMessage}${quantumContext}${loanCapDiagnostics}${mintDebtDiagnost
|
|
|
24721
25083
|
const owner = await litValidator.pkpOwners(
|
|
24722
25084
|
pkpId
|
|
24723
25085
|
);
|
|
24724
|
-
if (owner && owner !==
|
|
25086
|
+
if (owner && owner !== import_ethers22.ZeroAddress) {
|
|
24725
25087
|
controller = owner;
|
|
24726
25088
|
}
|
|
24727
25089
|
} catch {
|
|
@@ -24773,7 +25135,7 @@ Message: ${causeMessage}${quantumContext}${loanCapDiagnostics}${mintDebtDiagnost
|
|
|
24773
25135
|
pkpNftAddress,
|
|
24774
25136
|
this.getChipotlePublicKeyFallback()
|
|
24775
25137
|
);
|
|
24776
|
-
pkpEthAddress = (0,
|
|
25138
|
+
pkpEthAddress = (0, import_ethers22.computeAddress)(pkpPublicKey);
|
|
24777
25139
|
pkpCache.set(positionId, {
|
|
24778
25140
|
publicKey: pkpPublicKey,
|
|
24779
25141
|
ethAddress: pkpEthAddress,
|
|
@@ -25146,7 +25508,7 @@ Message: ${causeMessage}${quantumContext}${loanCapDiagnostics}${mintDebtDiagnost
|
|
|
25146
25508
|
utxoVout: withdrawalParams.utxoVout
|
|
25147
25509
|
});
|
|
25148
25510
|
}
|
|
25149
|
-
const withdrawIface = new
|
|
25511
|
+
const withdrawIface = new import_ethers22.Interface([
|
|
25150
25512
|
"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)"
|
|
25151
25513
|
]);
|
|
25152
25514
|
const withdrawCalldata = withdrawIface.encodeFunctionData("withdrawBTC", [
|
|
@@ -25377,7 +25739,7 @@ Message: ${causeMessage}${quantumContext}${loanCapDiagnostics}${mintDebtDiagnost
|
|
|
25377
25739
|
}
|
|
25378
25740
|
const pkpId = positionDetails.pkpId;
|
|
25379
25741
|
const vaultAddress = positionDetails.vaultAddress;
|
|
25380
|
-
if (!pkpId || pkpId ===
|
|
25742
|
+
if (!pkpId || pkpId === import_ethers22.ZeroHash) {
|
|
25381
25743
|
return { success: false, error: "Position has no PKP" };
|
|
25382
25744
|
}
|
|
25383
25745
|
if (!vaultAddress) {
|
|
@@ -25397,7 +25759,7 @@ Message: ${causeMessage}${quantumContext}${loanCapDiagnostics}${mintDebtDiagnost
|
|
|
25397
25759
|
if (!publicKey) {
|
|
25398
25760
|
return { success: false, error: "Failed to resolve PKP public key" };
|
|
25399
25761
|
}
|
|
25400
|
-
const chipotlePkpAddress = (0,
|
|
25762
|
+
const chipotlePkpAddress = (0, import_ethers22.computeAddress)(publicKey);
|
|
25401
25763
|
const chainName = LIT_ACTION_CHAIN_NAMES[chainId];
|
|
25402
25764
|
if (!chainName) {
|
|
25403
25765
|
return {
|
|
@@ -25770,7 +26132,7 @@ Message: ${causeMessage}${quantumContext}${loanCapDiagnostics}${mintDebtDiagnost
|
|
|
25770
26132
|
const btcSpendAuthorizerAbi = [
|
|
25771
26133
|
"function getAuthorizedSpends(bytes32) view returns (tuple(string txid, uint32 vout, uint256 satoshis, string targetAddress, uint256 targetAmount, uint256 authorizedAt)[])"
|
|
25772
26134
|
];
|
|
25773
|
-
const btcSpendAuthorizer = new
|
|
26135
|
+
const btcSpendAuthorizer = new import_ethers22.Contract(
|
|
25774
26136
|
btcSpendAuthorizerAddress,
|
|
25775
26137
|
btcSpendAuthorizerAbi,
|
|
25776
26138
|
this.getProviderOrThrow()
|
|
@@ -25856,7 +26218,7 @@ Message: ${causeMessage}${quantumContext}${loanCapDiagnostics}${mintDebtDiagnost
|
|
|
25856
26218
|
const abi = [
|
|
25857
26219
|
"function getAuthorizedSpends(bytes32) view returns (tuple(string txid, uint32 vout, uint256 satoshis, string targetAddress, uint256 targetAmount, uint256 authorizedAt)[])"
|
|
25858
26220
|
];
|
|
25859
|
-
const contract = new
|
|
26221
|
+
const contract = new import_ethers22.Contract(
|
|
25860
26222
|
btcSpendAuthorizerAddress,
|
|
25861
26223
|
abi,
|
|
25862
26224
|
this.getProviderOrThrow()
|
|
@@ -25870,7 +26232,7 @@ Message: ${causeMessage}${quantumContext}${loanCapDiagnostics}${mintDebtDiagnost
|
|
|
25870
26232
|
targetAddress: spend.targetAddress,
|
|
25871
26233
|
targetAmount: Number(spend.targetAmount),
|
|
25872
26234
|
authorizedAt: Number(spend.authorizedAt),
|
|
25873
|
-
utxoKey: (0,
|
|
26235
|
+
utxoKey: (0, import_ethers22.solidityPackedKeccak256)(
|
|
25874
26236
|
["string", "uint32"],
|
|
25875
26237
|
[spend.txid, Number(spend.vout)]
|
|
25876
26238
|
)
|
|
@@ -26076,7 +26438,7 @@ Message: ${causeMessage}${quantumContext}${loanCapDiagnostics}${mintDebtDiagnost
|
|
|
26076
26438
|
error: attRes.error ?? attRes.reason ?? `LIT recovery attestation rejected${attRes.failedStep ? ` at step ${attRes.failedStep}` : ""}`
|
|
26077
26439
|
};
|
|
26078
26440
|
}
|
|
26079
|
-
const btcSpendAuthorizer = new
|
|
26441
|
+
const btcSpendAuthorizer = new import_ethers22.Contract(
|
|
26080
26442
|
btcSpendAuthorizerAddress,
|
|
26081
26443
|
[
|
|
26082
26444
|
"function cancelStaleSpendWithProof(bytes32 positionId, bytes32 utxoKey, uint256 authorizedAt, string calldata invalidatorTxid, uint256 attestationTimestamp, bytes calldata litSignature) external"
|
|
@@ -26173,7 +26535,7 @@ Message: ${causeMessage}${quantumContext}${loanCapDiagnostics}${mintDebtDiagnost
|
|
|
26173
26535
|
const positionDetails = await this.getPositionDetailsView(
|
|
26174
26536
|
params.positionId
|
|
26175
26537
|
);
|
|
26176
|
-
if (!positionDetails?.pkpId || positionDetails.pkpId ===
|
|
26538
|
+
if (!positionDetails?.pkpId || positionDetails.pkpId === import_ethers22.ZeroHash) {
|
|
26177
26539
|
return { success: false, error: "Position has no PKP" };
|
|
26178
26540
|
}
|
|
26179
26541
|
const pkpCache = this.cacheManager.getCache("pkp-data", {
|
|
@@ -26190,7 +26552,7 @@ Message: ${causeMessage}${quantumContext}${loanCapDiagnostics}${mintDebtDiagnost
|
|
|
26190
26552
|
if (!publicKey) {
|
|
26191
26553
|
return { success: false, error: "Failed to resolve PKP public key" };
|
|
26192
26554
|
}
|
|
26193
|
-
const chipotlePkpAddress = (0,
|
|
26555
|
+
const chipotlePkpAddress = (0, import_ethers22.computeAddress)(publicKey);
|
|
26194
26556
|
const dc = this.config.contractAddresses || {};
|
|
26195
26557
|
const chainName = chainId === 1 ? "ethereum" : chainId === 11155111 ? "sepolia" : chainId === 1337 || chainId === 31337 ? "hardhat" : void 0;
|
|
26196
26558
|
if (!chainName) {
|
|
@@ -26889,7 +27251,7 @@ Message: ${causeMessage}${quantumContext}${loanCapDiagnostics}${mintDebtDiagnost
|
|
|
26889
27251
|
*
|
|
26890
27252
|
* Deliberately omits `minWithdrawRatioBps` — see {@link readLoanGrant}.
|
|
26891
27253
|
*/
|
|
26892
|
-
static LOAN_GRANT_PREFIX_IFACE = new
|
|
27254
|
+
static LOAN_GRANT_PREFIX_IFACE = new import_ethers22.Interface([
|
|
26893
27255
|
"function getLoanGrant(bytes32 positionId) view returns (address borrower, uint32 scopeBits, uint32 minCollateralRatioBps)"
|
|
26894
27256
|
]);
|
|
26895
27257
|
/**
|
|
@@ -26910,9 +27272,9 @@ Message: ${causeMessage}${quantumContext}${loanCapDiagnostics}${mintDebtDiagnost
|
|
|
26910
27272
|
to: registryAddress,
|
|
26911
27273
|
data: iface.encodeFunctionData("getLoanGrant", [pid])
|
|
26912
27274
|
});
|
|
26913
|
-
if ((0,
|
|
27275
|
+
if ((0, import_ethers22.getBytes)(data).length < 96) {
|
|
26914
27276
|
throw new SDKError({
|
|
26915
|
-
message: `AgentDelegationRegistry at ${registryAddress} returned ${(0,
|
|
27277
|
+
message: `AgentDelegationRegistry at ${registryAddress} returned ${(0, import_ethers22.getBytes)(data).length} bytes for getLoanGrant(bytes32) \u2014 expected at least 96. Wrong address, or a registry version this SDK does not support.`,
|
|
26916
27278
|
category: "CONTRACT" /* CONTRACT */,
|
|
26917
27279
|
severity: "HIGH" /* HIGH */
|
|
26918
27280
|
});
|
|
@@ -26921,10 +27283,10 @@ Message: ${causeMessage}${quantumContext}${loanCapDiagnostics}${mintDebtDiagnost
|
|
|
26921
27283
|
"getLoanGrant",
|
|
26922
27284
|
data
|
|
26923
27285
|
);
|
|
26924
|
-
const raw = (0,
|
|
27286
|
+
const raw = (0, import_ethers22.getBytes)(data);
|
|
26925
27287
|
const withdrawScopeSupported = raw.length >= 128;
|
|
26926
27288
|
const minWithdrawRatioBps = withdrawScopeSupported ? Number(
|
|
26927
|
-
|
|
27289
|
+
import_ethers22.AbiCoder.defaultAbiCoder().decode(["uint32"], raw.slice(96, 128))[0]
|
|
26928
27290
|
) : 0;
|
|
26929
27291
|
return {
|
|
26930
27292
|
borrower,
|
|
@@ -27085,7 +27447,7 @@ Message: ${causeMessage}${quantumContext}${loanCapDiagnostics}${mintDebtDiagnost
|
|
|
27085
27447
|
getPositionDelegate(pid, signer, pdrAddr),
|
|
27086
27448
|
registry.agentOf(user).then((a) => a.agent)
|
|
27087
27449
|
]);
|
|
27088
|
-
if (currentDelegate !==
|
|
27450
|
+
if (currentDelegate !== import_ethers22.ZeroAddress && currentDelegate.toLowerCase() === userAgent.toLowerCase()) {
|
|
27089
27451
|
const clearTx = await setPositionDelegate(
|
|
27090
27452
|
pid,
|
|
27091
27453
|
"0x0000000000000000000000000000000000000000",
|
|
@@ -27477,7 +27839,7 @@ Message: ${causeMessage}${quantumContext}${loanCapDiagnostics}${mintDebtDiagnost
|
|
|
27477
27839
|
const maxUcdWhole = BigInt(result[3].toString());
|
|
27478
27840
|
return success({
|
|
27479
27841
|
liquidationThreshold: result[0].toString(),
|
|
27480
|
-
minimumLoanValueUcd: (0,
|
|
27842
|
+
minimumLoanValueUcd: (0, import_ethers22.formatUnits)(result[2], 18),
|
|
27481
27843
|
minimumLoanValueWei: result[2].toString(),
|
|
27482
27844
|
maxSingleLoanValueUcd: maxUcdWhole.toString(),
|
|
27483
27845
|
maxSingleLoanValueWei: (maxUcdWhole * 10n ** 18n).toString()
|
|
@@ -27514,7 +27876,7 @@ Message: ${causeMessage}${quantumContext}${loanCapDiagnostics}${mintDebtDiagnost
|
|
|
27514
27876
|
const balanceWei = await provider.getBalance(address);
|
|
27515
27877
|
return success({
|
|
27516
27878
|
balanceWei: balanceWei.toString(),
|
|
27517
|
-
balanceEth: (0,
|
|
27879
|
+
balanceEth: (0, import_ethers22.formatEther)(balanceWei)
|
|
27518
27880
|
});
|
|
27519
27881
|
} catch (error) {
|
|
27520
27882
|
return failure(new SDKError({
|
|
@@ -27923,7 +28285,7 @@ Message: ${causeMessage}${quantumContext}${loanCapDiagnostics}${mintDebtDiagnost
|
|
|
27923
28285
|
* Convert decimal position ID to bytes32 format
|
|
27924
28286
|
*/
|
|
27925
28287
|
toBytes32(value) {
|
|
27926
|
-
return (0,
|
|
28288
|
+
return (0, import_ethers22.zeroPadValue)((0, import_ethers22.toBeHex)(BigInt(value)), 32);
|
|
27927
28289
|
}
|
|
27928
28290
|
/**
|
|
27929
28291
|
* Check if an error indicates a technical failure vs business logic rejection
|
|
@@ -27964,7 +28326,7 @@ Message: ${causeMessage}${quantumContext}${loanCapDiagnostics}${mintDebtDiagnost
|
|
|
27964
28326
|
const coreModuleAbi = [
|
|
27965
28327
|
"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))"
|
|
27966
28328
|
];
|
|
27967
|
-
const coreModule = new
|
|
28329
|
+
const coreModule = new import_ethers22.Contract(
|
|
27968
28330
|
coreModuleAddress,
|
|
27969
28331
|
coreModuleAbi,
|
|
27970
28332
|
provider
|
|
@@ -28031,7 +28393,7 @@ Message: ${causeMessage}${quantumContext}${loanCapDiagnostics}${mintDebtDiagnost
|
|
|
28031
28393
|
const corePositionAbi = [
|
|
28032
28394
|
"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))"
|
|
28033
28395
|
];
|
|
28034
|
-
const corePositionContract = new
|
|
28396
|
+
const corePositionContract = new import_ethers22.Contract(
|
|
28035
28397
|
coreAddress,
|
|
28036
28398
|
corePositionAbi,
|
|
28037
28399
|
provider
|
|
@@ -28042,7 +28404,7 @@ Message: ${causeMessage}${quantumContext}${loanCapDiagnostics}${mintDebtDiagnost
|
|
|
28042
28404
|
positionIdBytes32
|
|
28043
28405
|
);
|
|
28044
28406
|
const positionIdFromCore = corePosition?.positionId || corePosition?.[0] || null;
|
|
28045
|
-
if (positionIdFromCore && positionIdFromCore !==
|
|
28407
|
+
if (positionIdFromCore && positionIdFromCore !== import_ethers22.ZeroHash && positionIdFromCore !== "0x0000000000000000000000000000000000000000000000000000000000000000") {
|
|
28046
28408
|
if (this.config.debug) {
|
|
28047
28409
|
log.info("Position exists in core contract", {
|
|
28048
28410
|
positionId,
|
|
@@ -28110,7 +28472,7 @@ Message: ${causeMessage}${quantumContext}${loanCapDiagnostics}${mintDebtDiagnost
|
|
|
28110
28472
|
throw new Error("loanOperationsManager address not configured");
|
|
28111
28473
|
}
|
|
28112
28474
|
const runner = this.config.contractSigner || this.getProviderOrThrow();
|
|
28113
|
-
const contract = new
|
|
28475
|
+
const contract = new import_ethers22.Contract(
|
|
28114
28476
|
addr.loanOperationsManager,
|
|
28115
28477
|
[
|
|
28116
28478
|
"function getProtocolConfig() external view returns (uint256 liquidationThreshold, uint256 minimumLoanValueUcd, uint256 minimumLoanValueWei, uint256 maxSingleLoanValueUcd)"
|
|
@@ -28123,7 +28485,7 @@ Message: ${causeMessage}${quantumContext}${loanCapDiagnostics}${mintDebtDiagnost
|
|
|
28123
28485
|
const maxUcdWhole = BigInt(result[3].toString());
|
|
28124
28486
|
return {
|
|
28125
28487
|
liquidationThreshold: result[0].toString(),
|
|
28126
|
-
minimumLoanValueUcd: (0,
|
|
28488
|
+
minimumLoanValueUcd: (0, import_ethers22.formatUnits)(result[2], 18),
|
|
28127
28489
|
minimumLoanValueWei: result[2].toString(),
|
|
28128
28490
|
maxSingleLoanValueUcd: maxUcdWhole.toString(),
|
|
28129
28491
|
maxSingleLoanValueWei: (maxUcdWhole * 10n ** 18n).toString()
|
|
@@ -28141,8 +28503,8 @@ Message: ${causeMessage}${quantumContext}${loanCapDiagnostics}${mintDebtDiagnost
|
|
|
28141
28503
|
const MIN_REVEAL_DELAY = 60;
|
|
28142
28504
|
const MAX_RANDOM_DELAY = 240;
|
|
28143
28505
|
const entropyInput = positionId + quantumTimestamp.toString();
|
|
28144
|
-
const hash = (0,
|
|
28145
|
-
(0,
|
|
28506
|
+
const hash = (0, import_ethers22.keccak256)(
|
|
28507
|
+
(0, import_ethers22.toUtf8Bytes)(entropyInput)
|
|
28146
28508
|
);
|
|
28147
28509
|
const randomValue = BigInt(hash);
|
|
28148
28510
|
const randomDelay = Number(randomValue % BigInt(MAX_RANDOM_DELAY));
|
|
@@ -28167,12 +28529,12 @@ Message: ${causeMessage}${quantumContext}${loanCapDiagnostics}${mintDebtDiagnost
|
|
|
28167
28529
|
const rawPositionId = /^0x/i.test(params.positionId.trim()) ? params.positionId.trim().slice(2) : params.positionId.trim();
|
|
28168
28530
|
const canonicalPositionId = "0x" + rawPositionId.padStart(64, "0").toLowerCase();
|
|
28169
28531
|
const intentTimestamp = Math.floor(Date.now() / 1e3);
|
|
28170
|
-
const intentActionHash = (0,
|
|
28171
|
-
const intentHash = (0,
|
|
28532
|
+
const intentActionHash = (0, import_ethers22.keccak256)((0, import_ethers22.toUtf8Bytes)("liquidate-position"));
|
|
28533
|
+
const intentHash = (0, import_ethers22.solidityPackedKeccak256)(
|
|
28172
28534
|
["bytes32", "uint256", "uint256", "address", "bytes32"],
|
|
28173
28535
|
[canonicalPositionId, intentTimestamp, chainId, intentSigner, intentActionHash]
|
|
28174
28536
|
);
|
|
28175
|
-
const intentSignature = await signer.signMessage((0,
|
|
28537
|
+
const intentSignature = await signer.signMessage((0, import_ethers22.getBytes)(intentHash));
|
|
28176
28538
|
const response = await fetch(endpoint, {
|
|
28177
28539
|
method: "POST",
|
|
28178
28540
|
headers: { "Content-Type": "application/json" },
|
|
@@ -28224,7 +28586,7 @@ Message: ${causeMessage}${quantumContext}${loanCapDiagnostics}${mintDebtDiagnost
|
|
|
28224
28586
|
const vrfSeedRaw = await lmResult.value["vrfSeeds"](positionId);
|
|
28225
28587
|
const vrfSeed = BigInt(vrfSeedRaw.toString());
|
|
28226
28588
|
if (vrfSeed !== 0n) {
|
|
28227
|
-
const finalEntropy = (0,
|
|
28589
|
+
const finalEntropy = (0, import_ethers22.solidityPackedKeccak256)(
|
|
28228
28590
|
["uint256", "uint256", "bytes32"],
|
|
28229
28591
|
[vrfSeed, BigInt(quantumTimestamp.toString()), positionId]
|
|
28230
28592
|
);
|
|
@@ -28502,7 +28864,7 @@ var EventHelpers = {
|
|
|
28502
28864
|
};
|
|
28503
28865
|
|
|
28504
28866
|
// src/utils/safe-agent-delegation.utils.ts
|
|
28505
|
-
var
|
|
28867
|
+
var import_ethers23 = require("ethers");
|
|
28506
28868
|
init_deployment_addresses();
|
|
28507
28869
|
var SAFE_ABI = [
|
|
28508
28870
|
"function getModulesPaginated(address start, uint256 pageSize) view returns (address[] modules, address next)"
|
|
@@ -28520,7 +28882,7 @@ var MODULE_LIST_SENTINEL = "0x0000000000000000000000000000000000000001";
|
|
|
28520
28882
|
var MODULE_PAGE_SIZE = 50;
|
|
28521
28883
|
var lower = (v) => v.trim().toLowerCase();
|
|
28522
28884
|
async function classifyModule(provider, moduleAddress, safeAddress, positionManager, factoryAddress) {
|
|
28523
|
-
const module2 = new
|
|
28885
|
+
const module2 = new import_ethers23.Contract(moduleAddress, MODULE_ABI, provider);
|
|
28524
28886
|
let boundSafe;
|
|
28525
28887
|
try {
|
|
28526
28888
|
boundSafe = await module2.safe();
|
|
@@ -28540,7 +28902,7 @@ async function classifyModule(provider, moduleAddress, safeAddress, positionMana
|
|
|
28540
28902
|
if (!factoryAddress)
|
|
28541
28903
|
return null;
|
|
28542
28904
|
try {
|
|
28543
|
-
const factory = new
|
|
28905
|
+
const factory = new import_ethers23.Contract(factoryAddress, FACTORY_ABI, provider);
|
|
28544
28906
|
return await factory.isFromFactory(moduleAddress) === true;
|
|
28545
28907
|
} catch {
|
|
28546
28908
|
return null;
|
|
@@ -28569,7 +28931,7 @@ async function getSafeAgentDelegation(params) {
|
|
|
28569
28931
|
let modules;
|
|
28570
28932
|
let next;
|
|
28571
28933
|
try {
|
|
28572
|
-
const safe = new
|
|
28934
|
+
const safe = new import_ethers23.Contract(safeAddress, SAFE_ABI, provider);
|
|
28573
28935
|
const page = await safe.getModulesPaginated(
|
|
28574
28936
|
MODULE_LIST_SENTINEL,
|
|
28575
28937
|
MODULE_PAGE_SIZE
|
|
@@ -28597,7 +28959,7 @@ async function getSafeAgentDelegation(params) {
|
|
|
28597
28959
|
continue;
|
|
28598
28960
|
let agentAddress = null;
|
|
28599
28961
|
try {
|
|
28600
|
-
agentAddress = await new
|
|
28962
|
+
agentAddress = await new import_ethers23.Contract(
|
|
28601
28963
|
moduleAddress,
|
|
28602
28964
|
MODULE_ABI,
|
|
28603
28965
|
provider
|
|
@@ -28611,7 +28973,7 @@ async function getSafeAgentDelegation(params) {
|
|
|
28611
28973
|
let validUntil;
|
|
28612
28974
|
let status;
|
|
28613
28975
|
try {
|
|
28614
|
-
const record = await new
|
|
28976
|
+
const record = await new import_ethers23.Contract(
|
|
28615
28977
|
registryAddress,
|
|
28616
28978
|
REGISTRY_ABI,
|
|
28617
28979
|
provider
|