@drift-labs/sdk-browser 2.156.0-beta.3 → 2.156.0-beta.4
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/VERSION +1 -1
- package/lib/browser/jupiter/jupiterClient.d.ts +16 -2
- package/lib/browser/jupiter/jupiterClient.js +31 -9
- package/lib/browser/swap/UnifiedSwapClient.d.ts +8 -0
- package/lib/browser/swap/UnifiedSwapClient.js +9 -0
- package/lib/node/jupiter/jupiterClient.d.ts +16 -2
- package/lib/node/jupiter/jupiterClient.d.ts.map +1 -1
- package/lib/node/jupiter/jupiterClient.js +31 -9
- package/lib/node/swap/UnifiedSwapClient.d.ts +8 -0
- package/lib/node/swap/UnifiedSwapClient.d.ts.map +1 -1
- package/lib/node/swap/UnifiedSwapClient.js +9 -0
- package/package.json +1 -1
- package/src/jupiter/jupiterClient.ts +44 -8
- package/src/swap/UnifiedSwapClient.ts +10 -1
package/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
2.156.0-beta.
|
|
1
|
+
2.156.0-beta.4
|
|
@@ -209,15 +209,29 @@ export interface QuoteResponse {
|
|
|
209
209
|
errorCode?: string;
|
|
210
210
|
}
|
|
211
211
|
export declare const RECOMMENDED_JUPITER_API_VERSION = "/v1";
|
|
212
|
-
|
|
212
|
+
/** @deprecated Use RECOMMENDED_JUPITER_API instead. lite-api.jup.ag requires migration to api.jup.ag with API key. */
|
|
213
|
+
export declare const LEGACY_JUPITER_API = "https://lite-api.jup.ag/swap";
|
|
214
|
+
export declare const RECOMMENDED_JUPITER_API = "https://api.jup.ag/swap";
|
|
213
215
|
export declare class JupiterClient {
|
|
214
216
|
url: string;
|
|
215
217
|
connection: Connection;
|
|
216
218
|
lookupTableCahce: Map<string, AddressLookupTableAccount>;
|
|
217
|
-
|
|
219
|
+
private apiKey?;
|
|
220
|
+
/**
|
|
221
|
+
* Create a Jupiter client
|
|
222
|
+
* @param connection - Solana connection
|
|
223
|
+
* @param url - Optional custom API URL. Defaults to https://api.jup.ag/swap
|
|
224
|
+
* @param apiKey - API key for Jupiter API. Required for api.jup.ag (free tier available at https://portal.jup.ag)
|
|
225
|
+
*/
|
|
226
|
+
constructor({ connection, url, apiKey, }: {
|
|
218
227
|
connection: Connection;
|
|
219
228
|
url?: string;
|
|
229
|
+
apiKey?: string;
|
|
220
230
|
});
|
|
231
|
+
/**
|
|
232
|
+
* Get the headers for API requests, including API key if configured
|
|
233
|
+
*/
|
|
234
|
+
private getHeaders;
|
|
221
235
|
/**
|
|
222
236
|
* Get routes for a swap
|
|
223
237
|
* @param inputMint the mint of the input token
|
|
@@ -3,16 +3,38 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.JupiterClient = exports.RECOMMENDED_JUPITER_API = exports.RECOMMENDED_JUPITER_API_VERSION = void 0;
|
|
6
|
+
exports.JupiterClient = exports.RECOMMENDED_JUPITER_API = exports.LEGACY_JUPITER_API = exports.RECOMMENDED_JUPITER_API_VERSION = void 0;
|
|
7
7
|
const web3_js_1 = require("@solana/web3.js");
|
|
8
8
|
const node_fetch_1 = __importDefault(require("node-fetch"));
|
|
9
9
|
exports.RECOMMENDED_JUPITER_API_VERSION = '/v1';
|
|
10
|
-
|
|
10
|
+
/** @deprecated Use RECOMMENDED_JUPITER_API instead. lite-api.jup.ag requires migration to api.jup.ag with API key. */
|
|
11
|
+
exports.LEGACY_JUPITER_API = 'https://lite-api.jup.ag/swap';
|
|
12
|
+
exports.RECOMMENDED_JUPITER_API = 'https://api.jup.ag/swap';
|
|
11
13
|
class JupiterClient {
|
|
12
|
-
|
|
14
|
+
/**
|
|
15
|
+
* Create a Jupiter client
|
|
16
|
+
* @param connection - Solana connection
|
|
17
|
+
* @param url - Optional custom API URL. Defaults to https://api.jup.ag/swap
|
|
18
|
+
* @param apiKey - API key for Jupiter API. Required for api.jup.ag (free tier available at https://portal.jup.ag)
|
|
19
|
+
*/
|
|
20
|
+
constructor({ connection, url, apiKey, }) {
|
|
13
21
|
this.lookupTableCahce = new Map();
|
|
14
22
|
this.connection = connection;
|
|
15
23
|
this.url = url !== null && url !== void 0 ? url : exports.RECOMMENDED_JUPITER_API;
|
|
24
|
+
this.apiKey = apiKey;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Get the headers for API requests, including API key if configured
|
|
28
|
+
*/
|
|
29
|
+
getHeaders(contentType) {
|
|
30
|
+
const headers = {};
|
|
31
|
+
if (contentType) {
|
|
32
|
+
headers['Content-Type'] = contentType;
|
|
33
|
+
}
|
|
34
|
+
if (this.apiKey) {
|
|
35
|
+
headers['x-api-key'] = this.apiKey;
|
|
36
|
+
}
|
|
37
|
+
return headers;
|
|
16
38
|
}
|
|
17
39
|
/**
|
|
18
40
|
* Get routes for a swap
|
|
@@ -43,10 +65,12 @@ class JupiterClient {
|
|
|
43
65
|
if (swapMode === 'ExactOut') {
|
|
44
66
|
params.delete('maxAccounts');
|
|
45
67
|
}
|
|
46
|
-
const apiVersionParam = this.url === exports.RECOMMENDED_JUPITER_API
|
|
68
|
+
const apiVersionParam = this.url === exports.RECOMMENDED_JUPITER_API || this.url === exports.LEGACY_JUPITER_API
|
|
47
69
|
? exports.RECOMMENDED_JUPITER_API_VERSION
|
|
48
70
|
: '';
|
|
49
|
-
const
|
|
71
|
+
const headers = this.getHeaders();
|
|
72
|
+
const fetchOptions = Object.keys(headers).length > 0 ? { headers } : {};
|
|
73
|
+
const quote = await (await (0, node_fetch_1.default)(`${this.url}${apiVersionParam}/quote?${params.toString()}`, fetchOptions)).json();
|
|
50
74
|
return quote;
|
|
51
75
|
}
|
|
52
76
|
/**
|
|
@@ -60,14 +84,12 @@ class JupiterClient {
|
|
|
60
84
|
if (!quote) {
|
|
61
85
|
throw new Error('Jupiter swap quote not provided. Please try again.');
|
|
62
86
|
}
|
|
63
|
-
const apiVersionParam = this.url === exports.RECOMMENDED_JUPITER_API
|
|
87
|
+
const apiVersionParam = this.url === exports.RECOMMENDED_JUPITER_API || this.url === exports.LEGACY_JUPITER_API
|
|
64
88
|
? exports.RECOMMENDED_JUPITER_API_VERSION
|
|
65
89
|
: '';
|
|
66
90
|
const resp = await (await (0, node_fetch_1.default)(`${this.url}${apiVersionParam}/swap`, {
|
|
67
91
|
method: 'POST',
|
|
68
|
-
headers:
|
|
69
|
-
'Content-Type': 'application/json',
|
|
70
|
-
},
|
|
92
|
+
headers: this.getHeaders('application/json'),
|
|
71
93
|
body: JSON.stringify({
|
|
72
94
|
quoteResponse: quote,
|
|
73
95
|
userPublicKey,
|
|
@@ -60,6 +60,14 @@ export interface SwapTransactionResult {
|
|
|
60
60
|
export declare class UnifiedSwapClient {
|
|
61
61
|
private client;
|
|
62
62
|
private clientType;
|
|
63
|
+
/**
|
|
64
|
+
* Create a unified swap client
|
|
65
|
+
* @param clientType - 'jupiter' or 'titan'
|
|
66
|
+
* @param connection - Solana connection
|
|
67
|
+
* @param authToken - For Titan: auth token (required when not using proxy). For Jupiter: API key (required for api.jup.ag, get free key at https://portal.jup.ag)
|
|
68
|
+
* @param url - Optional custom URL
|
|
69
|
+
* @param proxyUrl - Optional proxy URL for Titan
|
|
70
|
+
*/
|
|
63
71
|
constructor({ clientType, connection, authToken, url, proxyUrl, }: {
|
|
64
72
|
clientType: SwapClientType;
|
|
65
73
|
connection: Connection;
|
|
@@ -4,12 +4,21 @@ exports.UnifiedSwapClient = void 0;
|
|
|
4
4
|
const jupiterClient_1 = require("../jupiter/jupiterClient");
|
|
5
5
|
const titanClient_1 = require("../titan/titanClient");
|
|
6
6
|
class UnifiedSwapClient {
|
|
7
|
+
/**
|
|
8
|
+
* Create a unified swap client
|
|
9
|
+
* @param clientType - 'jupiter' or 'titan'
|
|
10
|
+
* @param connection - Solana connection
|
|
11
|
+
* @param authToken - For Titan: auth token (required when not using proxy). For Jupiter: API key (required for api.jup.ag, get free key at https://portal.jup.ag)
|
|
12
|
+
* @param url - Optional custom URL
|
|
13
|
+
* @param proxyUrl - Optional proxy URL for Titan
|
|
14
|
+
*/
|
|
7
15
|
constructor({ clientType, connection, authToken, url, proxyUrl, }) {
|
|
8
16
|
this.clientType = clientType;
|
|
9
17
|
if (clientType === 'jupiter') {
|
|
10
18
|
this.client = new jupiterClient_1.JupiterClient({
|
|
11
19
|
connection,
|
|
12
20
|
url,
|
|
21
|
+
apiKey: authToken,
|
|
13
22
|
});
|
|
14
23
|
}
|
|
15
24
|
else if (clientType === 'titan') {
|
|
@@ -209,15 +209,29 @@ export interface QuoteResponse {
|
|
|
209
209
|
errorCode?: string;
|
|
210
210
|
}
|
|
211
211
|
export declare const RECOMMENDED_JUPITER_API_VERSION = "/v1";
|
|
212
|
-
|
|
212
|
+
/** @deprecated Use RECOMMENDED_JUPITER_API instead. lite-api.jup.ag requires migration to api.jup.ag with API key. */
|
|
213
|
+
export declare const LEGACY_JUPITER_API = "https://lite-api.jup.ag/swap";
|
|
214
|
+
export declare const RECOMMENDED_JUPITER_API = "https://api.jup.ag/swap";
|
|
213
215
|
export declare class JupiterClient {
|
|
214
216
|
url: string;
|
|
215
217
|
connection: Connection;
|
|
216
218
|
lookupTableCahce: Map<string, AddressLookupTableAccount>;
|
|
217
|
-
|
|
219
|
+
private apiKey?;
|
|
220
|
+
/**
|
|
221
|
+
* Create a Jupiter client
|
|
222
|
+
* @param connection - Solana connection
|
|
223
|
+
* @param url - Optional custom API URL. Defaults to https://api.jup.ag/swap
|
|
224
|
+
* @param apiKey - API key for Jupiter API. Required for api.jup.ag (free tier available at https://portal.jup.ag)
|
|
225
|
+
*/
|
|
226
|
+
constructor({ connection, url, apiKey, }: {
|
|
218
227
|
connection: Connection;
|
|
219
228
|
url?: string;
|
|
229
|
+
apiKey?: string;
|
|
220
230
|
});
|
|
231
|
+
/**
|
|
232
|
+
* Get the headers for API requests, including API key if configured
|
|
233
|
+
*/
|
|
234
|
+
private getHeaders;
|
|
221
235
|
/**
|
|
222
236
|
* Get routes for a swap
|
|
223
237
|
* @param inputMint the mint of the input token
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jupiterClient.d.ts","sourceRoot":"","sources":["../../../src/jupiter/jupiterClient.ts"],"names":[],"mappings":";AAAA,OAAO,EACN,yBAAyB,EACzB,UAAU,EACV,SAAS,EACT,sBAAsB,EACtB,kBAAkB,EAClB,oBAAoB,EACpB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,EAAE,EAAE,MAAM,mBAAmB,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAErD,MAAM,WAAW,UAAU;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,GAAG,CAAC;IACX,kBAAkB,EAAE,OAAO,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,GAAG,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,GAAG;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;CACZ;AAED,MAAM,WAAW,KAAK;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,UAAU,EAAE,CAAC;IAC1B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,QAAQ,CAAC;CACnB;AAED;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC7B;;;;OAIG;IACH,QAAQ,EAAE,QAAQ,CAAC;IACnB;;;;OAIG;IACH,OAAO,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,QAAQ;IACxB;;;;OAIG;IACH,MAAM,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,UAAU,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,OAAO,EAAE,MAAM,CAAC;CAChB;AAED;;;;GAIG;AACH,MAAM,WAAW,WAAW;IAC3B;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC7B;;;;OAIG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,UAAU,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,oBAAoB,EAAE,MAAM,CAAC;IAC7B;;;;OAIG;IACH,QAAQ,EAAE,QAAQ,CAAC;IACnB;;;;OAIG;IACH,WAAW,EAAE,MAAM,CAAC;IACpB;;;;OAIG;IACH,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B;;;;OAIG;IACH,cAAc,EAAE,MAAM,CAAC;IACvB;;;;OAIG;IACH,SAAS,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC;IAChC;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,eAAO,MAAM,+BAA+B,QAAQ,CAAC;AACrD,eAAO,MAAM,
|
|
1
|
+
{"version":3,"file":"jupiterClient.d.ts","sourceRoot":"","sources":["../../../src/jupiter/jupiterClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,16 +3,38 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.JupiterClient = exports.RECOMMENDED_JUPITER_API = exports.RECOMMENDED_JUPITER_API_VERSION = void 0;
|
|
6
|
+
exports.JupiterClient = exports.RECOMMENDED_JUPITER_API = exports.LEGACY_JUPITER_API = exports.RECOMMENDED_JUPITER_API_VERSION = void 0;
|
|
7
7
|
const web3_js_1 = require("@solana/web3.js");
|
|
8
8
|
const node_fetch_1 = __importDefault(require("node-fetch"));
|
|
9
9
|
exports.RECOMMENDED_JUPITER_API_VERSION = '/v1';
|
|
10
|
-
|
|
10
|
+
/** @deprecated Use RECOMMENDED_JUPITER_API instead. lite-api.jup.ag requires migration to api.jup.ag with API key. */
|
|
11
|
+
exports.LEGACY_JUPITER_API = 'https://lite-api.jup.ag/swap';
|
|
12
|
+
exports.RECOMMENDED_JUPITER_API = 'https://api.jup.ag/swap';
|
|
11
13
|
class JupiterClient {
|
|
12
|
-
|
|
14
|
+
/**
|
|
15
|
+
* Create a Jupiter client
|
|
16
|
+
* @param connection - Solana connection
|
|
17
|
+
* @param url - Optional custom API URL. Defaults to https://api.jup.ag/swap
|
|
18
|
+
* @param apiKey - API key for Jupiter API. Required for api.jup.ag (free tier available at https://portal.jup.ag)
|
|
19
|
+
*/
|
|
20
|
+
constructor({ connection, url, apiKey, }) {
|
|
13
21
|
this.lookupTableCahce = new Map();
|
|
14
22
|
this.connection = connection;
|
|
15
23
|
this.url = url !== null && url !== void 0 ? url : exports.RECOMMENDED_JUPITER_API;
|
|
24
|
+
this.apiKey = apiKey;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Get the headers for API requests, including API key if configured
|
|
28
|
+
*/
|
|
29
|
+
getHeaders(contentType) {
|
|
30
|
+
const headers = {};
|
|
31
|
+
if (contentType) {
|
|
32
|
+
headers['Content-Type'] = contentType;
|
|
33
|
+
}
|
|
34
|
+
if (this.apiKey) {
|
|
35
|
+
headers['x-api-key'] = this.apiKey;
|
|
36
|
+
}
|
|
37
|
+
return headers;
|
|
16
38
|
}
|
|
17
39
|
/**
|
|
18
40
|
* Get routes for a swap
|
|
@@ -43,10 +65,12 @@ class JupiterClient {
|
|
|
43
65
|
if (swapMode === 'ExactOut') {
|
|
44
66
|
params.delete('maxAccounts');
|
|
45
67
|
}
|
|
46
|
-
const apiVersionParam = this.url === exports.RECOMMENDED_JUPITER_API
|
|
68
|
+
const apiVersionParam = this.url === exports.RECOMMENDED_JUPITER_API || this.url === exports.LEGACY_JUPITER_API
|
|
47
69
|
? exports.RECOMMENDED_JUPITER_API_VERSION
|
|
48
70
|
: '';
|
|
49
|
-
const
|
|
71
|
+
const headers = this.getHeaders();
|
|
72
|
+
const fetchOptions = Object.keys(headers).length > 0 ? { headers } : {};
|
|
73
|
+
const quote = await (await (0, node_fetch_1.default)(`${this.url}${apiVersionParam}/quote?${params.toString()}`, fetchOptions)).json();
|
|
50
74
|
return quote;
|
|
51
75
|
}
|
|
52
76
|
/**
|
|
@@ -60,14 +84,12 @@ class JupiterClient {
|
|
|
60
84
|
if (!quote) {
|
|
61
85
|
throw new Error('Jupiter swap quote not provided. Please try again.');
|
|
62
86
|
}
|
|
63
|
-
const apiVersionParam = this.url === exports.RECOMMENDED_JUPITER_API
|
|
87
|
+
const apiVersionParam = this.url === exports.RECOMMENDED_JUPITER_API || this.url === exports.LEGACY_JUPITER_API
|
|
64
88
|
? exports.RECOMMENDED_JUPITER_API_VERSION
|
|
65
89
|
: '';
|
|
66
90
|
const resp = await (await (0, node_fetch_1.default)(`${this.url}${apiVersionParam}/swap`, {
|
|
67
91
|
method: 'POST',
|
|
68
|
-
headers:
|
|
69
|
-
'Content-Type': 'application/json',
|
|
70
|
-
},
|
|
92
|
+
headers: this.getHeaders('application/json'),
|
|
71
93
|
body: JSON.stringify({
|
|
72
94
|
quoteResponse: quote,
|
|
73
95
|
userPublicKey,
|
|
@@ -60,6 +60,14 @@ export interface SwapTransactionResult {
|
|
|
60
60
|
export declare class UnifiedSwapClient {
|
|
61
61
|
private client;
|
|
62
62
|
private clientType;
|
|
63
|
+
/**
|
|
64
|
+
* Create a unified swap client
|
|
65
|
+
* @param clientType - 'jupiter' or 'titan'
|
|
66
|
+
* @param connection - Solana connection
|
|
67
|
+
* @param authToken - For Titan: auth token (required when not using proxy). For Jupiter: API key (required for api.jup.ag, get free key at https://portal.jup.ag)
|
|
68
|
+
* @param url - Optional custom URL
|
|
69
|
+
* @param proxyUrl - Optional proxy URL for Titan
|
|
70
|
+
*/
|
|
63
71
|
constructor({ clientType, connection, authToken, url, proxyUrl, }: {
|
|
64
72
|
clientType: SwapClientType;
|
|
65
73
|
connection: Connection;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UnifiedSwapClient.d.ts","sourceRoot":"","sources":["../../../src/swap/UnifiedSwapClient.ts"],"names":[],"mappings":";AAAA,OAAO,EACN,UAAU,EACV,SAAS,EACT,kBAAkB,EAClB,yBAAyB,EACzB,oBAAoB,EACpB,sBAAsB,EACtB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,EAAE,EAAE,MAAM,mBAAmB,CAAC;AACvC,OAAO,EACN,aAAa,EAEb,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,WAAW,EAA6B,MAAM,sBAAsB,CAAC;AAE9E,MAAM,MAAM,QAAQ,GAAG,SAAS,GAAG,UAAU,CAAC;AAC9C,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG,OAAO,CAAC;AAEjD;;;GAGG;AACH,MAAM,WAAW,oBAAoB;IAEpC,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,QAAQ,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,KAAK,CAAC;QAAE,QAAQ,EAAE,GAAG,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAGrD,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACnD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC/B,SAAS,EAAE,SAAS,CAAC;IACrB,UAAU,EAAE,SAAS,CAAC;IACtB,MAAM,EAAE,EAAE,CAAC;IACX,aAAa,CAAC,EAAE,SAAS,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,qBAAqB;IACrC,KAAK,EAAE,oBAAoB,CAAC;IAC5B,aAAa,EAAE,SAAS,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,qBAAqB;IACrC,WAAW,CAAC,EAAE,oBAAoB,CAAC;IACnC,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;IACxC,YAAY,CAAC,EAAE,yBAAyB,EAAE,CAAC;CAC3C;AAED,qBAAa,iBAAiB;IAC7B,OAAO,CAAC,MAAM,CAA8B;IAC5C,OAAO,CAAC,UAAU,CAAiB;
|
|
1
|
+
{"version":3,"file":"UnifiedSwapClient.d.ts","sourceRoot":"","sources":["../../../src/swap/UnifiedSwapClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,12 +4,21 @@ exports.UnifiedSwapClient = void 0;
|
|
|
4
4
|
const jupiterClient_1 = require("../jupiter/jupiterClient");
|
|
5
5
|
const titanClient_1 = require("../titan/titanClient");
|
|
6
6
|
class UnifiedSwapClient {
|
|
7
|
+
/**
|
|
8
|
+
* Create a unified swap client
|
|
9
|
+
* @param clientType - 'jupiter' or 'titan'
|
|
10
|
+
* @param connection - Solana connection
|
|
11
|
+
* @param authToken - For Titan: auth token (required when not using proxy). For Jupiter: API key (required for api.jup.ag, get free key at https://portal.jup.ag)
|
|
12
|
+
* @param url - Optional custom URL
|
|
13
|
+
* @param proxyUrl - Optional proxy URL for Titan
|
|
14
|
+
*/
|
|
7
15
|
constructor({ clientType, connection, authToken, url, proxyUrl, }) {
|
|
8
16
|
this.clientType = clientType;
|
|
9
17
|
if (clientType === 'jupiter') {
|
|
10
18
|
this.client = new jupiterClient_1.JupiterClient({
|
|
11
19
|
connection,
|
|
12
20
|
url,
|
|
21
|
+
apiKey: authToken,
|
|
13
22
|
});
|
|
14
23
|
}
|
|
15
24
|
else if (clientType === 'titan') {
|
package/package.json
CHANGED
|
@@ -224,16 +224,48 @@ export interface QuoteResponse {
|
|
|
224
224
|
}
|
|
225
225
|
|
|
226
226
|
export const RECOMMENDED_JUPITER_API_VERSION = '/v1';
|
|
227
|
-
|
|
227
|
+
/** @deprecated Use RECOMMENDED_JUPITER_API instead. lite-api.jup.ag requires migration to api.jup.ag with API key. */
|
|
228
|
+
export const LEGACY_JUPITER_API = 'https://lite-api.jup.ag/swap';
|
|
229
|
+
export const RECOMMENDED_JUPITER_API = 'https://api.jup.ag/swap';
|
|
228
230
|
|
|
229
231
|
export class JupiterClient {
|
|
230
232
|
url: string;
|
|
231
233
|
connection: Connection;
|
|
232
234
|
lookupTableCahce = new Map<string, AddressLookupTableAccount>();
|
|
235
|
+
private apiKey?: string;
|
|
233
236
|
|
|
234
|
-
|
|
237
|
+
/**
|
|
238
|
+
* Create a Jupiter client
|
|
239
|
+
* @param connection - Solana connection
|
|
240
|
+
* @param url - Optional custom API URL. Defaults to https://api.jup.ag/swap
|
|
241
|
+
* @param apiKey - API key for Jupiter API. Required for api.jup.ag (free tier available at https://portal.jup.ag)
|
|
242
|
+
*/
|
|
243
|
+
constructor({
|
|
244
|
+
connection,
|
|
245
|
+
url,
|
|
246
|
+
apiKey,
|
|
247
|
+
}: {
|
|
248
|
+
connection: Connection;
|
|
249
|
+
url?: string;
|
|
250
|
+
apiKey?: string;
|
|
251
|
+
}) {
|
|
235
252
|
this.connection = connection;
|
|
236
253
|
this.url = url ?? RECOMMENDED_JUPITER_API;
|
|
254
|
+
this.apiKey = apiKey;
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
/**
|
|
258
|
+
* Get the headers for API requests, including API key if configured
|
|
259
|
+
*/
|
|
260
|
+
private getHeaders(contentType?: string): Record<string, string> {
|
|
261
|
+
const headers: Record<string, string> = {};
|
|
262
|
+
if (contentType) {
|
|
263
|
+
headers['Content-Type'] = contentType;
|
|
264
|
+
}
|
|
265
|
+
if (this.apiKey) {
|
|
266
|
+
headers['x-api-key'] = this.apiKey;
|
|
267
|
+
}
|
|
268
|
+
return headers;
|
|
237
269
|
}
|
|
238
270
|
|
|
239
271
|
/**
|
|
@@ -289,11 +321,17 @@ export class JupiterClient {
|
|
|
289
321
|
params.delete('maxAccounts');
|
|
290
322
|
}
|
|
291
323
|
const apiVersionParam =
|
|
292
|
-
this.url === RECOMMENDED_JUPITER_API
|
|
324
|
+
this.url === RECOMMENDED_JUPITER_API || this.url === LEGACY_JUPITER_API
|
|
293
325
|
? RECOMMENDED_JUPITER_API_VERSION
|
|
294
326
|
: '';
|
|
327
|
+
const headers = this.getHeaders();
|
|
328
|
+
const fetchOptions: RequestInit =
|
|
329
|
+
Object.keys(headers).length > 0 ? { headers } : {};
|
|
295
330
|
const quote = await (
|
|
296
|
-
await fetch(
|
|
331
|
+
await fetch(
|
|
332
|
+
`${this.url}${apiVersionParam}/quote?${params.toString()}`,
|
|
333
|
+
fetchOptions
|
|
334
|
+
)
|
|
297
335
|
).json();
|
|
298
336
|
return quote as QuoteResponse;
|
|
299
337
|
}
|
|
@@ -318,15 +356,13 @@ export class JupiterClient {
|
|
|
318
356
|
}
|
|
319
357
|
|
|
320
358
|
const apiVersionParam =
|
|
321
|
-
this.url === RECOMMENDED_JUPITER_API
|
|
359
|
+
this.url === RECOMMENDED_JUPITER_API || this.url === LEGACY_JUPITER_API
|
|
322
360
|
? RECOMMENDED_JUPITER_API_VERSION
|
|
323
361
|
: '';
|
|
324
362
|
const resp = await (
|
|
325
363
|
await fetch(`${this.url}${apiVersionParam}/swap`, {
|
|
326
364
|
method: 'POST',
|
|
327
|
-
headers:
|
|
328
|
-
'Content-Type': 'application/json',
|
|
329
|
-
},
|
|
365
|
+
headers: this.getHeaders('application/json'),
|
|
330
366
|
body: JSON.stringify({
|
|
331
367
|
quoteResponse: quote,
|
|
332
368
|
userPublicKey,
|
|
@@ -73,6 +73,14 @@ export class UnifiedSwapClient {
|
|
|
73
73
|
private client: JupiterClient | TitanClient;
|
|
74
74
|
private clientType: SwapClientType;
|
|
75
75
|
|
|
76
|
+
/**
|
|
77
|
+
* Create a unified swap client
|
|
78
|
+
* @param clientType - 'jupiter' or 'titan'
|
|
79
|
+
* @param connection - Solana connection
|
|
80
|
+
* @param authToken - For Titan: auth token (required when not using proxy). For Jupiter: API key (required for api.jup.ag, get free key at https://portal.jup.ag)
|
|
81
|
+
* @param url - Optional custom URL
|
|
82
|
+
* @param proxyUrl - Optional proxy URL for Titan
|
|
83
|
+
*/
|
|
76
84
|
constructor({
|
|
77
85
|
clientType,
|
|
78
86
|
connection,
|
|
@@ -82,7 +90,7 @@ export class UnifiedSwapClient {
|
|
|
82
90
|
}: {
|
|
83
91
|
clientType: SwapClientType;
|
|
84
92
|
connection: Connection;
|
|
85
|
-
authToken?: string; //
|
|
93
|
+
authToken?: string; // For Titan: auth token. For Jupiter: API key (required for api.jup.ag)
|
|
86
94
|
url?: string; // Optional custom URL
|
|
87
95
|
proxyUrl?: string; // Optional proxy URL for Titan
|
|
88
96
|
}) {
|
|
@@ -92,6 +100,7 @@ export class UnifiedSwapClient {
|
|
|
92
100
|
this.client = new JupiterClient({
|
|
93
101
|
connection,
|
|
94
102
|
url,
|
|
103
|
+
apiKey: authToken,
|
|
95
104
|
});
|
|
96
105
|
} else if (clientType === 'titan') {
|
|
97
106
|
this.client = new TitanClient({
|