gondi 0.10.2 → 0.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.mjs +199 -45
- package/dist/index.mjs.map +3 -3
- package/dist/src/api/index.d.ts +13 -12
- package/dist/src/contracts/MslV4.d.ts +1 -0
- package/dist/src/contracts/MslV5.d.ts +1 -0
- package/dist/src/contracts/MslV6.d.ts +3 -0
- package/dist/src/generated/graphql/index.d.ts +362 -46
- package/dist/src/gondi.d.ts +17 -12
- package/dist/src/utils/loan.d.ts +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +2 -1
package/dist/index.mjs
CHANGED
|
@@ -1,16 +1,17 @@
|
|
|
1
|
-
var we=Object.defineProperty;var pt=(p,e,t)=>e in p?we(p,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):p[e]=t;var l=(p,e)=>we(p,"name",{value:e,configurable:!0});var Oe=(p,e,t)=>(pt(p,typeof e!="symbol"?e+"":e,t),t);import{createPublicClient as wn,createTransport as On}from"viem";import{getAddress as tn}from"viem";import{ApolloClient as Tt,ApolloLink as Pe,createHttpLink as ft,InMemoryCache as bt}from"@apollo/client/core/index.js";import{setContext as gt}from"@apollo/client/link/context/index.js";import{withScalars as It}from"apollo-link-scalars";import{buildSchema as
|
|
1
|
+
var we=Object.defineProperty;var pt=(p,e,t)=>e in p?we(p,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):p[e]=t;var l=(p,e)=>we(p,"name",{value:e,configurable:!0});var Oe=(p,e,t)=>(pt(p,typeof e!="symbol"?e+"":e,t),t);import{createPublicClient as wn,createTransport as On}from"viem";import{getAddress as tn}from"viem";import{ApolloClient as Tt,ApolloLink as Pe,createHttpLink as ft,InMemoryCache as bt}from"@apollo/client/core/index.js";import{setContext as gt}from"@apollo/client/link/context/index.js";import{withScalars as It}from"apollo-link-scalars";import{buildSchema as Ft}from"graphql";import{ApolloClient as ot,ApolloLink as he,createHttpLink as yt,InMemoryCache as lt}from"@apollo/client/core/index.js";import{gql as _e}from"graphql-tag";import{SiweMessage as dt}from"siwe";var Le=l(()=>`${oe()}/graphql`,"authApiUrl"),ut=l(async()=>{let p=he.from([yt({uri:({operationName:e})=>`${Le()}?operation=${encodeURIComponent(e)}`})]);return new ot({link:he.from([p]),defaultOptions:{query:{errorPolicy:"all"},mutate:{errorPolicy:"all"}},cache:new lt({})})},"getAuthClient"),mt=l(async({wallet:p})=>{let e=await ut(),{data:t,errors:n}=await e.mutate({mutation:_e`
|
|
2
2
|
mutation GenerateSignInNonce($nonceInput: NonceInput!) {
|
|
3
3
|
generateSignInNonce(nonceInput: $nonceInput)
|
|
4
4
|
}
|
|
5
|
-
`,variables:{nonceInput:{walletAddress:p.account.address,blockchain:"ETHEREUM"}}});if(n)throw new Error(n.map(
|
|
5
|
+
`,variables:{nonceInput:{walletAddress:p.account.address,blockchain:"ETHEREUM"}}});if(n)throw new Error(n.map(u=>u.message).join(", "));let a=t?.generateSignInNonce,i=new dt({domain:"gondi.xyz",address:p.account.address,chainId:p.chain.id,statement:"Sign in with Ethereum to the app.",uri:Le(),version:"1",nonce:a}),r=await p.signMessage({message:i.prepareMessage()}),{data:s,errors:o}=await e.mutate({mutation:_e`
|
|
6
6
|
mutation SignInWithEthereum($siweInput: SiweInput!) {
|
|
7
7
|
signInWithEthereum(siweInput: $siweInput)
|
|
8
8
|
}
|
|
9
|
-
`,variables:{siweInput:{message:i.prepareMessage(),signature:r}}});if(o)throw new Error(o.map(
|
|
9
|
+
`,variables:{siweInput:{message:i.prepareMessage(),signature:r}}});if(o)throw new Error(o.map(u=>u.message).join(", "));let y=s?.signInWithEthereum;if(!y)throw new Error("Couldn't generate Access Token, please try again later");return y},"signIn"),q=class{token;wallet;constructor({token:e,wallet:t}){this.token=e,this.wallet=t}async authorizeRequest(e){await this.signIn();let{headers:t={}}=e.context||{headers:{}};return{...e,headers:{...t,authorization:`Bearer ${this.token}`}}}async signIn(){this.token||(this.token=await mt({wallet:this.wallet}))}};l(q,"SessionToken");var Ce=`type ActiveOfferNotification implements Node & Notification {
|
|
10
10
|
createdOn: DateTime!
|
|
11
11
|
id: String!
|
|
12
12
|
notificationType: String!
|
|
13
13
|
offer: Offer!
|
|
14
|
+
offerId: String!
|
|
14
15
|
readOn: DateTime
|
|
15
16
|
user: User!
|
|
16
17
|
}
|
|
@@ -36,6 +37,7 @@ type Auction implements Node {
|
|
|
36
37
|
highestBid: Bid
|
|
37
38
|
id: String!
|
|
38
39
|
loan: MultiSourceLoan!
|
|
40
|
+
minBid: BigInt!
|
|
39
41
|
originator: Address
|
|
40
42
|
settler: Address
|
|
41
43
|
startTime: DateTime
|
|
@@ -45,10 +47,13 @@ type Auction implements Node {
|
|
|
45
47
|
|
|
46
48
|
type AuctionBidConfirmationNotification implements Node & Notification {
|
|
47
49
|
auction: Auction!
|
|
50
|
+
auctionId: String!
|
|
48
51
|
bid: Bid!
|
|
52
|
+
bidId: Int!
|
|
49
53
|
createdOn: DateTime!
|
|
50
54
|
id: String!
|
|
51
55
|
loan: MultiSourceLoan!
|
|
56
|
+
loanId: String!
|
|
52
57
|
notificationType: String!
|
|
53
58
|
readOn: DateTime
|
|
54
59
|
user: User!
|
|
@@ -67,9 +72,11 @@ type AuctionEdge {
|
|
|
67
72
|
|
|
68
73
|
type AuctionEndedNotification implements Node & Notification {
|
|
69
74
|
auction: Auction!
|
|
75
|
+
auctionId: String!
|
|
70
76
|
createdOn: DateTime!
|
|
71
77
|
id: String!
|
|
72
78
|
loan: MultiSourceLoan!
|
|
79
|
+
loanId: String!
|
|
73
80
|
notificationType: String!
|
|
74
81
|
readOn: DateTime
|
|
75
82
|
user: User!
|
|
@@ -87,9 +94,11 @@ input AuctionSortInput {
|
|
|
87
94
|
|
|
88
95
|
type AuctionStartedNotification implements Node & Notification {
|
|
89
96
|
auction: Auction!
|
|
97
|
+
auctionId: String!
|
|
90
98
|
createdOn: DateTime!
|
|
91
99
|
id: String!
|
|
92
100
|
loan: MultiSourceLoan!
|
|
101
|
+
loanId: String!
|
|
93
102
|
notificationType: String!
|
|
94
103
|
readOn: DateTime
|
|
95
104
|
user: User!
|
|
@@ -104,9 +113,11 @@ enum AuctionStatus {
|
|
|
104
113
|
|
|
105
114
|
type AuctionWonNotification implements Node & Notification {
|
|
106
115
|
auction: Auction!
|
|
116
|
+
auctionId: String!
|
|
107
117
|
createdOn: DateTime!
|
|
108
118
|
id: String!
|
|
109
119
|
loan: MultiSourceLoan!
|
|
120
|
+
loanId: String!
|
|
110
121
|
notificationType: String!
|
|
111
122
|
readOn: DateTime
|
|
112
123
|
user: User!
|
|
@@ -115,6 +126,7 @@ type AuctionWonNotification implements Node & Notification {
|
|
|
115
126
|
type Bid implements Node {
|
|
116
127
|
amount: BigInt!
|
|
117
128
|
auction: Auction!
|
|
129
|
+
auctionId: String!
|
|
118
130
|
bidder: Address!
|
|
119
131
|
id: String!
|
|
120
132
|
indexInBlock: Int!
|
|
@@ -160,6 +172,7 @@ type Collection implements Node {
|
|
|
160
172
|
externalUrl: String
|
|
161
173
|
id: String!
|
|
162
174
|
image: Asset
|
|
175
|
+
imageId: String
|
|
163
176
|
name: String
|
|
164
177
|
nftsCount: Int
|
|
165
178
|
royalties: [Royalty!]!
|
|
@@ -180,6 +193,15 @@ type CollectionEdge {
|
|
|
180
193
|
node: Collection!
|
|
181
194
|
}
|
|
182
195
|
|
|
196
|
+
type CollectionLoansData {
|
|
197
|
+
maxAprBps: Float!
|
|
198
|
+
maxPrincipalAmount: BigInt!
|
|
199
|
+
maxRemainingTime: BigInt!
|
|
200
|
+
minAprBps: Float!
|
|
201
|
+
minPrincipalAmount: BigInt!
|
|
202
|
+
minRemainingTime: BigInt!
|
|
203
|
+
}
|
|
204
|
+
|
|
183
205
|
type CollectionOffer implements Node & Offer {
|
|
184
206
|
aprBps: BigInt!
|
|
185
207
|
borrowerAddress: Address
|
|
@@ -188,7 +210,7 @@ type CollectionOffer implements Node & Offer {
|
|
|
188
210
|
consumedCapacity: BigInt!
|
|
189
211
|
contractAddress: Address!
|
|
190
212
|
createdDate: DateTime
|
|
191
|
-
currency: Currency
|
|
213
|
+
currency: Currency!
|
|
192
214
|
duration: BigInt!
|
|
193
215
|
expirationTime: BigInt!
|
|
194
216
|
fee: BigInt!
|
|
@@ -284,12 +306,17 @@ input CollectionSignedOfferInput {
|
|
|
284
306
|
}
|
|
285
307
|
|
|
286
308
|
enum CollectionSortField {
|
|
309
|
+
LISTING_COUNT
|
|
310
|
+
LOAN_COUNT
|
|
311
|
+
OUTSTANDING_PRINCIPAL
|
|
312
|
+
TOTAL_OUTSTANDING_PRINCIPAL
|
|
287
313
|
TOTAL_VOLUME
|
|
288
314
|
}
|
|
289
315
|
|
|
290
316
|
input CollectionSortInput {
|
|
291
317
|
field: CollectionSortField!
|
|
292
318
|
order: Ordering!
|
|
319
|
+
principalAddress: Address = null
|
|
293
320
|
}
|
|
294
321
|
|
|
295
322
|
type CollectionStatistics {
|
|
@@ -301,6 +328,8 @@ type CollectionStatistics {
|
|
|
301
328
|
nftsCount: Float
|
|
302
329
|
numberOfOffers(currencyAddress: Address!): Float!
|
|
303
330
|
numberOfPricedNfts: Int!
|
|
331
|
+
outstandingLoanCount: Int!
|
|
332
|
+
outstandingPrincipal(currencyAddress: Address!): BigInt!
|
|
304
333
|
percentageInOutstandingLoans: Float!
|
|
305
334
|
repaymentRate: Float!
|
|
306
335
|
totalLoanVolume(currencyAddress: Address!): BigInt!
|
|
@@ -311,6 +340,7 @@ type CollectionStatistics {
|
|
|
311
340
|
totalLoanVolume2m(currencyAddress: Address!): BigInt!
|
|
312
341
|
totalLoanVolume3m(currencyAddress: Address!): BigInt!
|
|
313
342
|
totalLoanVolume4m(currencyAddress: Address!): BigInt!
|
|
343
|
+
totalOutstandingPrincipal: BigInt!
|
|
314
344
|
totalVolume: Float
|
|
315
345
|
totalVolume1d: Float
|
|
316
346
|
totalVolume1m: Float
|
|
@@ -336,6 +366,7 @@ type ContractData implements Node {
|
|
|
336
366
|
createdDate: DateTime!
|
|
337
367
|
creatorAddress: Address
|
|
338
368
|
id: String!
|
|
369
|
+
standard: String!
|
|
339
370
|
}
|
|
340
371
|
|
|
341
372
|
type Currency implements Node {
|
|
@@ -392,6 +423,7 @@ type Listing implements Node {
|
|
|
392
423
|
createdDate: DateTime!
|
|
393
424
|
desiredDuration: Int
|
|
394
425
|
desiredPrincipalAddress: Address
|
|
426
|
+
expirationDate: DateTime!
|
|
395
427
|
id: String!
|
|
396
428
|
marketplaceName: MarketplaceEnum!
|
|
397
429
|
nft: NFT!
|
|
@@ -413,7 +445,7 @@ interface Loan implements Node {
|
|
|
413
445
|
activities: [LoanActivity!]!
|
|
414
446
|
address: Address!
|
|
415
447
|
borrowerAddress: Address!
|
|
416
|
-
currency: Currency
|
|
448
|
+
currency: Currency!
|
|
417
449
|
duration: BigInt!
|
|
418
450
|
id: String!
|
|
419
451
|
indexInBlock: Int!
|
|
@@ -423,6 +455,7 @@ interface Loan implements Node {
|
|
|
423
455
|
offer: Offer! @deprecated(reason: "Use offerIds to return loan offer ids instead.")
|
|
424
456
|
offerIds: [String!]!
|
|
425
457
|
principalAddress: Address!
|
|
458
|
+
protocolFee: BigInt!
|
|
426
459
|
repaidActivity: LoanRepaid
|
|
427
460
|
startTime: DateTime!
|
|
428
461
|
status: String!
|
|
@@ -466,8 +499,10 @@ enum LoanActivityType {
|
|
|
466
499
|
LOAN_FORECLOSED
|
|
467
500
|
LOAN_INITIATED
|
|
468
501
|
LOAN_REFINANCED
|
|
502
|
+
LOAN_REFINANCED_FROM_OFFERS
|
|
469
503
|
LOAN_REPAID
|
|
470
504
|
LOAN_SENT_TO_AUCTION
|
|
505
|
+
LOAN_TRANCHES_MERGED
|
|
471
506
|
}
|
|
472
507
|
|
|
473
508
|
type LoanAuctioned implements LoanActivity & Node {
|
|
@@ -484,9 +519,11 @@ type LoanAuctioned implements LoanActivity & Node {
|
|
|
484
519
|
|
|
485
520
|
type LoanAuctionedNotification implements Node & Notification {
|
|
486
521
|
auction: Auction!
|
|
522
|
+
auctionId: String!
|
|
487
523
|
createdOn: DateTime!
|
|
488
524
|
id: String!
|
|
489
525
|
loan: MultiSourceLoan!
|
|
526
|
+
loanId: String!
|
|
490
527
|
notificationType: String!
|
|
491
528
|
readOn: DateTime
|
|
492
529
|
user: User!
|
|
@@ -497,6 +534,7 @@ type LoanDefaultReminderNotification implements Node & Notification {
|
|
|
497
534
|
defaultsInHours: Int!
|
|
498
535
|
id: String!
|
|
499
536
|
loan: MultiSourceLoan!
|
|
537
|
+
loanId: String!
|
|
500
538
|
notificationType: String!
|
|
501
539
|
readOn: DateTime
|
|
502
540
|
user: User!
|
|
@@ -506,6 +544,7 @@ type LoanDefaultedNotification implements Node & Notification {
|
|
|
506
544
|
createdOn: DateTime!
|
|
507
545
|
id: String!
|
|
508
546
|
loan: MultiSourceLoan!
|
|
547
|
+
loanId: String!
|
|
509
548
|
notificationType: String!
|
|
510
549
|
readOn: DateTime
|
|
511
550
|
user: User!
|
|
@@ -525,8 +564,10 @@ type LoanExtendedNotification implements Node & Notification {
|
|
|
525
564
|
createdOn: DateTime!
|
|
526
565
|
id: String!
|
|
527
566
|
newHistory: MultiSourceLoanHistory!
|
|
567
|
+
newHistoryId: String!
|
|
528
568
|
notificationType: String!
|
|
529
569
|
previousHistory: MultiSourceLoanHistory!
|
|
570
|
+
previousHistoryId: String!
|
|
530
571
|
readOn: DateTime
|
|
531
572
|
user: User!
|
|
532
573
|
}
|
|
@@ -575,12 +616,24 @@ type LoanRefinanced implements LoanActivity & Node {
|
|
|
575
616
|
txHash: Hash!
|
|
576
617
|
}
|
|
577
618
|
|
|
619
|
+
type LoanRefinancedFromOffers implements LoanActivity & Node {
|
|
620
|
+
id: String!
|
|
621
|
+
indexInBlock: Int!
|
|
622
|
+
loan: Loan!
|
|
623
|
+
loanId: String!
|
|
624
|
+
multiSourceLoanHistory: MultiSourceLoanHistory
|
|
625
|
+
timestamp: DateTime!
|
|
626
|
+
txHash: Hash!
|
|
627
|
+
}
|
|
628
|
+
|
|
578
629
|
type LoanRefinancedNotification implements Node & Notification {
|
|
579
630
|
createdOn: DateTime!
|
|
580
631
|
id: String!
|
|
581
632
|
newHistory: MultiSourceLoanHistory!
|
|
633
|
+
newHistoryId: String!
|
|
582
634
|
notificationType: String!
|
|
583
635
|
previousHistory: MultiSourceLoanHistory!
|
|
636
|
+
previousHistoryId: String!
|
|
584
637
|
readOn: DateTime
|
|
585
638
|
user: User!
|
|
586
639
|
}
|
|
@@ -600,6 +653,7 @@ type LoanRepaidNotification implements Node & Notification {
|
|
|
600
653
|
createdOn: DateTime!
|
|
601
654
|
id: String!
|
|
602
655
|
loan: MultiSourceLoan!
|
|
656
|
+
loanId: String!
|
|
603
657
|
notificationType: String!
|
|
604
658
|
readOn: DateTime
|
|
605
659
|
user: User!
|
|
@@ -608,7 +662,7 @@ type LoanRepaidNotification implements Node & Notification {
|
|
|
608
662
|
type LoanSentToAuction implements LoanActivity & Node {
|
|
609
663
|
id: String!
|
|
610
664
|
indexInBlock: Int!
|
|
611
|
-
liquidatorAddress:
|
|
665
|
+
liquidatorAddress: String!
|
|
612
666
|
loan: Loan!
|
|
613
667
|
loanId: String!
|
|
614
668
|
multiSourceLoanHistory: MultiSourceLoanHistory
|
|
@@ -619,6 +673,7 @@ type LoanSentToAuction implements LoanActivity & Node {
|
|
|
619
673
|
enum LoanSortField {
|
|
620
674
|
APR_BPS
|
|
621
675
|
DURATION
|
|
676
|
+
EFFECTIVE_APR_BPS
|
|
622
677
|
EXPECTED_INTEREST
|
|
623
678
|
EXPIRATION_DATE
|
|
624
679
|
ORIGINATION_FEE
|
|
@@ -643,8 +698,30 @@ enum LoanStatusType {
|
|
|
643
698
|
LOAN_SENT_TO_AUCTION
|
|
644
699
|
}
|
|
645
700
|
|
|
701
|
+
type LoanTranchesMerged implements LoanActivity & Node {
|
|
702
|
+
id: String!
|
|
703
|
+
indexInBlock: Int!
|
|
704
|
+
loan: Loan!
|
|
705
|
+
loanId: String!
|
|
706
|
+
maxTrancheIndex: Int!
|
|
707
|
+
minTrancheIndex: Int!
|
|
708
|
+
multiSourceLoanHistory: MultiSourceLoanHistory
|
|
709
|
+
timestamp: DateTime!
|
|
710
|
+
txHash: Hash!
|
|
711
|
+
}
|
|
712
|
+
|
|
713
|
+
type LoansData {
|
|
714
|
+
maxAprBps: Float!
|
|
715
|
+
maxPrincipalAmount: BigInt!
|
|
716
|
+
maxRemainingTime: BigInt!
|
|
717
|
+
minAprBps: Float!
|
|
718
|
+
minPrincipalAmount: BigInt!
|
|
719
|
+
minRemainingTime: BigInt!
|
|
720
|
+
}
|
|
721
|
+
|
|
646
722
|
type LostSource implements Node {
|
|
647
723
|
accruedInterest: BigInt!
|
|
724
|
+
activityId: String!
|
|
648
725
|
aprBps: BigInt!
|
|
649
726
|
duration: BigInt!
|
|
650
727
|
id: String!
|
|
@@ -659,6 +736,7 @@ type LostSourceNotification implements Node & Notification {
|
|
|
659
736
|
createdOn: DateTime!
|
|
660
737
|
id: String!
|
|
661
738
|
lostSource: LostSource!
|
|
739
|
+
lostSourceId: String!
|
|
662
740
|
notificationType: String!
|
|
663
741
|
readOn: DateTime
|
|
664
742
|
user: User!
|
|
@@ -675,7 +753,7 @@ type MultiSourceLoan implements Loan & Node {
|
|
|
675
753
|
auction: Auction
|
|
676
754
|
blendedAprBps: Float!
|
|
677
755
|
borrowerAddress: Address!
|
|
678
|
-
currency: Currency
|
|
756
|
+
currency: Currency!
|
|
679
757
|
duration: BigInt!
|
|
680
758
|
id: String!
|
|
681
759
|
indexInBlock: Int!
|
|
@@ -687,12 +765,14 @@ type MultiSourceLoan implements Loan & Node {
|
|
|
687
765
|
offerIds: [String!]!
|
|
688
766
|
principalAddress: Address!
|
|
689
767
|
principalAmount: BigInt!
|
|
768
|
+
protocolFee: BigInt!
|
|
690
769
|
renegotiationRequest: RenegotiationRequest
|
|
691
770
|
repaidActivity: LoanRepaid
|
|
692
771
|
sources: [Source!]!
|
|
693
772
|
startTime: DateTime!
|
|
694
773
|
status: String!
|
|
695
774
|
timestamp: DateTime!
|
|
775
|
+
topUpRequest: TopUpRequest
|
|
696
776
|
totalOriginationFee: BigInt!
|
|
697
777
|
txHash: Hash!
|
|
698
778
|
}
|
|
@@ -710,6 +790,7 @@ type MultiSourceLoanEdge {
|
|
|
710
790
|
|
|
711
791
|
type MultiSourceLoanHistory implements Node {
|
|
712
792
|
activity: LoanActivity!
|
|
793
|
+
activityId: String!
|
|
713
794
|
borrowerAddress: String!
|
|
714
795
|
duration: BigInt!
|
|
715
796
|
id: String!
|
|
@@ -724,31 +805,34 @@ type Mutation {
|
|
|
724
805
|
addListingsOfNftsFromUser(desiredDuration: Int = null, desiredPrincipalAddress: Address = null): Void
|
|
725
806
|
addOrUpdateListing(desiredDuration: Int = null, desiredPrincipalAddress: Address = null, nftId: Int!): Listing!
|
|
726
807
|
addOrUpdateRenegotiationRequest(desiredAprBps: BigInt!, desiredDuration: BigInt!, desiredPrincipalAmount: BigInt!, loanId: String!): RenegotiationRequest!
|
|
808
|
+
addOrUpdateTopUpRequest(desiredAprBps: BigInt!, desiredTopUp: BigInt!, loanId: String!): TopUpRequest!
|
|
727
809
|
generateCollectionOfferToBeSigned(offerInput: CollectionOfferInput!): CollectionOffer!
|
|
728
810
|
generateRenegotiationOfferToBeSigned(renegotiationInput: RenegotiationOfferInput!): Renegotiation!
|
|
729
811
|
generateSingleNftOfferToBeSigned(offerInput: SingleNFTOfferInput!): SingleNFTOffer!
|
|
730
812
|
hideAllOffers(contractAddress: Address!, minOfferId: String!): [Offer!]!
|
|
731
813
|
hideOffer(contractAddress: Address!, offerId: String!): Offer!
|
|
732
|
-
hideRenegotiation(contractAddress: Address = "
|
|
814
|
+
hideRenegotiation(contractAddress: Address = "0xca5a494ca20483e21ec1e41fe1d9461da77595bd", renegotiationId: String!): Renegotiation!
|
|
733
815
|
hideSaleOffer(saleOfferId: String!): SingleNFTOrder!
|
|
734
816
|
markNotificationIdsAsRead(ids: [Int!]): Void
|
|
735
817
|
markNotificationsAsRead: Void
|
|
736
818
|
removeListing(nftId: Int!): Listing!
|
|
737
819
|
removeListingsOfNftsFromUser: Void
|
|
738
820
|
removeRenegotiationRequest(loanId: String!): RenegotiationRequest!
|
|
821
|
+
removeTopUpRequest(loanId: String!): TopUpRequest!
|
|
739
822
|
saveRenegotiationSignedOffer(signedRenegotiationInput: SignedRenegotiationOfferInput!): Renegotiation!
|
|
740
823
|
saveSignedCollectionOffer(signedOfferInput: CollectionSignedOfferInput!): CollectionOffer!
|
|
741
824
|
saveSignedSaleOffer(signedOfferInput: SignedOrderInput!): SingleNFTOrder!
|
|
742
825
|
saveSignedSingleNftOffer(signedOfferInput: SingleNFTSignedOfferInput!): SingleNFTOffer!
|
|
743
826
|
setReferral(referrerId: Int!): Void
|
|
744
827
|
showOffer(contractAddress: Address!, offerId: String!): Offer!
|
|
745
|
-
showRenegotiation(contractAddress: Address = "
|
|
828
|
+
showRenegotiation(contractAddress: Address = "0xca5a494ca20483e21ec1e41fe1d9461da77595bd", renegotiationId: String!): Renegotiation!
|
|
746
829
|
showSaleOffer(saleOfferId: String!): SingleNFTOrder!
|
|
747
830
|
}
|
|
748
831
|
|
|
749
832
|
type NFT implements Node {
|
|
750
833
|
activeLoan: Loan
|
|
751
834
|
collection: Collection
|
|
835
|
+
collectionId: Int
|
|
752
836
|
createdDate: DateTime!
|
|
753
837
|
description: String
|
|
754
838
|
id: String!
|
|
@@ -786,6 +870,7 @@ type NewOfferNotification implements Node & Notification {
|
|
|
786
870
|
id: String!
|
|
787
871
|
notificationType: String!
|
|
788
872
|
offer: Offer!
|
|
873
|
+
offerId: String!
|
|
789
874
|
readOn: DateTime
|
|
790
875
|
user: User!
|
|
791
876
|
}
|
|
@@ -794,9 +879,11 @@ type NewRenegotiationOfferNotification implements Node & Notification {
|
|
|
794
879
|
createdOn: DateTime!
|
|
795
880
|
id: String!
|
|
796
881
|
loan: MultiSourceLoan!
|
|
882
|
+
loanId: String!
|
|
797
883
|
notificationType: String!
|
|
798
884
|
readOn: DateTime
|
|
799
885
|
renegotiation: Renegotiation!
|
|
886
|
+
renegotiationId: String!
|
|
800
887
|
user: User!
|
|
801
888
|
}
|
|
802
889
|
|
|
@@ -875,7 +962,7 @@ interface Offer implements Node {
|
|
|
875
962
|
consumedCapacity: BigInt!
|
|
876
963
|
contractAddress: Address!
|
|
877
964
|
createdDate: DateTime
|
|
878
|
-
currency: Currency
|
|
965
|
+
currency: Currency!
|
|
879
966
|
duration: BigInt!
|
|
880
967
|
expirationTime: BigInt!
|
|
881
968
|
fee: BigInt!
|
|
@@ -904,8 +991,10 @@ type OfferAcceptedNotification implements Node & Notification {
|
|
|
904
991
|
createdOn: DateTime!
|
|
905
992
|
id: String!
|
|
906
993
|
loan: MultiSourceLoan!
|
|
994
|
+
loanId: String!
|
|
907
995
|
notificationType: String!
|
|
908
996
|
offer: Offer!
|
|
997
|
+
offerId: String!
|
|
909
998
|
readOn: DateTime
|
|
910
999
|
user: User!
|
|
911
1000
|
}
|
|
@@ -951,7 +1040,9 @@ enum OffersSortField {
|
|
|
951
1040
|
CREATED_DATE
|
|
952
1041
|
DAILY_INTEREST
|
|
953
1042
|
DURATION
|
|
1043
|
+
EFFECTIVE_APR_BPS
|
|
954
1044
|
EXPIRATION
|
|
1045
|
+
FEE
|
|
955
1046
|
MAX_PRINCIPAL
|
|
956
1047
|
NET_INTEREST
|
|
957
1048
|
NET_PRINCIPAL
|
|
@@ -965,6 +1056,7 @@ input OffersSortInput {
|
|
|
965
1056
|
durationOfInterest: Int = null
|
|
966
1057
|
field: OffersSortField!
|
|
967
1058
|
order: Ordering!
|
|
1059
|
+
principalOfInterest: BigInt = null
|
|
968
1060
|
}
|
|
969
1061
|
|
|
970
1062
|
interface Order implements Activity & Node {
|
|
@@ -1007,14 +1099,25 @@ enum Ordering {
|
|
|
1007
1099
|
|
|
1008
1100
|
type OutbidNotification implements Node & Notification {
|
|
1009
1101
|
auction: Auction!
|
|
1102
|
+
auctionId: String!
|
|
1010
1103
|
createdOn: DateTime!
|
|
1011
1104
|
id: String!
|
|
1012
1105
|
loan: MultiSourceLoan!
|
|
1106
|
+
loanId: String!
|
|
1013
1107
|
newBid: Bid!
|
|
1108
|
+
newBidId: Int!
|
|
1014
1109
|
notificationType: String!
|
|
1015
1110
|
readOn: DateTime
|
|
1016
1111
|
user: User!
|
|
1017
1112
|
userBid: Bid!
|
|
1113
|
+
userBidId: Int!
|
|
1114
|
+
}
|
|
1115
|
+
|
|
1116
|
+
type OutstandingLoanStatistics {
|
|
1117
|
+
loansData(currencyAddress: Address): LoansData!
|
|
1118
|
+
outstandingLoanCount: Int!
|
|
1119
|
+
outstandingPrincipal(currencyAddress: Address!): BigInt!
|
|
1120
|
+
totalOutstandingPrincipal: BigInt!
|
|
1018
1121
|
}
|
|
1019
1122
|
|
|
1020
1123
|
type PageInfo {
|
|
@@ -1046,11 +1149,13 @@ type PointActivityEdge {
|
|
|
1046
1149
|
|
|
1047
1150
|
type Query {
|
|
1048
1151
|
getCollectionBySlug(slug: String!): Collection
|
|
1152
|
+
getCollectionLoansData(collectionId: Int!, currencyAddress: Address): CollectionLoansData!
|
|
1049
1153
|
getCollectionsByContractAddress(contractAddress: Address!): [Collection!]!
|
|
1050
1154
|
getListingById(listingId: Int!): Listing
|
|
1051
1155
|
getLoanById(address: String!, loanId: Int!): Loan
|
|
1052
1156
|
getNftByContractAddressAndTokenId(contractAddress: Address!, tokenId: BigInt!): NFT
|
|
1053
1157
|
getNftBySlugAndTokenId(slug: String!, tokenId: BigInt!): NFT
|
|
1158
|
+
getOutstandingLoanStatistics: OutstandingLoanStatistics!
|
|
1054
1159
|
getPointsFromReferrals: Int!
|
|
1055
1160
|
getReferredWallets: Int!
|
|
1056
1161
|
getUserPointActivities(after: String, first: Int = 10): PointActivityConnection!
|
|
@@ -1058,21 +1163,37 @@ type Query {
|
|
|
1058
1163
|
listAuctions(after: String, currencyAddress: Address = null, first: Int = 10, sortBy: [AuctionSortInput!] = null, statuses: [AuctionStatus!] = null): AuctionConnection!
|
|
1059
1164
|
listBestBidsForNft(currencyAddress: String!, nftId: Int!): [Order!]!
|
|
1060
1165
|
listBids(after: String, auctionId: String = null, bidders: [String!] = null, currencyAddress: Address = null, first: Int = 10, onlyLatest: Boolean! = false, sortBy: [BidSortInput!] = null): BidConnection!
|
|
1061
|
-
listCollections(after: String, collections: [Int!] = null, first: Int = 10, searchTerm: String = null, sortBy: [CollectionSortInput!] = null): CollectionConnection!
|
|
1166
|
+
listCollections(after: String, collections: [Int!] = null, excludeGondiUserVault: Boolean = false, first: Int = 10, searchTerm: String = null, sortBy: [CollectionSortInput!] = null, standards: [TokenStandardType!] = null, withListings: Boolean = false, withLoans: Boolean = false): CollectionConnection!
|
|
1062
1167
|
listCollectionsWithListings(after: String, collections: [Int!] = null, first: Int! = 10, searchTerm: String = null): CollectionConnection!
|
|
1063
1168
|
listCollectionsWithLoans(after: String, collections: [Int!] = null, first: Int! = 10, searchTerm: String = null): CollectionConnection!
|
|
1064
1169
|
listListings(after: String, collectionIds: [Int!] = null, currencyAddress: Address = null, first: Int = 10, marketplaceNames: [MarketplaceEnum!] = null, searchTerm: String = null, userFilter: UserFilter = null, withLoans: Boolean = false): ListingConnection!
|
|
1065
1170
|
listLoanActivities(after: String, first: Int! = 10, loanId: String = null, sortBy: [LoanActivitySortInput!] = null, types: [LoanActivityType!] = null): LoanActivityConnection!
|
|
1066
|
-
listLoans(after: String, borrowerAddress: String = null, collections: [Int!] = null, contractAddresses: [Address!] = null, currencyAddress: Address = null, excludeOwn: Boolean = null, first: Int! = 10, hideLocked: Boolean = null, nfts: [Int!] = null, orderByStatuses: Boolean = true, sortBy: [LoanSortInput!] = null, statuses: [LoanStatusType!] = null, terms: TermsFilter = null): MultiSourceLoanConnection!
|
|
1171
|
+
listLoans(after: String, borrowerAddress: String = null, collections: [Int!] = null, contractAddresses: [Address!] = null, currencyAddress: Address = null, excludeOwn: Boolean = null, first: Int! = 10, hideLocked: Boolean = null, nfts: [Int!] = null, orderByStatuses: Boolean = true, sortBy: [LoanSortInput!] = null, statuses: [LoanStatusType!] = null, terms: TermsFilter = null, withRenegRequestOnly: Boolean! = false, withTopUpRequestOnly: Boolean! = false): MultiSourceLoanConnection!
|
|
1067
1172
|
listNftDelegations(after: String, contractAddress: Address = null, first: Int! = 20, nftId: Int!): DelegationConnection!
|
|
1068
1173
|
listNftOffersAndRenegotiations(after: String, collections: [Int!] = null, currencyAddress: Address = null, first: Int = null, hidden: Boolean = null, lenders: [String!] = null, sortBy: OffersSortInput = null, statuses: [OfferStatus!] = null, terms: TermsFilter = null): SingleNFTOfferRenegotiationConnection!
|
|
1069
1174
|
listNftsFromCollections(after: String, collections: [Int!]!, first: Int = 10, onlyListed: Boolean = null, searchTerm: String = null, traitRanges: [TraitRangeOptionsInput!] = null, traits: [TraitKeyValueOptionsInput!] = null): NFTConnection!
|
|
1070
|
-
listNftsFromUser(after: String, first: Int = 10, searchTerm: String = null, sortBy: [NftSortInput!] = null, withLoans: Boolean = false, withNoWraps: Boolean = false): NFTConnection!
|
|
1175
|
+
listNftsFromUser(after: String, first: Int = 10, searchTerm: String = null, sortBy: [NftSortInput!] = null, standards: [TokenStandardType!] = null, withLoans: Boolean = false, withNoWraps: Boolean = false): NFTConnection!
|
|
1071
1176
|
listNotifications(after: String, first: Int = 50, notificationTypes: [NotificationType!] = null, onlyRead: Boolean! = false, onlyUnread: Boolean! = false): NotificationConnection!
|
|
1072
1177
|
listOffers(after: String, borrowerAddress: String = null, collections: [Int!] = null, contractAddress: Address = null, currencyAddress: Address = null, first: Int = 10, hidden: Boolean = null, lenders: [String!] = null, nfts: [Int!] = null, onlyCollectionOffers: Boolean = false, onlySingleNftOffers: Boolean = false, sortBy: [OffersSortInput!] = null, statuses: [OfferStatus!] = null, terms: TermsFilter = null, worseOffers: Boolean = true): OfferConnection!
|
|
1073
|
-
listRenegotiations(after: String, collections: [Int!] = null, first: Int = 10, hidden: Boolean = null, loanId: String = null, sortBy: [OffersSortInput!] = null, statuses: [OfferStatus!] = null, terms: RefinanceTermsFilter = null): RenegotiationConnection!
|
|
1178
|
+
listRenegotiations(after: String, collections: [Int!] = null, first: Int = 10, hidden: Boolean = null, isAddNewTranche: Boolean = null, loanId: String = null, sortBy: [OffersSortInput!] = null, statuses: [OfferStatus!] = null, terms: RefinanceTermsFilter = null): RenegotiationConnection!
|
|
1074
1179
|
listSaleOffers(after: String, bidder: [String!] = null, first: Int = 10): OrderConnection!
|
|
1075
|
-
listSources(
|
|
1180
|
+
listSources(
|
|
1181
|
+
after: String
|
|
1182
|
+
collections: [Int!] = null
|
|
1183
|
+
contractAddresses: [Address!] = null
|
|
1184
|
+
currencyAddress: Address = null
|
|
1185
|
+
|
|
1186
|
+
"""Only considered if include_lost is False | None."""
|
|
1187
|
+
excludeOwn: Boolean = null
|
|
1188
|
+
first: Int! = 10
|
|
1189
|
+
hideLocked: Boolean = null
|
|
1190
|
+
includeLost: Boolean = null
|
|
1191
|
+
lenders: [String!] = null
|
|
1192
|
+
loanPrincipal: Interval = null
|
|
1193
|
+
sortBy: [SourceSortInput!] = null
|
|
1194
|
+
statuses: [LoanStatusType!] = null
|
|
1195
|
+
terms: TermsFilter = null
|
|
1196
|
+
): SourceLostSourceConnection!
|
|
1076
1197
|
listUserSaleOffers(after: String, first: Int = 10): OrderConnection!
|
|
1077
1198
|
me: User
|
|
1078
1199
|
}
|
|
@@ -1100,6 +1221,7 @@ type Renegotiation implements Node {
|
|
|
1100
1221
|
feeAmount: BigInt!
|
|
1101
1222
|
hidden: Boolean
|
|
1102
1223
|
id: String!
|
|
1224
|
+
isAddNewTranche: Boolean!
|
|
1103
1225
|
lenderAddress: Address
|
|
1104
1226
|
loan: Loan!
|
|
1105
1227
|
loanAddress: Address!
|
|
@@ -1133,6 +1255,7 @@ input RenegotiationOfferInput {
|
|
|
1133
1255
|
duration: BigInt!
|
|
1134
1256
|
expirationTime: BigInt!
|
|
1135
1257
|
feeAmount: BigInt!
|
|
1258
|
+
isAddNewTranche: Boolean = null
|
|
1136
1259
|
lenderAddress: Address!
|
|
1137
1260
|
loanId: String!
|
|
1138
1261
|
principalAmount: BigInt!
|
|
@@ -1173,6 +1296,7 @@ type Sale implements Activity & Node {
|
|
|
1173
1296
|
id: String!
|
|
1174
1297
|
nft: NFT!
|
|
1175
1298
|
order: Order!
|
|
1299
|
+
orderId: String!
|
|
1176
1300
|
taker: String!
|
|
1177
1301
|
timestamp: DateTime!
|
|
1178
1302
|
txHash: Hash
|
|
@@ -1208,6 +1332,7 @@ input SignedRenegotiationOfferInput {
|
|
|
1208
1332
|
duration: BigInt!
|
|
1209
1333
|
expirationTime: BigInt!
|
|
1210
1334
|
feeAmount: BigInt!
|
|
1335
|
+
isAddNewTranche: Boolean = null
|
|
1211
1336
|
lenderAddress: Address!
|
|
1212
1337
|
loanId: String!
|
|
1213
1338
|
offerHash: Hash!
|
|
@@ -1228,7 +1353,7 @@ type SingleNFTOffer implements Node & Offer {
|
|
|
1228
1353
|
consumedCapacity: BigInt!
|
|
1229
1354
|
contractAddress: Address!
|
|
1230
1355
|
createdDate: DateTime
|
|
1231
|
-
currency: Currency
|
|
1356
|
+
currency: Currency!
|
|
1232
1357
|
duration: BigInt!
|
|
1233
1358
|
expirationTime: BigInt!
|
|
1234
1359
|
fee: BigInt!
|
|
@@ -1343,6 +1468,7 @@ type Source implements Node {
|
|
|
1343
1468
|
loanReferenceId: String!
|
|
1344
1469
|
originationFee: BigInt!
|
|
1345
1470
|
principalAmount: BigInt!
|
|
1471
|
+
refinanceNetAprBps: BigInt!
|
|
1346
1472
|
seniorPrincipalAmount: BigInt
|
|
1347
1473
|
startTime: DateTime!
|
|
1348
1474
|
}
|
|
@@ -1381,6 +1507,7 @@ enum SourceSortField {
|
|
|
1381
1507
|
EARNED_INTEREST
|
|
1382
1508
|
ORIGINATION_FEE
|
|
1383
1509
|
PRINCIPAL_AMOUNT
|
|
1510
|
+
REFINANCE_NET_APR_BPS
|
|
1384
1511
|
START_TIME
|
|
1385
1512
|
}
|
|
1386
1513
|
|
|
@@ -1401,6 +1528,32 @@ input TermsFilter {
|
|
|
1401
1528
|
maxPrincipal: Interval = null
|
|
1402
1529
|
netPrincipal: Interval = null
|
|
1403
1530
|
principal: Interval = null
|
|
1531
|
+
remainingTime: Interval = null
|
|
1532
|
+
}
|
|
1533
|
+
|
|
1534
|
+
enum TokenStandardType {
|
|
1535
|
+
ERC721
|
|
1536
|
+
ERC1155
|
|
1537
|
+
OLD_ERC721
|
|
1538
|
+
}
|
|
1539
|
+
|
|
1540
|
+
type TopUpRequest implements Node {
|
|
1541
|
+
desiredAprBps: BigInt!
|
|
1542
|
+
desiredTopUp: BigInt!
|
|
1543
|
+
id: String!
|
|
1544
|
+
loanId: String!
|
|
1545
|
+
}
|
|
1546
|
+
|
|
1547
|
+
type TopUpRequestedNotification implements Node & Notification {
|
|
1548
|
+
aprBps: BigInt!
|
|
1549
|
+
createdOn: DateTime!
|
|
1550
|
+
id: String!
|
|
1551
|
+
loan: MultiSourceLoan!
|
|
1552
|
+
loanId: String!
|
|
1553
|
+
notificationType: String!
|
|
1554
|
+
readOn: DateTime
|
|
1555
|
+
topUp: BigInt!
|
|
1556
|
+
user: User!
|
|
1404
1557
|
}
|
|
1405
1558
|
|
|
1406
1559
|
type Trait {
|
|
@@ -1425,6 +1578,7 @@ type UnderfundedOfferNotification implements Node & Notification {
|
|
|
1425
1578
|
id: String!
|
|
1426
1579
|
notificationType: String!
|
|
1427
1580
|
offer: Offer!
|
|
1581
|
+
offerId: String!
|
|
1428
1582
|
readOn: DateTime
|
|
1429
1583
|
user: User!
|
|
1430
1584
|
}
|
|
@@ -1476,19 +1630,19 @@ type UserStatistics {
|
|
|
1476
1630
|
}
|
|
1477
1631
|
|
|
1478
1632
|
"""Represents NULL values"""
|
|
1479
|
-
scalar Void`;var
|
|
1633
|
+
scalar Void`;var At=l(()=>`${oe()}/lending/graphql`,"apiUrl"),St=Ft(Ce);Object.assign(BigInt.prototype,{toJSON(){return this.toString()}});var Mt={datetime:{serialize:p=>p instanceof Date?p.toISOString():null,parseValue:p=>typeof p=="string"?new Date(p):p instanceof Date?p:null},BigInt:{serialize:p=>typeof p=="bigint"?String(p):null,parseValue:p=>typeof p=="string"?BigInt(p):null},DateTime:{serialize:p=>p instanceof Date?p.toISOString():null,parseValue:p=>typeof p=="string"?new Date(p):p instanceof Date?p:null}},vt=l(p=>gt(async e=>await p.authorizeRequest(e)),"authLink"),xt=Pe.from([It({schema:St,typesMap:Mt}),ft({uri:({operationName:p})=>`${At()}?operation=${encodeURIComponent(p)}`})]),Re=l(p=>{let e=new q({wallet:p});return new Tt({link:Pe.from([vt(e),xt]),defaultOptions:{query:{errorPolicy:"all",fetchPolicy:"no-cache"},mutate:{errorPolicy:"all",fetchPolicy:"no-cache"},watchQuery:{fetchPolicy:"no-cache",nextFetchPolicy:"no-cache",errorPolicy:"ignore"}},cache:new bt({})})},"apolloClient");import b from"graphql-tag";var Ee=(r=>(r.LoanAuctioned="LOAN_AUCTIONED",r.LoanDefaulted="LOAN_DEFAULTED",r.LoanForeclosed="LOAN_FORECLOSED",r.LoanInitiated="LOAN_INITIATED",r.LoanRepaid="LOAN_REPAID",r.LoanSentToAuction="LOAN_SENT_TO_AUCTION",r))(Ee||{}),Te=(t=>(t.Gondi="GONDI",t.Nftfi="NFTFI",t))(Te||{});var Be=(r=>(r.Active="ACTIVE",r.Cancelled="CANCELLED",r.Executed="EXECUTED",r.Expired="EXPIRED",r.Inactive="INACTIVE",r.Outperformed="OUTPERFORMED",r))(Be||{}),fe=(T=>(T.AprBps="APR_BPS",T.CreatedDate="CREATED_DATE",T.DailyInterest="DAILY_INTEREST",T.Duration="DURATION",T.EffectiveAprBps="EFFECTIVE_APR_BPS",T.Expiration="EXPIRATION",T.Fee="FEE",T.MaxPrincipal="MAX_PRINCIPAL",T.NetInterest="NET_INTEREST",T.NetPrincipal="NET_PRINCIPAL",T.PrincipalAmount="PRINCIPAL_AMOUNT",T.Repayment="REPAYMENT",T.Status="STATUS",T.TotalInterest="TOTAL_INTEREST",T))(fe||{}),be=(t=>(t.Asc="ASC",t.Desc="DESC",t))(be||{});var ke=b`
|
|
1480
1634
|
fragment CurrencyInfo on Currency {
|
|
1481
1635
|
address
|
|
1482
1636
|
decimals
|
|
1483
1637
|
}
|
|
1484
|
-
`,Ne=
|
|
1638
|
+
`,Ne=b`
|
|
1485
1639
|
fragment CurrencyAmountInfo on CurrencyAmount {
|
|
1486
1640
|
amount
|
|
1487
1641
|
currency {
|
|
1488
1642
|
...CurrencyInfo
|
|
1489
1643
|
}
|
|
1490
1644
|
}
|
|
1491
|
-
${ke}`,Gn=
|
|
1645
|
+
${ke}`,Gn=b`
|
|
1492
1646
|
fragment SaleOfferInfo on SingleNFTOrder {
|
|
1493
1647
|
id
|
|
1494
1648
|
netAmount
|
|
@@ -1504,19 +1658,19 @@ scalar Void`;var Ft=l(()=>`${se()}/lending/graphql`,"apiUrl"),St=At(Le);Object.a
|
|
|
1504
1658
|
currencyAddress
|
|
1505
1659
|
nonce
|
|
1506
1660
|
}
|
|
1507
|
-
`,wt=
|
|
1661
|
+
`,wt=b`
|
|
1508
1662
|
mutation listNft($nftId: Int!) {
|
|
1509
1663
|
addOrUpdateListing(nftId: $nftId) {
|
|
1510
1664
|
id
|
|
1511
1665
|
}
|
|
1512
1666
|
}
|
|
1513
|
-
`,Ot=
|
|
1667
|
+
`,Ot=b`
|
|
1514
1668
|
mutation unlistNft($nftId: Int!) {
|
|
1515
1669
|
removeListing(nftId: $nftId) {
|
|
1516
1670
|
id
|
|
1517
1671
|
}
|
|
1518
1672
|
}
|
|
1519
|
-
`,ht=
|
|
1673
|
+
`,ht=b`
|
|
1520
1674
|
mutation generateCollectionOfferHash($offerInput: CollectionOfferInput!) {
|
|
1521
1675
|
offer: generateCollectionOfferToBeSigned(offerInput: $offerInput) {
|
|
1522
1676
|
offerHash
|
|
@@ -1535,7 +1689,7 @@ scalar Void`;var Ft=l(()=>`${se()}/lending/graphql`,"apiUrl"),St=At(Le);Object.a
|
|
|
1535
1689
|
}
|
|
1536
1690
|
}
|
|
1537
1691
|
}
|
|
1538
|
-
`,_t=
|
|
1692
|
+
`,_t=b`
|
|
1539
1693
|
mutation saveCollectionOffer($offer: CollectionSignedOfferInput!) {
|
|
1540
1694
|
offer: saveSignedCollectionOffer(signedOfferInput: $offer) {
|
|
1541
1695
|
id
|
|
@@ -1547,13 +1701,13 @@ scalar Void`;var Ft=l(()=>`${se()}/lending/graphql`,"apiUrl"),St=At(Le);Object.a
|
|
|
1547
1701
|
}
|
|
1548
1702
|
}
|
|
1549
1703
|
}
|
|
1550
|
-
`,
|
|
1704
|
+
`,Lt=b`
|
|
1551
1705
|
mutation hideOffer($contract: Address!, $id: String!) {
|
|
1552
1706
|
hideOffer(contractAddress: $contract, offerId: $id) {
|
|
1553
1707
|
id
|
|
1554
1708
|
}
|
|
1555
1709
|
}
|
|
1556
|
-
`,
|
|
1710
|
+
`,Ct=b`
|
|
1557
1711
|
mutation generateSingleNftOfferHash($offerInput: SingleNFTOfferInput!) {
|
|
1558
1712
|
offer: generateSingleNftOfferToBeSigned(offerInput: $offerInput) {
|
|
1559
1713
|
offerHash
|
|
@@ -1575,7 +1729,7 @@ scalar Void`;var Ft=l(()=>`${se()}/lending/graphql`,"apiUrl"),St=At(Le);Object.a
|
|
|
1575
1729
|
}
|
|
1576
1730
|
}
|
|
1577
1731
|
}
|
|
1578
|
-
`,Pt=
|
|
1732
|
+
`,Pt=b`
|
|
1579
1733
|
mutation saveSingleNftOffer($offer: SingleNFTSignedOfferInput!) {
|
|
1580
1734
|
offer: saveSignedSingleNftOffer(signedOfferInput: $offer) {
|
|
1581
1735
|
id
|
|
@@ -1590,13 +1744,13 @@ scalar Void`;var Ft=l(()=>`${se()}/lending/graphql`,"apiUrl"),St=At(Le);Object.a
|
|
|
1590
1744
|
}
|
|
1591
1745
|
}
|
|
1592
1746
|
}
|
|
1593
|
-
`,Rt=
|
|
1747
|
+
`,Rt=b`
|
|
1594
1748
|
mutation unhideOffer($contract: Address!, $id: String!) {
|
|
1595
1749
|
showOffer(contractAddress: $contract, offerId: $id) {
|
|
1596
1750
|
id
|
|
1597
1751
|
}
|
|
1598
1752
|
}
|
|
1599
|
-
`,Et=
|
|
1753
|
+
`,Et=b`
|
|
1600
1754
|
mutation generateRenegotiationOfferHash($renegotiationInput: RenegotiationOfferInput!) {
|
|
1601
1755
|
offer: generateRenegotiationOfferToBeSigned(
|
|
1602
1756
|
renegotiationInput: $renegotiationInput
|
|
@@ -1616,32 +1770,32 @@ scalar Void`;var Ft=l(()=>`${se()}/lending/graphql`,"apiUrl"),St=At(Le);Object.a
|
|
|
1616
1770
|
}
|
|
1617
1771
|
}
|
|
1618
1772
|
}
|
|
1619
|
-
`,Bt=
|
|
1773
|
+
`,Bt=b`
|
|
1620
1774
|
mutation hideRenegotiationOffer($id: String!, $contractAddress: Address!) {
|
|
1621
1775
|
hideRenegotiation(renegotiationId: $id, contractAddress: $contractAddress) {
|
|
1622
1776
|
id
|
|
1623
1777
|
}
|
|
1624
1778
|
}
|
|
1625
|
-
`,kt=
|
|
1779
|
+
`,kt=b`
|
|
1626
1780
|
mutation saveRenegotiationOffer($offer: SignedRenegotiationOfferInput!) {
|
|
1627
1781
|
offer: saveRenegotiationSignedOffer(signedRenegotiationInput: $offer) {
|
|
1628
1782
|
id
|
|
1629
1783
|
status
|
|
1630
1784
|
}
|
|
1631
1785
|
}
|
|
1632
|
-
`,Nt=
|
|
1786
|
+
`,Nt=b`
|
|
1633
1787
|
mutation unhideRenegotiationOffer($id: String!, $contractAddress: Address!) {
|
|
1634
1788
|
showRenegotiation(renegotiationId: $id, contractAddress: $contractAddress) {
|
|
1635
1789
|
id
|
|
1636
1790
|
}
|
|
1637
1791
|
}
|
|
1638
|
-
`,Dt=
|
|
1792
|
+
`,Dt=b`
|
|
1639
1793
|
mutation hideSaleOffer($id: String!) {
|
|
1640
1794
|
hideSaleOffer(saleOfferId: $id) {
|
|
1641
1795
|
id
|
|
1642
1796
|
}
|
|
1643
1797
|
}
|
|
1644
|
-
`,Vt=
|
|
1798
|
+
`,Vt=b`
|
|
1645
1799
|
query listBestBidsForNft($nftId: Int!, $currencyAddress: String!) {
|
|
1646
1800
|
bids: listBestBidsForNft(nftId: $nftId, currencyAddress: $currencyAddress) {
|
|
1647
1801
|
id
|
|
@@ -1659,20 +1813,20 @@ scalar Void`;var Ft=l(()=>`${se()}/lending/graphql`,"apiUrl"),St=At(Le);Object.a
|
|
|
1659
1813
|
nonce
|
|
1660
1814
|
}
|
|
1661
1815
|
}
|
|
1662
|
-
`,Ht=
|
|
1816
|
+
`,Ht=b`
|
|
1663
1817
|
mutation saveSignedSaleOffer($offer: SignedOrderInput!) {
|
|
1664
1818
|
offer: saveSignedSaleOffer(signedOfferInput: $offer) {
|
|
1665
1819
|
id
|
|
1666
1820
|
status
|
|
1667
1821
|
}
|
|
1668
1822
|
}
|
|
1669
|
-
`,Ut=
|
|
1823
|
+
`,Ut=b`
|
|
1670
1824
|
mutation unhideSaleOffer($id: String!) {
|
|
1671
1825
|
showSaleOffer(saleOfferId: $id) {
|
|
1672
1826
|
id
|
|
1673
1827
|
}
|
|
1674
1828
|
}
|
|
1675
|
-
`,qt=
|
|
1829
|
+
`,qt=b`
|
|
1676
1830
|
query collections($currency: Address!, $after: String) {
|
|
1677
1831
|
collections: listCollections(after: $after) {
|
|
1678
1832
|
pageInfo {
|
|
@@ -1735,19 +1889,19 @@ scalar Void`;var Ft=l(()=>`${se()}/lending/graphql`,"apiUrl"),St=At(Le);Object.a
|
|
|
1735
1889
|
}
|
|
1736
1890
|
}
|
|
1737
1891
|
}
|
|
1738
|
-
${Ne}`,Kt=
|
|
1892
|
+
${Ne}`,Kt=b`
|
|
1739
1893
|
query collectionsIdByContractAddress($contractAddress: Address!) {
|
|
1740
1894
|
collections: getCollectionsByContractAddress(contractAddress: $contractAddress) {
|
|
1741
1895
|
id
|
|
1742
1896
|
}
|
|
1743
1897
|
}
|
|
1744
|
-
`,Wt=
|
|
1898
|
+
`,Wt=b`
|
|
1745
1899
|
query collectionIdBySlug($slug: String!) {
|
|
1746
1900
|
collection: getCollectionBySlug(slug: $slug) {
|
|
1747
1901
|
id
|
|
1748
1902
|
}
|
|
1749
1903
|
}
|
|
1750
|
-
`,$t=
|
|
1904
|
+
`,$t=b`
|
|
1751
1905
|
query listListings($collections: [Int!], $userFilter: UserFilter, $marketplaceNames: [MarketplaceEnum!], $first: Int = 24, $after: String) {
|
|
1752
1906
|
result: listListings(
|
|
1753
1907
|
collectionIds: $collections
|
|
@@ -1783,7 +1937,7 @@ scalar Void`;var Ft=l(()=>`${se()}/lending/graphql`,"apiUrl"),St=At(Le);Object.a
|
|
|
1783
1937
|
}
|
|
1784
1938
|
}
|
|
1785
1939
|
}
|
|
1786
|
-
`,Qt=
|
|
1940
|
+
`,Qt=b`
|
|
1787
1941
|
query listLoans($borrowerAddress: String = "", $collections: [Int!] = [], $nfts: [Int!], $statuses: [LoanStatusType!] = [], $sortBy: [LoanSortInput!] = [], $terms: TermsFilter, $orderByStatuses: Boolean, $loansCurrencyAddress: Address, $first: Int = 24, $after: String) {
|
|
1788
1942
|
loans: listLoans(
|
|
1789
1943
|
borrowerAddress: $borrowerAddress
|
|
@@ -1867,7 +2021,7 @@ scalar Void`;var Ft=l(()=>`${se()}/lending/graphql`,"apiUrl"),St=At(Le);Object.a
|
|
|
1867
2021
|
}
|
|
1868
2022
|
}
|
|
1869
2023
|
}
|
|
1870
|
-
`,zt=
|
|
2024
|
+
`,zt=b`
|
|
1871
2025
|
query nftIdByContractAddressAndTokenId($contractAddress: Address!, $tokenId: BigInt!) {
|
|
1872
2026
|
nft: getNftByContractAddressAndTokenId(
|
|
1873
2027
|
contractAddress: $contractAddress
|
|
@@ -1876,13 +2030,13 @@ scalar Void`;var Ft=l(()=>`${se()}/lending/graphql`,"apiUrl"),St=At(Le);Object.a
|
|
|
1876
2030
|
id
|
|
1877
2031
|
}
|
|
1878
2032
|
}
|
|
1879
|
-
`,Gt=
|
|
2033
|
+
`,Gt=b`
|
|
1880
2034
|
query nftIdBySlugTokenId($slug: String!, $tokenId: BigInt!) {
|
|
1881
2035
|
nft: getNftBySlugAndTokenId(slug: $slug, tokenId: $tokenId) {
|
|
1882
2036
|
id
|
|
1883
2037
|
}
|
|
1884
2038
|
}
|
|
1885
|
-
`,Xt=
|
|
2039
|
+
`,Xt=b`
|
|
1886
2040
|
query ownedNfts($after: String) {
|
|
1887
2041
|
ownedNfts: listNftsFromUser(after: $after) {
|
|
1888
2042
|
pageInfo {
|
|
@@ -1919,7 +2073,7 @@ scalar Void`;var Ft=l(()=>`${se()}/lending/graphql`,"apiUrl"),St=At(Le);Object.a
|
|
|
1919
2073
|
}
|
|
1920
2074
|
}
|
|
1921
2075
|
${ke}
|
|
1922
|
-
${Ne}`,Zt=
|
|
2076
|
+
${Ne}`,Zt=b`
|
|
1923
2077
|
query listOffers($borrowerAddress: String, $lenders: [String!], $sortBy: OffersSortInput!, $terms: TermsFilter, $statuses: [OfferStatus!] = [ACTIVE, CANCELLED, INACTIVE, EXPIRED], $nfts: [Int!], $collections: [Int!], $onlySingleNftOffers: Boolean, $onlyCollectionOffers: Boolean, $first: Int = 24, $after: String) {
|
|
1924
2078
|
result: listOffers(
|
|
1925
2079
|
borrowerAddress: $borrowerAddress
|
|
@@ -1996,5 +2150,5 @@ ${Ne}`,Zt=f`
|
|
|
1996
2150
|
}
|
|
1997
2151
|
}
|
|
1998
2152
|
}
|
|
1999
|
-
`;function De(p){return{listNft(e,t){return p(wt,e,t)},unlistNft(e,t){return p(Ot,e,t)},generateCollectionOfferHash(e,t){return p(ht,e,t)},saveCollectionOffer(e,t){return p(_t,e,t)},hideOffer(e,t){return p(Ct,e,t)},generateSingleNftOfferHash(e,t){return p(Lt,e,t)},saveSingleNftOffer(e,t){return p(Pt,e,t)},unhideOffer(e,t){return p(Rt,e,t)},generateRenegotiationOfferHash(e,t){return p(Et,e,t)},hideRenegotiationOffer(e,t){return p(Bt,e,t)},saveRenegotiationOffer(e,t){return p(kt,e,t)},unhideRenegotiationOffer(e,t){return p(Nt,e,t)},hideSaleOffer(e,t){return p(Dt,e,t)},listBestBidsForNft(e,t){return p(Vt,e,t)},saveSignedSaleOffer(e,t){return p(Ht,e,t)},unhideSaleOffer(e,t){return p(Ut,e,t)},collections(e,t){return p(qt,e,t)},collectionsIdByContractAddress(e,t){return p(Kt,e,t)},collectionIdBySlug(e,t){return p(Wt,e,t)},listListings(e,t){return p($t,e,t)},listLoans(e,t){return p(Qt,e,t)},nftIdByContractAddressAndTokenId(e,t){return p(zt,e,t)},nftIdBySlugTokenId(e,t){return p(Gt,e,t)},ownedNfts(e,t){return p(Xt,e,t)},listOffers(e,t){return p(Zt,e,t)}}}l(De,"getSdk");var jt=["mutation","query","subscription"];function Ve(p){return De(l(async(t,n,a)=>{if(a={...a,context:{...a?.context,clientName:"lending"}},t.definitions.filter(r=>r.kind==="OperationDefinition"&&jt.includes(r.operation)).length!==1)throw new Error("DocumentNode passed to Apollo Client must contain single query or mutation");let i=t.definitions[0];if(i.kind!=="OperationDefinition")throw new Error("DocumentNode passed to Apollo Client must contain single query or mutation");switch(i.operation){case"mutation":{let r=await p.mutate({mutation:t,variables:n,...a,fetchPolicy:"no-cache"});if(r.errors)throw new Error(JSON.stringify(r.errors));if(r.data===void 0||r.data===null)throw new Error("No data presented in the GraphQL response");return r.data}case"query":{let r=await p.query({query:t,variables:n,...a});if(r.errors)throw new Error(JSON.stringify(r.errors));if(r.data===void 0||r.data===null)throw new Error("No data presented in the GraphQL response");return r.data}case"subscription":throw new Error("Subscription requests through SDK interface are not supported");default:throw new Error("Operation not supported")}},"requester"))}l(Ve,"getSdkApollo");import{decodeEventLog as Yt,encodeEventTopics as Jt,zeroAddress as en}from"viem";var x=en,I=`0x${"0".repeat(64)}`,He="0x0",k=5n*60n;function u(p,e){return p.logs.filter(t=>Jt(e)[0]==t.topics[0]).map(t=>({...Yt({abi:e.abi,data:t.data,topics:t.topics,eventName:e.eventName}),topics:t.topics})).filter(t=>t.eventName==e.eventName)}l(u,"filterLogs");var K=l(p=>p!=null,"isDefined");var be=l(({endCursor:p,hasNextPage:e})=>e?{hasNextPage:e,cursor:p}:{hasNextPage:e,cursor:null},"mapPageInfo"),se=l(()=>process.env.GONDI_URL??"https://api.gondi.xyz","apiDomain"),W=class{api;generateSingleNftOfferHash;generateCollectionOfferHash;generateRenegotiationOfferHash;nftIdBySlugTokenId;nftIdByContractAddressAndTokenId;collections;collectionIdBySlug;collectionsIdByContractAddress;listNft;unlistNft;ownedNfts;hideOffer;hideRenegotiationOffer;unhideOffer;unhideRenegotiationOffer;saveSignedSaleOffer;hideSaleOffer;unhideSaleOffer;listBestBidsForNft;constructor({apiClient:e,wallet:t}){let n=e??Re(t);this.api=Ve(n),this.generateSingleNftOfferHash=this.api.generateSingleNftOfferHash,this.generateCollectionOfferHash=this.api.generateCollectionOfferHash,this.generateRenegotiationOfferHash=this.api.generateRenegotiationOfferHash,this.nftIdBySlugTokenId=this.api.nftIdBySlugTokenId,this.nftIdByContractAddressAndTokenId=this.api.nftIdByContractAddressAndTokenId,this.collectionIdBySlug=this.api.collectionIdBySlug,this.collectionsIdByContractAddress=this.api.collectionsIdByContractAddress,this.collections=this.api.collections,this.listNft=this.api.listNft,this.unlistNft=this.api.unlistNft,this.ownedNfts=this.api.ownedNfts,this.saveSignedSaleOffer=this.api.saveSignedSaleOffer,this.hideOffer=this.api.hideOffer,this.hideRenegotiationOffer=this.api.hideRenegotiationOffer,this.unhideOffer=this.api.unhideOffer,this.unhideRenegotiationOffer=this.api.unhideRenegotiationOffer,this.hideSaleOffer=this.api.hideSaleOffer,this.unhideSaleOffer=this.api.unhideSaleOffer,this.listBestBidsForNft=this.api.listBestBidsForNft}async saveSingleNftOffer(e){let t={...e,borrowerAddress:e.borrowerAddress||x},n=await this.api.saveSingleNftOffer({offer:t}),a=n.offer.nft.collection?.contractData?.contractAddress||x;return{id:n.offer.id,nftCollateralAddress:a,nftCollateralTokenId:n.offer.nft.tokenId,...e}}async saveCollectionOffer(e){let t={...e,borrowerAddress:e.borrowerAddress||x},n=await this.api.saveCollectionOffer({offer:t}),a=n.offer.collection?.contractData?.contractAddress||x;return{id:n.offer.id,nftCollateralAddress:a,nftCollateralTokenId:0n,...e}}async saveRefinanceOffer(e){return{id:(await this.api.saveRenegotiationOffer({offer:e})).offer.id,...e}}async listOffers(e){let{result:{edges:t,pageInfo:n}}=await this.api.listOffers(e),a=t.map(i=>{let{__typename:r,...s}=i.node,o="collection"in s?s.collection.contractData?.contractAddress:s.nft.collection?.contractData?.contractAddress,y="collection"in s?0n:s.nft.tokenId;if(K(o))return{...s,type:r,lender:s.lenderAddress,borrower:s.borrowerAddress,signer:s.signerAddress,offerValidators:s.validators,nftCollateralAddress:o,nftCollateralTokenId:y}}).filter(K);return{...be(n),offers:a}}async listLoans(e){let{loans:{edges:t,pageInfo:n}}=await this.api.listLoans(e),a=t.map(i=>{let{__typename:r,...s}=i.node;return{...s,type:r,contractAddress:s.address,nftCollateralTokenId:s.nft.tokenId,nftCollateralAddress:s.nft.collection?.contractData?.contractAddress,borrower:s.borrowerAddress,startTime:BigInt(Math.floor(s.startTime.getTime()/1e3)),source:s.sources.map(o=>({...o,lender:tn(o.lenderAddress),loanId:BigInt(o.loanId),startTime:BigInt(Math.floor(o.startTime.getTime()/1e3))}))}});return{...be(n),loans:a}}async listListings(e){let{result:{edges:t,pageInfo:n}}=await this.api.listListings(e),a=t.map(i=>i.node);return{...be(n),listings:a}}};l(W,"Api");import{getContract as Fe}from"viem";var Ue=[{constant:!1,inputs:[{name:"_uri",type:"string"},{name:"_editions",type:"uint256"},{name:"_salePrice",type:"uint256"}],name:"addNewTokenWithEditions",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{name:"_tokenId",type:"uint256"},{name:"_salePrice",type:"uint256"}],name:"setSalePrice",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[],name:"name",outputs:[{name:"_name",type:"string"}],payable:!1,stateMutability:"pure",type:"function"},{constant:!1,inputs:[{name:"_to",type:"address"},{name:"_tokenId",type:"uint256"}],name:"approve",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[],name:"totalSupply",outputs:[{name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[{name:"_tokenId",type:"uint256"}],name:"currentBidDetailsOfToken",outputs:[{name:"",type:"uint256"},{name:"",type:"address"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[{name:"_tokenId",type:"uint256"}],name:"approvedFor",outputs:[{name:"",type:"address"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{name:"_tokenId",type:"uint256"}],name:"acceptBid",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[{name:"_creator",type:"address"}],name:"isWhitelisted",outputs:[{name:"",type:"bool"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{name:"_tokenId",type:"uint256"}],name:"bid",outputs:[],payable:!0,stateMutability:"payable",type:"function"},{constant:!0,inputs:[{name:"_owner",type:"address"}],name:"tokensOf",outputs:[{name:"",type:"uint256[]"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{name:"_percentage",type:"uint256"}],name:"setMaintainerPercentage",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{name:"_creator",type:"address"}],name:"whitelistCreator",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[{name:"_tokenId",type:"uint256"}],name:"ownerOf",outputs:[{name:"",type:"address"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[{name:"_uri",type:"string"}],name:"originalTokenOfUri",outputs:[{name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[{name:"_owner",type:"address"}],name:"balanceOf",outputs:[{name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"owner",outputs:[{name:"",type:"address"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"symbol",outputs:[{name:"_symbol",type:"string"}],payable:!1,stateMutability:"pure",type:"function"},{constant:!1,inputs:[{name:"_tokenId",type:"uint256"}],name:"cancelBid",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[{name:"_tokenId",type:"uint256"}],name:"salePriceOfToken",outputs:[{name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{name:"_to",type:"address"},{name:"_tokenId",type:"uint256"}],name:"transfer",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{name:"_tokenId",type:"uint256"}],name:"takeOwnership",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{name:"_percentage",type:"uint256"}],name:"setCreatorPercentage",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[{name:"_tokenId",type:"uint256"}],name:"tokenURI",outputs:[{name:"",type:"string"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[{name:"_tokenId",type:"uint256"}],name:"creatorOfToken",outputs:[{name:"",type:"address"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{name:"_tokenId",type:"uint256"}],name:"buy",outputs:[],payable:!0,stateMutability:"payable",type:"function"},{constant:!1,inputs:[{name:"_uri",type:"string"}],name:"addNewToken",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[],name:"creatorPercentage",outputs:[{name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"maintainerPercentage",outputs:[{name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{anonymous:!1,inputs:[{indexed:!0,name:"_creator",type:"address"}],name:"WhitelistCreator",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"_bidder",type:"address"},{indexed:!0,name:"_amount",type:"uint256"},{indexed:!0,name:"_tokenId",type:"uint256"}],name:"Bid",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"_bidder",type:"address"},{indexed:!0,name:"_seller",type:"address"},{indexed:!1,name:"_amount",type:"uint256"},{indexed:!0,name:"_tokenId",type:"uint256"}],name:"AcceptBid",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"_bidder",type:"address"},{indexed:!0,name:"_amount",type:"uint256"},{indexed:!0,name:"_tokenId",type:"uint256"}],name:"CancelBid",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"_buyer",type:"address"},{indexed:!0,name:"_seller",type:"address"},{indexed:!1,name:"_amount",type:"uint256"},{indexed:!0,name:"_tokenId",type:"uint256"}],name:"Sold",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"_tokenId",type:"uint256"},{indexed:!0,name:"_price",type:"uint256"}],name:"SalePriceSet",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"previousOwner",type:"address"},{indexed:!0,name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"_from",type:"address"},{indexed:!0,name:"_to",type:"address"},{indexed:!1,name:"_tokenId",type:"uint256"}],name:"Transfer",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"_owner",type:"address"},{indexed:!0,name:"_approved",type:"address"},{indexed:!1,name:"_tokenId",type:"uint256"}],name:"Approval",type:"event"}];var qe=[{stateMutability:"nonpayable",type:"constructor",inputs:[{name:"liquidationDistributor",internalType:"address",type:"address"},{name:"currencyManager",internalType:"address",type:"address"},{name:"collectionManager",internalType:"address",type:"address"},{name:"triggerFee",internalType:"uint256",type:"uint256"}]},{type:"error",inputs:[],name:"AddressZeroError"},{type:"error",inputs:[],name:"AuctionAlreadyInProgressError"},{type:"error",inputs:[{name:"_expiration",internalType:"uint96",type:"uint96"}],name:"AuctionNotOverError"},{type:"error",inputs:[{name:"_expiration",internalType:"uint96",type:"uint96"}],name:"AuctionOverError"},{type:"error",inputs:[],name:"CollectionNotWhitelistedError"},{type:"error",inputs:[],name:"CouldNotModifyValidLoansError"},{type:"error",inputs:[],name:"CurrencyNotWhitelistedError"},{type:"error",inputs:[],name:"InvalidHashAuctionError"},{type:"error",inputs:[{name:"triggerFee",internalType:"uint256",type:"uint256"}],name:"InvalidTriggerFee"},{type:"error",inputs:[{name:"_loan",internalType:"address",type:"address"}],name:"LoanNotAcceptedError"},{type:"error",inputs:[{name:"_minBid",internalType:"uint256",type:"uint256"}],name:"MinBidError"},{type:"error",inputs:[{name:"_owner",internalType:"address",type:"address"}],name:"NFTNotOwnedError"},{type:"error",inputs:[],name:"NoBidsError"},{type:"error",inputs:[],name:"ZeroAddressError"},{type:"event",anonymous:!1,inputs:[{name:"loanContract",internalType:"address",type:"address",indexed:!1},{name:"loanId",internalType:"uint256",type:"uint256",indexed:!1},{name:"auctionContract",internalType:"address",type:"address",indexed:!1},{name:"tokenId",internalType:"uint256",type:"uint256",indexed:!1},{name:"asset",internalType:"address",type:"address",indexed:!1},{name:"proceeds",internalType:"uint256",type:"uint256",indexed:!1},{name:"settler",internalType:"address",type:"address",indexed:!1},{name:"triggerFee",internalType:"uint256",type:"uint256",indexed:!1}],name:"AuctionSettled"},{type:"event",anonymous:!1,inputs:[{name:"collection",internalType:"address",type:"address",indexed:!1},{name:"tokenId",internalType:"uint256",type:"uint256",indexed:!1},{name:"newBidder",internalType:"address",type:"address",indexed:!1},{name:"bid",internalType:"uint256",type:"uint256",indexed:!1},{name:"loanAddress",internalType:"address",type:"address",indexed:!1},{name:"loanId",internalType:"uint256",type:"uint256",indexed:!1}],name:"BidPlaced"},{type:"event",anonymous:!1,inputs:[{name:"liquidationDistributor",internalType:"address",type:"address",indexed:!1}],name:"LiquidationDistributorUpdated"},{type:"event",anonymous:!1,inputs:[{name:"loan",internalType:"address",type:"address",indexed:!1}],name:"LoanContractAdded"},{type:"event",anonymous:!1,inputs:[{name:"loan",internalType:"address",type:"address",indexed:!1}],name:"LoanContractRemoved"},{type:"event",anonymous:!1,inputs:[{name:"collection",internalType:"address",type:"address",indexed:!1},{name:"tokenId",internalType:"uint256",type:"uint256",indexed:!1},{name:"auction",internalType:"struct IAuctionLoanLiquidator.Auction",type:"tuple",components:[{name:"loanAddress",internalType:"address",type:"address"},{name:"loanId",internalType:"uint256",type:"uint256"},{name:"highestBid",internalType:"uint256",type:"uint256"},{name:"triggerFee",internalType:"uint256",type:"uint256"},{name:"highestBidder",internalType:"address",type:"address"},{name:"duration",internalType:"uint96",type:"uint96"},{name:"asset",internalType:"address",type:"address"},{name:"startTime",internalType:"uint96",type:"uint96"},{name:"originator",internalType:"address",type:"address"},{name:"lastBidTime",internalType:"uint96",type:"uint96"}],indexed:!1}],name:"LoanLiquidationStarted"},{type:"event",anonymous:!1,inputs:[{name:"user",internalType:"address",type:"address",indexed:!0},{name:"newOwner",internalType:"address",type:"address",indexed:!0}],name:"OwnershipTransferred"},{type:"event",anonymous:!1,inputs:[{name:"triggerFee",internalType:"uint256",type:"uint256",indexed:!1}],name:"TriggerFeeUpdated"},{stateMutability:"view",type:"function",inputs:[],name:"MAX_TRIGGER_FEE",outputs:[{name:"",internalType:"uint256",type:"uint256"}]},{stateMutability:"view",type:"function",inputs:[],name:"MIN_INCREMENT_BPS",outputs:[{name:"",internalType:"uint256",type:"uint256"}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_loanContract",internalType:"address",type:"address"}],name:"addLoanContract",outputs:[]},{stateMutability:"view",type:"function",inputs:[{name:"_contract",internalType:"address",type:"address"},{name:"_tokenId",internalType:"uint256",type:"uint256"}],name:"getAuctionHash",outputs:[{name:"",internalType:"bytes32",type:"bytes32"}]},{stateMutability:"view",type:"function",inputs:[],name:"getLiquidationDistributor",outputs:[{name:"",internalType:"address",type:"address"}]},{stateMutability:"view",type:"function",inputs:[],name:"getTriggerFee",outputs:[{name:"",internalType:"uint256",type:"uint256"}]},{stateMutability:"view",type:"function",inputs:[],name:"getValidLoanContracts",outputs:[{name:"",internalType:"address[]",type:"address[]"}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_loanId",internalType:"uint256",type:"uint256"},{name:"_contract",internalType:"address",type:"address"},{name:"_tokenId",internalType:"uint256",type:"uint256"},{name:"_asset",internalType:"address",type:"address"},{name:"_duration",internalType:"uint96",type:"uint96"},{name:"_originator",internalType:"address",type:"address"}],name:"liquidateLoan",outputs:[{name:"",internalType:"bytes",type:"bytes"}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"",internalType:"address",type:"address"},{name:"",internalType:"address",type:"address"},{name:"",internalType:"uint256",type:"uint256"},{name:"",internalType:"bytes",type:"bytes"}],name:"onERC721Received",outputs:[{name:"",internalType:"bytes4",type:"bytes4"}]},{stateMutability:"view",type:"function",inputs:[],name:"owner",outputs:[{name:"",internalType:"address",type:"address"}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_contract",internalType:"address",type:"address"},{name:"_tokenId",internalType:"uint256",type:"uint256"},{name:"_auction",internalType:"struct IAuctionLoanLiquidator.Auction",type:"tuple",components:[{name:"loanAddress",internalType:"address",type:"address"},{name:"loanId",internalType:"uint256",type:"uint256"},{name:"highestBid",internalType:"uint256",type:"uint256"},{name:"triggerFee",internalType:"uint256",type:"uint256"},{name:"highestBidder",internalType:"address",type:"address"},{name:"duration",internalType:"uint96",type:"uint96"},{name:"asset",internalType:"address",type:"address"},{name:"startTime",internalType:"uint96",type:"uint96"},{name:"originator",internalType:"address",type:"address"},{name:"lastBidTime",internalType:"uint96",type:"uint96"}]},{name:"_bid",internalType:"uint256",type:"uint256"}],name:"placeBid",outputs:[{name:"",internalType:"struct IAuctionLoanLiquidator.Auction",type:"tuple",components:[{name:"loanAddress",internalType:"address",type:"address"},{name:"loanId",internalType:"uint256",type:"uint256"},{name:"highestBid",internalType:"uint256",type:"uint256"},{name:"triggerFee",internalType:"uint256",type:"uint256"},{name:"highestBidder",internalType:"address",type:"address"},{name:"duration",internalType:"uint96",type:"uint96"},{name:"asset",internalType:"address",type:"address"},{name:"startTime",internalType:"uint96",type:"uint96"},{name:"originator",internalType:"address",type:"address"},{name:"lastBidTime",internalType:"uint96",type:"uint96"}]}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_loanContract",internalType:"address",type:"address"}],name:"removeLoanContract",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_auction",internalType:"struct IAuctionLoanLiquidator.Auction",type:"tuple",components:[{name:"loanAddress",internalType:"address",type:"address"},{name:"loanId",internalType:"uint256",type:"uint256"},{name:"highestBid",internalType:"uint256",type:"uint256"},{name:"triggerFee",internalType:"uint256",type:"uint256"},{name:"highestBidder",internalType:"address",type:"address"},{name:"duration",internalType:"uint96",type:"uint96"},{name:"asset",internalType:"address",type:"address"},{name:"startTime",internalType:"uint96",type:"uint96"},{name:"originator",internalType:"address",type:"address"},{name:"lastBidTime",internalType:"uint96",type:"uint96"}]},{name:"_loan",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"source",internalType:"struct IMultiSourceLoan.Source[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]}]}],name:"settleAuction",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"newOwner",internalType:"address",type:"address"}],name:"transferOwnership",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"__liquidationDistributor",internalType:"address",type:"address"}],name:"updateLiquidationDistributor",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"triggerFee",internalType:"uint256",type:"uint256"}],name:"updateTriggerFee",outputs:[]}];var Ke=[{type:"event",anonymous:!1,inputs:[{name:"owner",internalType:"address",type:"address",indexed:!0},{name:"spender",internalType:"address",type:"address",indexed:!0},{name:"amount",internalType:"uint256",type:"uint256",indexed:!1}],name:"Approval"},{type:"event",anonymous:!1,inputs:[{name:"from",internalType:"address",type:"address",indexed:!0},{name:"to",internalType:"address",type:"address",indexed:!0},{name:"amount",internalType:"uint256",type:"uint256",indexed:!1}],name:"Transfer"},{stateMutability:"view",type:"function",inputs:[],name:"DOMAIN_SEPARATOR",outputs:[{name:"",internalType:"bytes32",type:"bytes32"}]},{stateMutability:"view",type:"function",inputs:[{name:"",internalType:"address",type:"address"},{name:"",internalType:"address",type:"address"}],name:"allowance",outputs:[{name:"",internalType:"uint256",type:"uint256"}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"spender",internalType:"address",type:"address"},{name:"amount",internalType:"uint256",type:"uint256"}],name:"approve",outputs:[{name:"",internalType:"bool",type:"bool"}]},{stateMutability:"view",type:"function",inputs:[{name:"",internalType:"address",type:"address"}],name:"balanceOf",outputs:[{name:"",internalType:"uint256",type:"uint256"}]},{stateMutability:"view",type:"function",inputs:[],name:"decimals",outputs:[{name:"",internalType:"uint8",type:"uint8"}]},{stateMutability:"view",type:"function",inputs:[],name:"name",outputs:[{name:"",internalType:"string",type:"string"}]},{stateMutability:"view",type:"function",inputs:[{name:"",internalType:"address",type:"address"}],name:"nonces",outputs:[{name:"",internalType:"uint256",type:"uint256"}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"owner",internalType:"address",type:"address"},{name:"spender",internalType:"address",type:"address"},{name:"value",internalType:"uint256",type:"uint256"},{name:"deadline",internalType:"uint256",type:"uint256"},{name:"v",internalType:"uint8",type:"uint8"},{name:"r",internalType:"bytes32",type:"bytes32"},{name:"s",internalType:"bytes32",type:"bytes32"}],name:"permit",outputs:[]},{stateMutability:"view",type:"function",inputs:[],name:"symbol",outputs:[{name:"",internalType:"string",type:"string"}]},{stateMutability:"view",type:"function",inputs:[],name:"totalSupply",outputs:[{name:"",internalType:"uint256",type:"uint256"}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"to",internalType:"address",type:"address"},{name:"amount",internalType:"uint256",type:"uint256"}],name:"transfer",outputs:[{name:"",internalType:"bool",type:"bool"}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"from",internalType:"address",type:"address"},{name:"to",internalType:"address",type:"address"},{name:"amount",internalType:"uint256",type:"uint256"}],name:"transferFrom",outputs:[{name:"",internalType:"bool",type:"bool"}]}],pe=[{type:"event",anonymous:!1,inputs:[{name:"owner",internalType:"address",type:"address",indexed:!0},{name:"spender",internalType:"address",type:"address",indexed:!0},{name:"id",internalType:"uint256",type:"uint256",indexed:!0}],name:"Approval"},{type:"event",anonymous:!1,inputs:[{name:"owner",internalType:"address",type:"address",indexed:!0},{name:"operator",internalType:"address",type:"address",indexed:!0},{name:"approved",internalType:"bool",type:"bool",indexed:!1}],name:"ApprovalForAll"},{type:"event",anonymous:!1,inputs:[{name:"from",internalType:"address",type:"address",indexed:!0},{name:"to",internalType:"address",type:"address",indexed:!0},{name:"id",internalType:"uint256",type:"uint256",indexed:!0}],name:"Transfer"},{stateMutability:"nonpayable",type:"function",inputs:[{name:"spender",internalType:"address",type:"address"},{name:"id",internalType:"uint256",type:"uint256"}],name:"approve",outputs:[]},{stateMutability:"view",type:"function",inputs:[{name:"owner",internalType:"address",type:"address"}],name:"balanceOf",outputs:[{name:"",internalType:"uint256",type:"uint256"}]},{stateMutability:"view",type:"function",inputs:[{name:"",internalType:"uint256",type:"uint256"}],name:"getApproved",outputs:[{name:"",internalType:"address",type:"address"}]},{stateMutability:"view",type:"function",inputs:[{name:"",internalType:"address",type:"address"},{name:"",internalType:"address",type:"address"}],name:"isApprovedForAll",outputs:[{name:"",internalType:"bool",type:"bool"}]},{stateMutability:"view",type:"function",inputs:[],name:"name",outputs:[{name:"",internalType:"string",type:"string"}]},{stateMutability:"view",type:"function",inputs:[{name:"id",internalType:"uint256",type:"uint256"}],name:"ownerOf",outputs:[{name:"owner",internalType:"address",type:"address"}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"from",internalType:"address",type:"address"},{name:"to",internalType:"address",type:"address"},{name:"id",internalType:"uint256",type:"uint256"}],name:"safeTransferFrom",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"from",internalType:"address",type:"address"},{name:"to",internalType:"address",type:"address"},{name:"id",internalType:"uint256",type:"uint256"},{name:"data",internalType:"bytes",type:"bytes"}],name:"safeTransferFrom",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"operator",internalType:"address",type:"address"},{name:"approved",internalType:"bool",type:"bool"}],name:"setApprovalForAll",outputs:[]},{stateMutability:"view",type:"function",inputs:[{name:"interfaceId",internalType:"bytes4",type:"bytes4"}],name:"supportsInterface",outputs:[{name:"",internalType:"bool",type:"bool"}]},{stateMutability:"view",type:"function",inputs:[],name:"symbol",outputs:[{name:"",internalType:"string",type:"string"}]},{stateMutability:"view",type:"function",inputs:[{name:"id",internalType:"uint256",type:"uint256"}],name:"tokenURI",outputs:[{name:"",internalType:"string",type:"string"}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"from",internalType:"address",type:"address"},{name:"to",internalType:"address",type:"address"},{name:"id",internalType:"uint256",type:"uint256"}],name:"transferFrom",outputs:[]}];var We=[{stateMutability:"nonpayable",type:"constructor",inputs:[{name:"_multiSourceLoanAddress",internalType:"address",type:"address"},{name:"_marketplaceContracts",internalType:"address",type:"address"},{name:"_wethAddress",internalType:"address payable",type:"address"},{name:"_punkMarketAddress",internalType:"address payable",type:"address"},{name:"_wrappedPunkAddress",internalType:"address payable",type:"address"},{name:"_seaportAddress",internalType:"address payable",type:"address"}]},{type:"error",inputs:[],name:"AddressZeroError"},{type:"error",inputs:[],name:"CouldNotReturnEthError"},{type:"error",inputs:[],name:"InvalidAddressUpdateError"},{type:"error",inputs:[],name:"InvalidCallbackError"},{type:"error",inputs:[],name:"MarketplaceAddressNotWhitelisted"},{type:"error",inputs:[],name:"OnlyMultiSourceLoanError"},{type:"error",inputs:[],name:"OnlyWethSupportedError"},{type:"event",anonymous:!1,inputs:[{name:"_loanIds",internalType:"uint256[]",type:"uint256[]",indexed:!1}],name:"BNPLLoansStarted"},{type:"event",anonymous:!1,inputs:[{name:"_newAddress",internalType:"address",type:"address",indexed:!1}],name:"MultiSourceLoanPendingUpdate"},{type:"event",anonymous:!1,inputs:[{name:"_newAddress",internalType:"address",type:"address",indexed:!1}],name:"MultiSourceLoanUpdated"},{type:"event",anonymous:!1,inputs:[{name:"user",internalType:"address",type:"address",indexed:!0},{name:"newOwner",internalType:"address",type:"address",indexed:!0}],name:"OwnershipTransferred"},{type:"event",anonymous:!1,inputs:[{name:"_newAddress",internalType:"address",type:"address",indexed:!1}],name:"SeaportPendingUpdate"},{type:"event",anonymous:!1,inputs:[{name:"_newAddress",internalType:"address",type:"address",indexed:!1}],name:"SeaportUpdated"},{type:"event",anonymous:!1,inputs:[{name:"_loanIds",internalType:"uint256[]",type:"uint256[]",indexed:!1}],name:"SellAndRepayExecuted"},{stateMutability:"payable",type:"fallback"},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_loan",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"source",internalType:"struct IMultiSourceLoan.Source[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]}]},{name:"_executionData",internalType:"bytes",type:"bytes"}],name:"afterNFTTransfer",outputs:[{name:"",internalType:"bytes4",type:"bytes4"}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_loan",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"source",internalType:"struct IMultiSourceLoan.Source[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]}]},{name:"_fee",internalType:"uint256",type:"uint256"},{name:"_executionData",internalType:"bytes",type:"bytes"}],name:"afterPrincipalTransfer",outputs:[{name:"",internalType:"bytes4",type:"bytes4"}]},{stateMutability:"payable",type:"function",inputs:[{name:"_executionData",internalType:"bytes[]",type:"bytes[]"}],name:"buy",outputs:[{name:"",internalType:"uint256[]",type:"uint256[]"},{name:"",internalType:"struct IMultiSourceLoan.Loan[]",type:"tuple[]",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"source",internalType:"struct IMultiSourceLoan.Source[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]}]}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_newAddress",internalType:"address",type:"address"}],name:"finalUpdateMultiSourceLoanAddress",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_newAddress",internalType:"address",type:"address"}],name:"finalUpdateSeaportAddress",outputs:[]},{stateMutability:"view",type:"function",inputs:[],name:"getMultiSourceLoanAddress",outputs:[{name:"",internalType:"address",type:"address"}]},{stateMutability:"view",type:"function",inputs:[],name:"getSeaportAddress",outputs:[{name:"",internalType:"address",type:"address"}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"",internalType:"address",type:"address"},{name:"",internalType:"address",type:"address"},{name:"",internalType:"uint256",type:"uint256"},{name:"",internalType:"bytes",type:"bytes"}],name:"onERC721Received",outputs:[{name:"",internalType:"bytes4",type:"bytes4"}]},{stateMutability:"view",type:"function",inputs:[],name:"owner",outputs:[{name:"",internalType:"address",type:"address"}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_executionData",internalType:"bytes[]",type:"bytes[]"}],name:"sell",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"newOwner",internalType:"address",type:"address"}],name:"transferOwnership",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_newAddress",internalType:"address",type:"address"}],name:"updateMultiSourceLoanAddressFirst",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_newAddress",internalType:"address",type:"address"}],name:"updateSeaportAddressFirst",outputs:[]},{stateMutability:"payable",type:"receive"}];var h=[{stateMutability:"nonpayable",type:"constructor",inputs:[{name:"loanLiquidator",internalType:"address",type:"address"},{name:"protocolFee",internalType:"struct IBaseLoan.ProtocolFee",type:"tuple",components:[{name:"recipient",internalType:"address",type:"address"},{name:"fraction",internalType:"uint256",type:"uint256"}]},{name:"currencyManager",internalType:"address",type:"address"},{name:"collectionManager",internalType:"address",type:"address"},{name:"maxSources",internalType:"uint256",type:"uint256"},{name:"minLockPeriod",internalType:"uint256",type:"uint256"},{name:"delegateRegistry",internalType:"address",type:"address"},{name:"flashActionContract",internalType:"address",type:"address"}]},{type:"error",inputs:[],name:"AddressZeroError"},{type:"error",inputs:[{name:"_lender",internalType:"address",type:"address"},{name:"_offerId",internalType:"uint256",type:"uint256"}],name:"CancelledOrExecutedOfferError"},{type:"error",inputs:[{name:"_lender",internalType:"address",type:"address"},{name:"_renegotiationId",internalType:"uint256",type:"uint256"}],name:"CancelledRenegotiationOfferError"},{type:"error",inputs:[],name:"CannotLiquidateError"},{type:"error",inputs:[],name:"CollectionNotWhitelistedError"},{type:"error",inputs:[],name:"CurrencyNotWhitelistedError"},{type:"error",inputs:[],name:"ECDSAInvalidSignature"},{type:"error",inputs:[{name:"length",internalType:"uint256",type:"uint256"}],name:"ECDSAInvalidSignatureLength"},{type:"error",inputs:[{name:"s",internalType:"bytes32",type:"bytes32"}],name:"ECDSAInvalidSignatureS"},{type:"error",inputs:[{name:"_expirationTime",internalType:"uint256",type:"uint256"}],name:"ExpiredOfferError"},{type:"error",inputs:[{name:"_expirationTime",internalType:"uint256",type:"uint256"}],name:"ExpiredRenegotiationOfferError"},{type:"error",inputs:[],name:"ExtensionNotAvailableError"},{type:"error",inputs:[{name:"_amount",internalType:"uint256",type:"uint256"},{name:"_principalAmount",internalType:"uint256",type:"uint256"}],name:"InvalidAmountError"},{type:"error",inputs:[],name:"InvalidBorrowerError"},{type:"error",inputs:[],name:"InvalidCallbackError"},{type:"error",inputs:[],name:"InvalidCollateralIdError"},{type:"error",inputs:[],name:"InvalidDurationError"},{type:"error",inputs:[],name:"InvalidLenderError"},{type:"error",inputs:[],name:"InvalidLiquidationError"},{type:"error",inputs:[{name:"_loanId",internalType:"uint256",type:"uint256"}],name:"InvalidLoanError"},{type:"error",inputs:[],name:"InvalidMethodError"},{type:"error",inputs:[{name:"_fraction",internalType:"uint256",type:"uint256"}],name:"InvalidProtocolFeeError"},{type:"error",inputs:[],name:"InvalidRenegotiationOfferError"},{type:"error",inputs:[],name:"InvalidSignatureError"},{type:"error",inputs:[],name:"InvalidValueError"},{type:"error",inputs:[],name:"LengthMismatchError"},{type:"error",inputs:[{name:"_liquidator",internalType:"address",type:"address"}],name:"LiquidatorOnlyError"},{type:"error",inputs:[],name:"LoanExpiredError"},{type:"error",inputs:[{name:"_expirationTime",internalType:"uint256",type:"uint256"}],name:"LoanNotDueError"},{type:"error",inputs:[{name:"_lender",internalType:"address",type:"address"},{name:"_newMinOfferId",internalType:"uint256",type:"uint256"},{name:"_minOfferId",internalType:"uint256",type:"uint256"}],name:"LowOfferIdError"},{type:"error",inputs:[{name:"_lender",internalType:"address",type:"address"},{name:"_newMinRenegotiationOfferId",internalType:"uint256",type:"uint256"},{name:"_minOfferId",internalType:"uint256",type:"uint256"}],name:"LowRenegotiationOfferIdError"},{type:"error",inputs:[],name:"MaxCapacityExceededError"},{type:"error",inputs:[{name:"minLockPeriod",internalType:"uint256",type:"uint256"}],name:"MinLockPeriodTooHighError"},{type:"error",inputs:[{name:"i",internalType:"uint256",type:"uint256"},{name:"returndata",internalType:"bytes",type:"bytes"}],name:"MulticallFailed"},{type:"error",inputs:[],name:"NFTNotReturnedError"},{type:"error",inputs:[],name:"NotStrictlyImprovedError"},{type:"error",inputs:[],name:"OnlyBorrowerCallableError"},{type:"error",inputs:[],name:"OnlyLenderCallableError"},{type:"error",inputs:[],name:"OnlyLenderOrBorrowerCallableError"},{type:"error",inputs:[],name:"PartialOfferCannotChangeDurationError"},{type:"error",inputs:[],name:"PartialOfferCannotHaveFeeError"},{type:"error",inputs:[],name:"RefinanceFullError"},{type:"error",inputs:[{name:"minTimestamp",internalType:"uint256",type:"uint256"}],name:"SourceCannotBeRefinancedError"},{type:"error",inputs:[{name:"sourcePrincipal",internalType:"uint256",type:"uint256"},{name:"loanPrincipal",internalType:"uint256",type:"uint256"}],name:"TargetPrincipalTooLowError"},{type:"error",inputs:[{name:"_pendingProtocolFeeSetTime",internalType:"uint256",type:"uint256"}],name:"TooEarlyError"},{type:"error",inputs:[{name:"sources",internalType:"uint256",type:"uint256"}],name:"TooManySourcesError"},{type:"error",inputs:[],name:"ZeroDurationError"},{type:"error",inputs:[],name:"ZeroInterestError"},{type:"event",anonymous:!1,inputs:[{name:"lender",internalType:"address",type:"address",indexed:!1},{name:"minOfferId",internalType:"uint256",type:"uint256",indexed:!1}],name:"AllOffersCancelled"},{type:"event",anonymous:!1,inputs:[{name:"lender",internalType:"address",type:"address",indexed:!1},{name:"minRenegotiationId",internalType:"uint256",type:"uint256",indexed:!1}],name:"AllRenegotiationOffersCancelled"},{type:"event",anonymous:!1,inputs:[{name:"borrower",internalType:"address",type:"address",indexed:!1},{name:"offerId",internalType:"uint256",type:"uint256",indexed:!1}],name:"BorrowerOfferCancelled"},{type:"event",anonymous:!1,inputs:[{name:"newdelegateRegistry",internalType:"address",type:"address",indexed:!1}],name:"DelegateRegistryUpdated"},{type:"event",anonymous:!1,inputs:[{name:"loanId",internalType:"uint256",type:"uint256",indexed:!1},{name:"delegate",internalType:"address",type:"address",indexed:!1},{name:"value",internalType:"bool",type:"bool",indexed:!1}],name:"Delegated"},{type:"event",anonymous:!1,inputs:[{name:"newFlashActionContract",internalType:"address",type:"address",indexed:!1}],name:"FlashActionContractUpdated"},{type:"event",anonymous:!1,inputs:[{name:"loanId",internalType:"uint256",type:"uint256",indexed:!1},{name:"target",internalType:"address",type:"address",indexed:!1},{name:"data",internalType:"bytes",type:"bytes",indexed:!1}],name:"FlashActionExecuted"},{type:"event",anonymous:!1,inputs:[{name:"minimum",internalType:"struct IBaseLoan.ImprovementMinimum",type:"tuple",components:[{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"interest",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"}],indexed:!1}],name:"ImprovementMinimumUpdated"},{type:"event",anonymous:!1,inputs:[{name:"newDuration",internalType:"uint256",type:"uint256",indexed:!1}],name:"LiquidationAuctionDurationUpdated"},{type:"event",anonymous:!1,inputs:[{name:"liquidator",internalType:"address",type:"address",indexed:!1}],name:"LiquidationContractUpdated"},{type:"event",anonymous:!1,inputs:[{name:"loanId",internalType:"uint256",type:"uint256",indexed:!1},{name:"offerId",internalType:"uint256",type:"uint256",indexed:!1},{name:"loan",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"source",internalType:"struct IMultiSourceLoan.Source[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]}],indexed:!1},{name:"lender",internalType:"address",type:"address",indexed:!1},{name:"borrower",internalType:"address",type:"address",indexed:!1},{name:"fee",internalType:"uint256",type:"uint256",indexed:!1}],name:"LoanEmitted"},{type:"event",anonymous:!1,inputs:[{name:"oldLoanId",internalType:"uint256",type:"uint256",indexed:!1},{name:"newLoanId",internalType:"uint256",type:"uint256",indexed:!1},{name:"loan",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"source",internalType:"struct IMultiSourceLoan.Source[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]}],indexed:!1},{name:"_extension",internalType:"uint256",type:"uint256",indexed:!1}],name:"LoanExtended"},{type:"event",anonymous:!1,inputs:[{name:"loanId",internalType:"uint256",type:"uint256",indexed:!1}],name:"LoanForeclosed"},{type:"event",anonymous:!1,inputs:[{name:"loanId",internalType:"uint256",type:"uint256",indexed:!1}],name:"LoanLiquidated"},{type:"event",anonymous:!1,inputs:[{name:"renegotiationId",internalType:"uint256",type:"uint256",indexed:!1},{name:"oldLoanId",internalType:"uint256",type:"uint256",indexed:!1},{name:"newLoanId",internalType:"uint256",type:"uint256",indexed:!1},{name:"loan",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"source",internalType:"struct IMultiSourceLoan.Source[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]}],indexed:!1},{name:"fee",internalType:"uint256",type:"uint256",indexed:!1}],name:"LoanRefinanced"},{type:"event",anonymous:!1,inputs:[{name:"loanId",internalType:"uint256",type:"uint256",indexed:!1},{name:"totalRepayment",internalType:"uint256",type:"uint256",indexed:!1},{name:"fee",internalType:"uint256",type:"uint256",indexed:!1}],name:"LoanRepaid"},{type:"event",anonymous:!1,inputs:[{name:"loanId",internalType:"uint256",type:"uint256",indexed:!1},{name:"liquidator",internalType:"address",type:"address",indexed:!1}],name:"LoanSentToLiquidator"},{type:"event",anonymous:!1,inputs:[{name:"newMax",internalType:"uint256",type:"uint256",indexed:!1}],name:"MaxSourcesUpdated"},{type:"event",anonymous:!1,inputs:[{name:"minLockPeriod",internalType:"uint256",type:"uint256",indexed:!1}],name:"MinLockPeriodUpdated"},{type:"event",anonymous:!1,inputs:[{name:"lender",internalType:"address",type:"address",indexed:!1},{name:"offerId",internalType:"uint256",type:"uint256",indexed:!1}],name:"OfferCancelled"},{type:"event",anonymous:!1,inputs:[{name:"user",internalType:"address",type:"address",indexed:!0},{name:"newOwner",internalType:"address",type:"address",indexed:!0}],name:"OwnershipTransferred"},{type:"event",anonymous:!1,inputs:[{name:"fee",internalType:"struct IBaseLoan.ProtocolFee",type:"tuple",components:[{name:"recipient",internalType:"address",type:"address"},{name:"fraction",internalType:"uint256",type:"uint256"}],indexed:!1}],name:"ProtocolFeePendingUpdate"},{type:"event",anonymous:!1,inputs:[{name:"fee",internalType:"struct IBaseLoan.ProtocolFee",type:"tuple",components:[{name:"recipient",internalType:"address",type:"address"},{name:"fraction",internalType:"uint256",type:"uint256"}],indexed:!1}],name:"ProtocolFeeUpdated"},{type:"event",anonymous:!1,inputs:[{name:"lender",internalType:"address",type:"address",indexed:!1},{name:"renegotiationId",internalType:"uint256",type:"uint256",indexed:!1}],name:"RenegotiationOfferCancelled"},{type:"event",anonymous:!1,inputs:[{name:"delegate",internalType:"address",type:"address",indexed:!1},{name:"collection",internalType:"address",type:"address",indexed:!1},{name:"tokenId",internalType:"uint256",type:"uint256",indexed:!1}],name:"RevokeDelegate"},{type:"event",anonymous:!1,inputs:[{name:"contractAdded",internalType:"address",type:"address",indexed:!1},{name:"tax",internalType:"struct WithCallbacks.Taxes",type:"tuple",components:[{name:"buyTax",internalType:"uint128",type:"uint128"},{name:"sellTax",internalType:"uint128",type:"uint128"}],indexed:!1}],name:"WhitelistedCallbackContractAdded"},{type:"event",anonymous:!1,inputs:[{name:"contractRemoved",internalType:"address",type:"address",indexed:!1}],name:"WhitelistedCallbackContractRemoved"},{stateMutability:"view",type:"function",inputs:[],name:"DOMAIN_SEPARATOR",outputs:[{name:"",internalType:"bytes32",type:"bytes32"}]},{stateMutability:"view",type:"function",inputs:[],name:"FEE_UPDATE_NOTICE",outputs:[{name:"",internalType:"uint256",type:"uint256"}]},{stateMutability:"view",type:"function",inputs:[],name:"INITIAL_DOMAIN_SEPARATOR",outputs:[{name:"",internalType:"bytes32",type:"bytes32"}]},{stateMutability:"view",type:"function",inputs:[],name:"MAX_PROTOCOL_FEE",outputs:[{name:"",internalType:"uint256",type:"uint256"}]},{stateMutability:"view",type:"function",inputs:[],name:"MIN_AUCTION_DURATION",outputs:[{name:"",internalType:"uint48",type:"uint48"}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_contract",internalType:"address",type:"address"},{name:"_tax",internalType:"struct WithCallbacks.Taxes",type:"tuple",components:[{name:"buyTax",internalType:"uint128",type:"uint128"},{name:"sellTax",internalType:"uint128",type:"uint128"}]}],name:"addWhitelistedCallbackContract",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_minOfferId",internalType:"uint256",type:"uint256"}],name:"cancelAllOffers",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_minRenegotiationId",internalType:"uint256",type:"uint256"}],name:"cancelAllRenegotiationOffers",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_offerId",internalType:"uint256",type:"uint256"}],name:"cancelOffer",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_offerIds",internalType:"uint256[]",type:"uint256[]"}],name:"cancelOffers",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_renegotiationId",internalType:"uint256",type:"uint256"}],name:"cancelRenegotiationOffer",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_renegotiationIds",internalType:"uint256[]",type:"uint256[]"}],name:"cancelRenegotiationOffers",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_loanId",internalType:"uint256",type:"uint256"},{name:"loan",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"source",internalType:"struct IMultiSourceLoan.Source[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]}]},{name:"_delegate",internalType:"address",type:"address"},{name:"_rights",internalType:"bytes32",type:"bytes32"},{name:"_value",internalType:"bool",type:"bool"}],name:"delegate",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_executionData",internalType:"struct IMultiSourceLoan.LoanExecutionData",type:"tuple",components:[{name:"executionData",internalType:"struct IBaseLoan.ExecutionData",type:"tuple",components:[{name:"offer",internalType:"struct IBaseLoan.LoanOffer",type:"tuple",components:[{name:"offerId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"fee",internalType:"uint256",type:"uint256"},{name:"borrower",internalType:"address",type:"address"},{name:"capacity",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"},{name:"expirationTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"validators",internalType:"struct IBaseLoan.OfferValidator[]",type:"tuple[]",components:[{name:"validator",internalType:"address",type:"address"},{name:"arguments",internalType:"bytes",type:"bytes"}]}]},{name:"tokenId",internalType:"uint256",type:"uint256"},{name:"amount",internalType:"uint256",type:"uint256"},{name:"expirationTime",internalType:"uint256",type:"uint256"},{name:"callbackData",internalType:"bytes",type:"bytes"}]},{name:"lender",internalType:"address",type:"address"},{name:"borrower",internalType:"address",type:"address"},{name:"lenderOfferSignature",internalType:"bytes",type:"bytes"},{name:"borrowerOfferSignature",internalType:"bytes",type:"bytes"}]}],name:"emitLoan",outputs:[{name:"",internalType:"uint256",type:"uint256"},{name:"",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"source",internalType:"struct IMultiSourceLoan.Source[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]}]}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_loanId",internalType:"uint256",type:"uint256"},{name:"_loan",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"source",internalType:"struct IMultiSourceLoan.Source[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]}]},{name:"_target",internalType:"address",type:"address"},{name:"_data",internalType:"bytes",type:"bytes"}],name:"executeFlashAction",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_loanId",internalType:"uint256",type:"uint256"},{name:"_loan",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"source",internalType:"struct IMultiSourceLoan.Source[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]}]},{name:"_extension",internalType:"uint256",type:"uint256"}],name:"extendLoan",outputs:[{name:"",internalType:"uint256",type:"uint256"},{name:"",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"source",internalType:"struct IMultiSourceLoan.Source[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]}]}]},{stateMutability:"view",type:"function",inputs:[],name:"getCollectionManager",outputs:[{name:"",internalType:"address",type:"address"}]},{stateMutability:"view",type:"function",inputs:[],name:"getCurrencyManager",outputs:[{name:"",internalType:"address",type:"address"}]},{stateMutability:"view",type:"function",inputs:[],name:"getDelegateRegistry",outputs:[{name:"",internalType:"address",type:"address"}]},{stateMutability:"view",type:"function",inputs:[],name:"getFlashActionContract",outputs:[{name:"",internalType:"address",type:"address"}]},{stateMutability:"view",type:"function",inputs:[],name:"getImprovementMinimum",outputs:[{name:"",internalType:"struct IBaseLoan.ImprovementMinimum",type:"tuple",components:[{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"interest",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"}]}]},{stateMutability:"view",type:"function",inputs:[],name:"getLiquidationAuctionDuration",outputs:[{name:"",internalType:"uint48",type:"uint48"}]},{stateMutability:"view",type:"function",inputs:[],name:"getLiquidator",outputs:[{name:"",internalType:"address",type:"address"}]},{stateMutability:"view",type:"function",inputs:[{name:"_loanId",internalType:"uint256",type:"uint256"}],name:"getLoanHash",outputs:[{name:"",internalType:"bytes32",type:"bytes32"}]},{stateMutability:"view",type:"function",inputs:[],name:"getMaxSources",outputs:[{name:"",internalType:"uint256",type:"uint256"}]},{stateMutability:"view",type:"function",inputs:[],name:"getMinLockPeriod",outputs:[{name:"",internalType:"uint256",type:"uint256"}]},{stateMutability:"view",type:"function",inputs:[{name:"_loanPrincipal",internalType:"uint256",type:"uint256"}],name:"getMinSourcePrincipal",outputs:[{name:"",internalType:"uint256",type:"uint256"}]},{stateMutability:"view",type:"function",inputs:[],name:"getPendingProtocolFee",outputs:[{name:"",internalType:"struct IBaseLoan.ProtocolFee",type:"tuple",components:[{name:"recipient",internalType:"address",type:"address"},{name:"fraction",internalType:"uint256",type:"uint256"}]}]},{stateMutability:"view",type:"function",inputs:[],name:"getPendingProtocolFeeSetTime",outputs:[{name:"",internalType:"uint256",type:"uint256"}]},{stateMutability:"view",type:"function",inputs:[],name:"getProtocolFee",outputs:[{name:"",internalType:"struct IBaseLoan.ProtocolFee",type:"tuple",components:[{name:"recipient",internalType:"address",type:"address"},{name:"fraction",internalType:"uint256",type:"uint256"}]}]},{stateMutability:"view",type:"function",inputs:[],name:"getTotalLoansIssued",outputs:[{name:"",internalType:"uint256",type:"uint256"}]},{stateMutability:"view",type:"function",inputs:[{name:"_lender",internalType:"address",type:"address"},{name:"_offerId",internalType:"uint256",type:"uint256"}],name:"getUsedCapacity",outputs:[{name:"",internalType:"uint256",type:"uint256"}]},{stateMutability:"view",type:"function",inputs:[{name:"",internalType:"address",type:"address"},{name:"",internalType:"uint256",type:"uint256"}],name:"isBorrowerOfferCancelled",outputs:[{name:"",internalType:"bool",type:"bool"}]},{stateMutability:"view",type:"function",inputs:[{name:"",internalType:"address",type:"address"},{name:"",internalType:"uint256",type:"uint256"}],name:"isOfferCancelled",outputs:[{name:"",internalType:"bool",type:"bool"}]},{stateMutability:"view",type:"function",inputs:[{name:"",internalType:"address",type:"address"},{name:"",internalType:"uint256",type:"uint256"}],name:"isRenegotiationOfferCancelled",outputs:[{name:"",internalType:"bool",type:"bool"}]},{stateMutability:"view",type:"function",inputs:[{name:"_contract",internalType:"address",type:"address"}],name:"isWhitelistedCallbackContract",outputs:[{name:"",internalType:"bool",type:"bool"}]},{stateMutability:"view",type:"function",inputs:[{name:"",internalType:"address",type:"address"}],name:"lenderMinRenegotiationOfferId",outputs:[{name:"",internalType:"uint256",type:"uint256"}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_loanId",internalType:"uint256",type:"uint256"},{name:"_loan",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"source",internalType:"struct IMultiSourceLoan.Source[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]}]}],name:"liquidateLoan",outputs:[{name:"",internalType:"bytes",type:"bytes"}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_loanId",internalType:"uint256",type:"uint256"},{name:"_loan",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"source",internalType:"struct IMultiSourceLoan.Source[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]}]}],name:"loanLiquidated",outputs:[]},{stateMutability:"view",type:"function",inputs:[{name:"",internalType:"address",type:"address"}],name:"minOfferId",outputs:[{name:"",internalType:"uint256",type:"uint256"}]},{stateMutability:"payable",type:"function",inputs:[{name:"data",internalType:"bytes[]",type:"bytes[]"}],name:"multicall",outputs:[{name:"results",internalType:"bytes[]",type:"bytes[]"}]},{stateMutability:"view",type:"function",inputs:[],name:"name",outputs:[{name:"",internalType:"string",type:"string"}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"",internalType:"address",type:"address"},{name:"",internalType:"address",type:"address"},{name:"",internalType:"uint256",type:"uint256"},{name:"",internalType:"bytes",type:"bytes"}],name:"onERC721Received",outputs:[{name:"",internalType:"bytes4",type:"bytes4"}]},{stateMutability:"view",type:"function",inputs:[],name:"owner",outputs:[{name:"",internalType:"address",type:"address"}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_renegotiationOffer",internalType:"struct IMultiSourceLoan.RenegotiationOffer",type:"tuple",components:[{name:"renegotiationId",internalType:"uint256",type:"uint256"},{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"fee",internalType:"uint256",type:"uint256"},{name:"targetPrincipal",internalType:"uint256[]",type:"uint256[]"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"},{name:"expirationTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"}]},{name:"_loan",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"source",internalType:"struct IMultiSourceLoan.Source[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]}]},{name:"_renegotiationOfferSignature",internalType:"bytes",type:"bytes"}],name:"refinanceFull",outputs:[{name:"",internalType:"uint256",type:"uint256"},{name:"",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"source",internalType:"struct IMultiSourceLoan.Source[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]}]}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_renegotiationOffer",internalType:"struct IMultiSourceLoan.RenegotiationOffer",type:"tuple",components:[{name:"renegotiationId",internalType:"uint256",type:"uint256"},{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"fee",internalType:"uint256",type:"uint256"},{name:"targetPrincipal",internalType:"uint256[]",type:"uint256[]"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"},{name:"expirationTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"}]},{name:"_loan",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"source",internalType:"struct IMultiSourceLoan.Source[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]}]}],name:"refinancePartial",outputs:[{name:"",internalType:"uint256",type:"uint256"},{name:"",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"source",internalType:"struct IMultiSourceLoan.Source[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]}]}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_contract",internalType:"address",type:"address"}],name:"removeWhitelistedCallbackContract",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_repaymentData",internalType:"struct IMultiSourceLoan.LoanRepaymentData",type:"tuple",components:[{name:"data",internalType:"struct IMultiSourceLoan.SignableRepaymentData",type:"tuple",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"callbackData",internalType:"bytes",type:"bytes"},{name:"shouldDelegate",internalType:"bool",type:"bool"}]},{name:"loan",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"source",internalType:"struct IMultiSourceLoan.Source[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]}]},{name:"borrowerSignature",internalType:"bytes",type:"bytes"}]}],name:"repayLoan",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_delegate",internalType:"address",type:"address"},{name:"_collection",internalType:"address",type:"address"},{name:"_tokenId",internalType:"uint256",type:"uint256"}],name:"revokeDelegate",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_newDelegateRegistry",internalType:"address",type:"address"}],name:"setDelegateRegistry",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_newFlashActionContract",internalType:"address",type:"address"}],name:"setFlashActionContract",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"__maxSources",internalType:"uint256",type:"uint256"}],name:"setMaxSources",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"__minLockPeriod",internalType:"uint256",type:"uint256"}],name:"setMinLockPeriod",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[],name:"setProtocolFee",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"newOwner",internalType:"address",type:"address"}],name:"transferOwnership",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_newMinimum",internalType:"struct IBaseLoan.ImprovementMinimum",type:"tuple",components:[{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"interest",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"}]}],name:"updateImprovementMinimum",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_newDuration",internalType:"uint48",type:"uint48"}],name:"updateLiquidationAuctionDuration",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"loanLiquidator",internalType:"contract ILoanLiquidator",type:"address"}],name:"updateLiquidationContract",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_newProtocolFee",internalType:"struct IBaseLoan.ProtocolFee",type:"tuple",components:[{name:"recipient",internalType:"address",type:"address"},{name:"fraction",internalType:"uint256",type:"uint256"}]}],name:"updateProtocolFee",outputs:[]}];var $e=[{stateMutability:"nonpayable",type:"constructor",inputs:[{name:"currencyManager",internalType:"address",type:"address"},{name:"collectionManager",internalType:"address",type:"address"}]},{type:"error",inputs:[],name:"AssetNotOwnedError"},{type:"error",inputs:[],name:"CollectionNotWhitelistedError"},{type:"error",inputs:[],name:"CurrencyNotWhitelistedError"},{type:"error",inputs:[],name:"LengthMismatchError"},{type:"error",inputs:[{name:"vaultId",internalType:"uint256",type:"uint256"}],name:"NotApprovedError"},{type:"error",inputs:[{name:"vaultId",internalType:"uint256",type:"uint256"}],name:"VaultNotExistsError"},{type:"error",inputs:[],name:"WithdrawingETHError"},{type:"error",inputs:[],name:"WrongMethodError"},{type:"event",anonymous:!1,inputs:[{name:"owner",internalType:"address",type:"address",indexed:!0},{name:"spender",internalType:"address",type:"address",indexed:!0},{name:"id",internalType:"uint256",type:"uint256",indexed:!0}],name:"Approval"},{type:"event",anonymous:!1,inputs:[{name:"owner",internalType:"address",type:"address",indexed:!0},{name:"operator",internalType:"address",type:"address",indexed:!0},{name:"approved",internalType:"bool",type:"bool",indexed:!1}],name:"ApprovalForAll"},{type:"event",anonymous:!1,inputs:[{name:"vaultId",internalType:"uint256",type:"uint256",indexed:!1},{name:"token",internalType:"address",type:"address",indexed:!1},{name:"amount",internalType:"uint256",type:"uint256",indexed:!1}],name:"ERC20Deposited"},{type:"event",anonymous:!1,inputs:[{name:"vaultId",internalType:"uint256",type:"uint256",indexed:!1},{name:"token",internalType:"address",type:"address",indexed:!1},{name:"amount",internalType:"uint256",type:"uint256",indexed:!1}],name:"ERC20Withdrawn"},{type:"event",anonymous:!1,inputs:[{name:"vaultId",internalType:"uint256",type:"uint256",indexed:!1},{name:"collection",internalType:"address",type:"address",indexed:!1},{name:"tokenId",internalType:"uint256",type:"uint256",indexed:!1}],name:"ERC721Deposited"},{type:"event",anonymous:!1,inputs:[{name:"vaultId",internalType:"uint256",type:"uint256",indexed:!1},{name:"collection",internalType:"address",type:"address",indexed:!1},{name:"tokenId",internalType:"uint256",type:"uint256",indexed:!1}],name:"ERC721Withdrawn"},{type:"event",anonymous:!1,inputs:[{name:"user",internalType:"address",type:"address",indexed:!0},{name:"newOwner",internalType:"address",type:"address",indexed:!0}],name:"OwnershipTransferred"},{type:"event",anonymous:!1,inputs:[{name:"from",internalType:"address",type:"address",indexed:!0},{name:"to",internalType:"address",type:"address",indexed:!0},{name:"id",internalType:"uint256",type:"uint256",indexed:!0}],name:"Transfer"},{stateMutability:"view",type:"function",inputs:[{name:"_vaultId",internalType:"uint256",type:"uint256"},{name:"_token",internalType:"address",type:"address"}],name:"ERC20BalanceOf",outputs:[{name:"",internalType:"uint256",type:"uint256"}]},{stateMutability:"view",type:"function",inputs:[{name:"_collection",internalType:"address",type:"address"},{name:"_tokenId",internalType:"uint256",type:"uint256"}],name:"ERC721OwnerOf",outputs:[{name:"",internalType:"uint256",type:"uint256"}]},{stateMutability:"view",type:"function",inputs:[],name:"ETH",outputs:[{name:"",internalType:"address",type:"address"}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"spender",internalType:"address",type:"address"},{name:"id",internalType:"uint256",type:"uint256"}],name:"approve",outputs:[]},{stateMutability:"view",type:"function",inputs:[{name:"owner",internalType:"address",type:"address"}],name:"balanceOf",outputs:[{name:"",internalType:"uint256",type:"uint256"}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_vaultId",internalType:"uint256",type:"uint256"},{name:"_assetRecipient",internalType:"address",type:"address"}],name:"burn",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_vaultId",internalType:"uint256",type:"uint256"},{name:"_collections",internalType:"address[]",type:"address[]"},{name:"_tokenIds",internalType:"uint256[]",type:"uint256[]"},{name:"_tokens",internalType:"address[]",type:"address[]"}],name:"burnAndWithdraw",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_vaultId",internalType:"uint256",type:"uint256"},{name:"_token",internalType:"address",type:"address"},{name:"_amount",internalType:"uint256",type:"uint256"}],name:"depositERC20",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_vaultId",internalType:"uint256",type:"uint256"},{name:"_collection",internalType:"address",type:"address"},{name:"_tokenId",internalType:"uint256",type:"uint256"}],name:"depositERC721",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_vaultId",internalType:"uint256",type:"uint256"},{name:"_collection",internalType:"address",type:"address"},{name:"_tokenIds",internalType:"uint256[]",type:"uint256[]"}],name:"depositERC721s",outputs:[]},{stateMutability:"payable",type:"function",inputs:[{name:"_vaultId",internalType:"uint256",type:"uint256"}],name:"depositEth",outputs:[]},{stateMutability:"view",type:"function",inputs:[{name:"",internalType:"uint256",type:"uint256"}],name:"getApproved",outputs:[{name:"",internalType:"address",type:"address"}]},{stateMutability:"view",type:"function",inputs:[{name:"",internalType:"address",type:"address"},{name:"",internalType:"address",type:"address"}],name:"isApprovedForAll",outputs:[{name:"",internalType:"bool",type:"bool"}]},{stateMutability:"nonpayable",type:"function",inputs:[],name:"mint",outputs:[{name:"",internalType:"uint256",type:"uint256"}]},{stateMutability:"view",type:"function",inputs:[],name:"name",outputs:[{name:"",internalType:"string",type:"string"}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"",internalType:"address",type:"address"},{name:"",internalType:"address",type:"address"},{name:"",internalType:"uint256",type:"uint256"},{name:"",internalType:"bytes",type:"bytes"}],name:"onERC721Received",outputs:[{name:"",internalType:"bytes4",type:"bytes4"}]},{stateMutability:"view",type:"function",inputs:[],name:"owner",outputs:[{name:"",internalType:"address",type:"address"}]},{stateMutability:"view",type:"function",inputs:[{name:"id",internalType:"uint256",type:"uint256"}],name:"ownerOf",outputs:[{name:"owner",internalType:"address",type:"address"}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"from",internalType:"address",type:"address"},{name:"to",internalType:"address",type:"address"},{name:"id",internalType:"uint256",type:"uint256"}],name:"safeTransferFrom",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"from",internalType:"address",type:"address"},{name:"to",internalType:"address",type:"address"},{name:"id",internalType:"uint256",type:"uint256"},{name:"data",internalType:"bytes",type:"bytes"}],name:"safeTransferFrom",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"operator",internalType:"address",type:"address"},{name:"approved",internalType:"bool",type:"bool"}],name:"setApprovalForAll",outputs:[]},{stateMutability:"view",type:"function",inputs:[{name:"interfaceId",internalType:"bytes4",type:"bytes4"}],name:"supportsInterface",outputs:[{name:"",internalType:"bool",type:"bool"}]},{stateMutability:"view",type:"function",inputs:[],name:"symbol",outputs:[{name:"",internalType:"string",type:"string"}]},{stateMutability:"pure",type:"function",inputs:[{name:"_vaultId",internalType:"uint256",type:"uint256"}],name:"tokenURI",outputs:[{name:"",internalType:"string",type:"string"}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"from",internalType:"address",type:"address"},{name:"to",internalType:"address",type:"address"},{name:"id",internalType:"uint256",type:"uint256"}],name:"transferFrom",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"newOwner",internalType:"address",type:"address"}],name:"transferOwnership",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_vaultId",internalType:"uint256",type:"uint256"},{name:"_token",internalType:"address",type:"address"}],name:"withdrawERC20",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_vaultId",internalType:"uint256",type:"uint256"},{name:"_tokens",internalType:"address[]",type:"address[]"}],name:"withdrawERC20s",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_vaultId",internalType:"uint256",type:"uint256"},{name:"_collection",internalType:"address",type:"address"},{name:"_tokenId",internalType:"uint256",type:"uint256"}],name:"withdrawERC721",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_vaultId",internalType:"uint256",type:"uint256"},{name:"_collections",internalType:"address[]",type:"address[]"},{name:"_tokenIds",internalType:"uint256[]",type:"uint256[]"}],name:"withdrawERC721s",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_vaultId",internalType:"uint256",type:"uint256"}],name:"withdrawEth",outputs:[]}];var Qe="MarketPlace.Native",C="GONDI_MULTI_SOURCE_LOAN",M=l((p,e)=>K(p)&&p.toLowerCase()===e?.toLowerCase(),"areSameAddress");import{encodeAbiParameters as ln}from"viem";import{isAddress as nn,zeroAddress as an}from"viem";import{goerli as rn}from"viem/chains";var sn=31337,O=l(p=>!p||!nn(p)?null:p,"ensureAddress"),ze="0xb6dfcbc1661d0c0bced9591d06e964f97d41a35984704ffe61f8e062e43919c8",g=l(p=>p?.id===sn?{MultiSourceLoan:{v4:O(process.env.GONDI_MULTI_SOURCE_LOAN_V4)??"0xCf7Ed3AccA5a467e9e704C703E8D87F634fB0Fc9",v5:O(process.env.GONDI_MULTI_SOURCE_LOAN_V5)??"0x610178dA211FEF7D417bC0e6FeD39F05609AD788",v6:O(process.env.GONDI_MULTI_SOURCE_LOAN_V6)??"0x59b670e9fA9D0A427751Af201D676719a970857b"},AuctionLoanLiquidator:{v4:O(process.env.GONDI_AUCTION_LOAN_LIQUIDATOR_V4)??"0x9fE46736679d2D9a65F0992F2272dE9f3c7fa6e0",v5:O(process.env.GONDI_AUCTION_LOAN_LIQUIDATOR_V5)??"0x8A791620dd6260079BF849Dc5567aDC3F2FdC318",v6:O(process.env.GONDI_AUCTION_LOAN_LIQUIDATOR_V6)??"0xc6e7DF5E7b4f2A278906862b61205850344D4e7d"},UserVault:{v5:O(process.env.GONDI_USER_VAULT_V5)??"0x0DCd1Bf9A1b36cE34237eEaFef220932846BCD82",v6:O(process.env.GONDI_USER_VAULT_V6)??"0x4A679253410272dd5232B3Ff7cF5dbB88f295319"},LeverageAddress:O(process.env.GONDI_LEVERAGE)??"0xA51c1fc2f0D1a1b8494Ed1FE312d7C3a78Ed91C0",SeaportAddress:O(process.env.SEAPORT)??"0x00000000000000ADc04C56Bf30aC9d3c0aAF14dC",CryptoPunksAddress:O(process.env.CRYPTO_PUNKS)??"0xb47e3cd837ddf8e4c57f05d70ab865de6e193bbb"}:p?.id===rn.id?{MultiSourceLoan:{v4:"0x60C20627429668F267b5cF55c6605c665C69887D",v5:"0xTODO",v6:"0xTODO"},AuctionLoanLiquidator:{v4:"0x29C73faa2f9180ea5a7B0bEC243ebc63a5B4f280",v5:"0xTODO",v6:"0xTODO"},UserVault:{v5:"0xTODO",v6:"0xTODO"},LeverageAddress:"0xTODO",SeaportAddress:"0x00000000000000ADc04C56Bf30aC9d3c0aAF14dC",CryptoPunksAddress:"0xb47e3cd837ddf8e4c57f05d70ab865de6e193bbb"}:{MultiSourceLoan:{v4:"0xCa5a494Ca20483e21ec1E41FE1D9461Da77595Bd",v5:"0x478f6F994C6fb3cf3e444a489b3AD9edB8cCaE16",v6:"0xTODO"},AuctionLoanLiquidator:{v4:"0x237e4421C742d843Fdd96D22294D338507e17091",v5:"0x97d34635b605c2f1630d6b4c6c5d222b8a2ca47d",v6:"0xTODO"},UserVault:{v5:"0x14a6Dcebb2Bb73aae1b199CCAadA75247b81976D",v6:"0xC9f152168BC7b75F76b74e1f382F90bC2FeDd15f"},LeverageAddress:"0x87Ce6e8124fFd68fa721FcC7f35fdA14A11E233e",SeaportAddress:"0x00000000000000ADc04C56Bf30aC9d3c0aAF14dC",CryptoPunksAddress:"0xb47e3cd837ddf8e4c57f05d70ab865de6e193bbb"},"getContracts"),Ge=l(()=>({reservoirApiKey:"5b472f8c-b471-531a-a450-56e428e5a00a",infuraApiKey:"9b7006cb0b0b42f1813ae9418741fbb5"}),"getApiKeys"),_=l(()=>({WETH_ADDRESS:"0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",ETH_ADDRESS:an,USDC_ADDRESS:"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"}),"getCurrencies");var Xe=[{stateMutability:"nonpayable",type:"constructor",inputs:[{name:"currencyManager",internalType:"address",type:"address"},{name:"collectionManager",internalType:"address",type:"address"},{name:"triggerFee",internalType:"uint256",type:"uint256"}]},{type:"error",inputs:[],name:"AuctionAlreadyInProgressError"},{type:"error",inputs:[{name:"_contract",internalType:"address",type:"address"},{name:"_tokenId",internalType:"uint256",type:"uint256"}],name:"AuctionNotExistsError"},{type:"error",inputs:[{name:"_expiration",internalType:"uint96",type:"uint96"}],name:"AuctionNotOverError"},{type:"error",inputs:[{name:"_expiration",internalType:"uint96",type:"uint96"}],name:"AuctionOverError"},{type:"error",inputs:[],name:"CollectionNotWhitelistedError"},{type:"error",inputs:[],name:"CurrencyNotWhitelistedError"},{type:"error",inputs:[{name:"triggerFee",internalType:"uint256",type:"uint256"}],name:"InvalidTriggerFee"},{type:"error",inputs:[{name:"_loan",internalType:"address",type:"address"}],name:"LoanNotAcceptedError"},{type:"error",inputs:[{name:"_minBid",internalType:"uint256",type:"uint256"}],name:"MinBidError"},{type:"error",inputs:[{name:"_owner",internalType:"address",type:"address"}],name:"NFTNotOwnedError"},{type:"error",inputs:[],name:"NoBidsError"},{type:"error",inputs:[],name:"ZeroAddressError"},{type:"event",anonymous:!1,inputs:[{name:"loanContract",internalType:"address",type:"address",indexed:!1},{name:"loanId",internalType:"uint256",type:"uint256",indexed:!1},{name:"auctionContract",internalType:"address",type:"address",indexed:!1},{name:"tokenId",internalType:"uint256",type:"uint256",indexed:!1},{name:"asset",internalType:"address",type:"address",indexed:!1},{name:"highestBid",internalType:"uint256",type:"uint256",indexed:!1},{name:"settler",internalType:"address",type:"address",indexed:!1},{name:"triggerFee",internalType:"uint256",type:"uint256",indexed:!1}],name:"AuctionSettled"},{type:"event",anonymous:!1,inputs:[{name:"auctionContract",internalType:"address",type:"address",indexed:!1},{name:"tokenId",internalType:"uint256",type:"uint256",indexed:!1},{name:"newBidder",internalType:"address",type:"address",indexed:!1},{name:"bid",internalType:"uint256",type:"uint256",indexed:!1},{name:"loanAddress",internalType:"address",type:"address",indexed:!1},{name:"loanId",internalType:"uint256",type:"uint256",indexed:!1}],name:"BidPlaced"},{type:"event",anonymous:!1,inputs:[{name:"loan",internalType:"address",type:"address",indexed:!1}],name:"LoanContractAdded"},{type:"event",anonymous:!1,inputs:[{name:"loan",internalType:"address",type:"address",indexed:!1}],name:"LoanContractRemoved"},{type:"event",anonymous:!1,inputs:[{name:"loanAddress",internalType:"address",type:"address",indexed:!1},{name:"loanId",internalType:"uint256",type:"uint256",indexed:!1},{name:"duration",internalType:"uint96",type:"uint96",indexed:!1},{name:"asset",internalType:"address",type:"address",indexed:!1}],name:"LoanLiquidationStarted"},{type:"event",anonymous:!1,inputs:[{name:"user",internalType:"address",type:"address",indexed:!0},{name:"newOwner",internalType:"address",type:"address",indexed:!0}],name:"OwnershipTransferred"},{type:"event",anonymous:!1,inputs:[{name:"triggerFee",internalType:"uint256",type:"uint256",indexed:!1}],name:"TriggerFeeUpdated"},{stateMutability:"view",type:"function",inputs:[],name:"MAX_TRIGGER_FEE",outputs:[{name:"",internalType:"uint256",type:"uint256"}]},{stateMutability:"view",type:"function",inputs:[],name:"MIN_INCREMENT_BPS",outputs:[{name:"",internalType:"uint256",type:"uint256"}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_loanContract",internalType:"address",type:"address"}],name:"addLoanContract",outputs:[]},{stateMutability:"view",type:"function",inputs:[{name:"_contract",internalType:"address",type:"address"},{name:"_tokenId",internalType:"uint256",type:"uint256"}],name:"getAuction",outputs:[{name:"",internalType:"struct AuctionLoanLiquidator.Auction",type:"tuple",components:[{name:"loanAddress",internalType:"address",type:"address"},{name:"loanId",internalType:"uint256",type:"uint256"},{name:"highestBid",internalType:"uint256",type:"uint256"},{name:"highestBidder",internalType:"address",type:"address"},{name:"duration",internalType:"uint96",type:"uint96"},{name:"asset",internalType:"address",type:"address"},{name:"startTime",internalType:"uint96",type:"uint96"},{name:"originator",internalType:"address",type:"address"},{name:"lastBidTime",internalType:"uint96",type:"uint96"}]}]},{stateMutability:"view",type:"function",inputs:[],name:"getTriggerFee",outputs:[{name:"",internalType:"uint256",type:"uint256"}]},{stateMutability:"view",type:"function",inputs:[],name:"getValidLoanContracts",outputs:[{name:"",internalType:"address[]",type:"address[]"}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_loanId",internalType:"uint256",type:"uint256"},{name:"_contract",internalType:"address",type:"address"},{name:"_tokenId",internalType:"uint256",type:"uint256"},{name:"_asset",internalType:"address",type:"address"},{name:"_duration",internalType:"uint96",type:"uint96"},{name:"_originator",internalType:"address",type:"address"}],name:"liquidateLoan",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"",internalType:"address",type:"address"},{name:"",internalType:"address",type:"address"},{name:"",internalType:"uint256",type:"uint256"},{name:"",internalType:"bytes",type:"bytes"}],name:"onERC721Received",outputs:[{name:"",internalType:"bytes4",type:"bytes4"}]},{stateMutability:"view",type:"function",inputs:[],name:"owner",outputs:[{name:"",internalType:"address",type:"address"}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_contract",internalType:"address",type:"address"},{name:"_tokenId",internalType:"uint256",type:"uint256"},{name:"_bid",internalType:"uint256",type:"uint256"}],name:"placeBid",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_loanContract",internalType:"address",type:"address"}],name:"removeLoanContract",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_contract",internalType:"address",type:"address"},{name:"_tokenId",internalType:"uint256",type:"uint256"},{name:"_loan",internalType:"bytes",type:"bytes"}],name:"settleAuction",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"newOwner",internalType:"address",type:"address"}],name:"transferOwnership",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"triggerFee",internalType:"uint256",type:"uint256"}],name:"updateTriggerFee",outputs:[]}];var Ze=[{stateMutability:"nonpayable",type:"constructor",inputs:[{name:"loanLiquidator",internalType:"address",type:"address"},{name:"protocolFee",internalType:"struct IBaseLoan.ProtocolFee",type:"tuple",components:[{name:"recipient",internalType:"address",type:"address"},{name:"fraction",internalType:"uint256",type:"uint256"}]},{name:"currencyManager",internalType:"address",type:"address"},{name:"collectionManager",internalType:"address",type:"address"},{name:"maxSources",internalType:"uint8",type:"uint8"}]},{type:"error",inputs:[],name:"AddressZeroError"},{type:"error",inputs:[{name:"_lender",internalType:"address",type:"address"},{name:"_offerId",internalType:"uint256",type:"uint256"}],name:"CancelledOrExecutedOfferError"},{type:"error",inputs:[{name:"_lender",internalType:"address",type:"address"},{name:"_offerId",internalType:"uint256",type:"uint256"}],name:"CancelledRenegotiationOffer"},{type:"error",inputs:[{name:"_lender",internalType:"address",type:"address"},{name:"_renegotiationId",internalType:"uint256",type:"uint256"}],name:"CancelledRenegotiationOfferError"},{type:"error",inputs:[],name:"CannotLiquidateError"},{type:"error",inputs:[],name:"CollectionNotWhitelistedError"},{type:"error",inputs:[],name:"CurrencyNotWhitelistedError"},{type:"error",inputs:[],name:"ExpiredLoanError"},{type:"error",inputs:[{name:"_expirationTime",internalType:"uint256",type:"uint256"}],name:"ExpiredOfferError"},{type:"error",inputs:[{name:"_expirationTime",internalType:"uint256",type:"uint256"}],name:"ExpiredRenegotiationOfferError"},{type:"error",inputs:[],name:"InvalidBorrowerError"},{type:"error",inputs:[],name:"InvalidCallbackError"},{type:"error",inputs:[],name:"InvalidCollateralIdError"},{type:"error",inputs:[],name:"InvalidLiquidationError"},{type:"error",inputs:[{name:"_loanId",internalType:"uint256",type:"uint256"}],name:"InvalidLoanError"},{type:"error",inputs:[{name:"_fraction",internalType:"uint256",type:"uint256"}],name:"InvalidProtocolFeeError"},{type:"error",inputs:[],name:"InvalidRenegotiationOfferError"},{type:"error",inputs:[],name:"InvalidSignatureError"},{type:"error",inputs:[],name:"InvalidSignerError"},{type:"error",inputs:[],name:"LengthMismatchError"},{type:"error",inputs:[{name:"_liquidator",internalType:"address",type:"address"}],name:"LiquidatorOnlyError"},{type:"error",inputs:[],name:"LoanExpiredError"},{type:"error",inputs:[{name:"_expirationTime",internalType:"uint256",type:"uint256"}],name:"LoanNotDueError"},{type:"error",inputs:[{name:"_loanId",internalType:"uint256",type:"uint256"}],name:"LoanNotFoundError"},{type:"error",inputs:[{name:"_lender",internalType:"address",type:"address"},{name:"_newMinOfferId",internalType:"uint256",type:"uint256"},{name:"_minOfferId",internalType:"uint256",type:"uint256"}],name:"LowOfferIdError"},{type:"error",inputs:[{name:"_lender",internalType:"address",type:"address"},{name:"_newMinRenegotiationOfferId",internalType:"uint256",type:"uint256"},{name:"_minOfferId",internalType:"uint256",type:"uint256"}],name:"LowRenegotiationOfferIdError"},{type:"error",inputs:[],name:"MaxCapacityExceededError"},{type:"error",inputs:[{name:"_id",internalType:"uint256",type:"uint256"}],name:"NotMintedError"},{type:"error",inputs:[],name:"NotStrictlyImprovedError"},{type:"error",inputs:[],name:"OnlyBorrowerCallableError"},{type:"error",inputs:[],name:"OnlyLenderOrSignerCallableError"},{type:"error",inputs:[],name:"PartialOfferCannotChangeDurationError"},{type:"error",inputs:[],name:"PartialOfferCannotHaveFeeError"},{type:"error",inputs:[],name:"RefinanceFullError"},{type:"error",inputs:[],name:"RepaymentError"},{type:"error",inputs:[{name:"sourcePrincipal",internalType:"uint256",type:"uint256"},{name:"loanPrincipal",internalType:"uint256",type:"uint256"}],name:"TargetPrincipalTooLowError"},{type:"error",inputs:[{name:"_pendingProtocolFeeSetTime",internalType:"uint256",type:"uint256"}],name:"TooEarlyError"},{type:"error",inputs:[{name:"sources",internalType:"uint8",type:"uint8"}],name:"TooManySourcesError"},{type:"error",inputs:[],name:"Unauthorized"},{type:"error",inputs:[{name:"_authorized",internalType:"address",type:"address"}],name:"UnauthorizedError"},{type:"error",inputs:[],name:"ZeroAddressError"},{type:"error",inputs:[],name:"ZeroDurationError"},{type:"error",inputs:[],name:"ZeroInterestError"},{type:"event",anonymous:!1,inputs:[{name:"lender",internalType:"address",type:"address",indexed:!1},{name:"minOfferId",internalType:"uint256",type:"uint256",indexed:!1}],name:"AllOffersCancelled"},{type:"event",anonymous:!1,inputs:[{name:"lender",internalType:"address",type:"address",indexed:!1},{name:"minRenegotiationId",internalType:"uint256",type:"uint256",indexed:!1}],name:"AllRenegotiationOffersCancelled"},{type:"event",anonymous:!1,inputs:[{name:"lender",internalType:"address",type:"address",indexed:!1},{name:"signer",internalType:"address",type:"address",indexed:!1}],name:"ApprovedSigner"},{type:"event",anonymous:!1,inputs:[{name:"minimum",internalType:"struct IBaseLoan.ImprovementMinimum",type:"tuple",components:[{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"interest",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"}],indexed:!1}],name:"ImprovementMinimumUpdated"},{type:"event",anonymous:!1,inputs:[{name:"newDuration",internalType:"uint256",type:"uint256",indexed:!1}],name:"LiquidationAuctionDurationUpdated"},{type:"event",anonymous:!1,inputs:[{name:"liquidator",internalType:"address",type:"address",indexed:!1}],name:"LiquidationContractUpdated"},{type:"event",anonymous:!1,inputs:[{name:"loanId",internalType:"uint256",type:"uint256",indexed:!1},{name:"offerId",internalType:"uint256",type:"uint256",indexed:!1},{name:"loan",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"source",internalType:"struct IMultiSourceLoan.Source[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]}],indexed:!1},{name:"fee",internalType:"uint256",type:"uint256",indexed:!1}],name:"LoanEmitted"},{type:"event",anonymous:!1,inputs:[{name:"loanId",internalType:"uint256",type:"uint256",indexed:!1}],name:"LoanForeclosed"},{type:"event",anonymous:!1,inputs:[{name:"loanId",internalType:"uint256",type:"uint256",indexed:!1},{name:"repayment",internalType:"uint256",type:"uint256",indexed:!1}],name:"LoanLiquidated"},{type:"event",anonymous:!1,inputs:[{name:"renegotiationId",internalType:"uint256",type:"uint256",indexed:!1},{name:"oldLoanId",internalType:"uint256",type:"uint256",indexed:!1},{name:"newLoanId",internalType:"uint256",type:"uint256",indexed:!1},{name:"loan",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"source",internalType:"struct IMultiSourceLoan.Source[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]}],indexed:!1},{name:"fee",internalType:"uint256",type:"uint256",indexed:!1}],name:"LoanRefinanced"},{type:"event",anonymous:!1,inputs:[{name:"loanId",internalType:"uint256",type:"uint256",indexed:!1},{name:"totalRepayment",internalType:"uint256",type:"uint256",indexed:!1},{name:"fee",internalType:"uint256",type:"uint256",indexed:!1}],name:"LoanRepaid"},{type:"event",anonymous:!1,inputs:[{name:"loanId",internalType:"uint256",type:"uint256",indexed:!1},{name:"liquidator",internalType:"address",type:"address",indexed:!1}],name:"LoanSentToLiquidator"},{type:"event",anonymous:!1,inputs:[{name:"newMax",internalType:"uint8",type:"uint8",indexed:!1}],name:"MaxSourcesUpdated"},{type:"event",anonymous:!1,inputs:[{name:"lender",internalType:"address",type:"address",indexed:!1},{name:"offerId",internalType:"uint256",type:"uint256",indexed:!1}],name:"OfferCancelled"},{type:"event",anonymous:!1,inputs:[{name:"user",internalType:"address",type:"address",indexed:!0},{name:"newOwner",internalType:"address",type:"address",indexed:!0}],name:"OwnershipTransferred"},{type:"event",anonymous:!1,inputs:[{name:"fee",internalType:"struct IBaseLoan.ProtocolFee",type:"tuple",components:[{name:"recipient",internalType:"address",type:"address"},{name:"fraction",internalType:"uint256",type:"uint256"}],indexed:!1}],name:"ProtocolFeePendingUpdate"},{type:"event",anonymous:!1,inputs:[{name:"fee",internalType:"struct IBaseLoan.ProtocolFee",type:"tuple",components:[{name:"recipient",internalType:"address",type:"address"},{name:"fraction",internalType:"uint256",type:"uint256"}],indexed:!1}],name:"ProtocolFeeUpdated"},{type:"event",anonymous:!1,inputs:[{name:"lender",internalType:"address",type:"address",indexed:!1},{name:"renegotiationId",internalType:"uint256",type:"uint256",indexed:!1}],name:"RenegotiationOfferCancelled"},{type:"event",anonymous:!1,inputs:[{name:"contract_added",internalType:"address",type:"address",indexed:!1}],name:"WhitelistedCallbackContractAdded"},{type:"event",anonymous:!1,inputs:[{name:"contract_removed",internalType:"address",type:"address",indexed:!1}],name:"WhitelistedCallbackContractRemoved"},{stateMutability:"view",type:"function",inputs:[],name:"DOMAIN_SEPARATOR",outputs:[{name:"",internalType:"bytes32",type:"bytes32"}]},{stateMutability:"view",type:"function",inputs:[],name:"FEE_UPDATE_NOTICE",outputs:[{name:"",internalType:"uint256",type:"uint256"}]},{stateMutability:"view",type:"function",inputs:[],name:"INITIAL_DOMAIN_SEPARATOR",outputs:[{name:"",internalType:"bytes32",type:"bytes32"}]},{stateMutability:"view",type:"function",inputs:[],name:"MAX_PROTOCOL_FEE",outputs:[{name:"",internalType:"uint256",type:"uint256"}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_contract",internalType:"address",type:"address"}],name:"addWhitelistedCallbackContract",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_signer",internalType:"address",type:"address"}],name:"approveSigner",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_lender",internalType:"address",type:"address"},{name:"_minOfferId",internalType:"uint256",type:"uint256"}],name:"cancelAllOffers",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_lender",internalType:"address",type:"address"},{name:"_minRenegotiationId",internalType:"uint256",type:"uint256"}],name:"cancelAllRenegotiationOffers",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_lender",internalType:"address",type:"address"},{name:"_offerId",internalType:"uint256",type:"uint256"}],name:"cancelOffer",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_lender",internalType:"address",type:"address"},{name:"_offerIds",internalType:"uint256[]",type:"uint256[]"}],name:"cancelOffers",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_lender",internalType:"address",type:"address"},{name:"_renegotiationId",internalType:"uint256",type:"uint256"}],name:"cancelRenegotiationOffer",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_lender",internalType:"address",type:"address"},{name:"_renegotiationIds",internalType:"uint256[]",type:"uint256[]"}],name:"cancelRenegotiationOffers",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_loanOffer",internalType:"struct IBaseLoan.LoanOffer",type:"tuple",components:[{name:"offerId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"fee",internalType:"uint256",type:"uint256"},{name:"borrower",internalType:"address",type:"address"},{name:"capacity",internalType:"uint256",type:"uint256"},{name:"signer",internalType:"address",type:"address"},{name:"requiresLiquidation",internalType:"bool",type:"bool"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"},{name:"expirationTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"validators",internalType:"struct IBaseLoan.OfferValidator[]",type:"tuple[]",components:[{name:"validator",internalType:"address",type:"address"},{name:"arguments",internalType:"bytes",type:"bytes"}]}]},{name:"_tokenId",internalType:"uint256",type:"uint256"},{name:"_lenderOfferSignature",internalType:"bytes",type:"bytes"},{name:"_withCallback",internalType:"bool",type:"bool"}],name:"emitLoan",outputs:[{name:"",internalType:"uint256",type:"uint256"},{name:"",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"source",internalType:"struct IMultiSourceLoan.Source[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]}]}]},{stateMutability:"view",type:"function",inputs:[{name:"",internalType:"address",type:"address"}],name:"getApprovedSigner",outputs:[{name:"",internalType:"address",type:"address"}]},{stateMutability:"view",type:"function",inputs:[],name:"getCollectionManager",outputs:[{name:"",internalType:"address",type:"address"}]},{stateMutability:"view",type:"function",inputs:[],name:"getCurrencyManager",outputs:[{name:"",internalType:"address",type:"address"}]},{stateMutability:"view",type:"function",inputs:[],name:"getImprovementMinimum",outputs:[{name:"",internalType:"struct IBaseLoan.ImprovementMinimum",type:"tuple",components:[{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"interest",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"}]}]},{stateMutability:"view",type:"function",inputs:[],name:"getLiquidationAuctionDuration",outputs:[{name:"",internalType:"uint48",type:"uint48"}]},{stateMutability:"view",type:"function",inputs:[],name:"getLiquidator",outputs:[{name:"",internalType:"address",type:"address"}]},{stateMutability:"view",type:"function",inputs:[{name:"_loanId",internalType:"uint256",type:"uint256"}],name:"getLoanHash",outputs:[{name:"",internalType:"bytes32",type:"bytes32"}]},{stateMutability:"view",type:"function",inputs:[],name:"getMaxSources",outputs:[{name:"",internalType:"uint8",type:"uint8"}]},{stateMutability:"view",type:"function",inputs:[{name:"_loanPrincipal",internalType:"uint256",type:"uint256"}],name:"getMinSourcePrincipal",outputs:[{name:"",internalType:"uint256",type:"uint256"}]},{stateMutability:"view",type:"function",inputs:[],name:"getPendingProtocolFee",outputs:[{name:"",internalType:"struct IBaseLoan.ProtocolFee",type:"tuple",components:[{name:"recipient",internalType:"address",type:"address"},{name:"fraction",internalType:"uint256",type:"uint256"}]}]},{stateMutability:"view",type:"function",inputs:[],name:"getPendingProtocolFeeSetTime",outputs:[{name:"",internalType:"uint256",type:"uint256"}]},{stateMutability:"view",type:"function",inputs:[],name:"getProtocolFee",outputs:[{name:"",internalType:"struct IBaseLoan.ProtocolFee",type:"tuple",components:[{name:"recipient",internalType:"address",type:"address"},{name:"fraction",internalType:"uint256",type:"uint256"}]}]},{stateMutability:"view",type:"function",inputs:[],name:"getTotalLoansIssued",outputs:[{name:"",internalType:"uint256",type:"uint256"}]},{stateMutability:"view",type:"function",inputs:[{name:"_lender",internalType:"address",type:"address"},{name:"_offerId",internalType:"uint256",type:"uint256"}],name:"getUsedCapacity",outputs:[{name:"",internalType:"uint256",type:"uint256"}]},{stateMutability:"view",type:"function",inputs:[{name:"",internalType:"address",type:"address"},{name:"",internalType:"uint256",type:"uint256"}],name:"isOfferCancelled",outputs:[{name:"",internalType:"bool",type:"bool"}]},{stateMutability:"view",type:"function",inputs:[{name:"",internalType:"address",type:"address"},{name:"",internalType:"uint256",type:"uint256"}],name:"isRenegotiationOfferCancelled",outputs:[{name:"",internalType:"bool",type:"bool"}]},{stateMutability:"view",type:"function",inputs:[{name:"_contract",internalType:"address",type:"address"}],name:"isWhitelistedCallbackContract",outputs:[{name:"",internalType:"bool",type:"bool"}]},{stateMutability:"view",type:"function",inputs:[{name:"",internalType:"address",type:"address"}],name:"lenderMinOfferId",outputs:[{name:"",internalType:"uint256",type:"uint256"}]},{stateMutability:"view",type:"function",inputs:[{name:"",internalType:"address",type:"address"}],name:"lenderMinRenegotiationOfferId",outputs:[{name:"",internalType:"uint256",type:"uint256"}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_loanId",internalType:"uint256",type:"uint256"},{name:"_loan",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"source",internalType:"struct IMultiSourceLoan.Source[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]}]}],name:"liquidateLoan",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_collateralAddress",internalType:"address",type:"address"},{name:"_collateralTokenId",internalType:"uint256",type:"uint256"},{name:"_loanId",internalType:"uint256",type:"uint256"},{name:"_repayment",internalType:"uint256",type:"uint256"},{name:"_loan",internalType:"bytes",type:"bytes"}],name:"loanLiquidated",outputs:[]},{stateMutability:"view",type:"function",inputs:[],name:"name",outputs:[{name:"",internalType:"string",type:"string"}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"",internalType:"address",type:"address"},{name:"",internalType:"address",type:"address"},{name:"",internalType:"uint256",type:"uint256"},{name:"",internalType:"bytes",type:"bytes"}],name:"onERC721Received",outputs:[{name:"",internalType:"bytes4",type:"bytes4"}]},{stateMutability:"view",type:"function",inputs:[],name:"owner",outputs:[{name:"",internalType:"address",type:"address"}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_renegotiationOffer",internalType:"struct IMultiSourceLoan.RenegotiationOffer",type:"tuple",components:[{name:"renegotiationId",internalType:"uint256",type:"uint256"},{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"fee",internalType:"uint256",type:"uint256"},{name:"signer",internalType:"address",type:"address"},{name:"targetPrincipal",internalType:"uint256[]",type:"uint256[]"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"},{name:"expirationTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"strictImprovement",internalType:"bool",type:"bool"}]},{name:"_loan",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"source",internalType:"struct IMultiSourceLoan.Source[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]}]},{name:"_renegotiationOfferSignature",internalType:"bytes",type:"bytes"}],name:"refinanceFull",outputs:[{name:"",internalType:"uint256",type:"uint256"},{name:"",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"source",internalType:"struct IMultiSourceLoan.Source[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]}]}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_renegotiationOffer",internalType:"struct IMultiSourceLoan.RenegotiationOffer",type:"tuple",components:[{name:"renegotiationId",internalType:"uint256",type:"uint256"},{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"fee",internalType:"uint256",type:"uint256"},{name:"signer",internalType:"address",type:"address"},{name:"targetPrincipal",internalType:"uint256[]",type:"uint256[]"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"},{name:"expirationTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"strictImprovement",internalType:"bool",type:"bool"}]},{name:"_loan",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"source",internalType:"struct IMultiSourceLoan.Source[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]}]}],name:"refinancePartial",outputs:[{name:"",internalType:"uint256",type:"uint256"},{name:"",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"source",internalType:"struct IMultiSourceLoan.Source[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]}]}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_renegotiationOffer",internalType:"struct IMultiSourceLoan.RenegotiationOffer[]",type:"tuple[]",components:[{name:"renegotiationId",internalType:"uint256",type:"uint256"},{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"fee",internalType:"uint256",type:"uint256"},{name:"signer",internalType:"address",type:"address"},{name:"targetPrincipal",internalType:"uint256[]",type:"uint256[]"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"},{name:"expirationTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"strictImprovement",internalType:"bool",type:"bool"}]},{name:"_loan",internalType:"struct IMultiSourceLoan.Loan[]",type:"tuple[]",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"source",internalType:"struct IMultiSourceLoan.Source[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]}]}],name:"refinancePartialBatch",outputs:[{name:"loanId",internalType:"uint256[]",type:"uint256[]"},{name:"loans",internalType:"struct IMultiSourceLoan.Loan[]",type:"tuple[]",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"source",internalType:"struct IMultiSourceLoan.Source[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]}]}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_contract",internalType:"address",type:"address"}],name:"removeWhitelistedCallbackContract",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_collateralTo",internalType:"address",type:"address"},{name:"_loanId",internalType:"uint256",type:"uint256"},{name:"_loan",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"source",internalType:"struct IMultiSourceLoan.Source[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]}]},{name:"_withCallback",internalType:"bool",type:"bool"}],name:"repayLoan",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"maxSources",internalType:"uint8",type:"uint8"}],name:"setMaxSources",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[],name:"setProtocolFee",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"newOwner",internalType:"address",type:"address"}],name:"transferOwnership",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_newMinimum",internalType:"struct IBaseLoan.ImprovementMinimum",type:"tuple",components:[{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"interest",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"}]}],name:"updateImprovementMinimum",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_newDuration",internalType:"uint48",type:"uint48"}],name:"updateLiquidationAuctionDuration",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"loanLiquidator",internalType:"contract ILoanLiquidator",type:"address"}],name:"updateLiquidationContract",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_newProtocolFee",internalType:"struct IBaseLoan.ProtocolFee",type:"tuple",components:[{name:"recipient",internalType:"address",type:"address"},{name:"fraction",internalType:"uint256",type:"uint256"}]}],name:"updateProtocolFee",outputs:[]}];import{createPublicClient as pn,createTransport as on,getContract as yn}from"viem";var b=class{abi;address;bcClient;wallet;contract;safeContractWrite;constructor({walletClient:e,address:t,abi:n}){this.wallet=e;let a=pn({transport:()=>on(e.transport)});this.bcClient=a,this.address=t,this.abi=n,this.contract=yn({address:this.address,abi:this.abi,walletClient:e,publicClient:this.bcClient}),this.safeContractWrite=new Proxy({},{get(i,r){return async(s,o={})=>{let{request:y}=await a.simulateContract({address:t,abi:n,functionName:r,args:s,account:e.account,...o});return e.writeContract(y)}}})}};l(b,"BaseContract");var ge=class extends b{constructor({walletClient:e}){let{AuctionLoanLiquidator:{v4:t}}=g(e.chain);super({walletClient:e,address:t,abi:Xe})}async placeBid({collectionContractAddress:e,tokenId:t,bid:n}){let a=await this.safeContractWrite.placeBid([e,t,n]);return{txHash:a,waitTxInBlock:async()=>{let i=await this.bcClient.waitForTransactionReceipt({hash:a}),r=await this.contract.createEventFilter.BidPlaced(),s=u(i,r);if(s.length===0)throw new Error("Bid not placed");return{...s[0].args,...i}}}}getRemainingLockupSeconds(){return 0}async settleAuctionWithBuyout(){throw new Error("Not implemented for V1")}async settleAuction({loan:e}){let t={...e,source:e.source.map(a=>[Number(a.loanId),a.lender,a.principalAmount,a.accruedInterest,a.startTime,a.aprBps])},n=await this.safeContractWrite.settleAuction([e.nftCollateralAddress,e.nftCollateralTokenId,ln(ge.LOAN_SETTLEMENT_ENCODE_TYPES,[t])]);return{txHash:n,waitTxInBlock:async()=>{let a=await this.bcClient.waitForTransactionReceipt({hash:n}),i=await this.contract.createEventFilter.AuctionSettled(),r=u(a,i);if(r.length===0)throw new Error("Auction not settled");return{...r[0].args,...a}}}}},N=ge;l(N,"AllV4"),Oe(N,"LOAN_SETTLEMENT_ENCODE_TYPES",[{name:"",type:"tuple",components:[{name:"borrower",type:"address"},{name:"nftCollateralTokenId",type:"uint256"},{name:"nftCollateralAddress",type:"address"},{name:"principalAddress",type:"address"},{name:"principalAmount",type:"uint256"},{name:"startTime",type:"uint256"},{name:"duration",type:"uint256"},{name:"source",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]}]}]);var $=class extends b{constructor({walletClient:e}){let{AuctionLoanLiquidator:{v5:t}}=g(e.chain);super({walletClient:e,address:t,abi:qe})}async placeBid({collectionContractAddress:e,tokenId:t,bid:n,auction:a}){let i=await this.safeContractWrite.placeBid([e,t,a,n]);return{txHash:i,waitTxInBlock:async()=>{let r=await this.bcClient.waitForTransactionReceipt({hash:i}),s=await this.contract.createEventFilter.BidPlaced(),o=u(r,s);if(o.length===0)throw new Error("Bid not placed");return{...o[0].args,...r}}}}getRemainingLockupSeconds(){return 0}async settleAuctionWithBuyout(){throw new Error("Not implemented for V2")}async settleAuction({auction:e,loan:t}){let n=await this.safeContractWrite.settleAuction([e,t]);return{txHash:n,waitTxInBlock:async()=>{let a=await this.bcClient.waitForTransactionReceipt({hash:n}),i=await this.contract.createEventFilter.AuctionSettled(),r=u(a,i);if(r.length===0)throw new Error("Auction not settled");return{...r[0].args,...a}}}}};l($,"AllV5");var je=[{type:"constructor",inputs:[{name:"liquidationDistributor",internalType:"address",type:"address"},{name:"currencyManager",internalType:"address",type:"address"},{name:"collectionManager",internalType:"address",type:"address"},{name:"loanManagerRegistry",internalType:"address",type:"address"},{name:"triggerFee",internalType:"uint256",type:"uint256"},{name:"maxExtension",internalType:"uint96",type:"uint96"},{name:"timeForMainLenderToBuy",internalType:"uint256",type:"uint256"}],stateMutability:"nonpayable"},{type:"error",inputs:[],name:"AddressZeroError"},{type:"error",inputs:[],name:"AuctionAlreadyInProgressError"},{type:"error",inputs:[{name:"_expiration",internalType:"uint96",type:"uint96"}],name:"AuctionNotOverError"},{type:"error",inputs:[{name:"_expiration",internalType:"uint96",type:"uint96"}],name:"AuctionOverError"},{type:"error",inputs:[],name:"CollectionNotWhitelistedError"},{type:"error",inputs:[],name:"CouldNotModifyValidLoansError"},{type:"error",inputs:[],name:"CurrencyNotWhitelistedError"},{type:"error",inputs:[],name:"InvalidHashAuctionError"},{type:"error",inputs:[],name:"InvalidInputError"},{type:"error",inputs:[{name:"triggerFee",internalType:"uint256",type:"uint256"}],name:"InvalidTriggerFee"},{type:"error",inputs:[{name:"_loan",internalType:"address",type:"address"}],name:"LoanNotAcceptedError"},{type:"error",inputs:[{name:"_minBid",internalType:"uint256",type:"uint256"}],name:"MinBidError"},{type:"error",inputs:[{name:"_owner",internalType:"address",type:"address"}],name:"NFTNotOwnedError"},{type:"error",inputs:[],name:"NoBidsError"},{type:"error",inputs:[],name:"NotMainLenderError"},{type:"error",inputs:[{name:"timeLimit",internalType:"uint256",type:"uint256"}],name:"OptionToBuyExpiredError"},{type:"error",inputs:[{name:"timeLimit",internalType:"uint256",type:"uint256"}],name:"OptionToBuyStilValidError"},{type:"event",anonymous:!1,inputs:[{name:"loanContract",internalType:"address",type:"address",indexed:!1},{name:"loanId",internalType:"uint256",type:"uint256",indexed:!1},{name:"collection",internalType:"address",type:"address",indexed:!1},{name:"tokenId",internalType:"uint256",type:"uint256",indexed:!1},{name:"asset",internalType:"address",type:"address",indexed:!1},{name:"proceeds",internalType:"uint256",type:"uint256",indexed:!1},{name:"settler",internalType:"address",type:"address",indexed:!1},{name:"triggerFee",internalType:"uint256",type:"uint256",indexed:!1}],name:"AuctionSettled"},{type:"event",anonymous:!1,inputs:[{name:"loanAddress",internalType:"address",type:"address",indexed:!1},{name:"loanId",internalType:"uint256",type:"uint256",indexed:!1},{name:"nftAddress",internalType:"address",type:"address",indexed:!1},{name:"tokenId",internalType:"uint256",type:"uint256",indexed:!1},{name:"largestTrancheIdx",internalType:"uint256",type:"uint256",indexed:!1}],name:"AuctionSettledWithBuyout"},{type:"event",anonymous:!1,inputs:[{name:"collection",internalType:"address",type:"address",indexed:!1},{name:"tokenId",internalType:"uint256",type:"uint256",indexed:!1},{name:"newBidder",internalType:"address",type:"address",indexed:!1},{name:"bid",internalType:"uint256",type:"uint256",indexed:!1},{name:"loanAddress",internalType:"address",type:"address",indexed:!1},{name:"loanId",internalType:"uint256",type:"uint256",indexed:!1}],name:"BidPlaced"},{type:"event",anonymous:!1,inputs:[{name:"liquidationDistributor",internalType:"address",type:"address",indexed:!1}],name:"LiquidationDistributorUpdated"},{type:"event",anonymous:!1,inputs:[{name:"loan",internalType:"address",type:"address",indexed:!1}],name:"LoanContractAdded"},{type:"event",anonymous:!1,inputs:[{name:"loan",internalType:"address",type:"address",indexed:!1}],name:"LoanContractRemoved"},{type:"event",anonymous:!1,inputs:[{name:"collection",internalType:"address",type:"address",indexed:!1},{name:"tokenId",internalType:"uint256",type:"uint256",indexed:!1},{name:"auction",internalType:"struct IAuctionLoanLiquidator.Auction",type:"tuple",components:[{name:"loanAddress",internalType:"address",type:"address"},{name:"loanId",internalType:"uint256",type:"uint256"},{name:"highestBid",internalType:"uint256",type:"uint256"},{name:"triggerFee",internalType:"uint256",type:"uint256"},{name:"minBid",internalType:"uint256",type:"uint256"},{name:"highestBidder",internalType:"address",type:"address"},{name:"duration",internalType:"uint96",type:"uint96"},{name:"asset",internalType:"address",type:"address"},{name:"startTime",internalType:"uint96",type:"uint96"},{name:"originator",internalType:"address",type:"address"},{name:"lastBidTime",internalType:"uint96",type:"uint96"}],indexed:!1}],name:"LoanLiquidationStarted"},{type:"event",anonymous:!1,inputs:[{name:"user",internalType:"address",type:"address",indexed:!0},{name:"newOwner",internalType:"address",type:"address",indexed:!0}],name:"OwnershipTransferred"},{type:"event",anonymous:!1,inputs:[{name:"timeForMainLenderToBuy",internalType:"uint256",type:"uint256",indexed:!1}],name:"TimeForMainLenderToBuyUpdated"},{type:"event",anonymous:!1,inputs:[{name:"triggerFee",internalType:"uint256",type:"uint256",indexed:!1}],name:"TriggerFeeUpdated"},{type:"function",inputs:[],name:"MAX_TIME_FOR_MAIN_LENDER_TO_BUY",outputs:[{name:"",internalType:"uint256",type:"uint256"}],stateMutability:"view"},{type:"function",inputs:[],name:"MAX_TRIGGER_FEE",outputs:[{name:"",internalType:"uint256",type:"uint256"}],stateMutability:"view"},{type:"function",inputs:[],name:"MIN_INCREMENT_BPS",outputs:[{name:"",internalType:"uint256",type:"uint256"}],stateMutability:"view"},{type:"function",inputs:[{name:"_loanContract",internalType:"address",type:"address"}],name:"addLoanContract",outputs:[],stateMutability:"nonpayable"},{type:"function",inputs:[{name:"_nftAddress",internalType:"address",type:"address"},{name:"_tokenId",internalType:"uint256",type:"uint256"}],name:"getAuctionHash",outputs:[{name:"",internalType:"bytes32",type:"bytes32"}],stateMutability:"view"},{type:"function",inputs:[],name:"getLiquidationDistributor",outputs:[{name:"",internalType:"address",type:"address"}],stateMutability:"view"},{type:"function",inputs:[],name:"getLoanManagerRegistry",outputs:[{name:"",internalType:"contract ILoanManagerRegistry",type:"address"}],stateMutability:"view"},{type:"function",inputs:[],name:"getMaxExtension",outputs:[{name:"",internalType:"uint96",type:"uint96"}],stateMutability:"view"},{type:"function",inputs:[],name:"getTimeForMainLenderToBuy",outputs:[{name:"",internalType:"uint256",type:"uint256"}],stateMutability:"view"},{type:"function",inputs:[],name:"getTriggerFee",outputs:[{name:"",internalType:"uint256",type:"uint256"}],stateMutability:"view"},{type:"function",inputs:[],name:"getValidLoanContracts",outputs:[{name:"",internalType:"address[]",type:"address[]"}],stateMutability:"view"},{type:"function",inputs:[{name:"_loanId",internalType:"uint256",type:"uint256"},{name:"_nftAddress",internalType:"address",type:"address"},{name:"_tokenId",internalType:"uint256",type:"uint256"},{name:"_asset",internalType:"address",type:"address"},{name:"_duration",internalType:"uint96",type:"uint96"},{name:"_minBid",internalType:"uint256",type:"uint256"},{name:"_originator",internalType:"address",type:"address"}],name:"liquidateLoan",outputs:[{name:"",internalType:"bytes",type:"bytes"}],stateMutability:"nonpayable"},{type:"function",inputs:[{name:"",internalType:"address",type:"address"},{name:"",internalType:"address",type:"address"},{name:"",internalType:"uint256",type:"uint256"},{name:"",internalType:"bytes",type:"bytes"}],name:"onERC721Received",outputs:[{name:"",internalType:"bytes4",type:"bytes4"}],stateMutability:"nonpayable"},{type:"function",inputs:[],name:"owner",outputs:[{name:"",internalType:"address",type:"address"}],stateMutability:"view"},{type:"function",inputs:[{name:"_nftAddress",internalType:"address",type:"address"},{name:"_tokenId",internalType:"uint256",type:"uint256"},{name:"_auction",internalType:"struct IAuctionLoanLiquidator.Auction",type:"tuple",components:[{name:"loanAddress",internalType:"address",type:"address"},{name:"loanId",internalType:"uint256",type:"uint256"},{name:"highestBid",internalType:"uint256",type:"uint256"},{name:"triggerFee",internalType:"uint256",type:"uint256"},{name:"minBid",internalType:"uint256",type:"uint256"},{name:"highestBidder",internalType:"address",type:"address"},{name:"duration",internalType:"uint96",type:"uint96"},{name:"asset",internalType:"address",type:"address"},{name:"startTime",internalType:"uint96",type:"uint96"},{name:"originator",internalType:"address",type:"address"},{name:"lastBidTime",internalType:"uint96",type:"uint96"}]},{name:"_bid",internalType:"uint256",type:"uint256"}],name:"placeBid",outputs:[{name:"",internalType:"struct IAuctionLoanLiquidator.Auction",type:"tuple",components:[{name:"loanAddress",internalType:"address",type:"address"},{name:"loanId",internalType:"uint256",type:"uint256"},{name:"highestBid",internalType:"uint256",type:"uint256"},{name:"triggerFee",internalType:"uint256",type:"uint256"},{name:"minBid",internalType:"uint256",type:"uint256"},{name:"highestBidder",internalType:"address",type:"address"},{name:"duration",internalType:"uint96",type:"uint96"},{name:"asset",internalType:"address",type:"address"},{name:"startTime",internalType:"uint96",type:"uint96"},{name:"originator",internalType:"address",type:"address"},{name:"lastBidTime",internalType:"uint96",type:"uint96"}]}],stateMutability:"nonpayable"},{type:"function",inputs:[{name:"_loanContract",internalType:"address",type:"address"}],name:"removeLoanContract",outputs:[],stateMutability:"nonpayable"},{type:"function",inputs:[{name:"__timeForMainLenderToBuy",internalType:"uint256",type:"uint256"}],name:"setTimeForMainLenderToBuy",outputs:[],stateMutability:"nonpayable"},{type:"function",inputs:[{name:"_auction",internalType:"struct IAuctionLoanLiquidator.Auction",type:"tuple",components:[{name:"loanAddress",internalType:"address",type:"address"},{name:"loanId",internalType:"uint256",type:"uint256"},{name:"highestBid",internalType:"uint256",type:"uint256"},{name:"triggerFee",internalType:"uint256",type:"uint256"},{name:"minBid",internalType:"uint256",type:"uint256"},{name:"highestBidder",internalType:"address",type:"address"},{name:"duration",internalType:"uint96",type:"uint96"},{name:"asset",internalType:"address",type:"address"},{name:"startTime",internalType:"uint96",type:"uint96"},{name:"originator",internalType:"address",type:"address"},{name:"lastBidTime",internalType:"uint96",type:"uint96"}]},{name:"_loan",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"tranche",internalType:"struct IMultiSourceLoan.Tranche[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"floor",internalType:"uint256",type:"uint256"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]},{name:"protocolFee",internalType:"uint256",type:"uint256"}]}],name:"settleAuction",outputs:[],stateMutability:"nonpayable"},{type:"function",inputs:[{name:"_nftAddress",internalType:"address",type:"address"},{name:"_tokenId",internalType:"uint256",type:"uint256"},{name:"_auction",internalType:"struct IAuctionLoanLiquidator.Auction",type:"tuple",components:[{name:"loanAddress",internalType:"address",type:"address"},{name:"loanId",internalType:"uint256",type:"uint256"},{name:"highestBid",internalType:"uint256",type:"uint256"},{name:"triggerFee",internalType:"uint256",type:"uint256"},{name:"minBid",internalType:"uint256",type:"uint256"},{name:"highestBidder",internalType:"address",type:"address"},{name:"duration",internalType:"uint96",type:"uint96"},{name:"asset",internalType:"address",type:"address"},{name:"startTime",internalType:"uint96",type:"uint96"},{name:"originator",internalType:"address",type:"address"},{name:"lastBidTime",internalType:"uint96",type:"uint96"}]},{name:"_loan",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"tranche",internalType:"struct IMultiSourceLoan.Tranche[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"floor",internalType:"uint256",type:"uint256"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]},{name:"protocolFee",internalType:"uint256",type:"uint256"}]}],name:"settleWithBuyout",outputs:[],stateMutability:"nonpayable"},{type:"function",inputs:[{name:"newOwner",internalType:"address",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"nonpayable"},{type:"function",inputs:[{name:"__liquidationDistributor",internalType:"address",type:"address"}],name:"updateLiquidationDistributor",outputs:[],stateMutability:"nonpayable"},{type:"function",inputs:[{name:"triggerFee",internalType:"uint256",type:"uint256"}],name:"updateTriggerFee",outputs:[],stateMutability:"nonpayable"}];var R=[{type:"constructor",inputs:[{name:"loanLiquidator",internalType:"address",type:"address"},{name:"protocolFee",internalType:"struct WithProtocolFee.ProtocolFee",type:"tuple",components:[{name:"recipient",internalType:"address",type:"address"},{name:"fraction",internalType:"uint256",type:"uint256"}]},{name:"currencyManager",internalType:"address",type:"address"},{name:"collectionManager",internalType:"address",type:"address"},{name:"maxTranches",internalType:"uint256",type:"uint256"},{name:"minLockPeriod",internalType:"uint256",type:"uint256"},{name:"delegateRegistry",internalType:"address",type:"address"},{name:"loanManagerRegistry",internalType:"address",type:"address"},{name:"flashActionContract",internalType:"address",type:"address"},{name:"minWaitTime",internalType:"uint256",type:"uint256"}],stateMutability:"nonpayable"},{type:"error",inputs:[],name:"AddressZeroError"},{type:"error",inputs:[{name:"_lender",internalType:"address",type:"address"},{name:"_offerId",internalType:"uint256",type:"uint256"}],name:"CancelledOrExecutedOfferError"},{type:"error",inputs:[],name:"CollectionNotWhitelistedError"},{type:"error",inputs:[],name:"CurrencyNotWhitelistedError"},{type:"error",inputs:[],name:"ECDSAInvalidSignature"},{type:"error",inputs:[{name:"length",internalType:"uint256",type:"uint256"}],name:"ECDSAInvalidSignatureLength"},{type:"error",inputs:[{name:"s",internalType:"bytes32",type:"bytes32"}],name:"ECDSAInvalidSignatureS"},{type:"error",inputs:[{name:"_expirationTime",internalType:"uint256",type:"uint256"}],name:"ExpiredOfferError"},{type:"error",inputs:[],name:"InvalidAddressesError"},{type:"error",inputs:[{name:"_amount",internalType:"uint256",type:"uint256"},{name:"_principalAmount",internalType:"uint256",type:"uint256"}],name:"InvalidAmountError"},{type:"error",inputs:[],name:"InvalidCallbackError"},{type:"error",inputs:[],name:"InvalidCallerError"},{type:"error",inputs:[],name:"InvalidCollateralIdError"},{type:"error",inputs:[],name:"InvalidDurationError"},{type:"error",inputs:[],name:"InvalidInputError"},{type:"error",inputs:[{name:"_loanId",internalType:"uint256",type:"uint256"}],name:"InvalidLoanError"},{type:"error",inputs:[],name:"InvalidMethodError"},{type:"error",inputs:[],name:"InvalidParametersError"},{type:"error",inputs:[{name:"_fraction",internalType:"uint256",type:"uint256"}],name:"InvalidProtocolFeeError"},{type:"error",inputs:[],name:"InvalidRenegotiationOfferError"},{type:"error",inputs:[],name:"InvalidSignatureError"},{type:"error",inputs:[],name:"InvalidTrancheError"},{type:"error",inputs:[{name:"_liquidator",internalType:"address",type:"address"}],name:"LiquidatorOnlyError"},{type:"error",inputs:[],name:"LoanExpiredError"},{type:"error",inputs:[],name:"LoanLockedError"},{type:"error",inputs:[{name:"_expirationTime",internalType:"uint256",type:"uint256"}],name:"LoanNotDueError"},{type:"error",inputs:[{name:"_lender",internalType:"address",type:"address"},{name:"_newMinOfferId",internalType:"uint256",type:"uint256"},{name:"_minOfferId",internalType:"uint256",type:"uint256"}],name:"LowOfferIdError"},{type:"error",inputs:[{name:"_lender",internalType:"address",type:"address"},{name:"_newMinRenegotiationOfferId",internalType:"uint256",type:"uint256"},{name:"_minOfferId",internalType:"uint256",type:"uint256"}],name:"LowRenegotiationOfferIdError"},{type:"error",inputs:[],name:"MaxCapacityExceededError"},{type:"error",inputs:[],name:"MismatchError"},{type:"error",inputs:[{name:"i",internalType:"uint256",type:"uint256"},{name:"returndata",internalType:"bytes",type:"bytes"}],name:"MulticallFailed"},{type:"error",inputs:[],name:"NFTNotReturnedError"},{type:"error",inputs:[],name:"NotStrictlyImprovedError"},{type:"error",inputs:[{name:"_pendingProtocolFeeSetTime",internalType:"uint256",type:"uint256"}],name:"TooEarlyError"},{type:"error",inputs:[],name:"TooManyTranchesError"},{type:"error",inputs:[],name:"TooSoonError"},{type:"error",inputs:[{name:"minTimestamp",internalType:"uint256",type:"uint256"}],name:"TrancheCannotBeRefinancedError"},{type:"error",inputs:[],name:"ZeroInterestError"},{type:"event",anonymous:!1,inputs:[{name:"lender",internalType:"address",type:"address",indexed:!1},{name:"minOfferId",internalType:"uint256",type:"uint256",indexed:!1}],name:"AllOffersCancelled"},{type:"event",anonymous:!1,inputs:[{name:"newdelegateRegistry",internalType:"address",type:"address",indexed:!1}],name:"DelegateRegistryUpdated"},{type:"event",anonymous:!1,inputs:[{name:"loanId",internalType:"uint256",type:"uint256",indexed:!1},{name:"delegate",internalType:"address",type:"address",indexed:!1},{name:"value",internalType:"bool",type:"bool",indexed:!1}],name:"Delegated"},{type:"event",anonymous:!1,inputs:[{name:"newFlashActionContract",internalType:"address",type:"address",indexed:!1}],name:"FlashActionContractUpdated"},{type:"event",anonymous:!1,inputs:[{name:"loanId",internalType:"uint256",type:"uint256",indexed:!1},{name:"target",internalType:"address",type:"address",indexed:!1},{name:"data",internalType:"bytes",type:"bytes",indexed:!1}],name:"FlashActionExecuted"},{type:"event",anonymous:!1,inputs:[{name:"newDuration",internalType:"uint256",type:"uint256",indexed:!1}],name:"LiquidationAuctionDurationUpdated"},{type:"event",anonymous:!1,inputs:[{name:"liquidator",internalType:"address",type:"address",indexed:!1}],name:"LiquidationContractUpdated"},{type:"event",anonymous:!1,inputs:[{name:"loanId",internalType:"uint256",type:"uint256",indexed:!1},{name:"offerId",internalType:"uint256[]",type:"uint256[]",indexed:!1},{name:"loan",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"tranche",internalType:"struct IMultiSourceLoan.Tranche[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"floor",internalType:"uint256",type:"uint256"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]},{name:"protocolFee",internalType:"uint256",type:"uint256"}],indexed:!1},{name:"fee",internalType:"uint256",type:"uint256",indexed:!1}],name:"LoanEmitted"},{type:"event",anonymous:!1,inputs:[{name:"loanId",internalType:"uint256",type:"uint256",indexed:!1}],name:"LoanForeclosed"},{type:"event",anonymous:!1,inputs:[{name:"loanId",internalType:"uint256",type:"uint256",indexed:!1}],name:"LoanLiquidated"},{type:"event",anonymous:!1,inputs:[{name:"renegotiationId",internalType:"uint256",type:"uint256",indexed:!1},{name:"oldLoanId",internalType:"uint256",type:"uint256",indexed:!1},{name:"newLoanId",internalType:"uint256",type:"uint256",indexed:!1},{name:"loan",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"tranche",internalType:"struct IMultiSourceLoan.Tranche[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"floor",internalType:"uint256",type:"uint256"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]},{name:"protocolFee",internalType:"uint256",type:"uint256"}],indexed:!1},{name:"fee",internalType:"uint256",type:"uint256",indexed:!1}],name:"LoanRefinanced"},{type:"event",anonymous:!1,inputs:[{name:"loanId",internalType:"uint256",type:"uint256",indexed:!1},{name:"newLoanId",internalType:"uint256",type:"uint256",indexed:!1},{name:"loan",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"tranche",internalType:"struct IMultiSourceLoan.Tranche[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"floor",internalType:"uint256",type:"uint256"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]},{name:"protocolFee",internalType:"uint256",type:"uint256"}],indexed:!1},{name:"offerIds",internalType:"uint256[]",type:"uint256[]",indexed:!1},{name:"totalFee",internalType:"uint256",type:"uint256",indexed:!1}],name:"LoanRefinancedFromNewOffers"},{type:"event",anonymous:!1,inputs:[{name:"loanId",internalType:"uint256",type:"uint256",indexed:!1},{name:"totalRepayment",internalType:"uint256",type:"uint256",indexed:!1},{name:"fee",internalType:"uint256",type:"uint256",indexed:!1}],name:"LoanRepaid"},{type:"event",anonymous:!1,inputs:[{name:"loanId",internalType:"uint256",type:"uint256",indexed:!1},{name:"liquidator",internalType:"address",type:"address",indexed:!1}],name:"LoanSentToLiquidator"},{type:"event",anonymous:!1,inputs:[{name:"_minimum",internalType:"uint256",type:"uint256",indexed:!1}],name:"MinAprImprovementUpdated"},{type:"event",anonymous:!1,inputs:[{name:"newMinBid",internalType:"uint256",type:"uint256",indexed:!1}],name:"MinBidLiquidationUpdated"},{type:"event",anonymous:!1,inputs:[{name:"minLockPeriod",internalType:"uint256",type:"uint256",indexed:!1}],name:"MinLockPeriodUpdated"},{type:"event",anonymous:!1,inputs:[{name:"lender",internalType:"address",type:"address",indexed:!1},{name:"offerId",internalType:"uint256",type:"uint256",indexed:!1}],name:"OfferCancelled"},{type:"event",anonymous:!1,inputs:[{name:"user",internalType:"address",type:"address",indexed:!0},{name:"newOwner",internalType:"address",type:"address",indexed:!0}],name:"OwnershipTransferred"},{type:"event",anonymous:!1,inputs:[{name:"fee",internalType:"struct WithProtocolFee.ProtocolFee",type:"tuple",components:[{name:"recipient",internalType:"address",type:"address"},{name:"fraction",internalType:"uint256",type:"uint256"}],indexed:!1}],name:"ProtocolFeePendingUpdate"},{type:"event",anonymous:!1,inputs:[{name:"fee",internalType:"struct WithProtocolFee.ProtocolFee",type:"tuple",components:[{name:"recipient",internalType:"address",type:"address"},{name:"fraction",internalType:"uint256",type:"uint256"}],indexed:!1}],name:"ProtocolFeeUpdated"},{type:"event",anonymous:!1,inputs:[{name:"lender",internalType:"address",type:"address",indexed:!1},{name:"renegotiationId",internalType:"uint256",type:"uint256",indexed:!1}],name:"RenegotiationOfferCancelled"},{type:"event",anonymous:!1,inputs:[{name:"delegate",internalType:"address",type:"address",indexed:!1},{name:"collection",internalType:"address",type:"address",indexed:!1},{name:"tokenId",internalType:"uint256",type:"uint256",indexed:!1}],name:"RevokeDelegate"},{type:"event",anonymous:!1,inputs:[{name:"loan",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"tranche",internalType:"struct IMultiSourceLoan.Tranche[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"floor",internalType:"uint256",type:"uint256"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]},{name:"protocolFee",internalType:"uint256",type:"uint256"}],indexed:!1},{name:"minTranche",internalType:"uint256",type:"uint256",indexed:!1},{name:"maxTranche",internalType:"uint256",type:"uint256",indexed:!1}],name:"TranchesMerged"},{type:"event",anonymous:!1,inputs:[{name:"newOwner",internalType:"address",type:"address",indexed:!1}],name:"TransferOwnerRequested"},{type:"event",anonymous:!1,inputs:[{name:"contractAdded",internalType:"address",type:"address",indexed:!1}],name:"WhitelistedCallbackContractAdded"},{type:"event",anonymous:!1,inputs:[{name:"contractRemoved",internalType:"address",type:"address",indexed:!1}],name:"WhitelistedCallbackContractRemoved"},{type:"function",inputs:[],name:"DOMAIN_SEPARATOR",outputs:[{name:"",internalType:"bytes32",type:"bytes32"}],stateMutability:"view"},{type:"function",inputs:[],name:"FEE_UPDATE_NOTICE",outputs:[{name:"",internalType:"uint256",type:"uint256"}],stateMutability:"view"},{type:"function",inputs:[],name:"INITIAL_DOMAIN_SEPARATOR",outputs:[{name:"",internalType:"bytes32",type:"bytes32"}],stateMutability:"view"},{type:"function",inputs:[],name:"MAX_AUCTION_DURATION",outputs:[{name:"",internalType:"uint48",type:"uint48"}],stateMutability:"view"},{type:"function",inputs:[],name:"MAX_PROTOCOL_FEE",outputs:[{name:"",internalType:"uint256",type:"uint256"}],stateMutability:"view"},{type:"function",inputs:[],name:"MIN_AUCTION_DURATION",outputs:[{name:"",internalType:"uint48",type:"uint48"}],stateMutability:"view"},{type:"function",inputs:[],name:"MIN_BID_LIQUIDATION",outputs:[{name:"",internalType:"uint256",type:"uint256"}],stateMutability:"view"},{type:"function",inputs:[],name:"MIN_WAIT_TIME",outputs:[{name:"",internalType:"uint256",type:"uint256"}],stateMutability:"view"},{type:"function",inputs:[],name:"VERSION",outputs:[{name:"",internalType:"bytes",type:"bytes"}],stateMutability:"view"},{type:"function",inputs:[{name:"_renegotiationOffer",internalType:"struct IMultiSourceLoan.RenegotiationOffer",type:"tuple",components:[{name:"renegotiationId",internalType:"uint256",type:"uint256"},{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"fee",internalType:"uint256",type:"uint256"},{name:"trancheIndex",internalType:"uint256[]",type:"uint256[]"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"},{name:"expirationTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"}]},{name:"_loan",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"tranche",internalType:"struct IMultiSourceLoan.Tranche[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"floor",internalType:"uint256",type:"uint256"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]},{name:"protocolFee",internalType:"uint256",type:"uint256"}]},{name:"_renegotiationOfferSignature",internalType:"bytes",type:"bytes"}],name:"addNewTranche",outputs:[{name:"",internalType:"uint256",type:"uint256"},{name:"",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"tranche",internalType:"struct IMultiSourceLoan.Tranche[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"floor",internalType:"uint256",type:"uint256"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]},{name:"protocolFee",internalType:"uint256",type:"uint256"}]}],stateMutability:"nonpayable"},{type:"function",inputs:[{name:"_contract",internalType:"address",type:"address"}],name:"addWhitelistedCallbackContract",outputs:[],stateMutability:"nonpayable"},{type:"function",inputs:[{name:"_minOfferId",internalType:"uint256",type:"uint256"}],name:"cancelAllOffers",outputs:[],stateMutability:"nonpayable"},{type:"function",inputs:[{name:"_offerId",internalType:"uint256",type:"uint256"}],name:"cancelOffer",outputs:[],stateMutability:"nonpayable"},{type:"function",inputs:[{name:"_renegotiationId",internalType:"uint256",type:"uint256"}],name:"cancelRenegotiationOffer",outputs:[],stateMutability:"nonpayable"},{type:"function",inputs:[{name:"_loanId",internalType:"uint256",type:"uint256"},{name:"loan",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"tranche",internalType:"struct IMultiSourceLoan.Tranche[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"floor",internalType:"uint256",type:"uint256"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]},{name:"protocolFee",internalType:"uint256",type:"uint256"}]},{name:"_delegate",internalType:"address",type:"address"},{name:"_rights",internalType:"bytes32",type:"bytes32"},{name:"_value",internalType:"bool",type:"bool"}],name:"delegate",outputs:[],stateMutability:"nonpayable"},{type:"function",inputs:[{name:"_loanExecutionData",internalType:"struct IMultiSourceLoan.LoanExecutionData",type:"tuple",components:[{name:"executionData",internalType:"struct IMultiSourceLoan.ExecutionData",type:"tuple",components:[{name:"offerExecution",internalType:"struct IMultiSourceLoan.OfferExecution[]",type:"tuple[]",components:[{name:"offer",internalType:"struct IMultiSourceLoan.LoanOffer",type:"tuple",components:[{name:"offerId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"fee",internalType:"uint256",type:"uint256"},{name:"capacity",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"},{name:"expirationTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"maxSeniorRepayment",internalType:"uint256",type:"uint256"},{name:"validators",internalType:"struct IBaseLoan.OfferValidator[]",type:"tuple[]",components:[{name:"validator",internalType:"address",type:"address"},{name:"arguments",internalType:"bytes",type:"bytes"}]}]},{name:"amount",internalType:"uint256",type:"uint256"},{name:"lenderOfferSignature",internalType:"bytes",type:"bytes"}]},{name:"tokenId",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"expirationTime",internalType:"uint256",type:"uint256"},{name:"principalReceiver",internalType:"address",type:"address"},{name:"callbackData",internalType:"bytes",type:"bytes"}]},{name:"borrower",internalType:"address",type:"address"},{name:"borrowerOfferSignature",internalType:"bytes",type:"bytes"}]}],name:"emitLoan",outputs:[{name:"",internalType:"uint256",type:"uint256"},{name:"",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"tranche",internalType:"struct IMultiSourceLoan.Tranche[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"floor",internalType:"uint256",type:"uint256"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]},{name:"protocolFee",internalType:"uint256",type:"uint256"}]}],stateMutability:"nonpayable"},{type:"function",inputs:[{name:"_loanId",internalType:"uint256",type:"uint256"},{name:"_loan",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"tranche",internalType:"struct IMultiSourceLoan.Tranche[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"floor",internalType:"uint256",type:"uint256"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]},{name:"protocolFee",internalType:"uint256",type:"uint256"}]},{name:"_target",internalType:"address",type:"address"},{name:"_data",internalType:"bytes",type:"bytes"}],name:"executeFlashAction",outputs:[],stateMutability:"nonpayable"},{type:"function",inputs:[],name:"getCollectionManager",outputs:[{name:"",internalType:"address",type:"address"}],stateMutability:"view"},{type:"function",inputs:[],name:"getCurrencyManager",outputs:[{name:"",internalType:"address",type:"address"}],stateMutability:"view"},{type:"function",inputs:[],name:"getDelegateRegistry",outputs:[{name:"",internalType:"address",type:"address"}],stateMutability:"view"},{type:"function",inputs:[],name:"getFlashActionContract",outputs:[{name:"",internalType:"address",type:"address"}],stateMutability:"view"},{type:"function",inputs:[],name:"getLiquidationAuctionDuration",outputs:[{name:"",internalType:"uint48",type:"uint48"}],stateMutability:"view"},{type:"function",inputs:[],name:"getLiquidator",outputs:[{name:"",internalType:"address",type:"address"}],stateMutability:"view"},{type:"function",inputs:[{name:"_loanId",internalType:"uint256",type:"uint256"}],name:"getLoanHash",outputs:[{name:"",internalType:"bytes32",type:"bytes32"}],stateMutability:"view"},{type:"function",inputs:[],name:"getLoanManagerRegistry",outputs:[{name:"",internalType:"contract ILoanManagerRegistry",type:"address"}],stateMutability:"view"},{type:"function",inputs:[],name:"getMaxTranches",outputs:[{name:"",internalType:"uint256",type:"uint256"}],stateMutability:"view"},{type:"function",inputs:[],name:"getMinImprovementApr",outputs:[{name:"",internalType:"uint256",type:"uint256"}],stateMutability:"view"},{type:"function",inputs:[],name:"getMinLockPeriod",outputs:[{name:"",internalType:"uint256",type:"uint256"}],stateMutability:"view"},{type:"function",inputs:[{name:"_loanPrincipal",internalType:"uint256",type:"uint256"}],name:"getMinTranchePrincipal",outputs:[{name:"",internalType:"uint256",type:"uint256"}],stateMutability:"view"},{type:"function",inputs:[],name:"getPendingProtocolFee",outputs:[{name:"",internalType:"struct WithProtocolFee.ProtocolFee",type:"tuple",components:[{name:"recipient",internalType:"address",type:"address"},{name:"fraction",internalType:"uint256",type:"uint256"}]}],stateMutability:"view"},{type:"function",inputs:[],name:"getPendingProtocolFeeSetTime",outputs:[{name:"",internalType:"uint256",type:"uint256"}],stateMutability:"view"},{type:"function",inputs:[],name:"getProtocolFee",outputs:[{name:"",internalType:"struct WithProtocolFee.ProtocolFee",type:"tuple",components:[{name:"recipient",internalType:"address",type:"address"},{name:"fraction",internalType:"uint256",type:"uint256"}]}],stateMutability:"view"},{type:"function",inputs:[],name:"getTotalLoansIssued",outputs:[{name:"",internalType:"uint256",type:"uint256"}],stateMutability:"view"},{type:"function",inputs:[{name:"_lender",internalType:"address",type:"address"},{name:"_offerId",internalType:"uint256",type:"uint256"}],name:"getUsedCapacity",outputs:[{name:"",internalType:"uint256",type:"uint256"}],stateMutability:"view"},{type:"function",inputs:[{name:"user",internalType:"address",type:"address"},{name:"offerId",internalType:"uint256",type:"uint256"}],name:"isOfferCancelled",outputs:[{name:"notActive",internalType:"bool",type:"bool"}],stateMutability:"view"},{type:"function",inputs:[{name:"user",internalType:"address",type:"address"},{name:"renegotiationIf",internalType:"uint256",type:"uint256"}],name:"isRenegotiationOfferCancelled",outputs:[{name:"notActive",internalType:"bool",type:"bool"}],stateMutability:"view"},{type:"function",inputs:[{name:"_contract",internalType:"address",type:"address"}],name:"isWhitelistedCallbackContract",outputs:[{name:"",internalType:"bool",type:"bool"}],stateMutability:"view"},{type:"function",inputs:[{name:"_loanId",internalType:"uint256",type:"uint256"},{name:"_loan",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"tranche",internalType:"struct IMultiSourceLoan.Tranche[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"floor",internalType:"uint256",type:"uint256"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]},{name:"protocolFee",internalType:"uint256",type:"uint256"}]}],name:"liquidateLoan",outputs:[{name:"",internalType:"bytes",type:"bytes"}],stateMutability:"nonpayable"},{type:"function",inputs:[{name:"_loanId",internalType:"uint256",type:"uint256"},{name:"_loan",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"tranche",internalType:"struct IMultiSourceLoan.Tranche[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"floor",internalType:"uint256",type:"uint256"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]},{name:"protocolFee",internalType:"uint256",type:"uint256"}]}],name:"loanLiquidated",outputs:[],stateMutability:"nonpayable"},{type:"function",inputs:[{name:"_loanId",internalType:"uint256",type:"uint256"},{name:"_loan",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"tranche",internalType:"struct IMultiSourceLoan.Tranche[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"floor",internalType:"uint256",type:"uint256"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]},{name:"protocolFee",internalType:"uint256",type:"uint256"}]},{name:"_minTranche",internalType:"uint256",type:"uint256"},{name:"_maxTranche",internalType:"uint256",type:"uint256"}],name:"mergeTranches",outputs:[{name:"",internalType:"uint256",type:"uint256"},{name:"",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"tranche",internalType:"struct IMultiSourceLoan.Tranche[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"floor",internalType:"uint256",type:"uint256"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]},{name:"protocolFee",internalType:"uint256",type:"uint256"}]}],stateMutability:"nonpayable"},{type:"function",inputs:[{name:"user",internalType:"address",type:"address"}],name:"minOfferId",outputs:[{name:"minOfferId",internalType:"uint256",type:"uint256"}],stateMutability:"view"},{type:"function",inputs:[{name:"data",internalType:"bytes[]",type:"bytes[]"}],name:"multicall",outputs:[{name:"results",internalType:"bytes[]",type:"bytes[]"}],stateMutability:"payable"},{type:"function",inputs:[],name:"name",outputs:[{name:"",internalType:"string",type:"string"}],stateMutability:"view"},{type:"function",inputs:[{name:"",internalType:"address",type:"address"},{name:"",internalType:"address",type:"address"},{name:"",internalType:"uint256",type:"uint256"},{name:"",internalType:"bytes",type:"bytes"}],name:"onERC721Received",outputs:[{name:"",internalType:"bytes4",type:"bytes4"}],stateMutability:"nonpayable"},{type:"function",inputs:[],name:"owner",outputs:[{name:"",internalType:"address",type:"address"}],stateMutability:"view"},{type:"function",inputs:[],name:"pendingOwner",outputs:[{name:"",internalType:"address",type:"address"}],stateMutability:"view"},{type:"function",inputs:[],name:"pendingOwnerTime",outputs:[{name:"",internalType:"uint256",type:"uint256"}],stateMutability:"view"},{type:"function",inputs:[{name:"_loanId",internalType:"uint256",type:"uint256"},{name:"_loan",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"tranche",internalType:"struct IMultiSourceLoan.Tranche[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"floor",internalType:"uint256",type:"uint256"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]},{name:"protocolFee",internalType:"uint256",type:"uint256"}]},{name:"_loanExecutionData",internalType:"struct IMultiSourceLoan.LoanExecutionData",type:"tuple",components:[{name:"executionData",internalType:"struct IMultiSourceLoan.ExecutionData",type:"tuple",components:[{name:"offerExecution",internalType:"struct IMultiSourceLoan.OfferExecution[]",type:"tuple[]",components:[{name:"offer",internalType:"struct IMultiSourceLoan.LoanOffer",type:"tuple",components:[{name:"offerId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"fee",internalType:"uint256",type:"uint256"},{name:"capacity",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"},{name:"expirationTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"maxSeniorRepayment",internalType:"uint256",type:"uint256"},{name:"validators",internalType:"struct IBaseLoan.OfferValidator[]",type:"tuple[]",components:[{name:"validator",internalType:"address",type:"address"},{name:"arguments",internalType:"bytes",type:"bytes"}]}]},{name:"amount",internalType:"uint256",type:"uint256"},{name:"lenderOfferSignature",internalType:"bytes",type:"bytes"}]},{name:"tokenId",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"expirationTime",internalType:"uint256",type:"uint256"},{name:"principalReceiver",internalType:"address",type:"address"},{name:"callbackData",internalType:"bytes",type:"bytes"}]},{name:"borrower",internalType:"address",type:"address"},{name:"borrowerOfferSignature",internalType:"bytes",type:"bytes"}]}],name:"refinanceFromLoanExecutionData",outputs:[{name:"",internalType:"uint256",type:"uint256"},{name:"",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"tranche",internalType:"struct IMultiSourceLoan.Tranche[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"floor",internalType:"uint256",type:"uint256"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]},{name:"protocolFee",internalType:"uint256",type:"uint256"}]}],stateMutability:"nonpayable"},{type:"function",inputs:[{name:"_renegotiationOffer",internalType:"struct IMultiSourceLoan.RenegotiationOffer",type:"tuple",components:[{name:"renegotiationId",internalType:"uint256",type:"uint256"},{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"fee",internalType:"uint256",type:"uint256"},{name:"trancheIndex",internalType:"uint256[]",type:"uint256[]"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"},{name:"expirationTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"}]},{name:"_loan",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"tranche",internalType:"struct IMultiSourceLoan.Tranche[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"floor",internalType:"uint256",type:"uint256"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]},{name:"protocolFee",internalType:"uint256",type:"uint256"}]},{name:"_renegotiationOfferSignature",internalType:"bytes",type:"bytes"}],name:"refinanceFull",outputs:[{name:"",internalType:"uint256",type:"uint256"},{name:"",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"tranche",internalType:"struct IMultiSourceLoan.Tranche[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"floor",internalType:"uint256",type:"uint256"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]},{name:"protocolFee",internalType:"uint256",type:"uint256"}]}],stateMutability:"nonpayable"},{type:"function",inputs:[{name:"_renegotiationOffer",internalType:"struct IMultiSourceLoan.RenegotiationOffer",type:"tuple",components:[{name:"renegotiationId",internalType:"uint256",type:"uint256"},{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"fee",internalType:"uint256",type:"uint256"},{name:"trancheIndex",internalType:"uint256[]",type:"uint256[]"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"},{name:"expirationTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"}]},{name:"_loan",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"tranche",internalType:"struct IMultiSourceLoan.Tranche[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"floor",internalType:"uint256",type:"uint256"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]},{name:"protocolFee",internalType:"uint256",type:"uint256"}]}],name:"refinancePartial",outputs:[{name:"",internalType:"uint256",type:"uint256"},{name:"",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"tranche",internalType:"struct IMultiSourceLoan.Tranche[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"floor",internalType:"uint256",type:"uint256"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]},{name:"protocolFee",internalType:"uint256",type:"uint256"}]}],stateMutability:"nonpayable"},{type:"function",inputs:[{name:"_contract",internalType:"address",type:"address"}],name:"removeWhitelistedCallbackContract",outputs:[],stateMutability:"nonpayable"},{type:"function",inputs:[{name:"_repaymentData",internalType:"struct IMultiSourceLoan.LoanRepaymentData",type:"tuple",components:[{name:"data",internalType:"struct IMultiSourceLoan.SignableRepaymentData",type:"tuple",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"callbackData",internalType:"bytes",type:"bytes"},{name:"shouldDelegate",internalType:"bool",type:"bool"}]},{name:"loan",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"tranche",internalType:"struct IMultiSourceLoan.Tranche[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"floor",internalType:"uint256",type:"uint256"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]},{name:"protocolFee",internalType:"uint256",type:"uint256"}]},{name:"borrowerSignature",internalType:"bytes",type:"bytes"}]}],name:"repayLoan",outputs:[],stateMutability:"nonpayable"},{type:"function",inputs:[{name:"_newOwner",internalType:"address",type:"address"}],name:"requestTransferOwner",outputs:[],stateMutability:"nonpayable"},{type:"function",inputs:[{name:"_delegate",internalType:"address",type:"address"},{name:"_collection",internalType:"address",type:"address"},{name:"_tokenId",internalType:"uint256",type:"uint256"}],name:"revokeDelegate",outputs:[],stateMutability:"nonpayable"},{type:"function",inputs:[{name:"_newDelegateRegistry",internalType:"address",type:"address"}],name:"setDelegateRegistry",outputs:[],stateMutability:"nonpayable"},{type:"function",inputs:[{name:"_newFlashActionContract",internalType:"address",type:"address"}],name:"setFlashActionContract",outputs:[],stateMutability:"nonpayable"},{type:"function",inputs:[{name:"__minLockPeriod",internalType:"uint256",type:"uint256"}],name:"setMinLockPeriod",outputs:[],stateMutability:"nonpayable"},{type:"function",inputs:[],name:"setProtocolFee",outputs:[],stateMutability:"nonpayable"},{type:"function",inputs:[{name:"newOwner",internalType:"address",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"nonpayable"},{type:"function",inputs:[{name:"_newDuration",internalType:"uint48",type:"uint48"}],name:"updateLiquidationAuctionDuration",outputs:[],stateMutability:"nonpayable"},{type:"function",inputs:[{name:"__loanLiquidator",internalType:"address",type:"address"}],name:"updateLiquidationContract",outputs:[],stateMutability:"nonpayable"},{type:"function",inputs:[{name:"_newMinimum",internalType:"uint256",type:"uint256"}],name:"updateMinImprovementApr",outputs:[],stateMutability:"nonpayable"},{type:"function",inputs:[{name:"_newProtocolFee",internalType:"struct WithProtocolFee.ProtocolFee",type:"tuple",components:[{name:"recipient",internalType:"address",type:"address"},{name:"fraction",internalType:"uint256",type:"uint256"}]}],name:"updateProtocolFee",outputs:[],stateMutability:"nonpayable"}];var Ye=[{type:"constructor",inputs:[{name:"currencyManager",internalType:"address",type:"address"},{name:"collectionManager",internalType:"address",type:"address"},{name:"oldCollectionManager",internalType:"address",type:"address"}],stateMutability:"nonpayable"},{type:"error",inputs:[],name:"AssetNotOwnedError"},{type:"error",inputs:[],name:"CollectionNotWhitelistedError"},{type:"error",inputs:[],name:"CurrencyNotWhitelistedError"},{type:"error",inputs:[],name:"InvalidCallerError"},{type:"error",inputs:[],name:"LengthMismatchError"},{type:"error",inputs:[{name:"vaultId",internalType:"uint256",type:"uint256"}],name:"NotApprovedError"},{type:"error",inputs:[],name:"VaultNotExistsError"},{type:"error",inputs:[],name:"WithdrawingETHError"},{type:"error",inputs:[],name:"WrongMethodError"},{type:"event",anonymous:!1,inputs:[{name:"owner",internalType:"address",type:"address",indexed:!0},{name:"spender",internalType:"address",type:"address",indexed:!0},{name:"id",internalType:"uint256",type:"uint256",indexed:!0}],name:"Approval"},{type:"event",anonymous:!1,inputs:[{name:"owner",internalType:"address",type:"address",indexed:!0},{name:"operator",internalType:"address",type:"address",indexed:!0},{name:"approved",internalType:"bool",type:"bool",indexed:!1}],name:"ApprovalForAll"},{type:"event",anonymous:!1,inputs:[{name:"vaultId",internalType:"uint256",type:"uint256",indexed:!1},{name:"token",internalType:"address",type:"address",indexed:!1},{name:"amount",internalType:"uint256",type:"uint256",indexed:!1}],name:"ERC20Deposited"},{type:"event",anonymous:!1,inputs:[{name:"vaultId",internalType:"uint256",type:"uint256",indexed:!1},{name:"token",internalType:"address",type:"address",indexed:!1},{name:"amount",internalType:"uint256",type:"uint256",indexed:!1}],name:"ERC20Withdrawn"},{type:"event",anonymous:!1,inputs:[{name:"vaultId",internalType:"uint256",type:"uint256",indexed:!1},{name:"collection",internalType:"address",type:"address",indexed:!1},{name:"tokenId",internalType:"uint256",type:"uint256",indexed:!1}],name:"ERC721Deposited"},{type:"event",anonymous:!1,inputs:[{name:"vaultId",internalType:"uint256",type:"uint256",indexed:!1},{name:"collection",internalType:"address",type:"address",indexed:!1},{name:"tokenId",internalType:"uint256",type:"uint256",indexed:!1}],name:"ERC721Withdrawn"},{type:"event",anonymous:!1,inputs:[{name:"vaultId",internalType:"uint256",type:"uint256",indexed:!1},{name:"collection",internalType:"address",type:"address",indexed:!1},{name:"tokenId",internalType:"uint256",type:"uint256",indexed:!1}],name:"OldERC721Deposited"},{type:"event",anonymous:!1,inputs:[{name:"vaultId",internalType:"uint256",type:"uint256",indexed:!1},{name:"collection",internalType:"address",type:"address",indexed:!1},{name:"tokenId",internalType:"uint256",type:"uint256",indexed:!1}],name:"OldERC721Withdrawn"},{type:"event",anonymous:!1,inputs:[{name:"user",internalType:"address",type:"address",indexed:!0},{name:"newOwner",internalType:"address",type:"address",indexed:!0}],name:"OwnershipTransferred"},{type:"event",anonymous:!1,inputs:[{name:"from",internalType:"address",type:"address",indexed:!0},{name:"to",internalType:"address",type:"address",indexed:!0},{name:"id",internalType:"uint256",type:"uint256",indexed:!0}],name:"Transfer"},{type:"function",inputs:[{name:"_vaultId",internalType:"uint256",type:"uint256"},{name:"_token",internalType:"address",type:"address"}],name:"ERC20BalanceOf",outputs:[{name:"",internalType:"uint256",type:"uint256"}],stateMutability:"view"},{type:"function",inputs:[{name:"_collection",internalType:"address",type:"address"},{name:"_tokenId",internalType:"uint256",type:"uint256"}],name:"ERC721OwnerOf",outputs:[{name:"",internalType:"uint256",type:"uint256"}],stateMutability:"view"},{type:"function",inputs:[],name:"ETH",outputs:[{name:"",internalType:"address",type:"address"}],stateMutability:"view"},{type:"function",inputs:[{name:"_collection",internalType:"address",type:"address"},{name:"_tokenId",internalType:"uint256",type:"uint256"}],name:"OldERC721OwnerOf",outputs:[{name:"",internalType:"uint256",type:"uint256"}],stateMutability:"view"},{type:"function",inputs:[{name:"spender",internalType:"address",type:"address"},{name:"id",internalType:"uint256",type:"uint256"}],name:"approve",outputs:[],stateMutability:"nonpayable"},{type:"function",inputs:[{name:"owner",internalType:"address",type:"address"}],name:"balanceOf",outputs:[{name:"",internalType:"uint256",type:"uint256"}],stateMutability:"view"},{type:"function",inputs:[{name:"_vaultId",internalType:"uint256",type:"uint256"},{name:"_assetRecipient",internalType:"address",type:"address"}],name:"burn",outputs:[],stateMutability:"nonpayable"},{type:"function",inputs:[{name:"_vaultId",internalType:"uint256",type:"uint256"},{name:"_collections",internalType:"address[]",type:"address[]"},{name:"_tokenIds",internalType:"uint256[]",type:"uint256[]"},{name:"_oldCollections",internalType:"address[]",type:"address[]"},{name:"_oldTokenIds",internalType:"uint256[]",type:"uint256[]"},{name:"_tokens",internalType:"address[]",type:"address[]"}],name:"burnAndWithdraw",outputs:[],stateMutability:"nonpayable"},{type:"function",inputs:[{name:"_vaultId",internalType:"uint256",type:"uint256"},{name:"_token",internalType:"address",type:"address"},{name:"_amount",internalType:"uint256",type:"uint256"}],name:"depositERC20",outputs:[],stateMutability:"nonpayable"},{type:"function",inputs:[{name:"_vaultId",internalType:"uint256",type:"uint256"},{name:"_collection",internalType:"address",type:"address"},{name:"_tokenId",internalType:"uint256",type:"uint256"}],name:"depositERC721",outputs:[],stateMutability:"nonpayable"},{type:"function",inputs:[{name:"_vaultId",internalType:"uint256",type:"uint256"},{name:"_collection",internalType:"address",type:"address"},{name:"_tokenIds",internalType:"uint256[]",type:"uint256[]"}],name:"depositERC721s",outputs:[],stateMutability:"nonpayable"},{type:"function",inputs:[{name:"_vaultId",internalType:"uint256",type:"uint256"}],name:"depositEth",outputs:[],stateMutability:"payable"},{type:"function",inputs:[{name:"_vaultId",internalType:"uint256",type:"uint256"},{name:"_collection",internalType:"address",type:"address"},{name:"_tokenId",internalType:"uint256",type:"uint256"}],name:"depositOldERC721",outputs:[],stateMutability:"nonpayable"},{type:"function",inputs:[{name:"_vaultId",internalType:"uint256",type:"uint256"},{name:"_collection",internalType:"address",type:"address"},{name:"_tokenIds",internalType:"uint256[]",type:"uint256[]"}],name:"depositOldERC721s",outputs:[],stateMutability:"nonpayable"},{type:"function",inputs:[{name:"",internalType:"uint256",type:"uint256"}],name:"getApproved",outputs:[{name:"",internalType:"address",type:"address"}],stateMutability:"view"},{type:"function",inputs:[{name:"",internalType:"address",type:"address"},{name:"",internalType:"address",type:"address"}],name:"isApprovedForAll",outputs:[{name:"",internalType:"bool",type:"bool"}],stateMutability:"view"},{type:"function",inputs:[],name:"mint",outputs:[{name:"",internalType:"uint256",type:"uint256"}],stateMutability:"nonpayable"},{type:"function",inputs:[],name:"name",outputs:[{name:"",internalType:"string",type:"string"}],stateMutability:"view"},{type:"function",inputs:[{name:"",internalType:"address",type:"address"},{name:"",internalType:"address",type:"address"},{name:"",internalType:"uint256",type:"uint256"},{name:"",internalType:"bytes",type:"bytes"}],name:"onERC721Received",outputs:[{name:"",internalType:"bytes4",type:"bytes4"}],stateMutability:"nonpayable"},{type:"function",inputs:[],name:"owner",outputs:[{name:"",internalType:"address",type:"address"}],stateMutability:"view"},{type:"function",inputs:[{name:"id",internalType:"uint256",type:"uint256"}],name:"ownerOf",outputs:[{name:"owner",internalType:"address",type:"address"}],stateMutability:"view"},{type:"function",inputs:[{name:"from",internalType:"address",type:"address"},{name:"to",internalType:"address",type:"address"},{name:"id",internalType:"uint256",type:"uint256"}],name:"safeTransferFrom",outputs:[],stateMutability:"nonpayable"},{type:"function",inputs:[{name:"from",internalType:"address",type:"address"},{name:"to",internalType:"address",type:"address"},{name:"id",internalType:"uint256",type:"uint256"},{name:"data",internalType:"bytes",type:"bytes"}],name:"safeTransferFrom",outputs:[],stateMutability:"nonpayable"},{type:"function",inputs:[{name:"operator",internalType:"address",type:"address"},{name:"approved",internalType:"bool",type:"bool"}],name:"setApprovalForAll",outputs:[],stateMutability:"nonpayable"},{type:"function",inputs:[{name:"interfaceId",internalType:"bytes4",type:"bytes4"}],name:"supportsInterface",outputs:[{name:"",internalType:"bool",type:"bool"}],stateMutability:"view"},{type:"function",inputs:[],name:"symbol",outputs:[{name:"",internalType:"string",type:"string"}],stateMutability:"view"},{type:"function",inputs:[{name:"_vaultId",internalType:"uint256",type:"uint256"}],name:"tokenURI",outputs:[{name:"",internalType:"string",type:"string"}],stateMutability:"pure"},{type:"function",inputs:[{name:"from",internalType:"address",type:"address"},{name:"to",internalType:"address",type:"address"},{name:"id",internalType:"uint256",type:"uint256"}],name:"transferFrom",outputs:[],stateMutability:"nonpayable"},{type:"function",inputs:[{name:"newOwner",internalType:"address",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"nonpayable"},{type:"function",inputs:[{name:"_vaultId",internalType:"uint256",type:"uint256"},{name:"_token",internalType:"address",type:"address"}],name:"withdrawERC20",outputs:[],stateMutability:"nonpayable"},{type:"function",inputs:[{name:"_vaultId",internalType:"uint256",type:"uint256"},{name:"_tokens",internalType:"address[]",type:"address[]"}],name:"withdrawERC20s",outputs:[],stateMutability:"nonpayable"},{type:"function",inputs:[{name:"_vaultId",internalType:"uint256",type:"uint256"},{name:"_collection",internalType:"address",type:"address"},{name:"_tokenId",internalType:"uint256",type:"uint256"}],name:"withdrawERC721",outputs:[],stateMutability:"nonpayable"},{type:"function",inputs:[{name:"_vaultId",internalType:"uint256",type:"uint256"},{name:"_collections",internalType:"address[]",type:"address[]"},{name:"_tokenIds",internalType:"uint256[]",type:"uint256[]"}],name:"withdrawERC721s",outputs:[],stateMutability:"nonpayable"},{type:"function",inputs:[{name:"_vaultId",internalType:"uint256",type:"uint256"}],name:"withdrawEth",outputs:[],stateMutability:"nonpayable"},{type:"function",inputs:[{name:"_vaultId",internalType:"uint256",type:"uint256"},{name:"_collection",internalType:"address",type:"address"},{name:"_tokenId",internalType:"uint256",type:"uint256"}],name:"withdrawOldERC721",outputs:[],stateMutability:"nonpayable"},{type:"function",inputs:[{name:"_vaultId",internalType:"uint256",type:"uint256"},{name:"_collections",internalType:"address[]",type:"address[]"},{name:"_tokenIds",internalType:"uint256[]",type:"uint256[]"}],name:"withdrawOldERC721s",outputs:[],stateMutability:"nonpayable"}];var oe=l(p=>Number(p.valueOf()),"toInteger"),ye=l(p=>oe(p)/1e4,"bpsToPercentage"),D=l((p,e)=>{if(p.length)return typeof p[0]?.[e]=="bigint"?p.reduce((t,n)=>t+BigInt(n[e]),0n):p.reduce((t,n)=>t+Number(n[e]),0)},"sumBy"),Je=l((p,e)=>{if(p.length)return typeof p[0]?.[e]=="bigint"?p.reduce((t,n)=>BigInt(n[e])>t?BigInt(n[e]):t,0n):p.reduce((t,n)=>Number(n[e])>t?Number(n[e]):t,0)},"maxBy"),et=l((p,e)=>p===void 0?e:e===void 0||p<e?p:e,"min");var Ie=60,le=Ie*60*24,A=l(p=>Math.ceil(oe(p)/1e3),"millisToSeconds"),Ae=l(p=>oe(p)*1e3,"secondsToMillis");var Q=class extends b{constructor({walletClient:e}){let{AuctionLoanLiquidator:{v6:t}}=g(e.chain);super({walletClient:e,address:t,abi:je})}async placeBid({collectionContractAddress:e,tokenId:t,bid:n,auction:a}){let i=await this.safeContractWrite.placeBid([e,t,this.mapAuctionToAuctionArgs(a),n]);return{txHash:i,waitTxInBlock:async()=>{let r=await this.bcClient.waitForTransactionReceipt({hash:i}),s=await this.contract.createEventFilter.BidPlaced(),o=u(r,s);if(o.length===0)throw new Error("Bid not placed");return{...o[0].args,...r}}}}async getRemainingLockupSeconds({auction:e}){let t=await this.contract.read.getTimeForMainLenderToBuy(),n=Number(t),a=Math.ceil(A(Date.now())-Number(e.startTime));return a>=n?0:n-a}async settleAuctionWithBuyout({auction:e,loan:t}){let n=await this.safeContractWrite.settleWithBuyout([t.nftCollateralAddress,t.nftCollateralTokenId,this.mapAuctionToAuctionArgs(e),t]);return{txHash:n,waitTxInBlock:async()=>{let a=await this.bcClient.waitForTransactionReceipt({hash:n}),i=await this.contract.createEventFilter.AuctionSettledWithBuyout(),r=u(a,i);if(r.length===0)throw new Error("Auction not settled");return{...r[0].args,...a}}}}async settleAuction({auction:e,loan:t}){let n=await this.safeContractWrite.settleAuction([this.mapAuctionToAuctionArgs(e),t]);return{txHash:n,waitTxInBlock:async()=>{let a=await this.bcClient.waitForTransactionReceipt({hash:n}),i=await this.contract.createEventFilter.AuctionSettled(),r=u(a,i);if(r.length===0)throw new Error("Auction not settled");return{...r[0].args,...a}}}}mapAuctionToAuctionArgs(e){if("minBid"in e)return e;throw new Error("minBid is required for v6 auctions")}};l(Q,"AllV6");import{encodeFunctionData as un}from"viem";var tt=[{constant:!0,inputs:[],name:"name",outputs:[{name:"",type:"string"}],payable:!1,type:"function",stateMutability:"view"},{constant:!0,inputs:[{name:"",type:"uint256"}],name:"punksOfferedForSale",outputs:[{name:"isForSale",type:"bool"},{name:"punkIndex",type:"uint256"},{name:"seller",type:"address"},{name:"minValue",type:"uint256"},{name:"onlySellTo",type:"address"}],payable:!1,type:"function",stateMutability:"view"},{constant:!1,inputs:[{name:"punkIndex",type:"uint256"}],name:"enterBidForPunk",outputs:[],payable:!0,type:"function",stateMutability:"payable"},{constant:!0,inputs:[],name:"totalSupply",outputs:[{name:"",type:"uint256"}],payable:!1,type:"function",stateMutability:"view"},{constant:!1,inputs:[{name:"punkIndex",type:"uint256"},{name:"minPrice",type:"uint256"}],name:"acceptBidForPunk",outputs:[],payable:!1,type:"function",stateMutability:"nonpayable"},{constant:!0,inputs:[],name:"decimals",outputs:[{name:"",type:"uint8"}],payable:!1,type:"function",stateMutability:"view"},{constant:!1,inputs:[{name:"addresses",type:"address[]"},{name:"indices",type:"uint256[]"}],name:"setInitialOwners",outputs:[],payable:!1,type:"function",stateMutability:"nonpayable"},{constant:!1,inputs:[],name:"withdraw",outputs:[],payable:!1,type:"function",stateMutability:"nonpayable"},{constant:!0,inputs:[],name:"imageHash",outputs:[{name:"",type:"string"}],payable:!1,type:"function",stateMutability:"view"},{constant:!0,inputs:[],name:"nextPunkIndexToAssign",outputs:[{name:"",type:"uint256"}],payable:!1,type:"function",stateMutability:"view"},{constant:!0,inputs:[{name:"",type:"uint256"}],name:"punkIndexToAddress",outputs:[{name:"",type:"address"}],payable:!1,type:"function",stateMutability:"view"},{constant:!0,inputs:[],name:"standard",outputs:[{name:"",type:"string"}],payable:!1,type:"function",stateMutability:"view"},{constant:!0,inputs:[{name:"",type:"uint256"}],name:"punkBids",outputs:[{name:"hasBid",type:"bool"},{name:"punkIndex",type:"uint256"},{name:"bidder",type:"address"},{name:"value",type:"uint256"}],payable:!1,type:"function",stateMutability:"view"},{constant:!0,inputs:[{name:"",type:"address"}],name:"balanceOf",outputs:[{name:"",type:"uint256"}],payable:!1,type:"function",stateMutability:"view"},{constant:!1,inputs:[],name:"allInitialOwnersAssigned",outputs:[],payable:!1,type:"function",stateMutability:"nonpayable"},{constant:!0,inputs:[],name:"allPunksAssigned",outputs:[{name:"",type:"bool"}],payable:!1,type:"function",stateMutability:"view"},{constant:!1,inputs:[{name:"punkIndex",type:"uint256"}],name:"buyPunk",outputs:[],payable:!0,type:"function",stateMutability:"payable"},{constant:!1,inputs:[{name:"to",type:"address"},{name:"punkIndex",type:"uint256"}],name:"transferPunk",outputs:[],payable:!1,type:"function",stateMutability:"nonpayable"},{constant:!0,inputs:[],name:"symbol",outputs:[{name:"",type:"string"}],payable:!1,type:"function",stateMutability:"view"},{constant:!1,inputs:[{name:"punkIndex",type:"uint256"}],name:"withdrawBidForPunk",outputs:[],payable:!1,type:"function",stateMutability:"nonpayable"},{constant:!1,inputs:[{name:"to",type:"address"},{name:"punkIndex",type:"uint256"}],name:"setInitialOwner",outputs:[],payable:!1,type:"function",stateMutability:"nonpayable"},{constant:!1,inputs:[{name:"punkIndex",type:"uint256"},{name:"minSalePriceInWei",type:"uint256"},{name:"toAddress",type:"address"}],name:"offerPunkForSaleToAddress",outputs:[],payable:!1,type:"function",stateMutability:"nonpayable"},{constant:!0,inputs:[],name:"punksRemainingToAssign",outputs:[{name:"",type:"uint256"}],payable:!1,type:"function",stateMutability:"view"},{constant:!1,inputs:[{name:"punkIndex",type:"uint256"},{name:"minSalePriceInWei",type:"uint256"}],name:"offerPunkForSale",outputs:[],payable:!1,type:"function",stateMutability:"nonpayable"},{constant:!1,inputs:[{name:"punkIndex",type:"uint256"}],name:"getPunk",outputs:[],payable:!1,type:"function",stateMutability:"nonpayable"},{constant:!0,inputs:[{name:"",type:"address"}],name:"pendingWithdrawals",outputs:[{name:"",type:"uint256"}],payable:!1,type:"function",stateMutability:"view"},{constant:!1,inputs:[{name:"punkIndex",type:"uint256"}],name:"punkNoLongerForSale",outputs:[],payable:!1,type:"function",stateMutability:"nonpayable"},{inputs:[],payable:!0,type:"constructor",stateMutability:"payable"},{anonymous:!1,inputs:[{indexed:!0,name:"to",type:"address"},{indexed:!1,name:"punkIndex",type:"uint256"}],name:"Assign",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"from",type:"address"},{indexed:!0,name:"to",type:"address"},{indexed:!1,name:"value",type:"uint256"}],name:"Transfer",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"from",type:"address"},{indexed:!0,name:"to",type:"address"},{indexed:!1,name:"punkIndex",type:"uint256"}],name:"PunkTransfer",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"punkIndex",type:"uint256"},{indexed:!1,name:"minValue",type:"uint256"},{indexed:!0,name:"toAddress",type:"address"}],name:"PunkOffered",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"punkIndex",type:"uint256"},{indexed:!1,name:"value",type:"uint256"},{indexed:!0,name:"fromAddress",type:"address"}],name:"PunkBidEntered",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"punkIndex",type:"uint256"},{indexed:!1,name:"value",type:"uint256"},{indexed:!0,name:"fromAddress",type:"address"}],name:"PunkBidWithdrawn",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"punkIndex",type:"uint256"},{indexed:!1,name:"value",type:"uint256"},{indexed:!0,name:"fromAddress",type:"address"},{indexed:!0,name:"toAddress",type:"address"}],name:"PunkBought",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"punkIndex",type:"uint256"}],name:"PunkNoLongerForSale",type:"event"}];var z=class extends b{constructor({walletClient:e}){let{CryptoPunksAddress:t}=g(e.chain);super({walletClient:e,address:t,abi:tt})}async encodeBuyPunk(e){return un({abi:this.abi,functionName:"buyPunk",args:[e]})}};l(z,"CryptoPunks");import{encodeFunctionData as nt}from"viem";var G=class extends b{mslAddress;constructor({walletClient:e,mslAddress:t}){let{LeverageAddress:n}=g(e.chain);super({walletClient:e,address:n,abi:We}),this.mslAddress=t}getDomain(){return{name:C,version:"2",chainId:this.wallet.chain.id,verifyingContract:this.mslAddress}}async signExecutionData(e){return this.wallet.signTypedData({domain:this.getDomain(),primaryType:"ExecutionData",types:{ExecutionData:[{name:"offer",type:"LoanOffer"},{name:"tokenId",type:"uint256"},{name:"amount",type:"uint256"},{name:"expirationTime",type:"uint256"},{name:"callbackData",type:"bytes"}],LoanOffer:[{name:"offerId",type:"uint256"},{name:"lender",type:"address"},{name:"fee",type:"uint256"},{name:"borrower",type:"address"},{name:"capacity",type:"uint256"},{name:"nftCollateralAddress",type:"address"},{name:"nftCollateralTokenId",type:"uint256"},{name:"principalAddress",type:"address"},{name:"principalAmount",type:"uint256"},{name:"aprBps",type:"uint256"},{name:"expirationTime",type:"uint256"},{name:"duration",type:"uint256"},{name:"validators",type:"OfferValidator[]"}],OfferValidator:[{name:"validator",type:"address"},{name:"arguments",type:"bytes"}]},message:e})}async signRepaymentData(e){return this.wallet.signTypedData({domain:this.getDomain(),primaryType:"SignableRepaymentData",types:{SignableRepaymentData:[{name:"loanId",type:"uint256"},{name:"callbackData",type:"bytes"},{name:"shouldDelegate",type:"bool"}]},message:e})}async buy({leverageBuyData:e,ethToSend:t}){let n=await this.safeContractWrite.buy([await Promise.all(e.map(async a=>{let i={offer:a.offer,tokenId:a.nft.tokenId,amount:a.amount,expirationTime:a.expirationTime,callbackData:a.callbackData};return nt({abi:h,functionName:"emitLoan",args:[{executionData:i,lender:a.offer.lender,borrower:this.wallet.account.address,lenderOfferSignature:a.offer.signature,borrowerOfferSignature:await this.signExecutionData(i)}]})}))],{value:t});return{txHash:n,waitTxInBlock:async()=>{let a=await this.bcClient.waitForTransactionReceipt({hash:n}),i=await this.contract.createEventFilter.BNPLLoansStarted(),r=u(a,i);if(r.length===0)throw new Error("BNPL Loans not started");return{...r[0].args,...a}}}}async sell({loan:e,callbackData:t,shouldDelegate:n,loanId:a}){let i={loanId:a,callbackData:t,shouldDelegate:n},r=await this.safeContractWrite.sell([[nt({abi:h,functionName:"repayLoan",args:[{data:i,loan:e,borrowerSignature:await this.signRepaymentData(i)}]})]]);return{txHash:r,waitTxInBlock:async()=>{let s=await this.bcClient.waitForTransactionReceipt({hash:r}),o=await this.contract.createEventFilter.SellAndRepayExecuted(),y=u(s,o);if(y.length===0)throw new Error("Sell and repay not executed");return{...y[0].args,...s}}}}};l(G,"LeverageV5");import{zeroAddress as mn}from"viem";import{isAddress as dn}from"viem";var ue=l((p,e)=>({...p,loanId:e,strictImprovement:p.strictImprovement??!1,lender:p.lenderAddress,signer:p.signerAddress??x,fee:p.feeAmount,trancheIndex:p.trancheIndex??[],targetPrincipal:p.targetPrincipal??[]}),"renegotiationToMslRenegotiation"),F=l(p=>{let e=p.nftCollateralAddress??x;if(M(x,e)||!dn(e))throw new Error("nftCollateralAddress is required");let t;"source"in p?t=p.source.map(a=>({...a,floor:0n})):t=p.tranche;let n;return"protocolFee"in p?n=p.protocolFee:n=0n,{...p,nftCollateralAddress:e,source:t,tranche:t,protocolFee:n}},"loanToMslLoan"),at=l(({loanId:p,loan:e,trancheIndex:t,address:n})=>{let a=F(e),i=t?{trancheIndex:a.source.map((r,s)=>BigInt(s)),targetPrincipal:[]}:{trancheIndex:[],targetPrincipal:a.source.map(()=>0n)};return{loanId:p,lenderAddress:n,signerAddress:n,expirationTime:BigInt(A(Date.now())),aprBps:0n,feeAmount:0n,duration:a.duration,principalAmount:a.principalAmount,...i}},"generateFakeRenegotiationInput"),V=l(p=>{let e=F(p);return Je(e.source,"loanId")??0n},"getMslLoanId"),de=l(p=>{let e=new Date,t=new Date(Ae(p.startTime)+Ae(p.duration));return t.getTime()<e.getTime()?0:A(t.getTime()-e.getTime())},"getRemainingSeconds");var X=class extends b{constructor({walletClient:e}){let{MultiSourceLoan:{v4:t}}=g(e.chain);super({walletClient:e,address:t,abi:Ze})}getDomain(){return{name:C,version:"1",chainId:this.wallet.chain.id,verifyingContract:this.address}}async signOffer({structToSign:e}){return this.wallet.signTypedData({domain:this.getDomain(),primaryType:"LoanOffer",types:{LoanOffer:[{name:"offerId",type:"uint256"},{name:"lender",type:"address"},{name:"fee",type:"uint256"},{name:"borrower",type:"address"},{name:"capacity",type:"uint256"},{name:"signer",type:"address"},{name:"requiresLiquidation",type:"bool"},{name:"nftCollateralAddress",type:"address"},{name:"nftCollateralTokenId",type:"uint256"},{name:"principalAddress",type:"address"},{name:"principalAmount",type:"uint256"},{name:"aprBps",type:"uint256"},{name:"expirationTime",type:"uint256"},{name:"duration",type:"uint256"},{name:"validators",type:"OfferValidator[]"}],OfferValidator:[{name:"validator",type:"address"},{name:"arguments",type:"bytes"}]},message:e})}async signRenegotiationOffer({structToSign:e}){return this.wallet.signTypedData({domain:this.getDomain(),primaryType:"RenegotiationOffer",types:{RenegotiationOffer:[{name:"renegotiationId",type:"uint256"},{name:"loanId",type:"uint256"},{name:"lender",type:"address"},{name:"fee",type:"uint256"},{name:"signer",type:"address"},{name:"targetPrincipal",type:"uint256[]"},{name:"principalAmount",type:"uint256"},{name:"aprBps",type:"uint256"},{name:"expirationTime",type:"uint256"},{name:"duration",type:"uint256"},{name:"strictImprovement",type:"bool"}]},message:e})}async cancelOffer({id:e}){let t=await this.safeContractWrite.cancelOffer([this.wallet.account.address,e]);return{txHash:t,waitTxInBlock:async()=>{let n=await this.bcClient.waitForTransactionReceipt({hash:t}),a=await this.contract.createEventFilter.OfferCancelled(),i=u(n,a);if(i.length===0)throw new Error("Offer not cancelled");return{...i[0].args,...n}}}}async cancelAllOffers({minId:e}){let t=await this.safeContractWrite.cancelAllOffers([this.wallet.account.address,e]);return{txHash:t,waitTxInBlock:async()=>{let n=await this.bcClient.waitForTransactionReceipt({hash:t}),a=await this.contract.createEventFilter.AllOffersCancelled(),i=u(n,a);if(i.length===0)throw new Error("Offers not cancelled");return{...i[0].args,...n}}}}async cancelRefinanceOffer({id:e}){let t=await this.safeContractWrite.cancelRenegotiationOffer([this.wallet.account.address,e]);return{txHash:t,waitTxInBlock:async()=>{let n=await this.bcClient.waitForTransactionReceipt({hash:t}),a=await this.contract.createEventFilter.RenegotiationOfferCancelled(),i=u(n,a);if(i.length===0)throw new Error("Offer not cancelled");return{...i[0].args,...n}}}}async cancelAllRenegotiations({minId:e}){let t=await this.safeContractWrite.cancelAllRenegotiationOffers([this.wallet.account.address,e]);return{txHash:t,waitTxInBlock:async()=>{let n=await this.bcClient.waitForTransactionReceipt({hash:t}),a=await this.contract.createEventFilter.RenegotiationOfferCancelled(),i=u(n,a);if(i.length===0)throw new Error("Offer not cancelled");return{...i[0].args,...n}}}}mapEmitLoanToMslEmitLoanArgs({offerExecution:e,tokenId:t}){let{offer:n,lenderOfferSignature:a}=e[0];return[{...n,signer:n.signerAddress??mn,lender:n.lenderAddress,borrower:n.borrowerAddress,validators:n.offerValidators,requiresLiquidation:!!n.requiresLiquidation},t,a,!1]}async emitLoan(e){let t=this.mapEmitLoanToMslEmitLoanArgs(e),n=await this.safeContractWrite.emitLoan(t);return{txHash:n,waitTxInBlock:async()=>{let a=await this.bcClient.waitForTransactionReceipt({hash:n}),i=await this.contract.createEventFilter.LoanEmitted(),r=u(a,i);if(r.length===0)throw new Error("Loan not emitted");let s=r[0].args;return{loan:{id:`${this.contract.address.toLowerCase()}.${s.loanId}`,...s.loan,contractAddress:this.contract.address},loanId:s.loanId,offerId:`${this.contract.address.toLowerCase()}.${t[0].lender.toLowerCase()}.${s.offerId}`,...a}}}}async repayLoan({loan:e,nftReceiver:t,loanId:n}){let a=t??this.wallet.account.address,i=await this.safeContractWrite.repayLoan([a,n,e,!1]);return{txHash:i,waitTxInBlock:async()=>{let r=await this.bcClient.waitForTransactionReceipt({hash:i}),s=await this.contract.createEventFilter.LoanRepaid(),o=u(r,s);if(o.length===0)throw new Error("Loan not repaid");return{...o[0].args,...r}}}}getRemainingLockupSeconds(){return 0}async refinanceBatch({renegotiationId:e,refinancings:t}){let n=[],a=[];t.forEach(({loan:r,sources:s,newAprBps:o},y)=>{let d=r.source.map(({principalAmount:m,loanId:T})=>{let S=s.find(({source:v})=>v.loanId===T);return m-(S?.refinancingPrincipal??0n)}),c=D(s,"refinancingPrincipal")??0n;n.push({renegotiationId:e+BigInt(y),loanId:V(r),lender:this.wallet.account.address,fee:0n,signer:this.wallet.account.address,targetPrincipal:d,principalAmount:c,aprBps:o,expirationTime:BigInt(A(Date.now())+Ie),duration:0n,strictImprovement:!0}),a.push(r)});let i=await this.safeContractWrite.refinancePartialBatch([n,a]);return{txHash:i,waitTxInBlock:async()=>{let r=await this.bcClient.waitForTransactionReceipt({hash:i}),s=await this.contract.createEventFilter.LoanRefinanced(),o=u(r,s);if(o.length!==t.length)throw new Error("Loan not refinanced");return{results:o.map(({args:d})=>d),...r}}}}async refinanceFullLoan({offer:e,signature:t,loan:n}){return this.executeRenegotiation({offer:e,executeRenegotiationTxn:()=>this.safeContractWrite.refinanceFull([e,n,t])})}async refinancePartialLoan({offer:e,loan:t}){return this.executeRenegotiation({offer:e,executeRenegotiationTxn:()=>this.safeContractWrite.refinancePartial([e,t])})}async executeRenegotiation({offer:e,executeRenegotiationTxn:t}){let n=await t();return{txHash:n,waitTxInBlock:async()=>{let a=await this.bcClient.waitForTransactionReceipt({hash:n}),i=await this.contract.createEventFilter.LoanRefinanced(),r=u(a,i);if(r.length===0)throw new Error("Loan not refinanced");let s=r[0].args;return{loan:{id:`${this.contract.address.toLowerCase()}.${s.newLoanId}`,...s.loan,contractAddress:this.contract.address},loanId:s.newLoanId,renegotiationId:`${this.contract.address.toLowerCase()}.${e.lender.toLowerCase()}.${s.renegotiationId}`,...a}}}}async extendLoan(){throw new Error("Not implemented for V1")}async mergeTranches(){throw new Error("Not implemented for V1")}async addTranche(){throw new Error("Not implemented for V1")}async refinanceFromOffers(){throw new Error("Not implemented for V1")}async delegateMulticall(){throw new Error("Not implemented for V1")}async delegate(){throw new Error("Not implemented for V1")}async revokeDelegate(){throw new Error("Not implemented for V1")}async revokeDelegationsAndEmitLoan(){throw new Error("Not implemented for V1")}async liquidateLoan({loan:e,loanId:t}){let n=await this.safeContractWrite.liquidateLoan([t,e]);return{txHash:n,waitTxInBlock:async()=>{let a=await this.bcClient.waitForTransactionReceipt({hash:n}),i=await this.contract.createEventFilter.LoanForeclosed(),r=await this.contract.createEventFilter.LoanSentToLiquidator(),s=u(a,i),o=u(a,r);if(s.length===0&&o.length===0)throw new Error("Loan not liquidated");return{...s?.[0]?.args??o?.[0]?.args,...a}}}}};l(X,"MslV4");import{encodeFunctionData as Z}from"viem";var j=class extends b{constructor({walletClient:e}){let{MultiSourceLoan:{v5:t}}=g(e.chain);super({walletClient:e,address:t,abi:h})}getDomain(){return{name:C,version:"2",chainId:this.wallet.chain.id,verifyingContract:this.address}}async signOffer({structToSign:e}){return this.wallet.signTypedData({domain:this.getDomain(),primaryType:"LoanOffer",types:{LoanOffer:[{name:"offerId",type:"uint256"},{name:"lender",type:"address"},{name:"fee",type:"uint256"},{name:"borrower",type:"address"},{name:"capacity",type:"uint256"},{name:"nftCollateralAddress",type:"address"},{name:"nftCollateralTokenId",type:"uint256"},{name:"principalAddress",type:"address"},{name:"principalAmount",type:"uint256"},{name:"aprBps",type:"uint256"},{name:"expirationTime",type:"uint256"},{name:"duration",type:"uint256"},{name:"validators",type:"OfferValidator[]"}],OfferValidator:[{name:"validator",type:"address"},{name:"arguments",type:"bytes"}]},message:e})}async signRenegotiationOffer({structToSign:e}){return this.wallet.signTypedData({domain:this.getDomain(),primaryType:"RenegotiationOffer",types:{RenegotiationOffer:[{name:"renegotiationId",type:"uint256"},{name:"loanId",type:"uint256"},{name:"lender",type:"address"},{name:"fee",type:"uint256"},{name:"targetPrincipal",type:"uint256[]"},{name:"principalAmount",type:"uint256"},{name:"aprBps",type:"uint256"},{name:"expirationTime",type:"uint256"},{name:"duration",type:"uint256"}]},message:e})}async cancelOffer({id:e}){let t=await this.safeContractWrite.cancelOffer([e]);return{txHash:t,waitTxInBlock:async()=>{let n=await this.bcClient.waitForTransactionReceipt({hash:t}),a=await this.contract.createEventFilter.OfferCancelled(),i=u(n,a);if(i.length===0)throw new Error("Offer not cancelled");return{...i[0].args,...n}}}}async cancelAllOffers({minId:e}){let t=await this.safeContractWrite.cancelAllOffers([e]);return{txHash:t,waitTxInBlock:async()=>{let n=await this.bcClient.waitForTransactionReceipt({hash:t}),a=await this.contract.createEventFilter.AllOffersCancelled(),i=u(n,a);if(i.length===0)throw new Error("Offers not cancelled");return{...i[0].args,...n}}}}async cancelRefinanceOffer({id:e}){let t=await this.safeContractWrite.cancelRenegotiationOffer([e]);return{txHash:t,waitTxInBlock:async()=>{let n=await this.bcClient.waitForTransactionReceipt({hash:t}),a=await this.contract.createEventFilter.RenegotiationOfferCancelled(),i=u(n,a);if(i.length===0)throw new Error("Renegotiation offer not cancelled");return{...i[0].args,...n}}}}async cancelAllRenegotiations({minId:e}){let t=await this.safeContractWrite.cancelAllRenegotiationOffers([e]);return{txHash:t,waitTxInBlock:async()=>{let n=await this.bcClient.waitForTransactionReceipt({hash:t}),a=await this.contract.createEventFilter.AllRenegotiationOffersCancelled(),i=u(n,a);if(i.length===0)throw new Error("Renegotiation offers not cancelled");return{...i[0].args,...n}}}}mapEmitLoanToMslEmitLoanArgs({offerExecution:e,tokenId:t,expirationTime:n}){let{offer:a,amount:i,lenderOfferSignature:r}=e[0];return{executionData:{offer:{...a,lender:a.lenderAddress,borrower:a.borrowerAddress,validators:a.offerValidators},tokenId:t,amount:i??a.principalAmount,expirationTime:n??BigInt(A(Date.now())+le),callbackData:"0x"},lender:a.lenderAddress,borrower:this.wallet.account.address,lenderOfferSignature:r,borrowerOfferSignature:"0x"}}async emitLoan(e){let t=this.mapEmitLoanToMslEmitLoanArgs(e),n=await this.safeContractWrite.emitLoan([t]);return{txHash:n,waitTxInBlock:async()=>{let a=await this.bcClient.waitForTransactionReceipt({hash:n}),i=await this.contract.createEventFilter.LoanEmitted(),r=u(a,i);if(r.length===0)throw new Error("Loan not emitted");let s=r[0].args;return{loan:{id:`${this.contract.address.toLowerCase()}.${s.loanId}`,...s.loan,contractAddress:this.contract.address},loanId:s.loanId,offerId:`${this.contract.address.toLowerCase()}.${t.lender.toLowerCase()}.${s.offerId}`,...a}}}}async revokeDelegationsAndEmitLoan({delegations:e,emit:t}){if(e.length===0)throw new Error("At least one delegation must be revoked");let n=this.mapEmitLoanToMslEmitLoanArgs(t),{tokenId:a,offer:i}=n.executionData,r=e.map(y=>Z({abi:h,functionName:"revokeDelegate",args:[y,i.nftCollateralAddress,a]})),s=Z({abi:h,functionName:"emitLoan",args:[n]}),o=await this.safeContractWrite.multicall([[...r,s]]);return{txHash:o,waitTxInBlock:async()=>{let y=await this.bcClient.waitForTransactionReceipt({hash:o}),d=await this.contract.createEventFilter.RevokeDelegate(),c=u(y,d);if(c.length!==e.length)throw new Error("Revoke delegations failed");let m=await this.contract.createEventFilter.LoanEmitted(),T=u(y,m);if(T.length===0)throw new Error("Loan not emitted");let S=[...c.map(({args:w})=>w),...T.map(({args:w})=>w)],v=T[0].args;return{loan:{id:`${this.contract.address.toLowerCase()}.${v.loanId}`,...v.loan,contractAddress:this.contract.address},loanId:v.loanId,...y,results:S}}}}async repayLoan({loan:e,loanId:t}){let n={loanId:t,callbackData:"0x",shouldDelegate:!1},a=await this.safeContractWrite.repayLoan([{data:n,loan:e,borrowerSignature:"0x"}]);return{txHash:a,waitTxInBlock:async()=>{let i=await this.bcClient.waitForTransactionReceipt({hash:a}),r=await this.contract.createEventFilter.LoanRepaid(),s=u(i,r);if(s.length===0)throw new Error("Loan not repaid");return{...s[0].args,...i}}}}async getRemainingLockupSeconds({loan:e}){let t=e.source[0],a=e.startTime+e.duration-t.startTime,i=await this.contract.read.getMinLockPeriod(),r=ye(i),s=Math.ceil(Number(a)*r),o=Math.ceil(A(Date.now())-Number(t.startTime));return o>=s?0:s-o}async refinanceBatch({renegotiationId:e,refinancings:t}){let n=t.map(({loan:i,sources:r,newAprBps:s},o)=>{let y=i.source.map(({principalAmount:T,loanId:S})=>{let v=r.find(({source:w})=>w.loanId===S);return T-(v?.refinancingPrincipal??0n)}),d=D(r,"refinancingPrincipal")??0n,c={renegotiationId:e+BigInt(o),loanId:V(i),lender:this.wallet.account.address,fee:0n,targetPrincipal:y,principalAmount:d,aprBps:s,expirationTime:BigInt(A(Date.now()))+k,duration:BigInt(de(i))+k};return d===i.principalAmount?Z({abi:h,functionName:"refinanceFull",args:[c,i,I]}):Z({abi:h,functionName:"refinancePartial",args:[{...c,duration:0n},i]})}),a=await this.safeContractWrite.multicall([n]);return{txHash:a,waitTxInBlock:async()=>{let i=await this.bcClient.waitForTransactionReceipt({hash:a}),r=await this.contract.createEventFilter.LoanRefinanced(),s=u(i,r);if(s.length!==t.length)throw new Error("Loan not refinanced");return{results:s.map(({args:y})=>y),...i}}}}async refinanceFullLoan({offer:e,signature:t,loan:n}){return this.executeRenegotiation({offer:e,executeRenegotiationTxn:()=>this.safeContractWrite.refinanceFull([e,n,t])})}async refinancePartialLoan({offer:e,loan:t}){return this.executeRenegotiation({offer:e,executeRenegotiationTxn:()=>this.safeContractWrite.refinancePartial([e,t])})}async executeRenegotiation({offer:e,executeRenegotiationTxn:t}){let n=await t();return{txHash:n,waitTxInBlock:async()=>{let a=await this.bcClient.waitForTransactionReceipt({hash:n}),i=await this.contract.createEventFilter.LoanRefinanced(),r=u(a,i);if(r.length===0)throw new Error("Loan not refinanced");let s=r[0].args;return{loan:{id:`${this.contract.address.toLowerCase()}.${s.newLoanId}`,...s.loan,contractAddress:this.contract.address},loanId:s.newLoanId,renegotiationId:`${this.contract.address.toLowerCase()}.${e.lender.toLowerCase()}.${s.renegotiationId}`,...a}}}}async extendLoan({loan:e,loanId:t,newDuration:n}){let a=await this.safeContractWrite.extendLoan([t,e,n-e.duration]);return{txHash:a,waitTxInBlock:async()=>{let i=await this.bcClient.waitForTransactionReceipt({hash:a}),r=await this.contract.createEventFilter.LoanExtended(),s=u(i,r);if(s.length===0)throw new Error("Loan not extended");let o=s[0].args;return{loan:{id:`${this.contract.address.toLowerCase()}.${o.newLoanId}`,...o.loan,contractAddress:this.contract.address},newLoanId:o.newLoanId,...i}}}}async mergeTranches(){throw new Error("Not implemented for V2")}async addTranche(){throw new Error("Not implemented for V2")}async refinanceFromOffers(){throw new Error("Not implemented for V2")}async delegateMulticall(e){if(e.length===0)throw new Error("At least one delegation must be revoked");let t=await this.safeContractWrite.multicall([e.map(n=>Z({abi:h,functionName:"delegate",args:[n.loanId,n.loan,n.to,n.rights??I,n.enable]}))]);return{txHash:t,waitTxInBlock:async()=>{let n=await this.bcClient.waitForTransactionReceipt({hash:t}),a=await this.contract.createEventFilter.Delegated(),i=u(n,a);if(i.length!==e.length)throw new Error("Delegate multicall failed");return{...n,results:i.map(({args:r})=>r)}}}}async delegate({loan:e,loanId:t,to:n,rights:a=I,enable:i}){let r=await this.safeContractWrite.delegate([t,e,n,a,i]);return{txHash:r,waitTxInBlock:async()=>{let s=await this.bcClient.waitForTransactionReceipt({hash:r}),o=await this.contract.createEventFilter.Delegated(),y=u(s,o);if(y.length===0)throw new Error("Token not delegated");let d=y[0].args;return{loan:{...e,loanId:t,contractAddress:this.contract.address},value:d.value,...s}}}}async revokeDelegate({to:e,collection:t,tokenId:n}){let a=await this.safeContractWrite.revokeDelegate([e,t,n]);return{txHash:a,waitTxInBlock:async()=>{let i=await this.bcClient.waitForTransactionReceipt({hash:a}),r=await this.contract.createEventFilter.RevokeDelegate(),s=u(i,r);if(s.length===0)throw new Error("Token delegation not revoked");return{...s[0].args,...i}}}}async liquidateLoan({loan:e,loanId:t}){let n=await this.safeContractWrite.liquidateLoan([t,e]);return{txHash:n,waitTxInBlock:async()=>{let a=await this.bcClient.waitForTransactionReceipt({hash:n}),i=await this.contract.createEventFilter.LoanForeclosed(),r=await this.contract.createEventFilter.LoanSentToLiquidator(),s=u(a,i),o=u(a,r);if(s.length===0&&o.length===0)throw new Error("Loan not liquidated");return{...s?.[0]?.args??o?.[0]?.args,...a}}}}};l(j,"MslV5");import{encodeFunctionData as Y}from"viem";var J=class extends b{constructor({walletClient:e}){let{MultiSourceLoan:{v6:t}}=g(e.chain);super({walletClient:e,address:t,abi:R})}getDomain(){return{name:C,version:"3",chainId:this.wallet.chain.id,verifyingContract:this.address}}async signOffer({structToSign:e}){return this.wallet.signTypedData({domain:this.getDomain(),primaryType:"LoanOffer",types:{LoanOffer:[{name:"offerId",type:"uint256"},{name:"lender",type:"address"},{name:"fee",type:"uint256"},{name:"capacity",type:"uint256"},{name:"nftCollateralAddress",type:"address"},{name:"nftCollateralTokenId",type:"uint256"},{name:"principalAddress",type:"address"},{name:"principalAmount",type:"uint256"},{name:"aprBps",type:"uint256"},{name:"expirationTime",type:"uint256"},{name:"duration",type:"uint256"},{name:"maxSeniorRepayment",type:"uint256"},{name:"validators",type:"OfferValidator[]"}],OfferValidator:[{name:"validator",type:"address"},{name:"arguments",type:"bytes"}]},message:e})}async signRenegotiationOffer({structToSign:e}){return this.wallet.signTypedData({domain:this.getDomain(),primaryType:"RenegotiationOffer",types:{RenegotiationOffer:[{name:"renegotiationId",type:"uint256"},{name:"loanId",type:"uint256"},{name:"lender",type:"address"},{name:"fee",type:"uint256"},{name:"trancheIndex",type:"uint256[]"},{name:"principalAmount",type:"uint256"},{name:"aprBps",type:"uint256"},{name:"expirationTime",type:"uint256"},{name:"duration",type:"uint256"}]},message:e})}async cancelOffer({id:e}){let t=await this.safeContractWrite.cancelOffer([e]);return{txHash:t,waitTxInBlock:async()=>{let n=await this.bcClient.waitForTransactionReceipt({hash:t}),a=await this.contract.createEventFilter.OfferCancelled(),i=u(n,a);if(i.length===0)throw new Error("Offer not cancelled");return{...i[0].args,...n}}}}async cancelAllOffers({minId:e}){let t=await this.safeContractWrite.cancelAllOffers([e]);return{txHash:t,waitTxInBlock:async()=>{let n=await this.bcClient.waitForTransactionReceipt({hash:t}),a=await this.contract.createEventFilter.AllOffersCancelled(),i=u(n,a);if(i.length===0)throw new Error("Offers not cancelled");return{...i[0].args,...n}}}}async cancelRefinanceOffer({id:e}){let t=await this.safeContractWrite.cancelRenegotiationOffer([e]);return{txHash:t,waitTxInBlock:async()=>{let n=await this.bcClient.waitForTransactionReceipt({hash:t}),a=await this.contract.createEventFilter.RenegotiationOfferCancelled(),i=u(n,a);if(i.length===0)throw new Error("Renegotiation offer not cancelled");return{...i[0].args,...n}}}}async cancelAllRenegotiations(e){throw new Error("Not implemented for V3")}mapEmitLoanToMslEmitLoanArgs({offerExecution:e,tokenId:t,duration:n,principalReceiver:a,expirationTime:i}){return{executionData:{offerExecution:e.map(({offer:s,amount:o,...y})=>({...y,amount:o??s.principalAmount,offer:{...s,lender:s.lenderAddress,validators:s.offerValidators}})),tokenId:t,duration:n,expirationTime:i??BigInt(A(Date.now())+le),principalReceiver:a??this.wallet.account.address,callbackData:"0x"},borrower:this.wallet.account.address,borrowerOfferSignature:"0x"}}async emitLoan(e){let t=this.mapEmitLoanToMslEmitLoanArgs(e),n=await this.safeContractWrite.emitLoan([t]);return{txHash:n,waitTxInBlock:async()=>{let a=await this.bcClient.waitForTransactionReceipt({hash:n}),i=await this.contract.createEventFilter.LoanEmitted(),r=u(a,i);if(r.length===0)throw new Error("Loan not emitted");let s=r[0].args;return{loan:{id:`${this.contract.address.toLowerCase()}.${s.loanId}`,...s.loan,contractAddress:this.contract.address},loanId:s.loanId,offerIds:t.executionData.offerExecution.map(({offer:o})=>`${this.contract.address.toLowerCase()}.${o.lender.toLowerCase()}.${o.offerId}`),...a}}}}async extendLoan(){throw new Error("Not implemented for V3")}async mergeTranches({loan:e,loanId:t,minTranche:n,maxTranche:a}){let i=await this.safeContractWrite.mergeTranches([t,e,n,a]);return{txHash:i,waitTxInBlock:async()=>{let r=await this.bcClient.waitForTransactionReceipt({hash:i}),s=await this.contract.createEventFilter.TranchesMerged(),o=u(r,s);if(o.length===0)throw new Error("Loan tranches not merged");let y=o[0].args,d=y.loan.tranche.reduce((c,{loanId:m})=>m>c?m:c,t);return{loan:{id:`${this.contract.address.toLowerCase()}.${d}`,...y.loan,contractAddress:this.contract.address},newLoanId:d,...r}}}}async revokeDelegationsAndEmitLoan({delegations:e,emit:t}){if(e.length===0)throw new Error("At least one delegation must be revoked");let n=this.mapEmitLoanToMslEmitLoanArgs(t),{tokenId:a,offerExecution:i}=n.executionData,r=e.map(y=>Y({abi:R,functionName:"revokeDelegate",args:[y,i[0].offer.nftCollateralAddress,a]})),s=Y({abi:R,functionName:"emitLoan",args:[n]}),o=await this.safeContractWrite.multicall([[...r,s]]);return{txHash:o,waitTxInBlock:async()=>{let y=await this.bcClient.waitForTransactionReceipt({hash:o}),d=await this.contract.createEventFilter.RevokeDelegate(),c=u(y,d);if(c.length!==e.length)throw new Error("Revoke delegations failed");let m=await this.contract.createEventFilter.LoanEmitted(),T=u(y,m);if(T.length===0)throw new Error("Loan not emitted");let S=[...c.map(({args:w})=>w),...T.map(({args:w})=>w)],v=T[0].args;return{loan:{id:`${this.contract.address.toLowerCase()}.${v.loanId}`,...v.loan,contractAddress:this.contract.address},loanId:v.loanId,...y,results:S}}}}async repayLoan({loan:e,loanId:t}){let n={loanId:t,callbackData:"0x",shouldDelegate:!1},a=await this.safeContractWrite.repayLoan([{data:n,loan:e,borrowerSignature:"0x"}]);return{txHash:a,waitTxInBlock:async()=>{let i=await this.bcClient.waitForTransactionReceipt({hash:a}),r=await this.contract.createEventFilter.LoanRepaid(),s=u(i,r);if(s.length===0)throw new Error("Loan not repaid");return{...s[0].args,...i}}}}async getRemainingLockupSeconds({loan:e}){let t=e.tranche[e.tranche.length-1],a=e.startTime+e.duration-t.startTime,i=await this.contract.read.getMinLockPeriod(),r=ye(i),s=Math.ceil(Number(a)*r),o=Math.ceil(A(Date.now())-Number(t.startTime));return o>=s?0:s-o}async refinanceBatch({renegotiationId:e,refinancings:t}){let n=t.map(({loan:i,sources:r,newAprBps:s},o)=>{let y=r.map(({source:T})=>BigInt(T.loanIndex)),d=D(r,"refinancingPrincipal")??0n,c={renegotiationId:e+BigInt(o),loanId:V(i),lender:this.wallet.account.address,fee:0n,trancheIndex:y,principalAmount:d,aprBps:s,expirationTime:BigInt(A(Date.now()))+k,duration:BigInt(de(i))+k};return d===i.principalAmount?Y({abi:R,functionName:"refinanceFull",args:[c,i,I]}):Y({abi:R,functionName:"refinancePartial",args:[c,i]})}),a=await this.safeContractWrite.multicall([n]);return{txHash:a,waitTxInBlock:async()=>{let i=await this.bcClient.waitForTransactionReceipt({hash:a}),r=await this.contract.createEventFilter.LoanRefinanced(),s=u(i,r);if(s.length!==t.length)throw new Error("Loan not refinanced");return{results:s.map(({args:y})=>y),...i}}}}async refinanceFullLoan({offer:e,signature:t,loan:n}){return this.executeRenegotiation({offer:e,executeRenegotiationTxn:()=>this.safeContractWrite.refinanceFull([e,n,t])})}async refinancePartialLoan({offer:e,loan:t}){return this.executeRenegotiation({offer:e,executeRenegotiationTxn:()=>this.safeContractWrite.refinancePartial([e,t])})}async addTranche({offer:e,signature:t,loan:n}){return this.executeRenegotiation({offer:e,executeRenegotiationTxn:()=>this.safeContractWrite.addNewTranche([e,n,t])})}async refinanceFromOffers({loan:e,loanId:t,executionData:n}){let a=this.mapEmitLoanToMslEmitLoanArgs(n),i=await this.safeContractWrite.refinanceFromLoanExecutionData([t,e,a]);return{txHash:i,waitTxInBlock:async()=>{let r=await this.bcClient.waitForTransactionReceipt({hash:i}),s=await this.contract.createEventFilter.LoanRefinancedFromNewOffers(),o=u(r,s);if(o.length===0)throw new Error("LoanRefinancedFromNewOffers not emitted");let y=o[0].args;return{loan:{id:`${this.contract.address.toLowerCase()}.${y.newLoanId}`,...y.loan,contractAddress:this.contract.address},loanId:y.newLoanId,offerIds:a.executionData.offerExecution.map(({offer:d})=>`${this.contract.address.toLowerCase()}.${d.lender.toLowerCase()}.${d.offerId}`),...r}}}}async executeRenegotiation({offer:e,executeRenegotiationTxn:t}){let n=await t();return{txHash:n,waitTxInBlock:async()=>{let a=await this.bcClient.waitForTransactionReceipt({hash:n}),i=await this.contract.createEventFilter.LoanRefinanced(),r=u(a,i);if(r.length===0)throw new Error("Loan not refinanced");let s=r[0].args;return{loan:{id:`${this.contract.address.toLowerCase()}.${s.newLoanId}`,...s.loan,contractAddress:this.contract.address},loanId:s.newLoanId,renegotiationId:`${this.contract.address.toLowerCase()}.${e.lender.toLowerCase()}.${s.renegotiationId}`,...a}}}}async delegateMulticall(e){if(e.length===0)throw new Error("At least one delegation must be revoked");let t=await this.safeContractWrite.multicall([e.map(n=>Y({abi:R,functionName:"delegate",args:[n.loanId,n.loan,n.to,n.rights??I,n.enable]}))]);return{txHash:t,waitTxInBlock:async()=>{let n=await this.bcClient.waitForTransactionReceipt({hash:t}),a=await this.contract.createEventFilter.Delegated(),i=u(n,a);if(i.length!==e.length)throw new Error("Delegate multicall failed");return{...n,results:i.map(({args:r})=>r)}}}}async delegate({loan:e,loanId:t,to:n,rights:a=I,enable:i}){let r=await this.safeContractWrite.delegate([t,e,n,a,i]);return{txHash:r,waitTxInBlock:async()=>{let s=await this.bcClient.waitForTransactionReceipt({hash:r}),o=await this.contract.createEventFilter.Delegated(),y=u(s,o);if(y.length===0)throw new Error("Token not delegated");let d=y[0].args;return{loan:{...e,loanId:t,contractAddress:this.contract.address},value:d.value,...s}}}}async revokeDelegate({to:e,collection:t,tokenId:n}){let a=await this.safeContractWrite.revokeDelegate([e,t,n]);return{txHash:a,waitTxInBlock:async()=>{let i=await this.bcClient.waitForTransactionReceipt({hash:a}),r=await this.contract.createEventFilter.RevokeDelegate(),s=u(i,r);if(s.length===0)throw new Error("Token delegation not revoked");return{...s[0].args,...i}}}}async liquidateLoan({loan:e,loanId:t}){let n=await this.safeContractWrite.liquidateLoan([t,e]);return{txHash:n,waitTxInBlock:async()=>{let a=await this.bcClient.waitForTransactionReceipt({hash:n}),i=await this.contract.createEventFilter.LoanForeclosed(),r=await this.contract.createEventFilter.LoanSentToLiquidator(),s=u(a,i),o=u(a,r);if(s.length===0&&o.length===0)throw new Error("Loan not liquidated");return{...s?.[0]?.args??o?.[0]?.args,...a}}}}};l(J,"MslV6");import{zeroAddress as ee}from"viem";var E=[{inputs:[{internalType:"address",name:"conduitController",type:"address"}],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"BadContractSignature",type:"error"},{inputs:[],name:"BadFraction",type:"error"},{inputs:[{internalType:"address",name:"token",type:"address"},{internalType:"address",name:"from",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"BadReturnValueFromERC20OnTransfer",type:"error"},{inputs:[{internalType:"uint8",name:"v",type:"uint8"}],name:"BadSignatureV",type:"error"},{inputs:[],name:"CannotCancelOrder",type:"error"},{inputs:[],name:"ConsiderationCriteriaResolverOutOfRange",type:"error"},{inputs:[],name:"ConsiderationLengthNotEqualToTotalOriginal",type:"error"},{inputs:[{internalType:"uint256",name:"orderIndex",type:"uint256"},{internalType:"uint256",name:"considerationIndex",type:"uint256"},{internalType:"uint256",name:"shortfallAmount",type:"uint256"}],name:"ConsiderationNotMet",type:"error"},{inputs:[],name:"CriteriaNotEnabledForItem",type:"error"},{inputs:[{internalType:"address",name:"token",type:"address"},{internalType:"address",name:"from",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256[]",name:"identifiers",type:"uint256[]"},{internalType:"uint256[]",name:"amounts",type:"uint256[]"}],name:"ERC1155BatchTransferGenericFailure",type:"error"},{inputs:[],name:"InexactFraction",type:"error"},{inputs:[],name:"InsufficientNativeTokensSupplied",type:"error"},{inputs:[],name:"Invalid1155BatchTransferEncoding",type:"error"},{inputs:[],name:"InvalidBasicOrderParameterEncoding",type:"error"},{inputs:[{internalType:"address",name:"conduit",type:"address"}],name:"InvalidCallToConduit",type:"error"},{inputs:[{internalType:"bytes32",name:"conduitKey",type:"bytes32"},{internalType:"address",name:"conduit",type:"address"}],name:"InvalidConduit",type:"error"},{inputs:[{internalType:"bytes32",name:"orderHash",type:"bytes32"}],name:"InvalidContractOrder",type:"error"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"}],name:"InvalidERC721TransferAmount",type:"error"},{inputs:[],name:"InvalidFulfillmentComponentData",type:"error"},{inputs:[{internalType:"uint256",name:"value",type:"uint256"}],name:"InvalidMsgValue",type:"error"},{inputs:[],name:"InvalidNativeOfferItem",type:"error"},{inputs:[],name:"InvalidProof",type:"error"},{inputs:[{internalType:"bytes32",name:"orderHash",type:"bytes32"}],name:"InvalidRestrictedOrder",type:"error"},{inputs:[],name:"InvalidSignature",type:"error"},{inputs:[],name:"InvalidSigner",type:"error"},{inputs:[{internalType:"uint256",name:"startTime",type:"uint256"},{internalType:"uint256",name:"endTime",type:"uint256"}],name:"InvalidTime",type:"error"},{inputs:[{internalType:"uint256",name:"fulfillmentIndex",type:"uint256"}],name:"MismatchedFulfillmentOfferAndConsiderationComponents",type:"error"},{inputs:[{internalType:"enum Side",name:"side",type:"uint8"}],name:"MissingFulfillmentComponentOnAggregation",type:"error"},{inputs:[],name:"MissingItemAmount",type:"error"},{inputs:[],name:"MissingOriginalConsiderationItems",type:"error"},{inputs:[{internalType:"address",name:"account",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"NativeTokenTransferGenericFailure",type:"error"},{inputs:[{internalType:"address",name:"account",type:"address"}],name:"NoContract",type:"error"},{inputs:[],name:"NoReentrantCalls",type:"error"},{inputs:[],name:"NoSpecifiedOrdersAvailable",type:"error"},{inputs:[],name:"OfferAndConsiderationRequiredOnFulfillment",type:"error"},{inputs:[],name:"OfferCriteriaResolverOutOfRange",type:"error"},{inputs:[{internalType:"bytes32",name:"orderHash",type:"bytes32"}],name:"OrderAlreadyFilled",type:"error"},{inputs:[{internalType:"enum Side",name:"side",type:"uint8"}],name:"OrderCriteriaResolverOutOfRange",type:"error"},{inputs:[{internalType:"bytes32",name:"orderHash",type:"bytes32"}],name:"OrderIsCancelled",type:"error"},{inputs:[{internalType:"bytes32",name:"orderHash",type:"bytes32"}],name:"OrderPartiallyFilled",type:"error"},{inputs:[],name:"PartialFillsNotEnabledForOrder",type:"error"},{inputs:[{internalType:"address",name:"token",type:"address"},{internalType:"address",name:"from",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"identifier",type:"uint256"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"TokenTransferGenericFailure",type:"error"},{inputs:[{internalType:"uint256",name:"orderIndex",type:"uint256"},{internalType:"uint256",name:"considerationIndex",type:"uint256"}],name:"UnresolvedConsiderationCriteria",type:"error"},{inputs:[{internalType:"uint256",name:"orderIndex",type:"uint256"},{internalType:"uint256",name:"offerIndex",type:"uint256"}],name:"UnresolvedOfferCriteria",type:"error"},{inputs:[],name:"UnusedItemParameters",type:"error"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"newCounter",type:"uint256"},{indexed:!0,internalType:"address",name:"offerer",type:"address"}],name:"CounterIncremented",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"bytes32",name:"orderHash",type:"bytes32"},{indexed:!0,internalType:"address",name:"offerer",type:"address"},{indexed:!0,internalType:"address",name:"zone",type:"address"}],name:"OrderCancelled",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"bytes32",name:"orderHash",type:"bytes32"},{indexed:!0,internalType:"address",name:"offerer",type:"address"},{indexed:!0,internalType:"address",name:"zone",type:"address"},{indexed:!1,internalType:"address",name:"recipient",type:"address"},{components:[{internalType:"enum ItemType",name:"itemType",type:"uint8"},{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"identifier",type:"uint256"},{internalType:"uint256",name:"amount",type:"uint256"}],indexed:!1,internalType:"struct SpentItem[]",name:"offer",type:"tuple[]"},{components:[{internalType:"enum ItemType",name:"itemType",type:"uint8"},{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"identifier",type:"uint256"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"address payable",name:"recipient",type:"address"}],indexed:!1,internalType:"struct ReceivedItem[]",name:"consideration",type:"tuple[]"}],name:"OrderFulfilled",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"bytes32",name:"orderHash",type:"bytes32"},{components:[{internalType:"address",name:"offerer",type:"address"},{internalType:"address",name:"zone",type:"address"},{components:[{internalType:"enum ItemType",name:"itemType",type:"uint8"},{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"identifierOrCriteria",type:"uint256"},{internalType:"uint256",name:"startAmount",type:"uint256"},{internalType:"uint256",name:"endAmount",type:"uint256"}],internalType:"struct OfferItem[]",name:"offer",type:"tuple[]"},{components:[{internalType:"enum ItemType",name:"itemType",type:"uint8"},{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"identifierOrCriteria",type:"uint256"},{internalType:"uint256",name:"startAmount",type:"uint256"},{internalType:"uint256",name:"endAmount",type:"uint256"},{internalType:"address payable",name:"recipient",type:"address"}],internalType:"struct ConsiderationItem[]",name:"consideration",type:"tuple[]"},{internalType:"enum OrderType",name:"orderType",type:"uint8"},{internalType:"uint256",name:"startTime",type:"uint256"},{internalType:"uint256",name:"endTime",type:"uint256"},{internalType:"bytes32",name:"zoneHash",type:"bytes32"},{internalType:"uint256",name:"salt",type:"uint256"},{internalType:"bytes32",name:"conduitKey",type:"bytes32"},{internalType:"uint256",name:"totalOriginalConsiderationItems",type:"uint256"}],indexed:!1,internalType:"struct OrderParameters",name:"orderParameters",type:"tuple"}],name:"OrderValidated",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"bytes32[]",name:"orderHashes",type:"bytes32[]"}],name:"OrdersMatched",type:"event"},{inputs:[{components:[{internalType:"address",name:"offerer",type:"address"},{internalType:"address",name:"zone",type:"address"},{components:[{internalType:"enum ItemType",name:"itemType",type:"uint8"},{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"identifierOrCriteria",type:"uint256"},{internalType:"uint256",name:"startAmount",type:"uint256"},{internalType:"uint256",name:"endAmount",type:"uint256"}],internalType:"struct OfferItem[]",name:"offer",type:"tuple[]"},{components:[{internalType:"enum ItemType",name:"itemType",type:"uint8"},{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"identifierOrCriteria",type:"uint256"},{internalType:"uint256",name:"startAmount",type:"uint256"},{internalType:"uint256",name:"endAmount",type:"uint256"},{internalType:"address payable",name:"recipient",type:"address"}],internalType:"struct ConsiderationItem[]",name:"consideration",type:"tuple[]"},{internalType:"enum OrderType",name:"orderType",type:"uint8"},{internalType:"uint256",name:"startTime",type:"uint256"},{internalType:"uint256",name:"endTime",type:"uint256"},{internalType:"bytes32",name:"zoneHash",type:"bytes32"},{internalType:"uint256",name:"salt",type:"uint256"},{internalType:"bytes32",name:"conduitKey",type:"bytes32"},{internalType:"uint256",name:"counter",type:"uint256"}],internalType:"struct OrderComponents[]",name:"orders",type:"tuple[]"}],name:"cancel",outputs:[{internalType:"bool",name:"cancelled",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{components:[{components:[{internalType:"address",name:"offerer",type:"address"},{internalType:"address",name:"zone",type:"address"},{components:[{internalType:"enum ItemType",name:"itemType",type:"uint8"},{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"identifierOrCriteria",type:"uint256"},{internalType:"uint256",name:"startAmount",type:"uint256"},{internalType:"uint256",name:"endAmount",type:"uint256"}],internalType:"struct OfferItem[]",name:"offer",type:"tuple[]"},{components:[{internalType:"enum ItemType",name:"itemType",type:"uint8"},{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"identifierOrCriteria",type:"uint256"},{internalType:"uint256",name:"startAmount",type:"uint256"},{internalType:"uint256",name:"endAmount",type:"uint256"},{internalType:"address payable",name:"recipient",type:"address"}],internalType:"struct ConsiderationItem[]",name:"consideration",type:"tuple[]"},{internalType:"enum OrderType",name:"orderType",type:"uint8"},{internalType:"uint256",name:"startTime",type:"uint256"},{internalType:"uint256",name:"endTime",type:"uint256"},{internalType:"bytes32",name:"zoneHash",type:"bytes32"},{internalType:"uint256",name:"salt",type:"uint256"},{internalType:"bytes32",name:"conduitKey",type:"bytes32"},{internalType:"uint256",name:"totalOriginalConsiderationItems",type:"uint256"}],internalType:"struct OrderParameters",name:"parameters",type:"tuple"},{internalType:"uint120",name:"numerator",type:"uint120"},{internalType:"uint120",name:"denominator",type:"uint120"},{internalType:"bytes",name:"signature",type:"bytes"},{internalType:"bytes",name:"extraData",type:"bytes"}],internalType:"struct AdvancedOrder",name:"",type:"tuple"},{components:[{internalType:"uint256",name:"orderIndex",type:"uint256"},{internalType:"enum Side",name:"side",type:"uint8"},{internalType:"uint256",name:"index",type:"uint256"},{internalType:"uint256",name:"identifier",type:"uint256"},{internalType:"bytes32[]",name:"criteriaProof",type:"bytes32[]"}],internalType:"struct CriteriaResolver[]",name:"",type:"tuple[]"},{internalType:"bytes32",name:"fulfillerConduitKey",type:"bytes32"},{internalType:"address",name:"recipient",type:"address"}],name:"fulfillAdvancedOrder",outputs:[{internalType:"bool",name:"fulfilled",type:"bool"}],stateMutability:"payable",type:"function"},{inputs:[{components:[{components:[{internalType:"address",name:"offerer",type:"address"},{internalType:"address",name:"zone",type:"address"},{components:[{internalType:"enum ItemType",name:"itemType",type:"uint8"},{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"identifierOrCriteria",type:"uint256"},{internalType:"uint256",name:"startAmount",type:"uint256"},{internalType:"uint256",name:"endAmount",type:"uint256"}],internalType:"struct OfferItem[]",name:"offer",type:"tuple[]"},{components:[{internalType:"enum ItemType",name:"itemType",type:"uint8"},{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"identifierOrCriteria",type:"uint256"},{internalType:"uint256",name:"startAmount",type:"uint256"},{internalType:"uint256",name:"endAmount",type:"uint256"},{internalType:"address payable",name:"recipient",type:"address"}],internalType:"struct ConsiderationItem[]",name:"consideration",type:"tuple[]"},{internalType:"enum OrderType",name:"orderType",type:"uint8"},{internalType:"uint256",name:"startTime",type:"uint256"},{internalType:"uint256",name:"endTime",type:"uint256"},{internalType:"bytes32",name:"zoneHash",type:"bytes32"},{internalType:"uint256",name:"salt",type:"uint256"},{internalType:"bytes32",name:"conduitKey",type:"bytes32"},{internalType:"uint256",name:"totalOriginalConsiderationItems",type:"uint256"}],internalType:"struct OrderParameters",name:"parameters",type:"tuple"},{internalType:"uint120",name:"numerator",type:"uint120"},{internalType:"uint120",name:"denominator",type:"uint120"},{internalType:"bytes",name:"signature",type:"bytes"},{internalType:"bytes",name:"extraData",type:"bytes"}],internalType:"struct AdvancedOrder[]",name:"",type:"tuple[]"},{components:[{internalType:"uint256",name:"orderIndex",type:"uint256"},{internalType:"enum Side",name:"side",type:"uint8"},{internalType:"uint256",name:"index",type:"uint256"},{internalType:"uint256",name:"identifier",type:"uint256"},{internalType:"bytes32[]",name:"criteriaProof",type:"bytes32[]"}],internalType:"struct CriteriaResolver[]",name:"",type:"tuple[]"},{components:[{internalType:"uint256",name:"orderIndex",type:"uint256"},{internalType:"uint256",name:"itemIndex",type:"uint256"}],internalType:"struct FulfillmentComponent[][]",name:"",type:"tuple[][]"},{components:[{internalType:"uint256",name:"orderIndex",type:"uint256"},{internalType:"uint256",name:"itemIndex",type:"uint256"}],internalType:"struct FulfillmentComponent[][]",name:"",type:"tuple[][]"},{internalType:"bytes32",name:"fulfillerConduitKey",type:"bytes32"},{internalType:"address",name:"recipient",type:"address"},{internalType:"uint256",name:"maximumFulfilled",type:"uint256"}],name:"fulfillAvailableAdvancedOrders",outputs:[{internalType:"bool[]",name:"",type:"bool[]"},{components:[{components:[{internalType:"enum ItemType",name:"itemType",type:"uint8"},{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"identifier",type:"uint256"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"address payable",name:"recipient",type:"address"}],internalType:"struct ReceivedItem",name:"item",type:"tuple"},{internalType:"address",name:"offerer",type:"address"},{internalType:"bytes32",name:"conduitKey",type:"bytes32"}],internalType:"struct Execution[]",name:"",type:"tuple[]"}],stateMutability:"payable",type:"function"},{inputs:[{components:[{components:[{internalType:"address",name:"offerer",type:"address"},{internalType:"address",name:"zone",type:"address"},{components:[{internalType:"enum ItemType",name:"itemType",type:"uint8"},{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"identifierOrCriteria",type:"uint256"},{internalType:"uint256",name:"startAmount",type:"uint256"},{internalType:"uint256",name:"endAmount",type:"uint256"}],internalType:"struct OfferItem[]",name:"offer",type:"tuple[]"},{components:[{internalType:"enum ItemType",name:"itemType",type:"uint8"},{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"identifierOrCriteria",type:"uint256"},{internalType:"uint256",name:"startAmount",type:"uint256"},{internalType:"uint256",name:"endAmount",type:"uint256"},{internalType:"address payable",name:"recipient",type:"address"}],internalType:"struct ConsiderationItem[]",name:"consideration",type:"tuple[]"},{internalType:"enum OrderType",name:"orderType",type:"uint8"},{internalType:"uint256",name:"startTime",type:"uint256"},{internalType:"uint256",name:"endTime",type:"uint256"},{internalType:"bytes32",name:"zoneHash",type:"bytes32"},{internalType:"uint256",name:"salt",type:"uint256"},{internalType:"bytes32",name:"conduitKey",type:"bytes32"},{internalType:"uint256",name:"totalOriginalConsiderationItems",type:"uint256"}],internalType:"struct OrderParameters",name:"parameters",type:"tuple"},{internalType:"bytes",name:"signature",type:"bytes"}],internalType:"struct Order[]",name:"",type:"tuple[]"},{components:[{internalType:"uint256",name:"orderIndex",type:"uint256"},{internalType:"uint256",name:"itemIndex",type:"uint256"}],internalType:"struct FulfillmentComponent[][]",name:"",type:"tuple[][]"},{components:[{internalType:"uint256",name:"orderIndex",type:"uint256"},{internalType:"uint256",name:"itemIndex",type:"uint256"}],internalType:"struct FulfillmentComponent[][]",name:"",type:"tuple[][]"},{internalType:"bytes32",name:"fulfillerConduitKey",type:"bytes32"},{internalType:"uint256",name:"maximumFulfilled",type:"uint256"}],name:"fulfillAvailableOrders",outputs:[{internalType:"bool[]",name:"",type:"bool[]"},{components:[{components:[{internalType:"enum ItemType",name:"itemType",type:"uint8"},{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"identifier",type:"uint256"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"address payable",name:"recipient",type:"address"}],internalType:"struct ReceivedItem",name:"item",type:"tuple"},{internalType:"address",name:"offerer",type:"address"},{internalType:"bytes32",name:"conduitKey",type:"bytes32"}],internalType:"struct Execution[]",name:"",type:"tuple[]"}],stateMutability:"payable",type:"function"},{inputs:[{components:[{internalType:"address",name:"considerationToken",type:"address"},{internalType:"uint256",name:"considerationIdentifier",type:"uint256"},{internalType:"uint256",name:"considerationAmount",type:"uint256"},{internalType:"address payable",name:"offerer",type:"address"},{internalType:"address",name:"zone",type:"address"},{internalType:"address",name:"offerToken",type:"address"},{internalType:"uint256",name:"offerIdentifier",type:"uint256"},{internalType:"uint256",name:"offerAmount",type:"uint256"},{internalType:"enum BasicOrderType",name:"basicOrderType",type:"uint8"},{internalType:"uint256",name:"startTime",type:"uint256"},{internalType:"uint256",name:"endTime",type:"uint256"},{internalType:"bytes32",name:"zoneHash",type:"bytes32"},{internalType:"uint256",name:"salt",type:"uint256"},{internalType:"bytes32",name:"offererConduitKey",type:"bytes32"},{internalType:"bytes32",name:"fulfillerConduitKey",type:"bytes32"},{internalType:"uint256",name:"totalOriginalAdditionalRecipients",type:"uint256"},{components:[{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"address payable",name:"recipient",type:"address"}],internalType:"struct AdditionalRecipient[]",name:"additionalRecipients",type:"tuple[]"},{internalType:"bytes",name:"signature",type:"bytes"}],internalType:"struct BasicOrderParameters",name:"parameters",type:"tuple"}],name:"fulfillBasicOrder",outputs:[{internalType:"bool",name:"fulfilled",type:"bool"}],stateMutability:"payable",type:"function"},{inputs:[{components:[{internalType:"address",name:"considerationToken",type:"address"},{internalType:"uint256",name:"considerationIdentifier",type:"uint256"},{internalType:"uint256",name:"considerationAmount",type:"uint256"},{internalType:"address payable",name:"offerer",type:"address"},{internalType:"address",name:"zone",type:"address"},{internalType:"address",name:"offerToken",type:"address"},{internalType:"uint256",name:"offerIdentifier",type:"uint256"},{internalType:"uint256",name:"offerAmount",type:"uint256"},{internalType:"enum BasicOrderType",name:"basicOrderType",type:"uint8"},{internalType:"uint256",name:"startTime",type:"uint256"},{internalType:"uint256",name:"endTime",type:"uint256"},{internalType:"bytes32",name:"zoneHash",type:"bytes32"},{internalType:"uint256",name:"salt",type:"uint256"},{internalType:"bytes32",name:"offererConduitKey",type:"bytes32"},{internalType:"bytes32",name:"fulfillerConduitKey",type:"bytes32"},{internalType:"uint256",name:"totalOriginalAdditionalRecipients",type:"uint256"},{components:[{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"address payable",name:"recipient",type:"address"}],internalType:"struct AdditionalRecipient[]",name:"additionalRecipients",type:"tuple[]"},{internalType:"bytes",name:"signature",type:"bytes"}],internalType:"struct BasicOrderParameters",name:"parameters",type:"tuple"}],name:"fulfillBasicOrder_efficient_6GL6yc",outputs:[{internalType:"bool",name:"fulfilled",type:"bool"}],stateMutability:"payable",type:"function"},{inputs:[{components:[{components:[{internalType:"address",name:"offerer",type:"address"},{internalType:"address",name:"zone",type:"address"},{components:[{internalType:"enum ItemType",name:"itemType",type:"uint8"},{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"identifierOrCriteria",type:"uint256"},{internalType:"uint256",name:"startAmount",type:"uint256"},{internalType:"uint256",name:"endAmount",type:"uint256"}],internalType:"struct OfferItem[]",name:"offer",type:"tuple[]"},{components:[{internalType:"enum ItemType",name:"itemType",type:"uint8"},{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"identifierOrCriteria",type:"uint256"},{internalType:"uint256",name:"startAmount",type:"uint256"},{internalType:"uint256",name:"endAmount",type:"uint256"},{internalType:"address payable",name:"recipient",type:"address"}],internalType:"struct ConsiderationItem[]",name:"consideration",type:"tuple[]"},{internalType:"enum OrderType",name:"orderType",type:"uint8"},{internalType:"uint256",name:"startTime",type:"uint256"},{internalType:"uint256",name:"endTime",type:"uint256"},{internalType:"bytes32",name:"zoneHash",type:"bytes32"},{internalType:"uint256",name:"salt",type:"uint256"},{internalType:"bytes32",name:"conduitKey",type:"bytes32"},{internalType:"uint256",name:"totalOriginalConsiderationItems",type:"uint256"}],internalType:"struct OrderParameters",name:"parameters",type:"tuple"},{internalType:"bytes",name:"signature",type:"bytes"}],internalType:"struct Order",name:"",type:"tuple"},{internalType:"bytes32",name:"fulfillerConduitKey",type:"bytes32"}],name:"fulfillOrder",outputs:[{internalType:"bool",name:"fulfilled",type:"bool"}],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"contractOfferer",type:"address"}],name:"getContractOffererNonce",outputs:[{internalType:"uint256",name:"nonce",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"offerer",type:"address"}],name:"getCounter",outputs:[{internalType:"uint256",name:"counter",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{components:[{internalType:"address",name:"offerer",type:"address"},{internalType:"address",name:"zone",type:"address"},{components:[{internalType:"enum ItemType",name:"itemType",type:"uint8"},{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"identifierOrCriteria",type:"uint256"},{internalType:"uint256",name:"startAmount",type:"uint256"},{internalType:"uint256",name:"endAmount",type:"uint256"}],internalType:"struct OfferItem[]",name:"offer",type:"tuple[]"},{components:[{internalType:"enum ItemType",name:"itemType",type:"uint8"},{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"identifierOrCriteria",type:"uint256"},{internalType:"uint256",name:"startAmount",type:"uint256"},{internalType:"uint256",name:"endAmount",type:"uint256"},{internalType:"address payable",name:"recipient",type:"address"}],internalType:"struct ConsiderationItem[]",name:"consideration",type:"tuple[]"},{internalType:"enum OrderType",name:"orderType",type:"uint8"},{internalType:"uint256",name:"startTime",type:"uint256"},{internalType:"uint256",name:"endTime",type:"uint256"},{internalType:"bytes32",name:"zoneHash",type:"bytes32"},{internalType:"uint256",name:"salt",type:"uint256"},{internalType:"bytes32",name:"conduitKey",type:"bytes32"},{internalType:"uint256",name:"counter",type:"uint256"}],internalType:"struct OrderComponents",name:"",type:"tuple"}],name:"getOrderHash",outputs:[{internalType:"bytes32",name:"orderHash",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"orderHash",type:"bytes32"}],name:"getOrderStatus",outputs:[{internalType:"bool",name:"isValidated",type:"bool"},{internalType:"bool",name:"isCancelled",type:"bool"},{internalType:"uint256",name:"totalFilled",type:"uint256"},{internalType:"uint256",name:"totalSize",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"incrementCounter",outputs:[{internalType:"uint256",name:"newCounter",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"information",outputs:[{internalType:"string",name:"version",type:"string"},{internalType:"bytes32",name:"domainSeparator",type:"bytes32"},{internalType:"address",name:"conduitController",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{components:[{components:[{internalType:"address",name:"offerer",type:"address"},{internalType:"address",name:"zone",type:"address"},{components:[{internalType:"enum ItemType",name:"itemType",type:"uint8"},{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"identifierOrCriteria",type:"uint256"},{internalType:"uint256",name:"startAmount",type:"uint256"},{internalType:"uint256",name:"endAmount",type:"uint256"}],internalType:"struct OfferItem[]",name:"offer",type:"tuple[]"},{components:[{internalType:"enum ItemType",name:"itemType",type:"uint8"},{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"identifierOrCriteria",type:"uint256"},{internalType:"uint256",name:"startAmount",type:"uint256"},{internalType:"uint256",name:"endAmount",type:"uint256"},{internalType:"address payable",name:"recipient",type:"address"}],internalType:"struct ConsiderationItem[]",name:"consideration",type:"tuple[]"},{internalType:"enum OrderType",name:"orderType",type:"uint8"},{internalType:"uint256",name:"startTime",type:"uint256"},{internalType:"uint256",name:"endTime",type:"uint256"},{internalType:"bytes32",name:"zoneHash",type:"bytes32"},{internalType:"uint256",name:"salt",type:"uint256"},{internalType:"bytes32",name:"conduitKey",type:"bytes32"},{internalType:"uint256",name:"totalOriginalConsiderationItems",type:"uint256"}],internalType:"struct OrderParameters",name:"parameters",type:"tuple"},{internalType:"uint120",name:"numerator",type:"uint120"},{internalType:"uint120",name:"denominator",type:"uint120"},{internalType:"bytes",name:"signature",type:"bytes"},{internalType:"bytes",name:"extraData",type:"bytes"}],internalType:"struct AdvancedOrder[]",name:"",type:"tuple[]"},{components:[{internalType:"uint256",name:"orderIndex",type:"uint256"},{internalType:"enum Side",name:"side",type:"uint8"},{internalType:"uint256",name:"index",type:"uint256"},{internalType:"uint256",name:"identifier",type:"uint256"},{internalType:"bytes32[]",name:"criteriaProof",type:"bytes32[]"}],internalType:"struct CriteriaResolver[]",name:"",type:"tuple[]"},{components:[{components:[{internalType:"uint256",name:"orderIndex",type:"uint256"},{internalType:"uint256",name:"itemIndex",type:"uint256"}],internalType:"struct FulfillmentComponent[]",name:"offerComponents",type:"tuple[]"},{components:[{internalType:"uint256",name:"orderIndex",type:"uint256"},{internalType:"uint256",name:"itemIndex",type:"uint256"}],internalType:"struct FulfillmentComponent[]",name:"considerationComponents",type:"tuple[]"}],internalType:"struct Fulfillment[]",name:"",type:"tuple[]"},{internalType:"address",name:"recipient",type:"address"}],name:"matchAdvancedOrders",outputs:[{components:[{components:[{internalType:"enum ItemType",name:"itemType",type:"uint8"},{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"identifier",type:"uint256"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"address payable",name:"recipient",type:"address"}],internalType:"struct ReceivedItem",name:"item",type:"tuple"},{internalType:"address",name:"offerer",type:"address"},{internalType:"bytes32",name:"conduitKey",type:"bytes32"}],internalType:"struct Execution[]",name:"",type:"tuple[]"}],stateMutability:"payable",type:"function"},{inputs:[{components:[{components:[{internalType:"address",name:"offerer",type:"address"},{internalType:"address",name:"zone",type:"address"},{components:[{internalType:"enum ItemType",name:"itemType",type:"uint8"},{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"identifierOrCriteria",type:"uint256"},{internalType:"uint256",name:"startAmount",type:"uint256"},{internalType:"uint256",name:"endAmount",type:"uint256"}],internalType:"struct OfferItem[]",name:"offer",type:"tuple[]"},{components:[{internalType:"enum ItemType",name:"itemType",type:"uint8"},{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"identifierOrCriteria",type:"uint256"},{internalType:"uint256",name:"startAmount",type:"uint256"},{internalType:"uint256",name:"endAmount",type:"uint256"},{internalType:"address payable",name:"recipient",type:"address"}],internalType:"struct ConsiderationItem[]",name:"consideration",type:"tuple[]"},{internalType:"enum OrderType",name:"orderType",type:"uint8"},{internalType:"uint256",name:"startTime",type:"uint256"},{internalType:"uint256",name:"endTime",type:"uint256"},{internalType:"bytes32",name:"zoneHash",type:"bytes32"},{internalType:"uint256",name:"salt",type:"uint256"},{internalType:"bytes32",name:"conduitKey",type:"bytes32"},{internalType:"uint256",name:"totalOriginalConsiderationItems",type:"uint256"}],internalType:"struct OrderParameters",name:"parameters",type:"tuple"},{internalType:"bytes",name:"signature",type:"bytes"}],internalType:"struct Order[]",name:"",type:"tuple[]"},{components:[{components:[{internalType:"uint256",name:"orderIndex",type:"uint256"},{internalType:"uint256",name:"itemIndex",type:"uint256"}],internalType:"struct FulfillmentComponent[]",name:"offerComponents",type:"tuple[]"},{components:[{internalType:"uint256",name:"orderIndex",type:"uint256"},{internalType:"uint256",name:"itemIndex",type:"uint256"}],internalType:"struct FulfillmentComponent[]",name:"considerationComponents",type:"tuple[]"}],internalType:"struct Fulfillment[]",name:"",type:"tuple[]"}],name:"matchOrders",outputs:[{components:[{components:[{internalType:"enum ItemType",name:"itemType",type:"uint8"},{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"identifier",type:"uint256"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"address payable",name:"recipient",type:"address"}],internalType:"struct ReceivedItem",name:"item",type:"tuple"},{internalType:"address",name:"offerer",type:"address"},{internalType:"bytes32",name:"conduitKey",type:"bytes32"}],internalType:"struct Execution[]",name:"",type:"tuple[]"}],stateMutability:"payable",type:"function"},{inputs:[],name:"name",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"pure",type:"function"},{inputs:[{components:[{components:[{internalType:"address",name:"offerer",type:"address"},{internalType:"address",name:"zone",type:"address"},{components:[{internalType:"enum ItemType",name:"itemType",type:"uint8"},{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"identifierOrCriteria",type:"uint256"},{internalType:"uint256",name:"startAmount",type:"uint256"},{internalType:"uint256",name:"endAmount",type:"uint256"}],internalType:"struct OfferItem[]",name:"offer",type:"tuple[]"},{components:[{internalType:"enum ItemType",name:"itemType",type:"uint8"},{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"identifierOrCriteria",type:"uint256"},{internalType:"uint256",name:"startAmount",type:"uint256"},{internalType:"uint256",name:"endAmount",type:"uint256"},{internalType:"address payable",name:"recipient",type:"address"}],internalType:"struct ConsiderationItem[]",name:"consideration",type:"tuple[]"},{internalType:"enum OrderType",name:"orderType",type:"uint8"},{internalType:"uint256",name:"startTime",type:"uint256"},{internalType:"uint256",name:"endTime",type:"uint256"},{internalType:"bytes32",name:"zoneHash",type:"bytes32"},{internalType:"uint256",name:"salt",type:"uint256"},{internalType:"bytes32",name:"conduitKey",type:"bytes32"},{internalType:"uint256",name:"totalOriginalConsiderationItems",type:"uint256"}],internalType:"struct OrderParameters",name:"parameters",type:"tuple"},{internalType:"bytes",name:"signature",type:"bytes"}],internalType:"struct Order[]",name:"",type:"tuple[]"}],name:"validate",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{stateMutability:"payable",type:"receive"}];var te=class extends b{constructor({walletClient:e}){let{SeaportAddress:t}=g(e.chain);super({walletClient:e,address:t,abi:E})}async getOrderHash(e){return this.contract.read.getOrderHash([e])}async getCounter(){return this.contract.read.getCounter([this.wallet.account.address])}async signOrder(e){let t={name:"Seaport",version:"1.5",chainId:this.wallet.chain?.id,verifyingContract:this.address},n={OrderComponents:[{name:"offerer",type:"address"},{name:"zone",type:"address"},{name:"offer",type:"OfferItem[]"},{name:"consideration",type:"ConsiderationItem[]"},{name:"orderType",type:"uint8"},{name:"startTime",type:"uint256"},{name:"endTime",type:"uint256"},{name:"zoneHash",type:"bytes32"},{name:"salt",type:"uint256"},{name:"conduitKey",type:"bytes32"},{name:"counter",type:"uint256"}],OfferItem:[{name:"itemType",type:"uint8"},{name:"token",type:"address"},{name:"identifierOrCriteria",type:"uint256"},{name:"startAmount",type:"uint256"},{name:"endAmount",type:"uint256"}],ConsiderationItem:[{name:"itemType",type:"uint8"},{name:"token",type:"address"},{name:"identifierOrCriteria",type:"uint256"},{name:"startAmount",type:"uint256"},{name:"endAmount",type:"uint256"},{name:"recipient",type:"address"}]};return this.wallet.signTypedData({domain:t,types:n,primaryType:"OrderComponents",message:e})}async generateOrderFromSaleOffer({collectionContractAddress:e,tokenId:t,price:n,expirationTime:a}){let{WETH_ADDRESS:i}=_(),r={offerer:this.wallet.account.address,zone:ee,offer:[{itemType:1,token:i,identifierOrCriteria:0n,startAmount:n,endAmount:n}],consideration:[{itemType:2,token:e,identifierOrCriteria:t,startAmount:1n,endAmount:1n,recipient:this.wallet.account.address}],orderType:0,startTime:BigInt(Math.floor(A(Date.now()))),endTime:a,zoneHash:I,salt:0n,conduitKey:I,counter:await this.getCounter(),totalOriginalConsiderationItems:1n},s=await this.signOrder(r);return{parameters:r,signature:s}}async recoverOrderFromNativeBid({nativeBid:e,collectionContractAddress:t,tokenId:n}){let{WETH_ADDRESS:a}=_();return{offerer:e.maker,zone:ee,offer:[{itemType:1,token:a,identifierOrCriteria:0n,startAmount:e.netAmount,endAmount:e.netAmount}],consideration:[{itemType:2,token:t,identifierOrCriteria:n,startAmount:1n,endAmount:1n,recipient:e.maker}],orderType:0,startTime:BigInt(Math.floor(A(e.startTime.getTime()))),endTime:BigInt(Math.floor(A(e.expiration?.getTime()??Date.now()))),zoneHash:I,salt:0n,conduitKey:I,counter:await this.getCounter(),totalOriginalConsiderationItems:1n}}async generateInverseOrder(e){return{offerer:this.wallet.account?.address??ee,zone:ee,offer:e.consideration,consideration:e.offer.map(t=>({...t,recipient:this.wallet.account?.address??ee})),orderType:0,startTime:e.startTime,endTime:e.endTime,zoneHash:I,salt:0n,conduitKey:I,counter:await this.getCounter(),totalOriginalConsiderationItems:BigInt(e.offer.length)}}generateFulfillmentsForOrderAndInverse(e){let t=[];return e.offer.forEach((n,a)=>{t.push({offerComponents:[{orderIndex:0n,itemIndex:BigInt(a)}],considerationComponents:[{orderIndex:1n,itemIndex:BigInt(a)}]})}),e.consideration.forEach((n,a)=>{t.push({offerComponents:[{orderIndex:1n,itemIndex:BigInt(a)}],considerationComponents:[{orderIndex:0n,itemIndex:BigInt(a)}]})}),t}async cancel({orderComponents:e}){let t=await this.safeContractWrite.cancel([[e]]);return{txHash:t,waitTxInBlock:async()=>{let n=await this.bcClient.waitForTransactionReceipt({hash:t}),a=await this.contract.createEventFilter.OrderCancelled({offerer:e.offerer}),i=u(n,a);if(i.length===0)throw new Error("Order not cancelled");return{...i[0].args,...n}}}}};l(te,"Seaport");var ne=class extends b{constructor({walletClient:e}){let{UserVault:t}=g(e.chain);super({walletClient:e,address:t.v5,abi:$e})}async burnAndWithdraw({vaultId:e,collections:t,tokenIds:n,tokens:a=[]}){if(t.length!=n.length)throw new Error("collections and tokenIds must have the same length");let i=await this.safeContractWrite.burnAndWithdraw([e,t,n,a]);return{txHash:i,waitTxInBlock:async()=>{let r=await this.bcClient.waitForTransactionReceipt({hash:i}),s=await this.contract.createEventFilter.ERC721Withdrawn(),o=u(r,s);if(o.length!==n.length)throw new Error("Withdrawn count mismatch");return{events:o.map(y=>y.args),oldEvents:[],...r}}}}async createVault(e){let{id:t}=await this.#e(),n=[],a={};for(let{collection:i,tokenIds:r}of e)a[i]?a[i].tokenIds.push(...r):a[i]={collection:i,tokenIds:[...r]};for(let{collection:i,tokenIds:r}of Object.values(a)){let o=await(await this.depositERC721s({vaultId:t,collection:i,tokenIds:r})).waitTxInBlock();n.push(o)}return{vaultId:t,receipts:n}}async depositERC721s({vaultId:e,collection:t,tokenIds:n}){let a=await this.safeContractWrite.depositERC721s([e,t,n]);return{txHash:a,waitTxInBlock:async()=>{let i=await this.bcClient.waitForTransactionReceipt({hash:a}),r=await this.contract.createEventFilter.ERC721Deposited(),s=u(i,r);if(s.length===0)throw new Error("Deposit not created");return{...s[0].args,...i}}}}async depositOldERC721s(){throw new Error("Not implemented")}async#e(){let e=await this.safeContractWrite.mint(void 0),t=await this.bcClient.waitForTransactionReceipt({hash:e}),n=await this.contract.createEventFilter.Transfer({}),a=u(t,n);if(a.length===0)throw new Error("Vault not created");return{...a[0].args,...t}}};l(ne,"UserVaultV5");var ae=class extends b{constructor({walletClient:e}){let{UserVault:t}=g(e.chain);super({walletClient:e,address:t.v6,abi:Ye})}async burnAndWithdraw({vaultId:e,collections:t,tokenIds:n,oldCollections:a=[],oldTokenIds:i=[],tokens:r=[]}){if(t.length!=n.length)throw new Error("collections and tokenIds must have the same length");if(a.length!=i.length)throw new Error("oldCollections and oldTokenIds must have the same length");let s=await this.safeContractWrite.burnAndWithdraw([e,t,n,a,i,r]);return{txHash:s,waitTxInBlock:async()=>{let o=await this.bcClient.waitForTransactionReceipt({hash:s}),y=await this.contract.createEventFilter.ERC721Withdrawn({}),d=u(o,y),c=await this.contract.createEventFilter.OldERC721Withdrawn({}),m=u(o,c);if(d.length!==n.length||m.length!==i.length)throw new Error("Withdrawn count mismatch");return{events:d.map(T=>T.args),oldEvents:d.map(T=>T.args),...o}}}}async createVault(e){let{id:t}=await this.#e(),n=[],a={};for(let{collection:i,tokenIds:r,isOldErc721:s}of e)a[i]?a[i].tokenIds.push(...r):a[i]={collection:i,tokenIds:[...r],isOldErc721:s};for(let{collection:i,tokenIds:r,isOldErc721:s}of Object.values(a)){let y=await(s?await this.depositOldERC721s({vaultId:t,collection:i,tokenIds:r}):await this.depositERC721s({vaultId:t,collection:i,tokenIds:r})).waitTxInBlock();n.push(y)}return{vaultId:t,receipts:n}}async depositERC721s({vaultId:e,collection:t,tokenIds:n}){let a=await this.safeContractWrite.depositERC721s([e,t,n]);return{txHash:a,waitTxInBlock:async()=>{let i=await this.bcClient.waitForTransactionReceipt({hash:a}),r=await this.contract.createEventFilter.ERC721Deposited({}),s=u(i,r);if(s.length===0)throw new Error("Deposit not created");return{...s[0].args,...i}}}}async depositOldERC721s({vaultId:e,collection:t,tokenIds:n}){let a=await this.safeContractWrite.depositOldERC721s([e,t,n]);return{txHash:a,waitTxInBlock:async()=>{let i=await this.bcClient.waitForTransactionReceipt({hash:a}),r=await this.contract.createEventFilter.OldERC721Deposited({}),s=u(i,r);if(s.length===0)throw new Error("Deposit not created");return{...s[0].args,...i}}}}async#e(){let e=await this.safeContractWrite.mint(void 0),t=await this.bcClient.waitForTransactionReceipt({hash:e}),n=await this.contract.createEventFilter.Transfer({}),a=u(t,n);if(a.length===0)throw new Error("Vault not created");return{...a[0].args,...t}}};l(ae,"UserVaultV6");var ie=class{walletClient;publicClient;MultiSourceLoanV4;MultiSourceLoanV5;MultiSourceLoanV6;AuctionLoanLiquidatorV4;AuctionLoanLiquidatorV5;AuctionLoanLiquidatorV6;UserVaultV5;UserVaultV6;Leverage;Seaport;CryptoPunks;constructor(e,t){this.walletClient=t,this.publicClient=e,this.MultiSourceLoanV4=new X({walletClient:t}),this.MultiSourceLoanV5=new j({walletClient:t}),this.MultiSourceLoanV6=new J({walletClient:t}),this.AuctionLoanLiquidatorV4=new N({walletClient:t}),this.AuctionLoanLiquidatorV5=new $({walletClient:t}),this.AuctionLoanLiquidatorV6=new Q({walletClient:t}),this.UserVaultV5=new ne({walletClient:t}),this.UserVaultV6=new ae({walletClient:t}),this.Leverage=new G({walletClient:t,mslAddress:this.MultiSourceLoanV5.address}),this.Seaport=new te({walletClient:t}),this.CryptoPunks=new z({walletClient:t})}Msl(e){if(M(e,this.MultiSourceLoanV4.address))return this.MultiSourceLoanV4;if(M(e,this.MultiSourceLoanV5.address))return this.MultiSourceLoanV5;if(M(e,this.MultiSourceLoanV6.address))return this.MultiSourceLoanV6;throw new Error(`Invalid Contract Address ${e}`)}All(e){if(M(e,this.MultiSourceLoanV4.address))return this.AuctionLoanLiquidatorV4;if(M(e,this.MultiSourceLoanV5.address))return this.AuctionLoanLiquidatorV5;if(M(e,this.MultiSourceLoanV6.address))return this.AuctionLoanLiquidatorV6;throw new Error(`Invalid Contract Address ${e}`)}UserVault(e){if(M(e,this.UserVaultV5.address))return this.UserVaultV5;if(M(e,this.UserVaultV6.address))return this.UserVaultV6;throw new Error(`Invalid Contract Address ${e}`)}ERC721(e){return Fe({address:e,abi:pe,walletClient:this.walletClient,publicClient:this.publicClient})}OldERC721(e){return Fe({address:e,abi:Ue,walletClient:this.walletClient,publicClient:this.publicClient})}ERC20(e){return Fe({address:e,abi:Ke,walletClient:this.walletClient,publicClient:this.publicClient})}};l(ie,"Contracts");var it=115792089237316195423570985008687907853269984665640564039457584007913129639935n;import{createClient as In}from"@reservoir0x/reservoir-sdk";import{createPublicClient as An,encodeAbiParameters as Fn,encodeFunctionData as st,getContract as Sn,http as Mn,zeroAddress as vn}from"viem";import{mainnet as xn}from"viem/chains";var H=class{orderId;to;callbackData;value;constructor({orderId:e,to:t,callbackData:n,value:a}){this.orderId=e,this.to=t,this.callbackData=n,this.value=a}};l(H,"InterruptedSendTransactionStepError");var L=class extends H{signature;constructor({orderId:e,to:t,callbackData:n,value:a,signature:i}){super({orderId:e,to:t,callbackData:n,value:a}),this.signature=i}};l(L,"InterruptedSeaportSendTransactionStepError");var B=class extends H{};l(B,"InterruptedCryptoPunksSendTransactionStepError");var P=class extends H{};l(P,"InterruptedGenericSendTransactionStepError");import{adaptViemWallet as Tn}from"@reservoir0x/reservoir-sdk";import{decodeFunctionData as fn,zeroAddress as bn}from"viem";var Se=l(p=>p==="opensea.io","isOpensea"),gn=l(p=>p==="cryptopunks.app","isCryptopunks"),rt=l(p=>p==="gondi.xyz","isNative"),Me=l((p,e)=>({...Tn(p),transport:void 0,handleSendTransactionStep:async(a,i,r)=>{if(r.id!=="sale")return console.log(r),ze;let s=i.orderIds?.[0]??"",o=i.data.to,y=i.data.data,d=BigInt(i.data.value??0);if(Se(e)){let m=fn({abi:E,data:i.data.data})?.args?.[0],T=Array.isArray(m)?m[0].signature:typeof m=="object"?m.signature:bn;throw new L({orderId:s,to:o,callbackData:y,value:d,signature:T})}else throw gn(e)?new B({orderId:s,to:o,callbackData:y,value:d}):new P({orderId:s,to:o,callbackData:y,value:d})}}),"adaptWalletToCaptureTxData");var re=class{baseApiUrl;mainnetClient;wallet;Seaport;CryptoPunks;client;EXECUTION_INFO_ABI=[{name:"ExecutionInfo",type:"tuple",components:[{name:"module",type:"address"},{name:"data",type:"bytes"},{name:"value",type:"uint256"}]}];constructor({baseApiUrl:e="https://api.reservoir.tools",wallet:t,Seaport:n,CryptoPunks:a}){this.baseApiUrl=e,this.wallet=t,this.Seaport=n,this.CryptoPunks=a;let{reservoirApiKey:i,infuraApiKey:r}=Ge();this.client=In({chains:[{id:t.chain.id,name:t.chain.name,baseApiUrl:e,active:!0}],apiKey:i,source:"gondi.xyz"}),this.mainnetClient=An({chain:xn,transport:Mn(`https://mainnet.infura.io/v3/${r}`)})}async getAsk({orderId:e}){return fetch(`${this.baseApiUrl}/orders/asks/v5?ids=${e}&includeRawData=true`).then(t=>t.json()).then(({orders:t})=>{if(!t)throw new Error(`Order ${e} is not available anymore`);return t[0]})}async getBid({orderId:e}){return fetch(`${this.baseApiUrl}/orders/bids/v6?ids=${e}&includeRawData=true`).then(t=>t.json()).then(({orders:t})=>{if(!t)throw new Error(`Order ${e} is not available anymore`);return t[0]})}generateExpectedCurrencyPriceObject(e,t){return{[t]:{raw:e,currencyAddress:t,currencyDecimals:18}}}encodeExecutionData({module:e,data:t,value:n}){return Fn(this.EXECUTION_INFO_ABI,[{module:e,data:t,value:n}])}async generateMatchOrdersExecutionData({askOrBid:e,signature:t,side:n="ask"}){let a={parameters:{...e.rawData,totalOriginalConsiderationItems:BigInt(e.rawData.consideration.length)},signature:t},i=await this.Seaport.generateInverseOrder(a.parameters),r={parameters:i,signature:await this.Seaport.signOrder(i)},s=this.Seaport.generateFulfillmentsForOrderAndInverse(a.parameters),o=st({abi:E,functionName:"matchOrders",args:[[a,r],s]}),y=n==="ask"?a.parameters.consideration.reduce((d,c)=>d+(c.itemType===0?BigInt(c.endAmount):0n),0n):BigInt(e.price.netAmount.raw);return{callbackData:this.encodeExecutionData({module:this.Seaport.address,data:o,value:y}),value:y,isSeaportCall:!0}}async generateFulfillOrderExecutionData({askOrBid:e,signature:t,tokenId:n}){let a={parameters:{...e.rawData,totalOriginalConsiderationItems:BigInt(e.rawData.consideration.length)},numerator:1n,denominator:1n,signature:t,extraData:"0x"},i=a.parameters.consideration.findIndex(o=>o.itemType===4),r=st({abi:E,functionName:"fulfillAdvancedOrder",args:[a,i!==-1?[{orderIndex:0n,side:1,index:BigInt(i),identifier:n,criteriaProof:[]}]:[],I,vn]}),s=BigInt(e.price.netAmount.raw);return{callbackData:this.encodeExecutionData({module:this.Seaport.address,data:r,value:s}),value:s,isSeaportCall:!0}}async buyTokens(e){let{ETH_ADDRESS:t}=_(),n=e.reduce((a,i)=>a+i.price,0n);return this.client?.actions.buyToken({items:e.map(a=>({token:`${a.collectionContractAddress}:${a.tokenId}`,quantity:1,exactOrderSource:a.orderSource})),expectedPrice:this.generateExpectedCurrencyPriceObject(n,t),wallet:this.wallet,onProgress:()=>null,precheck:!1,options:{excludeEOA:!0,skipBalanceCheck:!0}})}async getExecutionDataForBuyToken({collectionContractAddress:e,tokenId:t,price:n,exactOrderSource:a}){let i=Me(this.wallet,a),{ETH_ADDRESS:r}=_();try{throw await this.client?.actions.buyToken({items:[{token:`${e}:${t}`,quantity:1,exactOrderSource:a}],expectedPrice:this.generateExpectedCurrencyPriceObject(n,r),wallet:i,onProgress:()=>null,precheck:!1,options:{excludeEOA:!0,skipBalanceCheck:!0}}),new Error("This should never happen since we will throw inside the wallet tx")}catch(s){if(s instanceof L){let{orderId:o,signature:y}=s,d=await this.getAsk({orderId:o});return this.generateMatchOrdersExecutionData({askOrBid:d,signature:y})}else if(s instanceof B){let{value:o}=s,y=await this.CryptoPunks.encodeBuyPunk(t);return{callbackData:this.encodeExecutionData({module:this.CryptoPunks.address,data:y,value:o}),value:o,isSeaportCall:!1}}else if(s instanceof P){let{to:o,callbackData:y,value:d}=s;return{callbackData:this.encodeExecutionData({module:o,data:y,value:d}),value:d,isSeaportCall:!1}}else throw new Error(`No available offer for price ${n}`)}}async getCallbackDataForSellToken({collectionContractAddress:e,tokenId:t,price:n,exactOrderSource:a}){let i=Me(this.wallet,a),{WETH_ADDRESS:r}=_(),{LeverageAddress:s}=g(this.wallet.chain),y=await Sn({abi:pe,address:e,publicClient:this.mainnetClient}).read.ownerOf([t]);try{throw await this.client?.actions.acceptOffer({items:[{token:`${e}:${t}`,quantity:1,exactOrderSource:a}],expectedPrice:this.generateExpectedCurrencyPriceObject(n,r),wallet:i,onProgress:()=>null,precheck:!1,options:{excludeEOA:!0,taker:Se(a)?y:s}}),new Error("This should never happen since we will throw inside the wallet tx")}catch(d){if(d instanceof L){let{orderId:c,signature:m}=d,T=await this.getBid({orderId:c});return this.generateFulfillOrderExecutionData({askOrBid:T,signature:m,tokenId:t})}else if(d instanceof P){let{orderId:c,to:m,callbackData:T}=d,S=await this.getBid({orderId:c});return{callbackData:this.encodeExecutionData({module:m,data:T,value:BigInt(S.price?.netAmount?.raw??0n)}),value:BigInt(S.price?.netAmount?.raw??0n),isSeaportCall:!1}}else throw new Error(`No available offer for price ${n}`)}}};l(re,"Reservoir");var ve="fulfilled",xe="rejected";var me=class{contracts;wallet;bcClient;api;reservoir;constructor({wallet:e,apiClient:t,reservoirBaseApiUrl:n}){this.wallet=e,this.bcClient=wn({chain:e.chain,transport:()=>On(e.transport)}),this.contracts=new ie(this.bcClient,e),this.api=new W({wallet:e,apiClient:t}),this.reservoir=new re({baseApiUrl:n,wallet:e,Seaport:this.contracts.Seaport,CryptoPunks:this.contracts.CryptoPunks})}async makeSingleNftOffer(e){return await this._makeSingleNftOffer(e)}async _makeSingleNftOffer(e,t){let n=t?this.contracts.Msl(t):this.contracts.MultiSourceLoanV5,a=n.address,i={...e,lenderAddress:e.lenderAddress?e.lenderAddress:this.wallet.account?.address,signerAddress:this.wallet.account?.address,borrowerAddress:e.borrowerAddress??x,requiresLiquidation:!!e.requiresLiquidation,contractAddress:a,offerValidators:[]},r=await this.api.generateSingleNftOfferHash({offerInput:i}),{offerHash:s,offerId:o,validators:y,lenderAddress:d,signerAddress:c,borrowerAddress:m}=r.offer,T=r.offer.nft.collection?.contractData?.contractAddress;if(T===void 0)throw new Error("Invalid nft");let S={...i,lender:d??i.lenderAddress,signer:c??i.signerAddress,borrower:m??i.borrowerAddress,nftCollateralTokenId:r.offer.nft.tokenId,nftCollateralAddress:T,validators:y,offerId:o},v=await n.signOffer({structToSign:S}),w={...i,offerValidators:y.map(U=>({arguments:U.arguments,validator:U.validator})),offerHash:s??I,offerId:o,signature:v};return await this.api.saveSingleNftOffer(w)}async makeCollectionOffer(e){return await this._makeCollectionOffer(e)}async _makeCollectionOffer(e,t){let n=t?this.contracts.Msl(t):this.contracts.MultiSourceLoanV5,a=n.address,i={...e,lenderAddress:e.lenderAddress?e.lenderAddress:this.wallet.account?.address,signerAddress:this.wallet.account?.address,borrowerAddress:e.borrowerAddress??x,requiresLiquidation:!!e.requiresLiquidation,contractAddress:a,offerValidators:[{validator:x,arguments:He}]},r=await this.api.generateCollectionOfferHash({offerInput:i}),s=r.offer.collection.contractData?.contractAddress;if(s===void 0)throw new Error("Invalid collection");let{offerHash:o,offerId:y,validators:d,lenderAddress:c,signerAddress:m,borrowerAddress:T}=r.offer,S={...i,lender:c??i.lenderAddress,signer:m??i.signerAddress,borrower:T??i.borrowerAddress,nftCollateralTokenId:0n,nftCollateralAddress:s,validators:d,offerId:y},v=await n.signOffer({structToSign:S}),w={...i,offerValidators:d.map(U=>({arguments:U.arguments,validator:U.validator})),offerHash:o??I,offerId:y,signature:v};return await this.api.saveCollectionOffer(w)}async makeSaleOffer({collectionContractAddress:e,tokenId:t,price:n,expirationTime:a}){let{parameters:{totalOriginalConsiderationItems:i,...r},signature:s}=await this.contracts.Seaport.generateOrderFromSaleOffer({collectionContractAddress:e,tokenId:t,price:n,expirationTime:a});return this.api.saveSignedSaleOffer({offer:{...r,signature:s}})}async cancelSaleOffer({saleOffer:e}){return this.contracts.Seaport.cancel({orderComponents:e})}async cancelOffer({id:e,contractAddress:t}){return this.contracts.Msl(t).cancelOffer({id:e})}async cancelAllOffers({minId:e,contractAddress:t}){return this.contracts.Msl(t).cancelAllOffers({minId:e})}async hideOffer({id:e,contractAddress:t}){return this.api.hideOffer({contract:t,id:e.toString()})}async unhideOffer({id:e,contractAddress:t}){return this.api.unhideOffer({contract:t,id:e.toString()})}async makeRefinanceOffer({renegotiation:e,contractAddress:t,skipSignature:n}){let a={lenderAddress:this.wallet.account?.address,signerAddress:this.wallet.account?.address,...e,targetPrincipal:e.targetPrincipal??[],trancheIndex:e.trancheIndex??[]},i=await this.api.generateRenegotiationOfferHash({renegotiationInput:a}),{renegotiationId:r,offerHash:s,loanId:o,lenderAddress:y,signerAddress:d}=i.offer;if(n)return{...a,offerHash:s??I,signature:I,renegotiationId:r};let c={...a,fee:a.feeAmount,lender:y??a.lenderAddress,signer:d??a.signerAddress??x,strictImprovement:!1,loanId:o,renegotiationId:r},T=await this.contracts.Msl(t).signRenegotiationOffer({structToSign:c}),S={...a,signature:T,offerHash:s??I,renegotiationId:r};return await this.api.saveRefinanceOffer(S)}async cancelRefinanceOffer({id:e,contractAddress:t}){return this.contracts.Msl(t).cancelRefinanceOffer({id:e})}async hideRenegotiationOffer({id:e,contractAddress:t}){return this.api.hideRenegotiationOffer({id:e.toString(),contractAddress:t})}async unhideRenegotiationOffer({id:e,contractAddress:t}){return this.api.unhideRenegotiationOffer({id:e.toString(),contractAddress:t})}async hideSaleOffer({id:e}){return this.api.hideSaleOffer({id:e})}async unhideSaleOffer({id:e}){return this.api.unhideSaleOffer({id:e})}async cancelAllRenegotiations({minId:e,contractAddress:t}){return this.contracts.Msl(t).cancelAllRenegotiations({minId:e})}offerExecutionFromOffers(e,t){return e.map((n,a)=>{let{signature:i,lenderAddress:r,borrowerAddress:s,offerHash:o}=n;if(!(i&&r&&s&&o))throw new Error("Misisng required field for offer");return{offer:{...n,offerHash:o,lenderAddress:r,lender:r,borrowerAddress:s,borrower:s,signature:i,maxSeniorRepayment:n.maxSeniorRepayment??0n},amount:t?.[a]??n.principalAmount,lenderOfferSignature:i}})}async emitLoan(e){let t=e.offerExecution[0].offer.contractAddress;return this.contracts.Msl(t).emitLoan(e)}async refinanceFromOffers({loan:e,loanId:t,executionData:n}){return this.contracts.Msl(e.contractAddress).refinanceFromOffers({loan:F(e),loanId:t,executionData:n})}async repayLoan({loan:e,loanId:t,nftReceiver:n}){return this.contracts.Msl(e.contractAddress).repayLoan({loan:F(e),nftReceiver:n,loanId:t})}async offers({limit:e=20,cursor:t,sortBy:n={field:"CREATED_DATE",order:"DESC"},filterBy:a={}}){let{status:i,nft:r,collection:s,borrower:o,...y}=a;return await this.api.listOffers({first:e,after:t,sortBy:n,statuses:i,nfts:r?[r]:[],collections:s?[s]:[],borrowerAddress:o,...y})}async loans({limit:e=20,cursor:t,...n}){return await this.api.listLoans({first:e,after:t,...n})}async list({nft:e}){return await this.api.listNft({nftId:e})}async unlist({nft:e}){return await this.api.unlistNft({nftId:e})}async listings({collections:e,user:t,marketPlaces:n=["GONDI"],limit:a=20,cursor:i}){return await this.api.listListings({collections:e,userFilter:t,marketplaceNames:n,after:i,first:a})}async nftId(e){let t;if(e.slug&&(t=await this.api.nftIdBySlugTokenId(e)),e.contractAddress&&(t=await this.api.nftIdByContractAddressAndTokenId(e)),!t?.nft)throw new Error(`invalid nft ${e}`);return Number(t.nft.id)}async collections(e){let t=await this.api.collections({currency:e.statsCurrency??x}),{edges:n,pageInfo:a}=t.collections;return{collections:n.map(i=>i.node),pageInfo:a}}async collectionId(e){let t;if(e.slug){if(t=await this.api.collectionIdBySlug(e),!t?.collection)throw new Error(`invalid collection ${e}`);return Number(t.collection.id)}if(e.contractAddress){if(t=await this.api.collectionsIdByContractAddress(e),!t?.collections)throw new Error(`invalid collection ${e}`);return t.collections.map(n=>Number(n.id))}}async ownedNfts(){let e=await this.api.ownedNfts(),{edges:t,pageInfo:n}=e.ownedNfts;return{ownedNfts:t.map(a=>a.node),pageInfo:n}}async getRemainingLockupSeconds({loan:e}){return this.contracts.Msl(e.contractAddress).getRemainingLockupSeconds({loan:F(e)})}async getBestNativeSaleOffer({contractAddress:e,tokenId:t}){let{WETH_ADDRESS:n}=_(),a=await this.nftId({contractAddress:e,tokenId:t}),{bids:i}=await this.api.listBestBidsForNft({nftId:a,currencyAddress:n});return i.find(s=>s.marketPlace===Qe)??null}contractToVersion(e){return M(e,this.contracts.MultiSourceLoanV4.address)?"v4":M(e,this.contracts.MultiSourceLoanV5.address)?"v5":"v6"}async generateRenegotiationId({loanId:e,loan:t}){let n=at({loanId:e,loan:t,trancheIndex:M(t.contractAddress,this.contracts.MultiSourceLoanV6.address),address:this.wallet.account?.address}),{offer:a}=await this.api.generateRenegotiationOfferHash({renegotiationInput:n});return a.renegotiationId}async refinanceBatch({aprBpsImprovementPercentage:e,refinancings:t}){let n={v4:{},v5:{},v6:{}};t.forEach(({loan:r,source:s,refinancingPrincipal:o})=>{let y=`${r.nftCollateralAddress}-${r.nftCollateralTokenId}`,d=this.contractToVersion(r.contractAddress),c=n[d][y],m=BigInt(Math.floor(Number(s.aprBps)*(1-e))),T=et(c?.newAprBps,m);n[d][y]={loan:F(r),loanReferenceId:r.loanReferenceId,newAprBps:T,sources:[...c?.sources??[],{source:s,refinancingPrincipal:o}]}});let a=["v4","v5","v6"],i=[];for(let r of a){let s=Object.values(n[r]);if(s.length>0){let o=await this.generateRenegotiationId({loan:s[0].loan,loanId:s[0].loanReferenceId});try{let y=r==="v4"?await this.contracts.MultiSourceLoanV4.refinanceBatch({refinancings:Object.values(n.v4),renegotiationId:o}):r==="v5"?await this.contracts.MultiSourceLoanV5.refinanceBatch({refinancings:Object.values(n.v5),renegotiationId:o}):await this.contracts.MultiSourceLoanV6.refinanceBatch({refinancings:Object.values(n.v6),renegotiationId:o});i.push({status:ve,value:y})}catch(y){i.push({status:xe,reason:y,value:s})}}}return i}async refinanceFullLoan({offer:e,loan:t,loanId:n}){return this.contracts.Msl(t.contractAddress).refinanceFullLoan({offer:ue(e,n),loan:F(t),signature:e.signature})}async refinancePartialLoan({offer:e,loan:t,loanId:n}){return this.contracts.Msl(t.contractAddress).refinancePartialLoan({offer:ue(e,n),loan:F(t)})}async extendLoan({loan:e,newDuration:t,loanId:n}){return this.contracts.Msl(e.contractAddress).extendLoan({loan:F(e),newDuration:t,loanId:n})}async mergeTranches({loan:e,loanId:t,minTranche:n,maxTranche:a}){return this.contracts.Msl(e.contractAddress).mergeTranches({loan:F(e),loanId:t,minTranche:n,maxTranche:a})}async addTranche({offer:e,loan:t,loanId:n}){return this.contracts.Msl(t.contractAddress).addTranche({offer:ue(e,n),loan:F(t),signature:e.signature})}async delegateMulticall(e){let t=e[0].loan.contractAddress;return this.contracts.Msl(t).delegateMulticall(e.map(n=>({...n,loan:F(n.loan)})))}async delegate({loan:e,loanId:t,to:n,enable:a,rights:i}){return this.contracts.Msl(e.contractAddress).delegate({loan:F(e),loanId:t,to:n,rights:i,enable:a})}async revokeDelegate({to:e,collection:t,tokenId:n,contract:a=this.contracts.MultiSourceLoanV5.address}){return this.contracts.Msl(a).revokeDelegate({to:e,collection:t,tokenId:n})}async revokeDelegationsAndEmitLoan({delegations:e,emit:t}){let n=t.offerExecution[0].offer.contractAddress;return this.contracts.Msl(n).revokeDelegationsAndEmitLoan({delegations:e,emit:t})}async liquidateLoan({loan:e,loanId:t}){return this.contracts.Msl(e.contractAddress).liquidateLoan({loanId:t,loan:F(e)})}async placeBid({collectionContractAddress:e,tokenId:t,bid:n,auction:a}){return this.contracts.All(a.loanAddress).placeBid({collectionContractAddress:e,tokenId:t,bid:n,auction:a})}async settleAuction({loan:e,auction:t}){return this.contracts.All(t.loanAddress).settleAuction({auction:t,loan:F(e)})}async settleAuctionWithBuyout({loan:e,auction:t}){return this.contracts.All(t.loanAddress).settleAuctionWithBuyout({auction:t,loan:F(e)})}async getAuctionRemainingLockupSeconds({auction:e}){return this.contracts.All(e.loanAddress).getRemainingLockupSeconds({auction:e})}async buy(e){return this.reservoir.buyTokens(e)}async leverageBuy({leverageBuyData:e}){let t=await Promise.all(e.map(i=>this.reservoir.getExecutionDataForBuyToken({collectionContractAddress:i.nft.collectionContractAddress,tokenId:i.nft.tokenId,price:i.nft.price,exactOrderSource:i.nft.orderSource}))),n=t.reduce((i,{value:r},s)=>i+r-e[s].amount+e[s].offer.fee,0n),a=e.map((i,r)=>({...i,callbackData:t[r].callbackData}));return this.contracts.Leverage.buy({leverageBuyData:a,ethToSend:n<0n?0n:n})}async leverageSell({loan:e,loanId:t,price:n,orderSource:a}){let i=null;if(rt(a)){let s=await this.getBestNativeSaleOffer({contractAddress:e.nftCollateralAddress,tokenId:e.nftCollateralTokenId});if(!s||s.netAmount<n)throw new Error(`No native bid for price ${n}`);i=await this.reservoir.generateFulfillOrderExecutionData({askOrBid:{rawData:await this.contracts.Seaport.recoverOrderFromNativeBid({nativeBid:s,collectionContractAddress:e.nftCollateralAddress,tokenId:e.nftCollateralTokenId}),price:{netAmount:{raw:String(n)}}},signature:s.signature,tokenId:e.nftCollateralTokenId})}else i=await this.reservoir.getCallbackDataForSellToken({collectionContractAddress:e.nftCollateralAddress,tokenId:e.nftCollateralTokenId,price:n,exactOrderSource:a});let r=i.isSeaportCall;return this.contracts.Leverage.sell({loan:e,callbackData:i.callbackData,shouldDelegate:r,loanId:t})}async getOwner({nftAddress:e,tokenId:t}){return this.contracts.ERC721(e).read.ownerOf([t])}async isApprovedNFTForAll({nftAddress:e,to:t=this.contracts.MultiSourceLoanV5.address}){return this.contracts.ERC721(e).read.isApprovedForAll([this.wallet.account?.address,t])}async isApprovedNFT({nftAddress:e,isOldErc721:t,tokenId:n,to:a=this.contracts.MultiSourceLoanV5.address}){if(t){let r=await this.contracts.OldERC721(e).read.approvedFor([n]);return M(r,a)}return this.isApprovedNFTForAll({nftAddress:e,to:a})}async approveNFTForAll({nftAddress:e,to:t=this.contracts.MultiSourceLoanV5.address}){let n=this.contracts.ERC721(e),a=await n.write.setApprovalForAll([t,!0]);return{txHash:a,waitTxInBlock:async()=>{let i=await this.bcClient.waitForTransactionReceipt({hash:a}),r=await n.createEventFilter.ApprovalForAll({}),s=u(i,r);if(s.length===0)throw new Error("ERC721 approval for all not set");return{...s[0].args,...i}}}}async approveNFT({nftAddress:e,isOldErc721:t,tokenId:n,to:a=this.contracts.MultiSourceLoanV5.address}){if(t){let i=this.contracts.OldERC721(e),r=await i.write.approve([a,n]);return{txHash:r,waitTxInBlock:async()=>{let s=await this.bcClient.waitForTransactionReceipt({hash:r}),o=await i.createEventFilter.Approval({}),y=u(s,o);if(y.length===0)throw new Error("ERC721 approval not set");return{...y[0].args,...s}}}}return this.approveNFTForAll({nftAddress:e,to:a})}async isApprovedToken({tokenAddress:e,amount:t,to:n=this.contracts.MultiSourceLoanV5.address}){return await this.contracts.ERC20(e).read.allowance([this.wallet.account?.address,n])>=t}async approveToken({tokenAddress:e,amount:t=it,to:n=this.contracts.MultiSourceLoanV5.address}){let a=this.contracts.ERC20(e),i=await a.write.approve([n,t]);return{txHash:i,waitTxInBlock:async()=>{let r=await this.bcClient.waitForTransactionReceipt({hash:i}),s=await a.createEventFilter.Approval({}),o=u(r,s);if(o.length===0)throw new Error("ERC20 approval not set");return{...o[0].args,...r}}}}async createUserVault({nfts:e,userVaultAddress:t=this.contracts.UserVaultV5.address}){return this.contracts.UserVault(t).createVault(e)}async depositUserVaultERC721s({userVaultAddress:e=this.contracts.UserVaultV5.address,...t}){return this.contracts.UserVault(e).depositERC721s(t)}async depositUserVaultOldERC721s({userVaultAddress:e=this.contracts.UserVaultV5.address,...t}){return this.contracts.UserVault(e).depositOldERC721s(t)}async burnUserVaultAndWithdraw({userVaultAddress:e=this.contracts.UserVaultV5.address,...t}){return this.contracts.UserVault(e).burnAndWithdraw(t)}};l(me,"Gondi");export{ve as FULFILLED,me as Gondi,Ee as LoanStatusType,ce as MarketplaceEnum,Be as OfferStatus,Te as OffersSortField,fe as Ordering,xe as REJECTED};
|
|
2153
|
+
`;function De(p){return{listNft(e,t){return p(wt,e,t)},unlistNft(e,t){return p(Ot,e,t)},generateCollectionOfferHash(e,t){return p(ht,e,t)},saveCollectionOffer(e,t){return p(_t,e,t)},hideOffer(e,t){return p(Lt,e,t)},generateSingleNftOfferHash(e,t){return p(Ct,e,t)},saveSingleNftOffer(e,t){return p(Pt,e,t)},unhideOffer(e,t){return p(Rt,e,t)},generateRenegotiationOfferHash(e,t){return p(Et,e,t)},hideRenegotiationOffer(e,t){return p(Bt,e,t)},saveRenegotiationOffer(e,t){return p(kt,e,t)},unhideRenegotiationOffer(e,t){return p(Nt,e,t)},hideSaleOffer(e,t){return p(Dt,e,t)},listBestBidsForNft(e,t){return p(Vt,e,t)},saveSignedSaleOffer(e,t){return p(Ht,e,t)},unhideSaleOffer(e,t){return p(Ut,e,t)},collections(e,t){return p(qt,e,t)},collectionsIdByContractAddress(e,t){return p(Kt,e,t)},collectionIdBySlug(e,t){return p(Wt,e,t)},listListings(e,t){return p($t,e,t)},listLoans(e,t){return p(Qt,e,t)},nftIdByContractAddressAndTokenId(e,t){return p(zt,e,t)},nftIdBySlugTokenId(e,t){return p(Gt,e,t)},ownedNfts(e,t){return p(Xt,e,t)},listOffers(e,t){return p(Zt,e,t)}}}l(De,"getSdk");var jt=["mutation","query","subscription"];function Ve(p){return De(l(async(t,n,a)=>{if(a={...a,context:{...a?.context,clientName:"lending"}},t.definitions.filter(r=>r.kind==="OperationDefinition"&&jt.includes(r.operation)).length!==1)throw new Error("DocumentNode passed to Apollo Client must contain single query or mutation");let i=t.definitions[0];if(i.kind!=="OperationDefinition")throw new Error("DocumentNode passed to Apollo Client must contain single query or mutation");switch(i.operation){case"mutation":{let r=await p.mutate({mutation:t,variables:n,...a,fetchPolicy:"no-cache"});if(r.errors)throw new Error(JSON.stringify(r.errors));if(r.data===void 0||r.data===null)throw new Error("No data presented in the GraphQL response");return r.data}case"query":{let r=await p.query({query:t,variables:n,...a});if(r.errors)throw new Error(JSON.stringify(r.errors));if(r.data===void 0||r.data===null)throw new Error("No data presented in the GraphQL response");return r.data}case"subscription":throw new Error("Subscription requests through SDK interface are not supported");default:throw new Error("Operation not supported")}},"requester"))}l(Ve,"getSdkApollo");import{decodeEventLog as Yt,encodeEventTopics as Jt,zeroAddress as en}from"viem";var x=en,F=`0x${"0".repeat(64)}`,He="0x0",k=5n*60n;function d(p,e){return p.logs.filter(t=>Jt(e)[0]==t.topics[0]).map(t=>({...Yt({abi:e.abi,data:t.data,topics:t.topics,eventName:e.eventName}),topics:t.topics})).filter(t=>t.eventName==e.eventName)}l(d,"filterLogs");var K=l(p=>p!=null,"isDefined");var ge=l(({endCursor:p,hasNextPage:e})=>e?{hasNextPage:e,cursor:p}:{hasNextPage:e,cursor:null},"mapPageInfo"),oe=l(()=>process.env.GONDI_URL??"https://api.gondi.xyz","apiDomain"),W=class{api;generateSingleNftOfferHash;generateCollectionOfferHash;generateRenegotiationOfferHash;nftIdBySlugTokenId;nftIdByContractAddressAndTokenId;collections;collectionIdBySlug;collectionsIdByContractAddress;listNft;unlistNft;ownedNfts;hideOffer;hideRenegotiationOffer;unhideOffer;unhideRenegotiationOffer;saveSignedSaleOffer;hideSaleOffer;unhideSaleOffer;listBestBidsForNft;constructor({apiClient:e,wallet:t}){let n=e??Re(t);this.api=Ve(n),this.generateSingleNftOfferHash=this.api.generateSingleNftOfferHash,this.generateCollectionOfferHash=this.api.generateCollectionOfferHash,this.generateRenegotiationOfferHash=this.api.generateRenegotiationOfferHash,this.nftIdBySlugTokenId=this.api.nftIdBySlugTokenId,this.nftIdByContractAddressAndTokenId=this.api.nftIdByContractAddressAndTokenId,this.collectionIdBySlug=this.api.collectionIdBySlug,this.collectionsIdByContractAddress=this.api.collectionsIdByContractAddress,this.collections=this.api.collections,this.listNft=this.api.listNft,this.unlistNft=this.api.unlistNft,this.ownedNfts=this.api.ownedNfts,this.saveSignedSaleOffer=this.api.saveSignedSaleOffer,this.hideOffer=this.api.hideOffer,this.hideRenegotiationOffer=this.api.hideRenegotiationOffer,this.unhideOffer=this.api.unhideOffer,this.unhideRenegotiationOffer=this.api.unhideRenegotiationOffer,this.hideSaleOffer=this.api.hideSaleOffer,this.unhideSaleOffer=this.api.unhideSaleOffer,this.listBestBidsForNft=this.api.listBestBidsForNft}async saveSingleNftOffer(e){let t={...e,borrowerAddress:e.borrowerAddress||x},n=await this.api.saveSingleNftOffer({offer:t}),a=n.offer.nft.collection?.contractData?.contractAddress||x;return{id:n.offer.id,nftCollateralAddress:a,nftCollateralTokenId:n.offer.nft.tokenId,...e}}async saveCollectionOffer(e){let t={...e,borrowerAddress:e.borrowerAddress||x},n=await this.api.saveCollectionOffer({offer:t}),a=n.offer.collection?.contractData?.contractAddress||x;return{id:n.offer.id,nftCollateralAddress:a,nftCollateralTokenId:0n,...e}}async saveRefinanceOffer(e){return{id:(await this.api.saveRenegotiationOffer({offer:e})).offer.id,...e}}async listOffers(e){let{result:{edges:t,pageInfo:n}}=await this.api.listOffers(e),a=t.map(i=>{let{__typename:r,...s}=i.node,o="collection"in s?s.collection.contractData?.contractAddress:s.nft.collection?.contractData?.contractAddress,y="collection"in s?0n:s.nft.tokenId;if(K(o))return{...s,type:r,lender:s.lenderAddress,borrower:s.borrowerAddress,signer:s.signerAddress,offerValidators:s.validators,nftCollateralAddress:o,nftCollateralTokenId:y}}).filter(K);return{...ge(n),offers:a}}async listLoans(e){let{loans:{edges:t,pageInfo:n}}=await this.api.listLoans(e),a=t.map(i=>{let{__typename:r,...s}=i.node;return{...s,type:r,contractAddress:s.address,nftCollateralTokenId:s.nft.tokenId,nftCollateralAddress:s.nft.collection?.contractData?.contractAddress,borrower:s.borrowerAddress,startTime:BigInt(Math.floor(s.startTime.getTime()/1e3)),source:s.sources.map(o=>({...o,lender:tn(o.lenderAddress),loanId:BigInt(o.loanId),startTime:BigInt(Math.floor(o.startTime.getTime()/1e3))}))}});return{...ge(n),loans:a}}async listListings(e){let{result:{edges:t,pageInfo:n}}=await this.api.listListings(e),a=t.map(i=>i.node);return{...ge(n),listings:a}}};l(W,"Api");import{getContract as Ae}from"viem";var Ue=[{constant:!1,inputs:[{name:"_uri",type:"string"},{name:"_editions",type:"uint256"},{name:"_salePrice",type:"uint256"}],name:"addNewTokenWithEditions",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{name:"_tokenId",type:"uint256"},{name:"_salePrice",type:"uint256"}],name:"setSalePrice",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[],name:"name",outputs:[{name:"_name",type:"string"}],payable:!1,stateMutability:"pure",type:"function"},{constant:!1,inputs:[{name:"_to",type:"address"},{name:"_tokenId",type:"uint256"}],name:"approve",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[],name:"totalSupply",outputs:[{name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[{name:"_tokenId",type:"uint256"}],name:"currentBidDetailsOfToken",outputs:[{name:"",type:"uint256"},{name:"",type:"address"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[{name:"_tokenId",type:"uint256"}],name:"approvedFor",outputs:[{name:"",type:"address"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{name:"_tokenId",type:"uint256"}],name:"acceptBid",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[{name:"_creator",type:"address"}],name:"isWhitelisted",outputs:[{name:"",type:"bool"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{name:"_tokenId",type:"uint256"}],name:"bid",outputs:[],payable:!0,stateMutability:"payable",type:"function"},{constant:!0,inputs:[{name:"_owner",type:"address"}],name:"tokensOf",outputs:[{name:"",type:"uint256[]"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{name:"_percentage",type:"uint256"}],name:"setMaintainerPercentage",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{name:"_creator",type:"address"}],name:"whitelistCreator",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[{name:"_tokenId",type:"uint256"}],name:"ownerOf",outputs:[{name:"",type:"address"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[{name:"_uri",type:"string"}],name:"originalTokenOfUri",outputs:[{name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[{name:"_owner",type:"address"}],name:"balanceOf",outputs:[{name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"owner",outputs:[{name:"",type:"address"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"symbol",outputs:[{name:"_symbol",type:"string"}],payable:!1,stateMutability:"pure",type:"function"},{constant:!1,inputs:[{name:"_tokenId",type:"uint256"}],name:"cancelBid",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[{name:"_tokenId",type:"uint256"}],name:"salePriceOfToken",outputs:[{name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{name:"_to",type:"address"},{name:"_tokenId",type:"uint256"}],name:"transfer",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{name:"_tokenId",type:"uint256"}],name:"takeOwnership",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!1,inputs:[{name:"_percentage",type:"uint256"}],name:"setCreatorPercentage",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[{name:"_tokenId",type:"uint256"}],name:"tokenURI",outputs:[{name:"",type:"string"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[{name:"_tokenId",type:"uint256"}],name:"creatorOfToken",outputs:[{name:"",type:"address"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{name:"_tokenId",type:"uint256"}],name:"buy",outputs:[],payable:!0,stateMutability:"payable",type:"function"},{constant:!1,inputs:[{name:"_uri",type:"string"}],name:"addNewToken",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{constant:!0,inputs:[],name:"creatorPercentage",outputs:[{name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!0,inputs:[],name:"maintainerPercentage",outputs:[{name:"",type:"uint256"}],payable:!1,stateMutability:"view",type:"function"},{constant:!1,inputs:[{name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],payable:!1,stateMutability:"nonpayable",type:"function"},{anonymous:!1,inputs:[{indexed:!0,name:"_creator",type:"address"}],name:"WhitelistCreator",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"_bidder",type:"address"},{indexed:!0,name:"_amount",type:"uint256"},{indexed:!0,name:"_tokenId",type:"uint256"}],name:"Bid",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"_bidder",type:"address"},{indexed:!0,name:"_seller",type:"address"},{indexed:!1,name:"_amount",type:"uint256"},{indexed:!0,name:"_tokenId",type:"uint256"}],name:"AcceptBid",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"_bidder",type:"address"},{indexed:!0,name:"_amount",type:"uint256"},{indexed:!0,name:"_tokenId",type:"uint256"}],name:"CancelBid",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"_buyer",type:"address"},{indexed:!0,name:"_seller",type:"address"},{indexed:!1,name:"_amount",type:"uint256"},{indexed:!0,name:"_tokenId",type:"uint256"}],name:"Sold",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"_tokenId",type:"uint256"},{indexed:!0,name:"_price",type:"uint256"}],name:"SalePriceSet",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"previousOwner",type:"address"},{indexed:!0,name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"_from",type:"address"},{indexed:!0,name:"_to",type:"address"},{indexed:!1,name:"_tokenId",type:"uint256"}],name:"Transfer",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"_owner",type:"address"},{indexed:!0,name:"_approved",type:"address"},{indexed:!1,name:"_tokenId",type:"uint256"}],name:"Approval",type:"event"}];var qe=[{stateMutability:"nonpayable",type:"constructor",inputs:[{name:"liquidationDistributor",internalType:"address",type:"address"},{name:"currencyManager",internalType:"address",type:"address"},{name:"collectionManager",internalType:"address",type:"address"},{name:"triggerFee",internalType:"uint256",type:"uint256"}]},{type:"error",inputs:[],name:"AddressZeroError"},{type:"error",inputs:[],name:"AuctionAlreadyInProgressError"},{type:"error",inputs:[{name:"_expiration",internalType:"uint96",type:"uint96"}],name:"AuctionNotOverError"},{type:"error",inputs:[{name:"_expiration",internalType:"uint96",type:"uint96"}],name:"AuctionOverError"},{type:"error",inputs:[],name:"CollectionNotWhitelistedError"},{type:"error",inputs:[],name:"CouldNotModifyValidLoansError"},{type:"error",inputs:[],name:"CurrencyNotWhitelistedError"},{type:"error",inputs:[],name:"InvalidHashAuctionError"},{type:"error",inputs:[{name:"triggerFee",internalType:"uint256",type:"uint256"}],name:"InvalidTriggerFee"},{type:"error",inputs:[{name:"_loan",internalType:"address",type:"address"}],name:"LoanNotAcceptedError"},{type:"error",inputs:[{name:"_minBid",internalType:"uint256",type:"uint256"}],name:"MinBidError"},{type:"error",inputs:[{name:"_owner",internalType:"address",type:"address"}],name:"NFTNotOwnedError"},{type:"error",inputs:[],name:"NoBidsError"},{type:"error",inputs:[],name:"ZeroAddressError"},{type:"event",anonymous:!1,inputs:[{name:"loanContract",internalType:"address",type:"address",indexed:!1},{name:"loanId",internalType:"uint256",type:"uint256",indexed:!1},{name:"auctionContract",internalType:"address",type:"address",indexed:!1},{name:"tokenId",internalType:"uint256",type:"uint256",indexed:!1},{name:"asset",internalType:"address",type:"address",indexed:!1},{name:"proceeds",internalType:"uint256",type:"uint256",indexed:!1},{name:"settler",internalType:"address",type:"address",indexed:!1},{name:"triggerFee",internalType:"uint256",type:"uint256",indexed:!1}],name:"AuctionSettled"},{type:"event",anonymous:!1,inputs:[{name:"collection",internalType:"address",type:"address",indexed:!1},{name:"tokenId",internalType:"uint256",type:"uint256",indexed:!1},{name:"newBidder",internalType:"address",type:"address",indexed:!1},{name:"bid",internalType:"uint256",type:"uint256",indexed:!1},{name:"loanAddress",internalType:"address",type:"address",indexed:!1},{name:"loanId",internalType:"uint256",type:"uint256",indexed:!1}],name:"BidPlaced"},{type:"event",anonymous:!1,inputs:[{name:"liquidationDistributor",internalType:"address",type:"address",indexed:!1}],name:"LiquidationDistributorUpdated"},{type:"event",anonymous:!1,inputs:[{name:"loan",internalType:"address",type:"address",indexed:!1}],name:"LoanContractAdded"},{type:"event",anonymous:!1,inputs:[{name:"loan",internalType:"address",type:"address",indexed:!1}],name:"LoanContractRemoved"},{type:"event",anonymous:!1,inputs:[{name:"collection",internalType:"address",type:"address",indexed:!1},{name:"tokenId",internalType:"uint256",type:"uint256",indexed:!1},{name:"auction",internalType:"struct IAuctionLoanLiquidator.Auction",type:"tuple",components:[{name:"loanAddress",internalType:"address",type:"address"},{name:"loanId",internalType:"uint256",type:"uint256"},{name:"highestBid",internalType:"uint256",type:"uint256"},{name:"triggerFee",internalType:"uint256",type:"uint256"},{name:"highestBidder",internalType:"address",type:"address"},{name:"duration",internalType:"uint96",type:"uint96"},{name:"asset",internalType:"address",type:"address"},{name:"startTime",internalType:"uint96",type:"uint96"},{name:"originator",internalType:"address",type:"address"},{name:"lastBidTime",internalType:"uint96",type:"uint96"}],indexed:!1}],name:"LoanLiquidationStarted"},{type:"event",anonymous:!1,inputs:[{name:"user",internalType:"address",type:"address",indexed:!0},{name:"newOwner",internalType:"address",type:"address",indexed:!0}],name:"OwnershipTransferred"},{type:"event",anonymous:!1,inputs:[{name:"triggerFee",internalType:"uint256",type:"uint256",indexed:!1}],name:"TriggerFeeUpdated"},{stateMutability:"view",type:"function",inputs:[],name:"MAX_TRIGGER_FEE",outputs:[{name:"",internalType:"uint256",type:"uint256"}]},{stateMutability:"view",type:"function",inputs:[],name:"MIN_INCREMENT_BPS",outputs:[{name:"",internalType:"uint256",type:"uint256"}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_loanContract",internalType:"address",type:"address"}],name:"addLoanContract",outputs:[]},{stateMutability:"view",type:"function",inputs:[{name:"_contract",internalType:"address",type:"address"},{name:"_tokenId",internalType:"uint256",type:"uint256"}],name:"getAuctionHash",outputs:[{name:"",internalType:"bytes32",type:"bytes32"}]},{stateMutability:"view",type:"function",inputs:[],name:"getLiquidationDistributor",outputs:[{name:"",internalType:"address",type:"address"}]},{stateMutability:"view",type:"function",inputs:[],name:"getTriggerFee",outputs:[{name:"",internalType:"uint256",type:"uint256"}]},{stateMutability:"view",type:"function",inputs:[],name:"getValidLoanContracts",outputs:[{name:"",internalType:"address[]",type:"address[]"}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_loanId",internalType:"uint256",type:"uint256"},{name:"_contract",internalType:"address",type:"address"},{name:"_tokenId",internalType:"uint256",type:"uint256"},{name:"_asset",internalType:"address",type:"address"},{name:"_duration",internalType:"uint96",type:"uint96"},{name:"_originator",internalType:"address",type:"address"}],name:"liquidateLoan",outputs:[{name:"",internalType:"bytes",type:"bytes"}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"",internalType:"address",type:"address"},{name:"",internalType:"address",type:"address"},{name:"",internalType:"uint256",type:"uint256"},{name:"",internalType:"bytes",type:"bytes"}],name:"onERC721Received",outputs:[{name:"",internalType:"bytes4",type:"bytes4"}]},{stateMutability:"view",type:"function",inputs:[],name:"owner",outputs:[{name:"",internalType:"address",type:"address"}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_contract",internalType:"address",type:"address"},{name:"_tokenId",internalType:"uint256",type:"uint256"},{name:"_auction",internalType:"struct IAuctionLoanLiquidator.Auction",type:"tuple",components:[{name:"loanAddress",internalType:"address",type:"address"},{name:"loanId",internalType:"uint256",type:"uint256"},{name:"highestBid",internalType:"uint256",type:"uint256"},{name:"triggerFee",internalType:"uint256",type:"uint256"},{name:"highestBidder",internalType:"address",type:"address"},{name:"duration",internalType:"uint96",type:"uint96"},{name:"asset",internalType:"address",type:"address"},{name:"startTime",internalType:"uint96",type:"uint96"},{name:"originator",internalType:"address",type:"address"},{name:"lastBidTime",internalType:"uint96",type:"uint96"}]},{name:"_bid",internalType:"uint256",type:"uint256"}],name:"placeBid",outputs:[{name:"",internalType:"struct IAuctionLoanLiquidator.Auction",type:"tuple",components:[{name:"loanAddress",internalType:"address",type:"address"},{name:"loanId",internalType:"uint256",type:"uint256"},{name:"highestBid",internalType:"uint256",type:"uint256"},{name:"triggerFee",internalType:"uint256",type:"uint256"},{name:"highestBidder",internalType:"address",type:"address"},{name:"duration",internalType:"uint96",type:"uint96"},{name:"asset",internalType:"address",type:"address"},{name:"startTime",internalType:"uint96",type:"uint96"},{name:"originator",internalType:"address",type:"address"},{name:"lastBidTime",internalType:"uint96",type:"uint96"}]}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_loanContract",internalType:"address",type:"address"}],name:"removeLoanContract",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_auction",internalType:"struct IAuctionLoanLiquidator.Auction",type:"tuple",components:[{name:"loanAddress",internalType:"address",type:"address"},{name:"loanId",internalType:"uint256",type:"uint256"},{name:"highestBid",internalType:"uint256",type:"uint256"},{name:"triggerFee",internalType:"uint256",type:"uint256"},{name:"highestBidder",internalType:"address",type:"address"},{name:"duration",internalType:"uint96",type:"uint96"},{name:"asset",internalType:"address",type:"address"},{name:"startTime",internalType:"uint96",type:"uint96"},{name:"originator",internalType:"address",type:"address"},{name:"lastBidTime",internalType:"uint96",type:"uint96"}]},{name:"_loan",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"source",internalType:"struct IMultiSourceLoan.Source[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]}]}],name:"settleAuction",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"newOwner",internalType:"address",type:"address"}],name:"transferOwnership",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"__liquidationDistributor",internalType:"address",type:"address"}],name:"updateLiquidationDistributor",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"triggerFee",internalType:"uint256",type:"uint256"}],name:"updateTriggerFee",outputs:[]}];var Ke=[{type:"event",anonymous:!1,inputs:[{name:"owner",internalType:"address",type:"address",indexed:!0},{name:"spender",internalType:"address",type:"address",indexed:!0},{name:"amount",internalType:"uint256",type:"uint256",indexed:!1}],name:"Approval"},{type:"event",anonymous:!1,inputs:[{name:"from",internalType:"address",type:"address",indexed:!0},{name:"to",internalType:"address",type:"address",indexed:!0},{name:"amount",internalType:"uint256",type:"uint256",indexed:!1}],name:"Transfer"},{stateMutability:"view",type:"function",inputs:[],name:"DOMAIN_SEPARATOR",outputs:[{name:"",internalType:"bytes32",type:"bytes32"}]},{stateMutability:"view",type:"function",inputs:[{name:"",internalType:"address",type:"address"},{name:"",internalType:"address",type:"address"}],name:"allowance",outputs:[{name:"",internalType:"uint256",type:"uint256"}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"spender",internalType:"address",type:"address"},{name:"amount",internalType:"uint256",type:"uint256"}],name:"approve",outputs:[{name:"",internalType:"bool",type:"bool"}]},{stateMutability:"view",type:"function",inputs:[{name:"",internalType:"address",type:"address"}],name:"balanceOf",outputs:[{name:"",internalType:"uint256",type:"uint256"}]},{stateMutability:"view",type:"function",inputs:[],name:"decimals",outputs:[{name:"",internalType:"uint8",type:"uint8"}]},{stateMutability:"view",type:"function",inputs:[],name:"name",outputs:[{name:"",internalType:"string",type:"string"}]},{stateMutability:"view",type:"function",inputs:[{name:"",internalType:"address",type:"address"}],name:"nonces",outputs:[{name:"",internalType:"uint256",type:"uint256"}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"owner",internalType:"address",type:"address"},{name:"spender",internalType:"address",type:"address"},{name:"value",internalType:"uint256",type:"uint256"},{name:"deadline",internalType:"uint256",type:"uint256"},{name:"v",internalType:"uint8",type:"uint8"},{name:"r",internalType:"bytes32",type:"bytes32"},{name:"s",internalType:"bytes32",type:"bytes32"}],name:"permit",outputs:[]},{stateMutability:"view",type:"function",inputs:[],name:"symbol",outputs:[{name:"",internalType:"string",type:"string"}]},{stateMutability:"view",type:"function",inputs:[],name:"totalSupply",outputs:[{name:"",internalType:"uint256",type:"uint256"}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"to",internalType:"address",type:"address"},{name:"amount",internalType:"uint256",type:"uint256"}],name:"transfer",outputs:[{name:"",internalType:"bool",type:"bool"}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"from",internalType:"address",type:"address"},{name:"to",internalType:"address",type:"address"},{name:"amount",internalType:"uint256",type:"uint256"}],name:"transferFrom",outputs:[{name:"",internalType:"bool",type:"bool"}]}],ye=[{type:"event",anonymous:!1,inputs:[{name:"owner",internalType:"address",type:"address",indexed:!0},{name:"spender",internalType:"address",type:"address",indexed:!0},{name:"id",internalType:"uint256",type:"uint256",indexed:!0}],name:"Approval"},{type:"event",anonymous:!1,inputs:[{name:"owner",internalType:"address",type:"address",indexed:!0},{name:"operator",internalType:"address",type:"address",indexed:!0},{name:"approved",internalType:"bool",type:"bool",indexed:!1}],name:"ApprovalForAll"},{type:"event",anonymous:!1,inputs:[{name:"from",internalType:"address",type:"address",indexed:!0},{name:"to",internalType:"address",type:"address",indexed:!0},{name:"id",internalType:"uint256",type:"uint256",indexed:!0}],name:"Transfer"},{stateMutability:"nonpayable",type:"function",inputs:[{name:"spender",internalType:"address",type:"address"},{name:"id",internalType:"uint256",type:"uint256"}],name:"approve",outputs:[]},{stateMutability:"view",type:"function",inputs:[{name:"owner",internalType:"address",type:"address"}],name:"balanceOf",outputs:[{name:"",internalType:"uint256",type:"uint256"}]},{stateMutability:"view",type:"function",inputs:[{name:"",internalType:"uint256",type:"uint256"}],name:"getApproved",outputs:[{name:"",internalType:"address",type:"address"}]},{stateMutability:"view",type:"function",inputs:[{name:"",internalType:"address",type:"address"},{name:"",internalType:"address",type:"address"}],name:"isApprovedForAll",outputs:[{name:"",internalType:"bool",type:"bool"}]},{stateMutability:"view",type:"function",inputs:[],name:"name",outputs:[{name:"",internalType:"string",type:"string"}]},{stateMutability:"view",type:"function",inputs:[{name:"id",internalType:"uint256",type:"uint256"}],name:"ownerOf",outputs:[{name:"owner",internalType:"address",type:"address"}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"from",internalType:"address",type:"address"},{name:"to",internalType:"address",type:"address"},{name:"id",internalType:"uint256",type:"uint256"}],name:"safeTransferFrom",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"from",internalType:"address",type:"address"},{name:"to",internalType:"address",type:"address"},{name:"id",internalType:"uint256",type:"uint256"},{name:"data",internalType:"bytes",type:"bytes"}],name:"safeTransferFrom",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"operator",internalType:"address",type:"address"},{name:"approved",internalType:"bool",type:"bool"}],name:"setApprovalForAll",outputs:[]},{stateMutability:"view",type:"function",inputs:[{name:"interfaceId",internalType:"bytes4",type:"bytes4"}],name:"supportsInterface",outputs:[{name:"",internalType:"bool",type:"bool"}]},{stateMutability:"view",type:"function",inputs:[],name:"symbol",outputs:[{name:"",internalType:"string",type:"string"}]},{stateMutability:"view",type:"function",inputs:[{name:"id",internalType:"uint256",type:"uint256"}],name:"tokenURI",outputs:[{name:"",internalType:"string",type:"string"}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"from",internalType:"address",type:"address"},{name:"to",internalType:"address",type:"address"},{name:"id",internalType:"uint256",type:"uint256"}],name:"transferFrom",outputs:[]}];var We=[{stateMutability:"nonpayable",type:"constructor",inputs:[{name:"_multiSourceLoanAddress",internalType:"address",type:"address"},{name:"_marketplaceContracts",internalType:"address",type:"address"},{name:"_wethAddress",internalType:"address payable",type:"address"},{name:"_punkMarketAddress",internalType:"address payable",type:"address"},{name:"_wrappedPunkAddress",internalType:"address payable",type:"address"},{name:"_seaportAddress",internalType:"address payable",type:"address"}]},{type:"error",inputs:[],name:"AddressZeroError"},{type:"error",inputs:[],name:"CouldNotReturnEthError"},{type:"error",inputs:[],name:"InvalidAddressUpdateError"},{type:"error",inputs:[],name:"InvalidCallbackError"},{type:"error",inputs:[],name:"MarketplaceAddressNotWhitelisted"},{type:"error",inputs:[],name:"OnlyMultiSourceLoanError"},{type:"error",inputs:[],name:"OnlyWethSupportedError"},{type:"event",anonymous:!1,inputs:[{name:"_loanIds",internalType:"uint256[]",type:"uint256[]",indexed:!1}],name:"BNPLLoansStarted"},{type:"event",anonymous:!1,inputs:[{name:"_newAddress",internalType:"address",type:"address",indexed:!1}],name:"MultiSourceLoanPendingUpdate"},{type:"event",anonymous:!1,inputs:[{name:"_newAddress",internalType:"address",type:"address",indexed:!1}],name:"MultiSourceLoanUpdated"},{type:"event",anonymous:!1,inputs:[{name:"user",internalType:"address",type:"address",indexed:!0},{name:"newOwner",internalType:"address",type:"address",indexed:!0}],name:"OwnershipTransferred"},{type:"event",anonymous:!1,inputs:[{name:"_newAddress",internalType:"address",type:"address",indexed:!1}],name:"SeaportPendingUpdate"},{type:"event",anonymous:!1,inputs:[{name:"_newAddress",internalType:"address",type:"address",indexed:!1}],name:"SeaportUpdated"},{type:"event",anonymous:!1,inputs:[{name:"_loanIds",internalType:"uint256[]",type:"uint256[]",indexed:!1}],name:"SellAndRepayExecuted"},{stateMutability:"payable",type:"fallback"},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_loan",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"source",internalType:"struct IMultiSourceLoan.Source[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]}]},{name:"_executionData",internalType:"bytes",type:"bytes"}],name:"afterNFTTransfer",outputs:[{name:"",internalType:"bytes4",type:"bytes4"}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_loan",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"source",internalType:"struct IMultiSourceLoan.Source[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]}]},{name:"_fee",internalType:"uint256",type:"uint256"},{name:"_executionData",internalType:"bytes",type:"bytes"}],name:"afterPrincipalTransfer",outputs:[{name:"",internalType:"bytes4",type:"bytes4"}]},{stateMutability:"payable",type:"function",inputs:[{name:"_executionData",internalType:"bytes[]",type:"bytes[]"}],name:"buy",outputs:[{name:"",internalType:"uint256[]",type:"uint256[]"},{name:"",internalType:"struct IMultiSourceLoan.Loan[]",type:"tuple[]",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"source",internalType:"struct IMultiSourceLoan.Source[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]}]}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_newAddress",internalType:"address",type:"address"}],name:"finalUpdateMultiSourceLoanAddress",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_newAddress",internalType:"address",type:"address"}],name:"finalUpdateSeaportAddress",outputs:[]},{stateMutability:"view",type:"function",inputs:[],name:"getMultiSourceLoanAddress",outputs:[{name:"",internalType:"address",type:"address"}]},{stateMutability:"view",type:"function",inputs:[],name:"getSeaportAddress",outputs:[{name:"",internalType:"address",type:"address"}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"",internalType:"address",type:"address"},{name:"",internalType:"address",type:"address"},{name:"",internalType:"uint256",type:"uint256"},{name:"",internalType:"bytes",type:"bytes"}],name:"onERC721Received",outputs:[{name:"",internalType:"bytes4",type:"bytes4"}]},{stateMutability:"view",type:"function",inputs:[],name:"owner",outputs:[{name:"",internalType:"address",type:"address"}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_executionData",internalType:"bytes[]",type:"bytes[]"}],name:"sell",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"newOwner",internalType:"address",type:"address"}],name:"transferOwnership",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_newAddress",internalType:"address",type:"address"}],name:"updateMultiSourceLoanAddressFirst",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_newAddress",internalType:"address",type:"address"}],name:"updateSeaportAddressFirst",outputs:[]},{stateMutability:"payable",type:"receive"}];var h=[{stateMutability:"nonpayable",type:"constructor",inputs:[{name:"loanLiquidator",internalType:"address",type:"address"},{name:"protocolFee",internalType:"struct IBaseLoan.ProtocolFee",type:"tuple",components:[{name:"recipient",internalType:"address",type:"address"},{name:"fraction",internalType:"uint256",type:"uint256"}]},{name:"currencyManager",internalType:"address",type:"address"},{name:"collectionManager",internalType:"address",type:"address"},{name:"maxSources",internalType:"uint256",type:"uint256"},{name:"minLockPeriod",internalType:"uint256",type:"uint256"},{name:"delegateRegistry",internalType:"address",type:"address"},{name:"flashActionContract",internalType:"address",type:"address"}]},{type:"error",inputs:[],name:"AddressZeroError"},{type:"error",inputs:[{name:"_lender",internalType:"address",type:"address"},{name:"_offerId",internalType:"uint256",type:"uint256"}],name:"CancelledOrExecutedOfferError"},{type:"error",inputs:[{name:"_lender",internalType:"address",type:"address"},{name:"_renegotiationId",internalType:"uint256",type:"uint256"}],name:"CancelledRenegotiationOfferError"},{type:"error",inputs:[],name:"CannotLiquidateError"},{type:"error",inputs:[],name:"CollectionNotWhitelistedError"},{type:"error",inputs:[],name:"CurrencyNotWhitelistedError"},{type:"error",inputs:[],name:"ECDSAInvalidSignature"},{type:"error",inputs:[{name:"length",internalType:"uint256",type:"uint256"}],name:"ECDSAInvalidSignatureLength"},{type:"error",inputs:[{name:"s",internalType:"bytes32",type:"bytes32"}],name:"ECDSAInvalidSignatureS"},{type:"error",inputs:[{name:"_expirationTime",internalType:"uint256",type:"uint256"}],name:"ExpiredOfferError"},{type:"error",inputs:[{name:"_expirationTime",internalType:"uint256",type:"uint256"}],name:"ExpiredRenegotiationOfferError"},{type:"error",inputs:[],name:"ExtensionNotAvailableError"},{type:"error",inputs:[{name:"_amount",internalType:"uint256",type:"uint256"},{name:"_principalAmount",internalType:"uint256",type:"uint256"}],name:"InvalidAmountError"},{type:"error",inputs:[],name:"InvalidBorrowerError"},{type:"error",inputs:[],name:"InvalidCallbackError"},{type:"error",inputs:[],name:"InvalidCollateralIdError"},{type:"error",inputs:[],name:"InvalidDurationError"},{type:"error",inputs:[],name:"InvalidLenderError"},{type:"error",inputs:[],name:"InvalidLiquidationError"},{type:"error",inputs:[{name:"_loanId",internalType:"uint256",type:"uint256"}],name:"InvalidLoanError"},{type:"error",inputs:[],name:"InvalidMethodError"},{type:"error",inputs:[{name:"_fraction",internalType:"uint256",type:"uint256"}],name:"InvalidProtocolFeeError"},{type:"error",inputs:[],name:"InvalidRenegotiationOfferError"},{type:"error",inputs:[],name:"InvalidSignatureError"},{type:"error",inputs:[],name:"InvalidValueError"},{type:"error",inputs:[],name:"LengthMismatchError"},{type:"error",inputs:[{name:"_liquidator",internalType:"address",type:"address"}],name:"LiquidatorOnlyError"},{type:"error",inputs:[],name:"LoanExpiredError"},{type:"error",inputs:[{name:"_expirationTime",internalType:"uint256",type:"uint256"}],name:"LoanNotDueError"},{type:"error",inputs:[{name:"_lender",internalType:"address",type:"address"},{name:"_newMinOfferId",internalType:"uint256",type:"uint256"},{name:"_minOfferId",internalType:"uint256",type:"uint256"}],name:"LowOfferIdError"},{type:"error",inputs:[{name:"_lender",internalType:"address",type:"address"},{name:"_newMinRenegotiationOfferId",internalType:"uint256",type:"uint256"},{name:"_minOfferId",internalType:"uint256",type:"uint256"}],name:"LowRenegotiationOfferIdError"},{type:"error",inputs:[],name:"MaxCapacityExceededError"},{type:"error",inputs:[{name:"minLockPeriod",internalType:"uint256",type:"uint256"}],name:"MinLockPeriodTooHighError"},{type:"error",inputs:[{name:"i",internalType:"uint256",type:"uint256"},{name:"returndata",internalType:"bytes",type:"bytes"}],name:"MulticallFailed"},{type:"error",inputs:[],name:"NFTNotReturnedError"},{type:"error",inputs:[],name:"NotStrictlyImprovedError"},{type:"error",inputs:[],name:"OnlyBorrowerCallableError"},{type:"error",inputs:[],name:"OnlyLenderCallableError"},{type:"error",inputs:[],name:"OnlyLenderOrBorrowerCallableError"},{type:"error",inputs:[],name:"PartialOfferCannotChangeDurationError"},{type:"error",inputs:[],name:"PartialOfferCannotHaveFeeError"},{type:"error",inputs:[],name:"RefinanceFullError"},{type:"error",inputs:[{name:"minTimestamp",internalType:"uint256",type:"uint256"}],name:"SourceCannotBeRefinancedError"},{type:"error",inputs:[{name:"sourcePrincipal",internalType:"uint256",type:"uint256"},{name:"loanPrincipal",internalType:"uint256",type:"uint256"}],name:"TargetPrincipalTooLowError"},{type:"error",inputs:[{name:"_pendingProtocolFeeSetTime",internalType:"uint256",type:"uint256"}],name:"TooEarlyError"},{type:"error",inputs:[{name:"sources",internalType:"uint256",type:"uint256"}],name:"TooManySourcesError"},{type:"error",inputs:[],name:"ZeroDurationError"},{type:"error",inputs:[],name:"ZeroInterestError"},{type:"event",anonymous:!1,inputs:[{name:"lender",internalType:"address",type:"address",indexed:!1},{name:"minOfferId",internalType:"uint256",type:"uint256",indexed:!1}],name:"AllOffersCancelled"},{type:"event",anonymous:!1,inputs:[{name:"lender",internalType:"address",type:"address",indexed:!1},{name:"minRenegotiationId",internalType:"uint256",type:"uint256",indexed:!1}],name:"AllRenegotiationOffersCancelled"},{type:"event",anonymous:!1,inputs:[{name:"borrower",internalType:"address",type:"address",indexed:!1},{name:"offerId",internalType:"uint256",type:"uint256",indexed:!1}],name:"BorrowerOfferCancelled"},{type:"event",anonymous:!1,inputs:[{name:"newdelegateRegistry",internalType:"address",type:"address",indexed:!1}],name:"DelegateRegistryUpdated"},{type:"event",anonymous:!1,inputs:[{name:"loanId",internalType:"uint256",type:"uint256",indexed:!1},{name:"delegate",internalType:"address",type:"address",indexed:!1},{name:"value",internalType:"bool",type:"bool",indexed:!1}],name:"Delegated"},{type:"event",anonymous:!1,inputs:[{name:"newFlashActionContract",internalType:"address",type:"address",indexed:!1}],name:"FlashActionContractUpdated"},{type:"event",anonymous:!1,inputs:[{name:"loanId",internalType:"uint256",type:"uint256",indexed:!1},{name:"target",internalType:"address",type:"address",indexed:!1},{name:"data",internalType:"bytes",type:"bytes",indexed:!1}],name:"FlashActionExecuted"},{type:"event",anonymous:!1,inputs:[{name:"minimum",internalType:"struct IBaseLoan.ImprovementMinimum",type:"tuple",components:[{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"interest",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"}],indexed:!1}],name:"ImprovementMinimumUpdated"},{type:"event",anonymous:!1,inputs:[{name:"newDuration",internalType:"uint256",type:"uint256",indexed:!1}],name:"LiquidationAuctionDurationUpdated"},{type:"event",anonymous:!1,inputs:[{name:"liquidator",internalType:"address",type:"address",indexed:!1}],name:"LiquidationContractUpdated"},{type:"event",anonymous:!1,inputs:[{name:"loanId",internalType:"uint256",type:"uint256",indexed:!1},{name:"offerId",internalType:"uint256",type:"uint256",indexed:!1},{name:"loan",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"source",internalType:"struct IMultiSourceLoan.Source[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]}],indexed:!1},{name:"lender",internalType:"address",type:"address",indexed:!1},{name:"borrower",internalType:"address",type:"address",indexed:!1},{name:"fee",internalType:"uint256",type:"uint256",indexed:!1}],name:"LoanEmitted"},{type:"event",anonymous:!1,inputs:[{name:"oldLoanId",internalType:"uint256",type:"uint256",indexed:!1},{name:"newLoanId",internalType:"uint256",type:"uint256",indexed:!1},{name:"loan",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"source",internalType:"struct IMultiSourceLoan.Source[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]}],indexed:!1},{name:"_extension",internalType:"uint256",type:"uint256",indexed:!1}],name:"LoanExtended"},{type:"event",anonymous:!1,inputs:[{name:"loanId",internalType:"uint256",type:"uint256",indexed:!1}],name:"LoanForeclosed"},{type:"event",anonymous:!1,inputs:[{name:"loanId",internalType:"uint256",type:"uint256",indexed:!1}],name:"LoanLiquidated"},{type:"event",anonymous:!1,inputs:[{name:"renegotiationId",internalType:"uint256",type:"uint256",indexed:!1},{name:"oldLoanId",internalType:"uint256",type:"uint256",indexed:!1},{name:"newLoanId",internalType:"uint256",type:"uint256",indexed:!1},{name:"loan",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"source",internalType:"struct IMultiSourceLoan.Source[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]}],indexed:!1},{name:"fee",internalType:"uint256",type:"uint256",indexed:!1}],name:"LoanRefinanced"},{type:"event",anonymous:!1,inputs:[{name:"loanId",internalType:"uint256",type:"uint256",indexed:!1},{name:"totalRepayment",internalType:"uint256",type:"uint256",indexed:!1},{name:"fee",internalType:"uint256",type:"uint256",indexed:!1}],name:"LoanRepaid"},{type:"event",anonymous:!1,inputs:[{name:"loanId",internalType:"uint256",type:"uint256",indexed:!1},{name:"liquidator",internalType:"address",type:"address",indexed:!1}],name:"LoanSentToLiquidator"},{type:"event",anonymous:!1,inputs:[{name:"newMax",internalType:"uint256",type:"uint256",indexed:!1}],name:"MaxSourcesUpdated"},{type:"event",anonymous:!1,inputs:[{name:"minLockPeriod",internalType:"uint256",type:"uint256",indexed:!1}],name:"MinLockPeriodUpdated"},{type:"event",anonymous:!1,inputs:[{name:"lender",internalType:"address",type:"address",indexed:!1},{name:"offerId",internalType:"uint256",type:"uint256",indexed:!1}],name:"OfferCancelled"},{type:"event",anonymous:!1,inputs:[{name:"user",internalType:"address",type:"address",indexed:!0},{name:"newOwner",internalType:"address",type:"address",indexed:!0}],name:"OwnershipTransferred"},{type:"event",anonymous:!1,inputs:[{name:"fee",internalType:"struct IBaseLoan.ProtocolFee",type:"tuple",components:[{name:"recipient",internalType:"address",type:"address"},{name:"fraction",internalType:"uint256",type:"uint256"}],indexed:!1}],name:"ProtocolFeePendingUpdate"},{type:"event",anonymous:!1,inputs:[{name:"fee",internalType:"struct IBaseLoan.ProtocolFee",type:"tuple",components:[{name:"recipient",internalType:"address",type:"address"},{name:"fraction",internalType:"uint256",type:"uint256"}],indexed:!1}],name:"ProtocolFeeUpdated"},{type:"event",anonymous:!1,inputs:[{name:"lender",internalType:"address",type:"address",indexed:!1},{name:"renegotiationId",internalType:"uint256",type:"uint256",indexed:!1}],name:"RenegotiationOfferCancelled"},{type:"event",anonymous:!1,inputs:[{name:"delegate",internalType:"address",type:"address",indexed:!1},{name:"collection",internalType:"address",type:"address",indexed:!1},{name:"tokenId",internalType:"uint256",type:"uint256",indexed:!1}],name:"RevokeDelegate"},{type:"event",anonymous:!1,inputs:[{name:"contractAdded",internalType:"address",type:"address",indexed:!1},{name:"tax",internalType:"struct WithCallbacks.Taxes",type:"tuple",components:[{name:"buyTax",internalType:"uint128",type:"uint128"},{name:"sellTax",internalType:"uint128",type:"uint128"}],indexed:!1}],name:"WhitelistedCallbackContractAdded"},{type:"event",anonymous:!1,inputs:[{name:"contractRemoved",internalType:"address",type:"address",indexed:!1}],name:"WhitelistedCallbackContractRemoved"},{stateMutability:"view",type:"function",inputs:[],name:"DOMAIN_SEPARATOR",outputs:[{name:"",internalType:"bytes32",type:"bytes32"}]},{stateMutability:"view",type:"function",inputs:[],name:"FEE_UPDATE_NOTICE",outputs:[{name:"",internalType:"uint256",type:"uint256"}]},{stateMutability:"view",type:"function",inputs:[],name:"INITIAL_DOMAIN_SEPARATOR",outputs:[{name:"",internalType:"bytes32",type:"bytes32"}]},{stateMutability:"view",type:"function",inputs:[],name:"MAX_PROTOCOL_FEE",outputs:[{name:"",internalType:"uint256",type:"uint256"}]},{stateMutability:"view",type:"function",inputs:[],name:"MIN_AUCTION_DURATION",outputs:[{name:"",internalType:"uint48",type:"uint48"}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_contract",internalType:"address",type:"address"},{name:"_tax",internalType:"struct WithCallbacks.Taxes",type:"tuple",components:[{name:"buyTax",internalType:"uint128",type:"uint128"},{name:"sellTax",internalType:"uint128",type:"uint128"}]}],name:"addWhitelistedCallbackContract",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_minOfferId",internalType:"uint256",type:"uint256"}],name:"cancelAllOffers",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_minRenegotiationId",internalType:"uint256",type:"uint256"}],name:"cancelAllRenegotiationOffers",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_offerId",internalType:"uint256",type:"uint256"}],name:"cancelOffer",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_offerIds",internalType:"uint256[]",type:"uint256[]"}],name:"cancelOffers",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_renegotiationId",internalType:"uint256",type:"uint256"}],name:"cancelRenegotiationOffer",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_renegotiationIds",internalType:"uint256[]",type:"uint256[]"}],name:"cancelRenegotiationOffers",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_loanId",internalType:"uint256",type:"uint256"},{name:"loan",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"source",internalType:"struct IMultiSourceLoan.Source[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]}]},{name:"_delegate",internalType:"address",type:"address"},{name:"_rights",internalType:"bytes32",type:"bytes32"},{name:"_value",internalType:"bool",type:"bool"}],name:"delegate",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_executionData",internalType:"struct IMultiSourceLoan.LoanExecutionData",type:"tuple",components:[{name:"executionData",internalType:"struct IBaseLoan.ExecutionData",type:"tuple",components:[{name:"offer",internalType:"struct IBaseLoan.LoanOffer",type:"tuple",components:[{name:"offerId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"fee",internalType:"uint256",type:"uint256"},{name:"borrower",internalType:"address",type:"address"},{name:"capacity",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"},{name:"expirationTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"validators",internalType:"struct IBaseLoan.OfferValidator[]",type:"tuple[]",components:[{name:"validator",internalType:"address",type:"address"},{name:"arguments",internalType:"bytes",type:"bytes"}]}]},{name:"tokenId",internalType:"uint256",type:"uint256"},{name:"amount",internalType:"uint256",type:"uint256"},{name:"expirationTime",internalType:"uint256",type:"uint256"},{name:"callbackData",internalType:"bytes",type:"bytes"}]},{name:"lender",internalType:"address",type:"address"},{name:"borrower",internalType:"address",type:"address"},{name:"lenderOfferSignature",internalType:"bytes",type:"bytes"},{name:"borrowerOfferSignature",internalType:"bytes",type:"bytes"}]}],name:"emitLoan",outputs:[{name:"",internalType:"uint256",type:"uint256"},{name:"",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"source",internalType:"struct IMultiSourceLoan.Source[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]}]}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_loanId",internalType:"uint256",type:"uint256"},{name:"_loan",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"source",internalType:"struct IMultiSourceLoan.Source[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]}]},{name:"_target",internalType:"address",type:"address"},{name:"_data",internalType:"bytes",type:"bytes"}],name:"executeFlashAction",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_loanId",internalType:"uint256",type:"uint256"},{name:"_loan",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"source",internalType:"struct IMultiSourceLoan.Source[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]}]},{name:"_extension",internalType:"uint256",type:"uint256"}],name:"extendLoan",outputs:[{name:"",internalType:"uint256",type:"uint256"},{name:"",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"source",internalType:"struct IMultiSourceLoan.Source[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]}]}]},{stateMutability:"view",type:"function",inputs:[],name:"getCollectionManager",outputs:[{name:"",internalType:"address",type:"address"}]},{stateMutability:"view",type:"function",inputs:[],name:"getCurrencyManager",outputs:[{name:"",internalType:"address",type:"address"}]},{stateMutability:"view",type:"function",inputs:[],name:"getDelegateRegistry",outputs:[{name:"",internalType:"address",type:"address"}]},{stateMutability:"view",type:"function",inputs:[],name:"getFlashActionContract",outputs:[{name:"",internalType:"address",type:"address"}]},{stateMutability:"view",type:"function",inputs:[],name:"getImprovementMinimum",outputs:[{name:"",internalType:"struct IBaseLoan.ImprovementMinimum",type:"tuple",components:[{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"interest",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"}]}]},{stateMutability:"view",type:"function",inputs:[],name:"getLiquidationAuctionDuration",outputs:[{name:"",internalType:"uint48",type:"uint48"}]},{stateMutability:"view",type:"function",inputs:[],name:"getLiquidator",outputs:[{name:"",internalType:"address",type:"address"}]},{stateMutability:"view",type:"function",inputs:[{name:"_loanId",internalType:"uint256",type:"uint256"}],name:"getLoanHash",outputs:[{name:"",internalType:"bytes32",type:"bytes32"}]},{stateMutability:"view",type:"function",inputs:[],name:"getMaxSources",outputs:[{name:"",internalType:"uint256",type:"uint256"}]},{stateMutability:"view",type:"function",inputs:[],name:"getMinLockPeriod",outputs:[{name:"",internalType:"uint256",type:"uint256"}]},{stateMutability:"view",type:"function",inputs:[{name:"_loanPrincipal",internalType:"uint256",type:"uint256"}],name:"getMinSourcePrincipal",outputs:[{name:"",internalType:"uint256",type:"uint256"}]},{stateMutability:"view",type:"function",inputs:[],name:"getPendingProtocolFee",outputs:[{name:"",internalType:"struct IBaseLoan.ProtocolFee",type:"tuple",components:[{name:"recipient",internalType:"address",type:"address"},{name:"fraction",internalType:"uint256",type:"uint256"}]}]},{stateMutability:"view",type:"function",inputs:[],name:"getPendingProtocolFeeSetTime",outputs:[{name:"",internalType:"uint256",type:"uint256"}]},{stateMutability:"view",type:"function",inputs:[],name:"getProtocolFee",outputs:[{name:"",internalType:"struct IBaseLoan.ProtocolFee",type:"tuple",components:[{name:"recipient",internalType:"address",type:"address"},{name:"fraction",internalType:"uint256",type:"uint256"}]}]},{stateMutability:"view",type:"function",inputs:[],name:"getTotalLoansIssued",outputs:[{name:"",internalType:"uint256",type:"uint256"}]},{stateMutability:"view",type:"function",inputs:[{name:"_lender",internalType:"address",type:"address"},{name:"_offerId",internalType:"uint256",type:"uint256"}],name:"getUsedCapacity",outputs:[{name:"",internalType:"uint256",type:"uint256"}]},{stateMutability:"view",type:"function",inputs:[{name:"",internalType:"address",type:"address"},{name:"",internalType:"uint256",type:"uint256"}],name:"isBorrowerOfferCancelled",outputs:[{name:"",internalType:"bool",type:"bool"}]},{stateMutability:"view",type:"function",inputs:[{name:"",internalType:"address",type:"address"},{name:"",internalType:"uint256",type:"uint256"}],name:"isOfferCancelled",outputs:[{name:"",internalType:"bool",type:"bool"}]},{stateMutability:"view",type:"function",inputs:[{name:"",internalType:"address",type:"address"},{name:"",internalType:"uint256",type:"uint256"}],name:"isRenegotiationOfferCancelled",outputs:[{name:"",internalType:"bool",type:"bool"}]},{stateMutability:"view",type:"function",inputs:[{name:"_contract",internalType:"address",type:"address"}],name:"isWhitelistedCallbackContract",outputs:[{name:"",internalType:"bool",type:"bool"}]},{stateMutability:"view",type:"function",inputs:[{name:"",internalType:"address",type:"address"}],name:"lenderMinRenegotiationOfferId",outputs:[{name:"",internalType:"uint256",type:"uint256"}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_loanId",internalType:"uint256",type:"uint256"},{name:"_loan",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"source",internalType:"struct IMultiSourceLoan.Source[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]}]}],name:"liquidateLoan",outputs:[{name:"",internalType:"bytes",type:"bytes"}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_loanId",internalType:"uint256",type:"uint256"},{name:"_loan",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"source",internalType:"struct IMultiSourceLoan.Source[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]}]}],name:"loanLiquidated",outputs:[]},{stateMutability:"view",type:"function",inputs:[{name:"",internalType:"address",type:"address"}],name:"minOfferId",outputs:[{name:"",internalType:"uint256",type:"uint256"}]},{stateMutability:"payable",type:"function",inputs:[{name:"data",internalType:"bytes[]",type:"bytes[]"}],name:"multicall",outputs:[{name:"results",internalType:"bytes[]",type:"bytes[]"}]},{stateMutability:"view",type:"function",inputs:[],name:"name",outputs:[{name:"",internalType:"string",type:"string"}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"",internalType:"address",type:"address"},{name:"",internalType:"address",type:"address"},{name:"",internalType:"uint256",type:"uint256"},{name:"",internalType:"bytes",type:"bytes"}],name:"onERC721Received",outputs:[{name:"",internalType:"bytes4",type:"bytes4"}]},{stateMutability:"view",type:"function",inputs:[],name:"owner",outputs:[{name:"",internalType:"address",type:"address"}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_renegotiationOffer",internalType:"struct IMultiSourceLoan.RenegotiationOffer",type:"tuple",components:[{name:"renegotiationId",internalType:"uint256",type:"uint256"},{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"fee",internalType:"uint256",type:"uint256"},{name:"targetPrincipal",internalType:"uint256[]",type:"uint256[]"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"},{name:"expirationTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"}]},{name:"_loan",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"source",internalType:"struct IMultiSourceLoan.Source[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]}]},{name:"_renegotiationOfferSignature",internalType:"bytes",type:"bytes"}],name:"refinanceFull",outputs:[{name:"",internalType:"uint256",type:"uint256"},{name:"",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"source",internalType:"struct IMultiSourceLoan.Source[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]}]}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_renegotiationOffer",internalType:"struct IMultiSourceLoan.RenegotiationOffer",type:"tuple",components:[{name:"renegotiationId",internalType:"uint256",type:"uint256"},{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"fee",internalType:"uint256",type:"uint256"},{name:"targetPrincipal",internalType:"uint256[]",type:"uint256[]"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"},{name:"expirationTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"}]},{name:"_loan",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"source",internalType:"struct IMultiSourceLoan.Source[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]}]}],name:"refinancePartial",outputs:[{name:"",internalType:"uint256",type:"uint256"},{name:"",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"source",internalType:"struct IMultiSourceLoan.Source[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]}]}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_contract",internalType:"address",type:"address"}],name:"removeWhitelistedCallbackContract",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_repaymentData",internalType:"struct IMultiSourceLoan.LoanRepaymentData",type:"tuple",components:[{name:"data",internalType:"struct IMultiSourceLoan.SignableRepaymentData",type:"tuple",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"callbackData",internalType:"bytes",type:"bytes"},{name:"shouldDelegate",internalType:"bool",type:"bool"}]},{name:"loan",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"source",internalType:"struct IMultiSourceLoan.Source[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]}]},{name:"borrowerSignature",internalType:"bytes",type:"bytes"}]}],name:"repayLoan",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_delegate",internalType:"address",type:"address"},{name:"_collection",internalType:"address",type:"address"},{name:"_tokenId",internalType:"uint256",type:"uint256"}],name:"revokeDelegate",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_newDelegateRegistry",internalType:"address",type:"address"}],name:"setDelegateRegistry",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_newFlashActionContract",internalType:"address",type:"address"}],name:"setFlashActionContract",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"__maxSources",internalType:"uint256",type:"uint256"}],name:"setMaxSources",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"__minLockPeriod",internalType:"uint256",type:"uint256"}],name:"setMinLockPeriod",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[],name:"setProtocolFee",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"newOwner",internalType:"address",type:"address"}],name:"transferOwnership",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_newMinimum",internalType:"struct IBaseLoan.ImprovementMinimum",type:"tuple",components:[{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"interest",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"}]}],name:"updateImprovementMinimum",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_newDuration",internalType:"uint48",type:"uint48"}],name:"updateLiquidationAuctionDuration",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"loanLiquidator",internalType:"contract ILoanLiquidator",type:"address"}],name:"updateLiquidationContract",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_newProtocolFee",internalType:"struct IBaseLoan.ProtocolFee",type:"tuple",components:[{name:"recipient",internalType:"address",type:"address"},{name:"fraction",internalType:"uint256",type:"uint256"}]}],name:"updateProtocolFee",outputs:[]}];var $e=[{stateMutability:"nonpayable",type:"constructor",inputs:[{name:"currencyManager",internalType:"address",type:"address"},{name:"collectionManager",internalType:"address",type:"address"}]},{type:"error",inputs:[],name:"AssetNotOwnedError"},{type:"error",inputs:[],name:"CollectionNotWhitelistedError"},{type:"error",inputs:[],name:"CurrencyNotWhitelistedError"},{type:"error",inputs:[],name:"LengthMismatchError"},{type:"error",inputs:[{name:"vaultId",internalType:"uint256",type:"uint256"}],name:"NotApprovedError"},{type:"error",inputs:[{name:"vaultId",internalType:"uint256",type:"uint256"}],name:"VaultNotExistsError"},{type:"error",inputs:[],name:"WithdrawingETHError"},{type:"error",inputs:[],name:"WrongMethodError"},{type:"event",anonymous:!1,inputs:[{name:"owner",internalType:"address",type:"address",indexed:!0},{name:"spender",internalType:"address",type:"address",indexed:!0},{name:"id",internalType:"uint256",type:"uint256",indexed:!0}],name:"Approval"},{type:"event",anonymous:!1,inputs:[{name:"owner",internalType:"address",type:"address",indexed:!0},{name:"operator",internalType:"address",type:"address",indexed:!0},{name:"approved",internalType:"bool",type:"bool",indexed:!1}],name:"ApprovalForAll"},{type:"event",anonymous:!1,inputs:[{name:"vaultId",internalType:"uint256",type:"uint256",indexed:!1},{name:"token",internalType:"address",type:"address",indexed:!1},{name:"amount",internalType:"uint256",type:"uint256",indexed:!1}],name:"ERC20Deposited"},{type:"event",anonymous:!1,inputs:[{name:"vaultId",internalType:"uint256",type:"uint256",indexed:!1},{name:"token",internalType:"address",type:"address",indexed:!1},{name:"amount",internalType:"uint256",type:"uint256",indexed:!1}],name:"ERC20Withdrawn"},{type:"event",anonymous:!1,inputs:[{name:"vaultId",internalType:"uint256",type:"uint256",indexed:!1},{name:"collection",internalType:"address",type:"address",indexed:!1},{name:"tokenId",internalType:"uint256",type:"uint256",indexed:!1}],name:"ERC721Deposited"},{type:"event",anonymous:!1,inputs:[{name:"vaultId",internalType:"uint256",type:"uint256",indexed:!1},{name:"collection",internalType:"address",type:"address",indexed:!1},{name:"tokenId",internalType:"uint256",type:"uint256",indexed:!1}],name:"ERC721Withdrawn"},{type:"event",anonymous:!1,inputs:[{name:"user",internalType:"address",type:"address",indexed:!0},{name:"newOwner",internalType:"address",type:"address",indexed:!0}],name:"OwnershipTransferred"},{type:"event",anonymous:!1,inputs:[{name:"from",internalType:"address",type:"address",indexed:!0},{name:"to",internalType:"address",type:"address",indexed:!0},{name:"id",internalType:"uint256",type:"uint256",indexed:!0}],name:"Transfer"},{stateMutability:"view",type:"function",inputs:[{name:"_vaultId",internalType:"uint256",type:"uint256"},{name:"_token",internalType:"address",type:"address"}],name:"ERC20BalanceOf",outputs:[{name:"",internalType:"uint256",type:"uint256"}]},{stateMutability:"view",type:"function",inputs:[{name:"_collection",internalType:"address",type:"address"},{name:"_tokenId",internalType:"uint256",type:"uint256"}],name:"ERC721OwnerOf",outputs:[{name:"",internalType:"uint256",type:"uint256"}]},{stateMutability:"view",type:"function",inputs:[],name:"ETH",outputs:[{name:"",internalType:"address",type:"address"}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"spender",internalType:"address",type:"address"},{name:"id",internalType:"uint256",type:"uint256"}],name:"approve",outputs:[]},{stateMutability:"view",type:"function",inputs:[{name:"owner",internalType:"address",type:"address"}],name:"balanceOf",outputs:[{name:"",internalType:"uint256",type:"uint256"}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_vaultId",internalType:"uint256",type:"uint256"},{name:"_assetRecipient",internalType:"address",type:"address"}],name:"burn",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_vaultId",internalType:"uint256",type:"uint256"},{name:"_collections",internalType:"address[]",type:"address[]"},{name:"_tokenIds",internalType:"uint256[]",type:"uint256[]"},{name:"_tokens",internalType:"address[]",type:"address[]"}],name:"burnAndWithdraw",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_vaultId",internalType:"uint256",type:"uint256"},{name:"_token",internalType:"address",type:"address"},{name:"_amount",internalType:"uint256",type:"uint256"}],name:"depositERC20",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_vaultId",internalType:"uint256",type:"uint256"},{name:"_collection",internalType:"address",type:"address"},{name:"_tokenId",internalType:"uint256",type:"uint256"}],name:"depositERC721",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_vaultId",internalType:"uint256",type:"uint256"},{name:"_collection",internalType:"address",type:"address"},{name:"_tokenIds",internalType:"uint256[]",type:"uint256[]"}],name:"depositERC721s",outputs:[]},{stateMutability:"payable",type:"function",inputs:[{name:"_vaultId",internalType:"uint256",type:"uint256"}],name:"depositEth",outputs:[]},{stateMutability:"view",type:"function",inputs:[{name:"",internalType:"uint256",type:"uint256"}],name:"getApproved",outputs:[{name:"",internalType:"address",type:"address"}]},{stateMutability:"view",type:"function",inputs:[{name:"",internalType:"address",type:"address"},{name:"",internalType:"address",type:"address"}],name:"isApprovedForAll",outputs:[{name:"",internalType:"bool",type:"bool"}]},{stateMutability:"nonpayable",type:"function",inputs:[],name:"mint",outputs:[{name:"",internalType:"uint256",type:"uint256"}]},{stateMutability:"view",type:"function",inputs:[],name:"name",outputs:[{name:"",internalType:"string",type:"string"}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"",internalType:"address",type:"address"},{name:"",internalType:"address",type:"address"},{name:"",internalType:"uint256",type:"uint256"},{name:"",internalType:"bytes",type:"bytes"}],name:"onERC721Received",outputs:[{name:"",internalType:"bytes4",type:"bytes4"}]},{stateMutability:"view",type:"function",inputs:[],name:"owner",outputs:[{name:"",internalType:"address",type:"address"}]},{stateMutability:"view",type:"function",inputs:[{name:"id",internalType:"uint256",type:"uint256"}],name:"ownerOf",outputs:[{name:"owner",internalType:"address",type:"address"}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"from",internalType:"address",type:"address"},{name:"to",internalType:"address",type:"address"},{name:"id",internalType:"uint256",type:"uint256"}],name:"safeTransferFrom",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"from",internalType:"address",type:"address"},{name:"to",internalType:"address",type:"address"},{name:"id",internalType:"uint256",type:"uint256"},{name:"data",internalType:"bytes",type:"bytes"}],name:"safeTransferFrom",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"operator",internalType:"address",type:"address"},{name:"approved",internalType:"bool",type:"bool"}],name:"setApprovalForAll",outputs:[]},{stateMutability:"view",type:"function",inputs:[{name:"interfaceId",internalType:"bytes4",type:"bytes4"}],name:"supportsInterface",outputs:[{name:"",internalType:"bool",type:"bool"}]},{stateMutability:"view",type:"function",inputs:[],name:"symbol",outputs:[{name:"",internalType:"string",type:"string"}]},{stateMutability:"pure",type:"function",inputs:[{name:"_vaultId",internalType:"uint256",type:"uint256"}],name:"tokenURI",outputs:[{name:"",internalType:"string",type:"string"}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"from",internalType:"address",type:"address"},{name:"to",internalType:"address",type:"address"},{name:"id",internalType:"uint256",type:"uint256"}],name:"transferFrom",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"newOwner",internalType:"address",type:"address"}],name:"transferOwnership",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_vaultId",internalType:"uint256",type:"uint256"},{name:"_token",internalType:"address",type:"address"}],name:"withdrawERC20",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_vaultId",internalType:"uint256",type:"uint256"},{name:"_tokens",internalType:"address[]",type:"address[]"}],name:"withdrawERC20s",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_vaultId",internalType:"uint256",type:"uint256"},{name:"_collection",internalType:"address",type:"address"},{name:"_tokenId",internalType:"uint256",type:"uint256"}],name:"withdrawERC721",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_vaultId",internalType:"uint256",type:"uint256"},{name:"_collections",internalType:"address[]",type:"address[]"},{name:"_tokenIds",internalType:"uint256[]",type:"uint256[]"}],name:"withdrawERC721s",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_vaultId",internalType:"uint256",type:"uint256"}],name:"withdrawEth",outputs:[]}];var Qe="MarketPlace.Native",L="GONDI_MULTI_SOURCE_LOAN",M=l((p,e)=>K(p)&&p.toLowerCase()===e?.toLowerCase(),"areSameAddress");import{encodeAbiParameters as ln}from"viem";import{isAddress as nn,zeroAddress as an}from"viem";import{goerli as rn}from"viem/chains";var sn=31337,O=l(p=>!p||!nn(p)?null:p,"ensureAddress"),ze="0xb6dfcbc1661d0c0bced9591d06e964f97d41a35984704ffe61f8e062e43919c8",I=l(p=>p?.id===sn?{MultiSourceLoan:{v4:O(process.env.GONDI_MULTI_SOURCE_LOAN_V4)??"0xCf7Ed3AccA5a467e9e704C703E8D87F634fB0Fc9",v5:O(process.env.GONDI_MULTI_SOURCE_LOAN_V5)??"0x610178dA211FEF7D417bC0e6FeD39F05609AD788",v6:O(process.env.GONDI_MULTI_SOURCE_LOAN_V6)??"0x4ed7c70F96B99c776995fB64377f0d4aB3B0e1C1"},AuctionLoanLiquidator:{v4:O(process.env.GONDI_AUCTION_LOAN_LIQUIDATOR_V4)??"0x9fE46736679d2D9a65F0992F2272dE9f3c7fa6e0",v5:O(process.env.GONDI_AUCTION_LOAN_LIQUIDATOR_V5)??"0x8A791620dd6260079BF849Dc5567aDC3F2FdC318",v6:O(process.env.GONDI_AUCTION_LOAN_LIQUIDATOR_V6)??"0x59b670e9fA9D0A427751Af201D676719a970857b"},UserVault:{v5:O(process.env.GONDI_USER_VAULT_V5)??"0x0DCd1Bf9A1b36cE34237eEaFef220932846BCD82",v6:O(process.env.GONDI_USER_VAULT_V6)??"0x4A679253410272dd5232B3Ff7cF5dbB88f295319"},LeverageAddress:O(process.env.GONDI_LEVERAGE)??"0xA51c1fc2f0D1a1b8494Ed1FE312d7C3a78Ed91C0",SeaportAddress:O(process.env.SEAPORT)??"0x00000000000000ADc04C56Bf30aC9d3c0aAF14dC",CryptoPunksAddress:O(process.env.CRYPTO_PUNKS)??"0xb47e3cd837ddf8e4c57f05d70ab865de6e193bbb"}:p?.id===rn.id?{MultiSourceLoan:{v4:"0x60C20627429668F267b5cF55c6605c665C69887D",v5:"0xTODO",v6:"0xTODO"},AuctionLoanLiquidator:{v4:"0x29C73faa2f9180ea5a7B0bEC243ebc63a5B4f280",v5:"0xTODO",v6:"0xTODO"},UserVault:{v5:"0xTODO",v6:"0xTODO"},LeverageAddress:"0xTODO",SeaportAddress:"0x00000000000000ADc04C56Bf30aC9d3c0aAF14dC",CryptoPunksAddress:"0xb47e3cd837ddf8e4c57f05d70ab865de6e193bbb"}:{MultiSourceLoan:{v4:"0xCa5a494Ca20483e21ec1E41FE1D9461Da77595Bd",v5:"0x478f6F994C6fb3cf3e444a489b3AD9edB8cCaE16",v6:"0xTODO"},AuctionLoanLiquidator:{v4:"0x237e4421C742d843Fdd96D22294D338507e17091",v5:"0x97d34635b605c2f1630d6b4c6c5d222b8a2ca47d",v6:"0xTODO"},UserVault:{v5:"0x14a6Dcebb2Bb73aae1b199CCAadA75247b81976D",v6:"0xC9f152168BC7b75F76b74e1f382F90bC2FeDd15f"},LeverageAddress:"0x87Ce6e8124fFd68fa721FcC7f35fdA14A11E233e",SeaportAddress:"0x00000000000000ADc04C56Bf30aC9d3c0aAF14dC",CryptoPunksAddress:"0xb47e3cd837ddf8e4c57f05d70ab865de6e193bbb"},"getContracts"),Ge=l(()=>({reservoirApiKey:"5b472f8c-b471-531a-a450-56e428e5a00a",infuraApiKey:"9b7006cb0b0b42f1813ae9418741fbb5"}),"getApiKeys"),_=l(()=>({WETH_ADDRESS:"0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",ETH_ADDRESS:an,USDC_ADDRESS:"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"}),"getCurrencies");var Xe=[{stateMutability:"nonpayable",type:"constructor",inputs:[{name:"currencyManager",internalType:"address",type:"address"},{name:"collectionManager",internalType:"address",type:"address"},{name:"triggerFee",internalType:"uint256",type:"uint256"}]},{type:"error",inputs:[],name:"AuctionAlreadyInProgressError"},{type:"error",inputs:[{name:"_contract",internalType:"address",type:"address"},{name:"_tokenId",internalType:"uint256",type:"uint256"}],name:"AuctionNotExistsError"},{type:"error",inputs:[{name:"_expiration",internalType:"uint96",type:"uint96"}],name:"AuctionNotOverError"},{type:"error",inputs:[{name:"_expiration",internalType:"uint96",type:"uint96"}],name:"AuctionOverError"},{type:"error",inputs:[],name:"CollectionNotWhitelistedError"},{type:"error",inputs:[],name:"CurrencyNotWhitelistedError"},{type:"error",inputs:[{name:"triggerFee",internalType:"uint256",type:"uint256"}],name:"InvalidTriggerFee"},{type:"error",inputs:[{name:"_loan",internalType:"address",type:"address"}],name:"LoanNotAcceptedError"},{type:"error",inputs:[{name:"_minBid",internalType:"uint256",type:"uint256"}],name:"MinBidError"},{type:"error",inputs:[{name:"_owner",internalType:"address",type:"address"}],name:"NFTNotOwnedError"},{type:"error",inputs:[],name:"NoBidsError"},{type:"error",inputs:[],name:"ZeroAddressError"},{type:"event",anonymous:!1,inputs:[{name:"loanContract",internalType:"address",type:"address",indexed:!1},{name:"loanId",internalType:"uint256",type:"uint256",indexed:!1},{name:"auctionContract",internalType:"address",type:"address",indexed:!1},{name:"tokenId",internalType:"uint256",type:"uint256",indexed:!1},{name:"asset",internalType:"address",type:"address",indexed:!1},{name:"highestBid",internalType:"uint256",type:"uint256",indexed:!1},{name:"settler",internalType:"address",type:"address",indexed:!1},{name:"triggerFee",internalType:"uint256",type:"uint256",indexed:!1}],name:"AuctionSettled"},{type:"event",anonymous:!1,inputs:[{name:"auctionContract",internalType:"address",type:"address",indexed:!1},{name:"tokenId",internalType:"uint256",type:"uint256",indexed:!1},{name:"newBidder",internalType:"address",type:"address",indexed:!1},{name:"bid",internalType:"uint256",type:"uint256",indexed:!1},{name:"loanAddress",internalType:"address",type:"address",indexed:!1},{name:"loanId",internalType:"uint256",type:"uint256",indexed:!1}],name:"BidPlaced"},{type:"event",anonymous:!1,inputs:[{name:"loan",internalType:"address",type:"address",indexed:!1}],name:"LoanContractAdded"},{type:"event",anonymous:!1,inputs:[{name:"loan",internalType:"address",type:"address",indexed:!1}],name:"LoanContractRemoved"},{type:"event",anonymous:!1,inputs:[{name:"loanAddress",internalType:"address",type:"address",indexed:!1},{name:"loanId",internalType:"uint256",type:"uint256",indexed:!1},{name:"duration",internalType:"uint96",type:"uint96",indexed:!1},{name:"asset",internalType:"address",type:"address",indexed:!1}],name:"LoanLiquidationStarted"},{type:"event",anonymous:!1,inputs:[{name:"user",internalType:"address",type:"address",indexed:!0},{name:"newOwner",internalType:"address",type:"address",indexed:!0}],name:"OwnershipTransferred"},{type:"event",anonymous:!1,inputs:[{name:"triggerFee",internalType:"uint256",type:"uint256",indexed:!1}],name:"TriggerFeeUpdated"},{stateMutability:"view",type:"function",inputs:[],name:"MAX_TRIGGER_FEE",outputs:[{name:"",internalType:"uint256",type:"uint256"}]},{stateMutability:"view",type:"function",inputs:[],name:"MIN_INCREMENT_BPS",outputs:[{name:"",internalType:"uint256",type:"uint256"}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_loanContract",internalType:"address",type:"address"}],name:"addLoanContract",outputs:[]},{stateMutability:"view",type:"function",inputs:[{name:"_contract",internalType:"address",type:"address"},{name:"_tokenId",internalType:"uint256",type:"uint256"}],name:"getAuction",outputs:[{name:"",internalType:"struct AuctionLoanLiquidator.Auction",type:"tuple",components:[{name:"loanAddress",internalType:"address",type:"address"},{name:"loanId",internalType:"uint256",type:"uint256"},{name:"highestBid",internalType:"uint256",type:"uint256"},{name:"highestBidder",internalType:"address",type:"address"},{name:"duration",internalType:"uint96",type:"uint96"},{name:"asset",internalType:"address",type:"address"},{name:"startTime",internalType:"uint96",type:"uint96"},{name:"originator",internalType:"address",type:"address"},{name:"lastBidTime",internalType:"uint96",type:"uint96"}]}]},{stateMutability:"view",type:"function",inputs:[],name:"getTriggerFee",outputs:[{name:"",internalType:"uint256",type:"uint256"}]},{stateMutability:"view",type:"function",inputs:[],name:"getValidLoanContracts",outputs:[{name:"",internalType:"address[]",type:"address[]"}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_loanId",internalType:"uint256",type:"uint256"},{name:"_contract",internalType:"address",type:"address"},{name:"_tokenId",internalType:"uint256",type:"uint256"},{name:"_asset",internalType:"address",type:"address"},{name:"_duration",internalType:"uint96",type:"uint96"},{name:"_originator",internalType:"address",type:"address"}],name:"liquidateLoan",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"",internalType:"address",type:"address"},{name:"",internalType:"address",type:"address"},{name:"",internalType:"uint256",type:"uint256"},{name:"",internalType:"bytes",type:"bytes"}],name:"onERC721Received",outputs:[{name:"",internalType:"bytes4",type:"bytes4"}]},{stateMutability:"view",type:"function",inputs:[],name:"owner",outputs:[{name:"",internalType:"address",type:"address"}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_contract",internalType:"address",type:"address"},{name:"_tokenId",internalType:"uint256",type:"uint256"},{name:"_bid",internalType:"uint256",type:"uint256"}],name:"placeBid",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_loanContract",internalType:"address",type:"address"}],name:"removeLoanContract",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_contract",internalType:"address",type:"address"},{name:"_tokenId",internalType:"uint256",type:"uint256"},{name:"_loan",internalType:"bytes",type:"bytes"}],name:"settleAuction",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"newOwner",internalType:"address",type:"address"}],name:"transferOwnership",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"triggerFee",internalType:"uint256",type:"uint256"}],name:"updateTriggerFee",outputs:[]}];var Ze=[{stateMutability:"nonpayable",type:"constructor",inputs:[{name:"loanLiquidator",internalType:"address",type:"address"},{name:"protocolFee",internalType:"struct IBaseLoan.ProtocolFee",type:"tuple",components:[{name:"recipient",internalType:"address",type:"address"},{name:"fraction",internalType:"uint256",type:"uint256"}]},{name:"currencyManager",internalType:"address",type:"address"},{name:"collectionManager",internalType:"address",type:"address"},{name:"maxSources",internalType:"uint8",type:"uint8"}]},{type:"error",inputs:[],name:"AddressZeroError"},{type:"error",inputs:[{name:"_lender",internalType:"address",type:"address"},{name:"_offerId",internalType:"uint256",type:"uint256"}],name:"CancelledOrExecutedOfferError"},{type:"error",inputs:[{name:"_lender",internalType:"address",type:"address"},{name:"_offerId",internalType:"uint256",type:"uint256"}],name:"CancelledRenegotiationOffer"},{type:"error",inputs:[{name:"_lender",internalType:"address",type:"address"},{name:"_renegotiationId",internalType:"uint256",type:"uint256"}],name:"CancelledRenegotiationOfferError"},{type:"error",inputs:[],name:"CannotLiquidateError"},{type:"error",inputs:[],name:"CollectionNotWhitelistedError"},{type:"error",inputs:[],name:"CurrencyNotWhitelistedError"},{type:"error",inputs:[],name:"ExpiredLoanError"},{type:"error",inputs:[{name:"_expirationTime",internalType:"uint256",type:"uint256"}],name:"ExpiredOfferError"},{type:"error",inputs:[{name:"_expirationTime",internalType:"uint256",type:"uint256"}],name:"ExpiredRenegotiationOfferError"},{type:"error",inputs:[],name:"InvalidBorrowerError"},{type:"error",inputs:[],name:"InvalidCallbackError"},{type:"error",inputs:[],name:"InvalidCollateralIdError"},{type:"error",inputs:[],name:"InvalidLiquidationError"},{type:"error",inputs:[{name:"_loanId",internalType:"uint256",type:"uint256"}],name:"InvalidLoanError"},{type:"error",inputs:[{name:"_fraction",internalType:"uint256",type:"uint256"}],name:"InvalidProtocolFeeError"},{type:"error",inputs:[],name:"InvalidRenegotiationOfferError"},{type:"error",inputs:[],name:"InvalidSignatureError"},{type:"error",inputs:[],name:"InvalidSignerError"},{type:"error",inputs:[],name:"LengthMismatchError"},{type:"error",inputs:[{name:"_liquidator",internalType:"address",type:"address"}],name:"LiquidatorOnlyError"},{type:"error",inputs:[],name:"LoanExpiredError"},{type:"error",inputs:[{name:"_expirationTime",internalType:"uint256",type:"uint256"}],name:"LoanNotDueError"},{type:"error",inputs:[{name:"_loanId",internalType:"uint256",type:"uint256"}],name:"LoanNotFoundError"},{type:"error",inputs:[{name:"_lender",internalType:"address",type:"address"},{name:"_newMinOfferId",internalType:"uint256",type:"uint256"},{name:"_minOfferId",internalType:"uint256",type:"uint256"}],name:"LowOfferIdError"},{type:"error",inputs:[{name:"_lender",internalType:"address",type:"address"},{name:"_newMinRenegotiationOfferId",internalType:"uint256",type:"uint256"},{name:"_minOfferId",internalType:"uint256",type:"uint256"}],name:"LowRenegotiationOfferIdError"},{type:"error",inputs:[],name:"MaxCapacityExceededError"},{type:"error",inputs:[{name:"_id",internalType:"uint256",type:"uint256"}],name:"NotMintedError"},{type:"error",inputs:[],name:"NotStrictlyImprovedError"},{type:"error",inputs:[],name:"OnlyBorrowerCallableError"},{type:"error",inputs:[],name:"OnlyLenderOrSignerCallableError"},{type:"error",inputs:[],name:"PartialOfferCannotChangeDurationError"},{type:"error",inputs:[],name:"PartialOfferCannotHaveFeeError"},{type:"error",inputs:[],name:"RefinanceFullError"},{type:"error",inputs:[],name:"RepaymentError"},{type:"error",inputs:[{name:"sourcePrincipal",internalType:"uint256",type:"uint256"},{name:"loanPrincipal",internalType:"uint256",type:"uint256"}],name:"TargetPrincipalTooLowError"},{type:"error",inputs:[{name:"_pendingProtocolFeeSetTime",internalType:"uint256",type:"uint256"}],name:"TooEarlyError"},{type:"error",inputs:[{name:"sources",internalType:"uint8",type:"uint8"}],name:"TooManySourcesError"},{type:"error",inputs:[],name:"Unauthorized"},{type:"error",inputs:[{name:"_authorized",internalType:"address",type:"address"}],name:"UnauthorizedError"},{type:"error",inputs:[],name:"ZeroAddressError"},{type:"error",inputs:[],name:"ZeroDurationError"},{type:"error",inputs:[],name:"ZeroInterestError"},{type:"event",anonymous:!1,inputs:[{name:"lender",internalType:"address",type:"address",indexed:!1},{name:"minOfferId",internalType:"uint256",type:"uint256",indexed:!1}],name:"AllOffersCancelled"},{type:"event",anonymous:!1,inputs:[{name:"lender",internalType:"address",type:"address",indexed:!1},{name:"minRenegotiationId",internalType:"uint256",type:"uint256",indexed:!1}],name:"AllRenegotiationOffersCancelled"},{type:"event",anonymous:!1,inputs:[{name:"lender",internalType:"address",type:"address",indexed:!1},{name:"signer",internalType:"address",type:"address",indexed:!1}],name:"ApprovedSigner"},{type:"event",anonymous:!1,inputs:[{name:"minimum",internalType:"struct IBaseLoan.ImprovementMinimum",type:"tuple",components:[{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"interest",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"}],indexed:!1}],name:"ImprovementMinimumUpdated"},{type:"event",anonymous:!1,inputs:[{name:"newDuration",internalType:"uint256",type:"uint256",indexed:!1}],name:"LiquidationAuctionDurationUpdated"},{type:"event",anonymous:!1,inputs:[{name:"liquidator",internalType:"address",type:"address",indexed:!1}],name:"LiquidationContractUpdated"},{type:"event",anonymous:!1,inputs:[{name:"loanId",internalType:"uint256",type:"uint256",indexed:!1},{name:"offerId",internalType:"uint256",type:"uint256",indexed:!1},{name:"loan",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"source",internalType:"struct IMultiSourceLoan.Source[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]}],indexed:!1},{name:"fee",internalType:"uint256",type:"uint256",indexed:!1}],name:"LoanEmitted"},{type:"event",anonymous:!1,inputs:[{name:"loanId",internalType:"uint256",type:"uint256",indexed:!1}],name:"LoanForeclosed"},{type:"event",anonymous:!1,inputs:[{name:"loanId",internalType:"uint256",type:"uint256",indexed:!1},{name:"repayment",internalType:"uint256",type:"uint256",indexed:!1}],name:"LoanLiquidated"},{type:"event",anonymous:!1,inputs:[{name:"renegotiationId",internalType:"uint256",type:"uint256",indexed:!1},{name:"oldLoanId",internalType:"uint256",type:"uint256",indexed:!1},{name:"newLoanId",internalType:"uint256",type:"uint256",indexed:!1},{name:"loan",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"source",internalType:"struct IMultiSourceLoan.Source[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]}],indexed:!1},{name:"fee",internalType:"uint256",type:"uint256",indexed:!1}],name:"LoanRefinanced"},{type:"event",anonymous:!1,inputs:[{name:"loanId",internalType:"uint256",type:"uint256",indexed:!1},{name:"totalRepayment",internalType:"uint256",type:"uint256",indexed:!1},{name:"fee",internalType:"uint256",type:"uint256",indexed:!1}],name:"LoanRepaid"},{type:"event",anonymous:!1,inputs:[{name:"loanId",internalType:"uint256",type:"uint256",indexed:!1},{name:"liquidator",internalType:"address",type:"address",indexed:!1}],name:"LoanSentToLiquidator"},{type:"event",anonymous:!1,inputs:[{name:"newMax",internalType:"uint8",type:"uint8",indexed:!1}],name:"MaxSourcesUpdated"},{type:"event",anonymous:!1,inputs:[{name:"lender",internalType:"address",type:"address",indexed:!1},{name:"offerId",internalType:"uint256",type:"uint256",indexed:!1}],name:"OfferCancelled"},{type:"event",anonymous:!1,inputs:[{name:"user",internalType:"address",type:"address",indexed:!0},{name:"newOwner",internalType:"address",type:"address",indexed:!0}],name:"OwnershipTransferred"},{type:"event",anonymous:!1,inputs:[{name:"fee",internalType:"struct IBaseLoan.ProtocolFee",type:"tuple",components:[{name:"recipient",internalType:"address",type:"address"},{name:"fraction",internalType:"uint256",type:"uint256"}],indexed:!1}],name:"ProtocolFeePendingUpdate"},{type:"event",anonymous:!1,inputs:[{name:"fee",internalType:"struct IBaseLoan.ProtocolFee",type:"tuple",components:[{name:"recipient",internalType:"address",type:"address"},{name:"fraction",internalType:"uint256",type:"uint256"}],indexed:!1}],name:"ProtocolFeeUpdated"},{type:"event",anonymous:!1,inputs:[{name:"lender",internalType:"address",type:"address",indexed:!1},{name:"renegotiationId",internalType:"uint256",type:"uint256",indexed:!1}],name:"RenegotiationOfferCancelled"},{type:"event",anonymous:!1,inputs:[{name:"contract_added",internalType:"address",type:"address",indexed:!1}],name:"WhitelistedCallbackContractAdded"},{type:"event",anonymous:!1,inputs:[{name:"contract_removed",internalType:"address",type:"address",indexed:!1}],name:"WhitelistedCallbackContractRemoved"},{stateMutability:"view",type:"function",inputs:[],name:"DOMAIN_SEPARATOR",outputs:[{name:"",internalType:"bytes32",type:"bytes32"}]},{stateMutability:"view",type:"function",inputs:[],name:"FEE_UPDATE_NOTICE",outputs:[{name:"",internalType:"uint256",type:"uint256"}]},{stateMutability:"view",type:"function",inputs:[],name:"INITIAL_DOMAIN_SEPARATOR",outputs:[{name:"",internalType:"bytes32",type:"bytes32"}]},{stateMutability:"view",type:"function",inputs:[],name:"MAX_PROTOCOL_FEE",outputs:[{name:"",internalType:"uint256",type:"uint256"}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_contract",internalType:"address",type:"address"}],name:"addWhitelistedCallbackContract",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_signer",internalType:"address",type:"address"}],name:"approveSigner",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_lender",internalType:"address",type:"address"},{name:"_minOfferId",internalType:"uint256",type:"uint256"}],name:"cancelAllOffers",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_lender",internalType:"address",type:"address"},{name:"_minRenegotiationId",internalType:"uint256",type:"uint256"}],name:"cancelAllRenegotiationOffers",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_lender",internalType:"address",type:"address"},{name:"_offerId",internalType:"uint256",type:"uint256"}],name:"cancelOffer",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_lender",internalType:"address",type:"address"},{name:"_offerIds",internalType:"uint256[]",type:"uint256[]"}],name:"cancelOffers",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_lender",internalType:"address",type:"address"},{name:"_renegotiationId",internalType:"uint256",type:"uint256"}],name:"cancelRenegotiationOffer",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_lender",internalType:"address",type:"address"},{name:"_renegotiationIds",internalType:"uint256[]",type:"uint256[]"}],name:"cancelRenegotiationOffers",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_loanOffer",internalType:"struct IBaseLoan.LoanOffer",type:"tuple",components:[{name:"offerId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"fee",internalType:"uint256",type:"uint256"},{name:"borrower",internalType:"address",type:"address"},{name:"capacity",internalType:"uint256",type:"uint256"},{name:"signer",internalType:"address",type:"address"},{name:"requiresLiquidation",internalType:"bool",type:"bool"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"},{name:"expirationTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"validators",internalType:"struct IBaseLoan.OfferValidator[]",type:"tuple[]",components:[{name:"validator",internalType:"address",type:"address"},{name:"arguments",internalType:"bytes",type:"bytes"}]}]},{name:"_tokenId",internalType:"uint256",type:"uint256"},{name:"_lenderOfferSignature",internalType:"bytes",type:"bytes"},{name:"_withCallback",internalType:"bool",type:"bool"}],name:"emitLoan",outputs:[{name:"",internalType:"uint256",type:"uint256"},{name:"",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"source",internalType:"struct IMultiSourceLoan.Source[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]}]}]},{stateMutability:"view",type:"function",inputs:[{name:"",internalType:"address",type:"address"}],name:"getApprovedSigner",outputs:[{name:"",internalType:"address",type:"address"}]},{stateMutability:"view",type:"function",inputs:[],name:"getCollectionManager",outputs:[{name:"",internalType:"address",type:"address"}]},{stateMutability:"view",type:"function",inputs:[],name:"getCurrencyManager",outputs:[{name:"",internalType:"address",type:"address"}]},{stateMutability:"view",type:"function",inputs:[],name:"getImprovementMinimum",outputs:[{name:"",internalType:"struct IBaseLoan.ImprovementMinimum",type:"tuple",components:[{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"interest",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"}]}]},{stateMutability:"view",type:"function",inputs:[],name:"getLiquidationAuctionDuration",outputs:[{name:"",internalType:"uint48",type:"uint48"}]},{stateMutability:"view",type:"function",inputs:[],name:"getLiquidator",outputs:[{name:"",internalType:"address",type:"address"}]},{stateMutability:"view",type:"function",inputs:[{name:"_loanId",internalType:"uint256",type:"uint256"}],name:"getLoanHash",outputs:[{name:"",internalType:"bytes32",type:"bytes32"}]},{stateMutability:"view",type:"function",inputs:[],name:"getMaxSources",outputs:[{name:"",internalType:"uint8",type:"uint8"}]},{stateMutability:"view",type:"function",inputs:[{name:"_loanPrincipal",internalType:"uint256",type:"uint256"}],name:"getMinSourcePrincipal",outputs:[{name:"",internalType:"uint256",type:"uint256"}]},{stateMutability:"view",type:"function",inputs:[],name:"getPendingProtocolFee",outputs:[{name:"",internalType:"struct IBaseLoan.ProtocolFee",type:"tuple",components:[{name:"recipient",internalType:"address",type:"address"},{name:"fraction",internalType:"uint256",type:"uint256"}]}]},{stateMutability:"view",type:"function",inputs:[],name:"getPendingProtocolFeeSetTime",outputs:[{name:"",internalType:"uint256",type:"uint256"}]},{stateMutability:"view",type:"function",inputs:[],name:"getProtocolFee",outputs:[{name:"",internalType:"struct IBaseLoan.ProtocolFee",type:"tuple",components:[{name:"recipient",internalType:"address",type:"address"},{name:"fraction",internalType:"uint256",type:"uint256"}]}]},{stateMutability:"view",type:"function",inputs:[],name:"getTotalLoansIssued",outputs:[{name:"",internalType:"uint256",type:"uint256"}]},{stateMutability:"view",type:"function",inputs:[{name:"_lender",internalType:"address",type:"address"},{name:"_offerId",internalType:"uint256",type:"uint256"}],name:"getUsedCapacity",outputs:[{name:"",internalType:"uint256",type:"uint256"}]},{stateMutability:"view",type:"function",inputs:[{name:"",internalType:"address",type:"address"},{name:"",internalType:"uint256",type:"uint256"}],name:"isOfferCancelled",outputs:[{name:"",internalType:"bool",type:"bool"}]},{stateMutability:"view",type:"function",inputs:[{name:"",internalType:"address",type:"address"},{name:"",internalType:"uint256",type:"uint256"}],name:"isRenegotiationOfferCancelled",outputs:[{name:"",internalType:"bool",type:"bool"}]},{stateMutability:"view",type:"function",inputs:[{name:"_contract",internalType:"address",type:"address"}],name:"isWhitelistedCallbackContract",outputs:[{name:"",internalType:"bool",type:"bool"}]},{stateMutability:"view",type:"function",inputs:[{name:"",internalType:"address",type:"address"}],name:"lenderMinOfferId",outputs:[{name:"",internalType:"uint256",type:"uint256"}]},{stateMutability:"view",type:"function",inputs:[{name:"",internalType:"address",type:"address"}],name:"lenderMinRenegotiationOfferId",outputs:[{name:"",internalType:"uint256",type:"uint256"}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_loanId",internalType:"uint256",type:"uint256"},{name:"_loan",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"source",internalType:"struct IMultiSourceLoan.Source[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]}]}],name:"liquidateLoan",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_collateralAddress",internalType:"address",type:"address"},{name:"_collateralTokenId",internalType:"uint256",type:"uint256"},{name:"_loanId",internalType:"uint256",type:"uint256"},{name:"_repayment",internalType:"uint256",type:"uint256"},{name:"_loan",internalType:"bytes",type:"bytes"}],name:"loanLiquidated",outputs:[]},{stateMutability:"view",type:"function",inputs:[],name:"name",outputs:[{name:"",internalType:"string",type:"string"}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"",internalType:"address",type:"address"},{name:"",internalType:"address",type:"address"},{name:"",internalType:"uint256",type:"uint256"},{name:"",internalType:"bytes",type:"bytes"}],name:"onERC721Received",outputs:[{name:"",internalType:"bytes4",type:"bytes4"}]},{stateMutability:"view",type:"function",inputs:[],name:"owner",outputs:[{name:"",internalType:"address",type:"address"}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_renegotiationOffer",internalType:"struct IMultiSourceLoan.RenegotiationOffer",type:"tuple",components:[{name:"renegotiationId",internalType:"uint256",type:"uint256"},{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"fee",internalType:"uint256",type:"uint256"},{name:"signer",internalType:"address",type:"address"},{name:"targetPrincipal",internalType:"uint256[]",type:"uint256[]"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"},{name:"expirationTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"strictImprovement",internalType:"bool",type:"bool"}]},{name:"_loan",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"source",internalType:"struct IMultiSourceLoan.Source[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]}]},{name:"_renegotiationOfferSignature",internalType:"bytes",type:"bytes"}],name:"refinanceFull",outputs:[{name:"",internalType:"uint256",type:"uint256"},{name:"",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"source",internalType:"struct IMultiSourceLoan.Source[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]}]}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_renegotiationOffer",internalType:"struct IMultiSourceLoan.RenegotiationOffer",type:"tuple",components:[{name:"renegotiationId",internalType:"uint256",type:"uint256"},{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"fee",internalType:"uint256",type:"uint256"},{name:"signer",internalType:"address",type:"address"},{name:"targetPrincipal",internalType:"uint256[]",type:"uint256[]"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"},{name:"expirationTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"strictImprovement",internalType:"bool",type:"bool"}]},{name:"_loan",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"source",internalType:"struct IMultiSourceLoan.Source[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]}]}],name:"refinancePartial",outputs:[{name:"",internalType:"uint256",type:"uint256"},{name:"",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"source",internalType:"struct IMultiSourceLoan.Source[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]}]}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_renegotiationOffer",internalType:"struct IMultiSourceLoan.RenegotiationOffer[]",type:"tuple[]",components:[{name:"renegotiationId",internalType:"uint256",type:"uint256"},{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"fee",internalType:"uint256",type:"uint256"},{name:"signer",internalType:"address",type:"address"},{name:"targetPrincipal",internalType:"uint256[]",type:"uint256[]"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"},{name:"expirationTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"strictImprovement",internalType:"bool",type:"bool"}]},{name:"_loan",internalType:"struct IMultiSourceLoan.Loan[]",type:"tuple[]",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"source",internalType:"struct IMultiSourceLoan.Source[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]}]}],name:"refinancePartialBatch",outputs:[{name:"loanId",internalType:"uint256[]",type:"uint256[]"},{name:"loans",internalType:"struct IMultiSourceLoan.Loan[]",type:"tuple[]",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"source",internalType:"struct IMultiSourceLoan.Source[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]}]}]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_contract",internalType:"address",type:"address"}],name:"removeWhitelistedCallbackContract",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_collateralTo",internalType:"address",type:"address"},{name:"_loanId",internalType:"uint256",type:"uint256"},{name:"_loan",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"source",internalType:"struct IMultiSourceLoan.Source[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]}]},{name:"_withCallback",internalType:"bool",type:"bool"}],name:"repayLoan",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"maxSources",internalType:"uint8",type:"uint8"}],name:"setMaxSources",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[],name:"setProtocolFee",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"newOwner",internalType:"address",type:"address"}],name:"transferOwnership",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_newMinimum",internalType:"struct IBaseLoan.ImprovementMinimum",type:"tuple",components:[{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"interest",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"}]}],name:"updateImprovementMinimum",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_newDuration",internalType:"uint48",type:"uint48"}],name:"updateLiquidationAuctionDuration",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"loanLiquidator",internalType:"contract ILoanLiquidator",type:"address"}],name:"updateLiquidationContract",outputs:[]},{stateMutability:"nonpayable",type:"function",inputs:[{name:"_newProtocolFee",internalType:"struct IBaseLoan.ProtocolFee",type:"tuple",components:[{name:"recipient",internalType:"address",type:"address"},{name:"fraction",internalType:"uint256",type:"uint256"}]}],name:"updateProtocolFee",outputs:[]}];import{createPublicClient as pn,createTransport as on,getContract as yn}from"viem";var g=class{abi;address;bcClient;wallet;contract;safeContractWrite;constructor({walletClient:e,address:t,abi:n}){this.wallet=e;let a=pn({transport:()=>on(e.transport)});this.bcClient=a,this.address=t,this.abi=n,this.contract=yn({address:this.address,abi:this.abi,walletClient:e,publicClient:this.bcClient}),this.safeContractWrite=new Proxy({},{get(i,r){return async(s,o={})=>{let{request:y}=await a.simulateContract({address:t,abi:n,functionName:r,args:s,account:e.account,...o});return e.writeContract(y)}}})}};l(g,"BaseContract");var Ie=class extends g{constructor({walletClient:e}){let{AuctionLoanLiquidator:{v4:t}}=I(e.chain);super({walletClient:e,address:t,abi:Xe})}async placeBid({collectionContractAddress:e,tokenId:t,bid:n}){let a=await this.safeContractWrite.placeBid([e,t,n]);return{txHash:a,waitTxInBlock:async()=>{let i=await this.bcClient.waitForTransactionReceipt({hash:a}),r=await this.contract.createEventFilter.BidPlaced(),s=d(i,r);if(s.length===0)throw new Error("Bid not placed");return{...s[0].args,...i}}}}getRemainingLockupSeconds(){return 0}async settleAuctionWithBuyout(){throw new Error("Not implemented for V1")}async settleAuction({loan:e}){let t={...e,source:e.source.map(a=>[Number(a.loanId),a.lender,a.principalAmount,a.accruedInterest,a.startTime,a.aprBps])},n=await this.safeContractWrite.settleAuction([e.nftCollateralAddress,e.nftCollateralTokenId,ln(Ie.LOAN_SETTLEMENT_ENCODE_TYPES,[t])]);return{txHash:n,waitTxInBlock:async()=>{let a=await this.bcClient.waitForTransactionReceipt({hash:n}),i=await this.contract.createEventFilter.AuctionSettled(),r=d(a,i);if(r.length===0)throw new Error("Auction not settled");return{...r[0].args,...a}}}}},N=Ie;l(N,"AllV4"),Oe(N,"LOAN_SETTLEMENT_ENCODE_TYPES",[{name:"",type:"tuple",components:[{name:"borrower",type:"address"},{name:"nftCollateralTokenId",type:"uint256"},{name:"nftCollateralAddress",type:"address"},{name:"principalAddress",type:"address"},{name:"principalAmount",type:"uint256"},{name:"startTime",type:"uint256"},{name:"duration",type:"uint256"},{name:"source",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]}]}]);var $=class extends g{constructor({walletClient:e}){let{AuctionLoanLiquidator:{v5:t}}=I(e.chain);super({walletClient:e,address:t,abi:qe})}async placeBid({collectionContractAddress:e,tokenId:t,bid:n,auction:a}){let i=await this.safeContractWrite.placeBid([e,t,a,n]);return{txHash:i,waitTxInBlock:async()=>{let r=await this.bcClient.waitForTransactionReceipt({hash:i}),s=await this.contract.createEventFilter.BidPlaced(),o=d(r,s);if(o.length===0)throw new Error("Bid not placed");return{...o[0].args,...r}}}}getRemainingLockupSeconds(){return 0}async settleAuctionWithBuyout(){throw new Error("Not implemented for V2")}async settleAuction({auction:e,loan:t}){let n=await this.safeContractWrite.settleAuction([e,t]);return{txHash:n,waitTxInBlock:async()=>{let a=await this.bcClient.waitForTransactionReceipt({hash:n}),i=await this.contract.createEventFilter.AuctionSettled(),r=d(a,i);if(r.length===0)throw new Error("Auction not settled");return{...r[0].args,...a}}}}};l($,"AllV5");var je=[{type:"constructor",inputs:[{name:"liquidationDistributor",internalType:"address",type:"address"},{name:"currencyManager",internalType:"address",type:"address"},{name:"collectionManager",internalType:"address",type:"address"},{name:"loanManagerRegistry",internalType:"address",type:"address"},{name:"triggerFee",internalType:"uint256",type:"uint256"},{name:"maxExtension",internalType:"uint96",type:"uint96"},{name:"timeForMainLenderToBuy",internalType:"uint256",type:"uint256"}],stateMutability:"nonpayable"},{type:"error",inputs:[],name:"AddressZeroError"},{type:"error",inputs:[],name:"AuctionAlreadyInProgressError"},{type:"error",inputs:[{name:"_expiration",internalType:"uint96",type:"uint96"}],name:"AuctionNotOverError"},{type:"error",inputs:[{name:"_expiration",internalType:"uint96",type:"uint96"}],name:"AuctionOverError"},{type:"error",inputs:[],name:"CollectionNotWhitelistedError"},{type:"error",inputs:[],name:"CouldNotModifyValidLoansError"},{type:"error",inputs:[],name:"CurrencyNotWhitelistedError"},{type:"error",inputs:[],name:"InvalidHashAuctionError"},{type:"error",inputs:[],name:"InvalidInputError"},{type:"error",inputs:[{name:"triggerFee",internalType:"uint256",type:"uint256"}],name:"InvalidTriggerFee"},{type:"error",inputs:[{name:"_loan",internalType:"address",type:"address"}],name:"LoanNotAcceptedError"},{type:"error",inputs:[{name:"_minBid",internalType:"uint256",type:"uint256"}],name:"MinBidError"},{type:"error",inputs:[{name:"_owner",internalType:"address",type:"address"}],name:"NFTNotOwnedError"},{type:"error",inputs:[],name:"NoBidsError"},{type:"error",inputs:[],name:"NotMainLenderError"},{type:"error",inputs:[{name:"timeLimit",internalType:"uint256",type:"uint256"}],name:"OptionToBuyExpiredError"},{type:"error",inputs:[{name:"timeLimit",internalType:"uint256",type:"uint256"}],name:"OptionToBuyStilValidError"},{type:"event",anonymous:!1,inputs:[{name:"loanContract",internalType:"address",type:"address",indexed:!1},{name:"loanId",internalType:"uint256",type:"uint256",indexed:!1},{name:"collection",internalType:"address",type:"address",indexed:!1},{name:"tokenId",internalType:"uint256",type:"uint256",indexed:!1},{name:"asset",internalType:"address",type:"address",indexed:!1},{name:"proceeds",internalType:"uint256",type:"uint256",indexed:!1},{name:"settler",internalType:"address",type:"address",indexed:!1},{name:"triggerFee",internalType:"uint256",type:"uint256",indexed:!1}],name:"AuctionSettled"},{type:"event",anonymous:!1,inputs:[{name:"loanAddress",internalType:"address",type:"address",indexed:!1},{name:"loanId",internalType:"uint256",type:"uint256",indexed:!1},{name:"nftAddress",internalType:"address",type:"address",indexed:!1},{name:"tokenId",internalType:"uint256",type:"uint256",indexed:!1},{name:"largestTrancheIdx",internalType:"uint256",type:"uint256",indexed:!1}],name:"AuctionSettledWithBuyout"},{type:"event",anonymous:!1,inputs:[{name:"collection",internalType:"address",type:"address",indexed:!1},{name:"tokenId",internalType:"uint256",type:"uint256",indexed:!1},{name:"newBidder",internalType:"address",type:"address",indexed:!1},{name:"bid",internalType:"uint256",type:"uint256",indexed:!1},{name:"loanAddress",internalType:"address",type:"address",indexed:!1},{name:"loanId",internalType:"uint256",type:"uint256",indexed:!1}],name:"BidPlaced"},{type:"event",anonymous:!1,inputs:[{name:"liquidationDistributor",internalType:"address",type:"address",indexed:!1}],name:"LiquidationDistributorUpdated"},{type:"event",anonymous:!1,inputs:[{name:"loan",internalType:"address",type:"address",indexed:!1}],name:"LoanContractAdded"},{type:"event",anonymous:!1,inputs:[{name:"loan",internalType:"address",type:"address",indexed:!1}],name:"LoanContractRemoved"},{type:"event",anonymous:!1,inputs:[{name:"collection",internalType:"address",type:"address",indexed:!1},{name:"tokenId",internalType:"uint256",type:"uint256",indexed:!1},{name:"auction",internalType:"struct IAuctionLoanLiquidator.Auction",type:"tuple",components:[{name:"loanAddress",internalType:"address",type:"address"},{name:"loanId",internalType:"uint256",type:"uint256"},{name:"highestBid",internalType:"uint256",type:"uint256"},{name:"triggerFee",internalType:"uint256",type:"uint256"},{name:"minBid",internalType:"uint256",type:"uint256"},{name:"highestBidder",internalType:"address",type:"address"},{name:"duration",internalType:"uint96",type:"uint96"},{name:"asset",internalType:"address",type:"address"},{name:"startTime",internalType:"uint96",type:"uint96"},{name:"originator",internalType:"address",type:"address"},{name:"lastBidTime",internalType:"uint96",type:"uint96"}],indexed:!1}],name:"LoanLiquidationStarted"},{type:"event",anonymous:!1,inputs:[{name:"user",internalType:"address",type:"address",indexed:!0},{name:"newOwner",internalType:"address",type:"address",indexed:!0}],name:"OwnershipTransferred"},{type:"event",anonymous:!1,inputs:[{name:"timeForMainLenderToBuy",internalType:"uint256",type:"uint256",indexed:!1}],name:"TimeForMainLenderToBuyUpdated"},{type:"event",anonymous:!1,inputs:[{name:"triggerFee",internalType:"uint256",type:"uint256",indexed:!1}],name:"TriggerFeeUpdated"},{type:"function",inputs:[],name:"MAX_TIME_FOR_MAIN_LENDER_TO_BUY",outputs:[{name:"",internalType:"uint256",type:"uint256"}],stateMutability:"view"},{type:"function",inputs:[],name:"MAX_TRIGGER_FEE",outputs:[{name:"",internalType:"uint256",type:"uint256"}],stateMutability:"view"},{type:"function",inputs:[],name:"MIN_INCREMENT_BPS",outputs:[{name:"",internalType:"uint256",type:"uint256"}],stateMutability:"view"},{type:"function",inputs:[{name:"_loanContract",internalType:"address",type:"address"}],name:"addLoanContract",outputs:[],stateMutability:"nonpayable"},{type:"function",inputs:[{name:"_nftAddress",internalType:"address",type:"address"},{name:"_tokenId",internalType:"uint256",type:"uint256"}],name:"getAuctionHash",outputs:[{name:"",internalType:"bytes32",type:"bytes32"}],stateMutability:"view"},{type:"function",inputs:[],name:"getLiquidationDistributor",outputs:[{name:"",internalType:"address",type:"address"}],stateMutability:"view"},{type:"function",inputs:[],name:"getLoanManagerRegistry",outputs:[{name:"",internalType:"contract ILoanManagerRegistry",type:"address"}],stateMutability:"view"},{type:"function",inputs:[],name:"getMaxExtension",outputs:[{name:"",internalType:"uint96",type:"uint96"}],stateMutability:"view"},{type:"function",inputs:[],name:"getTimeForMainLenderToBuy",outputs:[{name:"",internalType:"uint256",type:"uint256"}],stateMutability:"view"},{type:"function",inputs:[],name:"getTriggerFee",outputs:[{name:"",internalType:"uint256",type:"uint256"}],stateMutability:"view"},{type:"function",inputs:[],name:"getValidLoanContracts",outputs:[{name:"",internalType:"address[]",type:"address[]"}],stateMutability:"view"},{type:"function",inputs:[{name:"_loanId",internalType:"uint256",type:"uint256"},{name:"_nftAddress",internalType:"address",type:"address"},{name:"_tokenId",internalType:"uint256",type:"uint256"},{name:"_asset",internalType:"address",type:"address"},{name:"_duration",internalType:"uint96",type:"uint96"},{name:"_minBid",internalType:"uint256",type:"uint256"},{name:"_originator",internalType:"address",type:"address"}],name:"liquidateLoan",outputs:[{name:"",internalType:"bytes",type:"bytes"}],stateMutability:"nonpayable"},{type:"function",inputs:[{name:"",internalType:"address",type:"address"},{name:"",internalType:"address",type:"address"},{name:"",internalType:"uint256",type:"uint256"},{name:"",internalType:"bytes",type:"bytes"}],name:"onERC721Received",outputs:[{name:"",internalType:"bytes4",type:"bytes4"}],stateMutability:"nonpayable"},{type:"function",inputs:[],name:"owner",outputs:[{name:"",internalType:"address",type:"address"}],stateMutability:"view"},{type:"function",inputs:[{name:"_nftAddress",internalType:"address",type:"address"},{name:"_tokenId",internalType:"uint256",type:"uint256"},{name:"_auction",internalType:"struct IAuctionLoanLiquidator.Auction",type:"tuple",components:[{name:"loanAddress",internalType:"address",type:"address"},{name:"loanId",internalType:"uint256",type:"uint256"},{name:"highestBid",internalType:"uint256",type:"uint256"},{name:"triggerFee",internalType:"uint256",type:"uint256"},{name:"minBid",internalType:"uint256",type:"uint256"},{name:"highestBidder",internalType:"address",type:"address"},{name:"duration",internalType:"uint96",type:"uint96"},{name:"asset",internalType:"address",type:"address"},{name:"startTime",internalType:"uint96",type:"uint96"},{name:"originator",internalType:"address",type:"address"},{name:"lastBidTime",internalType:"uint96",type:"uint96"}]},{name:"_bid",internalType:"uint256",type:"uint256"}],name:"placeBid",outputs:[{name:"",internalType:"struct IAuctionLoanLiquidator.Auction",type:"tuple",components:[{name:"loanAddress",internalType:"address",type:"address"},{name:"loanId",internalType:"uint256",type:"uint256"},{name:"highestBid",internalType:"uint256",type:"uint256"},{name:"triggerFee",internalType:"uint256",type:"uint256"},{name:"minBid",internalType:"uint256",type:"uint256"},{name:"highestBidder",internalType:"address",type:"address"},{name:"duration",internalType:"uint96",type:"uint96"},{name:"asset",internalType:"address",type:"address"},{name:"startTime",internalType:"uint96",type:"uint96"},{name:"originator",internalType:"address",type:"address"},{name:"lastBidTime",internalType:"uint96",type:"uint96"}]}],stateMutability:"nonpayable"},{type:"function",inputs:[{name:"_loanContract",internalType:"address",type:"address"}],name:"removeLoanContract",outputs:[],stateMutability:"nonpayable"},{type:"function",inputs:[{name:"__timeForMainLenderToBuy",internalType:"uint256",type:"uint256"}],name:"setTimeForMainLenderToBuy",outputs:[],stateMutability:"nonpayable"},{type:"function",inputs:[{name:"_auction",internalType:"struct IAuctionLoanLiquidator.Auction",type:"tuple",components:[{name:"loanAddress",internalType:"address",type:"address"},{name:"loanId",internalType:"uint256",type:"uint256"},{name:"highestBid",internalType:"uint256",type:"uint256"},{name:"triggerFee",internalType:"uint256",type:"uint256"},{name:"minBid",internalType:"uint256",type:"uint256"},{name:"highestBidder",internalType:"address",type:"address"},{name:"duration",internalType:"uint96",type:"uint96"},{name:"asset",internalType:"address",type:"address"},{name:"startTime",internalType:"uint96",type:"uint96"},{name:"originator",internalType:"address",type:"address"},{name:"lastBidTime",internalType:"uint96",type:"uint96"}]},{name:"_loan",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"tranche",internalType:"struct IMultiSourceLoan.Tranche[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"floor",internalType:"uint256",type:"uint256"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]},{name:"protocolFee",internalType:"uint256",type:"uint256"}]}],name:"settleAuction",outputs:[],stateMutability:"nonpayable"},{type:"function",inputs:[{name:"_nftAddress",internalType:"address",type:"address"},{name:"_tokenId",internalType:"uint256",type:"uint256"},{name:"_auction",internalType:"struct IAuctionLoanLiquidator.Auction",type:"tuple",components:[{name:"loanAddress",internalType:"address",type:"address"},{name:"loanId",internalType:"uint256",type:"uint256"},{name:"highestBid",internalType:"uint256",type:"uint256"},{name:"triggerFee",internalType:"uint256",type:"uint256"},{name:"minBid",internalType:"uint256",type:"uint256"},{name:"highestBidder",internalType:"address",type:"address"},{name:"duration",internalType:"uint96",type:"uint96"},{name:"asset",internalType:"address",type:"address"},{name:"startTime",internalType:"uint96",type:"uint96"},{name:"originator",internalType:"address",type:"address"},{name:"lastBidTime",internalType:"uint96",type:"uint96"}]},{name:"_loan",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"tranche",internalType:"struct IMultiSourceLoan.Tranche[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"floor",internalType:"uint256",type:"uint256"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]},{name:"protocolFee",internalType:"uint256",type:"uint256"}]}],name:"settleWithBuyout",outputs:[],stateMutability:"nonpayable"},{type:"function",inputs:[{name:"newOwner",internalType:"address",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"nonpayable"},{type:"function",inputs:[{name:"__liquidationDistributor",internalType:"address",type:"address"}],name:"updateLiquidationDistributor",outputs:[],stateMutability:"nonpayable"},{type:"function",inputs:[{name:"triggerFee",internalType:"uint256",type:"uint256"}],name:"updateTriggerFee",outputs:[],stateMutability:"nonpayable"}];var R=[{type:"constructor",inputs:[{name:"loanLiquidator",internalType:"address",type:"address"},{name:"protocolFee",internalType:"struct WithProtocolFee.ProtocolFee",type:"tuple",components:[{name:"recipient",internalType:"address",type:"address"},{name:"fraction",internalType:"uint256",type:"uint256"}]},{name:"currencyManager",internalType:"address",type:"address"},{name:"collectionManager",internalType:"address",type:"address"},{name:"maxTranches",internalType:"uint256",type:"uint256"},{name:"minLockPeriod",internalType:"uint256",type:"uint256"},{name:"delegateRegistry",internalType:"address",type:"address"},{name:"loanManagerRegistry",internalType:"address",type:"address"},{name:"flashActionContract",internalType:"address",type:"address"},{name:"minWaitTime",internalType:"uint256",type:"uint256"}],stateMutability:"nonpayable"},{type:"error",inputs:[],name:"AddressZeroError"},{type:"error",inputs:[{name:"_lender",internalType:"address",type:"address"},{name:"_offerId",internalType:"uint256",type:"uint256"}],name:"CancelledOrExecutedOfferError"},{type:"error",inputs:[],name:"CollectionNotWhitelistedError"},{type:"error",inputs:[],name:"CurrencyNotWhitelistedError"},{type:"error",inputs:[],name:"ECDSAInvalidSignature"},{type:"error",inputs:[{name:"length",internalType:"uint256",type:"uint256"}],name:"ECDSAInvalidSignatureLength"},{type:"error",inputs:[{name:"s",internalType:"bytes32",type:"bytes32"}],name:"ECDSAInvalidSignatureS"},{type:"error",inputs:[{name:"_expirationTime",internalType:"uint256",type:"uint256"}],name:"ExpiredOfferError"},{type:"error",inputs:[],name:"InvalidAddressesError"},{type:"error",inputs:[{name:"_amount",internalType:"uint256",type:"uint256"},{name:"_principalAmount",internalType:"uint256",type:"uint256"}],name:"InvalidAmountError"},{type:"error",inputs:[],name:"InvalidCallbackError"},{type:"error",inputs:[],name:"InvalidCallerError"},{type:"error",inputs:[],name:"InvalidCollateralIdError"},{type:"error",inputs:[],name:"InvalidDurationError"},{type:"error",inputs:[],name:"InvalidInputError"},{type:"error",inputs:[{name:"_loanId",internalType:"uint256",type:"uint256"}],name:"InvalidLoanError"},{type:"error",inputs:[],name:"InvalidMethodError"},{type:"error",inputs:[],name:"InvalidParametersError"},{type:"error",inputs:[{name:"_fraction",internalType:"uint256",type:"uint256"}],name:"InvalidProtocolFeeError"},{type:"error",inputs:[],name:"InvalidRenegotiationOfferError"},{type:"error",inputs:[],name:"InvalidSignatureError"},{type:"error",inputs:[],name:"InvalidTrancheError"},{type:"error",inputs:[{name:"_liquidator",internalType:"address",type:"address"}],name:"LiquidatorOnlyError"},{type:"error",inputs:[],name:"LoanExpiredError"},{type:"error",inputs:[],name:"LoanLockedError"},{type:"error",inputs:[{name:"_expirationTime",internalType:"uint256",type:"uint256"}],name:"LoanNotDueError"},{type:"error",inputs:[{name:"_lender",internalType:"address",type:"address"},{name:"_newMinOfferId",internalType:"uint256",type:"uint256"},{name:"_minOfferId",internalType:"uint256",type:"uint256"}],name:"LowOfferIdError"},{type:"error",inputs:[{name:"_lender",internalType:"address",type:"address"},{name:"_newMinRenegotiationOfferId",internalType:"uint256",type:"uint256"},{name:"_minOfferId",internalType:"uint256",type:"uint256"}],name:"LowRenegotiationOfferIdError"},{type:"error",inputs:[],name:"MaxCapacityExceededError"},{type:"error",inputs:[],name:"MismatchError"},{type:"error",inputs:[{name:"i",internalType:"uint256",type:"uint256"},{name:"returndata",internalType:"bytes",type:"bytes"}],name:"MulticallFailed"},{type:"error",inputs:[],name:"NFTNotReturnedError"},{type:"error",inputs:[],name:"NotStrictlyImprovedError"},{type:"error",inputs:[{name:"_pendingProtocolFeeSetTime",internalType:"uint256",type:"uint256"}],name:"TooEarlyError"},{type:"error",inputs:[],name:"TooManyTranchesError"},{type:"error",inputs:[],name:"TooSoonError"},{type:"error",inputs:[{name:"minTimestamp",internalType:"uint256",type:"uint256"}],name:"TrancheCannotBeRefinancedError"},{type:"error",inputs:[],name:"ZeroInterestError"},{type:"event",anonymous:!1,inputs:[{name:"lender",internalType:"address",type:"address",indexed:!1},{name:"minOfferId",internalType:"uint256",type:"uint256",indexed:!1}],name:"AllOffersCancelled"},{type:"event",anonymous:!1,inputs:[{name:"newdelegateRegistry",internalType:"address",type:"address",indexed:!1}],name:"DelegateRegistryUpdated"},{type:"event",anonymous:!1,inputs:[{name:"loanId",internalType:"uint256",type:"uint256",indexed:!1},{name:"delegate",internalType:"address",type:"address",indexed:!1},{name:"value",internalType:"bool",type:"bool",indexed:!1}],name:"Delegated"},{type:"event",anonymous:!1,inputs:[{name:"newFlashActionContract",internalType:"address",type:"address",indexed:!1}],name:"FlashActionContractUpdated"},{type:"event",anonymous:!1,inputs:[{name:"loanId",internalType:"uint256",type:"uint256",indexed:!1},{name:"target",internalType:"address",type:"address",indexed:!1},{name:"data",internalType:"bytes",type:"bytes",indexed:!1}],name:"FlashActionExecuted"},{type:"event",anonymous:!1,inputs:[{name:"newDuration",internalType:"uint256",type:"uint256",indexed:!1}],name:"LiquidationAuctionDurationUpdated"},{type:"event",anonymous:!1,inputs:[{name:"liquidator",internalType:"address",type:"address",indexed:!1}],name:"LiquidationContractUpdated"},{type:"event",anonymous:!1,inputs:[{name:"loanId",internalType:"uint256",type:"uint256",indexed:!1},{name:"offerId",internalType:"uint256[]",type:"uint256[]",indexed:!1},{name:"loan",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"tranche",internalType:"struct IMultiSourceLoan.Tranche[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"floor",internalType:"uint256",type:"uint256"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]},{name:"protocolFee",internalType:"uint256",type:"uint256"}],indexed:!1},{name:"fee",internalType:"uint256",type:"uint256",indexed:!1}],name:"LoanEmitted"},{type:"event",anonymous:!1,inputs:[{name:"loanId",internalType:"uint256",type:"uint256",indexed:!1}],name:"LoanForeclosed"},{type:"event",anonymous:!1,inputs:[{name:"loanId",internalType:"uint256",type:"uint256",indexed:!1}],name:"LoanLiquidated"},{type:"event",anonymous:!1,inputs:[{name:"renegotiationId",internalType:"uint256",type:"uint256",indexed:!1},{name:"oldLoanId",internalType:"uint256",type:"uint256",indexed:!1},{name:"newLoanId",internalType:"uint256",type:"uint256",indexed:!1},{name:"loan",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"tranche",internalType:"struct IMultiSourceLoan.Tranche[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"floor",internalType:"uint256",type:"uint256"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]},{name:"protocolFee",internalType:"uint256",type:"uint256"}],indexed:!1},{name:"fee",internalType:"uint256",type:"uint256",indexed:!1}],name:"LoanRefinanced"},{type:"event",anonymous:!1,inputs:[{name:"loanId",internalType:"uint256",type:"uint256",indexed:!1},{name:"newLoanId",internalType:"uint256",type:"uint256",indexed:!1},{name:"loan",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"tranche",internalType:"struct IMultiSourceLoan.Tranche[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"floor",internalType:"uint256",type:"uint256"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]},{name:"protocolFee",internalType:"uint256",type:"uint256"}],indexed:!1},{name:"offerIds",internalType:"uint256[]",type:"uint256[]",indexed:!1},{name:"totalFee",internalType:"uint256",type:"uint256",indexed:!1}],name:"LoanRefinancedFromNewOffers"},{type:"event",anonymous:!1,inputs:[{name:"loanId",internalType:"uint256",type:"uint256",indexed:!1},{name:"totalRepayment",internalType:"uint256",type:"uint256",indexed:!1},{name:"fee",internalType:"uint256",type:"uint256",indexed:!1}],name:"LoanRepaid"},{type:"event",anonymous:!1,inputs:[{name:"loanId",internalType:"uint256",type:"uint256",indexed:!1},{name:"liquidator",internalType:"address",type:"address",indexed:!1}],name:"LoanSentToLiquidator"},{type:"event",anonymous:!1,inputs:[{name:"_minimum",internalType:"uint256",type:"uint256",indexed:!1}],name:"MinAprImprovementUpdated"},{type:"event",anonymous:!1,inputs:[{name:"newMinBid",internalType:"uint256",type:"uint256",indexed:!1}],name:"MinBidLiquidationUpdated"},{type:"event",anonymous:!1,inputs:[{name:"minLockPeriod",internalType:"uint256",type:"uint256",indexed:!1}],name:"MinLockPeriodUpdated"},{type:"event",anonymous:!1,inputs:[{name:"lender",internalType:"address",type:"address",indexed:!1},{name:"offerId",internalType:"uint256",type:"uint256",indexed:!1}],name:"OfferCancelled"},{type:"event",anonymous:!1,inputs:[{name:"user",internalType:"address",type:"address",indexed:!0},{name:"newOwner",internalType:"address",type:"address",indexed:!0}],name:"OwnershipTransferred"},{type:"event",anonymous:!1,inputs:[{name:"fee",internalType:"struct WithProtocolFee.ProtocolFee",type:"tuple",components:[{name:"recipient",internalType:"address",type:"address"},{name:"fraction",internalType:"uint256",type:"uint256"}],indexed:!1}],name:"ProtocolFeePendingUpdate"},{type:"event",anonymous:!1,inputs:[{name:"fee",internalType:"struct WithProtocolFee.ProtocolFee",type:"tuple",components:[{name:"recipient",internalType:"address",type:"address"},{name:"fraction",internalType:"uint256",type:"uint256"}],indexed:!1}],name:"ProtocolFeeUpdated"},{type:"event",anonymous:!1,inputs:[{name:"lender",internalType:"address",type:"address",indexed:!1},{name:"renegotiationId",internalType:"uint256",type:"uint256",indexed:!1}],name:"RenegotiationOfferCancelled"},{type:"event",anonymous:!1,inputs:[{name:"delegate",internalType:"address",type:"address",indexed:!1},{name:"collection",internalType:"address",type:"address",indexed:!1},{name:"tokenId",internalType:"uint256",type:"uint256",indexed:!1}],name:"RevokeDelegate"},{type:"event",anonymous:!1,inputs:[{name:"loan",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"tranche",internalType:"struct IMultiSourceLoan.Tranche[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"floor",internalType:"uint256",type:"uint256"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]},{name:"protocolFee",internalType:"uint256",type:"uint256"}],indexed:!1},{name:"minTranche",internalType:"uint256",type:"uint256",indexed:!1},{name:"maxTranche",internalType:"uint256",type:"uint256",indexed:!1}],name:"TranchesMerged"},{type:"event",anonymous:!1,inputs:[{name:"newOwner",internalType:"address",type:"address",indexed:!1}],name:"TransferOwnerRequested"},{type:"event",anonymous:!1,inputs:[{name:"contractAdded",internalType:"address",type:"address",indexed:!1}],name:"WhitelistedCallbackContractAdded"},{type:"event",anonymous:!1,inputs:[{name:"contractRemoved",internalType:"address",type:"address",indexed:!1}],name:"WhitelistedCallbackContractRemoved"},{type:"function",inputs:[],name:"DOMAIN_SEPARATOR",outputs:[{name:"",internalType:"bytes32",type:"bytes32"}],stateMutability:"view"},{type:"function",inputs:[],name:"FEE_UPDATE_NOTICE",outputs:[{name:"",internalType:"uint256",type:"uint256"}],stateMutability:"view"},{type:"function",inputs:[],name:"INITIAL_DOMAIN_SEPARATOR",outputs:[{name:"",internalType:"bytes32",type:"bytes32"}],stateMutability:"view"},{type:"function",inputs:[],name:"MAX_AUCTION_DURATION",outputs:[{name:"",internalType:"uint48",type:"uint48"}],stateMutability:"view"},{type:"function",inputs:[],name:"MAX_PROTOCOL_FEE",outputs:[{name:"",internalType:"uint256",type:"uint256"}],stateMutability:"view"},{type:"function",inputs:[],name:"MIN_AUCTION_DURATION",outputs:[{name:"",internalType:"uint48",type:"uint48"}],stateMutability:"view"},{type:"function",inputs:[],name:"MIN_BID_LIQUIDATION",outputs:[{name:"",internalType:"uint256",type:"uint256"}],stateMutability:"view"},{type:"function",inputs:[],name:"MIN_WAIT_TIME",outputs:[{name:"",internalType:"uint256",type:"uint256"}],stateMutability:"view"},{type:"function",inputs:[],name:"VERSION",outputs:[{name:"",internalType:"bytes",type:"bytes"}],stateMutability:"view"},{type:"function",inputs:[{name:"_renegotiationOffer",internalType:"struct IMultiSourceLoan.RenegotiationOffer",type:"tuple",components:[{name:"renegotiationId",internalType:"uint256",type:"uint256"},{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"fee",internalType:"uint256",type:"uint256"},{name:"trancheIndex",internalType:"uint256[]",type:"uint256[]"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"},{name:"expirationTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"}]},{name:"_loan",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"tranche",internalType:"struct IMultiSourceLoan.Tranche[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"floor",internalType:"uint256",type:"uint256"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]},{name:"protocolFee",internalType:"uint256",type:"uint256"}]},{name:"_renegotiationOfferSignature",internalType:"bytes",type:"bytes"}],name:"addNewTranche",outputs:[{name:"",internalType:"uint256",type:"uint256"},{name:"",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"tranche",internalType:"struct IMultiSourceLoan.Tranche[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"floor",internalType:"uint256",type:"uint256"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]},{name:"protocolFee",internalType:"uint256",type:"uint256"}]}],stateMutability:"nonpayable"},{type:"function",inputs:[{name:"_contract",internalType:"address",type:"address"}],name:"addWhitelistedCallbackContract",outputs:[],stateMutability:"nonpayable"},{type:"function",inputs:[{name:"_minOfferId",internalType:"uint256",type:"uint256"}],name:"cancelAllOffers",outputs:[],stateMutability:"nonpayable"},{type:"function",inputs:[{name:"_offerId",internalType:"uint256",type:"uint256"}],name:"cancelOffer",outputs:[],stateMutability:"nonpayable"},{type:"function",inputs:[{name:"_renegotiationId",internalType:"uint256",type:"uint256"}],name:"cancelRenegotiationOffer",outputs:[],stateMutability:"nonpayable"},{type:"function",inputs:[{name:"_loanId",internalType:"uint256",type:"uint256"},{name:"loan",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"tranche",internalType:"struct IMultiSourceLoan.Tranche[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"floor",internalType:"uint256",type:"uint256"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]},{name:"protocolFee",internalType:"uint256",type:"uint256"}]},{name:"_delegate",internalType:"address",type:"address"},{name:"_rights",internalType:"bytes32",type:"bytes32"},{name:"_value",internalType:"bool",type:"bool"}],name:"delegate",outputs:[],stateMutability:"nonpayable"},{type:"function",inputs:[{name:"_loanExecutionData",internalType:"struct IMultiSourceLoan.LoanExecutionData",type:"tuple",components:[{name:"executionData",internalType:"struct IMultiSourceLoan.ExecutionData",type:"tuple",components:[{name:"offerExecution",internalType:"struct IMultiSourceLoan.OfferExecution[]",type:"tuple[]",components:[{name:"offer",internalType:"struct IMultiSourceLoan.LoanOffer",type:"tuple",components:[{name:"offerId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"fee",internalType:"uint256",type:"uint256"},{name:"capacity",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"},{name:"expirationTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"maxSeniorRepayment",internalType:"uint256",type:"uint256"},{name:"validators",internalType:"struct IBaseLoan.OfferValidator[]",type:"tuple[]",components:[{name:"validator",internalType:"address",type:"address"},{name:"arguments",internalType:"bytes",type:"bytes"}]}]},{name:"amount",internalType:"uint256",type:"uint256"},{name:"lenderOfferSignature",internalType:"bytes",type:"bytes"}]},{name:"tokenId",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"expirationTime",internalType:"uint256",type:"uint256"},{name:"principalReceiver",internalType:"address",type:"address"},{name:"callbackData",internalType:"bytes",type:"bytes"}]},{name:"borrower",internalType:"address",type:"address"},{name:"borrowerOfferSignature",internalType:"bytes",type:"bytes"}]}],name:"emitLoan",outputs:[{name:"",internalType:"uint256",type:"uint256"},{name:"",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"tranche",internalType:"struct IMultiSourceLoan.Tranche[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"floor",internalType:"uint256",type:"uint256"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]},{name:"protocolFee",internalType:"uint256",type:"uint256"}]}],stateMutability:"nonpayable"},{type:"function",inputs:[{name:"_loanId",internalType:"uint256",type:"uint256"},{name:"_loan",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"tranche",internalType:"struct IMultiSourceLoan.Tranche[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"floor",internalType:"uint256",type:"uint256"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]},{name:"protocolFee",internalType:"uint256",type:"uint256"}]},{name:"_target",internalType:"address",type:"address"},{name:"_data",internalType:"bytes",type:"bytes"}],name:"executeFlashAction",outputs:[],stateMutability:"nonpayable"},{type:"function",inputs:[],name:"getCollectionManager",outputs:[{name:"",internalType:"address",type:"address"}],stateMutability:"view"},{type:"function",inputs:[],name:"getCurrencyManager",outputs:[{name:"",internalType:"address",type:"address"}],stateMutability:"view"},{type:"function",inputs:[],name:"getDelegateRegistry",outputs:[{name:"",internalType:"address",type:"address"}],stateMutability:"view"},{type:"function",inputs:[],name:"getFlashActionContract",outputs:[{name:"",internalType:"address",type:"address"}],stateMutability:"view"},{type:"function",inputs:[],name:"getLiquidationAuctionDuration",outputs:[{name:"",internalType:"uint48",type:"uint48"}],stateMutability:"view"},{type:"function",inputs:[],name:"getLiquidator",outputs:[{name:"",internalType:"address",type:"address"}],stateMutability:"view"},{type:"function",inputs:[{name:"_loanId",internalType:"uint256",type:"uint256"}],name:"getLoanHash",outputs:[{name:"",internalType:"bytes32",type:"bytes32"}],stateMutability:"view"},{type:"function",inputs:[],name:"getLoanManagerRegistry",outputs:[{name:"",internalType:"contract ILoanManagerRegistry",type:"address"}],stateMutability:"view"},{type:"function",inputs:[],name:"getMaxTranches",outputs:[{name:"",internalType:"uint256",type:"uint256"}],stateMutability:"view"},{type:"function",inputs:[],name:"getMinImprovementApr",outputs:[{name:"",internalType:"uint256",type:"uint256"}],stateMutability:"view"},{type:"function",inputs:[],name:"getMinLockPeriod",outputs:[{name:"",internalType:"uint256",type:"uint256"}],stateMutability:"view"},{type:"function",inputs:[{name:"_loanPrincipal",internalType:"uint256",type:"uint256"}],name:"getMinTranchePrincipal",outputs:[{name:"",internalType:"uint256",type:"uint256"}],stateMutability:"view"},{type:"function",inputs:[],name:"getPendingProtocolFee",outputs:[{name:"",internalType:"struct WithProtocolFee.ProtocolFee",type:"tuple",components:[{name:"recipient",internalType:"address",type:"address"},{name:"fraction",internalType:"uint256",type:"uint256"}]}],stateMutability:"view"},{type:"function",inputs:[],name:"getPendingProtocolFeeSetTime",outputs:[{name:"",internalType:"uint256",type:"uint256"}],stateMutability:"view"},{type:"function",inputs:[],name:"getProtocolFee",outputs:[{name:"",internalType:"struct WithProtocolFee.ProtocolFee",type:"tuple",components:[{name:"recipient",internalType:"address",type:"address"},{name:"fraction",internalType:"uint256",type:"uint256"}]}],stateMutability:"view"},{type:"function",inputs:[],name:"getTotalLoansIssued",outputs:[{name:"",internalType:"uint256",type:"uint256"}],stateMutability:"view"},{type:"function",inputs:[{name:"_lender",internalType:"address",type:"address"},{name:"_offerId",internalType:"uint256",type:"uint256"}],name:"getUsedCapacity",outputs:[{name:"",internalType:"uint256",type:"uint256"}],stateMutability:"view"},{type:"function",inputs:[{name:"user",internalType:"address",type:"address"},{name:"offerId",internalType:"uint256",type:"uint256"}],name:"isOfferCancelled",outputs:[{name:"notActive",internalType:"bool",type:"bool"}],stateMutability:"view"},{type:"function",inputs:[{name:"user",internalType:"address",type:"address"},{name:"renegotiationIf",internalType:"uint256",type:"uint256"}],name:"isRenegotiationOfferCancelled",outputs:[{name:"notActive",internalType:"bool",type:"bool"}],stateMutability:"view"},{type:"function",inputs:[{name:"_contract",internalType:"address",type:"address"}],name:"isWhitelistedCallbackContract",outputs:[{name:"",internalType:"bool",type:"bool"}],stateMutability:"view"},{type:"function",inputs:[{name:"_loanId",internalType:"uint256",type:"uint256"},{name:"_loan",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"tranche",internalType:"struct IMultiSourceLoan.Tranche[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"floor",internalType:"uint256",type:"uint256"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]},{name:"protocolFee",internalType:"uint256",type:"uint256"}]}],name:"liquidateLoan",outputs:[{name:"",internalType:"bytes",type:"bytes"}],stateMutability:"nonpayable"},{type:"function",inputs:[{name:"_loanId",internalType:"uint256",type:"uint256"},{name:"_loan",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"tranche",internalType:"struct IMultiSourceLoan.Tranche[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"floor",internalType:"uint256",type:"uint256"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]},{name:"protocolFee",internalType:"uint256",type:"uint256"}]}],name:"loanLiquidated",outputs:[],stateMutability:"nonpayable"},{type:"function",inputs:[{name:"_loanId",internalType:"uint256",type:"uint256"},{name:"_loan",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"tranche",internalType:"struct IMultiSourceLoan.Tranche[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"floor",internalType:"uint256",type:"uint256"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]},{name:"protocolFee",internalType:"uint256",type:"uint256"}]},{name:"_minTranche",internalType:"uint256",type:"uint256"},{name:"_maxTranche",internalType:"uint256",type:"uint256"}],name:"mergeTranches",outputs:[{name:"",internalType:"uint256",type:"uint256"},{name:"",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"tranche",internalType:"struct IMultiSourceLoan.Tranche[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"floor",internalType:"uint256",type:"uint256"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]},{name:"protocolFee",internalType:"uint256",type:"uint256"}]}],stateMutability:"nonpayable"},{type:"function",inputs:[{name:"user",internalType:"address",type:"address"}],name:"minOfferId",outputs:[{name:"minOfferId",internalType:"uint256",type:"uint256"}],stateMutability:"view"},{type:"function",inputs:[{name:"data",internalType:"bytes[]",type:"bytes[]"}],name:"multicall",outputs:[{name:"results",internalType:"bytes[]",type:"bytes[]"}],stateMutability:"payable"},{type:"function",inputs:[],name:"name",outputs:[{name:"",internalType:"string",type:"string"}],stateMutability:"view"},{type:"function",inputs:[{name:"",internalType:"address",type:"address"},{name:"",internalType:"address",type:"address"},{name:"",internalType:"uint256",type:"uint256"},{name:"",internalType:"bytes",type:"bytes"}],name:"onERC721Received",outputs:[{name:"",internalType:"bytes4",type:"bytes4"}],stateMutability:"nonpayable"},{type:"function",inputs:[],name:"owner",outputs:[{name:"",internalType:"address",type:"address"}],stateMutability:"view"},{type:"function",inputs:[],name:"pendingOwner",outputs:[{name:"",internalType:"address",type:"address"}],stateMutability:"view"},{type:"function",inputs:[],name:"pendingOwnerTime",outputs:[{name:"",internalType:"uint256",type:"uint256"}],stateMutability:"view"},{type:"function",inputs:[{name:"_loanId",internalType:"uint256",type:"uint256"},{name:"_loan",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"tranche",internalType:"struct IMultiSourceLoan.Tranche[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"floor",internalType:"uint256",type:"uint256"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]},{name:"protocolFee",internalType:"uint256",type:"uint256"}]},{name:"_loanExecutionData",internalType:"struct IMultiSourceLoan.LoanExecutionData",type:"tuple",components:[{name:"executionData",internalType:"struct IMultiSourceLoan.ExecutionData",type:"tuple",components:[{name:"offerExecution",internalType:"struct IMultiSourceLoan.OfferExecution[]",type:"tuple[]",components:[{name:"offer",internalType:"struct IMultiSourceLoan.LoanOffer",type:"tuple",components:[{name:"offerId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"fee",internalType:"uint256",type:"uint256"},{name:"capacity",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"},{name:"expirationTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"maxSeniorRepayment",internalType:"uint256",type:"uint256"},{name:"validators",internalType:"struct IBaseLoan.OfferValidator[]",type:"tuple[]",components:[{name:"validator",internalType:"address",type:"address"},{name:"arguments",internalType:"bytes",type:"bytes"}]}]},{name:"amount",internalType:"uint256",type:"uint256"},{name:"lenderOfferSignature",internalType:"bytes",type:"bytes"}]},{name:"tokenId",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"expirationTime",internalType:"uint256",type:"uint256"},{name:"principalReceiver",internalType:"address",type:"address"},{name:"callbackData",internalType:"bytes",type:"bytes"}]},{name:"borrower",internalType:"address",type:"address"},{name:"borrowerOfferSignature",internalType:"bytes",type:"bytes"}]}],name:"refinanceFromLoanExecutionData",outputs:[{name:"",internalType:"uint256",type:"uint256"},{name:"",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"tranche",internalType:"struct IMultiSourceLoan.Tranche[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"floor",internalType:"uint256",type:"uint256"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]},{name:"protocolFee",internalType:"uint256",type:"uint256"}]}],stateMutability:"nonpayable"},{type:"function",inputs:[{name:"_renegotiationOffer",internalType:"struct IMultiSourceLoan.RenegotiationOffer",type:"tuple",components:[{name:"renegotiationId",internalType:"uint256",type:"uint256"},{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"fee",internalType:"uint256",type:"uint256"},{name:"trancheIndex",internalType:"uint256[]",type:"uint256[]"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"},{name:"expirationTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"}]},{name:"_loan",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"tranche",internalType:"struct IMultiSourceLoan.Tranche[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"floor",internalType:"uint256",type:"uint256"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]},{name:"protocolFee",internalType:"uint256",type:"uint256"}]},{name:"_renegotiationOfferSignature",internalType:"bytes",type:"bytes"}],name:"refinanceFull",outputs:[{name:"",internalType:"uint256",type:"uint256"},{name:"",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"tranche",internalType:"struct IMultiSourceLoan.Tranche[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"floor",internalType:"uint256",type:"uint256"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]},{name:"protocolFee",internalType:"uint256",type:"uint256"}]}],stateMutability:"nonpayable"},{type:"function",inputs:[{name:"_renegotiationOffer",internalType:"struct IMultiSourceLoan.RenegotiationOffer",type:"tuple",components:[{name:"renegotiationId",internalType:"uint256",type:"uint256"},{name:"loanId",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"fee",internalType:"uint256",type:"uint256"},{name:"trancheIndex",internalType:"uint256[]",type:"uint256[]"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"},{name:"expirationTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"}]},{name:"_loan",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"tranche",internalType:"struct IMultiSourceLoan.Tranche[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"floor",internalType:"uint256",type:"uint256"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]},{name:"protocolFee",internalType:"uint256",type:"uint256"}]}],name:"refinancePartial",outputs:[{name:"",internalType:"uint256",type:"uint256"},{name:"",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"tranche",internalType:"struct IMultiSourceLoan.Tranche[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"floor",internalType:"uint256",type:"uint256"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]},{name:"protocolFee",internalType:"uint256",type:"uint256"}]}],stateMutability:"nonpayable"},{type:"function",inputs:[{name:"_contract",internalType:"address",type:"address"}],name:"removeWhitelistedCallbackContract",outputs:[],stateMutability:"nonpayable"},{type:"function",inputs:[{name:"_repaymentData",internalType:"struct IMultiSourceLoan.LoanRepaymentData",type:"tuple",components:[{name:"data",internalType:"struct IMultiSourceLoan.SignableRepaymentData",type:"tuple",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"callbackData",internalType:"bytes",type:"bytes"},{name:"shouldDelegate",internalType:"bool",type:"bool"}]},{name:"loan",internalType:"struct IMultiSourceLoan.Loan",type:"tuple",components:[{name:"borrower",internalType:"address",type:"address"},{name:"nftCollateralTokenId",internalType:"uint256",type:"uint256"},{name:"nftCollateralAddress",internalType:"address",type:"address"},{name:"principalAddress",internalType:"address",type:"address"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"duration",internalType:"uint256",type:"uint256"},{name:"tranche",internalType:"struct IMultiSourceLoan.Tranche[]",type:"tuple[]",components:[{name:"loanId",internalType:"uint256",type:"uint256"},{name:"floor",internalType:"uint256",type:"uint256"},{name:"principalAmount",internalType:"uint256",type:"uint256"},{name:"lender",internalType:"address",type:"address"},{name:"accruedInterest",internalType:"uint256",type:"uint256"},{name:"startTime",internalType:"uint256",type:"uint256"},{name:"aprBps",internalType:"uint256",type:"uint256"}]},{name:"protocolFee",internalType:"uint256",type:"uint256"}]},{name:"borrowerSignature",internalType:"bytes",type:"bytes"}]}],name:"repayLoan",outputs:[],stateMutability:"nonpayable"},{type:"function",inputs:[{name:"_newOwner",internalType:"address",type:"address"}],name:"requestTransferOwner",outputs:[],stateMutability:"nonpayable"},{type:"function",inputs:[{name:"_delegate",internalType:"address",type:"address"},{name:"_collection",internalType:"address",type:"address"},{name:"_tokenId",internalType:"uint256",type:"uint256"}],name:"revokeDelegate",outputs:[],stateMutability:"nonpayable"},{type:"function",inputs:[{name:"_newDelegateRegistry",internalType:"address",type:"address"}],name:"setDelegateRegistry",outputs:[],stateMutability:"nonpayable"},{type:"function",inputs:[{name:"_newFlashActionContract",internalType:"address",type:"address"}],name:"setFlashActionContract",outputs:[],stateMutability:"nonpayable"},{type:"function",inputs:[{name:"__minLockPeriod",internalType:"uint256",type:"uint256"}],name:"setMinLockPeriod",outputs:[],stateMutability:"nonpayable"},{type:"function",inputs:[],name:"setProtocolFee",outputs:[],stateMutability:"nonpayable"},{type:"function",inputs:[{name:"newOwner",internalType:"address",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"nonpayable"},{type:"function",inputs:[{name:"_newDuration",internalType:"uint48",type:"uint48"}],name:"updateLiquidationAuctionDuration",outputs:[],stateMutability:"nonpayable"},{type:"function",inputs:[{name:"__loanLiquidator",internalType:"address",type:"address"}],name:"updateLiquidationContract",outputs:[],stateMutability:"nonpayable"},{type:"function",inputs:[{name:"_newMinimum",internalType:"uint256",type:"uint256"}],name:"updateMinImprovementApr",outputs:[],stateMutability:"nonpayable"},{type:"function",inputs:[{name:"_newProtocolFee",internalType:"struct WithProtocolFee.ProtocolFee",type:"tuple",components:[{name:"recipient",internalType:"address",type:"address"},{name:"fraction",internalType:"uint256",type:"uint256"}]}],name:"updateProtocolFee",outputs:[],stateMutability:"nonpayable"}];var Ye=[{type:"constructor",inputs:[{name:"currencyManager",internalType:"address",type:"address"},{name:"collectionManager",internalType:"address",type:"address"},{name:"oldCollectionManager",internalType:"address",type:"address"}],stateMutability:"nonpayable"},{type:"error",inputs:[],name:"AssetNotOwnedError"},{type:"error",inputs:[],name:"CollectionNotWhitelistedError"},{type:"error",inputs:[],name:"CurrencyNotWhitelistedError"},{type:"error",inputs:[],name:"InvalidCallerError"},{type:"error",inputs:[],name:"LengthMismatchError"},{type:"error",inputs:[{name:"vaultId",internalType:"uint256",type:"uint256"}],name:"NotApprovedError"},{type:"error",inputs:[],name:"VaultNotExistsError"},{type:"error",inputs:[],name:"WithdrawingETHError"},{type:"error",inputs:[],name:"WrongMethodError"},{type:"event",anonymous:!1,inputs:[{name:"owner",internalType:"address",type:"address",indexed:!0},{name:"spender",internalType:"address",type:"address",indexed:!0},{name:"id",internalType:"uint256",type:"uint256",indexed:!0}],name:"Approval"},{type:"event",anonymous:!1,inputs:[{name:"owner",internalType:"address",type:"address",indexed:!0},{name:"operator",internalType:"address",type:"address",indexed:!0},{name:"approved",internalType:"bool",type:"bool",indexed:!1}],name:"ApprovalForAll"},{type:"event",anonymous:!1,inputs:[{name:"vaultId",internalType:"uint256",type:"uint256",indexed:!1},{name:"token",internalType:"address",type:"address",indexed:!1},{name:"amount",internalType:"uint256",type:"uint256",indexed:!1}],name:"ERC20Deposited"},{type:"event",anonymous:!1,inputs:[{name:"vaultId",internalType:"uint256",type:"uint256",indexed:!1},{name:"token",internalType:"address",type:"address",indexed:!1},{name:"amount",internalType:"uint256",type:"uint256",indexed:!1}],name:"ERC20Withdrawn"},{type:"event",anonymous:!1,inputs:[{name:"vaultId",internalType:"uint256",type:"uint256",indexed:!1},{name:"collection",internalType:"address",type:"address",indexed:!1},{name:"tokenId",internalType:"uint256",type:"uint256",indexed:!1}],name:"ERC721Deposited"},{type:"event",anonymous:!1,inputs:[{name:"vaultId",internalType:"uint256",type:"uint256",indexed:!1},{name:"collection",internalType:"address",type:"address",indexed:!1},{name:"tokenId",internalType:"uint256",type:"uint256",indexed:!1}],name:"ERC721Withdrawn"},{type:"event",anonymous:!1,inputs:[{name:"vaultId",internalType:"uint256",type:"uint256",indexed:!1},{name:"collection",internalType:"address",type:"address",indexed:!1},{name:"tokenId",internalType:"uint256",type:"uint256",indexed:!1}],name:"OldERC721Deposited"},{type:"event",anonymous:!1,inputs:[{name:"vaultId",internalType:"uint256",type:"uint256",indexed:!1},{name:"collection",internalType:"address",type:"address",indexed:!1},{name:"tokenId",internalType:"uint256",type:"uint256",indexed:!1}],name:"OldERC721Withdrawn"},{type:"event",anonymous:!1,inputs:[{name:"user",internalType:"address",type:"address",indexed:!0},{name:"newOwner",internalType:"address",type:"address",indexed:!0}],name:"OwnershipTransferred"},{type:"event",anonymous:!1,inputs:[{name:"from",internalType:"address",type:"address",indexed:!0},{name:"to",internalType:"address",type:"address",indexed:!0},{name:"id",internalType:"uint256",type:"uint256",indexed:!0}],name:"Transfer"},{type:"function",inputs:[{name:"_vaultId",internalType:"uint256",type:"uint256"},{name:"_token",internalType:"address",type:"address"}],name:"ERC20BalanceOf",outputs:[{name:"",internalType:"uint256",type:"uint256"}],stateMutability:"view"},{type:"function",inputs:[{name:"_collection",internalType:"address",type:"address"},{name:"_tokenId",internalType:"uint256",type:"uint256"}],name:"ERC721OwnerOf",outputs:[{name:"",internalType:"uint256",type:"uint256"}],stateMutability:"view"},{type:"function",inputs:[],name:"ETH",outputs:[{name:"",internalType:"address",type:"address"}],stateMutability:"view"},{type:"function",inputs:[{name:"_collection",internalType:"address",type:"address"},{name:"_tokenId",internalType:"uint256",type:"uint256"}],name:"OldERC721OwnerOf",outputs:[{name:"",internalType:"uint256",type:"uint256"}],stateMutability:"view"},{type:"function",inputs:[{name:"spender",internalType:"address",type:"address"},{name:"id",internalType:"uint256",type:"uint256"}],name:"approve",outputs:[],stateMutability:"nonpayable"},{type:"function",inputs:[{name:"owner",internalType:"address",type:"address"}],name:"balanceOf",outputs:[{name:"",internalType:"uint256",type:"uint256"}],stateMutability:"view"},{type:"function",inputs:[{name:"_vaultId",internalType:"uint256",type:"uint256"},{name:"_assetRecipient",internalType:"address",type:"address"}],name:"burn",outputs:[],stateMutability:"nonpayable"},{type:"function",inputs:[{name:"_vaultId",internalType:"uint256",type:"uint256"},{name:"_collections",internalType:"address[]",type:"address[]"},{name:"_tokenIds",internalType:"uint256[]",type:"uint256[]"},{name:"_oldCollections",internalType:"address[]",type:"address[]"},{name:"_oldTokenIds",internalType:"uint256[]",type:"uint256[]"},{name:"_tokens",internalType:"address[]",type:"address[]"}],name:"burnAndWithdraw",outputs:[],stateMutability:"nonpayable"},{type:"function",inputs:[{name:"_vaultId",internalType:"uint256",type:"uint256"},{name:"_token",internalType:"address",type:"address"},{name:"_amount",internalType:"uint256",type:"uint256"}],name:"depositERC20",outputs:[],stateMutability:"nonpayable"},{type:"function",inputs:[{name:"_vaultId",internalType:"uint256",type:"uint256"},{name:"_collection",internalType:"address",type:"address"},{name:"_tokenId",internalType:"uint256",type:"uint256"}],name:"depositERC721",outputs:[],stateMutability:"nonpayable"},{type:"function",inputs:[{name:"_vaultId",internalType:"uint256",type:"uint256"},{name:"_collection",internalType:"address",type:"address"},{name:"_tokenIds",internalType:"uint256[]",type:"uint256[]"}],name:"depositERC721s",outputs:[],stateMutability:"nonpayable"},{type:"function",inputs:[{name:"_vaultId",internalType:"uint256",type:"uint256"}],name:"depositEth",outputs:[],stateMutability:"payable"},{type:"function",inputs:[{name:"_vaultId",internalType:"uint256",type:"uint256"},{name:"_collection",internalType:"address",type:"address"},{name:"_tokenId",internalType:"uint256",type:"uint256"}],name:"depositOldERC721",outputs:[],stateMutability:"nonpayable"},{type:"function",inputs:[{name:"_vaultId",internalType:"uint256",type:"uint256"},{name:"_collection",internalType:"address",type:"address"},{name:"_tokenIds",internalType:"uint256[]",type:"uint256[]"}],name:"depositOldERC721s",outputs:[],stateMutability:"nonpayable"},{type:"function",inputs:[{name:"",internalType:"uint256",type:"uint256"}],name:"getApproved",outputs:[{name:"",internalType:"address",type:"address"}],stateMutability:"view"},{type:"function",inputs:[{name:"",internalType:"address",type:"address"},{name:"",internalType:"address",type:"address"}],name:"isApprovedForAll",outputs:[{name:"",internalType:"bool",type:"bool"}],stateMutability:"view"},{type:"function",inputs:[],name:"mint",outputs:[{name:"",internalType:"uint256",type:"uint256"}],stateMutability:"nonpayable"},{type:"function",inputs:[],name:"name",outputs:[{name:"",internalType:"string",type:"string"}],stateMutability:"view"},{type:"function",inputs:[{name:"",internalType:"address",type:"address"},{name:"",internalType:"address",type:"address"},{name:"",internalType:"uint256",type:"uint256"},{name:"",internalType:"bytes",type:"bytes"}],name:"onERC721Received",outputs:[{name:"",internalType:"bytes4",type:"bytes4"}],stateMutability:"nonpayable"},{type:"function",inputs:[],name:"owner",outputs:[{name:"",internalType:"address",type:"address"}],stateMutability:"view"},{type:"function",inputs:[{name:"id",internalType:"uint256",type:"uint256"}],name:"ownerOf",outputs:[{name:"owner",internalType:"address",type:"address"}],stateMutability:"view"},{type:"function",inputs:[{name:"from",internalType:"address",type:"address"},{name:"to",internalType:"address",type:"address"},{name:"id",internalType:"uint256",type:"uint256"}],name:"safeTransferFrom",outputs:[],stateMutability:"nonpayable"},{type:"function",inputs:[{name:"from",internalType:"address",type:"address"},{name:"to",internalType:"address",type:"address"},{name:"id",internalType:"uint256",type:"uint256"},{name:"data",internalType:"bytes",type:"bytes"}],name:"safeTransferFrom",outputs:[],stateMutability:"nonpayable"},{type:"function",inputs:[{name:"operator",internalType:"address",type:"address"},{name:"approved",internalType:"bool",type:"bool"}],name:"setApprovalForAll",outputs:[],stateMutability:"nonpayable"},{type:"function",inputs:[{name:"interfaceId",internalType:"bytes4",type:"bytes4"}],name:"supportsInterface",outputs:[{name:"",internalType:"bool",type:"bool"}],stateMutability:"view"},{type:"function",inputs:[],name:"symbol",outputs:[{name:"",internalType:"string",type:"string"}],stateMutability:"view"},{type:"function",inputs:[{name:"_vaultId",internalType:"uint256",type:"uint256"}],name:"tokenURI",outputs:[{name:"",internalType:"string",type:"string"}],stateMutability:"pure"},{type:"function",inputs:[{name:"from",internalType:"address",type:"address"},{name:"to",internalType:"address",type:"address"},{name:"id",internalType:"uint256",type:"uint256"}],name:"transferFrom",outputs:[],stateMutability:"nonpayable"},{type:"function",inputs:[{name:"newOwner",internalType:"address",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"nonpayable"},{type:"function",inputs:[{name:"_vaultId",internalType:"uint256",type:"uint256"},{name:"_token",internalType:"address",type:"address"}],name:"withdrawERC20",outputs:[],stateMutability:"nonpayable"},{type:"function",inputs:[{name:"_vaultId",internalType:"uint256",type:"uint256"},{name:"_tokens",internalType:"address[]",type:"address[]"}],name:"withdrawERC20s",outputs:[],stateMutability:"nonpayable"},{type:"function",inputs:[{name:"_vaultId",internalType:"uint256",type:"uint256"},{name:"_collection",internalType:"address",type:"address"},{name:"_tokenId",internalType:"uint256",type:"uint256"}],name:"withdrawERC721",outputs:[],stateMutability:"nonpayable"},{type:"function",inputs:[{name:"_vaultId",internalType:"uint256",type:"uint256"},{name:"_collections",internalType:"address[]",type:"address[]"},{name:"_tokenIds",internalType:"uint256[]",type:"uint256[]"}],name:"withdrawERC721s",outputs:[],stateMutability:"nonpayable"},{type:"function",inputs:[{name:"_vaultId",internalType:"uint256",type:"uint256"}],name:"withdrawEth",outputs:[],stateMutability:"nonpayable"},{type:"function",inputs:[{name:"_vaultId",internalType:"uint256",type:"uint256"},{name:"_collection",internalType:"address",type:"address"},{name:"_tokenId",internalType:"uint256",type:"uint256"}],name:"withdrawOldERC721",outputs:[],stateMutability:"nonpayable"},{type:"function",inputs:[{name:"_vaultId",internalType:"uint256",type:"uint256"},{name:"_collections",internalType:"address[]",type:"address[]"},{name:"_tokenIds",internalType:"uint256[]",type:"uint256[]"}],name:"withdrawOldERC721s",outputs:[],stateMutability:"nonpayable"}];var le=l(p=>Number(p.valueOf()),"toInteger"),Q=l(p=>le(p)/1e4,"bpsToPercentage"),D=l((p,e)=>{if(p.length)return typeof p[0]?.[e]=="bigint"?p.reduce((t,n)=>t+BigInt(n[e]),0n):p.reduce((t,n)=>t+Number(n[e]),0)},"sumBy"),Je=l((p,e)=>{if(p.length)return typeof p[0]?.[e]=="bigint"?p.reduce((t,n)=>BigInt(n[e])>t?BigInt(n[e]):t,0n):p.reduce((t,n)=>Number(n[e])>t?Number(n[e]):t,0)},"maxBy"),et=l((p,e)=>p===void 0?e:e===void 0||p<e?p:e,"min");var Fe=60,de=Fe*60*24,A=l(p=>Math.ceil(le(p)/1e3),"millisToSeconds"),z=l(p=>le(p)*1e3,"secondsToMillis");var G=class extends g{constructor({walletClient:e}){let{AuctionLoanLiquidator:{v6:t}}=I(e.chain);super({walletClient:e,address:t,abi:je})}async placeBid({collectionContractAddress:e,tokenId:t,bid:n,auction:a}){let i=await this.safeContractWrite.placeBid([e,t,this.mapAuctionToAuctionArgs(a),n]);return{txHash:i,waitTxInBlock:async()=>{let r=await this.bcClient.waitForTransactionReceipt({hash:i}),s=await this.contract.createEventFilter.BidPlaced(),o=d(r,s);if(o.length===0)throw new Error("Bid not placed");return{...o[0].args,...r}}}}async getRemainingLockupSeconds({auction:e}){let t=await this.contract.read.getTimeForMainLenderToBuy(),n=Number(t),a=Math.ceil(A(Date.now())-Number(e.startTime));return a>=n?0:n-a}async settleAuctionWithBuyout({auction:e,loan:t}){let n=await this.safeContractWrite.settleWithBuyout([t.nftCollateralAddress,t.nftCollateralTokenId,this.mapAuctionToAuctionArgs(e),t]);return{txHash:n,waitTxInBlock:async()=>{let a=await this.bcClient.waitForTransactionReceipt({hash:n}),i=await this.contract.createEventFilter.AuctionSettledWithBuyout(),r=d(a,i);if(r.length===0)throw new Error("Auction not settled");return{...r[0].args,...a}}}}async settleAuction({auction:e,loan:t}){let n=await this.safeContractWrite.settleAuction([this.mapAuctionToAuctionArgs(e),t]);return{txHash:n,waitTxInBlock:async()=>{let a=await this.bcClient.waitForTransactionReceipt({hash:n}),i=await this.contract.createEventFilter.AuctionSettled(),r=d(a,i);if(r.length===0)throw new Error("Auction not settled");return{...r[0].args,...a}}}}mapAuctionToAuctionArgs(e){if("minBid"in e)return e;throw new Error("minBid is required for v6 auctions")}};l(G,"AllV6");import{encodeFunctionData as dn}from"viem";var tt=[{constant:!0,inputs:[],name:"name",outputs:[{name:"",type:"string"}],payable:!1,type:"function",stateMutability:"view"},{constant:!0,inputs:[{name:"",type:"uint256"}],name:"punksOfferedForSale",outputs:[{name:"isForSale",type:"bool"},{name:"punkIndex",type:"uint256"},{name:"seller",type:"address"},{name:"minValue",type:"uint256"},{name:"onlySellTo",type:"address"}],payable:!1,type:"function",stateMutability:"view"},{constant:!1,inputs:[{name:"punkIndex",type:"uint256"}],name:"enterBidForPunk",outputs:[],payable:!0,type:"function",stateMutability:"payable"},{constant:!0,inputs:[],name:"totalSupply",outputs:[{name:"",type:"uint256"}],payable:!1,type:"function",stateMutability:"view"},{constant:!1,inputs:[{name:"punkIndex",type:"uint256"},{name:"minPrice",type:"uint256"}],name:"acceptBidForPunk",outputs:[],payable:!1,type:"function",stateMutability:"nonpayable"},{constant:!0,inputs:[],name:"decimals",outputs:[{name:"",type:"uint8"}],payable:!1,type:"function",stateMutability:"view"},{constant:!1,inputs:[{name:"addresses",type:"address[]"},{name:"indices",type:"uint256[]"}],name:"setInitialOwners",outputs:[],payable:!1,type:"function",stateMutability:"nonpayable"},{constant:!1,inputs:[],name:"withdraw",outputs:[],payable:!1,type:"function",stateMutability:"nonpayable"},{constant:!0,inputs:[],name:"imageHash",outputs:[{name:"",type:"string"}],payable:!1,type:"function",stateMutability:"view"},{constant:!0,inputs:[],name:"nextPunkIndexToAssign",outputs:[{name:"",type:"uint256"}],payable:!1,type:"function",stateMutability:"view"},{constant:!0,inputs:[{name:"",type:"uint256"}],name:"punkIndexToAddress",outputs:[{name:"",type:"address"}],payable:!1,type:"function",stateMutability:"view"},{constant:!0,inputs:[],name:"standard",outputs:[{name:"",type:"string"}],payable:!1,type:"function",stateMutability:"view"},{constant:!0,inputs:[{name:"",type:"uint256"}],name:"punkBids",outputs:[{name:"hasBid",type:"bool"},{name:"punkIndex",type:"uint256"},{name:"bidder",type:"address"},{name:"value",type:"uint256"}],payable:!1,type:"function",stateMutability:"view"},{constant:!0,inputs:[{name:"",type:"address"}],name:"balanceOf",outputs:[{name:"",type:"uint256"}],payable:!1,type:"function",stateMutability:"view"},{constant:!1,inputs:[],name:"allInitialOwnersAssigned",outputs:[],payable:!1,type:"function",stateMutability:"nonpayable"},{constant:!0,inputs:[],name:"allPunksAssigned",outputs:[{name:"",type:"bool"}],payable:!1,type:"function",stateMutability:"view"},{constant:!1,inputs:[{name:"punkIndex",type:"uint256"}],name:"buyPunk",outputs:[],payable:!0,type:"function",stateMutability:"payable"},{constant:!1,inputs:[{name:"to",type:"address"},{name:"punkIndex",type:"uint256"}],name:"transferPunk",outputs:[],payable:!1,type:"function",stateMutability:"nonpayable"},{constant:!0,inputs:[],name:"symbol",outputs:[{name:"",type:"string"}],payable:!1,type:"function",stateMutability:"view"},{constant:!1,inputs:[{name:"punkIndex",type:"uint256"}],name:"withdrawBidForPunk",outputs:[],payable:!1,type:"function",stateMutability:"nonpayable"},{constant:!1,inputs:[{name:"to",type:"address"},{name:"punkIndex",type:"uint256"}],name:"setInitialOwner",outputs:[],payable:!1,type:"function",stateMutability:"nonpayable"},{constant:!1,inputs:[{name:"punkIndex",type:"uint256"},{name:"minSalePriceInWei",type:"uint256"},{name:"toAddress",type:"address"}],name:"offerPunkForSaleToAddress",outputs:[],payable:!1,type:"function",stateMutability:"nonpayable"},{constant:!0,inputs:[],name:"punksRemainingToAssign",outputs:[{name:"",type:"uint256"}],payable:!1,type:"function",stateMutability:"view"},{constant:!1,inputs:[{name:"punkIndex",type:"uint256"},{name:"minSalePriceInWei",type:"uint256"}],name:"offerPunkForSale",outputs:[],payable:!1,type:"function",stateMutability:"nonpayable"},{constant:!1,inputs:[{name:"punkIndex",type:"uint256"}],name:"getPunk",outputs:[],payable:!1,type:"function",stateMutability:"nonpayable"},{constant:!0,inputs:[{name:"",type:"address"}],name:"pendingWithdrawals",outputs:[{name:"",type:"uint256"}],payable:!1,type:"function",stateMutability:"view"},{constant:!1,inputs:[{name:"punkIndex",type:"uint256"}],name:"punkNoLongerForSale",outputs:[],payable:!1,type:"function",stateMutability:"nonpayable"},{inputs:[],payable:!0,type:"constructor",stateMutability:"payable"},{anonymous:!1,inputs:[{indexed:!0,name:"to",type:"address"},{indexed:!1,name:"punkIndex",type:"uint256"}],name:"Assign",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"from",type:"address"},{indexed:!0,name:"to",type:"address"},{indexed:!1,name:"value",type:"uint256"}],name:"Transfer",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"from",type:"address"},{indexed:!0,name:"to",type:"address"},{indexed:!1,name:"punkIndex",type:"uint256"}],name:"PunkTransfer",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"punkIndex",type:"uint256"},{indexed:!1,name:"minValue",type:"uint256"},{indexed:!0,name:"toAddress",type:"address"}],name:"PunkOffered",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"punkIndex",type:"uint256"},{indexed:!1,name:"value",type:"uint256"},{indexed:!0,name:"fromAddress",type:"address"}],name:"PunkBidEntered",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"punkIndex",type:"uint256"},{indexed:!1,name:"value",type:"uint256"},{indexed:!0,name:"fromAddress",type:"address"}],name:"PunkBidWithdrawn",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"punkIndex",type:"uint256"},{indexed:!1,name:"value",type:"uint256"},{indexed:!0,name:"fromAddress",type:"address"},{indexed:!0,name:"toAddress",type:"address"}],name:"PunkBought",type:"event"},{anonymous:!1,inputs:[{indexed:!0,name:"punkIndex",type:"uint256"}],name:"PunkNoLongerForSale",type:"event"}];var X=class extends g{constructor({walletClient:e}){let{CryptoPunksAddress:t}=I(e.chain);super({walletClient:e,address:t,abi:tt})}async encodeBuyPunk(e){return dn({abi:this.abi,functionName:"buyPunk",args:[e]})}};l(X,"CryptoPunks");import{encodeFunctionData as nt}from"viem";var Z=class extends g{mslAddress;constructor({walletClient:e,mslAddress:t}){let{LeverageAddress:n}=I(e.chain);super({walletClient:e,address:n,abi:We}),this.mslAddress=t}getDomain(){return{name:L,version:"2",chainId:this.wallet.chain.id,verifyingContract:this.mslAddress}}async signExecutionData(e){return this.wallet.signTypedData({domain:this.getDomain(),primaryType:"ExecutionData",types:{ExecutionData:[{name:"offer",type:"LoanOffer"},{name:"tokenId",type:"uint256"},{name:"amount",type:"uint256"},{name:"expirationTime",type:"uint256"},{name:"callbackData",type:"bytes"}],LoanOffer:[{name:"offerId",type:"uint256"},{name:"lender",type:"address"},{name:"fee",type:"uint256"},{name:"borrower",type:"address"},{name:"capacity",type:"uint256"},{name:"nftCollateralAddress",type:"address"},{name:"nftCollateralTokenId",type:"uint256"},{name:"principalAddress",type:"address"},{name:"principalAmount",type:"uint256"},{name:"aprBps",type:"uint256"},{name:"expirationTime",type:"uint256"},{name:"duration",type:"uint256"},{name:"validators",type:"OfferValidator[]"}],OfferValidator:[{name:"validator",type:"address"},{name:"arguments",type:"bytes"}]},message:e})}async signRepaymentData(e){return this.wallet.signTypedData({domain:this.getDomain(),primaryType:"SignableRepaymentData",types:{SignableRepaymentData:[{name:"loanId",type:"uint256"},{name:"callbackData",type:"bytes"},{name:"shouldDelegate",type:"bool"}]},message:e})}async buy({leverageBuyData:e,ethToSend:t}){let n=await this.safeContractWrite.buy([await Promise.all(e.map(async a=>{let i={offer:a.offer,tokenId:a.nft.tokenId,amount:a.amount,expirationTime:a.expirationTime,callbackData:a.callbackData};return nt({abi:h,functionName:"emitLoan",args:[{executionData:i,lender:a.offer.lender,borrower:this.wallet.account.address,lenderOfferSignature:a.offer.signature,borrowerOfferSignature:await this.signExecutionData(i)}]})}))],{value:t});return{txHash:n,waitTxInBlock:async()=>{let a=await this.bcClient.waitForTransactionReceipt({hash:n}),i=await this.contract.createEventFilter.BNPLLoansStarted(),r=d(a,i);if(r.length===0)throw new Error("BNPL Loans not started");return{...r[0].args,...a}}}}async sell({loan:e,callbackData:t,shouldDelegate:n,loanId:a}){let i={loanId:a,callbackData:t,shouldDelegate:n},r=await this.safeContractWrite.sell([[nt({abi:h,functionName:"repayLoan",args:[{data:i,loan:e,borrowerSignature:await this.signRepaymentData(i)}]})]]);return{txHash:r,waitTxInBlock:async()=>{let s=await this.bcClient.waitForTransactionReceipt({hash:r}),o=await this.contract.createEventFilter.SellAndRepayExecuted(),y=d(s,o);if(y.length===0)throw new Error("Sell and repay not executed");return{...y[0].args,...s}}}}};l(Z,"LeverageV5");import{zeroAddress as mn}from"viem";import{isAddress as un}from"viem";var ue=l((p,e)=>({...p,loanId:e,strictImprovement:p.strictImprovement??!1,lender:p.lenderAddress,signer:p.signerAddress??x,fee:p.feeAmount,trancheIndex:p.trancheIndex??[],targetPrincipal:p.targetPrincipal??[]}),"renegotiationToMslRenegotiation"),S=l(p=>{let e=p.nftCollateralAddress??x;if(M(x,e)||!un(e))throw new Error("nftCollateralAddress is required");let t;"source"in p?t=p.source.map(a=>({...a,floor:0n})):t=p.tranche;let n;return"protocolFee"in p?n=p.protocolFee:n=0n,{...p,nftCollateralAddress:e,source:t,tranche:t,protocolFee:n}},"loanToMslLoan"),at=l(({loanId:p,loan:e,trancheIndex:t,address:n})=>{let a=S(e),i=t?{trancheIndex:a.source.map((r,s)=>BigInt(s)),targetPrincipal:[]}:{trancheIndex:[],targetPrincipal:a.source.map(()=>0n)};return{loanId:p,lenderAddress:n,signerAddress:n,expirationTime:BigInt(A(Date.now())),aprBps:0n,feeAmount:0n,duration:a.duration,principalAmount:a.principalAmount,...i}},"generateFakeRenegotiationInput"),V=l(p=>{let e=S(p);return Je(e.source,"loanId")??0n},"getMslLoanId"),me=l(p=>{let e=new Date,t=new Date(z(p.startTime)+z(p.duration));return t.getTime()<e.getTime()?0:A(t.getTime()-e.getTime())},"getRemainingSeconds");var j=class extends g{constructor({walletClient:e}){let{MultiSourceLoan:{v4:t}}=I(e.chain);super({walletClient:e,address:t,abi:Ze})}getDomain(){return{name:L,version:"1",chainId:this.wallet.chain.id,verifyingContract:this.address}}async signOffer({structToSign:e}){return this.wallet.signTypedData({domain:this.getDomain(),primaryType:"LoanOffer",types:{LoanOffer:[{name:"offerId",type:"uint256"},{name:"lender",type:"address"},{name:"fee",type:"uint256"},{name:"borrower",type:"address"},{name:"capacity",type:"uint256"},{name:"signer",type:"address"},{name:"requiresLiquidation",type:"bool"},{name:"nftCollateralAddress",type:"address"},{name:"nftCollateralTokenId",type:"uint256"},{name:"principalAddress",type:"address"},{name:"principalAmount",type:"uint256"},{name:"aprBps",type:"uint256"},{name:"expirationTime",type:"uint256"},{name:"duration",type:"uint256"},{name:"validators",type:"OfferValidator[]"}],OfferValidator:[{name:"validator",type:"address"},{name:"arguments",type:"bytes"}]},message:e})}async signRenegotiationOffer({structToSign:e}){return this.wallet.signTypedData({domain:this.getDomain(),primaryType:"RenegotiationOffer",types:{RenegotiationOffer:[{name:"renegotiationId",type:"uint256"},{name:"loanId",type:"uint256"},{name:"lender",type:"address"},{name:"fee",type:"uint256"},{name:"signer",type:"address"},{name:"targetPrincipal",type:"uint256[]"},{name:"principalAmount",type:"uint256"},{name:"aprBps",type:"uint256"},{name:"expirationTime",type:"uint256"},{name:"duration",type:"uint256"},{name:"strictImprovement",type:"bool"}]},message:e})}async cancelOffer({id:e}){let t=await this.safeContractWrite.cancelOffer([this.wallet.account.address,e]);return{txHash:t,waitTxInBlock:async()=>{let n=await this.bcClient.waitForTransactionReceipt({hash:t}),a=await this.contract.createEventFilter.OfferCancelled(),i=d(n,a);if(i.length===0)throw new Error("Offer not cancelled");return{...i[0].args,...n}}}}async cancelAllOffers({minId:e}){let t=await this.safeContractWrite.cancelAllOffers([this.wallet.account.address,e]);return{txHash:t,waitTxInBlock:async()=>{let n=await this.bcClient.waitForTransactionReceipt({hash:t}),a=await this.contract.createEventFilter.AllOffersCancelled(),i=d(n,a);if(i.length===0)throw new Error("Offers not cancelled");return{...i[0].args,...n}}}}async cancelRefinanceOffer({id:e}){let t=await this.safeContractWrite.cancelRenegotiationOffer([this.wallet.account.address,e]);return{txHash:t,waitTxInBlock:async()=>{let n=await this.bcClient.waitForTransactionReceipt({hash:t}),a=await this.contract.createEventFilter.RenegotiationOfferCancelled(),i=d(n,a);if(i.length===0)throw new Error("Offer not cancelled");return{...i[0].args,...n}}}}async cancelAllRenegotiations({minId:e}){let t=await this.safeContractWrite.cancelAllRenegotiationOffers([this.wallet.account.address,e]);return{txHash:t,waitTxInBlock:async()=>{let n=await this.bcClient.waitForTransactionReceipt({hash:t}),a=await this.contract.createEventFilter.RenegotiationOfferCancelled(),i=d(n,a);if(i.length===0)throw new Error("Offer not cancelled");return{...i[0].args,...n}}}}mapEmitLoanToMslEmitLoanArgs({offerExecution:e,tokenId:t}){let{offer:n,lenderOfferSignature:a}=e[0];return[{...n,signer:n.signerAddress??mn,lender:n.lenderAddress,borrower:n.borrowerAddress,validators:n.offerValidators,requiresLiquidation:!!n.requiresLiquidation},t,a,!1]}async emitLoan(e){let t=this.mapEmitLoanToMslEmitLoanArgs(e),n=await this.safeContractWrite.emitLoan(t);return{txHash:n,waitTxInBlock:async()=>{let a=await this.bcClient.waitForTransactionReceipt({hash:n}),i=await this.contract.createEventFilter.LoanEmitted(),r=d(a,i);if(r.length===0)throw new Error("Loan not emitted");let s=r[0].args;return{loan:{id:`${this.contract.address.toLowerCase()}.${s.loanId}`,...s.loan,contractAddress:this.contract.address},loanId:s.loanId,offerId:`${this.contract.address.toLowerCase()}.${t[0].lender.toLowerCase()}.${s.offerId}`,...a}}}}async repayLoan({loan:e,nftReceiver:t,loanId:n}){let a=t??this.wallet.account.address,i=await this.safeContractWrite.repayLoan([a,n,e,!1]);return{txHash:i,waitTxInBlock:async()=>{let r=await this.bcClient.waitForTransactionReceipt({hash:i}),s=await this.contract.createEventFilter.LoanRepaid(),o=d(r,s);if(o.length===0)throw new Error("Loan not repaid");return{...o[0].args,...r}}}}getRemainingLockupSeconds(){return 0}isEndLockedUp(){return!1}async refinanceBatch({renegotiationId:e,refinancings:t}){let n=[],a=[];t.forEach(({loan:r,sources:s,newAprBps:o},y)=>{let u=r.source.map(({principalAmount:f,loanId:c})=>{let T=s.find(({source:v})=>v.loanId===c);return f-(T?.refinancingPrincipal??0n)}),m=D(s,"refinancingPrincipal")??0n;n.push({renegotiationId:e+BigInt(y),loanId:V(r),lender:this.wallet.account.address,fee:0n,signer:this.wallet.account.address,targetPrincipal:u,principalAmount:m,aprBps:o,expirationTime:BigInt(A(Date.now())+Fe),duration:0n,strictImprovement:!0}),a.push(r)});let i=await this.safeContractWrite.refinancePartialBatch([n,a]);return{txHash:i,waitTxInBlock:async()=>{let r=await this.bcClient.waitForTransactionReceipt({hash:i}),s=await this.contract.createEventFilter.LoanRefinanced(),o=d(r,s);if(o.length!==t.length)throw new Error("Loan not refinanced");return{results:o.map(({args:u})=>u),...r}}}}async refinanceFullLoan({offer:e,signature:t,loan:n}){return this.executeRenegotiation({offer:e,executeRenegotiationTxn:()=>this.safeContractWrite.refinanceFull([e,n,t])})}async refinancePartialLoan({offer:e,loan:t}){return this.executeRenegotiation({offer:e,executeRenegotiationTxn:()=>this.safeContractWrite.refinancePartial([e,t])})}async executeRenegotiation({offer:e,executeRenegotiationTxn:t}){let n=await t();return{txHash:n,waitTxInBlock:async()=>{let a=await this.bcClient.waitForTransactionReceipt({hash:n}),i=await this.contract.createEventFilter.LoanRefinanced(),r=d(a,i);if(r.length===0)throw new Error("Loan not refinanced");let s=r[0].args;return{loan:{id:`${this.contract.address.toLowerCase()}.${s.newLoanId}`,...s.loan,contractAddress:this.contract.address},loanId:s.newLoanId,renegotiationId:`${this.contract.address.toLowerCase()}.${e.lender.toLowerCase()}.${s.renegotiationId}`,...a}}}}async extendLoan(){throw new Error("Not implemented for V1")}async mergeTranches(){throw new Error("Not implemented for V1")}async addTranche(){throw new Error("Not implemented for V1")}async refinanceFromOffers(){throw new Error("Not implemented for V1")}async delegateMulticall(){throw new Error("Not implemented for V1")}async delegate(){throw new Error("Not implemented for V1")}async revokeDelegate(){throw new Error("Not implemented for V1")}async revokeDelegationsAndEmitLoan(){throw new Error("Not implemented for V1")}async liquidateLoan({loan:e,loanId:t}){let n=await this.safeContractWrite.liquidateLoan([t,e]);return{txHash:n,waitTxInBlock:async()=>{let a=await this.bcClient.waitForTransactionReceipt({hash:n}),i=await this.contract.createEventFilter.LoanForeclosed(),r=await this.contract.createEventFilter.LoanSentToLiquidator(),s=d(a,i),o=d(a,r);if(s.length===0&&o.length===0)throw new Error("Loan not liquidated");return{...s?.[0]?.args??o?.[0]?.args,...a}}}}};l(j,"MslV4");import{encodeFunctionData as Y}from"viem";var J=class extends g{constructor({walletClient:e}){let{MultiSourceLoan:{v5:t}}=I(e.chain);super({walletClient:e,address:t,abi:h})}getDomain(){return{name:L,version:"2",chainId:this.wallet.chain.id,verifyingContract:this.address}}async signOffer({structToSign:e}){return this.wallet.signTypedData({domain:this.getDomain(),primaryType:"LoanOffer",types:{LoanOffer:[{name:"offerId",type:"uint256"},{name:"lender",type:"address"},{name:"fee",type:"uint256"},{name:"borrower",type:"address"},{name:"capacity",type:"uint256"},{name:"nftCollateralAddress",type:"address"},{name:"nftCollateralTokenId",type:"uint256"},{name:"principalAddress",type:"address"},{name:"principalAmount",type:"uint256"},{name:"aprBps",type:"uint256"},{name:"expirationTime",type:"uint256"},{name:"duration",type:"uint256"},{name:"validators",type:"OfferValidator[]"}],OfferValidator:[{name:"validator",type:"address"},{name:"arguments",type:"bytes"}]},message:e})}async signRenegotiationOffer({structToSign:e}){return this.wallet.signTypedData({domain:this.getDomain(),primaryType:"RenegotiationOffer",types:{RenegotiationOffer:[{name:"renegotiationId",type:"uint256"},{name:"loanId",type:"uint256"},{name:"lender",type:"address"},{name:"fee",type:"uint256"},{name:"targetPrincipal",type:"uint256[]"},{name:"principalAmount",type:"uint256"},{name:"aprBps",type:"uint256"},{name:"expirationTime",type:"uint256"},{name:"duration",type:"uint256"}]},message:e})}async cancelOffer({id:e}){let t=await this.safeContractWrite.cancelOffer([e]);return{txHash:t,waitTxInBlock:async()=>{let n=await this.bcClient.waitForTransactionReceipt({hash:t}),a=await this.contract.createEventFilter.OfferCancelled(),i=d(n,a);if(i.length===0)throw new Error("Offer not cancelled");return{...i[0].args,...n}}}}async cancelAllOffers({minId:e}){let t=await this.safeContractWrite.cancelAllOffers([e]);return{txHash:t,waitTxInBlock:async()=>{let n=await this.bcClient.waitForTransactionReceipt({hash:t}),a=await this.contract.createEventFilter.AllOffersCancelled(),i=d(n,a);if(i.length===0)throw new Error("Offers not cancelled");return{...i[0].args,...n}}}}async cancelRefinanceOffer({id:e}){let t=await this.safeContractWrite.cancelRenegotiationOffer([e]);return{txHash:t,waitTxInBlock:async()=>{let n=await this.bcClient.waitForTransactionReceipt({hash:t}),a=await this.contract.createEventFilter.RenegotiationOfferCancelled(),i=d(n,a);if(i.length===0)throw new Error("Renegotiation offer not cancelled");return{...i[0].args,...n}}}}async cancelAllRenegotiations({minId:e}){let t=await this.safeContractWrite.cancelAllRenegotiationOffers([e]);return{txHash:t,waitTxInBlock:async()=>{let n=await this.bcClient.waitForTransactionReceipt({hash:t}),a=await this.contract.createEventFilter.AllRenegotiationOffersCancelled(),i=d(n,a);if(i.length===0)throw new Error("Renegotiation offers not cancelled");return{...i[0].args,...n}}}}mapEmitLoanToMslEmitLoanArgs({offerExecution:e,tokenId:t,expirationTime:n}){let{offer:a,amount:i,lenderOfferSignature:r}=e[0];return{executionData:{offer:{...a,lender:a.lenderAddress,borrower:a.borrowerAddress,validators:a.offerValidators},tokenId:t,amount:i??a.principalAmount,expirationTime:n??BigInt(A(Date.now())+de),callbackData:"0x"},lender:a.lenderAddress,borrower:this.wallet.account.address,lenderOfferSignature:r,borrowerOfferSignature:"0x"}}async emitLoan(e){let t=this.mapEmitLoanToMslEmitLoanArgs(e),n=await this.safeContractWrite.emitLoan([t]);return{txHash:n,waitTxInBlock:async()=>{let a=await this.bcClient.waitForTransactionReceipt({hash:n}),i=await this.contract.createEventFilter.LoanEmitted(),r=d(a,i);if(r.length===0)throw new Error("Loan not emitted");let s=r[0].args;return{loan:{id:`${this.contract.address.toLowerCase()}.${s.loanId}`,...s.loan,contractAddress:this.contract.address},loanId:s.loanId,offerId:`${this.contract.address.toLowerCase()}.${t.lender.toLowerCase()}.${s.offerId}`,...a}}}}async revokeDelegationsAndEmitLoan({delegations:e,emit:t}){if(e.length===0)throw new Error("At least one delegation must be revoked");let n=this.mapEmitLoanToMslEmitLoanArgs(t),{tokenId:a,offer:i}=n.executionData,r=e.map(y=>Y({abi:h,functionName:"revokeDelegate",args:[y,i.nftCollateralAddress,a]})),s=Y({abi:h,functionName:"emitLoan",args:[n]}),o=await this.safeContractWrite.multicall([[...r,s]]);return{txHash:o,waitTxInBlock:async()=>{let y=await this.bcClient.waitForTransactionReceipt({hash:o}),u=await this.contract.createEventFilter.RevokeDelegate(),m=d(y,u);if(m.length!==e.length)throw new Error("Revoke delegations failed");let f=await this.contract.createEventFilter.LoanEmitted(),c=d(y,f);if(c.length===0)throw new Error("Loan not emitted");let T=[...m.map(({args:w})=>w),...c.map(({args:w})=>w)],v=c[0].args;return{loan:{id:`${this.contract.address.toLowerCase()}.${v.loanId}`,...v.loan,contractAddress:this.contract.address},loanId:v.loanId,...y,results:T}}}}async repayLoan({loan:e,loanId:t}){let n={loanId:t,callbackData:"0x",shouldDelegate:!1},a=await this.safeContractWrite.repayLoan([{data:n,loan:e,borrowerSignature:"0x"}]);return{txHash:a,waitTxInBlock:async()=>{let i=await this.bcClient.waitForTransactionReceipt({hash:a}),r=await this.contract.createEventFilter.LoanRepaid(),s=d(i,r);if(s.length===0)throw new Error("Loan not repaid");return{...s[0].args,...i}}}}async getRemainingLockupSeconds({loan:e}){let t=e.source[0],a=e.startTime+e.duration-t.startTime,i=await this.contract.read.getMinLockPeriod(),r=Q(i),s=Math.ceil(Number(a)*r),o=Math.ceil(A(Date.now())-Number(t.startTime));return o>=s?0:s-o}isEndLockedUp(){return!1}async refinanceBatch({renegotiationId:e,refinancings:t}){let n=t.map(({loan:i,sources:r,newAprBps:s},o)=>{let y=i.source.map(({principalAmount:c,loanId:T})=>{let v=r.find(({source:w})=>w.loanId===T);return c-(v?.refinancingPrincipal??0n)}),u=D(r,"refinancingPrincipal")??0n,m={renegotiationId:e+BigInt(o),loanId:V(i),lender:this.wallet.account.address,fee:0n,targetPrincipal:y,principalAmount:u,aprBps:s,expirationTime:BigInt(A(Date.now()))+k,duration:BigInt(me(i))+k};return u===i.principalAmount?Y({abi:h,functionName:"refinanceFull",args:[m,i,F]}):Y({abi:h,functionName:"refinancePartial",args:[{...m,duration:0n},i]})}),a=await this.safeContractWrite.multicall([n]);return{txHash:a,waitTxInBlock:async()=>{let i=await this.bcClient.waitForTransactionReceipt({hash:a}),r=await this.contract.createEventFilter.LoanRefinanced(),s=d(i,r);if(s.length!==t.length)throw new Error("Loan not refinanced");return{results:s.map(({args:y})=>y),...i}}}}async refinanceFullLoan({offer:e,signature:t,loan:n}){return this.executeRenegotiation({offer:e,executeRenegotiationTxn:()=>this.safeContractWrite.refinanceFull([e,n,t])})}async refinancePartialLoan({offer:e,loan:t}){return this.executeRenegotiation({offer:e,executeRenegotiationTxn:()=>this.safeContractWrite.refinancePartial([e,t])})}async executeRenegotiation({offer:e,executeRenegotiationTxn:t}){let n=await t();return{txHash:n,waitTxInBlock:async()=>{let a=await this.bcClient.waitForTransactionReceipt({hash:n}),i=await this.contract.createEventFilter.LoanRefinanced(),r=d(a,i);if(r.length===0)throw new Error("Loan not refinanced");let s=r[0].args;return{loan:{id:`${this.contract.address.toLowerCase()}.${s.newLoanId}`,...s.loan,contractAddress:this.contract.address},loanId:s.newLoanId,renegotiationId:`${this.contract.address.toLowerCase()}.${e.lender.toLowerCase()}.${s.renegotiationId}`,...a}}}}async extendLoan({loan:e,loanId:t,newDuration:n}){let a=await this.safeContractWrite.extendLoan([t,e,n-e.duration]);return{txHash:a,waitTxInBlock:async()=>{let i=await this.bcClient.waitForTransactionReceipt({hash:a}),r=await this.contract.createEventFilter.LoanExtended(),s=d(i,r);if(s.length===0)throw new Error("Loan not extended");let o=s[0].args;return{loan:{id:`${this.contract.address.toLowerCase()}.${o.newLoanId}`,...o.loan,contractAddress:this.contract.address},newLoanId:o.newLoanId,...i}}}}async mergeTranches(){throw new Error("Not implemented for V2")}async addTranche(){throw new Error("Not implemented for V2")}async refinanceFromOffers(){throw new Error("Not implemented for V2")}async delegateMulticall(e){if(e.length===0)throw new Error("At least one delegation must be revoked");let t=await this.safeContractWrite.multicall([e.map(n=>Y({abi:h,functionName:"delegate",args:[n.loanId,n.loan,n.to,n.rights??F,n.enable]}))]);return{txHash:t,waitTxInBlock:async()=>{let n=await this.bcClient.waitForTransactionReceipt({hash:t}),a=await this.contract.createEventFilter.Delegated(),i=d(n,a);if(i.length!==e.length)throw new Error("Delegate multicall failed");return{...n,results:i.map(({args:r})=>r)}}}}async delegate({loan:e,loanId:t,to:n,rights:a=F,enable:i}){let r=await this.safeContractWrite.delegate([t,e,n,a,i]);return{txHash:r,waitTxInBlock:async()=>{let s=await this.bcClient.waitForTransactionReceipt({hash:r}),o=await this.contract.createEventFilter.Delegated(),y=d(s,o);if(y.length===0)throw new Error("Token not delegated");let u=y[0].args;return{loan:{...e,loanId:t,contractAddress:this.contract.address},value:u.value,...s}}}}async revokeDelegate({to:e,collection:t,tokenId:n}){let a=await this.safeContractWrite.revokeDelegate([e,t,n]);return{txHash:a,waitTxInBlock:async()=>{let i=await this.bcClient.waitForTransactionReceipt({hash:a}),r=await this.contract.createEventFilter.RevokeDelegate(),s=d(i,r);if(s.length===0)throw new Error("Token delegation not revoked");return{...s[0].args,...i}}}}async liquidateLoan({loan:e,loanId:t}){let n=await this.safeContractWrite.liquidateLoan([t,e]);return{txHash:n,waitTxInBlock:async()=>{let a=await this.bcClient.waitForTransactionReceipt({hash:n}),i=await this.contract.createEventFilter.LoanForeclosed(),r=await this.contract.createEventFilter.LoanSentToLiquidator(),s=d(a,i),o=d(a,r);if(s.length===0&&o.length===0)throw new Error("Loan not liquidated");return{...s?.[0]?.args??o?.[0]?.args,...a}}}}};l(J,"MslV5");import{encodeFunctionData as ee}from"viem";var te=class extends g{constructor({walletClient:e}){let{MultiSourceLoan:{v6:t}}=I(e.chain);super({walletClient:e,address:t,abi:R})}getDomain(){return{name:L,version:"3",chainId:this.wallet.chain.id,verifyingContract:this.address}}async signOffer({structToSign:e}){return this.wallet.signTypedData({domain:this.getDomain(),primaryType:"LoanOffer",types:{LoanOffer:[{name:"offerId",type:"uint256"},{name:"lender",type:"address"},{name:"fee",type:"uint256"},{name:"capacity",type:"uint256"},{name:"nftCollateralAddress",type:"address"},{name:"nftCollateralTokenId",type:"uint256"},{name:"principalAddress",type:"address"},{name:"principalAmount",type:"uint256"},{name:"aprBps",type:"uint256"},{name:"expirationTime",type:"uint256"},{name:"duration",type:"uint256"},{name:"maxSeniorRepayment",type:"uint256"},{name:"validators",type:"OfferValidator[]"}],OfferValidator:[{name:"validator",type:"address"},{name:"arguments",type:"bytes"}]},message:e})}async signRenegotiationOffer({structToSign:e}){return this.wallet.signTypedData({domain:this.getDomain(),primaryType:"RenegotiationOffer",types:{RenegotiationOffer:[{name:"renegotiationId",type:"uint256"},{name:"loanId",type:"uint256"},{name:"lender",type:"address"},{name:"fee",type:"uint256"},{name:"trancheIndex",type:"uint256[]"},{name:"principalAmount",type:"uint256"},{name:"aprBps",type:"uint256"},{name:"expirationTime",type:"uint256"},{name:"duration",type:"uint256"}]},message:e})}async cancelOffer({id:e}){let t=await this.safeContractWrite.cancelOffer([e]);return{txHash:t,waitTxInBlock:async()=>{let n=await this.bcClient.waitForTransactionReceipt({hash:t}),a=await this.contract.createEventFilter.OfferCancelled(),i=d(n,a);if(i.length===0)throw new Error("Offer not cancelled");return{...i[0].args,...n}}}}async cancelAllOffers({minId:e}){let t=await this.safeContractWrite.cancelAllOffers([e]);return{txHash:t,waitTxInBlock:async()=>{let n=await this.bcClient.waitForTransactionReceipt({hash:t}),a=await this.contract.createEventFilter.AllOffersCancelled(),i=d(n,a);if(i.length===0)throw new Error("Offers not cancelled");return{...i[0].args,...n}}}}async cancelRefinanceOffer({id:e}){let t=await this.safeContractWrite.cancelRenegotiationOffer([e]);return{txHash:t,waitTxInBlock:async()=>{let n=await this.bcClient.waitForTransactionReceipt({hash:t}),a=await this.contract.createEventFilter.RenegotiationOfferCancelled(),i=d(n,a);if(i.length===0)throw new Error("Renegotiation offer not cancelled");return{...i[0].args,...n}}}}async cancelAllRenegotiations(e){throw new Error("Not implemented for V3")}mapEmitLoanToMslEmitLoanArgs({offerExecution:e,tokenId:t,duration:n,principalReceiver:a,expirationTime:i}){return{executionData:{offerExecution:e.map(({offer:s,amount:o,...y})=>({...y,amount:o??s.principalAmount,offer:{...s,lender:s.lenderAddress,validators:s.offerValidators}})),tokenId:t,duration:n,expirationTime:i??BigInt(A(Date.now())+de),principalReceiver:a??this.wallet.account.address,callbackData:"0x"},borrower:this.wallet.account.address,borrowerOfferSignature:"0x"}}async emitLoan(e){let t=this.mapEmitLoanToMslEmitLoanArgs(e),n=await this.safeContractWrite.emitLoan([t]);return{txHash:n,waitTxInBlock:async()=>{let a=await this.bcClient.waitForTransactionReceipt({hash:n}),i=await this.contract.createEventFilter.LoanEmitted(),r=d(a,i);if(r.length===0)throw new Error("Loan not emitted");let s=r[0].args;return{loan:{id:`${this.contract.address.toLowerCase()}.${s.loanId}`,...s.loan,contractAddress:this.contract.address},loanId:s.loanId,offerIds:t.executionData.offerExecution.map(({offer:o})=>`${this.contract.address.toLowerCase()}.${o.lender.toLowerCase()}.${o.offerId}`),...a}}}}async extendLoan(){throw new Error("Not implemented for V3")}async mergeTranches({loan:e,loanId:t,minTranche:n,maxTranche:a}){let i=await this.safeContractWrite.mergeTranches([t,e,n,a]);return{txHash:i,waitTxInBlock:async()=>{let r=await this.bcClient.waitForTransactionReceipt({hash:i}),s=await this.contract.createEventFilter.TranchesMerged(),o=d(r,s);if(o.length===0)throw new Error("Loan tranches not merged");let y=o[0].args,u=y.loan.tranche.reduce((m,{loanId:f})=>f>m?f:m,t);return{loan:{id:`${this.contract.address.toLowerCase()}.${u}`,...y.loan,contractAddress:this.contract.address},newLoanId:u,...r}}}}async revokeDelegationsAndEmitLoan({delegations:e,emit:t}){if(e.length===0)throw new Error("At least one delegation must be revoked");let n=this.mapEmitLoanToMslEmitLoanArgs(t),{tokenId:a,offerExecution:i}=n.executionData,r=e.map(y=>ee({abi:R,functionName:"revokeDelegate",args:[y,i[0].offer.nftCollateralAddress,a]})),s=ee({abi:R,functionName:"emitLoan",args:[n]}),o=await this.safeContractWrite.multicall([[...r,s]]);return{txHash:o,waitTxInBlock:async()=>{let y=await this.bcClient.waitForTransactionReceipt({hash:o}),u=await this.contract.createEventFilter.RevokeDelegate(),m=d(y,u);if(m.length!==e.length)throw new Error("Revoke delegations failed");let f=await this.contract.createEventFilter.LoanEmitted(),c=d(y,f);if(c.length===0)throw new Error("Loan not emitted");let T=[...m.map(({args:w})=>w),...c.map(({args:w})=>w)],v=c[0].args;return{loan:{id:`${this.contract.address.toLowerCase()}.${v.loanId}`,...v.loan,contractAddress:this.contract.address},loanId:v.loanId,...y,results:T}}}}async repayLoan({loan:e,loanId:t}){let n={loanId:t,callbackData:"0x",shouldDelegate:!1},a=await this.safeContractWrite.repayLoan([{data:n,loan:e,borrowerSignature:"0x"}]);return{txHash:a,waitTxInBlock:async()=>{let i=await this.bcClient.waitForTransactionReceipt({hash:a}),r=await this.contract.createEventFilter.LoanRepaid(),s=d(i,r);if(s.length===0)throw new Error("Loan not repaid");return{...s[0].args,...i}}}}async getRemainingLockupSeconds({loan:e}){let t=e.tranche[e.tranche.length-1],a=e.startTime+e.duration-t.startTime,i=await this.contract.read.getMinLockPeriod(),r=Q(i),s=Math.ceil(Number(a)*r),o=Math.ceil(A(Date.now())-Number(t.startTime));return o>=s?0:s-o}async isEndLockedUp({loan:e}){let t=await this.contract.read.getMinLockPeriod(),n=Q(t),a=Number(e.startTime+e.duration),i=Math.ceil(Number(e.duration)*n);return Date.now()>z(a-i)}async refinanceBatch({renegotiationId:e,refinancings:t}){let n=t.map(({loan:i,sources:r,newAprBps:s},o)=>{let y=r.map(({source:c})=>BigInt(c.loanIndex)),u=D(r,"refinancingPrincipal")??0n,m={renegotiationId:e+BigInt(o),loanId:V(i),lender:this.wallet.account.address,fee:0n,trancheIndex:y,principalAmount:u,aprBps:s,expirationTime:BigInt(A(Date.now()))+k,duration:BigInt(me(i))+k};return u===i.principalAmount?ee({abi:R,functionName:"refinanceFull",args:[m,i,F]}):ee({abi:R,functionName:"refinancePartial",args:[m,i]})}),a=await this.safeContractWrite.multicall([n]);return{txHash:a,waitTxInBlock:async()=>{let i=await this.bcClient.waitForTransactionReceipt({hash:a}),r=await this.contract.createEventFilter.LoanRefinanced(),s=d(i,r);if(s.length!==t.length)throw new Error("Loan not refinanced");return{results:s.map(({args:y})=>y),...i}}}}async refinanceFullLoan({offer:e,signature:t,loan:n}){return this.executeRenegotiation({offer:e,executeRenegotiationTxn:()=>this.safeContractWrite.refinanceFull([e,n,t])})}async refinancePartialLoan({offer:e,loan:t}){return this.executeRenegotiation({offer:e,executeRenegotiationTxn:()=>this.safeContractWrite.refinancePartial([e,t])})}async addTranche({offer:e,signature:t,loan:n}){return this.executeRenegotiation({offer:e,executeRenegotiationTxn:()=>this.safeContractWrite.addNewTranche([e,n,t])})}async refinanceFromOffers({loan:e,loanId:t,executionData:n}){let a=this.mapEmitLoanToMslEmitLoanArgs(n),i=await this.safeContractWrite.refinanceFromLoanExecutionData([t,e,a]);return{txHash:i,waitTxInBlock:async()=>{let r=await this.bcClient.waitForTransactionReceipt({hash:i}),s=await this.contract.createEventFilter.LoanRefinancedFromNewOffers(),o=d(r,s);if(o.length===0)throw new Error("LoanRefinancedFromNewOffers not emitted");let y=o[0].args;return{loan:{id:`${this.contract.address.toLowerCase()}.${y.newLoanId}`,...y.loan,contractAddress:this.contract.address},loanId:y.newLoanId,offerIds:a.executionData.offerExecution.map(({offer:u})=>`${this.contract.address.toLowerCase()}.${u.lender.toLowerCase()}.${u.offerId}`),...r}}}}async executeRenegotiation({offer:e,executeRenegotiationTxn:t}){let n=await t();return{txHash:n,waitTxInBlock:async()=>{let a=await this.bcClient.waitForTransactionReceipt({hash:n}),i=await this.contract.createEventFilter.LoanRefinanced(),r=d(a,i);if(r.length===0)throw new Error("Loan not refinanced");let s=r[0].args;return{loan:{id:`${this.contract.address.toLowerCase()}.${s.newLoanId}`,...s.loan,contractAddress:this.contract.address},loanId:s.newLoanId,renegotiationId:`${this.contract.address.toLowerCase()}.${e.lender.toLowerCase()}.${s.renegotiationId}`,...a}}}}async delegateMulticall(e){if(e.length===0)throw new Error("At least one delegation must be revoked");let t=await this.safeContractWrite.multicall([e.map(n=>ee({abi:R,functionName:"delegate",args:[n.loanId,n.loan,n.to,n.rights??F,n.enable]}))]);return{txHash:t,waitTxInBlock:async()=>{let n=await this.bcClient.waitForTransactionReceipt({hash:t}),a=await this.contract.createEventFilter.Delegated(),i=d(n,a);if(i.length!==e.length)throw new Error("Delegate multicall failed");return{...n,results:i.map(({args:r})=>r)}}}}async delegate({loan:e,loanId:t,to:n,rights:a=F,enable:i}){let r=await this.safeContractWrite.delegate([t,e,n,a,i]);return{txHash:r,waitTxInBlock:async()=>{let s=await this.bcClient.waitForTransactionReceipt({hash:r}),o=await this.contract.createEventFilter.Delegated(),y=d(s,o);if(y.length===0)throw new Error("Token not delegated");let u=y[0].args;return{loan:{...e,loanId:t,contractAddress:this.contract.address},value:u.value,...s}}}}async revokeDelegate({to:e,collection:t,tokenId:n}){let a=await this.safeContractWrite.revokeDelegate([e,t,n]);return{txHash:a,waitTxInBlock:async()=>{let i=await this.bcClient.waitForTransactionReceipt({hash:a}),r=await this.contract.createEventFilter.RevokeDelegate(),s=d(i,r);if(s.length===0)throw new Error("Token delegation not revoked");return{...s[0].args,...i}}}}async liquidateLoan({loan:e,loanId:t}){let n=await this.safeContractWrite.liquidateLoan([t,e]);return{txHash:n,waitTxInBlock:async()=>{let a=await this.bcClient.waitForTransactionReceipt({hash:n}),i=await this.contract.createEventFilter.LoanForeclosed(),r=await this.contract.createEventFilter.LoanSentToLiquidator(),s=d(a,i),o=d(a,r);if(s.length===0&&o.length===0)throw new Error("Loan not liquidated");return{...s?.[0]?.args??o?.[0]?.args,...a}}}}};l(te,"MslV6");import{zeroAddress as ne}from"viem";var E=[{inputs:[{internalType:"address",name:"conduitController",type:"address"}],stateMutability:"nonpayable",type:"constructor"},{inputs:[],name:"BadContractSignature",type:"error"},{inputs:[],name:"BadFraction",type:"error"},{inputs:[{internalType:"address",name:"token",type:"address"},{internalType:"address",name:"from",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"BadReturnValueFromERC20OnTransfer",type:"error"},{inputs:[{internalType:"uint8",name:"v",type:"uint8"}],name:"BadSignatureV",type:"error"},{inputs:[],name:"CannotCancelOrder",type:"error"},{inputs:[],name:"ConsiderationCriteriaResolverOutOfRange",type:"error"},{inputs:[],name:"ConsiderationLengthNotEqualToTotalOriginal",type:"error"},{inputs:[{internalType:"uint256",name:"orderIndex",type:"uint256"},{internalType:"uint256",name:"considerationIndex",type:"uint256"},{internalType:"uint256",name:"shortfallAmount",type:"uint256"}],name:"ConsiderationNotMet",type:"error"},{inputs:[],name:"CriteriaNotEnabledForItem",type:"error"},{inputs:[{internalType:"address",name:"token",type:"address"},{internalType:"address",name:"from",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256[]",name:"identifiers",type:"uint256[]"},{internalType:"uint256[]",name:"amounts",type:"uint256[]"}],name:"ERC1155BatchTransferGenericFailure",type:"error"},{inputs:[],name:"InexactFraction",type:"error"},{inputs:[],name:"InsufficientNativeTokensSupplied",type:"error"},{inputs:[],name:"Invalid1155BatchTransferEncoding",type:"error"},{inputs:[],name:"InvalidBasicOrderParameterEncoding",type:"error"},{inputs:[{internalType:"address",name:"conduit",type:"address"}],name:"InvalidCallToConduit",type:"error"},{inputs:[{internalType:"bytes32",name:"conduitKey",type:"bytes32"},{internalType:"address",name:"conduit",type:"address"}],name:"InvalidConduit",type:"error"},{inputs:[{internalType:"bytes32",name:"orderHash",type:"bytes32"}],name:"InvalidContractOrder",type:"error"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"}],name:"InvalidERC721TransferAmount",type:"error"},{inputs:[],name:"InvalidFulfillmentComponentData",type:"error"},{inputs:[{internalType:"uint256",name:"value",type:"uint256"}],name:"InvalidMsgValue",type:"error"},{inputs:[],name:"InvalidNativeOfferItem",type:"error"},{inputs:[],name:"InvalidProof",type:"error"},{inputs:[{internalType:"bytes32",name:"orderHash",type:"bytes32"}],name:"InvalidRestrictedOrder",type:"error"},{inputs:[],name:"InvalidSignature",type:"error"},{inputs:[],name:"InvalidSigner",type:"error"},{inputs:[{internalType:"uint256",name:"startTime",type:"uint256"},{internalType:"uint256",name:"endTime",type:"uint256"}],name:"InvalidTime",type:"error"},{inputs:[{internalType:"uint256",name:"fulfillmentIndex",type:"uint256"}],name:"MismatchedFulfillmentOfferAndConsiderationComponents",type:"error"},{inputs:[{internalType:"enum Side",name:"side",type:"uint8"}],name:"MissingFulfillmentComponentOnAggregation",type:"error"},{inputs:[],name:"MissingItemAmount",type:"error"},{inputs:[],name:"MissingOriginalConsiderationItems",type:"error"},{inputs:[{internalType:"address",name:"account",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"NativeTokenTransferGenericFailure",type:"error"},{inputs:[{internalType:"address",name:"account",type:"address"}],name:"NoContract",type:"error"},{inputs:[],name:"NoReentrantCalls",type:"error"},{inputs:[],name:"NoSpecifiedOrdersAvailable",type:"error"},{inputs:[],name:"OfferAndConsiderationRequiredOnFulfillment",type:"error"},{inputs:[],name:"OfferCriteriaResolverOutOfRange",type:"error"},{inputs:[{internalType:"bytes32",name:"orderHash",type:"bytes32"}],name:"OrderAlreadyFilled",type:"error"},{inputs:[{internalType:"enum Side",name:"side",type:"uint8"}],name:"OrderCriteriaResolverOutOfRange",type:"error"},{inputs:[{internalType:"bytes32",name:"orderHash",type:"bytes32"}],name:"OrderIsCancelled",type:"error"},{inputs:[{internalType:"bytes32",name:"orderHash",type:"bytes32"}],name:"OrderPartiallyFilled",type:"error"},{inputs:[],name:"PartialFillsNotEnabledForOrder",type:"error"},{inputs:[{internalType:"address",name:"token",type:"address"},{internalType:"address",name:"from",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"identifier",type:"uint256"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"TokenTransferGenericFailure",type:"error"},{inputs:[{internalType:"uint256",name:"orderIndex",type:"uint256"},{internalType:"uint256",name:"considerationIndex",type:"uint256"}],name:"UnresolvedConsiderationCriteria",type:"error"},{inputs:[{internalType:"uint256",name:"orderIndex",type:"uint256"},{internalType:"uint256",name:"offerIndex",type:"uint256"}],name:"UnresolvedOfferCriteria",type:"error"},{inputs:[],name:"UnusedItemParameters",type:"error"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"newCounter",type:"uint256"},{indexed:!0,internalType:"address",name:"offerer",type:"address"}],name:"CounterIncremented",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"bytes32",name:"orderHash",type:"bytes32"},{indexed:!0,internalType:"address",name:"offerer",type:"address"},{indexed:!0,internalType:"address",name:"zone",type:"address"}],name:"OrderCancelled",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"bytes32",name:"orderHash",type:"bytes32"},{indexed:!0,internalType:"address",name:"offerer",type:"address"},{indexed:!0,internalType:"address",name:"zone",type:"address"},{indexed:!1,internalType:"address",name:"recipient",type:"address"},{components:[{internalType:"enum ItemType",name:"itemType",type:"uint8"},{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"identifier",type:"uint256"},{internalType:"uint256",name:"amount",type:"uint256"}],indexed:!1,internalType:"struct SpentItem[]",name:"offer",type:"tuple[]"},{components:[{internalType:"enum ItemType",name:"itemType",type:"uint8"},{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"identifier",type:"uint256"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"address payable",name:"recipient",type:"address"}],indexed:!1,internalType:"struct ReceivedItem[]",name:"consideration",type:"tuple[]"}],name:"OrderFulfilled",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"bytes32",name:"orderHash",type:"bytes32"},{components:[{internalType:"address",name:"offerer",type:"address"},{internalType:"address",name:"zone",type:"address"},{components:[{internalType:"enum ItemType",name:"itemType",type:"uint8"},{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"identifierOrCriteria",type:"uint256"},{internalType:"uint256",name:"startAmount",type:"uint256"},{internalType:"uint256",name:"endAmount",type:"uint256"}],internalType:"struct OfferItem[]",name:"offer",type:"tuple[]"},{components:[{internalType:"enum ItemType",name:"itemType",type:"uint8"},{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"identifierOrCriteria",type:"uint256"},{internalType:"uint256",name:"startAmount",type:"uint256"},{internalType:"uint256",name:"endAmount",type:"uint256"},{internalType:"address payable",name:"recipient",type:"address"}],internalType:"struct ConsiderationItem[]",name:"consideration",type:"tuple[]"},{internalType:"enum OrderType",name:"orderType",type:"uint8"},{internalType:"uint256",name:"startTime",type:"uint256"},{internalType:"uint256",name:"endTime",type:"uint256"},{internalType:"bytes32",name:"zoneHash",type:"bytes32"},{internalType:"uint256",name:"salt",type:"uint256"},{internalType:"bytes32",name:"conduitKey",type:"bytes32"},{internalType:"uint256",name:"totalOriginalConsiderationItems",type:"uint256"}],indexed:!1,internalType:"struct OrderParameters",name:"orderParameters",type:"tuple"}],name:"OrderValidated",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"bytes32[]",name:"orderHashes",type:"bytes32[]"}],name:"OrdersMatched",type:"event"},{inputs:[{components:[{internalType:"address",name:"offerer",type:"address"},{internalType:"address",name:"zone",type:"address"},{components:[{internalType:"enum ItemType",name:"itemType",type:"uint8"},{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"identifierOrCriteria",type:"uint256"},{internalType:"uint256",name:"startAmount",type:"uint256"},{internalType:"uint256",name:"endAmount",type:"uint256"}],internalType:"struct OfferItem[]",name:"offer",type:"tuple[]"},{components:[{internalType:"enum ItemType",name:"itemType",type:"uint8"},{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"identifierOrCriteria",type:"uint256"},{internalType:"uint256",name:"startAmount",type:"uint256"},{internalType:"uint256",name:"endAmount",type:"uint256"},{internalType:"address payable",name:"recipient",type:"address"}],internalType:"struct ConsiderationItem[]",name:"consideration",type:"tuple[]"},{internalType:"enum OrderType",name:"orderType",type:"uint8"},{internalType:"uint256",name:"startTime",type:"uint256"},{internalType:"uint256",name:"endTime",type:"uint256"},{internalType:"bytes32",name:"zoneHash",type:"bytes32"},{internalType:"uint256",name:"salt",type:"uint256"},{internalType:"bytes32",name:"conduitKey",type:"bytes32"},{internalType:"uint256",name:"counter",type:"uint256"}],internalType:"struct OrderComponents[]",name:"orders",type:"tuple[]"}],name:"cancel",outputs:[{internalType:"bool",name:"cancelled",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{components:[{components:[{internalType:"address",name:"offerer",type:"address"},{internalType:"address",name:"zone",type:"address"},{components:[{internalType:"enum ItemType",name:"itemType",type:"uint8"},{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"identifierOrCriteria",type:"uint256"},{internalType:"uint256",name:"startAmount",type:"uint256"},{internalType:"uint256",name:"endAmount",type:"uint256"}],internalType:"struct OfferItem[]",name:"offer",type:"tuple[]"},{components:[{internalType:"enum ItemType",name:"itemType",type:"uint8"},{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"identifierOrCriteria",type:"uint256"},{internalType:"uint256",name:"startAmount",type:"uint256"},{internalType:"uint256",name:"endAmount",type:"uint256"},{internalType:"address payable",name:"recipient",type:"address"}],internalType:"struct ConsiderationItem[]",name:"consideration",type:"tuple[]"},{internalType:"enum OrderType",name:"orderType",type:"uint8"},{internalType:"uint256",name:"startTime",type:"uint256"},{internalType:"uint256",name:"endTime",type:"uint256"},{internalType:"bytes32",name:"zoneHash",type:"bytes32"},{internalType:"uint256",name:"salt",type:"uint256"},{internalType:"bytes32",name:"conduitKey",type:"bytes32"},{internalType:"uint256",name:"totalOriginalConsiderationItems",type:"uint256"}],internalType:"struct OrderParameters",name:"parameters",type:"tuple"},{internalType:"uint120",name:"numerator",type:"uint120"},{internalType:"uint120",name:"denominator",type:"uint120"},{internalType:"bytes",name:"signature",type:"bytes"},{internalType:"bytes",name:"extraData",type:"bytes"}],internalType:"struct AdvancedOrder",name:"",type:"tuple"},{components:[{internalType:"uint256",name:"orderIndex",type:"uint256"},{internalType:"enum Side",name:"side",type:"uint8"},{internalType:"uint256",name:"index",type:"uint256"},{internalType:"uint256",name:"identifier",type:"uint256"},{internalType:"bytes32[]",name:"criteriaProof",type:"bytes32[]"}],internalType:"struct CriteriaResolver[]",name:"",type:"tuple[]"},{internalType:"bytes32",name:"fulfillerConduitKey",type:"bytes32"},{internalType:"address",name:"recipient",type:"address"}],name:"fulfillAdvancedOrder",outputs:[{internalType:"bool",name:"fulfilled",type:"bool"}],stateMutability:"payable",type:"function"},{inputs:[{components:[{components:[{internalType:"address",name:"offerer",type:"address"},{internalType:"address",name:"zone",type:"address"},{components:[{internalType:"enum ItemType",name:"itemType",type:"uint8"},{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"identifierOrCriteria",type:"uint256"},{internalType:"uint256",name:"startAmount",type:"uint256"},{internalType:"uint256",name:"endAmount",type:"uint256"}],internalType:"struct OfferItem[]",name:"offer",type:"tuple[]"},{components:[{internalType:"enum ItemType",name:"itemType",type:"uint8"},{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"identifierOrCriteria",type:"uint256"},{internalType:"uint256",name:"startAmount",type:"uint256"},{internalType:"uint256",name:"endAmount",type:"uint256"},{internalType:"address payable",name:"recipient",type:"address"}],internalType:"struct ConsiderationItem[]",name:"consideration",type:"tuple[]"},{internalType:"enum OrderType",name:"orderType",type:"uint8"},{internalType:"uint256",name:"startTime",type:"uint256"},{internalType:"uint256",name:"endTime",type:"uint256"},{internalType:"bytes32",name:"zoneHash",type:"bytes32"},{internalType:"uint256",name:"salt",type:"uint256"},{internalType:"bytes32",name:"conduitKey",type:"bytes32"},{internalType:"uint256",name:"totalOriginalConsiderationItems",type:"uint256"}],internalType:"struct OrderParameters",name:"parameters",type:"tuple"},{internalType:"uint120",name:"numerator",type:"uint120"},{internalType:"uint120",name:"denominator",type:"uint120"},{internalType:"bytes",name:"signature",type:"bytes"},{internalType:"bytes",name:"extraData",type:"bytes"}],internalType:"struct AdvancedOrder[]",name:"",type:"tuple[]"},{components:[{internalType:"uint256",name:"orderIndex",type:"uint256"},{internalType:"enum Side",name:"side",type:"uint8"},{internalType:"uint256",name:"index",type:"uint256"},{internalType:"uint256",name:"identifier",type:"uint256"},{internalType:"bytes32[]",name:"criteriaProof",type:"bytes32[]"}],internalType:"struct CriteriaResolver[]",name:"",type:"tuple[]"},{components:[{internalType:"uint256",name:"orderIndex",type:"uint256"},{internalType:"uint256",name:"itemIndex",type:"uint256"}],internalType:"struct FulfillmentComponent[][]",name:"",type:"tuple[][]"},{components:[{internalType:"uint256",name:"orderIndex",type:"uint256"},{internalType:"uint256",name:"itemIndex",type:"uint256"}],internalType:"struct FulfillmentComponent[][]",name:"",type:"tuple[][]"},{internalType:"bytes32",name:"fulfillerConduitKey",type:"bytes32"},{internalType:"address",name:"recipient",type:"address"},{internalType:"uint256",name:"maximumFulfilled",type:"uint256"}],name:"fulfillAvailableAdvancedOrders",outputs:[{internalType:"bool[]",name:"",type:"bool[]"},{components:[{components:[{internalType:"enum ItemType",name:"itemType",type:"uint8"},{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"identifier",type:"uint256"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"address payable",name:"recipient",type:"address"}],internalType:"struct ReceivedItem",name:"item",type:"tuple"},{internalType:"address",name:"offerer",type:"address"},{internalType:"bytes32",name:"conduitKey",type:"bytes32"}],internalType:"struct Execution[]",name:"",type:"tuple[]"}],stateMutability:"payable",type:"function"},{inputs:[{components:[{components:[{internalType:"address",name:"offerer",type:"address"},{internalType:"address",name:"zone",type:"address"},{components:[{internalType:"enum ItemType",name:"itemType",type:"uint8"},{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"identifierOrCriteria",type:"uint256"},{internalType:"uint256",name:"startAmount",type:"uint256"},{internalType:"uint256",name:"endAmount",type:"uint256"}],internalType:"struct OfferItem[]",name:"offer",type:"tuple[]"},{components:[{internalType:"enum ItemType",name:"itemType",type:"uint8"},{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"identifierOrCriteria",type:"uint256"},{internalType:"uint256",name:"startAmount",type:"uint256"},{internalType:"uint256",name:"endAmount",type:"uint256"},{internalType:"address payable",name:"recipient",type:"address"}],internalType:"struct ConsiderationItem[]",name:"consideration",type:"tuple[]"},{internalType:"enum OrderType",name:"orderType",type:"uint8"},{internalType:"uint256",name:"startTime",type:"uint256"},{internalType:"uint256",name:"endTime",type:"uint256"},{internalType:"bytes32",name:"zoneHash",type:"bytes32"},{internalType:"uint256",name:"salt",type:"uint256"},{internalType:"bytes32",name:"conduitKey",type:"bytes32"},{internalType:"uint256",name:"totalOriginalConsiderationItems",type:"uint256"}],internalType:"struct OrderParameters",name:"parameters",type:"tuple"},{internalType:"bytes",name:"signature",type:"bytes"}],internalType:"struct Order[]",name:"",type:"tuple[]"},{components:[{internalType:"uint256",name:"orderIndex",type:"uint256"},{internalType:"uint256",name:"itemIndex",type:"uint256"}],internalType:"struct FulfillmentComponent[][]",name:"",type:"tuple[][]"},{components:[{internalType:"uint256",name:"orderIndex",type:"uint256"},{internalType:"uint256",name:"itemIndex",type:"uint256"}],internalType:"struct FulfillmentComponent[][]",name:"",type:"tuple[][]"},{internalType:"bytes32",name:"fulfillerConduitKey",type:"bytes32"},{internalType:"uint256",name:"maximumFulfilled",type:"uint256"}],name:"fulfillAvailableOrders",outputs:[{internalType:"bool[]",name:"",type:"bool[]"},{components:[{components:[{internalType:"enum ItemType",name:"itemType",type:"uint8"},{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"identifier",type:"uint256"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"address payable",name:"recipient",type:"address"}],internalType:"struct ReceivedItem",name:"item",type:"tuple"},{internalType:"address",name:"offerer",type:"address"},{internalType:"bytes32",name:"conduitKey",type:"bytes32"}],internalType:"struct Execution[]",name:"",type:"tuple[]"}],stateMutability:"payable",type:"function"},{inputs:[{components:[{internalType:"address",name:"considerationToken",type:"address"},{internalType:"uint256",name:"considerationIdentifier",type:"uint256"},{internalType:"uint256",name:"considerationAmount",type:"uint256"},{internalType:"address payable",name:"offerer",type:"address"},{internalType:"address",name:"zone",type:"address"},{internalType:"address",name:"offerToken",type:"address"},{internalType:"uint256",name:"offerIdentifier",type:"uint256"},{internalType:"uint256",name:"offerAmount",type:"uint256"},{internalType:"enum BasicOrderType",name:"basicOrderType",type:"uint8"},{internalType:"uint256",name:"startTime",type:"uint256"},{internalType:"uint256",name:"endTime",type:"uint256"},{internalType:"bytes32",name:"zoneHash",type:"bytes32"},{internalType:"uint256",name:"salt",type:"uint256"},{internalType:"bytes32",name:"offererConduitKey",type:"bytes32"},{internalType:"bytes32",name:"fulfillerConduitKey",type:"bytes32"},{internalType:"uint256",name:"totalOriginalAdditionalRecipients",type:"uint256"},{components:[{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"address payable",name:"recipient",type:"address"}],internalType:"struct AdditionalRecipient[]",name:"additionalRecipients",type:"tuple[]"},{internalType:"bytes",name:"signature",type:"bytes"}],internalType:"struct BasicOrderParameters",name:"parameters",type:"tuple"}],name:"fulfillBasicOrder",outputs:[{internalType:"bool",name:"fulfilled",type:"bool"}],stateMutability:"payable",type:"function"},{inputs:[{components:[{internalType:"address",name:"considerationToken",type:"address"},{internalType:"uint256",name:"considerationIdentifier",type:"uint256"},{internalType:"uint256",name:"considerationAmount",type:"uint256"},{internalType:"address payable",name:"offerer",type:"address"},{internalType:"address",name:"zone",type:"address"},{internalType:"address",name:"offerToken",type:"address"},{internalType:"uint256",name:"offerIdentifier",type:"uint256"},{internalType:"uint256",name:"offerAmount",type:"uint256"},{internalType:"enum BasicOrderType",name:"basicOrderType",type:"uint8"},{internalType:"uint256",name:"startTime",type:"uint256"},{internalType:"uint256",name:"endTime",type:"uint256"},{internalType:"bytes32",name:"zoneHash",type:"bytes32"},{internalType:"uint256",name:"salt",type:"uint256"},{internalType:"bytes32",name:"offererConduitKey",type:"bytes32"},{internalType:"bytes32",name:"fulfillerConduitKey",type:"bytes32"},{internalType:"uint256",name:"totalOriginalAdditionalRecipients",type:"uint256"},{components:[{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"address payable",name:"recipient",type:"address"}],internalType:"struct AdditionalRecipient[]",name:"additionalRecipients",type:"tuple[]"},{internalType:"bytes",name:"signature",type:"bytes"}],internalType:"struct BasicOrderParameters",name:"parameters",type:"tuple"}],name:"fulfillBasicOrder_efficient_6GL6yc",outputs:[{internalType:"bool",name:"fulfilled",type:"bool"}],stateMutability:"payable",type:"function"},{inputs:[{components:[{components:[{internalType:"address",name:"offerer",type:"address"},{internalType:"address",name:"zone",type:"address"},{components:[{internalType:"enum ItemType",name:"itemType",type:"uint8"},{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"identifierOrCriteria",type:"uint256"},{internalType:"uint256",name:"startAmount",type:"uint256"},{internalType:"uint256",name:"endAmount",type:"uint256"}],internalType:"struct OfferItem[]",name:"offer",type:"tuple[]"},{components:[{internalType:"enum ItemType",name:"itemType",type:"uint8"},{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"identifierOrCriteria",type:"uint256"},{internalType:"uint256",name:"startAmount",type:"uint256"},{internalType:"uint256",name:"endAmount",type:"uint256"},{internalType:"address payable",name:"recipient",type:"address"}],internalType:"struct ConsiderationItem[]",name:"consideration",type:"tuple[]"},{internalType:"enum OrderType",name:"orderType",type:"uint8"},{internalType:"uint256",name:"startTime",type:"uint256"},{internalType:"uint256",name:"endTime",type:"uint256"},{internalType:"bytes32",name:"zoneHash",type:"bytes32"},{internalType:"uint256",name:"salt",type:"uint256"},{internalType:"bytes32",name:"conduitKey",type:"bytes32"},{internalType:"uint256",name:"totalOriginalConsiderationItems",type:"uint256"}],internalType:"struct OrderParameters",name:"parameters",type:"tuple"},{internalType:"bytes",name:"signature",type:"bytes"}],internalType:"struct Order",name:"",type:"tuple"},{internalType:"bytes32",name:"fulfillerConduitKey",type:"bytes32"}],name:"fulfillOrder",outputs:[{internalType:"bool",name:"fulfilled",type:"bool"}],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"contractOfferer",type:"address"}],name:"getContractOffererNonce",outputs:[{internalType:"uint256",name:"nonce",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"offerer",type:"address"}],name:"getCounter",outputs:[{internalType:"uint256",name:"counter",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{components:[{internalType:"address",name:"offerer",type:"address"},{internalType:"address",name:"zone",type:"address"},{components:[{internalType:"enum ItemType",name:"itemType",type:"uint8"},{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"identifierOrCriteria",type:"uint256"},{internalType:"uint256",name:"startAmount",type:"uint256"},{internalType:"uint256",name:"endAmount",type:"uint256"}],internalType:"struct OfferItem[]",name:"offer",type:"tuple[]"},{components:[{internalType:"enum ItemType",name:"itemType",type:"uint8"},{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"identifierOrCriteria",type:"uint256"},{internalType:"uint256",name:"startAmount",type:"uint256"},{internalType:"uint256",name:"endAmount",type:"uint256"},{internalType:"address payable",name:"recipient",type:"address"}],internalType:"struct ConsiderationItem[]",name:"consideration",type:"tuple[]"},{internalType:"enum OrderType",name:"orderType",type:"uint8"},{internalType:"uint256",name:"startTime",type:"uint256"},{internalType:"uint256",name:"endTime",type:"uint256"},{internalType:"bytes32",name:"zoneHash",type:"bytes32"},{internalType:"uint256",name:"salt",type:"uint256"},{internalType:"bytes32",name:"conduitKey",type:"bytes32"},{internalType:"uint256",name:"counter",type:"uint256"}],internalType:"struct OrderComponents",name:"",type:"tuple"}],name:"getOrderHash",outputs:[{internalType:"bytes32",name:"orderHash",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"orderHash",type:"bytes32"}],name:"getOrderStatus",outputs:[{internalType:"bool",name:"isValidated",type:"bool"},{internalType:"bool",name:"isCancelled",type:"bool"},{internalType:"uint256",name:"totalFilled",type:"uint256"},{internalType:"uint256",name:"totalSize",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"incrementCounter",outputs:[{internalType:"uint256",name:"newCounter",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"information",outputs:[{internalType:"string",name:"version",type:"string"},{internalType:"bytes32",name:"domainSeparator",type:"bytes32"},{internalType:"address",name:"conduitController",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{components:[{components:[{internalType:"address",name:"offerer",type:"address"},{internalType:"address",name:"zone",type:"address"},{components:[{internalType:"enum ItemType",name:"itemType",type:"uint8"},{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"identifierOrCriteria",type:"uint256"},{internalType:"uint256",name:"startAmount",type:"uint256"},{internalType:"uint256",name:"endAmount",type:"uint256"}],internalType:"struct OfferItem[]",name:"offer",type:"tuple[]"},{components:[{internalType:"enum ItemType",name:"itemType",type:"uint8"},{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"identifierOrCriteria",type:"uint256"},{internalType:"uint256",name:"startAmount",type:"uint256"},{internalType:"uint256",name:"endAmount",type:"uint256"},{internalType:"address payable",name:"recipient",type:"address"}],internalType:"struct ConsiderationItem[]",name:"consideration",type:"tuple[]"},{internalType:"enum OrderType",name:"orderType",type:"uint8"},{internalType:"uint256",name:"startTime",type:"uint256"},{internalType:"uint256",name:"endTime",type:"uint256"},{internalType:"bytes32",name:"zoneHash",type:"bytes32"},{internalType:"uint256",name:"salt",type:"uint256"},{internalType:"bytes32",name:"conduitKey",type:"bytes32"},{internalType:"uint256",name:"totalOriginalConsiderationItems",type:"uint256"}],internalType:"struct OrderParameters",name:"parameters",type:"tuple"},{internalType:"uint120",name:"numerator",type:"uint120"},{internalType:"uint120",name:"denominator",type:"uint120"},{internalType:"bytes",name:"signature",type:"bytes"},{internalType:"bytes",name:"extraData",type:"bytes"}],internalType:"struct AdvancedOrder[]",name:"",type:"tuple[]"},{components:[{internalType:"uint256",name:"orderIndex",type:"uint256"},{internalType:"enum Side",name:"side",type:"uint8"},{internalType:"uint256",name:"index",type:"uint256"},{internalType:"uint256",name:"identifier",type:"uint256"},{internalType:"bytes32[]",name:"criteriaProof",type:"bytes32[]"}],internalType:"struct CriteriaResolver[]",name:"",type:"tuple[]"},{components:[{components:[{internalType:"uint256",name:"orderIndex",type:"uint256"},{internalType:"uint256",name:"itemIndex",type:"uint256"}],internalType:"struct FulfillmentComponent[]",name:"offerComponents",type:"tuple[]"},{components:[{internalType:"uint256",name:"orderIndex",type:"uint256"},{internalType:"uint256",name:"itemIndex",type:"uint256"}],internalType:"struct FulfillmentComponent[]",name:"considerationComponents",type:"tuple[]"}],internalType:"struct Fulfillment[]",name:"",type:"tuple[]"},{internalType:"address",name:"recipient",type:"address"}],name:"matchAdvancedOrders",outputs:[{components:[{components:[{internalType:"enum ItemType",name:"itemType",type:"uint8"},{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"identifier",type:"uint256"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"address payable",name:"recipient",type:"address"}],internalType:"struct ReceivedItem",name:"item",type:"tuple"},{internalType:"address",name:"offerer",type:"address"},{internalType:"bytes32",name:"conduitKey",type:"bytes32"}],internalType:"struct Execution[]",name:"",type:"tuple[]"}],stateMutability:"payable",type:"function"},{inputs:[{components:[{components:[{internalType:"address",name:"offerer",type:"address"},{internalType:"address",name:"zone",type:"address"},{components:[{internalType:"enum ItemType",name:"itemType",type:"uint8"},{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"identifierOrCriteria",type:"uint256"},{internalType:"uint256",name:"startAmount",type:"uint256"},{internalType:"uint256",name:"endAmount",type:"uint256"}],internalType:"struct OfferItem[]",name:"offer",type:"tuple[]"},{components:[{internalType:"enum ItemType",name:"itemType",type:"uint8"},{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"identifierOrCriteria",type:"uint256"},{internalType:"uint256",name:"startAmount",type:"uint256"},{internalType:"uint256",name:"endAmount",type:"uint256"},{internalType:"address payable",name:"recipient",type:"address"}],internalType:"struct ConsiderationItem[]",name:"consideration",type:"tuple[]"},{internalType:"enum OrderType",name:"orderType",type:"uint8"},{internalType:"uint256",name:"startTime",type:"uint256"},{internalType:"uint256",name:"endTime",type:"uint256"},{internalType:"bytes32",name:"zoneHash",type:"bytes32"},{internalType:"uint256",name:"salt",type:"uint256"},{internalType:"bytes32",name:"conduitKey",type:"bytes32"},{internalType:"uint256",name:"totalOriginalConsiderationItems",type:"uint256"}],internalType:"struct OrderParameters",name:"parameters",type:"tuple"},{internalType:"bytes",name:"signature",type:"bytes"}],internalType:"struct Order[]",name:"",type:"tuple[]"},{components:[{components:[{internalType:"uint256",name:"orderIndex",type:"uint256"},{internalType:"uint256",name:"itemIndex",type:"uint256"}],internalType:"struct FulfillmentComponent[]",name:"offerComponents",type:"tuple[]"},{components:[{internalType:"uint256",name:"orderIndex",type:"uint256"},{internalType:"uint256",name:"itemIndex",type:"uint256"}],internalType:"struct FulfillmentComponent[]",name:"considerationComponents",type:"tuple[]"}],internalType:"struct Fulfillment[]",name:"",type:"tuple[]"}],name:"matchOrders",outputs:[{components:[{components:[{internalType:"enum ItemType",name:"itemType",type:"uint8"},{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"identifier",type:"uint256"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"address payable",name:"recipient",type:"address"}],internalType:"struct ReceivedItem",name:"item",type:"tuple"},{internalType:"address",name:"offerer",type:"address"},{internalType:"bytes32",name:"conduitKey",type:"bytes32"}],internalType:"struct Execution[]",name:"",type:"tuple[]"}],stateMutability:"payable",type:"function"},{inputs:[],name:"name",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"pure",type:"function"},{inputs:[{components:[{components:[{internalType:"address",name:"offerer",type:"address"},{internalType:"address",name:"zone",type:"address"},{components:[{internalType:"enum ItemType",name:"itemType",type:"uint8"},{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"identifierOrCriteria",type:"uint256"},{internalType:"uint256",name:"startAmount",type:"uint256"},{internalType:"uint256",name:"endAmount",type:"uint256"}],internalType:"struct OfferItem[]",name:"offer",type:"tuple[]"},{components:[{internalType:"enum ItemType",name:"itemType",type:"uint8"},{internalType:"address",name:"token",type:"address"},{internalType:"uint256",name:"identifierOrCriteria",type:"uint256"},{internalType:"uint256",name:"startAmount",type:"uint256"},{internalType:"uint256",name:"endAmount",type:"uint256"},{internalType:"address payable",name:"recipient",type:"address"}],internalType:"struct ConsiderationItem[]",name:"consideration",type:"tuple[]"},{internalType:"enum OrderType",name:"orderType",type:"uint8"},{internalType:"uint256",name:"startTime",type:"uint256"},{internalType:"uint256",name:"endTime",type:"uint256"},{internalType:"bytes32",name:"zoneHash",type:"bytes32"},{internalType:"uint256",name:"salt",type:"uint256"},{internalType:"bytes32",name:"conduitKey",type:"bytes32"},{internalType:"uint256",name:"totalOriginalConsiderationItems",type:"uint256"}],internalType:"struct OrderParameters",name:"parameters",type:"tuple"},{internalType:"bytes",name:"signature",type:"bytes"}],internalType:"struct Order[]",name:"",type:"tuple[]"}],name:"validate",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{stateMutability:"payable",type:"receive"}];var ae=class extends g{constructor({walletClient:e}){let{SeaportAddress:t}=I(e.chain);super({walletClient:e,address:t,abi:E})}async getOrderHash(e){return this.contract.read.getOrderHash([e])}async getCounter(){return this.contract.read.getCounter([this.wallet.account.address])}async signOrder(e){let t={name:"Seaport",version:"1.5",chainId:this.wallet.chain?.id,verifyingContract:this.address},n={OrderComponents:[{name:"offerer",type:"address"},{name:"zone",type:"address"},{name:"offer",type:"OfferItem[]"},{name:"consideration",type:"ConsiderationItem[]"},{name:"orderType",type:"uint8"},{name:"startTime",type:"uint256"},{name:"endTime",type:"uint256"},{name:"zoneHash",type:"bytes32"},{name:"salt",type:"uint256"},{name:"conduitKey",type:"bytes32"},{name:"counter",type:"uint256"}],OfferItem:[{name:"itemType",type:"uint8"},{name:"token",type:"address"},{name:"identifierOrCriteria",type:"uint256"},{name:"startAmount",type:"uint256"},{name:"endAmount",type:"uint256"}],ConsiderationItem:[{name:"itemType",type:"uint8"},{name:"token",type:"address"},{name:"identifierOrCriteria",type:"uint256"},{name:"startAmount",type:"uint256"},{name:"endAmount",type:"uint256"},{name:"recipient",type:"address"}]};return this.wallet.signTypedData({domain:t,types:n,primaryType:"OrderComponents",message:e})}async generateOrderFromSaleOffer({collectionContractAddress:e,tokenId:t,price:n,expirationTime:a}){let{WETH_ADDRESS:i}=_(),r={offerer:this.wallet.account.address,zone:ne,offer:[{itemType:1,token:i,identifierOrCriteria:0n,startAmount:n,endAmount:n}],consideration:[{itemType:2,token:e,identifierOrCriteria:t,startAmount:1n,endAmount:1n,recipient:this.wallet.account.address}],orderType:0,startTime:BigInt(Math.floor(A(Date.now()))),endTime:a,zoneHash:F,salt:0n,conduitKey:F,counter:await this.getCounter(),totalOriginalConsiderationItems:1n},s=await this.signOrder(r);return{parameters:r,signature:s}}async recoverOrderFromNativeBid({nativeBid:e,collectionContractAddress:t,tokenId:n}){let{WETH_ADDRESS:a}=_();return{offerer:e.maker,zone:ne,offer:[{itemType:1,token:a,identifierOrCriteria:0n,startAmount:e.netAmount,endAmount:e.netAmount}],consideration:[{itemType:2,token:t,identifierOrCriteria:n,startAmount:1n,endAmount:1n,recipient:e.maker}],orderType:0,startTime:BigInt(Math.floor(A(e.startTime.getTime()))),endTime:BigInt(Math.floor(A(e.expiration?.getTime()??Date.now()))),zoneHash:F,salt:0n,conduitKey:F,counter:await this.getCounter(),totalOriginalConsiderationItems:1n}}async generateInverseOrder(e){return{offerer:this.wallet.account?.address??ne,zone:ne,offer:e.consideration,consideration:e.offer.map(t=>({...t,recipient:this.wallet.account?.address??ne})),orderType:0,startTime:e.startTime,endTime:e.endTime,zoneHash:F,salt:0n,conduitKey:F,counter:await this.getCounter(),totalOriginalConsiderationItems:BigInt(e.offer.length)}}generateFulfillmentsForOrderAndInverse(e){let t=[];return e.offer.forEach((n,a)=>{t.push({offerComponents:[{orderIndex:0n,itemIndex:BigInt(a)}],considerationComponents:[{orderIndex:1n,itemIndex:BigInt(a)}]})}),e.consideration.forEach((n,a)=>{t.push({offerComponents:[{orderIndex:1n,itemIndex:BigInt(a)}],considerationComponents:[{orderIndex:0n,itemIndex:BigInt(a)}]})}),t}async cancel({orderComponents:e}){let t=await this.safeContractWrite.cancel([[e]]);return{txHash:t,waitTxInBlock:async()=>{let n=await this.bcClient.waitForTransactionReceipt({hash:t}),a=await this.contract.createEventFilter.OrderCancelled({offerer:e.offerer}),i=d(n,a);if(i.length===0)throw new Error("Order not cancelled");return{...i[0].args,...n}}}}};l(ae,"Seaport");var ie=class extends g{constructor({walletClient:e}){let{UserVault:t}=I(e.chain);super({walletClient:e,address:t.v5,abi:$e})}async burnAndWithdraw({vaultId:e,collections:t,tokenIds:n,tokens:a=[]}){if(t.length!=n.length)throw new Error("collections and tokenIds must have the same length");let i=await this.safeContractWrite.burnAndWithdraw([e,t,n,a]);return{txHash:i,waitTxInBlock:async()=>{let r=await this.bcClient.waitForTransactionReceipt({hash:i}),s=await this.contract.createEventFilter.ERC721Withdrawn(),o=d(r,s);if(o.length!==n.length)throw new Error("Withdrawn count mismatch");return{events:o.map(y=>y.args),oldEvents:[],...r}}}}async createVault(e){let{id:t}=await this.#e(),n=[],a={};for(let{collection:i,tokenIds:r}of e)a[i]?a[i].tokenIds.push(...r):a[i]={collection:i,tokenIds:[...r]};for(let{collection:i,tokenIds:r}of Object.values(a)){let o=await(await this.depositERC721s({vaultId:t,collection:i,tokenIds:r})).waitTxInBlock();n.push(o)}return{vaultId:t,receipts:n}}async depositERC721s({vaultId:e,collection:t,tokenIds:n}){let a=await this.safeContractWrite.depositERC721s([e,t,n]);return{txHash:a,waitTxInBlock:async()=>{let i=await this.bcClient.waitForTransactionReceipt({hash:a}),r=await this.contract.createEventFilter.ERC721Deposited(),s=d(i,r);if(s.length===0)throw new Error("Deposit not created");return{...s[0].args,...i}}}}async depositOldERC721s(){throw new Error("Not implemented")}async#e(){let e=await this.safeContractWrite.mint(void 0),t=await this.bcClient.waitForTransactionReceipt({hash:e}),n=await this.contract.createEventFilter.Transfer({}),a=d(t,n);if(a.length===0)throw new Error("Vault not created");return{...a[0].args,...t}}};l(ie,"UserVaultV5");var re=class extends g{constructor({walletClient:e}){let{UserVault:t}=I(e.chain);super({walletClient:e,address:t.v6,abi:Ye})}async burnAndWithdraw({vaultId:e,collections:t,tokenIds:n,oldCollections:a=[],oldTokenIds:i=[],tokens:r=[]}){if(t.length!=n.length)throw new Error("collections and tokenIds must have the same length");if(a.length!=i.length)throw new Error("oldCollections and oldTokenIds must have the same length");let s=await this.safeContractWrite.burnAndWithdraw([e,t,n,a,i,r]);return{txHash:s,waitTxInBlock:async()=>{let o=await this.bcClient.waitForTransactionReceipt({hash:s}),y=await this.contract.createEventFilter.ERC721Withdrawn({}),u=d(o,y),m=await this.contract.createEventFilter.OldERC721Withdrawn({}),f=d(o,m);if(u.length!==n.length||f.length!==i.length)throw new Error("Withdrawn count mismatch");return{events:u.map(c=>c.args),oldEvents:u.map(c=>c.args),...o}}}}async createVault(e){let{id:t}=await this.#e(),n=[],a={};for(let{collection:i,tokenIds:r,isOldErc721:s}of e)a[i]?a[i].tokenIds.push(...r):a[i]={collection:i,tokenIds:[...r],isOldErc721:s};for(let{collection:i,tokenIds:r,isOldErc721:s}of Object.values(a)){let y=await(s?await this.depositOldERC721s({vaultId:t,collection:i,tokenIds:r}):await this.depositERC721s({vaultId:t,collection:i,tokenIds:r})).waitTxInBlock();n.push(y)}return{vaultId:t,receipts:n}}async depositERC721s({vaultId:e,collection:t,tokenIds:n}){let a=await this.safeContractWrite.depositERC721s([e,t,n]);return{txHash:a,waitTxInBlock:async()=>{let i=await this.bcClient.waitForTransactionReceipt({hash:a}),r=await this.contract.createEventFilter.ERC721Deposited({}),s=d(i,r);if(s.length===0)throw new Error("Deposit not created");return{...s[0].args,...i}}}}async depositOldERC721s({vaultId:e,collection:t,tokenIds:n}){let a=await this.safeContractWrite.depositOldERC721s([e,t,n]);return{txHash:a,waitTxInBlock:async()=>{let i=await this.bcClient.waitForTransactionReceipt({hash:a}),r=await this.contract.createEventFilter.OldERC721Deposited({}),s=d(i,r);if(s.length===0)throw new Error("Deposit not created");return{...s[0].args,...i}}}}async#e(){let e=await this.safeContractWrite.mint(void 0),t=await this.bcClient.waitForTransactionReceipt({hash:e}),n=await this.contract.createEventFilter.Transfer({}),a=d(t,n);if(a.length===0)throw new Error("Vault not created");return{...a[0].args,...t}}};l(re,"UserVaultV6");var se=class{walletClient;publicClient;MultiSourceLoanV4;MultiSourceLoanV5;MultiSourceLoanV6;AuctionLoanLiquidatorV4;AuctionLoanLiquidatorV5;AuctionLoanLiquidatorV6;UserVaultV5;UserVaultV6;Leverage;Seaport;CryptoPunks;constructor(e,t){this.walletClient=t,this.publicClient=e,this.MultiSourceLoanV4=new j({walletClient:t}),this.MultiSourceLoanV5=new J({walletClient:t}),this.MultiSourceLoanV6=new te({walletClient:t}),this.AuctionLoanLiquidatorV4=new N({walletClient:t}),this.AuctionLoanLiquidatorV5=new $({walletClient:t}),this.AuctionLoanLiquidatorV6=new G({walletClient:t}),this.UserVaultV5=new ie({walletClient:t}),this.UserVaultV6=new re({walletClient:t}),this.Leverage=new Z({walletClient:t,mslAddress:this.MultiSourceLoanV5.address}),this.Seaport=new ae({walletClient:t}),this.CryptoPunks=new X({walletClient:t})}Msl(e){if(M(e,this.MultiSourceLoanV4.address))return this.MultiSourceLoanV4;if(M(e,this.MultiSourceLoanV5.address))return this.MultiSourceLoanV5;if(M(e,this.MultiSourceLoanV6.address))return this.MultiSourceLoanV6;throw new Error(`Invalid Contract Address ${e}`)}All(e){if(M(e,this.MultiSourceLoanV4.address))return this.AuctionLoanLiquidatorV4;if(M(e,this.MultiSourceLoanV5.address))return this.AuctionLoanLiquidatorV5;if(M(e,this.MultiSourceLoanV6.address))return this.AuctionLoanLiquidatorV6;throw new Error(`Invalid Contract Address ${e}`)}UserVault(e){if(M(e,this.UserVaultV5.address))return this.UserVaultV5;if(M(e,this.UserVaultV6.address))return this.UserVaultV6;throw new Error(`Invalid Contract Address ${e}`)}ERC721(e){return Ae({address:e,abi:ye,walletClient:this.walletClient,publicClient:this.publicClient})}OldERC721(e){return Ae({address:e,abi:Ue,walletClient:this.walletClient,publicClient:this.publicClient})}ERC20(e){return Ae({address:e,abi:Ke,walletClient:this.walletClient,publicClient:this.publicClient})}};l(se,"Contracts");var it=115792089237316195423570985008687907853269984665640564039457584007913129639935n;import{createClient as In}from"@reservoir0x/reservoir-sdk";import{createPublicClient as Fn,encodeAbiParameters as An,encodeFunctionData as st,getContract as Sn,http as Mn,zeroAddress as vn}from"viem";import{mainnet as xn}from"viem/chains";var H=class{orderId;to;callbackData;value;constructor({orderId:e,to:t,callbackData:n,value:a}){this.orderId=e,this.to=t,this.callbackData=n,this.value=a}};l(H,"InterruptedSendTransactionStepError");var C=class extends H{signature;constructor({orderId:e,to:t,callbackData:n,value:a,signature:i}){super({orderId:e,to:t,callbackData:n,value:a}),this.signature=i}};l(C,"InterruptedSeaportSendTransactionStepError");var B=class extends H{};l(B,"InterruptedCryptoPunksSendTransactionStepError");var P=class extends H{};l(P,"InterruptedGenericSendTransactionStepError");import{adaptViemWallet as Tn}from"@reservoir0x/reservoir-sdk";import{decodeFunctionData as fn,zeroAddress as bn}from"viem";var Se=l(p=>p==="opensea.io","isOpensea"),gn=l(p=>p==="cryptopunks.app","isCryptopunks"),rt=l(p=>p==="gondi.xyz","isNative"),Me=l((p,e)=>({...Tn(p),transport:void 0,handleSendTransactionStep:async(a,i,r)=>{if(r.id!=="sale")return console.log(r),ze;let s=i.orderIds?.[0]??"",o=i.data.to,y=i.data.data,u=BigInt(i.data.value??0);if(Se(e)){let f=fn({abi:E,data:i.data.data})?.args?.[0],c=Array.isArray(f)?f[0].signature:typeof f=="object"?f.signature:bn;throw new C({orderId:s,to:o,callbackData:y,value:u,signature:c})}else throw gn(e)?new B({orderId:s,to:o,callbackData:y,value:u}):new P({orderId:s,to:o,callbackData:y,value:u})}}),"adaptWalletToCaptureTxData");var pe=class{baseApiUrl;mainnetClient;wallet;Seaport;CryptoPunks;client;EXECUTION_INFO_ABI=[{name:"ExecutionInfo",type:"tuple",components:[{name:"module",type:"address"},{name:"data",type:"bytes"},{name:"value",type:"uint256"}]}];constructor({baseApiUrl:e="https://api.reservoir.tools",wallet:t,Seaport:n,CryptoPunks:a}){this.baseApiUrl=e,this.wallet=t,this.Seaport=n,this.CryptoPunks=a;let{reservoirApiKey:i,infuraApiKey:r}=Ge();this.client=In({chains:[{id:t.chain.id,name:t.chain.name,baseApiUrl:e,active:!0}],apiKey:i,source:"gondi.xyz"}),this.mainnetClient=Fn({chain:xn,transport:Mn(`https://mainnet.infura.io/v3/${r}`)})}async getAsk({orderId:e}){return fetch(`${this.baseApiUrl}/orders/asks/v5?ids=${e}&includeRawData=true`).then(t=>t.json()).then(({orders:t})=>{if(!t)throw new Error(`Order ${e} is not available anymore`);return t[0]})}async getBid({orderId:e}){return fetch(`${this.baseApiUrl}/orders/bids/v6?ids=${e}&includeRawData=true`).then(t=>t.json()).then(({orders:t})=>{if(!t)throw new Error(`Order ${e} is not available anymore`);return t[0]})}generateExpectedCurrencyPriceObject(e,t){return{[t]:{raw:e,currencyAddress:t,currencyDecimals:18}}}encodeExecutionData({module:e,data:t,value:n}){return An(this.EXECUTION_INFO_ABI,[{module:e,data:t,value:n}])}async generateMatchOrdersExecutionData({askOrBid:e,signature:t,side:n="ask"}){let a={parameters:{...e.rawData,totalOriginalConsiderationItems:BigInt(e.rawData.consideration.length)},signature:t},i=await this.Seaport.generateInverseOrder(a.parameters),r={parameters:i,signature:await this.Seaport.signOrder(i)},s=this.Seaport.generateFulfillmentsForOrderAndInverse(a.parameters),o=st({abi:E,functionName:"matchOrders",args:[[a,r],s]}),y=n==="ask"?a.parameters.consideration.reduce((u,m)=>u+(m.itemType===0?BigInt(m.endAmount):0n),0n):BigInt(e.price.netAmount.raw);return{callbackData:this.encodeExecutionData({module:this.Seaport.address,data:o,value:y}),value:y,isSeaportCall:!0}}async generateFulfillOrderExecutionData({askOrBid:e,signature:t,tokenId:n}){let a={parameters:{...e.rawData,totalOriginalConsiderationItems:BigInt(e.rawData.consideration.length)},numerator:1n,denominator:1n,signature:t,extraData:"0x"},i=a.parameters.consideration.findIndex(o=>o.itemType===4),r=st({abi:E,functionName:"fulfillAdvancedOrder",args:[a,i!==-1?[{orderIndex:0n,side:1,index:BigInt(i),identifier:n,criteriaProof:[]}]:[],F,vn]}),s=BigInt(e.price.netAmount.raw);return{callbackData:this.encodeExecutionData({module:this.Seaport.address,data:r,value:s}),value:s,isSeaportCall:!0}}async buyTokens(e){let{ETH_ADDRESS:t}=_(),n=e.reduce((a,i)=>a+i.price,0n);return this.client?.actions.buyToken({items:e.map(a=>({token:`${a.collectionContractAddress}:${a.tokenId}`,quantity:1,exactOrderSource:a.orderSource})),expectedPrice:this.generateExpectedCurrencyPriceObject(n,t),wallet:this.wallet,onProgress:()=>null,precheck:!1,options:{excludeEOA:!0,skipBalanceCheck:!0}})}async getExecutionDataForBuyToken({collectionContractAddress:e,tokenId:t,price:n,exactOrderSource:a}){let i=Me(this.wallet,a),{ETH_ADDRESS:r}=_();try{throw await this.client?.actions.buyToken({items:[{token:`${e}:${t}`,quantity:1,exactOrderSource:a}],expectedPrice:this.generateExpectedCurrencyPriceObject(n,r),wallet:i,onProgress:()=>null,precheck:!1,options:{excludeEOA:!0,skipBalanceCheck:!0}}),new Error("This should never happen since we will throw inside the wallet tx")}catch(s){if(s instanceof C){let{orderId:o,signature:y}=s,u=await this.getAsk({orderId:o});return this.generateMatchOrdersExecutionData({askOrBid:u,signature:y})}else if(s instanceof B){let{value:o}=s,y=await this.CryptoPunks.encodeBuyPunk(t);return{callbackData:this.encodeExecutionData({module:this.CryptoPunks.address,data:y,value:o}),value:o,isSeaportCall:!1}}else if(s instanceof P){let{to:o,callbackData:y,value:u}=s;return{callbackData:this.encodeExecutionData({module:o,data:y,value:u}),value:u,isSeaportCall:!1}}else throw new Error(`No available offer for price ${n}`)}}async getCallbackDataForSellToken({collectionContractAddress:e,tokenId:t,price:n,exactOrderSource:a}){let i=Me(this.wallet,a),{WETH_ADDRESS:r}=_(),{LeverageAddress:s}=I(this.wallet.chain),y=await Sn({abi:ye,address:e,publicClient:this.mainnetClient}).read.ownerOf([t]);try{throw await this.client?.actions.acceptOffer({items:[{token:`${e}:${t}`,quantity:1,exactOrderSource:a}],expectedPrice:this.generateExpectedCurrencyPriceObject(n,r),wallet:i,onProgress:()=>null,precheck:!1,options:{excludeEOA:!0,taker:Se(a)?y:s}}),new Error("This should never happen since we will throw inside the wallet tx")}catch(u){if(u instanceof C){let{orderId:m,signature:f}=u,c=await this.getBid({orderId:m});return this.generateFulfillOrderExecutionData({askOrBid:c,signature:f,tokenId:t})}else if(u instanceof P){let{orderId:m,to:f,callbackData:c}=u,T=await this.getBid({orderId:m});return{callbackData:this.encodeExecutionData({module:f,data:c,value:BigInt(T.price?.netAmount?.raw??0n)}),value:BigInt(T.price?.netAmount?.raw??0n),isSeaportCall:!1}}else throw new Error(`No available offer for price ${n}`)}}};l(pe,"Reservoir");var ve="fulfilled",xe="rejected";var ce=class{contracts;wallet;bcClient;api;reservoir;constructor({wallet:e,apiClient:t,reservoirBaseApiUrl:n}){this.wallet=e,this.bcClient=wn({chain:e.chain,transport:()=>On(e.transport)}),this.contracts=new se(this.bcClient,e),this.api=new W({wallet:e,apiClient:t}),this.reservoir=new pe({baseApiUrl:n,wallet:e,Seaport:this.contracts.Seaport,CryptoPunks:this.contracts.CryptoPunks})}async makeSingleNftOffer(e){return await this._makeSingleNftOffer(e)}async _makeSingleNftOffer(e,t){let n=t?this.contracts.Msl(t):this.contracts.MultiSourceLoanV5,a=n.address,i={...e,lenderAddress:e.lenderAddress?e.lenderAddress:this.wallet.account?.address,signerAddress:this.wallet.account?.address,borrowerAddress:e.borrowerAddress??x,requiresLiquidation:!!e.requiresLiquidation,contractAddress:a,offerValidators:[]},r=await this.api.generateSingleNftOfferHash({offerInput:i}),{offerHash:s,offerId:o,validators:y,lenderAddress:u,signerAddress:m,borrowerAddress:f}=r.offer,c=r.offer.nft.collection?.contractData?.contractAddress;if(c===void 0)throw new Error("Invalid nft");let T={...i,lender:u??i.lenderAddress,signer:m??i.signerAddress,borrower:f??i.borrowerAddress,nftCollateralTokenId:r.offer.nft.tokenId,nftCollateralAddress:c,validators:y,offerId:o},v=await n.signOffer({structToSign:T}),w={...i,offerValidators:y.map(U=>({arguments:U.arguments,validator:U.validator})),offerHash:s??F,offerId:o,signature:v};return await this.api.saveSingleNftOffer(w)}async makeCollectionOffer(e){return await this._makeCollectionOffer(e)}async _makeCollectionOffer(e,t){let n=t?this.contracts.Msl(t):this.contracts.MultiSourceLoanV5,a=n.address,i={...e,lenderAddress:e.lenderAddress?e.lenderAddress:this.wallet.account?.address,signerAddress:this.wallet.account?.address,borrowerAddress:e.borrowerAddress??x,requiresLiquidation:!!e.requiresLiquidation,contractAddress:a,offerValidators:[{validator:x,arguments:He}]},r=await this.api.generateCollectionOfferHash({offerInput:i}),s=r.offer.collection.contractData?.contractAddress;if(s===void 0)throw new Error("Invalid collection");let{offerHash:o,offerId:y,validators:u,lenderAddress:m,signerAddress:f,borrowerAddress:c}=r.offer,T={...i,lender:m??i.lenderAddress,signer:f??i.signerAddress,borrower:c??i.borrowerAddress,nftCollateralTokenId:0n,nftCollateralAddress:s,validators:u,offerId:y},v=await n.signOffer({structToSign:T}),w={...i,offerValidators:u.map(U=>({arguments:U.arguments,validator:U.validator})),offerHash:o??F,offerId:y,signature:v};return await this.api.saveCollectionOffer(w)}async makeSaleOffer({collectionContractAddress:e,tokenId:t,price:n,expirationTime:a}){let{parameters:{totalOriginalConsiderationItems:i,...r},signature:s}=await this.contracts.Seaport.generateOrderFromSaleOffer({collectionContractAddress:e,tokenId:t,price:n,expirationTime:a});return this.api.saveSignedSaleOffer({offer:{...r,signature:s}})}async cancelSaleOffer({saleOffer:e}){return this.contracts.Seaport.cancel({orderComponents:e})}async cancelOffer({id:e,contractAddress:t}){return this.contracts.Msl(t).cancelOffer({id:e})}async cancelAllOffers({minId:e,contractAddress:t}){return this.contracts.Msl(t).cancelAllOffers({minId:e})}async hideOffer({id:e,contractAddress:t}){return this.api.hideOffer({contract:t,id:e.toString()})}async unhideOffer({id:e,contractAddress:t}){return this.api.unhideOffer({contract:t,id:e.toString()})}async makeRefinanceOffer({renegotiation:e,contractAddress:t,skipSignature:n}){let a={lenderAddress:this.wallet.account?.address,signerAddress:this.wallet.account?.address,...e,targetPrincipal:e.targetPrincipal??[],trancheIndex:e.trancheIndex??[]},i=await this.api.generateRenegotiationOfferHash({renegotiationInput:a}),{renegotiationId:r,offerHash:s,loanId:o,lenderAddress:y,signerAddress:u}=i.offer;if(n)return{...a,offerHash:s??F,signature:F,renegotiationId:r};let m={...a,fee:a.feeAmount,lender:y??a.lenderAddress,signer:u??a.signerAddress??x,strictImprovement:!1,loanId:o,renegotiationId:r},c=await this.contracts.Msl(t).signRenegotiationOffer({structToSign:m}),T={...a,signature:c,offerHash:s??F,renegotiationId:r};return await this.api.saveRefinanceOffer(T)}async cancelRefinanceOffer({id:e,contractAddress:t}){return this.contracts.Msl(t).cancelRefinanceOffer({id:e})}async hideRenegotiationOffer({id:e,contractAddress:t}){return this.api.hideRenegotiationOffer({id:e.toString(),contractAddress:t})}async unhideRenegotiationOffer({id:e,contractAddress:t}){return this.api.unhideRenegotiationOffer({id:e.toString(),contractAddress:t})}async hideSaleOffer({id:e}){return this.api.hideSaleOffer({id:e})}async unhideSaleOffer({id:e}){return this.api.unhideSaleOffer({id:e})}async cancelAllRenegotiations({minId:e,contractAddress:t}){return this.contracts.Msl(t).cancelAllRenegotiations({minId:e})}offerExecutionFromOffers(e,t){return e.map((n,a)=>{let{signature:i,lenderAddress:r,borrowerAddress:s,offerHash:o}=n;if(!(i&&r&&s&&o))throw new Error("Misisng required field for offer");return{offer:{...n,offerHash:o,lenderAddress:r,lender:r,borrowerAddress:s,borrower:s,signature:i,maxSeniorRepayment:n.maxSeniorRepayment??0n},amount:t?.[a]??n.principalAmount,lenderOfferSignature:i}})}async emitLoan(e){let t=e.offerExecution[0].offer.contractAddress;return this.contracts.Msl(t).emitLoan(e)}async refinanceFromOffers({loan:e,loanId:t,executionData:n}){return this.contracts.Msl(e.contractAddress).refinanceFromOffers({loan:S(e),loanId:t,executionData:n})}async repayLoan({loan:e,loanId:t,nftReceiver:n}){return this.contracts.Msl(e.contractAddress).repayLoan({loan:S(e),nftReceiver:n,loanId:t})}async offers({limit:e=20,cursor:t,sortBy:n={field:"CREATED_DATE",order:"DESC"},filterBy:a={}}){let{status:i,nft:r,collection:s,borrower:o,...y}=a;return await this.api.listOffers({first:e,after:t,sortBy:n,statuses:i,nfts:r?[r]:[],collections:s?[s]:[],borrowerAddress:o,...y})}async loans({limit:e=20,cursor:t,...n}){return await this.api.listLoans({first:e,after:t,...n})}async list({nft:e}){return await this.api.listNft({nftId:e})}async unlist({nft:e}){return await this.api.unlistNft({nftId:e})}async listings({collections:e,user:t,marketPlaces:n=["GONDI"],limit:a=20,cursor:i}){return await this.api.listListings({collections:e,userFilter:t,marketplaceNames:n,after:i,first:a})}async nftId(e){let t;if(e.slug&&(t=await this.api.nftIdBySlugTokenId(e)),e.contractAddress&&(t=await this.api.nftIdByContractAddressAndTokenId(e)),!t?.nft)throw new Error(`invalid nft ${e}`);return Number(t.nft.id)}async collections(e){let t=await this.api.collections({currency:e.statsCurrency??x}),{edges:n,pageInfo:a}=t.collections;return{collections:n.map(i=>i.node),pageInfo:a}}async collectionId(e){let t;if(e.slug){if(t=await this.api.collectionIdBySlug(e),!t?.collection)throw new Error(`invalid collection ${e}`);return Number(t.collection.id)}if(e.contractAddress){if(t=await this.api.collectionsIdByContractAddress(e),!t?.collections)throw new Error(`invalid collection ${e}`);return t.collections.map(n=>Number(n.id))}}async ownedNfts(){let e=await this.api.ownedNfts(),{edges:t,pageInfo:n}=e.ownedNfts;return{ownedNfts:t.map(a=>a.node),pageInfo:n}}async getRemainingLockupSeconds({loan:e}){return this.contracts.Msl(e.contractAddress).getRemainingLockupSeconds({loan:S(e)})}async isEndLockedUp({loan:e}){return this.contracts.Msl(e.contractAddress).isEndLockedUp({loan:S(e)})}async getBestNativeSaleOffer({contractAddress:e,tokenId:t}){let{WETH_ADDRESS:n}=_(),a=await this.nftId({contractAddress:e,tokenId:t}),{bids:i}=await this.api.listBestBidsForNft({nftId:a,currencyAddress:n});return i.find(s=>s.marketPlace===Qe)??null}contractToVersion(e){return M(e,this.contracts.MultiSourceLoanV4.address)?"v4":M(e,this.contracts.MultiSourceLoanV5.address)?"v5":"v6"}async generateRenegotiationId({loanId:e,loan:t}){let n=at({loanId:e,loan:t,trancheIndex:M(t.contractAddress,this.contracts.MultiSourceLoanV6.address),address:this.wallet.account?.address}),{offer:a}=await this.api.generateRenegotiationOfferHash({renegotiationInput:n});return a.renegotiationId}async refinanceBatch({aprBpsImprovementPercentage:e,refinancings:t}){let n={v4:{},v5:{},v6:{}};t.forEach(({loan:r,source:s,refinancingPrincipal:o})=>{let y=`${r.nftCollateralAddress}-${r.nftCollateralTokenId}`,u=this.contractToVersion(r.contractAddress),m=n[u][y],f=BigInt(Math.floor(Number(s.aprBps)*(1-e))),c=et(m?.newAprBps,f);n[u][y]={loan:S(r),loanReferenceId:r.loanReferenceId,newAprBps:c,sources:[...m?.sources??[],{source:s,refinancingPrincipal:o}]}});let a=["v4","v5","v6"],i=[];for(let r of a){let s=Object.values(n[r]);if(s.length>0){let o=await this.generateRenegotiationId({loan:s[0].loan,loanId:s[0].loanReferenceId});try{let y=r==="v4"?await this.contracts.MultiSourceLoanV4.refinanceBatch({refinancings:Object.values(n.v4),renegotiationId:o}):r==="v5"?await this.contracts.MultiSourceLoanV5.refinanceBatch({refinancings:Object.values(n.v5),renegotiationId:o}):await this.contracts.MultiSourceLoanV6.refinanceBatch({refinancings:Object.values(n.v6),renegotiationId:o});i.push({status:ve,value:y})}catch(y){i.push({status:xe,reason:y,value:s})}}}return i}async refinanceFullLoan({offer:e,loan:t,loanId:n}){return this.contracts.Msl(t.contractAddress).refinanceFullLoan({offer:ue(e,n),loan:S(t),signature:e.signature})}async refinancePartialLoan({offer:e,loan:t,loanId:n}){return this.contracts.Msl(t.contractAddress).refinancePartialLoan({offer:ue(e,n),loan:S(t)})}async extendLoan({loan:e,newDuration:t,loanId:n}){return this.contracts.Msl(e.contractAddress).extendLoan({loan:S(e),newDuration:t,loanId:n})}async mergeTranches({loan:e,loanId:t,minTranche:n,maxTranche:a}){return this.contracts.Msl(e.contractAddress).mergeTranches({loan:S(e),loanId:t,minTranche:n,maxTranche:a})}async addTranche({offer:e,loan:t,loanId:n}){return this.contracts.Msl(t.contractAddress).addTranche({offer:ue(e,n),loan:S(t),signature:e.signature})}async delegateMulticall(e){let t=e[0].loan.contractAddress;return this.contracts.Msl(t).delegateMulticall(e.map(n=>({...n,loan:S(n.loan)})))}async delegate({loan:e,loanId:t,to:n,enable:a,rights:i}){return this.contracts.Msl(e.contractAddress).delegate({loan:S(e),loanId:t,to:n,rights:i,enable:a})}async revokeDelegate({to:e,collection:t,tokenId:n,contract:a=this.contracts.MultiSourceLoanV5.address}){return this.contracts.Msl(a).revokeDelegate({to:e,collection:t,tokenId:n})}async revokeDelegationsAndEmitLoan({delegations:e,emit:t}){let n=t.offerExecution[0].offer.contractAddress;return this.contracts.Msl(n).revokeDelegationsAndEmitLoan({delegations:e,emit:t})}async liquidateLoan({loan:e,loanId:t}){return this.contracts.Msl(e.contractAddress).liquidateLoan({loanId:t,loan:S(e)})}async placeBid({collectionContractAddress:e,tokenId:t,bid:n,auction:a}){return this.contracts.All(a.loanAddress).placeBid({collectionContractAddress:e,tokenId:t,bid:n,auction:a})}async settleAuction({loan:e,auction:t}){return this.contracts.All(t.loanAddress).settleAuction({auction:t,loan:S(e)})}async settleAuctionWithBuyout({loan:e,auction:t}){return this.contracts.All(t.loanAddress).settleAuctionWithBuyout({auction:t,loan:S(e)})}async getAuctionRemainingLockupSeconds({auction:e}){return this.contracts.All(e.loanAddress).getRemainingLockupSeconds({auction:e})}async buy(e){return this.reservoir.buyTokens(e)}async leverageBuy({leverageBuyData:e}){let t=await Promise.all(e.map(i=>this.reservoir.getExecutionDataForBuyToken({collectionContractAddress:i.nft.collectionContractAddress,tokenId:i.nft.tokenId,price:i.nft.price,exactOrderSource:i.nft.orderSource}))),n=t.reduce((i,{value:r},s)=>i+r-e[s].amount+e[s].offer.fee,0n),a=e.map((i,r)=>({...i,callbackData:t[r].callbackData}));return this.contracts.Leverage.buy({leverageBuyData:a,ethToSend:n<0n?0n:n})}async leverageSell({loan:e,loanId:t,price:n,orderSource:a}){let i=null;if(rt(a)){let s=await this.getBestNativeSaleOffer({contractAddress:e.nftCollateralAddress,tokenId:e.nftCollateralTokenId});if(!s||s.netAmount<n)throw new Error(`No native bid for price ${n}`);i=await this.reservoir.generateFulfillOrderExecutionData({askOrBid:{rawData:await this.contracts.Seaport.recoverOrderFromNativeBid({nativeBid:s,collectionContractAddress:e.nftCollateralAddress,tokenId:e.nftCollateralTokenId}),price:{netAmount:{raw:String(n)}}},signature:s.signature,tokenId:e.nftCollateralTokenId})}else i=await this.reservoir.getCallbackDataForSellToken({collectionContractAddress:e.nftCollateralAddress,tokenId:e.nftCollateralTokenId,price:n,exactOrderSource:a});let r=i.isSeaportCall;return this.contracts.Leverage.sell({loan:e,callbackData:i.callbackData,shouldDelegate:r,loanId:t})}async getOwner({nftAddress:e,tokenId:t}){return this.contracts.ERC721(e).read.ownerOf([t])}async isApprovedNFTForAll({nftAddress:e,to:t=this.contracts.MultiSourceLoanV5.address}){return this.contracts.ERC721(e).read.isApprovedForAll([this.wallet.account?.address,t])}async isApprovedNFT({nftAddress:e,isOldErc721:t,tokenId:n,to:a=this.contracts.MultiSourceLoanV5.address}){if(t){let r=await this.contracts.OldERC721(e).read.approvedFor([n]);return M(r,a)}return this.isApprovedNFTForAll({nftAddress:e,to:a})}async approveNFTForAll({nftAddress:e,to:t=this.contracts.MultiSourceLoanV5.address}){let n=this.contracts.ERC721(e),a=await n.write.setApprovalForAll([t,!0]);return{txHash:a,waitTxInBlock:async()=>{let i=await this.bcClient.waitForTransactionReceipt({hash:a}),r=await n.createEventFilter.ApprovalForAll({}),s=d(i,r);if(s.length===0)throw new Error("ERC721 approval for all not set");return{...s[0].args,...i}}}}async approveNFT({nftAddress:e,isOldErc721:t,tokenId:n,to:a=this.contracts.MultiSourceLoanV5.address}){if(t){let i=this.contracts.OldERC721(e),r=await i.write.approve([a,n]);return{txHash:r,waitTxInBlock:async()=>{let s=await this.bcClient.waitForTransactionReceipt({hash:r}),o=await i.createEventFilter.Approval({}),y=d(s,o);if(y.length===0)throw new Error("ERC721 approval not set");return{...y[0].args,...s}}}}return this.approveNFTForAll({nftAddress:e,to:a})}async isApprovedToken({tokenAddress:e,amount:t,to:n=this.contracts.MultiSourceLoanV5.address}){return await this.contracts.ERC20(e).read.allowance([this.wallet.account?.address,n])>=t}async approveToken({tokenAddress:e,amount:t=it,to:n=this.contracts.MultiSourceLoanV5.address}){let a=this.contracts.ERC20(e),i=await a.write.approve([n,t]);return{txHash:i,waitTxInBlock:async()=>{let r=await this.bcClient.waitForTransactionReceipt({hash:i}),s=await a.createEventFilter.Approval({}),o=d(r,s);if(o.length===0)throw new Error("ERC20 approval not set");return{...o[0].args,...r}}}}async createUserVault({nfts:e,userVaultAddress:t=this.contracts.UserVaultV5.address}){return this.contracts.UserVault(t).createVault(e)}async depositUserVaultERC721s({userVaultAddress:e=this.contracts.UserVaultV5.address,...t}){return this.contracts.UserVault(e).depositERC721s(t)}async depositUserVaultOldERC721s({userVaultAddress:e=this.contracts.UserVaultV5.address,...t}){return this.contracts.UserVault(e).depositOldERC721s(t)}async burnUserVaultAndWithdraw({userVaultAddress:e=this.contracts.UserVaultV5.address,...t}){return this.contracts.UserVault(e).burnAndWithdraw(t)}};l(ce,"Gondi");export{ve as FULFILLED,ce as Gondi,Ee as LoanStatusType,Te as MarketplaceEnum,Be as OfferStatus,fe as OffersSortField,be as Ordering,xe as REJECTED};
|
|
2000
2154
|
//# sourceMappingURL=index.mjs.map
|