@drift-labs/sdk 0.1.36-master.7 → 0.2.0-master.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.
Files changed (197) hide show
  1. package/lib/accounts/bulkAccountLoader.d.ts +6 -6
  2. package/lib/accounts/bulkAccountLoader.js +81 -95
  3. package/lib/accounts/bulkUserSubscription.js +13 -57
  4. package/lib/accounts/fetch.d.ts +4 -0
  5. package/lib/accounts/fetch.js +18 -0
  6. package/lib/accounts/pollingClearingHouseAccountSubscriber.d.ts +34 -38
  7. package/lib/accounts/pollingClearingHouseAccountSubscriber.js +224 -224
  8. package/lib/accounts/pollingOracleSubscriber.d.ts +3 -3
  9. package/lib/accounts/pollingOracleSubscriber.js +37 -49
  10. package/lib/accounts/pollingTokenAccountSubscriber.d.ts +3 -3
  11. package/lib/accounts/pollingTokenAccountSubscriber.js +35 -50
  12. package/lib/accounts/pollingUserAccountSubscriber.d.ts +7 -13
  13. package/lib/accounts/pollingUserAccountSubscriber.js +71 -134
  14. package/lib/accounts/types.d.ts +34 -41
  15. package/lib/accounts/webSocketAccountSubscriber.d.ts +6 -4
  16. package/lib/accounts/webSocketAccountSubscriber.js +39 -35
  17. package/lib/accounts/webSocketClearingHouseAccountSubscriber.d.ts +33 -28
  18. package/lib/accounts/webSocketClearingHouseAccountSubscriber.js +153 -185
  19. package/lib/accounts/webSocketUserAccountSubscriber.d.ts +5 -11
  20. package/lib/accounts/webSocketUserAccountSubscriber.js +22 -67
  21. package/lib/addresses/marketAddresses.d.ts +4 -0
  22. package/lib/addresses/marketAddresses.js +15 -0
  23. package/lib/addresses/pda.d.ts +12 -0
  24. package/lib/addresses/pda.js +83 -0
  25. package/lib/admin.d.ts +8 -17
  26. package/lib/admin.js +366 -558
  27. package/lib/clearingHouse.d.ts +84 -109
  28. package/lib/clearingHouse.js +778 -899
  29. package/lib/clearingHouseConfig.d.ts +34 -0
  30. package/lib/clearingHouseConfig.js +2 -0
  31. package/lib/clearingHouseUser.d.ts +19 -22
  32. package/lib/clearingHouseUser.js +155 -141
  33. package/lib/clearingHouseUserConfig.d.ts +14 -0
  34. package/lib/clearingHouseUserConfig.js +2 -0
  35. package/lib/config.d.ts +12 -0
  36. package/lib/config.js +35 -4
  37. package/lib/constants/banks.d.ts +16 -0
  38. package/lib/constants/banks.js +34 -0
  39. package/lib/constants/markets.d.ts +8 -3
  40. package/lib/constants/markets.js +13 -206
  41. package/lib/constants/numericConstants.d.ts +16 -0
  42. package/lib/constants/numericConstants.js +22 -6
  43. package/lib/events/eventList.d.ts +22 -0
  44. package/lib/events/eventList.js +77 -0
  45. package/lib/events/eventSubscriber.d.ts +34 -0
  46. package/lib/events/eventSubscriber.js +126 -0
  47. package/lib/events/fetchLogs.d.ts +13 -0
  48. package/lib/events/fetchLogs.js +39 -0
  49. package/lib/events/pollingLogProvider.d.ts +15 -0
  50. package/lib/events/pollingLogProvider.js +53 -0
  51. package/lib/events/sort.d.ts +2 -0
  52. package/lib/events/sort.js +44 -0
  53. package/lib/events/txEventCache.d.ts +24 -0
  54. package/lib/events/txEventCache.js +71 -0
  55. package/lib/events/types.d.ts +49 -0
  56. package/lib/events/types.js +20 -0
  57. package/lib/events/webSocketLogProvider.d.ts +12 -0
  58. package/lib/events/webSocketLogProvider.js +30 -0
  59. package/lib/examples/makeTradeExample.js +26 -27
  60. package/lib/factory/bigNum.d.ts +112 -0
  61. package/lib/factory/bigNum.js +356 -0
  62. package/lib/factory/oracleClient.d.ts +1 -2
  63. package/lib/factory/oracleClient.js +6 -2
  64. package/lib/idl/clearing_house.json +2213 -2951
  65. package/lib/index.d.ts +12 -4
  66. package/lib/index.js +12 -4
  67. package/lib/math/amm.d.ts +19 -29
  68. package/lib/math/amm.js +129 -179
  69. package/lib/math/auction.d.ts +5 -0
  70. package/lib/math/auction.js +39 -0
  71. package/lib/math/bankBalance.d.ts +9 -0
  72. package/lib/math/bankBalance.js +75 -0
  73. package/lib/math/conversion.d.ts +0 -1
  74. package/lib/math/conversion.js +1 -5
  75. package/lib/math/funding.d.ts +6 -6
  76. package/lib/math/funding.js +158 -175
  77. package/lib/math/market.d.ts +6 -6
  78. package/lib/math/market.js +10 -9
  79. package/lib/math/orders.d.ts +5 -0
  80. package/lib/math/orders.js +31 -1
  81. package/lib/math/position.d.ts +7 -5
  82. package/lib/math/position.js +27 -27
  83. package/lib/math/repeg.d.ts +22 -0
  84. package/lib/math/repeg.js +128 -0
  85. package/lib/math/trade.d.ts +5 -4
  86. package/lib/math/trade.js +29 -21
  87. package/lib/mockUSDCFaucet.js +87 -116
  88. package/lib/oracles/oracleClientCache.d.ts +8 -0
  89. package/lib/oracles/oracleClientCache.js +19 -0
  90. package/lib/oracles/pythClient.d.ts +3 -5
  91. package/lib/oracles/pythClient.js +12 -31
  92. package/lib/oracles/quoteAssetOracleClient.d.ts +9 -0
  93. package/lib/oracles/quoteAssetOracleClient.js +21 -0
  94. package/lib/oracles/switchboardClient.d.ts +3 -5
  95. package/lib/oracles/switchboardClient.js +29 -50
  96. package/lib/oracles/types.d.ts +6 -1
  97. package/lib/orders.d.ts +6 -6
  98. package/lib/orders.js +10 -9
  99. package/lib/slot/SlotSubscriber.d.ts +12 -0
  100. package/lib/slot/SlotSubscriber.js +23 -0
  101. package/lib/tx/retryTxSender.d.ts +2 -2
  102. package/lib/tx/retryTxSender.js +108 -123
  103. package/lib/tx/types.d.ts +5 -1
  104. package/lib/tx/utils.d.ts +1 -1
  105. package/lib/tx/utils.js +11 -2
  106. package/lib/types.d.ts +105 -109
  107. package/lib/types.js +13 -1
  108. package/lib/userName.d.ts +4 -0
  109. package/lib/userName.js +20 -0
  110. package/lib/util/computeUnits.js +10 -21
  111. package/lib/util/tps.js +11 -22
  112. package/lib/wallet.js +7 -20
  113. package/package.json +10 -3
  114. package/src/accounts/bulkAccountLoader.ts +21 -15
  115. package/src/accounts/bulkUserSubscription.ts +1 -45
  116. package/src/accounts/fetch.ts +33 -0
  117. package/src/accounts/pollingClearingHouseAccountSubscriber.ts +249 -214
  118. package/src/accounts/pollingOracleSubscriber.ts +16 -8
  119. package/src/accounts/pollingTokenAccountSubscriber.ts +11 -8
  120. package/src/accounts/pollingUserAccountSubscriber.ts +21 -86
  121. package/src/accounts/types.ts +41 -70
  122. package/src/accounts/webSocketAccountSubscriber.ts +33 -16
  123. package/src/accounts/webSocketClearingHouseAccountSubscriber.ts +190 -240
  124. package/src/accounts/webSocketUserAccountSubscriber.ts +11 -71
  125. package/src/addresses/marketAddresses.ts +18 -0
  126. package/src/addresses/pda.ts +118 -0
  127. package/src/admin.ts +205 -346
  128. package/src/clearingHouse.ts +918 -961
  129. package/src/clearingHouseConfig.ts +37 -0
  130. package/src/clearingHouseUser.ts +275 -185
  131. package/src/clearingHouseUserConfig.ts +18 -0
  132. package/src/config.ts +54 -1
  133. package/src/constants/banks.ts +43 -0
  134. package/src/constants/markets.ts +16 -207
  135. package/src/constants/numericConstants.ts +33 -5
  136. package/src/events/eventList.ts +94 -0
  137. package/src/events/eventSubscriber.ts +194 -0
  138. package/src/events/fetchLogs.ts +80 -0
  139. package/src/events/pollingLogProvider.ts +79 -0
  140. package/src/events/sort.ts +65 -0
  141. package/src/events/txEventCache.ts +74 -0
  142. package/src/events/types.ts +98 -0
  143. package/src/events/webSocketLogProvider.ts +38 -0
  144. package/src/examples/makeTradeExample.ts +20 -11
  145. package/src/factory/bigNum.ts +507 -0
  146. package/src/factory/oracleClient.ts +7 -4
  147. package/src/idl/clearing_house.json +2213 -2951
  148. package/src/index.ts +12 -4
  149. package/src/math/amm.ts +229 -245
  150. package/src/math/auction.ts +39 -0
  151. package/src/math/bankBalance.ts +112 -0
  152. package/src/math/conversion.ts +1 -11
  153. package/src/math/funding.ts +12 -9
  154. package/src/math/market.ts +37 -30
  155. package/src/math/orders.ts +38 -0
  156. package/src/math/position.ts +48 -35
  157. package/src/math/repeg.ts +175 -0
  158. package/src/math/trade.ts +45 -35
  159. package/src/math/utils.js +27 -0
  160. package/src/math/utils.js.map +1 -0
  161. package/src/oracles/oracleClientCache.ts +20 -0
  162. package/src/oracles/pythClient.ts +4 -11
  163. package/src/oracles/quoteAssetOracleClient.ts +25 -0
  164. package/src/oracles/switchboardClient.ts +11 -24
  165. package/src/oracles/types.ts +7 -1
  166. package/src/orders.ts +35 -20
  167. package/src/slot/SlotSubscriber.ts +32 -0
  168. package/src/tx/retryTxSender.ts +6 -4
  169. package/src/tx/types.ts +6 -1
  170. package/src/tx/utils.ts +22 -3
  171. package/src/types.ts +108 -122
  172. package/src/userName.ts +20 -0
  173. package/src/util/computeUnits.js +17 -0
  174. package/src/util/computeUnits.js.map +1 -0
  175. package/tests/bn/test.ts +255 -0
  176. package/tsconfig.json +12 -12
  177. package/lib/addresses.d.ts +0 -10
  178. package/lib/addresses.js +0 -93
  179. package/lib/constants/accounts.d.ts +0 -15
  180. package/lib/constants/accounts.js +0 -18
  181. package/lib/factory/clearingHouse.d.ts +0 -35
  182. package/lib/factory/clearingHouse.js +0 -81
  183. package/lib/factory/clearingHouseUser.d.ts +0 -19
  184. package/lib/factory/clearingHouseUser.js +0 -34
  185. package/lib/math/insuranceFund.d.ts +0 -15
  186. package/lib/math/insuranceFund.js +0 -33
  187. package/lib/settlement.d.ts +0 -4
  188. package/lib/settlement.js +0 -10
  189. package/lib/tx/defaultTxSender.d.ts +0 -8
  190. package/lib/tx/defaultTxSender.js +0 -12
  191. package/src/addresses.ts +0 -82
  192. package/src/constants/accounts.ts +0 -26
  193. package/src/factory/clearingHouse.ts +0 -173
  194. package/src/factory/clearingHouseUser.ts +0 -73
  195. package/src/math/insuranceFund.ts +0 -29
  196. package/src/settlement.ts +0 -9
  197. package/src/tx/defaultTxSender.ts +0 -24
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SlotSubscriber = void 0;
4
+ class SlotSubscriber {
5
+ constructor(connection, _config) {
6
+ this.connection = connection;
7
+ }
8
+ async subscribe() {
9
+ this.currentSlot = await this.connection.getSlot('confirmed');
10
+ this.subscriptionId = this.connection.onSlotChange((slotInfo) => {
11
+ this.currentSlot = slotInfo.slot;
12
+ });
13
+ }
14
+ getSlot() {
15
+ return this.currentSlot;
16
+ }
17
+ async unsubscribe() {
18
+ if (this.subscriptionId) {
19
+ await this.connection.removeSlotChangeListener(this.subscriptionId);
20
+ }
21
+ }
22
+ }
23
+ exports.SlotSubscriber = SlotSubscriber;
@@ -1,5 +1,5 @@
1
1
  /// <reference types="node" />
2
- import { TxSender } from './types';
2
+ import { TxSender, TxSigAndSlot } from './types';
3
3
  import { Commitment, ConfirmOptions, RpcResponseAndContext, Signer, SignatureResult, Transaction, TransactionSignature, Connection } from '@solana/web3.js';
4
4
  import { AnchorProvider } from '@project-serum/anchor';
5
5
  declare type ResolveReference = {
@@ -11,7 +11,7 @@ export declare class RetryTxSender implements TxSender {
11
11
  retrySleep: number;
12
12
  additionalConnections: Connection[];
13
13
  constructor(provider: AnchorProvider, timeout?: number, retrySleep?: number, additionalConnections?: Connection[]);
14
- send(tx: Transaction, additionalSigners?: Array<Signer>, opts?: ConfirmOptions): Promise<TransactionSignature>;
14
+ send(tx: Transaction, additionalSigners?: Array<Signer>, opts?: ConfirmOptions): Promise<TxSigAndSlot>;
15
15
  prepareTx(tx: Transaction, additionalSigners: Array<Signer>, opts: ConfirmOptions): Promise<Transaction>;
16
16
  confirmTransaction(signature: TransactionSignature, commitment?: Commitment): Promise<RpcResponseAndContext<SignatureResult>>;
17
17
  getTimestamp(): number;
@@ -1,13 +1,4 @@
1
1
  "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
2
  var __importDefault = (this && this.__importDefault) || function (mod) {
12
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
13
4
  };
@@ -24,133 +15,127 @@ class RetryTxSender {
24
15
  this.retrySleep = retrySleep !== null && retrySleep !== void 0 ? retrySleep : DEFAULT_RETRY;
25
16
  this.additionalConnections = additionalConnections;
26
17
  }
27
- send(tx, additionalSigners, opts) {
28
- return __awaiter(this, void 0, void 0, function* () {
29
- if (additionalSigners === undefined) {
30
- additionalSigners = [];
31
- }
32
- if (opts === undefined) {
33
- opts = this.provider.opts;
18
+ async send(tx, additionalSigners, opts) {
19
+ if (additionalSigners === undefined) {
20
+ additionalSigners = [];
21
+ }
22
+ if (opts === undefined) {
23
+ opts = this.provider.opts;
24
+ }
25
+ await this.prepareTx(tx, additionalSigners, opts);
26
+ const rawTransaction = tx.serialize();
27
+ const startTime = this.getTimestamp();
28
+ const txid = await this.provider.connection.sendRawTransaction(rawTransaction, opts);
29
+ this.sendToAdditionalConnections(rawTransaction, opts);
30
+ let done = false;
31
+ const resolveReference = {
32
+ resolve: undefined,
33
+ };
34
+ const stopWaiting = () => {
35
+ done = true;
36
+ if (resolveReference.resolve) {
37
+ resolveReference.resolve();
34
38
  }
35
- yield this.prepareTx(tx, additionalSigners, opts);
36
- const rawTransaction = tx.serialize();
37
- const startTime = this.getTimestamp();
38
- const txid = yield this.provider.connection.sendRawTransaction(rawTransaction, opts);
39
- this.sendToAdditionalConnections(rawTransaction, opts);
40
- let done = false;
41
- const resolveReference = {
42
- resolve: undefined,
43
- };
44
- const stopWaiting = () => {
45
- done = true;
46
- if (resolveReference.resolve) {
47
- resolveReference.resolve();
39
+ };
40
+ (async () => {
41
+ while (!done && this.getTimestamp() - startTime < this.timeout) {
42
+ await this.sleep(resolveReference);
43
+ if (!done) {
44
+ this.provider.connection
45
+ .sendRawTransaction(rawTransaction, opts)
46
+ .catch((e) => {
47
+ console.error(e);
48
+ stopWaiting();
49
+ });
50
+ this.sendToAdditionalConnections(rawTransaction, opts);
48
51
  }
49
- };
50
- (() => __awaiter(this, void 0, void 0, function* () {
51
- while (!done && this.getTimestamp() - startTime < this.timeout) {
52
- yield this.sleep(resolveReference);
53
- if (!done) {
54
- this.provider.connection
55
- .sendRawTransaction(rawTransaction, opts)
56
- .catch((e) => {
57
- console.error(e);
58
- stopWaiting();
59
- });
60
- this.sendToAdditionalConnections(rawTransaction, opts);
61
- }
62
- }
63
- }))();
64
- try {
65
- yield this.confirmTransaction(txid, opts.commitment);
66
- }
67
- catch (e) {
68
- console.error(e);
69
- throw e;
70
52
  }
71
- finally {
72
- stopWaiting();
73
- }
74
- return txid;
75
- });
53
+ })();
54
+ let slot;
55
+ try {
56
+ const result = await this.confirmTransaction(txid, opts.commitment);
57
+ slot = result.context.slot;
58
+ }
59
+ catch (e) {
60
+ console.error(e);
61
+ throw e;
62
+ }
63
+ finally {
64
+ stopWaiting();
65
+ }
66
+ return { txSig: txid, slot };
76
67
  }
77
- prepareTx(tx, additionalSigners, opts) {
78
- return __awaiter(this, void 0, void 0, function* () {
79
- tx.feePayer = this.provider.wallet.publicKey;
80
- tx.recentBlockhash = (yield this.provider.connection.getRecentBlockhash(opts.preflightCommitment)).blockhash;
81
- yield this.provider.wallet.signTransaction(tx);
82
- additionalSigners
83
- .filter((s) => s !== undefined)
84
- .forEach((kp) => {
85
- tx.partialSign(kp);
86
- });
87
- return tx;
68
+ async prepareTx(tx, additionalSigners, opts) {
69
+ tx.feePayer = this.provider.wallet.publicKey;
70
+ tx.recentBlockhash = (await this.provider.connection.getRecentBlockhash(opts.preflightCommitment)).blockhash;
71
+ await this.provider.wallet.signTransaction(tx);
72
+ additionalSigners
73
+ .filter((s) => s !== undefined)
74
+ .forEach((kp) => {
75
+ tx.partialSign(kp);
88
76
  });
77
+ return tx;
89
78
  }
90
- confirmTransaction(signature, commitment) {
91
- return __awaiter(this, void 0, void 0, function* () {
92
- let decodedSignature;
93
- try {
94
- decodedSignature = bs58_1.default.decode(signature);
95
- }
96
- catch (err) {
97
- throw new Error('signature must be base58 encoded: ' + signature);
98
- }
99
- (0, assert_1.default)(decodedSignature.length === 64, 'signature has invalid length');
100
- const start = Date.now();
101
- const subscriptionCommitment = commitment || this.provider.opts.commitment;
102
- const subscriptionIds = new Array();
103
- const connections = [
104
- this.provider.connection,
105
- ...this.additionalConnections,
106
- ];
107
- let response = null;
108
- const promises = connections.map((connection, i) => {
109
- let subscriptionId;
110
- const confirmPromise = new Promise((resolve, reject) => {
111
- try {
112
- subscriptionId = connection.onSignature(signature, (result, context) => {
113
- subscriptionIds[i] = undefined;
114
- response = {
115
- context,
116
- value: result,
117
- };
118
- resolve(null);
119
- }, subscriptionCommitment);
120
- }
121
- catch (err) {
122
- reject(err);
123
- }
124
- });
125
- subscriptionIds.push(subscriptionId);
126
- return confirmPromise;
79
+ async confirmTransaction(signature, commitment) {
80
+ let decodedSignature;
81
+ try {
82
+ decodedSignature = bs58_1.default.decode(signature);
83
+ }
84
+ catch (err) {
85
+ throw new Error('signature must be base58 encoded: ' + signature);
86
+ }
87
+ (0, assert_1.default)(decodedSignature.length === 64, 'signature has invalid length');
88
+ const start = Date.now();
89
+ const subscriptionCommitment = commitment || this.provider.opts.commitment;
90
+ const subscriptionIds = new Array();
91
+ const connections = [
92
+ this.provider.connection,
93
+ ...this.additionalConnections,
94
+ ];
95
+ let response = null;
96
+ const promises = connections.map((connection, i) => {
97
+ let subscriptionId;
98
+ const confirmPromise = new Promise((resolve, reject) => {
99
+ try {
100
+ subscriptionId = connection.onSignature(signature, (result, context) => {
101
+ subscriptionIds[i] = undefined;
102
+ response = {
103
+ context,
104
+ value: result,
105
+ };
106
+ resolve(null);
107
+ }, subscriptionCommitment);
108
+ }
109
+ catch (err) {
110
+ reject(err);
111
+ }
127
112
  });
128
- try {
129
- yield this.promiseTimeout(promises, this.timeout);
130
- }
131
- finally {
132
- for (const [i, subscriptionId] of subscriptionIds.entries()) {
133
- if (subscriptionId) {
134
- connections[i].removeSignatureListener(subscriptionId);
135
- }
113
+ subscriptionIds.push(subscriptionId);
114
+ return confirmPromise;
115
+ });
116
+ try {
117
+ await this.promiseTimeout(promises, this.timeout);
118
+ }
119
+ finally {
120
+ for (const [i, subscriptionId] of subscriptionIds.entries()) {
121
+ if (subscriptionId) {
122
+ connections[i].removeSignatureListener(subscriptionId);
136
123
  }
137
124
  }
138
- if (response === null) {
139
- const duration = (Date.now() - start) / 1000;
140
- throw new Error(`Transaction was not confirmed in ${duration.toFixed(2)} seconds. It is unknown if it succeeded or failed. Check signature ${signature} using the Solana Explorer or CLI tools.`);
141
- }
142
- return response;
143
- });
125
+ }
126
+ if (response === null) {
127
+ const duration = (Date.now() - start) / 1000;
128
+ throw new Error(`Transaction was not confirmed in ${duration.toFixed(2)} seconds. It is unknown if it succeeded or failed. Check signature ${signature} using the Solana Explorer or CLI tools.`);
129
+ }
130
+ return response;
144
131
  }
145
132
  getTimestamp() {
146
133
  return new Date().getTime();
147
134
  }
148
- sleep(reference) {
149
- return __awaiter(this, void 0, void 0, function* () {
150
- return new Promise((resolve) => {
151
- reference.resolve = resolve;
152
- setTimeout(resolve, this.retrySleep);
153
- });
135
+ async sleep(reference) {
136
+ return new Promise((resolve) => {
137
+ reference.resolve = resolve;
138
+ setTimeout(resolve, this.retrySleep);
154
139
  });
155
140
  }
156
141
  promiseTimeout(promises, timeoutMs) {
package/lib/tx/types.d.ts CHANGED
@@ -1,6 +1,10 @@
1
1
  import { Provider } from '@project-serum/anchor';
2
2
  import { ConfirmOptions, Signer, Transaction, TransactionSignature } from '@solana/web3.js';
3
+ export declare type TxSigAndSlot = {
4
+ txSig: TransactionSignature;
5
+ slot: number;
6
+ };
3
7
  export interface TxSender {
4
8
  provider: Provider;
5
- send(tx: Transaction, additionalSigners?: Array<Signer>, opts?: ConfirmOptions): Promise<TransactionSignature>;
9
+ send(tx: Transaction, additionalSigners?: Array<Signer>, opts?: ConfirmOptions): Promise<TxSigAndSlot>;
6
10
  }
package/lib/tx/utils.d.ts CHANGED
@@ -1,2 +1,2 @@
1
1
  import { Transaction, TransactionInstruction } from '@solana/web3.js';
2
- export declare function wrapInTx(instruction: TransactionInstruction): Transaction;
2
+ export declare function wrapInTx(instruction: TransactionInstruction, computeUnits?: number): Transaction;
package/lib/tx/utils.js CHANGED
@@ -2,7 +2,16 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.wrapInTx = void 0;
4
4
  const web3_js_1 = require("@solana/web3.js");
5
- function wrapInTx(instruction) {
6
- return new web3_js_1.Transaction().add(instruction);
5
+ const COMPUTE_UNITS_DEFAULT = 200000;
6
+ function wrapInTx(instruction, computeUnits = 500000 // 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);
7
16
  }
8
17
  exports.wrapInTx = wrapInTx;