UNPKG

@metamask/snaps-rpc-methods

Version:
454 lines 27.5 kB
import type { Messenger } from "@metamask/messenger"; import type { PermissionSpecificationBuilder, RestrictedMethodOptions, ValidPermissionSpecification } from "@metamask/permission-controller"; import { PermissionType } from "@metamask/permission-controller"; import type { NotifyParams, NotifyResult } from "@metamask/snaps-sdk"; import type { InferMatching } from "@metamask/snaps-utils"; import type { NonEmptyArray } from "@metamask/utils"; import type { RateLimitControllerCallAction, SnapControllerGetSnapAction, SnapInterfaceControllerCreateInterfaceAction } from "../types.mjs"; 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").DateTimePickerProps, "DateTimePicker"> | 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<import("@metamask/snaps-sdk/jsx").CollapsibleSectionProps, "CollapsibleSection"> | 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; } | { type: import("@metamask/snaps-sdk").NodeType.Input; name: string; 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; variant?: "primary" | "secondary" | undefined; name?: string | undefined; buttonType?: "button" | "submit" | undefined; } | { type: import("@metamask/snaps-sdk").NodeType.Form; name: string; children: ({ type: import("@metamask/snaps-sdk").NodeType.Input; name: string; 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; variant?: "primary" | "secondary" | undefined; name?: string | undefined; buttonType?: "button" | "submit" | undefined; })[]; } | import("@metamask/snaps-sdk/jsx").SnapElement<{ src: string; alt?: string | undefined; borderRadius?: import("@metamask/snaps-sdk/jsx").BorderRadius; height?: number | undefined; width?: number | undefined; }, "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").DateTimePickerProps, "DateTimePicker"> | 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<import("@metamask/snaps-sdk/jsx").CollapsibleSectionProps, "CollapsibleSection"> | 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; } | { type: import("@metamask/snaps-sdk").NodeType.Input; name: string; 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; variant?: "primary" | "secondary" | undefined; name?: string | undefined; buttonType?: "button" | "submit" | undefined; } | { type: import("@metamask/snaps-sdk").NodeType.Form; name: string; children: ({ type: import("@metamask/snaps-sdk").NodeType.Input; name: string; 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; variant?: "primary" | "secondary" | undefined; name?: string | undefined; buttonType?: "button" | "submit" | undefined; })[]; } | import("@metamask/snaps-sdk/jsx").SnapElement<{ src: string; alt?: string | undefined; borderRadius?: import("@metamask/snaps-sdk/jsx").BorderRadius; height?: number | undefined; width?: number | undefined; }, "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").DateTimePickerProps, "DateTimePicker"> | 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<import("@metamask/snaps-sdk/jsx").CollapsibleSectionProps, "CollapsibleSection"> | 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; } | { type: import("@metamask/snaps-sdk").NodeType.Input; name: string; 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; variant?: "primary" | "secondary" | undefined; name?: string | undefined; buttonType?: "button" | "submit" | undefined; } | { type: import("@metamask/snaps-sdk").NodeType.Form; name: string; children: ({ type: import("@metamask/snaps-sdk").NodeType.Input; name: string; 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; variant?: "primary" | "secondary" | undefined; name?: string | undefined; buttonType?: "button" | "submit" | undefined; })[]; } | import("@metamask/snaps-sdk/jsx").SnapElement<{ src: string; alt?: string | undefined; borderRadius?: import("@metamask/snaps-sdk/jsx").BorderRadius; height?: number | undefined; width?: number | undefined; }, "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 = { isOnPhishingList: (url: string) => boolean; maybeUpdatePhishingList: () => Promise<void>; }; export type NotifyMessengerActions = RateLimitControllerCallAction | SnapControllerGetSnapAction | SnapInterfaceControllerCreateInterfaceAction; type SpecificationBuilderOptions = { allowedCaveats?: Readonly<NonEmptyArray<string>> | null; methodHooks: NotifyMethodHooks; messenger: Messenger<string, NotifyMessengerActions>; }; 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.messenger - The messenger. * @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>; /** * Display a * [notification](https://docs.metamask.io/snaps/features/notifications/) in * MetaMask or natively in the OS. Snaps can trigger a short (up to 80 * characters) notification message for actionable or time sensitive * information. `inApp` notifications can also include an optional * [expanded view](https://docs.metamask.io/snaps/features/notifications/#expanded-view). * The expanded view has a title, content, and optional footer link shown when * a user clicks on the notification. * * @example Basic in app notification * ```json name="Manifest" * { * "initialPermissions": { * "snap_notify": {} * } * } * ``` * ```ts name="Usage" * snap.request({ * method: 'snap_notify', * params: { * type: 'inApp', * message: 'This is an in-app notification', * }, * }); * ``` * * @example Expandable in app notification * ```json name="Manifest" * { * "initialPermissions": { * "snap_notify": {} * } * } * ``` * ```ts name="Usage" * snap.request({ * method: 'snap_notify', * params: { * type: 'inApp', * message: 'This is an in-app notification', * title: 'Notification Title', * content: ( * <Box> * <Text>This is the expanded content of the notification.</Text> * </Box> * ), * footerLink: { * href: 'https://example.com', * text: 'Click here for more info', * }, * }, * }); * ``` * * @example Native notification * ```json name="Manifest" * { * "initialPermissions": { * "snap_notify": {} * } * } * ``` * ```ts name="Usage" * snap.request({ * method: 'snap_notify', * params: { * type: 'native', * message: 'This is a native notification', * }, * }); * ``` */ 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>; readonly actionNames: readonly ["RateLimitController:call", "SnapController:getSnap", "SnapInterfaceController:createInterface"]; }>; /** * Builds the method implementation for `snap_notify`. * * @param options - The options. * @param options.messenger - The messenger. * @param options.methodHooks - The RPC method hooks. * @param options.methodHooks.isOnPhishingList - A function that checks for links against the phishing list. * @param options.methodHooks.maybeUpdatePhishingList - A function that updates the phishing list if needed. * @returns The method implementation which returns `null` on success. * @throws If the params are invalid. */ export declare function getImplementation({ methodHooks: { isOnPhishingList, maybeUpdatePhishingList }, messenger, }: SpecificationBuilderOptions): (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 messenger - The messenger. * @returns The validated method parameter object. * @throws If the params are invalid. */ export declare function getValidatedParams(params: unknown, isOnPhishingList: NotifyMethodHooks['isOnPhishingList'], messenger: Messenger<string, NotifyMessengerActions>): NotifyParams; export {}; //# sourceMappingURL=notify.d.mts.map