Skip to content

Commit

Permalink
Merge branch 'develop' into bug/incorrect_crossChainContractsData
Browse files Browse the repository at this point in the history
  • Loading branch information
axtezy authored Jun 14, 2022
2 parents 68db627 + 5c755f4 commit b21196b
Show file tree
Hide file tree
Showing 205 changed files with 6,572 additions and 2,908 deletions.
18 changes: 0 additions & 18 deletions .eslintrc.js
Original file line number Diff line number Diff line change
Expand Up @@ -41,15 +41,6 @@ module.exports = {
'class-methods-use-this': 'off',
complexity: ['error', 20],
eqeqeq: ['error', 'smart'],
'no-magic-numbers': 'off',
'@typescript-eslint/no-magic-numbers': [
'warn',
{
ignore: [-1, 0, 1, 2, 3, 10, 18, 100, 1000, 16, 64, 256],
detectObjects: true,
ignoreReadonlyClassProperties: true
}
],
'@typescript-eslint/naming-convention': [
'error',
{
Expand Down Expand Up @@ -130,15 +121,6 @@ module.exports = {
'class-methods-use-this': 'off',
complexity: ['error', 20],
eqeqeq: ['error', 'smart'],
'no-magic-numbers': 'off',
'@typescript-eslint/no-magic-numbers': [
'warn',
{
ignore: [-1, 0, 1, 2, 3, 10, 100, 1000, 16, 64, 256, 5000, 10_000],
detectObjects: true,
ignoreReadonlyClassProperties: true
}
],
'@typescript-eslint/naming-convention': [
'error',
{
Expand Down
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -6,5 +6,7 @@
/coverage/
/__tests__/env.js
/lib/
/dist/
/cache/
/scripts/node.log
/docker-compose.yml
105 changes: 98 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
- [sdk.updateConfiguration method](#sdkupdateconfiguration-method)
- [sdk.instantTrades readonly field](#sdkinstanttrades-readonly-field)
- [sdk.crossChain readonly field](#sdkcrosschain-readonly-field)
- [sdk.crossChainSymbiosisManger readonly field](#sdkcrosschainsymbiosismanager-readonly-field)
- [sdk.tokens readonly field](#sdktokens-readonly-field)
- [sdk.web3PublicService readonly field](#sdkweb3publicservice-readonly-field)
- [sdk.web3Private readonly field](#sdkweb3private-readonly-field)
Expand All @@ -47,6 +48,7 @@
- [isZrxLikeTradeLikeTrade function](#iszrxliketradeliketrade-function)
- [Cross Chain Manager](#cross-chain-manager)
- [sdk.crossChain.calculateTrade method](#sdkcrosschaincalculatetrade-method)
- [Wrapped Cross Chain Trade](#wrapped-cross-chain-trade)
- [Cross Chain Trade](#cross-chain-trade)
- [crossChainTrade.swap method](#crosschaintradeswap-method)
- [crossChainTrade.needAapprove method](#crosschaintradeneedapprove-method)
Expand All @@ -55,7 +57,13 @@
- [crossChainTrade.to readonly field](#crosschaintradeto-readonly-field)
- [crossChainTrade.toTokenAmountMin readonly field](#crosschaintradetotokenamountmin-readonly-field)
- [crossChainTrade.estimatedGas getter](#crosschaintradeestimatedgas-getter)
- [Celer Cross Chain Trade and Rubic Cross Chain Trade](#celer-cross-chain-trade-and-rubic-cross-chain-trade)
- [crossChainTrade.priceImpactData getter](#crosschaintradepriceimpactdata-getter)
- [Symbiosis Cross Chain Trade](#symbiosis-cross-chain-trade)
- [crossChainTrade.priceImpact readonly field](#crosschaintradepriceimpact-readonly-field)
- [Cross Chain Symbiosis Manager](#cross-chain-symbiosis-manager)
- [crossChainTrade.getUserTrades method](#crosschainsymbiosismanagergetusertrades-method)
- [crossChainTrade.revertTrade method](#crosschainsymbiosismanagerreverttrade-method)
- [Tokens](#tokens-manager)
- [Tokens Manager](#tokens-manager)
- [tokensManager.createTokenFromStruct method](#tokensmanagercreatetokenfromstruct-method)
Expand Down Expand Up @@ -510,6 +518,16 @@ Cross-chain trades manager object. Use it to calculate and create cross-chain tr
---
#### sdk.crossChainSymbiosisManager readonly field
```typescript
sdk.crossChainSymbiosisManager: CrossChainSymbiosisManager
```
Cross-chain symbiosis manager object. Use it to get pending trades and symbiosis and revert them. [See more.](#cross-chain-symbiosis-manager)
---
#### sdk.tokens readonly field
```typescript
Expand Down Expand Up @@ -950,12 +968,12 @@ sdk.crossChain.calculateTrade(
blockchain: BLOCKCHAIN_NAME;
},
options?: CrossChainOptions
): Promise<CrossChainTrade>
): Promise<WrappedCrossChainTrade>
```

> ℹ️️ You have to set up **rpc provider 🌐** for network in which you will calculate trade.

Method calculates [CrossChainTrade](#cross-chain-trade).
Method calculates [WrappedCrossChainTrade](#wrapped-cross-chain-trade).

**sdk.crossChain.calculateTrade method parameters:**

Expand All @@ -968,21 +986,41 @@ Method calculates [CrossChainTrade](#cross-chain-trade).

**CrossChainOptions description:**

| Option | Type | Description | Default |
|-----------------------|----------|-------------------------------------------------------------------------------------------------------------|---------|
| fromSlippageTolerance | `number` | Swap slippage in range 0 to 1. Defines minimum amount after swap in **first blockchain**. | 0.02 |
| toSlippageTolerance | `number` | Swap slippage in range 0 to 1. Defines minimum amount that you can get after swap in **second blockchain**. | 0.02 |
| Option | Type | Description | Default |
|-----------------------|---------------------------------|-----------------------------------------------------------------------------------------------------------------------------------|--------------------------|
| fromSlippageTolerance | `number` | Swap slippage in range 0 to 1. Defines minimum amount after swap in **first blockchain** (for Celer and Rubic). | 0.02 |
| toSlippageTolerance | `number` | Swap slippage in range 0 to 1. Defines minimum amount that you can get after swap in **second blockchain** (for Celer and Rubic). | 0.02 |
| slippageTolerance | `number` | Swap slippage in range 0 to 1. Defines minimum amount that you can get after swap (for Symbiosis). | 0.04 |
| fromAddress | `string` | User wallet address to calculate trade for (for Symbiosis). | Connected wallet address |
| deadline | `number` | Deadline of the trade in minutes (for Symbiosis). | 20 |
| gasCalculation | `'enabled'` &#124; `'disabled'` | Disables or enables gas limit and gas price calclation. | 'enabled' |
| disabledProviders | `CrossChainTradeType[]` | Disables passed providers. | [] |

---

### Wrapped Cross Chain Trade

```typescript
interface WrappedCrossChainTrade {
trade: CrossChainTrade | null;
minAmountError?: BigNumber;
maxAmountError?: BigNumber;
}
```

Wraps cross chain trade and possible min max amount errors. If `minAmountError` or `maxAmountError` are not empty, then you must display an error, because [`swap`](#crosschaintradeswap-method) method will return error.

---

### Cross Chain Trade

Stores information about trade and provides method to make swap.
Extends to types: `CelerCrossChainTrade`, `RubicCrossChainTrade`, `SymbiosisCrossChainTrade`.

#### crossChainTrade.swap method

```typescript
instantTrade.swap(options?: SwapTransactionOptions): Promise<TransactionReceipt>
crossChainTrade.swap(options?: SwapTransactionOptions): Promise<TransactionReceipt>
```

> ℹ️️ You have to set up **wallet provider 👛** for network in which you will execute trade swap.
Expand Down Expand Up @@ -1094,6 +1132,10 @@ Gets gasFee, that is gasLimit * gasPrice. Equals `null` if gas couldn't be calcu

---

### Celer Cross Chain Trade and Rubic Cross Chain Trade

Extend `CrossChainTrade` class.

#### crossChainTrade.priceImpactData getter

```typescript
Expand All @@ -1107,6 +1149,55 @@ Returns price impact in first and second blockchains, based on tokens usd prices

---

### Symbiosis Cross Chain Trade

Extends `CrossChainTrade` class.

#### crossChainTrade.priceImpact readonly field

```typescript
crossChainTrade.priceImpact: number
```

Returns overall price impact, based on symbiosis api.

---

### Cross Chain Symbiosis Manager

Contains methods to work with pending user trades and revert them.

#### crossChainSymbiosisManager.getUserTrades method

```typescript
crossChainSymbiosisManager.getUserTrades(fromAddress?: string): Promise<PendingRequest[]>
```

Returns pending request for `fromAddress` if provided, otherwise for connected wallet address.

---

#### crossChainSymbiosisManager.revertTrade method

```typescript
crossChainSymbiosisManager.revertTrade(
revertTransactionHash: string,
options?: SwapTransactionOptions
): Promise<string | never>
```

Reverts trade, which transaction hash is `revertTransactionHash` for connected wallet address.

**SwapTransactionOptions description:**

| Option | Type | Description | Default |
|------------|--------------------------|---------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|
| onConfirm? | `(hash: string) => void` | Callback that will be called after the user signs swap transaction. | Not set. |
| gasPrice? | `string` | Specifies gas price **in wei** for **swap and approve** transactions. Set this parameter only if you know exactly what you are doing. | The value obtained during the calculation of the trade. If value wasn't calculated, it will calculates automatically by user's wallet. |
| gasLimit? | `string` | Specifies gas limit for **swap and approve** transactions. Set this parameter only if you know exactly what you are doing. | The value obtained during the calculation of the trade. If value wasn't calculated, it will calculates automatically by user's wallet. |

---

### Tokens Manager

#### tokensManager.createTokenFromStruct method
Expand Down
2 changes: 1 addition & 1 deletion __tests__/api-tests/cross-chain-trades.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { BLOCKCHAIN_NAME } from '@core/blockchain/models/BLOCKCHAIN_NAME';
import { BLOCKCHAIN_NAME } from '@core/blockchain/models/blockchain-name';
import { SDK } from '@core/sdk/sdk';
import { minimalConfiguration } from '../utils/configuration';

Expand Down
2 changes: 1 addition & 1 deletion __tests__/api-tests/instant-trades.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { BLOCKCHAIN_NAME } from '@core/blockchain/models/BLOCKCHAIN_NAME';
import { BLOCKCHAIN_NAME } from '@core/blockchain/models/blockchain-name';
import { SDK } from '@core/sdk/sdk';
import { minimalConfiguration } from '../utils/configuration';

Expand Down
2 changes: 1 addition & 1 deletion __tests__/unit-tests/common/utils/p-timeout.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,7 @@ describe('p-timeout tests', () => {
customTimers: {
setTimeout: function (handler: () => void, timeout?: number) {
setTimeoutSpy(timeout);
return setTimeout(handler as unknown as () => void, timeout);
return setTimeout(handler as unknown as () => void, timeout || 1000);
} as typeof setTimeout,
clearTimeout(timeoutId) {
clearTimeoutSpy();
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { BLOCKCHAIN_NAME } from 'src/core';
import { JoeProvider } from 'src/features/instant-trades/dexes/avalanche/joe/joe-provider';
import { JoeTrade } from 'src/features/instant-trades/dexes/avalanche/joe/joe-trade';
import { JOE_PROVIDER_CONFIGURATION } from 'src/features/instant-trades/dexes/avalanche/joe/constants';
import { BLOCKCHAIN_NAME } from '@core/blockchain/models/blockchain-name';

export const joeAvalancheProviderSpec = () => {
describe('Joe provider tests', () => {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { BLOCKCHAIN_NAME } from 'src/core';
import { PangolinProvider } from 'src/features/instant-trades/dexes/avalanche/pangolin/pangolin-provider';
import { PangolinTrade } from 'src/features/instant-trades/dexes/avalanche/pangolin/pangolin-trade';
import { PANGOLIN_PROVIDER_CONFIGURATION } from 'src/features/instant-trades/dexes/avalanche/pangolin/constants';
import { BLOCKCHAIN_NAME } from '@core/blockchain/models/blockchain-name';

export const pangolinAvalancheProviderSpec = () => {
describe('Pangolin provider tests', () => {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { BLOCKCHAIN_NAME } from 'src/core';
import { SushiSwapAvalancheProvider } from 'src/features/instant-trades/dexes/avalanche/sushi-swap-avalanche/sushi-swap-avalanche-provider';
import { SushiSwapAvalancheTrade } from 'src/features/instant-trades/dexes/avalanche/sushi-swap-avalanche/sushi-swap-avalanche-trade';
import { SUSHI_SWAP_AVALANCHE_PROVIDER_CONFIGURATION } from 'src/features/instant-trades/dexes/avalanche/sushi-swap-avalanche/constants';
import { BLOCKCHAIN_NAME } from '@core/blockchain/models/blockchain-name';

export const sushiSwapAvalancheProviderSpec = () => {
describe('SushiSwap provider tests', () => {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { BLOCKCHAIN_NAME } from 'src/core';
import { TRADE_TYPE } from 'src/features';
import { OneinchBscProvider } from 'src/features/instant-trades/dexes/bsc/oneinch-bsc/oneinch-bsc-provider';
import { mockEmptyInjector } from '__tests__/utils/mock-injector';
import { BLOCKCHAIN_NAME } from '@core/blockchain/models/blockchain-name';

export const oneinchBscProviderSpec = () => {
let oneinchProvider: OneinchBscProvider;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { BLOCKCHAIN_NAME } from 'src/core';
import { PancakeSwapProvider } from 'src/features/instant-trades/dexes/bsc/pancake-swap/pancake-swap-provider';
import { PancakeSwapTrade } from 'src/features/instant-trades/dexes/bsc/pancake-swap/pancake-swap-trade';
import { PANCAKE_SWAP_PROVIDER_CONFIGURATION } from 'src/features/instant-trades/dexes/bsc/pancake-swap/constants';
import { BLOCKCHAIN_NAME } from '@core/blockchain/models/blockchain-name';

export const pancakeSwapBscProviderSpec = () => {
let pancakeSwapProvider: PancakeSwapProvider;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { BLOCKCHAIN_NAME } from 'src/core';
import { SushiSwapBscProvider } from 'src/features/instant-trades/dexes/bsc/sushi-swap-bsc/sushi-swap-bsc-provider';
import { SushiSwapBscTrade } from 'src/features/instant-trades/dexes/bsc/sushi-swap-bsc/sushi-swap-bsc-trade';
import { SUSHI_SWAP_BSC_PROVIDER_CONFIGURATION } from 'src/features/instant-trades/dexes/bsc/sushi-swap-bsc/constants';
import { BLOCKCHAIN_NAME } from '@core/blockchain/models/blockchain-name';

export const sushiSwapBscProviderSpec = () => {
let sushiSwapBscProvider: SushiSwapBscProvider;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { BLOCKCHAIN_NAME } from 'src/core';
import { TRADE_TYPE } from 'src/features';
import { OneinchEthereumProvider } from 'src/features/instant-trades/dexes/ethereum/oneinch-ethereum/oneinch-ethereum-provider';
import { mockEmptyInjector } from '__tests__/utils/mock-injector';
import { BLOCKCHAIN_NAME } from '@core/blockchain/models/blockchain-name';

export const oneinchProviderEthereumSpec = () => {
let oneinchProvider: OneinchEthereumProvider;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { BLOCKCHAIN_NAME } from 'src/core';
import { SushiSwapEthereumProvider } from 'src/features/instant-trades/dexes/ethereum/sushi-swap-ethereum/sushi-swap-ethereum-provider';
import { SUSHI_SWAP_ETHEREUM_PROVIDER_CONFIGURATION } from 'src/features/instant-trades/dexes/ethereum/sushi-swap-ethereum/constants';
import { BLOCKCHAIN_NAME } from '@core/blockchain/models/blockchain-name';

export const sushiSwapProviderEthereumSpec = () => {
let sushiSwapProvider: SushiSwapEthereumProvider;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,12 @@ import { Chain } from '__tests__/utils/chain';
import { mockInjector } from '__tests__/utils/mock-injector';
import { TOKENS as ALL_TOKENS } from '__tests__/utils/tokens';
import BigNumber from 'bignumber.js';
import { BLOCKCHAIN_NAME } from 'src/core';
import { PriceTokenAmount } from 'src/core/blockchain/tokens/price-token-amount';
import { PriceToken } from 'src/core/blockchain/tokens/price-token';
import { UniSwapV2EthereumProvider } from 'src/features/instant-trades/dexes/ethereum/uni-swap-v2-ethereum/uni-swap-v2-ethereum-provider';
import { UniSwapV2EthereumTrade } from 'src/features/instant-trades/dexes/ethereum/uni-swap-v2-ethereum/uni-swap-v2-ethereum-trade';
import { UNISWAP_V2_ETHEREUM_PROVIDER_CONFIGURATION } from 'src/features/instant-trades/dexes/ethereum/uni-swap-v2-ethereum/constants';
import { BLOCKCHAIN_NAME } from '@core/blockchain/models/blockchain-name';

const TOKENS = ALL_TOKENS[BLOCKCHAIN_NAME.ETHEREUM];

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,12 @@ import { mockInjector } from '__tests__/utils/mock-injector';
import { TOKENS as ALL_TOKENS } from '__tests__/utils/tokens';
import { Injector } from '@core/sdk/injector';
import BigNumber from 'bignumber.js';
import { BLOCKCHAIN_NAME, Web3Public } from 'src/core';
import { Web3Public } from 'src/core';
import { PriceTokenAmount } from 'src/core/blockchain/tokens/price-token-amount';
import { PriceToken } from 'src/core/blockchain/tokens/price-token';
import { TransactionReceipt } from 'web3-eth';
import { UniSwapV2EthereumProvider } from '@features/instant-trades/dexes/ethereum/uni-swap-v2-ethereum/uni-swap-v2-ethereum-provider';
import { BLOCKCHAIN_NAME } from '@core/blockchain/models/blockchain-name';
import fn = jest.fn;

const TOKENS = ALL_TOKENS[BLOCKCHAIN_NAME.ETHEREUM];
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,13 @@ import { Chain } from '__tests__/utils/chain';
import { mockInjector } from '__tests__/utils/mock-injector';
import { TOKENS as ALL_TOKENS } from '__tests__/utils/tokens';
import BigNumber from 'bignumber.js';
import { BLOCKCHAIN_NAME } from 'src/core';
import { PriceTokenAmount } from 'src/core/blockchain/tokens/price-token-amount';
import { PriceToken } from 'src/core/blockchain/tokens/price-token';
import { UniSwapV3EthereumTrade } from 'src/features/instant-trades/dexes/ethereum/uni-swap-v3-ethereum/uni-swap-v3-ethereum-trade';
import { UNI_SWAP_V3_ETHEREUM_PROVIDER_CONFIGURATION } from 'src/features/instant-trades/dexes/ethereum/uni-swap-v3-ethereum/constants/provider-configuration';
import { UNI_SWAP_V3_ETHEREUM_ROUTER_CONFIGURATION } from 'src/features/instant-trades/dexes/ethereum/uni-swap-v3-ethereum/constants/router-configuration';
import { UniSwapV3EthereumProvider } from 'src/features/instant-trades/dexes/ethereum/uni-swap-v3-ethereum/uni-swap-v3-ethereum-provider';
import { BLOCKCHAIN_NAME } from '@core/blockchain/models/blockchain-name';

const TOKENS = ALL_TOKENS[BLOCKCHAIN_NAME.ETHEREUM];

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,11 @@ import { TOKENS as ALL_TOKENS } from '__tests__/utils/tokens';
import { Utils } from '__tests__/unit-tests/features/swap/utils/utils';
import { Injector } from '@core/sdk/injector';
import BigNumber from 'bignumber.js';
import { BLOCKCHAIN_NAME, Web3Public } from 'src/core';
import { Web3Public } from 'src/core';
import { PriceTokenAmount } from 'src/core/blockchain/tokens/price-token-amount';
import { PriceToken } from 'src/core/blockchain/tokens/price-token';
import { UniSwapV3EthereumProvider } from 'src/features/instant-trades/dexes/ethereum/uni-swap-v3-ethereum/uni-swap-v3-ethereum-provider';
import { BLOCKCHAIN_NAME } from '@core/blockchain/models/blockchain-name';
import fn = jest.fn;

const TOKENS = ALL_TOKENS[BLOCKCHAIN_NAME.ETHEREUM];
Expand Down
Loading

0 comments on commit b21196b

Please sign in to comment.