@slvr-labs/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/LICENSE +21 -0
- package/README.md +849 -0
- package/dist/connect.d.ts +47 -0
- package/dist/connect.d.ts.map +1 -0
- package/dist/connect.js +56 -0
- package/dist/connect.js.map +1 -0
- package/dist/contracts/autoCommit.d.ts +151 -0
- package/dist/contracts/autoCommit.d.ts.map +1 -0
- package/dist/contracts/autoCommit.js +426 -0
- package/dist/contracts/autoCommit.js.map +1 -0
- package/dist/contracts/hub.d.ts +50 -0
- package/dist/contracts/hub.d.ts.map +1 -0
- package/dist/contracts/hub.js +118 -0
- package/dist/contracts/hub.js.map +1 -0
- package/dist/contracts/index.d.ts +8 -0
- package/dist/contracts/index.d.ts.map +1 -0
- package/dist/contracts/index.js +18 -0
- package/dist/contracts/index.js.map +1 -0
- package/dist/contracts/jackpot.d.ts +21 -0
- package/dist/contracts/jackpot.d.ts.map +1 -0
- package/dist/contracts/jackpot.js +44 -0
- package/dist/contracts/jackpot.js.map +1 -0
- package/dist/contracts/lottery.d.ts +256 -0
- package/dist/contracts/lottery.d.ts.map +1 -0
- package/dist/contracts/lottery.js +767 -0
- package/dist/contracts/lottery.js.map +1 -0
- package/dist/contracts/registry.d.ts +53 -0
- package/dist/contracts/registry.d.ts.map +1 -0
- package/dist/contracts/registry.js +143 -0
- package/dist/contracts/registry.js.map +1 -0
- package/dist/contracts/staking.d.ts +101 -0
- package/dist/contracts/staking.d.ts.map +1 -0
- package/dist/contracts/staking.js +306 -0
- package/dist/contracts/staking.js.map +1 -0
- package/dist/contracts/token.d.ts +95 -0
- package/dist/contracts/token.d.ts.map +1 -0
- package/dist/contracts/token.js +273 -0
- package/dist/contracts/token.js.map +1 -0
- package/dist/deployments.d.ts +117 -0
- package/dist/deployments.d.ts.map +1 -0
- package/dist/deployments.js +74 -0
- package/dist/deployments.js.map +1 -0
- package/dist/errors.d.ts +39 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +67 -0
- package/dist/errors.js.map +1 -0
- package/dist/ev.d.ts +123 -0
- package/dist/ev.d.ts.map +1 -0
- package/dist/ev.js +111 -0
- package/dist/ev.js.map +1 -0
- package/dist/events.d.ts +418 -0
- package/dist/events.d.ts.map +1 -0
- package/dist/events.js +87 -0
- package/dist/events.js.map +1 -0
- package/dist/index.d.ts +248 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +436 -0
- package/dist/index.js.map +1 -0
- package/dist/oracle.d.ts +48 -0
- package/dist/oracle.d.ts.map +1 -0
- package/dist/oracle.js +77 -0
- package/dist/oracle.js.map +1 -0
- package/dist/price.d.ts +52 -0
- package/dist/price.d.ts.map +1 -0
- package/dist/price.js +78 -0
- package/dist/price.js.map +1 -0
- package/dist/transaction.d.ts +54 -0
- package/dist/transaction.d.ts.map +1 -0
- package/dist/transaction.js +105 -0
- package/dist/transaction.js.map +1 -0
- package/dist/types.d.ts +162 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +23 -0
- package/dist/types.js.map +1 -0
- package/dist/utils.d.ts +58 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +110 -0
- package/dist/utils.js.map +1 -0
- package/examples/.env.example +22 -0
- package/examples/README.md +417 -0
- package/examples/automated-betting.ts +232 -0
- package/examples/combined-strategy.ts +227 -0
- package/examples/constants.ts +35 -0
- package/examples/custom-strategy-example.ts +231 -0
- package/examples/expected-value-strategy.ts +255 -0
- package/examples/fixed-squares-strategy.ts +176 -0
- package/examples/index.ts +30 -0
- package/examples/least-allocated-strategy.ts +224 -0
- package/examples/local-test.ts +172 -0
- package/examples/quickstart-bet.ts +72 -0
- package/examples/quickstart-read.ts +87 -0
- package/examples/simple-example.ts +122 -0
- package/examples/strategy-base.ts +283 -0
- package/package.json +71 -0
- package/skills/slvr-bot/SKILL.md +193 -0
- package/skills/slvr-bot/references/api.md +117 -0
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,248 @@
|
|
|
1
|
+
import { PublicClient, WalletClient, Address } from 'viem';
|
|
2
|
+
import { SlvrConfig, PriceQuote } from './types';
|
|
3
|
+
import { SlvrGridLottery } from './contracts/lottery';
|
|
4
|
+
import { SlvrStaking } from './contracts/staking';
|
|
5
|
+
import { SlvrToken } from './contracts/token';
|
|
6
|
+
import { SlvrAutoCommit } from './contracts/autoCommit';
|
|
7
|
+
import { SlvrHub } from './contracts/hub';
|
|
8
|
+
import { SlvrGameRegistry } from './contracts/registry';
|
|
9
|
+
import { SlvrJackpot } from './contracts/jackpot';
|
|
10
|
+
import { SlvrPrice } from './price';
|
|
11
|
+
import { ChainlinkPriceFeed } from './oracle';
|
|
12
|
+
import { GridMiningEv } from './ev';
|
|
13
|
+
import { ConnectOptions } from './connect';
|
|
14
|
+
/**
|
|
15
|
+
* Main Slvr SDK class
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* ```typescript
|
|
19
|
+
* import { createPublicClient, createWalletClient, http } from 'viem';
|
|
20
|
+
* import { SlvrSDK } from '@slvr-labs/sdk';
|
|
21
|
+
*
|
|
22
|
+
* const publicClient = createPublicClient({
|
|
23
|
+
* chain: robinhoodChain,
|
|
24
|
+
* transport: http(),
|
|
25
|
+
* });
|
|
26
|
+
*
|
|
27
|
+
* const walletClient = createWalletClient({
|
|
28
|
+
* chain: robinhoodChain,
|
|
29
|
+
* transport: http(),
|
|
30
|
+
* account: yourAccount,
|
|
31
|
+
* });
|
|
32
|
+
*
|
|
33
|
+
* const sdk = new SlvrSDK({
|
|
34
|
+
* publicClient,
|
|
35
|
+
* walletClient,
|
|
36
|
+
* addresses: {
|
|
37
|
+
* lottery: '0x...',
|
|
38
|
+
* staking: '0x...',
|
|
39
|
+
* token: '0x...',
|
|
40
|
+
* },
|
|
41
|
+
* });
|
|
42
|
+
*
|
|
43
|
+
* // Get current round
|
|
44
|
+
* const roundId = await sdk.lottery.currentRoundId();
|
|
45
|
+
*
|
|
46
|
+
* // Place a bet
|
|
47
|
+
* await sdk.lottery.bet({
|
|
48
|
+
* roundId,
|
|
49
|
+
* squares: [0, 1, 2],
|
|
50
|
+
* amounts: [1000000000000000000n, 2000000000000000000n, 3000000000000000000n],
|
|
51
|
+
* });
|
|
52
|
+
* ```
|
|
53
|
+
*/
|
|
54
|
+
export declare class SlvrSDK {
|
|
55
|
+
readonly lottery: SlvrGridLottery;
|
|
56
|
+
readonly staking: SlvrStaking;
|
|
57
|
+
readonly token: SlvrToken;
|
|
58
|
+
readonly autoCommit?: SlvrAutoCommit;
|
|
59
|
+
readonly hub?: SlvrHub;
|
|
60
|
+
readonly registry?: SlvrGameRegistry;
|
|
61
|
+
readonly jackpot?: SlvrJackpot;
|
|
62
|
+
/** SLVR/ETH spot price reader — present when a `slvrEthPair` address is configured. */
|
|
63
|
+
readonly price?: SlvrPrice;
|
|
64
|
+
/** Chainlink ETH/USD feed reader — present when a `chainlinkEthUsd` address is configured. */
|
|
65
|
+
readonly ethUsd?: ChainlinkPriceFeed;
|
|
66
|
+
private config;
|
|
67
|
+
constructor(config: SlvrConfig);
|
|
68
|
+
/**
|
|
69
|
+
* One-line setup: build clients (with Multicall3 batching + resilient transport
|
|
70
|
+
* defaults) and an SDK for a deployment. Pass a `privateKey`/`account` to enable
|
|
71
|
+
* writes; omit it for a read-only SDK.
|
|
72
|
+
*
|
|
73
|
+
* @example
|
|
74
|
+
* ```typescript
|
|
75
|
+
* import { SlvrSDK } from '@slvr-labs/sdk';
|
|
76
|
+
* const sdk = SlvrSDK.connect(); // read-only, Robinhood Chain
|
|
77
|
+
* const bot = SlvrSDK.connect({ privateKey: process.env.PK }); // wallet-backed
|
|
78
|
+
* ```
|
|
79
|
+
*/
|
|
80
|
+
static connect(opts?: ConnectOptions): SlvrSDK;
|
|
81
|
+
/**
|
|
82
|
+
* Get the public client
|
|
83
|
+
*/
|
|
84
|
+
getPublicClient(): PublicClient;
|
|
85
|
+
/**
|
|
86
|
+
* Get the wallet client (if available)
|
|
87
|
+
*/
|
|
88
|
+
getWalletClient(): WalletClient | undefined;
|
|
89
|
+
/**
|
|
90
|
+
* Update the wallet client and reinitialize contracts
|
|
91
|
+
* @param walletClient New wallet client (or undefined to remove)
|
|
92
|
+
*/
|
|
93
|
+
setWalletClient(walletClient: WalletClient | undefined): void;
|
|
94
|
+
/**
|
|
95
|
+
* Helper: Calculate bet amounts from percentages
|
|
96
|
+
* @param totalAmount Total amount to bet
|
|
97
|
+
* @param percentages Array of percentages (0-100) for each square
|
|
98
|
+
* @returns Array of amounts in wei
|
|
99
|
+
* @throws ValidationError if percentages don't sum to 100 or if totalAmount is invalid
|
|
100
|
+
*/
|
|
101
|
+
static calculateBetAmounts(totalAmount: bigint, percentages: number[]): bigint[];
|
|
102
|
+
/**
|
|
103
|
+
* Helper: Format bigint to human-readable string.
|
|
104
|
+
*
|
|
105
|
+
* `precision` caps the number of decimal places shown; trailing zeros are
|
|
106
|
+
* stripped (like viem's `formatEther`), so `formatToken(1.5e18)` is `"1.5"`,
|
|
107
|
+
* not `"1.5000"`.
|
|
108
|
+
* @param value Value in wei
|
|
109
|
+
* @param decimals Number of decimals (default 18)
|
|
110
|
+
* @param precision Max decimal places to show (default 4)
|
|
111
|
+
*/
|
|
112
|
+
static formatToken(value: bigint, decimals?: number, precision?: number): string;
|
|
113
|
+
/**
|
|
114
|
+
* Helper: Parse human-readable string to bigint
|
|
115
|
+
* @param value Human-readable value (e.g., "1.5")
|
|
116
|
+
* @param decimals Number of decimals (default 18)
|
|
117
|
+
*/
|
|
118
|
+
static parseToken(value: string, decimals?: number): bigint;
|
|
119
|
+
/**
|
|
120
|
+
* Helper: Calculate time remaining until round ends
|
|
121
|
+
* @param roundId Round ID
|
|
122
|
+
* @returns Time remaining in seconds, or 0 if round has ended
|
|
123
|
+
*/
|
|
124
|
+
getTimeRemaining(roundId: bigint): Promise<number>;
|
|
125
|
+
/**
|
|
126
|
+
* Helper: Check if user can claim rewards for a round
|
|
127
|
+
* @param roundId Round ID
|
|
128
|
+
* @param user User address
|
|
129
|
+
* @returns True if user can claim
|
|
130
|
+
*/
|
|
131
|
+
canClaim(roundId: bigint, user: Address): Promise<boolean>;
|
|
132
|
+
/**
|
|
133
|
+
* Helper: Get user's claimable rounds
|
|
134
|
+
* @param user User address
|
|
135
|
+
* @param startRoundId Start round ID to check from
|
|
136
|
+
* @param endRoundId End round ID to check to
|
|
137
|
+
* @returns Array of round IDs that can be claimed
|
|
138
|
+
*/
|
|
139
|
+
getClaimableRounds(user: Address, startRoundId: bigint, endRoundId: bigint): Promise<bigint[]>;
|
|
140
|
+
/**
|
|
141
|
+
* Helper: Compute a game's effective SLVR/sec emission rate.
|
|
142
|
+
*
|
|
143
|
+
* Mirrors SlvrHub._effectiveRatePerSec: the game's weighted share of the global emission stream,
|
|
144
|
+
* i.e. emissionRatePerSec * weightOf(gameId) / totalActiveWeight. NOTE: this does not apply the
|
|
145
|
+
* per-game maxWeightBps ceiling that the contract also enforces; it is the pre-cap weighted rate.
|
|
146
|
+
*
|
|
147
|
+
* Requires both `hub` and `registry` addresses to be configured.
|
|
148
|
+
* @param gameId Registry game id
|
|
149
|
+
* @returns Effective emission rate in SLVR/sec (0 if there is no active weight)
|
|
150
|
+
*/
|
|
151
|
+
effectiveEmissionRate(gameId: bigint): Promise<bigint>;
|
|
152
|
+
/**
|
|
153
|
+
* Helper: Get the accrued-but-unminted SLVR emission currently available to a game.
|
|
154
|
+
*
|
|
155
|
+
* Thin pass-through to SlvrHub.pendingEmission. Requires `hub` to be configured.
|
|
156
|
+
* @param gameId Registry game id
|
|
157
|
+
*/
|
|
158
|
+
pendingEmission(gameId: bigint): Promise<bigint>;
|
|
159
|
+
/**
|
|
160
|
+
* Helper: current SLVR spot price in ETH (ETH per SLVR).
|
|
161
|
+
*
|
|
162
|
+
* Requires a `slvrEthPair` address to be configured (so `sdk.price` exists).
|
|
163
|
+
* @throws ValidationError if no pair address was configured.
|
|
164
|
+
*/
|
|
165
|
+
getSlvrPriceInEth(): Promise<number>;
|
|
166
|
+
/**
|
|
167
|
+
* Helper: current ETH price in USD from the configured Chainlink feed.
|
|
168
|
+
*
|
|
169
|
+
* Requires a `chainlinkEthUsd` address (so `sdk.ethUsd` exists). This is wired
|
|
170
|
+
* for Robinhood Chain in `deployments.robinhood`; on chains without a feed,
|
|
171
|
+
* supply one or pass `ethUsd` to {@link getSlvrPrice}.
|
|
172
|
+
* @throws ValidationError if no ETH/USD feed was configured.
|
|
173
|
+
*/
|
|
174
|
+
getEthPriceUsd(): Promise<number>;
|
|
175
|
+
/**
|
|
176
|
+
* Helper: current SLVR price in **both ETH and USD**.
|
|
177
|
+
*
|
|
178
|
+
* SLVR/ETH comes from the UniswapV2 pair (`sdk.price`). The USD value uses, in
|
|
179
|
+
* order: an explicit `opts.ethUsd`, else the configured Chainlink ETH/USD feed
|
|
180
|
+
* (`sdk.ethUsd`), else `usd` is `null`.
|
|
181
|
+
*
|
|
182
|
+
* @param opts.ethUsd override the ETH/USD price (e.g. from your own off-chain source)
|
|
183
|
+
* @throws ValidationError if no `slvrEthPair` was configured.
|
|
184
|
+
*
|
|
185
|
+
* @example
|
|
186
|
+
* ```typescript
|
|
187
|
+
* const { eth, usd } = await sdk.getSlvrPrice(); // uses Chainlink feed if configured
|
|
188
|
+
* const q = await sdk.getSlvrPrice({ ethUsd: 1797.35 }); // or supply ETH/USD yourself
|
|
189
|
+
* ```
|
|
190
|
+
*/
|
|
191
|
+
getSlvrPrice(opts?: {
|
|
192
|
+
ethUsd?: number;
|
|
193
|
+
}): Promise<PriceQuote>;
|
|
194
|
+
/**
|
|
195
|
+
* Helper: estimate the per-round expected value of grid mining for the given
|
|
196
|
+
* stake, pulling live pot, emission and SLVR price on-chain.
|
|
197
|
+
*
|
|
198
|
+
* This is the SDK-level convenience around {@link computeGridMiningEv}: it reads
|
|
199
|
+
* the round's pot (sum of all squares), the emission target (`slvrPerRound`), the
|
|
200
|
+
* protocol fee (`protocolFeeBps`), and the SLVR price (via `sdk.price`), then
|
|
201
|
+
* returns the full EV breakdown. Any of those can be overridden via `params`.
|
|
202
|
+
*
|
|
203
|
+
* The jackpot pool is **not** auto-read (it isn't exposed as a single call on the
|
|
204
|
+
* live lottery) — pass `jackpotPool` if you want the jackpot term included.
|
|
205
|
+
*
|
|
206
|
+
* @remarks `slvrPerRound` is the emission *target*; actual emission is hub-gated
|
|
207
|
+
* and may be lower, so treat the result as an upper-ish estimate. Requires a
|
|
208
|
+
* configured `slvrEthPair` unless you pass `slvrPriceEth`.
|
|
209
|
+
*/
|
|
210
|
+
estimateRoundEv(params: {
|
|
211
|
+
/** ETH to commit to the round. */
|
|
212
|
+
stake: number;
|
|
213
|
+
/** Round to price. Defaults to the current round. */
|
|
214
|
+
roundId?: bigint;
|
|
215
|
+
/** Value SLVR net of the refining fee (cashing out) vs at full price (holding). Default false. */
|
|
216
|
+
cashOut?: boolean;
|
|
217
|
+
/** ETH in the jackpot pool. Default 0 (jackpot term omitted). */
|
|
218
|
+
jackpotPool?: number;
|
|
219
|
+
/** Jackpot odds (1-in-N). Defaults to the protocol default (625). */
|
|
220
|
+
jackpotOdds?: number;
|
|
221
|
+
/** Override the emission target (SLVR/round). Defaults to `slvrPerRound()`. */
|
|
222
|
+
emissionPerRound?: number;
|
|
223
|
+
/** Override the SLVR price (ETH per SLVR). Defaults to `sdk.price`. */
|
|
224
|
+
slvrPriceEth?: number;
|
|
225
|
+
/** Override the pot (ETH). Defaults to the sum of the round's squares. */
|
|
226
|
+
pot?: number;
|
|
227
|
+
}): Promise<GridMiningEv>;
|
|
228
|
+
}
|
|
229
|
+
export * from './types';
|
|
230
|
+
export * from './deployments';
|
|
231
|
+
export * from './ev';
|
|
232
|
+
export { SlvrPrice } from './price';
|
|
233
|
+
export type { SlvrReserves } from './price';
|
|
234
|
+
export { ChainlinkPriceFeed } from './oracle';
|
|
235
|
+
export { createSlvrClients, chainFromDeployment } from './connect';
|
|
236
|
+
export type { ConnectOptions, SlvrClients } from './connect';
|
|
237
|
+
export { SlvrGridLottery } from './contracts/lottery';
|
|
238
|
+
export { SlvrStaking } from './contracts/staking';
|
|
239
|
+
export { SlvrToken } from './contracts/token';
|
|
240
|
+
export { SlvrAutoCommit } from './contracts/autoCommit';
|
|
241
|
+
export { SlvrHub } from './contracts/hub';
|
|
242
|
+
export { SlvrGameRegistry } from './contracts/registry';
|
|
243
|
+
export { SlvrJackpot } from './contracts/jackpot';
|
|
244
|
+
export * from './errors';
|
|
245
|
+
export * from './utils';
|
|
246
|
+
export * from './transaction';
|
|
247
|
+
export * from './events';
|
|
248
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|