@drift-labs/sdk 0.2.0-master.21 → 0.2.0-master.22

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 (52) hide show
  1. package/lib/accounts/types.d.ts +1 -0
  2. package/lib/idl/clearing_house.json +5 -0
  3. package/lib/math/amm.js +2 -2
  4. package/package.json +1 -1
  5. package/src/addresses/marketAddresses.js +26 -0
  6. package/src/assert/assert.js +9 -0
  7. package/src/constants/banks.js +42 -0
  8. package/src/constants/markets.js +42 -0
  9. package/src/constants/numericConstants.js +41 -0
  10. package/src/events/eventList.js +77 -0
  11. package/src/events/eventSubscriber.js +139 -0
  12. package/src/events/sort.js +44 -0
  13. package/src/events/txEventCache.js +71 -0
  14. package/src/examples/makeTradeExample.js +80 -0
  15. package/src/factory/bigNum.js +390 -0
  16. package/src/factory/oracleClient.js +20 -0
  17. package/src/idl/clearing_house.json +5 -0
  18. package/src/math/amm.ts +2 -2
  19. package/src/math/auction.js +42 -0
  20. package/src/math/conversion.js +11 -0
  21. package/src/math/funding.js +248 -0
  22. package/src/math/oracles.js +26 -0
  23. package/src/math/repeg.js +128 -0
  24. package/src/math/state.js +15 -0
  25. package/src/math/trade.js +253 -0
  26. package/src/math/utils.js +26 -0
  27. package/src/math/utils.js.map +1 -0
  28. package/src/oracles/oracleClientCache.js +19 -0
  29. package/src/oracles/pythClient.js +46 -0
  30. package/src/oracles/quoteAssetOracleClient.js +32 -0
  31. package/src/oracles/switchboardClient.js +69 -0
  32. package/src/oracles/types.js +2 -0
  33. package/src/orderParams.js +20 -0
  34. package/src/slot/SlotSubscriber.js +39 -0
  35. package/src/token/index.js +38 -0
  36. package/src/tokenFaucet.js +189 -0
  37. package/src/tx/types.js +2 -0
  38. package/src/tx/utils.js +17 -0
  39. package/src/userName.js +20 -0
  40. package/src/util/computeUnits.js +27 -0
  41. package/src/util/getTokenAddress.js +9 -0
  42. package/src/util/promiseTimeout.js +14 -0
  43. package/src/util/tps.js +27 -0
  44. package/src/wallet.js +35 -0
  45. package/my-script/.env +0 -7
  46. package/my-script/getUserStats.ts +0 -124
  47. package/my-script/multiConnections.ts +0 -137
  48. package/my-script/test-regex.ts +0 -11
  49. package/my-script/utils.ts +0 -52
  50. package/my-script/ww18NdhuLSQPCrHSx7V68eZJpe2y311heWeXJfSmP3Q.json +0 -1
  51. package/my-script/ww2z7N9TG1PLLUQGQF2VKzCFaPtQ5FBhRfeEAuy6c5C.json +0 -1
  52. package/my-script/ww3StJtTubhwssqAhvSSAc5ifCgKjzmF8hz7Gt2DmSa.json +0 -1
package/my-script/.env DELETED
@@ -1,7 +0,0 @@
1
- #ANCHOR_WALLET=/Users/ww/.config/solana/id.json
2
-
3
- #ANCHOR_WALLET=/Users/ww/.config/solana/bot2RzYy9oY5s3z71Yubo4MmRxyDBQP3qNNCqyqLcPp.json
4
-
5
- ANCHOR_WALLET=./ww18NdhuLSQPCrHSx7V68eZJpe2y311heWeXJfSmP3Q.json
6
- #ANCHOR_WALLET=./ww2z7N9TG1PLLUQGQF2VKzCFaPtQ5FBhRfeEAuy6c5C.json
7
- #ANCHOR_WALLET=./ww3StJtTubhwssqAhvSSAc5ifCgKjzmF8hz7Gt2DmSa.json
@@ -1,124 +0,0 @@
1
- import * as anchor from '@project-serum/anchor';
2
- // import { AnchorProvider } from '@project-serum/anchor';
3
- import { PublicKey, clusterApiUrl } from '@solana/web3.js';
4
-
5
- import {
6
- DriftEnv,
7
- initialize,
8
- BN,
9
- BulkAccountLoader,
10
- convertToNumber,
11
- calculateAdjustKCost,
12
- calculateBidAskPrice,
13
- EventSubscriber,
14
- UserAccount,
15
- DevnetBanks,
16
- DevnetMarkets,
17
- MARK_PRICE_PRECISION,
18
- BASE_PRECISION,
19
- QUOTE_PRECISION,
20
- ClearingHouse,
21
- getMarketOrderParams,
22
- PositionDirection,
23
- ZERO,
24
- } from '..';
25
- import { printUserStats } from './utils';
26
-
27
- require('dotenv').config();
28
- const driftEnv = process.env.ENV as DriftEnv;
29
-
30
- function sleep(ms) {
31
- return new Promise((resolve) => setTimeout(resolve, ms));
32
- }
33
-
34
- async function main(provider: anchor.AnchorProvider) {
35
- const connection = provider.connection;
36
- const config = initialize({ env: 'devnet' });
37
- const clearingHousePublicKey = new PublicKey(
38
- config.CLEARING_HOUSE_PROGRAM_ID
39
- );
40
-
41
- const bulkAccountLoader = new BulkAccountLoader(connection, 'confirmed', 1000);
42
- const clearingHouse = new ClearingHouse({
43
- connection,
44
- wallet: provider.wallet,
45
- programID: clearingHousePublicKey,
46
- env: 'devnet',
47
- // accountSubscription: {
48
- // type: 'websocket',
49
- // }
50
- accountSubscription: {
51
- type: 'polling',
52
- accountLoader: bulkAccountLoader,
53
- }
54
- });
55
-
56
- console.log(`clearingHouseProgramID: ${clearingHousePublicKey}`)
57
- console.log(`provider.wallet: ${provider.wallet.publicKey.toBase58()}`)
58
-
59
- const eventSubscriber = new EventSubscriber(connection, clearingHouse.program, {
60
- maxTx: 8192,
61
- maxEventsPerType: 4096,
62
- orderBy: 'blockchain',
63
- orderDir: 'desc',
64
- commitment: 'confirmed',
65
- logProviderConfig: {
66
- type: 'websocket',
67
- },
68
- });
69
-
70
- if (!(await clearingHouse.getUser().exists())) {
71
- console.error(`ClearingHouseUser for ${provider.wallet.publicKey} does not exist`);
72
- console.info(`Creating ClearingHouseUser for ${provider.wallet.publicKey}`);
73
- const [txSig] = await clearingHouse.initializeUserAccount();
74
- console.log(`Initialized user account in transaction: ${txSig}`);
75
- }
76
-
77
- if (!await clearingHouse.subscribe()) {
78
- throw new Error("fail clearingHouse.subscribe");
79
- }
80
- if (!await clearingHouse.accountSubscriber.subscribe()) {
81
- throw new Error("fail clearingHouse.accountSubscriber.subscribe");
82
- }
83
- if (!eventSubscriber.subscribe()) {
84
- throw new Error("fail eventSubscriber.subscribe");
85
- }
86
-
87
- const chUser = clearingHouse.getUser();
88
- const chUserAccount = clearingHouse.getUserAccount();
89
- console.log(`chUserAcc.authority: ${chUserAccount!.authority.toBase58()}`);
90
- console.log(` chUserAccount pubkey: ${chUser.userAccountPublicKey.toBase58()}`)
91
-
92
- const keyToSymbol = new Map<string, string>();
93
- const marketIndexToSymbol = new Map<number, string>();
94
- for (const market of DevnetMarkets) {
95
- keyToSymbol.set(market.oracle.toBase58(), market.baseAssetSymbol);
96
- marketIndexToSymbol.set(market.marketIndex.toNumber(), market.symbol);
97
- }
98
-
99
- const run = async () => {
100
- await clearingHouse.fetchAccounts();
101
- await chUser.fetchAccounts();
102
- printUserStats(chUserAccount!, marketIndexToSymbol);
103
- }
104
- await run();
105
- setInterval(run, 1000);
106
- }
107
-
108
-
109
- try {
110
- if (!process.env.ANCHOR_WALLET) {
111
- throw new Error('ANCHOR_WALLET must be set.');
112
- }
113
- main(
114
- anchor.AnchorProvider.local(clusterApiUrl("devnet"), {
115
- // anchor.AnchorProvider.local('https://devnet.genesysgo.net', {
116
- preflightCommitment: 'confirmed',
117
- skipPreflight: false,
118
- commitment: 'confirmed',
119
- })
120
- );
121
- // anchor.AnchorProvider.local('https://psytrbhymqlkfrhudd.dev.genesysgo.net:8899/');
122
- } catch (e) {
123
- console.error(e);
124
- }
@@ -1,137 +0,0 @@
1
- import * as anchor from '@project-serum/anchor';
2
- // import { AnchorProvider } from '@project-serum/anchor';
3
- import { PublicKey, clusterApiUrl } from '@solana/web3.js';
4
-
5
- import {
6
- DriftEnv,
7
- initialize,
8
- BN,
9
- BulkAccountLoader,
10
- convertToNumber,
11
- calculateAdjustKCost,
12
- calculateBidAskPrice,
13
- EventSubscriber,
14
- UserAccount,
15
- DevnetBanks,
16
- DevnetMarkets,
17
- MARK_PRICE_PRECISION,
18
- BASE_PRECISION,
19
- QUOTE_PRECISION,
20
- ClearingHouse,
21
- getMarketOrderParams,
22
- PositionDirection,
23
- ZERO,
24
- } from '..';
25
- import { printUserStats } from './utils';
26
-
27
- require('dotenv').config();
28
- const driftEnv = process.env.ENV as DriftEnv;
29
-
30
- function sleep(ms) {
31
- return new Promise((resolve) => setTimeout(resolve, ms));
32
- }
33
-
34
- async function main(provider: anchor.AnchorProvider) {
35
- const connection = provider.connection;
36
- const config = initialize({ env: 'devnet' });
37
- const clearingHousePublicKey = new PublicKey(
38
- config.CLEARING_HOUSE_PROGRAM_ID
39
- );
40
-
41
- const bulkAccountLoader = new BulkAccountLoader(
42
- connection,
43
- 'confirmed',
44
- 1000
45
- );
46
- const clearingHouse = new ClearingHouse({
47
- connection,
48
- wallet: provider.wallet,
49
- programID: clearingHousePublicKey,
50
- env: 'devnet',
51
- // accountSubscription: {
52
- // type: 'websocket',
53
- // }
54
- accountSubscription: {
55
- type: 'polling',
56
- accountLoader: bulkAccountLoader,
57
- },
58
- });
59
-
60
- console.log(`clearingHouseProgramID: ${clearingHousePublicKey}`);
61
- console.log(
62
- `provider.wallet: ${provider.wallet.publicKey.toBase58()}`
63
- );
64
-
65
- const eventSubscriber = new EventSubscriber(
66
- connection,
67
- clearingHouse.program,
68
- {
69
- maxTx: 8192,
70
- maxEventsPerType: 4096,
71
- orderBy: 'blockchain',
72
- orderDir: 'desc',
73
- commitment: 'confirmed',
74
- logProviderConfig: {
75
- type: 'websocket',
76
- },
77
- }
78
- );
79
-
80
- if (!(await clearingHouse.getUser().exists())) {
81
- console.error(
82
- `ClearingHouseUser for ${provider.wallet.publicKey} does not exist`
83
- );
84
- console.info(`Creating ClearingHouseUser for ${provider.wallet.publicKey}`);
85
- const [txSig] = await clearingHouse.initializeUserAccount();
86
- console.log(`Initialized user account in transaction: ${txSig}`);
87
- }
88
-
89
- if (!(await clearingHouse.subscribe())) {
90
- throw new Error('fail clearingHouse.subscribe');
91
- }
92
- if (!(await clearingHouse.accountSubscriber.subscribe())) {
93
- throw new Error('fail clearingHouse.accountSubscriber.subscribe');
94
- }
95
- if (!eventSubscriber.subscribe()) {
96
- throw new Error('fail eventSubscriber.subscribe');
97
- }
98
-
99
- const chUser = clearingHouse.getUser();
100
- const chUserAccount = clearingHouse.getUserAccount();
101
- console.log(`chUserAcc.authority: ${chUserAccount!.authority.toBase58()}`);
102
- console.log(
103
- ` chUserAccount pubkey: ${chUser.userAccountPublicKey.toBase58()}`
104
- );
105
-
106
- const keyToSymbol = new Map<string, string>();
107
- const marketIndexToSymbol = new Map<number, string>();
108
- for (const market of DevnetMarkets) {
109
- keyToSymbol.set(market.oracle.toBase58(), market.baseAssetSymbol);
110
- marketIndexToSymbol.set(market.marketIndex.toNumber(), market.symbol);
111
- }
112
-
113
- const run = async () => {
114
- await clearingHouse.fetchAccounts();
115
- await chUser.fetchAccounts();
116
- printUserStats(chUserAccount!, marketIndexToSymbol);
117
- };
118
- await run();
119
- setInterval(run, 1000);
120
- }
121
-
122
- try {
123
- if (!process.env.ANCHOR_WALLET) {
124
- throw new Error('ANCHOR_WALLET must be set.');
125
- }
126
- main(
127
- anchor.AnchorProvider.local(clusterApiUrl('devnet'), {
128
- // anchor.AnchorProvider.local('https://devnet.genesysgo.net', {
129
- preflightCommitment: 'confirmed',
130
- skipPreflight: false,
131
- commitment: 'confirmed',
132
- })
133
- );
134
- // anchor.AnchorProvider.local('https://psytrbhymqlkfrhudd.dev.genesysgo.net:8899/');
135
- } catch (e) {
136
- console.error(e);
137
- }
@@ -1,11 +0,0 @@
1
- try {
2
- // const msg = 'Program 65sz7dRiWDRPZjiRxcTxPM7AE6VK4Nag9HEK6oBJXhJn failed: custom program error: 0x179e'
3
- const msg = 'Program log: AnchorError occurred. Error Code: OrderDoesNotExist. Error Number: 6046. Error Message: Order does not exist.'
4
- const code = msg.match(
5
- /Program log: AnchorError occurred. Error Code: ([0-9,a-z,A-Z]+). Error Number/
6
- );
7
- console.log(code[1]);
8
- } catch (e) {
9
- console.log("nothing");
10
- // no problem if couldn't match error code
11
- }
@@ -1,52 +0,0 @@
1
- import {
2
- ClearingHouse,
3
- UserAccount,
4
- } from '..';
5
-
6
- export function printUserStats(chUserAccount: UserAccount, marketIndexToSymbol: Map<number, string>) {
7
-
8
- console.log("")
9
- console.log(`${new Date(Date.now())}`)
10
- console.log("Open positions:");
11
- let openPositions = 0;
12
- for (const p of chUserAccount!.positions) {
13
- if (p.baseAssetAmount.isZero()) {
14
- continue;
15
- }
16
- console.log(` [${marketIndexToSymbol.get(p.marketIndex.toNumber())}]`);
17
- console.log(` . baseAssetAmount: ${p.baseAssetAmount.toString()}`);
18
- console.log(` . quoteAssetAmount: ${p.quoteAssetAmount.toString()}`);
19
- console.log(` . quoteEntryAmount: ${p.quoteEntryAmount.toString()}`);
20
- console.log(` . lastCumulativeFundingRate: ${p.lastCumulativeFundingRate.toString()}`);
21
- console.log(` . openOrders: ${p.openOrders}`);
22
- console.log(` . openBids: ${p.openBids.toString()}`);
23
- console.log(` . openAsks: ${p.openAsks.toString()}`);
24
- openPositions++;
25
- }
26
- console.log(`count: ${openPositions}`);
27
-
28
- let openOrders = 0
29
- console.log("")
30
- console.log("Open orders:");
31
- for (const o of chUserAccount!.orders) {
32
- if (o.baseAssetAmount.isZero()) {
33
- continue
34
- }
35
- console.log(` . [OrderId: ${o.orderId.toString()}, ${JSON.stringify(o.status)} ${JSON.stringify(o.direction)}, mktIdx: ${o.marketIndex.toString()}]: ${o.baseAssetAmountFilled.toString()}/${o.baseAssetAmount.toString()}`)
36
- openOrders++;
37
- }
38
- console.log(`count: ${openOrders}`);
39
-
40
- return;
41
- }
42
-
43
- export async function cancelOpenOrders(clearingHouse: ClearingHouse, chUserAccount: UserAccount) {
44
- for (const o of chUserAccount!.orders) {
45
- if (o.baseAssetAmount.isZero()) {
46
- continue
47
- }
48
-
49
- const tx = await clearingHouse.cancelOrder(o.orderId);
50
- console.log(`Canceled orderID ${o.orderId.toString()} on market ${o.marketIndex.toString()}, tx: ${tx}`);
51
- }
52
- }
@@ -1 +0,0 @@
1
- [149,94,114,124,219,221,15,219,156,59,219,91,53,1,121,158,237,212,164,155,68,189,58,136,87,97,154,140,23,246,148,112,14,18,108,149,240,175,10,38,108,111,73,206,93,83,134,205,168,159,203,151,219,125,105,254,244,61,190,29,211,107,13,19]
@@ -1 +0,0 @@
1
- [240,167,34,21,160,221,50,92,208,80,210,26,131,127,167,209,55,203,154,72,195,156,103,167,91,95,76,29,235,92,57,167,14,18,117,219,39,14,43,171,96,125,33,203,219,16,219,60,194,217,59,116,35,116,255,1,179,89,243,9,41,181,81,103]
@@ -1 +0,0 @@
1
- [5,60,137,129,213,3,6,50,181,118,108,215,24,4,33,79,191,86,110,99,115,149,212,216,240,15,229,159,228,144,75,215,14,18,120,40,242,92,142,39,104,193,163,8,30,13,91,89,147,117,144,82,156,127,20,66,10,222,188,128,65,29,15,139]