UNPKG

@metamask/snaps-rpc-methods

Version:
383 lines 25.3 kB
import type { PermissionSpecificationBuilder, RestrictedMethodOptions, ValidPermissionSpecification } from "@metamask/permission-controller"; import { PermissionType } from "@metamask/permission-controller"; import type { NotifyParams, NotifyResult, InterfaceContext, ComponentOrElement } from "@metamask/snaps-sdk"; import { ContentType } from "@metamask/snaps-sdk"; import type { InferMatching, Snap } from "@metamask/snaps-utils"; import type { NonEmptyArray } from "@metamask/utils"; import { type MethodHooksObject } from "../utils.mjs"; declare const methodName = "snap_notify"; declare const NotificationParametersStruct: import("@metamask/superstruct").Struct<{ message: string; type: "native"; } | { message: string; type: "inApp"; } | { message: string; type: "inApp"; title: string; content: import("@metamask/snaps-sdk").Panel | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").AccountSelectorProps, "AccountSelector"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").AddressInputProps, "AddressInput"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").AssetSelectorProps, "AssetSelector"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").ButtonProps, "Button"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").CheckboxProps, "Checkbox"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").FormProps, "Form"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").FieldProps, "Field"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").FileInputProps, "FileInput"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").InputProps, "Input"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").DropdownProps, "Dropdown"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").SelectorProps, "Selector"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").BoldProps, "Bold"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").ItalicProps, "Italic"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").AvatarProps, "Avatar"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").AddressProps, "Address"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").BoxProps, "Box"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").CardProps, "Card"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").ContainerProps, "Container"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").CopyableProps, "Copyable"> | import("@metamask/snaps-sdk/jsx").SnapElement<Record<string, never>, "Divider"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").IconProps, "Icon"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").LinkProps, "Link"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").RowProps, "Row"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").SectionProps, "Section"> | import("@metamask/snaps-sdk/jsx").SnapElement<Record<string, never>, "Spinner"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").TextProps, "Text"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").TooltipProps, "Tooltip"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").BannerProps, "Banner"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").SkeletonProps, "Skeleton"> | { value: string; type: import("@metamask/snaps-sdk").NodeType.Copyable; sensitive?: boolean | undefined; } | { type: import("@metamask/snaps-sdk").NodeType.Divider; } | { value: string; type: import("@metamask/snaps-sdk").NodeType.Heading; } | { value: string; type: import("@metamask/snaps-sdk").NodeType.Image; } | { type: import("@metamask/snaps-sdk").NodeType.Spinner; } | { value: string; type: import("@metamask/snaps-sdk").NodeType.Text; markdown?: boolean | undefined; } | { value: `0x${string}`; type: import("@metamask/snaps-sdk").NodeType.Address; } | { value: { value: string; type: import("@metamask/snaps-sdk").NodeType.Image; } | { value: string; type: import("@metamask/snaps-sdk").NodeType.Text; markdown?: boolean | undefined; } | { value: `0x${string}`; type: import("@metamask/snaps-sdk").NodeType.Address; }; type: import("@metamask/snaps-sdk").NodeType.Row; label: string; variant?: "default" | "critical" | "warning" | undefined; } | { name: string; type: import("@metamask/snaps-sdk").NodeType.Input; value?: string | undefined; label?: string | undefined; inputType?: "number" | "text" | "password" | undefined; placeholder?: string | undefined; error?: string | undefined; } | { value: string; type: import("@metamask/snaps-sdk").NodeType.Button; name?: string | undefined; variant?: "primary" | "secondary" | undefined; buttonType?: "button" | "submit" | undefined; } | { name: string; type: import("@metamask/snaps-sdk").NodeType.Form; children: ({ name: string; type: import("@metamask/snaps-sdk").NodeType.Input; value?: string | undefined; label?: string | undefined; inputType?: "number" | "text" | "password" | undefined; placeholder?: string | undefined; error?: string | undefined; } | { value: string; type: import("@metamask/snaps-sdk").NodeType.Button; name?: string | undefined; variant?: "primary" | "secondary" | undefined; buttonType?: "button" | "submit" | undefined; })[]; } | import("@metamask/snaps-sdk/jsx").SnapElement<{ src: string; alt?: string | undefined; borderRadius?: import("@metamask/snaps-sdk/jsx").BorderRadius; }, "Image"> | import("@metamask/snaps-sdk/jsx").SnapElement<{ name: string; value?: string | undefined; children: import("@metamask/snaps-sdk/jsx").SnapsChildren<import("@metamask/snaps-sdk/jsx").SnapElement<{ value: string; children: string; disabled?: boolean | undefined; }, "Radio">>; disabled?: boolean | undefined; }, "RadioGroup"> | import("@metamask/snaps-sdk/jsx").SnapElement<{ children: import("@metamask/snaps-sdk/jsx").StringElement; size?: "sm" | "md" | "lg" | undefined; }, "Heading">; footerLink?: { text: string; href: string; } | undefined; }, [head: import("@metamask/superstruct").Struct<{ message: string; type: "inApp"; }, { type: import("@metamask/superstruct").Struct<"inApp", null>; message: import("@metamask/superstruct").Struct<string, null>; }>, import("@metamask/superstruct").Struct<{ message: string; type: "inApp"; title: string; content: import("@metamask/snaps-sdk").Panel | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").AccountSelectorProps, "AccountSelector"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").AddressInputProps, "AddressInput"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").AssetSelectorProps, "AssetSelector"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").ButtonProps, "Button"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").CheckboxProps, "Checkbox"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").FormProps, "Form"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").FieldProps, "Field"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").FileInputProps, "FileInput"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").InputProps, "Input"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").DropdownProps, "Dropdown"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").SelectorProps, "Selector"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").BoldProps, "Bold"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").ItalicProps, "Italic"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").AvatarProps, "Avatar"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").AddressProps, "Address"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").BoxProps, "Box"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").CardProps, "Card"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").ContainerProps, "Container"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").CopyableProps, "Copyable"> | import("@metamask/snaps-sdk/jsx").SnapElement<Record<string, never>, "Divider"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").IconProps, "Icon"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").LinkProps, "Link"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").RowProps, "Row"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").SectionProps, "Section"> | import("@metamask/snaps-sdk/jsx").SnapElement<Record<string, never>, "Spinner"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").TextProps, "Text"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").TooltipProps, "Tooltip"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").BannerProps, "Banner"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").SkeletonProps, "Skeleton"> | { value: string; type: import("@metamask/snaps-sdk").NodeType.Copyable; sensitive?: boolean | undefined; } | { type: import("@metamask/snaps-sdk").NodeType.Divider; } | { value: string; type: import("@metamask/snaps-sdk").NodeType.Heading; } | { value: string; type: import("@metamask/snaps-sdk").NodeType.Image; } | { type: import("@metamask/snaps-sdk").NodeType.Spinner; } | { value: string; type: import("@metamask/snaps-sdk").NodeType.Text; markdown?: boolean | undefined; } | { value: `0x${string}`; type: import("@metamask/snaps-sdk").NodeType.Address; } | { value: { value: string; type: import("@metamask/snaps-sdk").NodeType.Image; } | { value: string; type: import("@metamask/snaps-sdk").NodeType.Text; markdown?: boolean | undefined; } | { value: `0x${string}`; type: import("@metamask/snaps-sdk").NodeType.Address; }; type: import("@metamask/snaps-sdk").NodeType.Row; label: string; variant?: "default" | "critical" | "warning" | undefined; } | { name: string; type: import("@metamask/snaps-sdk").NodeType.Input; value?: string | undefined; label?: string | undefined; inputType?: "number" | "text" | "password" | undefined; placeholder?: string | undefined; error?: string | undefined; } | { value: string; type: import("@metamask/snaps-sdk").NodeType.Button; name?: string | undefined; variant?: "primary" | "secondary" | undefined; buttonType?: "button" | "submit" | undefined; } | { name: string; type: import("@metamask/snaps-sdk").NodeType.Form; children: ({ name: string; type: import("@metamask/snaps-sdk").NodeType.Input; value?: string | undefined; label?: string | undefined; inputType?: "number" | "text" | "password" | undefined; placeholder?: string | undefined; error?: string | undefined; } | { value: string; type: import("@metamask/snaps-sdk").NodeType.Button; name?: string | undefined; variant?: "primary" | "secondary" | undefined; buttonType?: "button" | "submit" | undefined; })[]; } | import("@metamask/snaps-sdk/jsx").SnapElement<{ src: string; alt?: string | undefined; borderRadius?: import("@metamask/snaps-sdk/jsx").BorderRadius; }, "Image"> | import("@metamask/snaps-sdk/jsx").SnapElement<{ name: string; value?: string | undefined; children: import("@metamask/snaps-sdk/jsx").SnapsChildren<import("@metamask/snaps-sdk/jsx").SnapElement<{ value: string; children: string; disabled?: boolean | undefined; }, "Radio">>; disabled?: boolean | undefined; }, "RadioGroup"> | import("@metamask/snaps-sdk/jsx").SnapElement<{ children: import("@metamask/snaps-sdk/jsx").StringElement; size?: "sm" | "md" | "lg" | undefined; }, "Heading">; footerLink?: { text: string; href: string; } | undefined; }, { type: import("@metamask/superstruct").Struct<"inApp", null>; message: import("@metamask/superstruct").Struct<string, null>; content: import("@metamask/superstruct").Struct<import("@metamask/snaps-sdk").Panel | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").AccountSelectorProps, "AccountSelector"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").AddressInputProps, "AddressInput"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").AssetSelectorProps, "AssetSelector"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").ButtonProps, "Button"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").CheckboxProps, "Checkbox"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").FormProps, "Form"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").FieldProps, "Field"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").FileInputProps, "FileInput"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").InputProps, "Input"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").DropdownProps, "Dropdown"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").SelectorProps, "Selector"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").BoldProps, "Bold"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").ItalicProps, "Italic"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").AvatarProps, "Avatar"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").AddressProps, "Address"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").BoxProps, "Box"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").CardProps, "Card"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").ContainerProps, "Container"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").CopyableProps, "Copyable"> | import("@metamask/snaps-sdk/jsx").SnapElement<Record<string, never>, "Divider"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").IconProps, "Icon"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").LinkProps, "Link"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").RowProps, "Row"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").SectionProps, "Section"> | import("@metamask/snaps-sdk/jsx").SnapElement<Record<string, never>, "Spinner"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").TextProps, "Text"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").TooltipProps, "Tooltip"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").BannerProps, "Banner"> | import("@metamask/snaps-sdk/jsx").SnapElement<import("@metamask/snaps-sdk/jsx").SkeletonProps, "Skeleton"> | { value: string; type: import("@metamask/snaps-sdk").NodeType.Copyable; sensitive?: boolean | undefined; } | { type: import("@metamask/snaps-sdk").NodeType.Divider; } | { value: string; type: import("@metamask/snaps-sdk").NodeType.Heading; } | { value: string; type: import("@metamask/snaps-sdk").NodeType.Image; } | { type: import("@metamask/snaps-sdk").NodeType.Spinner; } | { value: string; type: import("@metamask/snaps-sdk").NodeType.Text; markdown?: boolean | undefined; } | { value: `0x${string}`; type: import("@metamask/snaps-sdk").NodeType.Address; } | { value: { value: string; type: import("@metamask/snaps-sdk").NodeType.Image; } | { value: string; type: import("@metamask/snaps-sdk").NodeType.Text; markdown?: boolean | undefined; } | { value: `0x${string}`; type: import("@metamask/snaps-sdk").NodeType.Address; }; type: import("@metamask/snaps-sdk").NodeType.Row; label: string; variant?: "default" | "critical" | "warning" | undefined; } | { name: string; type: import("@metamask/snaps-sdk").NodeType.Input; value?: string | undefined; label?: string | undefined; inputType?: "number" | "text" | "password" | undefined; placeholder?: string | undefined; error?: string | undefined; } | { value: string; type: import("@metamask/snaps-sdk").NodeType.Button; name?: string | undefined; variant?: "primary" | "secondary" | undefined; buttonType?: "button" | "submit" | undefined; } | { name: string; type: import("@metamask/snaps-sdk").NodeType.Form; children: ({ name: string; type: import("@metamask/snaps-sdk").NodeType.Input; value?: string | undefined; label?: string | undefined; inputType?: "number" | "text" | "password" | undefined; placeholder?: string | undefined; error?: string | undefined; } | { value: string; type: import("@metamask/snaps-sdk").NodeType.Button; name?: string | undefined; variant?: "primary" | "secondary" | undefined; buttonType?: "button" | "submit" | undefined; })[]; } | import("@metamask/snaps-sdk/jsx").SnapElement<{ src: string; alt?: string | undefined; borderRadius?: import("@metamask/snaps-sdk/jsx").BorderRadius; }, "Image"> | import("@metamask/snaps-sdk/jsx").SnapElement<{ name: string; value?: string | undefined; children: import("@metamask/snaps-sdk/jsx").SnapsChildren<import("@metamask/snaps-sdk/jsx").SnapElement<{ value: string; children: string; disabled?: boolean | undefined; }, "Radio">>; disabled?: boolean | undefined; }, "RadioGroup"> | import("@metamask/snaps-sdk/jsx").SnapElement<{ children: import("@metamask/snaps-sdk/jsx").StringElement; size?: "sm" | "md" | "lg" | undefined; }, "Heading">, null>; title: import("@metamask/superstruct").Struct<string, null>; footerLink: import("@metamask/superstruct").Struct<{ text: string; href: string; } | undefined, { href: import("@metamask/superstruct").Struct<string, null>; text: import("@metamask/superstruct").Struct<string, null>; }>; }>, import("@metamask/superstruct").Struct<{ message: string; type: "native"; }, { type: import("@metamask/superstruct").Struct<"native", null>; message: import("@metamask/superstruct").Struct<string, null>; }>]>; export type NotificationArgs = InferMatching<typeof NotificationParametersStruct, NotifyParams>; export type NotifyMethodHooks = { /** * @param snapId - The ID of the Snap that created the notification. * @param args - The notification arguments. */ showNativeNotification: (snapId: string, args: NotificationArgs) => Promise<null>; /** * @param snapId - The ID of the Snap that created the notification. * @param args - The notification arguments. */ showInAppNotification: (snapId: string, args: NotificationArgs) => Promise<null>; isOnPhishingList: (url: string) => boolean; maybeUpdatePhishingList: () => Promise<void>; createInterface: (origin: string, content: ComponentOrElement, context?: InterfaceContext, contentType?: ContentType) => Promise<string>; getSnap: (snapId: string) => Snap | undefined; }; type SpecificationBuilderOptions = { allowedCaveats?: Readonly<NonEmptyArray<string>> | null; methodHooks: NotifyMethodHooks; }; type Specification = ValidPermissionSpecification<{ permissionType: PermissionType.RestrictedMethod; targetName: typeof methodName; methodImplementation: ReturnType<typeof getImplementation>; allowedCaveats: Readonly<NonEmptyArray<string>> | null; }>; /** * The specification builder for the `snap_notify` permission. * `snap_notify` allows snaps to send multiple types of notifications to its users. * * @param options - The specification builder options. * @param options.allowedCaveats - The optional allowed caveats for the permission. * @param options.methodHooks - The RPC method hooks needed by the method implementation. * @returns The specification for the `snap_notify` permission. */ export declare const specificationBuilder: PermissionSpecificationBuilder<PermissionType.RestrictedMethod, SpecificationBuilderOptions, Specification>; export declare const notifyBuilder: Readonly<{ readonly targetName: "snap_notify"; readonly specificationBuilder: PermissionSpecificationBuilder<PermissionType.RestrictedMethod, SpecificationBuilderOptions, { permissionType: PermissionType.RestrictedMethod; targetName: typeof methodName; methodImplementation: ReturnType<typeof getImplementation>; allowedCaveats: Readonly<NonEmptyArray<string>> | null; }>; readonly methodHooks: MethodHooksObject<NotifyMethodHooks>; }>; /** * Builds the method implementation for `snap_notify`. * * @param hooks - The RPC method hooks. * @param hooks.showNativeNotification - A function that shows a native browser notification. * @param hooks.showInAppNotification - A function that shows a notification in the MetaMask UI. * @param hooks.isOnPhishingList - A function that checks for links against the phishing list. * @param hooks.maybeUpdatePhishingList - A function that updates the phishing list if needed. * @param hooks.createInterface - A function that creates the interface in SnapInterfaceController. * @param hooks.getSnap - A function that checks if a snap is installed. * @returns The method implementation which returns `null` on success. * @throws If the params are invalid. */ export declare function getImplementation({ showNativeNotification, showInAppNotification, isOnPhishingList, maybeUpdatePhishingList, createInterface, getSnap, }: NotifyMethodHooks): (args: RestrictedMethodOptions<NotifyParams>) => Promise<NotifyResult>; /** * Validates the notify method `params` and returns them cast to the correct * type. Throws if validation fails. * * @param params - The unvalidated params object from the method request. * @param isOnPhishingList - The function that checks for links against the phishing list. * @param getSnap - A function that checks if a snap is installed. * @returns The validated method parameter object. * @throws If the params are invalid. */ export declare function getValidatedParams(params: unknown, isOnPhishingList: NotifyMethodHooks['isOnPhishingList'], getSnap: NotifyMethodHooks['getSnap']): NotifyParams; export {}; //# sourceMappingURL=notify.d.mts.map