@pearcurve/sdk 0.0.0-stage → 0.1.1

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.
Files changed (75) hide show
  1. package/LICENSE +64 -0
  2. package/README.md +122 -2
  3. package/dist/abis.d.ts +21 -0
  4. package/dist/abis.d.ts.map +1 -0
  5. package/dist/abis.js +39 -0
  6. package/dist/abis.js.map +1 -0
  7. package/dist/borrowerSubmitPreflight.d.ts +14 -0
  8. package/dist/borrowerSubmitPreflight.d.ts.map +1 -0
  9. package/dist/borrowerSubmitPreflight.js +28 -0
  10. package/dist/borrowerSubmitPreflight.js.map +1 -0
  11. package/dist/bps.d.ts +11 -0
  12. package/dist/bps.d.ts.map +1 -0
  13. package/dist/bps.js +25 -0
  14. package/dist/bps.js.map +1 -0
  15. package/dist/clients.d.ts +23 -0
  16. package/dist/clients.d.ts.map +1 -0
  17. package/dist/clients.js +59 -0
  18. package/dist/clients.js.map +1 -0
  19. package/dist/decodeError.d.ts +24 -0
  20. package/dist/decodeError.d.ts.map +1 -0
  21. package/dist/decodeError.js +358 -0
  22. package/dist/decodeError.js.map +1 -0
  23. package/dist/encoding.d.ts +18 -0
  24. package/dist/encoding.d.ts.map +1 -0
  25. package/dist/encoding.js +94 -0
  26. package/dist/encoding.js.map +1 -0
  27. package/dist/index.d.ts +18 -0
  28. package/dist/index.d.ts.map +1 -0
  29. package/dist/index.js +18 -0
  30. package/dist/index.js.map +1 -0
  31. package/dist/lenderSubmitPreflight.d.ts +20 -0
  32. package/dist/lenderSubmitPreflight.d.ts.map +1 -0
  33. package/dist/lenderSubmitPreflight.js +42 -0
  34. package/dist/lenderSubmitPreflight.js.map +1 -0
  35. package/dist/loanPositions.d.ts +23 -0
  36. package/dist/loanPositions.d.ts.map +1 -0
  37. package/dist/loanPositions.js +37 -0
  38. package/dist/loanPositions.js.map +1 -0
  39. package/dist/marketStats.d.ts +70 -0
  40. package/dist/marketStats.d.ts.map +1 -0
  41. package/dist/marketStats.js +117 -0
  42. package/dist/marketStats.js.map +1 -0
  43. package/dist/networkConfig.d.ts +48 -0
  44. package/dist/networkConfig.d.ts.map +1 -0
  45. package/dist/networkConfig.js +48 -0
  46. package/dist/networkConfig.js.map +1 -0
  47. package/dist/pause.d.ts +20 -0
  48. package/dist/pause.d.ts.map +1 -0
  49. package/dist/pause.js +40 -0
  50. package/dist/pause.js.map +1 -0
  51. package/dist/reads.d.ts +187 -0
  52. package/dist/reads.d.ts.map +1 -0
  53. package/dist/reads.js +353 -0
  54. package/dist/reads.js.map +1 -0
  55. package/dist/strategies.d.ts +14 -0
  56. package/dist/strategies.d.ts.map +1 -0
  57. package/dist/strategies.js +49 -0
  58. package/dist/strategies.js.map +1 -0
  59. package/dist/txGas.d.ts +19 -0
  60. package/dist/txGas.d.ts.map +1 -0
  61. package/dist/txGas.js +37 -0
  62. package/dist/txGas.js.map +1 -0
  63. package/dist/types.d.ts +69 -0
  64. package/dist/types.d.ts.map +1 -0
  65. package/dist/types.js +11 -0
  66. package/dist/types.js.map +1 -0
  67. package/dist/yieldMigrationPreflight.d.ts +29 -0
  68. package/dist/yieldMigrationPreflight.d.ts.map +1 -0
  69. package/dist/yieldMigrationPreflight.js +61 -0
  70. package/dist/yieldMigrationPreflight.js.map +1 -0
  71. package/dist/yieldSources.d.ts +33 -0
  72. package/dist/yieldSources.d.ts.map +1 -0
  73. package/dist/yieldSources.js +106 -0
  74. package/dist/yieldSources.js.map +1 -0
  75. package/package.json +47 -4
@@ -0,0 +1,358 @@
1
+ import { Interface, dataSlice } from 'ethers';
2
+ import { protocolErrorsAbi } from './abis.js';
3
+ const errorsInterface = new Interface(protocolErrorsAbi);
4
+ const MARKET_FEATURE_LABELS = [
5
+ 'Deposit',
6
+ 'Withdraw',
7
+ 'Borrow',
8
+ 'Repay',
9
+ 'Liquidate',
10
+ 'Refinance',
11
+ 'Match',
12
+ 'Secondary',
13
+ ];
14
+ const ERROR_STRING_SELECTOR = '0x08c379a0';
15
+ const PANIC_SELECTOR = '0x4e487b71';
16
+ const MESSAGES = {
17
+ EnforcedPause: 'Protocol is paused. New state-changing actions are temporarily disabled.',
18
+ MatchingEngineEnforcedPause: 'Protocol is paused. New state-changing actions are temporarily disabled.',
19
+ LoanManagerEnforcedPause: 'Protocol is paused. New state-changing actions are temporarily disabled.',
20
+ IntentRegistryEnforcedPause: 'Protocol is paused. New state-changing actions are temporarily disabled.',
21
+ SecondaryMarketEnforcedPause: 'Protocol is paused. New state-changing actions are temporarily disabled.',
22
+ SecondaryMarketAlreadySet: 'The secondary market is already set on the loan manager.',
23
+ MarketEnforcedPause: 'This market is paused. Try a different market or retry when it is unpaused.',
24
+ ExitPathNotPausable: 'Withdrawal and repayment cannot be paused.',
25
+ MarketFeatureEnforcedPause: (args) => {
26
+ const feature = featureLabel(args.feature);
27
+ return feature
28
+ ? `${feature} is paused for this market.`
29
+ : 'This action is paused for the selected market.';
30
+ },
31
+ FillExceedsCapacity: 'This fill exceeds remaining capacity (your amount or the counterparty line may have changed). Refresh, lower the amount, or pick another intent.',
32
+ FillBelowMinimum: 'Fill amount is below this lender’s minimum per-fill principal.',
33
+ NothingToClaim: 'There is no claimable payout for this asset.',
34
+ BadDebtCollateralRemaining: 'This loan still has collateral that can repay debt. Liquidate it instead of writing it off.',
35
+ RefinanceCollateralShortfall: 'Collateral no longer covers principal plus accrued interest at the new lender’s LTV.',
36
+ FillBelowDustFloor: 'Fill is below the governed minimum for this intent. Finish the intent or increase the fill.',
37
+ MinFillBpsAboveMaximum: 'Minimum fill percentage cannot exceed 100%.',
38
+ PartialFillNotAllowed: 'This lender intent does not allow partial fills. Match the entire remaining principal in one transaction.',
39
+ IncompatibleIntents: 'Lender and borrower terms don’t align (asset, rate, duration, expiry, collateral, or conditions). Adjust terms or pick another counterparty.',
40
+ MatchingIntentInactive: 'The selected intent is no longer active (filled, cancelled, or expired). Refresh and choose another.',
41
+ IntentNotActive: 'The selected intent is no longer active (filled, cancelled, or expired). Refresh and choose another.',
42
+ IntentExpired: 'This intent has expired.',
43
+ IntentNotFound: 'Intent not found on this deployment.',
44
+ LoanNotActive: 'This loan is not active (repaid, liquidated, or refinanced).',
45
+ EarlyRepaymentNotAllowed: 'Early repayment is blocked for this loan until maturity.',
46
+ OraclePriceStale: 'Oracle prices are stale for this collateral/loan pair. Wait for a fresh feed update (or refresh testnet oracle feeds) and retry.',
47
+ OraclePriceUnavailable: 'Price oracle has no price for this pair. Check oracle configuration for this market.',
48
+ CollateralOraclePriceZero: 'Price oracle returned zero for a collateral/loan-asset pair. Check oracle configuration.',
49
+ InsufficientYieldSourceBalance: 'Lender yield source balance is insufficient for this fill.',
50
+ InsufficientWalletBalanceOrAllowance: 'Wallet mode: you need enough token balance and LoanManager allowance to cover this capacity plus other active wallet-mode intents for the same asset.',
51
+ SafeERC20FailedOperation: 'Token transfer or approval failed. Check balances, allowances, and any transfer restrictions on the asset.',
52
+ InvalidRate: 'Invalid rate: must be greater than zero (basis points).',
53
+ InvalidPrincipal: 'Invalid principal: check min per fill, max capacity, and that min ≤ max.',
54
+ InvalidDuration: 'Invalid duration: min and max loan duration must be set and min ≤ max.',
55
+ InvalidExpiry: 'Invalid expiry: intent expiry must be in the future.',
56
+ InvalidAsset: 'Invalid or unapproved asset/collateral for this deployment.',
57
+ InvalidCollateralConfig: 'Invalid collateral config: check LTV/LLTV (1–10000 bps) and LTV ≤ LLTV when LLTV is set.',
58
+ CollateralExceedsBorrowerCap: 'Collateral posted is below what this fill requires at the lender’s LTV. Increase collateral or raise the borrower collateral cap.',
59
+ BorrowCapExceeded: 'This borrow exceeds the per-wallet borrow cap for this asset. Repay other loans or borrow less.',
60
+ MarketBorrowCapExceeded: 'This borrow exceeds the market-wide outstanding cap for this asset. Wait for repayments or borrow less.',
61
+ SupplyCapExceeded: 'This deposit exceeds the per-wallet supply cap for this asset.',
62
+ WalletModeSupplyCapExceeded: 'This wallet-mode lend exceeds the per-wallet supply cap for this asset.',
63
+ ExceedsPerBorrowerCap: 'This fill exceeds this lender’s max-per-borrower cap.',
64
+ AutoMatchNotFound: 'No compatible counterparty was found at execution time. Refresh the book and retry.',
65
+ AutoMatchScanLimitExceeded: 'Instant match reached its lender scan limit before finding a compatible offer. Pick an offer from the book and match it directly.',
66
+ AutoRefinanceNotEnabled: 'Auto-refinance is not enabled on this loan.',
67
+ AutoRefinanceScanLimitExceeded: 'Auto-refinance scanned the lender book without finding a compatible intent.',
68
+ LoanNotLiquidatable: 'This loan is not currently liquidatable.',
69
+ LoanNotMatured: 'This loan has not reached maturity.',
70
+ LoanNotListed: 'This loan is not listed for secondary sale.',
71
+ NotBorrower: 'Only the borrower can perform this action.',
72
+ NotLender: 'Only the lender can perform this action.',
73
+ Unauthorized: 'Not authorized to perform this action.',
74
+ UnauthorizedPause: 'Not authorized to pause or unpause.',
75
+ CallerIsNotGovernor: 'Only the governor can perform this action.',
76
+ UnsupportedCollateral: 'This collateral token is not approved for the selected loan asset.',
77
+ UnsupportedLoanAsset: 'This loan asset is not approved on this deployment.',
78
+ UnsupportedCurrency: 'This payment currency is not enabled on the secondary market.',
79
+ InsufficientShares: 'Not enough yield-source shares for this withdrawal.',
80
+ InsufficientSharesMinted: 'Yield source minted fewer shares than expected.',
81
+ YieldWithdrawWouldInsolventIntents: 'This withdraw would leave less than committed lender capacity at this yield source.',
82
+ YieldWithdrawShortfall: 'The yield venue delivered fewer assets than expected for this withdrawal.',
83
+ SignatureExpired: 'This signature has expired. Sign again and resubmit.',
84
+ InvalidSignature: 'Signature is invalid for this solver solution.',
85
+ OnlySeller: 'Only the current seller can perform this action.',
86
+ OnlyBidder: 'Only the bidder can perform this action.',
87
+ ListingNotActive: 'This listing is no longer active.',
88
+ ListingExpired: 'This listing has expired.',
89
+ AuctionNotActive: 'This auction is no longer active.',
90
+ AuctionEnded: 'This auction has ended.',
91
+ AuctionNotEnded: 'This auction has not ended yet.',
92
+ BidTooLow: 'Bid is below the current minimum.',
93
+ BidExpired: 'This bid has expired.',
94
+ BelowReservePrice: 'Bid is below the auction reserve price.',
95
+ PositionNotTransferable: 'This loan position cannot be transferred in its current state.',
96
+ PositionNearMaturity: 'This loan is too close to maturity to transfer.',
97
+ CannotTransferInactivePosition: 'Inactive loan positions cannot be transferred.',
98
+ PartialLiquidationRequiresNoStrategy: 'Partial liquidation is only allowed when the loan has no credit strategy.',
99
+ RefinanceFillMismatch: 'Refinance fill must equal the outstanding principal of the loan being refinanced.',
100
+ RefinancePayoffDeficit: 'Refinance fees exceed payoff (principal + interest + penalty).',
101
+ FeeExceedsMax: 'Fee exceeds the protocol maximum.',
102
+ FeeExceedsMaximum: 'Fee exceeds the protocol maximum.',
103
+ ZeroAddress: 'A required address was zero.',
104
+ ZeroPrice: 'Price must be greater than zero.',
105
+ ReentrancyGuardReentrantCall: 'Reentrancy blocked this call.',
106
+ ExpectedPause: 'Protocol is not paused.',
107
+ };
108
+ function featureLabel(raw) {
109
+ const n = typeof raw === 'bigint' ? Number(raw) : Number(raw);
110
+ if (!Number.isInteger(n) || n < 0 || n >= MARKET_FEATURE_LABELS.length)
111
+ return null;
112
+ return MARKET_FEATURE_LABELS[n];
113
+ }
114
+ function humanizeName(name) {
115
+ return name.replace(/([a-z])([A-Z])/g, '$1 $2').replace(/([A-Z]+)([A-Z][a-z])/g, '$1 $2');
116
+ }
117
+ function asRecord(frag, values) {
118
+ const out = {};
119
+ if (!frag || !values)
120
+ return out;
121
+ frag.inputs.forEach((input, i) => {
122
+ const key = input.name && input.name.length > 0 ? input.name : `arg${i}`;
123
+ out[key] = values[i];
124
+ });
125
+ return out;
126
+ }
127
+ function normalizeHex(raw) {
128
+ const s = raw.trim();
129
+ if (!/^0x[0-9a-fA-F]*$/i.test(s))
130
+ return null;
131
+ if (s.length < 10)
132
+ return null;
133
+ if (s.length % 2 !== 0)
134
+ return null;
135
+ return s.toLowerCase();
136
+ }
137
+ function hexFromUnknown(value) {
138
+ if (typeof value === 'string') {
139
+ const direct = normalizeHex(value);
140
+ if (direct)
141
+ return direct;
142
+ const nested = value.match(/0x[0-9a-fA-F]{8,}/);
143
+ return nested ? normalizeHex(nested[0]) : null;
144
+ }
145
+ if (value && typeof value === 'object') {
146
+ const rec = value;
147
+ if (typeof rec.data === 'string')
148
+ return hexFromUnknown(rec.data);
149
+ }
150
+ return null;
151
+ }
152
+ function namedErrorFromUnknown(value) {
153
+ if (!value || typeof value !== 'object')
154
+ return null;
155
+ const rec = value;
156
+ const name = rec.errorName;
157
+ if (typeof name === 'string' && /^[A-Z][A-Za-z0-9_]+$/.test(name))
158
+ return name;
159
+ return null;
160
+ }
161
+ /**
162
+ * Pull revert calldata (`0x` + selector [+ args]) from a thrown wallet/RPC error.
163
+ */
164
+ export function extractRevertData(error) {
165
+ if (typeof error === 'string')
166
+ return hexFromUnknown(error);
167
+ if (error == null || typeof error !== 'object')
168
+ return null;
169
+ const seen = new Set();
170
+ const queue = [error];
171
+ let namedFallback = null;
172
+ while (queue.length > 0 && seen.size < 24) {
173
+ const cur = queue.shift();
174
+ if (cur == null || seen.has(cur))
175
+ continue;
176
+ seen.add(cur);
177
+ if (typeof cur === 'string') {
178
+ const hex = hexFromUnknown(cur);
179
+ if (hex)
180
+ return hex;
181
+ continue;
182
+ }
183
+ if (typeof cur !== 'object')
184
+ continue;
185
+ const rec = cur;
186
+ if (!namedFallback)
187
+ namedFallback = namedErrorFromUnknown(rec);
188
+ for (const key of ['data', 'reason', 'body', 'error', 'info', 'cause', 'shortMessage', 'details', 'message']) {
189
+ if (key in rec)
190
+ queue.push(rec[key]);
191
+ }
192
+ if (typeof rec.walk === 'function') {
193
+ try {
194
+ const walked = rec.walk((e) => e);
195
+ queue.push(walked);
196
+ }
197
+ catch {
198
+ /* ignore */
199
+ }
200
+ }
201
+ }
202
+ if (namedFallback) {
203
+ try {
204
+ const frag = errorsInterface.getError(namedFallback);
205
+ if (frag && frag.inputs.length === 0) {
206
+ return frag.selector;
207
+ }
208
+ }
209
+ catch {
210
+ /* ignore */
211
+ }
212
+ }
213
+ return null;
214
+ }
215
+ function decodeHex(data) {
216
+ const hex = normalizeHex(data);
217
+ if (!hex)
218
+ return null;
219
+ const selector = dataSlice(hex, 0, 4);
220
+ try {
221
+ const parsed = errorsInterface.parseError(hex);
222
+ if (!parsed)
223
+ return null;
224
+ return {
225
+ name: parsed.name,
226
+ selector,
227
+ signature: parsed.signature,
228
+ args: asRecord(parsed.fragment, [...parsed.args]),
229
+ };
230
+ }
231
+ catch {
232
+ try {
233
+ const frag = errorsInterface.getError(selector);
234
+ if (!frag)
235
+ return null;
236
+ return {
237
+ name: frag.name,
238
+ selector,
239
+ signature: frag.format('sighash'),
240
+ args: {},
241
+ };
242
+ }
243
+ catch {
244
+ return null;
245
+ }
246
+ }
247
+ }
248
+ function decodeFromObject(error) {
249
+ if (error == null || typeof error !== 'object')
250
+ return null;
251
+ const rec = error;
252
+ const name = namedErrorFromUnknown(rec) ?? namedErrorFromUnknown(rec.data);
253
+ if (!name)
254
+ return null;
255
+ let selector = '0x00000000';
256
+ let signature = `${name}()`;
257
+ let frag = null;
258
+ try {
259
+ frag = errorsInterface.getError(name);
260
+ if (frag) {
261
+ selector = frag.selector;
262
+ signature = frag.format('sighash');
263
+ }
264
+ }
265
+ catch {
266
+ /* duplicate names (e.g. OraclePriceStale) still usable for messages */
267
+ }
268
+ const argsObj = rec.data && typeof rec.data === 'object' ? rec.data.args : rec.args;
269
+ const args = {};
270
+ if (argsObj && typeof argsObj === 'object') {
271
+ const values = Array.isArray(argsObj) ? argsObj : Object.values(argsObj);
272
+ Object.assign(args, asRecord(frag, values));
273
+ if (!Array.isArray(argsObj))
274
+ Object.assign(args, argsObj);
275
+ }
276
+ return { name, selector, signature, args };
277
+ }
278
+ /**
279
+ * Decode a Pearcurve / OZ custom error from revert hex or a nested wallet/RPC error.
280
+ */
281
+ export function decodeProtocolError(errorOrData) {
282
+ if (typeof errorOrData === 'string')
283
+ return decodeHex(errorOrData);
284
+ const hex = extractRevertData(errorOrData);
285
+ if (hex) {
286
+ const decoded = decodeHex(hex);
287
+ if (decoded)
288
+ return decoded;
289
+ }
290
+ if (errorOrData == null || typeof errorOrData !== 'object')
291
+ return null;
292
+ const seen = new Set();
293
+ const queue = [errorOrData];
294
+ while (queue.length > 0 && seen.size < 24) {
295
+ const cur = queue.shift();
296
+ if (cur == null || seen.has(cur))
297
+ continue;
298
+ seen.add(cur);
299
+ const named = decodeFromObject(cur);
300
+ if (named)
301
+ return named;
302
+ if (typeof cur === 'object') {
303
+ const rec = cur;
304
+ for (const key of ['cause', 'error', 'info', 'data']) {
305
+ if (key in rec)
306
+ queue.push(rec[key]);
307
+ }
308
+ }
309
+ }
310
+ return null;
311
+ }
312
+ function formatDecoded(decoded) {
313
+ if (decoded.name === 'Error') {
314
+ const msg = String(decoded.args.message ?? decoded.args.arg0 ?? '').trim();
315
+ if (/^market paused$/i.test(msg)) {
316
+ return String(MESSAGES.MarketEnforcedPause);
317
+ }
318
+ if (/^market feature paused$/i.test(msg)) {
319
+ const mapped = MESSAGES.MarketFeatureEnforcedPause;
320
+ return typeof mapped === 'function' ? mapped({}) : mapped;
321
+ }
322
+ if (msg)
323
+ return msg;
324
+ }
325
+ if (decoded.name === 'Panic') {
326
+ return `Contract panicked (code ${String(decoded.args.code ?? decoded.args.arg0 ?? '')}).`;
327
+ }
328
+ const mapped = MESSAGES[decoded.name];
329
+ if (typeof mapped === 'function')
330
+ return mapped(decoded.args);
331
+ if (typeof mapped === 'string')
332
+ return mapped;
333
+ return humanizeName(decoded.name);
334
+ }
335
+ /**
336
+ * Human-readable copy for a decoded protocol error, revert hex, or thrown wallet/RPC error.
337
+ */
338
+ export function formatProtocolError(errorOrData) {
339
+ if (typeof errorOrData === 'object' && errorOrData !== null && 'name' in errorOrData && 'selector' in errorOrData) {
340
+ const rec = errorOrData;
341
+ if (typeof rec.name === 'string' && typeof rec.selector === 'string') {
342
+ return formatDecoded(rec);
343
+ }
344
+ }
345
+ const decoded = decodeProtocolError(errorOrData);
346
+ return decoded ? formatDecoded(decoded) : null;
347
+ }
348
+ export function protocolErrorSelector(nameOrSignature) {
349
+ try {
350
+ const frag = errorsInterface.getError(nameOrSignature);
351
+ return frag ? frag.selector : null;
352
+ }
353
+ catch {
354
+ return null;
355
+ }
356
+ }
357
+ export { ERROR_STRING_SELECTOR, PANIC_SELECTOR, MARKET_FEATURE_LABELS };
358
+ //# sourceMappingURL=decodeError.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decodeError.js","sourceRoot":"","sources":["../src/decodeError.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import { Interface } from 'ethers';
2
+ import type { BorrowerIntentParams, LenderIntentParams, SolverSolution } from './types.js';
3
+ /** Encode calldata for `Main.submitLenderIntent`. */
4
+ export declare function encodeSubmitLenderIntent(params: LenderIntentParams, hintId?: bigint): string;
5
+ export declare function encodeSubmitBorrowerIntent(params: BorrowerIntentParams): string;
6
+ /** `Main.matchBundleOnChain` — solver submits signed on-chain intent ID batch. */
7
+ export declare function encodeMatchBundleOnChain(sol: SolverSolution): string;
8
+ /** `MatchingEngine.previewMatchAutoOnChainWithNewBorrower` — view precheck for auto-match borrower params. */
9
+ export declare function encodePreviewMatchAutoOnChainWithNewBorrower(params: BorrowerIntentParams): string;
10
+ /** `MatchingEngine.previewMatchAutoOnChainWithNewLender` — view precheck for auto-match lender params. */
11
+ export declare function encodePreviewMatchAutoOnChainWithNewLender(params: LenderIntentParams, lender?: string): string;
12
+ /** `MatchingEngine.previewMatchOnChain` — view precheck for manual on-chain ids. */
13
+ export declare function encodePreviewMatchOnChain(lenderIntentId: bigint, borrowerIntentId: bigint, fillAmount: bigint): string;
14
+ export declare function encodeMatchManual(lenderIntentId: bigint, borrowerIntentId: bigint, fillAmount: bigint): string;
15
+ /** Build `ethers.Interface` for custom decoding or overloading. */
16
+ export declare function getMainInterface(): Interface;
17
+ export declare function getMatchingEngineInterface(): Interface;
18
+ //# sourceMappingURL=encoding.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"encoding.d.ts","sourceRoot":"","sources":["../src/encoding.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,SAAS,EAAqB,MAAM,QAAQ,CAAA;AAMvE,OAAO,KAAK,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAI1F,qDAAqD;AACrD,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,kBAAkB,EAAE,MAAM,SAAK,GAAG,MAAM,CASxF;AAED,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,oBAAoB,GAAG,MAAM,CAE/E;AAED,kFAAkF;AAClF,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,cAAc,GAAG,MAAM,CAEpE;AAED,8GAA8G;AAC9G,wBAAgB,4CAA4C,CAAC,MAAM,EAAE,oBAAoB,GAAG,MAAM,CAEjG;AAED,0GAA0G;AAC1G,wBAAgB,0CAA0C,CACxD,MAAM,EAAE,kBAAkB,EAC1B,MAAM,CAAC,EAAE,MAAM,GACd,MAAM,CAKR;AAED,oFAAoF;AACpF,wBAAgB,yBAAyB,CACvC,cAAc,EAAE,MAAM,EACtB,gBAAgB,EAAE,MAAM,EACxB,UAAU,EAAE,MAAM,GACjB,MAAM,CAER;AAED,wBAAgB,iBAAiB,CAAC,cAAc,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAE9G;AAED,mEAAmE;AACnE,wBAAgB,gBAAgB,IAAI,SAAS,CAE5C;AAED,wBAAgB,0BAA0B,IAAI,SAAS,CAEtD"}
@@ -0,0 +1,94 @@
1
+ import { FunctionFragment, Interface } from 'ethers';
2
+ import { mainAbi, matchingEngineAbi } from './abis.js';
3
+ const matchingEngineInterface = new Interface(matchingEngineAbi);
4
+ import { assertCollateralConfigBps } from './bps.js';
5
+ const mainInterface = new Interface(mainAbi);
6
+ /** Encode calldata for `Main.submitLenderIntent`. */
7
+ export function encodeSubmitLenderIntent(params, hintId = 0n) {
8
+ const withHint = hintId !== 0n;
9
+ const fragment = mainInterface.fragments.find((f) => f instanceof FunctionFragment && f.name === 'submitLenderIntent' && f.inputs.length === (withHint ? 2 : 1));
10
+ if (!fragment)
11
+ throw new Error('submitLenderIntent overload missing');
12
+ const tuple = toLenderTuple(params);
13
+ return mainInterface.encodeFunctionData(fragment, withHint ? [tuple, hintId] : [tuple]);
14
+ }
15
+ export function encodeSubmitBorrowerIntent(params) {
16
+ return mainInterface.encodeFunctionData('submitBorrowerIntent', [toBorrowerTuple(params)]);
17
+ }
18
+ /** `Main.matchBundleOnChain` — solver submits signed on-chain intent ID batch. */
19
+ export function encodeMatchBundleOnChain(sol) {
20
+ return mainInterface.encodeFunctionData('matchBundleOnChain', [toOnChainSolTuple(sol)]);
21
+ }
22
+ /** `MatchingEngine.previewMatchAutoOnChainWithNewBorrower` — view precheck for auto-match borrower params. */
23
+ export function encodePreviewMatchAutoOnChainWithNewBorrower(params) {
24
+ return matchingEngineInterface.encodeFunctionData('previewMatchAutoOnChainWithNewBorrower', [toBorrowerTuple(params)]);
25
+ }
26
+ /** `MatchingEngine.previewMatchAutoOnChainWithNewLender` — view precheck for auto-match lender params. */
27
+ export function encodePreviewMatchAutoOnChainWithNewLender(params, lender) {
28
+ if (lender) {
29
+ return matchingEngineInterface.encodeFunctionData('previewMatchAutoOnChainWithNewLender', [toLenderTuple(params), lender]);
30
+ }
31
+ return matchingEngineInterface.encodeFunctionData('previewMatchAutoOnChainWithNewLender', [toLenderTuple(params)]);
32
+ }
33
+ /** `MatchingEngine.previewMatchOnChain` — view precheck for manual on-chain ids. */
34
+ export function encodePreviewMatchOnChain(lenderIntentId, borrowerIntentId, fillAmount) {
35
+ return matchingEngineInterface.encodeFunctionData('previewMatchOnChain', [lenderIntentId, borrowerIntentId, fillAmount]);
36
+ }
37
+ export function encodeMatchManual(lenderIntentId, borrowerIntentId, fillAmount) {
38
+ return mainInterface.encodeFunctionData('matchOnChain', [lenderIntentId, borrowerIntentId, fillAmount]);
39
+ }
40
+ /** Build `ethers.Interface` for custom decoding or overloading. */
41
+ export function getMainInterface() {
42
+ return new Interface(mainAbi);
43
+ }
44
+ export function getMatchingEngineInterface() {
45
+ return new Interface(matchingEngineAbi);
46
+ }
47
+ // ─── Solidity tuple shapes (matches ABI components) ───────────────────────
48
+ function toLenderTuple(p) {
49
+ assertCollateralConfigBps({ token: p.collateralToken, ltv: p.ltv, lltv: p.lltv });
50
+ return {
51
+ asset: p.asset,
52
+ minPrincipal: p.minPrincipal,
53
+ maxPrincipal: p.maxPrincipal,
54
+ minRate: p.minRate,
55
+ minDuration: p.minDuration,
56
+ maxDuration: p.maxDuration,
57
+ collateralToken: p.collateralToken,
58
+ ltv: p.ltv,
59
+ lltv: p.lltv,
60
+ expiry: p.expiry,
61
+ yieldSource: p.yieldSource,
62
+ allowPartialFill: p.allowPartialFill,
63
+ maxPerBorrowerAddress: p.maxPerBorrowerAddress,
64
+ earlyRepaymentFeeBps: p.earlyRepaymentFeeBps,
65
+ blockEarlyRepayment: p.blockEarlyRepayment,
66
+ callbackReceiver: p.callbackReceiver,
67
+ };
68
+ }
69
+ function toBorrowerTuple(p) {
70
+ return {
71
+ asset: p.asset,
72
+ principal: p.principal,
73
+ maxRate: p.maxRate,
74
+ duration: p.duration,
75
+ collateral: p.collateral,
76
+ maxCollateralAmount: p.maxCollateralAmount,
77
+ expiry: p.expiry,
78
+ autoRefinanceThresholdRate: p.autoRefinanceThresholdRate,
79
+ solverTipBps: p.solverTipBps,
80
+ };
81
+ }
82
+ function toOnChainSolTuple(sol) {
83
+ return {
84
+ lenderIntentIds: sol.lenderIntentIds,
85
+ borrowerIntentIds: sol.borrowerIntentIds,
86
+ agreedRates: sol.agreedRates,
87
+ fillAmounts: sol.fillAmounts,
88
+ solverTip: sol.solverTip,
89
+ solver: sol.solver,
90
+ deadline: sol.deadline,
91
+ signature: sol.signature,
92
+ };
93
+ }
94
+ //# sourceMappingURL=encoding.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"encoding.js","sourceRoot":"","sources":["../src/encoding.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ export * from './bps.js';
2
+ export * from './abis.js';
3
+ export * from './networkConfig.js';
4
+ export * from './clients.js';
5
+ export * from './reads.js';
6
+ export * from './encoding.js';
7
+ export * from './decodeError.js';
8
+ export * from './pause.js';
9
+ export * from './types.js';
10
+ export * from './txGas.js';
11
+ export * from './yieldSources.js';
12
+ export * from './lenderSubmitPreflight.js';
13
+ export * from './borrowerSubmitPreflight.js';
14
+ export * from './yieldMigrationPreflight.js';
15
+ export * from './loanPositions.js';
16
+ export * from './marketStats.js';
17
+ export * from './strategies.js';
18
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAA;AACxB,cAAc,WAAW,CAAA;AACzB,cAAc,oBAAoB,CAAA;AAClC,cAAc,cAAc,CAAA;AAC5B,cAAc,YAAY,CAAA;AAC1B,cAAc,eAAe,CAAA;AAC7B,cAAc,kBAAkB,CAAA;AAChC,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA;AAC1B,cAAc,mBAAmB,CAAA;AACjC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,8BAA8B,CAAA;AAC5C,cAAc,8BAA8B,CAAA;AAC5C,cAAc,oBAAoB,CAAA;AAClC,cAAc,kBAAkB,CAAA;AAChC,cAAc,iBAAiB,CAAA"}
package/dist/index.js ADDED
@@ -0,0 +1,18 @@
1
+ export * from './bps.js';
2
+ export * from './abis.js';
3
+ export * from './networkConfig.js';
4
+ export * from './clients.js';
5
+ export * from './reads.js';
6
+ export * from './encoding.js';
7
+ export * from './decodeError.js';
8
+ export * from './pause.js';
9
+ export * from './types.js';
10
+ export * from './txGas.js';
11
+ export * from './yieldSources.js';
12
+ export * from './lenderSubmitPreflight.js';
13
+ export * from './borrowerSubmitPreflight.js';
14
+ export * from './yieldMigrationPreflight.js';
15
+ export * from './loanPositions.js';
16
+ export * from './marketStats.js';
17
+ export * from './strategies.js';
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAA;AACxB,cAAc,WAAW,CAAA;AACzB,cAAc,oBAAoB,CAAA;AAClC,cAAc,cAAc,CAAA;AAC5B,cAAc,YAAY,CAAA;AAC1B,cAAc,eAAe,CAAA;AAC7B,cAAc,kBAAkB,CAAA;AAChC,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA;AAC1B,cAAc,mBAAmB,CAAA;AACjC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,8BAA8B,CAAA;AAC5C,cAAc,8BAA8B,CAAA;AAC5C,cAAc,oBAAoB,CAAA;AAClC,cAAc,kBAAkB,CAAA;AAChC,cAAc,iBAAiB,CAAA"}
@@ -0,0 +1,20 @@
1
+ import type { Provider } from 'ethers';
2
+ export type AssertLenderSubmitLiquidityParams = {
3
+ intentRegistry: string;
4
+ loanManager: string;
5
+ owner: string;
6
+ asset: string;
7
+ /** `ZeroAddress` for wallet-mode lenders */
8
+ yieldSource: string;
9
+ maxPrincipal: bigint;
10
+ };
11
+ /** One base unit of the loan asset — mirrors on-chain `YIELD_BALANCE_ROUNDING_TOLERANCE`. */
12
+ export declare const YIELD_BALANCE_ROUNDING_TOLERANCE = 1n;
13
+ /**
14
+ * Client-side guard mirroring `IntentValidation.validateLenderParams`:
15
+ * `fungibleBalance + YIELD_BALANCE_ROUNDING_TOLERANCE >= committed + maxPrincipal` (yield mode).
16
+ * Call before `Main.submitLenderIntent` to avoid wasting gas on `InsufficientYieldSourceBalance`
17
+ * / wallet balance-revert paths.
18
+ */
19
+ export declare function assertLenderSubmitLiquidity(provider: Provider, p: AssertLenderSubmitLiquidityParams): Promise<void>;
20
+ //# sourceMappingURL=lenderSubmitPreflight.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lenderSubmitPreflight.d.ts","sourceRoot":"","sources":["../src/lenderSubmitPreflight.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAA;AAQtC,MAAM,MAAM,iCAAiC,GAAG;IAC9C,cAAc,EAAE,MAAM,CAAA;IACtB,WAAW,EAAE,MAAM,CAAA;IACnB,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,4CAA4C;IAC5C,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,EAAE,MAAM,CAAA;CACrB,CAAA;AAED,6FAA6F;AAC7F,eAAO,MAAM,gCAAgC,KAAK,CAAA;AAElD;;;;;GAKG;AACH,wBAAsB,2BAA2B,CAC/C,QAAQ,EAAE,QAAQ,EAClB,CAAC,EAAE,iCAAiC,GACnC,OAAO,CAAC,IAAI,CAAC,CA+Bf"}
@@ -0,0 +1,42 @@
1
+ import { Contract, ZeroAddress, getAddress } from 'ethers';
2
+ import { intentRegistryAbi, yieldSourceAbi } from './abis.js';
3
+ const ERC20_MIN_ABI = [
4
+ 'function balanceOf(address) view returns (uint256)',
5
+ 'function allowance(address,address) view returns (uint256)',
6
+ ];
7
+ /** One base unit of the loan asset — mirrors on-chain `YIELD_BALANCE_ROUNDING_TOLERANCE`. */
8
+ export const YIELD_BALANCE_ROUNDING_TOLERANCE = 1n;
9
+ /**
10
+ * Client-side guard mirroring `IntentValidation.validateLenderParams`:
11
+ * `fungibleBalance + YIELD_BALANCE_ROUNDING_TOLERANCE >= committed + maxPrincipal` (yield mode).
12
+ * Call before `Main.submitLenderIntent` to avoid wasting gas on `InsufficientYieldSourceBalance`
13
+ * / wallet balance-revert paths.
14
+ */
15
+ export async function assertLenderSubmitLiquidity(provider, p) {
16
+ const reg = new Contract(getAddress(p.intentRegistry), intentRegistryAbi, provider);
17
+ const ys = getAddress(p.yieldSource);
18
+ const owner = getAddress(p.owner);
19
+ const asset = getAddress(p.asset);
20
+ const lm = getAddress(p.loanManager);
21
+ const committed = await reg.committedCapacity(owner, ys, asset);
22
+ const needed = committed + p.maxPrincipal;
23
+ if (ys === ZeroAddress) {
24
+ const token = new Contract(asset, ERC20_MIN_ABI, provider);
25
+ const [bal, alw] = await Promise.all([
26
+ token.balanceOf(owner),
27
+ token.allowance(owner, lm),
28
+ ]);
29
+ const headroom = bal < alw ? bal : alw;
30
+ if (headroom < needed) {
31
+ throw new Error(`Insufficient wallet liquidity for this intent: need ${needed.toString()} base units (already booked ${committed.toString()} + new max ${p.maxPrincipal.toString()}), min(balance, LoanManager allowance) is ${headroom.toString()}. Approve LoanManager, reduce max capacity, or cancel other intents.`);
32
+ }
33
+ }
34
+ else {
35
+ const y = new Contract(ys, yieldSourceAbi, provider);
36
+ const bal = await y.balanceOf(owner, asset);
37
+ if (bal + YIELD_BALANCE_ROUNDING_TOLERANCE < needed) {
38
+ throw new Error(`Insufficient yield-source liquidity: need ${needed.toString()} base units (already booked ${committed.toString()} + new max ${p.maxPrincipal.toString()}), balance ${bal.toString()}. Deposit more, reduce max, or cancel other intents.`);
39
+ }
40
+ }
41
+ }
42
+ //# sourceMappingURL=lenderSubmitPreflight.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lenderSubmitPreflight.js","sourceRoot":"","sources":["../src/lenderSubmitPreflight.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAA;AAE1D,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,WAAW,CAAA;AAE7D,MAAM,aAAa,GAAG;IACpB,oDAAoD;IACpD,4DAA4D;CACpD,CAAA;AAYV,6FAA6F;AAC7F,MAAM,CAAC,MAAM,gCAAgC,GAAG,EAAE,CAAA;AAElD;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAC/C,QAAkB,EAClB,CAAoC;IAEpC,MAAM,GAAG,GAAG,IAAI,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,cAAc,CAAC,EAAE,iBAAiB,EAAE,QAAQ,CAAC,CAAA;IACnF,MAAM,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,CAAA;IACpC,MAAM,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA;IACjC,MAAM,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA;IACjC,MAAM,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,CAAA;IAEpC,MAAM,SAAS,GAAW,MAAM,GAAG,CAAC,iBAAiB,CAAC,KAAK,EAAE,EAAE,EAAE,KAAK,CAAC,CAAA;IACvE,MAAM,MAAM,GAAG,SAAS,GAAG,CAAC,CAAC,YAAY,CAAA;IAEzC,IAAI,EAAE,KAAK,WAAW,EAAE,CAAC;QACvB,MAAM,KAAK,GAAG,IAAI,QAAQ,CAAC,KAAK,EAAE,aAAa,EAAE,QAAQ,CAAC,CAAA;QAC1D,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YACnC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAoB;YACzC,KAAK,CAAC,SAAS,CAAC,KAAK,EAAE,EAAE,CAAoB;SAC9C,CAAC,CAAA;QACF,MAAM,QAAQ,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAA;QACtC,IAAI,QAAQ,GAAG,MAAM,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CACb,uDAAuD,MAAM,CAAC,QAAQ,EAAE,+BAA+B,SAAS,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC,YAAY,CAAC,QAAQ,EAAE,6CAA6C,QAAQ,CAAC,QAAQ,EAAE,sEAAsE,CACzS,CAAA;QACH,CAAC;IACH,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,GAAG,IAAI,QAAQ,CAAC,EAAE,EAAE,cAAc,EAAE,QAAQ,CAAC,CAAA;QACpD,MAAM,GAAG,GAAW,MAAM,CAAC,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;QACnD,IAAI,GAAG,GAAG,gCAAgC,GAAG,MAAM,EAAE,CAAC;YACpD,MAAM,IAAI,KAAK,CACb,6CAA6C,MAAM,CAAC,QAAQ,EAAE,+BAA+B,SAAS,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC,YAAY,CAAC,QAAQ,EAAE,cAAc,GAAG,CAAC,QAAQ,EAAE,sDAAsD,CAC3O,CAAA;QACH,CAAC;IACH,CAAC;AACH,CAAC"}