@drift-labs/sdk-browser 2.110.0-beta.22 → 2.110.0-beta.23

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/VERSION CHANGED
@@ -1 +1 @@
1
- 2.110.0-beta.22
1
+ 2.110.0-beta.23
@@ -343,6 +343,8 @@ export declare class DriftClient {
343
343
  */
344
344
  transferDeposit(amount: BN, marketIndex: number, fromSubAccountId: number, toSubAccountId: number, txParams?: TxParams): Promise<TransactionSignature>;
345
345
  getTransferDepositIx(amount: BN, marketIndex: number, fromSubAccountId: number, toSubAccountId: number): Promise<TransactionInstruction>;
346
+ transferPools(depositFromMarketIndex: number, depositToMarketIndex: number, borrowFromMarketIndex: number, borrowToMarketIndex: number, depositAmount: BN | undefined, borrowAmount: BN | undefined, fromSubAccountId: number, toSubAccountId: number, txParams?: TxParams): Promise<TransactionSignature>;
347
+ getTransferPoolsIx(depositFromMarketIndex: number, depositToMarketIndex: number, borrowFromMarketIndex: number, borrowToMarketIndex: number, depositAmount: BN | undefined, borrowAmount: BN | undefined, fromSubAccountId: number, toSubAccountId: number): Promise<TransactionInstruction>;
346
348
  updateSpotMarketCumulativeInterest(marketIndex: number, txParams?: TxParams): Promise<TransactionSignature>;
347
349
  updateSpotMarketCumulativeInterestIx(marketIndex: number): Promise<TransactionInstruction>;
348
350
  settleLP(settleeUserAccountPublicKey: PublicKey, marketIndex: number, txParams?: TxParams): Promise<TransactionSignature>;
@@ -1716,6 +1716,62 @@ class DriftClient {
1716
1716
  remainingAccounts,
1717
1717
  });
1718
1718
  }
1719
+ async transferPools(depositFromMarketIndex, depositToMarketIndex, borrowFromMarketIndex, borrowToMarketIndex, depositAmount, borrowAmount, fromSubAccountId, toSubAccountId, txParams) {
1720
+ const { txSig, slot } = await this.sendTransaction(await this.buildTransaction(await this.getTransferPoolsIx(depositFromMarketIndex, depositToMarketIndex, borrowFromMarketIndex, borrowToMarketIndex, depositAmount, borrowAmount, fromSubAccountId, toSubAccountId), txParams), [], this.opts);
1721
+ if (fromSubAccountId === this.activeSubAccountId ||
1722
+ toSubAccountId === this.activeSubAccountId) {
1723
+ this.spotMarketLastSlotCache.set(depositFromMarketIndex, slot);
1724
+ this.spotMarketLastSlotCache.set(depositToMarketIndex, slot);
1725
+ this.spotMarketLastSlotCache.set(borrowFromMarketIndex, slot);
1726
+ this.spotMarketLastSlotCache.set(borrowToMarketIndex, slot);
1727
+ }
1728
+ return txSig;
1729
+ }
1730
+ async getTransferPoolsIx(depositFromMarketIndex, depositToMarketIndex, borrowFromMarketIndex, borrowToMarketIndex, depositAmount, borrowAmount, fromSubAccountId, toSubAccountId) {
1731
+ const fromUser = await (0, pda_1.getUserAccountPublicKey)(this.program.programId, this.wallet.publicKey, fromSubAccountId);
1732
+ const toUser = await (0, pda_1.getUserAccountPublicKey)(this.program.programId, this.wallet.publicKey, toSubAccountId);
1733
+ const userAccounts = [
1734
+ this.getUserAccount(fromSubAccountId),
1735
+ this.getUserAccount(toSubAccountId),
1736
+ ];
1737
+ const remainingAccounts = this.getRemainingAccounts({
1738
+ userAccounts,
1739
+ useMarketLastSlotCache: true,
1740
+ writableSpotMarketIndexes: [
1741
+ depositFromMarketIndex,
1742
+ depositToMarketIndex,
1743
+ borrowFromMarketIndex,
1744
+ borrowToMarketIndex,
1745
+ ],
1746
+ });
1747
+ const tokenPrograms = new Set();
1748
+ const depositFromSpotMarket = this.getSpotMarketAccount(depositFromMarketIndex);
1749
+ const borrowFromSpotMarket = this.getSpotMarketAccount(borrowFromMarketIndex);
1750
+ tokenPrograms.add(this.getTokenProgramForSpotMarket(depositFromSpotMarket).toBase58());
1751
+ tokenPrograms.add(this.getTokenProgramForSpotMarket(borrowFromSpotMarket).toBase58());
1752
+ for (const tokenProgram of tokenPrograms) {
1753
+ remainingAccounts.push({
1754
+ isSigner: false,
1755
+ isWritable: false,
1756
+ pubkey: new web3_js_1.PublicKey(tokenProgram),
1757
+ });
1758
+ }
1759
+ return await this.program.instruction.transferPools(depositFromMarketIndex, depositToMarketIndex, borrowFromMarketIndex, borrowToMarketIndex, depositAmount !== null && depositAmount !== void 0 ? depositAmount : null, borrowAmount !== null && borrowAmount !== void 0 ? borrowAmount : null, {
1760
+ accounts: {
1761
+ authority: this.wallet.publicKey,
1762
+ fromUser,
1763
+ toUser,
1764
+ userStats: this.getUserStatsAccountPublicKey(),
1765
+ state: await this.getStatePublicKey(),
1766
+ depositFromSpotMarketVault: this.getSpotMarketAccount(depositFromMarketIndex).vault,
1767
+ depositToSpotMarketVault: this.getSpotMarketAccount(depositToMarketIndex).vault,
1768
+ borrowFromSpotMarketVault: this.getSpotMarketAccount(borrowFromMarketIndex).vault,
1769
+ borrowToSpotMarketVault: this.getSpotMarketAccount(borrowToMarketIndex).vault,
1770
+ driftSigner: this.getSignerPublicKey(),
1771
+ },
1772
+ remainingAccounts,
1773
+ });
1774
+ }
1719
1775
  async updateSpotMarketCumulativeInterest(marketIndex, txParams) {
1720
1776
  const { txSig } = await this.sendTransaction(await this.buildTransaction(await this.updateSpotMarketCumulativeInterestIx(marketIndex), txParams), [], this.opts);
1721
1777
  return txSig;
@@ -452,6 +452,91 @@
452
452
  }
453
453
  ]
454
454
  },
455
+ {
456
+ "name": "transferPools",
457
+ "accounts": [
458
+ {
459
+ "name": "fromUser",
460
+ "isMut": true,
461
+ "isSigner": false
462
+ },
463
+ {
464
+ "name": "toUser",
465
+ "isMut": true,
466
+ "isSigner": false
467
+ },
468
+ {
469
+ "name": "userStats",
470
+ "isMut": true,
471
+ "isSigner": false
472
+ },
473
+ {
474
+ "name": "authority",
475
+ "isMut": false,
476
+ "isSigner": true
477
+ },
478
+ {
479
+ "name": "state",
480
+ "isMut": false,
481
+ "isSigner": false
482
+ },
483
+ {
484
+ "name": "depositFromSpotMarketVault",
485
+ "isMut": true,
486
+ "isSigner": false
487
+ },
488
+ {
489
+ "name": "depositToSpotMarketVault",
490
+ "isMut": true,
491
+ "isSigner": false
492
+ },
493
+ {
494
+ "name": "borrowFromSpotMarketVault",
495
+ "isMut": true,
496
+ "isSigner": false
497
+ },
498
+ {
499
+ "name": "borrowToSpotMarketVault",
500
+ "isMut": true,
501
+ "isSigner": false
502
+ },
503
+ {
504
+ "name": "driftSigner",
505
+ "isMut": false,
506
+ "isSigner": false
507
+ }
508
+ ],
509
+ "args": [
510
+ {
511
+ "name": "depositFromMarketIndex",
512
+ "type": "u16"
513
+ },
514
+ {
515
+ "name": "depositToMarketIndex",
516
+ "type": "u16"
517
+ },
518
+ {
519
+ "name": "borrowFromMarketIndex",
520
+ "type": "u16"
521
+ },
522
+ {
523
+ "name": "borrowToMarketIndex",
524
+ "type": "u16"
525
+ },
526
+ {
527
+ "name": "depositAmount",
528
+ "type": {
529
+ "option": "u64"
530
+ }
531
+ },
532
+ {
533
+ "name": "borrowAmount",
534
+ "type": {
535
+ "option": "u64"
536
+ }
537
+ }
538
+ ]
539
+ },
455
540
  {
456
541
  "name": "placePerpOrder",
457
542
  "accounts": [
@@ -343,6 +343,8 @@ export declare class DriftClient {
343
343
  */
344
344
  transferDeposit(amount: BN, marketIndex: number, fromSubAccountId: number, toSubAccountId: number, txParams?: TxParams): Promise<TransactionSignature>;
345
345
  getTransferDepositIx(amount: BN, marketIndex: number, fromSubAccountId: number, toSubAccountId: number): Promise<TransactionInstruction>;
346
+ transferPools(depositFromMarketIndex: number, depositToMarketIndex: number, borrowFromMarketIndex: number, borrowToMarketIndex: number, depositAmount: BN | undefined, borrowAmount: BN | undefined, fromSubAccountId: number, toSubAccountId: number, txParams?: TxParams): Promise<TransactionSignature>;
347
+ getTransferPoolsIx(depositFromMarketIndex: number, depositToMarketIndex: number, borrowFromMarketIndex: number, borrowToMarketIndex: number, depositAmount: BN | undefined, borrowAmount: BN | undefined, fromSubAccountId: number, toSubAccountId: number): Promise<TransactionInstruction>;
346
348
  updateSpotMarketCumulativeInterest(marketIndex: number, txParams?: TxParams): Promise<TransactionSignature>;
347
349
  updateSpotMarketCumulativeInterestIx(marketIndex: number): Promise<TransactionInstruction>;
348
350
  settleLP(settleeUserAccountPublicKey: PublicKey, marketIndex: number, txParams?: TxParams): Promise<TransactionSignature>;
@@ -1716,6 +1716,62 @@ class DriftClient {
1716
1716
  remainingAccounts,
1717
1717
  });
1718
1718
  }
1719
+ async transferPools(depositFromMarketIndex, depositToMarketIndex, borrowFromMarketIndex, borrowToMarketIndex, depositAmount, borrowAmount, fromSubAccountId, toSubAccountId, txParams) {
1720
+ const { txSig, slot } = await this.sendTransaction(await this.buildTransaction(await this.getTransferPoolsIx(depositFromMarketIndex, depositToMarketIndex, borrowFromMarketIndex, borrowToMarketIndex, depositAmount, borrowAmount, fromSubAccountId, toSubAccountId), txParams), [], this.opts);
1721
+ if (fromSubAccountId === this.activeSubAccountId ||
1722
+ toSubAccountId === this.activeSubAccountId) {
1723
+ this.spotMarketLastSlotCache.set(depositFromMarketIndex, slot);
1724
+ this.spotMarketLastSlotCache.set(depositToMarketIndex, slot);
1725
+ this.spotMarketLastSlotCache.set(borrowFromMarketIndex, slot);
1726
+ this.spotMarketLastSlotCache.set(borrowToMarketIndex, slot);
1727
+ }
1728
+ return txSig;
1729
+ }
1730
+ async getTransferPoolsIx(depositFromMarketIndex, depositToMarketIndex, borrowFromMarketIndex, borrowToMarketIndex, depositAmount, borrowAmount, fromSubAccountId, toSubAccountId) {
1731
+ const fromUser = await (0, pda_1.getUserAccountPublicKey)(this.program.programId, this.wallet.publicKey, fromSubAccountId);
1732
+ const toUser = await (0, pda_1.getUserAccountPublicKey)(this.program.programId, this.wallet.publicKey, toSubAccountId);
1733
+ const userAccounts = [
1734
+ this.getUserAccount(fromSubAccountId),
1735
+ this.getUserAccount(toSubAccountId),
1736
+ ];
1737
+ const remainingAccounts = this.getRemainingAccounts({
1738
+ userAccounts,
1739
+ useMarketLastSlotCache: true,
1740
+ writableSpotMarketIndexes: [
1741
+ depositFromMarketIndex,
1742
+ depositToMarketIndex,
1743
+ borrowFromMarketIndex,
1744
+ borrowToMarketIndex,
1745
+ ],
1746
+ });
1747
+ const tokenPrograms = new Set();
1748
+ const depositFromSpotMarket = this.getSpotMarketAccount(depositFromMarketIndex);
1749
+ const borrowFromSpotMarket = this.getSpotMarketAccount(borrowFromMarketIndex);
1750
+ tokenPrograms.add(this.getTokenProgramForSpotMarket(depositFromSpotMarket).toBase58());
1751
+ tokenPrograms.add(this.getTokenProgramForSpotMarket(borrowFromSpotMarket).toBase58());
1752
+ for (const tokenProgram of tokenPrograms) {
1753
+ remainingAccounts.push({
1754
+ isSigner: false,
1755
+ isWritable: false,
1756
+ pubkey: new web3_js_1.PublicKey(tokenProgram),
1757
+ });
1758
+ }
1759
+ return await this.program.instruction.transferPools(depositFromMarketIndex, depositToMarketIndex, borrowFromMarketIndex, borrowToMarketIndex, depositAmount !== null && depositAmount !== void 0 ? depositAmount : null, borrowAmount !== null && borrowAmount !== void 0 ? borrowAmount : null, {
1760
+ accounts: {
1761
+ authority: this.wallet.publicKey,
1762
+ fromUser,
1763
+ toUser,
1764
+ userStats: this.getUserStatsAccountPublicKey(),
1765
+ state: await this.getStatePublicKey(),
1766
+ depositFromSpotMarketVault: this.getSpotMarketAccount(depositFromMarketIndex).vault,
1767
+ depositToSpotMarketVault: this.getSpotMarketAccount(depositToMarketIndex).vault,
1768
+ borrowFromSpotMarketVault: this.getSpotMarketAccount(borrowFromMarketIndex).vault,
1769
+ borrowToSpotMarketVault: this.getSpotMarketAccount(borrowToMarketIndex).vault,
1770
+ driftSigner: this.getSignerPublicKey(),
1771
+ },
1772
+ remainingAccounts,
1773
+ });
1774
+ }
1719
1775
  async updateSpotMarketCumulativeInterest(marketIndex, txParams) {
1720
1776
  const { txSig } = await this.sendTransaction(await this.buildTransaction(await this.updateSpotMarketCumulativeInterestIx(marketIndex), txParams), [], this.opts);
1721
1777
  return txSig;
@@ -452,6 +452,91 @@
452
452
  }
453
453
  ]
454
454
  },
455
+ {
456
+ "name": "transferPools",
457
+ "accounts": [
458
+ {
459
+ "name": "fromUser",
460
+ "isMut": true,
461
+ "isSigner": false
462
+ },
463
+ {
464
+ "name": "toUser",
465
+ "isMut": true,
466
+ "isSigner": false
467
+ },
468
+ {
469
+ "name": "userStats",
470
+ "isMut": true,
471
+ "isSigner": false
472
+ },
473
+ {
474
+ "name": "authority",
475
+ "isMut": false,
476
+ "isSigner": true
477
+ },
478
+ {
479
+ "name": "state",
480
+ "isMut": false,
481
+ "isSigner": false
482
+ },
483
+ {
484
+ "name": "depositFromSpotMarketVault",
485
+ "isMut": true,
486
+ "isSigner": false
487
+ },
488
+ {
489
+ "name": "depositToSpotMarketVault",
490
+ "isMut": true,
491
+ "isSigner": false
492
+ },
493
+ {
494
+ "name": "borrowFromSpotMarketVault",
495
+ "isMut": true,
496
+ "isSigner": false
497
+ },
498
+ {
499
+ "name": "borrowToSpotMarketVault",
500
+ "isMut": true,
501
+ "isSigner": false
502
+ },
503
+ {
504
+ "name": "driftSigner",
505
+ "isMut": false,
506
+ "isSigner": false
507
+ }
508
+ ],
509
+ "args": [
510
+ {
511
+ "name": "depositFromMarketIndex",
512
+ "type": "u16"
513
+ },
514
+ {
515
+ "name": "depositToMarketIndex",
516
+ "type": "u16"
517
+ },
518
+ {
519
+ "name": "borrowFromMarketIndex",
520
+ "type": "u16"
521
+ },
522
+ {
523
+ "name": "borrowToMarketIndex",
524
+ "type": "u16"
525
+ },
526
+ {
527
+ "name": "depositAmount",
528
+ "type": {
529
+ "option": "u64"
530
+ }
531
+ },
532
+ {
533
+ "name": "borrowAmount",
534
+ "type": {
535
+ "option": "u64"
536
+ }
537
+ }
538
+ ]
539
+ },
455
540
  {
456
541
  "name": "placePerpOrder",
457
542
  "accounts": [
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@drift-labs/sdk-browser",
3
- "version": "2.110.0-beta.22",
3
+ "version": "2.110.0-beta.23",
4
4
  "main": "lib/node/index.js",
5
5
  "types": "lib/node/index.d.ts",
6
6
  "browser": "./lib/browser/index.js",
@@ -3154,6 +3154,138 @@ export class DriftClient {
3154
3154
  });
3155
3155
  }
3156
3156
 
3157
+ public async transferPools(
3158
+ depositFromMarketIndex: number,
3159
+ depositToMarketIndex: number,
3160
+ borrowFromMarketIndex: number,
3161
+ borrowToMarketIndex: number,
3162
+ depositAmount: BN | undefined,
3163
+ borrowAmount: BN | undefined,
3164
+ fromSubAccountId: number,
3165
+ toSubAccountId: number,
3166
+ txParams?: TxParams
3167
+ ): Promise<TransactionSignature> {
3168
+ const { txSig, slot } = await this.sendTransaction(
3169
+ await this.buildTransaction(
3170
+ await this.getTransferPoolsIx(
3171
+ depositFromMarketIndex,
3172
+ depositToMarketIndex,
3173
+ borrowFromMarketIndex,
3174
+ borrowToMarketIndex,
3175
+ depositAmount,
3176
+ borrowAmount,
3177
+ fromSubAccountId,
3178
+ toSubAccountId
3179
+ ),
3180
+ txParams
3181
+ ),
3182
+ [],
3183
+ this.opts
3184
+ );
3185
+
3186
+ if (
3187
+ fromSubAccountId === this.activeSubAccountId ||
3188
+ toSubAccountId === this.activeSubAccountId
3189
+ ) {
3190
+ this.spotMarketLastSlotCache.set(depositFromMarketIndex, slot);
3191
+ this.spotMarketLastSlotCache.set(depositToMarketIndex, slot);
3192
+ this.spotMarketLastSlotCache.set(borrowFromMarketIndex, slot);
3193
+ this.spotMarketLastSlotCache.set(borrowToMarketIndex, slot);
3194
+ }
3195
+ return txSig;
3196
+ }
3197
+
3198
+ public async getTransferPoolsIx(
3199
+ depositFromMarketIndex: number,
3200
+ depositToMarketIndex: number,
3201
+ borrowFromMarketIndex: number,
3202
+ borrowToMarketIndex: number,
3203
+ depositAmount: BN | undefined,
3204
+ borrowAmount: BN | undefined,
3205
+ fromSubAccountId: number,
3206
+ toSubAccountId: number
3207
+ ): Promise<TransactionInstruction> {
3208
+ const fromUser = await getUserAccountPublicKey(
3209
+ this.program.programId,
3210
+ this.wallet.publicKey,
3211
+ fromSubAccountId
3212
+ );
3213
+ const toUser = await getUserAccountPublicKey(
3214
+ this.program.programId,
3215
+ this.wallet.publicKey,
3216
+ toSubAccountId
3217
+ );
3218
+
3219
+ const userAccounts = [
3220
+ this.getUserAccount(fromSubAccountId),
3221
+ this.getUserAccount(toSubAccountId),
3222
+ ];
3223
+
3224
+ const remainingAccounts = this.getRemainingAccounts({
3225
+ userAccounts,
3226
+ useMarketLastSlotCache: true,
3227
+ writableSpotMarketIndexes: [
3228
+ depositFromMarketIndex,
3229
+ depositToMarketIndex,
3230
+ borrowFromMarketIndex,
3231
+ borrowToMarketIndex,
3232
+ ],
3233
+ });
3234
+
3235
+ const tokenPrograms = new Set<string>();
3236
+ const depositFromSpotMarket = this.getSpotMarketAccount(
3237
+ depositFromMarketIndex
3238
+ );
3239
+ const borrowFromSpotMarket = this.getSpotMarketAccount(
3240
+ borrowFromMarketIndex
3241
+ );
3242
+
3243
+ tokenPrograms.add(
3244
+ this.getTokenProgramForSpotMarket(depositFromSpotMarket).toBase58()
3245
+ );
3246
+ tokenPrograms.add(
3247
+ this.getTokenProgramForSpotMarket(borrowFromSpotMarket).toBase58()
3248
+ );
3249
+
3250
+ for (const tokenProgram of tokenPrograms) {
3251
+ remainingAccounts.push({
3252
+ isSigner: false,
3253
+ isWritable: false,
3254
+ pubkey: new PublicKey(tokenProgram),
3255
+ });
3256
+ }
3257
+
3258
+ return await this.program.instruction.transferPools(
3259
+ depositFromMarketIndex,
3260
+ depositToMarketIndex,
3261
+ borrowFromMarketIndex,
3262
+ borrowToMarketIndex,
3263
+ depositAmount ?? null,
3264
+ borrowAmount ?? null,
3265
+ {
3266
+ accounts: {
3267
+ authority: this.wallet.publicKey,
3268
+ fromUser,
3269
+ toUser,
3270
+ userStats: this.getUserStatsAccountPublicKey(),
3271
+ state: await this.getStatePublicKey(),
3272
+ depositFromSpotMarketVault: this.getSpotMarketAccount(
3273
+ depositFromMarketIndex
3274
+ ).vault,
3275
+ depositToSpotMarketVault:
3276
+ this.getSpotMarketAccount(depositToMarketIndex).vault,
3277
+ borrowFromSpotMarketVault: this.getSpotMarketAccount(
3278
+ borrowFromMarketIndex
3279
+ ).vault,
3280
+ borrowToSpotMarketVault:
3281
+ this.getSpotMarketAccount(borrowToMarketIndex).vault,
3282
+ driftSigner: this.getSignerPublicKey(),
3283
+ },
3284
+ remainingAccounts,
3285
+ }
3286
+ );
3287
+ }
3288
+
3157
3289
  public async updateSpotMarketCumulativeInterest(
3158
3290
  marketIndex: number,
3159
3291
  txParams?: TxParams
@@ -452,6 +452,91 @@
452
452
  }
453
453
  ]
454
454
  },
455
+ {
456
+ "name": "transferPools",
457
+ "accounts": [
458
+ {
459
+ "name": "fromUser",
460
+ "isMut": true,
461
+ "isSigner": false
462
+ },
463
+ {
464
+ "name": "toUser",
465
+ "isMut": true,
466
+ "isSigner": false
467
+ },
468
+ {
469
+ "name": "userStats",
470
+ "isMut": true,
471
+ "isSigner": false
472
+ },
473
+ {
474
+ "name": "authority",
475
+ "isMut": false,
476
+ "isSigner": true
477
+ },
478
+ {
479
+ "name": "state",
480
+ "isMut": false,
481
+ "isSigner": false
482
+ },
483
+ {
484
+ "name": "depositFromSpotMarketVault",
485
+ "isMut": true,
486
+ "isSigner": false
487
+ },
488
+ {
489
+ "name": "depositToSpotMarketVault",
490
+ "isMut": true,
491
+ "isSigner": false
492
+ },
493
+ {
494
+ "name": "borrowFromSpotMarketVault",
495
+ "isMut": true,
496
+ "isSigner": false
497
+ },
498
+ {
499
+ "name": "borrowToSpotMarketVault",
500
+ "isMut": true,
501
+ "isSigner": false
502
+ },
503
+ {
504
+ "name": "driftSigner",
505
+ "isMut": false,
506
+ "isSigner": false
507
+ }
508
+ ],
509
+ "args": [
510
+ {
511
+ "name": "depositFromMarketIndex",
512
+ "type": "u16"
513
+ },
514
+ {
515
+ "name": "depositToMarketIndex",
516
+ "type": "u16"
517
+ },
518
+ {
519
+ "name": "borrowFromMarketIndex",
520
+ "type": "u16"
521
+ },
522
+ {
523
+ "name": "borrowToMarketIndex",
524
+ "type": "u16"
525
+ },
526
+ {
527
+ "name": "depositAmount",
528
+ "type": {
529
+ "option": "u64"
530
+ }
531
+ },
532
+ {
533
+ "name": "borrowAmount",
534
+ "type": {
535
+ "option": "u64"
536
+ }
537
+ }
538
+ ]
539
+ },
455
540
  {
456
541
  "name": "placePerpOrder",
457
542
  "accounts": [