@lightconexyz/lightcone-sdk 0.2.43 → 0.4.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 +22 -37
- package/dist/client.d.ts +19 -1
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +49 -0
- package/dist/client.js.map +1 -1
- package/dist/context.d.ts +7 -0
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js +79 -0
- package/dist/context.js.map +1 -1
- package/dist/domain/market/builders.d.ts +37 -0
- package/dist/domain/market/builders.d.ts.map +1 -0
- package/dist/domain/market/builders.js +114 -0
- package/dist/domain/market/builders.js.map +1 -0
- package/dist/domain/market/client.d.ts +3 -0
- package/dist/domain/market/client.d.ts.map +1 -1
- package/dist/domain/market/client.js +8 -0
- package/dist/domain/market/client.js.map +1 -1
- package/dist/domain/market/index.d.ts +1 -0
- package/dist/domain/market/index.d.ts.map +1 -1
- package/dist/domain/market/index.js +1 -0
- package/dist/domain/market/index.js.map +1 -1
- package/dist/domain/order/client.d.ts +8 -1
- package/dist/domain/order/client.d.ts.map +1 -1
- package/dist/domain/order/client.js +109 -0
- package/dist/domain/order/client.js.map +1 -1
- package/dist/domain/order/wire.d.ts +15 -0
- package/dist/domain/order/wire.d.ts.map +1 -1
- package/dist/domain/order/wire.js.map +1 -1
- package/dist/domain/position/builders.d.ts +179 -0
- package/dist/domain/position/builders.d.ts.map +1 -0
- package/dist/domain/position/builders.js +501 -0
- package/dist/domain/position/builders.js.map +1 -0
- package/dist/domain/position/client.d.ts +15 -1
- package/dist/domain/position/client.d.ts.map +1 -1
- package/dist/domain/position/client.js +90 -0
- package/dist/domain/position/client.js.map +1 -1
- package/dist/domain/position/index.d.ts +1 -0
- package/dist/domain/position/index.d.ts.map +1 -1
- package/dist/domain/position/index.js +1 -0
- package/dist/domain/position/index.js.map +1 -1
- package/dist/error.d.ts +4 -1
- package/dist/error.d.ts.map +1 -1
- package/dist/error.js +9 -0
- package/dist/error.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -1
- package/dist/index.js.map +1 -1
- package/dist/prelude.d.ts +5 -2
- package/dist/prelude.d.ts.map +1 -1
- package/dist/prelude.js +16 -1
- package/dist/prelude.js.map +1 -1
- package/dist/privy/index.js +25 -25
- package/dist/privy/index.js.map +1 -1
- package/dist/program/envelope.d.ts +20 -15
- package/dist/program/envelope.d.ts.map +1 -1
- package/dist/program/envelope.js +99 -31
- package/dist/program/envelope.js.map +1 -1
- package/dist/shared/index.d.ts +1 -0
- package/dist/shared/index.d.ts.map +1 -1
- package/dist/shared/index.js +3 -1
- package/dist/shared/index.js.map +1 -1
- package/dist/shared/signing.d.ts +17 -0
- package/dist/shared/signing.d.ts.map +1 -0
- package/dist/shared/signing.js +13 -0
- package/dist/shared/signing.js.map +1 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -29,13 +29,14 @@ npm install @lightconexyz/lightcone-sdk
|
|
|
29
29
|
import { Keypair, PublicKey } from "@solana/web3.js";
|
|
30
30
|
import {
|
|
31
31
|
LightconeClient,
|
|
32
|
-
|
|
32
|
+
DepositSource,
|
|
33
33
|
auth,
|
|
34
34
|
} from "@lightconexyz/lightcone-sdk";
|
|
35
35
|
|
|
36
36
|
async function main() {
|
|
37
37
|
const client = LightconeClient.builder()
|
|
38
38
|
.rpcUrl("https://api.devnet.solana.com")
|
|
39
|
+
.depositSource(DepositSource.Market)
|
|
39
40
|
.build();
|
|
40
41
|
const keypair = Keypair.generate();
|
|
41
42
|
|
|
@@ -58,7 +59,7 @@ async function main() {
|
|
|
58
59
|
// 3. Build, sign, and submit a limit order
|
|
59
60
|
// Decimals are derived automatically from the orderbook's token metadata.
|
|
60
61
|
const nonce = await client.orders().currentNonce(keypair.publicKey);
|
|
61
|
-
const request =
|
|
62
|
+
const request = client.orders().limitOrder()
|
|
62
63
|
.maker(keypair.publicKey)
|
|
63
64
|
.market(new PublicKey(market.pubkey))
|
|
64
65
|
.baseMint(new PublicKey(orderbook.base.pubkey))
|
|
@@ -87,7 +88,7 @@ main().catch(console.error);
|
|
|
87
88
|
import * as fs from "fs";
|
|
88
89
|
import * as path from "path";
|
|
89
90
|
import { Keypair, PublicKey } from "@solana/web3.js";
|
|
90
|
-
import { LightconeClient } from "@lightconexyz/lightcone-sdk";
|
|
91
|
+
import { LightconeClient, DepositSource } from "@lightconexyz/lightcone-sdk";
|
|
91
92
|
|
|
92
93
|
function readKeypairFile(filePath: string): Keypair {
|
|
93
94
|
const resolved = filePath.startsWith("~")
|
|
@@ -99,6 +100,7 @@ function readKeypairFile(filePath: string): Keypair {
|
|
|
99
100
|
|
|
100
101
|
const client = LightconeClient.builder()
|
|
101
102
|
.rpcUrl("https://api.devnet.solana.com")
|
|
103
|
+
.depositSource(DepositSource.Market)
|
|
102
104
|
.build();
|
|
103
105
|
const keypair = readKeypairFile("~/.config/solana/id.json");
|
|
104
106
|
```
|
|
@@ -115,32 +117,20 @@ const orderbook =
|
|
|
115
117
|
### Step 2: Deposit Collateral
|
|
116
118
|
|
|
117
119
|
```typescript
|
|
118
|
-
import { Transaction } from "@solana/web3.js";
|
|
119
|
-
|
|
120
|
-
const marketPubkey = new PublicKey(market.pubkey);
|
|
121
120
|
const depositMint = new PublicKey(market.depositAssets[0].pubkey);
|
|
122
121
|
const numOutcomes = market.outcomes.length;
|
|
123
|
-
const
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
},
|
|
130
|
-
numOutcomes
|
|
131
|
-
);
|
|
132
|
-
const tx = new Transaction().add(mintIx);
|
|
133
|
-
tx.feePayer = keypair.publicKey;
|
|
134
|
-
tx.recentBlockhash = (await client.rpc().getLatestBlockhash()).blockhash;
|
|
135
|
-
tx.sign(keypair);
|
|
122
|
+
const depositIx = client.positions().deposit()
|
|
123
|
+
.user(keypair.publicKey)
|
|
124
|
+
.mint(depositMint)
|
|
125
|
+
.amount(1_000_000n)
|
|
126
|
+
.market(market)
|
|
127
|
+
.buildIx();
|
|
136
128
|
```
|
|
137
129
|
|
|
138
130
|
### Step 3: Place an Order
|
|
139
131
|
|
|
140
132
|
```typescript
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
const request = LimitOrderEnvelope.new()
|
|
133
|
+
const request = client.orders().limitOrder()
|
|
144
134
|
.maker(keypair.publicKey)
|
|
145
135
|
.market(new PublicKey(market.pubkey))
|
|
146
136
|
.baseMint(new PublicKey(orderbook.base.pubkey))
|
|
@@ -186,19 +176,14 @@ await client.orders().cancel({
|
|
|
186
176
|
### Step 6: Exit a Position
|
|
187
177
|
|
|
188
178
|
```typescript
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
);
|
|
198
|
-
const mergeTx = new Transaction().add(mergeIx);
|
|
199
|
-
mergeTx.feePayer = keypair.publicKey;
|
|
200
|
-
mergeTx.recentBlockhash = (await client.rpc().getLatestBlockhash()).blockhash;
|
|
201
|
-
mergeTx.sign(keypair);
|
|
179
|
+
// signAndSubmit builds the tx, signs it using the client's signing strategy, and submits
|
|
180
|
+
const txHash = await client.markets().mergeCompleteSet()
|
|
181
|
+
.user(keypair.publicKey)
|
|
182
|
+
.market(new PublicKey(market.pubkey))
|
|
183
|
+
.mint(depositMint)
|
|
184
|
+
.amount(1_000_000n)
|
|
185
|
+
.numOutcomes(numOutcomes)
|
|
186
|
+
.signAndSubmit();
|
|
202
187
|
```
|
|
203
188
|
|
|
204
189
|
## Authentication
|
|
@@ -227,7 +212,7 @@ All examples are runnable with `npx tsx examples/<name>.ts`. Set environment var
|
|
|
227
212
|
|
|
228
213
|
| Example | Description |
|
|
229
214
|
|---------|-------------|
|
|
230
|
-
| [`submit_order`](examples/submit_order.ts) | `
|
|
215
|
+
| [`submit_order`](examples/submit_order.ts) | Limit order via `client.orders().limitOrder()` with human-readable price/size, auto-scaling, and fill tracking |
|
|
231
216
|
|
|
232
217
|
### Cancelling Orders
|
|
233
218
|
|
|
@@ -242,7 +227,7 @@ All examples are runnable with `npx tsx examples/<name>.ts`. Set environment var
|
|
|
242
227
|
|---------|-------------|
|
|
243
228
|
| [`read_onchain`](examples/read_onchain.ts) | Read exchange state, market state, user nonce, and PDA derivations via RPC |
|
|
244
229
|
| [`onchain_transactions`](examples/onchain_transactions.ts) | Build, sign, and submit mint/merge complete set and increment nonce on-chain |
|
|
245
|
-
| [`
|
|
230
|
+
| [`global_deposit_withdrawal`](examples/global_deposit_withdrawal.ts) | Init position tokens, deposit to global pool, move capital into a market, extend an existing ALT, and withdraw from global |
|
|
246
231
|
|
|
247
232
|
### WebSocket Streaming
|
|
248
233
|
|
package/dist/client.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Connection, PublicKey } from "@solana/web3.js";
|
|
1
|
+
import { Connection, Keypair, PublicKey, Transaction } from "@solana/web3.js";
|
|
2
2
|
import { Auth, type AuthCredentials } from "./auth";
|
|
3
3
|
import type { ClientContext } from "./context";
|
|
4
4
|
import { Admin } from "./domain/admin";
|
|
@@ -13,6 +13,8 @@ import { Trades } from "./domain/trade";
|
|
|
13
13
|
import { LightconeHttp } from "./http";
|
|
14
14
|
import { Privy } from "./privy";
|
|
15
15
|
import { Rpc } from "./rpc";
|
|
16
|
+
import { DepositSource } from "./shared";
|
|
17
|
+
import { type ExternalSigner, type SigningStrategy } from "./shared/signing";
|
|
16
18
|
import { WsClient, type WsConfig } from "./ws";
|
|
17
19
|
declare class AuthState {
|
|
18
20
|
private credentialsValue;
|
|
@@ -25,6 +27,8 @@ export declare class LightconeClient implements ClientContext {
|
|
|
25
27
|
readonly http: LightconeHttp;
|
|
26
28
|
readonly programId: PublicKey;
|
|
27
29
|
readonly connection?: Connection;
|
|
30
|
+
private depositSourceValue;
|
|
31
|
+
private signingStrategyValue?;
|
|
28
32
|
private readonly wsConfigValue;
|
|
29
33
|
private readonly authStateStore;
|
|
30
34
|
constructor(params: {
|
|
@@ -32,9 +36,17 @@ export declare class LightconeClient implements ClientContext {
|
|
|
32
36
|
wsConfig: WsConfig;
|
|
33
37
|
programId?: PublicKey;
|
|
34
38
|
connection?: Connection;
|
|
39
|
+
depositSource?: DepositSource;
|
|
40
|
+
signingStrategy?: SigningStrategy;
|
|
35
41
|
authCredentials?: AuthCredentials;
|
|
36
42
|
authState?: AuthState;
|
|
37
43
|
});
|
|
44
|
+
get depositSource(): DepositSource;
|
|
45
|
+
setDepositSource(source: DepositSource): void;
|
|
46
|
+
get signingStrategy(): SigningStrategy | undefined;
|
|
47
|
+
setSigningStrategy(strategy: SigningStrategy): void;
|
|
48
|
+
clearSigningStrategy(): void;
|
|
49
|
+
signAndSubmitTx(tx: Transaction): Promise<string>;
|
|
38
50
|
static builder(): LightconeClientBuilder;
|
|
39
51
|
markets(): Markets;
|
|
40
52
|
orderbooks(): Orderbooks;
|
|
@@ -57,6 +69,8 @@ export declare class LightconeClientBuilder {
|
|
|
57
69
|
private wsUrlValue;
|
|
58
70
|
private authCredentials?;
|
|
59
71
|
private programIdValue;
|
|
72
|
+
private depositSourceValue;
|
|
73
|
+
private signingStrategyValue?;
|
|
60
74
|
private rpcUrlValue?;
|
|
61
75
|
baseUrl(url: string): LightconeClientBuilder;
|
|
62
76
|
withBaseUrl(url: string): LightconeClientBuilder;
|
|
@@ -65,6 +79,10 @@ export declare class LightconeClientBuilder {
|
|
|
65
79
|
auth(credentials: AuthCredentials): LightconeClientBuilder;
|
|
66
80
|
withAuth(credentials: AuthCredentials): LightconeClientBuilder;
|
|
67
81
|
programId(id: PublicKey): LightconeClientBuilder;
|
|
82
|
+
depositSource(source: DepositSource): LightconeClientBuilder;
|
|
83
|
+
nativeSigner(keypair: Keypair): LightconeClientBuilder;
|
|
84
|
+
externalSigner(signer: ExternalSigner): LightconeClientBuilder;
|
|
85
|
+
privyWalletId(walletId: string): LightconeClientBuilder;
|
|
68
86
|
rpcUrl(url: string): LightconeClientBuilder;
|
|
69
87
|
build(): LightconeClient;
|
|
70
88
|
}
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/client.js
CHANGED
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.LightconeClientBuilder = exports.LightconeClient = void 0;
|
|
4
4
|
const web3_js_1 = require("@solana/web3.js");
|
|
5
5
|
const auth_1 = require("./auth");
|
|
6
|
+
const context_1 = require("./context");
|
|
6
7
|
const admin_1 = require("./domain/admin");
|
|
7
8
|
const market_1 = require("./domain/market");
|
|
8
9
|
const notification_1 = require("./domain/notification");
|
|
@@ -17,6 +18,7 @@ const network_1 = require("./network");
|
|
|
17
18
|
const privy_1 = require("./privy");
|
|
18
19
|
const constants_1 = require("./program/constants");
|
|
19
20
|
const rpc_1 = require("./rpc");
|
|
21
|
+
const shared_1 = require("./shared");
|
|
20
22
|
const ws_1 = require("./ws");
|
|
21
23
|
class AuthState {
|
|
22
24
|
credentialsValue;
|
|
@@ -37,17 +39,42 @@ class LightconeClient {
|
|
|
37
39
|
http;
|
|
38
40
|
programId;
|
|
39
41
|
connection;
|
|
42
|
+
depositSourceValue;
|
|
43
|
+
signingStrategyValue;
|
|
40
44
|
wsConfigValue;
|
|
41
45
|
authStateStore;
|
|
42
46
|
constructor(params) {
|
|
43
47
|
this.http = params.http;
|
|
44
48
|
this.programId = params.programId ?? constants_1.PROGRAM_ID;
|
|
45
49
|
this.connection = params.connection;
|
|
50
|
+
this.depositSourceValue = params.depositSource ?? shared_1.DepositSource.Global;
|
|
51
|
+
this.signingStrategyValue = params.signingStrategy;
|
|
46
52
|
this.wsConfigValue = params.wsConfig;
|
|
47
53
|
this.authStateStore =
|
|
48
54
|
params.authState ??
|
|
49
55
|
new AuthState(params.authCredentials);
|
|
50
56
|
}
|
|
57
|
+
// ── Deposit source ──────────────────────────────────────────────────
|
|
58
|
+
get depositSource() {
|
|
59
|
+
return this.depositSourceValue;
|
|
60
|
+
}
|
|
61
|
+
setDepositSource(source) {
|
|
62
|
+
this.depositSourceValue = source;
|
|
63
|
+
}
|
|
64
|
+
// ── Signing strategy ────────────────────────────────────────────────
|
|
65
|
+
get signingStrategy() {
|
|
66
|
+
return this.signingStrategyValue;
|
|
67
|
+
}
|
|
68
|
+
setSigningStrategy(strategy) {
|
|
69
|
+
this.signingStrategyValue = strategy;
|
|
70
|
+
}
|
|
71
|
+
clearSigningStrategy() {
|
|
72
|
+
this.signingStrategyValue = undefined;
|
|
73
|
+
}
|
|
74
|
+
// ── Transaction signing + submission ────────────────────────────────
|
|
75
|
+
async signAndSubmitTx(tx) {
|
|
76
|
+
return (0, context_1.signAndSubmitTx)(this, tx);
|
|
77
|
+
}
|
|
51
78
|
static builder() {
|
|
52
79
|
return new LightconeClientBuilder();
|
|
53
80
|
}
|
|
@@ -105,6 +132,8 @@ class LightconeClient {
|
|
|
105
132
|
connection: this.connection
|
|
106
133
|
? new web3_js_1.Connection(this.connection.rpcEndpoint)
|
|
107
134
|
: undefined,
|
|
135
|
+
depositSource: this.depositSourceValue,
|
|
136
|
+
signingStrategy: this.signingStrategyValue,
|
|
108
137
|
authState: this.authStateStore,
|
|
109
138
|
});
|
|
110
139
|
}
|
|
@@ -115,6 +144,8 @@ class LightconeClientBuilder {
|
|
|
115
144
|
wsUrlValue = network_1.DEFAULT_WS_URL;
|
|
116
145
|
authCredentials;
|
|
117
146
|
programIdValue = constants_1.PROGRAM_ID;
|
|
147
|
+
depositSourceValue = shared_1.DepositSource.Global;
|
|
148
|
+
signingStrategyValue;
|
|
118
149
|
rpcUrlValue;
|
|
119
150
|
baseUrl(url) {
|
|
120
151
|
return this.withBaseUrl(url);
|
|
@@ -141,6 +172,22 @@ class LightconeClientBuilder {
|
|
|
141
172
|
this.programIdValue = id;
|
|
142
173
|
return this;
|
|
143
174
|
}
|
|
175
|
+
depositSource(source) {
|
|
176
|
+
this.depositSourceValue = source;
|
|
177
|
+
return this;
|
|
178
|
+
}
|
|
179
|
+
nativeSigner(keypair) {
|
|
180
|
+
this.signingStrategyValue = { type: "native", keypair };
|
|
181
|
+
return this;
|
|
182
|
+
}
|
|
183
|
+
externalSigner(signer) {
|
|
184
|
+
this.signingStrategyValue = { type: "walletAdapter", signer };
|
|
185
|
+
return this;
|
|
186
|
+
}
|
|
187
|
+
privyWalletId(walletId) {
|
|
188
|
+
this.signingStrategyValue = { type: "privy", walletId };
|
|
189
|
+
return this;
|
|
190
|
+
}
|
|
144
191
|
rpcUrl(url) {
|
|
145
192
|
this.rpcUrlValue = url;
|
|
146
193
|
return this;
|
|
@@ -157,6 +204,8 @@ class LightconeClientBuilder {
|
|
|
157
204
|
pongTimeoutMs: 1_000,
|
|
158
205
|
},
|
|
159
206
|
programId: this.programIdValue,
|
|
207
|
+
depositSource: this.depositSourceValue,
|
|
208
|
+
signingStrategy: this.signingStrategyValue,
|
|
160
209
|
connection: this.rpcUrlValue
|
|
161
210
|
? new web3_js_1.Connection(this.rpcUrlValue)
|
|
162
211
|
: undefined,
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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","sourcesContent":["import { Connection, PublicKey } from \"@solana/web3.js\";\nimport { Auth, type AuthCredentials } from \"./auth\";\nimport type { ClientContext } from \"./context\";\nimport { Admin } from \"./domain/admin\";\nimport { Markets } from \"./domain/market\";\nimport { Notifications } from \"./domain/notification\";\nimport { Orders } from \"./domain/order\";\nimport { Orderbooks } from \"./domain/orderbook\";\nimport { Positions } from \"./domain/position\";\nimport { PriceHistoryClient } from \"./domain/price_history\";\nimport { Referrals } from \"./domain/referral\";\nimport { Trades } from \"./domain/trade\";\nimport { LightconeHttp } from \"./http\";\nimport { DEFAULT_API_URL, DEFAULT_WS_URL } from \"./network\";\nimport { Privy } from \"./privy\";\nimport { PROGRAM_ID } from \"./program/constants\";\nimport { Rpc } from \"./rpc\";\nimport { WsClient, type WsConfig } from \"./ws\";\n\nclass AuthState {\n private credentialsValue: AuthCredentials | undefined;\n\n constructor(initial?: AuthCredentials) {\n this.credentialsValue = initial;\n }\n\n getCredentials(): AuthCredentials | undefined {\n return this.credentialsValue;\n }\n\n setCredentials(credentials: AuthCredentials | undefined): void {\n this.credentialsValue = credentials;\n }\n\n async clearCaches(): Promise<void> {\n // No caches to clear — decimals are derived locally from orderbook metadata.\n }\n}\n\nexport class LightconeClient implements ClientContext {\n readonly http: LightconeHttp;\n readonly programId: PublicKey;\n readonly connection?: Connection;\n private readonly wsConfigValue: WsConfig;\n private readonly authStateStore: AuthState;\n\n constructor(params: {\n http: LightconeHttp;\n wsConfig: WsConfig;\n programId?: PublicKey;\n connection?: Connection;\n authCredentials?: AuthCredentials;\n authState?: AuthState;\n }) {\n this.http = params.http;\n this.programId = params.programId ?? PROGRAM_ID;\n this.connection = params.connection;\n this.wsConfigValue = params.wsConfig;\n this.authStateStore =\n params.authState ??\n new AuthState(params.authCredentials);\n }\n\n static builder(): LightconeClientBuilder {\n return new LightconeClientBuilder();\n }\n\n // ── Sub-client accessors ─────────────────────────────────────────────\n\n markets(): Markets {\n return new Markets(this);\n }\n\n orderbooks(): Orderbooks {\n return new Orderbooks(this);\n }\n\n orders(): Orders {\n return new Orders(this);\n }\n\n positions(): Positions {\n return new Positions(this);\n }\n\n trades(): Trades {\n return new Trades(this);\n }\n\n priceHistory(): PriceHistoryClient {\n return new PriceHistoryClient(this);\n }\n\n notifications(): Notifications {\n return new Notifications(this);\n }\n\n admin(): Admin {\n return new Admin(this);\n }\n\n auth(): Auth {\n return new Auth({\n http: this.http,\n authState: this.authStateStore,\n });\n }\n\n privy(): Privy {\n return new Privy(this);\n }\n\n referrals(): Referrals {\n return new Referrals(this);\n }\n\n rpc(): Rpc {\n return new Rpc(this);\n }\n\n wsConfig(): WsConfig {\n return this.wsConfigValue;\n }\n\n ws(): WsClient {\n return new WsClient(this.wsConfigValue, this.http.authTokenRef());\n }\n\n clone(): LightconeClient {\n return new LightconeClient({\n http: this.http,\n wsConfig: { ...this.wsConfigValue },\n programId: this.programId,\n connection: this.connection\n ? new Connection(this.connection.rpcEndpoint)\n : undefined,\n authState: this.authStateStore,\n });\n }\n}\n\nexport class LightconeClientBuilder {\n private baseUrlValue: string = DEFAULT_API_URL;\n private wsUrlValue: string = DEFAULT_WS_URL;\n private authCredentials?: AuthCredentials;\n private programIdValue: PublicKey = PROGRAM_ID;\n private rpcUrlValue?: string;\n\n baseUrl(url: string): LightconeClientBuilder {\n return this.withBaseUrl(url);\n }\n\n withBaseUrl(url: string): LightconeClientBuilder {\n this.baseUrlValue = url;\n return this;\n }\n\n wsUrl(url: string): LightconeClientBuilder {\n return this.withWsUrl(url);\n }\n\n withWsUrl(url: string): LightconeClientBuilder {\n this.wsUrlValue = url;\n return this;\n }\n\n auth(credentials: AuthCredentials): LightconeClientBuilder {\n return this.withAuth(credentials);\n }\n\n withAuth(credentials: AuthCredentials): LightconeClientBuilder {\n this.authCredentials = credentials;\n return this;\n }\n\n programId(id: PublicKey): LightconeClientBuilder {\n this.programIdValue = id;\n return this;\n }\n\n rpcUrl(url: string): LightconeClientBuilder {\n this.rpcUrlValue = url;\n return this;\n }\n\n build(): LightconeClient {\n return new LightconeClient({\n http: new LightconeHttp(this.baseUrlValue),\n wsConfig: {\n url: this.wsUrlValue,\n reconnect: true,\n maxReconnectAttempts: 10,\n baseReconnectDelayMs: 1_000,\n pingIntervalMs: 30_000,\n pongTimeoutMs: 1_000,\n },\n programId: this.programIdValue,\n connection: this.rpcUrlValue\n ? new Connection(this.rpcUrlValue)\n : undefined,\n authCredentials: this.authCredentials,\n });\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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","sourcesContent":["import { Connection, Keypair, PublicKey, Transaction } from \"@solana/web3.js\";\nimport { Auth, type AuthCredentials } from \"./auth\";\nimport type { ClientContext } from \"./context\";\nimport { signAndSubmitTx as signAndSubmitTxFn } from \"./context\";\nimport { Admin } from \"./domain/admin\";\nimport { Markets } from \"./domain/market\";\nimport { Notifications } from \"./domain/notification\";\nimport { Orders } from \"./domain/order\";\nimport { Orderbooks } from \"./domain/orderbook\";\nimport { Positions } from \"./domain/position\";\nimport { PriceHistoryClient } from \"./domain/price_history\";\nimport { Referrals } from \"./domain/referral\";\nimport { Trades } from \"./domain/trade\";\nimport { LightconeHttp } from \"./http\";\nimport { DEFAULT_API_URL, DEFAULT_WS_URL } from \"./network\";\nimport { Privy } from \"./privy\";\nimport { PROGRAM_ID } from \"./program/constants\";\nimport { Rpc } from \"./rpc\";\nimport { DepositSource } from \"./shared\";\nimport { type ExternalSigner, type SigningStrategy } from \"./shared/signing\";\nimport { WsClient, type WsConfig } from \"./ws\";\n\nclass AuthState {\n private credentialsValue: AuthCredentials | undefined;\n\n constructor(initial?: AuthCredentials) {\n this.credentialsValue = initial;\n }\n\n getCredentials(): AuthCredentials | undefined {\n return this.credentialsValue;\n }\n\n setCredentials(credentials: AuthCredentials | undefined): void {\n this.credentialsValue = credentials;\n }\n\n async clearCaches(): Promise<void> {\n // No caches to clear — decimals are derived locally from orderbook metadata.\n }\n}\n\nexport class LightconeClient implements ClientContext {\n readonly http: LightconeHttp;\n readonly programId: PublicKey;\n readonly connection?: Connection;\n private depositSourceValue: DepositSource;\n private signingStrategyValue?: SigningStrategy;\n private readonly wsConfigValue: WsConfig;\n private readonly authStateStore: AuthState;\n\n constructor(params: {\n http: LightconeHttp;\n wsConfig: WsConfig;\n programId?: PublicKey;\n connection?: Connection;\n depositSource?: DepositSource;\n signingStrategy?: SigningStrategy;\n authCredentials?: AuthCredentials;\n authState?: AuthState;\n }) {\n this.http = params.http;\n this.programId = params.programId ?? PROGRAM_ID;\n this.connection = params.connection;\n this.depositSourceValue = params.depositSource ?? DepositSource.Global;\n this.signingStrategyValue = params.signingStrategy;\n this.wsConfigValue = params.wsConfig;\n this.authStateStore =\n params.authState ??\n new AuthState(params.authCredentials);\n }\n\n // ── Deposit source ──────────────────────────────────────────────────\n\n get depositSource(): DepositSource {\n return this.depositSourceValue;\n }\n\n setDepositSource(source: DepositSource): void {\n this.depositSourceValue = source;\n }\n\n // ── Signing strategy ────────────────────────────────────────────────\n\n get signingStrategy(): SigningStrategy | undefined {\n return this.signingStrategyValue;\n }\n\n setSigningStrategy(strategy: SigningStrategy): void {\n this.signingStrategyValue = strategy;\n }\n\n clearSigningStrategy(): void {\n this.signingStrategyValue = undefined;\n }\n\n // ── Transaction signing + submission ────────────────────────────────\n\n async signAndSubmitTx(tx: Transaction): Promise<string> {\n return signAndSubmitTxFn(this, tx);\n }\n\n static builder(): LightconeClientBuilder {\n return new LightconeClientBuilder();\n }\n\n // ── Sub-client accessors ─────────────────────────────────────────────\n\n markets(): Markets {\n return new Markets(this);\n }\n\n orderbooks(): Orderbooks {\n return new Orderbooks(this);\n }\n\n orders(): Orders {\n return new Orders(this);\n }\n\n positions(): Positions {\n return new Positions(this);\n }\n\n trades(): Trades {\n return new Trades(this);\n }\n\n priceHistory(): PriceHistoryClient {\n return new PriceHistoryClient(this);\n }\n\n notifications(): Notifications {\n return new Notifications(this);\n }\n\n admin(): Admin {\n return new Admin(this);\n }\n\n auth(): Auth {\n return new Auth({\n http: this.http,\n authState: this.authStateStore,\n });\n }\n\n privy(): Privy {\n return new Privy(this);\n }\n\n referrals(): Referrals {\n return new Referrals(this);\n }\n\n rpc(): Rpc {\n return new Rpc(this);\n }\n\n wsConfig(): WsConfig {\n return this.wsConfigValue;\n }\n\n ws(): WsClient {\n return new WsClient(this.wsConfigValue, this.http.authTokenRef());\n }\n\n clone(): LightconeClient {\n return new LightconeClient({\n http: this.http,\n wsConfig: { ...this.wsConfigValue },\n programId: this.programId,\n connection: this.connection\n ? new Connection(this.connection.rpcEndpoint)\n : undefined,\n depositSource: this.depositSourceValue,\n signingStrategy: this.signingStrategyValue,\n authState: this.authStateStore,\n });\n }\n}\n\nexport class LightconeClientBuilder {\n private baseUrlValue: string = DEFAULT_API_URL;\n private wsUrlValue: string = DEFAULT_WS_URL;\n private authCredentials?: AuthCredentials;\n private programIdValue: PublicKey = PROGRAM_ID;\n private depositSourceValue: DepositSource = DepositSource.Global;\n private signingStrategyValue?: SigningStrategy;\n private rpcUrlValue?: string;\n\n baseUrl(url: string): LightconeClientBuilder {\n return this.withBaseUrl(url);\n }\n\n withBaseUrl(url: string): LightconeClientBuilder {\n this.baseUrlValue = url;\n return this;\n }\n\n wsUrl(url: string): LightconeClientBuilder {\n return this.withWsUrl(url);\n }\n\n withWsUrl(url: string): LightconeClientBuilder {\n this.wsUrlValue = url;\n return this;\n }\n\n auth(credentials: AuthCredentials): LightconeClientBuilder {\n return this.withAuth(credentials);\n }\n\n withAuth(credentials: AuthCredentials): LightconeClientBuilder {\n this.authCredentials = credentials;\n return this;\n }\n\n programId(id: PublicKey): LightconeClientBuilder {\n this.programIdValue = id;\n return this;\n }\n\n depositSource(source: DepositSource): LightconeClientBuilder {\n this.depositSourceValue = source;\n return this;\n }\n\n nativeSigner(keypair: Keypair): LightconeClientBuilder {\n this.signingStrategyValue = { type: \"native\", keypair };\n return this;\n }\n\n externalSigner(signer: ExternalSigner): LightconeClientBuilder {\n this.signingStrategyValue = { type: \"walletAdapter\", signer };\n return this;\n }\n\n privyWalletId(walletId: string): LightconeClientBuilder {\n this.signingStrategyValue = { type: \"privy\", walletId };\n return this;\n }\n\n rpcUrl(url: string): LightconeClientBuilder {\n this.rpcUrlValue = url;\n return this;\n }\n\n build(): LightconeClient {\n return new LightconeClient({\n http: new LightconeHttp(this.baseUrlValue),\n wsConfig: {\n url: this.wsUrlValue,\n reconnect: true,\n maxReconnectAttempts: 10,\n baseReconnectDelayMs: 1_000,\n pingIntervalMs: 30_000,\n pongTimeoutMs: 1_000,\n },\n programId: this.programIdValue,\n depositSource: this.depositSourceValue,\n signingStrategy: this.signingStrategyValue,\n connection: this.rpcUrlValue\n ? new Connection(this.rpcUrlValue)\n : undefined,\n authCredentials: this.authCredentials,\n });\n }\n}\n"]}
|
package/dist/context.d.ts
CHANGED
|
@@ -1,9 +1,16 @@
|
|
|
1
1
|
import type { Connection, PublicKey } from "@solana/web3.js";
|
|
2
2
|
import type { LightconeHttp } from "./http";
|
|
3
|
+
import type { DepositSource } from "./shared";
|
|
4
|
+
import type { SigningStrategy } from "./shared/signing";
|
|
3
5
|
export interface ClientContext {
|
|
4
6
|
readonly http: LightconeHttp;
|
|
5
7
|
readonly programId: PublicKey;
|
|
6
8
|
readonly connection?: Connection;
|
|
9
|
+
readonly depositSource: DepositSource;
|
|
10
|
+
readonly signingStrategy?: SigningStrategy;
|
|
7
11
|
}
|
|
8
12
|
export declare function requireConnection(ctx: ClientContext): Connection;
|
|
13
|
+
export declare function resolveDepositSource(ctx: ClientContext, overrideSource: DepositSource | undefined): DepositSource;
|
|
14
|
+
export declare function requireSigningStrategy(ctx: ClientContext): SigningStrategy;
|
|
15
|
+
export declare function signAndSubmitTx(ctx: ClientContext, tx: import("@solana/web3.js").Transaction): Promise<string>;
|
|
9
16
|
//# sourceMappingURL=context.d.ts.map
|
package/dist/context.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAC5C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAExD,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAC7B,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,QAAQ,CAAC,UAAU,CAAC,EAAE,UAAU,CAAC;IACjC,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC;IACtC,QAAQ,CAAC,eAAe,CAAC,EAAE,eAAe,CAAC;CAC5C;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,aAAa,GAAG,UAAU,CAOhE;AAED,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,aAAa,EAClB,cAAc,EAAE,aAAa,GAAG,SAAS,GACxC,aAAa,CAEf;AAED,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,aAAa,GAAG,eAAe,CAO1E;AAED,wBAAsB,eAAe,CACnC,GAAG,EAAE,aAAa,EAClB,EAAE,EAAE,OAAO,iBAAiB,EAAE,WAAW,GACxC,OAAO,CAAC,MAAM,CAAC,CAsCjB"}
|
package/dist/context.js
CHANGED
|
@@ -1,10 +1,89 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
2
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
36
|
exports.requireConnection = requireConnection;
|
|
37
|
+
exports.resolveDepositSource = resolveDepositSource;
|
|
38
|
+
exports.requireSigningStrategy = requireSigningStrategy;
|
|
39
|
+
exports.signAndSubmitTx = signAndSubmitTx;
|
|
4
40
|
function requireConnection(ctx) {
|
|
5
41
|
if (!ctx.connection) {
|
|
6
42
|
throw new Error("RPC client not configured — use .rpcUrl() on the builder");
|
|
7
43
|
}
|
|
8
44
|
return ctx.connection;
|
|
9
45
|
}
|
|
46
|
+
function resolveDepositSource(ctx, overrideSource) {
|
|
47
|
+
return overrideSource ?? ctx.depositSource;
|
|
48
|
+
}
|
|
49
|
+
function requireSigningStrategy(ctx) {
|
|
50
|
+
if (!ctx.signingStrategy) {
|
|
51
|
+
throw new Error("Signing strategy not configured — use .nativeSigner(), .externalSigner(), or .privyWalletId() on the builder");
|
|
52
|
+
}
|
|
53
|
+
return ctx.signingStrategy;
|
|
54
|
+
}
|
|
55
|
+
async function signAndSubmitTx(ctx, tx) {
|
|
56
|
+
const { isUserCancellation } = await Promise.resolve().then(() => __importStar(require("./shared/signing")));
|
|
57
|
+
const { SdkError } = await Promise.resolve().then(() => __importStar(require("./error")));
|
|
58
|
+
const { RetryPolicy } = await Promise.resolve().then(() => __importStar(require("./http")));
|
|
59
|
+
const strategy = requireSigningStrategy(ctx);
|
|
60
|
+
const connection = requireConnection(ctx);
|
|
61
|
+
const { blockhash } = await connection.getLatestBlockhash();
|
|
62
|
+
tx.recentBlockhash = blockhash;
|
|
63
|
+
switch (strategy.type) {
|
|
64
|
+
case "native": {
|
|
65
|
+
tx.partialSign(strategy.keypair);
|
|
66
|
+
return connection.sendRawTransaction(tx.serialize());
|
|
67
|
+
}
|
|
68
|
+
case "walletAdapter": {
|
|
69
|
+
const txBytes = tx.serialize({ requireAllSignatures: false });
|
|
70
|
+
const signedBytes = await strategy.signer
|
|
71
|
+
.signTransaction(txBytes)
|
|
72
|
+
.catch((err) => {
|
|
73
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
74
|
+
if (isUserCancellation(msg))
|
|
75
|
+
throw SdkError.userCancelled();
|
|
76
|
+
throw SdkError.signing(msg);
|
|
77
|
+
});
|
|
78
|
+
return connection.sendRawTransaction(signedBytes);
|
|
79
|
+
}
|
|
80
|
+
case "privy": {
|
|
81
|
+
const txBytes = tx.serialize({ requireAllSignatures: false });
|
|
82
|
+
const base64Tx = Buffer.from(txBytes).toString("base64");
|
|
83
|
+
const url = `${ctx.http.baseUrl()}/api/privy/sign_and_send_tx`;
|
|
84
|
+
const result = await ctx.http.post(url, { wallet_id: strategy.walletId, base64_tx: base64Tx }, RetryPolicy.None);
|
|
85
|
+
return result.hash;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
10
89
|
//# sourceMappingURL=context.js.map
|
package/dist/context.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Connection, PublicKey } from \"@solana/web3.js\";\nimport type { LightconeHttp } from \"./http\";\nimport type { DepositSource } from \"./shared\";\nimport type { SigningStrategy } from \"./shared/signing\";\n\nexport interface ClientContext {\n readonly http: LightconeHttp;\n readonly programId: PublicKey;\n readonly connection?: Connection;\n readonly depositSource: DepositSource;\n readonly signingStrategy?: SigningStrategy;\n}\n\nexport function requireConnection(ctx: ClientContext): Connection {\n if (!ctx.connection) {\n throw new Error(\n \"RPC client not configured — use .rpcUrl() on the builder\"\n );\n }\n return ctx.connection;\n}\n\nexport function resolveDepositSource(\n ctx: ClientContext,\n overrideSource: DepositSource | undefined\n): DepositSource {\n return overrideSource ?? ctx.depositSource;\n}\n\nexport function requireSigningStrategy(ctx: ClientContext): SigningStrategy {\n if (!ctx.signingStrategy) {\n throw new Error(\n \"Signing strategy not configured — use .nativeSigner(), .externalSigner(), or .privyWalletId() on the builder\"\n );\n }\n return ctx.signingStrategy;\n}\n\nexport async function signAndSubmitTx(\n ctx: ClientContext,\n tx: import(\"@solana/web3.js\").Transaction\n): Promise<string> {\n const { isUserCancellation } = await import(\"./shared/signing\");\n const { SdkError } = await import(\"./error\");\n const { RetryPolicy } = await import(\"./http\");\n\n const strategy = requireSigningStrategy(ctx);\n const connection = requireConnection(ctx);\n const { blockhash } = await connection.getLatestBlockhash();\n tx.recentBlockhash = blockhash;\n\n switch (strategy.type) {\n case \"native\": {\n tx.partialSign(strategy.keypair);\n return connection.sendRawTransaction(tx.serialize());\n }\n case \"walletAdapter\": {\n const txBytes = tx.serialize({ requireAllSignatures: false });\n const signedBytes = await strategy.signer\n .signTransaction(txBytes)\n .catch((err: unknown) => {\n const msg = err instanceof Error ? err.message : String(err);\n if (isUserCancellation(msg)) throw SdkError.userCancelled();\n throw SdkError.signing(msg);\n });\n return connection.sendRawTransaction(signedBytes);\n }\n case \"privy\": {\n const txBytes = tx.serialize({ requireAllSignatures: false });\n const base64Tx = Buffer.from(txBytes).toString(\"base64\");\n const url = `${ctx.http.baseUrl()}/api/privy/sign_and_send_tx`;\n const result = await ctx.http.post<{ hash: string }, object>(\n url,\n { wallet_id: strategy.walletId, base64_tx: base64Tx },\n RetryPolicy.None\n );\n return result.hash;\n }\n }\n}\n"]}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { PublicKey, Transaction, type TransactionInstruction } from "@solana/web3.js";
|
|
2
|
+
import type { ClientContext } from "../../context";
|
|
3
|
+
export declare class MintCompleteSetBuilder {
|
|
4
|
+
private readonly client;
|
|
5
|
+
private userValue?;
|
|
6
|
+
private marketValue?;
|
|
7
|
+
private mintValue?;
|
|
8
|
+
private amountValue?;
|
|
9
|
+
private numOutcomesValue?;
|
|
10
|
+
constructor(client: ClientContext);
|
|
11
|
+
user(user: PublicKey): this;
|
|
12
|
+
market(market: PublicKey): this;
|
|
13
|
+
mint(mint: PublicKey): this;
|
|
14
|
+
amount(amount: bigint): this;
|
|
15
|
+
numOutcomes(n: number): this;
|
|
16
|
+
buildIx(): TransactionInstruction;
|
|
17
|
+
buildTx(): Transaction;
|
|
18
|
+
signAndSubmit(): Promise<string>;
|
|
19
|
+
}
|
|
20
|
+
export declare class MergeCompleteSetBuilder {
|
|
21
|
+
private readonly client;
|
|
22
|
+
private userValue?;
|
|
23
|
+
private marketValue?;
|
|
24
|
+
private mintValue?;
|
|
25
|
+
private amountValue?;
|
|
26
|
+
private numOutcomesValue?;
|
|
27
|
+
constructor(client: ClientContext);
|
|
28
|
+
user(user: PublicKey): this;
|
|
29
|
+
market(market: PublicKey): this;
|
|
30
|
+
mint(mint: PublicKey): this;
|
|
31
|
+
amount(amount: bigint): this;
|
|
32
|
+
numOutcomes(n: number): this;
|
|
33
|
+
buildIx(): TransactionInstruction;
|
|
34
|
+
buildTx(): Transaction;
|
|
35
|
+
signAndSubmit(): Promise<string>;
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=builders.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"builders.d.ts","sourceRoot":"","sources":["../../../src/domain/market/builders.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,KAAK,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AACtF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAiBnD,qBAAa,sBAAsB;IACjC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgB;IACvC,OAAO,CAAC,SAAS,CAAC,CAAY;IAC9B,OAAO,CAAC,WAAW,CAAC,CAAY;IAChC,OAAO,CAAC,SAAS,CAAC,CAAY;IAC9B,OAAO,CAAC,WAAW,CAAC,CAAS;IAC7B,OAAO,CAAC,gBAAgB,CAAC,CAAS;gBAEtB,MAAM,EAAE,aAAa;IAIjC,IAAI,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI;IAK3B,MAAM,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI;IAK/B,IAAI,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI;IAK3B,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAK5B,WAAW,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI;IAK5B,OAAO,IAAI,sBAAsB;IAcjC,OAAO,IAAI,WAAW;IAMhB,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC;CAIvC;AAID,qBAAa,uBAAuB;IAClC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgB;IACvC,OAAO,CAAC,SAAS,CAAC,CAAY;IAC9B,OAAO,CAAC,WAAW,CAAC,CAAY;IAChC,OAAO,CAAC,SAAS,CAAC,CAAY;IAC9B,OAAO,CAAC,WAAW,CAAC,CAAS;IAC7B,OAAO,CAAC,gBAAgB,CAAC,CAAS;gBAEtB,MAAM,EAAE,aAAa;IAIjC,IAAI,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI;IAK3B,MAAM,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI;IAK/B,IAAI,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI;IAK3B,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAK5B,WAAW,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI;IAK5B,OAAO,IAAI,sBAAsB;IAcjC,OAAO,IAAI,WAAW;IAMhB,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC;CAIvC"}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MergeCompleteSetBuilder = exports.MintCompleteSetBuilder = void 0;
|
|
4
|
+
const web3_js_1 = require("@solana/web3.js");
|
|
5
|
+
const context_1 = require("../../context");
|
|
6
|
+
const error_1 = require("../../error");
|
|
7
|
+
const instructions_1 = require("../../program/instructions");
|
|
8
|
+
function requireField(value, field) {
|
|
9
|
+
if (value === undefined) {
|
|
10
|
+
throw error_1.SdkError.validation(`${field} is required`);
|
|
11
|
+
}
|
|
12
|
+
return value;
|
|
13
|
+
}
|
|
14
|
+
// ─── MintCompleteSetBuilder ─────────────────────────────────────────────────
|
|
15
|
+
class MintCompleteSetBuilder {
|
|
16
|
+
client;
|
|
17
|
+
userValue;
|
|
18
|
+
marketValue;
|
|
19
|
+
mintValue;
|
|
20
|
+
amountValue;
|
|
21
|
+
numOutcomesValue;
|
|
22
|
+
constructor(client) {
|
|
23
|
+
this.client = client;
|
|
24
|
+
}
|
|
25
|
+
user(user) {
|
|
26
|
+
this.userValue = user;
|
|
27
|
+
return this;
|
|
28
|
+
}
|
|
29
|
+
market(market) {
|
|
30
|
+
this.marketValue = market;
|
|
31
|
+
return this;
|
|
32
|
+
}
|
|
33
|
+
mint(mint) {
|
|
34
|
+
this.mintValue = mint;
|
|
35
|
+
return this;
|
|
36
|
+
}
|
|
37
|
+
amount(amount) {
|
|
38
|
+
this.amountValue = amount;
|
|
39
|
+
return this;
|
|
40
|
+
}
|
|
41
|
+
numOutcomes(n) {
|
|
42
|
+
this.numOutcomesValue = n;
|
|
43
|
+
return this;
|
|
44
|
+
}
|
|
45
|
+
buildIx() {
|
|
46
|
+
const user = requireField(this.userValue, "user");
|
|
47
|
+
const market = requireField(this.marketValue, "market");
|
|
48
|
+
const depositMint = requireField(this.mintValue, "mint");
|
|
49
|
+
const amount = requireField(this.amountValue, "amount");
|
|
50
|
+
const numOutcomes = requireField(this.numOutcomesValue, "num_outcomes");
|
|
51
|
+
return (0, instructions_1.buildMintCompleteSetIx)({ user, market, depositMint, amount }, numOutcomes, this.client.programId);
|
|
52
|
+
}
|
|
53
|
+
buildTx() {
|
|
54
|
+
const user = requireField(this.userValue, "user");
|
|
55
|
+
const ix = this.buildIx();
|
|
56
|
+
return new web3_js_1.Transaction({ feePayer: user }).add(ix);
|
|
57
|
+
}
|
|
58
|
+
async signAndSubmit() {
|
|
59
|
+
const tx = this.buildTx();
|
|
60
|
+
return (0, context_1.signAndSubmitTx)(this.client, tx);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
exports.MintCompleteSetBuilder = MintCompleteSetBuilder;
|
|
64
|
+
// ─── MergeCompleteSetBuilder ────────────────────────────────────────────────
|
|
65
|
+
class MergeCompleteSetBuilder {
|
|
66
|
+
client;
|
|
67
|
+
userValue;
|
|
68
|
+
marketValue;
|
|
69
|
+
mintValue;
|
|
70
|
+
amountValue;
|
|
71
|
+
numOutcomesValue;
|
|
72
|
+
constructor(client) {
|
|
73
|
+
this.client = client;
|
|
74
|
+
}
|
|
75
|
+
user(user) {
|
|
76
|
+
this.userValue = user;
|
|
77
|
+
return this;
|
|
78
|
+
}
|
|
79
|
+
market(market) {
|
|
80
|
+
this.marketValue = market;
|
|
81
|
+
return this;
|
|
82
|
+
}
|
|
83
|
+
mint(mint) {
|
|
84
|
+
this.mintValue = mint;
|
|
85
|
+
return this;
|
|
86
|
+
}
|
|
87
|
+
amount(amount) {
|
|
88
|
+
this.amountValue = amount;
|
|
89
|
+
return this;
|
|
90
|
+
}
|
|
91
|
+
numOutcomes(n) {
|
|
92
|
+
this.numOutcomesValue = n;
|
|
93
|
+
return this;
|
|
94
|
+
}
|
|
95
|
+
buildIx() {
|
|
96
|
+
const user = requireField(this.userValue, "user");
|
|
97
|
+
const market = requireField(this.marketValue, "market");
|
|
98
|
+
const depositMint = requireField(this.mintValue, "mint");
|
|
99
|
+
const amount = requireField(this.amountValue, "amount");
|
|
100
|
+
const numOutcomes = requireField(this.numOutcomesValue, "num_outcomes");
|
|
101
|
+
return (0, instructions_1.buildMergeCompleteSetIx)({ user, market, depositMint, amount }, numOutcomes, this.client.programId);
|
|
102
|
+
}
|
|
103
|
+
buildTx() {
|
|
104
|
+
const user = requireField(this.userValue, "user");
|
|
105
|
+
const ix = this.buildIx();
|
|
106
|
+
return new web3_js_1.Transaction({ feePayer: user }).add(ix);
|
|
107
|
+
}
|
|
108
|
+
async signAndSubmit() {
|
|
109
|
+
const tx = this.buildTx();
|
|
110
|
+
return (0, context_1.signAndSubmitTx)(this.client, tx);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
exports.MergeCompleteSetBuilder = MergeCompleteSetBuilder;
|
|
114
|
+
//# sourceMappingURL=builders.js.map
|