@drift-labs/sdk 0.2.0-master.21 → 0.2.0-master.24
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/lib/accounts/types.d.ts +1 -0
- package/lib/addresses/pda.d.ts +3 -0
- package/lib/addresses/pda.js +23 -1
- package/lib/admin.d.ts +3 -0
- package/lib/admin.js +31 -0
- package/lib/clearingHouse.d.ts +9 -2
- package/lib/clearingHouse.js +132 -4
- package/lib/clearingHouseUser.js +5 -5
- package/lib/config.js +1 -1
- package/lib/constants/banks.d.ts +2 -0
- package/lib/constants/banks.js +9 -0
- package/lib/constants/numericConstants.d.ts +2 -0
- package/lib/constants/numericConstants.js +4 -1
- package/lib/events/sort.js +7 -10
- package/lib/events/types.d.ts +2 -1
- package/lib/events/types.js +1 -0
- package/lib/idl/clearing_house.json +1008 -147
- package/lib/index.d.ts +1 -0
- package/lib/index.js +1 -0
- package/lib/math/amm.js +2 -2
- package/lib/math/insurance.d.ts +4 -0
- package/lib/math/insurance.js +27 -0
- package/lib/math/margin.d.ts +1 -1
- package/lib/math/margin.js +5 -7
- package/lib/math/position.js +1 -1
- package/lib/types.d.ts +56 -20
- package/lib/types.js +0 -3
- package/package.json +1 -1
- package/src/addresses/marketAddresses.js +26 -0
- package/src/addresses/pda.ts +47 -0
- package/src/admin.ts +65 -0
- package/src/assert/assert.js +9 -0
- package/src/clearingHouse.ts +217 -9
- package/src/clearingHouseUser.ts +10 -6
- package/src/config.ts +1 -1
- package/src/constants/banks.js +42 -0
- package/src/constants/banks.ts +16 -0
- package/src/constants/markets.js +42 -0
- package/src/constants/numericConstants.js +41 -0
- package/src/constants/numericConstants.ts +4 -0
- package/src/events/eventList.js +77 -0
- package/src/events/sort.ts +10 -14
- package/src/events/txEventCache.js +71 -0
- package/src/events/types.ts +3 -0
- package/src/examples/makeTradeExample.js +80 -0
- package/src/factory/bigNum.js +390 -0
- package/src/factory/oracleClient.js +20 -0
- package/src/idl/clearing_house.json +1008 -147
- package/src/index.ts +1 -0
- package/src/math/amm.ts +2 -2
- package/src/math/auction.js +42 -0
- package/src/math/conversion.js +11 -0
- package/src/math/funding.js +248 -0
- package/src/math/insurance.ts +35 -0
- package/src/math/margin.ts +3 -10
- package/src/math/oracles.js +26 -0
- package/src/math/position.ts +2 -2
- package/src/math/repeg.js +128 -0
- package/src/math/state.js +15 -0
- package/src/math/trade.js +253 -0
- package/src/math/utils.js +26 -0
- package/src/math/utils.js.map +1 -0
- package/src/oracles/oracleClientCache.js +19 -0
- package/src/oracles/pythClient.js +46 -0
- package/src/oracles/quoteAssetOracleClient.js +32 -0
- package/src/oracles/switchboardClient.js +69 -0
- package/src/oracles/types.js +2 -0
- package/src/orderParams.js +20 -0
- package/src/slot/SlotSubscriber.js +39 -0
- package/src/token/index.js +38 -0
- package/src/tokenFaucet.js +189 -0
- package/src/tx/types.js +2 -0
- package/src/tx/utils.js +17 -0
- package/src/types.ts +64 -20
- package/src/userName.js +20 -0
- package/src/util/computeUnits.js +27 -0
- package/src/util/getTokenAddress.js +9 -0
- package/src/util/promiseTimeout.js +14 -0
- package/src/util/tps.js +27 -0
- package/src/wallet.js +35 -0
- package/my-script/.env +0 -7
- package/my-script/getUserStats.ts +0 -124
- package/my-script/multiConnections.ts +0 -137
- package/my-script/test-regex.ts +0 -11
- package/my-script/utils.ts +0 -52
- package/my-script/ww18NdhuLSQPCrHSx7V68eZJpe2y311heWeXJfSmP3Q.json +0 -1
- package/my-script/ww2z7N9TG1PLLUQGQF2VKzCFaPtQ5FBhRfeEAuy6c5C.json +0 -1
- package/my-script/ww3StJtTubhwssqAhvSSAc5ifCgKjzmF8hz7Gt2DmSa.json +0 -1
|
@@ -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
|
-
}
|
package/my-script/test-regex.ts
DELETED
|
@@ -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
|
-
}
|
package/my-script/utils.ts
DELETED
|
@@ -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]
|