@carrot-protocol/clend-rpc 0.1.26-p-withdraw-dev-e12dfc4 → 0.1.27-group-refactor1-dev-5488543
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/dist/idl/clend.d.ts +4 -1
- package/dist/idl/clend.js +4 -1
- package/dist/idl/clend.js.map +1 -1
- package/dist/index.d.ts +2 -3
- package/dist/index.js +5 -5
- package/dist/index.js.map +1 -1
- package/dist/instructions.d.ts +4 -3
- package/dist/instructions.js +31 -4
- package/dist/instructions.js.map +1 -1
- package/dist/rpc.d.ts +27 -34
- package/dist/rpc.js +282 -160
- package/dist/rpc.js.map +1 -1
- package/dist/state.d.ts +16 -1
- package/dist/state.js +11 -2
- package/dist/state.js.map +1 -1
- package/dist/swapper/index.d.ts +3 -0
- package/dist/swapper/index.js +8 -0
- package/dist/swapper/index.js.map +1 -0
- package/dist/swapper/interface.d.ts +58 -0
- package/dist/swapper/interface.js +3 -0
- package/dist/swapper/interface.js.map +1 -0
- package/dist/swapper/jupiterSwapper.d.ts +15 -0
- package/dist/swapper/jupiterSwapper.js +85 -0
- package/dist/swapper/jupiterSwapper.js.map +1 -0
- package/dist/swapper/mockJupiterSwapper.d.ts +19 -0
- package/dist/swapper/mockJupiterSwapper.js +89 -0
- package/dist/swapper/mockJupiterSwapper.js.map +1 -0
- package/dist/utils.d.ts +29 -0
- package/dist/utils.js +67 -0
- package/dist/utils.js.map +1 -1
- package/package.json +1 -1
- package/dist/jupiterUtils.d.ts +0 -65
- package/dist/jupiterUtils.js +0 -174
- package/dist/jupiterUtils.js.map +0 -1
- package/dist/mockJupiterUtils.d.ts +0 -54
- package/dist/mockJupiterUtils.js +0 -75
- package/dist/mockJupiterUtils.js.map +0 -1
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.JupiterSwapper = void 0;
|
|
4
|
+
const anchor_1 = require("@coral-xyz/anchor");
|
|
5
|
+
const api_1 = require("@jup-ag/api");
|
|
6
|
+
const QUOTE_URL = "https://quote-api.jup.ag/v6";
|
|
7
|
+
// This class now implements the new ISwapper interface
|
|
8
|
+
class JupiterSwapper {
|
|
9
|
+
constructor(apiKey) {
|
|
10
|
+
this.jupiterApi = (0, api_1.createJupiterApiClient)({
|
|
11
|
+
basePath: QUOTE_URL,
|
|
12
|
+
apiKey,
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Implements the getQuote method from the ISwapper interface.
|
|
17
|
+
* It takes a standardized QuoteRequest and returns a standardized SwapQuote.
|
|
18
|
+
*/
|
|
19
|
+
async getQuote(request) {
|
|
20
|
+
const { inputMint, outputMint, inputAmount, swapMode, slippageBps } = request;
|
|
21
|
+
const quoteResponse = await this.jupiterApi.quoteGet({
|
|
22
|
+
inputMint: inputMint.toBase58(),
|
|
23
|
+
outputMint: outputMint.toBase58(),
|
|
24
|
+
amount: inputAmount.toNumber(),
|
|
25
|
+
slippageBps,
|
|
26
|
+
swapMode,
|
|
27
|
+
onlyDirectRoutes: true, // Keep this for leverage looping safety
|
|
28
|
+
});
|
|
29
|
+
// Populate the standardized SwapQuote object
|
|
30
|
+
return {
|
|
31
|
+
payer: request.payer,
|
|
32
|
+
inAmount: new anchor_1.BN(quoteResponse.inAmount),
|
|
33
|
+
outAmount: new anchor_1.BN(quoteResponse.outAmount),
|
|
34
|
+
otherAmountThreshold: new anchor_1.BN(quoteResponse.otherAmountThreshold),
|
|
35
|
+
swapperData: quoteResponse,
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Implements the getSwapIxns method from the ISwapper interface.
|
|
40
|
+
* It takes a standardized SwapQuote and returns standardized SwapIxns.
|
|
41
|
+
*/
|
|
42
|
+
async getSwapIxns(quote) {
|
|
43
|
+
// Cast the swapperData object back to its specific type
|
|
44
|
+
const jupQuoteResponse = quote.swapperData;
|
|
45
|
+
const { swapInstruction, addressLookupTableAddresses, setupInstructions, cleanupInstruction, } = await this.jupiterApi.swapInstructionsPost({
|
|
46
|
+
swapRequest: {
|
|
47
|
+
userPublicKey: quote.payer.toBase58(),
|
|
48
|
+
quoteResponse: jupQuoteResponse,
|
|
49
|
+
computeUnitPriceMicroLamports: 1,
|
|
50
|
+
wrapAndUnwrapSol: false, // TODO: may need to change this
|
|
51
|
+
destinationTokenAccount: undefined,
|
|
52
|
+
useSharedAccounts: false,
|
|
53
|
+
feeAccount: undefined,
|
|
54
|
+
skipUserAccountsRpcCalls: true,
|
|
55
|
+
},
|
|
56
|
+
});
|
|
57
|
+
const allIxs = [
|
|
58
|
+
...transformResponseIxs(setupInstructions ?? []),
|
|
59
|
+
transformResponseIx(swapInstruction),
|
|
60
|
+
...transformResponseIxs(cleanupInstruction ? [cleanupInstruction] : []),
|
|
61
|
+
];
|
|
62
|
+
// Populate the standardized SwapIxns object
|
|
63
|
+
return {
|
|
64
|
+
ixns: allIxs,
|
|
65
|
+
luts: addressLookupTableAddresses.map((key) => new anchor_1.web3.PublicKey(key)),
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
exports.JupiterSwapper = JupiterSwapper;
|
|
70
|
+
// Helper functions remain the same
|
|
71
|
+
function transformResponseIxs(instructions) {
|
|
72
|
+
return instructions.map(transformResponseIx);
|
|
73
|
+
}
|
|
74
|
+
function transformResponseIx(instruction) {
|
|
75
|
+
return new anchor_1.web3.TransactionInstruction({
|
|
76
|
+
programId: new anchor_1.web3.PublicKey(instruction.programId),
|
|
77
|
+
keys: instruction.accounts.map((account) => ({
|
|
78
|
+
pubkey: new anchor_1.web3.PublicKey(account.pubkey),
|
|
79
|
+
isSigner: account.isSigner,
|
|
80
|
+
isWritable: account.isWritable,
|
|
81
|
+
})),
|
|
82
|
+
data: Buffer.from(instruction.data, "base64"),
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=jupiterSwapper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jupiterSwapper.js","sourceRoot":"","sources":["../../src/swapper/jupiterSwapper.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { web3 } from "@coral-xyz/anchor";
|
|
2
|
+
import { ISwapper, QuoteRequest, SwapQuote, SwapIxns } from "./interface";
|
|
3
|
+
/**
|
|
4
|
+
* A fully self-contained mock for the ISwapper interface.
|
|
5
|
+
* It simulates swaps based on prices set in the test.
|
|
6
|
+
*/
|
|
7
|
+
export declare class MockJupiterSwapper implements ISwapper {
|
|
8
|
+
private mockSwaps;
|
|
9
|
+
private mockPrices;
|
|
10
|
+
constructor();
|
|
11
|
+
setPrice(mint: web3.PublicKey, price: number): void;
|
|
12
|
+
setMockSwap(request: QuoteRequest, swapIxns: SwapIxns): void;
|
|
13
|
+
/**
|
|
14
|
+
* Generates a realistic SwapQuote based on the mock prices.
|
|
15
|
+
*/
|
|
16
|
+
getQuote(request: QuoteRequest): Promise<SwapQuote>;
|
|
17
|
+
getSwapIxns(quote: SwapQuote): Promise<SwapIxns>;
|
|
18
|
+
private getQuoteKey;
|
|
19
|
+
}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.MockJupiterSwapper = void 0;
|
|
7
|
+
const anchor_1 = require("@coral-xyz/anchor");
|
|
8
|
+
const decimal_js_1 = __importDefault(require("decimal.js"));
|
|
9
|
+
const clend_common_1 = require("@carrot-protocol/clend-common");
|
|
10
|
+
/**
|
|
11
|
+
* A fully self-contained mock for the ISwapper interface.
|
|
12
|
+
* It simulates swaps based on prices set in the test.
|
|
13
|
+
*/
|
|
14
|
+
class MockJupiterSwapper {
|
|
15
|
+
constructor() {
|
|
16
|
+
this.mockSwaps = new Map();
|
|
17
|
+
this.mockPrices = new Map();
|
|
18
|
+
}
|
|
19
|
+
// NEW: Method to set a mock price for a mint
|
|
20
|
+
setPrice(mint, price) {
|
|
21
|
+
this.mockPrices.set(mint.toString(), price);
|
|
22
|
+
}
|
|
23
|
+
setMockSwap(request, swapIxns) {
|
|
24
|
+
const key = this.getQuoteKey(request);
|
|
25
|
+
this.mockSwaps.set(key, swapIxns);
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Generates a realistic SwapQuote based on the mock prices.
|
|
29
|
+
*/
|
|
30
|
+
async getQuote(request) {
|
|
31
|
+
const inputPrice = this.mockPrices.get(request.inputMint.toString());
|
|
32
|
+
const outputPrice = this.mockPrices.get(request.outputMint.toString());
|
|
33
|
+
if (inputPrice === undefined || outputPrice === undefined) {
|
|
34
|
+
throw new Error(`MockJupiterSwapper: Price not set for mints ${request.inputMint.toString()} or ${request.outputMint.toString()}`);
|
|
35
|
+
}
|
|
36
|
+
let calculatedInAmount = request.inputAmount;
|
|
37
|
+
let calculatedOutAmount;
|
|
38
|
+
// Simulate the swap based on price and swap mode
|
|
39
|
+
if (request.swapMode === "ExactIn") {
|
|
40
|
+
const inputAmountUi = (0, clend_common_1.amountToUi)(request.inputAmount, request.inputMintDecimals);
|
|
41
|
+
const inputValue = new decimal_js_1.default(inputAmountUi).mul(inputPrice);
|
|
42
|
+
const outputAmountUi = inputValue.div(outputPrice);
|
|
43
|
+
calculatedOutAmount = (0, clend_common_1.uiToAmount)(outputAmountUi.toNumber(), request.outputMintDecimals);
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
// ExactOut
|
|
47
|
+
const outputAmountUi = (0, clend_common_1.amountToUi)(request.inputAmount, request.outputMintDecimals);
|
|
48
|
+
const outputValue = new decimal_js_1.default(outputAmountUi).mul(outputPrice);
|
|
49
|
+
const inputAmountUi = outputValue.div(inputPrice);
|
|
50
|
+
calculatedInAmount = (0, clend_common_1.uiToAmount)(inputAmountUi.toNumber(), request.inputMintDecimals);
|
|
51
|
+
calculatedOutAmount = request.inputAmount;
|
|
52
|
+
}
|
|
53
|
+
// Calculate the otherAmountThreshold based on slippage
|
|
54
|
+
const slippageFactor = new decimal_js_1.default(request.slippageBps).div(10000);
|
|
55
|
+
const slippage = new decimal_js_1.default(calculatedOutAmount.toString()).mul(slippageFactor);
|
|
56
|
+
const otherAmountThreshold = new anchor_1.BN(new decimal_js_1.default(calculatedOutAmount.toString())
|
|
57
|
+
.minus(slippage)
|
|
58
|
+
.floor()
|
|
59
|
+
.toFixed());
|
|
60
|
+
return {
|
|
61
|
+
payer: request.payer,
|
|
62
|
+
inAmount: calculatedInAmount,
|
|
63
|
+
outAmount: calculatedOutAmount,
|
|
64
|
+
otherAmountThreshold: otherAmountThreshold,
|
|
65
|
+
swapperData: {
|
|
66
|
+
originalRequest: request,
|
|
67
|
+
},
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
// getSwapIxns and getQuoteKey remain the same as the previous version
|
|
71
|
+
async getSwapIxns(quote) {
|
|
72
|
+
const { originalRequest } = quote.swapperData;
|
|
73
|
+
if (!originalRequest) {
|
|
74
|
+
throw new Error("MockJupiterSwapper: swapperData is missing originalRequest. Ensure getQuote is implemented correctly in the mock.");
|
|
75
|
+
}
|
|
76
|
+
const key = this.getQuoteKey(originalRequest);
|
|
77
|
+
const swapIxns = this.mockSwaps.get(key);
|
|
78
|
+
if (!swapIxns) {
|
|
79
|
+
throw new Error(`MockJupiterSwapper: Mock swap not set for key: ${key}`);
|
|
80
|
+
}
|
|
81
|
+
return swapIxns;
|
|
82
|
+
}
|
|
83
|
+
getQuoteKey(request) {
|
|
84
|
+
const { inputMint, outputMint, swapMode } = request;
|
|
85
|
+
return `${inputMint.toString()}-${outputMint.toString()}-${swapMode}`;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
exports.MockJupiterSwapper = MockJupiterSwapper;
|
|
89
|
+
//# sourceMappingURL=mockJupiterSwapper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mockJupiterSwapper.js","sourceRoot":"","sources":["../../src/swapper/mockJupiterSwapper.ts"],"names":[],"mappings":";;;;;;AAAA,8CAA6C;AAQ7C,4DAAiC;AACjC,gEAAuE;AAEvE;;;GAGG;AACH,MAAa,kBAAkB;IAI7B;QACE,IAAI,CAAC,SAAS,GAAG,IAAI,GAAG,EAAE,CAAC;QAC3B,IAAI,CAAC,UAAU,GAAG,IAAI,GAAG,EAAE,CAAC;IAC9B,CAAC;IAED,6CAA6C;IAC7C,QAAQ,CAAC,IAAoB,EAAE,KAAa;QAC1C,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,KAAK,CAAC,CAAC;IAC9C,CAAC;IAED,WAAW,CAAC,OAAqB,EAAE,QAAkB;QACnD,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QACtC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IACpC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAQ,CAAC,OAAqB;QAClC,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC;QACrE,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC;QAEvE,IAAI,UAAU,KAAK,SAAS,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;YAC1D,MAAM,IAAI,KAAK,CACb,+CAA+C,OAAO,CAAC,SAAS,CAAC,QAAQ,EAAE,OAAO,OAAO,CAAC,UAAU,CAAC,QAAQ,EAAE,EAAE,CAClH,CAAC;QACJ,CAAC;QAED,IAAI,kBAAkB,GAAG,OAAO,CAAC,WAAW,CAAC;QAC7C,IAAI,mBAAuB,CAAC;QAE5B,iDAAiD;QACjD,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YACnC,MAAM,aAAa,GAAG,IAAA,yBAAU,EAC9B,OAAO,CAAC,WAAW,EACnB,OAAO,CAAC,iBAAiB,CAC1B,CAAC;YACF,MAAM,UAAU,GAAG,IAAI,oBAAO,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YAC9D,MAAM,cAAc,GAAG,UAAU,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YACnD,mBAAmB,GAAG,IAAA,yBAAU,EAC9B,cAAc,CAAC,QAAQ,EAAE,EACzB,OAAO,CAAC,kBAAkB,CAC3B,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,WAAW;YACX,MAAM,cAAc,GAAG,IAAA,yBAAU,EAC/B,OAAO,CAAC,WAAW,EACnB,OAAO,CAAC,kBAAkB,CAC3B,CAAC;YACF,MAAM,WAAW,GAAG,IAAI,oBAAO,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YACjE,MAAM,aAAa,GAAG,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YAClD,kBAAkB,GAAG,IAAA,yBAAU,EAC7B,aAAa,CAAC,QAAQ,EAAE,EACxB,OAAO,CAAC,iBAAiB,CAC1B,CAAC;YACF,mBAAmB,GAAG,OAAO,CAAC,WAAW,CAAC;QAC5C,CAAC;QAED,uDAAuD;QACvD,MAAM,cAAc,GAAG,IAAI,oBAAO,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACnE,MAAM,QAAQ,GAAG,IAAI,oBAAO,CAAC,mBAAmB,CAAC,QAAQ,EAAE,CAAC,CAAC,GAAG,CAC9D,cAAc,CACf,CAAC;QACF,MAAM,oBAAoB,GAAG,IAAI,WAAE,CACjC,IAAI,oBAAO,CAAC,mBAAmB,CAAC,QAAQ,EAAE,CAAC;aACxC,KAAK,CAAC,QAAQ,CAAC;aACf,KAAK,EAAE;aACP,OAAO,EAAE,CACb,CAAC;QAEF,OAAO;YACL,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,QAAQ,EAAE,kBAAkB;YAC5B,SAAS,EAAE,mBAAmB;YAC9B,oBAAoB,EAAE,oBAAoB;YAC1C,WAAW,EAAE;gBACX,eAAe,EAAE,OAAO;aACzB;SACF,CAAC;IACJ,CAAC;IAED,sEAAsE;IACtE,KAAK,CAAC,WAAW,CAAC,KAAgB;QAChC,MAAM,EAAE,eAAe,EAAE,GAAG,KAAK,CAAC,WAAW,CAAC;QAC9C,IAAI,CAAC,eAAe,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CACb,mHAAmH,CACpH,CAAC;QACJ,CAAC;QACD,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;QAC9C,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACzC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CAAC,kDAAkD,GAAG,EAAE,CAAC,CAAC;QAC3E,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAEO,WAAW,CAAC,OAAqB;QACvC,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;QACpD,OAAO,GAAG,SAAS,CAAC,QAAQ,EAAE,IAAI,UAAU,CAAC,QAAQ,EAAE,IAAI,QAAQ,EAAE,CAAC;IACxE,CAAC;CACF;AAzGD,gDAyGC"}
|
package/dist/utils.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { BN, web3 } from "@coral-xyz/anchor";
|
|
2
|
+
import Decimal from "decimal.js";
|
|
2
3
|
import { WrappedI80F48, InterestRateConfig, BankConfig, Bank, ClendAccount, OracleSetup, RiskTier, BankOperationalState, AssetTag } from "./state";
|
|
3
4
|
import winston from "winston";
|
|
4
5
|
export declare const LIQUIDATION_LIQUIDATOR_FEE = 0.025;
|
|
@@ -23,3 +24,31 @@ export declare function getClendAccountActiveBanks(clendAccount: ClendAccount):
|
|
|
23
24
|
export declare function getClendAccountRemainingAccounts(banks: Bank[]): web3.AccountMeta[];
|
|
24
25
|
export declare function getLiquidateClendAccountRemainingAccounts(liquidateeClendAccount: ClendAccount, liquidatorClendAccount: ClendAccount, liabilityMint: web3.PublicKey, liabilityMintTokenProgram: web3.PublicKey, assetMint: web3.PublicKey, mintOracleMapping: Map<string, string>): web3.AccountMeta[];
|
|
25
26
|
export declare const logger: winston.Logger;
|
|
27
|
+
export declare function calculatePriceUi(price: number, exponent: number): number;
|
|
28
|
+
export declare function calculatePriceUiDecimal(price: Decimal, exponent: number): number;
|
|
29
|
+
/**
|
|
30
|
+
* @interface OracleSubmission
|
|
31
|
+
* @notice Represents the structure of a single oracle submission within the PullFeedAccountData.
|
|
32
|
+
* @dev This matches the 'OracleSubmission' type defined in the Switchboard program's IDL.
|
|
33
|
+
*/
|
|
34
|
+
interface OracleSubmission {
|
|
35
|
+
oracle: web3.PublicKey;
|
|
36
|
+
slot: BN;
|
|
37
|
+
landed_at: BN;
|
|
38
|
+
value: BN;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* @interface ParsedPullFeedAccountData
|
|
42
|
+
* @notice Defines the structure for our manually parsed data.
|
|
43
|
+
*/
|
|
44
|
+
interface ParsedPullFeedAccountData {
|
|
45
|
+
submissions: OracleSubmission[];
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* @function parsePullFeedAccountData
|
|
49
|
+
* @notice Manually parses the raw buffer of a Switchboard PullFeedAccountData account.
|
|
50
|
+
* @param data The raw account data buffer from connection.getAccountInfo().
|
|
51
|
+
* @returns An object containing the parsed submissions, sorted by slot descending.
|
|
52
|
+
*/
|
|
53
|
+
export declare function parsePullFeedAccountData(data: Buffer): ParsedPullFeedAccountData;
|
|
54
|
+
export {};
|
package/dist/utils.js
CHANGED
|
@@ -17,6 +17,9 @@ exports.parseBankConfig = parseBankConfig;
|
|
|
17
17
|
exports.getClendAccountActiveBanks = getClendAccountActiveBanks;
|
|
18
18
|
exports.getClendAccountRemainingAccounts = getClendAccountRemainingAccounts;
|
|
19
19
|
exports.getLiquidateClendAccountRemainingAccounts = getLiquidateClendAccountRemainingAccounts;
|
|
20
|
+
exports.calculatePriceUi = calculatePriceUi;
|
|
21
|
+
exports.calculatePriceUiDecimal = calculatePriceUiDecimal;
|
|
22
|
+
exports.parsePullFeedAccountData = parsePullFeedAccountData;
|
|
20
23
|
const anchor_1 = require("@coral-xyz/anchor");
|
|
21
24
|
const decimal_js_1 = __importDefault(require("decimal.js"));
|
|
22
25
|
const state_1 = require("./state");
|
|
@@ -35,6 +38,9 @@ function getTokenProgramForMint(mint) {
|
|
|
35
38
|
else if (mint.equals(state_1.JLP_MINT)) {
|
|
36
39
|
return state_1.TOKEN_PROGRAMS.JLP;
|
|
37
40
|
}
|
|
41
|
+
else if (mint.equals(state_1.ALP_MINT)) {
|
|
42
|
+
return state_1.TOKEN_PROGRAMS.ALP;
|
|
43
|
+
}
|
|
38
44
|
else {
|
|
39
45
|
throw new Error(`Unsupported mint: ${mint.toString()}`);
|
|
40
46
|
}
|
|
@@ -49,6 +55,9 @@ function getTokenDecimalsForMint(mint) {
|
|
|
49
55
|
else if (mint.equals(state_1.JLP_MINT)) {
|
|
50
56
|
return state_1.TOKEN_DECIMALS.JLP;
|
|
51
57
|
}
|
|
58
|
+
else if (mint.equals(state_1.ALP_MINT)) {
|
|
59
|
+
return state_1.TOKEN_DECIMALS.ALP;
|
|
60
|
+
}
|
|
52
61
|
else {
|
|
53
62
|
throw new Error(`Unsupported mint: ${mint.toString()}`);
|
|
54
63
|
}
|
|
@@ -183,6 +192,8 @@ function parseOracleSetup(data) {
|
|
|
183
192
|
return state_1.OracleSetup.PythPushOracle;
|
|
184
193
|
if (data === 3)
|
|
185
194
|
return state_1.OracleSetup.StakedWithPythPush;
|
|
195
|
+
if (data === 4)
|
|
196
|
+
return state_1.OracleSetup.SwitchboardPull;
|
|
186
197
|
throw new Error(`Invalid oracle setup number: ${data}`);
|
|
187
198
|
}
|
|
188
199
|
// Handle object format
|
|
@@ -198,6 +209,9 @@ function parseOracleSetup(data) {
|
|
|
198
209
|
else if (data.stakedWithPythPush) {
|
|
199
210
|
return state_1.OracleSetup.StakedWithPythPush;
|
|
200
211
|
}
|
|
212
|
+
else if (data.switchboardPull) {
|
|
213
|
+
return state_1.OracleSetup.SwitchboardPull;
|
|
214
|
+
}
|
|
201
215
|
throw new Error(`Invalid oracle setup format: ${JSON.stringify(data)}`);
|
|
202
216
|
}
|
|
203
217
|
function parseBankConfig(data) {
|
|
@@ -325,4 +339,57 @@ exports.logger = winston_1.default.createLogger({
|
|
|
325
339
|
}), winston_1.default.format.json()),
|
|
326
340
|
transports: [new winston_1.default.transports.Console()],
|
|
327
341
|
});
|
|
342
|
+
// for oracles
|
|
343
|
+
function calculatePriceUi(price, exponent) {
|
|
344
|
+
return price / Math.pow(10, Math.abs(exponent));
|
|
345
|
+
}
|
|
346
|
+
function calculatePriceUiDecimal(price, exponent) {
|
|
347
|
+
return price
|
|
348
|
+
.dividedBy(new decimal_js_1.default(10).pow(exponent))
|
|
349
|
+
.toDecimalPlaces(6)
|
|
350
|
+
.toNumber();
|
|
351
|
+
}
|
|
352
|
+
/**
|
|
353
|
+
* @function parsePullFeedAccountData
|
|
354
|
+
* @notice Manually parses the raw buffer of a Switchboard PullFeedAccountData account.
|
|
355
|
+
* @param data The raw account data buffer from connection.getAccountInfo().
|
|
356
|
+
* @returns An object containing the parsed submissions, sorted by slot descending.
|
|
357
|
+
*/
|
|
358
|
+
function parsePullFeedAccountData(data) {
|
|
359
|
+
// 1. Verify the 8-byte discriminator to ensure we're parsing the correct account type.
|
|
360
|
+
const discriminator = Buffer.from([196, 27, 108, 196, 10, 215, 219, 40]);
|
|
361
|
+
const accountDiscriminator = data.slice(0, 8);
|
|
362
|
+
//if (discriminator.compare(accountDiscriminator) !== 0) {
|
|
363
|
+
// throw new Error(
|
|
364
|
+
// "Invalid account discriminator. Expected PullFeedAccountData.",
|
|
365
|
+
// );
|
|
366
|
+
//}
|
|
367
|
+
// 2. Define the layout and size of an OracleSubmission struct based on the IDL.
|
|
368
|
+
// pubkey (32) + u64 (8) + u64 (8) + i128 (16) = 64 bytes
|
|
369
|
+
const submissionSize = 64;
|
|
370
|
+
const submissionsOffset = 8; // Data starts after the 8-byte discriminator.
|
|
371
|
+
const numSubmissions = 32; // The 'submissions' field is a fixed-size array [OracleSubmission; 32].
|
|
372
|
+
const submissions = [];
|
|
373
|
+
// 3. Loop through the buffer and parse each submission.
|
|
374
|
+
for (let i = 0; i < numSubmissions; i++) {
|
|
375
|
+
const currentOffset = submissionsOffset + i * submissionSize;
|
|
376
|
+
const submissionBuffer = data.slice(currentOffset, currentOffset + submissionSize);
|
|
377
|
+
// An empty submission slot will have a zeroed-out oracle public key.
|
|
378
|
+
const oraclePkBytes = submissionBuffer.slice(0, 32);
|
|
379
|
+
if (oraclePkBytes.every((byte) => byte === 0)) {
|
|
380
|
+
continue; // Skip empty/uninitialized submission slots.
|
|
381
|
+
}
|
|
382
|
+
// Parse the fields for a single submission.
|
|
383
|
+
const oracle = new anchor_1.web3.PublicKey(oraclePkBytes);
|
|
384
|
+
const slot = new anchor_1.BN(submissionBuffer.slice(32, 40), "le");
|
|
385
|
+
const landed_at = new anchor_1.BN(submissionBuffer.slice(40, 48), "le");
|
|
386
|
+
// For the signed 128-bit integer (i128), we read it as little-endian
|
|
387
|
+
// and then convert it from two's complement to get the correct signed value.
|
|
388
|
+
const value = new anchor_1.BN(submissionBuffer.slice(48, 64), "le").fromTwos(128);
|
|
389
|
+
submissions.push({ oracle, slot, landed_at, value });
|
|
390
|
+
}
|
|
391
|
+
// 4. Sort submissions by slot in descending order to easily find the latest.
|
|
392
|
+
submissions.sort((a, b) => b.slot.cmp(a.slot));
|
|
393
|
+
return { submissions };
|
|
394
|
+
}
|
|
328
395
|
//# sourceMappingURL=utils.js.map
|
package/dist/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";;;;;;AA8BA,wDAUC;AAKD,0DAUC;AAMD,4DAoBC;AAED,4DA6BC;AAED,0DAqBC;AAED,sCAgBC;AAED,sDAmBC;AAED,sCAmBC;AAED,4CAyBC;AAED,0CAqBC;AAGD,gEAMC;AAKD,4EAmBC;AAWD,8FAmFC;AAuBD,4CAEC;AAED,0DAQC;AAiCD,4DAkDC;AA1eD,8CAA6C;AAC7C,4DAAiC;AACjC,mCAiBiB;AACjB,sDAA8B;AAC9B,iDAA0D;AAE1D,6BAA6B;AAChB,QAAA,0BAA0B,GAAG,KAAK,CAAC;AACnC,QAAA,yBAAyB,GAAG,KAAK,CAAC;AAE/C;;GAEG;AACH,SAAgB,sBAAsB,CAAC,IAAoB;IACzD,IAAI,IAAI,CAAC,MAAM,CAAC,iBAAS,CAAC,EAAE,CAAC;QAC3B,OAAO,sBAAc,CAAC,IAAI,CAAC;IAC7B,CAAC;SAAM,IAAI,IAAI,CAAC,MAAM,CAAC,gBAAQ,CAAC,EAAE,CAAC;QACjC,OAAO,sBAAc,CAAC,GAAG,CAAC;IAC5B,CAAC;SAAM,IAAI,IAAI,CAAC,MAAM,CAAC,gBAAQ,CAAC,EAAE,CAAC;QACjC,OAAO,sBAAc,CAAC,GAAG,CAAC;IAC5B,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,KAAK,CAAC,qBAAqB,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IAC1D,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAgB,uBAAuB,CAAC,IAAoB;IAC1D,IAAI,IAAI,CAAC,MAAM,CAAC,iBAAS,CAAC,EAAE,CAAC;QAC3B,OAAO,sBAAc,CAAC,IAAI,CAAC;IAC7B,CAAC;SAAM,IAAI,IAAI,CAAC,MAAM,CAAC,gBAAQ,CAAC,EAAE,CAAC;QACjC,OAAO,sBAAc,CAAC,GAAG,CAAC;IAC5B,CAAC;SAAM,IAAI,IAAI,CAAC,MAAM,CAAC,gBAAQ,CAAC,EAAE,CAAC;QACjC,OAAO,sBAAc,CAAC,GAAG,CAAC;IAC5B,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,KAAK,CAAC,qBAAqB,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IAC1D,CAAC;AACH,CAAC;AAED,MAAM,uBAAuB,GAAG,CAAC,CAAC;AAClC,MAAM,kBAAkB,GAAG,EAAE,CAAC;AAC9B,MAAM,cAAc,GAAG,IAAI,oBAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,uBAAuB,CAAC,CAAC;AAEvE,SAAgB,wBAAwB,CAAC,KAAkB;IACzD,IAAI,YAAY,GAAG,IAAI,oBAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;IACjD,MAAM,UAAU,GAAG,YAAY,CAAC,UAAU,EAAE,CAAC;IAE7C,YAAY,GAAG,YAAY,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IAClD,IAAI,YAAY,GAAG,IAAI,WAAE,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;IAEpE,IAAI,YAAY,CAAC,MAAM,GAAG,kBAAkB,EAAE,CAAC;QAC7C,MAAM,OAAO,GAAG,KAAK,CAAC,kBAAkB,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACxE,YAAY,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,CAAC;IACnC,CAAC;IAED,IAAI,UAAU,EAAE,CAAC;QACf,YAAY,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC;QAC9C,YAAY,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IAC5D,CAAC;IAED,YAAY,CAAC,OAAO,EAAE,CAAC;IAEvB,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC;AACjC,CAAC;AAED,SAAgB,wBAAwB,CAAC,OAAsB;IAC7D,IAAI,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC;IAC5B,IAAI,OAAO,CAAC,MAAM,KAAK,kBAAkB,EAAE,CAAC;QAC1C,MAAM,IAAI,KAAK,CAAC,cAAc,kBAAkB,cAAc,CAAC,CAAC;IAClE,CAAC;IAED,IAAI,OAAO,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;IAC9B,OAAO,CAAC,OAAO,EAAE,CAAC;IAElB,IAAI,QAAQ,GAAG,EAAE,CAAC;IAClB,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACvB,IAAI,GAAG,GAAG,IAAI,EAAE,CAAC;QACf,QAAQ,GAAG,GAAG,CAAC;QACf,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IAC1C,CAAC;IAED,IAAI,GAAG,GACL,QAAQ;QACR,IAAI;QACJ,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC/D,IAAI,OAAO,GAAG,IAAI,oBAAO,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IACzD,IAAI,KAAK,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAE/B,wCAAwC;IACxC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;IAED,OAAO,IAAI,WAAE,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AAED,SAAgB,uBAAuB,CAAC,IAAS;IAC/C,OAAO;QACL,sBAAsB,EAAE,MAAM,CAC5B,wBAAwB,CAAC,IAAI,CAAC,sBAAsB,CAAC,CACtD;QACD,mBAAmB,EAAE,MAAM,CACzB,wBAAwB,CAAC,IAAI,CAAC,mBAAmB,CAAC,CACnD;QACD,eAAe,EAAE,MAAM,CAAC,wBAAwB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QACvE,oBAAoB,EAAE,MAAM,CAC1B,wBAAwB,CAAC,IAAI,CAAC,oBAAoB,CAAC,CACpD;QACD,cAAc,EAAE,MAAM,CAAC,wBAAwB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACrE,mBAAmB,EAAE,MAAM,CACzB,wBAAwB,CAAC,IAAI,CAAC,mBAAmB,CAAC,CACnD;QACD,aAAa,EAAE,MAAM,CAAC,wBAAwB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACnE,sBAAsB,EAAE,MAAM,CAC5B,wBAAwB,CAAC,IAAI,CAAC,sBAAsB,CAAC,CACtD;KACF,CAAC;AACJ,CAAC;AAED,SAAgB,aAAa,CAAC,IAAS;IACrC,uBAAuB;IACvB,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC7B,IAAI,IAAI,KAAK,CAAC;YAAE,OAAO,gBAAQ,CAAC,UAAU,CAAC;QAC3C,IAAI,IAAI,KAAK,CAAC;YAAE,OAAO,gBAAQ,CAAC,QAAQ,CAAC;QACzC,MAAM,IAAI,KAAK,CAAC,6BAA6B,IAAI,EAAE,CAAC,CAAC;IACvD,CAAC;IAED,uBAAuB;IACvB,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;QACpB,OAAO,gBAAQ,CAAC,UAAU,CAAC;IAC7B,CAAC;SAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QACzB,OAAO,gBAAQ,CAAC,QAAQ,CAAC;IAC3B,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,6BAA6B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACvE,CAAC;AAED,SAAgB,qBAAqB,CAAC,IAAS;IAC7C,uBAAuB;IACvB,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC7B,IAAI,IAAI,KAAK,CAAC;YAAE,OAAO,4BAAoB,CAAC,MAAM,CAAC;QACnD,IAAI,IAAI,KAAK,CAAC;YAAE,OAAO,4BAAoB,CAAC,WAAW,CAAC;QACxD,IAAI,IAAI,KAAK,CAAC;YAAE,OAAO,4BAAoB,CAAC,UAAU,CAAC;QACvD,MAAM,IAAI,KAAK,CAAC,qCAAqC,IAAI,EAAE,CAAC,CAAC;IAC/D,CAAC;IAED,uBAAuB;IACvB,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QAChB,OAAO,4BAAoB,CAAC,MAAM,CAAC;IACrC,CAAC;SAAM,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;QAC5B,OAAO,4BAAoB,CAAC,WAAW,CAAC;IAC1C,CAAC;SAAM,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;QAC3B,OAAO,4BAAoB,CAAC,UAAU,CAAC;IACzC,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,qCAAqC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC/E,CAAC;AAED,SAAgB,aAAa,CAAC,IAAS;IACrC,uBAAuB;IACvB,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC7B,IAAI,IAAI,KAAK,CAAC;YAAE,OAAO,gBAAQ,CAAC,OAAO,CAAC;QACxC,IAAI,IAAI,KAAK,CAAC;YAAE,OAAO,gBAAQ,CAAC,GAAG,CAAC;QACpC,IAAI,IAAI,KAAK,CAAC;YAAE,OAAO,gBAAQ,CAAC,MAAM,CAAC;QACvC,MAAM,IAAI,KAAK,CAAC,6BAA6B,IAAI,EAAE,CAAC,CAAC;IACvD,CAAC;IAED,uBAAuB;IACvB,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QACjB,OAAO,gBAAQ,CAAC,OAAO,CAAC;IAC1B,CAAC;SAAM,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;QACpB,OAAO,gBAAQ,CAAC,GAAG,CAAC;IACtB,CAAC;SAAM,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QACvB,OAAO,gBAAQ,CAAC,MAAM,CAAC;IACzB,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,6BAA6B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACvE,CAAC;AAED,SAAgB,gBAAgB,CAAC,IAAS;IACxC,uBAAuB;IACvB,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC7B,IAAI,IAAI,KAAK,CAAC;YAAE,OAAO,mBAAW,CAAC,IAAI,CAAC;QACxC,IAAI,IAAI,KAAK,CAAC;YAAE,OAAO,mBAAW,CAAC,UAAU,CAAC;QAC9C,IAAI,IAAI,KAAK,CAAC;YAAE,OAAO,mBAAW,CAAC,cAAc,CAAC;QAClD,IAAI,IAAI,KAAK,CAAC;YAAE,OAAO,mBAAW,CAAC,kBAAkB,CAAC;QACtD,IAAI,IAAI,KAAK,CAAC;YAAE,OAAO,mBAAW,CAAC,eAAe,CAAC;QACnD,MAAM,IAAI,KAAK,CAAC,gCAAgC,IAAI,EAAE,CAAC,CAAC;IAC1D,CAAC;IAED,uBAAuB;IACvB,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACd,OAAO,mBAAW,CAAC,IAAI,CAAC;IAC1B,CAAC;SAAM,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;QAC3B,OAAO,mBAAW,CAAC,UAAU,CAAC;IAChC,CAAC;SAAM,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;QAC/B,OAAO,mBAAW,CAAC,cAAc,CAAC;IACpC,CAAC;SAAM,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACnC,OAAO,mBAAW,CAAC,kBAAkB,CAAC;IACxC,CAAC;SAAM,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;QAChC,OAAO,mBAAW,CAAC,eAAe,CAAC;IACrC,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,gCAAgC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC1E,CAAC;AAED,SAAgB,eAAe,CAAC,IAAS;IACvC,OAAO;QACL,eAAe,EAAE,MAAM,CAAC,wBAAwB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QACvE,gBAAgB,EAAE,MAAM,CAAC,wBAAwB,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QACzE,mBAAmB,EAAE,MAAM,CACzB,wBAAwB,CAAC,IAAI,CAAC,mBAAmB,CAAC,CACnD;QACD,oBAAoB,EAAE,MAAM,CAC1B,wBAAwB,CAAC,IAAI,CAAC,oBAAoB,CAAC,CACpD;QACD,YAAY,EAAE,IAAI,WAAE,CAAC,IAAI,CAAC,YAAY,CAAC;QACvC,kBAAkB,EAAE,uBAAuB,CAAC,IAAI,CAAC,kBAAkB,CAAC;QACpE,gBAAgB,EAAE,qBAAqB,CAAC,IAAI,CAAC,gBAAgB,CAAC;QAC9D,WAAW,EAAE,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC;QAC/C,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,GAAQ,EAAE,EAAE,CAAC,IAAI,aAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QACtE,WAAW,EAAE,IAAI,WAAE,CAAC,IAAI,CAAC,WAAW,CAAC;QACrC,QAAQ,EAAE,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC;QACtC,QAAQ,EAAE,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC;QACtC,wBAAwB,EAAE,IAAI,WAAE,CAAC,IAAI,CAAC,wBAAwB,CAAC;QAC/D,YAAY,EAAE,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC;KACxC,CAAC;AACJ,CAAC;AAED,2BAA2B;AAC3B,SAAgB,0BAA0B,CACxC,YAA0B;IAE1B,OAAO,YAAY,CAAC,cAAc,CAAC,QAAQ;SACxC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC;SACnC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AACtC,CAAC;AAED,uDAAuD;AACvD,qFAAqF;AACrF,yEAAyE;AACzE,SAAgB,gCAAgC,CAC9C,KAAa;IAEb,MAAM,iBAAiB,GAAuB,EAAE,CAAC;IACjD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,iBAAiB,CAAC,IAAI,CAAC;YACrB,MAAM,EAAE,IAAI,CAAC,GAAG;YAChB,UAAU,EAAE,IAAI;YAChB,QAAQ,EAAE,KAAK;SAChB,CAAC,CAAC;QAEH,gCAAgC;QAChC,iBAAiB,CAAC,IAAI,CAAC;YACrB,MAAM,EAAE,IAAI,CAAC,aAAa;YAC1B,UAAU,EAAE,KAAK;YACjB,QAAQ,EAAE,KAAK;SAChB,CAAC,CAAC;IACL,CAAC;IACD,OAAO,iBAAiB,CAAC;AAC3B,CAAC;AAED,qCAAqC;AACrC,KAAK;AACL,wCAAwC;AACxC,uBAAuB;AACvB,sBAAsB;AACtB,qCAAqC;AACrC,qCAAqC;AACrC,MAAM;AACN,gCAAgC;AAChC,SAAgB,yCAAyC,CACvD,sBAAoC,EACpC,sBAAoC,EACpC,aAA6B,EAC7B,yBAAyC,EACzC,SAAyB,EACzB,iBAAsC;IAEtC,MAAM,iBAAiB,GAAuB,EAAE,CAAC;IAEjD,MAAM,YAAY,GAAuB,EAAE,CAAC;IAC5C,sBAAsB,CAAC,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACvD,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;YACd,OAAO;QACT,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,aAAI,CAAC,SAAS,CAC/B,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAE,CAC9C,CAAC;QACF,YAAY,CAAC,IAAI,CACf;YACE,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,UAAU,EAAE,IAAI;YAChB,QAAQ,EAAE,KAAK;SAChB,EACD;YACE,MAAM;YACN,UAAU,EAAE,KAAK;YACjB,QAAQ,EAAE,KAAK;SAChB,CACF,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,MAAM,YAAY,GAAuB,EAAE,CAAC;IAC5C,sBAAsB,CAAC,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACvD,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;YACd,OAAO;QACT,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,aAAI,CAAC,SAAS,CAC/B,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAE,CAC9C,CAAC;QACF,YAAY,CAAC,IAAI,CACf;YACE,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,UAAU,EAAE,IAAI;YAChB,QAAQ,EAAE,KAAK;SAChB,EACD;YACE,MAAM;YACN,UAAU,EAAE,KAAK;YACjB,QAAQ,EAAE,KAAK;SAChB,CACF,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,sFAAsF;IACtF,kGAAkG;IAClG,IAAI,yBAAyB,CAAC,MAAM,CAAC,iCAAqB,CAAC,EAAE,CAAC;QAC5D,iBAAiB,CAAC,IAAI,CAAC;YACrB,MAAM,EAAE,aAAa;YACrB,UAAU,EAAE,KAAK;YACjB,QAAQ,EAAE,KAAK;SAChB,CAAC,CAAC;IACL,CAAC;IAED,6BAA6B;IAC7B,iBAAiB,CAAC,IAAI,CAAC;QACrB,MAAM,EAAE,IAAI,aAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAE,CAAC;QACxE,UAAU,EAAE,KAAK;QACjB,QAAQ,EAAE,KAAK;KAChB,CAAC,CAAC;IACH,iBAAiB,CAAC,IAAI,CAAC;QACrB,MAAM,EAAE,IAAI,aAAI,CAAC,SAAS,CACxB,iBAAiB,CAAC,GAAG,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAE,CACjD;QACD,UAAU,EAAE,KAAK;QACjB,QAAQ,EAAE,KAAK;KAChB,CAAC,CAAC;IAEH,qBAAqB;IACrB,iBAAiB,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,CAAC;IACxC,iBAAiB,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,CAAC;IAExC,OAAO,iBAAiB,CAAC;AAC3B,CAAC;AAED,eAAe;AACF,QAAA,MAAM,GAAG,iBAAO,CAAC,YAAY,CAAC;IACzC,KAAK,EAAE,OAAO;IACd,WAAW,EAAE;QACX,OAAO,EAAE,YAAY;KACtB;IACD,MAAM,EAAE,iBAAO,CAAC,MAAM,CAAC,OAAO,CAC5B,iBAAO,CAAC,MAAM,CAAC,SAAS,EAAE,EAC1B,iBAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;QAC7B,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,QAAQ,EAAE,GAAG,IAAI,CAAC;QACjE,OAAO,CACL,GAAG,SAAS,KAAK,KAAK,MAAM,OAAO,MAAM,OAAO,EAAE;YAClD,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CACrE,CAAC;IACJ,CAAC,CAAC,EACF,iBAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CACtB;IACD,UAAU,EAAE,CAAC,IAAI,iBAAO,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;CAC/C,CAAC,CAAC;AAEH,cAAc;AACd,SAAgB,gBAAgB,CAAC,KAAa,EAAE,QAAgB;IAC9D,OAAO,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;AAClD,CAAC;AAED,SAAgB,uBAAuB,CACrC,KAAc,EACd,QAAgB;IAEhB,OAAO,KAAK;SACT,SAAS,CAAC,IAAI,oBAAO,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;SACxC,eAAe,CAAC,CAAC,CAAC;SAClB,QAAQ,EAAE,CAAC;AAChB,CAAC;AA2BD;;;;;GAKG;AACH,SAAgB,wBAAwB,CACtC,IAAY;IAEZ,uFAAuF;IACvF,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;IACzE,MAAM,oBAAoB,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC9C,0DAA0D;IAC1D,oBAAoB;IACpB,qEAAqE;IACrE,MAAM;IACN,GAAG;IAEH,gFAAgF;IAChF,yDAAyD;IACzD,MAAM,cAAc,GAAG,EAAE,CAAC;IAC1B,MAAM,iBAAiB,GAAG,CAAC,CAAC,CAAC,8CAA8C;IAC3E,MAAM,cAAc,GAAG,EAAE,CAAC,CAAC,wEAAwE;IAEnG,MAAM,WAAW,GAAuB,EAAE,CAAC;IAE3C,wDAAwD;IACxD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,EAAE,CAAC,EAAE,EAAE,CAAC;QACxC,MAAM,aAAa,GAAG,iBAAiB,GAAG,CAAC,GAAG,cAAc,CAAC;QAC7D,MAAM,gBAAgB,GAAG,IAAI,CAAC,KAAK,CACjC,aAAa,EACb,aAAa,GAAG,cAAc,CAC/B,CAAC;QAEF,qEAAqE;QACrE,MAAM,aAAa,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACpD,IAAI,aAAa,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC;YAC9C,SAAS,CAAC,6CAA6C;QACzD,CAAC;QAED,4CAA4C;QAC5C,MAAM,MAAM,GAAG,IAAI,aAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;QACjD,MAAM,IAAI,GAAG,IAAI,WAAE,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;QAC1D,MAAM,SAAS,GAAG,IAAI,WAAE,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;QAE/D,qEAAqE;QACrE,6EAA6E;QAC7E,MAAM,KAAK,GAAG,IAAI,WAAE,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAEzE,WAAW,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;IACvD,CAAC;IAED,6EAA6E;IAC7E,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAE/C,OAAO,EAAE,WAAW,EAAE,CAAC;AACzB,CAAC"}
|
package/package.json
CHANGED
package/dist/jupiterUtils.d.ts
DELETED
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
import { web3 } from "@coral-xyz/anchor";
|
|
2
|
-
import Decimal from "decimal.js";
|
|
3
|
-
import { Instruction, QuoteResponse, ResponseError, SwapMode } from "@jup-ag/api";
|
|
4
|
-
export type ErrorBody = {
|
|
5
|
-
error: string;
|
|
6
|
-
error_code: string;
|
|
7
|
-
};
|
|
8
|
-
export type SwapTxResponse = {
|
|
9
|
-
swapTxs: SwapTxs;
|
|
10
|
-
lookupTables: web3.PublicKey[];
|
|
11
|
-
swapResponse: SwapResponse;
|
|
12
|
-
};
|
|
13
|
-
export type SwapResponse = {
|
|
14
|
-
swapInAmountLamports: Decimal;
|
|
15
|
-
swapOutAmountLamports: Decimal;
|
|
16
|
-
swapMinOutAmountLamports: Decimal;
|
|
17
|
-
};
|
|
18
|
-
export type SwapTxs = {
|
|
19
|
-
setupIxs: web3.TransactionInstruction[];
|
|
20
|
-
swapIxs: web3.TransactionInstruction[];
|
|
21
|
-
cleanupIxs: web3.TransactionInstruction[];
|
|
22
|
-
};
|
|
23
|
-
export type SwapConfig = {
|
|
24
|
-
slippageBps: number;
|
|
25
|
-
wrapAndUnwrapSol?: boolean;
|
|
26
|
-
onlyDirectRoutes?: boolean;
|
|
27
|
-
swapMode?: SwapMode;
|
|
28
|
-
};
|
|
29
|
-
export type SwapInputs = {
|
|
30
|
-
inputMint: web3.PublicKey;
|
|
31
|
-
outputMint: web3.PublicKey;
|
|
32
|
-
inputAmountLamports: Decimal;
|
|
33
|
-
};
|
|
34
|
-
export type SwapIxs = {
|
|
35
|
-
preActionIxs: web3.TransactionInstruction[];
|
|
36
|
-
swapIxs: web3.TransactionInstruction[];
|
|
37
|
-
lookupTables: web3.PublicKey[];
|
|
38
|
-
};
|
|
39
|
-
export type SwapQuote<T> = {
|
|
40
|
-
priceAInB: Decimal;
|
|
41
|
-
quoteResponse?: T;
|
|
42
|
-
};
|
|
43
|
-
export declare class JupSwapResponseError extends Error {
|
|
44
|
-
error: ResponseError;
|
|
45
|
-
body: ErrorBody;
|
|
46
|
-
constructor(error: ResponseError, body: ErrorBody);
|
|
47
|
-
}
|
|
48
|
-
export interface IJupiterUtils {
|
|
49
|
-
getJupiterPrice(mint: web3.PublicKey): Promise<number>;
|
|
50
|
-
getJupiterQuote(inputMint: web3.PublicKey, outputMint: web3.PublicKey, inputMintDecimals: number, outputMintDecimals: number, inputAmountLamports: Decimal, slippageBps: number, swapMode?: SwapMode): Promise<SwapQuote<QuoteResponse>>;
|
|
51
|
-
getJupiterSwap(payer: web3.PublicKey, inputs: SwapInputs, quote: SwapQuote<QuoteResponse>): Promise<SwapIxs>;
|
|
52
|
-
}
|
|
53
|
-
export declare class JupiterUtils implements IJupiterUtils {
|
|
54
|
-
readonly baseUrl: string;
|
|
55
|
-
readonly headers: Record<string, string>;
|
|
56
|
-
constructor(apiKey?: string);
|
|
57
|
-
getJupiterPrice(mint: web3.PublicKey | string): Promise<number>;
|
|
58
|
-
getJupiterQuote(inputMint: web3.PublicKey, outputMint: web3.PublicKey, inputMintDecimals: number, outputMintDecimals: number, inputAmountLamports: Decimal, slippageBps: number, swapMode?: SwapMode): Promise<SwapQuote<QuoteResponse>>;
|
|
59
|
-
getJupiterSwap(payer: web3.PublicKey, inputs: SwapInputs, quote: SwapQuote<QuoteResponse>): Promise<SwapIxs>;
|
|
60
|
-
private quote;
|
|
61
|
-
private swapTxFromQuote;
|
|
62
|
-
}
|
|
63
|
-
export declare function scaleJupQuoteResponse(quoteResponse: QuoteResponse, newAmount: Decimal): QuoteResponse;
|
|
64
|
-
export declare function transformResponseIxs(instructions: Instruction[]): web3.TransactionInstruction[];
|
|
65
|
-
export declare function transformResponseIx(instruction: Instruction): web3.TransactionInstruction;
|
package/dist/jupiterUtils.js
DELETED
|
@@ -1,174 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.JupiterUtils = exports.JupSwapResponseError = void 0;
|
|
7
|
-
exports.scaleJupQuoteResponse = scaleJupQuoteResponse;
|
|
8
|
-
exports.transformResponseIxs = transformResponseIxs;
|
|
9
|
-
exports.transformResponseIx = transformResponseIx;
|
|
10
|
-
const anchor_1 = require("@coral-xyz/anchor");
|
|
11
|
-
const decimal_js_1 = __importDefault(require("decimal.js"));
|
|
12
|
-
const api_1 = require("@jup-ag/api");
|
|
13
|
-
const axios_1 = __importDefault(require("axios"));
|
|
14
|
-
const BASE_URL_FREE = "https://lite-api.jup.ag";
|
|
15
|
-
const BASE_URL_PAID = "https://api.jup.ag";
|
|
16
|
-
const PRICE_PATH = "/price/v2";
|
|
17
|
-
const QUOTE_PATH = "/swap/v1/quote";
|
|
18
|
-
const QUOTE_URL = "https://quote-api.jup.ag/v6";
|
|
19
|
-
class JupSwapResponseError extends Error {
|
|
20
|
-
constructor(error, body) {
|
|
21
|
-
super(`JupSwapResponseError: ${body.error} (${body.error_code})`);
|
|
22
|
-
this.error = error;
|
|
23
|
-
this.body = body;
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
exports.JupSwapResponseError = JupSwapResponseError;
|
|
27
|
-
// Default implementation of JupiterUtils
|
|
28
|
-
class JupiterUtils {
|
|
29
|
-
constructor(apiKey) {
|
|
30
|
-
const defaultHeaders = {
|
|
31
|
-
"Content-Type": "application/json",
|
|
32
|
-
};
|
|
33
|
-
this.baseUrl = apiKey ? BASE_URL_PAID : BASE_URL_FREE;
|
|
34
|
-
this.headers = apiKey
|
|
35
|
-
? { ...defaultHeaders, "x-api-key": apiKey }
|
|
36
|
-
: defaultHeaders;
|
|
37
|
-
}
|
|
38
|
-
async getJupiterPrice(mint) {
|
|
39
|
-
const params = {
|
|
40
|
-
ids: mint.toString(),
|
|
41
|
-
};
|
|
42
|
-
const res = await axios_1.default.get(`${this.baseUrl}${PRICE_PATH}`, {
|
|
43
|
-
params,
|
|
44
|
-
headers: this.headers,
|
|
45
|
-
});
|
|
46
|
-
return res.data.data[mint.toString()]?.price || 0;
|
|
47
|
-
}
|
|
48
|
-
async getJupiterQuote(inputMint, outputMint, inputMintDecimals, outputMintDecimals, inputAmountLamports, slippageBps, swapMode = "ExactIn") {
|
|
49
|
-
const quoteResponse = await this.quote(inputMint, outputMint, inputAmountLamports, {
|
|
50
|
-
slippageBps: slippageBps,
|
|
51
|
-
wrapAndUnwrapSol: false,
|
|
52
|
-
onlyDirectRoutes: true,
|
|
53
|
-
swapMode,
|
|
54
|
-
});
|
|
55
|
-
const inAmount = new decimal_js_1.default(quoteResponse.inAmount).div(new decimal_js_1.default(10).pow(inputMintDecimals));
|
|
56
|
-
const minAmountOut = new decimal_js_1.default(quoteResponse.otherAmountThreshold).div(new decimal_js_1.default(10).pow(outputMintDecimals));
|
|
57
|
-
const priceDebtToColl = minAmountOut.div(inAmount);
|
|
58
|
-
return {
|
|
59
|
-
priceAInB: priceDebtToColl,
|
|
60
|
-
quoteResponse,
|
|
61
|
-
};
|
|
62
|
-
}
|
|
63
|
-
async getJupiterSwap(payer, inputs, quote) {
|
|
64
|
-
const scaledQuoteResponse = scaleJupQuoteResponse(quote.quoteResponse, new decimal_js_1.default(inputs.inputAmountLamports));
|
|
65
|
-
const { swapTxs, lookupTables } = await this.swapTxFromQuote(payer, scaledQuoteResponse, {
|
|
66
|
-
slippageBps: quote.quoteResponse.slippageBps,
|
|
67
|
-
wrapAndUnwrapSol: false,
|
|
68
|
-
onlyDirectRoutes: true,
|
|
69
|
-
swapMode: quote.quoteResponse.swapMode,
|
|
70
|
-
});
|
|
71
|
-
return {
|
|
72
|
-
preActionIxs: [],
|
|
73
|
-
swapIxs: [...swapTxs.swapIxs],
|
|
74
|
-
lookupTables,
|
|
75
|
-
};
|
|
76
|
-
}
|
|
77
|
-
// Helper functions
|
|
78
|
-
async quote(inputMint, outputMint, amount, swapConfig) {
|
|
79
|
-
const quoteApi = (0, api_1.createJupiterApiClient)({
|
|
80
|
-
basePath: QUOTE_URL,
|
|
81
|
-
apiKey: this.headers["x-api-key"] ?? undefined,
|
|
82
|
-
});
|
|
83
|
-
const quoteRequest = {
|
|
84
|
-
inputMint: inputMint.toBase58(),
|
|
85
|
-
outputMint: outputMint.toBase58(),
|
|
86
|
-
amount: Number(amount),
|
|
87
|
-
slippageBps: Number(swapConfig.slippageBps),
|
|
88
|
-
swapMode: swapConfig.swapMode,
|
|
89
|
-
onlyDirectRoutes: swapConfig.onlyDirectRoutes,
|
|
90
|
-
};
|
|
91
|
-
try {
|
|
92
|
-
return await quoteApi.quoteGet(quoteRequest);
|
|
93
|
-
}
|
|
94
|
-
catch (e) {
|
|
95
|
-
console.log(JSON.stringify(e, null, 2));
|
|
96
|
-
if (e instanceof api_1.ResponseError) {
|
|
97
|
-
const body = (await e.response.json());
|
|
98
|
-
throw new JupSwapResponseError(e, body);
|
|
99
|
-
}
|
|
100
|
-
throw e;
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
async swapTxFromQuote(payer, quote, swapConfig) {
|
|
104
|
-
const quoteApi = (0, api_1.createJupiterApiClient)({
|
|
105
|
-
basePath: QUOTE_URL,
|
|
106
|
-
apiKey: this.headers["x-api-key"] ?? undefined,
|
|
107
|
-
});
|
|
108
|
-
try {
|
|
109
|
-
const swapParameters = {
|
|
110
|
-
swapRequest: {
|
|
111
|
-
userPublicKey: payer.toBase58(),
|
|
112
|
-
quoteResponse: quote,
|
|
113
|
-
computeUnitPriceMicroLamports: 1,
|
|
114
|
-
wrapAndUnwrapSol: swapConfig?.wrapAndUnwrapSol ?? false,
|
|
115
|
-
destinationTokenAccount: undefined,
|
|
116
|
-
useSharedAccounts: false,
|
|
117
|
-
feeAccount: undefined,
|
|
118
|
-
skipUserAccountsRpcCalls: true,
|
|
119
|
-
},
|
|
120
|
-
};
|
|
121
|
-
const swap = await quoteApi.swapInstructionsPost(swapParameters);
|
|
122
|
-
const swapIxs = [transformResponseIx(swap.swapInstruction)];
|
|
123
|
-
return {
|
|
124
|
-
swapTxs: {
|
|
125
|
-
setupIxs: transformResponseIxs(swap.setupInstructions),
|
|
126
|
-
swapIxs,
|
|
127
|
-
cleanupIxs: transformResponseIxs(swap.cleanupInstruction ? [swap.cleanupInstruction] : []),
|
|
128
|
-
},
|
|
129
|
-
lookupTables: swap.addressLookupTableAddresses.map((k) => new anchor_1.web3.PublicKey(k)),
|
|
130
|
-
swapResponse: {
|
|
131
|
-
swapInAmountLamports: new decimal_js_1.default(quote.inAmount),
|
|
132
|
-
swapOutAmountLamports: new decimal_js_1.default(quote.outAmount),
|
|
133
|
-
swapMinOutAmountLamports: new decimal_js_1.default(quote.otherAmountThreshold),
|
|
134
|
-
},
|
|
135
|
-
};
|
|
136
|
-
}
|
|
137
|
-
catch (e) {
|
|
138
|
-
if (e instanceof api_1.ResponseError) {
|
|
139
|
-
const body = (await e.response.json());
|
|
140
|
-
throw new JupSwapResponseError(e, body);
|
|
141
|
-
}
|
|
142
|
-
throw e;
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
exports.JupiterUtils = JupiterUtils;
|
|
147
|
-
function scaleJupQuoteResponse(quoteResponse, newAmount) {
|
|
148
|
-
const oldAmount = new decimal_js_1.default(quoteResponse.inAmount);
|
|
149
|
-
const scaleFactor = newAmount.div(oldAmount);
|
|
150
|
-
const newQuoteResponse = { ...quoteResponse };
|
|
151
|
-
newQuoteResponse.inAmount = newAmount.toString();
|
|
152
|
-
// Calculate the new output amount based on the price and scale factor
|
|
153
|
-
const outputAmount = new decimal_js_1.default(quoteResponse.outAmount);
|
|
154
|
-
newQuoteResponse.outAmount = outputAmount.mul(scaleFactor).toString();
|
|
155
|
-
newQuoteResponse.otherAmountThreshold = new decimal_js_1.default(quoteResponse.otherAmountThreshold)
|
|
156
|
-
.mul(scaleFactor)
|
|
157
|
-
.toString();
|
|
158
|
-
return newQuoteResponse;
|
|
159
|
-
}
|
|
160
|
-
function transformResponseIxs(instructions) {
|
|
161
|
-
return instructions.map(transformResponseIx);
|
|
162
|
-
}
|
|
163
|
-
function transformResponseIx(instruction) {
|
|
164
|
-
return new anchor_1.web3.TransactionInstruction({
|
|
165
|
-
programId: new anchor_1.web3.PublicKey(instruction.programId),
|
|
166
|
-
keys: instruction.accounts.map((account) => ({
|
|
167
|
-
pubkey: new anchor_1.web3.PublicKey(account.pubkey),
|
|
168
|
-
isSigner: account.isSigner,
|
|
169
|
-
isWritable: account.isWritable,
|
|
170
|
-
})),
|
|
171
|
-
data: Buffer.from(instruction.data, "base64"),
|
|
172
|
-
});
|
|
173
|
-
}
|
|
174
|
-
//# sourceMappingURL=jupiterUtils.js.map
|