import type { ChannelMessageActionName } from "./types.js"; export type BlueBubblesActionSpec = { gate: string; groupOnly?: boolean; unsupportedOnMacOS26?: boolean; }; export const BLUEBUBBLES_ACTIONS = { react: { gate: "reactions" }, edit: { gate: "edit", unsupportedOnMacOS26: true }, unsend: { gate: "unsend" }, reply: { gate: "reply" }, sendWithEffect: { gate: "sendWithEffect" }, renameGroup: { gate: "renameGroup", groupOnly: true }, setGroupIcon: { gate: "setGroupIcon", groupOnly: true }, addParticipant: { gate: "addParticipant", groupOnly: true }, removeParticipant: { gate: "removeParticipant", groupOnly: true }, leaveGroup: { gate: "leaveGroup", groupOnly: true }, sendAttachment: { gate: "sendAttachment" }, } as const satisfies Partial>; const BLUEBUBBLES_ACTION_SPECS = BLUEBUBBLES_ACTIONS as Record< keyof typeof BLUEBUBBLES_ACTIONS, BlueBubblesActionSpec >; export const BLUEBUBBLES_ACTION_NAMES = Object.keys( BLUEBUBBLES_ACTIONS, ) as (keyof typeof BLUEBUBBLES_ACTIONS)[]; export const BLUEBUBBLES_GROUP_ACTIONS = new Set( BLUEBUBBLES_ACTION_NAMES.filter((action) => BLUEBUBBLES_ACTION_SPECS[action]?.groupOnly), );