@lasersell/lasersell-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/dist/tx.js ADDED
@@ -0,0 +1,408 @@
1
+ import { VersionedTransaction, } from "@solana/web3.js";
2
+ import { ed25519 } from "@noble/curves/ed25519";
3
+ const ERROR_BODY_SNIPPET_LEN = 220;
4
+ export const HELIUS_SENDER_BASE_URL = "https://sender.helius-rpc.com";
5
+ export const HELIUS_SENDER_FAST_URL = `${HELIUS_SENDER_BASE_URL}/fast`;
6
+ export const HELIUS_SENDER_PING_URL = `${HELIUS_SENDER_BASE_URL}/ping`;
7
+ /** Default Astralane Iris region (Frankfurt). */
8
+ export const ASTRALANE_DEFAULT_REGION = "fr";
9
+ /**
10
+ * Builds the Astralane Iris endpoint URL for a given region.
11
+ *
12
+ * Known regions: `fr` (Frankfurt, recommended), `fr2`, `la` (San Francisco),
13
+ * `jp` (Tokyo), `ny` (New York), `ams` (Amsterdam, recommended), `ams2`,
14
+ * `lim` (Limburg), `sg` (Singapore), `lit` (Lithuania).
15
+ */
16
+ export function astralaneIrisUrl(region) {
17
+ return `https://${region}.gateway.astralane.io/iris`;
18
+ }
19
+ /** Creates an RPC send target. */
20
+ export function sendTargetRpc(url) {
21
+ return { kind: "rpc", url };
22
+ }
23
+ /** Creates a Helius Sender send target. */
24
+ export function sendTargetHeliusSender() {
25
+ return { kind: "helius_sender" };
26
+ }
27
+ /** Creates an Astralane Iris send target. */
28
+ export function sendTargetAstralane(apiKey, region) {
29
+ return { kind: "astralane", apiKey, region };
30
+ }
31
+ function sendTargetEndpoint(target) {
32
+ switch (target.kind) {
33
+ case "rpc":
34
+ return target.url;
35
+ case "helius_sender":
36
+ return HELIUS_SENDER_FAST_URL;
37
+ case "astralane":
38
+ return astralaneIrisUrl(target.region ?? ASTRALANE_DEFAULT_REGION);
39
+ }
40
+ }
41
+ function sendTargetExtraHeaders(target) {
42
+ if (target.kind === "astralane") {
43
+ return { "x-api-key": target.apiKey };
44
+ }
45
+ return {};
46
+ }
47
+ function sendTargetLabel(target) {
48
+ switch (target.kind) {
49
+ case "rpc":
50
+ return "rpc";
51
+ case "helius_sender":
52
+ return "helius sender";
53
+ case "astralane":
54
+ return "astralane";
55
+ }
56
+ }
57
+ function sendTargetIncludePreflightCommitment(target) {
58
+ return target.kind === "rpc";
59
+ }
60
+ /** Submits a signed transaction via the specified send target. */
61
+ export async function sendTransaction(target, tx, options = {}) {
62
+ const txB64 = encodeSignedTx(tx);
63
+ return await sendTransactionB64To(target, txB64, options);
64
+ }
65
+ /** Submits a signed base64-encoded transaction via the specified send target. */
66
+ export async function sendTransactionB64To(target, txB64, options = {}) {
67
+ return await sendTransactionB64(sendTargetEndpoint(target), sendTargetLabel(target), txB64, sendTargetIncludePreflightCommitment(target), options.fetch_impl ?? globalThis.fetch, sendTargetExtraHeaders(target));
68
+ }
69
+ /** Signs an unsigned base64 transaction and sends via the specified send target. */
70
+ export async function signAndSendUnsignedTxB64(target, unsignedTxB64, signer, options = {}) {
71
+ const signedTxB64 = signUnsignedTxB64Fast(unsignedTxB64, signer);
72
+ return await sendTransactionB64To(target, signedTxB64, options);
73
+ }
74
+ export class TxSubmitError extends Error {
75
+ kind;
76
+ target;
77
+ status;
78
+ body;
79
+ constructor(kind, message, options) {
80
+ super(message, { cause: options?.cause });
81
+ this.name = "TxSubmitError";
82
+ this.kind = kind;
83
+ this.target = options?.target;
84
+ this.status = options?.status;
85
+ this.body = options?.body;
86
+ }
87
+ static decodeUnsignedTx(cause) {
88
+ return new TxSubmitError("decode_unsigned_tx", `decode unsigned tx b64: ${stringifyError(cause)}`, { cause });
89
+ }
90
+ static deserializeUnsignedTx(cause) {
91
+ return new TxSubmitError("deserialize_unsigned_tx", `deserialize unsigned tx: ${stringifyError(cause)}`, { cause });
92
+ }
93
+ static signTx(cause) {
94
+ return new TxSubmitError("sign_tx", `sign tx: ${stringifyError(cause)}`, {
95
+ cause,
96
+ });
97
+ }
98
+ static serializeTx(cause) {
99
+ return new TxSubmitError("serialize_tx", `serialize tx: ${stringifyError(cause)}`, { cause });
100
+ }
101
+ static requestSend(target, cause) {
102
+ return new TxSubmitError("request_send", `${target} request send failed: ${stringifyError(cause)}`, { cause, target });
103
+ }
104
+ static responseRead(target, cause) {
105
+ return new TxSubmitError("response_read", `${target} response read failed: ${stringifyError(cause)}`, { cause, target });
106
+ }
107
+ static httpStatus(target, status, body) {
108
+ return new TxSubmitError("http_status", `${target} http ${status}: ${body}`, {
109
+ target,
110
+ status,
111
+ body,
112
+ });
113
+ }
114
+ static decodeResponse(target, body, cause) {
115
+ return new TxSubmitError("decode_response", `${target} response decode failed: ${stringifyError(cause)}. body=${body}`, {
116
+ target,
117
+ cause,
118
+ body,
119
+ });
120
+ }
121
+ static rpcError(target, error) {
122
+ return new TxSubmitError("rpc_error", `${target} returned error: ${error}`, {
123
+ target,
124
+ });
125
+ }
126
+ static missingResult(target, response) {
127
+ return new TxSubmitError("missing_result", `${target} response missing signature: ${response}`, { target });
128
+ }
129
+ }
130
+ export function signUnsignedTx(unsignedTxB64, signer) {
131
+ let raw;
132
+ try {
133
+ raw = decodeBase64Strict(unsignedTxB64);
134
+ }
135
+ catch (error) {
136
+ throw TxSubmitError.decodeUnsignedTx(error);
137
+ }
138
+ let unsignedTx;
139
+ try {
140
+ unsignedTx = VersionedTransaction.deserialize(raw);
141
+ }
142
+ catch (error) {
143
+ throw TxSubmitError.deserializeUnsignedTx(error);
144
+ }
145
+ try {
146
+ unsignedTx.sign([signer]);
147
+ return unsignedTx;
148
+ }
149
+ catch (error) {
150
+ throw TxSubmitError.signTx(error);
151
+ }
152
+ }
153
+ /**
154
+ * Fast-path signer for LaserSell-provided unsigned transactions.
155
+ *
156
+ * Unlike `signUnsignedTx` (which deserializes into a `VersionedTransaction`), this method:
157
+ * 1) base64-decodes the transaction
158
+ * 2) signs the raw message bytes
159
+ * 3) patches the signature bytes in-place
160
+ * 4) re-encodes to base64
161
+ *
162
+ * This avoids `VersionedTransaction.deserialize()` and `tx.serialize()` on the hot path.
163
+ */
164
+ export function signUnsignedTxB64Fast(unsignedTxB64, signer) {
165
+ let raw;
166
+ try {
167
+ raw = decodeBase64Strict(unsignedTxB64);
168
+ }
169
+ catch (error) {
170
+ throw TxSubmitError.decodeUnsignedTx(error);
171
+ }
172
+ try {
173
+ patchSignTransactionInPlace(raw, signer);
174
+ }
175
+ catch (error) {
176
+ throw TxSubmitError.signTx(error);
177
+ }
178
+ try {
179
+ return Buffer.from(raw).toString("base64");
180
+ }
181
+ catch (error) {
182
+ throw TxSubmitError.serializeTx(error);
183
+ }
184
+ }
185
+ export function encodeSignedTx(tx) {
186
+ try {
187
+ return Buffer.from(tx.serialize()).toString("base64");
188
+ }
189
+ catch (error) {
190
+ throw TxSubmitError.serializeTx(error);
191
+ }
192
+ }
193
+ async function sendTransactionB64(endpoint, target, txB64, includePreflightCommitment, fetchImpl, extraHeaders = {}) {
194
+ if (typeof fetchImpl !== "function") {
195
+ throw TxSubmitError.requestSend(target, "no fetch implementation available");
196
+ }
197
+ const config = {
198
+ encoding: "base64",
199
+ skipPreflight: true,
200
+ maxRetries: 0,
201
+ };
202
+ if (includePreflightCommitment) {
203
+ config.preflightCommitment = "processed";
204
+ }
205
+ const payload = {
206
+ jsonrpc: "2.0",
207
+ id: 1,
208
+ method: "sendTransaction",
209
+ params: [txB64, config],
210
+ };
211
+ let response;
212
+ try {
213
+ response = await fetchImpl(endpoint, {
214
+ method: "POST",
215
+ headers: {
216
+ "content-type": "application/json",
217
+ ...extraHeaders,
218
+ },
219
+ body: JSON.stringify(payload),
220
+ });
221
+ }
222
+ catch (error) {
223
+ throw TxSubmitError.requestSend(target, error);
224
+ }
225
+ let body;
226
+ try {
227
+ body = await response.text();
228
+ }
229
+ catch (error) {
230
+ throw TxSubmitError.responseRead(target, error);
231
+ }
232
+ if (!response.ok) {
233
+ throw TxSubmitError.httpStatus(target, response.status, summarizeBody(body));
234
+ }
235
+ let parsed;
236
+ try {
237
+ parsed = JSON.parse(body);
238
+ }
239
+ catch (error) {
240
+ throw TxSubmitError.decodeResponse(target, summarizeBody(body), error);
241
+ }
242
+ const obj = asRecord(parsed, target);
243
+ if (obj.error !== undefined) {
244
+ throw TxSubmitError.rpcError(target, JSON.stringify(obj.error));
245
+ }
246
+ const result = obj.result;
247
+ if (typeof result === "string" && result.length > 0) {
248
+ return result;
249
+ }
250
+ throw TxSubmitError.missingResult(target, typeof result === "undefined" ? JSON.stringify(obj) : JSON.stringify(result));
251
+ }
252
+ export async function pingHeliusSender(options = {}) {
253
+ const fetchImpl = options.fetch_impl ?? globalThis.fetch;
254
+ if (typeof fetchImpl !== "function") {
255
+ return false;
256
+ }
257
+ const pingUrl = options.baseUrl === undefined
258
+ ? HELIUS_SENDER_PING_URL
259
+ : senderPingUrl(options.baseUrl);
260
+ try {
261
+ const response = await fetchImpl(pingUrl, { method: "GET" });
262
+ return response.ok;
263
+ }
264
+ catch {
265
+ return false;
266
+ }
267
+ }
268
+ export function startHeliusSenderWarmLoop(options = {}) {
269
+ const fetchImpl = options.fetch_impl ?? globalThis.fetch;
270
+ const intervalMs = options.intervalMs ?? 30_000;
271
+ const pingUrl = options.baseUrl === undefined
272
+ ? HELIUS_SENDER_PING_URL
273
+ : senderPingUrl(options.baseUrl);
274
+ if (typeof fetchImpl !== "function") {
275
+ return { stop: () => { } };
276
+ }
277
+ const handle = setInterval(() => {
278
+ void fetchImpl(pingUrl, { method: "GET" }).catch(() => {
279
+ // Best-effort only.
280
+ });
281
+ }, intervalMs);
282
+ return {
283
+ stop: () => clearInterval(handle),
284
+ };
285
+ }
286
+ function senderPingUrl(baseUrl) {
287
+ const trimmed = baseUrl.trim().replace(/\/+$/, "");
288
+ const withoutFast = trimmed.endsWith("/fast")
289
+ ? trimmed.slice(0, trimmed.length - "/fast".length)
290
+ : trimmed;
291
+ return `${withoutFast}/ping`;
292
+ }
293
+ function patchSignTransactionInPlace(rawTx, signer) {
294
+ const { value: signatureCount, bytesRead: sigCountLen } = decodeShortVecLen(rawTx, 0);
295
+ const signaturesLen = signatureCount * 64;
296
+ const messageStart = sigCountLen + signaturesLen;
297
+ if (messageStart > rawTx.length) {
298
+ throw new Error("transaction is truncated (signatures)");
299
+ }
300
+ const message = rawTx.subarray(messageStart);
301
+ const signerPubkey = signer.publicKey.toBytes();
302
+ const { index: maybeIndex, numRequiredSignatures } = findSignerIndexInMessage(message, signerPubkey);
303
+ let signatureIndex = maybeIndex;
304
+ if (signatureIndex === null) {
305
+ if (signatureCount === 1 && numRequiredSignatures === 1) {
306
+ signatureIndex = 0;
307
+ }
308
+ else {
309
+ throw new Error("signer pubkey not found among required signer accounts in tx message");
310
+ }
311
+ }
312
+ if (signatureIndex >= signatureCount) {
313
+ throw new Error(`signer signature index (${signatureIndex}) out of range for signature vector length (${signatureCount})`);
314
+ }
315
+ const signature = ed25519.sign(message, signer.secretKey.slice(0, 32));
316
+ const signatureOffset = sigCountLen + signatureIndex * 64;
317
+ rawTx.set(signature, signatureOffset);
318
+ }
319
+ function findSignerIndexInMessage(message, signerPubkey) {
320
+ if (signerPubkey.length !== 32) {
321
+ throw new Error("signer pubkey must be 32 bytes");
322
+ }
323
+ const first = getByte(message, 0, "message prefix");
324
+ let offset = 0;
325
+ if ((first & 0x80) !== 0) {
326
+ const version = first & 0x7f;
327
+ if (version !== 0) {
328
+ throw new Error(`unsupported Solana message version: ${version}`);
329
+ }
330
+ offset = 1;
331
+ }
332
+ const numRequiredSignatures = getByte(message, offset, "header.numRequiredSignatures");
333
+ // Skip message header: numRequiredSignatures, numReadonlySignedAccounts, numReadonlyUnsignedAccounts
334
+ offset += 3;
335
+ const { value: accountKeyCount, bytesRead: keyCountLen } = decodeShortVecLen(message, offset);
336
+ offset += keyCountLen;
337
+ const keysBytes = accountKeyCount * 32;
338
+ if (offset + keysBytes > message.length) {
339
+ throw new Error("message is truncated (account keys)");
340
+ }
341
+ const signerCount = Math.min(numRequiredSignatures, accountKeyCount);
342
+ for (let i = 0; i < signerCount; i += 1) {
343
+ const keyOffset = offset + i * 32;
344
+ if (bytesEqual32(message, keyOffset, signerPubkey)) {
345
+ return { index: i, numRequiredSignatures };
346
+ }
347
+ }
348
+ return { index: null, numRequiredSignatures };
349
+ }
350
+ function decodeShortVecLen(bytes, offset) {
351
+ let value = 0;
352
+ let shift = 0;
353
+ let bytesRead = 0;
354
+ while (true) {
355
+ const byte = getByte(bytes, offset + bytesRead, "shortvec byte");
356
+ value |= (byte & 0x7f) << shift;
357
+ bytesRead += 1;
358
+ if ((byte & 0x80) === 0) {
359
+ break;
360
+ }
361
+ shift += 7;
362
+ if (shift > 28) {
363
+ throw new Error("shortvec length overflow");
364
+ }
365
+ }
366
+ return { value, bytesRead };
367
+ }
368
+ function bytesEqual32(bytes, offset, other) {
369
+ for (let i = 0; i < 32; i += 1) {
370
+ if (getByte(bytes, offset + i, "pubkey byte") !== getByte(other, i)) {
371
+ return false;
372
+ }
373
+ }
374
+ return true;
375
+ }
376
+ function getByte(bytes, index, label = "byte") {
377
+ const value = bytes[index];
378
+ if (value === undefined) {
379
+ throw new Error(`${label} out of range`);
380
+ }
381
+ return value;
382
+ }
383
+ function decodeBase64Strict(value) {
384
+ const normalized = value.trim();
385
+ if (normalized.length === 0) {
386
+ throw new Error("base64 payload is empty");
387
+ }
388
+ if (!/^[A-Za-z0-9+/]*={0,2}$/.test(normalized) || normalized.length % 4 !== 0) {
389
+ throw new Error("invalid base64 encoding");
390
+ }
391
+ return Buffer.from(normalized, "base64");
392
+ }
393
+ function summarizeBody(body) {
394
+ return body.slice(0, ERROR_BODY_SNIPPET_LEN);
395
+ }
396
+ function asRecord(value, target) {
397
+ if (typeof value !== "object" || value === null || Array.isArray(value)) {
398
+ throw TxSubmitError.decodeResponse(target, JSON.stringify(value), "response was not an object");
399
+ }
400
+ return value;
401
+ }
402
+ function stringifyError(error) {
403
+ if (error instanceof Error) {
404
+ return `${error.name}: ${error.message}`;
405
+ }
406
+ return String(error);
407
+ }
408
+ //# sourceMappingURL=tx.js.map
package/dist/tx.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tx.js","sourceRoot":"","sources":["../src/tx.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,87 @@
1
+ {
2
+ "name": "@lasersell/lasersell-sdk",
3
+ "version": "0.1.0",
4
+ "description": "TypeScript SDK for the LaserSell API",
5
+ "author": "LaserSell <support@lasersell.io>",
6
+ "license": "MIT",
7
+ "homepage": "https://lasersell.io",
8
+ "repository": {
9
+ "type": "git",
10
+ "url": "https://github.com/lasersell/lasersell-sdk.git",
11
+ "directory": "js"
12
+ },
13
+ "bugs": {
14
+ "url": "https://github.com/lasersell/lasersell-sdk/issues"
15
+ },
16
+ "keywords": [
17
+ "solana",
18
+ "trading",
19
+ "exit-strategy",
20
+ "lasersell",
21
+ "sdk",
22
+ "defi"
23
+ ],
24
+ "type": "module",
25
+ "main": "./dist/index.js",
26
+ "types": "./dist/index.d.ts",
27
+ "exports": {
28
+ ".": {
29
+ "types": "./dist/index.d.ts",
30
+ "import": "./dist/index.js"
31
+ },
32
+ "./exit-api": {
33
+ "types": "./dist/exitApi.d.ts",
34
+ "import": "./dist/exitApi.js"
35
+ },
36
+ "./retry": {
37
+ "types": "./dist/retry.d.ts",
38
+ "import": "./dist/retry.js"
39
+ },
40
+ "./tx": {
41
+ "types": "./dist/tx.d.ts",
42
+ "import": "./dist/tx.js"
43
+ },
44
+ "./stream": {
45
+ "types": "./dist/stream/index.d.ts",
46
+ "import": "./dist/stream/index.js"
47
+ },
48
+ "./stream/client": {
49
+ "types": "./dist/stream/client.d.ts",
50
+ "import": "./dist/stream/client.js"
51
+ },
52
+ "./stream/proto": {
53
+ "types": "./dist/stream/proto.d.ts",
54
+ "import": "./dist/stream/proto.js"
55
+ },
56
+ "./stream/session": {
57
+ "types": "./dist/stream/session.d.ts",
58
+ "import": "./dist/stream/session.js"
59
+ }
60
+ },
61
+ "sideEffects": false,
62
+ "engines": {
63
+ "node": ">=18"
64
+ },
65
+ "files": [
66
+ "dist",
67
+ "src",
68
+ "LICENSE"
69
+ ],
70
+ "scripts": {
71
+ "build": "tsc -p tsconfig.json",
72
+ "clean": "rm -rf dist",
73
+ "typecheck": "tsc -p tsconfig.json --noEmit",
74
+ "prepublishOnly": "npm run build"
75
+ },
76
+ "publishConfig": {
77
+ "access": "public"
78
+ },
79
+ "dependencies": {
80
+ "@solana/web3.js": "^1.98.2",
81
+ "ws": "^8.18.0"
82
+ },
83
+ "devDependencies": {
84
+ "@types/node": "^20.17.19",
85
+ "typescript": "^5.8.2"
86
+ }
87
+ }