@hodlmarkets/sdk 0.1.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.
- package/README.md +121 -0
- package/dist/accounts.cjs +1893 -0
- package/dist/accounts.cjs.map +1 -0
- package/dist/accounts.d.cts +9 -0
- package/dist/accounts.d.ts +9 -0
- package/dist/accounts.js +1885 -0
- package/dist/accounts.js.map +1 -0
- package/dist/client.cjs +2161 -0
- package/dist/client.cjs.map +1 -0
- package/dist/client.d.cts +44 -0
- package/dist/client.d.ts +44 -0
- package/dist/client.js +2155 -0
- package/dist/client.js.map +1 -0
- package/dist/constants.cjs +68 -0
- package/dist/constants.cjs.map +1 -0
- package/dist/constants.d.cts +62 -0
- package/dist/constants.d.ts +62 -0
- package/dist/constants.js +50 -0
- package/dist/constants.js.map +1 -0
- package/dist/errors.cjs +43 -0
- package/dist/errors.cjs.map +1 -0
- package/dist/errors.d.cts +8 -0
- package/dist/errors.d.ts +8 -0
- package/dist/errors.js +39 -0
- package/dist/errors.js.map +1 -0
- package/dist/events.cjs +1923 -0
- package/dist/events.cjs.map +1 -0
- package/dist/events.d.cts +20 -0
- package/dist/events.d.ts +20 -0
- package/dist/events.js +1913 -0
- package/dist/events.js.map +1 -0
- package/dist/index.cjs +2357 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +12 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.js +2302 -0
- package/dist/index.js.map +1 -0
- package/dist/instructions.cjs +2022 -0
- package/dist/instructions.cjs.map +1 -0
- package/dist/instructions.d.cts +38 -0
- package/dist/instructions.d.ts +38 -0
- package/dist/instructions.js +2012 -0
- package/dist/instructions.js.map +1 -0
- package/dist/math.cjs +98 -0
- package/dist/math.cjs.map +1 -0
- package/dist/math.d.cts +58 -0
- package/dist/math.d.ts +58 -0
- package/dist/math.js +85 -0
- package/dist/math.js.map +1 -0
- package/dist/pda.cjs +52 -0
- package/dist/pda.cjs.map +1 -0
- package/dist/pda.d.cts +10 -0
- package/dist/pda.d.ts +10 -0
- package/dist/pda.js +41 -0
- package/dist/pda.js.map +1 -0
- package/dist/transaction.cjs +37 -0
- package/dist/transaction.cjs.map +1 -0
- package/dist/transaction.d.cts +11 -0
- package/dist/transaction.d.ts +11 -0
- package/dist/transaction.js +34 -0
- package/dist/transaction.js.map +1 -0
- package/dist/types.cjs +4 -0
- package/dist/types.cjs.map +1 -0
- package/dist/types.d.cts +153 -0
- package/dist/types.d.ts +153 -0
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -0
- package/package.json +96 -0
package/README.md
ADDED
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
# @hodlmarkets/sdk
|
|
2
|
+
|
|
3
|
+
TypeScript SDK for the HODL vAMM program on Solana.
|
|
4
|
+
|
|
5
|
+
Full documentation at [docs.hodl.markets](https://docs.hodl.markets)
|
|
6
|
+
|
|
7
|
+
## Install
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
npm install @hodlmarkets/sdk
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
Peer dependencies:
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
npm install @coral-xyz/anchor @solana/web3.js @solana/spl-token bn.js
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Buy
|
|
20
|
+
|
|
21
|
+
```ts
|
|
22
|
+
import { Connection } from '@solana/web3.js'
|
|
23
|
+
import BN from 'bn.js'
|
|
24
|
+
import { HodlClient, calculateBuyAmount, applySlippage } from '@hodlmarkets/sdk'
|
|
25
|
+
|
|
26
|
+
const connection = new Connection('https://api.mainnet-beta.solana.com')
|
|
27
|
+
const client = new HodlClient({ connection })
|
|
28
|
+
|
|
29
|
+
const pool = await client.fetchPool(mint)
|
|
30
|
+
|
|
31
|
+
const solAmount = new BN('100000000') // 0.1 SOL
|
|
32
|
+
const expectedTokens = calculateBuyAmount(solAmount, pool.vammRealSol, pool.vammTokens, pool.vammK)
|
|
33
|
+
const minTokensOut = applySlippage(expectedTokens, 100) // 1% slippage
|
|
34
|
+
|
|
35
|
+
const tx = await client.buy({ buyer: wallet.publicKey, mint, solAmount, minTokensOut })
|
|
36
|
+
tx.sign([wallet])
|
|
37
|
+
const signature = await client.send(tx)
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
## Sell
|
|
41
|
+
|
|
42
|
+
```ts
|
|
43
|
+
import { HodlClient, calculateSellAmount, applySlippage, getPoolStatePDA, PROGRAM_ID } from '@hodlmarkets/sdk'
|
|
44
|
+
|
|
45
|
+
const pool = await client.fetchPool(mint)
|
|
46
|
+
const [poolState] = getPoolStatePDA(mint, PROGRAM_ID)
|
|
47
|
+
const position = await client.fetchPosition(poolState, wallet.publicKey)
|
|
48
|
+
|
|
49
|
+
const expectedSol = calculateSellAmount(position.tradableTokens, pool.vammRealSol, pool.vammTokens, pool.vammK)
|
|
50
|
+
|
|
51
|
+
const tx = await client.sell({
|
|
52
|
+
seller: wallet.publicKey,
|
|
53
|
+
mint,
|
|
54
|
+
tokenAmount: position.tradableTokens,
|
|
55
|
+
minSolOut: applySlippage(expectedSol, 100),
|
|
56
|
+
})
|
|
57
|
+
tx.sign([wallet])
|
|
58
|
+
await client.send(tx)
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
## Create Token
|
|
62
|
+
|
|
63
|
+
```ts
|
|
64
|
+
import { Keypair } from '@solana/web3.js'
|
|
65
|
+
import BN from 'bn.js'
|
|
66
|
+
|
|
67
|
+
const mint = Keypair.generate()
|
|
68
|
+
|
|
69
|
+
const tx = await client.createToken({
|
|
70
|
+
creator: wallet.publicKey,
|
|
71
|
+
mint: mint.publicKey,
|
|
72
|
+
name: 'My Token',
|
|
73
|
+
symbol: 'MTK',
|
|
74
|
+
uri: 'https://arweave.net/metadata.json',
|
|
75
|
+
poolDescription: 'A community token',
|
|
76
|
+
vestDuration: new BN(60), // 1 minute (only 60 or 600 allowed)
|
|
77
|
+
})
|
|
78
|
+
tx.sign([wallet, mint]) // both creator and mint must sign
|
|
79
|
+
await client.send(tx)
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
## Claim Accrued Tokens
|
|
83
|
+
|
|
84
|
+
```ts
|
|
85
|
+
const [poolState] = getPoolStatePDA(mint, PROGRAM_ID)
|
|
86
|
+
const tx = await client.claimAccrued({ owner: wallet.publicKey, poolState })
|
|
87
|
+
tx.sign([wallet])
|
|
88
|
+
await client.send(tx)
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
## Events
|
|
92
|
+
|
|
93
|
+
```ts
|
|
94
|
+
// Real-time
|
|
95
|
+
const subId = client.subscribeToEvents((event, slot, signature) => {
|
|
96
|
+
if (event.name === 'tokenPurchased') {
|
|
97
|
+
console.log('Buy:', event.data.tokensReceived.toString())
|
|
98
|
+
}
|
|
99
|
+
})
|
|
100
|
+
await client.unsubscribe(subId)
|
|
101
|
+
|
|
102
|
+
// Historical
|
|
103
|
+
const events = await client.fetchAndParseTransaction(signature)
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
## Error Handling
|
|
107
|
+
|
|
108
|
+
```ts
|
|
109
|
+
import { parseHodlError } from '@hodlmarkets/sdk'
|
|
110
|
+
|
|
111
|
+
try {
|
|
112
|
+
await client.send(tx)
|
|
113
|
+
} catch (err) {
|
|
114
|
+
const hodlErr = parseHodlError(err)
|
|
115
|
+
if (hodlErr) console.error(`HODL error ${hodlErr.code}: ${hodlErr.message}`)
|
|
116
|
+
}
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
## License
|
|
120
|
+
|
|
121
|
+
MIT
|