diff --git a/packages/snap/package.json b/packages/snap/package.json
index cf720da0..1ce605df 100644
--- a/packages/snap/package.json
+++ b/packages/snap/package.json
@@ -26,7 +26,7 @@
},
"dependencies": {
"@hathor/hathor-rpc-handler": "workspace:*",
- "@hathor/wallet-lib": "2.14.0",
+ "@hathor/wallet-lib": "2.16.0",
"@metamask/snaps-sdk": "9.2.0",
"node-stdlib-browser": "1.3.1"
},
diff --git a/packages/snap/snap.manifest.json b/packages/snap/snap.manifest.json
index b88d22b5..a1088043 100644
--- a/packages/snap/snap.manifest.json
+++ b/packages/snap/snap.manifest.json
@@ -3,7 +3,7 @@
"description": "Hathor Network Snap integration",
"proposedName": "Hathor Wallet",
"source": {
- "shasum": "GSxSmcmiD0HXf+qm3n/2QBYBgd+lt/2sxRwJxNoNVlc=",
+ "shasum": "zuKLrJeNvUp9ImMD6+3cJ8ShO6sN9CSWjwFrwwitSFc=",
"location": {
"npm": {
"filePath": "dist/bundle.js",
diff --git a/packages/snap/src/components/NetworkFee.tsx b/packages/snap/src/components/NetworkFee.tsx
new file mode 100644
index 00000000..2b3cfad2
--- /dev/null
+++ b/packages/snap/src/components/NetworkFee.tsx
@@ -0,0 +1,25 @@
+/**
+ * Copyright (c) Hathor Labs and its affiliates.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+import { Bold, Box, Divider, Text } from '@metamask/snaps-sdk/jsx';
+import { constants as libConstants, numberUtils } from '@hathor/wallet-lib';
+
+export const formatHtrAmount = (amount?: bigint): string => {
+ if (amount === undefined || amount === 0n) {
+ return '-';
+ }
+ return `${numberUtils.prettyValue(amount)} ${libConstants.DEFAULT_NATIVE_TOKEN_CONFIG.symbol}`;
+}
+
+export const NetworkFee = ({ networkFee, showDivider = false }: { networkFee?: bigint; showDivider?: boolean }) => {
+ return (
+
+ {showDivider ? : null}
+ Network fee: {formatHtrAmount(networkFee)}
+
+ );
+}
diff --git a/packages/snap/src/components/index.ts b/packages/snap/src/components/index.ts
index 1f126a27..64f60a51 100644
--- a/packages/snap/src/components/index.ts
+++ b/packages/snap/src/components/index.ts
@@ -6,3 +6,4 @@
*/
export { PushTxWarning } from './PushTxWarning';
+export { NetworkFee, formatHtrAmount } from './NetworkFee';
diff --git a/packages/snap/src/dialogs/createNano.tsx b/packages/snap/src/dialogs/createNano.tsx
index 3aed36a1..86a71b10 100644
--- a/packages/snap/src/dialogs/createNano.tsx
+++ b/packages/snap/src/dialogs/createNano.tsx
@@ -8,7 +8,7 @@
import { REQUEST_METHODS, DIALOG_TYPES } from '../constants';
import { Bold, Box, Card, Container, Copyable, Heading, Icon, Section, Text, Tooltip } from '@metamask/snaps-sdk/jsx';
import { constants as libConstants, bigIntUtils, dateUtils, NanoContractActionType, numberUtils } from '@hathor/wallet-lib';
-import { PushTxWarning } from '../components';
+import { NetworkFee, PushTxWarning } from '../components';
const renderOptionalContractDetail = (param, title) => {
if (!param) return null;
@@ -187,6 +187,7 @@ export const createNanoPage = async (data, params, origin) => (
{renderArguments(data.parsedArgs)}
{renderActions(params.actions, data.tokenDetails)}
+
diff --git a/packages/snap/src/dialogs/createToken.tsx b/packages/snap/src/dialogs/createToken.tsx
index 716c722c..d2808b5f 100644
--- a/packages/snap/src/dialogs/createToken.tsx
+++ b/packages/snap/src/dialogs/createToken.tsx
@@ -8,6 +8,7 @@
import { REQUEST_METHODS, DIALOG_TYPES } from '../constants';
import { Box, Card, Container, Divider, Heading, Section, Text } from '@metamask/snaps-sdk/jsx';
import { numberUtils } from '@hathor/wallet-lib';
+import { formatHtrAmount } from '../components';
const renderConditionalCard = (title, value, parsedValue = null) => {
if (value == null) {
@@ -21,8 +22,28 @@ const boolToString = (bool) => {
return bool ? 'true' : 'false';
}
-export const createTokenPage = async (data, params, origin) => (
- await snap.request({
+/**
+ * Get the fee model label based on token version
+ */
+const getFeeModelLabel = (version?: 'deposit' | 'fee'): string => {
+ switch (version) {
+ case 'fee':
+ return 'Fee Token';
+ case 'deposit':
+ default:
+ return 'Deposit Token';
+ }
+}
+
+export const createTokenPage = async (data, params, origin) => {
+ const amount = BigInt(params.amount);
+ const feeModelLabel = getFeeModelLabel(params.version);
+
+ // Use pre-calculated values from the RPC handler (passed via data)
+ const networkFee = data.fee;
+ const depositAmount = data.deposit;
+
+ return await snap.request({
method: REQUEST_METHODS.DIALOG,
params: {
type: DIALOG_TYPES.CONFIRMATION,
@@ -36,7 +57,11 @@ export const createTokenPage = async (data, params, origin) => (
-
+
+
+
+
+
{renderConditionalCard('Address', params.address)}
{renderConditionalCard('Change address', params.change_address)}
{renderConditionalCard('Create mint authority', params.create_mint, boolToString(params.create_mint))}
@@ -51,5 +76,5 @@ export const createTokenPage = async (data, params, origin) => (
),
},
- })
-)
+ });
+}
diff --git a/packages/snap/src/dialogs/sendTransaction.tsx b/packages/snap/src/dialogs/sendTransaction.tsx
index 948bc085..5eada513 100644
--- a/packages/snap/src/dialogs/sendTransaction.tsx
+++ b/packages/snap/src/dialogs/sendTransaction.tsx
@@ -8,7 +8,7 @@
import { REQUEST_METHODS, DIALOG_TYPES } from '../constants';
import { Bold, Box, Container, Divider, Heading, Icon, Section, Text, Tooltip } from '@metamask/snaps-sdk/jsx';
import { constants as libConstants, numberUtils, helpersUtils } from '@hathor/wallet-lib';
-import { PushTxWarning } from '../components';
+import { NetworkFee, PushTxWarning } from '../components';
const renderInputs = (inputs) => {
if (!inputs) {
@@ -122,6 +122,7 @@ export const sendTransactionPage = async (data, params, origin) => (
{renderOutputs(params.outputs, data.tokenDetails)}
{renderChangeAddress(params.changeAddress)}
+
@@ -129,4 +130,4 @@ export const sendTransactionPage = async (data, params, origin) => (
),
},
})
-)
\ No newline at end of file
+)
diff --git a/yarn.lock b/yarn.lock
index 60f4e075..5dc1bb4e 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -2507,7 +2507,7 @@ __metadata:
resolution: "@hathor/snap@workspace:packages/snap"
dependencies:
"@hathor/hathor-rpc-handler": "workspace:*"
- "@hathor/wallet-lib": "npm:2.14.0"
+ "@hathor/wallet-lib": "npm:2.16.0"
"@jest/globals": "npm:29.7.0"
"@metamask/auto-changelog": "npm:3.4.4"
"@metamask/eslint-config": "npm:12.2.0"