Skip to content

Commit 5775a79

Browse files
authored
Merge pull request #172 from paraswap/feat/swap_endpoint
Feat/swap endpoint
2 parents 673dd47 + ca0768f commit 5775a79

File tree

14 files changed

+916
-180
lines changed

14 files changed

+916
-180
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@paraswap/sdk",
3-
"version": "6.9.1",
3+
"version": "6.10.0",
44
"main": "dist/index.js",
55
"module": "dist/sdk.esm.js",
66
"typings": "dist/index.d.ts",

src/index.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import {
1717
GetAdaptersFunctions,
1818
} from './methods/swap/adapters';
1919
import { constructGetRate, GetRateFunctions } from './methods/swap/rates';
20+
import { constructSwapTx, GetSwapTxFunctions } from './methods/swap/swapTx';
2021
import { constructGetTokens, GetTokensFunctions } from './methods/swap/token';
2122
import { BuildTxFunctions, constructBuildTx } from './methods/swap/transaction';
2223

@@ -170,6 +171,7 @@ export {
170171
constructBuildTx,
171172
constructGetAdapters,
172173
constructGetRate,
174+
constructSwapTx,
173175
// limitOrders methods:
174176
constructBuildLimitOrder,
175177
constructSignLimitOrder,
@@ -213,6 +215,7 @@ export type {
213215
GetAdaptersFunctions,
214216
GetRateFunctions,
215217
BuildTxFunctions,
218+
GetSwapTxFunctions,
216219
// types for limitOrders methods:
217220
BuildLimitOrderFunctions,
218221
SignLimitOrderFunctions,
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
import type { PickKeys } from 'ts-essentials';
2+
import type { RateOptions } from '../rates';
3+
4+
type StringArrKeys = PickKeys<RateOptions, string[] | undefined>;
5+
6+
type MinRateOptionsInput = Pick<RateOptions, StringArrKeys> &
7+
Pick<RateOptions, 'partner'>;
8+
9+
type NormalizedRateOptions<
10+
O extends MinRateOptionsInput,
11+
T extends { options?: Partial<O> }
12+
> = Partial<Record<StringArrKeys | 'partner', string>> &
13+
Partial<Omit<O, StringArrKeys | 'partner'>> &
14+
Omit<T, 'options'>;
15+
16+
const DEFAULT_PARTNER = 'paraswap.io';
17+
18+
export function normalizeRateOptions<
19+
O extends MinRateOptionsInput,
20+
T extends { options?: Partial<O> }
21+
>({ options = {}, ...restInput }: T): NormalizedRateOptions<O, T> {
22+
const {
23+
excludePricingMethods,
24+
excludeContractMethods,
25+
includeContractMethods,
26+
partner = DEFAULT_PARTNER,
27+
includeDEXS,
28+
excludeDEXS,
29+
excludePools,
30+
...restOptions
31+
} = options;
32+
33+
const [
34+
_includeDEXS,
35+
_excludeDEXS,
36+
_excludePools,
37+
_excludePricingMethods,
38+
_excludeContractMethods,
39+
_includeContractMethods,
40+
] = [
41+
includeDEXS,
42+
excludeDEXS,
43+
excludePools,
44+
excludePricingMethods,
45+
excludeContractMethods,
46+
includeContractMethods,
47+
// no "" empty string
48+
].map((array) => array?.join(',') || undefined);
49+
50+
const transformed: Partial<Record<StringArrKeys | 'partner', string>> = {
51+
excludePricingMethods: _excludePricingMethods,
52+
excludeContractMethods: _excludeContractMethods,
53+
includeContractMethods: _includeContractMethods,
54+
partner,
55+
includeDEXS: _includeDEXS,
56+
excludeDEXS: _excludeDEXS,
57+
excludePools: _excludePools,
58+
};
59+
60+
return { ...transformed, ...restOptions, ...restInput };
61+
}

src/methods/swap/index.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import { ApproveTokenFunctions, constructApproveToken } from './approve';
55
import { constructGetBalances, GetBalancesFunctions } from './balance';
66
import { constructGetRate, GetRateFunctions } from './rates';
77
import { constructGetSpender, GetSpenderFunctions } from './spender';
8+
import { constructSwapTx, GetSwapTxFunctions } from './swapTx';
89
import { constructGetTokens, GetTokensFunctions } from './token';
910
import { BuildTxFunctions, constructBuildTx } from './transaction';
1011

@@ -14,7 +15,8 @@ export type SwapSDKMethods<TxResponse> = GetBalancesFunctions &
1415
ApproveTokenFunctions<TxResponse> &
1516
BuildTxFunctions &
1617
GetAdaptersFunctions &
17-
GetRateFunctions;
18+
GetRateFunctions &
19+
GetSwapTxFunctions;
1820

1921
/** @description construct SDK with every Swap-related method, fetching from API and token approval */
2022
export const constructSwapSDK = <TxResponse>(
@@ -31,5 +33,6 @@ export const constructSwapSDK = <TxResponse>(
3133
) => ApproveTokenFunctions<TxResponse>, // @TODO try Instantiation Expression when TS 4.7 `as constructApproveToken<TxResponse>`
3234
constructBuildTx,
3335
constructGetAdapters,
34-
constructGetRate
36+
constructGetRate,
37+
constructSwapTx
3538
);

0 commit comments

Comments
 (0)