@jup-ag/lend 0.1.9 → 0.1.10-beta.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.
@@ -1,11 +1,699 @@
1
1
  import { SYSVAR_INSTRUCTIONS_PUBKEY, SystemProgram, PublicKey } from '@solana/web3.js';
2
2
  import BN from 'bn.js';
3
3
  import { ASSOCIATED_TOKEN_PROGRAM_ID, getAssociatedTokenAddressSync } from '@solana/spl-token';
4
- import { g as getLiquidity, a as getRateModel, b as getFlashloanBorrowPosition, c as getLiquidityReserve, d as getFlashloanAdmin, e as flashloan } from '../shared/lend.Cr2l14_0.mjs';
5
- import { l as liquidity } from '../shared/lend.CioR9-te.mjs';
6
4
  import { Program } from '@coral-xyz/anchor';
5
+ import { g as getLiquidity, a as getRateModel, b as getFlashloanBorrowPosition, c as getLiquidityReserve, d as getFlashloanAdmin } from '../shared/lend.0Rjy1SRf.mjs';
7
6
 
8
- const LIQUIDITY_PROGRAM_ID = new PublicKey(liquidity.address);
7
+ const address = "jupgfSgfuAXv4B6R2Uxu85Z1qdzgju79s6MfZekN6XS";
8
+ const metadata = {
9
+ name: "flashloan",
10
+ version: "0.1.0",
11
+ spec: "0.1.0",
12
+ description: "Created with Anchor"
13
+ };
14
+ const instructions = [
15
+ {
16
+ name: "activate_protocol",
17
+ discriminator: [
18
+ 230,
19
+ 235,
20
+ 188,
21
+ 19,
22
+ 120,
23
+ 91,
24
+ 11,
25
+ 94
26
+ ],
27
+ accounts: [
28
+ {
29
+ name: "authority",
30
+ signer: true
31
+ },
32
+ {
33
+ name: "flashloan_admin",
34
+ writable: true
35
+ }
36
+ ],
37
+ args: [
38
+ ]
39
+ },
40
+ {
41
+ name: "flashloan_borrow",
42
+ discriminator: [
43
+ 103,
44
+ 19,
45
+ 78,
46
+ 24,
47
+ 240,
48
+ 9,
49
+ 135,
50
+ 63
51
+ ],
52
+ accounts: [
53
+ {
54
+ name: "signer",
55
+ writable: true,
56
+ signer: true
57
+ },
58
+ {
59
+ name: "flashloan_admin",
60
+ writable: true
61
+ },
62
+ {
63
+ name: "signer_borrow_token_account",
64
+ writable: true,
65
+ pda: {
66
+ seeds: [
67
+ {
68
+ kind: "account",
69
+ path: "signer"
70
+ },
71
+ {
72
+ kind: "account",
73
+ path: "token_program"
74
+ },
75
+ {
76
+ kind: "account",
77
+ path: "mint"
78
+ }
79
+ ],
80
+ program: {
81
+ kind: "const",
82
+ value: [
83
+ 140,
84
+ 151,
85
+ 37,
86
+ 143,
87
+ 78,
88
+ 36,
89
+ 137,
90
+ 241,
91
+ 187,
92
+ 61,
93
+ 16,
94
+ 41,
95
+ 20,
96
+ 142,
97
+ 13,
98
+ 131,
99
+ 11,
100
+ 90,
101
+ 19,
102
+ 153,
103
+ 218,
104
+ 255,
105
+ 16,
106
+ 132,
107
+ 4,
108
+ 142,
109
+ 123,
110
+ 216,
111
+ 219,
112
+ 233,
113
+ 248,
114
+ 89
115
+ ]
116
+ }
117
+ }
118
+ },
119
+ {
120
+ name: "mint"
121
+ },
122
+ {
123
+ name: "flashloan_token_reserves_liquidity",
124
+ writable: true
125
+ },
126
+ {
127
+ name: "flashloan_borrow_position_on_liquidity",
128
+ writable: true
129
+ },
130
+ {
131
+ name: "rate_model"
132
+ },
133
+ {
134
+ name: "vault",
135
+ writable: true
136
+ },
137
+ {
138
+ name: "liquidity"
139
+ },
140
+ {
141
+ name: "liquidity_program",
142
+ relations: [
143
+ "flashloan_admin"
144
+ ]
145
+ },
146
+ {
147
+ name: "token_program"
148
+ },
149
+ {
150
+ name: "associated_token_program",
151
+ address: "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"
152
+ },
153
+ {
154
+ name: "system_program",
155
+ address: "11111111111111111111111111111111"
156
+ },
157
+ {
158
+ name: "instruction_sysvar",
159
+ address: "Sysvar1nstructions1111111111111111111111111"
160
+ }
161
+ ],
162
+ args: [
163
+ {
164
+ name: "amount",
165
+ type: "u64"
166
+ }
167
+ ]
168
+ },
169
+ {
170
+ name: "flashloan_payback",
171
+ discriminator: [
172
+ 213,
173
+ 47,
174
+ 153,
175
+ 137,
176
+ 84,
177
+ 243,
178
+ 94,
179
+ 232
180
+ ],
181
+ accounts: [
182
+ {
183
+ name: "signer",
184
+ writable: true,
185
+ signer: true
186
+ },
187
+ {
188
+ name: "flashloan_admin",
189
+ writable: true
190
+ },
191
+ {
192
+ name: "signer_borrow_token_account",
193
+ writable: true,
194
+ pda: {
195
+ seeds: [
196
+ {
197
+ kind: "account",
198
+ path: "signer"
199
+ },
200
+ {
201
+ kind: "account",
202
+ path: "token_program"
203
+ },
204
+ {
205
+ kind: "account",
206
+ path: "mint"
207
+ }
208
+ ],
209
+ program: {
210
+ kind: "const",
211
+ value: [
212
+ 140,
213
+ 151,
214
+ 37,
215
+ 143,
216
+ 78,
217
+ 36,
218
+ 137,
219
+ 241,
220
+ 187,
221
+ 61,
222
+ 16,
223
+ 41,
224
+ 20,
225
+ 142,
226
+ 13,
227
+ 131,
228
+ 11,
229
+ 90,
230
+ 19,
231
+ 153,
232
+ 218,
233
+ 255,
234
+ 16,
235
+ 132,
236
+ 4,
237
+ 142,
238
+ 123,
239
+ 216,
240
+ 219,
241
+ 233,
242
+ 248,
243
+ 89
244
+ ]
245
+ }
246
+ }
247
+ },
248
+ {
249
+ name: "mint"
250
+ },
251
+ {
252
+ name: "flashloan_token_reserves_liquidity",
253
+ writable: true
254
+ },
255
+ {
256
+ name: "flashloan_borrow_position_on_liquidity",
257
+ writable: true
258
+ },
259
+ {
260
+ name: "rate_model"
261
+ },
262
+ {
263
+ name: "vault",
264
+ writable: true
265
+ },
266
+ {
267
+ name: "liquidity"
268
+ },
269
+ {
270
+ name: "liquidity_program",
271
+ relations: [
272
+ "flashloan_admin"
273
+ ]
274
+ },
275
+ {
276
+ name: "token_program"
277
+ },
278
+ {
279
+ name: "associated_token_program",
280
+ address: "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"
281
+ },
282
+ {
283
+ name: "system_program",
284
+ address: "11111111111111111111111111111111"
285
+ },
286
+ {
287
+ name: "instruction_sysvar",
288
+ address: "Sysvar1nstructions1111111111111111111111111"
289
+ }
290
+ ],
291
+ args: [
292
+ {
293
+ name: "amount",
294
+ type: "u64"
295
+ }
296
+ ]
297
+ },
298
+ {
299
+ name: "init_flashloan_admin",
300
+ discriminator: [
301
+ 185,
302
+ 117,
303
+ 154,
304
+ 56,
305
+ 95,
306
+ 12,
307
+ 187,
308
+ 139
309
+ ],
310
+ accounts: [
311
+ {
312
+ name: "signer",
313
+ writable: true,
314
+ signer: true
315
+ },
316
+ {
317
+ name: "flashloan_admin",
318
+ writable: true,
319
+ pda: {
320
+ seeds: [
321
+ {
322
+ kind: "const",
323
+ value: [
324
+ 102,
325
+ 108,
326
+ 97,
327
+ 115,
328
+ 104,
329
+ 108,
330
+ 111,
331
+ 97,
332
+ 110,
333
+ 95,
334
+ 97,
335
+ 100,
336
+ 109,
337
+ 105,
338
+ 110
339
+ ]
340
+ }
341
+ ]
342
+ }
343
+ },
344
+ {
345
+ name: "system_program",
346
+ address: "11111111111111111111111111111111"
347
+ }
348
+ ],
349
+ args: [
350
+ {
351
+ name: "authority",
352
+ type: "pubkey"
353
+ },
354
+ {
355
+ name: "flashloan_fee",
356
+ type: "u16"
357
+ },
358
+ {
359
+ name: "liquidity_program",
360
+ type: "pubkey"
361
+ }
362
+ ]
363
+ },
364
+ {
365
+ name: "pause_protocol",
366
+ discriminator: [
367
+ 144,
368
+ 95,
369
+ 0,
370
+ 107,
371
+ 119,
372
+ 39,
373
+ 248,
374
+ 141
375
+ ],
376
+ accounts: [
377
+ {
378
+ name: "authority",
379
+ signer: true
380
+ },
381
+ {
382
+ name: "flashloan_admin",
383
+ writable: true
384
+ }
385
+ ],
386
+ args: [
387
+ ]
388
+ },
389
+ {
390
+ name: "set_flashloan_fee",
391
+ discriminator: [
392
+ 120,
393
+ 248,
394
+ 221,
395
+ 70,
396
+ 84,
397
+ 216,
398
+ 0,
399
+ 149
400
+ ],
401
+ accounts: [
402
+ {
403
+ name: "authority",
404
+ signer: true
405
+ },
406
+ {
407
+ name: "flashloan_admin",
408
+ writable: true
409
+ }
410
+ ],
411
+ args: [
412
+ {
413
+ name: "flashloan_fee",
414
+ type: "u16"
415
+ }
416
+ ]
417
+ },
418
+ {
419
+ name: "update_authority",
420
+ discriminator: [
421
+ 32,
422
+ 46,
423
+ 64,
424
+ 28,
425
+ 149,
426
+ 75,
427
+ 243,
428
+ 88
429
+ ],
430
+ accounts: [
431
+ {
432
+ name: "authority",
433
+ signer: true
434
+ },
435
+ {
436
+ name: "flashloan_admin",
437
+ writable: true
438
+ }
439
+ ],
440
+ args: [
441
+ {
442
+ name: "new_authority",
443
+ type: "pubkey"
444
+ }
445
+ ]
446
+ }
447
+ ];
448
+ const accounts = [
449
+ {
450
+ name: "FlashloanAdmin",
451
+ discriminator: [
452
+ 162,
453
+ 161,
454
+ 45,
455
+ 28,
456
+ 131,
457
+ 91,
458
+ 202,
459
+ 88
460
+ ]
461
+ }
462
+ ];
463
+ const events = [
464
+ {
465
+ name: "ActivateProtocol",
466
+ discriminator: [
467
+ 70,
468
+ 178,
469
+ 173,
470
+ 151,
471
+ 180,
472
+ 166,
473
+ 68,
474
+ 102
475
+ ]
476
+ },
477
+ {
478
+ name: "LogUpdateAuthority",
479
+ discriminator: [
480
+ 150,
481
+ 152,
482
+ 157,
483
+ 143,
484
+ 6,
485
+ 135,
486
+ 193,
487
+ 101
488
+ ]
489
+ },
490
+ {
491
+ name: "PauseProtocol",
492
+ discriminator: [
493
+ 66,
494
+ 229,
495
+ 166,
496
+ 147,
497
+ 152,
498
+ 13,
499
+ 42,
500
+ 29
501
+ ]
502
+ },
503
+ {
504
+ name: "SetFlashloanFee",
505
+ discriminator: [
506
+ 112,
507
+ 164,
508
+ 66,
509
+ 251,
510
+ 191,
511
+ 56,
512
+ 0,
513
+ 47
514
+ ]
515
+ }
516
+ ];
517
+ const errors = [
518
+ {
519
+ code: 6000,
520
+ name: "FlashloanInvalidAuthority",
521
+ msg: "FLASHLOAN_INVALID_AUTHORITY"
522
+ },
523
+ {
524
+ code: 6001,
525
+ name: "FlashloanFeeTooHigh",
526
+ msg: "FLASHLOAN_FEE_TOO_HIGH"
527
+ },
528
+ {
529
+ code: 6002,
530
+ name: "FlashloanInvalidParams",
531
+ msg: "FLASHLOAN_INVALID_PARAMS"
532
+ },
533
+ {
534
+ code: 6003,
535
+ name: "FlashloanAlreadyActive",
536
+ msg: "FLASHLOAN_ALREADY_ACTIVE"
537
+ },
538
+ {
539
+ code: 6004,
540
+ name: "FlashloanAlreadyInactive",
541
+ msg: "FLASHLOAN_ALREADY_INACTIVE"
542
+ },
543
+ {
544
+ code: 6005,
545
+ name: "FlashloanCpiToLiquidityFailed",
546
+ msg: "FLASHLOAN_CPI_TO_LIQUIDITY_FAILED"
547
+ },
548
+ {
549
+ code: 6006,
550
+ name: "FlashloanNotAllowedInThisSlot",
551
+ msg: "FLASHLOAN_NOT_ALLOWED_IN_THIS_SLOT"
552
+ },
553
+ {
554
+ code: 6007,
555
+ name: "FlashloanInvalidInstructionSysvar",
556
+ msg: "FLASHLOAN_INVALID_INSTRUCTION_SYSVAR"
557
+ },
558
+ {
559
+ code: 6008,
560
+ name: "FlashloanInvalidInstructionData",
561
+ msg: "FLASHLOAN_INVALID_INSTRUCTION_DATA"
562
+ },
563
+ {
564
+ code: 6009,
565
+ name: "FlashloanPaybackNotFound",
566
+ msg: "FLASHLOAN_PAYBACK_NOT_FOUND"
567
+ },
568
+ {
569
+ code: 6010,
570
+ name: "FlashloanInvalidInstruction",
571
+ msg: "FLASHLOAN_INVALID_INSTRUCTION"
572
+ },
573
+ {
574
+ code: 6011,
575
+ name: "FlashloanPaused",
576
+ msg: "FLASHLOAN_PAUSED"
577
+ },
578
+ {
579
+ code: 6012,
580
+ name: "FlashloanCPICallNotAllowed",
581
+ msg: "FLASHLOAN_CPICALL_NOT_ALLOWED"
582
+ },
583
+ {
584
+ code: 6013,
585
+ name: "FlashloanMultiplePaybacksFound",
586
+ msg: "FLASHLOAN_MULTIPLE_PAYBACKS_FOUND"
587
+ }
588
+ ];
589
+ const types = [
590
+ {
591
+ name: "ActivateProtocol",
592
+ type: {
593
+ kind: "struct",
594
+ fields: [
595
+ ]
596
+ }
597
+ },
598
+ {
599
+ name: "FlashloanAdmin",
600
+ type: {
601
+ kind: "struct",
602
+ fields: [
603
+ {
604
+ name: "authority",
605
+ type: "pubkey"
606
+ },
607
+ {
608
+ name: "liquidity_program",
609
+ type: "pubkey"
610
+ },
611
+ {
612
+ name: "status",
613
+ type: "bool"
614
+ },
615
+ {
616
+ name: "flashloan_fee",
617
+ type: "u16"
618
+ },
619
+ {
620
+ name: "flashloan_timestamp",
621
+ type: "u64"
622
+ },
623
+ {
624
+ name: "is_flashloan_active",
625
+ type: "bool"
626
+ },
627
+ {
628
+ name: "active_flashloan_amount",
629
+ type: "u64"
630
+ },
631
+ {
632
+ name: "bump",
633
+ type: "u8"
634
+ }
635
+ ]
636
+ }
637
+ },
638
+ {
639
+ name: "LogUpdateAuthority",
640
+ type: {
641
+ kind: "struct",
642
+ fields: [
643
+ {
644
+ name: "new_authority",
645
+ type: "pubkey"
646
+ }
647
+ ]
648
+ }
649
+ },
650
+ {
651
+ name: "PauseProtocol",
652
+ type: {
653
+ kind: "struct",
654
+ fields: [
655
+ ]
656
+ }
657
+ },
658
+ {
659
+ name: "SetFlashloanFee",
660
+ type: {
661
+ kind: "struct",
662
+ fields: [
663
+ {
664
+ name: "flashloan_fee",
665
+ type: "u16"
666
+ }
667
+ ]
668
+ }
669
+ }
670
+ ];
671
+ const flashloan = {
672
+ address: address,
673
+ metadata: metadata,
674
+ instructions: instructions,
675
+ accounts: accounts,
676
+ events: events,
677
+ errors: errors,
678
+ types: types
679
+ };
680
+
681
+ const getLiquidityProgramId = (market) => {
682
+ return market === "ethena" ? new PublicKey("jup6QF1sNDGpkkcu6F4qaFHcRBmnSS1VgyB4uFbBvNS") : new PublicKey("jupeiUmn818Jg1ekPURTpr4mFo29p46vygyykFJ3wZC");
683
+ };
684
+ const getFlashloanProgram = ({
685
+ connection,
686
+ signer,
687
+ market
688
+ }) => {
689
+ let idl = { ...flashloan };
690
+ if (market === "ethena")
691
+ idl.address = "jupKxkab7RTnQJ6wXStXg6WY4rcReV3maiUNwByciFF";
692
+ return new Program(idl, {
693
+ connection,
694
+ publicKey: signer
695
+ });
696
+ };
9
697
  const getAccountOwner = async (account, connection) => {
10
698
  const info = await connection.getAccountInfo(account);
11
699
  if (!info)
@@ -15,13 +703,14 @@ const getAccountOwner = async (account, connection) => {
15
703
  async function getFlashloanContext({
16
704
  signer,
17
705
  asset,
18
- connection
706
+ connection,
707
+ market
19
708
  }) {
20
709
  const tokenProgram = await getAccountOwner(asset, connection);
21
- const liquidityKey = getLiquidity();
710
+ const liquidityKey = getLiquidity(market);
22
711
  return {
23
712
  signer,
24
- flashloanAdmin: getFlashloanAdmin(),
713
+ flashloanAdmin: getFlashloanAdmin(market),
25
714
  signerBorrowTokenAccount: getAssociatedTokenAddressSync(
26
715
  asset,
27
716
  signer,
@@ -29,56 +718,95 @@ async function getFlashloanContext({
29
718
  tokenProgram
30
719
  ),
31
720
  mint: asset,
32
- flashloanTokenReservesLiquidity: getLiquidityReserve(asset),
33
- flashloanBorrowPositionOnLiquidity: getFlashloanBorrowPosition(asset),
34
- rateModel: getRateModel(asset),
721
+ flashloanTokenReservesLiquidity: getLiquidityReserve(
722
+ asset,
723
+ market
724
+ ),
725
+ flashloanBorrowPositionOnLiquidity: getFlashloanBorrowPosition(
726
+ asset,
727
+ market
728
+ ),
729
+ rateModel: getRateModel(asset, market),
35
730
  vault: getAssociatedTokenAddressSync(
36
731
  asset,
37
732
  liquidityKey,
38
733
  true,
39
734
  tokenProgram
40
735
  ),
41
- liquidity: getLiquidity(),
42
- liquidityProgram: new PublicKey(LIQUIDITY_PROGRAM_ID),
736
+ liquidity: getLiquidity(market),
737
+ liquidityProgram: getLiquidityProgramId(market),
43
738
  tokenProgram,
44
739
  associatedTokenProgram: ASSOCIATED_TOKEN_PROGRAM_ID,
45
740
  systemProgram: SystemProgram.programId,
46
741
  instructionSysvar: SYSVAR_INSTRUCTIONS_PUBKEY
47
742
  };
48
743
  }
49
- async function getFlashBorrowIx(params) {
50
- const { connection, signer } = params;
51
- const program = new Program(flashloan, {
744
+ async function getFlashBorrowIx({
745
+ connection,
746
+ signer,
747
+ amount,
748
+ asset,
749
+ market = "main"
750
+ }) {
751
+ const program = getFlashloanProgram({
52
752
  connection,
53
- publicKey: signer
753
+ signer,
754
+ market
54
755
  });
55
- const context = await getFlashloanContext(params);
56
- return await program.methods.flashloanBorrow(params.amount).accounts(context).instruction();
756
+ const context = await getFlashloanContext({
757
+ connection,
758
+ signer,
759
+ market,
760
+ asset
761
+ });
762
+ return await program.methods.flashloanBorrow(amount).accounts(context).instruction();
57
763
  }
58
- async function getFlashPaybackIx(params) {
59
- const { connection, signer } = params;
60
- const program = new Program(flashloan, {
764
+ async function getFlashPaybackIx({
765
+ connection,
766
+ signer,
767
+ amount,
768
+ market = "main",
769
+ asset
770
+ }) {
771
+ const program = getFlashloanProgram({
61
772
  connection,
62
- publicKey: signer
773
+ signer,
774
+ market
63
775
  });
64
- const context = await getFlashloanContext(params);
65
- return await program.methods.flashloanPayback(params.amount).accounts(context).instruction();
776
+ const context = await getFlashloanContext({
777
+ connection,
778
+ signer,
779
+ market,
780
+ asset
781
+ });
782
+ return await program.methods.flashloanPayback(amount).accounts(context).instruction();
66
783
  }
67
- async function getFlashloanIx(params) {
68
- const { connection, signer } = params;
69
- const program = new Program(flashloan, {
784
+ async function getFlashloanIx({
785
+ connection,
786
+ signer,
787
+ amount,
788
+ market = "main",
789
+ asset
790
+ }) {
791
+ const program = getFlashloanProgram({
70
792
  connection,
71
- publicKey: signer
793
+ signer,
794
+ market
72
795
  });
73
796
  const [flashloanAdmin, borrowIx] = await Promise.all([
74
- program.account.flashloanAdmin.fetch(getFlashloanAdmin()),
75
- getFlashBorrowIx(params)
797
+ program.account.flashloanAdmin.fetch(
798
+ getFlashloanAdmin(market)
799
+ ),
800
+ getFlashBorrowIx({ connection, signer, amount, asset, market })
76
801
  ]);
77
- const paybackAmount = params.amount.mul(
802
+ const paybackAmount = amount.mul(
78
803
  new BN(1e4 + flashloanAdmin.flashloanFee).div(new BN(1e4))
79
804
  );
80
805
  const paybackIx = await getFlashPaybackIx({
81
- ...params,
806
+ connection,
807
+ signer,
808
+ market,
809
+ asset,
82
810
  amount: paybackAmount
83
811
  });
84
812
  return { borrowIx, paybackIx };