@drift-labs/sdk 0.2.0-master.3 → 0.2.0-master.30

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.
Files changed (208) hide show
  1. package/README.md +13 -13
  2. package/lib/accounts/bulkUserStatsSubscription.d.ts +7 -0
  3. package/lib/accounts/bulkUserStatsSubscription.js +21 -0
  4. package/lib/accounts/bulkUserSubscription.js +0 -1
  5. package/lib/accounts/fetch.d.ts +2 -1
  6. package/lib/accounts/fetch.js +9 -1
  7. package/lib/accounts/pollingClearingHouseAccountSubscriber.d.ts +16 -16
  8. package/lib/accounts/pollingClearingHouseAccountSubscriber.js +31 -28
  9. package/lib/accounts/pollingUserStatsAccountSubscriber.d.ts +27 -0
  10. package/lib/accounts/pollingUserStatsAccountSubscriber.js +113 -0
  11. package/lib/accounts/types.d.ts +22 -11
  12. package/lib/accounts/webSocketClearingHouseAccountSubscriber.d.ts +17 -17
  13. package/lib/accounts/webSocketClearingHouseAccountSubscriber.js +37 -35
  14. package/lib/accounts/webSocketUserStatsAccountSubsriber.d.ts +20 -0
  15. package/lib/accounts/webSocketUserStatsAccountSubsriber.js +47 -0
  16. package/lib/addresses/marketAddresses.d.ts +1 -3
  17. package/lib/addresses/pda.d.ts +10 -4
  18. package/lib/addresses/pda.js +51 -14
  19. package/lib/admin.d.ts +34 -22
  20. package/lib/admin.js +182 -73
  21. package/lib/clearingHouse.d.ts +120 -42
  22. package/lib/clearingHouse.js +1505 -254
  23. package/lib/clearingHouseConfig.d.ts +4 -4
  24. package/lib/clearingHouseUser.d.ts +50 -38
  25. package/lib/clearingHouseUser.js +410 -190
  26. package/lib/clearingHouseUserStats.d.ts +18 -0
  27. package/lib/clearingHouseUserStats.js +49 -0
  28. package/lib/clearingHouseUserStatsConfig.d.ts +14 -0
  29. package/lib/clearingHouseUserStatsConfig.js +2 -0
  30. package/lib/config.d.ts +7 -9
  31. package/lib/config.js +21 -21
  32. package/lib/constants/numericConstants.d.ts +18 -12
  33. package/lib/constants/numericConstants.js +28 -21
  34. package/lib/constants/perpMarkets.d.ts +18 -0
  35. package/lib/constants/{markets.js → perpMarkets.js} +7 -7
  36. package/lib/constants/spotMarkets.d.ts +19 -0
  37. package/lib/constants/spotMarkets.js +53 -0
  38. package/lib/dlob/DLOB.d.ts +73 -0
  39. package/lib/dlob/DLOB.js +553 -0
  40. package/lib/dlob/DLOBNode.d.ts +52 -0
  41. package/lib/dlob/DLOBNode.js +82 -0
  42. package/lib/dlob/NodeList.d.ts +26 -0
  43. package/lib/dlob/NodeList.js +138 -0
  44. package/lib/events/eventList.js +3 -0
  45. package/lib/events/eventSubscriber.d.ts +4 -2
  46. package/lib/events/eventSubscriber.js +16 -9
  47. package/lib/events/fetchLogs.d.ts +10 -1
  48. package/lib/events/fetchLogs.js +27 -7
  49. package/lib/events/pollingLogProvider.d.ts +2 -1
  50. package/lib/events/pollingLogProvider.js +6 -2
  51. package/lib/events/sort.js +8 -11
  52. package/lib/events/types.d.ts +7 -2
  53. package/lib/events/types.js +5 -0
  54. package/lib/examples/makeTradeExample.js +20 -8
  55. package/lib/factory/bigNum.d.ts +1 -0
  56. package/lib/factory/bigNum.js +34 -10
  57. package/lib/idl/clearing_house.json +4313 -1433
  58. package/lib/idl/{mock_usdc_faucet.json → token_faucet.json} +46 -23
  59. package/lib/index.d.ts +21 -6
  60. package/lib/index.js +25 -6
  61. package/lib/math/amm.d.ts +8 -5
  62. package/lib/math/amm.js +68 -46
  63. package/lib/math/auction.js +4 -1
  64. package/lib/math/conversion.js +1 -1
  65. package/lib/math/funding.d.ts +6 -6
  66. package/lib/math/funding.js +11 -10
  67. package/lib/math/insurance.d.ts +4 -0
  68. package/lib/math/insurance.js +27 -0
  69. package/lib/math/margin.d.ts +11 -0
  70. package/lib/math/margin.js +77 -0
  71. package/lib/math/market.d.ts +14 -9
  72. package/lib/math/market.js +69 -7
  73. package/lib/math/oracles.d.ts +4 -0
  74. package/lib/math/oracles.js +36 -8
  75. package/lib/math/orders.d.ts +6 -2
  76. package/lib/math/orders.js +78 -3
  77. package/lib/math/position.d.ts +21 -13
  78. package/lib/math/position.js +76 -36
  79. package/lib/math/repeg.js +14 -5
  80. package/lib/math/spotBalance.d.ts +22 -0
  81. package/lib/math/spotBalance.js +193 -0
  82. package/lib/math/spotMarket.d.ts +4 -0
  83. package/lib/math/spotMarket.js +8 -0
  84. package/lib/math/spotPosition.d.ts +6 -0
  85. package/lib/math/spotPosition.js +23 -0
  86. package/lib/math/trade.d.ts +10 -10
  87. package/lib/math/trade.js +22 -29
  88. package/lib/oracles/pythClient.js +1 -1
  89. package/lib/oracles/quoteAssetOracleClient.js +1 -1
  90. package/lib/oracles/switchboardClient.js +1 -1
  91. package/lib/orderParams.d.ts +14 -5
  92. package/lib/orderParams.js +12 -92
  93. package/lib/serum/serumSubscriber.d.ts +23 -0
  94. package/lib/serum/serumSubscriber.js +41 -0
  95. package/lib/serum/types.d.ts +11 -0
  96. package/lib/serum/types.js +2 -0
  97. package/lib/slot/SlotSubscriber.d.ts +7 -0
  98. package/lib/slot/SlotSubscriber.js +3 -0
  99. package/lib/{mockUSDCFaucet.d.ts → tokenFaucet.d.ts} +8 -5
  100. package/lib/{mockUSDCFaucet.js → tokenFaucet.js} +63 -51
  101. package/lib/tx/retryTxSender.d.ts +1 -1
  102. package/lib/tx/retryTxSender.js +13 -4
  103. package/lib/tx/types.d.ts +1 -1
  104. package/lib/tx/utils.js +1 -1
  105. package/lib/types.d.ts +474 -123
  106. package/lib/types.js +99 -5
  107. package/lib/userMap/userMap.d.ts +25 -0
  108. package/lib/userMap/userMap.js +73 -0
  109. package/lib/userMap/userStatsMap.d.ts +19 -0
  110. package/lib/userMap/userStatsMap.js +68 -0
  111. package/lib/util/computeUnits.js +1 -1
  112. package/lib/util/getTokenAddress.d.ts +2 -0
  113. package/lib/util/getTokenAddress.js +9 -0
  114. package/package.json +9 -5
  115. package/src/accounts/bulkUserStatsSubscription.ts +33 -0
  116. package/src/accounts/bulkUserSubscription.ts +0 -1
  117. package/src/accounts/fetch.ts +27 -2
  118. package/src/accounts/pollingClearingHouseAccountSubscriber.ts +46 -42
  119. package/src/accounts/pollingUserStatsAccountSubscriber.ts +172 -0
  120. package/src/accounts/types.ts +31 -11
  121. package/src/accounts/webSocketClearingHouseAccountSubscriber.ts +64 -59
  122. package/src/accounts/webSocketUserStatsAccountSubsriber.ts +80 -0
  123. package/src/addresses/marketAddresses.ts +1 -2
  124. package/src/addresses/pda.ts +88 -14
  125. package/src/admin.ts +333 -128
  126. package/src/assert/assert.js +9 -0
  127. package/src/clearingHouse.ts +2464 -458
  128. package/src/clearingHouseConfig.ts +4 -3
  129. package/src/clearingHouseUser.ts +747 -291
  130. package/src/clearingHouseUserStats.ts +75 -0
  131. package/src/clearingHouseUserStatsConfig.ts +18 -0
  132. package/src/config.ts +30 -31
  133. package/src/constants/numericConstants.ts +41 -25
  134. package/src/constants/{markets.ts → perpMarkets.ts} +10 -10
  135. package/src/constants/spotMarkets.ts +72 -0
  136. package/src/dlob/DLOB.ts +868 -0
  137. package/src/dlob/DLOBNode.ts +162 -0
  138. package/src/dlob/NodeList.ts +185 -0
  139. package/src/events/eventList.js +77 -0
  140. package/src/events/eventList.ts +3 -0
  141. package/src/events/eventSubscriber.ts +20 -12
  142. package/src/events/fetchLogs.ts +35 -8
  143. package/src/events/pollingLogProvider.ts +10 -2
  144. package/src/events/sort.ts +11 -15
  145. package/src/events/types.ts +16 -1
  146. package/src/examples/makeTradeExample.js +157 -0
  147. package/src/examples/makeTradeExample.ts +32 -14
  148. package/src/factory/bigNum.ts +42 -13
  149. package/src/idl/clearing_house.json +4313 -1433
  150. package/src/idl/{mock_usdc_faucet.json → token_faucet.json} +46 -23
  151. package/src/index.ts +21 -6
  152. package/src/math/amm.ts +136 -66
  153. package/src/math/auction.ts +5 -1
  154. package/src/math/conversion.ts +2 -2
  155. package/src/math/funding.ts +20 -18
  156. package/src/math/insurance.ts +35 -0
  157. package/src/math/margin.ts +127 -0
  158. package/src/math/market.ts +138 -12
  159. package/src/math/oracles.ts +63 -9
  160. package/src/math/orders.ts +138 -4
  161. package/src/math/position.ts +119 -58
  162. package/src/math/repeg.ts +16 -6
  163. package/src/math/spotBalance.ts +316 -0
  164. package/src/math/spotMarket.ts +9 -0
  165. package/src/math/spotPosition.ts +47 -0
  166. package/src/math/trade.ts +43 -49
  167. package/src/oracles/pythClient.ts +2 -2
  168. package/src/oracles/quoteAssetOracleClient.ts +2 -2
  169. package/src/oracles/switchboardClient.ts +2 -2
  170. package/src/orderParams.ts +24 -137
  171. package/src/serum/serumSubscriber.ts +80 -0
  172. package/src/serum/types.ts +13 -0
  173. package/src/slot/SlotSubscriber.ts +11 -1
  174. package/src/token/index.js +38 -0
  175. package/src/{mockUSDCFaucet.ts → tokenFaucet.ts} +82 -70
  176. package/src/tx/retryTxSender.ts +16 -5
  177. package/src/tx/types.js +2 -0
  178. package/src/tx/types.ts +2 -1
  179. package/src/tx/utils.js +17 -0
  180. package/src/tx/utils.ts +1 -1
  181. package/src/types.ts +477 -125
  182. package/src/userMap/userMap.ts +100 -0
  183. package/src/userMap/userStatsMap.ts +110 -0
  184. package/src/util/computeUnits.js +21 -11
  185. package/src/util/computeUnits.ts +1 -1
  186. package/src/util/getTokenAddress.js +9 -0
  187. package/src/util/getTokenAddress.ts +18 -0
  188. package/src/util/promiseTimeout.js +14 -0
  189. package/src/util/tps.js +27 -0
  190. package/tests/bn/test.ts +12 -3
  191. package/tests/dlob/helpers.ts +374 -0
  192. package/tests/dlob/test.ts +2865 -0
  193. package/lib/constants/banks.d.ts +0 -16
  194. package/lib/constants/banks.js +0 -34
  195. package/lib/constants/markets.d.ts +0 -19
  196. package/lib/math/bankBalance.d.ts +0 -9
  197. package/lib/math/bankBalance.js +0 -75
  198. package/lib/math/state.d.ts +0 -8
  199. package/lib/math/state.js +0 -15
  200. package/lib/orders.d.ts +0 -8
  201. package/lib/orders.js +0 -134
  202. package/src/constants/banks.ts +0 -43
  203. package/src/math/bankBalance.ts +0 -112
  204. package/src/math/state.ts +0 -14
  205. package/src/math/utils.js +0 -27
  206. package/src/math/utils.js.map +0 -1
  207. package/src/orders.ts +0 -244
  208. package/src/util/computeUnits.js.map +0 -1
@@ -3,7 +3,6 @@ import { AnchorProvider, Idl, Program } from '@project-serum/anchor';
3
3
  import {
4
4
  AccountInfo,
5
5
  ASSOCIATED_TOKEN_PROGRAM_ID,
6
- MintLayout,
7
6
  Token,
8
7
  TOKEN_PROGRAM_ID,
9
8
  } from '@solana/spl-token';
@@ -11,27 +10,28 @@ import {
11
10
  ConfirmOptions,
12
11
  Connection,
13
12
  PublicKey,
14
- SystemProgram,
15
13
  SYSVAR_RENT_PUBKEY,
16
14
  Transaction,
17
15
  TransactionInstruction,
18
16
  TransactionSignature,
19
17
  } from '@solana/web3.js';
20
18
  import { BN } from '.';
21
- import mockUSDCFaucetIDL from './idl/mock_usdc_faucet.json';
19
+ import tokenFaucet from './idl/token_faucet.json';
22
20
  import { IWallet } from './types';
23
21
 
24
- export class MockUSDCFaucet {
22
+ export class TokenFaucet {
25
23
  connection: Connection;
26
24
  wallet: IWallet;
27
25
  public program: Program;
28
26
  provider: AnchorProvider;
27
+ mint: PublicKey;
29
28
  opts?: ConfirmOptions;
30
29
 
31
30
  public constructor(
32
31
  connection: Connection,
33
32
  wallet: IWallet,
34
33
  programId: PublicKey,
34
+ mint: PublicKey,
35
35
  opts?: ConfirmOptions
36
36
  ) {
37
37
  this.connection = connection;
@@ -39,93 +39,92 @@ export class MockUSDCFaucet {
39
39
  this.opts = opts || AnchorProvider.defaultOptions();
40
40
  const provider = new AnchorProvider(connection, wallet, this.opts);
41
41
  this.provider = provider;
42
- this.program = new Program(mockUSDCFaucetIDL as Idl, programId, provider);
42
+ this.program = new Program(tokenFaucet as Idl, programId, provider);
43
+ this.mint = mint;
43
44
  }
44
45
 
45
- public async getMockUSDCFaucetStatePublicKeyAndNonce(): Promise<
46
+ public async getFaucetConfigPublicKeyAndNonce(): Promise<
46
47
  [PublicKey, number]
47
48
  > {
48
49
  return anchor.web3.PublicKey.findProgramAddress(
49
- [Buffer.from(anchor.utils.bytes.utf8.encode('mock_usdc_faucet'))],
50
+ [
51
+ Buffer.from(anchor.utils.bytes.utf8.encode('faucet_config')),
52
+ this.mint.toBuffer(),
53
+ ],
50
54
  this.program.programId
51
55
  );
52
56
  }
53
57
 
54
- mockUSDCFaucetStatePublicKey?: PublicKey;
55
- public async getMockUSDCFaucetStatePublicKey(): Promise<PublicKey> {
56
- if (this.mockUSDCFaucetStatePublicKey) {
57
- return this.mockUSDCFaucetStatePublicKey;
58
- }
59
- this.mockUSDCFaucetStatePublicKey = (
60
- await this.getMockUSDCFaucetStatePublicKeyAndNonce()
58
+ public async getMintAuthority(): Promise<PublicKey> {
59
+ return (
60
+ await anchor.web3.PublicKey.findProgramAddress(
61
+ [
62
+ Buffer.from(anchor.utils.bytes.utf8.encode('mint_authority')),
63
+ this.mint.toBuffer(),
64
+ ],
65
+ this.program.programId
66
+ )
61
67
  )[0];
62
- return this.mockUSDCFaucetStatePublicKey;
63
68
  }
64
69
 
65
- public async initialize(): Promise<TransactionSignature> {
66
- const stateAccountRPCResponse = await this.connection.getParsedAccountInfo(
67
- await this.getMockUSDCFaucetStatePublicKey()
68
- );
69
- if (stateAccountRPCResponse.value !== null) {
70
- throw new Error('Faucet already initialized');
71
- }
72
-
73
- const fakeUSDCMint = anchor.web3.Keypair.generate();
74
- const createUSDCMintAccountIx = SystemProgram.createAccount({
75
- fromPubkey: this.wallet.publicKey,
76
- newAccountPubkey: fakeUSDCMint.publicKey,
77
- lamports: await Token.getMinBalanceRentForExemptMint(this.connection),
78
- space: MintLayout.span,
79
- programId: TOKEN_PROGRAM_ID,
80
- });
81
-
82
- const [mintAuthority, _mintAuthorityNonce] =
83
- await PublicKey.findProgramAddress(
84
- [fakeUSDCMint.publicKey.toBuffer()],
85
- this.program.programId
86
- );
87
-
88
- const initUSDCMintIx = Token.createInitMintInstruction(
89
- TOKEN_PROGRAM_ID,
90
- fakeUSDCMint.publicKey,
91
- 6,
92
- mintAuthority,
93
- null
94
- );
70
+ public async getFaucetConfigPublicKey(): Promise<PublicKey> {
71
+ return (await this.getFaucetConfigPublicKeyAndNonce())[0];
72
+ }
95
73
 
96
- const [mockUSDCFaucetStatePublicKey, mockUSDCFaucetStateNonce] =
97
- await this.getMockUSDCFaucetStatePublicKeyAndNonce();
98
- return await this.program.rpc.initialize(mockUSDCFaucetStateNonce, {
74
+ public async initialize(): Promise<TransactionSignature> {
75
+ const [faucetConfigPublicKey] =
76
+ await this.getFaucetConfigPublicKeyAndNonce();
77
+ return await this.program.rpc.initialize({
99
78
  accounts: {
100
- mockUsdcFaucetState: mockUSDCFaucetStatePublicKey,
79
+ faucetConfig: faucetConfigPublicKey,
101
80
  admin: this.wallet.publicKey,
102
- mintAccount: fakeUSDCMint.publicKey,
81
+ mintAccount: this.mint,
103
82
  rent: SYSVAR_RENT_PUBKEY,
104
83
  systemProgram: anchor.web3.SystemProgram.programId,
84
+ tokenProgram: TOKEN_PROGRAM_ID,
105
85
  },
106
- instructions: [createUSDCMintAccountIx, initUSDCMintIx],
107
- signers: [fakeUSDCMint],
108
86
  });
109
87
  }
110
88
 
111
89
  public async fetchState(): Promise<any> {
112
- return await this.program.account.mockUsdcFaucetState.fetch(
113
- await this.getMockUSDCFaucetStatePublicKey()
90
+ return await this.program.account.faucetConfig.fetch(
91
+ await this.getFaucetConfigPublicKey()
114
92
  );
115
93
  }
116
94
 
95
+ private async mintToUserIx(userTokenAccount: PublicKey, amount: BN) {
96
+ return this.program.instruction.mintToUser(amount, {
97
+ accounts: {
98
+ faucetConfig: await this.getFaucetConfigPublicKey(),
99
+ mintAccount: this.mint,
100
+ userTokenAccount,
101
+ mintAuthority: await this.getMintAuthority(),
102
+ tokenProgram: TOKEN_PROGRAM_ID,
103
+ },
104
+ });
105
+ }
106
+
117
107
  public async mintToUser(
118
108
  userTokenAccount: PublicKey,
119
109
  amount: BN
120
110
  ): Promise<TransactionSignature> {
121
- const state: any = await this.fetchState();
122
- return await this.program.rpc.mintToUser(amount, {
111
+ const mintIx = await this.mintToUserIx(userTokenAccount, amount);
112
+
113
+ const tx = new Transaction().add(mintIx);
114
+
115
+ const txSig = await this.program.provider.sendAndConfirm(tx, [], this.opts);
116
+
117
+ return txSig;
118
+ }
119
+
120
+ public async transferMintAuthority(): Promise<TransactionSignature> {
121
+ return await this.program.rpc.transferMintAuthority({
123
122
  accounts: {
124
- mockUsdcFaucetState: await this.getMockUSDCFaucetStatePublicKey(),
125
- mintAccount: state.mint,
126
- userTokenAccount,
127
- mintAuthority: state.mintAuthority,
123
+ faucetConfig: await this.getFaucetConfigPublicKey(),
124
+ mintAccount: this.mint,
125
+ mintAuthority: await this.getMintAuthority(),
128
126
  tokenProgram: TOKEN_PROGRAM_ID,
127
+ admin: this.wallet.publicKey,
129
128
  },
130
129
  });
131
130
  }
@@ -134,12 +133,33 @@ export class MockUSDCFaucet {
134
133
  userPublicKey: PublicKey,
135
134
  amount: BN
136
135
  ): Promise<[PublicKey, TransactionSignature]> {
136
+ const tx = new Transaction();
137
+
137
138
  const [associatedTokenPublicKey, createAssociatedAccountIx, mintToTx] =
138
139
  await this.createAssociatedTokenAccountAndMintToInstructions(
139
140
  userPublicKey,
140
141
  amount
141
142
  );
142
- const tx = new Transaction().add(createAssociatedAccountIx).add(mintToTx);
143
+
144
+ let associatedTokenAccountExists = false;
145
+
146
+ try {
147
+ const assosciatedTokenAccount = await this.connection.getAccountInfo(
148
+ associatedTokenPublicKey
149
+ );
150
+
151
+ associatedTokenAccountExists = !!assosciatedTokenAccount;
152
+ } catch (e) {
153
+ // token account doesn't exist
154
+ associatedTokenAccountExists = false;
155
+ }
156
+
157
+ const skipAccountCreation = associatedTokenAccountExists;
158
+
159
+ if (!skipAccountCreation) tx.add(createAssociatedAccountIx);
160
+
161
+ tx.add(mintToTx);
162
+
143
163
  const txSig = await this.program.provider.sendAndConfirm(tx, [], this.opts);
144
164
  return [associatedTokenPublicKey, txSig];
145
165
  }
@@ -164,15 +184,7 @@ export class MockUSDCFaucet {
164
184
  this.wallet.publicKey
165
185
  );
166
186
 
167
- const mintToIx = await this.program.instruction.mintToUser(amount, {
168
- accounts: {
169
- mockUsdcFaucetState: await this.getMockUSDCFaucetStatePublicKey(),
170
- mintAccount: state.mint,
171
- userTokenAccount: associateTokenPublicKey,
172
- mintAuthority: state.mintAuthority,
173
- tokenProgram: TOKEN_PROGRAM_ID,
174
- },
175
- });
187
+ const mintToIx = await this.mintToUserIx(associateTokenPublicKey, amount);
176
188
 
177
189
  return [associateTokenPublicKey, createAssociatedAccountIx, mintToIx];
178
190
  }
@@ -42,7 +42,8 @@ export class RetryTxSender implements TxSender {
42
42
  async send(
43
43
  tx: Transaction,
44
44
  additionalSigners?: Array<Signer>,
45
- opts?: ConfirmOptions
45
+ opts?: ConfirmOptions,
46
+ preSigned?: boolean
46
47
  ): Promise<TxSigAndSlot> {
47
48
  if (additionalSigners === undefined) {
48
49
  additionalSigners = [];
@@ -51,14 +52,24 @@ export class RetryTxSender implements TxSender {
51
52
  opts = this.provider.opts;
52
53
  }
53
54
 
54
- await this.prepareTx(tx, additionalSigners, opts);
55
+ if (!preSigned) {
56
+ await this.prepareTx(tx, additionalSigners, opts);
57
+ }
55
58
 
56
59
  const rawTransaction = tx.serialize();
57
60
  const startTime = this.getTimestamp();
58
61
 
59
- const txid: TransactionSignature =
60
- await this.provider.connection.sendRawTransaction(rawTransaction, opts);
61
- this.sendToAdditionalConnections(rawTransaction, opts);
62
+ let txid: TransactionSignature;
63
+ try {
64
+ txid = await this.provider.connection.sendRawTransaction(
65
+ rawTransaction,
66
+ opts
67
+ );
68
+ this.sendToAdditionalConnections(rawTransaction, opts);
69
+ } catch (e) {
70
+ console.error(e);
71
+ throw e;
72
+ }
62
73
 
63
74
  let done = false;
64
75
  const resolveReference: ResolveReference = {
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
package/src/tx/types.ts CHANGED
@@ -17,6 +17,7 @@ export interface TxSender {
17
17
  send(
18
18
  tx: Transaction,
19
19
  additionalSigners?: Array<Signer>,
20
- opts?: ConfirmOptions
20
+ opts?: ConfirmOptions,
21
+ preSigned?: boolean
21
22
  ): Promise<TxSigAndSlot>;
22
23
  }
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.wrapInTx = void 0;
4
+ const web3_js_1 = require("@solana/web3.js");
5
+ const COMPUTE_UNITS_DEFAULT = 200000;
6
+ function wrapInTx(instruction, computeUnits = 600000 // TODO, requires less code change
7
+ ) {
8
+ const tx = new web3_js_1.Transaction();
9
+ if (computeUnits != COMPUTE_UNITS_DEFAULT) {
10
+ tx.add(web3_js_1.ComputeBudgetProgram.requestUnits({
11
+ units: computeUnits,
12
+ additionalFee: 0,
13
+ }));
14
+ }
15
+ return tx.add(instruction);
16
+ }
17
+ exports.wrapInTx = wrapInTx;
package/src/tx/utils.ts CHANGED
@@ -8,7 +8,7 @@ const COMPUTE_UNITS_DEFAULT = 200_000;
8
8
 
9
9
  export function wrapInTx(
10
10
  instruction: TransactionInstruction,
11
- computeUnits = 500_000 // TODO, requires less code change
11
+ computeUnits = 600_000 // TODO, requires less code change
12
12
  ): Transaction {
13
13
  const tx = new Transaction();
14
14
  if (computeUnits != COMPUTE_UNITS_DEFAULT) {