@0xkoaj/sdk 0.0.1-beta.14 → 0.0.1-beta.15
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/services/quotes/quote-sources/cow-amm-quote-source.d.ts +35 -0
- package/dist/services/quotes/quote-sources/cow-amm-quote-source.js +180 -0
- package/dist/services/quotes/quote-sources/cow-amm-quote-source.js.map +1 -0
- package/dist/services/quotes/quote-sources/pendle-quote-source.d.ts +17 -0
- package/dist/services/quotes/quote-sources/pendle-quote-source.js +94 -0
- package/dist/services/quotes/quote-sources/pendle-quote-source.js.map +1 -0
- package/dist/services/quotes/source-registry.d.ts +5 -1
- package/dist/services/quotes/source-registry.js +4 -0
- package/dist/services/quotes/source-registry.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { QuoteParams, QuoteSourceMetadata, SourceQuoteResponse, SourceQuoteTransaction, BuildTxParams } from './types';
|
|
2
|
+
import { AlwaysValidConfigAndContextSource } from './base/always-valid-source';
|
|
3
|
+
import { type Address as ViemAddress } from 'viem';
|
|
4
|
+
type CowAMMSupport = {
|
|
5
|
+
buyOrders: true;
|
|
6
|
+
swapAndTransfer: true;
|
|
7
|
+
};
|
|
8
|
+
type CowAMMConfig = {
|
|
9
|
+
appData?: string;
|
|
10
|
+
};
|
|
11
|
+
type CowAMMData = {
|
|
12
|
+
orderUid: string;
|
|
13
|
+
order: CowOrder;
|
|
14
|
+
validTo: number;
|
|
15
|
+
};
|
|
16
|
+
interface CowOrder {
|
|
17
|
+
sellToken: ViemAddress;
|
|
18
|
+
buyToken: ViemAddress;
|
|
19
|
+
receiver: ViemAddress;
|
|
20
|
+
sellAmount: string;
|
|
21
|
+
buyAmount: string;
|
|
22
|
+
validTo: number;
|
|
23
|
+
appData: string;
|
|
24
|
+
feeAmount: string;
|
|
25
|
+
kind: 'sell' | 'buy';
|
|
26
|
+
partiallyFillable: boolean;
|
|
27
|
+
sellTokenBalance: 'erc20' | 'internal' | 'external';
|
|
28
|
+
buyTokenBalance: 'erc20' | 'internal';
|
|
29
|
+
}
|
|
30
|
+
export declare class CowAMMQuoteSource extends AlwaysValidConfigAndContextSource<CowAMMSupport, CowAMMConfig, CowAMMData> {
|
|
31
|
+
getMetadata(): QuoteSourceMetadata<CowAMMSupport>;
|
|
32
|
+
quote({ components: { fetchService }, request: { chainId, sellToken, buyToken, order, config: { slippagePercentage, timeout, txValidFor }, accounts: { takeFrom, recipient }, }, config, }: QuoteParams<CowAMMSupport, CowAMMConfig>): Promise<SourceQuoteResponse<CowAMMData>>;
|
|
33
|
+
buildTx({ request: { customData } }: BuildTxParams<CowAMMConfig, CowAMMData>): Promise<SourceQuoteTransaction>;
|
|
34
|
+
}
|
|
35
|
+
export {};
|
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CowAMMQuoteSource = void 0;
|
|
4
|
+
const _chains_1 = require("../../../chains");
|
|
5
|
+
const constants_1 = require("../../../shared/constants");
|
|
6
|
+
const utils_1 = require("../../../shared/utils");
|
|
7
|
+
const utils_2 = require("./utils");
|
|
8
|
+
const always_valid_source_1 = require("./base/always-valid-source");
|
|
9
|
+
const viem_1 = require("viem");
|
|
10
|
+
// Same contracts as CoW Swap
|
|
11
|
+
const VAULT_RELAYER = '0xC92E8bdf79f0507f65a392b0ab4667716BFE0110';
|
|
12
|
+
const GPV2_SETTLEMENT = '0x9008D19f58AAbD9eD0D60971565AA8510560ab41';
|
|
13
|
+
const API_ENDPOINTS = {
|
|
14
|
+
[_chains_1.Chains.ETHEREUM.chainId]: 'https://api.cow.fi/mainnet/api/v1',
|
|
15
|
+
[_chains_1.Chains.GNOSIS.chainId]: 'https://api.cow.fi/xdai/api/v1',
|
|
16
|
+
[_chains_1.Chains.ARBITRUM.chainId]: 'https://api.cow.fi/arbitrum_one/api/v1',
|
|
17
|
+
[_chains_1.Chains.BASE.chainId]: 'https://api.cow.fi/base/api/v1',
|
|
18
|
+
};
|
|
19
|
+
const DEFAULT_APP_DATA = '0x0000000000000000000000000000000000000000000000000000000000000000';
|
|
20
|
+
const COW_AMM_METADATA = {
|
|
21
|
+
name: 'CoW AMM',
|
|
22
|
+
supports: {
|
|
23
|
+
chains: [
|
|
24
|
+
_chains_1.Chains.ETHEREUM.chainId,
|
|
25
|
+
_chains_1.Chains.GNOSIS.chainId,
|
|
26
|
+
_chains_1.Chains.ARBITRUM.chainId,
|
|
27
|
+
_chains_1.Chains.BASE.chainId,
|
|
28
|
+
],
|
|
29
|
+
swapAndTransfer: true,
|
|
30
|
+
buyOrders: true,
|
|
31
|
+
},
|
|
32
|
+
logoURI: 'ipfs://bafkreih75uruzdjtculei5md434pvtbw66gkzwcjb53kjgj4gz7xicuw54',
|
|
33
|
+
};
|
|
34
|
+
// Uses priceQuality: 'verified' — triggers on-chain solver simulation,
|
|
35
|
+
// giving CoW AMM pools a chance to compete and surface better rates.
|
|
36
|
+
class CowAMMQuoteSource extends always_valid_source_1.AlwaysValidConfigAndContextSource {
|
|
37
|
+
getMetadata() {
|
|
38
|
+
return COW_AMM_METADATA;
|
|
39
|
+
}
|
|
40
|
+
async quote({ components: { fetchService }, request: { chainId, sellToken, buyToken, order, config: { slippagePercentage, timeout, txValidFor }, accounts: { takeFrom, recipient }, }, config, }) {
|
|
41
|
+
const evmChainId = chainId;
|
|
42
|
+
const apiEndpoint = API_ENDPOINTS[evmChainId];
|
|
43
|
+
if (!apiEndpoint) {
|
|
44
|
+
(0, utils_2.failed)(COW_AMM_METADATA, chainId, sellToken, buyToken, `Unsupported chain: ${chainId}`);
|
|
45
|
+
}
|
|
46
|
+
const chain = (0, _chains_1.getChainByKey)(chainId);
|
|
47
|
+
if (!chain) {
|
|
48
|
+
(0, utils_2.failed)(COW_AMM_METADATA, chainId, sellToken, buyToken, `Unknown chain: ${chainId}`);
|
|
49
|
+
}
|
|
50
|
+
const sellTokenMapped = (0, utils_1.isSameAddress)(sellToken, constants_1.Addresses.NATIVE_TOKEN) ? chain.wToken : sellToken;
|
|
51
|
+
const buyTokenMapped = (0, utils_1.isSameAddress)(buyToken, constants_1.Addresses.NATIVE_TOKEN) ? chain.wToken : buyToken;
|
|
52
|
+
const recipientAddress = recipient ?? takeFrom;
|
|
53
|
+
const validTo = (0, utils_1.calculateDeadline)(txValidFor ?? '30m');
|
|
54
|
+
const appData = config?.appData ?? DEFAULT_APP_DATA;
|
|
55
|
+
const quoteRequest = {
|
|
56
|
+
sellToken: sellTokenMapped,
|
|
57
|
+
buyToken: buyTokenMapped,
|
|
58
|
+
receiver: recipientAddress,
|
|
59
|
+
appData,
|
|
60
|
+
from: takeFrom,
|
|
61
|
+
priceQuality: 'verified', // triggers on-chain simulation for CoW AMM pool competition
|
|
62
|
+
signingScheme: 'presign',
|
|
63
|
+
onchainOrder: false,
|
|
64
|
+
...(order.type === 'sell'
|
|
65
|
+
? { kind: 'sell', sellAmountBeforeFee: order.sellAmount.toString() }
|
|
66
|
+
: { kind: 'buy', buyAmountAfterFee: order.buyAmount.toString() }),
|
|
67
|
+
};
|
|
68
|
+
const response = await fetchService.fetch(`${apiEndpoint}/quote`, {
|
|
69
|
+
method: 'POST',
|
|
70
|
+
headers: { 'Content-Type': 'application/json' },
|
|
71
|
+
body: JSON.stringify(quoteRequest),
|
|
72
|
+
timeout,
|
|
73
|
+
});
|
|
74
|
+
if (!response.ok) {
|
|
75
|
+
const errorText = await response.text();
|
|
76
|
+
(0, utils_2.failed)(COW_AMM_METADATA, chainId, sellToken, buyToken, errorText || `Failed with status ${response.status}`);
|
|
77
|
+
}
|
|
78
|
+
const quoteResponse = await response.json();
|
|
79
|
+
const cowOrder = quoteResponse.quote;
|
|
80
|
+
const orderDigest = computeOrderDigest(cowOrder, evmChainId);
|
|
81
|
+
const orderUid = computeOrderUid(orderDigest, takeFrom, cowOrder.validTo);
|
|
82
|
+
const sellAmount = BigInt(cowOrder.sellAmount);
|
|
83
|
+
const buyAmount = BigInt(cowOrder.buyAmount);
|
|
84
|
+
const feeAmount = BigInt(cowOrder.feeAmount);
|
|
85
|
+
const totalSellAmount = sellAmount + feeAmount;
|
|
86
|
+
const quote = {
|
|
87
|
+
sellAmount: totalSellAmount,
|
|
88
|
+
buyAmount,
|
|
89
|
+
estimatedGas: 100000n,
|
|
90
|
+
allowanceTarget: (0, utils_2.calculateAllowanceTarget)(sellToken, VAULT_RELAYER),
|
|
91
|
+
customData: {
|
|
92
|
+
orderUid,
|
|
93
|
+
order: {
|
|
94
|
+
sellToken: cowOrder.sellToken,
|
|
95
|
+
buyToken: cowOrder.buyToken,
|
|
96
|
+
receiver: cowOrder.receiver,
|
|
97
|
+
sellAmount: cowOrder.sellAmount,
|
|
98
|
+
buyAmount: cowOrder.buyAmount,
|
|
99
|
+
validTo: cowOrder.validTo,
|
|
100
|
+
appData: cowOrder.appData,
|
|
101
|
+
feeAmount: cowOrder.feeAmount,
|
|
102
|
+
kind: cowOrder.kind,
|
|
103
|
+
partiallyFillable: cowOrder.partiallyFillable,
|
|
104
|
+
sellTokenBalance: cowOrder.sellTokenBalance,
|
|
105
|
+
buyTokenBalance: cowOrder.buyTokenBalance,
|
|
106
|
+
},
|
|
107
|
+
validTo: cowOrder.validTo,
|
|
108
|
+
},
|
|
109
|
+
};
|
|
110
|
+
return (0, utils_2.addQuoteSlippage)(quote, order.type, slippagePercentage);
|
|
111
|
+
}
|
|
112
|
+
async buildTx({ request: { customData } }) {
|
|
113
|
+
const { orderUid } = customData;
|
|
114
|
+
const calldata = (0, viem_1.encodeFunctionData)({
|
|
115
|
+
abi: GPV2_SETTLEMENT_ABI,
|
|
116
|
+
functionName: 'setPreSignature',
|
|
117
|
+
args: [orderUid, true],
|
|
118
|
+
});
|
|
119
|
+
return {
|
|
120
|
+
to: GPV2_SETTLEMENT,
|
|
121
|
+
calldata,
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
exports.CowAMMQuoteSource = CowAMMQuoteSource;
|
|
126
|
+
function computeOrderDigest(order, chainId) {
|
|
127
|
+
const ORDER_TYPE_HASH = (0, viem_1.keccak256)((0, viem_1.toHex)('Order(address sellToken,address buyToken,address receiver,uint256 sellAmount,uint256 buyAmount,uint32 validTo,bytes32 appData,uint256 feeAmount,string kind,bool partiallyFillable,string sellTokenBalance,string buyTokenBalance)'));
|
|
128
|
+
const DOMAIN_SEPARATOR = computeDomainSeparator(chainId);
|
|
129
|
+
const orderStructHash = (0, viem_1.keccak256)((0, viem_1.encodeAbiParameters)([
|
|
130
|
+
{ type: 'bytes32' },
|
|
131
|
+
{ type: 'address' },
|
|
132
|
+
{ type: 'address' },
|
|
133
|
+
{ type: 'address' },
|
|
134
|
+
{ type: 'uint256' },
|
|
135
|
+
{ type: 'uint256' },
|
|
136
|
+
{ type: 'uint32' },
|
|
137
|
+
{ type: 'bytes32' },
|
|
138
|
+
{ type: 'uint256' },
|
|
139
|
+
{ type: 'bytes32' },
|
|
140
|
+
{ type: 'bool' },
|
|
141
|
+
{ type: 'bytes32' },
|
|
142
|
+
{ type: 'bytes32' },
|
|
143
|
+
], [
|
|
144
|
+
ORDER_TYPE_HASH,
|
|
145
|
+
order.sellToken,
|
|
146
|
+
order.buyToken,
|
|
147
|
+
order.receiver,
|
|
148
|
+
BigInt(order.sellAmount),
|
|
149
|
+
BigInt(order.buyAmount),
|
|
150
|
+
order.validTo,
|
|
151
|
+
order.appData,
|
|
152
|
+
BigInt(order.feeAmount),
|
|
153
|
+
(0, viem_1.keccak256)((0, viem_1.toHex)(order.kind)),
|
|
154
|
+
order.partiallyFillable,
|
|
155
|
+
(0, viem_1.keccak256)((0, viem_1.toHex)(order.sellTokenBalance)),
|
|
156
|
+
(0, viem_1.keccak256)((0, viem_1.toHex)(order.buyTokenBalance)),
|
|
157
|
+
]));
|
|
158
|
+
return (0, viem_1.keccak256)((0, viem_1.concat)(['0x1901', DOMAIN_SEPARATOR, orderStructHash]));
|
|
159
|
+
}
|
|
160
|
+
function computeDomainSeparator(chainId) {
|
|
161
|
+
const DOMAIN_TYPE_HASH = (0, viem_1.keccak256)((0, viem_1.toHex)('EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)'));
|
|
162
|
+
return (0, viem_1.keccak256)((0, viem_1.encodeAbiParameters)([{ type: 'bytes32' }, { type: 'bytes32' }, { type: 'bytes32' }, { type: 'uint256' }, { type: 'address' }], [DOMAIN_TYPE_HASH, (0, viem_1.keccak256)((0, viem_1.toHex)('Gnosis Protocol')), (0, viem_1.keccak256)((0, viem_1.toHex)('v2')), BigInt(chainId), GPV2_SETTLEMENT]));
|
|
163
|
+
}
|
|
164
|
+
function computeOrderUid(orderDigest, owner, validTo) {
|
|
165
|
+
const validToHex = (0, viem_1.pad)((0, viem_1.toHex)(validTo), { size: 4 });
|
|
166
|
+
return (0, viem_1.concat)([orderDigest, owner, validToHex]);
|
|
167
|
+
}
|
|
168
|
+
const GPV2_SETTLEMENT_ABI = [
|
|
169
|
+
{
|
|
170
|
+
inputs: [
|
|
171
|
+
{ name: 'orderUid', type: 'bytes' },
|
|
172
|
+
{ name: 'signed', type: 'bool' },
|
|
173
|
+
],
|
|
174
|
+
name: 'setPreSignature',
|
|
175
|
+
outputs: [],
|
|
176
|
+
stateMutability: 'nonpayable',
|
|
177
|
+
type: 'function',
|
|
178
|
+
},
|
|
179
|
+
];
|
|
180
|
+
//# sourceMappingURL=cow-amm-quote-source.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cow-amm-quote-source.js","sourceRoot":"","sources":["../../../../src/services/quotes/quote-sources/cow-amm-quote-source.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { IQuoteSource, QuoteParams, QuoteSourceMetadata, SourceQuoteResponse, SourceQuoteTransaction, BuildTxParams } from './types';
|
|
2
|
+
type PendleConfig = {};
|
|
3
|
+
type PendleSupport = {
|
|
4
|
+
buyOrders: false;
|
|
5
|
+
swapAndTransfer: true;
|
|
6
|
+
};
|
|
7
|
+
type PendleData = {
|
|
8
|
+
tx: SourceQuoteTransaction;
|
|
9
|
+
};
|
|
10
|
+
export declare class PendleQuoteSource implements IQuoteSource<PendleSupport, PendleConfig, PendleData> {
|
|
11
|
+
getMetadata(): QuoteSourceMetadata<PendleSupport>;
|
|
12
|
+
quote({ components: { fetchService }, request }: QuoteParams<PendleSupport, PendleConfig>): Promise<SourceQuoteResponse<PendleData>>;
|
|
13
|
+
buildTx({ request }: BuildTxParams<PendleConfig, PendleData>): Promise<SourceQuoteTransaction>;
|
|
14
|
+
isConfigAndContextValidForQuoting(_config: Partial<PendleConfig> | undefined): _config is PendleConfig;
|
|
15
|
+
isConfigAndContextValidForTxBuilding(_config: Partial<PendleConfig> | undefined): _config is PendleConfig;
|
|
16
|
+
}
|
|
17
|
+
export {};
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PendleQuoteSource = void 0;
|
|
4
|
+
const _chains_1 = require("../../../chains");
|
|
5
|
+
const utils_1 = require("./utils");
|
|
6
|
+
const constants_1 = require("../../../shared/constants");
|
|
7
|
+
const utils_2 = require("../../../shared/utils");
|
|
8
|
+
const PENDLE_API_URL = 'https://api-v2.pendle.finance/core';
|
|
9
|
+
const PENDLE_METADATA = {
|
|
10
|
+
name: 'Pendle',
|
|
11
|
+
supports: {
|
|
12
|
+
chains: [
|
|
13
|
+
_chains_1.Chains.ETHEREUM.chainId,
|
|
14
|
+
_chains_1.Chains.ARBITRUM.chainId,
|
|
15
|
+
_chains_1.Chains.BNB_CHAIN.chainId,
|
|
16
|
+
_chains_1.Chains.OPTIMISM.chainId,
|
|
17
|
+
_chains_1.Chains.BASE.chainId,
|
|
18
|
+
_chains_1.Chains.MANTLE.chainId,
|
|
19
|
+
_chains_1.Chains.SONIC.chainId,
|
|
20
|
+
],
|
|
21
|
+
swapAndTransfer: true,
|
|
22
|
+
buyOrders: false,
|
|
23
|
+
},
|
|
24
|
+
logoURI: 'ipfs://QmXhFJmjkBqBKb4YXpDHAGS2YKwW7uZiZtpATcWmjVnPV8',
|
|
25
|
+
};
|
|
26
|
+
class PendleQuoteSource {
|
|
27
|
+
getMetadata() {
|
|
28
|
+
return PENDLE_METADATA;
|
|
29
|
+
}
|
|
30
|
+
async quote({ components: { fetchService }, request }) {
|
|
31
|
+
const { chainId, sellToken, buyToken, order, accounts: { takeFrom, recipient }, config: { slippagePercentage, timeout }, } = request;
|
|
32
|
+
const chain = (0, _chains_1.getChainByKey)(chainId);
|
|
33
|
+
if (!chain) {
|
|
34
|
+
(0, utils_1.failed)(PENDLE_METADATA, chainId, sellToken, buyToken, `Unknown chain: ${chainId}`);
|
|
35
|
+
}
|
|
36
|
+
// Pendle doesn't handle raw native tokens — map to wrapped native
|
|
37
|
+
const tokenIn = (0, utils_2.isSameAddress)(sellToken, constants_1.Addresses.NATIVE_TOKEN) ? chain.wToken : sellToken;
|
|
38
|
+
const tokenOut = (0, utils_2.isSameAddress)(buyToken, constants_1.Addresses.NATIVE_TOKEN) ? chain.wToken : buyToken;
|
|
39
|
+
// Pendle slippage is 0-1 (e.g. 0.005 = 0.5%)
|
|
40
|
+
const slippage = slippagePercentage / 100;
|
|
41
|
+
const body = {
|
|
42
|
+
receiver: recipient ?? takeFrom,
|
|
43
|
+
slippage,
|
|
44
|
+
enableAggregator: true,
|
|
45
|
+
inputs: [{ token: tokenIn, amount: order.sellAmount.toString() }],
|
|
46
|
+
outputs: [tokenOut],
|
|
47
|
+
};
|
|
48
|
+
const response = await fetchService.fetch(`${PENDLE_API_URL}/v3/${chainId}/convert`, {
|
|
49
|
+
method: 'POST',
|
|
50
|
+
headers: { 'Content-Type': 'application/json' },
|
|
51
|
+
body: JSON.stringify(body),
|
|
52
|
+
timeout,
|
|
53
|
+
});
|
|
54
|
+
if (!response.ok) {
|
|
55
|
+
(0, utils_1.failed)(PENDLE_METADATA, chainId, sellToken, buyToken, await response.text());
|
|
56
|
+
}
|
|
57
|
+
const data = await response.json();
|
|
58
|
+
const route = data.routes?.[0];
|
|
59
|
+
if (!route?.tx || !route.outputs?.[0]) {
|
|
60
|
+
(0, utils_1.failed)(PENDLE_METADATA, chainId, sellToken, buyToken, 'No route found');
|
|
61
|
+
}
|
|
62
|
+
const buyAmount = BigInt(route.outputs[0].amount);
|
|
63
|
+
// Pendle enforces min amount on-chain based on slippage; mirror it here
|
|
64
|
+
const slippageBps = BigInt(Math.round(slippagePercentage * 100));
|
|
65
|
+
const minBuyAmount = (buyAmount * (10000n - slippageBps)) / 10000n;
|
|
66
|
+
return {
|
|
67
|
+
sellAmount: order.sellAmount,
|
|
68
|
+
maxSellAmount: order.sellAmount,
|
|
69
|
+
buyAmount,
|
|
70
|
+
minBuyAmount,
|
|
71
|
+
estimatedGas: 350000n,
|
|
72
|
+
allowanceTarget: (0, utils_1.calculateAllowanceTarget)(sellToken, route.tx.to),
|
|
73
|
+
type: 'sell',
|
|
74
|
+
customData: {
|
|
75
|
+
tx: {
|
|
76
|
+
to: route.tx.to,
|
|
77
|
+
calldata: route.tx.data,
|
|
78
|
+
value: BigInt(route.tx.value ?? '0'),
|
|
79
|
+
},
|
|
80
|
+
},
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
async buildTx({ request }) {
|
|
84
|
+
return request.customData.tx;
|
|
85
|
+
}
|
|
86
|
+
isConfigAndContextValidForQuoting(_config) {
|
|
87
|
+
return true;
|
|
88
|
+
}
|
|
89
|
+
isConfigAndContextValidForTxBuilding(_config) {
|
|
90
|
+
return true;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
exports.PendleQuoteSource = PendleQuoteSource;
|
|
94
|
+
//# sourceMappingURL=pendle-quote-source.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pendle-quote-source.js","sourceRoot":"","sources":["../../../../src/services/quotes/quote-sources/pendle-quote-source.ts"],"names":[],"mappings":"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"}
|
|
@@ -28,7 +28,9 @@ import { NordsternQuoteSource } from './quote-sources/nordstern-quote-source';
|
|
|
28
28
|
import { RelayQuoteSource } from './quote-sources/relay-quote-source';
|
|
29
29
|
import { AerodromeQuoteSource } from './quote-sources/aerodrome-quote-source';
|
|
30
30
|
import { CowSwapQuoteSource } from './quote-sources/cow-swap-quote-source';
|
|
31
|
+
import { CowAMMQuoteSource } from './quote-sources/cow-amm-quote-source';
|
|
31
32
|
import { AcrossQuoteSource } from './quote-sources/across-quote-source';
|
|
33
|
+
import { PendleQuoteSource } from './quote-sources/pendle-quote-source';
|
|
32
34
|
import { JupiterQuoteSource } from './quote-sources/jupiter-quote-source';
|
|
33
35
|
export declare const QUOTE_SOURCES: {
|
|
34
36
|
bebop: BebopQuoteSource;
|
|
@@ -58,10 +60,12 @@ export declare const QUOTE_SOURCES: {
|
|
|
58
60
|
relay: RelayQuoteSource;
|
|
59
61
|
aerodrome: AerodromeQuoteSource;
|
|
60
62
|
'cow-swap': CowSwapQuoteSource;
|
|
63
|
+
'cow-amm': CowAMMQuoteSource;
|
|
61
64
|
across: AcrossQuoteSource;
|
|
65
|
+
pendle: PendleQuoteSource;
|
|
62
66
|
jupiter: JupiterQuoteSource;
|
|
63
67
|
};
|
|
64
|
-
export declare const SOURCES_METADATA: Record<"0x" | "open-ocean" | "paraswap" | "1inch" | "fly-trade" | "bebop" | "xy-finance" | "uniswap" | "li-fi" | "kyberswap" | "odos" | "braindex" | "barter" | "rango" | "changelly" | "squid" | "portals-fi" | "enso" | "okx-dex" | "conveyor" | "dodo" | "swing" | "sushiswap" | "nordstern" | "relay" | "aerodrome" | "cow-swap" | "across" | "jupiter", SourceMetadata>;
|
|
68
|
+
export declare const SOURCES_METADATA: Record<"0x" | "open-ocean" | "paraswap" | "1inch" | "fly-trade" | "bebop" | "xy-finance" | "uniswap" | "li-fi" | "kyberswap" | "odos" | "braindex" | "barter" | "rango" | "changelly" | "squid" | "portals-fi" | "enso" | "okx-dex" | "conveyor" | "dodo" | "swing" | "sushiswap" | "nordstern" | "relay" | "aerodrome" | "cow-swap" | "cow-amm" | "across" | "pendle" | "jupiter", SourceMetadata>;
|
|
65
69
|
export type SourceWithConfigId = keyof LocalSourcesConfig;
|
|
66
70
|
export type SourceConfig = {
|
|
67
71
|
global?: GlobalQuoteSourceConfig;
|
|
@@ -28,7 +28,9 @@ const nordstern_quote_source_1 = require("./quote-sources/nordstern-quote-source
|
|
|
28
28
|
const relay_quote_source_1 = require("./quote-sources/relay-quote-source");
|
|
29
29
|
const aerodrome_quote_source_1 = require("./quote-sources/aerodrome-quote-source");
|
|
30
30
|
const cow_swap_quote_source_1 = require("./quote-sources/cow-swap-quote-source");
|
|
31
|
+
const cow_amm_quote_source_1 = require("./quote-sources/cow-amm-quote-source");
|
|
31
32
|
const across_quote_source_1 = require("./quote-sources/across-quote-source");
|
|
33
|
+
const pendle_quote_source_1 = require("./quote-sources/pendle-quote-source");
|
|
32
34
|
// Solana sources
|
|
33
35
|
const jupiter_quote_source_1 = require("./quote-sources/jupiter-quote-source");
|
|
34
36
|
exports.QUOTE_SOURCES = {
|
|
@@ -59,7 +61,9 @@ exports.QUOTE_SOURCES = {
|
|
|
59
61
|
relay: new relay_quote_source_1.RelayQuoteSource(),
|
|
60
62
|
aerodrome: new aerodrome_quote_source_1.AerodromeQuoteSource(),
|
|
61
63
|
'cow-swap': new cow_swap_quote_source_1.CowSwapQuoteSource(),
|
|
64
|
+
'cow-amm': new cow_amm_quote_source_1.CowAMMQuoteSource(),
|
|
62
65
|
across: new across_quote_source_1.AcrossQuoteSource(),
|
|
66
|
+
pendle: new pendle_quote_source_1.PendleQuoteSource(),
|
|
63
67
|
// Solana sources
|
|
64
68
|
jupiter: new jupiter_quote_source_1.JupiterQuoteSource(),
|
|
65
69
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"source-registry.js","sourceRoot":"","sources":["../../../src/services/quotes/source-registry.ts"],"names":[],"mappings":";;;AAGA,yEAAoE;AACpE,iFAA4E;AAC5E,sEAAiE;AACjE,4EAAwE;AACxE,+EAA0E;AAC1E,qFAA+E;AAC/E,2EAAqE;AACrE,mFAA8E;AAC9E,2EAAsE;AACtE,mFAA8E;AAC9E,qFAA+E;AAC/E,+EAAyE;AACzE,2EAAsE;AACtE,qFAA+E;AAC/E,mFAA6E;AAC7E,2EAAsE;AACtE,iFAA4E;AAC5E,yEAAoE;AACpE,iFAA4E;AAC5E,6EAAwE;AACxE,yEAAuE;AACvE,2EAAsE;AACtE,mFAA8E;AAC9E,mFAA8E;AAC9E,2EAAsE;AACtE,mFAA8E;AAC9E,iFAA2E;AAC3E,6EAAwE;AACxE,iBAAiB;AACjB,+EAA0E;AAE7D,QAAA,aAAa,GAAG;IAC3B,KAAK,EAAE,IAAI,qCAAgB,EAAE;IAC7B,QAAQ,EAAE,IAAI,2CAAmB,EAAE;IACnC,YAAY,EAAE,IAAI,8CAAoB,EAAE;IACxC,IAAI,EAAE,IAAI,iCAAc,EAAE;IAC1B,OAAO,EAAE,IAAI,wCAAkB,EAAE;IACjC,OAAO,EAAE,IAAI,yCAAkB,EAAE;IACjC,YAAY,EAAE,IAAI,8CAAoB,EAAE;IACxC,OAAO,EAAE,IAAI,oCAAe,EAAE;IAC9B,SAAS,EAAE,IAAI,6CAAoB,EAAE;IACrC,IAAI,EAAE,IAAI,mCAAe,EAAE;IAC3B,QAAQ,EAAE,IAAI,2CAAmB,EAAE;IACnC,MAAM,EAAE,IAAI,uCAAiB,EAAE;IAC/B,KAAK,EAAE,IAAI,qCAAgB,EAAE;IAC7B,SAAS,EAAE,IAAI,6CAAoB,EAAE;IACrC,CAAC,WAAW,CAAC,EAAE,IAAI,4CAAmB,EAAE;IACxC,KAAK,EAAE,IAAI,qCAAgB,EAAE;IAC7B,YAAY,EAAE,IAAI,8CAAoB,EAAE;IACxC,IAAI,EAAE,IAAI,mCAAe,EAAE;IAC3B,SAAS,EAAE,IAAI,wCAAiB,EAAE;IAClC,QAAQ,EAAE,IAAI,2CAAmB,EAAE;IACnC,IAAI,EAAE,IAAI,sCAAkB,EAAE;IAC9B,KAAK,EAAE,IAAI,qCAAgB,EAAE;IAC7B,SAAS,EAAE,IAAI,6CAAoB,EAAE;IACrC,SAAS,EAAE,IAAI,6CAAoB,EAAE;IACrC,KAAK,EAAE,IAAI,qCAAgB,EAAE;IAC7B,SAAS,EAAE,IAAI,6CAAoB,EAAE;IACrC,UAAU,EAAE,IAAI,0CAAkB,EAAE;IACpC,MAAM,EAAE,IAAI,uCAAiB,EAAE;IAC/B,iBAAiB;IACjB,OAAO,EAAE,IAAI,yCAAkB,EAAE;CACgC,CAAC;AAEvD,QAAA,gBAAgB,GAAG,MAAM,CAAC,WAAW,CAChD,MAAM,CAAC,OAAO,CAAC,qBAAa,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,QAAQ,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CACtC,CAAC"}
|
|
1
|
+
{"version":3,"file":"source-registry.js","sourceRoot":"","sources":["../../../src/services/quotes/source-registry.ts"],"names":[],"mappings":";;;AAGA,yEAAoE;AACpE,iFAA4E;AAC5E,sEAAiE;AACjE,4EAAwE;AACxE,+EAA0E;AAC1E,qFAA+E;AAC/E,2EAAqE;AACrE,mFAA8E;AAC9E,2EAAsE;AACtE,mFAA8E;AAC9E,qFAA+E;AAC/E,+EAAyE;AACzE,2EAAsE;AACtE,qFAA+E;AAC/E,mFAA6E;AAC7E,2EAAsE;AACtE,iFAA4E;AAC5E,yEAAoE;AACpE,iFAA4E;AAC5E,6EAAwE;AACxE,yEAAuE;AACvE,2EAAsE;AACtE,mFAA8E;AAC9E,mFAA8E;AAC9E,2EAAsE;AACtE,mFAA8E;AAC9E,iFAA2E;AAC3E,+EAAyE;AACzE,6EAAwE;AACxE,6EAAwE;AACxE,iBAAiB;AACjB,+EAA0E;AAE7D,QAAA,aAAa,GAAG;IAC3B,KAAK,EAAE,IAAI,qCAAgB,EAAE;IAC7B,QAAQ,EAAE,IAAI,2CAAmB,EAAE;IACnC,YAAY,EAAE,IAAI,8CAAoB,EAAE;IACxC,IAAI,EAAE,IAAI,iCAAc,EAAE;IAC1B,OAAO,EAAE,IAAI,wCAAkB,EAAE;IACjC,OAAO,EAAE,IAAI,yCAAkB,EAAE;IACjC,YAAY,EAAE,IAAI,8CAAoB,EAAE;IACxC,OAAO,EAAE,IAAI,oCAAe,EAAE;IAC9B,SAAS,EAAE,IAAI,6CAAoB,EAAE;IACrC,IAAI,EAAE,IAAI,mCAAe,EAAE;IAC3B,QAAQ,EAAE,IAAI,2CAAmB,EAAE;IACnC,MAAM,EAAE,IAAI,uCAAiB,EAAE;IAC/B,KAAK,EAAE,IAAI,qCAAgB,EAAE;IAC7B,SAAS,EAAE,IAAI,6CAAoB,EAAE;IACrC,CAAC,WAAW,CAAC,EAAE,IAAI,4CAAmB,EAAE;IACxC,KAAK,EAAE,IAAI,qCAAgB,EAAE;IAC7B,YAAY,EAAE,IAAI,8CAAoB,EAAE;IACxC,IAAI,EAAE,IAAI,mCAAe,EAAE;IAC3B,SAAS,EAAE,IAAI,wCAAiB,EAAE;IAClC,QAAQ,EAAE,IAAI,2CAAmB,EAAE;IACnC,IAAI,EAAE,IAAI,sCAAkB,EAAE;IAC9B,KAAK,EAAE,IAAI,qCAAgB,EAAE;IAC7B,SAAS,EAAE,IAAI,6CAAoB,EAAE;IACrC,SAAS,EAAE,IAAI,6CAAoB,EAAE;IACrC,KAAK,EAAE,IAAI,qCAAgB,EAAE;IAC7B,SAAS,EAAE,IAAI,6CAAoB,EAAE;IACrC,UAAU,EAAE,IAAI,0CAAkB,EAAE;IACpC,SAAS,EAAE,IAAI,wCAAiB,EAAE;IAClC,MAAM,EAAE,IAAI,uCAAiB,EAAE;IAC/B,MAAM,EAAE,IAAI,uCAAiB,EAAE;IAC/B,iBAAiB;IACjB,OAAO,EAAE,IAAI,yCAAkB,EAAE;CACgC,CAAC;AAEvD,QAAA,gBAAgB,GAAG,MAAM,CAAC,WAAW,CAChD,MAAM,CAAC,OAAO,CAAC,qBAAa,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,QAAQ,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CACtC,CAAC"}
|