@velora-dex/sdk 8.0.0
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/LICENSE +7 -0
- package/README.md +494 -0
- package/dist/constants.d.ts +7 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/examples/customFetcher.d.ts +3 -0
- package/dist/examples/customFetcher.d.ts.map +1 -0
- package/dist/examples/delta.d.ts +2 -0
- package/dist/examples/delta.d.ts.map +1 -0
- package/dist/examples/ethersV6.d.ts +2 -0
- package/dist/examples/ethersV6.d.ts.map +1 -0
- package/dist/examples/limitOrders_all.d.ts +2 -0
- package/dist/examples/limitOrders_all.d.ts.map +1 -0
- package/dist/examples/limitOrders_partial.d.ts +2 -0
- package/dist/examples/limitOrders_partial.d.ts.map +1 -0
- package/dist/examples/limitOrders_postOrder.d.ts +2 -0
- package/dist/examples/limitOrders_postOrder.d.ts.map +1 -0
- package/dist/examples/partial.d.ts +2 -0
- package/dist/examples/partial.d.ts.map +1 -0
- package/dist/examples/quote.d.ts +2 -0
- package/dist/examples/quote.d.ts.map +1 -0
- package/dist/examples/sdk.d.ts +2 -0
- package/dist/examples/sdk.d.ts.map +1 -0
- package/dist/examples/simple.d.ts +2 -0
- package/dist/examples/simple.d.ts.map +1 -0
- package/dist/examples/simpleQuote.d.ts +2 -0
- package/dist/examples/simpleQuote.d.ts.map +1 -0
- package/dist/examples/viem.d.ts +2 -0
- package/dist/examples/viem.d.ts.map +1 -0
- package/dist/examples/wagmi.d.ts +43 -0
- package/dist/examples/wagmi.d.ts.map +1 -0
- package/dist/examples/web3.d.ts +2 -0
- package/dist/examples/web3.d.ts.map +1 -0
- package/dist/gas.d.ts +8 -0
- package/dist/gas.d.ts.map +1 -0
- package/dist/helpers/approve.d.ts +8 -0
- package/dist/helpers/approve.d.ts.map +1 -0
- package/dist/helpers/fetchers/axios.d.ts +5 -0
- package/dist/helpers/fetchers/axios.d.ts.map +1 -0
- package/dist/helpers/fetchers/fetch.d.ts +5 -0
- package/dist/helpers/fetchers/fetch.d.ts.map +1 -0
- package/dist/helpers/index.d.ts +13 -0
- package/dist/helpers/index.d.ts.map +1 -0
- package/dist/helpers/misc.d.ts +48 -0
- package/dist/helpers/misc.d.ts.map +1 -0
- package/dist/helpers/providers/ethers.d.ts +10 -0
- package/dist/helpers/providers/ethers.d.ts.map +1 -0
- package/dist/helpers/providers/ethersV6.d.ts +8 -0
- package/dist/helpers/providers/ethersV6.d.ts.map +1 -0
- package/dist/helpers/providers/helpers.d.ts +3 -0
- package/dist/helpers/providers/helpers.d.ts.map +1 -0
- package/dist/helpers/providers/viem.d.ts +23 -0
- package/dist/helpers/providers/viem.d.ts.map +1 -0
- package/dist/helpers/providers/web3.d.ts +9 -0
- package/dist/helpers/providers/web3.d.ts.map +1 -0
- package/dist/helpers/token.d.ts +38 -0
- package/dist/helpers/token.d.ts.map +1 -0
- package/dist/index.d.ts +64 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +8 -0
- package/dist/methods/common/orders/buildOrderData.d.ts +27 -0
- package/dist/methods/common/orders/buildOrderData.d.ts.map +1 -0
- package/dist/methods/common/orders/encoding.d.ts +23 -0
- package/dist/methods/common/orders/encoding.d.ts.map +1 -0
- package/dist/methods/common/orders/misc.d.ts +27 -0
- package/dist/methods/common/orders/misc.d.ts.map +1 -0
- package/dist/methods/common/orders/signature.d.ts +9 -0
- package/dist/methods/common/orders/signature.d.ts.map +1 -0
- package/dist/methods/common/orders/types.d.ts +8 -0
- package/dist/methods/common/orders/types.d.ts.map +1 -0
- package/dist/methods/delta/approveForDelta.d.ts +8 -0
- package/dist/methods/delta/approveForDelta.d.ts.map +1 -0
- package/dist/methods/delta/buildCrosschainOrderBridge.d.ts +23 -0
- package/dist/methods/delta/buildCrosschainOrderBridge.d.ts.map +1 -0
- package/dist/methods/delta/buildDeltaOrder.d.ts +49 -0
- package/dist/methods/delta/buildDeltaOrder.d.ts.map +1 -0
- package/dist/methods/delta/getBridgeInfo.d.ts +9 -0
- package/dist/methods/delta/getBridgeInfo.d.ts.map +1 -0
- package/dist/methods/delta/getDeltaContract.d.ts +9 -0
- package/dist/methods/delta/getDeltaContract.d.ts.map +1 -0
- package/dist/methods/delta/getDeltaOrders.d.ts +22 -0
- package/dist/methods/delta/getDeltaOrders.d.ts.map +1 -0
- package/dist/methods/delta/getDeltaPrice.d.ts +58 -0
- package/dist/methods/delta/getDeltaPrice.d.ts.map +1 -0
- package/dist/methods/delta/getMulticallHandlers.d.ts +9 -0
- package/dist/methods/delta/getMulticallHandlers.d.ts.map +1 -0
- package/dist/methods/delta/getPartnerFee.d.ts +16 -0
- package/dist/methods/delta/getPartnerFee.d.ts.map +1 -0
- package/dist/methods/delta/helpers/across.d.ts +22 -0
- package/dist/methods/delta/helpers/across.d.ts.map +1 -0
- package/dist/methods/delta/helpers/buildDeltaOrderData.d.ts +35 -0
- package/dist/methods/delta/helpers/buildDeltaOrderData.d.ts.map +1 -0
- package/dist/methods/delta/helpers/composePermit.d.ts +5 -0
- package/dist/methods/delta/helpers/composePermit.d.ts.map +1 -0
- package/dist/methods/delta/helpers/misc.d.ts +3 -0
- package/dist/methods/delta/helpers/misc.d.ts.map +1 -0
- package/dist/methods/delta/helpers/types.d.ts +96 -0
- package/dist/methods/delta/helpers/types.d.ts.map +1 -0
- package/dist/methods/delta/index.d.ts +28 -0
- package/dist/methods/delta/index.d.ts.map +1 -0
- package/dist/methods/delta/isTokenSupportedInDelta.d.ts +8 -0
- package/dist/methods/delta/isTokenSupportedInDelta.d.ts.map +1 -0
- package/dist/methods/delta/postDeltaOrder.d.ts +23 -0
- package/dist/methods/delta/postDeltaOrder.d.ts.map +1 -0
- package/dist/methods/delta/signDeltaOrder.d.ts +12 -0
- package/dist/methods/delta/signDeltaOrder.d.ts.map +1 -0
- package/dist/methods/limitOrders/approveForOrder.d.ts +12 -0
- package/dist/methods/limitOrders/approveForOrder.d.ts.map +1 -0
- package/dist/methods/limitOrders/buildOrder.d.ts +11 -0
- package/dist/methods/limitOrders/buildOrder.d.ts.map +1 -0
- package/dist/methods/limitOrders/cancelOrder.d.ts +9 -0
- package/dist/methods/limitOrders/cancelOrder.d.ts.map +1 -0
- package/dist/methods/limitOrders/fillOrderDirectly.d.ts +30 -0
- package/dist/methods/limitOrders/fillOrderDirectly.d.ts.map +1 -0
- package/dist/methods/limitOrders/getOrders.d.ts +39 -0
- package/dist/methods/limitOrders/getOrders.d.ts.map +1 -0
- package/dist/methods/limitOrders/getOrdersContract.d.ts +8 -0
- package/dist/methods/limitOrders/getOrdersContract.d.ts.map +1 -0
- package/dist/methods/limitOrders/helpers/buildOrderData.d.ts +43 -0
- package/dist/methods/limitOrders/helpers/buildOrderData.d.ts.map +1 -0
- package/dist/methods/limitOrders/helpers/misc.d.ts +9 -0
- package/dist/methods/limitOrders/helpers/misc.d.ts.map +1 -0
- package/dist/methods/limitOrders/helpers/types.d.ts +49 -0
- package/dist/methods/limitOrders/helpers/types.d.ts.map +1 -0
- package/dist/methods/limitOrders/index.d.ts +30 -0
- package/dist/methods/limitOrders/index.d.ts.map +1 -0
- package/dist/methods/limitOrders/postOrder.d.ts +10 -0
- package/dist/methods/limitOrders/postOrder.d.ts.map +1 -0
- package/dist/methods/limitOrders/signOrder.d.ts +7 -0
- package/dist/methods/limitOrders/signOrder.d.ts.map +1 -0
- package/dist/methods/limitOrders/transaction.d.ts +23 -0
- package/dist/methods/limitOrders/transaction.d.ts.map +1 -0
- package/dist/methods/nftOrders/approveForOrder.d.ts +12 -0
- package/dist/methods/nftOrders/approveForOrder.d.ts.map +1 -0
- package/dist/methods/nftOrders/buildOrder.d.ts +11 -0
- package/dist/methods/nftOrders/buildOrder.d.ts.map +1 -0
- package/dist/methods/nftOrders/cancelOrder.d.ts +8 -0
- package/dist/methods/nftOrders/cancelOrder.d.ts.map +1 -0
- package/dist/methods/nftOrders/getOrders.d.ts +18 -0
- package/dist/methods/nftOrders/getOrders.d.ts.map +1 -0
- package/dist/methods/nftOrders/getOrdersContract.d.ts +8 -0
- package/dist/methods/nftOrders/getOrdersContract.d.ts.map +1 -0
- package/dist/methods/nftOrders/helpers/buildOrderData.d.ts +52 -0
- package/dist/methods/nftOrders/helpers/buildOrderData.d.ts.map +1 -0
- package/dist/methods/nftOrders/helpers/misc.d.ts +13 -0
- package/dist/methods/nftOrders/helpers/misc.d.ts.map +1 -0
- package/dist/methods/nftOrders/helpers/types.d.ts +39 -0
- package/dist/methods/nftOrders/helpers/types.d.ts.map +1 -0
- package/dist/methods/nftOrders/index.d.ts +23 -0
- package/dist/methods/nftOrders/index.d.ts.map +1 -0
- package/dist/methods/nftOrders/postOrder.d.ts +10 -0
- package/dist/methods/nftOrders/postOrder.d.ts.map +1 -0
- package/dist/methods/nftOrders/signOrder.d.ts +7 -0
- package/dist/methods/nftOrders/signOrder.d.ts.map +1 -0
- package/dist/methods/nftOrders/transaction.d.ts +23 -0
- package/dist/methods/nftOrders/transaction.d.ts.map +1 -0
- package/dist/methods/quote/getQuote.d.ts +51 -0
- package/dist/methods/quote/getQuote.d.ts.map +1 -0
- package/dist/methods/swap/adapters.d.ts +8 -0
- package/dist/methods/swap/adapters.d.ts.map +1 -0
- package/dist/methods/swap/approve.d.ts +10 -0
- package/dist/methods/swap/approve.d.ts.map +1 -0
- package/dist/methods/swap/balance.d.ts +23 -0
- package/dist/methods/swap/balance.d.ts.map +1 -0
- package/dist/methods/swap/helpers/normalizeRateOptions.d.ts +12 -0
- package/dist/methods/swap/helpers/normalizeRateOptions.d.ts.map +1 -0
- package/dist/methods/swap/index.d.ts +13 -0
- package/dist/methods/swap/index.d.ts.map +1 -0
- package/dist/methods/swap/rates.d.ts +52 -0
- package/dist/methods/swap/rates.d.ts.map +1 -0
- package/dist/methods/swap/spender.d.ts +21 -0
- package/dist/methods/swap/spender.d.ts.map +1 -0
- package/dist/methods/swap/swapTx.d.ts +158 -0
- package/dist/methods/swap/swapTx.d.ts.map +1 -0
- package/dist/methods/swap/token.d.ts +8 -0
- package/dist/methods/swap/token.d.ts.map +1 -0
- package/dist/methods/swap/transaction.d.ts +115 -0
- package/dist/methods/swap/transaction.d.ts.map +1 -0
- package/dist/sdk/full.d.ts +17 -0
- package/dist/sdk/full.d.ts.map +1 -0
- package/dist/sdk/partial.d.ts +31 -0
- package/dist/sdk/partial.d.ts.map +1 -0
- package/dist/sdk/simple.d.ts +75 -0
- package/dist/sdk/simple.d.ts.map +1 -0
- package/dist/sdk.cjs.development.js +5182 -0
- package/dist/sdk.cjs.development.js.map +1 -0
- package/dist/sdk.cjs.production.min.js +2 -0
- package/dist/sdk.cjs.production.min.js.map +1 -0
- package/dist/sdk.esm.js +5102 -0
- package/dist/sdk.esm.js.map +1 -0
- package/dist/types.d.ts +161 -0
- package/dist/types.d.ts.map +1 -0
- package/docs/DELTA.md +207 -0
- package/package.json +126 -0
- package/src/constants.ts +16 -0
- package/src/examples/customFetcher.ts +44 -0
- package/src/examples/delta.ts +127 -0
- package/src/examples/ethersV6.ts +38 -0
- package/src/examples/limitOrders_all.ts +135 -0
- package/src/examples/limitOrders_partial.ts +171 -0
- package/src/examples/limitOrders_postOrder.ts +77 -0
- package/src/examples/partial.ts +34 -0
- package/src/examples/quote.ts +205 -0
- package/src/examples/sdk.ts +39 -0
- package/src/examples/simple.ts +44 -0
- package/src/examples/simpleQuote.ts +98 -0
- package/src/examples/viem.ts +120 -0
- package/src/examples/wagmi.ts +68 -0
- package/src/examples/web3.ts +32 -0
- package/src/gas.ts +7 -0
- package/src/helpers/approve.ts +60 -0
- package/src/helpers/fetchers/axios.ts +34 -0
- package/src/helpers/fetchers/fetch.ts +67 -0
- package/src/helpers/index.ts +27 -0
- package/src/helpers/misc.ts +160 -0
- package/src/helpers/providers/ethers.ts +192 -0
- package/src/helpers/providers/ethersV6.ts +121 -0
- package/src/helpers/providers/helpers.ts +36 -0
- package/src/helpers/providers/viem.ts +205 -0
- package/src/helpers/providers/web3.ts +154 -0
- package/src/helpers/token.ts +75 -0
- package/src/index.ts +425 -0
- package/src/methods/common/orders/buildOrderData.ts +29 -0
- package/src/methods/common/orders/encoding.ts +216 -0
- package/src/methods/common/orders/misc.ts +86 -0
- package/src/methods/common/orders/signature.ts +68 -0
- package/src/methods/common/orders/types.ts +13 -0
- package/src/methods/delta/approveForDelta.ts +38 -0
- package/src/methods/delta/buildCrosschainOrderBridge.ts +84 -0
- package/src/methods/delta/buildDeltaOrder.ts +192 -0
- package/src/methods/delta/getBridgeInfo.ts +38 -0
- package/src/methods/delta/getDeltaContract.ts +29 -0
- package/src/methods/delta/getDeltaOrders.ts +102 -0
- package/src/methods/delta/getDeltaPrice.ts +122 -0
- package/src/methods/delta/getMulticallHandlers.ts +44 -0
- package/src/methods/delta/getPartnerFee.ts +58 -0
- package/src/methods/delta/helpers/across.ts +255 -0
- package/src/methods/delta/helpers/buildDeltaOrderData.ts +153 -0
- package/src/methods/delta/helpers/composePermit.ts +76 -0
- package/src/methods/delta/helpers/misc.ts +32 -0
- package/src/methods/delta/helpers/types.ts +110 -0
- package/src/methods/delta/index.ts +146 -0
- package/src/methods/delta/isTokenSupportedInDelta.ts +54 -0
- package/src/methods/delta/postDeltaOrder.ts +50 -0
- package/src/methods/delta/signDeltaOrder.ts +41 -0
- package/src/methods/limitOrders/approveForOrder.ts +36 -0
- package/src/methods/limitOrders/buildOrder.ts +56 -0
- package/src/methods/limitOrders/cancelOrder.ts +111 -0
- package/src/methods/limitOrders/fillOrderDirectly.ts +277 -0
- package/src/methods/limitOrders/getOrders.ts +151 -0
- package/src/methods/limitOrders/getOrdersContract.ts +20 -0
- package/src/methods/limitOrders/helpers/buildOrderData.ts +121 -0
- package/src/methods/limitOrders/helpers/misc.ts +64 -0
- package/src/methods/limitOrders/helpers/types.ts +70 -0
- package/src/methods/limitOrders/index.ts +154 -0
- package/src/methods/limitOrders/postOrder.ts +74 -0
- package/src/methods/limitOrders/signOrder.ts +29 -0
- package/src/methods/limitOrders/transaction.ts +231 -0
- package/src/methods/nftOrders/approveForOrder.ts +79 -0
- package/src/methods/nftOrders/buildOrder.ts +52 -0
- package/src/methods/nftOrders/cancelOrder.ts +23 -0
- package/src/methods/nftOrders/getOrders.ts +84 -0
- package/src/methods/nftOrders/getOrdersContract.ts +24 -0
- package/src/methods/nftOrders/helpers/buildOrderData.ts +131 -0
- package/src/methods/nftOrders/helpers/misc.ts +92 -0
- package/src/methods/nftOrders/helpers/types.ts +50 -0
- package/src/methods/nftOrders/index.ts +139 -0
- package/src/methods/nftOrders/postOrder.ts +71 -0
- package/src/methods/nftOrders/signOrder.ts +29 -0
- package/src/methods/nftOrders/transaction.ts +234 -0
- package/src/methods/quote/getQuote.ts +131 -0
- package/src/methods/swap/adapters.ts +49 -0
- package/src/methods/swap/approve.ts +51 -0
- package/src/methods/swap/balance.ts +147 -0
- package/src/methods/swap/helpers/normalizeRateOptions.ts +55 -0
- package/src/methods/swap/index.ts +38 -0
- package/src/methods/swap/rates.ts +276 -0
- package/src/methods/swap/spender.ts +76 -0
- package/src/methods/swap/swapTx.ts +266 -0
- package/src/methods/swap/token.ts +35 -0
- package/src/methods/swap/transaction.ts +310 -0
- package/src/sdk/full.ts +54 -0
- package/src/sdk/partial.ts +107 -0
- package/src/sdk/simple.ts +429 -0
- package/src/types.ts +240 -0
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
import type { OptimalRate, OptionalRate, ParaSwapVersion } from '@paraswap/core';
|
|
2
|
+
import type { Address, AddressOrSymbol, PriceString, Token, TxHash } from './helpers/token';
|
|
3
|
+
import type { SignableTypedData } from './methods/common/orders/buildOrderData';
|
|
4
|
+
import { TransactionParams } from './methods/swap/transaction';
|
|
5
|
+
export type { Address, AddressOrSymbol, PriceString, Token, TxHash, OptimalRate, OptionalRate, };
|
|
6
|
+
export type EnumerateLiteral<T extends Record<string, any>> = {
|
|
7
|
+
[K in keyof T]: T[K] extends `${infer n}` ? n : never;
|
|
8
|
+
}[keyof T];
|
|
9
|
+
/** @description Passed to version API endpoints as ?version: to /prices and /adapters */
|
|
10
|
+
export type APIVersion = EnumerateLiteral<typeof ParaSwapVersion>;
|
|
11
|
+
export interface ConstructBaseInput {
|
|
12
|
+
apiURL?: string;
|
|
13
|
+
version?: APIVersion;
|
|
14
|
+
chainId: number;
|
|
15
|
+
}
|
|
16
|
+
/** @description Any params that can be passed to fetcher. E.g. Axios fetcher can accept signal and timeout, fetch can accept signal */
|
|
17
|
+
export type RequestParameters = {
|
|
18
|
+
[K: string]: any;
|
|
19
|
+
signal?: AbortSignal;
|
|
20
|
+
};
|
|
21
|
+
interface FetcherInputBase<URL extends string = string> {
|
|
22
|
+
url: URL;
|
|
23
|
+
headers?: Record<string, string>;
|
|
24
|
+
requestParams?: RequestParameters;
|
|
25
|
+
}
|
|
26
|
+
export interface FetcherGetInput<URL extends string = string> extends FetcherInputBase<URL> {
|
|
27
|
+
method: 'GET';
|
|
28
|
+
}
|
|
29
|
+
export interface FetcherPostInput<URL extends string = string> extends FetcherInputBase<URL> {
|
|
30
|
+
method: 'POST';
|
|
31
|
+
data: Record<string, any>;
|
|
32
|
+
}
|
|
33
|
+
export type FetcherFunction = <T, URL extends string = string>(params: FetcherGetInput<URL> | FetcherPostInput<URL>) => Promise<T>;
|
|
34
|
+
export type ExtraFetchParams = {
|
|
35
|
+
apiKey?: string;
|
|
36
|
+
};
|
|
37
|
+
export interface ConstructFetchInput extends ConstructBaseInput {
|
|
38
|
+
fetcher: FetcherFunction;
|
|
39
|
+
}
|
|
40
|
+
interface OverridesBase {
|
|
41
|
+
from?: string;
|
|
42
|
+
gasPrice?: string;
|
|
43
|
+
maxFeePerGas?: string;
|
|
44
|
+
maxPriorityFeePerGas?: string;
|
|
45
|
+
gas?: number;
|
|
46
|
+
value?: number | string;
|
|
47
|
+
}
|
|
48
|
+
type BlockTag = string | number | 'latest' | 'pending' | 'earliest' | 'genesis';
|
|
49
|
+
export interface StaticCallOverrides extends OverridesBase {
|
|
50
|
+
block?: BlockTag;
|
|
51
|
+
}
|
|
52
|
+
export interface TxSendOverrides extends OverridesBase {
|
|
53
|
+
nonce?: number;
|
|
54
|
+
}
|
|
55
|
+
interface ContractCallInput<T extends string> {
|
|
56
|
+
address: Address;
|
|
57
|
+
abi: ReadonlyArray<JsonFragment>;
|
|
58
|
+
contractMethod: T;
|
|
59
|
+
args: any[];
|
|
60
|
+
}
|
|
61
|
+
export interface ContractCallStaticInput<T extends string> extends ContractCallInput<T> {
|
|
62
|
+
overrides: StaticCallOverrides;
|
|
63
|
+
}
|
|
64
|
+
interface ContractCallTransactionInput<T extends string> extends ContractCallInput<T> {
|
|
65
|
+
overrides: TxSendOverrides;
|
|
66
|
+
}
|
|
67
|
+
export type StaticContractCallerFn = <T, M extends string = string>(params: ContractCallStaticInput<M>) => Promise<T>;
|
|
68
|
+
export type TransactionContractCallerFn<T> = <M extends string = string>(params: ContractCallTransactionInput<M>) => Promise<T>;
|
|
69
|
+
export type SignTypedDataContractCallerFn = (typedData: SignableTypedData) => Promise<string>;
|
|
70
|
+
export interface ContractCallerFunctions<T> {
|
|
71
|
+
staticCall: StaticContractCallerFn;
|
|
72
|
+
transactCall: TransactionContractCallerFn<T>;
|
|
73
|
+
signTypedDataCall: SignTypedDataContractCallerFn;
|
|
74
|
+
}
|
|
75
|
+
export interface ConstructProviderFetchInput<T, D extends keyof ContractCallerFunctions<T> = keyof ContractCallerFunctions<T>> extends ConstructFetchInput {
|
|
76
|
+
contractCaller: Pick<ContractCallerFunctions<T>, D>;
|
|
77
|
+
}
|
|
78
|
+
export type TokenFromApi = Pick<Token, 'address' | 'decimals' | 'symbol' | 'balance' | 'allowance'>;
|
|
79
|
+
export interface TokensApiResponse {
|
|
80
|
+
tokens: TokenFromApi[];
|
|
81
|
+
}
|
|
82
|
+
export interface TokenApiResponse {
|
|
83
|
+
token?: TokenFromApi;
|
|
84
|
+
}
|
|
85
|
+
export type NoExtraKeysCheck<Checking, CheckAgainst> = Exclude<keyof Checking, keyof CheckAgainst> extends never ? Checking : never;
|
|
86
|
+
export type PriceRouteApiResponse = {
|
|
87
|
+
priceRoute: OptimalRate;
|
|
88
|
+
};
|
|
89
|
+
export type SwapApiResponse = {
|
|
90
|
+
priceRoute: OptimalRate;
|
|
91
|
+
txParams: Omit<TransactionParams, 'gas'>;
|
|
92
|
+
};
|
|
93
|
+
export type PriceRouteApiErrorResponse = {
|
|
94
|
+
error: string;
|
|
95
|
+
} | {
|
|
96
|
+
error: string;
|
|
97
|
+
value: string;
|
|
98
|
+
priceRoute: OptimalRate;
|
|
99
|
+
};
|
|
100
|
+
export type AnyFunction = (...args: any[]) => any;
|
|
101
|
+
export interface JsonFragmentType {
|
|
102
|
+
/**
|
|
103
|
+
* The parameter name.
|
|
104
|
+
*/
|
|
105
|
+
readonly name?: string;
|
|
106
|
+
/**
|
|
107
|
+
* If the parameter is indexed.
|
|
108
|
+
*/
|
|
109
|
+
readonly indexed?: boolean;
|
|
110
|
+
/**
|
|
111
|
+
* The type of the parameter.
|
|
112
|
+
*/
|
|
113
|
+
readonly type?: string;
|
|
114
|
+
/**
|
|
115
|
+
* The internal Solidity type.
|
|
116
|
+
*/
|
|
117
|
+
readonly internalType?: string;
|
|
118
|
+
/**
|
|
119
|
+
* The components for a tuple.
|
|
120
|
+
*/
|
|
121
|
+
readonly components?: ReadonlyArray<JsonFragmentType>;
|
|
122
|
+
}
|
|
123
|
+
export interface JsonFragment {
|
|
124
|
+
/**
|
|
125
|
+
* The name of the error, event, function, etc.
|
|
126
|
+
*/
|
|
127
|
+
readonly name?: string;
|
|
128
|
+
/**
|
|
129
|
+
* The type of the fragment (e.g. ``event``, ``"function"``, etc.)
|
|
130
|
+
*/
|
|
131
|
+
readonly type?: string;
|
|
132
|
+
/**
|
|
133
|
+
* If the event is anonymous.
|
|
134
|
+
*/
|
|
135
|
+
readonly anonymous?: boolean;
|
|
136
|
+
/**
|
|
137
|
+
* If the function is payable.
|
|
138
|
+
*/
|
|
139
|
+
readonly payable?: boolean;
|
|
140
|
+
/**
|
|
141
|
+
* If the function is constant.
|
|
142
|
+
*/
|
|
143
|
+
readonly constant?: boolean;
|
|
144
|
+
/**
|
|
145
|
+
* The mutability state of the function.
|
|
146
|
+
*/
|
|
147
|
+
readonly stateMutability?: string;
|
|
148
|
+
/**
|
|
149
|
+
* The input parameters.
|
|
150
|
+
*/
|
|
151
|
+
readonly inputs?: ReadonlyArray<JsonFragmentType>;
|
|
152
|
+
/**
|
|
153
|
+
* The output parameters.
|
|
154
|
+
*/
|
|
155
|
+
readonly outputs?: ReadonlyArray<JsonFragmentType>;
|
|
156
|
+
/**
|
|
157
|
+
* The gas limit to use when sending a transaction for this function.
|
|
158
|
+
*/
|
|
159
|
+
readonly gas?: string;
|
|
160
|
+
}
|
|
161
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/docs/DELTA.md
ADDED
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
**Velora Delta** is an intent-based protocol that enables a Velora user to make gasless swaps where multiple agents compete to execute the trade at the best price possible.
|
|
2
|
+
This way the user doesn't need to make a transaction themselves but only to sign a Delta Order.
|
|
3
|
+
The easiest way to make use of the Delta Order is to use the SDK following these steps:
|
|
4
|
+
|
|
5
|
+
### 1. Construct an SDK object
|
|
6
|
+
|
|
7
|
+
```ts
|
|
8
|
+
const account = userAddress;
|
|
9
|
+
const deltaSDK = constructSimpleSDK(
|
|
10
|
+
{chainId: 1, axios},
|
|
11
|
+
{
|
|
12
|
+
ethersProviderOrSigner: provider, // JsonRpcProvider
|
|
13
|
+
EthersContract: ethers.Contract,
|
|
14
|
+
account,
|
|
15
|
+
});
|
|
16
|
+
// for usage with different web3 provider libraries refer to the main [README](./README.md)
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
### 2. Request prices for a Token pair
|
|
20
|
+
|
|
21
|
+
```ts
|
|
22
|
+
const DAI_TOKEN = '0x6b175474e89094c44da98b954eedeac495271d0f';
|
|
23
|
+
const USDC_TOKEN = '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48';
|
|
24
|
+
const amount = '1000000000000'; // in wei
|
|
25
|
+
|
|
26
|
+
const deltaPrice = await deltaSDK.getDeltaPrice({
|
|
27
|
+
srcToken: DAI_TOKEN,
|
|
28
|
+
destToken: USDC_TOKEN,
|
|
29
|
+
amount,
|
|
30
|
+
userAddress: account,
|
|
31
|
+
srcDecimals: 18,
|
|
32
|
+
destDecimals: 6,
|
|
33
|
+
// partner: "..." // if available
|
|
34
|
+
});
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
### 3. Approve srcToken for DeltaContract
|
|
39
|
+
|
|
40
|
+
```ts
|
|
41
|
+
const tx = await deltaSDK.approveTokenForDelta(amount, DAI_TOKEN);
|
|
42
|
+
await tx.wait();
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
Alternatively sign Permit (DAI or Permit1) or Permit2 TransferFrom with DeltaContract as the verifyingContract
|
|
46
|
+
|
|
47
|
+
```ts
|
|
48
|
+
const DeltaContract = await deltaSDK.getDeltaContract();
|
|
49
|
+
|
|
50
|
+
// values depend on the Permit type and the srcToken
|
|
51
|
+
const signature = await signer._signTypedData(domain, types, message);
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
See more on accepted Permit variants in [Velora documentation](https://developers.velora.xyz/api/velora-api/velora-delta-api/build-a-delta-order-to-sign#supported-permits)
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
### 4. Sign and submit a Delta Order
|
|
58
|
+
|
|
59
|
+
```ts
|
|
60
|
+
// calculate acceptable destAmount
|
|
61
|
+
const slippagePercent = 0.5;
|
|
62
|
+
const destAmountAfterSlippage = (
|
|
63
|
+
+deltaPrice.destAmount *
|
|
64
|
+
(1 - slippagePercent / 100)
|
|
65
|
+
).toString(10);
|
|
66
|
+
|
|
67
|
+
const deltaAuction = await deltaSDK.submitDeltaOrder({
|
|
68
|
+
deltaPrice,
|
|
69
|
+
owner: account,
|
|
70
|
+
// beneficiary: anotherAccount, // if need to send destToken to another account
|
|
71
|
+
// permit: "0x1234...", // if signed a Permit1 or Permit2 TransferFrom for DeltaContract
|
|
72
|
+
srcToken: DAI_TOKEN,
|
|
73
|
+
destToken: USDC_TOKEN,
|
|
74
|
+
srcAmount: amount,
|
|
75
|
+
destAmount: destAmountAfterSlippage, // minimum acceptable destAmount
|
|
76
|
+
});
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
### 5. Wait for Delta Order execution
|
|
80
|
+
|
|
81
|
+
```ts
|
|
82
|
+
// poll if necessary
|
|
83
|
+
const auction = await deltaSDK.getDeltaOrderById(deltaAuction.id);
|
|
84
|
+
if (auction?.status === 'EXECUTED') {
|
|
85
|
+
console.log('Auction was executed');
|
|
86
|
+
}
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
#### A more detailed example of Delta Order usage can be found in [examples/delta](./src/examples/delta.ts)
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
---------------------------------------------------
|
|
95
|
+
|
|
96
|
+
## Crosschain Delta Orders
|
|
97
|
+
|
|
98
|
+
In case you want to perform a crosschain swap, the process is a little more involved.
|
|
99
|
+
|
|
100
|
+
### 1. Construct an SDK object
|
|
101
|
+
|
|
102
|
+
```ts
|
|
103
|
+
const SRC_CHAIN_ID = 1 // Ethereum
|
|
104
|
+
const DEST_CHAIN_ID = 10; // Optimism
|
|
105
|
+
|
|
106
|
+
const account = userAddress;
|
|
107
|
+
const deltaSDK = constructSimpleSDK(
|
|
108
|
+
{chainId: SRC_CHAIN_ID, axios},
|
|
109
|
+
{
|
|
110
|
+
ethersProviderOrSigner: provider, // JsonRpcProvider
|
|
111
|
+
EthersContract: ethers.Contract,
|
|
112
|
+
account,
|
|
113
|
+
});
|
|
114
|
+
// for usage with different web3 provider libraries refer to the main [README](./README.md)
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
### 2. Check which tokens are available on the destination chain.
|
|
118
|
+
|
|
119
|
+
A limited list of tokens are available in Across, the service facilitating crosschain bridging
|
|
120
|
+
|
|
121
|
+
```ts
|
|
122
|
+
const bridgeInfo = await deltaSDK.getBridgeInfo();
|
|
123
|
+
|
|
124
|
+
const tokensAvailableForBridging = bridgeInfo[SRC_CHAIN_ID]?.[DEST_CHAIN_ID]
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
|
|
128
|
+
### 3. Request prices for a Token pair
|
|
129
|
+
|
|
130
|
+
```ts
|
|
131
|
+
const DAI_TOKEN = '0x6b175474e89094c44da98b954eedeac495271d0f';
|
|
132
|
+
|
|
133
|
+
const USDC_TOKEN_ON_DEST_CHAIN = '0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85'; // available for bridging on Optimism
|
|
134
|
+
const amount = '1000000000000'; // in wei
|
|
135
|
+
|
|
136
|
+
const deltaPrice = await deltaSDK.getDeltaPrice({
|
|
137
|
+
srcToken: DAI_TOKEN,
|
|
138
|
+
destToken: USDC_TOKEN_ON_DEST_CHAIN,
|
|
139
|
+
destChainId: DEST_CHAIN_ID, // required to get deltaPrice for a Crosschain Order
|
|
140
|
+
amount,
|
|
141
|
+
userAddress: account,
|
|
142
|
+
srcDecimals: 18,
|
|
143
|
+
destDecimals: 6,
|
|
144
|
+
// partner: "..." // if available
|
|
145
|
+
});
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
|
|
149
|
+
### 4. Approve srcToken for DeltaContract
|
|
150
|
+
|
|
151
|
+
```ts
|
|
152
|
+
const tx = await deltaSDK.approveTokenForDelta(amount, DAI_TOKEN);
|
|
153
|
+
await tx.wait();
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
Alternatively sign Permit (DAI or Permit1) or Permit2 TransferFrom with DeltaContract as the verifyingContract
|
|
157
|
+
|
|
158
|
+
```ts
|
|
159
|
+
const DeltaContract = await deltaSDK.getDeltaContract();
|
|
160
|
+
|
|
161
|
+
// values depend on the Permit type and the srcToken
|
|
162
|
+
const signature = await signer._signTypedData(domain, types, message);
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
See more on accepted Permit variants in [Velora documentation](https://developers.velora.xyz/api/velora-api/velora-delta-api/build-a-delta-order-to-sign#supported-permits)
|
|
166
|
+
|
|
167
|
+
|
|
168
|
+
### 5. Sign and submit a Delta Order
|
|
169
|
+
|
|
170
|
+
```ts
|
|
171
|
+
// calculate acceptable destAmount
|
|
172
|
+
const slippagePercent = 0.5;
|
|
173
|
+
const destAmountAfterSlippage = (
|
|
174
|
+
+deltaPrice.destAmount *
|
|
175
|
+
(1 - slippagePercent / 100)
|
|
176
|
+
).toString(10);
|
|
177
|
+
|
|
178
|
+
const deltaAuction = await deltaSDK.submitDeltaOrder({
|
|
179
|
+
deltaPrice,
|
|
180
|
+
owner: account,
|
|
181
|
+
// permit: "0x1234...", // if signed a Permit1 or Permit2 TransferFrom for DeltaContract
|
|
182
|
+
srcToken: DAI_TOKEN,
|
|
183
|
+
destToken: USDC_TOKEN_ON_DEST_CHAIN,
|
|
184
|
+
srcAmount: amount,
|
|
185
|
+
destAmount: destAmountAfterSlippage, // minimum acceptable destAmount
|
|
186
|
+
destChainId: DEST_CHAIN_ID, // required to construct a Crosschain Order
|
|
187
|
+
beneficiary: anotherAccount, // if need to send destToken to another account on destChain
|
|
188
|
+
beneficiaryType: 'EOA', // whether the beneficiary on destChain is a smart contract
|
|
189
|
+
// bridge, // user-constructed Bridge object for Crosschain Orders
|
|
190
|
+
});
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
To construct a Crosschain Delta Order it is required to either:
|
|
194
|
+
* provide both `beneficiary` address and `beneficiaryType` value, so that the `Order.bridge` can be constructed automatically by the SDK.
|
|
195
|
+
* construct Bridge object. Refer to [documentation](https://developers.velora.xyz/api/velora-api/velora-delta-api/build-a-delta-order-to-sign#sign-an-order-cross-chain) for how to do that.
|
|
196
|
+
|
|
197
|
+
This is necessary because Across, the service facilitating crosschain bridging, has [special logic when it comes to transferring ETH and WETH](https://docs.across.to/introduction/technical-faq#what-is-the-behavior-of-eth-weth-in-transfers).
|
|
198
|
+
|
|
199
|
+
### 5. Wait for Delta Order execution
|
|
200
|
+
|
|
201
|
+
```ts
|
|
202
|
+
// poll if necessary
|
|
203
|
+
const auction = await deltaSDK.getDeltaOrderById(deltaAuction.id);
|
|
204
|
+
if (auction?.status === 'EXECUTED' && auction.bridgeStatus === "filled") {
|
|
205
|
+
console.log('Auction was executed');
|
|
206
|
+
}
|
|
207
|
+
```
|
package/package.json
ADDED
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@velora-dex/sdk",
|
|
3
|
+
"version": "8.0.0",
|
|
4
|
+
"main": "dist/index.js",
|
|
5
|
+
"module": "dist/sdk.esm.js",
|
|
6
|
+
"typings": "dist/index.d.ts",
|
|
7
|
+
"files": [
|
|
8
|
+
"dist",
|
|
9
|
+
"src",
|
|
10
|
+
"docs/DELTA.md"
|
|
11
|
+
],
|
|
12
|
+
"scripts": {
|
|
13
|
+
"analyze": "size-limit --why",
|
|
14
|
+
"build": "dts build",
|
|
15
|
+
"lint": "dts lint",
|
|
16
|
+
"prepare": "dts build",
|
|
17
|
+
"size": "size-limit",
|
|
18
|
+
"start": "dts watch",
|
|
19
|
+
"test": "dts test",
|
|
20
|
+
"docs:html": "typedoc --gitRevision \"$(git branch --show-current)\"",
|
|
21
|
+
"docs:md": "MD=true yarn docs:html",
|
|
22
|
+
"docs": "yarn docs:html && yarn docs:md"
|
|
23
|
+
},
|
|
24
|
+
"husky": {
|
|
25
|
+
"hooks": {
|
|
26
|
+
"pre-commit": "dts lint --fix"
|
|
27
|
+
}
|
|
28
|
+
},
|
|
29
|
+
"prettier": {
|
|
30
|
+
"printWidth": 80,
|
|
31
|
+
"semi": true,
|
|
32
|
+
"singleQuote": true,
|
|
33
|
+
"trailingComma": "es5"
|
|
34
|
+
},
|
|
35
|
+
"jest": {
|
|
36
|
+
"testEnvironment": "node"
|
|
37
|
+
},
|
|
38
|
+
"engines": {
|
|
39
|
+
"node": ">=18"
|
|
40
|
+
},
|
|
41
|
+
"size-limit": [
|
|
42
|
+
{
|
|
43
|
+
"path": "dist/sdk.cjs.production.min.js",
|
|
44
|
+
"limit": "25 KB"
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
"path": "dist/sdk.esm.js",
|
|
48
|
+
"limit": "25 KB"
|
|
49
|
+
}
|
|
50
|
+
],
|
|
51
|
+
"devDependencies": {
|
|
52
|
+
"@size-limit/preset-small-lib": "^11.1.6",
|
|
53
|
+
"@tsconfig/recommended": "^1.0.8",
|
|
54
|
+
"axios": "^1.7.7",
|
|
55
|
+
"bignumber.js": "^9.1.2",
|
|
56
|
+
"dotenv": "^16.4.5",
|
|
57
|
+
"dts-cli": "^2.0.5",
|
|
58
|
+
"ethers": "^6.13.4",
|
|
59
|
+
"ethersV5": "npm:ethers@5",
|
|
60
|
+
"hardhat": "^2.22.15",
|
|
61
|
+
"hardhat-switch-network": "^1.1.1",
|
|
62
|
+
"husky": "^9.1.6",
|
|
63
|
+
"isomorphic-unfetch": "^4.0.2",
|
|
64
|
+
"size-limit": "^11.1.6",
|
|
65
|
+
"tslib": "^2.8.1",
|
|
66
|
+
"typedoc": "^0.26.11",
|
|
67
|
+
"typedoc-plugin-markdown": "^4.2.10",
|
|
68
|
+
"typedoc-plugin-missing-exports": "^3.0.0",
|
|
69
|
+
"typedoc-plugin-replace-text": "^4.0.0",
|
|
70
|
+
"typescript": "^5.6.3",
|
|
71
|
+
"viem": "^2.21.39",
|
|
72
|
+
"wagmi": "^2.12.25",
|
|
73
|
+
"web3": "^4.14.0"
|
|
74
|
+
},
|
|
75
|
+
"peerDependencies": {
|
|
76
|
+
"axios": ">=0.25.0 <2.0.0",
|
|
77
|
+
"ethers": "^5.5.0 || ^6.0.0",
|
|
78
|
+
"viem": "^2.21.0",
|
|
79
|
+
"web3": "^4.14.0"
|
|
80
|
+
},
|
|
81
|
+
"peerDependenciesMeta": {
|
|
82
|
+
"axios": {
|
|
83
|
+
"optional": true
|
|
84
|
+
},
|
|
85
|
+
"ethers": {
|
|
86
|
+
"optional": true
|
|
87
|
+
},
|
|
88
|
+
"web3": {
|
|
89
|
+
"optional": true
|
|
90
|
+
},
|
|
91
|
+
"viem": {
|
|
92
|
+
"optional": true
|
|
93
|
+
}
|
|
94
|
+
},
|
|
95
|
+
"dependencies": {
|
|
96
|
+
"@paraswap/core": "2.4.0",
|
|
97
|
+
"ts-essentials": "^10.0.3"
|
|
98
|
+
},
|
|
99
|
+
"author": "Velora",
|
|
100
|
+
"description": "Velora SDK",
|
|
101
|
+
"license": "MIT",
|
|
102
|
+
"keywords": [
|
|
103
|
+
"web3",
|
|
104
|
+
"web3js",
|
|
105
|
+
"ethereum",
|
|
106
|
+
"crypto",
|
|
107
|
+
"blockchain",
|
|
108
|
+
"DEX",
|
|
109
|
+
"velora",
|
|
110
|
+
"ether",
|
|
111
|
+
"eth",
|
|
112
|
+
"dai",
|
|
113
|
+
"tokens",
|
|
114
|
+
"exchange",
|
|
115
|
+
"erc-20",
|
|
116
|
+
"erc20"
|
|
117
|
+
],
|
|
118
|
+
"repository": {
|
|
119
|
+
"type": "git",
|
|
120
|
+
"url": "https://github.com/VeloraDEX/paraswap-sdk"
|
|
121
|
+
},
|
|
122
|
+
"publishConfig": {
|
|
123
|
+
"access": "public"
|
|
124
|
+
},
|
|
125
|
+
"bugs": "https://github.com/VeloraDEX/paraswap-sdk/issues"
|
|
126
|
+
}
|
package/src/constants.ts
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { EnumerateLiteral, APIVersion } from './types';
|
|
2
|
+
|
|
3
|
+
import type { ContractMethod } from '@paraswap/core';
|
|
4
|
+
|
|
5
|
+
export {
|
|
6
|
+
SwapSide,
|
|
7
|
+
ContractMethod,
|
|
8
|
+
ContractMethodV5,
|
|
9
|
+
ContractMethodV6,
|
|
10
|
+
} from '@paraswap/core';
|
|
11
|
+
|
|
12
|
+
// allows to pass by name instead of importing enum first
|
|
13
|
+
export type ContractMethodByName = EnumerateLiteral<typeof ContractMethod>;
|
|
14
|
+
|
|
15
|
+
export const API_URL = 'https://api.paraswap.io';
|
|
16
|
+
export const DEFAULT_VERSION = '6.2' satisfies APIVersion;
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/* eslint-disable @typescript-eslint/no-unused-vars */
|
|
2
|
+
import { constructSimpleSDK, FetcherFunction } from '../';
|
|
3
|
+
|
|
4
|
+
// mock superagent module without adding a dependency
|
|
5
|
+
interface SuperAgentStatic
|
|
6
|
+
extends Promise<{
|
|
7
|
+
body: any;
|
|
8
|
+
ok: boolean;
|
|
9
|
+
status: number;
|
|
10
|
+
statusCode: number;
|
|
11
|
+
error: false | { status: number; textx: string };
|
|
12
|
+
}> {
|
|
13
|
+
set(headers: Record<string, string>): this;
|
|
14
|
+
get(url: string): this;
|
|
15
|
+
post(url: string): this;
|
|
16
|
+
send(body: any): this;
|
|
17
|
+
}
|
|
18
|
+
// pretend we do `import superagent from "superagent"
|
|
19
|
+
declare const superagent: SuperAgentStatic;
|
|
20
|
+
|
|
21
|
+
export const superagentFetcher = (): FetcherFunction =>
|
|
22
|
+
async function (options) {
|
|
23
|
+
if (options.method.toLowerCase() === 'post' && 'data' in options) {
|
|
24
|
+
const response = await superagent
|
|
25
|
+
.post(options.url)
|
|
26
|
+
.set(options?.headers || {})
|
|
27
|
+
.send(options.data);
|
|
28
|
+
|
|
29
|
+
return response.body;
|
|
30
|
+
} else {
|
|
31
|
+
const response = await superagent
|
|
32
|
+
.get(options.url)
|
|
33
|
+
.set(options?.headers || {});
|
|
34
|
+
|
|
35
|
+
return response.body;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
// Add error handling with FetcherError;
|
|
39
|
+
// handle options.requestParams.signal;
|
|
40
|
+
// pass any other paramteres in requestParams
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
const fetcher: FetcherFunction = superagentFetcher();
|
|
44
|
+
const sdk = constructSimpleSDK({ fetcher, chainId: 1 });
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
/* eslint-disable @typescript-eslint/no-unused-vars */
|
|
2
|
+
import axios from 'axios';
|
|
3
|
+
import { ethers, Wallet } from 'ethersV5';
|
|
4
|
+
import {
|
|
5
|
+
constructPartialSDK,
|
|
6
|
+
constructEthersContractCaller,
|
|
7
|
+
constructAxiosFetcher,
|
|
8
|
+
constructAllDeltaOrdersHandlers,
|
|
9
|
+
} from '..';
|
|
10
|
+
|
|
11
|
+
const fetcher = constructAxiosFetcher(axios);
|
|
12
|
+
|
|
13
|
+
const provider = ethers.getDefaultProvider(1);
|
|
14
|
+
const signer = Wallet.createRandom().connect(provider);
|
|
15
|
+
const account = signer.address;
|
|
16
|
+
const contractCaller = constructEthersContractCaller({
|
|
17
|
+
ethersProviderOrSigner: provider,
|
|
18
|
+
EthersContract: ethers.Contract,
|
|
19
|
+
});
|
|
20
|
+
|
|
21
|
+
// type AdaptersFunctions & ApproveTokenFunctions<ethers.ContractTransaction>
|
|
22
|
+
const deltaSDK = constructPartialSDK(
|
|
23
|
+
{
|
|
24
|
+
chainId: 1,
|
|
25
|
+
fetcher,
|
|
26
|
+
contractCaller,
|
|
27
|
+
},
|
|
28
|
+
constructAllDeltaOrdersHandlers
|
|
29
|
+
);
|
|
30
|
+
|
|
31
|
+
const DAI_TOKEN = '0x6b175474e89094c44da98b954eedeac495271d0f';
|
|
32
|
+
const USDC_TOKEN = '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48';
|
|
33
|
+
|
|
34
|
+
async function simpleDeltaFlow() {
|
|
35
|
+
const amount = '1000000000000'; // wei
|
|
36
|
+
|
|
37
|
+
const deltaPrice = await deltaSDK.getDeltaPrice({
|
|
38
|
+
srcToken: DAI_TOKEN,
|
|
39
|
+
destToken: USDC_TOKEN,
|
|
40
|
+
amount,
|
|
41
|
+
userAddress: account,
|
|
42
|
+
srcDecimals: 18,
|
|
43
|
+
destDecimals: 18,
|
|
44
|
+
// partner: "..." // if available
|
|
45
|
+
});
|
|
46
|
+
|
|
47
|
+
const DeltaContract = await deltaSDK.getDeltaContract();
|
|
48
|
+
|
|
49
|
+
// or sign a Permit1 or Permit2 TransferFrom for DeltaContract
|
|
50
|
+
const tx = await deltaSDK.approveTokenForDelta(amount, DAI_TOKEN);
|
|
51
|
+
await tx.wait();
|
|
52
|
+
|
|
53
|
+
const slippagePercent = 0.5;
|
|
54
|
+
const destAmountAfterSlippage = BigInt(
|
|
55
|
+
// get rid of exponential notation
|
|
56
|
+
|
|
57
|
+
+(+deltaPrice.destAmount * (1 - slippagePercent / 100)).toFixed(0)
|
|
58
|
+
// get rid of decimals
|
|
59
|
+
).toString(10);
|
|
60
|
+
|
|
61
|
+
const deltaAuction = await deltaSDK.submitDeltaOrder({
|
|
62
|
+
deltaPrice,
|
|
63
|
+
owner: account,
|
|
64
|
+
// beneficiary: anotherAccount, // if need to send destToken to another account
|
|
65
|
+
// permit: "0x1234...", // if signed a Permit1 or Permit2 TransferFrom for DeltaContract
|
|
66
|
+
srcToken: DAI_TOKEN,
|
|
67
|
+
destToken: USDC_TOKEN,
|
|
68
|
+
srcAmount: amount,
|
|
69
|
+
destAmount: destAmountAfterSlippage, // minimum acceptable destAmount
|
|
70
|
+
});
|
|
71
|
+
|
|
72
|
+
// poll if necessary
|
|
73
|
+
const auction = await deltaSDK.getDeltaOrderById(deltaAuction.id);
|
|
74
|
+
if (auction?.status === 'EXECUTED') {
|
|
75
|
+
console.log('Auction was executed');
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
async function manualDeltaFlow() {
|
|
79
|
+
const amount = '1000000000000'; // wei
|
|
80
|
+
|
|
81
|
+
const deltaPrice = await deltaSDK.getDeltaPrice({
|
|
82
|
+
srcToken: DAI_TOKEN,
|
|
83
|
+
destToken: USDC_TOKEN,
|
|
84
|
+
amount,
|
|
85
|
+
userAddress: account,
|
|
86
|
+
srcDecimals: 18,
|
|
87
|
+
destDecimals: 18,
|
|
88
|
+
// partner: "..." // if available
|
|
89
|
+
});
|
|
90
|
+
|
|
91
|
+
const DeltaContract = await deltaSDK.getDeltaContract();
|
|
92
|
+
|
|
93
|
+
// or sign a Permit1 or Permit2 TransferFrom for DeltaContract
|
|
94
|
+
const tx = await deltaSDK.approveTokenForDelta(amount, DAI_TOKEN);
|
|
95
|
+
await tx.wait();
|
|
96
|
+
|
|
97
|
+
const slippagePercent = 0.5;
|
|
98
|
+
const destAmountAfterSlippage = (
|
|
99
|
+
+deltaPrice.destAmount *
|
|
100
|
+
(1 - slippagePercent / 100)
|
|
101
|
+
).toString(10);
|
|
102
|
+
|
|
103
|
+
const signableOrderData = await deltaSDK.buildDeltaOrder({
|
|
104
|
+
deltaPrice,
|
|
105
|
+
owner: account,
|
|
106
|
+
// beneficiary: anotherAccount, // if need to send destToken to another account
|
|
107
|
+
// permit: "0x1234...", // if signed a Permit1 or Permit2 TransferFrom for DeltaContract
|
|
108
|
+
srcToken: DAI_TOKEN,
|
|
109
|
+
destToken: USDC_TOKEN,
|
|
110
|
+
srcAmount: amount,
|
|
111
|
+
destAmount: destAmountAfterSlippage, // minimum acceptable destAmount
|
|
112
|
+
});
|
|
113
|
+
|
|
114
|
+
const signature = await deltaSDK.signDeltaOrder(signableOrderData);
|
|
115
|
+
|
|
116
|
+
const deltaAuction = await deltaSDK.postDeltaOrder({
|
|
117
|
+
// partner: "..." // if available
|
|
118
|
+
order: signableOrderData.data,
|
|
119
|
+
signature,
|
|
120
|
+
});
|
|
121
|
+
|
|
122
|
+
// poll if necessary
|
|
123
|
+
const auction = await deltaSDK.getDeltaOrderById(deltaAuction.id);
|
|
124
|
+
if (auction?.status === 'EXECUTED') {
|
|
125
|
+
console.log('Auction was executed');
|
|
126
|
+
}
|
|
127
|
+
}
|