@deserialize/swap-sdk 1.1.51 → 1.1.53
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/errors.d.ts +3 -0
- package/dist/errors.js +8 -1
- package/dist/errors.js.map +1 -1
- package/dist/swapSDK.d.ts +42 -0
- package/dist/swapSDK.js +8 -2
- package/dist/swapSDK.js.map +1 -1
- package/package.json +1 -1
- package/src/errors.ts +7 -0
- package/src/swapSDK.ts +60 -3
package/dist/errors.d.ts
CHANGED
@@ -8,3 +8,6 @@ export declare class TooManyAccountsLockError extends DeserializeError {
|
|
8
8
|
export declare class PairNotAvailableOnDexError extends DeserializeError {
|
9
9
|
constructor(message: string);
|
10
10
|
}
|
11
|
+
export declare class SameTokenSwapError extends DeserializeError {
|
12
|
+
constructor(message: string);
|
13
|
+
}
|
package/dist/errors.js
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.PairNotAvailableOnDexError = exports.TooManyAccountsLockError = exports.DeserializeError = exports.handleSimulationError = void 0;
|
3
|
+
exports.SameTokenSwapError = exports.PairNotAvailableOnDexError = exports.TooManyAccountsLockError = exports.DeserializeError = exports.handleSimulationError = void 0;
|
4
4
|
const handleSimulationError = (e) => {
|
5
5
|
if (e.toString().includes("TooManyAccountLocks")) {
|
6
6
|
throw new TooManyAccountsLockError("Too many account locks: consider using the option reduceToTwoHops in the options when getting the routes");
|
@@ -28,4 +28,11 @@ class PairNotAvailableOnDexError extends DeserializeError {
|
|
28
28
|
}
|
29
29
|
}
|
30
30
|
exports.PairNotAvailableOnDexError = PairNotAvailableOnDexError;
|
31
|
+
class SameTokenSwapError extends DeserializeError {
|
32
|
+
constructor(message) {
|
33
|
+
super(message);
|
34
|
+
this.name = "SameTokenSwap";
|
35
|
+
}
|
36
|
+
}
|
37
|
+
exports.SameTokenSwapError = SameTokenSwapError;
|
31
38
|
//# sourceMappingURL=errors.js.map
|
package/dist/errors.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":";;;AAAO,MAAM,qBAAqB,GAAG,CAAC,CAAc,EAAE,EAAE;IACtD,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC,EAAE,CAAC;QACjD,MAAM,IAAI,wBAAwB,CAChC,0GAA0G,CAC3G,CAAC;IACJ,CAAC;AACH,CAAC,CAAC;AANW,QAAA,qBAAqB,yBAMhC;AAEF,MAAa,gBAAiB,SAAQ,KAAK;IACzC,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;IACjC,CAAC;CACF;AALD,4CAKC;AACD,MAAa,wBAAyB,SAAQ,gBAAgB;IAC5D,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,0BAA0B,CAAC;IACzC,CAAC;CACF;AALD,4DAKC;AAED,MAAa,0BAA2B,SAAQ,gBAAgB;IAC9D,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAC;IACtC,CAAC;CACF;AALD,gEAKC"}
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":";;;AAAO,MAAM,qBAAqB,GAAG,CAAC,CAAc,EAAE,EAAE;IACtD,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC,EAAE,CAAC;QACjD,MAAM,IAAI,wBAAwB,CAChC,0GAA0G,CAC3G,CAAC;IACJ,CAAC;AACH,CAAC,CAAC;AANW,QAAA,qBAAqB,yBAMhC;AAEF,MAAa,gBAAiB,SAAQ,KAAK;IACzC,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;IACjC,CAAC;CACF;AALD,4CAKC;AACD,MAAa,wBAAyB,SAAQ,gBAAgB;IAC5D,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,0BAA0B,CAAC;IACzC,CAAC;CACF;AALD,4DAKC;AAED,MAAa,0BAA2B,SAAQ,gBAAgB;IAC9D,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAC;IACtC,CAAC;CACF;AALD,gEAKC;AAED,MAAa,kBAAmB,SAAQ,gBAAgB;IACtD,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;IAC9B,CAAC;CACF;AALD,gDAKC"}
|
package/dist/swapSDK.d.ts
CHANGED
@@ -19,6 +19,46 @@ export interface SwapRequestParams {
|
|
19
19
|
*/
|
20
20
|
options?: RouteOptions;
|
21
21
|
}
|
22
|
+
export interface MetadataPointer {
|
23
|
+
authority: string;
|
24
|
+
metadataAddress: string;
|
25
|
+
}
|
26
|
+
export interface TokenMetadata {
|
27
|
+
additionalMetadata: any[];
|
28
|
+
mint: string;
|
29
|
+
name: string;
|
30
|
+
symbol: string;
|
31
|
+
updateAuthority: string;
|
32
|
+
uri: string;
|
33
|
+
}
|
34
|
+
export interface Extensions {
|
35
|
+
metadataPointer: MetadataPointer;
|
36
|
+
tokenMetadata: TokenMetadata;
|
37
|
+
}
|
38
|
+
export interface Metadata {
|
39
|
+
description: string;
|
40
|
+
image: string;
|
41
|
+
name: string;
|
42
|
+
risk: number;
|
43
|
+
symbol: string;
|
44
|
+
}
|
45
|
+
export interface TokenData {
|
46
|
+
address: string;
|
47
|
+
mintAuthority: string;
|
48
|
+
supply: number;
|
49
|
+
decimals: number;
|
50
|
+
isInitialized: boolean;
|
51
|
+
freezeAuthority: string | null;
|
52
|
+
tokenProgram: string;
|
53
|
+
extensions: Extensions;
|
54
|
+
updatedEpoch: number;
|
55
|
+
updatedAt: string;
|
56
|
+
updatedSlot: number;
|
57
|
+
writeVersion: number;
|
58
|
+
metadata: Metadata;
|
59
|
+
price: string;
|
60
|
+
volumeUsdc24h: number;
|
61
|
+
}
|
22
62
|
export interface SwapTransactionResponse {
|
23
63
|
/** Fully constructed VersionedTransaction ready for signing */
|
24
64
|
transaction: VersionedTransaction;
|
@@ -123,7 +163,9 @@ export interface Token {
|
|
123
163
|
chainId: number;
|
124
164
|
decimals: number;
|
125
165
|
logoURI: string;
|
166
|
+
price: number;
|
126
167
|
tokenProgram: string;
|
168
|
+
rawData: TokenData[];
|
127
169
|
}
|
128
170
|
export declare const DEX_ERRORS: {
|
129
171
|
PAIR_NOT_AVAILABLE_ON_DEX: string;
|
package/dist/swapSDK.js
CHANGED
@@ -123,6 +123,9 @@ class SwapSDK {
|
|
123
123
|
* @returns Quote information including expected output amount and price impact
|
124
124
|
*/
|
125
125
|
async getSwapQuote(params) {
|
126
|
+
if (params.tokenA.equals(params.tokenB)) {
|
127
|
+
throw new errors_1.SameTokenSwapError("Cannot swap the same token");
|
128
|
+
}
|
126
129
|
const body = {
|
127
130
|
tokenA: params.tokenA.toBase58(),
|
128
131
|
tokenB: params.tokenB.toBase58(),
|
@@ -234,14 +237,17 @@ class SwapSDK {
|
|
234
237
|
if (!response.ok) {
|
235
238
|
throw new Error(`API Error: ${response.statusText}`);
|
236
239
|
}
|
237
|
-
const data = await response.json();
|
238
|
-
return data.
|
240
|
+
const data = (await response.json()).data;
|
241
|
+
return data.map((token) => ({
|
239
242
|
name: token.metadata.name,
|
240
243
|
symbol: token.metadata.symbol,
|
241
244
|
address: token.address,
|
242
245
|
decimals: token.decimals,
|
243
246
|
logoURI: token.metadata.image,
|
244
247
|
tokenProgram: token.tokenProgram,
|
248
|
+
chainId: 101,
|
249
|
+
price: Number(token.price),
|
250
|
+
rawData: data,
|
245
251
|
}));
|
246
252
|
}
|
247
253
|
/**
|
package/dist/swapSDK.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"swapSDK.js","sourceRoot":"","sources":["../src/swapSDK.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,aAAa;AACb,2DASyB;AACzB,gDAA0B;AAC1B,
|
1
|
+
{"version":3,"file":"swapSDK.js","sourceRoot":"","sources":["../src/swapSDK.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/errors.ts
CHANGED
@@ -25,3 +25,10 @@ export class PairNotAvailableOnDexError extends DeserializeError {
|
|
25
25
|
this.name = "PairNotAvailableOnDex";
|
26
26
|
}
|
27
27
|
}
|
28
|
+
|
29
|
+
export class SameTokenSwapError extends DeserializeError {
|
30
|
+
constructor(message: string) {
|
31
|
+
super(message);
|
32
|
+
this.name = "SameTokenSwap";
|
33
|
+
}
|
34
|
+
}
|
package/src/swapSDK.ts
CHANGED
@@ -10,7 +10,11 @@ import web3, {
|
|
10
10
|
VersionedTransaction,
|
11
11
|
} from "@solana/web3.js";
|
12
12
|
import base58 from "bs58";
|
13
|
-
import {
|
13
|
+
import {
|
14
|
+
handleSimulationError,
|
15
|
+
PairNotAvailableOnDexError,
|
16
|
+
SameTokenSwapError,
|
17
|
+
} from "./errors";
|
14
18
|
|
15
19
|
/**
|
16
20
|
* Parameters to request a swap.
|
@@ -33,6 +37,51 @@ export interface SwapRequestParams {
|
|
33
37
|
options?: RouteOptions;
|
34
38
|
}
|
35
39
|
|
40
|
+
export interface MetadataPointer {
|
41
|
+
authority: string;
|
42
|
+
metadataAddress: string;
|
43
|
+
}
|
44
|
+
|
45
|
+
export interface TokenMetadata {
|
46
|
+
additionalMetadata: any[]; // or string[] if you know the type of items in the array
|
47
|
+
mint: string;
|
48
|
+
name: string;
|
49
|
+
symbol: string;
|
50
|
+
updateAuthority: string;
|
51
|
+
uri: string;
|
52
|
+
}
|
53
|
+
|
54
|
+
export interface Extensions {
|
55
|
+
metadataPointer: MetadataPointer;
|
56
|
+
tokenMetadata: TokenMetadata;
|
57
|
+
}
|
58
|
+
|
59
|
+
export interface Metadata {
|
60
|
+
description: string;
|
61
|
+
image: string;
|
62
|
+
name: string;
|
63
|
+
risk: number;
|
64
|
+
symbol: string;
|
65
|
+
}
|
66
|
+
|
67
|
+
export interface TokenData {
|
68
|
+
address: string;
|
69
|
+
mintAuthority: string;
|
70
|
+
supply: number;
|
71
|
+
decimals: number;
|
72
|
+
isInitialized: boolean;
|
73
|
+
freezeAuthority: string | null;
|
74
|
+
tokenProgram: string;
|
75
|
+
extensions: Extensions;
|
76
|
+
updatedEpoch: number;
|
77
|
+
updatedAt: string; // ISO date string
|
78
|
+
updatedSlot: number;
|
79
|
+
writeVersion: number;
|
80
|
+
metadata: Metadata;
|
81
|
+
price: string;
|
82
|
+
volumeUsdc24h: number;
|
83
|
+
}
|
84
|
+
|
36
85
|
export interface SwapTransactionResponse {
|
37
86
|
/** Fully constructed VersionedTransaction ready for signing */
|
38
87
|
transaction: VersionedTransaction;
|
@@ -144,7 +193,9 @@ export interface Token {
|
|
144
193
|
chainId: number;
|
145
194
|
decimals: number;
|
146
195
|
logoURI: string;
|
196
|
+
price: number;
|
147
197
|
tokenProgram: string;
|
198
|
+
rawData: TokenData[];
|
148
199
|
}
|
149
200
|
|
150
201
|
export const DEX_ERRORS = {
|
@@ -244,6 +295,9 @@ export class SwapSDK {
|
|
244
295
|
* @returns Quote information including expected output amount and price impact
|
245
296
|
*/
|
246
297
|
async getSwapQuote(params: SwapRequestParams): Promise<QuoteResponse> {
|
298
|
+
if (params.tokenA.equals(params.tokenB)) {
|
299
|
+
throw new SameTokenSwapError("Cannot swap the same token");
|
300
|
+
}
|
247
301
|
const body = {
|
248
302
|
tokenA: params.tokenA.toBase58(),
|
249
303
|
tokenB: params.tokenB.toBase58(),
|
@@ -379,14 +433,17 @@ export class SwapSDK {
|
|
379
433
|
if (!response.ok) {
|
380
434
|
throw new Error(`API Error: ${response.statusText}`);
|
381
435
|
}
|
382
|
-
const data = await response.json();
|
383
|
-
return data.
|
436
|
+
const data = (await response.json()).data as TokenData[];
|
437
|
+
return data.map((token) => ({
|
384
438
|
name: token.metadata.name,
|
385
439
|
symbol: token.metadata.symbol,
|
386
440
|
address: token.address,
|
387
441
|
decimals: token.decimals,
|
388
442
|
logoURI: token.metadata.image,
|
389
443
|
tokenProgram: token.tokenProgram,
|
444
|
+
chainId: 101,
|
445
|
+
price: Number(token.price),
|
446
|
+
rawData: data,
|
390
447
|
}));
|
391
448
|
}
|
392
449
|
|