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