@dodoex/widgets 3.0.0-beta.33 → 3.0.0-beta.35

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.
Files changed (67) hide show
  1. package/dist/cjs/helper-BYlVZIoD.cjs +1 -0
  2. package/dist/cjs/helper-C5SrJQaK.cjs +1 -0
  3. package/dist/cjs/index-BeGs2DH_.cjs +78 -0
  4. package/dist/cjs/index-BfpsZhht.cjs +53 -0
  5. package/dist/cjs/index-D7H_RrAc.cjs +12 -0
  6. package/dist/cjs/index-DTCQ7g1k.cjs +12 -0
  7. package/dist/cjs/index-DoCc2JCv.cjs +53 -0
  8. package/dist/cjs/index-z-Q7UNom.cjs +78 -0
  9. package/dist/cjs/index.cjs +1 -1
  10. package/dist/cjs/lottie-BpUuS5q9.cjs +1 -0
  11. package/dist/cjs/lottie-DLvPIL-h.cjs +1 -0
  12. package/dist/cjs/src/components/Swap/components/ConnectWallet/ConnectWalletDialog.d.ts +2 -1
  13. package/dist/cjs/src/components/Swap/components/ConnectWallet/index.d.ts +2 -2
  14. package/dist/cjs/src/components/Swap/index.d.ts +2 -1
  15. package/dist/cjs/src/components/Widget/BridgeTonSummaryDialog/index.d.ts +11 -0
  16. package/dist/cjs/src/hooks/Bridge/useExecuteBridgeRoute.d.ts +3 -1
  17. package/dist/cjs/src/hooks/Bridge/useFetchRoutePriceBridge.d.ts +9 -1
  18. package/dist/cjs/src/hooks/ConnectWallet/TonConnect/contract.d.ts +8 -0
  19. package/dist/cjs/src/hooks/ConnectWallet/useWalletState.d.ts +5 -1
  20. package/dist/cjs/src/hooks/Submission/types.d.ts +14 -0
  21. package/dist/cjs/src/hooks/Submission/useExecution.d.ts +14 -0
  22. package/dist/cjs/src/hooks/Swap/useFetchFiatPrice.d.ts +1 -1
  23. package/dist/cjs/src/hooks/Swap/usePriceTimer.d.ts +1 -0
  24. package/dist/cjs/src/hooks/Token/useGetTokenStatus.d.ts +2 -1
  25. package/dist/cjs/src/hooks/contract/layerswap/constants.d.ts +6 -0
  26. package/dist/cjs/src/hooks/contract/layerswap/data.d.ts +43 -0
  27. package/dist/cjs/src/hooks/contract/layerswap/types.d.ts +170 -0
  28. package/dist/cjs/src/hooks/contract/layerswap/useLayerswapRouters.d.ts +20 -0
  29. package/dist/cjs/src/index.d.ts +2 -0
  30. package/dist/cjs/src/store/actions/wallet.d.ts +1 -0
  31. package/dist/cjs/src/store/reducers/wallet.d.ts +1 -0
  32. package/dist/cjs/src/store/selectors/wallet.d.ts +1 -0
  33. package/dist/cjs/src/utils/device.d.ts +3 -0
  34. package/dist/helper-BPAb-D4D.js +1 -0
  35. package/dist/helper-Dhy5gy1p.js +1 -0
  36. package/dist/index-BIQtzxL9.js +78 -0
  37. package/dist/index-Bbuw1I9-.js +12 -0
  38. package/dist/index-BlT57eKb.js +53 -0
  39. package/dist/index-C-2UnSDv.js +53 -0
  40. package/dist/index-D0SWY6AZ.js +12 -0
  41. package/dist/index-DxNt17fy.js +78 -0
  42. package/dist/index.js +1 -1
  43. package/dist/lottie-C9cpjlCR.js +1 -0
  44. package/dist/lottie-DLUL4WjE.js +1 -0
  45. package/dist/src/components/Swap/components/ConnectWallet/ConnectWalletDialog.d.ts +2 -1
  46. package/dist/src/components/Swap/components/ConnectWallet/index.d.ts +2 -2
  47. package/dist/src/components/Swap/index.d.ts +2 -1
  48. package/dist/src/components/Widget/BridgeTonSummaryDialog/index.d.ts +11 -0
  49. package/dist/src/hooks/Bridge/useExecuteBridgeRoute.d.ts +3 -1
  50. package/dist/src/hooks/Bridge/useFetchRoutePriceBridge.d.ts +9 -1
  51. package/dist/src/hooks/ConnectWallet/TonConnect/contract.d.ts +8 -0
  52. package/dist/src/hooks/ConnectWallet/useWalletState.d.ts +5 -1
  53. package/dist/src/hooks/Submission/types.d.ts +14 -0
  54. package/dist/src/hooks/Submission/useExecution.d.ts +14 -0
  55. package/dist/src/hooks/Swap/useFetchFiatPrice.d.ts +1 -1
  56. package/dist/src/hooks/Swap/usePriceTimer.d.ts +1 -0
  57. package/dist/src/hooks/Token/useGetTokenStatus.d.ts +2 -1
  58. package/dist/src/hooks/contract/layerswap/constants.d.ts +6 -0
  59. package/dist/src/hooks/contract/layerswap/data.d.ts +43 -0
  60. package/dist/src/hooks/contract/layerswap/types.d.ts +170 -0
  61. package/dist/src/hooks/contract/layerswap/useLayerswapRouters.d.ts +20 -0
  62. package/dist/src/index.d.ts +2 -0
  63. package/dist/src/store/actions/wallet.d.ts +1 -0
  64. package/dist/src/store/reducers/wallet.d.ts +1 -0
  65. package/dist/src/store/selectors/wallet.d.ts +1 -0
  66. package/dist/src/utils/device.d.ts +3 -0
  67. package/package.json +2 -2
@@ -1,5 +1,6 @@
1
1
  /// <reference types="react" />
2
- export default function ConnectWalletDialog({ open, onClose, }: {
2
+ export default function ConnectWalletDialog({ open, onClose, chainId: chainIdProps, }: {
3
3
  open: boolean;
4
4
  onClose: () => void;
5
+ chainId?: number;
5
6
  }): JSX.Element;
@@ -2,8 +2,8 @@
2
2
  import { ChainId } from '../../../../constants/chains';
3
3
  export interface ConnectWalletProps {
4
4
  needSwitchChain?: ChainId;
5
+ needEvmChainId?: ChainId;
5
6
  /** If true is returned, the default wallet connection logic will not be executed */
6
7
  onConnectWalletClick?: () => boolean | Promise<boolean>;
7
- needConnectTwoWallet?: boolean;
8
8
  }
9
- export default function ConnectWallet({ needSwitchChain, onConnectWalletClick, needConnectTwoWallet, }: ConnectWalletProps): JSX.Element;
9
+ export default function ConnectWallet({ needSwitchChain, needEvmChainId, onConnectWalletClick, }: ConnectWalletProps): JSX.Element;
@@ -5,5 +5,6 @@ export interface SwapProps {
5
5
  /** Higher priority setting slippage */
6
6
  getAutoSlippage?: GetAutoSlippage;
7
7
  onConnectWalletClick?: ConnectWalletProps['onConnectWalletClick'];
8
+ bridgeToTonUrl?: string;
8
9
  }
9
- export declare function Swap({ getAutoSlippage, onConnectWalletClick, }?: SwapProps): JSX.Element;
10
+ export declare function Swap({ getAutoSlippage, onConnectWalletClick, bridgeToTonUrl, }?: SwapProps): JSX.Element;
@@ -0,0 +1,11 @@
1
+ /// <reference types="react" />
2
+ export default function BridgeTonSummaryDialog({ tonAccount, fromTokenAddress, fromChainId, toTokenAddress, toChainId, fromAmt, slippage, redirectLink, }: {
3
+ tonAccount: string;
4
+ fromTokenAddress: string;
5
+ fromChainId: number;
6
+ toTokenAddress: string;
7
+ toChainId: number;
8
+ fromAmt: string;
9
+ slippage?: number;
10
+ redirectLink: string;
11
+ }): JSX.Element;
@@ -1,6 +1,8 @@
1
1
  import { BridgeTXRequest } from '../../components/Bridge/BridgeSummaryDialog';
2
2
  import { BridgeRouteI } from './useFetchRoutePriceBridge';
3
- export default function useExecuteBridgeRoute({ route, bridgeOrderTxRequest, }: {
3
+ import { ExecutionCtx } from '../Submission/types';
4
+ export default function useExecuteBridgeRoute({ route, bridgeOrderTxRequest, sendData, }: {
4
5
  route?: BridgeRouteI;
5
6
  bridgeOrderTxRequest?: BridgeTXRequest;
7
+ sendData?: Parameters<ExecutionCtx['executeCustom']>['0']['handler'];
6
8
  }): () => Promise<import("../Submission/types").ExecutionResult> | undefined;
@@ -1,5 +1,6 @@
1
1
  import { TokenInfo } from '../Token';
2
2
  import BigNumber from 'bignumber.js';
3
+ import { ExecutionCtx } from '../Submission/types';
3
4
  export interface BridgeRouteI {
4
5
  /** update */
5
6
  key: string;
@@ -37,6 +38,7 @@ export interface BridgeRouteI {
37
38
  chainId: number;
38
39
  encodeId?: string;
39
40
  };
41
+ sendData?: Parameters<ExecutionCtx['executeCustom']>['0']['handler'];
40
42
  productParams: any;
41
43
  sourceRoute?: {
42
44
  toAmount: string;
@@ -105,9 +107,15 @@ export interface FetchRoutePrice {
105
107
  toToken: TokenInfo | null;
106
108
  fromAmount: string;
107
109
  fromFiatPrice: string;
110
+ fromAddress?: string;
111
+ toAddress?: string;
108
112
  }
109
- export declare function useFetchRoutePriceBridge({ toToken, fromToken, fromAmount, fromFiatPrice, }: FetchRoutePrice): {
113
+ export declare function useFetchRoutePriceBridge({ toToken, fromToken, fromAmount, fromFiatPrice, fromAddress: fromAddressProps, toAddress: toAddressProps, }: FetchRoutePrice): {
110
114
  status: RoutePriceStatus;
111
115
  refetch: () => Promise<void>;
112
116
  bridgeRouteList: BridgeRouteI[];
117
+ limit: {
118
+ minAmt?: number | undefined;
119
+ maxAmt?: number | undefined;
120
+ } | null;
113
121
  };
@@ -0,0 +1,8 @@
1
+ import { TonClient, Transaction } from 'ton';
2
+ export declare function getHashByBoc(boc: string): string;
3
+ export declare const waitForTransaction: (options: {
4
+ boc: string;
5
+ refetchInterval?: number;
6
+ refetchLimit?: number;
7
+ address: string;
8
+ }, client: TonClient) => Promise<Transaction | null>;
@@ -5,6 +5,8 @@ export declare function useWalletState({ isTon, }?: {
5
5
  isTon: boolean;
6
6
  chainId: number | undefined;
7
7
  account: string | undefined;
8
+ tonAccount: string | undefined;
9
+ evmAccount: string | undefined;
8
10
  isMetamask: boolean;
9
11
  autoConnect: (chainId?: number) => Promise<void>;
10
12
  connect: () => Promise<void>;
@@ -15,10 +17,12 @@ export declare function useWalletState({ isTon, }?: {
15
17
  isTon: boolean;
16
18
  chainId: number | undefined;
17
19
  account: string | undefined;
20
+ tonAccount: string | undefined;
21
+ evmAccount: string | undefined;
18
22
  isMetamask: boolean | undefined;
19
23
  autoConnect: (chainId?: number) => Promise<void>;
20
24
  connect: () => void | Promise<void>;
21
25
  provider: import("@ethersproject/providers").Web3Provider | undefined;
22
- getLastBlockNumber: (() => Promise<number>) | undefined;
26
+ getLastBlockNumber: () => Promise<number | undefined>;
23
27
  getBalance: ((account: string) => Promise<BigNumber | undefined>) | undefined;
24
28
  };
@@ -37,6 +37,20 @@ export declare type ExecutionCtx = {
37
37
  * @param submittedConfirmBack: dismiss callback
38
38
  */
39
39
  execute: (brief: string, spec: StepSpec, subtitle?: string | React.ReactNode | null, early?: boolean, submittedBack?: () => void, mixpanelProps?: Record<string, any>, submittedConfirmBack?: () => void, successBack?: (tx: string, callback?: ExecutionProps['onTxSuccess']) => void) => Promise<ExecutionResult>;
40
+ executeCustom: ({ brief, subtitle, early, mixpanelProps, submittedBack, submittedConfirmBack, successBack, handler, }: {
41
+ brief: string;
42
+ subtitle?: string | React.ReactNode | null;
43
+ early?: boolean | undefined;
44
+ mixpanelProps?: Record<string, any> | undefined;
45
+ submittedBack?: (() => void) | undefined;
46
+ submittedConfirmBack?: (() => void) | undefined;
47
+ successBack?: ((tx: string, callback?: ExecutionProps['onTxSuccess']) => void) | undefined;
48
+ handler: (params: {
49
+ onSubmit?: (tx: string, reportInfo?: Record<string, any>) => void;
50
+ onSuccess?: (tx: string, reportInfo?: Record<string, any>) => Promise<void>;
51
+ onError?: (e: any) => void;
52
+ }) => Promise<any>;
53
+ }) => Promise<ExecutionResult>;
40
54
  /**
41
55
  * order
42
56
  */
@@ -23,6 +23,20 @@ export default function useExecution({ onTxFail, onTxSubmit, onTxSuccess, }?: Ex
23
23
  closeShowing: () => void;
24
24
  ctxVal: {
25
25
  execute: (brief: string, spec: StepSpec, subtitle?: string | React.ReactNode | null, early?: boolean, submittedBack?: () => void, mixpanelProps?: Record<string, any>, submittedConfirmBack?: () => void, successBack?: ((tx: string, callback?: ExecutionProps['onTxSuccess']) => void) | undefined) => Promise<ExecutionResult.Failed | ExecutionResult.Success | ExecutionResult.Submitted>;
26
+ executeCustom: ({ brief, subtitle, early, mixpanelProps, submittedBack, submittedConfirmBack, successBack, handler, }: {
27
+ brief: string;
28
+ subtitle?: string | React.ReactNode | null;
29
+ early?: boolean | undefined;
30
+ mixpanelProps?: Record<string, any> | undefined;
31
+ submittedBack?: (() => void) | undefined;
32
+ submittedConfirmBack?: (() => void) | undefined;
33
+ successBack?: ((tx: string, callback?: ExecutionProps['onTxSuccess']) => void) | undefined;
34
+ handler: (params: {
35
+ onSubmit?: ((tx: string, reportInfo?: Record<string, any>) => void) | undefined;
36
+ onSuccess?: ((tx: string, reportInfo?: Record<string, any>) => Promise<void>) | undefined;
37
+ onError?: ((e: any) => void) | undefined;
38
+ }) => Promise<any>;
39
+ }) => Promise<ExecutionResult>;
26
40
  requests: Map<string, [Request, State]>;
27
41
  setShowing: import("react").Dispatch<import("react").SetStateAction<Showing | null>>;
28
42
  waitingSubmit: boolean;
@@ -1,7 +1,7 @@
1
1
  import { ChainId } from '../../constants/chains';
2
2
  import { TokenInfo } from '../Token';
3
3
  export interface FetchFiatPriceProps {
4
- chainId: ChainId | undefined;
4
+ chainId?: ChainId;
5
5
  fromToken: TokenInfo | null;
6
6
  toToken: TokenInfo | null;
7
7
  }
@@ -1,3 +1,4 @@
1
+ export declare const refreshTime: number;
1
2
  export interface PriceTimerProps {
2
3
  refetch: () => void;
3
4
  interval?: number;
@@ -1,10 +1,11 @@
1
1
  import BigNumber from 'bignumber.js';
2
2
  import { TokenInfo, ApprovalState } from './type';
3
- export declare const useGetTokenStatus: ({ account, chainId, offset, contractAddress, }: {
3
+ export declare const useGetTokenStatus: ({ account, chainId, offset, contractAddress, skip, }: {
4
4
  account?: string | undefined;
5
5
  chainId: number | undefined;
6
6
  offset?: BigNumber | undefined;
7
7
  contractAddress?: string | undefined;
8
+ skip?: boolean | undefined;
8
9
  }) => {
9
10
  getApprovalState: (token: TokenInfo | null, value: string | number | BigNumber, overrideBalance?: BigNumber) => ApprovalState;
10
11
  getPendingRest: (token?: TokenInfo | null) => boolean;
@@ -0,0 +1,6 @@
1
+ export declare const LAYERSWAP_URL = "https://api.layerswap.io/api/v2";
2
+ export declare const LAYERSWAP_API_KEY = "gNiGVhOddxMmWk4LFCR/5tDsdTECWCRlQBcW6yV8l+paqSVJBUth0wDXqA0jC16cv+Pz54+YeeKo54ioiR4n9Q";
3
+ export declare const LAYERSWAP_NETWORKS_URL: string;
4
+ export declare const LAYERSWAP_LIMITS_URL: string;
5
+ export declare const LAYERSWAP_QUOTE_URL: string;
6
+ export declare const LAYERSWAP_SWAPS_URL: string;
@@ -0,0 +1,43 @@
1
+ import { Web3Provider } from '@ethersproject/providers';
2
+ import { TokenInfo } from '../../Token';
3
+ import { Network, Quote } from './types';
4
+ export declare function getLayerSwapData<T>(url: string): Promise<T>;
5
+ export declare function getNetworks(): Promise<Network[]>;
6
+ export declare function getLimits({ fromToken, toToken, fromNetworkName, toNetworkName, }: {
7
+ fromToken: TokenInfo | null;
8
+ toToken: TokenInfo | null;
9
+ fromNetworkName: string | undefined | null;
10
+ toNetworkName: string | undefined | null;
11
+ }): Promise<{
12
+ min_amount_in_usd: number;
13
+ min_amount: number;
14
+ max_amount_in_usd: number;
15
+ max_amount: number;
16
+ } | undefined>;
17
+ export declare function getQuote({ fromToken, toToken, fromNetworkName, toNetworkName, slippage, fromAmount, }: {
18
+ fromToken: TokenInfo | null;
19
+ toToken: TokenInfo | null;
20
+ fromNetworkName: string | undefined | null;
21
+ toNetworkName: string | undefined | null;
22
+ slippage?: number;
23
+ fromAmount: string;
24
+ }): Promise<Quote | undefined>;
25
+ /**
26
+ * @see https://github.com/layerswap/layerswapapp/blob/dev/components/Swap/Withdraw/Wallet/TonWalletWithdraw.tsx
27
+ */
28
+ export declare function submitTonWalletWithdraw({ fromAddress, toAddress, fromToken, toToken, fromNetworkName, toNetworkName, fromAmount, slippage, provider, params, }: {
29
+ fromAddress: string | undefined;
30
+ toAddress: string | undefined;
31
+ fromToken: TokenInfo | null;
32
+ toToken: TokenInfo | null;
33
+ fromNetworkName: string | undefined | null;
34
+ toNetworkName: string | undefined | null;
35
+ fromAmount: string;
36
+ slippage?: number;
37
+ provider?: Web3Provider;
38
+ params: {
39
+ onSubmit?: (tx: string, reportInfo?: Record<string, any>) => void;
40
+ onSuccess?: (tx: string, reportInfo?: Record<string, any>) => Promise<void>;
41
+ onError?: (e: any) => void;
42
+ };
43
+ }): Promise<import("ton").Transaction | import("@ethersproject/abstract-provider").TransactionReceipt | null | undefined>;
@@ -0,0 +1,170 @@
1
+ export declare enum NetworkType {
2
+ EVM = "evm",
3
+ Starknet = "starknet",
4
+ Solana = "solana",
5
+ Cosmos = "cosmos",
6
+ StarkEx = "starkex",
7
+ ZkSyncLite = "zksynclite",
8
+ TON = "ton"
9
+ }
10
+ export interface Token {
11
+ symbol: string;
12
+ logo: string;
13
+ contract: string | null | undefined;
14
+ decimals: number;
15
+ price_in_usd: number;
16
+ precision: number;
17
+ listing_date: string;
18
+ status?: 'active' | 'inactive' | 'not_found';
19
+ }
20
+ export interface Metadata {
21
+ evm_oracle_contract?: `0x${string}` | null;
22
+ evm_multicall_contract?: string | null;
23
+ listing_date: string;
24
+ }
25
+ export interface Network {
26
+ name: string;
27
+ display_name: string;
28
+ logo: string;
29
+ chain_id: string | null;
30
+ node_url: string;
31
+ type: NetworkType;
32
+ transaction_explorer_template: string;
33
+ account_explorer_template: string;
34
+ metadata: Metadata;
35
+ deposit_methods: string[];
36
+ token?: Token;
37
+ }
38
+ export interface Exchange {
39
+ display_name: string;
40
+ name: string;
41
+ logo: string;
42
+ token_groups: ExchangeToken[];
43
+ metadata: {
44
+ o_auth: {
45
+ connect_url: string;
46
+ authorize_url: string;
47
+ } | null;
48
+ };
49
+ }
50
+ export interface ExchangeNetwork {
51
+ token: Token;
52
+ network: Network;
53
+ fee: {
54
+ total_fee: number;
55
+ total_fee_in_usd: number;
56
+ };
57
+ }
58
+ export interface ExchangeToken {
59
+ symbol: string;
60
+ logo: string;
61
+ status: 'active' | 'inactive' | 'not_found';
62
+ }
63
+ export declare enum SwapStatus {
64
+ Created = "created",
65
+ UserTransferPending = "user_transfer_pending",
66
+ UserTransferDelayed = "user_transfer_delayed",
67
+ LsTransferPending = "ls_transfer_pending",
68
+ Completed = "completed",
69
+ Failed = "failed",
70
+ Expired = "expired",
71
+ Cancelled = "cancelled"
72
+ }
73
+ export declare enum TransactionType {
74
+ Input = "input",
75
+ Output = "output",
76
+ Refuel = "refuel"
77
+ }
78
+ export declare enum BackendTransactionStatus {
79
+ Completed = "completed",
80
+ Failed = "failed",
81
+ Initiated = "initiated",
82
+ Pending = "pending"
83
+ }
84
+ export declare type Transaction = {
85
+ type: TransactionType;
86
+ from: string;
87
+ to: string;
88
+ created_date: string;
89
+ amount: number;
90
+ transaction_hash: string;
91
+ confirmations: number;
92
+ max_confirmations: number;
93
+ usd_value: number;
94
+ usd_price: number;
95
+ status: BackendTransactionStatus;
96
+ timestamp?: string;
97
+ };
98
+ export declare type SwapItem = {
99
+ id: string;
100
+ created_date: string;
101
+ source_network: Network;
102
+ source_token: Token;
103
+ source_exchange?: Exchange;
104
+ destination_network: Network;
105
+ destination_token: Token;
106
+ destination_exchange?: Exchange;
107
+ status: SwapStatus;
108
+ source_address: `0x${string}`;
109
+ destination_address: `0x${string}`;
110
+ requested_amount: number;
111
+ use_deposit_address: boolean;
112
+ transactions: Transaction[];
113
+ exchange_account_connected: boolean;
114
+ exchange_account_name?: string;
115
+ fail_reason?: string;
116
+ metadata: {
117
+ reference_id: string | null;
118
+ app: string | null;
119
+ sequence_number: number;
120
+ };
121
+ };
122
+ export declare type SwapQuote = {
123
+ source_network?: Network;
124
+ source_token?: Token;
125
+ destination_network?: Network;
126
+ destination_token?: Token;
127
+ receive_amount: number;
128
+ min_receive_amount: number;
129
+ total_fee: number;
130
+ total_fee_in_usd: number;
131
+ blockchain_fee: number;
132
+ service_fee: number;
133
+ avg_completion_time: string;
134
+ refuel_in_source?: number;
135
+ slippage?: number;
136
+ };
137
+ export declare type Refuel = {
138
+ network: Network;
139
+ token: Token;
140
+ amount: number;
141
+ amount_in_usd: number;
142
+ };
143
+ export declare type SwapResponse = {
144
+ swap: SwapItem;
145
+ quote: SwapQuote;
146
+ refuel?: Refuel;
147
+ };
148
+ export declare type DepositAction = {
149
+ amount: number;
150
+ amount_in_base_units: string;
151
+ call_data: `0x${string}` | string;
152
+ fee: any | null;
153
+ network: Network;
154
+ order: number;
155
+ to_address?: `0x${string}`;
156
+ token: Token;
157
+ fee_token: Token;
158
+ type: 'transfer' | 'manual_transfer';
159
+ };
160
+ export declare type QuoteReward = {
161
+ amount: number;
162
+ amount_in_usd: number;
163
+ token: Token;
164
+ network: Network;
165
+ };
166
+ export declare type Quote = {
167
+ quote: SwapQuote;
168
+ refuel: Refuel;
169
+ reward: QuoteReward;
170
+ };
@@ -0,0 +1,20 @@
1
+ import { BridgeRouteI, RoutePriceStatus } from '../../Bridge/useFetchRoutePriceBridge';
2
+ import { TokenInfo } from '../../Token';
3
+ export declare function useLayerswapRouters({ skip, data: { fromToken, toToken, fromAmount, fromAddress, toAddress, slippage }, }: {
4
+ skip?: boolean;
5
+ data: {
6
+ fromToken: TokenInfo | null;
7
+ toToken: TokenInfo | null;
8
+ fromAmount: string;
9
+ fromAddress: string | undefined;
10
+ toAddress: string | undefined;
11
+ slippage?: number;
12
+ };
13
+ }): {
14
+ status: RoutePriceStatus;
15
+ router: BridgeRouteI | null;
16
+ limit: {
17
+ minAmt: number;
18
+ maxAmt: number;
19
+ } | null;
20
+ };
@@ -2,5 +2,7 @@
2
2
  import { WidgetProps } from './components/Widget';
3
3
  export declare type SwapWidgetProps = WidgetProps;
4
4
  export type { TokenInfo } from './hooks/Token/type';
5
+ export { default as BridgeTonSummaryDialog } from './components/Widget/BridgeTonSummaryDialog';
6
+ export { Widget } from './components/Widget';
5
7
  export declare function SwapWidget(props: SwapWidgetProps): JSX.Element;
6
8
  export declare function InitSwapWidget(props: SwapWidgetProps): void;
@@ -2,4 +2,5 @@ import { AppThunkAction } from '.';
2
2
  import { ChainId } from '../../constants/chains';
3
3
  export declare const setDefaultChainId: (chainId: ChainId) => AppThunkAction;
4
4
  export declare const setFromTokenChainId: (chainId: ChainId | undefined) => AppThunkAction;
5
+ export declare const setToTokenChainId: (chainId: ChainId | undefined) => AppThunkAction;
5
6
  export declare const setBlockNumber: (blockNumber: number) => AppThunkAction;
@@ -3,6 +3,7 @@ import { ChainId } from '../../constants/chains';
3
3
  export declare type State = {
4
4
  chainId: ChainId;
5
5
  fromTokenChainId?: ChainId;
6
+ toTokenChainId?: ChainId;
6
7
  latestBlockNumber: number;
7
8
  };
8
9
  export declare const initialState: State;
@@ -1,4 +1,5 @@
1
1
  import { RootState } from '../reducers';
2
2
  export declare const getDefaultChainId: (state?: RootState) => import("../../constants/chains").ChainId;
3
3
  export declare const getFromTokenChainId: (state?: RootState) => import("../../constants/chains").ChainId | undefined;
4
+ export declare const getToTokenChainId: (state?: RootState) => import("../../constants/chains").ChainId | undefined;
4
5
  export declare const getLatestBlockNumber: (state?: RootState) => number;
@@ -0,0 +1,3 @@
1
+ export declare const isBrowser: boolean;
2
+ export declare const isAndroid: boolean | "";
3
+ export declare const isIOS: boolean;
@@ -0,0 +1 @@
1
+ import{i18n as e}from"@lingui/core";import t from"bignumber.js";import{f as i}from"./index-C-2UnSDv.js";function o(t,i){switch(t){case"depth-chart.tips.buy":return e._({id:"q+Q952",message:"Users pay {0} {1} and receive {2} {3}\\nPrice {4} ({5}%)",values:{0:i.amountText,1:i.baseTokenSymbol,2:i.oppositeAmountText,3:i.quoteTokenSymbol,4:i.priceText,5:i.slippageText}});case"depth-chart.tips.mid-price":return e._({id:"cnbRVW",message:"Initial Price {0} {1} = {2} {3}",values:{0:i.amountText,1:i.baseTokenSymbol,2:i.oppositeAmountText,3:i.quoteTokenSymbol}});case"depth-chart.tips.sell":return e._({id:"q+Q952",message:"Users pay {0} {1} and receive {2} {3}\\nPrice {4} ({5}%)",values:{0:i.oppositeAmountText,1:i.quoteTokenSymbol,2:i.amountText,3:i.baseTokenSymbol,4:i.priceText,5:i.slippageText}});case"pool.chart.buy-amount":return e._({id:"TaScUS",message:"Users sell {0} amount:",values:{0:i.symbol}});case"pool.chart.price-impact":return e._({id:"I0LXan",message:"Price Impact: {0}",values:{0:i.amount}});case"pool.chart.sell-amount":return e._({id:"F2vX4t",message:"Users buy {0} amount:",values:{0:i.symbol}});case"pool.create.disabled-token-amount":return e._({id:"5QDjef",message:"The token amount is calculated by initial price."});case"pool.create.set-pool.emulator.title":return e._({id:"FQfStS",message:"Emulator"});case"pool.create.set-pool.emulator.title.question":return e._({id:"9D2g7k",message:"The liquidity of DODO is continuous, which is different from the discrete liquidity of UniV3. The ticks shown in the illustration are for demonstration purposes only."});case"pool.chart.liquidity-chart-tip":return e._({id:"YvXHDU",message:"The area of the chart indicates the buy/sell volume of {0} that can be carried by the market when the current price changes to the hover price.",values:{0:i.baseTokenSymbol}});case"pool.chart.liquidity-chart-buy":return e._({id:"TvH4Ym",message:"Bought {0} {1}, price in the pool decreased to {2}",values:{0:i.amount,1:i.symbol,2:i.price}});case"pool.chart.liquidity-chart-sell":return e._({id:"0O1wzf",message:"Traders sold ‪{0}‬ {1}, price in the pool increased to {2}",values:{0:i.amount,1:i.symbol,2:i.price}});default:throw new Error(`Unknown key ${t}`)}}const l=12,n=18;function s(e){let t=e.toLowerCase();if(t&&/^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/.test(t)){if(4===t.length){let e="#";for(let i=1;i<4;i+=1)e+=t.slice(i,i+1).concat(t.slice(i,i+1));t=e}const e=[];for(let i=1;i<7;i+=2)e.push(parseInt(`0x${t.slice(i,i+2)}`));return e.join(",")}return t}function r({val:e,model:i}){let o=e;if(e.isNaN())return{side:"no-one",vert:new t(0),base:new t(0),quote:new t(0)};i.Q0.eq(0)&&e.lt(i.i)&&(o=i.i),i.B0.eq(0)&&e.gt(i.i)&&(o=i.i);const l=i.getPriceDepth(o),n=l.baseAmount,s=l.quoteAmount,{isBuy:r}=l;return{side:r?"ask":"bid",vert:r?n:s,base:n,quote:s}}function a({midPrice:e,q:i,q0:o,pmmModel:l}){let n=t.maximum(i,o,l.B.multipliedBy(e));return n.isNaN()&&(n=new t(10)),n.eq(0)&&(n=new t(1)),{buyBaseVert:n.multipliedBy(1.2),sellBaseVert:n.div(e).multipliedBy(1.2)}}function u(e,i=1){return new t(i).div(e/2)}function m({tooltip:e,x:o,chartWidth:l,chartHeight:n,buyBaseVert:a,sellBaseVert:m,pmmModel:p,midPrice:d,baseTokenSymbol:c,quoteTokenSymbol:h,t:b,baseMinAndZoomMultiples:f,isHover:y,color:g,leftColor:T,rightColor:x}){const{zoomMultiples:v,baseMin:w}=f,k=u(l,v),M=a.div(n),B=m.div(n),q=2*v,S=w.multipliedBy(10**k.multipliedBy(o).toNumber());let N=new t(Math.log(d.div(w).toNumber())/Math.log(10));N=t.minimum(q,N),N=t.maximum(0,N);const P=N.div(k),X=r({val:S,model:p,midPrice:d});if(X.vert.isNaN())return;const A=S.lt(d);let _=n-X.vert.div(M).toNumber();A||(_=n-X.vert.div(B).toNumber());const z=i(S),O=i(X.vert),$=S.minus(d).abs().div(d).multipliedBy(100).toFixed(2),D=P.toNumber(),H=e.findOne("#toolTipVertLine"),L=e.findOne("#toolTipHoriLine"),U=e.findOne("#joinCircle"),V=e.findOne("#toolTip"),j=e.findOne("#priceTextLabel"),W=e.findOne("#slippageTextLabel");if(!V)return;V.x(o),V.y(_-5-6);const Y=V.getText(),F=V.getTag();let I="ask"===X.side?i(X.quote):i(X.base);const Q=p.k.lte(0);Q&&(I=O);const C=i(d),Z={amountText:O,baseTokenSymbol:c,oppositeAmountText:I,quoteTokenSymbol:h,priceText:Q?C:z,slippageText:`${A?"-":"+"}${$}`};if(P.minus(4).lte(o)&&P.plus(2).gte(o)&&y)Y.text(b("depth-chart.tips.mid-price",{amountText:1,baseTokenSymbol:c,oppositeAmountText:C,quoteTokenSymbol:h})),V.x(D),V.y(n/2),null==H||H.hide(),null==L||L.hide(),null==U||U.hide(),null==j||j.hide(),null==W||W.hide();else{Y.text(A?b("depth-chart.tips.buy",{amountText:I,baseTokenSymbol:c,oppositeAmountText:O,quoteTokenSymbol:h,priceText:Q?C:z,slippageText:`${A?"-":"+"}${$}`}):b("depth-chart.tips.sell",Z));const e=g||(A?"#55f6db":"#ff4f73"),t=A?T||"#55f6db":x||"#ff4f73";Y.fill(e),V.width()/2>o?(F.pointerDirection("left"),F.pointerHeight(15),F.pointerWidth(8),V.offsetX(-11),V.offsetY(-11)):V.width()/2+o>l?(F.pointerDirection("right"),F.pointerHeight(15),F.pointerWidth(8),V.offsetX(11),V.offsetY(-11)):(F.pointerDirection("down"),F.pointerHeight(8),F.pointerWidth(15),V.offsetX(0),V.offsetY(0)),null==H||H.points([o,n,o,_]),null==H||H.stroke(t),null==L||L.points(A?[o,_,D,_]:[D,_,o,_]),null==L||L.stroke(t),null==U||U.x(o),null==U||U.y(_),null==U||U.fill(A?T||"rgb(86, 246, 218)":x||"#FF5072"),null==U||U.stroke(A?T?`rgba(${s(T)}, 0.4)`:"rgba(86, 246, 218, 0.3)":x?`rgba(${s(x)}, 0.4)`:"rgba(255, 80, 114, 0.3)"),j&&(j.x(o),j.y(n),j.offsetX(j.width()/2),j.x()-j.width()/2<0?j.x(j.width()/2):j.x()+j.width()/2>l?j.x(l-j.width()/2):j.x(o));const i=null==j?void 0:j.findOne("#priceTextLabel-text");i&&(i.fill(e),i.text(z)),W&&(W.x(A?o+(D-o)/2:o-(o-D)/2),W.y(_),W.offsetY(W.height()/2),W.offsetX(W.width()/2));const r=null==W?void 0:W.findOne("#slippageTextLabel-text");r&&(r.fill(e),r.text(`${A?"-":"+"}${$}%`)),null==H||H.show(),null==L||L.show(),null==U||U.show(),null==j||j.show(),null==W||W.show()}e.show()}function p({dragDistance:e,prevBaseMin:i,chartWidth:o,zoomMultiples:l}){const n=u(o,l);return e>0?i.multipliedBy(1-n.multipliedBy(e).toNumber()):i.multipliedBy(10**n.multipliedBy(new t(e).abs()).plus(0).toNumber())}const d=1;function c({prevZoomMultiples:e,zoomIn:t}){return!t&&e<=.1?e:t?e+.1:e-.1}function h({type:e,targetPrice:i,midPrice:o,width:l}){if("sell"===e){return{zoomMultiples:new t(Math.log10(i.div(o).toNumber())).minus(0).div(3/4).abs(),targetX:l/2*(3/4)+l/2}}const n=new t(Math.log10(i.div(o).toNumber()));return{zoomMultiples:new t(0).minus(n).div(3/4).abs(),targetX:l/2*(1/4)}}function b({currentBaseMinAndZoomMultiples:e,targetPrice:i,midPrice:o,width:l}){const{baseMin:n,zoomMultiples:s}=e,r=new t(Math.log10(n.div(o).toNumber())),a=r.plus(2*s),u=new t(o.multipliedBy(10**a.toNumber()));if(i.gte(n)&&i.lte(u)){return{isSkip:!0,targetX:new t(Math.log10(i.div(o).toNumber())).minus(r).div(2*s).multipliedBy(l).toNumber(),baseMin:new t(0),zoomMultiples:1}}const m=new t(o.multipliedBy(.1)),p=new t(o.multipliedBy(10));if(i.gte(m)&&i.lte(p)){return{isSkip:!1,targetX:new t(Math.log10(i.div(o).toNumber())).minus(-1).div(2).multipliedBy(l).toNumber(),baseMin:m,zoomMultiples:1}}return{isSkip:!1,targetX:-1,baseMin:new t(0),zoomMultiples:1}}function f({midPrice:e,zoomMultiples:t}){return e.multipliedBy(10**-t)}export{a,p as b,u as c,c as d,r as e,f,o as g,n as h,d as i,b as j,h as k,l,s as m,m as u};
@@ -0,0 +1 @@
1
+ import{i18n as e}from"@lingui/core";import t from"bignumber.js";import{f as i}from"./index-BlT57eKb.js";function o(t,i){switch(t){case"depth-chart.tips.buy":return e._({id:"q+Q952",message:"Users pay {0} {1} and receive {2} {3}\\nPrice {4} ({5}%)",values:{0:i.amountText,1:i.baseTokenSymbol,2:i.oppositeAmountText,3:i.quoteTokenSymbol,4:i.priceText,5:i.slippageText}});case"depth-chart.tips.mid-price":return e._({id:"cnbRVW",message:"Initial Price {0} {1} = {2} {3}",values:{0:i.amountText,1:i.baseTokenSymbol,2:i.oppositeAmountText,3:i.quoteTokenSymbol}});case"depth-chart.tips.sell":return e._({id:"q+Q952",message:"Users pay {0} {1} and receive {2} {3}\\nPrice {4} ({5}%)",values:{0:i.oppositeAmountText,1:i.quoteTokenSymbol,2:i.amountText,3:i.baseTokenSymbol,4:i.priceText,5:i.slippageText}});case"pool.chart.buy-amount":return e._({id:"TaScUS",message:"Users sell {0} amount:",values:{0:i.symbol}});case"pool.chart.price-impact":return e._({id:"I0LXan",message:"Price Impact: {0}",values:{0:i.amount}});case"pool.chart.sell-amount":return e._({id:"F2vX4t",message:"Users buy {0} amount:",values:{0:i.symbol}});case"pool.create.disabled-token-amount":return e._({id:"5QDjef",message:"The token amount is calculated by initial price."});case"pool.create.set-pool.emulator.title":return e._({id:"FQfStS",message:"Emulator"});case"pool.create.set-pool.emulator.title.question":return e._({id:"9D2g7k",message:"The liquidity of DODO is continuous, which is different from the discrete liquidity of UniV3. The ticks shown in the illustration are for demonstration purposes only."});case"pool.chart.liquidity-chart-tip":return e._({id:"YvXHDU",message:"The area of the chart indicates the buy/sell volume of {0} that can be carried by the market when the current price changes to the hover price.",values:{0:i.baseTokenSymbol}});case"pool.chart.liquidity-chart-buy":return e._({id:"TvH4Ym",message:"Bought {0} {1}, price in the pool decreased to {2}",values:{0:i.amount,1:i.symbol,2:i.price}});case"pool.chart.liquidity-chart-sell":return e._({id:"0O1wzf",message:"Traders sold ‪{0}‬ {1}, price in the pool increased to {2}",values:{0:i.amount,1:i.symbol,2:i.price}});default:throw new Error(`Unknown key ${t}`)}}const l=12,n=18;function s(e){let t=e.toLowerCase();if(t&&/^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/.test(t)){if(4===t.length){let e="#";for(let i=1;i<4;i+=1)e+=t.slice(i,i+1).concat(t.slice(i,i+1));t=e}const e=[];for(let i=1;i<7;i+=2)e.push(parseInt(`0x${t.slice(i,i+2)}`));return e.join(",")}return t}function r({val:e,model:i}){let o=e;if(e.isNaN())return{side:"no-one",vert:new t(0),base:new t(0),quote:new t(0)};i.Q0.eq(0)&&e.lt(i.i)&&(o=i.i),i.B0.eq(0)&&e.gt(i.i)&&(o=i.i);const l=i.getPriceDepth(o),n=l.baseAmount,s=l.quoteAmount,{isBuy:r}=l;return{side:r?"ask":"bid",vert:r?n:s,base:n,quote:s}}function a({midPrice:e,q:i,q0:o,pmmModel:l}){let n=t.maximum(i,o,l.B.multipliedBy(e));return n.isNaN()&&(n=new t(10)),n.eq(0)&&(n=new t(1)),{buyBaseVert:n.multipliedBy(1.2),sellBaseVert:n.div(e).multipliedBy(1.2)}}function u(e,i=1){return new t(i).div(e/2)}function m({tooltip:e,x:o,chartWidth:l,chartHeight:n,buyBaseVert:a,sellBaseVert:m,pmmModel:p,midPrice:d,baseTokenSymbol:c,quoteTokenSymbol:h,t:b,baseMinAndZoomMultiples:f,isHover:y,color:g,leftColor:T,rightColor:x}){const{zoomMultiples:v,baseMin:w}=f,k=u(l,v),M=a.div(n),B=m.div(n),q=2*v,S=w.multipliedBy(10**k.multipliedBy(o).toNumber());let N=new t(Math.log(d.div(w).toNumber())/Math.log(10));N=t.minimum(q,N),N=t.maximum(0,N);const P=N.div(k),X=r({val:S,model:p,midPrice:d});if(X.vert.isNaN())return;const A=S.lt(d);let _=n-X.vert.div(M).toNumber();A||(_=n-X.vert.div(B).toNumber());const z=i(S),O=i(X.vert),$=S.minus(d).abs().div(d).multipliedBy(100).toFixed(2),D=P.toNumber(),H=e.findOne("#toolTipVertLine"),L=e.findOne("#toolTipHoriLine"),U=e.findOne("#joinCircle"),V=e.findOne("#toolTip"),j=e.findOne("#priceTextLabel"),W=e.findOne("#slippageTextLabel");if(!V)return;V.x(o),V.y(_-5-6);const Y=V.getText(),F=V.getTag();let I="ask"===X.side?i(X.quote):i(X.base);const Q=p.k.lte(0);Q&&(I=O);const C=i(d),Z={amountText:O,baseTokenSymbol:c,oppositeAmountText:I,quoteTokenSymbol:h,priceText:Q?C:z,slippageText:`${A?"-":"+"}${$}`};if(P.minus(4).lte(o)&&P.plus(2).gte(o)&&y)Y.text(b("depth-chart.tips.mid-price",{amountText:1,baseTokenSymbol:c,oppositeAmountText:C,quoteTokenSymbol:h})),V.x(D),V.y(n/2),null==H||H.hide(),null==L||L.hide(),null==U||U.hide(),null==j||j.hide(),null==W||W.hide();else{Y.text(A?b("depth-chart.tips.buy",{amountText:I,baseTokenSymbol:c,oppositeAmountText:O,quoteTokenSymbol:h,priceText:Q?C:z,slippageText:`${A?"-":"+"}${$}`}):b("depth-chart.tips.sell",Z));const e=g||(A?"#55f6db":"#ff4f73"),t=A?T||"#55f6db":x||"#ff4f73";Y.fill(e),V.width()/2>o?(F.pointerDirection("left"),F.pointerHeight(15),F.pointerWidth(8),V.offsetX(-11),V.offsetY(-11)):V.width()/2+o>l?(F.pointerDirection("right"),F.pointerHeight(15),F.pointerWidth(8),V.offsetX(11),V.offsetY(-11)):(F.pointerDirection("down"),F.pointerHeight(8),F.pointerWidth(15),V.offsetX(0),V.offsetY(0)),null==H||H.points([o,n,o,_]),null==H||H.stroke(t),null==L||L.points(A?[o,_,D,_]:[D,_,o,_]),null==L||L.stroke(t),null==U||U.x(o),null==U||U.y(_),null==U||U.fill(A?T||"rgb(86, 246, 218)":x||"#FF5072"),null==U||U.stroke(A?T?`rgba(${s(T)}, 0.4)`:"rgba(86, 246, 218, 0.3)":x?`rgba(${s(x)}, 0.4)`:"rgba(255, 80, 114, 0.3)"),j&&(j.x(o),j.y(n),j.offsetX(j.width()/2),j.x()-j.width()/2<0?j.x(j.width()/2):j.x()+j.width()/2>l?j.x(l-j.width()/2):j.x(o));const i=null==j?void 0:j.findOne("#priceTextLabel-text");i&&(i.fill(e),i.text(z)),W&&(W.x(A?o+(D-o)/2:o-(o-D)/2),W.y(_),W.offsetY(W.height()/2),W.offsetX(W.width()/2));const r=null==W?void 0:W.findOne("#slippageTextLabel-text");r&&(r.fill(e),r.text(`${A?"-":"+"}${$}%`)),null==H||H.show(),null==L||L.show(),null==U||U.show(),null==j||j.show(),null==W||W.show()}e.show()}function p({dragDistance:e,prevBaseMin:i,chartWidth:o,zoomMultiples:l}){const n=u(o,l);return e>0?i.multipliedBy(1-n.multipliedBy(e).toNumber()):i.multipliedBy(10**n.multipliedBy(new t(e).abs()).plus(0).toNumber())}const d=1;function c({prevZoomMultiples:e,zoomIn:t}){return!t&&e<=.1?e:t?e+.1:e-.1}function h({type:e,targetPrice:i,midPrice:o,width:l}){if("sell"===e){return{zoomMultiples:new t(Math.log10(i.div(o).toNumber())).minus(0).div(3/4).abs(),targetX:l/2*(3/4)+l/2}}const n=new t(Math.log10(i.div(o).toNumber()));return{zoomMultiples:new t(0).minus(n).div(3/4).abs(),targetX:l/2*(1/4)}}function b({currentBaseMinAndZoomMultiples:e,targetPrice:i,midPrice:o,width:l}){const{baseMin:n,zoomMultiples:s}=e,r=new t(Math.log10(n.div(o).toNumber())),a=r.plus(2*s),u=new t(o.multipliedBy(10**a.toNumber()));if(i.gte(n)&&i.lte(u)){return{isSkip:!0,targetX:new t(Math.log10(i.div(o).toNumber())).minus(r).div(2*s).multipliedBy(l).toNumber(),baseMin:new t(0),zoomMultiples:1}}const m=new t(o.multipliedBy(.1)),p=new t(o.multipliedBy(10));if(i.gte(m)&&i.lte(p)){return{isSkip:!1,targetX:new t(Math.log10(i.div(o).toNumber())).minus(-1).div(2).multipliedBy(l).toNumber(),baseMin:m,zoomMultiples:1}}return{isSkip:!1,targetX:-1,baseMin:new t(0),zoomMultiples:1}}function f({midPrice:e,zoomMultiples:t}){return e.multipliedBy(10**-t)}export{a,p as b,u as c,c as d,r as e,f,o as g,n as h,d as i,b as j,h as k,l,s as m,m as u};
@@ -0,0 +1,78 @@
1
+ import e from"bignumber.js";import{merge as t,throttle as i,debounce as o}from"lodash";import r,{useEffect as n,useMemo as l,useRef as s,useState as a}from"react";import d from"@emotion/styled";import{css as u}from"@emotion/react";import{Stage as c,Layer as p,Rect as m,Line as g,Text as h,Circle as b,Label as f,Tag as M}from"react-konva";import{c as x,e as v,a as y,b as P,d as j,f as w,u as z,g as L,h as k,l as B,i as C,j as S,k as N}from"./helper-BPAb-D4D.js";import{f as O,j as X,a as T,b as A}from"./index-C-2UnSDv.js";import{solveQuadraticFunctionForTarget as q,PMMModel as W}from"@dodoex/api";import"@lingui/core";import"@lingui/react";import"react-dom";import"react-redux";import"identicon.js";import"@web3-react/core";import"@web3-react/eip1193";import"@web3-react/walletconnect-v2";import"@web3-react/metamask";import"@web3-react/types";import"@reduxjs/toolkit";import"redux";import"@tanstack/react-query";import"react-window";import"@ethersproject/bignumber";import"dayjs";import"axios";import"zustand";import"react-infinite-scroller";import"recharts";var E={color:void 0,size:void 0,className:void 0,style:void 0,attr:void 0},F=r.createContext&&r.createContext(E),H=["attr","size","title"];function Z(e,t){if(null==e)return{};var i,o,r=function(e,t){if(null==e)return{};var i,o,r={},n=Object.keys(e);for(o=0;o<n.length;o++)i=n[o],t.indexOf(i)>=0||(r[i]=e[i]);return r}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(o=0;o<n.length;o++)i=n[o],t.indexOf(i)>=0||Object.prototype.propertyIsEnumerable.call(e,i)&&(r[i]=e[i])}return r}function G(){return G=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var i=arguments[t];for(var o in i)Object.prototype.hasOwnProperty.call(i,o)&&(e[o]=i[o])}return e},G.apply(this,arguments)}function D(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,o)}return i}function J(e){for(var t=1;t<arguments.length;t++){var i=null!=arguments[t]?arguments[t]:{};t%2?D(Object(i),!0).forEach((function(t){V(e,t,i[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(i)):D(Object(i)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(i,t))}))}return e}function V(e,t,i){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var i=e[Symbol.toPrimitive];if(void 0!==i){var o=i.call(e,t||"default");if("object"!=typeof o)return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}function Y(e){return e&&e.map(((e,t)=>r.createElement(e.tag,J({key:t},e.attr),Y(e.child))))}function I(e){return t=>r.createElement(R,G({attr:J({},e.attr)},t),Y(e.child))}function R(e){var t=t=>{var i,{attr:o,size:n,title:l}=e,s=Z(e,H),a=n||t.size||"1em";return t.className&&(i=t.className),e.className&&(i=(i?i+" ":"")+e.className),r.createElement("svg",G({stroke:"currentColor",fill:"currentColor",strokeWidth:"0"},t.attr,o,s,{className:i,style:J(J({color:e.color||t.color},t.style),e.style),height:a,width:a,xmlns:"http://www.w3.org/2000/svg"}),l&&r.createElement("title",null,l),e.children)};return void 0!==F?r.createElement(F.Consumer,null,(e=>t(e))):t(E)}function $(e){return I({tag:"svg",attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{d:"M13.293 6.293 7.586 12l5.707 5.707 1.414-1.414L10.414 12l4.293-4.293z"},child:[]}]})(e)}function Q(e){return I({tag:"svg",attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{d:"M10.707 17.707 16.414 12l-5.707-5.707-1.414 1.414L13.586 12l-4.293 4.293z"},child:[]}]})(e)}function K(e){return I({tag:"svg",attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{d:"M5 11h14v2H5z"},child:[]}]})(e)}function U(e){return I({tag:"svg",attr:{viewBox:"0 0 24 24"},child:[{tag:"path",attr:{d:"M19 11h-6V5h-2v6H5v2h6v6h2v-6h6z"},child:[]}]})(e)}const _=d.input`
2
+ margin: 4px 10px 4px 6px;
3
+ border-radius: 10px;
4
+ border: 1px solid #373739;
5
+ padding: 4px 9px;
6
+ background-color: #1a1a1b;
7
+ color: #ffffff;
8
+ font-size: 14px;
9
+ font-weight: 400;
10
+ line-height: 20px;
11
+ outline: none;
12
+ width: 96px;
13
+ &:focus {
14
+ border-color: #fff;
15
+
16
+ ${({error:e})=>e&&u`
17
+ border-color: red;
18
+ `}
19
+ }
20
+ `;const ee="rgba(38, 39, 41, 0.3)";function te({width:o,height:r,midPrice:a,pmmModel:d,params:u,baseTokenSymbol:C,quoteTokenSymbol:S,baseMinAndZoomMultiples:N,colorMap:T,setBaseMinAndZoomMultiples:A}){const q=t({grid:"#2A2A2D",midPriceLine:"#313335",leftBg:[0,ee,1,"#31645d"],leftLine:"#55f6db",leftColor:"",rightBg:[0,ee,1,"#67303d"],rightLine:"#ff4f73",rightColor:"",tooltipBg:"#121212",tooltipColor:void 0},T),W=o,E=r-18,F=W/7,{buyBaseVert:H,sellBaseVert:Z}=y({midPrice:a,q:u.q,q0:u.q0,pmmModel:d}),G=H.div(E),D=Z.div(E),J=s(null),V=s(null),{current:Y}=J,I=s(0),R=s(),{horizontalGridLines:$,verticalGridLines:Q}=function({chartHeight:e,chartWidth:t,horizontalLineCount:i,verticalLineCount:o}){return l((()=>{const r=[],n=e/(i+1),l=[],s=t/o;for(let e=0;e<i;e++){const i=n*(e+1);r.push([0,i,t,i])}for(let t=0;t<o;t++){const i=s*t+s/2;l.push([i,0,i,e])}return{horizontalGridLines:r,verticalGridLines:l}}),[e,t,i,o])}({chartHeight:E,chartWidth:W,horizontalLineCount:9,verticalLineCount:7}),{horizontalLabelTickPoints:K,horizontalLabelTextPoints:U}=function({chartHeight:e,chartWidth:t,xAxisPoints:i,oneXPx:o,baseMinAndZoomMultiples:r}){return l((()=>{const n=x(t,r.zoomMultiples),l=[],s=[];for(let t=0;t<i;t++){l.push([t*o+o/2,e,t*o+o/2,e+4]);const i=n.multipliedBy(t).multipliedBy(o).plus(n.multipliedBy(o/2)).toNumber(),a=r.baseMin.multipliedBy(10**i),d=t*o,u=e+2+4,c=O(a);s.push({x:d,y:u,text:c})}return{horizontalLabelTickPoints:l,horizontalLabelTextPoints:s}}),[r.baseMin,r.zoomMultiples,e,t,o,i])}({chartHeight:E,chartWidth:W,xAxisPoints:7,oneXPx:F,baseMinAndZoomMultiples:N}),{quoteLinePoints:_,quoteLineAreaPoints:te,quoteLineAreaLinearGradientEndPointY:ie,baseLinePoints:oe,baseLineAreaPoints:re,baseLineAreaLinearGradientEndPointY:ne,midPriceLinePoints:le}=function({chartHeight:t,chartWidth:i,midPrice:o,xPoints:r,pmmModel:n,baseMinAndZoomMultiples:s,buyYPortion:a,sellYPortion:d}){return l((()=>{const l=[],u=[],c=[],{baseMin:p,zoomMultiples:m}=s,g=x(i,m),h=2*m,b=new e(h).div(r);let f=new e(Math.log(o.div(p).toNumber())/Math.log(10));f=e.minimum(h,f),f=e.maximum(0,f);for(let i=new e(0);i.lte(f);){const e=p.multipliedBy(10**i.toNumber()),r=v({val:e,model:n,midPrice:o});if(!r.vert.isNaN()){const e=i.div(g).toNumber(),o=t-r.vert.div(a).toNumber();l.push(e,o)}i=i.plus(b)}for(let e=f;e.lte(h);){const i=p.multipliedBy(10**e.toNumber()),r=v({val:i,model:n,midPrice:o});if(!r.vert.isNaN()){const i=e.div(g).toNumber(),o=t-r.vert.div(d).toNumber();u.push(i,o)}e=e.plus(b)}const M=f.div(g).toNumber(),[,y]=l,P=n.k.eq(0);P&&l.push(M,y||t),l.push(M,t),c.push(M,t,M,0);const j=v({val:p.multipliedBy(10**h),model:n,midPrice:o});let w=t;const z=new e(h).div(g).toNumber();return j.vert.isNaN()||(w=t-j.vert.div(d).toNumber()),P&&u.length>=2&&(u.unshift(M,w),u.unshift(M,t)),u.push(z,w),f.lte(0)&&u.unshift(0,t),{quoteLinePoints:l,quoteLineAreaPoints:[0,t,0,y,...l],quoteLineAreaLinearGradientEndPointY:y,baseLinePoints:u,baseLineAreaPoints:[...u,z,t],baseLineAreaLinearGradientEndPointY:w,midPriceLinePoints:c}}),[s,i,r,o,n,t,a,d])}({chartHeight:E,chartWidth:W,midPrice:a,xPoints:50,pmmModel:d,baseMinAndZoomMultiples:N,buyYPortion:G,sellYPortion:D}),se=e=>{var t;const i=e.target;if(i&&Y){const e=null===(t=i.getStage())||void 0===t?void 0:t.getPointerPosition();if(e){const{x:t}=e;if(t>W)return void Y.hide();z({x:t,tooltip:Y,buyBaseVert:H,sellBaseVert:Z,chartWidth:W,chartHeight:E,midPrice:a,pmmModel:d,baseTokenSymbol:C,quoteTokenSymbol:S,baseMinAndZoomMultiples:N,t:L,isHover:!0,color:q.tooltipColor,leftColor:q.leftLine,rightColor:q.rightLine})}}},ae=l((()=>i((e=>{const{target:t}=e,i=t.getStage();if(i){i.container().style.cursor="grabbing";const e=null==i?void 0:i.getPointerPosition();if(e){const t=e.x-I.current;I.current=e.x,R.current=e.x,A((e=>void 0===e.baseMin?e:{baseMin:P({dragDistance:t,prevBaseMin:e.baseMin,chartWidth:W,zoomMultiples:e.zoomMultiples}),zoomMultiples:e.zoomMultiples,targetMarginPriceX:0}))}}}),100)),[W,A]),de=l((()=>i((e=>{e.cancelBubble=!0,e.evt.preventDefault();const t=e.evt.deltaY<0;A((e=>{const i=j({zoomIn:t,prevZoomMultiples:e.zoomMultiples});return{baseMin:w({midPrice:a,zoomMultiples:i}),zoomMultiples:i,targetMarginPriceX:e.targetMarginPriceX}}))}),100)),[a,A]);return n((()=>{N.targetMarginPriceX>0&&null!==Y?z({x:N.targetMarginPriceX,tooltip:Y,buyBaseVert:H,sellBaseVert:Z,chartWidth:W,chartHeight:E,midPrice:a,pmmModel:d,baseTokenSymbol:C,quoteTokenSymbol:S,baseMinAndZoomMultiples:N,t:L,color:q.tooltipColor,leftColor:q.leftLine,rightColor:q.rightLine}):void 0!==R.current&&null!==Y&&z({x:R.current,tooltip:Y,buyBaseVert:H,sellBaseVert:Z,chartWidth:W,chartHeight:E,midPrice:a,pmmModel:d,baseTokenSymbol:C,quoteTokenSymbol:S,baseMinAndZoomMultiples:N,t:L,isHover:!0,color:q.tooltipColor,leftColor:q.leftLine,rightColor:q.rightLine})}),[N,C,H,E,W,q.leftLine,q.rightLine,q.tooltipColor,a,d,S,Z,Y]),X.jsxs(c,{ref:V,width:o,offsetY:-k,height:r+k,draggable:!0,dragBoundFunc:function(){return{x:this.absolutePosition().x,y:this.absolutePosition().y}},onMouseMove:se,onMouseOver:se,onMouseOut:()=>{Y&&Y.hide()},onDragStart:function(e){const{target:t}=e,i=t.getStage();if(i){const e=i.getPointerPosition();e&&(I.current=e.x)}},onDragMove:ae,onDragEnd:e=>{const{target:t}=e,i=t.getStage();i&&(i.container().style.cursor="pointer")},onWheel:de,children:[X.jsxs(p,{children:[X.jsx(m,{x:0,y:0,width:o,height:E,stroke:q.grid,strokeWidth:1}),$.map(((e,t)=>X.jsx(g,{points:e,stroke:q.grid,strokeWidth:1,lineCap:"round",lineJoin:"round",listening:!1},t))),Q.map(((e,t)=>X.jsx(g,{points:e,stroke:q.grid,strokeWidth:1,lineCap:"round",lineJoin:"round",listening:!1},t))),K.map(((e,t)=>X.jsx(g,{points:e,stroke:"#9d9d9d",strokeWidth:1,lineCap:"round",lineJoin:"round",listening:!1},t))),U.map(((e,t)=>X.jsx(h,{x:e.x,y:e.y,text:e.text,fontFamily:"Manrope",fontSize:12,fill:"#9d9d9d",width:F,padding:0,align:"center",verticalAlign:"bottom",listening:!1},t))),X.jsx(g,{points:te,closed:!0,listening:!1,lineCap:"round",lineJoin:"round",fillLinearGradientStartPoint:{x:0,y:E},fillLinearGradientEndPoint:{x:0,y:ie},fillLinearGradientColorStops:q.leftBg}),X.jsx(g,{points:_,stroke:q.leftLine,strokeWidth:2,lineCap:"round",lineJoin:"round",listening:!1}),X.jsx(g,{points:re,closed:!0,listening:!1,lineCap:"round",lineJoin:"round",fillLinearGradientStartPoint:{x:W,y:E},fillLinearGradientEndPoint:{x:W,y:ne},fillLinearGradientColorStops:q.rightBg}),X.jsx(g,{points:oe,stroke:q.rightLine,strokeWidth:2,lineCap:"round",lineJoin:"round",listening:!1}),X.jsx(g,{points:le,stroke:q.midPriceLine,strokeWidth:2,lineCap:"round",lineJoin:"round",listening:!1})]}),X.jsxs(p,{ref:J,visible:!1,listening:!1,children:[X.jsx(g,{points:[],stroke:"#ff4f73",strokeWidth:1,lineCap:"round",lineJoin:"round",dash:[4,6],id:"toolTipVertLine"}),X.jsx(g,{points:[],stroke:"ff4f73",strokeWidth:1,lineCap:"round",lineJoin:"round",dash:[4,6],id:"toolTipHoriLine"}),X.jsx(b,{x:0,y:0,radius:5,fill:"#FF5072",stroke:"rgba(255, 80, 114, 0.3)",strokeWidth:12,id:"joinCircle"}),X.jsxs(f,{x:0,y:0,id:"priceTextLabel",children:[X.jsx(M,{fill:q.tooltipBg,id:"priceTextLabel-tag"}),X.jsx(h,{text:"",fontSize:12,fontFamily:"Manrope",padding:4,fill:"#FF5072",id:"priceTextLabel-text"})]}),X.jsxs(f,{x:0,y:0,id:"slippageTextLabel",children:[X.jsx(M,{fill:q.tooltipBg,id:"slippageTextLabel-tag"}),X.jsx(h,{text:"",fontSize:12,fontFamily:"Manrope",padding:4,fill:"#FF5072",id:"slippageTextLabel-text"})]}),X.jsxs(f,{x:0,y:0,id:"toolTip",children:[X.jsx(M,{fill:q.tooltipBg,pointerDirection:"down",pointerWidth:15,pointerHeight:8,cornerRadius:8,lineJoin:"round",id:"toolTip-tag"}),X.jsx(h,{text:"-",fontSize:12,lineHeight:17/12,padding:B,fontFamily:"Manrope",fill:"#FFFFFF",id:"toolTip-text"})]})]})]})}const ie=d.button`
21
+ margin: 0;
22
+ border: none;
23
+ padding: 0;
24
+ background: none;
25
+
26
+ &:focus {
27
+ outline: none;
28
+ }
29
+ &:active {
30
+ outline: none;
31
+ }
32
+ `,oe=d.div`
33
+ height: 100%;
34
+ `,re=d.div`
35
+ display: flex;
36
+ align-items: center;
37
+ `,ne=d.div`
38
+ border: 1px solid ${({borderColor:e})=>e||"#2a2a2d"};
39
+ flex: 1 0 50%;
40
+
41
+ display: flex;
42
+ align-items: center;
43
+ justify-content: center;
44
+ font-size: 12px;
45
+ font-weight: 400;
46
+ line-height: 17px;
47
+ color: #606066;
48
+
49
+ & + & {
50
+ border-left: none;
51
+ }
52
+ `,le=d.span`
53
+ color: #85858d;
54
+ `,se=d.div`
55
+ margin-top: 20px;
56
+ display: flex;
57
+ justify-content: center;
58
+ margin-bottom: 9px;
59
+ `,ae=d(ie)`
60
+ border-radius: 13px;
61
+ background-color: #373739;
62
+ width: 24px;
63
+ height: 24px;
64
+ font-size: 18px;
65
+ color: #85858d;
66
+ line-height: 0;
67
+ & + & {
68
+ margin-left: 10px;
69
+ }
70
+ &:first-child,
71
+ &:last-child {
72
+ font-size: 20px;
73
+ }
74
+
75
+ &:hover {
76
+ color: #fff;
77
+ }
78
+ `;function de({params:t,target:i,isBuy:o=!0}){const r=new e(t.b),n=new e(t.q);let l=new e(t.b0);const s=new e(t.q0),a=new e(t.i),d=new e(t.k),{R:u}=t;1===u&&l.eq(r)&&(l=q(r,n.minus(s),new e(1).div(a),d));const c=o?r.plus(i):r.minus(i);if(c.lt(l)||r.eq(l)){let t=l.multipliedBy(l).div(c).div(c);return t=new e(1).minus(d).plus(d.multipliedBy(t)),a.multipliedBy(t)}const p=new W;p.RStatus=u,p.B=r,p.B0=l,p.Q=n,p.Q0=s,p.i=a,p.k=d,p.mtFeeRate=new e(0),p.lpFeeRate=new e(0);let m=new e(0);m=o?p.querySellBase(i):p.queryBuyBase(i);const g=o?n.minus(m):n.plus(m);let h=s.multipliedBy(s).div(g).div(g);return h=new e(1).minus(d).plus(d.multipliedBy(h)),a.div(h)}const ue=({chartId:t,width:i=834,height:r=460,baseTokenSymbol:s,quoteTokenSymbol:d,pmmModel:u,pmmParams:c,midPrice:p=new e(0),colorMap:m,notShowAmountInput:g})=>{(({id:e})=>{n((()=>{function t(e){e.preventDefault()}let i=!1;try{const e={get passive(){return i=!0,!1}};window.addEventListener("test",(()=>{}),e),window.removeEventListener("test",(()=>{}))}catch(e){i=!1}const o=document.getElementById(e),r=!!i&&{passive:!1};return null==o||o.addEventListener("wheel",t,r),()=>{null==o||o.removeEventListener("wheel",t)}}),[e])})({id:t});const[h,b]=a(""),[f,M]=a(""),[x,v]=a("-"),[y,z]=a("-"),[k,B]=a({baseMin:new e(0),zoomMultiples:C,targetMarginPriceX:0});n((()=>{void 0!==p&&B((e=>({baseMin:w({midPrice:p,zoomMultiples:e.zoomMultiples}),zoomMultiples:e.zoomMultiples,targetMarginPriceX:e.targetMarginPriceX})))}),[p]);const O=l((()=>o((({type:t,amount:o})=>{""===o&&p&&(B({baseMin:w({midPrice:p,zoomMultiples:C}),zoomMultiples:C,targetMarginPriceX:0}),"buy"===t?v("-"):z("-"));const r=new e(o);if(!r.lte(0)&&!r.isNaN()&&(null==c?void 0:c.b)&&!r.gte(c.b)&&p)if("buy"===t){const e=de({params:c,target:r});B((o=>{const r=S({currentBaseMinAndZoomMultiples:o,targetPrice:e,midPrice:p,width:i});if(r.isSkip)return{baseMin:o.baseMin,zoomMultiples:o.zoomMultiples,targetMarginPriceX:r.targetX};if(r.targetX>0)return{baseMin:r.baseMin,zoomMultiples:r.zoomMultiples,targetMarginPriceX:r.targetX};const n=N({midPrice:p,width:i,type:t,targetPrice:e}),l=n.zoomMultiples.dp(6).toNumber();return{baseMin:w({midPrice:p,zoomMultiples:l}),zoomMultiples:l,targetMarginPriceX:n.targetX}})),v(`${T({input:e.minus(p).div(p)})}`)}else{const e=function({params:e,target:t}){return de({params:e,target:t,isBuy:!1})}({params:c,target:r});B((o=>{const r=S({currentBaseMinAndZoomMultiples:o,targetPrice:e,midPrice:p,width:i});if(r.isSkip)return{baseMin:o.baseMin,zoomMultiples:o.zoomMultiples,targetMarginPriceX:r.targetX};if(r.targetX>0)return{baseMin:r.baseMin,zoomMultiples:r.zoomMultiples,targetMarginPriceX:r.targetX};const n=N({midPrice:p,width:i,type:t,targetPrice:e}),l=n.zoomMultiples.dp(6).toNumber();return{baseMin:w({midPrice:p,zoomMultiples:l}),zoomMultiples:l,targetMarginPriceX:n.targetX}})),z(`+${T({input:e.minus(p).div(p)})}`)}}),300)),[c,p,i]);n((()=>{void 0!==h&&O({type:"buy",amount:h})}),[O,h]),n((()=>{void 0!==f&&O({type:"sell",amount:f})}),[O,f]);const q=e=>{let t=0;t=e?-.1*i:.1*i,B((e=>void 0===e.baseMin?e:{baseMin:P({dragDistance:t,prevBaseMin:e.baseMin,chartWidth:i,zoomMultiples:e.zoomMultiples}),zoomMultiples:e.zoomMultiples,targetMarginPriceX:e.targetMarginPriceX}))},W=e=>{B((t=>{const i=j({zoomIn:null!=e&&e,prevZoomMultiples:t.zoomMultiples});return{baseMin:w({midPrice:p,zoomMultiples:i}),zoomMultiples:i,targetMarginPriceX:t.targetMarginPriceX}}))},E=l((()=>{if(""===h)return!1;const t=new e(h);return!(!t.lte(0)&&!t.isNaN()&&(null==c?void 0:c.b)&&!t.gte(c.b))}),[h,c]),F=l((()=>{if(""===f)return!1;const t=new e(f);return!(!t.lte(0)&&!t.isNaN()&&(null==c?void 0:c.b)&&!t.gte(c.b))}),[f,c]);return X.jsxs(oe,{id:t,children:[g?"":X.jsxs(re,{children:[X.jsxs(ne,{borderColor:m&&m.grid,children:[L("pool.chart.buy-amount",{symbol:s}),X.jsx(_,{value:h,error:E,onChange:e=>{const t=A(e.target.value,2);null!==t&&b(t)}}),X.jsx(le,{children:L("pool.chart.price-impact",{amount:x})})]}),X.jsxs(ne,{borderColor:m&&m.grid,children:[L("pool.chart.sell-amount",{symbol:s}),X.jsx(_,{value:f,error:F,onChange:e=>{const t=A(e.target.value,2);null!==t&&M(t)}}),X.jsx(le,{children:L("pool.chart.price-impact",{amount:y})})]})]}),void 0!==c&&void 0!==p&&void 0!==u&&void 0!==k.baseMin&&void 0!==p&&X.jsx(te,{width:i,height:r,params:c,midPrice:p,pmmModel:u,baseTokenSymbol:s,quoteTokenSymbol:d,baseMinAndZoomMultiples:k,colorMap:m,setBaseMinAndZoomMultiples:B}),X.jsxs(se,{className:"operate-btn-wrapper",children:[X.jsx(ae,{onClick:()=>q(!0),children:X.jsx($,{})}),X.jsx(ae,{onClick:()=>W(!1),children:X.jsx(K,{})}),X.jsx(ae,{onClick:()=>W(!0),children:X.jsx(U,{})}),X.jsx(ae,{onClick:()=>q(!1),children:X.jsx(Q,{})})]})]})};export{ue as default};