@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.
Files changed (68) hide show
  1. package/README.md +121 -0
  2. package/dist/accounts.cjs +1893 -0
  3. package/dist/accounts.cjs.map +1 -0
  4. package/dist/accounts.d.cts +9 -0
  5. package/dist/accounts.d.ts +9 -0
  6. package/dist/accounts.js +1885 -0
  7. package/dist/accounts.js.map +1 -0
  8. package/dist/client.cjs +2161 -0
  9. package/dist/client.cjs.map +1 -0
  10. package/dist/client.d.cts +44 -0
  11. package/dist/client.d.ts +44 -0
  12. package/dist/client.js +2155 -0
  13. package/dist/client.js.map +1 -0
  14. package/dist/constants.cjs +68 -0
  15. package/dist/constants.cjs.map +1 -0
  16. package/dist/constants.d.cts +62 -0
  17. package/dist/constants.d.ts +62 -0
  18. package/dist/constants.js +50 -0
  19. package/dist/constants.js.map +1 -0
  20. package/dist/errors.cjs +43 -0
  21. package/dist/errors.cjs.map +1 -0
  22. package/dist/errors.d.cts +8 -0
  23. package/dist/errors.d.ts +8 -0
  24. package/dist/errors.js +39 -0
  25. package/dist/errors.js.map +1 -0
  26. package/dist/events.cjs +1923 -0
  27. package/dist/events.cjs.map +1 -0
  28. package/dist/events.d.cts +20 -0
  29. package/dist/events.d.ts +20 -0
  30. package/dist/events.js +1913 -0
  31. package/dist/events.js.map +1 -0
  32. package/dist/index.cjs +2357 -0
  33. package/dist/index.cjs.map +1 -0
  34. package/dist/index.d.cts +12 -0
  35. package/dist/index.d.ts +12 -0
  36. package/dist/index.js +2302 -0
  37. package/dist/index.js.map +1 -0
  38. package/dist/instructions.cjs +2022 -0
  39. package/dist/instructions.cjs.map +1 -0
  40. package/dist/instructions.d.cts +38 -0
  41. package/dist/instructions.d.ts +38 -0
  42. package/dist/instructions.js +2012 -0
  43. package/dist/instructions.js.map +1 -0
  44. package/dist/math.cjs +98 -0
  45. package/dist/math.cjs.map +1 -0
  46. package/dist/math.d.cts +58 -0
  47. package/dist/math.d.ts +58 -0
  48. package/dist/math.js +85 -0
  49. package/dist/math.js.map +1 -0
  50. package/dist/pda.cjs +52 -0
  51. package/dist/pda.cjs.map +1 -0
  52. package/dist/pda.d.cts +10 -0
  53. package/dist/pda.d.ts +10 -0
  54. package/dist/pda.js +41 -0
  55. package/dist/pda.js.map +1 -0
  56. package/dist/transaction.cjs +37 -0
  57. package/dist/transaction.cjs.map +1 -0
  58. package/dist/transaction.d.cts +11 -0
  59. package/dist/transaction.d.ts +11 -0
  60. package/dist/transaction.js +34 -0
  61. package/dist/transaction.js.map +1 -0
  62. package/dist/types.cjs +4 -0
  63. package/dist/types.cjs.map +1 -0
  64. package/dist/types.d.cts +153 -0
  65. package/dist/types.d.ts +153 -0
  66. package/dist/types.js +3 -0
  67. package/dist/types.js.map +1 -0
  68. 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