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 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 At}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 ut}from"siwe";var Ce=l(()=>`${se()}/graphql`,"authApiUrl"),dt=l(async()=>{let p=he.from([yt({uri:({operationName:e})=>`${Ce()}?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 dt(),{data:t,errors:n}=await e.mutate({mutation:_e`
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(d=>d.message).join(", "));let a=t?.generateSignInNonce,i=new ut({domain:"gondi.xyz",address:p.account.address,chainId:p.chain.id,statement:"Sign in with Ethereum to the app.",uri:Ce(),version:"1",nonce:a}),r=await p.signMessage({message:i.prepareMessage()}),{data:s,errors:o}=await e.mutate({mutation:_e`
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(d=>d.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 Le=`type ActiveOfferNotification implements Node & Notification {
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: Address!
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 = "0xCf7Ed3AccA5a467e9e704C703E8D87F634fB0Fc9", renegotiationId: String!): Renegotiation!
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 = "0xCf7Ed3AccA5a467e9e704C703E8D87F634fB0Fc9", renegotiationId: String!): Renegotiation!
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(after: String, currencyAddress: Address = null, first: Int! = 10, includeLost: Boolean = null, lenders: [String!] = null, sortBy: [SourceSortInput!] = null, statuses: [LoanStatusType!] = null, terms: TermsFilter = null): SourceLostSourceConnection!
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 Ft=l(()=>`${se()}/lending/graphql`,"apiUrl"),St=At(Le);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})=>`${Ft()}?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 f 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||{}),ce=(t=>(t.Gondi="GONDI",t.Nftfi="NFTFI",t))(ce||{});var Be=(r=>(r.Active="ACTIVE",r.Cancelled="CANCELLED",r.Executed="EXECUTED",r.Expired="EXPIRED",r.Inactive="INACTIVE",r.Outperformed="OUTPERFORMED",r))(Be||{}),Te=(m=>(m.AprBps="APR_BPS",m.CreatedDate="CREATED_DATE",m.DailyInterest="DAILY_INTEREST",m.Duration="DURATION",m.Expiration="EXPIRATION",m.MaxPrincipal="MAX_PRINCIPAL",m.NetInterest="NET_INTEREST",m.NetPrincipal="NET_PRINCIPAL",m.PrincipalAmount="PRINCIPAL_AMOUNT",m.Repayment="REPAYMENT",m.Status="STATUS",m.TotalInterest="TOTAL_INTEREST",m))(Te||{}),fe=(t=>(t.Asc="ASC",t.Desc="DESC",t))(fe||{});var ke=f`
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=f`
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=f`
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=f`
1661
+ `,wt=b`
1508
1662
  mutation listNft($nftId: Int!) {
1509
1663
  addOrUpdateListing(nftId: $nftId) {
1510
1664
  id
1511
1665
  }
1512
1666
  }
1513
- `,Ot=f`
1667
+ `,Ot=b`
1514
1668
  mutation unlistNft($nftId: Int!) {
1515
1669
  removeListing(nftId: $nftId) {
1516
1670
  id
1517
1671
  }
1518
1672
  }
1519
- `,ht=f`
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=f`
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
- `,Ct=f`
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
- `,Lt=f`
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=f`
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=f`
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=f`
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=f`
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=f`
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=f`
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=f`
1792
+ `,Dt=b`
1639
1793
  mutation hideSaleOffer($id: String!) {
1640
1794
  hideSaleOffer(saleOfferId: $id) {
1641
1795
  id
1642
1796
  }
1643
1797
  }
1644
- `,Vt=f`
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=f`
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=f`
1823
+ `,Ut=b`
1670
1824
  mutation unhideSaleOffer($id: String!) {
1671
1825
  showSaleOffer(saleOfferId: $id) {
1672
1826
  id
1673
1827
  }
1674
1828
  }
1675
- `,qt=f`
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=f`
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=f`
1898
+ `,Wt=b`
1745
1899
  query collectionIdBySlug($slug: String!) {
1746
1900
  collection: getCollectionBySlug(slug: $slug) {
1747
1901
  id
1748
1902
  }
1749
1903
  }
1750
- `,$t=f`
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=f`
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=f`
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=f`
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=f`
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=f`
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