@soroswap/sdk 0.3.7 → 0.4.0-alpha.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 +3 -0
- package/dist/auth/auth-manager.d.ts +51 -0
- package/dist/auth/auth-manager.d.ts.map +1 -0
- package/dist/auth/auth-manager.js +164 -0
- package/dist/auth/auth-manager.js.map +1 -0
- package/dist/cache/token-cache.d.ts +48 -0
- package/dist/cache/token-cache.d.ts.map +1 -0
- package/dist/cache/token-cache.js +88 -0
- package/dist/cache/token-cache.js.map +1 -0
- package/dist/soroswap-sdk.d.ts +4 -2
- package/dist/soroswap-sdk.d.ts.map +1 -1
- package/dist/soroswap-sdk.js +3 -1
- package/dist/soroswap-sdk.js.map +1 -1
- package/dist/types/auth.d.ts +18 -0
- package/dist/types/auth.d.ts.map +1 -0
- package/dist/types/auth.js +3 -0
- package/dist/types/auth.js.map +1 -0
- package/dist/types/send.d.ts +60 -0
- package/dist/types/send.d.ts.map +1 -1
- package/dist/types/send.js +3 -0
- package/dist/types/send.js.map +1 -1
- package/package.json +18 -16
package/README.md
CHANGED
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
# Soroswap SDK
|
|
2
|
+
[](https://deepwiki.com/soroswap/sdk)
|
|
3
|
+
[](https://www.npmjs.com/package/@soroswap/sdk)
|
|
4
|
+
[](https://opensource.org/licenses/MIT)
|
|
2
5
|
|
|
3
6
|
Official TypeScript SDK for [Soroswap.Finance](https://soroswap.finance) - The first DEX and exchange aggregator built on Stellar, powered by smart contracts on Soroban.
|
|
4
7
|
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { HttpClient } from '../clients/http-client';
|
|
2
|
+
import { AuthLoginDto, AuthResponse } from '../types';
|
|
3
|
+
/**
|
|
4
|
+
* Authentication manager handles login, registration, and token refresh
|
|
5
|
+
*/
|
|
6
|
+
export declare class AuthManager {
|
|
7
|
+
private tokenCache;
|
|
8
|
+
private credentials;
|
|
9
|
+
private httpClient;
|
|
10
|
+
constructor(credentials: AuthLoginDto);
|
|
11
|
+
/**
|
|
12
|
+
* Set HTTP client (injected dependency)
|
|
13
|
+
*/
|
|
14
|
+
setHttpClient(httpClient: HttpClient): void;
|
|
15
|
+
/**
|
|
16
|
+
* Get current valid access token, refreshing if necessary
|
|
17
|
+
*/
|
|
18
|
+
getValidAccessToken(): Promise<string>;
|
|
19
|
+
/**
|
|
20
|
+
* Login with credentials
|
|
21
|
+
*/
|
|
22
|
+
login(): Promise<AuthResponse>;
|
|
23
|
+
/**
|
|
24
|
+
* Refresh access token using refresh token
|
|
25
|
+
*/
|
|
26
|
+
refreshTokens(): Promise<AuthResponse>;
|
|
27
|
+
/**
|
|
28
|
+
* Get current user information
|
|
29
|
+
*/
|
|
30
|
+
getUserInfo(): {
|
|
31
|
+
username: string;
|
|
32
|
+
role: string;
|
|
33
|
+
} | null;
|
|
34
|
+
/**
|
|
35
|
+
* Check if user is authenticated
|
|
36
|
+
*/
|
|
37
|
+
isAuthenticated(): boolean;
|
|
38
|
+
/**
|
|
39
|
+
* Logout (clear tokens)
|
|
40
|
+
*/
|
|
41
|
+
logout(): void;
|
|
42
|
+
/**
|
|
43
|
+
* Get token provider function for HTTP client
|
|
44
|
+
*/
|
|
45
|
+
getTokenProvider(): () => Promise<string | null>;
|
|
46
|
+
/**
|
|
47
|
+
* Update credentials (for switching users)
|
|
48
|
+
*/
|
|
49
|
+
updateCredentials(credentials: AuthLoginDto): void;
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=auth-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth-manager.d.ts","sourceRoot":"","sources":["../../src/auth/auth-manager.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EACL,YAAY,EACZ,YAAY,EAEb,MAAM,UAAU,CAAC;AAElB;;GAEG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,WAAW,CAAe;IAClC,OAAO,CAAC,UAAU,CAA2B;gBAEjC,WAAW,EAAE,YAAY;IAKrC;;OAEG;IACH,aAAa,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI;IAI3C;;OAEG;IACG,mBAAmB,IAAI,OAAO,CAAC,MAAM,CAAC;IA6B5C;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,YAAY,CAAC;IAqCpC;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,YAAY,CAAC;IAuC5C;;OAEG;IACH,WAAW,IAAI;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAIxD;;OAEG;IACH,eAAe,IAAI,OAAO;IAI1B;;OAEG;IACH,MAAM,IAAI,IAAI;IAId;;OAEG;IACH,gBAAgB,IAAI,MAAM,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAWhD;;OAEG;IACH,iBAAiB,CAAC,WAAW,EAAE,YAAY,GAAG,IAAI;CAInD"}
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AuthManager = void 0;
|
|
4
|
+
const token_cache_1 = require("../cache/token-cache");
|
|
5
|
+
/**
|
|
6
|
+
* Authentication manager handles login, registration, and token refresh
|
|
7
|
+
*/
|
|
8
|
+
class AuthManager {
|
|
9
|
+
constructor(credentials) {
|
|
10
|
+
this.httpClient = null; // Will be injected
|
|
11
|
+
this.credentials = credentials;
|
|
12
|
+
this.tokenCache = new token_cache_1.TokenCache();
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Set HTTP client (injected dependency)
|
|
16
|
+
*/
|
|
17
|
+
setHttpClient(httpClient) {
|
|
18
|
+
this.httpClient = httpClient;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Get current valid access token, refreshing if necessary
|
|
22
|
+
*/
|
|
23
|
+
async getValidAccessToken() {
|
|
24
|
+
// Check if we have valid tokens
|
|
25
|
+
if (this.tokenCache.hasValidTokens()) {
|
|
26
|
+
return this.tokenCache.getAccessToken();
|
|
27
|
+
}
|
|
28
|
+
// Check if we need to refresh
|
|
29
|
+
if (this.tokenCache.needsRefresh() && this.tokenCache.getRefreshToken()) {
|
|
30
|
+
try {
|
|
31
|
+
await this.refreshTokens();
|
|
32
|
+
const token = this.tokenCache.getAccessToken();
|
|
33
|
+
if (token) {
|
|
34
|
+
return token;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
catch (error) {
|
|
38
|
+
console.log("🚀 | getValidAccessToken | error:", error);
|
|
39
|
+
// Token refresh failed, attempting new login
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
// Login fresh
|
|
43
|
+
await this.login();
|
|
44
|
+
const token = this.tokenCache.getAccessToken();
|
|
45
|
+
if (!token) {
|
|
46
|
+
throw new Error('Failed to obtain access token after login');
|
|
47
|
+
}
|
|
48
|
+
return token;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Login with credentials
|
|
52
|
+
*/
|
|
53
|
+
async login() {
|
|
54
|
+
if (!this.httpClient) {
|
|
55
|
+
throw new Error('HTTP client not initialized');
|
|
56
|
+
}
|
|
57
|
+
try {
|
|
58
|
+
const response = await this.httpClient.post('/login', this.credentials);
|
|
59
|
+
//TODO: Get expiration from jwt
|
|
60
|
+
// {
|
|
61
|
+
// "sub": 1,
|
|
62
|
+
// "email": "dev@paltalabs.io",
|
|
63
|
+
// "role": "ADMIN",
|
|
64
|
+
// "iat": 1751307940,
|
|
65
|
+
// "exp": 1751308840
|
|
66
|
+
// }
|
|
67
|
+
// Calculate expiration time (assume 1 hour if not provided)
|
|
68
|
+
const expiresIn = 60 * 60 * 1000; // 1 hour in milliseconds
|
|
69
|
+
const expiresAt = Date.now() + expiresIn;
|
|
70
|
+
// Store tokens in cache
|
|
71
|
+
const tokenData = {
|
|
72
|
+
access_token: response.access_token,
|
|
73
|
+
refresh_token: response.refresh_token,
|
|
74
|
+
expires_at: expiresAt,
|
|
75
|
+
username: response.username,
|
|
76
|
+
role: response.role,
|
|
77
|
+
};
|
|
78
|
+
this.tokenCache.setTokens(tokenData);
|
|
79
|
+
return response;
|
|
80
|
+
}
|
|
81
|
+
catch (error) {
|
|
82
|
+
this.tokenCache.clear();
|
|
83
|
+
throw error;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Refresh access token using refresh token
|
|
88
|
+
*/
|
|
89
|
+
async refreshTokens() {
|
|
90
|
+
if (!this.httpClient) {
|
|
91
|
+
throw new Error('HTTP client not initialized');
|
|
92
|
+
}
|
|
93
|
+
const refreshToken = this.tokenCache.getRefreshToken();
|
|
94
|
+
if (!refreshToken) {
|
|
95
|
+
throw new Error('No refresh token available');
|
|
96
|
+
}
|
|
97
|
+
try {
|
|
98
|
+
// Use refresh token as bearer token
|
|
99
|
+
const response = await this.httpClient.post('/refresh', {}, {
|
|
100
|
+
headers: {
|
|
101
|
+
Authorization: `Bearer ${refreshToken}`
|
|
102
|
+
}
|
|
103
|
+
});
|
|
104
|
+
// Calculate expiration time
|
|
105
|
+
const expiresIn = 60 * 60 * 1000; // 1 hour in milliseconds
|
|
106
|
+
const expiresAt = Date.now() + expiresIn;
|
|
107
|
+
// Update tokens in cache
|
|
108
|
+
const tokenData = {
|
|
109
|
+
access_token: response.access_token,
|
|
110
|
+
refresh_token: response.refresh_token,
|
|
111
|
+
expires_at: expiresAt,
|
|
112
|
+
username: response.username,
|
|
113
|
+
role: response.role,
|
|
114
|
+
};
|
|
115
|
+
this.tokenCache.setTokens(tokenData);
|
|
116
|
+
return response;
|
|
117
|
+
}
|
|
118
|
+
catch (error) {
|
|
119
|
+
this.tokenCache.clear();
|
|
120
|
+
throw error;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Get current user information
|
|
125
|
+
*/
|
|
126
|
+
getUserInfo() {
|
|
127
|
+
return this.tokenCache.getUserInfo();
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Check if user is authenticated
|
|
131
|
+
*/
|
|
132
|
+
isAuthenticated() {
|
|
133
|
+
return this.tokenCache.hasValidTokens();
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Logout (clear tokens)
|
|
137
|
+
*/
|
|
138
|
+
logout() {
|
|
139
|
+
this.tokenCache.clear();
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Get token provider function for HTTP client
|
|
143
|
+
*/
|
|
144
|
+
getTokenProvider() {
|
|
145
|
+
return async () => {
|
|
146
|
+
try {
|
|
147
|
+
return await this.getValidAccessToken();
|
|
148
|
+
}
|
|
149
|
+
catch (error) {
|
|
150
|
+
console.log("🚀 | return | error:", error);
|
|
151
|
+
return null;
|
|
152
|
+
}
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Update credentials (for switching users)
|
|
157
|
+
*/
|
|
158
|
+
updateCredentials(credentials) {
|
|
159
|
+
this.credentials = credentials;
|
|
160
|
+
this.tokenCache.clear(); // Clear existing tokens
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
exports.AuthManager = AuthManager;
|
|
164
|
+
//# sourceMappingURL=auth-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth-manager.js","sourceRoot":"","sources":["../../src/auth/auth-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { JWTData } from '../types';
|
|
2
|
+
/**
|
|
3
|
+
* In-memory token cache with automatic expiration handling
|
|
4
|
+
* Stores access and refresh tokens with timestamps
|
|
5
|
+
*/
|
|
6
|
+
export declare class TokenCache {
|
|
7
|
+
private tokenData;
|
|
8
|
+
/**
|
|
9
|
+
* Store token data in cache
|
|
10
|
+
*/
|
|
11
|
+
setTokens(tokenData: JWTData): void;
|
|
12
|
+
/**
|
|
13
|
+
* Get current access token if valid
|
|
14
|
+
*/
|
|
15
|
+
getAccessToken(): string | null;
|
|
16
|
+
/**
|
|
17
|
+
* Get refresh token
|
|
18
|
+
*/
|
|
19
|
+
getRefreshToken(): string | null;
|
|
20
|
+
/**
|
|
21
|
+
* Get user information
|
|
22
|
+
*/
|
|
23
|
+
getUserInfo(): {
|
|
24
|
+
username: string;
|
|
25
|
+
role: string;
|
|
26
|
+
} | null;
|
|
27
|
+
/**
|
|
28
|
+
* Check if we have valid tokens
|
|
29
|
+
*/
|
|
30
|
+
hasValidTokens(): boolean;
|
|
31
|
+
/**
|
|
32
|
+
* Check if we need to refresh tokens
|
|
33
|
+
*/
|
|
34
|
+
needsRefresh(): boolean;
|
|
35
|
+
/**
|
|
36
|
+
* Clear all cached tokens
|
|
37
|
+
*/
|
|
38
|
+
clear(): void;
|
|
39
|
+
/**
|
|
40
|
+
* Get token expiration time
|
|
41
|
+
*/
|
|
42
|
+
getExpirationTime(): number | null;
|
|
43
|
+
/**
|
|
44
|
+
* Check if tokens exist (regardless of expiration)
|
|
45
|
+
*/
|
|
46
|
+
hasTokens(): boolean;
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=token-cache.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token-cache.d.ts","sourceRoot":"","sources":["../../src/cache/token-cache.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAEnC;;;GAGG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,SAAS,CAAwB;IAEzC;;OAEG;IACH,SAAS,CAAC,SAAS,EAAE,OAAO,GAAG,IAAI;IAInC;;OAEG;IACH,cAAc,IAAI,MAAM,GAAG,IAAI;IAgB/B;;OAEG;IACH,eAAe,IAAI,MAAM,GAAG,IAAI;IAIhC;;OAEG;IACH,WAAW,IAAI;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAWxD;;OAEG;IACH,cAAc,IAAI,OAAO;IAIzB;;OAEG;IACH,YAAY,IAAI,OAAO;IAWvB;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;OAEG;IACH,iBAAiB,IAAI,MAAM,GAAG,IAAI;IAIlC;;OAEG;IACH,SAAS,IAAI,OAAO;CAGrB"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TokenCache = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* In-memory token cache with automatic expiration handling
|
|
6
|
+
* Stores access and refresh tokens with timestamps
|
|
7
|
+
*/
|
|
8
|
+
class TokenCache {
|
|
9
|
+
constructor() {
|
|
10
|
+
this.tokenData = null;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Store token data in cache
|
|
14
|
+
*/
|
|
15
|
+
setTokens(tokenData) {
|
|
16
|
+
this.tokenData = tokenData;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Get current access token if valid
|
|
20
|
+
*/
|
|
21
|
+
getAccessToken() {
|
|
22
|
+
if (!this.tokenData) {
|
|
23
|
+
return null;
|
|
24
|
+
}
|
|
25
|
+
// Check if token is expired (with 5 minute buffer)
|
|
26
|
+
const bufferTime = 5 * 60 * 1000; // 5 minutes in milliseconds
|
|
27
|
+
const now = Date.now();
|
|
28
|
+
if (this.tokenData.expires_at && (this.tokenData.expires_at - bufferTime) <= now) {
|
|
29
|
+
return null; // Token is expired or about to expire
|
|
30
|
+
}
|
|
31
|
+
return this.tokenData.access_token;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Get refresh token
|
|
35
|
+
*/
|
|
36
|
+
getRefreshToken() {
|
|
37
|
+
return this.tokenData?.refresh_token || null;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Get user information
|
|
41
|
+
*/
|
|
42
|
+
getUserInfo() {
|
|
43
|
+
if (!this.tokenData) {
|
|
44
|
+
return null;
|
|
45
|
+
}
|
|
46
|
+
return {
|
|
47
|
+
username: this.tokenData.username,
|
|
48
|
+
role: this.tokenData.role
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Check if we have valid tokens
|
|
53
|
+
*/
|
|
54
|
+
hasValidTokens() {
|
|
55
|
+
return this.getAccessToken() !== null;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Check if we need to refresh tokens
|
|
59
|
+
*/
|
|
60
|
+
needsRefresh() {
|
|
61
|
+
if (!this.tokenData) {
|
|
62
|
+
return false;
|
|
63
|
+
}
|
|
64
|
+
const bufferTime = 5 * 60 * 1000; // 5 minutes buffer
|
|
65
|
+
const now = Date.now();
|
|
66
|
+
return !!(this.tokenData.expires_at && (this.tokenData.expires_at - bufferTime) <= now);
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Clear all cached tokens
|
|
70
|
+
*/
|
|
71
|
+
clear() {
|
|
72
|
+
this.tokenData = null;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Get token expiration time
|
|
76
|
+
*/
|
|
77
|
+
getExpirationTime() {
|
|
78
|
+
return this.tokenData?.expires_at || null;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Check if tokens exist (regardless of expiration)
|
|
82
|
+
*/
|
|
83
|
+
hasTokens() {
|
|
84
|
+
return this.tokenData !== null;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
exports.TokenCache = TokenCache;
|
|
88
|
+
//# sourceMappingURL=token-cache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token-cache.js","sourceRoot":"","sources":["../../src/cache/token-cache.ts"],"names":[],"mappings":";;;AAEA;;;GAGG;AACH,MAAa,UAAU;IAAvB;QACU,cAAS,GAAmB,IAAI,CAAC;IA0F3C,CAAC;IAxFC;;OAEG;IACH,SAAS,CAAC,SAAkB;QAC1B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;IAED;;OAEG;IACH,cAAc;QACZ,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,mDAAmD;QACnD,MAAM,UAAU,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,4BAA4B;QAC9D,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAEvB,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,GAAG,UAAU,CAAC,IAAI,GAAG,EAAE,CAAC;YACjF,OAAO,IAAI,CAAC,CAAC,sCAAsC;QACrD,CAAC;QAED,OAAO,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC;IACrC,CAAC;IAED;;OAEG;IACH,eAAe;QACb,OAAO,IAAI,CAAC,SAAS,EAAE,aAAa,IAAI,IAAI,CAAC;IAC/C,CAAC;IAED;;OAEG;IACH,WAAW;QACT,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO;YACL,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ;YACjC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI;SAC1B,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,cAAc;QACZ,OAAO,IAAI,CAAC,cAAc,EAAE,KAAK,IAAI,CAAC;IACxC,CAAC;IAED;;OAEG;IACH,YAAY;QACV,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,UAAU,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,mBAAmB;QACrD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAEvB,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,GAAG,UAAU,CAAC,IAAI,GAAG,CAAC,CAAC;IAC1F,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;IACxB,CAAC;IAED;;OAEG;IACH,iBAAiB;QACf,OAAO,IAAI,CAAC,SAAS,EAAE,UAAU,IAAI,IAAI,CAAC;IAC5C,CAAC;IAED;;OAEG;IACH,SAAS;QACP,OAAO,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC;IACjC,CAAC;CACF;AA3FD,gCA2FC"}
|
package/dist/soroswap-sdk.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { AddLiquidityRequest, AssetList, AssetListInfo, BuildQuoteRequest, BuildQuoteResponse, LiquidityResponse, Pool, PriceData, QuoteRequest, QuoteResponse, RemoveLiquidityRequest, SoroswapSDKConfig, SupportedAssetLists, SupportedNetworks, UserPositionResponse } from './types';
|
|
2
|
+
import { SendTransactionResponse } from './types/send';
|
|
2
3
|
/**
|
|
3
4
|
* Main Soroswap SDK class
|
|
4
5
|
* Provides access to all Soroswap API functionality with API key authentication
|
|
@@ -31,8 +32,9 @@ export declare class SoroswapSDK {
|
|
|
31
32
|
build(buildQuoteRequest: BuildQuoteRequest, network?: SupportedNetworks): Promise<BuildQuoteResponse>;
|
|
32
33
|
/**
|
|
33
34
|
* Send signed transaction
|
|
35
|
+
* @returns Normalized transaction response with parsed result
|
|
34
36
|
*/
|
|
35
|
-
send(xdr: string, launchtube?: boolean, network?: SupportedNetworks): Promise<
|
|
37
|
+
send(xdr: string, launchtube?: boolean, network?: SupportedNetworks): Promise<SendTransactionResponse>;
|
|
36
38
|
/**
|
|
37
39
|
* Get pools for specific protocols
|
|
38
40
|
*/
|
|
@@ -56,7 +58,7 @@ export declare class SoroswapSDK {
|
|
|
56
58
|
/**
|
|
57
59
|
* Get asset lists metadata or specific asset list
|
|
58
60
|
*/
|
|
59
|
-
getAssetList(name?: SupportedAssetLists): Promise<AssetList
|
|
61
|
+
getAssetList(name?: SupportedAssetLists): Promise<AssetList | AssetListInfo[]>;
|
|
60
62
|
/**
|
|
61
63
|
* Get asset prices
|
|
62
64
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"soroswap-sdk.d.ts","sourceRoot":"","sources":["../src/soroswap-sdk.ts"],"names":[],"mappings":"AACA,OAAO,EACL,mBAAmB,EACnB,SAAS,EACT,aAAa,EACb,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EACjB,IAAI,EACJ,SAAS,EACT,YAAY,EACZ,aAAa,EACb,sBAAsB,EACtB,iBAAiB,EACjB,mBAAmB,EACnB,iBAAiB,EACjB,oBAAoB,EACrB,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"soroswap-sdk.d.ts","sourceRoot":"","sources":["../src/soroswap-sdk.ts"],"names":[],"mappings":"AACA,OAAO,EACL,mBAAmB,EACnB,SAAS,EACT,aAAa,EACb,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EACjB,IAAI,EACJ,SAAS,EACT,YAAY,EACZ,aAAa,EACb,sBAAsB,EACtB,iBAAiB,EACjB,mBAAmB,EACnB,iBAAiB,EACjB,oBAAoB,EACrB,MAAM,SAAS,CAAC;AACjB,OAAO,EAAe,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAEpE;;;GAGG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,cAAc,CAAoB;gBAE9B,MAAM,EAAE,iBAAiB;IAcrC;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAqC1B;;OAEG;IACG,kBAAkB,CACtB,OAAO,EAAE,iBAAiB,EAC1B,YAAY,EAAE,SAAS,GAAG,QAAQ,GAAG,YAAY,GAChD,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAC,CAAC;IAQ7B;;OAEG;IACG,YAAY,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAMlE;;OAEG;IACG,KAAK,CAAC,YAAY,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,aAAa,CAAC;IAa5F;;OAEG;IACG,KAAK,CAAC,iBAAiB,EAAE,iBAAiB,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAM3G;;;OAGG;IACG,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,GAAE,OAAe,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAYnH;;OAEG;IACG,QAAQ,CACZ,OAAO,EAAE,iBAAiB,EAC1B,SAAS,EAAE,MAAM,EAAE,EACnB,SAAS,CAAC,EAAE,CAAC,mBAAmB,GAAG,MAAM,CAAC,EAAE,GAC3C,OAAO,CAAC,IAAI,EAAE,CAAC;IAclB;;OAEG;IACG,eAAe,CACnB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,iBAAiB,EAC1B,SAAS,EAAE,MAAM,EAAE,GAClB,OAAO,CAAC,IAAI,EAAE,CAAC;IAclB;;OAEG;IACG,YAAY,CAChB,aAAa,EAAE,mBAAmB,EAClC,OAAO,CAAC,EAAE,iBAAiB,GAC1B,OAAO,CAAC,iBAAiB,CAAC;IAM7B;;OAEG;IACG,eAAe,CACnB,aAAa,EAAE,sBAAsB,EACrC,OAAO,CAAC,EAAE,iBAAiB,GAC1B,OAAO,CAAC,iBAAiB,CAAC;IAM7B;;OAEG;IACG,gBAAgB,CACpB,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,iBAAiB,GAC1B,OAAO,CAAC,oBAAoB,EAAE,CAAC;IAUlC;;OAEG;IACG,YAAY,CAAC,IAAI,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,SAAS,GAAG,aAAa,EAAE,CAAC;IAYpF;;OAEG;IACG,QAAQ,CACZ,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,EACzB,OAAO,CAAC,EAAE,iBAAiB,GAC1B,OAAO,CAAC,SAAS,EAAE,CAAC;CASxB"}
|
package/dist/soroswap-sdk.js
CHANGED
|
@@ -94,6 +94,7 @@ class SoroswapSDK {
|
|
|
94
94
|
}
|
|
95
95
|
/**
|
|
96
96
|
* Send signed transaction
|
|
97
|
+
* @returns Normalized transaction response with parsed result
|
|
97
98
|
*/
|
|
98
99
|
async send(xdr, launchtube = false, network) {
|
|
99
100
|
const params = { network: network || this.defaultNetwork };
|
|
@@ -163,7 +164,8 @@ class SoroswapSDK {
|
|
|
163
164
|
* Get asset lists metadata or specific asset list
|
|
164
165
|
*/
|
|
165
166
|
async getAssetList(name) {
|
|
166
|
-
const
|
|
167
|
+
const listName = name ? this.transformAssetList([name])[0] : undefined;
|
|
168
|
+
const params = name ? { name: listName } : {};
|
|
167
169
|
const url = this.httpClient.buildUrlWithQuery('/asset-list', params);
|
|
168
170
|
if (name) {
|
|
169
171
|
return this.httpClient.get(url);
|
package/dist/soroswap-sdk.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"soroswap-sdk.js","sourceRoot":"","sources":["../src/soroswap-sdk.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"soroswap-sdk.js","sourceRoot":"","sources":["../src/soroswap-sdk.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export interface AuthLoginDto {
|
|
2
|
+
email: string;
|
|
3
|
+
password: string;
|
|
4
|
+
}
|
|
5
|
+
export interface AuthResponse {
|
|
6
|
+
username: string;
|
|
7
|
+
role: string;
|
|
8
|
+
access_token: string;
|
|
9
|
+
refresh_token: string;
|
|
10
|
+
}
|
|
11
|
+
export interface JWTData {
|
|
12
|
+
access_token: string;
|
|
13
|
+
refresh_token: string;
|
|
14
|
+
expires_at: number;
|
|
15
|
+
username: string;
|
|
16
|
+
role: string;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=auth.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/types/auth.ts"],"names":[],"mappings":"AACA,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,OAAO;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CACd"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/types/auth.ts"],"names":[],"mappings":""}
|
package/dist/types/send.d.ts
CHANGED
|
@@ -2,4 +2,64 @@ export interface SendRequest {
|
|
|
2
2
|
xdr: string;
|
|
3
3
|
launchtube?: boolean;
|
|
4
4
|
}
|
|
5
|
+
/** Result for swap transactions (Router/Aggregator/SDEX) */
|
|
6
|
+
export interface SwapResult {
|
|
7
|
+
type: 'swap';
|
|
8
|
+
/** Amount sent by the user (in stroops/smallest unit) */
|
|
9
|
+
amountIn: string;
|
|
10
|
+
/** Final amount received by the user (in stroops/smallest unit) */
|
|
11
|
+
amountOut: string;
|
|
12
|
+
/** Intermediate amounts for multi-hop swaps */
|
|
13
|
+
intermediateAmounts?: string[];
|
|
14
|
+
}
|
|
15
|
+
/** Result for transactions we don't have specific parsing for yet */
|
|
16
|
+
export interface UnknownResult {
|
|
17
|
+
type: 'unknown';
|
|
18
|
+
/** The parsed native value from scValToNative() - structure varies by transaction type */
|
|
19
|
+
value: unknown;
|
|
20
|
+
}
|
|
21
|
+
/** Result for add liquidity transactions */
|
|
22
|
+
export interface AddLiquidityResult {
|
|
23
|
+
type: 'add_liquidity';
|
|
24
|
+
/** Amount of token A deposited (in stroops/smallest unit) */
|
|
25
|
+
amountA: string;
|
|
26
|
+
/** Amount of token B deposited (in stroops/smallest unit) */
|
|
27
|
+
amountB: string;
|
|
28
|
+
/** LP tokens/shares received */
|
|
29
|
+
shares: string;
|
|
30
|
+
}
|
|
31
|
+
/** Result for remove liquidity transactions */
|
|
32
|
+
export interface RemoveLiquidityResult {
|
|
33
|
+
type: 'remove_liquidity';
|
|
34
|
+
/** Amount of token A received (in stroops/smallest unit) */
|
|
35
|
+
amountA: string;
|
|
36
|
+
/** Amount of token B received (in stroops/smallest unit) */
|
|
37
|
+
amountB: string;
|
|
38
|
+
}
|
|
39
|
+
/** Union of all possible transaction result types */
|
|
40
|
+
export type TransactionResult = SwapResult | AddLiquidityResult | RemoveLiquidityResult | UnknownResult;
|
|
41
|
+
export interface SendTransactionResponse {
|
|
42
|
+
/** Transaction hash (normalized from all sources) */
|
|
43
|
+
txHash: string;
|
|
44
|
+
/** Whether the transaction succeeded */
|
|
45
|
+
success: boolean;
|
|
46
|
+
/** Parsed result - discriminated union based on transaction type */
|
|
47
|
+
result: TransactionResult | null;
|
|
48
|
+
/** Ledger the transaction was included in */
|
|
49
|
+
ledger: number;
|
|
50
|
+
/** When the transaction was created (ISO 8601 string) */
|
|
51
|
+
createdAt: string;
|
|
52
|
+
/** Latest ledger at response time */
|
|
53
|
+
latestLedger: number;
|
|
54
|
+
/** Latest ledger close time */
|
|
55
|
+
latestLedgerCloseTime: string;
|
|
56
|
+
/** Whether this was a fee bump transaction */
|
|
57
|
+
feeBump: boolean;
|
|
58
|
+
/** Fee charged in stroops */
|
|
59
|
+
feeCharged: string;
|
|
60
|
+
/** Which protocol/contract executed the transaction */
|
|
61
|
+
protocol: 'router' | 'aggregator' | 'sdex' | 'unknown';
|
|
62
|
+
/** Transaction submission method */
|
|
63
|
+
submissionMethod: 'soroban' | 'horizon' | 'launchtube';
|
|
64
|
+
}
|
|
5
65
|
//# sourceMappingURL=send.d.ts.map
|
package/dist/types/send.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"send.d.ts","sourceRoot":"","sources":["../../src/types/send.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"send.d.ts","sourceRoot":"","sources":["../../src/types/send.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAMD,4DAA4D;AAC5D,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,yDAAyD;IACzD,QAAQ,EAAE,MAAM,CAAC;IACjB,mEAAmE;IACnE,SAAS,EAAE,MAAM,CAAC;IAClB,+CAA+C;IAC/C,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;CAChC;AAED,qEAAqE;AACrE,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,SAAS,CAAC;IAChB,0FAA0F;IAC1F,KAAK,EAAE,OAAO,CAAC;CAChB;AAED,4CAA4C;AAC5C,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,eAAe,CAAC;IACtB,6DAA6D;IAC7D,OAAO,EAAE,MAAM,CAAC;IAChB,6DAA6D;IAC7D,OAAO,EAAE,MAAM,CAAC;IAChB,gCAAgC;IAChC,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,+CAA+C;AAC/C,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,kBAAkB,CAAC;IACzB,4DAA4D;IAC5D,OAAO,EAAE,MAAM,CAAC;IAChB,4DAA4D;IAC5D,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,qDAAqD;AACrD,MAAM,MAAM,iBAAiB,GACzB,UAAU,GACV,kBAAkB,GAClB,qBAAqB,GACrB,aAAa,CAAC;AAMlB,MAAM,WAAW,uBAAuB;IACtC,qDAAqD;IACrD,MAAM,EAAE,MAAM,CAAC;IAEf,wCAAwC;IACxC,OAAO,EAAE,OAAO,CAAC;IAEjB,oEAAoE;IACpE,MAAM,EAAE,iBAAiB,GAAG,IAAI,CAAC;IAEjC,6CAA6C;IAC7C,MAAM,EAAE,MAAM,CAAC;IAEf,yDAAyD;IACzD,SAAS,EAAE,MAAM,CAAC;IAElB,qCAAqC;IACrC,YAAY,EAAE,MAAM,CAAC;IAErB,+BAA+B;IAC/B,qBAAqB,EAAE,MAAM,CAAC;IAE9B,8CAA8C;IAC9C,OAAO,EAAE,OAAO,CAAC;IAEjB,6BAA6B;IAC7B,UAAU,EAAE,MAAM,CAAC;IAEnB,uDAAuD;IACvD,QAAQ,EAAE,QAAQ,GAAG,YAAY,GAAG,MAAM,GAAG,SAAS,CAAC;IAEvD,oCAAoC;IACpC,gBAAgB,EAAE,SAAS,GAAG,SAAS,GAAG,YAAY,CAAC;CACxD"}
|
package/dist/types/send.js
CHANGED
package/dist/types/send.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"send.js","sourceRoot":"","sources":["../../src/types/send.ts"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"send.js","sourceRoot":"","sources":["../../src/types/send.ts"],"names":[],"mappings":";AAAA,+CAA+C;AAC/C,gBAAgB;AAChB,+CAA+C"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@soroswap/sdk",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0-alpha.0",
|
|
4
4
|
"description": "Official TypeScript SDK for Soroswap.Finance API - DEX and exchange aggregator on Stellar",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -9,6 +9,21 @@
|
|
|
9
9
|
"README.md",
|
|
10
10
|
"LICENSE"
|
|
11
11
|
],
|
|
12
|
+
"scripts": {
|
|
13
|
+
"build": "tsc",
|
|
14
|
+
"build:watch": "tsc --watch",
|
|
15
|
+
"test": "jest",
|
|
16
|
+
"test:unit": "jest",
|
|
17
|
+
"test:integration": "jest --config=jest.integration.config.js",
|
|
18
|
+
"test:all": "pnpm run test:unit && pnpm run test:integration",
|
|
19
|
+
"test:watch": "jest --watch",
|
|
20
|
+
"test:coverage": "jest --coverage",
|
|
21
|
+
"lint": "eslint src/**/*.ts",
|
|
22
|
+
"lint:fix": "eslint src/**/*.ts --fix",
|
|
23
|
+
"prepare": "pnpm run build",
|
|
24
|
+
"prepublishOnly": "pnpm test && pnpm run lint",
|
|
25
|
+
"clean": "rimraf dist"
|
|
26
|
+
},
|
|
12
27
|
"keywords": [
|
|
13
28
|
"soroswap",
|
|
14
29
|
"stellar",
|
|
@@ -50,19 +65,6 @@
|
|
|
50
65
|
"axios": "^1.10.0"
|
|
51
66
|
},
|
|
52
67
|
"engines": {
|
|
53
|
-
"node": ">=
|
|
54
|
-
},
|
|
55
|
-
"scripts": {
|
|
56
|
-
"build": "tsc",
|
|
57
|
-
"build:watch": "tsc --watch",
|
|
58
|
-
"test": "jest",
|
|
59
|
-
"test:unit": "jest",
|
|
60
|
-
"test:integration": "jest --config=jest.integration.config.js",
|
|
61
|
-
"test:all": "pnpm run test:unit && pnpm run test:integration",
|
|
62
|
-
"test:watch": "jest --watch",
|
|
63
|
-
"test:coverage": "jest --coverage",
|
|
64
|
-
"lint": "eslint src/**/*.ts",
|
|
65
|
-
"lint:fix": "eslint src/**/*.ts --fix",
|
|
66
|
-
"clean": "rimraf dist"
|
|
68
|
+
"node": ">=22.0.0"
|
|
67
69
|
}
|
|
68
|
-
}
|
|
70
|
+
}
|