UNPKG

@metamask/snaps-simulation

Version:

A simulation framework for MetaMask Snaps, enabling headless testing of Snaps in a controlled environment

44 lines 2.15 kB
import { array, boolean, create, defaulted, nullable, object, optional, record, string } from "@metamask/superstruct"; import { CaipAssetTypeStruct, CaipChainIdStruct, JsonStruct } from "@metamask/utils"; import { DEFAULT_ACCOUNTS, DEFAULT_ASSETS, DEFAULT_CURRENCY, DEFAULT_LOCALE, DEFAULT_SRP } from "./constants.mjs"; const SimulationAccountStruct = object({ address: string(), id: string(), scopes: array(CaipChainIdStruct), selected: defaulted(optional(boolean()), false), owned: defaulted(optional(boolean()), false), assets: defaulted(optional(array(CaipAssetTypeStruct)), []), }); const SimulationAssetStruct = object({ name: string(), symbol: string(), }); const SimulationOptionsStruct = object({ currency: defaulted(optional(string()), DEFAULT_CURRENCY), secretRecoveryPhrase: defaulted(optional(string()), DEFAULT_SRP), locale: defaulted(optional(string()), DEFAULT_LOCALE), state: defaulted(optional(nullable(record(string(), JsonStruct))), null), unencryptedState: defaulted(optional(nullable(record(string(), JsonStruct))), null), accounts: defaulted(optional(array(SimulationAccountStruct)), DEFAULT_ACCOUNTS), assets: defaulted(optional(record(CaipAssetTypeStruct, SimulationAssetStruct)), DEFAULT_ASSETS), hideBalances: defaulted(optional(boolean()), false), useSecurityAlerts: defaulted(optional(boolean()), true), simulateOnChainActions: defaulted(optional(boolean()), true), useTokenDetection: defaulted(optional(boolean()), true), batchCheckBalances: defaulted(optional(boolean()), true), displayNftMedia: defaulted(optional(boolean()), true), useNftDetection: defaulted(optional(boolean()), true), useExternalPricingData: defaulted(optional(boolean()), true), showTestnets: defaulted(optional(boolean()), true), }); /** * Get the options for the simulation. * * @param options - The user options. Any options not specified will be filled * in with default values. * @returns The simulation options. */ export function getOptions(options) { return create(options, SimulationOptionsStruct); } //# sourceMappingURL=options.mjs.map