@gala-chain/launchpad-sdk 4.0.6 → 4.0.7-beta.10
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 +174 -4
- package/dist/index.cjs.js +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.esm.js +1 -1
- package/dist/index.js +1 -1
- package/dist/src/LaunchpadSDK.d.ts +214 -1
- package/dist/src/LaunchpadSDK.d.ts.map +1 -1
- package/dist/src/bridge/BridgeService.d.ts +364 -0
- package/dist/src/bridge/BridgeService.d.ts.map +1 -0
- package/dist/src/bridge/GalaConnectClient.d.ts +164 -0
- package/dist/src/bridge/GalaConnectClient.d.ts.map +1 -0
- package/dist/src/bridge/constants/index.d.ts +7 -0
- package/dist/src/bridge/constants/index.d.ts.map +1 -0
- package/dist/src/bridge/constants/tokens.d.ts +181 -0
- package/dist/src/bridge/constants/tokens.d.ts.map +1 -0
- package/dist/src/bridge/index.d.ts +22 -0
- package/dist/src/bridge/index.d.ts.map +1 -0
- package/dist/src/bridge/strategies/BridgeStrategy.d.ts +160 -0
- package/dist/src/bridge/strategies/BridgeStrategy.d.ts.map +1 -0
- package/dist/src/bridge/strategies/EthereumBridgeStrategy.d.ts +198 -0
- package/dist/src/bridge/strategies/EthereumBridgeStrategy.d.ts.map +1 -0
- package/dist/src/bridge/strategies/SolanaBridgeStrategy.d.ts +207 -0
- package/dist/src/bridge/strategies/SolanaBridgeStrategy.d.ts.map +1 -0
- package/dist/src/bridge/strategies/index.d.ts +9 -0
- package/dist/src/bridge/strategies/index.d.ts.map +1 -0
- package/dist/src/bridge/types/bridge.dto.d.ts +618 -0
- package/dist/src/bridge/types/bridge.dto.d.ts.map +1 -0
- package/dist/src/bridge/types/eip712.d.ts +57 -0
- package/dist/src/bridge/types/eip712.d.ts.map +1 -0
- package/dist/src/bridge/types/index.d.ts +8 -0
- package/dist/src/bridge/types/index.d.ts.map +1 -0
- package/dist/src/bridge/utils/RateLimiter.d.ts +34 -0
- package/dist/src/bridge/utils/RateLimiter.d.ts.map +1 -0
- package/dist/src/bridge/utils/index.d.ts +9 -0
- package/dist/src/bridge/utils/index.d.ts.map +1 -0
- package/dist/src/bridge/utils/retry.d.ts +96 -0
- package/dist/src/bridge/utils/retry.d.ts.map +1 -0
- package/dist/src/bridge/utils/tokenMath.d.ts +39 -0
- package/dist/src/bridge/utils/tokenMath.d.ts.map +1 -0
- package/dist/src/constants/version.generated.d.ts +1 -1
- package/dist/src/constants/version.generated.d.ts.map +1 -1
- package/dist/src/index.d.ts +3 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/services/DexBackendClient.d.ts +51 -1
- package/dist/src/services/DexBackendClient.d.ts.map +1 -1
- package/dist/src/services/GSwapService.d.ts +62 -8
- package/dist/src/services/GSwapService.d.ts.map +1 -1
- package/dist/src/types/galachain-api.types.d.ts +28 -0
- package/dist/src/types/galachain-api.types.d.ts.map +1 -1
- package/dist/src/types/gswap.dto.d.ts +43 -4
- package/dist/src/types/gswap.dto.d.ts.map +1 -1
- package/dist/src/utils/validation-helpers.d.ts +9 -1
- package/dist/src/utils/validation-helpers.d.ts.map +1 -1
- package/package.json +19 -2
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Solana Bridge Strategy
|
|
3
|
+
*
|
|
4
|
+
* Implements bridging between GalaChain and Solana networks.
|
|
5
|
+
* Handles SPL token accounts, PDA derivation, and Solana program interactions.
|
|
6
|
+
*/
|
|
7
|
+
import { BaseBridgeStrategy } from './BridgeStrategy.js';
|
|
8
|
+
import { GalaConnectClient } from '../GalaConnectClient.js';
|
|
9
|
+
import type { BridgeFeeEstimate, BridgeInParams, BridgeOutParams, BridgeStatus, BridgeTransaction, ExternalNetwork, SolanaTokenConfig } from '../types/index.js';
|
|
10
|
+
/**
|
|
11
|
+
* Configuration for Solana bridge strategy.
|
|
12
|
+
*/
|
|
13
|
+
export interface SolanaBridgeConfig {
|
|
14
|
+
/** GalaConnect API client */
|
|
15
|
+
galaConnectClient: GalaConnectClient;
|
|
16
|
+
/** GalaChain wallet address (eth|0x...) */
|
|
17
|
+
galaChainWalletAddress: string;
|
|
18
|
+
/** Ethereum private key for EIP-712 signing (GalaChain uses Ethereum signatures) */
|
|
19
|
+
ethereumPrivateKey: string;
|
|
20
|
+
/** Solana private key in base58 format */
|
|
21
|
+
solanaPrivateKeyBase58: string;
|
|
22
|
+
/** Solana RPC URL */
|
|
23
|
+
solanaRpcUrl?: string;
|
|
24
|
+
/** Solana bridge program ID */
|
|
25
|
+
solanaBridgeProgram?: string;
|
|
26
|
+
/** Token configurations */
|
|
27
|
+
tokenConfigs?: SolanaTokenConfig[];
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Bridge strategy for GalaChain ↔ Solana transfers.
|
|
31
|
+
*
|
|
32
|
+
* Supports 2 tokens: GALA, GSOL
|
|
33
|
+
*
|
|
34
|
+
* @example
|
|
35
|
+
* ```typescript
|
|
36
|
+
* const strategy = new SolanaBridgeStrategy({
|
|
37
|
+
* galaConnectClient,
|
|
38
|
+
* galaChainWalletAddress: 'eth|0x1234...',
|
|
39
|
+
* ethereumPrivateKey: '0xabcd...',
|
|
40
|
+
* solanaPrivateKeyBase58: 'base58EncodedKey...',
|
|
41
|
+
* });
|
|
42
|
+
*
|
|
43
|
+
* // Bridge out (GalaChain → Solana)
|
|
44
|
+
* const tx = await strategy.bridgeOut({
|
|
45
|
+
* tokenSymbol: 'GALA',
|
|
46
|
+
* amount: '100',
|
|
47
|
+
* destinationChain: 'Solana',
|
|
48
|
+
* recipientAddress: 'SolanaAddress...',
|
|
49
|
+
* });
|
|
50
|
+
* ```
|
|
51
|
+
*/
|
|
52
|
+
export declare class SolanaBridgeStrategy extends BaseBridgeStrategy {
|
|
53
|
+
readonly network: ExternalNetwork;
|
|
54
|
+
private readonly galaConnectClient;
|
|
55
|
+
private readonly galaChainWalletAddress;
|
|
56
|
+
private readonly ethereumWallet;
|
|
57
|
+
private readonly solanaConnection;
|
|
58
|
+
private readonly solanaKeypair;
|
|
59
|
+
private readonly solanaBridgeProgramId;
|
|
60
|
+
private readonly solanaBridgeTokenAuthority;
|
|
61
|
+
private readonly solanaBridgeConfigPda;
|
|
62
|
+
private readonly solanaNativeBridgePda;
|
|
63
|
+
private readonly solanaBridgeAccountCache;
|
|
64
|
+
private readonly tokenConfigs;
|
|
65
|
+
private readonly tokenMetadataCache;
|
|
66
|
+
/**
|
|
67
|
+
* Creates a new Solana bridge strategy.
|
|
68
|
+
*
|
|
69
|
+
* @param config - Strategy configuration
|
|
70
|
+
* @throws Error if ethereumPrivateKey or solanaPrivateKeyBase58 is invalid format
|
|
71
|
+
*/
|
|
72
|
+
constructor(config: SolanaBridgeConfig);
|
|
73
|
+
/**
|
|
74
|
+
* Estimate bridge fees for a transfer to Solana.
|
|
75
|
+
*
|
|
76
|
+
* @param tokenSymbol - Token symbol (e.g., 'GALA', 'GSOL')
|
|
77
|
+
* @param amount - Amount in decimal format
|
|
78
|
+
* @returns Fee estimate with breakdown
|
|
79
|
+
*/
|
|
80
|
+
estimateFee(tokenSymbol: string, _amount: string): Promise<BridgeFeeEstimate>;
|
|
81
|
+
/**
|
|
82
|
+
* Bridge tokens from GalaChain to Solana.
|
|
83
|
+
*
|
|
84
|
+
* @param params - Bridge out parameters
|
|
85
|
+
* @returns Transaction details
|
|
86
|
+
*/
|
|
87
|
+
bridgeOut(params: BridgeOutParams): Promise<BridgeTransaction>;
|
|
88
|
+
/**
|
|
89
|
+
* Bridge tokens from Solana to GalaChain.
|
|
90
|
+
*
|
|
91
|
+
* @param params - Bridge in parameters
|
|
92
|
+
* @returns Transaction details
|
|
93
|
+
*/
|
|
94
|
+
bridgeIn(params: BridgeInParams): Promise<BridgeTransaction>;
|
|
95
|
+
/**
|
|
96
|
+
* Get the current status of a bridge transaction.
|
|
97
|
+
*
|
|
98
|
+
* @param transactionHash - Transaction hash to check
|
|
99
|
+
* @returns Current status
|
|
100
|
+
*/
|
|
101
|
+
getStatus(transactionHash: string): Promise<BridgeStatus>;
|
|
102
|
+
/**
|
|
103
|
+
* Get list of supported tokens for Solana bridging.
|
|
104
|
+
*
|
|
105
|
+
* @returns Array of token symbols
|
|
106
|
+
*/
|
|
107
|
+
getSupportedTokens(): string[];
|
|
108
|
+
/**
|
|
109
|
+
* Check if a token is supported for Solana bridging.
|
|
110
|
+
*
|
|
111
|
+
* @param tokenSymbol - Token symbol to check
|
|
112
|
+
* @returns True if supported
|
|
113
|
+
*/
|
|
114
|
+
isTokenSupported(tokenSymbol: string): boolean;
|
|
115
|
+
/**
|
|
116
|
+
* Validate a Solana address.
|
|
117
|
+
*
|
|
118
|
+
* @param address - Address to validate
|
|
119
|
+
* @returns True if valid Solana address
|
|
120
|
+
*/
|
|
121
|
+
isValidAddress(address: string): boolean;
|
|
122
|
+
/**
|
|
123
|
+
* Get the configured Solana wallet address.
|
|
124
|
+
*
|
|
125
|
+
* @returns Solana wallet address (base58 format)
|
|
126
|
+
*
|
|
127
|
+
* @example
|
|
128
|
+
* ```typescript
|
|
129
|
+
* const address = strategy.getWalletAddress();
|
|
130
|
+
* console.log(`Wallet: ${address}`);
|
|
131
|
+
* ```
|
|
132
|
+
*/
|
|
133
|
+
getWalletAddress(): string;
|
|
134
|
+
/**
|
|
135
|
+
* Get SPL token balance for a Solana address.
|
|
136
|
+
*
|
|
137
|
+
* @param tokenSymbol - Token symbol ('GALA' or 'GSOL')
|
|
138
|
+
* @param address - Optional Solana address (defaults to configured wallet)
|
|
139
|
+
* @returns Token balance as decimal string (returns "0" for zero balance)
|
|
140
|
+
* @throws Error if token not supported or address invalid
|
|
141
|
+
*
|
|
142
|
+
* @remarks
|
|
143
|
+
* If the token account does not exist, this method returns "0" rather than
|
|
144
|
+
* throwing an error, as non-existent accounts are equivalent to zero balance.
|
|
145
|
+
*
|
|
146
|
+
* @example
|
|
147
|
+
* ```typescript
|
|
148
|
+
* const balance = await strategy.getSolanaTokenBalance('GALA');
|
|
149
|
+
* console.log(`Balance: ${balance} GALA`);
|
|
150
|
+
*
|
|
151
|
+
* // Check another address
|
|
152
|
+
* const otherBalance = await strategy.getSolanaTokenBalance('GALA', 'SolanaAddress...');
|
|
153
|
+
* ```
|
|
154
|
+
*/
|
|
155
|
+
getSolanaTokenBalance(tokenSymbol: string, address?: string): Promise<string>;
|
|
156
|
+
/**
|
|
157
|
+
* Get native SOL balance for a Solana address.
|
|
158
|
+
*
|
|
159
|
+
* @param address - Optional Solana address (defaults to configured wallet)
|
|
160
|
+
* @returns SOL balance as decimal string (9 decimals)
|
|
161
|
+
* @throws Error if address invalid
|
|
162
|
+
*
|
|
163
|
+
* @example
|
|
164
|
+
* ```typescript
|
|
165
|
+
* const solBalance = await strategy.getSolanaNativeBalance();
|
|
166
|
+
* console.log(`SOL Balance: ${solBalance} SOL`);
|
|
167
|
+
* ```
|
|
168
|
+
*/
|
|
169
|
+
getSolanaNativeBalance(address?: string): Promise<string>;
|
|
170
|
+
/**
|
|
171
|
+
* Get token metadata from cache or API.
|
|
172
|
+
*/
|
|
173
|
+
private getTokenMetadata;
|
|
174
|
+
/**
|
|
175
|
+
* Build EIP-712 signed bridge out payload.
|
|
176
|
+
*/
|
|
177
|
+
private buildBridgeOutPayload;
|
|
178
|
+
/**
|
|
179
|
+
* Execute Solana bridge out transaction.
|
|
180
|
+
*/
|
|
181
|
+
private executeSolanaBridgeOut;
|
|
182
|
+
/**
|
|
183
|
+
* Build instruction for native SOL bridging.
|
|
184
|
+
*/
|
|
185
|
+
private buildNativeBridgeInstruction;
|
|
186
|
+
/**
|
|
187
|
+
* Build instruction for SPL token bridging.
|
|
188
|
+
*/
|
|
189
|
+
private buildTokenBridgeInstruction;
|
|
190
|
+
/**
|
|
191
|
+
* Get cached Solana bridge accounts for a mint.
|
|
192
|
+
*/
|
|
193
|
+
private getSolanaBridgeAccounts;
|
|
194
|
+
/**
|
|
195
|
+
* Normalize fee response for deterministic signing.
|
|
196
|
+
*/
|
|
197
|
+
private normalizeDestinationChainTxFee;
|
|
198
|
+
/**
|
|
199
|
+
* Remove undefined values for deterministic JSON.
|
|
200
|
+
*/
|
|
201
|
+
private sanitizeObject;
|
|
202
|
+
/**
|
|
203
|
+
* Extract bridge request ID from response.
|
|
204
|
+
*/
|
|
205
|
+
private extractBridgeRequestId;
|
|
206
|
+
}
|
|
207
|
+
//# sourceMappingURL=SolanaBridgeStrategy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SolanaBridgeStrategy.d.ts","sourceRoot":"","sources":["../../../../src/bridge/strategies/SolanaBridgeStrategy.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/bridge/strategies/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,qBAAqB,CAAC;AACpC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,2BAA2B,CAAC"}
|