@ledgerhq/live-common 34.54.0-nightly.20251206023719 → 34.54.0-nightly.20251209140356
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/lib/__tests__/test-helpers/environment.js +2 -0
- package/lib/__tests__/test-helpers/environment.js.map +1 -1
- package/lib/account/serialization.js +1 -1
- package/lib/account/serialization.js.map +1 -1
- package/lib/account/support.js +1 -1
- package/lib/account/support.js.map +1 -1
- package/lib/bridge/generic-alpaca/getAccountShape.d.ts.map +1 -1
- package/lib/bridge/generic-alpaca/getAccountShape.js +3 -2
- package/lib/bridge/generic-alpaca/getAccountShape.js.map +1 -1
- package/lib/bridge/generic-alpaca/prepareTransaction.d.ts.map +1 -1
- package/lib/bridge/generic-alpaca/prepareTransaction.js +7 -0
- package/lib/bridge/generic-alpaca/prepareTransaction.js.map +1 -1
- package/lib/domain/getTokensWithFunds.d.ts +7 -1
- package/lib/domain/getTokensWithFunds.d.ts.map +1 -1
- package/lib/domain/getTokensWithFunds.js +15 -4
- package/lib/domain/getTokensWithFunds.js.map +1 -1
- package/lib/domain/getTotalStakeableAssets.d.ts +10 -0
- package/lib/domain/getTotalStakeableAssets.d.ts.map +1 -0
- package/lib/domain/getTotalStakeableAssets.js +35 -0
- package/lib/domain/getTotalStakeableAssets.js.map +1 -0
- package/lib/e2e/index.d.ts +9 -0
- package/lib/e2e/index.d.ts.map +1 -1
- package/lib/exchange/swap/api/v5/fetchCurrencyFrom.js +1 -1
- package/lib/exchange/swap/api/v5/fetchCurrencyFrom.js.map +1 -1
- package/lib/exchange/swap/getIncompatibleCurrencyKeys.d.ts.map +1 -1
- package/lib/exchange/swap/getIncompatibleCurrencyKeys.js +4 -0
- package/lib/exchange/swap/getIncompatibleCurrencyKeys.js.map +1 -1
- package/lib/exchange/swap/transactionStrategies.d.ts +2 -1
- package/lib/exchange/swap/transactionStrategies.d.ts.map +1 -1
- package/lib/exchange/swap/transactionStrategies.js +7 -6
- package/lib/exchange/swap/transactionStrategies.js.map +1 -1
- package/lib/featureFlags/defaultFeatures.d.ts +2 -0
- package/lib/featureFlags/defaultFeatures.d.ts.map +1 -1
- package/lib/featureFlags/defaultFeatures.js +3 -0
- package/lib/featureFlags/defaultFeatures.js.map +1 -1
- package/lib/featureFlags/firebaseFeatureFlags.js +1 -1
- package/lib/featureFlags/firebaseFeatureFlags.js.map +1 -1
- package/lib/featureFlags/useFeature.d.ts +1 -1
- package/lib/featureFlags/useFeature.d.ts.map +1 -1
- package/lib/featureFlags/useHasOverriddenFeatureFlags.js +1 -1
- package/lib/featureFlags/useHasOverriddenFeatureFlags.js.map +1 -1
- package/lib/hw/getBitcoinLikeInfo.js +1 -1
- package/lib/hw/getBitcoinLikeInfo.js.map +1 -1
- package/lib/mock/account.js +1 -1
- package/lib/mock/account.js.map +1 -1
- package/lib/modularDrawer/hooks/useCurrenciesUnderFeatureFlag.d.ts.map +1 -1
- package/lib/modularDrawer/hooks/useCurrenciesUnderFeatureFlag.js +6 -0
- package/lib/modularDrawer/hooks/useCurrenciesUnderFeatureFlag.js.map +1 -1
- package/lib/wallet-api/Exchange/SwapError.d.ts +93 -0
- package/lib/wallet-api/Exchange/SwapError.d.ts.map +1 -0
- package/lib/wallet-api/Exchange/SwapError.js +142 -0
- package/lib/wallet-api/Exchange/SwapError.js.map +1 -0
- package/lib/wallet-api/Exchange/handleSwapErrors.d.ts +40 -0
- package/lib/wallet-api/Exchange/handleSwapErrors.d.ts.map +1 -0
- package/lib/wallet-api/Exchange/handleSwapErrors.js +112 -0
- package/lib/wallet-api/Exchange/handleSwapErrors.js.map +1 -0
- package/lib/wallet-api/Exchange/index.d.ts +4 -0
- package/lib/wallet-api/Exchange/index.d.ts.map +1 -0
- package/lib/wallet-api/Exchange/index.js +27 -0
- package/lib/wallet-api/Exchange/index.js.map +1 -0
- package/lib/wallet-api/Exchange/parser.d.ts +46 -0
- package/lib/wallet-api/Exchange/parser.d.ts.map +1 -0
- package/lib/wallet-api/Exchange/parser.js +97 -0
- package/lib/wallet-api/Exchange/parser.js.map +1 -0
- package/lib/wallet-api/Exchange/server.d.ts.map +1 -1
- package/lib/wallet-api/Exchange/server.js +226 -177
- package/lib/wallet-api/Exchange/server.js.map +1 -1
- package/lib/wallet-api/Exchange/tracking.d.ts +7 -6
- package/lib/wallet-api/Exchange/tracking.d.ts.map +1 -1
- package/lib/wallet-api/Exchange/tracking.js +52 -13
- package/lib/wallet-api/Exchange/tracking.js.map +1 -1
- package/lib/wallet-api/logic.d.ts +1 -1
- package/lib/wallet-api/logic.d.ts.map +1 -1
- package/lib/wallet-api/logic.js +5 -5
- package/lib/wallet-api/logic.js.map +1 -1
- package/lib/wallet-api/react.d.ts.map +1 -1
- package/lib/wallet-api/react.js +9 -6
- package/lib/wallet-api/react.js.map +1 -1
- package/lib/wallet-api/tracking.d.ts +5 -5
- package/lib/wallet-api/tracking.d.ts.map +1 -1
- package/lib/wallet-api/tracking.js +30 -10
- package/lib/wallet-api/tracking.js.map +1 -1
- package/lib/wallet-api/useDappLogic.d.ts.map +1 -1
- package/lib/wallet-api/useDappLogic.js +31 -20
- package/lib/wallet-api/useDappLogic.js.map +1 -1
- package/lib/wallet-api/utils/extractDappURLFromManifest.js +3 -3
- package/lib/wallet-api/utils/extractDappURLFromManifest.js.map +1 -1
- package/lib/wallet-api/utils/extractURLFromManifest.js +1 -1
- package/lib/wallet-api/utils/extractURLFromManifest.js.map +1 -1
- package/lib-es/__tests__/test-helpers/environment.js +2 -0
- package/lib-es/__tests__/test-helpers/environment.js.map +1 -1
- package/lib-es/account/serialization.js +1 -1
- package/lib-es/account/serialization.js.map +1 -1
- package/lib-es/account/support.js +1 -1
- package/lib-es/account/support.js.map +1 -1
- package/lib-es/bridge/generic-alpaca/getAccountShape.d.ts.map +1 -1
- package/lib-es/bridge/generic-alpaca/getAccountShape.js +3 -2
- package/lib-es/bridge/generic-alpaca/getAccountShape.js.map +1 -1
- package/lib-es/bridge/generic-alpaca/prepareTransaction.d.ts.map +1 -1
- package/lib-es/bridge/generic-alpaca/prepareTransaction.js +7 -0
- package/lib-es/bridge/generic-alpaca/prepareTransaction.js.map +1 -1
- package/lib-es/domain/getTokensWithFunds.d.ts +7 -1
- package/lib-es/domain/getTokensWithFunds.d.ts.map +1 -1
- package/lib-es/domain/getTokensWithFunds.js +13 -3
- package/lib-es/domain/getTokensWithFunds.js.map +1 -1
- package/lib-es/domain/getTotalStakeableAssets.d.ts +10 -0
- package/lib-es/domain/getTotalStakeableAssets.d.ts.map +1 -0
- package/lib-es/domain/getTotalStakeableAssets.js +31 -0
- package/lib-es/domain/getTotalStakeableAssets.js.map +1 -0
- package/lib-es/e2e/index.d.ts +9 -0
- package/lib-es/e2e/index.d.ts.map +1 -1
- package/lib-es/exchange/swap/api/v5/fetchCurrencyFrom.js +1 -1
- package/lib-es/exchange/swap/api/v5/fetchCurrencyFrom.js.map +1 -1
- package/lib-es/exchange/swap/getIncompatibleCurrencyKeys.d.ts.map +1 -1
- package/lib-es/exchange/swap/getIncompatibleCurrencyKeys.js +4 -0
- package/lib-es/exchange/swap/getIncompatibleCurrencyKeys.js.map +1 -1
- package/lib-es/exchange/swap/transactionStrategies.d.ts +2 -1
- package/lib-es/exchange/swap/transactionStrategies.d.ts.map +1 -1
- package/lib-es/exchange/swap/transactionStrategies.js +7 -6
- package/lib-es/exchange/swap/transactionStrategies.js.map +1 -1
- package/lib-es/featureFlags/defaultFeatures.d.ts +2 -0
- package/lib-es/featureFlags/defaultFeatures.d.ts.map +1 -1
- package/lib-es/featureFlags/defaultFeatures.js +3 -0
- package/lib-es/featureFlags/defaultFeatures.js.map +1 -1
- package/lib-es/featureFlags/firebaseFeatureFlags.js +1 -1
- package/lib-es/featureFlags/firebaseFeatureFlags.js.map +1 -1
- package/lib-es/featureFlags/useFeature.d.ts +1 -1
- package/lib-es/featureFlags/useFeature.d.ts.map +1 -1
- package/lib-es/featureFlags/useHasOverriddenFeatureFlags.js +1 -1
- package/lib-es/featureFlags/useHasOverriddenFeatureFlags.js.map +1 -1
- package/lib-es/hw/getBitcoinLikeInfo.js +1 -1
- package/lib-es/hw/getBitcoinLikeInfo.js.map +1 -1
- package/lib-es/mock/account.js +1 -1
- package/lib-es/mock/account.js.map +1 -1
- package/lib-es/modularDrawer/hooks/useCurrenciesUnderFeatureFlag.d.ts.map +1 -1
- package/lib-es/modularDrawer/hooks/useCurrenciesUnderFeatureFlag.js +6 -0
- package/lib-es/modularDrawer/hooks/useCurrenciesUnderFeatureFlag.js.map +1 -1
- package/lib-es/wallet-api/Exchange/SwapError.d.ts +93 -0
- package/lib-es/wallet-api/Exchange/SwapError.d.ts.map +1 -0
- package/lib-es/wallet-api/Exchange/SwapError.js +128 -0
- package/lib-es/wallet-api/Exchange/SwapError.js.map +1 -0
- package/lib-es/wallet-api/Exchange/handleSwapErrors.d.ts +40 -0
- package/lib-es/wallet-api/Exchange/handleSwapErrors.d.ts.map +1 -0
- package/lib-es/wallet-api/Exchange/handleSwapErrors.js +106 -0
- package/lib-es/wallet-api/Exchange/handleSwapErrors.js.map +1 -0
- package/lib-es/wallet-api/Exchange/index.d.ts +4 -0
- package/lib-es/wallet-api/Exchange/index.d.ts.map +1 -0
- package/lib-es/wallet-api/Exchange/index.js +7 -0
- package/lib-es/wallet-api/Exchange/index.js.map +1 -0
- package/lib-es/wallet-api/Exchange/parser.d.ts +46 -0
- package/lib-es/wallet-api/Exchange/parser.d.ts.map +1 -0
- package/lib-es/wallet-api/Exchange/parser.js +90 -0
- package/lib-es/wallet-api/Exchange/parser.js.map +1 -0
- package/lib-es/wallet-api/Exchange/server.d.ts.map +1 -1
- package/lib-es/wallet-api/Exchange/server.js +223 -177
- package/lib-es/wallet-api/Exchange/server.js.map +1 -1
- package/lib-es/wallet-api/Exchange/tracking.d.ts +7 -6
- package/lib-es/wallet-api/Exchange/tracking.d.ts.map +1 -1
- package/lib-es/wallet-api/Exchange/tracking.js +52 -13
- package/lib-es/wallet-api/Exchange/tracking.js.map +1 -1
- package/lib-es/wallet-api/logic.d.ts +1 -1
- package/lib-es/wallet-api/logic.d.ts.map +1 -1
- package/lib-es/wallet-api/logic.js +5 -5
- package/lib-es/wallet-api/logic.js.map +1 -1
- package/lib-es/wallet-api/react.d.ts.map +1 -1
- package/lib-es/wallet-api/react.js +9 -6
- package/lib-es/wallet-api/react.js.map +1 -1
- package/lib-es/wallet-api/tracking.d.ts +5 -5
- package/lib-es/wallet-api/tracking.d.ts.map +1 -1
- package/lib-es/wallet-api/tracking.js +30 -10
- package/lib-es/wallet-api/tracking.js.map +1 -1
- package/lib-es/wallet-api/useDappLogic.d.ts.map +1 -1
- package/lib-es/wallet-api/useDappLogic.js +31 -20
- package/lib-es/wallet-api/useDappLogic.js.map +1 -1
- package/lib-es/wallet-api/utils/extractDappURLFromManifest.js +3 -3
- package/lib-es/wallet-api/utils/extractDappURLFromManifest.js.map +1 -1
- package/lib-es/wallet-api/utils/extractURLFromManifest.js +1 -1
- package/lib-es/wallet-api/utils/extractURLFromManifest.js.map +1 -1
- package/package.json +73 -73
- package/src/__tests__/test-helpers/environment.ts +2 -0
- package/src/account/serialization.ts +1 -1
- package/src/account/support.ts +1 -1
- package/src/bridge/generic-alpaca/getAccountShape.ts +4 -2
- package/src/bridge/generic-alpaca/prepareTransaction.ts +7 -0
- package/src/bridge/generic-alpaca/tests/prepareTransaction.test.ts +42 -0
- package/src/domain/getTokensWithFunds.ts +18 -5
- package/src/domain/getTotalStakeableAssets.test.ts +267 -0
- package/src/domain/getTotalStakeableAssets.ts +47 -0
- package/src/exchange/swap/api/v5/fetchCurrencyFrom.ts +1 -1
- package/src/exchange/swap/getIncompatibleCurrencyKeys.ts +4 -0
- package/src/exchange/swap/transactionStrategies.ts +8 -7
- package/src/featureFlags/defaultFeatures.ts +3 -0
- package/src/featureFlags/firebaseFeatureFlags.ts +1 -1
- package/src/featureFlags/useHasOverriddenFeatureFlags.ts +1 -1
- package/src/hw/getBitcoinLikeInfo.ts +1 -1
- package/src/mock/account.ts +1 -1
- package/src/modularDrawer/hooks/useCurrenciesUnderFeatureFlag.ts +6 -0
- package/src/wallet-api/Exchange/SwapError.test.ts +126 -0
- package/src/wallet-api/Exchange/SwapError.ts +159 -0
- package/src/wallet-api/Exchange/handleSwapErrors.test.ts +46 -0
- package/src/wallet-api/Exchange/handleSwapErrors.ts +161 -0
- package/src/wallet-api/Exchange/index.ts +26 -0
- package/src/wallet-api/Exchange/parser.test.ts +86 -0
- package/src/wallet-api/Exchange/parser.ts +119 -0
- package/src/wallet-api/Exchange/server.ts +287 -235
- package/src/wallet-api/Exchange/tracking.ts +56 -13
- package/src/wallet-api/logic.ts +5 -4
- package/src/wallet-api/react.ts +10 -5
- package/src/wallet-api/tracking.ts +30 -10
- package/src/wallet-api/useDappLogic.ts +32 -20
- package/src/wallet-api/utils/extractDappURLFromManifest.ts +3 -3
- package/src/wallet-api/utils/extractURLFromManifest.ts +1 -1
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getSwapCode = exports.isHandledError = exports.handleErrors = exports.CustomErrorType = exports.StepError = exports.createStepError = exports.CompleteExchangeError = exports.PayinExtraIdError = exports.UnknownAccountError = exports.ListCurrencyError = exports.ListAccountError = exports.NotEnoughFunds = exports.IgnoredSignatureStepError = exports.SignatureStepError = exports.PayloadStepError = exports.NonceStepError = exports.SwapError = void 0;
|
|
4
|
+
// Export all error classes
|
|
5
|
+
var SwapError_1 = require("./SwapError");
|
|
6
|
+
Object.defineProperty(exports, "SwapError", { enumerable: true, get: function () { return SwapError_1.SwapError; } });
|
|
7
|
+
Object.defineProperty(exports, "NonceStepError", { enumerable: true, get: function () { return SwapError_1.NonceStepError; } });
|
|
8
|
+
Object.defineProperty(exports, "PayloadStepError", { enumerable: true, get: function () { return SwapError_1.PayloadStepError; } });
|
|
9
|
+
Object.defineProperty(exports, "SignatureStepError", { enumerable: true, get: function () { return SwapError_1.SignatureStepError; } });
|
|
10
|
+
Object.defineProperty(exports, "IgnoredSignatureStepError", { enumerable: true, get: function () { return SwapError_1.IgnoredSignatureStepError; } });
|
|
11
|
+
Object.defineProperty(exports, "NotEnoughFunds", { enumerable: true, get: function () { return SwapError_1.NotEnoughFunds; } });
|
|
12
|
+
Object.defineProperty(exports, "ListAccountError", { enumerable: true, get: function () { return SwapError_1.ListAccountError; } });
|
|
13
|
+
Object.defineProperty(exports, "ListCurrencyError", { enumerable: true, get: function () { return SwapError_1.ListCurrencyError; } });
|
|
14
|
+
Object.defineProperty(exports, "UnknownAccountError", { enumerable: true, get: function () { return SwapError_1.UnknownAccountError; } });
|
|
15
|
+
Object.defineProperty(exports, "PayinExtraIdError", { enumerable: true, get: function () { return SwapError_1.PayinExtraIdError; } });
|
|
16
|
+
Object.defineProperty(exports, "CompleteExchangeError", { enumerable: true, get: function () { return SwapError_1.CompleteExchangeError; } });
|
|
17
|
+
// Export parser utilities
|
|
18
|
+
var parser_1 = require("./parser");
|
|
19
|
+
Object.defineProperty(exports, "createStepError", { enumerable: true, get: function () { return parser_1.createStepError; } });
|
|
20
|
+
Object.defineProperty(exports, "StepError", { enumerable: true, get: function () { return parser_1.StepError; } });
|
|
21
|
+
Object.defineProperty(exports, "CustomErrorType", { enumerable: true, get: function () { return parser_1.CustomErrorType; } });
|
|
22
|
+
// Export error handler
|
|
23
|
+
var handleSwapErrors_1 = require("./handleSwapErrors");
|
|
24
|
+
Object.defineProperty(exports, "handleErrors", { enumerable: true, get: function () { return handleSwapErrors_1.handleErrors; } });
|
|
25
|
+
Object.defineProperty(exports, "isHandledError", { enumerable: true, get: function () { return handleSwapErrors_1.isHandledError; } });
|
|
26
|
+
Object.defineProperty(exports, "getSwapCode", { enumerable: true, get: function () { return handleSwapErrors_1.getSwapCode; } });
|
|
27
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/wallet-api/Exchange/index.ts"],"names":[],"mappings":";;;AAAA,2BAA2B;AAC3B,yCAaqB;AAZnB,sGAAA,SAAS,OAAA;AACT,2GAAA,cAAc,OAAA;AACd,6GAAA,gBAAgB,OAAA;AAChB,+GAAA,kBAAkB,OAAA;AAClB,sHAAA,yBAAyB,OAAA;AACzB,2GAAA,cAAc,OAAA;AACd,6GAAA,gBAAgB,OAAA;AAChB,8GAAA,iBAAiB,OAAA;AACjB,gHAAA,mBAAmB,OAAA;AACnB,8GAAA,iBAAiB,OAAA;AACjB,kHAAA,qBAAqB,OAAA;AAIvB,0BAA0B;AAC1B,mCAAwF;AAA/E,yGAAA,eAAe,OAAA;AAAE,mGAAA,SAAS,OAAA;AAAE,yGAAA,eAAe,OAAA;AAEpD,uBAAuB;AACvB,uDAK4B;AAJ1B,gHAAA,YAAY,OAAA;AACZ,kHAAA,cAAc,OAAA;AACd,+GAAA,WAAW,OAAA"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Error Parser
|
|
3
|
+
* Routes errors to appropriate error classes based on step and context
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Transaction step where error occurred
|
|
7
|
+
*/
|
|
8
|
+
export declare enum StepError {
|
|
9
|
+
NONCE = "NonceStepError",
|
|
10
|
+
PAYLOAD = "PayloadStepError",
|
|
11
|
+
SIGNATURE = "SignatureStepError",
|
|
12
|
+
IGNORED_SIGNATURE = "IgnoredSignatureStepError",
|
|
13
|
+
CHECK_FUNDS = "CheckFundsStepError",
|
|
14
|
+
LIST_ACCOUNT = "ListAccountStepError",
|
|
15
|
+
LIST_CURRENCY = "ListCurrencyStepError",
|
|
16
|
+
UNKNOWN_ACCOUNT = "UnknownAccountStepError",
|
|
17
|
+
PAYIN_EXTRA_ID = "PayinExtraIdStepError"
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Input for error parsing
|
|
21
|
+
*/
|
|
22
|
+
export declare enum CustomErrorType {
|
|
23
|
+
SWAP = "swap"
|
|
24
|
+
}
|
|
25
|
+
export type ParseError = {
|
|
26
|
+
error: Error;
|
|
27
|
+
step?: StepError;
|
|
28
|
+
customErrorType?: CustomErrorType;
|
|
29
|
+
};
|
|
30
|
+
/**
|
|
31
|
+
* Creates a step-specific error by wrapping the original error
|
|
32
|
+
*
|
|
33
|
+
* @param error - Original error that occurred
|
|
34
|
+
* @param step - Step where error occurred (optional)
|
|
35
|
+
* @returns Wrapped error or original error if no step specified
|
|
36
|
+
*/
|
|
37
|
+
export declare function createStepError({ error, step }: ParseError): Error;
|
|
38
|
+
/**
|
|
39
|
+
* Parses an error to determine the correct error class to return based on the context.
|
|
40
|
+
*/
|
|
41
|
+
export declare function parseError({ error, step, customErrorType }: ParseError): Error;
|
|
42
|
+
export declare const hasMessage: (value: unknown) => value is {
|
|
43
|
+
message?: unknown;
|
|
44
|
+
};
|
|
45
|
+
export declare const toError: (value: unknown) => Error;
|
|
46
|
+
//# sourceMappingURL=parser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../../src/wallet-api/Exchange/parser.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAcH;;GAEG;AACH,oBAAY,SAAS;IACnB,KAAK,mBAAmB;IACxB,OAAO,qBAAqB;IAC5B,SAAS,uBAAuB;IAChC,iBAAiB,8BAA8B;IAC/C,WAAW,wBAAwB;IACnC,YAAY,yBAAyB;IACrC,aAAa,0BAA0B;IACvC,eAAe,4BAA4B;IAC3C,cAAc,0BAA0B;CACzC;AAED;;GAEG;AACH,oBAAY,eAAe;IACzB,IAAI,SAAS;CACd;AAED,MAAM,MAAM,UAAU,GAAG;IACvB,KAAK,EAAE,KAAK,CAAC;IACb,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,eAAe,CAAC,EAAE,eAAe,CAAC;CACnC,CAAC;AAiBF;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,UAAU,GAAG,KAAK,CAelE;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,eAAe,EAAE,EAAE,UAAU,GAAG,KAAK,CAM9E;AAED,eAAO,MAAM,UAAU,UAAW,OAAO;cAAwB,OAAO;CACL,CAAC;AAEpE,eAAO,MAAM,OAAO,UAAW,OAAO,KAAG,KAoBxC,CAAC"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Error Parser
|
|
4
|
+
* Routes errors to appropriate error classes based on step and context
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.toError = exports.hasMessage = exports.parseError = exports.createStepError = exports.CustomErrorType = exports.StepError = void 0;
|
|
8
|
+
const SwapError_1 = require("./SwapError");
|
|
9
|
+
/**
|
|
10
|
+
* Transaction step where error occurred
|
|
11
|
+
*/
|
|
12
|
+
var StepError;
|
|
13
|
+
(function (StepError) {
|
|
14
|
+
StepError["NONCE"] = "NonceStepError";
|
|
15
|
+
StepError["PAYLOAD"] = "PayloadStepError";
|
|
16
|
+
StepError["SIGNATURE"] = "SignatureStepError";
|
|
17
|
+
StepError["IGNORED_SIGNATURE"] = "IgnoredSignatureStepError";
|
|
18
|
+
StepError["CHECK_FUNDS"] = "CheckFundsStepError";
|
|
19
|
+
StepError["LIST_ACCOUNT"] = "ListAccountStepError";
|
|
20
|
+
StepError["LIST_CURRENCY"] = "ListCurrencyStepError";
|
|
21
|
+
StepError["UNKNOWN_ACCOUNT"] = "UnknownAccountStepError";
|
|
22
|
+
StepError["PAYIN_EXTRA_ID"] = "PayinExtraIdStepError";
|
|
23
|
+
})(StepError || (exports.StepError = StepError = {}));
|
|
24
|
+
/**
|
|
25
|
+
* Input for error parsing
|
|
26
|
+
*/
|
|
27
|
+
var CustomErrorType;
|
|
28
|
+
(function (CustomErrorType) {
|
|
29
|
+
CustomErrorType["SWAP"] = "swap";
|
|
30
|
+
})(CustomErrorType || (exports.CustomErrorType = CustomErrorType = {}));
|
|
31
|
+
/**
|
|
32
|
+
* Maps step errors to error constructors
|
|
33
|
+
*/
|
|
34
|
+
const ErrorMap = {
|
|
35
|
+
[StepError.NONCE]: SwapError_1.NonceStepError,
|
|
36
|
+
[StepError.PAYLOAD]: SwapError_1.PayloadStepError,
|
|
37
|
+
[StepError.SIGNATURE]: SwapError_1.SignatureStepError,
|
|
38
|
+
[StepError.IGNORED_SIGNATURE]: SwapError_1.IgnoredSignatureStepError,
|
|
39
|
+
[StepError.CHECK_FUNDS]: SwapError_1.NotEnoughFunds,
|
|
40
|
+
[StepError.LIST_ACCOUNT]: SwapError_1.ListAccountError,
|
|
41
|
+
[StepError.LIST_CURRENCY]: SwapError_1.ListCurrencyError,
|
|
42
|
+
[StepError.UNKNOWN_ACCOUNT]: SwapError_1.UnknownAccountError,
|
|
43
|
+
[StepError.PAYIN_EXTRA_ID]: SwapError_1.PayinExtraIdError,
|
|
44
|
+
};
|
|
45
|
+
/**
|
|
46
|
+
* Creates a step-specific error by wrapping the original error
|
|
47
|
+
*
|
|
48
|
+
* @param error - Original error that occurred
|
|
49
|
+
* @param step - Step where error occurred (optional)
|
|
50
|
+
* @returns Wrapped error or original error if no step specified
|
|
51
|
+
*/
|
|
52
|
+
function createStepError({ error, step }) {
|
|
53
|
+
// If no step specified, return original error
|
|
54
|
+
if (!step) {
|
|
55
|
+
return error;
|
|
56
|
+
}
|
|
57
|
+
// Get error constructor for this step
|
|
58
|
+
const ErrorConstructor = ErrorMap[step];
|
|
59
|
+
if (!ErrorConstructor) {
|
|
60
|
+
return error;
|
|
61
|
+
}
|
|
62
|
+
// Wrap original error in step-specific error class
|
|
63
|
+
return new ErrorConstructor(error);
|
|
64
|
+
}
|
|
65
|
+
exports.createStepError = createStepError;
|
|
66
|
+
/**
|
|
67
|
+
* Parses an error to determine the correct error class to return based on the context.
|
|
68
|
+
*/
|
|
69
|
+
function parseError({ error, step, customErrorType }) {
|
|
70
|
+
if (!step || customErrorType !== CustomErrorType.SWAP) {
|
|
71
|
+
return error;
|
|
72
|
+
}
|
|
73
|
+
return createStepError({ error, step });
|
|
74
|
+
}
|
|
75
|
+
exports.parseError = parseError;
|
|
76
|
+
const hasMessage = (value) => Boolean(value && typeof value === "object" && "message" in value);
|
|
77
|
+
exports.hasMessage = hasMessage;
|
|
78
|
+
const toError = (value) => {
|
|
79
|
+
if (value instanceof Error) {
|
|
80
|
+
return value;
|
|
81
|
+
}
|
|
82
|
+
if ((0, exports.hasMessage)(value) && typeof value.message === "string") {
|
|
83
|
+
return new Error(value.message);
|
|
84
|
+
}
|
|
85
|
+
return new Error(typeof value === "string"
|
|
86
|
+
? value
|
|
87
|
+
: (() => {
|
|
88
|
+
try {
|
|
89
|
+
return JSON.stringify(value);
|
|
90
|
+
}
|
|
91
|
+
catch {
|
|
92
|
+
return String(value);
|
|
93
|
+
}
|
|
94
|
+
})());
|
|
95
|
+
};
|
|
96
|
+
exports.toError = toError;
|
|
97
|
+
//# sourceMappingURL=parser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parser.js","sourceRoot":"","sources":["../../../src/wallet-api/Exchange/parser.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,2CAUqB;AAErB;;GAEG;AACH,IAAY,SAUX;AAVD,WAAY,SAAS;IACnB,qCAAwB,CAAA;IACxB,yCAA4B,CAAA;IAC5B,6CAAgC,CAAA;IAChC,4DAA+C,CAAA;IAC/C,gDAAmC,CAAA;IACnC,kDAAqC,CAAA;IACrC,oDAAuC,CAAA;IACvC,wDAA2C,CAAA;IAC3C,qDAAwC,CAAA;AAC1C,CAAC,EAVW,SAAS,yBAAT,SAAS,QAUpB;AAED;;GAEG;AACH,IAAY,eAEX;AAFD,WAAY,eAAe;IACzB,gCAAa,CAAA;AACf,CAAC,EAFW,eAAe,+BAAf,eAAe,QAE1B;AAQD;;GAEG;AACH,MAAM,QAAQ,GAAkD;IAC9D,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,0BAAc;IACjC,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,4BAAgB;IACrC,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,8BAAkB;IACzC,CAAC,SAAS,CAAC,iBAAiB,CAAC,EAAE,qCAAyB;IACxD,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,0BAAc;IACvC,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE,4BAAgB;IAC1C,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE,6BAAiB;IAC5C,CAAC,SAAS,CAAC,eAAe,CAAC,EAAE,+BAAmB;IAChD,CAAC,SAAS,CAAC,cAAc,CAAC,EAAE,6BAAiB;CAC9C,CAAC;AAEF;;;;;;GAMG;AACH,SAAgB,eAAe,CAAC,EAAE,KAAK,EAAE,IAAI,EAAc;IACzD,8CAA8C;IAC9C,IAAI,CAAC,IAAI,EAAE;QACT,OAAO,KAAK,CAAC;KACd;IAED,sCAAsC;IACtC,MAAM,gBAAgB,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAExC,IAAI,CAAC,gBAAgB,EAAE;QACrB,OAAO,KAAK,CAAC;KACd;IAED,mDAAmD;IACnD,OAAO,IAAI,gBAAgB,CAAC,KAAK,CAAC,CAAC;AACrC,CAAC;AAfD,0CAeC;AAED;;GAEG;AACH,SAAgB,UAAU,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,eAAe,EAAc;IACrE,IAAI,CAAC,IAAI,IAAI,eAAe,KAAK,eAAe,CAAC,IAAI,EAAE;QACrD,OAAO,KAAK,CAAC;KACd;IAED,OAAO,eAAe,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;AAC1C,CAAC;AAND,gCAMC;AAEM,MAAM,UAAU,GAAG,CAAC,KAAc,EAAkC,EAAE,CAC3E,OAAO,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,SAAS,IAAI,KAAK,CAAC,CAAC;AADvD,QAAA,UAAU,cAC6C;AAE7D,MAAM,OAAO,GAAG,CAAC,KAAc,EAAS,EAAE;IAC/C,IAAI,KAAK,YAAY,KAAK,EAAE;QAC1B,OAAO,KAAK,CAAC;KACd;IAED,IAAI,IAAA,kBAAU,EAAC,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ,EAAE;QAC1D,OAAO,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;KACjC;IAED,OAAO,IAAI,KAAK,CACd,OAAO,KAAK,KAAK,QAAQ;QACvB,CAAC,CAAC,KAAK;QACP,CAAC,CAAC,CAAC,GAAG,EAAE;YACJ,IAAI;gBACF,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;aAC9B;YAAC,MAAM;gBACN,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;aACtB;QACH,CAAC,CAAC,EAAE,CACT,CAAC;AACJ,CAAC,CAAC;AApBW,QAAA,OAAO,WAoBlB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../src/wallet-api/Exchange/server.ts"],"names":[],"mappings":"AASA,OAAO,EAAW,WAAW,EAAuC,MAAM,sBAAsB,CAAC;AAQjG,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EACtB,mBAAmB,EACnB,mBAAmB,EAInB,kBAAkB,EAClB,YAAY,EACZ,aAAa,EACb,UAAU,EACX,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAiB,UAAU,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAIzC,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAKpD,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAQvC,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../src/wallet-api/Exchange/server.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
2
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
6
|
exports.handlers = exports.ExchangeType = void 0;
|
|
4
7
|
/* eslint-disable no-console */
|
|
@@ -20,6 +23,9 @@ const error_2 = require("../../exchange/error");
|
|
|
20
23
|
const swap_1 = require("../../exchange/swap");
|
|
21
24
|
const setBroadcastTransaction_1 = require("../../exchange/swap/setBroadcastTransaction");
|
|
22
25
|
const hw_app_eth_1 = require("@ledgerhq/hw-app-eth");
|
|
26
|
+
const parser_1 = require("./parser");
|
|
27
|
+
const handleSwapErrors_1 = require("./handleSwapErrors");
|
|
28
|
+
const get_1 = __importDefault(require("lodash/get"));
|
|
23
29
|
const handlers = ({ accounts, tracking, manifest, uiHooks: { "custom.exchange.start": uiExchangeStart, "custom.exchange.complete": uiExchangeComplete, "custom.exchange.error": uiError, "custom.isReady": uiIsReady, "custom.exchange.swap": uiSwap, }, }) => ({
|
|
24
30
|
"custom.exchange.start": (0, wallet_api_server_1.customWrapper)(async (params) => {
|
|
25
31
|
if (!params) {
|
|
@@ -198,175 +204,219 @@ const handlers = ({ accounts, tracking, manifest, uiHooks: { "custom.exchange.st
|
|
|
198
204
|
}));
|
|
199
205
|
}),
|
|
200
206
|
"custom.exchange.swap": (0, wallet_api_server_1.customWrapper)(async (params) => {
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
207
|
+
try {
|
|
208
|
+
if (!params) {
|
|
209
|
+
tracking.startExchangeNoParams(manifest);
|
|
210
|
+
throw new wallet_api_core_1.ServerError((0, wallet_api_core_1.createUnknownError)({ message: "params is undefined" }));
|
|
211
|
+
}
|
|
212
|
+
const { provider, fromAmount, fromAmountAtomic, quoteId, toNewTokenId, customFeeConfig, swapAppVersion, sponsored, isEmbedded, } = params;
|
|
213
|
+
const trackingParams = {
|
|
214
|
+
provider: params.provider,
|
|
215
|
+
exchangeType: params.exchangeType,
|
|
216
|
+
isEmbeddedSwap: isEmbedded,
|
|
217
|
+
};
|
|
218
|
+
tracking.startExchangeRequested(trackingParams);
|
|
219
|
+
const exchangeStartParams = (await extractSwapStartParam(params, accounts));
|
|
220
|
+
const { fromCurrency, fromAccount, fromParentAccount, toCurrency, toAccount, toParentAccount, } = exchangeStartParams.exchange;
|
|
221
|
+
if (!fromAccount || !fromCurrency) {
|
|
222
|
+
throw new wallet_api_core_1.ServerError((0, wallet_api_core_1.createAccountNotFound)(params.fromAccountId));
|
|
223
|
+
}
|
|
224
|
+
const fromAccountAddress = fromParentAccount
|
|
225
|
+
? fromParentAccount.freshAddress
|
|
226
|
+
: fromAccount.freshAddress;
|
|
227
|
+
const toAccountAddress = toParentAccount
|
|
228
|
+
? toParentAccount.freshAddress
|
|
229
|
+
: toAccount.freshAddress;
|
|
230
|
+
// Step 1: Open the drawer and open exchange app
|
|
231
|
+
const startExchange = async () => {
|
|
232
|
+
return new Promise((resolve, reject) => {
|
|
233
|
+
uiExchangeStart({
|
|
234
|
+
exchangeParams: exchangeStartParams,
|
|
235
|
+
onSuccess: (nonce, device) => {
|
|
236
|
+
tracking.startExchangeSuccess(trackingParams);
|
|
237
|
+
resolve({ transactionId: nonce, device });
|
|
238
|
+
},
|
|
239
|
+
onCancel: error => {
|
|
240
|
+
tracking.startExchangeFail(trackingParams);
|
|
241
|
+
reject(error);
|
|
242
|
+
},
|
|
243
|
+
});
|
|
235
244
|
});
|
|
245
|
+
};
|
|
246
|
+
let transactionId;
|
|
247
|
+
let deviceInfo;
|
|
248
|
+
try {
|
|
249
|
+
const result = await startExchange();
|
|
250
|
+
transactionId = result.transactionId;
|
|
251
|
+
deviceInfo = result.device;
|
|
252
|
+
}
|
|
253
|
+
catch (error) {
|
|
254
|
+
const rawError = (0, get_1.default)(error, "response.data.error", error);
|
|
255
|
+
const wrappedError = (0, parser_1.createStepError)({
|
|
256
|
+
error: (0, parser_1.toError)(rawError),
|
|
257
|
+
step: parser_1.StepError.NONCE,
|
|
258
|
+
});
|
|
259
|
+
throw wrappedError;
|
|
260
|
+
}
|
|
261
|
+
const { binaryPayload, signature, payinAddress, swapId, payinExtraId, extraTransactionParameters, } = await (0, actions_1.retrieveSwapPayload)({
|
|
262
|
+
provider,
|
|
263
|
+
deviceTransactionId: transactionId,
|
|
264
|
+
fromAccountAddress,
|
|
265
|
+
toAccountAddress,
|
|
266
|
+
fromAccountCurrency: fromCurrency.id,
|
|
267
|
+
toAccountCurrency: toCurrency.id,
|
|
268
|
+
amount: fromAmount,
|
|
269
|
+
amountInAtomicUnit: fromAmountAtomic,
|
|
270
|
+
quoteId,
|
|
271
|
+
toNewTokenId,
|
|
272
|
+
}).catch((error) => {
|
|
273
|
+
const wrappedError = (0, parser_1.createStepError)({
|
|
274
|
+
error: (0, get_1.default)(error, "response.data.error", error),
|
|
275
|
+
step: parser_1.StepError.PAYLOAD,
|
|
276
|
+
});
|
|
277
|
+
throw wrappedError;
|
|
236
278
|
});
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
const { binaryPayload, signature, payinAddress, swapId, payinExtraId, extraTransactionParameters, } = await (0, actions_1.retrieveSwapPayload)({
|
|
240
|
-
provider,
|
|
241
|
-
deviceTransactionId: transactionId,
|
|
242
|
-
fromAccountAddress,
|
|
243
|
-
toAccountAddress,
|
|
244
|
-
fromAccountCurrency: fromCurrency.id,
|
|
245
|
-
toAccountCurrency: toCurrency.id,
|
|
246
|
-
amount: fromAmount,
|
|
247
|
-
amountInAtomicUnit: fromAmountAtomic,
|
|
248
|
-
quoteId,
|
|
249
|
-
toNewTokenId,
|
|
250
|
-
}).catch((error) => {
|
|
251
|
-
throw error;
|
|
252
|
-
});
|
|
253
|
-
// Complete Swap
|
|
254
|
-
const trackingCompleteParams = {
|
|
255
|
-
provider: params.provider,
|
|
256
|
-
exchangeType: params.exchangeType,
|
|
257
|
-
};
|
|
258
|
-
tracking.completeExchangeRequested(trackingCompleteParams);
|
|
259
|
-
const strategyData = {
|
|
260
|
-
recipient: payinAddress,
|
|
261
|
-
amount: fromAmountAtomic,
|
|
262
|
-
currency: fromCurrency,
|
|
263
|
-
customFeeConfig: customFeeConfig ?? {},
|
|
264
|
-
payinExtraId,
|
|
265
|
-
extraTransactionParameters,
|
|
266
|
-
sponsored,
|
|
267
|
-
};
|
|
268
|
-
const transaction = await getStrategy(strategyData, "swap").catch(async (error) => {
|
|
269
|
-
throw error;
|
|
270
|
-
});
|
|
271
|
-
const mainFromAccount = (0, index_1.getMainAccount)(fromAccount, fromParentAccount);
|
|
272
|
-
if (transaction.family !== mainFromAccount.currency.family) {
|
|
273
|
-
return Promise.reject(new Error(`Account and transaction must be from the same family. Account family: ${mainFromAccount.currency.family}, Transaction family: ${transaction.family}`));
|
|
274
|
-
}
|
|
275
|
-
const accountBridge = (0, bridge_1.getAccountBridge)(fromAccount, fromParentAccount);
|
|
276
|
-
/**
|
|
277
|
-
* 'subAccountId' is used for ETH and it's ERC-20 tokens.
|
|
278
|
-
* This field is ignored for BTC
|
|
279
|
-
*/
|
|
280
|
-
const subAccountId = fromParentAccount && fromParentAccount.id !== fromAccount.id ? fromAccount.id : undefined;
|
|
281
|
-
const bridgeTx = accountBridge.createTransaction(fromAccount);
|
|
282
|
-
/**
|
|
283
|
-
* We append the `recipient` to the tx created from `createTransaction`
|
|
284
|
-
* to avoid having userGasLimit reset to null for ETH txs
|
|
285
|
-
* cf. libs/ledger-live-common/src/families/ethereum/updateTransaction.ts
|
|
286
|
-
*/
|
|
287
|
-
const tx = accountBridge.updateTransaction({
|
|
288
|
-
...bridgeTx,
|
|
289
|
-
recipient: transaction.recipient,
|
|
290
|
-
}, {
|
|
291
|
-
...transaction,
|
|
292
|
-
feesStrategy: params.feeStrategy.toLowerCase(),
|
|
293
|
-
subAccountId,
|
|
294
|
-
});
|
|
295
|
-
// Get amountExpectedTo and magnitudeAwareRate from binary payload
|
|
296
|
-
const decodePayload = await (0, hw_app_exchange_1.decodeSwapPayload)(binaryPayload);
|
|
297
|
-
const amountExpectedTo = new bignumber_js_1.BigNumber(decodePayload.amountToWallet.toString());
|
|
298
|
-
const magnitudeAwareRate = tx.amount && amountExpectedTo.dividedBy(tx.amount);
|
|
299
|
-
const refundAddress = decodePayload.refundAddress;
|
|
300
|
-
const payoutAddress = decodePayload.payoutAddress;
|
|
301
|
-
// tx.amount should be BigNumber
|
|
302
|
-
tx.amount = new bignumber_js_1.BigNumber(tx.amount);
|
|
303
|
-
return new Promise((resolve, reject) => uiSwap({
|
|
304
|
-
exchangeParams: {
|
|
305
|
-
exchangeType: wallet_api_exchange_module_1.ExchangeType.SWAP,
|
|
279
|
+
// Complete Swap
|
|
280
|
+
const trackingCompleteParams = {
|
|
306
281
|
provider: params.provider,
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
feesStrategy: params.feeStrategy,
|
|
319
|
-
swapId: swapId,
|
|
320
|
-
amountExpectedTo: amountExpectedTo.toNumber(),
|
|
321
|
-
magnitudeAwareRate,
|
|
322
|
-
refundAddress,
|
|
323
|
-
payoutAddress,
|
|
282
|
+
exchangeType: params.exchangeType,
|
|
283
|
+
isEmbeddedSwap: isEmbedded,
|
|
284
|
+
};
|
|
285
|
+
tracking.completeExchangeRequested(trackingCompleteParams);
|
|
286
|
+
const strategyData = {
|
|
287
|
+
recipient: payinAddress,
|
|
288
|
+
amount: fromAmountAtomic,
|
|
289
|
+
currency: fromCurrency,
|
|
290
|
+
customFeeConfig: customFeeConfig ?? {},
|
|
291
|
+
payinExtraId,
|
|
292
|
+
extraTransactionParameters,
|
|
324
293
|
sponsored,
|
|
325
|
-
}
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
294
|
+
};
|
|
295
|
+
const transaction = await getStrategy(strategyData, "swap");
|
|
296
|
+
const mainFromAccount = (0, index_1.getMainAccount)(fromAccount, fromParentAccount);
|
|
297
|
+
if (transaction.family !== mainFromAccount.currency.family) {
|
|
298
|
+
return Promise.reject(new Error(`Account and transaction must be from the same family. Account family: ${mainFromAccount.currency.family}, Transaction family: ${transaction.family}`));
|
|
299
|
+
}
|
|
300
|
+
const accountBridge = (0, bridge_1.getAccountBridge)(fromAccount, fromParentAccount);
|
|
301
|
+
/**
|
|
302
|
+
* 'subAccountId' is used for ETH and it's ERC-20 tokens.
|
|
303
|
+
* This field is ignored for BTC
|
|
304
|
+
*/
|
|
305
|
+
const subAccountId = fromParentAccount && fromParentAccount.id !== fromAccount.id ? fromAccount.id : undefined;
|
|
306
|
+
const bridgeTx = accountBridge.createTransaction(fromAccount);
|
|
307
|
+
/**
|
|
308
|
+
* We append the `recipient` to the tx created from `createTransaction`
|
|
309
|
+
* to avoid having userGasLimit reset to null for ETH txs
|
|
310
|
+
* cf. libs/ledger-live-common/src/families/ethereum/updateTransaction.ts
|
|
311
|
+
*/
|
|
312
|
+
const tx = accountBridge.updateTransaction({
|
|
313
|
+
...bridgeTx,
|
|
314
|
+
recipient: transaction.recipient,
|
|
315
|
+
}, {
|
|
316
|
+
...transaction,
|
|
317
|
+
feesStrategy: params.feeStrategy.toLowerCase(),
|
|
318
|
+
subAccountId,
|
|
319
|
+
});
|
|
320
|
+
// Get amountExpectedTo and magnitudeAwareRate from binary payload
|
|
321
|
+
const decodePayload = await (0, hw_app_exchange_1.decodeSwapPayload)(binaryPayload);
|
|
322
|
+
const amountExpectedTo = new bignumber_js_1.BigNumber(decodePayload.amountToWallet.toString());
|
|
323
|
+
const magnitudeAwareRate = tx.amount && amountExpectedTo.dividedBy(tx.amount);
|
|
324
|
+
const refundAddress = decodePayload.refundAddress;
|
|
325
|
+
const payoutAddress = decodePayload.payoutAddress;
|
|
326
|
+
// tx.amount should be BigNumber
|
|
327
|
+
tx.amount = new bignumber_js_1.BigNumber(tx.amount);
|
|
328
|
+
return new Promise((resolve, reject) => uiSwap({
|
|
329
|
+
exchangeParams: {
|
|
330
|
+
exchangeType: wallet_api_exchange_module_1.ExchangeType.SWAP,
|
|
331
|
+
provider: params.provider,
|
|
332
|
+
transaction: tx,
|
|
333
|
+
signature: signature,
|
|
334
|
+
binaryPayload: binaryPayload,
|
|
335
|
+
exchange: {
|
|
336
|
+
fromAccount,
|
|
337
|
+
fromParentAccount,
|
|
338
|
+
toAccount,
|
|
339
|
+
toParentAccount,
|
|
340
|
+
fromCurrency: fromCurrency,
|
|
341
|
+
toCurrency: toCurrency,
|
|
342
|
+
},
|
|
343
|
+
feesStrategy: params.feeStrategy,
|
|
347
344
|
swapId: swapId,
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
errorMessage: error.message,
|
|
351
|
-
sourceCurrencyId: fromCurrency.id,
|
|
352
|
-
targetCurrencyId: toCurrency?.id,
|
|
353
|
-
hardwareWalletType: deviceInfo?.modelId,
|
|
354
|
-
swapType: quoteId ? "fixed" : "float",
|
|
355
|
-
swapAppVersion,
|
|
356
|
-
fromAccountAddress,
|
|
357
|
-
toAccountAddress,
|
|
345
|
+
amountExpectedTo: amountExpectedTo.toNumber(),
|
|
346
|
+
magnitudeAwareRate,
|
|
358
347
|
refundAddress,
|
|
359
348
|
payoutAddress,
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
:
|
|
349
|
+
sponsored,
|
|
350
|
+
},
|
|
351
|
+
onSuccess: ({ operationHash, swapId }) => {
|
|
352
|
+
tracking.completeExchangeSuccess({
|
|
353
|
+
...trackingParams,
|
|
354
|
+
currency: transaction.family,
|
|
355
|
+
});
|
|
356
|
+
(0, setBroadcastTransaction_1.setBroadcastTransaction)({
|
|
357
|
+
provider,
|
|
358
|
+
result: { operation: operationHash, swapId },
|
|
359
|
+
sourceCurrencyId: fromCurrency.id,
|
|
360
|
+
targetCurrencyId: toCurrency?.id,
|
|
361
|
+
hardwareWalletType: deviceInfo?.modelId,
|
|
362
|
+
swapAppVersion,
|
|
363
|
+
fromAccountAddress,
|
|
364
|
+
toAccountAddress,
|
|
365
|
+
fromAmount,
|
|
366
|
+
});
|
|
367
|
+
resolve({ operationHash, swapId });
|
|
368
|
+
},
|
|
369
|
+
onCancel: error => {
|
|
370
|
+
(0, swap_1.postSwapCancelled)({
|
|
371
|
+
provider: provider,
|
|
372
|
+
swapId: swapId,
|
|
373
|
+
swapStep: (0, error_2.getSwapStepFromError)(error),
|
|
374
|
+
statusCode: error.name,
|
|
375
|
+
errorMessage: error.message,
|
|
376
|
+
sourceCurrencyId: fromCurrency.id,
|
|
377
|
+
targetCurrencyId: toCurrency?.id,
|
|
378
|
+
hardwareWalletType: deviceInfo?.modelId,
|
|
379
|
+
swapType: quoteId ? "fixed" : "float",
|
|
380
|
+
swapAppVersion,
|
|
381
|
+
fromAccountAddress,
|
|
382
|
+
toAccountAddress,
|
|
383
|
+
refundAddress,
|
|
384
|
+
payoutAddress,
|
|
385
|
+
fromAmount,
|
|
386
|
+
seedIdFrom: mainFromAccount.seedIdentifier,
|
|
387
|
+
seedIdTo: toParentAccount?.seedIdentifier || toAccount?.seedIdentifier,
|
|
388
|
+
data: transaction.data
|
|
389
|
+
? `0x${(0, hw_app_eth_1.padHexString)(transaction.data?.toString("hex") || "")}`
|
|
390
|
+
: "0x",
|
|
391
|
+
});
|
|
392
|
+
reject((0, parser_1.createStepError)({ error, step: parser_1.StepError.SIGNATURE }));
|
|
393
|
+
},
|
|
394
|
+
}));
|
|
395
|
+
}
|
|
396
|
+
catch (error) {
|
|
397
|
+
// Skip DrawerClosedError
|
|
398
|
+
// do not redirect to the error screen
|
|
399
|
+
if (isDrawerClosedError(error)) {
|
|
400
|
+
throw error;
|
|
401
|
+
}
|
|
402
|
+
// Global catch for any errors during the swap process
|
|
403
|
+
// moved out as sonarcloud suggested to avoid 4 level nested functions
|
|
404
|
+
const createErrorRejector = (error, reject) => {
|
|
405
|
+
return () => reject(error);
|
|
406
|
+
};
|
|
407
|
+
const displayError = (error) => new Promise((resolve, reject) => {
|
|
408
|
+
const rejectWithError = createErrorRejector(error, reject);
|
|
409
|
+
uiError({
|
|
410
|
+
error,
|
|
411
|
+
onSuccess: rejectWithError,
|
|
412
|
+
onCancel: rejectWithError,
|
|
366
413
|
});
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
414
|
+
});
|
|
415
|
+
await (0, handleSwapErrors_1.handleErrors)(error, {
|
|
416
|
+
onDisplayError: displayError,
|
|
417
|
+
});
|
|
418
|
+
throw error;
|
|
419
|
+
}
|
|
370
420
|
}),
|
|
371
421
|
"custom.isReady": (0, wallet_api_server_1.customWrapper)(async () => {
|
|
372
422
|
return new Promise((resolve, reject) => uiIsReady({
|
|
@@ -511,21 +561,20 @@ async function getStrategy({ recipient, amount, currency, customFeeConfig, payin
|
|
|
511
561
|
convertedCustomFeeConfig[key] = new bignumber_js_1.BigNumber(value?.toString() || 0);
|
|
512
562
|
}
|
|
513
563
|
}
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
}
|
|
564
|
+
return strategy({
|
|
565
|
+
family,
|
|
566
|
+
amount: new bignumber_js_1.BigNumber(amount),
|
|
567
|
+
recipient,
|
|
568
|
+
customFeeConfig: convertedCustomFeeConfig,
|
|
569
|
+
payinExtraId,
|
|
570
|
+
extraTransactionParameters,
|
|
571
|
+
customErrorType,
|
|
572
|
+
sponsored,
|
|
573
|
+
});
|
|
574
|
+
}
|
|
575
|
+
function isDrawerClosedError(error) {
|
|
576
|
+
if (!error || typeof error !== "object")
|
|
577
|
+
return false;
|
|
578
|
+
return ((0, get_1.default)(error, "name") === "DrawerClosedError" || (0, get_1.default)(error, "cause.name") === "DrawerClosedError");
|
|
530
579
|
}
|
|
531
580
|
//# sourceMappingURL=server.js.map
|