@exponent-labs/exponent-sdk 0.9.0 → 0.9.2
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/build/client/vaults/index.d.ts +2 -0
- package/build/client/vaults/index.js +2 -0
- package/build/client/vaults/index.js.map +1 -1
- package/build/client/vaults/types/index.d.ts +2 -0
- package/build/client/vaults/types/index.js +2 -0
- package/build/client/vaults/types/index.js.map +1 -1
- package/build/client/vaults/types/kaminoFarmEntry.d.ts +15 -0
- package/build/client/vaults/types/kaminoFarmEntry.js +17 -0
- package/build/client/vaults/types/kaminoFarmEntry.js.map +1 -0
- package/build/client/vaults/types/kaminoObligationEntry.d.ts +21 -4
- package/build/client/vaults/types/kaminoObligationEntry.js +2 -1
- package/build/client/vaults/types/kaminoObligationEntry.js.map +1 -1
- package/build/client/vaults/types/positionUpdate.d.ts +9 -0
- package/build/client/vaults/types/positionUpdate.js +23 -0
- package/build/client/vaults/types/positionUpdate.js.map +1 -1
- package/build/client/vaults/types/proposalAction.js +0 -3
- package/build/client/vaults/types/proposalAction.js.map +1 -1
- package/build/client/vaults/types/reserveFarmMapping.d.ts +19 -0
- package/build/client/vaults/types/reserveFarmMapping.js +18 -0
- package/build/client/vaults/types/reserveFarmMapping.js.map +1 -0
- package/build/client/vaults/types/strategyPosition.d.ts +5 -0
- package/build/client/vaults/types/strategyPosition.js +5 -0
- package/build/client/vaults/types/strategyPosition.js.map +1 -1
- package/build/exponentVaults/aumCalculator.d.ts +25 -4
- package/build/exponentVaults/aumCalculator.js +236 -15
- package/build/exponentVaults/aumCalculator.js.map +1 -1
- package/build/exponentVaults/fetcher.d.ts +52 -0
- package/build/exponentVaults/fetcher.js +199 -0
- package/build/exponentVaults/fetcher.js.map +1 -0
- package/build/exponentVaults/index.d.ts +10 -9
- package/build/exponentVaults/index.js +26 -8
- package/build/exponentVaults/index.js.map +1 -1
- package/build/exponentVaults/kamino-farms.d.ts +144 -0
- package/build/exponentVaults/kamino-farms.js +396 -0
- package/build/exponentVaults/kamino-farms.js.map +1 -0
- package/build/exponentVaults/loopscale/client.d.ts +240 -0
- package/build/exponentVaults/loopscale/client.js +590 -0
- package/build/exponentVaults/loopscale/client.js.map +1 -0
- package/build/exponentVaults/loopscale/client.test.d.ts +1 -0
- package/build/exponentVaults/loopscale/client.test.js +183 -0
- package/build/exponentVaults/loopscale/client.test.js.map +1 -0
- package/build/exponentVaults/loopscale/helpers.d.ts +29 -0
- package/build/exponentVaults/loopscale/helpers.js +119 -0
- package/build/exponentVaults/loopscale/helpers.js.map +1 -0
- package/build/exponentVaults/loopscale/index.d.ts +3 -0
- package/build/exponentVaults/loopscale/index.js +12 -0
- package/build/exponentVaults/loopscale/index.js.map +1 -0
- package/build/exponentVaults/loopscale/prepared-transactions.d.ts +13 -0
- package/build/exponentVaults/loopscale/prepared-transactions.js +271 -0
- package/build/exponentVaults/loopscale/prepared-transactions.js.map +1 -0
- package/build/exponentVaults/loopscale/prepared-transactions.test.d.ts +1 -0
- package/build/exponentVaults/loopscale/prepared-transactions.test.js +400 -0
- package/build/exponentVaults/loopscale/prepared-transactions.test.js.map +1 -0
- package/build/exponentVaults/loopscale/prepared-types.d.ts +62 -0
- package/build/exponentVaults/loopscale/prepared-types.js +3 -0
- package/build/exponentVaults/loopscale/prepared-types.js.map +1 -0
- package/build/exponentVaults/loopscale/response-plan.d.ts +69 -0
- package/build/exponentVaults/loopscale/response-plan.js +141 -0
- package/build/exponentVaults/loopscale/response-plan.js.map +1 -0
- package/build/exponentVaults/loopscale/response-plan.test.d.ts +1 -0
- package/build/exponentVaults/loopscale/response-plan.test.js +139 -0
- package/build/exponentVaults/loopscale/response-plan.test.js.map +1 -0
- package/build/exponentVaults/loopscale/send-plan.d.ts +75 -0
- package/build/exponentVaults/loopscale/send-plan.js +235 -0
- package/build/exponentVaults/loopscale/send-plan.js.map +1 -0
- package/build/exponentVaults/loopscale/types.d.ts +443 -0
- package/build/exponentVaults/loopscale/types.js +3 -0
- package/build/exponentVaults/loopscale/types.js.map +1 -0
- package/build/exponentVaults/loopscale-client.d.ts +113 -524
- package/build/exponentVaults/loopscale-client.js +296 -539
- package/build/exponentVaults/loopscale-client.js.map +1 -1
- package/build/exponentVaults/loopscale-client.test.d.ts +1 -0
- package/build/exponentVaults/loopscale-client.test.js +162 -0
- package/build/exponentVaults/loopscale-client.test.js.map +1 -0
- package/build/exponentVaults/loopscale-client.types.d.ts +425 -0
- package/build/exponentVaults/loopscale-client.types.js +3 -0
- package/build/exponentVaults/loopscale-client.types.js.map +1 -0
- package/build/exponentVaults/loopscale-execution.d.ts +125 -0
- package/build/exponentVaults/loopscale-execution.js +341 -0
- package/build/exponentVaults/loopscale-execution.js.map +1 -0
- package/build/exponentVaults/loopscale-execution.test.d.ts +1 -0
- package/build/exponentVaults/loopscale-execution.test.js +139 -0
- package/build/exponentVaults/loopscale-execution.test.js.map +1 -0
- package/build/exponentVaults/loopscale-vault.d.ts +115 -0
- package/build/exponentVaults/loopscale-vault.js +275 -0
- package/build/exponentVaults/loopscale-vault.js.map +1 -0
- package/build/exponentVaults/loopscale-vault.test.d.ts +1 -0
- package/build/exponentVaults/loopscale-vault.test.js +102 -0
- package/build/exponentVaults/loopscale-vault.test.js.map +1 -0
- package/build/exponentVaults/policyBuilders.d.ts +62 -0
- package/build/exponentVaults/policyBuilders.js +119 -2
- package/build/exponentVaults/policyBuilders.js.map +1 -1
- package/build/exponentVaults/pricePathResolver.d.ts +45 -0
- package/build/exponentVaults/pricePathResolver.js +198 -0
- package/build/exponentVaults/pricePathResolver.js.map +1 -0
- package/build/exponentVaults/pricePathResolver.test.d.ts +1 -0
- package/build/exponentVaults/pricePathResolver.test.js +369 -0
- package/build/exponentVaults/pricePathResolver.test.js.map +1 -0
- package/build/exponentVaults/syncTransaction.js +4 -1
- package/build/exponentVaults/syncTransaction.js.map +1 -1
- package/build/exponentVaults/titan-quote.js +170 -36
- package/build/exponentVaults/titan-quote.js.map +1 -1
- package/build/exponentVaults/vault-instruction-types.d.ts +363 -0
- package/build/exponentVaults/vault-instruction-types.js +128 -0
- package/build/exponentVaults/vault-instruction-types.js.map +1 -0
- package/build/exponentVaults/vault-interaction.d.ts +203 -343
- package/build/exponentVaults/vault-interaction.js +1894 -426
- package/build/exponentVaults/vault-interaction.js.map +1 -1
- package/build/exponentVaults/vault-interaction.kamino-vault.test.d.ts +1 -0
- package/build/exponentVaults/vault-interaction.kamino-vault.test.js +143 -0
- package/build/exponentVaults/vault-interaction.kamino-vault.test.js.map +1 -0
- package/build/exponentVaults/vault.d.ts +51 -2
- package/build/exponentVaults/vault.js +324 -48
- package/build/exponentVaults/vault.js.map +1 -1
- package/build/exponentVaults/vaultTransactionBuilder.d.ts +100 -134
- package/build/exponentVaults/vaultTransactionBuilder.js +383 -285
- package/build/exponentVaults/vaultTransactionBuilder.js.map +1 -1
- package/build/exponentVaults/vaultTransactionBuilder.test.d.ts +1 -0
- package/build/exponentVaults/vaultTransactionBuilder.test.js +297 -0
- package/build/exponentVaults/vaultTransactionBuilder.test.js.map +1 -0
- package/build/marketThree.d.ts +6 -2
- package/build/marketThree.js +10 -8
- package/build/marketThree.js.map +1 -1
- package/package.json +34 -32
- package/src/client/vaults/index.ts +2 -0
- package/src/client/vaults/types/index.ts +2 -0
- package/src/client/vaults/types/kaminoFarmEntry.ts +32 -0
- package/src/client/vaults/types/kaminoObligationEntry.ts +6 -3
- package/src/client/vaults/types/positionUpdate.ts +62 -0
- package/src/client/vaults/types/proposalAction.ts +0 -3
- package/src/client/vaults/types/reserveFarmMapping.ts +35 -0
- package/src/client/vaults/types/strategyPosition.ts +18 -1
- package/src/exponentVaults/aumCalculator.ts +353 -16
- package/src/exponentVaults/fetcher.ts +257 -0
- package/src/exponentVaults/index.ts +65 -40
- package/src/exponentVaults/kamino-farms.ts +538 -0
- package/src/exponentVaults/loopscale/client.ts +808 -0
- package/src/exponentVaults/loopscale/helpers.ts +172 -0
- package/src/exponentVaults/loopscale/index.ts +57 -0
- package/src/exponentVaults/loopscale/prepared-transactions.ts +435 -0
- package/src/exponentVaults/loopscale/prepared-types.ts +73 -0
- package/src/exponentVaults/loopscale/types.ts +466 -0
- package/src/exponentVaults/policyBuilders.ts +170 -0
- package/src/exponentVaults/pricePathResolver.test.ts +466 -0
- package/src/exponentVaults/pricePathResolver.ts +273 -0
- package/src/exponentVaults/syncTransaction.ts +6 -1
- package/src/exponentVaults/titan-quote.ts +231 -45
- package/src/exponentVaults/vault-instruction-types.ts +493 -0
- package/src/exponentVaults/vault-interaction.kamino-vault.test.ts +149 -0
- package/src/exponentVaults/vault-interaction.ts +2818 -799
- package/src/exponentVaults/vault.ts +474 -63
- package/src/exponentVaults/vaultTransactionBuilder.test.ts +349 -0
- package/src/exponentVaults/vaultTransactionBuilder.ts +581 -433
- package/src/marketThree.ts +14 -6
- package/src/exponentVaults/loopscale-client.ts +0 -1373
|
@@ -5,62 +5,116 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.getTitanQuote = void 0;
|
|
7
7
|
const web3_js_1 = require("@solana/web3.js");
|
|
8
|
+
const spl_token_1 = require("@solana/spl-token");
|
|
8
9
|
const msgpack_1 = require("@msgpack/msgpack");
|
|
9
10
|
const ws_1 = __importDefault(require("ws"));
|
|
10
11
|
const TITAN_WS_SUBPROTOCOL = "v1.api.titan.ag";
|
|
11
12
|
const SWAP_ROUTE_V2_DISCRIMINATOR = Buffer.from([249, 91, 84, 33, 69, 22, 0, 135]);
|
|
12
13
|
const QUOTE_TIMEOUT_MS = 45_000;
|
|
14
|
+
const INCOMPATIBLE_ROUTE_RETRY_ATTEMPTS = 3;
|
|
15
|
+
const INCOMPATIBLE_ROUTE_RETRY_DELAY_MS = 750;
|
|
16
|
+
const TITAN_QUOTE_STREAM_ROUTE_COUNT = 6;
|
|
17
|
+
const TITAN_INPUT_MINT_ACCOUNT_INDEX = 2;
|
|
18
|
+
const TITAN_INPUT_TOKEN_ACCOUNT_INDEX = 3;
|
|
19
|
+
const TITAN_OUTPUT_MINT_ACCOUNT_INDEX = 4;
|
|
20
|
+
const TITAN_OUTPUT_TOKEN_ACCOUNT_INDEX = 5;
|
|
21
|
+
const TITAN_INPUT_TOKEN_PROGRAM_ACCOUNT_INDEX = 6;
|
|
22
|
+
const TITAN_OUTPUT_TOKEN_PROGRAM_ACCOUNT_INDEX = 7;
|
|
23
|
+
const TITAN_VAULT_INCOMPATIBLE_PROGRAM_IDS = new Set([
|
|
24
|
+
"ALPHAQmeA7bjrVuccPsYPiCvsi428SNwte66Srvs4pHA",
|
|
25
|
+
]);
|
|
13
26
|
const JITO_BUNDLE_BLOCKED_ACCOUNT_PREFIXES = ["jitodontfront", "jitonobundle"];
|
|
14
27
|
/**
|
|
15
28
|
* Fetch a single Titan swap quote and return the SwapRouteV2 instruction
|
|
16
29
|
* along with any Address Lookup Table addresses needed for transaction compression.
|
|
17
30
|
*/
|
|
18
31
|
async function getTitanQuote(connection, auth, params) {
|
|
19
|
-
const
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
const
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
32
|
+
const candidates = buildQuoteCandidates(params.userPublicKey);
|
|
33
|
+
let lastBlockedRoute = null;
|
|
34
|
+
let lastError = null;
|
|
35
|
+
for (let attempt = 1; attempt <= INCOMPATIBLE_ROUTE_RETRY_ATTEMPTS; attempt++) {
|
|
36
|
+
for (const candidate of candidates) {
|
|
37
|
+
try {
|
|
38
|
+
const routes = await fetchUsableRoutes(auth, {
|
|
39
|
+
...params,
|
|
40
|
+
userPublicKey: candidate.quoteUserPublicKey,
|
|
41
|
+
});
|
|
42
|
+
for (const route of routes) {
|
|
43
|
+
const quote = await buildQuoteResult(connection, route);
|
|
44
|
+
const normalizedQuote = candidate.rewriteToUserPublicKey
|
|
45
|
+
? rewriteTitanQuoteForOwner({
|
|
46
|
+
quote,
|
|
47
|
+
quotedUserPublicKey: candidate.quoteUserPublicKey,
|
|
48
|
+
actualUserPublicKey: candidate.rewriteToUserPublicKey,
|
|
49
|
+
})
|
|
50
|
+
: quote;
|
|
51
|
+
if (isVaultCompatibleQuote(normalizedQuote.instruction, params.userPublicKey)) {
|
|
52
|
+
return normalizedQuote;
|
|
53
|
+
}
|
|
54
|
+
lastBlockedRoute = normalizedQuote;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
catch (error) {
|
|
58
|
+
lastError = asError(error);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
if (attempt < INCOMPATIBLE_ROUTE_RETRY_ATTEMPTS && (lastBlockedRoute || lastError)) {
|
|
62
|
+
await sleep(INCOMPATIBLE_ROUTE_RETRY_DELAY_MS);
|
|
43
63
|
}
|
|
44
64
|
}
|
|
65
|
+
if (lastBlockedRoute) {
|
|
66
|
+
throw new Error(`Titan returned only routes incompatible with vault-owned execution after ${INCOMPATIBLE_ROUTE_RETRY_ATTEMPTS} attempts`);
|
|
67
|
+
}
|
|
68
|
+
if (lastError) {
|
|
69
|
+
throw lastError;
|
|
70
|
+
}
|
|
45
71
|
throw new Error("Titan route has neither transaction bytes nor a SwapRouteV2 instruction");
|
|
46
72
|
}
|
|
47
73
|
exports.getTitanQuote = getTitanQuote;
|
|
48
|
-
|
|
49
|
-
|
|
74
|
+
function buildQuoteCandidates(userPublicKey) {
|
|
75
|
+
if (!web3_js_1.PublicKey.isOnCurve(userPublicKey.toBytes())) {
|
|
76
|
+
return [
|
|
77
|
+
{ quoteUserPublicKey: userPublicKey },
|
|
78
|
+
{
|
|
79
|
+
quoteUserPublicKey: deriveTitanQuoteSurrogateUser(userPublicKey),
|
|
80
|
+
rewriteToUserPublicKey: userPublicKey,
|
|
81
|
+
},
|
|
82
|
+
];
|
|
83
|
+
}
|
|
84
|
+
return [{ quoteUserPublicKey: userPublicKey }];
|
|
85
|
+
}
|
|
86
|
+
function deriveTitanQuoteSurrogateUser(userPublicKey) {
|
|
87
|
+
return web3_js_1.Keypair.fromSeed(userPublicKey.toBytes()).publicKey;
|
|
88
|
+
}
|
|
89
|
+
function fetchUsableRoutes(auth, params) {
|
|
50
90
|
return new Promise((resolve, reject) => {
|
|
51
91
|
const url = `${auth.wsUrl}?auth=${auth.authToken}`;
|
|
52
92
|
const ws = new ws_1.default(url, [TITAN_WS_SUBPROTOCOL]);
|
|
53
93
|
ws.binaryType = "arraybuffer";
|
|
94
|
+
const collectedRoutes = [];
|
|
95
|
+
let settled = false;
|
|
54
96
|
const timeout = setTimeout(() => {
|
|
55
|
-
|
|
97
|
+
cleanup();
|
|
98
|
+
if (collectedRoutes.length > 0) {
|
|
99
|
+
resolve(selectUsableRoutes(collectedRoutes));
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
56
102
|
reject(new Error("Titan quote timed out after " + QUOTE_TIMEOUT_MS + "ms"));
|
|
57
103
|
}, QUOTE_TIMEOUT_MS);
|
|
58
104
|
const cleanup = () => {
|
|
105
|
+
settled = true;
|
|
59
106
|
clearTimeout(timeout);
|
|
60
107
|
ws.close();
|
|
61
108
|
};
|
|
62
109
|
ws.on("error", (err) => {
|
|
110
|
+
if (settled) {
|
|
111
|
+
return;
|
|
112
|
+
}
|
|
63
113
|
cleanup();
|
|
114
|
+
if (collectedRoutes.length > 0) {
|
|
115
|
+
resolve(selectUsableRoutes(collectedRoutes));
|
|
116
|
+
return;
|
|
117
|
+
}
|
|
64
118
|
reject(new Error("Titan WebSocket error: " + err.message));
|
|
65
119
|
});
|
|
66
120
|
ws.on("open", () => {
|
|
@@ -78,7 +132,7 @@ function fetchBestRoute(auth, params) {
|
|
|
78
132
|
userPublicKey: params.userPublicKey.toBytes(),
|
|
79
133
|
},
|
|
80
134
|
update: {
|
|
81
|
-
num_quotes:
|
|
135
|
+
num_quotes: TITAN_QUOTE_STREAM_ROUTE_COUNT,
|
|
82
136
|
},
|
|
83
137
|
},
|
|
84
138
|
},
|
|
@@ -86,9 +140,16 @@ function fetchBestRoute(auth, params) {
|
|
|
86
140
|
ws.send((0, msgpack_1.encode)(request, { useBigInt64: true }));
|
|
87
141
|
});
|
|
88
142
|
ws.on("message", (data) => {
|
|
143
|
+
if (settled) {
|
|
144
|
+
return;
|
|
145
|
+
}
|
|
89
146
|
const msg = (0, msgpack_1.decode)(new Uint8Array(data), { useBigInt64: true });
|
|
90
147
|
if (msg.Error) {
|
|
91
148
|
cleanup();
|
|
149
|
+
if (collectedRoutes.length > 0) {
|
|
150
|
+
resolve(selectUsableRoutes(collectedRoutes));
|
|
151
|
+
return;
|
|
152
|
+
}
|
|
92
153
|
reject(new Error(`Titan API error [${msg.Error.code}]: ${msg.Error.message}`));
|
|
93
154
|
return;
|
|
94
155
|
}
|
|
@@ -96,15 +157,14 @@ function fetchBestRoute(auth, params) {
|
|
|
96
157
|
const quotes = msg.StreamData.payload?.SwapQuotes;
|
|
97
158
|
if (!quotes)
|
|
98
159
|
return;
|
|
99
|
-
|
|
100
|
-
if (best) {
|
|
101
|
-
cleanup();
|
|
102
|
-
resolve(best);
|
|
103
|
-
return;
|
|
104
|
-
}
|
|
160
|
+
collectedRoutes.push(...Object.values(quotes.quotes).filter(isUsableTitanRoute));
|
|
105
161
|
}
|
|
106
162
|
if (msg.StreamEnd) {
|
|
107
163
|
cleanup();
|
|
164
|
+
if (collectedRoutes.length > 0) {
|
|
165
|
+
resolve(selectUsableRoutes(collectedRoutes));
|
|
166
|
+
return;
|
|
167
|
+
}
|
|
108
168
|
const err = msg.StreamEnd.errorMessage
|
|
109
169
|
? `Titan stream ended with error [${msg.StreamEnd.errorCode}]: ${msg.StreamEnd.errorMessage}`
|
|
110
170
|
: "Titan stream ended unexpectedly";
|
|
@@ -113,10 +173,10 @@ function fetchBestRoute(auth, params) {
|
|
|
113
173
|
});
|
|
114
174
|
});
|
|
115
175
|
}
|
|
116
|
-
function
|
|
176
|
+
function selectUsableRoutes(routes) {
|
|
117
177
|
return [...routes]
|
|
118
178
|
.sort((a, b) => (a.outAmount > b.outAmount ? -1 : a.outAmount < b.outAmount ? 1 : 0))
|
|
119
|
-
.
|
|
179
|
+
.filter(isUsableTitanRoute);
|
|
120
180
|
}
|
|
121
181
|
function isUsableTitanRoute(route) {
|
|
122
182
|
if (route.transaction) {
|
|
@@ -126,6 +186,80 @@ function isUsableTitanRoute(route) {
|
|
|
126
186
|
return ix.d.length >= 8 && Buffer.from(ix.d.subarray(0, 8)).equals(SWAP_ROUTE_V2_DISCRIMINATOR);
|
|
127
187
|
}) ?? false);
|
|
128
188
|
}
|
|
189
|
+
function sleep(ms) {
|
|
190
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
191
|
+
}
|
|
192
|
+
function asError(error) {
|
|
193
|
+
return error instanceof Error ? error : new Error(String(error));
|
|
194
|
+
}
|
|
195
|
+
async function buildQuoteResult(connection, route) {
|
|
196
|
+
const addressLookupTableAddresses = (route.addressLookupTables ?? []).map((bytes) => new web3_js_1.PublicKey(bytes));
|
|
197
|
+
if (route.transaction) {
|
|
198
|
+
const vTx = web3_js_1.VersionedTransaction.deserialize(new Uint8Array(route.transaction));
|
|
199
|
+
const instruction = await extractSwapInstruction(connection, vTx);
|
|
200
|
+
return { instruction, addressLookupTableAddresses };
|
|
201
|
+
}
|
|
202
|
+
if (route.instructions && route.instructions.length > 0) {
|
|
203
|
+
const swapIx = route.instructions.find((ix) => {
|
|
204
|
+
return ix.d.length >= 8 && Buffer.from(ix.d.subarray(0, 8)).equals(SWAP_ROUTE_V2_DISCRIMINATOR);
|
|
205
|
+
});
|
|
206
|
+
if (swapIx) {
|
|
207
|
+
const instruction = new web3_js_1.TransactionInstruction({
|
|
208
|
+
programId: new web3_js_1.PublicKey(swapIx.p),
|
|
209
|
+
keys: swapIx.a.map((acc) => ({
|
|
210
|
+
pubkey: new web3_js_1.PublicKey(acc.p),
|
|
211
|
+
isSigner: acc.s,
|
|
212
|
+
isWritable: acc.w,
|
|
213
|
+
})),
|
|
214
|
+
data: Buffer.from(swapIx.d),
|
|
215
|
+
});
|
|
216
|
+
return { instruction: sanitizeTitanInstructionForBundles(instruction), addressLookupTableAddresses };
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
throw new Error("Titan route has neither transaction bytes nor a SwapRouteV2 instruction");
|
|
220
|
+
}
|
|
221
|
+
function rewriteTitanQuoteForOwner(params) {
|
|
222
|
+
return {
|
|
223
|
+
instruction: rewriteTitanInstructionForOwner(params.quote.instruction, params.quotedUserPublicKey, params.actualUserPublicKey),
|
|
224
|
+
addressLookupTableAddresses: params.quote.addressLookupTableAddresses,
|
|
225
|
+
};
|
|
226
|
+
}
|
|
227
|
+
function rewriteTitanInstructionForOwner(instruction, quotedUserPublicKey, actualUserPublicKey) {
|
|
228
|
+
const rewrittenKeys = instruction.keys.map((key) => ({
|
|
229
|
+
pubkey: key.pubkey,
|
|
230
|
+
isSigner: key.isSigner,
|
|
231
|
+
isWritable: key.isWritable,
|
|
232
|
+
}));
|
|
233
|
+
const inputMint = instruction.keys[TITAN_INPUT_MINT_ACCOUNT_INDEX]?.pubkey;
|
|
234
|
+
const outputMint = instruction.keys[TITAN_OUTPUT_MINT_ACCOUNT_INDEX]?.pubkey;
|
|
235
|
+
const inputTokenProgram = instruction.keys[TITAN_INPUT_TOKEN_PROGRAM_ACCOUNT_INDEX]?.pubkey ?? spl_token_1.TOKEN_PROGRAM_ID;
|
|
236
|
+
const outputTokenProgram = instruction.keys[TITAN_OUTPUT_TOKEN_PROGRAM_ACCOUNT_INDEX]?.pubkey ?? spl_token_1.TOKEN_PROGRAM_ID;
|
|
237
|
+
const replacePubkey = (from, to) => {
|
|
238
|
+
for (const key of rewrittenKeys) {
|
|
239
|
+
if (key.pubkey.equals(from)) {
|
|
240
|
+
key.pubkey = to;
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
};
|
|
244
|
+
replacePubkey(quotedUserPublicKey, actualUserPublicKey);
|
|
245
|
+
if (inputMint) {
|
|
246
|
+
replacePubkey((0, spl_token_1.getAssociatedTokenAddressSync)(inputMint, quotedUserPublicKey, true, inputTokenProgram), (0, spl_token_1.getAssociatedTokenAddressSync)(inputMint, actualUserPublicKey, true, inputTokenProgram));
|
|
247
|
+
}
|
|
248
|
+
if (outputMint) {
|
|
249
|
+
replacePubkey((0, spl_token_1.getAssociatedTokenAddressSync)(outputMint, quotedUserPublicKey, true, outputTokenProgram), (0, spl_token_1.getAssociatedTokenAddressSync)(outputMint, actualUserPublicKey, true, outputTokenProgram));
|
|
250
|
+
}
|
|
251
|
+
return new web3_js_1.TransactionInstruction({
|
|
252
|
+
programId: instruction.programId,
|
|
253
|
+
keys: rewrittenKeys,
|
|
254
|
+
data: instruction.data,
|
|
255
|
+
});
|
|
256
|
+
}
|
|
257
|
+
function isVaultCompatibleQuote(instruction, userPublicKey) {
|
|
258
|
+
if (instruction.keys.some((key) => TITAN_VAULT_INCOMPATIBLE_PROGRAM_IDS.has(key.pubkey.toBase58()))) {
|
|
259
|
+
return false;
|
|
260
|
+
}
|
|
261
|
+
return !instruction.keys.some((key) => key.isSigner && !key.pubkey.equals(userPublicKey));
|
|
262
|
+
}
|
|
129
263
|
async function extractSwapInstruction(connection, vTx) {
|
|
130
264
|
const message = vTx.message;
|
|
131
265
|
let lookupTableAccounts = [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"titan-quote.js","sourceRoot":"","sources":["../../src/exponentVaults/titan-quote.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"titan-quote.js","sourceRoot":"","sources":["../../src/exponentVaults/titan-quote.ts"],"names":[],"mappings":"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"}
|