@drift-labs/sdk 2.153.0-beta.1 → 2.153.0-beta.3
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 +1 -1
- package/lib/browser/adminClient.d.ts +4 -0
- package/lib/browser/adminClient.js +36 -0
- package/lib/browser/driftClient.d.ts +30 -5
- package/lib/browser/driftClient.js +51 -28
- package/lib/browser/idl/drift.json +46 -2
- package/lib/browser/tx/txHandler.js +3 -1
- package/lib/browser/tx/utils.js +4 -2
- package/lib/node/adminClient.d.ts +4 -0
- package/lib/node/adminClient.d.ts.map +1 -1
- package/lib/node/adminClient.js +36 -0
- package/lib/node/driftClient.d.ts +30 -5
- package/lib/node/driftClient.d.ts.map +1 -1
- package/lib/node/driftClient.js +51 -28
- package/lib/node/idl/drift.json +46 -2
- package/lib/node/tx/txHandler.d.ts.map +1 -1
- package/lib/node/tx/txHandler.js +3 -1
- package/lib/node/tx/utils.d.ts.map +1 -1
- package/lib/node/tx/utils.js +4 -2
- package/package.json +1 -1
- package/src/adminClient.ts +56 -0
- package/src/driftClient.ts +90 -31
- package/src/idl/drift.json +46 -2
- package/src/tx/txHandler.ts +6 -1
- package/src/tx/utils.ts +7 -2
package/lib/node/idl/drift.json
CHANGED
|
@@ -4220,6 +4220,27 @@
|
|
|
4220
4220
|
}
|
|
4221
4221
|
]
|
|
4222
4222
|
},
|
|
4223
|
+
{
|
|
4224
|
+
"name": "deleteSerumFulfillmentConfig",
|
|
4225
|
+
"accounts": [
|
|
4226
|
+
{
|
|
4227
|
+
"name": "state",
|
|
4228
|
+
"isMut": false,
|
|
4229
|
+
"isSigner": false
|
|
4230
|
+
},
|
|
4231
|
+
{
|
|
4232
|
+
"name": "serumFulfillmentConfig",
|
|
4233
|
+
"isMut": true,
|
|
4234
|
+
"isSigner": false
|
|
4235
|
+
},
|
|
4236
|
+
{
|
|
4237
|
+
"name": "admin",
|
|
4238
|
+
"isMut": true,
|
|
4239
|
+
"isSigner": true
|
|
4240
|
+
}
|
|
4241
|
+
],
|
|
4242
|
+
"args": []
|
|
4243
|
+
},
|
|
4223
4244
|
{
|
|
4224
4245
|
"name": "initializeOpenbookV2FulfillmentConfig",
|
|
4225
4246
|
"accounts": [
|
|
@@ -4309,6 +4330,27 @@
|
|
|
4309
4330
|
}
|
|
4310
4331
|
]
|
|
4311
4332
|
},
|
|
4333
|
+
{
|
|
4334
|
+
"name": "deleteOpenbookV2FulfillmentConfig",
|
|
4335
|
+
"accounts": [
|
|
4336
|
+
{
|
|
4337
|
+
"name": "state",
|
|
4338
|
+
"isMut": false,
|
|
4339
|
+
"isSigner": false
|
|
4340
|
+
},
|
|
4341
|
+
{
|
|
4342
|
+
"name": "openbookV2FulfillmentConfig",
|
|
4343
|
+
"isMut": true,
|
|
4344
|
+
"isSigner": false
|
|
4345
|
+
},
|
|
4346
|
+
{
|
|
4347
|
+
"name": "admin",
|
|
4348
|
+
"isMut": true,
|
|
4349
|
+
"isSigner": true
|
|
4350
|
+
}
|
|
4351
|
+
],
|
|
4352
|
+
"args": []
|
|
4353
|
+
},
|
|
4312
4354
|
{
|
|
4313
4355
|
"name": "initializePhoenixFulfillmentConfig",
|
|
4314
4356
|
"accounts": [
|
|
@@ -14566,8 +14608,7 @@
|
|
|
14566
14608
|
{
|
|
14567
14609
|
"name": "isolatedPositionScaledBalance",
|
|
14568
14610
|
"docs": [
|
|
14569
|
-
"The
|
|
14570
|
-
"Used to settle the users lp position",
|
|
14611
|
+
"The scaled balance of the isolated position",
|
|
14571
14612
|
"precision: SPOT_BALANCE_PRECISION"
|
|
14572
14613
|
],
|
|
14573
14614
|
"type": "u64"
|
|
@@ -16068,6 +16109,9 @@
|
|
|
16068
16109
|
},
|
|
16069
16110
|
{
|
|
16070
16111
|
"name": "HasBuilder"
|
|
16112
|
+
},
|
|
16113
|
+
{
|
|
16114
|
+
"name": "IsIsolatedPosition"
|
|
16071
16115
|
}
|
|
16072
16116
|
]
|
|
16073
16117
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"txHandler.d.ts","sourceRoot":"","sources":["../../../src/tx/txHandler.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"txHandler.d.ts","sourceRoot":"","sources":["../../../src/tx/txHandler.ts"],"names":[],"mappings":"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"}
|
package/lib/node/tx/txHandler.js
CHANGED
|
@@ -284,9 +284,11 @@ class TxHandler {
|
|
|
284
284
|
const { txVersion, txParams, connection: _connection, preFlightCommitment: _preFlightCommitment, fetchAllMarketLookupTableAccounts, forceVersionedTransaction, instructions, } = props;
|
|
285
285
|
let { lookupTables } = props;
|
|
286
286
|
const marketLookupTables = await fetchAllMarketLookupTableAccounts();
|
|
287
|
-
|
|
287
|
+
// Combine and filter out any null/undefined lookup tables
|
|
288
|
+
const combinedLookupTables = lookupTables
|
|
288
289
|
? [...lookupTables, ...marketLookupTables]
|
|
289
290
|
: marketLookupTables;
|
|
291
|
+
lookupTables = combinedLookupTables.filter((table) => table !== null && table !== undefined);
|
|
290
292
|
// # Collect and process Tx Params
|
|
291
293
|
let baseTxParams = {
|
|
292
294
|
computeUnits: txParams === null || txParams === void 0 ? void 0 : txParams.computeUnits,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/tx/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,yBAAyB,EACzB,WAAW,EACX,sBAAsB,EACtB,oBAAoB,EACpB,MAAM,iBAAiB,CAAC;AAEzB,eAAO,MAAM,gBAAgB,OAAO,CAAC;AACrC,eAAO,MAAM,8BAA8B,UAA2B,CAAC;AAEvE,eAAO,MAAM,sBAAsB,OAC9B,WAAW,GAAG,oBAAoB,KACpC,OAMF,CAAC;AAEF,eAAO,MAAM,oBAAoB,iBAClB,sBAAsB,EAAE,wDAEjB,yBAAyB,EAAE,KAC9C,
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/tx/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,yBAAyB,EACzB,WAAW,EACX,sBAAsB,EACtB,oBAAoB,EACpB,MAAM,iBAAiB,CAAC;AAEzB,eAAO,MAAM,gBAAgB,OAAO,CAAC;AACrC,eAAO,MAAM,8BAA8B,UAA2B,CAAC;AAEvE,eAAO,MAAM,sBAAsB,OAC9B,WAAW,GAAG,oBAAoB,KACpC,OAMF,CAAC;AAEF,eAAO,MAAM,oBAAoB,iBAClB,sBAAsB,EAAE,wDAEjB,yBAAyB,EAAE,KAC9C,MAqEF,CAAC;AAMF,wBAAgB,0CAA0C,CACzD,aAAa,EAAE,MAAM,GACnB,UAAU,CAKZ"}
|
package/lib/node/tx/utils.js
CHANGED
|
@@ -41,8 +41,10 @@ const getSizeOfTransaction = (instructions, versionedTransaction = true, address
|
|
|
41
41
|
ix.data.length)
|
|
42
42
|
.reduce((a, b) => a + b, 0);
|
|
43
43
|
let numberOfAddressLookups = 0;
|
|
44
|
-
|
|
45
|
-
|
|
44
|
+
// Filter out null/undefined lookup tables before accessing .state
|
|
45
|
+
const validLookupTables = addressLookupTables.filter((table) => table !== null && table !== undefined);
|
|
46
|
+
if (validLookupTables.length > 0) {
|
|
47
|
+
const lookupTableAddresses = validLookupTables
|
|
46
48
|
.map((addressLookupTable) => addressLookupTable.state.addresses.map((address) => address.toBase58()))
|
|
47
49
|
.flat();
|
|
48
50
|
const totalNumberOfAccounts = accounts.size;
|
package/package.json
CHANGED
package/src/adminClient.ts
CHANGED
|
@@ -384,6 +384,33 @@ export class AdminClient extends DriftClient {
|
|
|
384
384
|
);
|
|
385
385
|
}
|
|
386
386
|
|
|
387
|
+
public async deleteSerumFulfillmentConfig(
|
|
388
|
+
serumMarket: PublicKey
|
|
389
|
+
): Promise<TransactionSignature> {
|
|
390
|
+
const deleteIx = await this.getDeleteSerumFulfillmentConfigIx(serumMarket);
|
|
391
|
+
const tx = await this.buildTransaction(deleteIx);
|
|
392
|
+
const { txSig } = await this.sendTransaction(tx, [], this.opts);
|
|
393
|
+
return txSig;
|
|
394
|
+
}
|
|
395
|
+
|
|
396
|
+
public async getDeleteSerumFulfillmentConfigIx(
|
|
397
|
+
serumMarket: PublicKey
|
|
398
|
+
): Promise<TransactionInstruction> {
|
|
399
|
+
const serumFulfillmentConfig = getSerumFulfillmentConfigPublicKey(
|
|
400
|
+
this.program.programId,
|
|
401
|
+
serumMarket
|
|
402
|
+
);
|
|
403
|
+
return await this.program.instruction.deleteSerumFulfillmentConfig({
|
|
404
|
+
accounts: {
|
|
405
|
+
admin: this.isSubscribed
|
|
406
|
+
? this.getStateAccount().admin
|
|
407
|
+
: this.wallet.publicKey,
|
|
408
|
+
state: await this.getStatePublicKey(),
|
|
409
|
+
serumFulfillmentConfig,
|
|
410
|
+
},
|
|
411
|
+
});
|
|
412
|
+
}
|
|
413
|
+
|
|
387
414
|
public async initializePhoenixFulfillmentConfig(
|
|
388
415
|
marketIndex: number,
|
|
389
416
|
phoenixMarket: PublicKey
|
|
@@ -476,6 +503,35 @@ export class AdminClient extends DriftClient {
|
|
|
476
503
|
);
|
|
477
504
|
}
|
|
478
505
|
|
|
506
|
+
public async deleteOpenbookV2FulfillmentConfig(
|
|
507
|
+
openbookMarket: PublicKey
|
|
508
|
+
): Promise<TransactionSignature> {
|
|
509
|
+
const deleteIx = await this.getDeleteOpenbookV2FulfillmentConfigIx(
|
|
510
|
+
openbookMarket
|
|
511
|
+
);
|
|
512
|
+
const tx = await this.buildTransaction(deleteIx);
|
|
513
|
+
const { txSig } = await this.sendTransaction(tx, [], this.opts);
|
|
514
|
+
return txSig;
|
|
515
|
+
}
|
|
516
|
+
|
|
517
|
+
public async getDeleteOpenbookV2FulfillmentConfigIx(
|
|
518
|
+
openbookMarket: PublicKey
|
|
519
|
+
): Promise<TransactionInstruction> {
|
|
520
|
+
const openbookV2FulfillmentConfig = getOpenbookV2FulfillmentConfigPublicKey(
|
|
521
|
+
this.program.programId,
|
|
522
|
+
openbookMarket
|
|
523
|
+
);
|
|
524
|
+
return await this.program.instruction.deleteOpenbookV2FulfillmentConfig({
|
|
525
|
+
accounts: {
|
|
526
|
+
admin: this.isSubscribed
|
|
527
|
+
? this.getStateAccount().admin
|
|
528
|
+
: this.wallet.publicKey,
|
|
529
|
+
state: await this.getStatePublicKey(),
|
|
530
|
+
openbookV2FulfillmentConfig,
|
|
531
|
+
},
|
|
532
|
+
});
|
|
533
|
+
}
|
|
534
|
+
|
|
479
535
|
public async initializePerpMarket(
|
|
480
536
|
marketIndex: number,
|
|
481
537
|
priceOracle: PublicKey,
|
package/src/driftClient.ts
CHANGED
|
@@ -776,7 +776,7 @@ export class DriftClient {
|
|
|
776
776
|
|
|
777
777
|
if (!this.marketLookupTables) {
|
|
778
778
|
console.log('Market lookup table address not set');
|
|
779
|
-
return;
|
|
779
|
+
return [];
|
|
780
780
|
}
|
|
781
781
|
|
|
782
782
|
const lookupTableAccountResults = await Promise.all(
|
|
@@ -785,9 +785,12 @@ export class DriftClient {
|
|
|
785
785
|
)
|
|
786
786
|
);
|
|
787
787
|
|
|
788
|
-
|
|
789
|
-
|
|
790
|
-
|
|
788
|
+
// Filter out null values - lookup tables may not exist on-chain
|
|
789
|
+
const lookupTableAccounts = lookupTableAccountResults
|
|
790
|
+
.map((result) => result.value)
|
|
791
|
+
.filter(
|
|
792
|
+
(account): account is AddressLookupTableAccount => account !== null
|
|
793
|
+
);
|
|
791
794
|
this.lookupTableAccounts = lookupTableAccounts;
|
|
792
795
|
|
|
793
796
|
return lookupTableAccounts;
|
|
@@ -1129,15 +1132,23 @@ export class DriftClient {
|
|
|
1129
1132
|
return [txSig, userAccountPublicKey];
|
|
1130
1133
|
}
|
|
1131
1134
|
|
|
1132
|
-
async getInitializeUserStatsIx(
|
|
1135
|
+
async getInitializeUserStatsIx(overrides?: {
|
|
1136
|
+
/**
|
|
1137
|
+
* Optional external wallet to use as payer. If provided, this wallet will pay
|
|
1138
|
+
* for the account creation instead of the default wallet.
|
|
1139
|
+
*/
|
|
1140
|
+
externalWallet?: PublicKey;
|
|
1141
|
+
}): Promise<TransactionInstruction> {
|
|
1142
|
+
const payer = overrides?.externalWallet ?? this.wallet.publicKey;
|
|
1143
|
+
const authority = this.authority;
|
|
1133
1144
|
return await this.program.instruction.initializeUserStats({
|
|
1134
1145
|
accounts: {
|
|
1135
1146
|
userStats: getUserStatsAccountPublicKey(
|
|
1136
1147
|
this.program.programId,
|
|
1137
|
-
|
|
1148
|
+
authority
|
|
1138
1149
|
),
|
|
1139
|
-
authority
|
|
1140
|
-
payer
|
|
1150
|
+
authority,
|
|
1151
|
+
payer,
|
|
1141
1152
|
rent: anchor.web3.SYSVAR_RENT_PUBKEY,
|
|
1142
1153
|
systemProgram: anchor.web3.SystemProgram.programId,
|
|
1143
1154
|
state: await this.getStatePublicKey(),
|
|
@@ -1166,8 +1177,16 @@ export class DriftClient {
|
|
|
1166
1177
|
|
|
1167
1178
|
async getInitializeSignedMsgUserOrdersAccountIx(
|
|
1168
1179
|
authority: PublicKey,
|
|
1169
|
-
numOrders: number
|
|
1180
|
+
numOrders: number,
|
|
1181
|
+
overrides?: {
|
|
1182
|
+
/**
|
|
1183
|
+
* Optional external wallet to use as payer. If provided, this wallet will pay
|
|
1184
|
+
* for the account creation instead of the default wallet.
|
|
1185
|
+
*/
|
|
1186
|
+
externalWallet?: PublicKey;
|
|
1187
|
+
}
|
|
1170
1188
|
): Promise<[PublicKey, TransactionInstruction]> {
|
|
1189
|
+
const payer = overrides?.externalWallet ?? this.wallet.publicKey;
|
|
1171
1190
|
const signedMsgUserAccountPublicKey = getSignedMsgUserAccountPublicKey(
|
|
1172
1191
|
this.program.programId,
|
|
1173
1192
|
authority
|
|
@@ -1177,7 +1196,7 @@ export class DriftClient {
|
|
|
1177
1196
|
accounts: {
|
|
1178
1197
|
signedMsgUserOrders: signedMsgUserAccountPublicKey,
|
|
1179
1198
|
authority,
|
|
1180
|
-
payer
|
|
1199
|
+
payer,
|
|
1181
1200
|
rent: anchor.web3.SYSVAR_RENT_PUBKEY,
|
|
1182
1201
|
systemProgram: anchor.web3.SystemProgram.programId,
|
|
1183
1202
|
},
|
|
@@ -1592,11 +1611,19 @@ export class DriftClient {
|
|
|
1592
1611
|
private async getInitializeUserInstructions(
|
|
1593
1612
|
subAccountId = 0,
|
|
1594
1613
|
name?: string,
|
|
1595
|
-
referrerInfo?: ReferrerInfo
|
|
1614
|
+
referrerInfo?: ReferrerInfo,
|
|
1615
|
+
overrides?: {
|
|
1616
|
+
externalWallet?: PublicKey;
|
|
1617
|
+
}
|
|
1596
1618
|
): Promise<[PublicKey, TransactionInstruction]> {
|
|
1619
|
+
// Use external wallet as payer if provided, otherwise use the wallet
|
|
1620
|
+
const payer = overrides?.externalWallet ?? this.wallet.publicKey;
|
|
1621
|
+
// The authority is the account owner (this.authority), not the payer
|
|
1622
|
+
const accountAuthority = this.authority;
|
|
1623
|
+
|
|
1597
1624
|
const userAccountPublicKey = await getUserAccountPublicKey(
|
|
1598
1625
|
this.program.programId,
|
|
1599
|
-
|
|
1626
|
+
accountAuthority,
|
|
1600
1627
|
subAccountId
|
|
1601
1628
|
);
|
|
1602
1629
|
|
|
@@ -1618,7 +1645,7 @@ export class DriftClient {
|
|
|
1618
1645
|
if (!state.whitelistMint.equals(PublicKey.default)) {
|
|
1619
1646
|
const associatedTokenPublicKey = await getAssociatedTokenAddress(
|
|
1620
1647
|
state.whitelistMint,
|
|
1621
|
-
|
|
1648
|
+
payer
|
|
1622
1649
|
);
|
|
1623
1650
|
remainingAccounts.push({
|
|
1624
1651
|
pubkey: associatedTokenPublicKey,
|
|
@@ -1641,8 +1668,8 @@ export class DriftClient {
|
|
|
1641
1668
|
accounts: {
|
|
1642
1669
|
user: userAccountPublicKey,
|
|
1643
1670
|
userStats: this.getUserStatsAccountPublicKey(),
|
|
1644
|
-
authority:
|
|
1645
|
-
payer:
|
|
1671
|
+
authority: accountAuthority,
|
|
1672
|
+
payer: payer,
|
|
1646
1673
|
rent: anchor.web3.SYSVAR_RENT_PUBKEY,
|
|
1647
1674
|
systemProgram: anchor.web3.SystemProgram.programId,
|
|
1648
1675
|
state: await this.getStatePublicKey(),
|
|
@@ -3315,7 +3342,14 @@ export class DriftClient {
|
|
|
3315
3342
|
referrerInfo?: ReferrerInfo,
|
|
3316
3343
|
donateAmount?: BN,
|
|
3317
3344
|
customMaxMarginRatio?: number,
|
|
3318
|
-
poolId?: number
|
|
3345
|
+
poolId?: number,
|
|
3346
|
+
overrides?: {
|
|
3347
|
+
/**
|
|
3348
|
+
* Optional external wallet to deposit from. If provided, the deposit will be made
|
|
3349
|
+
* from this wallet instead of the user's authority wallet.
|
|
3350
|
+
*/
|
|
3351
|
+
externalWallet?: PublicKey;
|
|
3352
|
+
}
|
|
3319
3353
|
): Promise<{
|
|
3320
3354
|
ixs: TransactionInstruction[];
|
|
3321
3355
|
userAccountPublicKey: PublicKey;
|
|
@@ -3326,17 +3360,20 @@ export class DriftClient {
|
|
|
3326
3360
|
await this.getInitializeUserInstructions(
|
|
3327
3361
|
subAccountId,
|
|
3328
3362
|
name,
|
|
3329
|
-
referrerInfo
|
|
3363
|
+
referrerInfo,
|
|
3364
|
+
overrides
|
|
3330
3365
|
);
|
|
3331
3366
|
|
|
3367
|
+
// Check signed message orders account for the actual authority (account owner)
|
|
3332
3368
|
const isSignedMsgUserOrdersAccountInitialized =
|
|
3333
|
-
await this.isSignedMsgUserOrdersAccountInitialized(this.
|
|
3369
|
+
await this.isSignedMsgUserOrdersAccountInitialized(this.authority);
|
|
3334
3370
|
|
|
3335
3371
|
if (!isSignedMsgUserOrdersAccountInitialized) {
|
|
3336
3372
|
const [, initializeSignedMsgUserOrdersAccountIx] =
|
|
3337
3373
|
await this.getInitializeSignedMsgUserOrdersAccountIx(
|
|
3338
|
-
this.
|
|
3339
|
-
8
|
|
3374
|
+
this.authority,
|
|
3375
|
+
8,
|
|
3376
|
+
overrides
|
|
3340
3377
|
);
|
|
3341
3378
|
ixs.push(initializeSignedMsgUserOrdersAccountIx);
|
|
3342
3379
|
}
|
|
@@ -3345,7 +3382,8 @@ export class DriftClient {
|
|
|
3345
3382
|
|
|
3346
3383
|
const isSolMarket = spotMarket.mint.equals(WRAPPED_SOL_MINT);
|
|
3347
3384
|
|
|
3348
|
-
|
|
3385
|
+
// Use external wallet for deposit source if provided, otherwise use the wallet
|
|
3386
|
+
const depositSource = overrides?.externalWallet ?? this.wallet.publicKey;
|
|
3349
3387
|
|
|
3350
3388
|
const isFromSubaccount =
|
|
3351
3389
|
fromSubAccountId !== null &&
|
|
@@ -3356,7 +3394,7 @@ export class DriftClient {
|
|
|
3356
3394
|
|
|
3357
3395
|
const createWSOLTokenAccount =
|
|
3358
3396
|
(isSolMarket &&
|
|
3359
|
-
userTokenAccount.equals(
|
|
3397
|
+
userTokenAccount.equals(depositSource) &&
|
|
3360
3398
|
!isFromSubaccount) ||
|
|
3361
3399
|
!donateAmount.eq(ZERO);
|
|
3362
3400
|
|
|
@@ -3365,7 +3403,13 @@ export class DriftClient {
|
|
|
3365
3403
|
let wsolTokenAccount: PublicKey;
|
|
3366
3404
|
if (createWSOLTokenAccount) {
|
|
3367
3405
|
const { ixs: startIxs, pubkey } =
|
|
3368
|
-
await this.getWrappedSolAccountCreationIxs(
|
|
3406
|
+
await this.getWrappedSolAccountCreationIxs(
|
|
3407
|
+
wSolAmount,
|
|
3408
|
+
true,
|
|
3409
|
+
overrides?.externalWallet
|
|
3410
|
+
? { authority: overrides.externalWallet }
|
|
3411
|
+
: undefined
|
|
3412
|
+
);
|
|
3369
3413
|
|
|
3370
3414
|
wsolTokenAccount = pubkey;
|
|
3371
3415
|
|
|
@@ -3408,14 +3452,17 @@ export class DriftClient {
|
|
|
3408
3452
|
userTokenAccount,
|
|
3409
3453
|
subAccountId,
|
|
3410
3454
|
false,
|
|
3411
|
-
false
|
|
3455
|
+
false,
|
|
3456
|
+
overrides?.externalWallet
|
|
3457
|
+
? { authority: overrides.externalWallet }
|
|
3458
|
+
: undefined
|
|
3412
3459
|
);
|
|
3413
3460
|
|
|
3414
3461
|
if (subAccountId === 0) {
|
|
3415
3462
|
if (
|
|
3416
3463
|
!(await this.checkIfAccountExists(this.getUserStatsAccountPublicKey()))
|
|
3417
3464
|
) {
|
|
3418
|
-
ixs.push(await this.getInitializeUserStatsIx());
|
|
3465
|
+
ixs.push(await this.getInitializeUserStatsIx(overrides));
|
|
3419
3466
|
}
|
|
3420
3467
|
}
|
|
3421
3468
|
ixs.push(initializeUserAccountIx);
|
|
@@ -3446,12 +3493,13 @@ export class DriftClient {
|
|
|
3446
3493
|
}
|
|
3447
3494
|
|
|
3448
3495
|
// Close the wrapped sol account at the end of the transaction
|
|
3496
|
+
// Return funds to the deposit source (external wallet if provided)
|
|
3449
3497
|
if (createWSOLTokenAccount) {
|
|
3450
3498
|
ixs.push(
|
|
3451
3499
|
createCloseAccountInstruction(
|
|
3452
3500
|
wsolTokenAccount,
|
|
3453
|
-
|
|
3454
|
-
|
|
3501
|
+
depositSource,
|
|
3502
|
+
depositSource,
|
|
3455
3503
|
[]
|
|
3456
3504
|
)
|
|
3457
3505
|
);
|
|
@@ -3474,7 +3522,10 @@ export class DriftClient {
|
|
|
3474
3522
|
donateAmount?: BN,
|
|
3475
3523
|
txParams?: TxParams,
|
|
3476
3524
|
customMaxMarginRatio?: number,
|
|
3477
|
-
poolId?: number
|
|
3525
|
+
poolId?: number,
|
|
3526
|
+
overrides?: {
|
|
3527
|
+
externalWallet?: PublicKey;
|
|
3528
|
+
}
|
|
3478
3529
|
): Promise<[Transaction | VersionedTransaction, PublicKey]> {
|
|
3479
3530
|
const { ixs, userAccountPublicKey } =
|
|
3480
3531
|
await this.createInitializeUserAccountAndDepositCollateralIxs(
|
|
@@ -3487,7 +3538,8 @@ export class DriftClient {
|
|
|
3487
3538
|
referrerInfo,
|
|
3488
3539
|
donateAmount,
|
|
3489
3540
|
customMaxMarginRatio,
|
|
3490
|
-
poolId
|
|
3541
|
+
poolId,
|
|
3542
|
+
overrides
|
|
3491
3543
|
);
|
|
3492
3544
|
|
|
3493
3545
|
const tx = await this.buildTransaction(ixs, txParams);
|
|
@@ -3506,6 +3558,9 @@ export class DriftClient {
|
|
|
3506
3558
|
* @param referrerInfo
|
|
3507
3559
|
* @param donateAmount
|
|
3508
3560
|
* @param txParams
|
|
3561
|
+
* @param customMaxMarginRatio
|
|
3562
|
+
* @param poolId
|
|
3563
|
+
* @param overrides - Optional overrides including externalWallet for depositing from a different wallet
|
|
3509
3564
|
* @returns
|
|
3510
3565
|
*/
|
|
3511
3566
|
public async initializeUserAccountAndDepositCollateral(
|
|
@@ -3519,7 +3574,10 @@ export class DriftClient {
|
|
|
3519
3574
|
donateAmount?: BN,
|
|
3520
3575
|
txParams?: TxParams,
|
|
3521
3576
|
customMaxMarginRatio?: number,
|
|
3522
|
-
poolId?: number
|
|
3577
|
+
poolId?: number,
|
|
3578
|
+
overrides?: {
|
|
3579
|
+
externalWallet?: PublicKey;
|
|
3580
|
+
}
|
|
3523
3581
|
): Promise<[TransactionSignature, PublicKey]> {
|
|
3524
3582
|
const [tx, userAccountPublicKey] =
|
|
3525
3583
|
await this.createInitializeUserAccountAndDepositCollateral(
|
|
@@ -3533,7 +3591,8 @@ export class DriftClient {
|
|
|
3533
3591
|
donateAmount,
|
|
3534
3592
|
txParams,
|
|
3535
3593
|
customMaxMarginRatio,
|
|
3536
|
-
poolId
|
|
3594
|
+
poolId,
|
|
3595
|
+
overrides
|
|
3537
3596
|
);
|
|
3538
3597
|
const additionalSigners: Array<Signer> = [];
|
|
3539
3598
|
|
package/src/idl/drift.json
CHANGED
|
@@ -4220,6 +4220,27 @@
|
|
|
4220
4220
|
}
|
|
4221
4221
|
]
|
|
4222
4222
|
},
|
|
4223
|
+
{
|
|
4224
|
+
"name": "deleteSerumFulfillmentConfig",
|
|
4225
|
+
"accounts": [
|
|
4226
|
+
{
|
|
4227
|
+
"name": "state",
|
|
4228
|
+
"isMut": false,
|
|
4229
|
+
"isSigner": false
|
|
4230
|
+
},
|
|
4231
|
+
{
|
|
4232
|
+
"name": "serumFulfillmentConfig",
|
|
4233
|
+
"isMut": true,
|
|
4234
|
+
"isSigner": false
|
|
4235
|
+
},
|
|
4236
|
+
{
|
|
4237
|
+
"name": "admin",
|
|
4238
|
+
"isMut": true,
|
|
4239
|
+
"isSigner": true
|
|
4240
|
+
}
|
|
4241
|
+
],
|
|
4242
|
+
"args": []
|
|
4243
|
+
},
|
|
4223
4244
|
{
|
|
4224
4245
|
"name": "initializeOpenbookV2FulfillmentConfig",
|
|
4225
4246
|
"accounts": [
|
|
@@ -4309,6 +4330,27 @@
|
|
|
4309
4330
|
}
|
|
4310
4331
|
]
|
|
4311
4332
|
},
|
|
4333
|
+
{
|
|
4334
|
+
"name": "deleteOpenbookV2FulfillmentConfig",
|
|
4335
|
+
"accounts": [
|
|
4336
|
+
{
|
|
4337
|
+
"name": "state",
|
|
4338
|
+
"isMut": false,
|
|
4339
|
+
"isSigner": false
|
|
4340
|
+
},
|
|
4341
|
+
{
|
|
4342
|
+
"name": "openbookV2FulfillmentConfig",
|
|
4343
|
+
"isMut": true,
|
|
4344
|
+
"isSigner": false
|
|
4345
|
+
},
|
|
4346
|
+
{
|
|
4347
|
+
"name": "admin",
|
|
4348
|
+
"isMut": true,
|
|
4349
|
+
"isSigner": true
|
|
4350
|
+
}
|
|
4351
|
+
],
|
|
4352
|
+
"args": []
|
|
4353
|
+
},
|
|
4312
4354
|
{
|
|
4313
4355
|
"name": "initializePhoenixFulfillmentConfig",
|
|
4314
4356
|
"accounts": [
|
|
@@ -14566,8 +14608,7 @@
|
|
|
14566
14608
|
{
|
|
14567
14609
|
"name": "isolatedPositionScaledBalance",
|
|
14568
14610
|
"docs": [
|
|
14569
|
-
"The
|
|
14570
|
-
"Used to settle the users lp position",
|
|
14611
|
+
"The scaled balance of the isolated position",
|
|
14571
14612
|
"precision: SPOT_BALANCE_PRECISION"
|
|
14572
14613
|
],
|
|
14573
14614
|
"type": "u64"
|
|
@@ -16068,6 +16109,9 @@
|
|
|
16068
16109
|
},
|
|
16069
16110
|
{
|
|
16070
16111
|
"name": "HasBuilder"
|
|
16112
|
+
},
|
|
16113
|
+
{
|
|
16114
|
+
"name": "IsIsolatedPosition"
|
|
16071
16115
|
}
|
|
16072
16116
|
]
|
|
16073
16117
|
}
|
package/src/tx/txHandler.ts
CHANGED
|
@@ -495,9 +495,14 @@ export class TxHandler {
|
|
|
495
495
|
|
|
496
496
|
const marketLookupTables = await fetchAllMarketLookupTableAccounts();
|
|
497
497
|
|
|
498
|
-
|
|
498
|
+
// Combine and filter out any null/undefined lookup tables
|
|
499
|
+
const combinedLookupTables = lookupTables
|
|
499
500
|
? [...lookupTables, ...marketLookupTables]
|
|
500
501
|
: marketLookupTables;
|
|
502
|
+
lookupTables = combinedLookupTables.filter(
|
|
503
|
+
(table): table is AddressLookupTableAccount =>
|
|
504
|
+
table !== null && table !== undefined
|
|
505
|
+
);
|
|
501
506
|
|
|
502
507
|
// # Collect and process Tx Params
|
|
503
508
|
let baseTxParams: BaseTxParams = {
|
package/src/tx/utils.ts
CHANGED
|
@@ -58,8 +58,13 @@ export const getSizeOfTransaction = (
|
|
|
58
58
|
.reduce((a, b) => a + b, 0);
|
|
59
59
|
|
|
60
60
|
let numberOfAddressLookups = 0;
|
|
61
|
-
|
|
62
|
-
|
|
61
|
+
// Filter out null/undefined lookup tables before accessing .state
|
|
62
|
+
const validLookupTables = addressLookupTables.filter(
|
|
63
|
+
(table): table is AddressLookupTableAccount =>
|
|
64
|
+
table !== null && table !== undefined
|
|
65
|
+
);
|
|
66
|
+
if (validLookupTables.length > 0) {
|
|
67
|
+
const lookupTableAddresses = validLookupTables
|
|
63
68
|
.map((addressLookupTable) =>
|
|
64
69
|
addressLookupTable.state.addresses.map((address) => address.toBase58())
|
|
65
70
|
)
|