@@ -7,41 +7,11 @@ import {
7
7
INPUT_MINT_ADDRESS ,
8
8
OUTPUT_MINT_ADDRESS ,
9
9
SOLANA_RPC_ENDPOINT ,
10
+ SWAP_INTERVAL_MS ,
10
11
Token ,
11
12
USER_KEYPAIR ,
12
13
} from "./constants" ;
13
14
14
- const getPossiblePairsTokenInfo = ( {
15
- tokens,
16
- routeMap,
17
- inputToken,
18
- } : {
19
- tokens : Token [ ] ;
20
- routeMap : Map < string , string [ ] > ;
21
- inputToken ?: Token ;
22
- } ) => {
23
- try {
24
- if ( ! inputToken ) {
25
- return { } ;
26
- }
27
-
28
- const possiblePairs = inputToken
29
- ? routeMap . get ( inputToken . address ) || [ ]
30
- : [ ] ; // return an array of token mints that can be swapped with SOL
31
- const possiblePairsTokenInfo : { [ key : string ] : Token | undefined } = { } ;
32
- possiblePairs . forEach ( ( address ) => {
33
- possiblePairsTokenInfo [ address ] = tokens . find ( ( t ) => {
34
- return t . address == address ;
35
- } ) ;
36
- } ) ;
37
- // Perform your conditionals here to use other outputToken
38
- // const alternativeOutputToken = possiblePairsTokenInfo[USDT_MINT_ADDRESS]
39
- return possiblePairsTokenInfo ;
40
- } catch ( error ) {
41
- throw error ;
42
- }
43
- } ;
44
-
45
15
const getRoutes = async ( {
46
16
jupiter,
47
17
inputToken,
@@ -125,6 +95,10 @@ const executeSwap = async ({
125
95
}
126
96
} ;
127
97
98
+ function delay ( ms : number ) {
99
+ return new Promise ( resolve => setTimeout ( resolve , ms ) )
100
+ }
101
+
128
102
const main = async ( ) => {
129
103
try {
130
104
const connection = new Connection ( SOLANA_RPC_ENDPOINT ) ; // Setup Solana RPC connection
@@ -137,30 +111,23 @@ const main = async () => {
137
111
user : USER_KEYPAIR , // or public key
138
112
} ) ;
139
113
140
- // Get routeMap, which maps each tokenMint and their respective tokenMints that are swappable
141
- const routeMap = jupiter . getRouteMap ( ) ;
142
-
143
114
// If you know which input/output pair you want
144
115
const inputToken = tokens . find ( ( t ) => t . address == INPUT_MINT_ADDRESS ) ; // USDC Mint Info
145
116
const outputToken = tokens . find ( ( t ) => t . address == OUTPUT_MINT_ADDRESS ) ; // USDT Mint Info
146
117
147
- // Alternatively, find all possible outputToken based on your inputToken
148
- const possiblePairsTokenInfo = await getPossiblePairsTokenInfo ( {
149
- tokens,
150
- routeMap,
151
- inputToken,
152
- } ) ;
153
-
154
- const routes = await getRoutes ( {
155
- jupiter,
156
- inputToken,
157
- outputToken,
158
- inputAmount : .01 , // 1 unit in UI
159
- slippage : 1 , // 1% slippage
160
- } ) ;
161
-
162
- // Routes are sorted based on outputAmount, so ideally the first route is the best.
163
- await executeSwap ( { jupiter, route : routes ! . routesInfos [ 0 ] } ) ;
118
+ while ( true ) {
119
+ /* code to wait on goes here (sync or async) */
120
+ const routes = await getRoutes ( {
121
+ jupiter,
122
+ inputToken,
123
+ outputToken,
124
+ inputAmount : .01 , // 1 unit in UI
125
+ slippage : 1 , // % slippage
126
+ } ) ;
127
+ // Routes are sorted based on outputAmount, so ideally the first route is the best.
128
+ await executeSwap ( { jupiter, route : routes ! . routesInfos [ 0 ] } ) ;
129
+ await delay ( SWAP_INTERVAL_MS ) ;
130
+ }
164
131
} catch ( error ) {
165
132
console . log ( { error } ) ;
166
133
}
0 commit comments