tek-wallet 0.0.613 → 0.0.615
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/components/TekWallet/components/ui/ConfirmLayout/index.d.ts +1 -0
- package/dist/components/TekWallet/components/ui/ConfirmLayout/index.js +2 -2
- package/dist/components/TekWallet/components/ui/PageHeader/index.js +1 -1
- package/dist/components/TekWallet/components/ui/SwapToken/index.js +15 -10
- package/dist/components/TekWallet/layouts/ChildPageLayout/index.d.ts +6 -1
- package/dist/components/TekWallet/layouts/ChildPageLayout/index.js +9 -44
- package/dist/components/TekWallet/services/axios/send-external-service/type.d.ts +51 -0
- package/package.json +1 -1
|
@@ -10,6 +10,7 @@ export interface ConfirmLayoutProps extends DrawerComponentProps {
|
|
|
10
10
|
rightAdornment?: React.ReactNode;
|
|
11
11
|
};
|
|
12
12
|
isFlag?: boolean;
|
|
13
|
+
confirmAction?: React.ReactNode;
|
|
13
14
|
}
|
|
14
15
|
declare const ConfirmLayout: import("react").ForwardRefExoticComponent<Omit<ConfirmLayoutProps, "ref"> & import("react").RefAttributes<DrawerComponentRef>>;
|
|
15
16
|
export default ConfirmLayout;
|
|
@@ -70,7 +70,7 @@ var Icon_1 = __importDefault(require("../Icon"));
|
|
|
70
70
|
var ChildPageLayout_1 = __importDefault(require("../../../layouts/ChildPageLayout"));
|
|
71
71
|
var PageHeader_1 = __importDefault(require("../PageHeader"));
|
|
72
72
|
var ConfirmLayout = (0, react_1.forwardRef)(function (props, ref) {
|
|
73
|
-
var children = props.children, action = props.action, header = props.header, _a = props.isFlag, isFlag = _a === void 0 ? true : _a, rest = __rest(props, ["children", "action", "header", "isFlag"]);
|
|
73
|
+
var children = props.children, action = props.action, header = props.header, _a = props.isFlag, isFlag = _a === void 0 ? true : _a, confirmAction = props.confirmAction, rest = __rest(props, ["children", "action", "header", "isFlag", "confirmAction"]);
|
|
74
74
|
var theme = (0, material_1.useTheme)();
|
|
75
75
|
var confirmByPasscodeDrawerRef = (0, react_1.useRef)(null);
|
|
76
76
|
var handleOnClose = function () {
|
|
@@ -95,7 +95,7 @@ var ConfirmLayout = (0, react_1.forwardRef)(function (props, ref) {
|
|
|
95
95
|
(_a = confirmByPasscodeDrawerRef.current) === null || _a === void 0 ? void 0 : _a.unlockStatus();
|
|
96
96
|
},
|
|
97
97
|
}); });
|
|
98
|
-
return ((0, jsx_runtime_1.jsx)(DrawerComponent_1.default, __assign({ direction: DrawerComponent_1.DRAWER_DIRECTION.RIGHT, ref: confirmByPasscodeDrawerRef }, rest, { children: (0, jsx_runtime_1.jsx)(ChildPageLayout_1.default, { header: (0, jsx_runtime_1.jsx)(PageHeader_1.default, { title: action === type_1.TransactionSlug.Withdrawn ? "Confirm Transaction" : "Confirm deposit", overrideBack: handleOnClose, rightAdornment: header === null || header === void 0 ? void 0 : header.rightAdornment }), children: (0, jsx_runtime_1.jsxs)(material_1.Box, { sx: __assign(__assign({}, theme.mixins.column), { alignItems: "center", gap: theme.mixins.gaps.g16, padding: theme.mixins.customPadding.p16 }), children: [isFlag && ((0, jsx_runtime_1.jsxs)(material_1.Box, { sx: __assign(__assign({}, theme.mixins.column), { alignItems: "center", marginTop: theme.mixins.customMargin.m16, marginBottom: theme.mixins.customMargin.m12, gap: theme.mixins.gaps.g4 }), children: [(0, jsx_runtime_1.jsx)(Text_1.default, { sx: __assign(__assign({}, theme.mixins.sessionDescription), { textTransform: "capitalize" }), children: props.title }), (0, jsx_runtime_1.jsx)(Formatter_1.default, { value: props.transferAmount, sx: {
|
|
98
|
+
return ((0, jsx_runtime_1.jsx)(DrawerComponent_1.default, __assign({ direction: DrawerComponent_1.DRAWER_DIRECTION.RIGHT, ref: confirmByPasscodeDrawerRef }, rest, { children: (0, jsx_runtime_1.jsx)(ChildPageLayout_1.default, { header: (0, jsx_runtime_1.jsx)(PageHeader_1.default, { title: action === type_1.TransactionSlug.Withdrawn ? "Confirm Transaction" : "Confirm deposit", overrideBack: handleOnClose, rightAdornment: header === null || header === void 0 ? void 0 : header.rightAdornment }), footer: confirmAction, children: (0, jsx_runtime_1.jsxs)(material_1.Box, { sx: __assign(__assign({}, theme.mixins.column), { alignItems: "center", gap: theme.mixins.gaps.g16, padding: theme.mixins.customPadding.p16 }), children: [isFlag && ((0, jsx_runtime_1.jsxs)(material_1.Box, { sx: __assign(__assign({}, theme.mixins.column), { alignItems: "center", marginTop: theme.mixins.customMargin.m16, marginBottom: theme.mixins.customMargin.m12, gap: theme.mixins.gaps.g4 }), children: [(0, jsx_runtime_1.jsx)(Text_1.default, { sx: __assign(__assign({}, theme.mixins.sessionDescription), { textTransform: "capitalize" }), children: props.title }), (0, jsx_runtime_1.jsx)(Formatter_1.default, { value: props.transferAmount, sx: {
|
|
99
99
|
color: theme.palette.text.primary,
|
|
100
100
|
fontSize: theme.typography.fontSize24,
|
|
101
101
|
fontWeight: theme.typography.fontWeight600,
|
|
@@ -21,6 +21,6 @@ var BackHeader_1 = __importDefault(require("../BackHeader"));
|
|
|
21
21
|
var Text_1 = __importDefault(require("../Text"));
|
|
22
22
|
var PageHeader = function (props) {
|
|
23
23
|
var theme = (0, material_1.useTheme)();
|
|
24
|
-
return ((0, jsx_runtime_1.jsxs)(BackHeader_1.default, { overrideBack: props.overrideBack, sx: __assign({ display: "flex", alignItems: "center", justifyContent: "space-between", height: "100%", position: "relative", paddingLeft: theme.mixins.pagePadding.paddingLeft, paddingRight: theme.mixins.pagePadding.paddingRight }, props.sx), children: [(0, jsx_runtime_1.jsx)(Text_1.default, { sx: __assign(__assign({}, theme.mixins.headerTitle), theme.mixins.center), children: props.title }), props.rightAdornment && props.rightAdornment] }));
|
|
24
|
+
return ((0, jsx_runtime_1.jsxs)(BackHeader_1.default, { overrideBack: props.overrideBack, sx: __assign({ display: "flex", alignItems: "center", justifyContent: "space-between", height: "100%", position: "relative", paddingLeft: theme.mixins.pagePadding.paddingLeft, paddingRight: theme.mixins.pagePadding.paddingRight, minHeight: "3.125rem" }, props.sx), children: [(0, jsx_runtime_1.jsx)(Text_1.default, { sx: __assign(__assign({}, theme.mixins.headerTitle), theme.mixins.center), children: props.title }), props.rightAdornment && props.rightAdornment] }));
|
|
25
25
|
};
|
|
26
26
|
exports.default = PageHeader;
|
|
@@ -115,14 +115,14 @@ var transactionSlug = type_1.TransactionSlug.Swap;
|
|
|
115
115
|
var SwapToken = (0, react_1.forwardRef)(function (props, ref) {
|
|
116
116
|
var _a;
|
|
117
117
|
var theme = (0, material_1.useTheme)();
|
|
118
|
-
var
|
|
118
|
+
var _b = (0, useSwapData_1.default)(), fromTokens = _b.fromTokens, updateSwapTokens = _b.updateSwapTokens;
|
|
119
119
|
var isInitPasscode = (0, useWalletData_1.default)().isInitPasscode;
|
|
120
120
|
var confirmLayoutDrawerRef = (0, react_1.useRef)(null);
|
|
121
|
-
var
|
|
122
|
-
var
|
|
123
|
-
var
|
|
124
|
-
var
|
|
125
|
-
var
|
|
121
|
+
var _c = (0, react_1.useState)(undefined), error = _c[0], setError = _c[1];
|
|
122
|
+
var _d = (0, react_1.useState)(undefined), errorAmount = _d[0], setErrorAmount = _d[1];
|
|
123
|
+
var _e = (0, react_1.useState)(Button_1.BUTTON_STATUS.ENABLED), buttonStatus = _e[0], setButtonStatus = _e[1];
|
|
124
|
+
var _f = (0, react_1.useState)(props.initFeeData), estimateFee = _f[0], setEstimateFee = _f[1];
|
|
125
|
+
var _g = (0, react_1.useState)(false), isLoadingEstimateFee = _g[0], setIsLoadingEstimateFee = _g[1];
|
|
126
126
|
var activitiesRef = (0, react_1.useRef)(null);
|
|
127
127
|
var amount = props.sendData.amount;
|
|
128
128
|
var network = props.sendData.network;
|
|
@@ -259,10 +259,15 @@ var SwapToken = (0, react_1.forwardRef)(function (props, ref) {
|
|
|
259
259
|
return undefined;
|
|
260
260
|
return (+amount - +(estimateFee === null || estimateFee === void 0 ? void 0 : estimateFee.fee_in_currency)) / +(toToken === null || toToken === void 0 ? void 0 : toToken.usd_rate);
|
|
261
261
|
}, [estimateFee, toToken, amount]);
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
262
|
+
(0, react_1.useEffect)(function () {
|
|
263
|
+
if (isInitPasscode && !fromTokens) {
|
|
264
|
+
updateSwapTokens();
|
|
265
|
+
}
|
|
266
|
+
}, [isInitPasscode, fromTokens]);
|
|
267
|
+
return ((0, jsx_runtime_1.jsx)(RequireConnect_1.default, { children: (0, jsx_runtime_1.jsxs)(ConfirmLayout_1.default, { onOpen: validateAll, ref: confirmLayoutDrawerRef, action: transactionSlug, trigger: props.children, confirmAction: (0, jsx_runtime_1.jsx)(ConfirmByPasscode_1.default, { action: transactionSlug, onConfirmSuccess: handleSwapToken, children: (0, jsx_runtime_1.jsx)(Button_1.default.Primary, { status: !!error || isLoadingEstimateFee ? Button_1.BUTTON_STATUS.DISABLED : buttonStatus, sx: { width: "100%" }, children: "Confirm" }) }), children: [!!fromToken && !!toToken && ((0, jsx_runtime_1.jsx)(material_1.Box, { sx: __assign(__assign({}, theme.mixins.column), { gap: theme.mixins.gaps.g12 }), children: (0, jsx_runtime_1.jsxs)(material_1.Box, { sx: __assign({}, theme.mixins.paper), children: [(0, jsx_runtime_1.jsxs)(material_1.Box, { sx: __assign(__assign({}, theme.mixins.column), { alignItems: "start", gap: theme.mixins.gaps.g12 }), children: [(0, jsx_runtime_1.jsxs)(material_1.Box, { sx: __assign(__assign({}, theme.mixins.row), { gap: theme.mixins.gaps.g16, width: "100%" }), children: [(0, jsx_runtime_1.jsxs)(material_1.Box, { sx: __assign(__assign({}, theme.mixins.row), { gap: theme.mixins.gaps.g6 }), children: [(0, jsx_runtime_1.jsx)(Icon_1.default, { src: fromToken === null || fromToken === void 0 ? void 0 : fromToken.icon }), (0, jsx_runtime_1.jsx)(Text_1.default, { sx: __assign(__assign({}, theme.mixins.value), { fontWeight: theme.typography.fontWeight600 }), children: fromToken === null || fromToken === void 0 ? void 0 : fromToken.name })] }), (0, jsx_runtime_1.jsx)(Text_1.default, { sx: __assign(__assign({}, theme.mixins.bigValue), { ml: "auto" }), children: (0, jsx_runtime_1.jsx)(Formatter_1.default, { value: amount }) })] }), (0, jsx_runtime_1.jsx)(Icon_1.default, { src: (0, getIcon_1.default)("swap-one-direction"), width: 24 }), (0, jsx_runtime_1.jsxs)(material_1.Box, { sx: __assign(__assign({}, theme.mixins.row), { gap: theme.mixins.gaps.g16, width: "100%" }), children: [(0, jsx_runtime_1.jsxs)(material_1.Box, { sx: __assign(__assign({}, theme.mixins.row), { gap: theme.mixins.gaps.g6 }), children: [(0, jsx_runtime_1.jsx)(Icon_1.default, { src: toToken === null || toToken === void 0 ? void 0 : toToken.icon }), (0, jsx_runtime_1.jsx)(Text_1.default, { sx: __assign(__assign({}, theme.mixins.value), { fontWeight: theme.typography.fontWeight600 }), children: toToken === null || toToken === void 0 ? void 0 : toToken.name })] }), (0, jsx_runtime_1.jsx)(Text_1.default, { sx: __assign(__assign({}, theme.mixins.bigValue), { ml: "auto" }), children: (0, jsx_runtime_1.jsx)(Formatter_1.default, { value: toAmount }) })] })] }), (0, jsx_runtime_1.jsxs)(material_1.Box, { sx: __assign(__assign(__assign({}, theme.mixins.row), theme.mixins.valueDescription), { width: "100%", justifyContent: "center" }), children: ["1 ", fromToken === null || fromToken === void 0 ? void 0 : fromToken.name, " ~ ", (0, jsx_runtime_1.jsx)(Formatter_1.default, { value: 1 / +(toToken === null || toToken === void 0 ? void 0 : toToken.usd_rate) }), " ", toToken === null || toToken === void 0 ? void 0 : toToken.name] }), ((_a = estimateFee === null || estimateFee === void 0 ? void 0 : estimateFee.fee_detail) === null || _a === void 0 ? void 0 : _a.length) && !!amount && ((0, jsx_runtime_1.jsx)(Fees_1.default, { isFeePaidByAmount: true, feesData: JSON.stringify(estimateFee), amount: +amount, tokenSlug: fromTokenSlug })), !estimateFee && !!amount && isLoadingEstimateFee && ((0, jsx_runtime_1.jsxs)(material_1.Box, { sx: __assign(__assign({}, theme.mixins.row), { gap: theme.mixins.gaps.g8, width: "100%" }), children: [(0, jsx_runtime_1.jsx)(material_1.CircularProgress, { size: 16, sx: { color: theme.palette.text.white } }), (0, jsx_runtime_1.jsx)(Text_1.default, { sx: { color: "text.white" }, children: "Calculating fee" })] })), !!estimateReceive && !error && ((0, jsx_runtime_1.jsx)(LineValue_1.default, { field: (0, jsx_runtime_1.jsx)(Text_1.default, { sx: __assign({}, theme.mixins.value), children: "Receive amount estimated" }), value: (0, jsx_runtime_1.jsx)(Text_1.default, { sx: {
|
|
268
|
+
fontWeight: theme.typography.fontWeight600,
|
|
269
|
+
fontSize: theme.typography.fontSize16,
|
|
270
|
+
}, children: (0, jsx_runtime_1.jsx)(Formatter_1.default, { value: estimateReceive, unit: " ".concat(token === null || token === void 0 ? void 0 : token.name) }) }) })), !!error && ((0, jsx_runtime_1.jsxs)(Text_1.default, { sx: __assign(__assign({}, theme.mixins.validationError), { mt: theme.mixins.customMargin.m6 }), children: [error, " ", !!errorAmount && (0, jsx_runtime_1.jsx)(Formatter_1.default, { value: errorAmount, unit: " ".concat(token === null || token === void 0 ? void 0 : token.name) })] }))] }) })), (!fromToken || !toToken) && ((0, jsx_runtime_1.jsx)(material_1.Box, { sx: __assign(__assign({}, theme.mixins.paper), { alignItems: "center", justifyContent: "center" }), children: (0, jsx_runtime_1.jsx)(Text_1.default, { sx: __assign(__assign({}, theme.mixins.validationError), { fontSize: theme.typography.fontSize16 }), children: SwapTokenError.TOKEN_NOT_FOUND }) }))] }) }));
|
|
266
271
|
});
|
|
267
272
|
SwapToken.displayName = "SwapToken";
|
|
268
273
|
exports.default = SwapToken;
|
|
@@ -1,8 +1,13 @@
|
|
|
1
|
+
import { SxProps, Theme } from "@mui/material";
|
|
1
2
|
import { GeneralProps } from "../../types/ui";
|
|
2
|
-
interface ChildPageLayoutProps extends GeneralProps {
|
|
3
|
+
interface ChildPageLayoutProps extends Omit<GeneralProps, "sx"> {
|
|
3
4
|
header?: React.ReactNode;
|
|
4
5
|
footer?: React.ReactNode;
|
|
5
6
|
fullScreen?: boolean;
|
|
7
|
+
sx?: SxProps<Theme>;
|
|
8
|
+
sxHeader?: SxProps<Theme>;
|
|
9
|
+
sxContent?: SxProps<Theme>;
|
|
10
|
+
sxFooter?: SxProps<Theme>;
|
|
6
11
|
}
|
|
7
12
|
export type ChildPageLayoutRef = {
|
|
8
13
|
showNormal: () => void;
|
|
@@ -20,57 +20,22 @@ var StatusDisplay_1 = require("../../components/ui/StatusDisplay");
|
|
|
20
20
|
var StatusDisplay_2 = __importDefault(require("../../components/ui/StatusDisplay"));
|
|
21
21
|
var material_1 = require("@mui/material");
|
|
22
22
|
var ChildPageLayout = (0, react_1.forwardRef)(function (props, ref) {
|
|
23
|
-
var header = props.header, footer = props.footer,
|
|
23
|
+
var header = props.header, footer = props.footer, children = props.children, sx = props.sx, sxHeader = props.sxHeader, sxContent = props.sxContent, sxFooter = props.sxFooter;
|
|
24
24
|
var _a = (0, react_1.useState)(StatusDisplay_1.StatusDisplayType.Normal), status = _a[0], setStatus = _a[1];
|
|
25
25
|
var theme = (0, material_1.useTheme)();
|
|
26
|
-
(0, react_1.useImperativeHandle)(ref, function () {
|
|
27
|
-
return
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
},
|
|
34
|
-
showSuccess: function () {
|
|
35
|
-
setStatus(StatusDisplay_1.StatusDisplayType.Success);
|
|
36
|
-
},
|
|
37
|
-
showError: function () {
|
|
38
|
-
setStatus(StatusDisplay_1.StatusDisplayType.Error);
|
|
39
|
-
},
|
|
40
|
-
};
|
|
41
|
-
});
|
|
42
|
-
return ((0, jsx_runtime_1.jsxs)(material_1.Box, { sx: __assign({ position: "relative",
|
|
43
|
-
// backgroundImage: `url(${getImage("main_bg", "jpg")})`,
|
|
44
|
-
// backgroundSize: "cover",
|
|
45
|
-
// backgroundPosition: "center",
|
|
46
|
-
// backgroundRepeat: "no-repeat",
|
|
47
|
-
backgroundColor: theme.palette.background.white, height: "100dvh", width: "100vw" }, sx), children: [header && ((0, jsx_runtime_1.jsx)(material_1.Box, { sx: {
|
|
48
|
-
height: "3.125rem",
|
|
49
|
-
width: "100%",
|
|
50
|
-
position: "absolute",
|
|
51
|
-
top: 0,
|
|
52
|
-
left: 0,
|
|
53
|
-
zIndex: 50,
|
|
54
|
-
}, children: header })), (0, jsx_runtime_1.jsx)(material_1.Box, { sx: {
|
|
55
|
-
height: "100%",
|
|
56
|
-
width: "100%",
|
|
57
|
-
overflowX: "hidden",
|
|
58
|
-
overflowY: "auto",
|
|
59
|
-
paddingTop: header && !fullScreen ? "3.125rem" : 0,
|
|
60
|
-
}, children: children }), footer && ((0, jsx_runtime_1.jsx)(material_1.Box, { sx: {
|
|
61
|
-
height: "3rem",
|
|
62
|
-
width: "100%",
|
|
63
|
-
position: "absolute",
|
|
64
|
-
bottom: 0,
|
|
65
|
-
left: 0,
|
|
66
|
-
zIndex: 50,
|
|
67
|
-
}, children: footer })), status !== StatusDisplay_1.StatusDisplayType.Normal && ((0, jsx_runtime_1.jsx)(material_1.Box, { sx: {
|
|
26
|
+
(0, react_1.useImperativeHandle)(ref, function () { return ({
|
|
27
|
+
showNormal: function () { return setStatus(StatusDisplay_1.StatusDisplayType.Normal); },
|
|
28
|
+
showLoading: function () { return setStatus(StatusDisplay_1.StatusDisplayType.Loading); },
|
|
29
|
+
showSuccess: function () { return setStatus(StatusDisplay_1.StatusDisplayType.Success); },
|
|
30
|
+
showError: function () { return setStatus(StatusDisplay_1.StatusDisplayType.Error); },
|
|
31
|
+
}); });
|
|
32
|
+
return ((0, jsx_runtime_1.jsxs)(material_1.Box, { ref: ref, sx: __assign({ height: "100dvh", width: "100vw", display: "grid", gridTemplateRows: "auto 1fr auto", backgroundColor: theme.palette.background.white }, sx), children: [header && ((0, jsx_runtime_1.jsx)(material_1.Box, { sx: __assign({ width: "100%" }, sxHeader), children: header })), (0, jsx_runtime_1.jsx)(material_1.Box, { sx: __assign({ height: "100%", width: "100%", overflowX: "hidden", overflowY: "auto" }, sxContent), children: children }), footer && ((0, jsx_runtime_1.jsx)(material_1.Box, { sx: __assign({ width: "100%", display: "flex", alignItems: "center", justifyContent: "center", padding: theme.mixins.customPadding.p24 }, sxFooter), children: footer })), status !== StatusDisplay_1.StatusDisplayType.Normal && ((0, jsx_runtime_1.jsx)(material_1.Box, { sx: {
|
|
68
33
|
position: "absolute",
|
|
69
34
|
inset: 0,
|
|
70
35
|
display: "flex",
|
|
71
36
|
alignItems: "center",
|
|
72
37
|
justifyContent: "center",
|
|
73
|
-
backgroundColor: "
|
|
38
|
+
backgroundColor: "rgba(0,0,0,0.16)",
|
|
74
39
|
backdropFilter: "blur(4px)",
|
|
75
40
|
zIndex: 50,
|
|
76
41
|
}, children: (0, jsx_runtime_1.jsx)(StatusDisplay_2.default, { status: status }) }))] }));
|
|
@@ -12,5 +12,56 @@ export interface SendExternalBody {
|
|
|
12
12
|
export interface SendExternalResponse {
|
|
13
13
|
success: boolean;
|
|
14
14
|
message: string;
|
|
15
|
+
data: DataSendExternal;
|
|
15
16
|
timestamp: string;
|
|
16
17
|
}
|
|
18
|
+
interface DataSendExternal {
|
|
19
|
+
id: number;
|
|
20
|
+
transaction_type: string;
|
|
21
|
+
from_address: string;
|
|
22
|
+
to_address: string;
|
|
23
|
+
network: string;
|
|
24
|
+
currency_slug: string;
|
|
25
|
+
fee: string;
|
|
26
|
+
amount: string;
|
|
27
|
+
transaction_status: string;
|
|
28
|
+
user_created: string;
|
|
29
|
+
user_updated: string;
|
|
30
|
+
date_created: string;
|
|
31
|
+
date_updated: null;
|
|
32
|
+
description: null;
|
|
33
|
+
currency_usd_rate: null;
|
|
34
|
+
from_app_slug: string;
|
|
35
|
+
fee_info: Feeinfo;
|
|
36
|
+
order_id: null;
|
|
37
|
+
}
|
|
38
|
+
interface Feeinfo {
|
|
39
|
+
fee_detail: Feedetail[];
|
|
40
|
+
fee_in_currency: number;
|
|
41
|
+
fee_in_usd: number;
|
|
42
|
+
original_amount_in_currency: number;
|
|
43
|
+
original_amount_in_usd: number;
|
|
44
|
+
original_currency: string;
|
|
45
|
+
}
|
|
46
|
+
interface Feedetail {
|
|
47
|
+
currency: Currency;
|
|
48
|
+
fee_fixed: number;
|
|
49
|
+
fee_in_currency: number;
|
|
50
|
+
fee_in_usd: number;
|
|
51
|
+
fee_percent: number;
|
|
52
|
+
fee_type: Feetype;
|
|
53
|
+
}
|
|
54
|
+
interface Feetype {
|
|
55
|
+
name: string;
|
|
56
|
+
slug: string;
|
|
57
|
+
}
|
|
58
|
+
interface Currency {
|
|
59
|
+
full_name: string;
|
|
60
|
+
icon: string;
|
|
61
|
+
id: number;
|
|
62
|
+
link: string;
|
|
63
|
+
name: string;
|
|
64
|
+
slug: string;
|
|
65
|
+
usd_rate: number;
|
|
66
|
+
}
|
|
67
|
+
export {};
|