@gala-chain/launchpad-sdk 3.12.8 → 3.13.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/CHANGELOG.md +21 -0
- package/README.md +154 -9
- package/dist/LaunchpadSDK.d.ts +39 -0
- package/dist/LaunchpadSDK.d.ts.map +1 -1
- package/dist/constants/version.generated.d.ts +1 -1
- package/dist/index.cjs.js +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.esm.js +1 -1
- package/dist/index.js +1 -1
- package/dist/schemas/user.d.ts +0 -40
- package/dist/schemas/user.d.ts.map +1 -1
- package/dist/schemas/validators.d.ts +0 -6
- package/dist/schemas/validators.d.ts.map +1 -1
- package/dist/services/PriceHistoryService.d.ts +143 -0
- package/dist/services/PriceHistoryService.d.ts.map +1 -0
- package/dist/types/common.d.ts +2 -0
- package/dist/types/common.d.ts.map +1 -1
- package/dist/types/priceHistory.dto.d.ts +109 -0
- package/dist/types/priceHistory.dto.d.ts.map +1 -0
- package/dist/types/user.dto.d.ts +1 -3
- package/dist/types/user.dto.d.ts.map +1 -1
- package/package.json +8 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,26 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 3.13.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 9dc16fd: feat: add PriceHistoryService with flexible tokenId support and fix
|
|
8
|
+
FetchTokenBalanceOptions ghost parameter
|
|
9
|
+
- **NEW**: Added `PriceHistoryService` for querying historical token price data from MySQL
|
|
10
|
+
database with comprehensive pagination, date filtering, and sorting support
|
|
11
|
+
- **NEW**: Added `fetchPriceHistory()` method to LaunchpadSDK with flexible `tokenId` parameter
|
|
12
|
+
accepting string, TokenClassKey, or TokenInstanceKey formats
|
|
13
|
+
- **NEW**: Added `PriceSnapshot` and `PriceHistoryResult` types for price history operations
|
|
14
|
+
- **FIXED**: Removed unused `tokenClassKey` ghost parameter from `FetchTokenBalanceOptions` to
|
|
15
|
+
improve API consistency
|
|
16
|
+
- **IMPROVED**: All price history operations include read-only database protection and SQL
|
|
17
|
+
injection prevention
|
|
18
|
+
- **TESTED**: Added comprehensive unit tests (25+ test cases) and integration tests (21+ test
|
|
19
|
+
cases) with production database verification
|
|
20
|
+
|
|
21
|
+
This change aligns `fetchPriceHistory` with other SDK methods by using the flexible `tokenId`
|
|
22
|
+
pattern for consistent token identification across all SDK operations.
|
|
23
|
+
|
|
3
24
|
## 3.12.8
|
|
4
25
|
|
|
5
26
|
### Patch Changes
|
package/README.md
CHANGED
|
@@ -64,6 +64,7 @@ console.log(pools.hasNext); // Computed convenience properties
|
|
|
64
64
|
- **Token Transfers**: Transfer GALA and launchpad tokens between wallets with EIP-712 signatures
|
|
65
65
|
- **User Operations**: Portfolio management, token balances, and account management
|
|
66
66
|
- **Comment System**: Post and retrieve comments on token pools
|
|
67
|
+
- **Price History**: Fetch historical price data for DEX tokens with pagination (Node.js only, requires MySQL)
|
|
67
68
|
- **Comprehensive Validation**: Input validation and error handling for all operations
|
|
68
69
|
- **Multi-Environment Support**: Production, staging, and custom backend URLs
|
|
69
70
|
|
|
@@ -1336,18 +1337,161 @@ console.log(`SDK fetches up to ${MAX_CONCURRENT_POOL_FETCHES} pages concurrently
|
|
|
1336
1337
|
|
|
1337
1338
|
```typescript
|
|
1338
1339
|
interface LaunchpadSDKConfig {
|
|
1339
|
-
wallet: Wallet;
|
|
1340
|
-
baseUrl?: string;
|
|
1341
|
-
galaChainBaseUrl?: string;
|
|
1342
|
-
bundleBaseUrl?: string;
|
|
1343
|
-
webSocketUrl?: string;
|
|
1344
|
-
timeout?: number;
|
|
1345
|
-
debug?: boolean;
|
|
1346
|
-
maxRetries?: number;
|
|
1347
|
-
retryDelay?: number;
|
|
1340
|
+
wallet: Wallet; // ethers.js Wallet instance
|
|
1341
|
+
baseUrl?: string; // Backend URL (default: dev environment)
|
|
1342
|
+
galaChainBaseUrl?: string; // GalaChain gateway URL
|
|
1343
|
+
bundleBaseUrl?: string; // Bundle service URL
|
|
1344
|
+
webSocketUrl?: string; // WebSocket URL for monitoring
|
|
1345
|
+
timeout?: number; // Request timeout (default: 30000ms)
|
|
1346
|
+
debug?: boolean; // Enable debug logging
|
|
1347
|
+
maxRetries?: number; // Retry attempts (default: 3)
|
|
1348
|
+
retryDelay?: number; // Retry delay (default: 1000ms)
|
|
1349
|
+
mysqlConnectionString?: string; // MySQL connection string for price history (Node.js only)
|
|
1350
|
+
// Format: mysql://user:password@host:port/database
|
|
1348
1351
|
}
|
|
1349
1352
|
```
|
|
1350
1353
|
|
|
1354
|
+
### MySQL Configuration (Price History)
|
|
1355
|
+
|
|
1356
|
+
To use the `fetchPriceHistory()` method, you need to configure a MySQL connection string:
|
|
1357
|
+
|
|
1358
|
+
```typescript
|
|
1359
|
+
import { createLaunchpadSDK } from '@gala-chain/launchpad-sdk';
|
|
1360
|
+
|
|
1361
|
+
const sdk = createLaunchpadSDK({
|
|
1362
|
+
wallet: 'your-private-key',
|
|
1363
|
+
config: {
|
|
1364
|
+
baseUrl: 'https://lpad-backend-dev1.defi.gala.com',
|
|
1365
|
+
mysqlConnectionString: 'mysql://user:password@localhost:3306/galachain'
|
|
1366
|
+
}
|
|
1367
|
+
});
|
|
1368
|
+
|
|
1369
|
+
// Now you can fetch price history
|
|
1370
|
+
const priceHistory = await sdk.fetchPriceHistory({
|
|
1371
|
+
tokenClassKey: {
|
|
1372
|
+
collection: 'Token',
|
|
1373
|
+
category: 'Unit',
|
|
1374
|
+
type: 'GUSDC',
|
|
1375
|
+
additionalKey: 'eth:9401b171307bE656f00F9e18DF756643FD3a91dE'
|
|
1376
|
+
},
|
|
1377
|
+
from: new Date('2024-01-01'),
|
|
1378
|
+
to: new Date('2024-01-31'),
|
|
1379
|
+
page: 1,
|
|
1380
|
+
limit: 20
|
|
1381
|
+
});
|
|
1382
|
+
|
|
1383
|
+
console.log(`Found ${priceHistory.snapshots.length} snapshots`);
|
|
1384
|
+
console.log(`Total: ${priceHistory.total}, Page ${priceHistory.page} of ${priceHistory.totalPages}`);
|
|
1385
|
+
```
|
|
1386
|
+
|
|
1387
|
+
**Environment Configuration:**
|
|
1388
|
+
```bash
|
|
1389
|
+
# Set in .env or pass to SDK config
|
|
1390
|
+
PRICE_SERVICE_MYSQL_CONNECTION_STRING=mysql://user:password@localhost:3306/galachain
|
|
1391
|
+
```
|
|
1392
|
+
|
|
1393
|
+
**Requirements:**
|
|
1394
|
+
- Node.js environment (browser not supported)
|
|
1395
|
+
- MySQL server with `price_snapshots` table
|
|
1396
|
+
- Connection pooling is automatic (default 5 concurrent connections)
|
|
1397
|
+
|
|
1398
|
+
### Security Considerations
|
|
1399
|
+
|
|
1400
|
+
⚠️ **Credential Management:**
|
|
1401
|
+
- Store MySQL connection strings in environment variables, NOT in code
|
|
1402
|
+
- Use restrictive file permissions on `.env` files (recommended: `0600`)
|
|
1403
|
+
- Never log or expose connection strings in debug output
|
|
1404
|
+
- For production, consider using credential providers (AWS Secrets Manager, Azure Key Vault, etc.)
|
|
1405
|
+
|
|
1406
|
+
⚠️ **Input Validation:**
|
|
1407
|
+
- TokenClassKey fields are validated with a whitelist pattern to prevent SQL injection
|
|
1408
|
+
- Only alphanumeric characters plus dots (.), colons (:), hyphens (-), and underscores (_) are allowed
|
|
1409
|
+
- Fields are limited to 255 characters maximum
|
|
1410
|
+
|
|
1411
|
+
⚠️ **Database Security:**
|
|
1412
|
+
- Ensure MySQL is behind a firewall and not exposed to the internet
|
|
1413
|
+
- Use strong passwords and rotate them regularly
|
|
1414
|
+
- Consider using SSL/TLS for MySQL connections in production
|
|
1415
|
+
- Create a dedicated database user with **read-only permissions** (SELECT only)
|
|
1416
|
+
- **Built-in Read-Only Protection**: This service enforces read-only mode at the MySQL session level, preventing any accidental or malicious write attempts. Even if the database user somehow gains write permissions, the session-level `read_only` flag blocks all modifications.
|
|
1417
|
+
|
|
1418
|
+
⚠️ **Column Type Requirements:**
|
|
1419
|
+
- Price column MUST be of type `DECIMAL(65,30)` or similar high-precision type
|
|
1420
|
+
- Using `FLOAT` or other lossy types will cause precision loss with BigNumber operations
|
|
1421
|
+
- Verify your database schema matches the required types
|
|
1422
|
+
|
|
1423
|
+
### Required Database Schema
|
|
1424
|
+
|
|
1425
|
+
The `price_snapshots` table must exist with the following schema:
|
|
1426
|
+
|
|
1427
|
+
```sql
|
|
1428
|
+
CREATE TABLE `price_snapshots` (
|
|
1429
|
+
`id` BIGINT AUTO_INCREMENT PRIMARY KEY,
|
|
1430
|
+
`collection` VARCHAR(255) NOT NULL,
|
|
1431
|
+
`category` VARCHAR(255) NOT NULL,
|
|
1432
|
+
`type` VARCHAR(255) NOT NULL,
|
|
1433
|
+
`additional_key` VARCHAR(255) NOT NULL,
|
|
1434
|
+
`price` DECIMAL(65, 30) NOT NULL,
|
|
1435
|
+
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
1436
|
+
|
|
1437
|
+
-- Indexes for optimal query performance
|
|
1438
|
+
INDEX `idx_token_lookup` (`collection`, `category`, `type`, `additional_key`),
|
|
1439
|
+
INDEX `idx_created_at` (`created_at`),
|
|
1440
|
+
INDEX `idx_token_date` (`collection`, `category`, `type`, `additional_key`, `created_at`)
|
|
1441
|
+
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
1442
|
+
```
|
|
1443
|
+
|
|
1444
|
+
**Schema Explanation:**
|
|
1445
|
+
|
|
1446
|
+
- **`id`**: Auto-incrementing primary key for unique row identification
|
|
1447
|
+
- **`collection`**: Token collection identifier (e.g., "Token")
|
|
1448
|
+
- **`category`**: Token category identifier (e.g., "Unit")
|
|
1449
|
+
- **`type`**: Token type identifier (e.g., "GUSDC")
|
|
1450
|
+
- **`additional_key`**: Additional token key for disambiguation (e.g., "eth:0x1234...")
|
|
1451
|
+
- **`price`**: Token price as high-precision DECIMAL
|
|
1452
|
+
- **CRITICAL**: Use `DECIMAL(65, 30)` for BigNumber compatibility
|
|
1453
|
+
- This provides 35 integer digits and 30 decimal places
|
|
1454
|
+
- Sufficient for token prices ranging from satoshis to billions
|
|
1455
|
+
- ⚠️ **DO NOT USE**: FLOAT, DOUBLE, or REAL (precision loss)
|
|
1456
|
+
- **`created_at`**: Timestamp of price snapshot (defaults to insertion time)
|
|
1457
|
+
|
|
1458
|
+
**Indexes:**
|
|
1459
|
+
|
|
1460
|
+
- **`idx_token_lookup`**: Composite index on token identifier fields for efficient filtering
|
|
1461
|
+
- **`idx_created_at`**: Single index on creation timestamp for date range queries
|
|
1462
|
+
- **`idx_token_date`**: Composite index combining token fields and date for complex queries (recommended for high-volume databases)
|
|
1463
|
+
|
|
1464
|
+
**Performance Tuning:**
|
|
1465
|
+
|
|
1466
|
+
For high-volume price history databases (>10M snapshots):
|
|
1467
|
+
|
|
1468
|
+
```sql
|
|
1469
|
+
-- Add partitioning by month
|
|
1470
|
+
ALTER TABLE `price_snapshots`
|
|
1471
|
+
PARTITION BY RANGE (MONTH(created_at)) (
|
|
1472
|
+
PARTITION p202401 VALUES LESS THAN (202402),
|
|
1473
|
+
PARTITION p202402 VALUES LESS THAN (202403),
|
|
1474
|
+
-- ... more partitions
|
|
1475
|
+
PARTITION p_future VALUES LESS THAN MAXVALUE
|
|
1476
|
+
);
|
|
1477
|
+
|
|
1478
|
+
-- Consider archival strategy for old data
|
|
1479
|
+
-- Archive snapshots older than 12 months to separate table
|
|
1480
|
+
-- to maintain optimal query performance
|
|
1481
|
+
```
|
|
1482
|
+
|
|
1483
|
+
**Validation Checklist:**
|
|
1484
|
+
|
|
1485
|
+
Before using `fetchPriceHistory()`:
|
|
1486
|
+
|
|
1487
|
+
- [ ] `price_snapshots` table exists in your MySQL database
|
|
1488
|
+
- [ ] All columns match the schema above exactly
|
|
1489
|
+
- [ ] `price` column is `DECIMAL(65, 30)` (NOT FLOAT)
|
|
1490
|
+
- [ ] Indexes are created for query performance
|
|
1491
|
+
- [ ] Database user has SELECT permissions on the table
|
|
1492
|
+
- [ ] MySQL connection string is correct
|
|
1493
|
+
- [ ] Test the connection: `SELECT COUNT(*) FROM price_snapshots LIMIT 1`
|
|
1494
|
+
|
|
1351
1495
|
## Helper Functions
|
|
1352
1496
|
|
|
1353
1497
|
### **Wallet Creation**
|
|
@@ -1402,6 +1546,7 @@ npm run lint
|
|
|
1402
1546
|
- [SDK Method Reference](./SDK-METHOD-GRAPH.md) - Complete flat API reference
|
|
1403
1547
|
- [Clean Result Types Migration Guide](./docs/CLEAN_RESULT_TYPES_MIGRATION.md) - Migration guide for clean result types
|
|
1404
1548
|
- [Service Architecture Migration Guide](./docs/SERVICE_ARCHITECTURE_MIGRATION.md) - Guide for v3.1.0 service-based architecture
|
|
1549
|
+
- [Price History Schema](./docs/PRICE_HISTORY_SCHEMA.sql) - Required MySQL schema for price history functionality
|
|
1405
1550
|
- [API Documentation](../../API.md) - Detailed API documentation
|
|
1406
1551
|
- [Examples](./examples/) - Code examples and demos
|
|
1407
1552
|
|
package/dist/LaunchpadSDK.d.ts
CHANGED
|
@@ -8,6 +8,7 @@ import { TokenLaunchResult, TradeResult } from './types/result.types';
|
|
|
8
8
|
import { WebSocketError, WebSocketTimeoutError, TransactionFailedError } from './utils/websocket-errors';
|
|
9
9
|
export { WebSocketError, WebSocketTimeoutError, TransactionFailedError, };
|
|
10
10
|
import { FetchCommentsOptions, PostCommentOptions, FetchVolumeDataOptions, FetchTradesOptions, CalculateBuyAmountOptions, CalculateSellAmountOptions, CalculateBuyAmountLocalOptions, CalculateSellAmountLocalOptions, BuyTokenOptions, SellTokenOptions, UploadImageByTokenNameOptions, FetchTokensHeldOptions, FetchTokensCreatedOptions, GraduateTokenOptions, FetchLaunchpadTokenSpotPriceOptions, CalculateBuyAmountForGraduationOptions } from './types/options.dto';
|
|
11
|
+
import { FetchPriceHistoryOptions, PriceHistoryResult } from './types/priceHistory.dto';
|
|
11
12
|
/**
|
|
12
13
|
* Configuration for initializing the Launchpad SDK
|
|
13
14
|
*
|
|
@@ -148,6 +149,7 @@ export declare class LaunchpadSDK {
|
|
|
148
149
|
private readonly dexService;
|
|
149
150
|
private readonly bundleService;
|
|
150
151
|
private readonly websocketService;
|
|
152
|
+
private readonly priceHistoryService?;
|
|
151
153
|
private readonly launchpadAPI;
|
|
152
154
|
constructor(config: LaunchpadSDKConfig);
|
|
153
155
|
/**
|
|
@@ -1186,6 +1188,43 @@ export declare class LaunchpadSDK {
|
|
|
1186
1188
|
* - Passing both parameters together is discouraged (tokenName takes precedence)
|
|
1187
1189
|
*/
|
|
1188
1190
|
fetchTokensCreated(options?: FetchTokensCreatedOptions): Promise<import("./types/user.dto").UserTokenListResult>;
|
|
1191
|
+
/**
|
|
1192
|
+
* Fetch historical price data for DEX tokens from MySQL database
|
|
1193
|
+
*
|
|
1194
|
+
* Retrieves paginated historical price snapshots for a token with optional
|
|
1195
|
+
* date range filtering. This method is Node.js-only and requires MySQL
|
|
1196
|
+
* connection configuration in the SDK.
|
|
1197
|
+
*
|
|
1198
|
+
* @param options Price history fetch options including token key, dates, and pagination
|
|
1199
|
+
* @returns Promise<PriceHistoryResult> Price snapshots with pagination metadata
|
|
1200
|
+
* @throws ConfigurationError if MySQL not configured in SDK initialization
|
|
1201
|
+
* @throws NetworkError if database query fails
|
|
1202
|
+
* @throws ValidationError if parameters are invalid
|
|
1203
|
+
*
|
|
1204
|
+
* @category Price History
|
|
1205
|
+
* @since 3.13.0
|
|
1206
|
+
*
|
|
1207
|
+
* @example
|
|
1208
|
+
* ```typescript
|
|
1209
|
+
* // Fetch price history for a DEX token
|
|
1210
|
+
* const history = await sdk.fetchPriceHistory({
|
|
1211
|
+
* tokenClassKey: {
|
|
1212
|
+
* collection: 'Token',
|
|
1213
|
+
* category: 'Unit',
|
|
1214
|
+
* type: 'GUSDC',
|
|
1215
|
+
* additionalKey: 'eth:...'
|
|
1216
|
+
* },
|
|
1217
|
+
* from: new Date('2024-01-01'),
|
|
1218
|
+
* to: new Date('2024-01-31'),
|
|
1219
|
+
* page: 1,
|
|
1220
|
+
* limit: 20
|
|
1221
|
+
* });
|
|
1222
|
+
*
|
|
1223
|
+
* console.log(`Found ${history.snapshots.length} price snapshots`);
|
|
1224
|
+
* console.log(`Total: ${history.total}, Page ${history.page} of ${history.totalPages}`);
|
|
1225
|
+
* ```
|
|
1226
|
+
*/
|
|
1227
|
+
fetchPriceHistory(options: FetchPriceHistoryOptions): Promise<PriceHistoryResult>;
|
|
1189
1228
|
/**
|
|
1190
1229
|
* Transfer GALA tokens between wallets
|
|
1191
1230
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LaunchpadSDK.d.ts","sourceRoot":"","sources":["../src/LaunchpadSDK.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAKhC,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"LaunchpadSDK.d.ts","sourceRoot":"","sources":["../src/LaunchpadSDK.ts"],"names":[],"mappings":"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"}
|