UNPKG

@metamask/snaps-simulation

Version:

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

42 lines 2.56 kB
import type { Messenger } from "@metamask/base-controller"; import type { CaveatSpecificationConstraint, PermissionSpecificationConstraint, PermissionControllerActions, SubjectMetadataControllerActions } from "@metamask/permission-controller"; import { PermissionController, SubjectMetadataController } from "@metamask/permission-controller"; import { SnapInterfaceController } from "@metamask/snaps-controllers"; import type { ExecutionServiceActions, SnapInterfaceControllerActions, SnapInterfaceControllerAllowedActions, SnapInterfaceControllerStateChangeEvent } from "@metamask/snaps-controllers"; import type { SnapId } from "@metamask/snaps-sdk"; import type { SnapManifest } from "@metamask/snaps-utils"; import type { SimulationOptions } from "./options.mjs"; import type { RestrictedMiddlewareHooks } from "./simulation.mjs"; import type { RunSagaFunction } from "./store/index.mjs"; export type RootControllerAllowedActions = SnapInterfaceControllerActions | SnapInterfaceControllerAllowedActions | PermissionControllerActions | ExecutionServiceActions | SubjectMetadataControllerActions; export type RootControllerAllowedEvents = SnapInterfaceControllerStateChangeEvent; export type RootControllerMessenger = Messenger<RootControllerAllowedActions, RootControllerAllowedEvents>; export type GetControllersOptions = { controllerMessenger: Messenger<any, any>; hooks: RestrictedMiddlewareHooks; runSaga: RunSagaFunction; options: SimulationOptions; }; export type Controllers = { permissionController: PermissionController<PermissionSpecificationConstraint, CaveatSpecificationConstraint>; subjectMetadataController: SubjectMetadataController; interfaceController: SnapInterfaceController; }; /** * Get the controllers for the Snap. * * @param options - The options. * @returns The controllers for the Snap. */ export declare function getControllers(options: GetControllersOptions): Controllers; /** * Register the Snap. This sets up the Snap's permissions and subject metadata. * * @param snapId - The ID of the Snap to install. * @param manifest - The parsed manifest. * @param controllers - The controllers for the Snap. * @param controllers.permissionController - The permission controller. * @param controllers.subjectMetadataController - The subject metadata controller. */ export declare function registerSnap(snapId: SnapId, manifest: SnapManifest, { permissionController, subjectMetadataController, }: Omit<Controllers, 'interfaceController'>): Promise<void>; //# sourceMappingURL=controllers.d.mts.map