From c2d87d4ea52ce02c0fec867a06d0954e9a91050c Mon Sep 17 00:00:00 2001 From: Ulisses Ferreira Date: Thu, 27 Aug 2026 17:30:21 +0100 Subject: [PATCH] refactor(tron-wallet-snap): convert enums to `as const` objects Convert locally-declared TypeScript enums to `as const` objects with derived union types. BREAKING: Type signatures change - Enum is now a union of string/number literals instead of a nominal enum type. Runtime member access is unchanged. --- packages/tron-wallet-snap/snap.manifest.json | 2 +- .../tron-wallet-snap/src/constants/index.ts | 86 ++++++++++--------- .../tron-wallet-snap/src/entities/assets.ts | 27 +++--- .../src/handlers/clientRequest/types.ts | 51 ++++++----- .../src/handlers/cronjob/cronjob.tsx | 34 +++++--- .../src/handlers/keyring/keyring-types.ts | 11 ++- .../src/handlers/rpc/types.ts | 22 +++-- .../src/services/assets/AssetsService.test.ts | 21 +++-- .../confirmation/ConfirmationHandler.test.ts | 2 +- .../src/services/send/types.ts | 4 +- .../src/services/staking/StakingService.ts | 24 +++--- .../src/services/transaction-scan/types.ts | 36 +++++--- .../tron-wallet-snap/src/types/analytics.ts | 28 +++--- packages/tron-wallet-snap/src/types/snap.ts | 17 ++-- .../views/ConfirmSignMessage/events.tsx | 11 ++- .../views/ConfirmSignTransaction/events.tsx | 11 ++- .../ConfirmTransactionRequest/events.tsx | 11 ++- 17 files changed, 229 insertions(+), 169 deletions(-) diff --git a/packages/tron-wallet-snap/snap.manifest.json b/packages/tron-wallet-snap/snap.manifest.json index 900a30dfd..2ebc2a9f6 100644 --- a/packages/tron-wallet-snap/snap.manifest.json +++ b/packages/tron-wallet-snap/snap.manifest.json @@ -7,7 +7,7 @@ "url": "https://github.com/MetaMask/internal-snaps.git" }, "source": { - "shasum": "IlS8YzpfJun/5aMb6cYAIzKBcn3x9BjOMVYJUE9zFzo=", + "shasum": "glaFBmbkBLS+Kyce06loy6aDIpNwrx6Zyn2uxz0RUrI=", "location": { "npm": { "filePath": "dist/bundle.js", diff --git a/packages/tron-wallet-snap/src/constants/index.ts b/packages/tron-wallet-snap/src/constants/index.ts index bab7a8705..c7d762c47 100644 --- a/packages/tron-wallet-snap/src/constants/index.ts +++ b/packages/tron-wallet-snap/src/constants/index.ts @@ -50,70 +50,74 @@ export const FALLBACK_CREATE_ACCOUNT_FEE_SUN = 100_000; */ export const FALLBACK_CREATE_NEW_ACCOUNT_FEE_SUN = 1_000_000; -export enum Network { - Mainnet = 'tron:728126428', - Nile = 'tron:3448148188', - Shasta = 'tron:2494104990', -} +export const Network = { + Mainnet: 'tron:728126428', + Nile: 'tron:3448148188', + Shasta: 'tron:2494104990', +} as const; + +export type Network = (typeof Network)[keyof typeof Network]; -export enum KnownCaip19Id { - TrxMainnet = `${Network.Mainnet}/slip44:195`, - TrxNile = `${Network.Nile}/slip44:195`, - TrxShasta = `${Network.Shasta}/slip44:195`, +export const KnownCaip19Id = { + TrxMainnet: `${Network.Mainnet}/slip44:195`, + TrxNile: `${Network.Nile}/slip44:195`, + TrxShasta: `${Network.Shasta}/slip44:195`, - UsdtMainnet = `${Network.Mainnet}/trc20:TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t`, + UsdtMainnet: `${Network.Mainnet}/trc20:TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t`, /** * Staked Tron */ - TrxStakedForBandwidthMainnet = `${Network.Mainnet}/slip44:195-staked-for-bandwidth`, - TrxStakedForBandwidthNile = `${Network.Nile}/slip44:195-staked-for-bandwidth`, - TrxStakedForBandwidthShasta = `${Network.Shasta}/slip44:195-staked-for-bandwidth`, + TrxStakedForBandwidthMainnet: `${Network.Mainnet}/slip44:195-staked-for-bandwidth`, + TrxStakedForBandwidthNile: `${Network.Nile}/slip44:195-staked-for-bandwidth`, + TrxStakedForBandwidthShasta: `${Network.Shasta}/slip44:195-staked-for-bandwidth`, - TrxStakedForEnergyMainnet = `${Network.Mainnet}/slip44:195-staked-for-energy`, - TrxStakedForEnergyNile = `${Network.Nile}/slip44:195-staked-for-energy`, - TrxStakedForEnergyShasta = `${Network.Shasta}/slip44:195-staked-for-energy`, + TrxStakedForEnergyMainnet: `${Network.Mainnet}/slip44:195-staked-for-energy`, + TrxStakedForEnergyNile: `${Network.Nile}/slip44:195-staked-for-energy`, + TrxStakedForEnergyShasta: `${Network.Shasta}/slip44:195-staked-for-energy`, /** * TRX Ready for Withdrawal (unstaked TRX that has completed the withdrawal period) */ - TrxReadyForWithdrawalMainnet = `${Network.Mainnet}/slip44:195-ready-for-withdrawal`, - TrxReadyForWithdrawalNile = `${Network.Nile}/slip44:195-ready-for-withdrawal`, - TrxReadyForWithdrawalShasta = `${Network.Shasta}/slip44:195-ready-for-withdrawal`, + TrxReadyForWithdrawalMainnet: `${Network.Mainnet}/slip44:195-ready-for-withdrawal`, + TrxReadyForWithdrawalNile: `${Network.Nile}/slip44:195-ready-for-withdrawal`, + TrxReadyForWithdrawalShasta: `${Network.Shasta}/slip44:195-ready-for-withdrawal`, /** * Staking Rewards TRX */ - TrxStakingRewardsMainnet = `${Network.Mainnet}/slip44:195-staking-rewards`, - TrxStakingRewardsNile = `${Network.Nile}/slip44:195-staking-rewards`, - TrxStakingRewardsShasta = `${Network.Shasta}/slip44:195-staking-rewards`, + TrxStakingRewardsMainnet: `${Network.Mainnet}/slip44:195-staking-rewards`, + TrxStakingRewardsNile: `${Network.Nile}/slip44:195-staking-rewards`, + TrxStakingRewardsShasta: `${Network.Shasta}/slip44:195-staking-rewards`, /** * TRX in Lock Period (unstaked but waiting for lock period to end) */ - TrxInLockPeriodMainnet = `${Network.Mainnet}/slip44:195-in-lock-period`, - TrxInLockPeriodNile = `${Network.Nile}/slip44:195-in-lock-period`, - TrxInLockPeriodShasta = `${Network.Shasta}/slip44:195-in-lock-period`, + TrxInLockPeriodMainnet: `${Network.Mainnet}/slip44:195-in-lock-period`, + TrxInLockPeriodNile: `${Network.Nile}/slip44:195-in-lock-period`, + TrxInLockPeriodShasta: `${Network.Shasta}/slip44:195-in-lock-period`, /** * Tron Resource Assets */ - EnergyMainnet = `${Network.Mainnet}/slip44:energy`, - EnergyNile = `${Network.Nile}/slip44:energy`, - EnergyShasta = `${Network.Shasta}/slip44:energy`, - - MaximumEnergyMainnet = `${Network.Mainnet}/slip44:maximum-energy`, - MaximumEnergyNile = `${Network.Nile}/slip44:maximum-energy`, - MaximumEnergyShasta = `${Network.Shasta}/slip44:maximum-energy`, - - BandwidthMainnet = `${Network.Mainnet}/slip44:bandwidth`, - BandwidthNile = `${Network.Nile}/slip44:bandwidth`, - BandwidthShasta = `${Network.Shasta}/slip44:bandwidth`, - - MaximumBandwidthMainnet = `${Network.Mainnet}/slip44:maximum-bandwidth`, - MaximumBandwidthNile = `${Network.Nile}/slip44:maximum-bandwidth`, - MaximumBandwidthShasta = `${Network.Shasta}/slip44:maximum-bandwidth`, -} + EnergyMainnet: `${Network.Mainnet}/slip44:energy`, + EnergyNile: `${Network.Nile}/slip44:energy`, + EnergyShasta: `${Network.Shasta}/slip44:energy`, + + MaximumEnergyMainnet: `${Network.Mainnet}/slip44:maximum-energy`, + MaximumEnergyNile: `${Network.Nile}/slip44:maximum-energy`, + MaximumEnergyShasta: `${Network.Shasta}/slip44:maximum-energy`, + + BandwidthMainnet: `${Network.Mainnet}/slip44:bandwidth`, + BandwidthNile: `${Network.Nile}/slip44:bandwidth`, + BandwidthShasta: `${Network.Shasta}/slip44:bandwidth`, + + MaximumBandwidthMainnet: `${Network.Mainnet}/slip44:maximum-bandwidth`, + MaximumBandwidthNile: `${Network.Nile}/slip44:maximum-bandwidth`, + MaximumBandwidthShasta: `${Network.Shasta}/slip44:maximum-bandwidth`, +} as const; + +export type KnownCaip19Id = (typeof KnownCaip19Id)[keyof typeof KnownCaip19Id]; export const TRX_METADATA = { fungible: true as const, diff --git a/packages/tron-wallet-snap/src/entities/assets.ts b/packages/tron-wallet-snap/src/entities/assets.ts index 76d0e4d64..968a09264 100644 --- a/packages/tron-wallet-snap/src/entities/assets.ts +++ b/packages/tron-wallet-snap/src/entities/assets.ts @@ -1,4 +1,5 @@ -import type { KnownCaip19Id, Network } from '../constants'; +import { KnownCaip19Id } from '../constants'; +import type { Network } from '../constants'; import type { InLockPeriodCaipAssetType, NativeCaipAssetType, @@ -41,22 +42,22 @@ export type InLockPeriodAsset = BaseAsset & { export type ResourceAsset = BaseAsset & { assetType: - | KnownCaip19Id.EnergyMainnet - | KnownCaip19Id.EnergyNile - | KnownCaip19Id.EnergyShasta - | KnownCaip19Id.BandwidthMainnet - | KnownCaip19Id.BandwidthNile - | KnownCaip19Id.BandwidthShasta; + | typeof KnownCaip19Id.EnergyMainnet + | typeof KnownCaip19Id.EnergyNile + | typeof KnownCaip19Id.EnergyShasta + | typeof KnownCaip19Id.BandwidthMainnet + | typeof KnownCaip19Id.BandwidthNile + | typeof KnownCaip19Id.BandwidthShasta; }; export type MaximumResourceAsset = BaseAsset & { assetType: - | KnownCaip19Id.MaximumEnergyMainnet - | KnownCaip19Id.MaximumEnergyNile - | KnownCaip19Id.MaximumEnergyShasta - | KnownCaip19Id.MaximumBandwidthMainnet - | KnownCaip19Id.MaximumBandwidthNile - | KnownCaip19Id.MaximumBandwidthShasta; + | typeof KnownCaip19Id.MaximumEnergyMainnet + | typeof KnownCaip19Id.MaximumEnergyNile + | typeof KnownCaip19Id.MaximumEnergyShasta + | typeof KnownCaip19Id.MaximumBandwidthMainnet + | typeof KnownCaip19Id.MaximumBandwidthNile + | typeof KnownCaip19Id.MaximumBandwidthShasta; }; export type TokenAsset = BaseAsset & { diff --git a/packages/tron-wallet-snap/src/handlers/clientRequest/types.ts b/packages/tron-wallet-snap/src/handlers/clientRequest/types.ts index 52bfc5302..ad8523f70 100644 --- a/packages/tron-wallet-snap/src/handlers/clientRequest/types.ts +++ b/packages/tron-wallet-snap/src/handlers/clientRequest/types.ts @@ -1,36 +1,41 @@ -export enum ClientRequestMethod { - SignAndSendTransaction = 'signAndSendTransaction', +export const ClientRequestMethod = { + SignAndSendTransaction: 'signAndSendTransaction', /** * Unified non-EVM Send */ - ConfirmSend = 'confirmSend', - ComputeFee = 'computeFee', - OnAddressInput = 'onAddressInput', - OnAmountInput = 'onAmountInput', + ConfirmSend: 'confirmSend', + ComputeFee: 'computeFee', + OnAddressInput: 'onAddressInput', + OnAmountInput: 'onAmountInput', /** * Staking + Unstaking */ - ComputeStakeFee = 'computeStakeFee', - OnStakeAmountInput = 'onStakeAmountInput', - ConfirmStake = 'confirmStake', - OnUnstakeAmountInput = 'onUnstakeAmountInput', - ConfirmUnstake = 'confirmUnstake', - ClaimUnstakedTrx = 'claimUnstakedTrx', - ClaimTrxStakingRewards = 'claimTrxStakingRewards', + ComputeStakeFee: 'computeStakeFee', + OnStakeAmountInput: 'onStakeAmountInput', + ConfirmStake: 'confirmStake', + OnUnstakeAmountInput: 'onUnstakeAmountInput', + ConfirmUnstake: 'confirmUnstake', + ClaimUnstakedTrx: 'claimUnstakedTrx', + ClaimTrxStakingRewards: 'claimTrxStakingRewards', /** * Sign Rewards Message */ - SignRewardsMessage = 'signRewardsMessage', + SignRewardsMessage: 'signRewardsMessage', /** * Sign Proof of Ownership */ - SignProofOfOwnership = 'signProofOfOwnership', -} + SignProofOfOwnership: 'signProofOfOwnership', +} as const; -export enum SendErrorCodes { - // eslint-disable-next-line @typescript-eslint/no-shadow - Required = 'Required', - Invalid = 'Invalid', - InsufficientBalance = 'InsufficientBalance', - InsufficientBalanceToCoverFee = 'InsufficientBalanceToCoverFee', -} +export type ClientRequestMethod = + (typeof ClientRequestMethod)[keyof typeof ClientRequestMethod]; + +export const SendErrorCodes = { + Required: 'Required', + Invalid: 'Invalid', + InsufficientBalance: 'InsufficientBalance', + InsufficientBalanceToCoverFee: 'InsufficientBalanceToCoverFee', +} as const; + +export type SendErrorCodes = + (typeof SendErrorCodes)[keyof typeof SendErrorCodes]; diff --git a/packages/tron-wallet-snap/src/handlers/cronjob/cronjob.tsx b/packages/tron-wallet-snap/src/handlers/cronjob/cronjob.tsx index c9916179c..b3e75b3fe 100644 --- a/packages/tron-wallet-snap/src/handlers/cronjob/cronjob.tsx +++ b/packages/tron-wallet-snap/src/handlers/cronjob/cronjob.tsx @@ -24,20 +24,26 @@ import { ConfirmTransactionRequest } from '../../ui/confirmation/views/ConfirmTr import { CONFIRM_TRANSACTION_INTERFACE_NAME } from '../../ui/confirmation/views/ConfirmTransactionRequest/types'; import type { ConfirmTransactionRequestContext } from '../../ui/confirmation/views/ConfirmTransactionRequest/types'; -export enum CronjobMethod { - ContinuouslySynchronizeSelectedAccounts = 'onSynchronizeSelectedAccountsCronjob', -} - -export enum BackgroundEventMethod { - SynchronizeSelectedAccounts = 'onSynchronizeSelectedAccounts', - SynchronizeAccounts = 'onSynchronizeAccounts', - SynchronizeAccount = 'onSynchronizeAccount', - SynchronizeAccountTransactions = 'onSynchronizeAccountTransactions', - RefreshConfirmationPrices = 'refreshConfirmationPrices', - RefreshConfirmationSend = 'refreshConfirmationSend', - RefreshSignTransaction = 'refreshSignTransaction', - TrackTransaction = 'onTrackTransaction', -} +export const CronjobMethod = { + ContinuouslySynchronizeSelectedAccounts: + 'onSynchronizeSelectedAccountsCronjob', +} as const; + +export type CronjobMethod = (typeof CronjobMethod)[keyof typeof CronjobMethod]; + +export const BackgroundEventMethod = { + SynchronizeSelectedAccounts: 'onSynchronizeSelectedAccounts', + SynchronizeAccounts: 'onSynchronizeAccounts', + SynchronizeAccount: 'onSynchronizeAccount', + SynchronizeAccountTransactions: 'onSynchronizeAccountTransactions', + RefreshConfirmationPrices: 'refreshConfirmationPrices', + RefreshConfirmationSend: 'refreshConfirmationSend', + RefreshSignTransaction: 'refreshSignTransaction', + TrackTransaction: 'onTrackTransaction', +} as const; + +export type BackgroundEventMethod = + (typeof BackgroundEventMethod)[keyof typeof BackgroundEventMethod]; export class CronHandler { readonly #logger: Logger; diff --git a/packages/tron-wallet-snap/src/handlers/keyring/keyring-types.ts b/packages/tron-wallet-snap/src/handlers/keyring/keyring-types.ts index beab480aa..e1e7bcdac 100644 --- a/packages/tron-wallet-snap/src/handlers/keyring/keyring-types.ts +++ b/packages/tron-wallet-snap/src/handlers/keyring/keyring-types.ts @@ -1,10 +1,13 @@ /** * Enum for Tron Multichain API methods that are handled via submitRequest */ -export enum TronMultichainMethod { - SignMessage = 'signMessage', - SignTransaction = 'signTransaction', -} +export const TronMultichainMethod = { + SignMessage: 'signMessage', + SignTransaction: 'signTransaction', +} as const; + +export type TronMultichainMethod = + (typeof TronMultichainMethod)[keyof typeof TronMultichainMethod]; /** * Error codes for Tron Multichain API diff --git a/packages/tron-wallet-snap/src/handlers/rpc/types.ts b/packages/tron-wallet-snap/src/handlers/rpc/types.ts index fc88bc5ea..422352ef0 100644 --- a/packages/tron-wallet-snap/src/handlers/rpc/types.ts +++ b/packages/tron-wallet-snap/src/handlers/rpc/types.ts @@ -1,13 +1,19 @@ -export enum RpcRequestMethods { - OnStart = 'onStart', - OnInstall = 'onInstall', - OnUpdate = 'onUpdate', -} +export const RpcRequestMethods = { + OnStart: 'onStart', + OnInstall: 'onInstall', + OnUpdate: 'onUpdate', +} as const; + +export type RpcRequestMethods = + (typeof RpcRequestMethods)[keyof typeof RpcRequestMethods]; /** * Methods specific to the test dapp, * to allow specific flows for manual testing. */ -export enum TestDappRpcRequestMethod { - ComputeFee = 'computeFee', -} +export const TestDappRpcRequestMethod = { + ComputeFee: 'computeFee', +} as const; + +export type TestDappRpcRequestMethod = + (typeof TestDappRpcRequestMethod)[keyof typeof TestDappRpcRequestMethod]; diff --git a/packages/tron-wallet-snap/src/services/assets/AssetsService.test.ts b/packages/tron-wallet-snap/src/services/assets/AssetsService.test.ts index 3657af081..34d4a35ea 100644 --- a/packages/tron-wallet-snap/src/services/assets/AssetsService.test.ts +++ b/packages/tron-wallet-snap/src/services/assets/AssetsService.test.ts @@ -338,7 +338,8 @@ describe('AssetsService', () => { trc20Balances, ); - const trc20AssetId = `${String(Network.Mainnet)}/trc20:TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t`; + const trc20AssetId = + `${String(Network.Mainnet)}/trc20:TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t` as const; mockPriceApiClient.getMultipleSpotPrices.mockResolvedValue( createSpotPrices({ [trc20AssetId]: { id: trc20AssetId, price: 1.0 }, @@ -558,7 +559,8 @@ describe('AssetsService', () => { trc20Balances, ); - const trc20AssetId = `${String(Network.Mainnet)}/trc20:TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t`; + const trc20AssetId = + `${String(Network.Mainnet)}/trc20:TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t` as const; mockPriceApiClient.getMultipleSpotPrices.mockResolvedValue( createSpotPrices({ [trc20AssetId]: { id: trc20AssetId, price: 1.0 }, @@ -1564,7 +1566,8 @@ describe('AssetsService', () => { it('correctly updates non-essential assets with zero amounts', async () => { await withAssetsService(async ({ assetsService, mockState }) => { - const trc20AssetId = `${Network.Mainnet}/trc20:TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t`; + const trc20AssetId = + `${Network.Mainnet}/trc20:TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t` as const; const assets: AssetEntity[] = [ { assetType: KnownCaip19Id.TrxMainnet, @@ -1613,7 +1616,8 @@ describe('AssetsService', () => { it('updates stale non-essential assets balance to 0 if missed from the latest snapshot', async () => { await withAssetsService( async ({ assetsService, mockState, mockAssetsRepository }) => { - const trc20AssetId = `${Network.Mainnet}/trc20:TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t`; + const trc20AssetId = + `${Network.Mainnet}/trc20:TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t` as const; const savedAssets: AssetEntity[] = [ { assetType: KnownCaip19Id.TrxMainnet as NativeCaipAssetType, @@ -2038,7 +2042,8 @@ describe('AssetsService', () => { it('adds TRC20 token to the asset list when it updates from 0 to >0', async () => { await withAssetsService( async ({ assetsService, mockState, mockAssetsRepository }) => { - const trc20AssetId = `${Network.Mainnet}/trc20:TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t`; + const trc20AssetId = + `${Network.Mainnet}/trc20:TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t` as const; const savedAssets: AssetEntity[] = [ { @@ -2117,7 +2122,8 @@ describe('AssetsService', () => { it('handles multiple assets updating from 0 to >0 simultaneously', async () => { await withAssetsService( async ({ assetsService, mockState, mockAssetsRepository }) => { - const trc20AssetId = `${Network.Mainnet}/trc20:TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t`; + const trc20AssetId = + `${Network.Mainnet}/trc20:TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t` as const; const savedAssets: AssetEntity[] = [ { @@ -2509,7 +2515,8 @@ describe('AssetsService', () => { it('updates TRC20 token balance when it decreases but remains >0', async () => { await withAssetsService( async ({ assetsService, mockState, mockAssetsRepository }) => { - const trc20AssetId = `${Network.Mainnet}/trc20:TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t`; + const trc20AssetId = + `${Network.Mainnet}/trc20:TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t` as const; const savedAssets: AssetEntity[] = [ { diff --git a/packages/tron-wallet-snap/src/services/confirmation/ConfirmationHandler.test.ts b/packages/tron-wallet-snap/src/services/confirmation/ConfirmationHandler.test.ts index a93fbaffb..a6db9cfaf 100644 --- a/packages/tron-wallet-snap/src/services/confirmation/ConfirmationHandler.test.ts +++ b/packages/tron-wallet-snap/src/services/confirmation/ConfirmationHandler.test.ts @@ -360,7 +360,7 @@ describe('ConfirmationHandler', () => { it('sets iconUrl on each fee asset via getIconUrlForKnownAsset', async () => { await withConfirmationHandler( async ({ handler, mockFeeCalculatorService }) => { - const feeAssetType = `${Network.Mainnet}/slip44:195`; + const feeAssetType = `${Network.Mainnet}/slip44:195` as const; const feesWithIcon: ComputeFeeResult = [ { type: FeeType.Base, diff --git a/packages/tron-wallet-snap/src/services/send/types.ts b/packages/tron-wallet-snap/src/services/send/types.ts index b58ba2691..9f60ea225 100644 --- a/packages/tron-wallet-snap/src/services/send/types.ts +++ b/packages/tron-wallet-snap/src/services/send/types.ts @@ -38,8 +38,8 @@ export type ActivationAssessment = { }; export type SendValidationErrorCode = - | SendErrorCodes.InsufficientBalance - | SendErrorCodes.InsufficientBalanceToCoverFee; + | (typeof SendErrorCodes)['InsufficientBalance'] + | (typeof SendErrorCodes)['InsufficientBalanceToCoverFee']; export type SendValidationResult = { valid: boolean; diff --git a/packages/tron-wallet-snap/src/services/staking/StakingService.ts b/packages/tron-wallet-snap/src/services/staking/StakingService.ts index 787e8f397..83597ddf7 100644 --- a/packages/tron-wallet-snap/src/services/staking/StakingService.ts +++ b/packages/tron-wallet-snap/src/services/staking/StakingService.ts @@ -102,21 +102,25 @@ export class StakingService { let purpose: TronwebTypes.Resource | undefined; if ( - [ - KnownCaip19Id.TrxStakedForBandwidthMainnet, - KnownCaip19Id.TrxStakedForBandwidthNile, - KnownCaip19Id.TrxStakedForBandwidthShasta, - ].includes(assetId as KnownCaip19Id) + ( + [ + KnownCaip19Id.TrxStakedForBandwidthMainnet, + KnownCaip19Id.TrxStakedForBandwidthNile, + KnownCaip19Id.TrxStakedForBandwidthShasta, + ] as readonly KnownCaip19Id[] + ).includes(assetId as KnownCaip19Id) ) { purpose = 'BANDWIDTH'; } if ( - [ - KnownCaip19Id.TrxStakedForEnergyMainnet, - KnownCaip19Id.TrxStakedForEnergyNile, - KnownCaip19Id.TrxStakedForEnergyShasta, - ].includes(assetId as KnownCaip19Id) + ( + [ + KnownCaip19Id.TrxStakedForEnergyMainnet, + KnownCaip19Id.TrxStakedForEnergyNile, + KnownCaip19Id.TrxStakedForEnergyShasta, + ] as readonly KnownCaip19Id[] + ).includes(assetId as KnownCaip19Id) ) { purpose = 'ENERGY'; } diff --git a/packages/tron-wallet-snap/src/services/transaction-scan/types.ts b/packages/tron-wallet-snap/src/services/transaction-scan/types.ts index 19588d6f8..83ac2d51d 100644 --- a/packages/tron-wallet-snap/src/services/transaction-scan/types.ts +++ b/packages/tron-wallet-snap/src/services/transaction-scan/types.ts @@ -25,11 +25,14 @@ export type TransactionScanError = { message: string | null; }; -export enum SimulationStatus { - Completed = 'COMPLETED', - Skipped = 'SKIPPED', - Failed = 'FAILED', -} +export const SimulationStatus = { + Completed: 'COMPLETED', + Skipped: 'SKIPPED', + Failed: 'FAILED', +} as const; + +export type SimulationStatus = + (typeof SimulationStatus)[keyof typeof SimulationStatus]; export type TransactionScanResult = { status: TransactionScanStatus; @@ -39,13 +42,18 @@ export type TransactionScanResult = { simulationStatus: SimulationStatus; }; -export enum SecurityAlertResponse { - Benign = 'Benign', - Warning = 'Warning', - Malicious = 'Malicious', -} +export const SecurityAlertResponse = { + Benign: 'Benign', + Warning: 'Warning', + Malicious: 'Malicious', +} as const; + +export type SecurityAlertResponse = + (typeof SecurityAlertResponse)[keyof typeof SecurityAlertResponse]; + +export const ScanStatus = { + SUCCESS: 'SUCCESS', + ERROR: 'ERROR', +} as const; -export enum ScanStatus { - SUCCESS = 'SUCCESS', - ERROR = 'ERROR', -} +export type ScanStatus = (typeof ScanStatus)[keyof typeof ScanStatus]; diff --git a/packages/tron-wallet-snap/src/types/analytics.ts b/packages/tron-wallet-snap/src/types/analytics.ts index 75ad29a8f..f5328d876 100644 --- a/packages/tron-wallet-snap/src/types/analytics.ts +++ b/packages/tron-wallet-snap/src/types/analytics.ts @@ -1,18 +1,24 @@ /** * Enum for transaction tracking event types. */ -export enum TransactionEventType { - TransactionAdded = 'Transaction Added', - TransactionRejected = 'Transaction Rejected', - TransactionApproved = 'Transaction Approved', - TransactionSubmitted = 'Transaction Submitted', - TransactionFinalized = 'Transaction Finalized', -} +export const TransactionEventType = { + TransactionAdded: 'Transaction Added', + TransactionRejected: 'Transaction Rejected', + TransactionApproved: 'Transaction Approved', + TransactionSubmitted: 'Transaction Submitted', + TransactionFinalized: 'Transaction Finalized', +} as const; + +export type TransactionEventType = + (typeof TransactionEventType)[keyof typeof TransactionEventType]; /** * Enum for security alert tracking event types. */ -export enum SecurityEventType { - SecurityAlertDetected = 'Security Alert Detected', - SecurityScanCompleted = 'Security Scan Completed', -} +export const SecurityEventType = { + SecurityAlertDetected: 'Security Alert Detected', + SecurityScanCompleted: 'Security Scan Completed', +} as const; + +export type SecurityEventType = + (typeof SecurityEventType)[keyof typeof SecurityEventType]; diff --git a/packages/tron-wallet-snap/src/types/snap.ts b/packages/tron-wallet-snap/src/types/snap.ts index be822b79d..b454c7eb2 100644 --- a/packages/tron-wallet-snap/src/types/snap.ts +++ b/packages/tron-wallet-snap/src/types/snap.ts @@ -13,13 +13,14 @@ export type Preferences = { useNftDetection: boolean; }; -export enum FetchStatus { - Initial = 'initial', +export const FetchStatus = { + Initial: 'initial', // Loading: Before and during first fetch. - Loading = 'loading', + Loading: 'loading', // Fetching: During 2nd and nth fetch. - Fetching = 'fetching', - Fetched = 'fetched', - // eslint-disable-next-line @typescript-eslint/no-shadow - Error = 'error', -} + Fetching: 'fetching', + Fetched: 'fetched', + Error: 'error', +} as const; + +export type FetchStatus = (typeof FetchStatus)[keyof typeof FetchStatus]; diff --git a/packages/tron-wallet-snap/src/ui/confirmation/views/ConfirmSignMessage/events.tsx b/packages/tron-wallet-snap/src/ui/confirmation/views/ConfirmSignMessage/events.tsx index 7c187d7a6..a2ba7fa27 100644 --- a/packages/tron-wallet-snap/src/ui/confirmation/views/ConfirmSignMessage/events.tsx +++ b/packages/tron-wallet-snap/src/ui/confirmation/views/ConfirmSignMessage/events.tsx @@ -32,10 +32,13 @@ async function onConfirmButtonClick( await snapClient.resolveInterface(id, true); } -export enum ConfirmSignMessageFormNames { - Cancel = 'confirm-sign-message-cancel', - Confirm = 'confirm-sign-message-confirm', -} +export const ConfirmSignMessageFormNames = { + Cancel: 'confirm-sign-message-cancel', + Confirm: 'confirm-sign-message-confirm', +} as const; + +export type ConfirmSignMessageFormNames = + (typeof ConfirmSignMessageFormNames)[keyof typeof ConfirmSignMessageFormNames]; /** * Create event handlers bound to a SnapClient instance. diff --git a/packages/tron-wallet-snap/src/ui/confirmation/views/ConfirmSignTransaction/events.tsx b/packages/tron-wallet-snap/src/ui/confirmation/views/ConfirmSignTransaction/events.tsx index ea574542e..2cb94223c 100644 --- a/packages/tron-wallet-snap/src/ui/confirmation/views/ConfirmSignTransaction/events.tsx +++ b/packages/tron-wallet-snap/src/ui/confirmation/views/ConfirmSignTransaction/events.tsx @@ -30,10 +30,13 @@ async function onConfirmButtonClick( await snapClient.resolveInterface(id, true); } -export enum ConfirmSignTransactionFormNames { - Cancel = 'confirm-sign-transaction-cancel', - Confirm = 'confirm-sign-transaction-confirm', -} +export const ConfirmSignTransactionFormNames = { + Cancel: 'confirm-sign-transaction-cancel', + Confirm: 'confirm-sign-transaction-confirm', +} as const; + +export type ConfirmSignTransactionFormNames = + (typeof ConfirmSignTransactionFormNames)[keyof typeof ConfirmSignTransactionFormNames]; /** * Create event handlers bound to a SnapClient instance. diff --git a/packages/tron-wallet-snap/src/ui/confirmation/views/ConfirmTransactionRequest/events.tsx b/packages/tron-wallet-snap/src/ui/confirmation/views/ConfirmTransactionRequest/events.tsx index 1ffcf8382..f447fa61c 100644 --- a/packages/tron-wallet-snap/src/ui/confirmation/views/ConfirmTransactionRequest/events.tsx +++ b/packages/tron-wallet-snap/src/ui/confirmation/views/ConfirmTransactionRequest/events.tsx @@ -30,10 +30,13 @@ async function onConfirmButtonClick( await snapClient.resolveInterface(id, true); } -export enum ConfirmSignAndSendTransactionFormNames { - Cancel = 'confirm-sign-and-send-transaction-cancel', - Confirm = 'confirm-sign-and-send-transaction-confirm', -} +export const ConfirmSignAndSendTransactionFormNames = { + Cancel: 'confirm-sign-and-send-transaction-cancel', + Confirm: 'confirm-sign-and-send-transaction-confirm', +} as const; + +export type ConfirmSignAndSendTransactionFormNames = + (typeof ConfirmSignAndSendTransactionFormNames)[keyof typeof ConfirmSignAndSendTransactionFormNames]; /** * Create event handlers bound to a SnapClient instance.