@openocean.finance/widget 1.0.44 → 1.0.46
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/esm/components/Header/WalletHeader.js +4 -4
- package/dist/esm/components/Header/WalletHeader.js.map +1 -1
- package/dist/esm/components/TokenList/VirtualizedTokenList.js +1 -0
- package/dist/esm/components/TokenList/VirtualizedTokenList.js.map +1 -1
- package/dist/esm/components/TransactionDetails.js +3 -0
- package/dist/esm/components/TransactionDetails.js.map +1 -1
- package/dist/esm/config/version.d.ts +1 -1
- package/dist/esm/config/version.js +1 -1
- package/dist/esm/cross/adapters/LifiAdapter.d.ts +3 -0
- package/dist/esm/cross/adapters/LifiAdapter.js +270 -44
- package/dist/esm/cross/adapters/LifiAdapter.js.map +1 -1
- package/dist/esm/cross/adapters/RelayAdapter.js +3 -9
- package/dist/esm/cross/adapters/RelayAdapter.js.map +1 -1
- package/dist/esm/cross/adapters/index.d.ts +1 -0
- package/dist/esm/cross/adapters/index.js +1 -1
- package/dist/esm/cross/adapters/index.js.map +1 -1
- package/dist/esm/cross/crossChainQuote.js +61 -2
- package/dist/esm/cross/crossChainQuote.js.map +1 -1
- package/dist/esm/cross/factory.d.ts +3 -1
- package/dist/esm/cross/factory.js +10 -14
- package/dist/esm/cross/factory.js.map +1 -1
- package/dist/esm/hooks/useSwapOnly.js +8 -2
- package/dist/esm/hooks/useSwapOnly.js.map +1 -1
- package/dist/esm/i18n/en.json +5 -3
- package/dist/esm/i18n/ja.json +3 -1
- package/dist/esm/i18n/zh.json +3 -1
- package/dist/esm/services/ExecuteRoute.d.ts +1 -0
- package/dist/esm/services/ExecuteRoute.js +128 -53
- package/dist/esm/services/ExecuteRoute.js.map +1 -1
- package/dist/esm/types/widget.d.ts +1 -1
- package/dist/esm/types/widget.js.map +1 -1
- package/package.json +4 -4
- package/src/components/Header/WalletHeader.tsx +4 -4
- package/src/components/TokenList/VirtualizedTokenList.tsx +15 -15
- package/src/components/TransactionDetails.tsx +4 -0
- package/src/config/version.ts +1 -1
- package/src/cross/adapters/LifiAdapter.ts +303 -51
- package/src/cross/adapters/RelayAdapter.ts +4 -12
- package/src/cross/adapters/index.ts +1 -1
- package/src/cross/crossChainQuote.ts +60 -2
- package/src/cross/factory.ts +12 -11
- package/src/hooks/useSwapOnly.ts +9 -2
- package/src/i18n/en.json +5 -3
- package/src/i18n/ja.json +3 -1
- package/src/i18n/zh.json +3 -1
- package/src/services/ExecuteRoute.ts +166 -54
- package/src/types/widget.ts +2 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RelayAdapter.js","sourceRoot":"","sources":["../../../../src/cross/adapters/RelayAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EAEjB,4BAA4B,EAC5B,YAAY,EACZ,SAAS,GAEV,MAAM,0BAA0B,CAAA;AACjC,OAAO,EAAqB,WAAW,EAAE,MAAM,MAAM,CAAA;AACrD,OAAO,EACL,QAAQ,EACR,SAAS,EACT,IAAI,EACJ,SAAS,EACT,KAAK,EACL,GAAG,EACH,MAAM,EACN,KAAK,EACL,OAAO,EACP,MAAM,EACN,QAAQ,EACR,OAAO,EACP,KAAK,EACL,MAAM,EACN,KAAK,EACL,QAAQ,EACR,MAAM,EACN,IAAI,
|
|
1
|
+
{"version":3,"file":"RelayAdapter.js","sourceRoot":"","sources":["../../../../src/cross/adapters/RelayAdapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,7 +5,7 @@ export * from './RelayAdapter.js';
|
|
|
5
5
|
export * from './MayanAdapter.js';
|
|
6
6
|
// export * from './SymbiosisAdapter.js'
|
|
7
7
|
// export * from './DebridgeAdapter.js'
|
|
8
|
-
|
|
8
|
+
export * from './LifiAdapter.js';
|
|
9
9
|
// export * from './KyberSwapAdapter.js'
|
|
10
10
|
export * from './NearIntentsAdapter.js';
|
|
11
11
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/cross/adapters/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAA;AACpC,qCAAqC;AACrC,cAAc,mBAAmB,CAAA;AACjC,wCAAwC;AACxC,cAAc,mBAAmB,CAAA;AACjC,wCAAwC;AACxC,uCAAuC;AACvC,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/cross/adapters/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAA;AACpC,qCAAqC;AACrC,cAAc,mBAAmB,CAAA;AACjC,wCAAwC;AACxC,cAAc,mBAAmB,CAAA;AACjC,wCAAwC;AACxC,uCAAuC;AACvC,cAAc,kBAAkB,CAAA;AAChC,wCAAwC;AACxC,cAAc,yBAAyB,CAAA"}
|
|
@@ -57,7 +57,7 @@ export async function getCrossChainQuote({ fromMsg, toMsg, inAmount, slippage_to
|
|
|
57
57
|
}
|
|
58
58
|
}
|
|
59
59
|
catch (error) {
|
|
60
|
-
errorMsg = error instanceof Error ? error.message : 'Unknown error';
|
|
60
|
+
errorMsg = error instanceof Error || error?.message ? error.message : 'Unknown error';
|
|
61
61
|
// Ignore individual adapter errors, continue getting quotes from other adapters
|
|
62
62
|
console.warn(`Failed to get quote from ${adapter.getName()}:`, error);
|
|
63
63
|
}
|
|
@@ -109,7 +109,66 @@ export async function getCrossChainQuote({ fromMsg, toMsg, inAmount, slippage_to
|
|
|
109
109
|
}
|
|
110
110
|
catch (error) {
|
|
111
111
|
console.error('Error getting cross-chain quote:', error);
|
|
112
|
-
|
|
112
|
+
let errors = [
|
|
113
|
+
{
|
|
114
|
+
message: 'Please connect your wallet first.',
|
|
115
|
+
conditions: [
|
|
116
|
+
'refundTo should not be empty',
|
|
117
|
+
'User is required',
|
|
118
|
+
'fromAddress" is missing'
|
|
119
|
+
],
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
message: 'The input amount is too low.',
|
|
123
|
+
conditions: [
|
|
124
|
+
'Swap output amount is too small to cover fees required to execute swap',
|
|
125
|
+
'Amount is too low for bridge',
|
|
126
|
+
'Amount too small',
|
|
127
|
+
'Amount too low',
|
|
128
|
+
],
|
|
129
|
+
},
|
|
130
|
+
{
|
|
131
|
+
message: 'Insufficient balance in your wallet.',
|
|
132
|
+
conditions: [
|
|
133
|
+
'Insufficient funds',
|
|
134
|
+
'Failed to get quote',
|
|
135
|
+
'Insufficient balance',
|
|
136
|
+
],
|
|
137
|
+
},
|
|
138
|
+
{
|
|
139
|
+
message: 'Please enter valid recipient address.',
|
|
140
|
+
conditions: [
|
|
141
|
+
'recipient should not be empty',
|
|
142
|
+
'Recipient is required',
|
|
143
|
+
'Invalid toAddress:'
|
|
144
|
+
],
|
|
145
|
+
},
|
|
146
|
+
{
|
|
147
|
+
message: 'Not supported token',
|
|
148
|
+
conditions: [
|
|
149
|
+
'not supported to token',
|
|
150
|
+
'not supported from token',
|
|
151
|
+
'no routes found',
|
|
152
|
+
'SDK version too old for monad and solana fast mctp route'
|
|
153
|
+
],
|
|
154
|
+
},
|
|
155
|
+
{
|
|
156
|
+
message: 'There’s no routes available for the selected token pairs',
|
|
157
|
+
conditions: [
|
|
158
|
+
'No available quotes for the requested transfer',
|
|
159
|
+
],
|
|
160
|
+
}
|
|
161
|
+
];
|
|
162
|
+
if (error instanceof Error && error.message) {
|
|
163
|
+
const newError = errors.find(e => e.conditions.some(condition => error.message.indexOf(condition) !== -1));
|
|
164
|
+
if (newError) {
|
|
165
|
+
throw new Error(newError.message);
|
|
166
|
+
}
|
|
167
|
+
else {
|
|
168
|
+
throw new Error(error.message);
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
throw new Error('Unknown error');
|
|
113
172
|
}
|
|
114
173
|
}
|
|
115
174
|
export const bridgeExecuteSwap = async ({ quoteData, walletClient, }) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"crossChainQuote.js","sourceRoot":"","sources":["../../../src/cross/crossChainQuote.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAA;AACpD,OAAO,EAAE,6BAA6B,EAAc,MAAM,eAAe,CAAA;AAEzE;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,EACvC,OAAO,EACP,KAAK,EACL,QAAQ,EACR,kBAAkB,EAClB,OAAO,EACP,SAAS,EACT,UAAU,GAAG,CAAC,EACd,WAAW,GAAG,CAAC,EACf,MAAM,GAAG,EAAE,EACX,YAAY,EACZ,SAAS,EACT,UAAU,GAAG,EAAE,GAchB;IACC,IAAI,CAAC;QACH,2BAA2B;QAC3B,MAAM,QAAQ,GAAG,IAAI,6BAA6B,EAAE,CAAA;QACpD,qBAAqB,CAAC,cAAc,EAAE,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YACzD,QAAQ,CAAC,eAAe,CAAC,OAAO,CAAC,CAAA;QACnC,CAAC,CAAC,CAAA;QAEF,IAAI,QAAQ,GAAG,OAAO,kBAAkB,KAAK,QAAQ;YACnD,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,kBAAkB,CAAC;YACvC,CAAC,CAAC,kBAAkB,CAAA;QACtB,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,GAAG,GAAG,CAAA;QAC7C,2BAA2B;QAC3B,MAAM,MAAM,GAAgB;YAC1B,MAAM;YACN,SAAS,EAAE,OAAO,CAAC,OAAO;YAC1B,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,SAAS,EAAE,OAAO;YAClB,OAAO,EAAE,KAAK;YACd,MAAM,EAAE,QAAQ;YAChB,QAAQ,EAAE,QAAQ;YAClB,YAAY;YACZ,UAAU;YACV,WAAW;YACX,MAAM,EAAE,OAAO;YACf,SAAS,EAAE,SAAS,IAAI,EAAE;YAC1B,SAAS;YACT,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ;SAC7C,CAAA;QAED,IAAI,OAAO,CAAC,OAAO,KAAK,MAAM,IAAI,KAAK,CAAC,OAAO,KAAK,MAAM,EAAE,CAAC;YAC3D,CAAC;YAAE,MAAc,CAAC,UAAU,GAAG,UAAU,CAAA;QAC3C,CAAC;QAED,oBAAoB;QACpB,MAAM,QAAQ,GAAG,QAAQ,CAAC,cAAc,EAAE,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE;YAC5D,OAAO,CACL,OAAO,CAAC,kBAAkB,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC;gBACvD,OAAO,CAAC,kBAAkB,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CACtD,CAAA;QACH,CAAC,CAAC,CAAA;QACF,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,OAAO,CAAC,IAAI,CAAC,sDAAsD,CAAC,CAAA;YACpE,OAAO,IAAI,CAAA;QACb,CAAC;QAED,MAAM,YAAY,GAAY,EAAE,CAAA;QAChC,IAAI,QAAQ,GAAG,EAAE,CAAA;QACjB,2CAA2C;QAC3C,MAAM,aAAa,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;YACnD,IAAI,CAAC;gBACH,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;gBAC5C,IAAI,KAAK,EAAE,CAAC;oBACV,YAAY,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAA;gBACvC,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,QAAQ,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"crossChainQuote.js","sourceRoot":"","sources":["../../../src/cross/crossChainQuote.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,13 @@
|
|
|
1
|
-
import { MayanAdapter, RelayAdapter, NearIntentsAdapter, SwapProvider } from './adapters/index.js';
|
|
1
|
+
import { LifiAdapter, MayanAdapter, RelayAdapter, NearIntentsAdapter, SwapProvider } from './adapters/index.js';
|
|
2
2
|
export declare class CrossChainSwapFactory {
|
|
3
3
|
private static relayInstance;
|
|
4
4
|
private static nearIntentsInstance;
|
|
5
5
|
private static mayanInstance;
|
|
6
|
+
private static lifiInstance;
|
|
6
7
|
static getRelayAdapter(): RelayAdapter;
|
|
7
8
|
static getNearIntentsAdapter(): NearIntentsAdapter;
|
|
8
9
|
static getMayanAdapter(): MayanAdapter;
|
|
10
|
+
static getLifiInstance(): LifiAdapter;
|
|
9
11
|
static getAllAdapters(): SwapProvider[];
|
|
10
12
|
static getAdapterByName(name: string): SwapProvider | undefined;
|
|
11
13
|
}
|
|
@@ -3,16 +3,12 @@
|
|
|
3
3
|
import {
|
|
4
4
|
// AcrossAdapter,
|
|
5
5
|
// DeBridgeAdapter,
|
|
6
|
-
|
|
7
|
-
MayanAdapter, RelayAdapter, NearIntentsAdapter,
|
|
6
|
+
LifiAdapter, MayanAdapter, RelayAdapter, NearIntentsAdapter,
|
|
8
7
|
// SymbiosisAdapter,
|
|
9
8
|
// XYFinanceAdapter,
|
|
10
9
|
} from './adapters/index.js';
|
|
11
10
|
// Factory for creating swap provider instances
|
|
12
11
|
export class CrossChainSwapFactory {
|
|
13
|
-
// private static symbiosisInstance: SymbiosisAdapter
|
|
14
|
-
// private static debridgeInstance: DeBridgeAdapter
|
|
15
|
-
// private static lifiInstance: LifiAdapter
|
|
16
12
|
// private static optimexInstance: OptimexAdapter
|
|
17
13
|
// private static orbiterInstance: OrbiterAdapter
|
|
18
14
|
// // Get or create Across adapter
|
|
@@ -59,12 +55,12 @@ export class CrossChainSwapFactory {
|
|
|
59
55
|
// }
|
|
60
56
|
// return CrossChainSwapFactory.debridgeInstance
|
|
61
57
|
// }
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
58
|
+
static getLifiInstance() {
|
|
59
|
+
if (!CrossChainSwapFactory.lifiInstance) {
|
|
60
|
+
CrossChainSwapFactory.lifiInstance = new LifiAdapter();
|
|
61
|
+
}
|
|
62
|
+
return CrossChainSwapFactory.lifiInstance;
|
|
63
|
+
}
|
|
68
64
|
// static getOptimexAdapter(): OptimexAdapter {
|
|
69
65
|
// if (!CrossChainSwapFactory.optimexInstance) {
|
|
70
66
|
// CrossChainSwapFactory.optimexInstance = new OptimexAdapter()
|
|
@@ -83,11 +79,11 @@ export class CrossChainSwapFactory {
|
|
|
83
79
|
CrossChainSwapFactory.getMayanAdapter(),
|
|
84
80
|
CrossChainSwapFactory.getRelayAdapter(),
|
|
85
81
|
CrossChainSwapFactory.getNearIntentsAdapter(),
|
|
82
|
+
CrossChainSwapFactory.getLifiInstance(),
|
|
86
83
|
// CrossChainSwapFactory.getAcrossAdapter(),
|
|
87
84
|
// CrossChainSwapFactory.getXyFinanceAdapter(),
|
|
88
85
|
// CrossChainSwapFactory.getSymbiosisAdapter(),
|
|
89
86
|
// CrossChainSwapFactory.getDebridgeInstance(),
|
|
90
|
-
// CrossChainSwapFactory.getLifiInstance(),
|
|
91
87
|
// CrossChainSwapFactory.getOptimexAdapter(),
|
|
92
88
|
// CrossChainSwapFactory.getOrbiterAdapter(),
|
|
93
89
|
];
|
|
@@ -109,8 +105,8 @@ export class CrossChainSwapFactory {
|
|
|
109
105
|
// return CrossChainSwapFactory.getSymbiosisAdapter()
|
|
110
106
|
// case 'debridge':
|
|
111
107
|
// return CrossChainSwapFactory.getDebridgeInstance()
|
|
112
|
-
|
|
113
|
-
|
|
108
|
+
case 'lifi':
|
|
109
|
+
return CrossChainSwapFactory.getLifiInstance();
|
|
114
110
|
// case 'optimex':
|
|
115
111
|
// return CrossChainSwapFactory.getOptimexAdapter()
|
|
116
112
|
// case 'orbiter':
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"factory.js","sourceRoot":"","sources":["../../../src/cross/factory.ts"],"names":[],"mappings":"AAAA,gEAAgE;AAChE,gEAAgE;AAChE,OAAO;AACL,iBAAiB;AACjB,mBAAmB;AACnB,
|
|
1
|
+
{"version":3,"file":"factory.js","sourceRoot":"","sources":["../../../src/cross/factory.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
import { useSplitSubvariantStore } from '../stores/settings/useSplitSubvariantStore.js';
|
|
2
|
+
import { useWidgetConfig } from '../providers/WidgetProvider/WidgetProvider.js';
|
|
2
3
|
export const useSwapOnly = () => {
|
|
3
|
-
const
|
|
4
|
-
|
|
4
|
+
const { subvariant } = useWidgetConfig();
|
|
5
|
+
const [state, setState] = useSplitSubvariantStore((storeState) => [storeState.state, storeState.setState]);
|
|
6
|
+
if (subvariant === 'swap' && state !== 'swap') {
|
|
7
|
+
setState('swap');
|
|
8
|
+
return true;
|
|
9
|
+
}
|
|
10
|
+
return state === 'swap' || subvariant === 'swap';
|
|
5
11
|
};
|
|
6
12
|
//# sourceMappingURL=useSwapOnly.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSwapOnly.js","sourceRoot":"","sources":["../../../src/hooks/useSwapOnly.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,+CAA+C,CAAA;
|
|
1
|
+
{"version":3,"file":"useSwapOnly.js","sourceRoot":"","sources":["../../../src/hooks/useSwapOnly.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,+CAA+C,CAAA;AACvF,OAAO,EAAE,eAAe,EAAE,MAAM,+CAA+C,CAAA;AAG/E,MAAM,CAAC,MAAM,WAAW,GAAG,GAAG,EAAE;IAC9B,MAAM,EAAE,UAAU,EAAE,GAAG,eAAe,EAAE,CAAA;IACxC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,uBAAuB,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,KAAK,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAA;IAC1G,IAAI,UAAU,KAAK,MAAM,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;QAC9C,QAAQ,CAAC,MAAM,CAAC,CAAA;QAChB,OAAO,IAAI,CAAA;IACb,CAAC;IACD,OAAO,KAAK,KAAK,MAAM,IAAI,UAAU,KAAK,MAAM,CAAA;AAClD,CAAC,CAAA"}
|
package/dist/esm/i18n/en.json
CHANGED
|
@@ -90,7 +90,7 @@
|
|
|
90
90
|
"emptyTokenList": "We couldn't find tokens on {{chainName}} chain or you don't have any. Please search by contract address if your token doesn't appear or choose another chain.",
|
|
91
91
|
"emptyTransactionHistory": "Transaction history is only stored locally and will be deleted if you clear your browser data.",
|
|
92
92
|
"routeNotFound": "Reasons for that could be: low liquidity, amount selected is too low, gas costs are too high or there are no routes for the selected combination.",
|
|
93
|
-
"toAddressIsRequired": "
|
|
93
|
+
"toAddressIsRequired": "Please enter valid recipient address"
|
|
94
94
|
},
|
|
95
95
|
"title": {
|
|
96
96
|
"autoRefuel": "Get {{chainName}} gas",
|
|
@@ -123,7 +123,7 @@
|
|
|
123
123
|
"deleteTransactionHistory": "Transaction history is only stored locally and can't be recovered if you delete it.",
|
|
124
124
|
"fundsLossPrevention": "Always ensure smart contract accounts are properly set up on the destination chain and avoid direct transfers to exchanges to prevent fund loss.",
|
|
125
125
|
"highValueLoss": "The value of the received tokens is significantly lower than the exchanged tokens and transaction cost.",
|
|
126
|
-
"insufficientFunds": "Insufficient balance.",
|
|
126
|
+
"insufficientFunds": "Insufficient balance in your wallet.",
|
|
127
127
|
"insufficientGas": "You don't have enough gas to complete the transaction. You need to add at least:",
|
|
128
128
|
"rateChanged": "The exchange rate has changed. By continuing the transaction, you'll accept the new rate.",
|
|
129
129
|
"resetSettings": "This will reset your route priority, slippage, gas price, enabled bridges and exchanges.",
|
|
@@ -320,7 +320,9 @@
|
|
|
320
320
|
"routePriority": "Route priority",
|
|
321
321
|
"slippage": "Slippage Tolerance",
|
|
322
322
|
"custom": "Custom",
|
|
323
|
-
"resetSettings": "You're using custom settings that can affect the number or sorting of available routes."
|
|
323
|
+
"resetSettings": "You're using custom settings that can affect the number or sorting of available routes.",
|
|
324
|
+
"dynamicMode": "Dynamic Mode",
|
|
325
|
+
"dynamicModeTooltip": "Automatically minimizes slippage to enhance the MEV protection through running simulations."
|
|
324
326
|
},
|
|
325
327
|
"sendToWallet": {
|
|
326
328
|
"addBookmark": "Add bookmark",
|
package/dist/esm/i18n/ja.json
CHANGED
|
@@ -302,7 +302,9 @@
|
|
|
302
302
|
"routePriority": "ルート優先度",
|
|
303
303
|
"slippage": "",
|
|
304
304
|
"custom": "カスタム設定",
|
|
305
|
-
"resetSettings": "利用可能なルートの数とソートに影響する可能性があるカスタム設定を使用しています。"
|
|
305
|
+
"resetSettings": "利用可能なルートの数とソートに影響する可能性があるカスタム設定を使用しています。",
|
|
306
|
+
"dynamicMode": "動的モード",
|
|
307
|
+
"dynamicModeTooltip": "シミュレーションを実行することで、MEV 保護を強化するためのスリッページを自動的に最小化します。"
|
|
306
308
|
},
|
|
307
309
|
"sendToWallet": {
|
|
308
310
|
"addBookmark": "ブックマークに追加",
|
package/dist/esm/i18n/zh.json
CHANGED
|
@@ -302,7 +302,9 @@
|
|
|
302
302
|
"routePriority": "路由优先级",
|
|
303
303
|
"slippage": "最大滑点",
|
|
304
304
|
"custom": "自定义",
|
|
305
|
-
"resetSettings": "您正在使用自定义设置来过滤可用路由。"
|
|
305
|
+
"resetSettings": "您正在使用自定义设置来过滤可用路由。",
|
|
306
|
+
"dynamicMode": "动态模式",
|
|
307
|
+
"dynamicModeTooltip": "自动最小化滑点以增强 MEV 保护通过运行模拟。"
|
|
306
308
|
},
|
|
307
309
|
"sendToWallet": {
|
|
308
310
|
"addBookmark": "添加到收藏",
|
|
@@ -11,5 +11,6 @@ interface ExecuteRouteOptions {
|
|
|
11
11
|
onOpenWalletMenu?: () => void;
|
|
12
12
|
solanaWallet?: any;
|
|
13
13
|
}
|
|
14
|
+
export declare function sendBTCWithPhantom(sender: string, recipient: string, amount: number): Promise<string>;
|
|
14
15
|
export declare function executeRoute(route: Route, options: ExecuteRouteOptions): Promise<Route>;
|
|
15
16
|
export {};
|
|
@@ -192,6 +192,7 @@ async function swapQuoteMEV(response, options) {
|
|
|
192
192
|
}
|
|
193
193
|
// Execute Solana transaction
|
|
194
194
|
async function executeSolanaSwap(step, options, process, route) {
|
|
195
|
+
debugger;
|
|
195
196
|
try {
|
|
196
197
|
// Check wallet connection status
|
|
197
198
|
if (!options.account || !options.account.connector) {
|
|
@@ -550,44 +551,6 @@ async function executeEvmSwap(step, options, process, route) {
|
|
|
550
551
|
throw error;
|
|
551
552
|
}
|
|
552
553
|
}
|
|
553
|
-
function detectBtcWallet() {
|
|
554
|
-
const anyWindow = typeof window !== 'undefined' ? window : undefined;
|
|
555
|
-
if (anyWindow.okxwallet?.bitcoin && anyWindow.okxwallet?.bitcoin?.signPsbt)
|
|
556
|
-
return 'okx';
|
|
557
|
-
if (anyWindow.unisat && anyWindow.unisat?.signPsbt)
|
|
558
|
-
return 'unisat';
|
|
559
|
-
if (anyWindow.BitcoinProvider && anyWindow.BitcoinProvider.request)
|
|
560
|
-
return 'xverse';
|
|
561
|
-
return null;
|
|
562
|
-
}
|
|
563
|
-
// Get wallet type from connected account
|
|
564
|
-
function getConnectedBtcWallet(account) {
|
|
565
|
-
if (!account.connector)
|
|
566
|
-
return null;
|
|
567
|
-
const connectorId = account.connector.id?.toLowerCase() || '';
|
|
568
|
-
const connectorName = account.connector.name?.toLowerCase() || '';
|
|
569
|
-
// Match by connector ID or name
|
|
570
|
-
if (connectorId.includes('okx') || connectorId.includes('com.okex.wallet')) {
|
|
571
|
-
return 'okx';
|
|
572
|
-
}
|
|
573
|
-
if (connectorId.includes('unisat')) {
|
|
574
|
-
return 'unisat';
|
|
575
|
-
}
|
|
576
|
-
if (connectorId.includes('xverse') || connectorId.includes('XverseProviders')) {
|
|
577
|
-
return 'xverse';
|
|
578
|
-
}
|
|
579
|
-
if (connectorId.includes('phantom') || connectorName.includes('phantom')) {
|
|
580
|
-
return 'phantom';
|
|
581
|
-
}
|
|
582
|
-
if (connectorId.includes('leather') || connectorName.includes('leather')) {
|
|
583
|
-
return 'leather';
|
|
584
|
-
}
|
|
585
|
-
if (connectorId.includes('onekey') || connectorName.includes('onekey')) {
|
|
586
|
-
return 'onekey';
|
|
587
|
-
}
|
|
588
|
-
// Fallback to detection if connector doesn't match
|
|
589
|
-
return detectBtcWallet();
|
|
590
|
-
}
|
|
591
554
|
const createPsbtOptions = (_, request) => {
|
|
592
555
|
var _a;
|
|
593
556
|
const psbtSignOptions = {
|
|
@@ -631,16 +594,96 @@ function extractSignedPsbt(response) {
|
|
|
631
594
|
return response;
|
|
632
595
|
return response.signedPsbtHex || response.signedPsbtBase64 || response.signedPsbt || null;
|
|
633
596
|
}
|
|
597
|
+
// BTC 主网
|
|
598
|
+
const network = bitcoin.networks.bitcoin;
|
|
599
|
+
export async function sendBTCWithPhantom(sender, recipient, amount) {
|
|
600
|
+
const phantom = window.phantom?.bitcoin;
|
|
601
|
+
if (!phantom)
|
|
602
|
+
throw new Error("Phantom Bitcoin provider not found");
|
|
603
|
+
// 1. 获取 UTXO(这里使用 mempool.space API,你也可以换自己的)
|
|
604
|
+
const utxos = await fetch(`https://mempool.space/api/address/${sender}/utxo`).then((r) => r.json());
|
|
605
|
+
if (!utxos.length)
|
|
606
|
+
throw new Error("No UTXO available");
|
|
607
|
+
// ====== 费用参数 ======
|
|
608
|
+
// amount / fee 单位都按 satoshi 处理,调用方需要保证一致
|
|
609
|
+
const fee = 5000; // 手续费(可以根据当前网络费率动态调整)
|
|
610
|
+
const required = BigInt(amount + fee);
|
|
611
|
+
// 2. 简单的累加选币:从小到大选 UTXO,直到覆盖 amount + fee
|
|
612
|
+
const sortedUtxos = [...utxos].sort((a, b) => Number(a.value) - Number(b.value));
|
|
613
|
+
const selectedUtxos = [];
|
|
614
|
+
let totalInput = 0n;
|
|
615
|
+
for (const utxo of sortedUtxos) {
|
|
616
|
+
selectedUtxos.push(utxo);
|
|
617
|
+
totalInput += BigInt(utxo.value);
|
|
618
|
+
if (totalInput >= required)
|
|
619
|
+
break;
|
|
620
|
+
}
|
|
621
|
+
if (totalInput < required) {
|
|
622
|
+
throw new Error("Insufficient balance: UTXOs do not cover amount + fee");
|
|
623
|
+
}
|
|
624
|
+
const changeValue = totalInput - required;
|
|
625
|
+
// 可选:避免输出过小(dust),这里简单判断 >0 即可,如需更严格可改成 > 546
|
|
626
|
+
if (changeValue <= 0n) {
|
|
627
|
+
throw new Error("UTXOs too small to cover amount and fee with change");
|
|
628
|
+
}
|
|
629
|
+
// 3. 构造 PSBT(多输入)
|
|
630
|
+
const psbt = new bitcoin.Psbt({ network });
|
|
631
|
+
selectedUtxos.forEach((utxo) => {
|
|
632
|
+
psbt.addInput({
|
|
633
|
+
hash: utxo.txid,
|
|
634
|
+
index: utxo.vout,
|
|
635
|
+
witnessUtxo: {
|
|
636
|
+
// bitcoinjs-lib 期望 bigint,这里将 mempool 返回的 number 转成 bigint
|
|
637
|
+
value: BigInt(utxo.value),
|
|
638
|
+
script: bitcoin.address.toOutputScript(sender, network),
|
|
639
|
+
},
|
|
640
|
+
});
|
|
641
|
+
});
|
|
642
|
+
// 目标地址 output
|
|
643
|
+
psbt.addOutput({
|
|
644
|
+
address: recipient,
|
|
645
|
+
value: BigInt(amount),
|
|
646
|
+
});
|
|
647
|
+
// 找零 output
|
|
648
|
+
psbt.addOutput({
|
|
649
|
+
address: sender,
|
|
650
|
+
value: changeValue,
|
|
651
|
+
});
|
|
652
|
+
// 4. 调用 Phantom.signPSBT
|
|
653
|
+
const psbtBase64 = psbt.toBase64();
|
|
654
|
+
const signOptions = {
|
|
655
|
+
autoFinalized: false,
|
|
656
|
+
toSignInputs: selectedUtxos.map((_, index) => ({
|
|
657
|
+
address: sender,
|
|
658
|
+
index,
|
|
659
|
+
// SIGHASH_ALL (0x01) 通常足够,如有需要可根据业务调整
|
|
660
|
+
sighashTypes: [0, 1], // 保持和原来一致
|
|
661
|
+
})),
|
|
662
|
+
};
|
|
663
|
+
const signed = await phantom.signPSBT(psbtBase64, signOptions);
|
|
664
|
+
// Phantom 返回 Base64
|
|
665
|
+
const signedPsbt = bitcoin.Psbt.fromBase64(signed);
|
|
666
|
+
// 5. Finalize + 提取原始交易
|
|
667
|
+
signedPsbt.finalizeAllInputs();
|
|
668
|
+
const rawTx = signedPsbt.extractTransaction().toHex();
|
|
669
|
+
// 6. 广播 Raw TX
|
|
670
|
+
const txid = await fetch("https://mempool.space/api/tx", {
|
|
671
|
+
method: "POST",
|
|
672
|
+
body: rawTx,
|
|
673
|
+
}).then((r) => r.text());
|
|
674
|
+
console.log("Broadcasted TXID:", txid);
|
|
675
|
+
return txid;
|
|
676
|
+
}
|
|
634
677
|
async function executeBitcoinSwap(step, options, process, route) {
|
|
635
678
|
try {
|
|
636
679
|
const { quoteData } = step || {};
|
|
637
680
|
const adaptedWallet = adaptBitcoinWallet(options.account.address?.toString() || '', async (_, __, dynamicParams) => {
|
|
638
681
|
const psbtFromBase64 = bitcoin.Psbt.fromBase64(dynamicParams.unsignedPsbtBase64);
|
|
639
682
|
const psbtHex = psbtFromBase64.toHex();
|
|
640
|
-
const
|
|
683
|
+
const connector = options.account.connector;
|
|
641
684
|
const anyWindow = typeof window !== 'undefined' ? window : undefined;
|
|
642
|
-
switch (
|
|
643
|
-
case '
|
|
685
|
+
switch (connector?.name) {
|
|
686
|
+
case 'OKX Wallet': {
|
|
644
687
|
const response = await anyWindow.okxwallet?.bitcoin?.signPsbt(psbtHex, createPsbtOptions(psbtFromBase64, dynamicParams));
|
|
645
688
|
const signedPsbt = extractSignedPsbt(response);
|
|
646
689
|
if (!signedPsbt) {
|
|
@@ -648,7 +691,7 @@ async function executeBitcoinSwap(step, options, process, route) {
|
|
|
648
691
|
}
|
|
649
692
|
return convertHexToBase64(signedPsbt);
|
|
650
693
|
}
|
|
651
|
-
case '
|
|
694
|
+
case 'Unisat': {
|
|
652
695
|
const response = await anyWindow.unisat?.signPsbt(psbtHex, createPsbtOptions(psbtFromBase64, dynamicParams));
|
|
653
696
|
const signedPsbt = extractSignedPsbt(response);
|
|
654
697
|
if (!signedPsbt) {
|
|
@@ -656,7 +699,7 @@ async function executeBitcoinSwap(step, options, process, route) {
|
|
|
656
699
|
}
|
|
657
700
|
return convertHexToBase64(signedPsbt);
|
|
658
701
|
}
|
|
659
|
-
case '
|
|
702
|
+
case 'Xverse': {
|
|
660
703
|
const response = await anyWindow.BitcoinProvider?.request('signPsbt', {
|
|
661
704
|
psbt: psbtHex,
|
|
662
705
|
finalize: true,
|
|
@@ -667,17 +710,46 @@ async function executeBitcoinSwap(step, options, process, route) {
|
|
|
667
710
|
}
|
|
668
711
|
return convertHexToBase64(signedPsbt);
|
|
669
712
|
}
|
|
713
|
+
case 'Phantom': {
|
|
714
|
+
const phantom = anyWindow.phantom?.bitcoin;
|
|
715
|
+
if (!phantom?.signPSBT)
|
|
716
|
+
throw new Error('Phantom wallet does not support signPSBT');
|
|
717
|
+
const inputsToSign = [];
|
|
718
|
+
console.log("Phantom options = ", JSON.stringify(createPsbtOptions(psbtFromBase64, dynamicParams)));
|
|
719
|
+
console.log("psbtHex = ", psbtHex);
|
|
720
|
+
console.log("psbtBase64 = ", psbtFromBase64.toBase64());
|
|
721
|
+
debugger;
|
|
722
|
+
for (const sig of dynamicParams.signature || []) {
|
|
723
|
+
for (const index of sig.signingIndexes || []) {
|
|
724
|
+
inputsToSign.push({
|
|
725
|
+
index,
|
|
726
|
+
address: sig.address,
|
|
727
|
+
sighashTypes: dynamicParams.allowedSighash,
|
|
728
|
+
});
|
|
729
|
+
}
|
|
730
|
+
}
|
|
731
|
+
debugger;
|
|
732
|
+
const response = await phantom.signPSBT(psbtFromBase64.toBase64(), // ✅ Phantom only accepts base64
|
|
733
|
+
{
|
|
734
|
+
autoFinalize: false, // ✅ correct name
|
|
735
|
+
inputsToSign, // ✅ correct name
|
|
736
|
+
});
|
|
737
|
+
const signedPsbt = extractSignedPsbt(response);
|
|
738
|
+
if (!signedPsbt)
|
|
739
|
+
throw new Error('Missing psbt response from Phantom wallet');
|
|
740
|
+
return signedPsbt; // already base64
|
|
741
|
+
}
|
|
670
742
|
default:
|
|
671
|
-
throw new Error(`Unsupported wallet: ${
|
|
743
|
+
throw new Error(`Unsupported wallet: ${connector.name}`);
|
|
672
744
|
}
|
|
673
745
|
});
|
|
674
746
|
adaptedWallet.sendTransaction = async (params) => {
|
|
675
|
-
const
|
|
747
|
+
const connector = options.account.connector;
|
|
676
748
|
const anyWindow = typeof window !== 'undefined' ? window : undefined;
|
|
677
749
|
// Convert amount to satoshis (BTC amount * 100000000)
|
|
678
750
|
const amountInSatoshis = Number(params.amount);
|
|
679
|
-
switch (
|
|
680
|
-
case '
|
|
751
|
+
switch (connector?.name) {
|
|
752
|
+
case 'OKX Wallet': {
|
|
681
753
|
// OKX wallet sendBitcoin method
|
|
682
754
|
if (anyWindow.okxwallet?.bitcoin?.sendBitcoin) {
|
|
683
755
|
const txid = await anyWindow.okxwallet.bitcoin.sendBitcoin(params.recipient, amountInSatoshis);
|
|
@@ -685,7 +757,7 @@ async function executeBitcoinSwap(step, options, process, route) {
|
|
|
685
757
|
}
|
|
686
758
|
throw new Error('OKX wallet does not support sendBitcoin');
|
|
687
759
|
}
|
|
688
|
-
case '
|
|
760
|
+
case 'Unisat': {
|
|
689
761
|
// Unisat wallet sendBitcoin method
|
|
690
762
|
if (anyWindow.unisat?.sendBitcoin) {
|
|
691
763
|
const txid = await anyWindow.unisat.sendBitcoin(params.recipient, amountInSatoshis);
|
|
@@ -693,7 +765,7 @@ async function executeBitcoinSwap(step, options, process, route) {
|
|
|
693
765
|
}
|
|
694
766
|
throw new Error('Unisat wallet does not support sendBitcoin');
|
|
695
767
|
}
|
|
696
|
-
case '
|
|
768
|
+
case 'Xverse': {
|
|
697
769
|
// Xverse wallet sendBitcoin method
|
|
698
770
|
if (anyWindow.BitcoinProvider?.request) {
|
|
699
771
|
const response = await anyWindow.BitcoinProvider.request('sendBitcoin', {
|
|
@@ -704,8 +776,13 @@ async function executeBitcoinSwap(step, options, process, route) {
|
|
|
704
776
|
}
|
|
705
777
|
throw new Error('Xverse wallet does not support sendBitcoin');
|
|
706
778
|
}
|
|
779
|
+
case 'Phantom': {
|
|
780
|
+
// Phantom wallet sendBitcoin method
|
|
781
|
+
const txid = await sendBTCWithPhantom(options.account.address?.toString() || '', params.recipient, amountInSatoshis);
|
|
782
|
+
return txid;
|
|
783
|
+
}
|
|
707
784
|
default:
|
|
708
|
-
throw new Error(`Unsupported wallet: ${
|
|
785
|
+
throw new Error(`Unsupported wallet: ${connector?.name}`);
|
|
709
786
|
}
|
|
710
787
|
};
|
|
711
788
|
const signedTx = await bridgeExecuteSwap({
|
|
@@ -728,6 +805,7 @@ async function executeBitcoinSwap(step, options, process, route) {
|
|
|
728
805
|
}
|
|
729
806
|
catch (error) {
|
|
730
807
|
console.error('Bitcoin swap execution failed:', error);
|
|
808
|
+
debugger;
|
|
731
809
|
process.status = 'FAILED';
|
|
732
810
|
process.error =
|
|
733
811
|
error instanceof Error || (error && error?.message)
|
|
@@ -785,9 +863,6 @@ async function executeSwap(route, options) {
|
|
|
785
863
|
else if (currentStep.action?.fromChainId === 20000000000001) {
|
|
786
864
|
await executeBitcoinSwap(currentStep, options, process, updatedRoute);
|
|
787
865
|
}
|
|
788
|
-
else if (currentStep.action?.fromChainId === 20000000000001) {
|
|
789
|
-
await executeBitcoinSwap(currentStep, options, process, updatedRoute);
|
|
790
|
-
}
|
|
791
866
|
else {
|
|
792
867
|
await executeEvmSwap(currentStep, options, process, updatedRoute);
|
|
793
868
|
}
|