@metamask/snaps-simulation
Version:
A simulation framework for MetaMask Snaps, enabling headless testing of Snaps in a controlled environment
44 lines • 2.15 kB
JavaScript
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