import { AdvancedIMessage, ChatServiceType } from "@photon-ai/advanced-imessage/grpc"; import { Attachment, ContentBuilder, ContentInput, Platform, SchemaMessage, Space, read } from "@spectrum-ts/core"; import { PhotoInput } from "@spectrum-ts/core/authoring"; import z from "zod"; //#region src/remote/members.d.ts /** * A group participant mapped to spectrum's user shape. `id` is the canonical * address (E.164 phone or email — the same handle format `space.create` * accepts); `address`/`country`/`service` mirror the SDK record and match * the extras declared by the provider's `userSchema`. */ type IMessageParticipant = { id: string; address: string; country?: string; service: ChatServiceType; }; //#endregion //#region src/content/background.d.ts type BackgroundInput = PhotoInput; /** * Set or clear the chat background. iMessage-only, remote-only. * * - `background("clear")` — remove the current chat background. * - `background("./photo.jpg")` — set background from a filesystem path. * MIME type is inferred from the extension; override with `options.mimeType`. * - `background(new URL("https://…/photo.jpg"))` — fetch the background * lazily over the network. Bytes stay in memory (safe in read-only * environments). MIME type is inferred from the URL pathname extension; * override with `options.mimeType` when the URL has no usable extension. * - `background(buffer, { mimeType })` — set background from in-memory bytes. * `options.mimeType` is required. * * `"clear"` is a reserved string-literal sentinel. If you have a file literally * named `clear` with no extension, pass `"./clear"` or load it as a Buffer. * * `space.send(background(...))` is the canonical form; `space.background(...)` * is sugar attached via `PlatformDef.space.actions` (only typed on * `PlatformSpace`). * * `Background` is intentionally not a member of the universal `Content` * union — the `as unknown as Content` cast keeps the builder shape compatible * with the framework's `ContentBuilder.build(): Promise` signature. * The framework treats it as a fire-and-forget control signal at runtime. */ export declare function background(input: "clear"): ContentBuilder; export declare function background(input: string | Buffer | URL, options?: { mimeType?: string; }): ContentBuilder; //#endregion //#region src/content/contact-card.d.ts /** * iMessage-only "share contact card" control signal. Pushes the *local * account's native contact card* (the name + photo a recipient sees in their * Messages app) to a chat via the SDK's `chats.shareContactInfo`. * * This is Apple's "Share Name and Photo" mechanism — distinct from the * universal `contact(...)` content, which uploads an arbitrary person's vCard * as a *file* attachment. There is no payload: the card shared is always the * bot account's own. * * Like `background`, it lives entirely under the iMessage provider and never * enters the universal `Content` discriminated union. The framework recognizes * it via two generic content-level contracts: * * 1. `__platform: "imessage"` — `findUnsupportedPlatformContent` in * `platform/build.ts` reads this tag and warns-and-skips when a different * platform receives it. * 2. `__fireAndForget: true` — `dispatchSend`'s fire-and-forget check treats * this as a side-effecting send that returns no message id, the same way it * treats `read` / `typing`. * * iMessage's `send` handler narrows back via the `isContactCard` type guard * before dispatching to `chats.shareContactInfo`. */ declare const contactCardSchema: z.ZodObject<{ type: z.ZodLiteral<"contactCard">; __platform: z.ZodLiteral<"imessage">; __fireAndForget: z.ZodLiteral; }, z.core.$strip>; type ContactCard = z.infer; /** * Share the bot account's native iMessage contact card (name + photo) with the * chat. iMessage-only, remote-only. * * `space.send(nativeContactCard())` is the canonical form; `space.shareContactCard()` * is sugar attached via `PlatformDef.space.actions` (only typed on * `PlatformSpace`). * * This is an explicit, on-demand share and always fires — unlike the automatic * best-effort share gated behind the `imessageSynced` project profile, which * dedupes to once per chat per 24h (see `remote/contact-share.ts`). Works in * both DMs and group chats; the recipient chooses whether to accept the card. * * `ContactCard` is intentionally not a member of the universal `Content` * union — the `as unknown as Content` cast keeps the builder shape compatible * with the framework's `ContentBuilder.build(): Promise` signature. * The framework treats it as a fire-and-forget control signal at runtime. */ export declare function nativeContactCard(): ContentBuilder; //#endregion //#region src/content/customized-mini-app.d.ts declare const layoutSchema: z.ZodObject<{ caption: z.ZodOptional; subcaption: z.ZodOptional; trailingCaption: z.ZodOptional; trailingSubcaption: z.ZodOptional; image: z.ZodOptional, Uint8Array>>; imageTitle: z.ZodOptional; imageSubtitle: z.ZodOptional; summary: z.ZodOptional; }, z.core.$strip>; /** * iMessage-only mini-app card content. Lives entirely under the iMessage * provider — never enters the universal `Content` discriminated union. The * framework recognizes it via the generic content-level platform contract: * * - `__platform: "imessage"` — `findUnsupportedPlatformContent` reads this tag * and warns-and-skips when a different platform receives it. * * Unlike `background` / `read`, this content is **not** `__fireAndForget`: it * produces a real outbound message, so the iMessage `send` handler narrows * back to `CustomizedMiniApp` via the `isCustomizedMiniApp` guard and returns * the resulting `ProviderMessageRecord` (rather than `void`). */ declare const customizedMiniAppSchema: z.ZodObject<{ type: z.ZodLiteral<"customized-mini-app">; __platform: z.ZodLiteral<"imessage">; appName: z.ZodString; appStoreId: z.ZodOptional; extensionBundleId: z.ZodString; layout: z.ZodObject<{ caption: z.ZodOptional; subcaption: z.ZodOptional; trailingCaption: z.ZodOptional; trailingSubcaption: z.ZodOptional; image: z.ZodOptional, Uint8Array>>; imageTitle: z.ZodOptional; imageSubtitle: z.ZodOptional; summary: z.ZodOptional; }, z.core.$strip>; live: z.ZodOptional; teamId: z.ZodString; url: z.ZodURL; }, z.core.$strip>; type CustomizedMiniApp = z.infer; type CustomizedMiniAppLayout = z.infer; type CustomizedMiniAppInput = Omit; /** * Construct a `customized-mini-app` content value. iMessage-only, remote-only. * * The layout is what recipients see in the bubble. `teamId` and * `extensionBundleId` identify the iMessage extension that receives `url` when * the recipient taps the card; the server constructs the matching * `MSMessageExtensionBalloonPlugin` plugin id from these values. `appStoreId` * is optional and only points recipients without the extension at its App * Store entry. `live` is optional; when omitted, the remote server keeps the * static layout preview visible. * * `space.send(customizedMiniApp(...))` is the canonical form. * * `CustomizedMiniApp` is intentionally not a member of the universal `Content` * union — the `as unknown as Content` cast keeps the builder shape compatible * with the framework's `ContentBuilder.build(): Promise` signature. */ export declare function customizedMiniApp(input: CustomizedMiniAppInput): ContentBuilder; //#endregion //#region src/content/effect.d.ts declare const messageEffects: { readonly balloons: "com.apple.messages.effect.CKBalloonEffect"; readonly celebration: "com.apple.messages.effect.CKHappyBirthdayEffect"; readonly confetti: "com.apple.messages.effect.CKConfettiEffect"; readonly echo: "com.apple.messages.effect.CKEchoEffect"; readonly fireworks: "com.apple.messages.effect.CKFireworksEffect"; readonly gentle: "com.apple.MobileSMS.expressivesend.gentle"; readonly heart: "com.apple.messages.effect.CKHeartEffect"; readonly invisible: "com.apple.MobileSMS.expressivesend.invisibleink"; readonly lasers: "com.apple.messages.effect.CKLasersEffect"; readonly loud: "com.apple.MobileSMS.expressivesend.loud"; readonly slam: "com.apple.MobileSMS.expressivesend.impact"; readonly sparkles: "com.apple.messages.effect.CKSparklesEffect"; readonly spotlight: "com.apple.messages.effect.CKSpotlightEffect"; }; type IMessageMessageEffect = (typeof messageEffects)[keyof typeof messageEffects]; export declare function effect(input: ContentInput, messageEffect: IMessageMessageEffect): ContentBuilder; //#endregion //#region src/types.d.ts interface RemoteClient { client: AdvancedIMessage; phone: string; } type IMessageClient = RemoteClient[]; declare const userSchema: z.ZodObject<{ address: z.ZodOptional; country: z.ZodOptional; service: z.ZodOptional>; }, z.core.$strip>; declare const spaceSchema: z.ZodObject<{ id: z.ZodString; type: z.ZodEnum<{ dm: "dm"; group: "group"; }>; phone: z.ZodString; }, z.core.$strip>; declare const textFormatSchema: z.ZodReadonly; length: z.ZodNumber; start: z.ZodNumber; type: z.ZodString; }, z.core.$strip>>; declare const mentionSchema: z.ZodReadonly>; declare const attachmentMetadataSchema: z.ZodReadonly>; fileName: z.ZodString; guid: z.ZodString; isHidden: z.ZodBoolean; isSticker: z.ZodBoolean; mimeType: z.ZodString; originalGuid: z.ZodOptional; totalBytes: z.ZodNumber; transferState: z.ZodEnum<{ unknown: "unknown"; pending: "pending"; transferring: "transferring"; failed: "failed"; finished: "finished"; }>; uti: z.ZodString; }, z.core.$strip>>; declare const reactionSchema$1: z.ZodReadonly; kind: z.ZodEnum<{ unknown: "unknown"; emoji: "emoji"; love: "love"; like: "like"; dislike: "dislike"; laugh: "laugh"; emphasize: "emphasize"; question: "question"; sticker: "sticker"; }>; }, z.core.$strip>>; declare const appliedReactionSchema: z.ZodReadonly; kind: z.ZodEnum<{ unknown: "unknown"; emoji: "emoji"; love: "love"; like: "like"; dislike: "dislike"; laugh: "laugh"; emphasize: "emphasize"; question: "question"; sticker: "sticker"; }>; }, z.core.$strip>>; sender: z.ZodOptional; service: z.ZodEnum<{ unknown: "unknown"; iMessage: "iMessage"; SMS: "SMS"; RCS: "RCS"; }>; }, z.core.$strip>>>; targetPartIndex: z.ZodOptional; }, z.core.$strip>>; declare const stickerPlacementSchema: z.ZodReadonly; scale: z.ZodOptional; width: z.ZodOptional; x: z.ZodNumber; y: z.ZodNumber; }, z.core.$strip>>; declare const placedStickerSchema: z.ZodReadonly; scale: z.ZodOptional; width: z.ZodOptional; x: z.ZodNumber; y: z.ZodNumber; }, z.core.$strip>>>; sender: z.ZodOptional; service: z.ZodEnum<{ unknown: "unknown"; iMessage: "iMessage"; SMS: "SMS"; RCS: "RCS"; }>; }, z.core.$strip>>>; sticker: z.ZodOptional>; fileName: z.ZodString; guid: z.ZodString; isHidden: z.ZodBoolean; isSticker: z.ZodBoolean; mimeType: z.ZodString; originalGuid: z.ZodOptional; totalBytes: z.ZodNumber; transferState: z.ZodEnum<{ unknown: "unknown"; pending: "pending"; transferring: "transferring"; failed: "failed"; finished: "finished"; }>; uti: z.ZodString; }, z.core.$strip>>>; targetPartIndex: z.ZodOptional; }, z.core.$strip>>; declare const reactionRecordSchema: z.ZodReadonly; kind: z.ZodEnum<{ unknown: "unknown"; emoji: "emoji"; love: "love"; like: "like"; dislike: "dislike"; laugh: "laugh"; emphasize: "emphasize"; question: "question"; sticker: "sticker"; }>; }, z.core.$strip>>; selected: z.ZodOptional; targetGuid: z.ZodString; targetPartIndex: z.ZodOptional; }, z.core.$strip>>; /** The card's text slots exactly as Apple decoded them from the balloon. */ declare const miniAppLayoutSchema: z.ZodReadonly; imageSubtitle: z.ZodOptional; imageTitle: z.ZodOptional; subcaption: z.ZodOptional; summary: z.ZodOptional; trailingCaption: z.ZodOptional; trailingSubcaption: z.ZodOptional; }, z.core.$strip>>; /** * Everything Apple's balloon payload carries for an inbound third-party app * card. The visible slots also surface as `app` content; these are the native * details that have no place in the cross-provider union — most usefully * `sessionId`, which is shared by every update to the same card and is how a * run of updates (a game's moves, say) is correlated back to one session. */ declare const miniAppSchema: z.ZodReadonly; appStoreId: z.ZodOptional; extensionBundleId: z.ZodString; layout: z.ZodOptional; imageSubtitle: z.ZodOptional; imageTitle: z.ZodOptional; subcaption: z.ZodOptional; summary: z.ZodOptional; trailingCaption: z.ZodOptional; trailingSubcaption: z.ZodOptional; }, z.core.$strip>>>; live: z.ZodBoolean; sessionId: z.ZodOptional; teamId: z.ZodString; url: z.ZodOptional; }, z.core.$strip>>; /** * iMessage-specific per-message metadata surfaced on `IMessageMessage`. * Native metadata is optional because synthetic event records do not carry a * complete Advanced iMessage message. * * - `partIndex`: ordered part index within a multi-part message. Text and * attachment parts both consume an index (0 for bare or single-part * messages; 0..N-1 for a group's sub-items). * - `parentId`: guid of the parent message for a group sub-item. Undefined * when the message itself is the parent. * - `miniAppCardSession`: stable handle returned by mini-app card sends and * updates. It is required to update the card in place later. */ declare const messageSchema: z.ZodObject<{ dateDelivered: z.ZodOptional>; dateEdited: z.ZodOptional>; dateExpressiveSendPlayed: z.ZodOptional>; datePlayed: z.ZodOptional>; dateRead: z.ZodOptional>; dateRetracted: z.ZodOptional>; isSent: z.ZodOptional; isDelivered: z.ZodOptional; isDeliveredQuietly: z.ZodOptional; didNotifyRecipient: z.ZodOptional; isDelayed: z.ZodOptional; sendErrorCode: z.ZodOptional; nativeText: z.ZodOptional>; formatting: z.ZodOptional; length: z.ZodNumber; start: z.ZodNumber; type: z.ZodString; }, z.core.$strip>>>>>; mentions: z.ZodOptional>>>>; subject: z.ZodOptional>; balloonBundleId: z.ZodOptional>; miniApp: z.ZodOptional; appStoreId: z.ZodOptional; extensionBundleId: z.ZodString; layout: z.ZodOptional; imageSubtitle: z.ZodOptional; imageTitle: z.ZodOptional; subcaption: z.ZodOptional; summary: z.ZodOptional; trailingCaption: z.ZodOptional; trailingSubcaption: z.ZodOptional; }, z.core.$strip>>>; live: z.ZodBoolean; sessionId: z.ZodOptional; teamId: z.ZodString; url: z.ZodOptional; }, z.core.$strip>>>>; expressiveSendStyleId: z.ZodOptional>; attachmentMetadata: z.ZodOptional>; fileName: z.ZodString; guid: z.ZodString; isHidden: z.ZodBoolean; isSticker: z.ZodBoolean; mimeType: z.ZodString; originalGuid: z.ZodOptional; totalBytes: z.ZodNumber; transferState: z.ZodEnum<{ unknown: "unknown"; pending: "pending"; transferring: "transferring"; failed: "failed"; finished: "finished"; }>; uti: z.ZodString; }, z.core.$strip>>>>>; appliedReactions: z.ZodOptional; kind: z.ZodEnum<{ unknown: "unknown"; emoji: "emoji"; love: "love"; like: "like"; dislike: "dislike"; laugh: "laugh"; emphasize: "emphasize"; question: "question"; sticker: "sticker"; }>; }, z.core.$strip>>; sender: z.ZodOptional; service: z.ZodEnum<{ unknown: "unknown"; iMessage: "iMessage"; SMS: "SMS"; RCS: "RCS"; }>; }, z.core.$strip>>>; targetPartIndex: z.ZodOptional; }, z.core.$strip>>>>>; placedStickers: z.ZodOptional; scale: z.ZodOptional; width: z.ZodOptional; x: z.ZodNumber; y: z.ZodNumber; }, z.core.$strip>>>; sender: z.ZodOptional; service: z.ZodEnum<{ unknown: "unknown"; iMessage: "iMessage"; SMS: "SMS"; RCS: "RCS"; }>; }, z.core.$strip>>>; sticker: z.ZodOptional>; fileName: z.ZodString; guid: z.ZodString; isHidden: z.ZodBoolean; isSticker: z.ZodBoolean; mimeType: z.ZodString; originalGuid: z.ZodOptional; totalBytes: z.ZodNumber; transferState: z.ZodEnum<{ unknown: "unknown"; pending: "pending"; transferring: "transferring"; failed: "failed"; finished: "finished"; }>; uti: z.ZodString; }, z.core.$strip>>>; targetPartIndex: z.ZodOptional; }, z.core.$strip>>>>>; reactionRecord: z.ZodOptional; kind: z.ZodEnum<{ unknown: "unknown"; emoji: "emoji"; love: "love"; like: "like"; dislike: "dislike"; laugh: "laugh"; emphasize: "emphasize"; question: "question"; sticker: "sticker"; }>; }, z.core.$strip>>; selected: z.ZodOptional; targetGuid: z.ZodString; targetPartIndex: z.ZodOptional; }, z.core.$strip>>>>; itemType: z.ZodOptional>; groupTitle: z.ZodOptional>; partCount: z.ZodOptional>; isAutoReply: z.ZodOptional; isCorrupt: z.ZodOptional; isExpirable: z.ZodOptional; isServiceMessage: z.ZodOptional; isSpam: z.ZodOptional; isSystemMessage: z.ZodOptional; miniAppCardSession: z.ZodOptional>; partIndex: z.ZodOptional; parentId: z.ZodOptional; }, z.core.$strip>; type IMessageAppliedReaction = z.infer; type IMessageAttachmentMetadata = z.infer; type IMessageMention = z.infer; type IMessageMiniApp = z.infer; type IMessageMiniAppLayout = z.infer; type IMessagePlacedSticker = z.infer; type IMessageReaction = z.infer; type IMessageReactionRecord = z.infer; type IMessageStickerPlacement = z.infer; type IMessageTextFormat = z.infer; type IMessageMessage = SchemaMessage & z.infer & { direction?: "inbound" | "outbound"; }; //#endregion //#region src/index.d.ts declare const definedIMessage: Platform, import("zod").ZodArray>]>>; }, import("zod/v4/core").$strict>, import("zod").ZodObject<{ address: import("zod").ZodOptional; country: import("zod").ZodOptional; service: import("zod").ZodOptional>; }, import("zod/v4/core").$strip>, import("zod").ZodObject<{ id: import("zod").ZodString; type: import("zod").ZodEnum<{ dm: "dm"; group: "group"; }>; phone: import("zod").ZodString; }, import("zod/v4/core").$strip>, import("zod").ZodObject<{ phone: import("zod").ZodOptional; }, import("zod/v4/core").$strip>, IMessageClient, { id: string; }, { id: string; type: "dm" | "group"; phone: string; }, import("zod").ZodObject<{ dateDelivered: import("zod").ZodOptional>; dateEdited: import("zod").ZodOptional>; dateExpressiveSendPlayed: import("zod").ZodOptional>; datePlayed: import("zod").ZodOptional>; dateRead: import("zod").ZodOptional>; dateRetracted: import("zod").ZodOptional>; isSent: import("zod").ZodOptional; isDelivered: import("zod").ZodOptional; isDeliveredQuietly: import("zod").ZodOptional; didNotifyRecipient: import("zod").ZodOptional; isDelayed: import("zod").ZodOptional; sendErrorCode: import("zod").ZodOptional; nativeText: import("zod").ZodOptional>; formatting: import("zod").ZodOptional; length: import("zod").ZodNumber; start: import("zod").ZodNumber; type: import("zod").ZodString; }, import("zod/v4/core").$strip>>>>>; mentions: import("zod").ZodOptional>>>>; subject: import("zod").ZodOptional>; balloonBundleId: import("zod").ZodOptional>; miniApp: import("zod").ZodOptional; appStoreId: import("zod").ZodOptional; extensionBundleId: import("zod").ZodString; layout: import("zod").ZodOptional; imageSubtitle: import("zod").ZodOptional; imageTitle: import("zod").ZodOptional; subcaption: import("zod").ZodOptional; summary: import("zod").ZodOptional; trailingCaption: import("zod").ZodOptional; trailingSubcaption: import("zod").ZodOptional; }, import("zod/v4/core").$strip>>>; live: import("zod").ZodBoolean; sessionId: import("zod").ZodOptional; teamId: import("zod").ZodString; url: import("zod").ZodOptional; }, import("zod/v4/core").$strip>>>>; expressiveSendStyleId: import("zod").ZodOptional>; attachmentMetadata: import("zod").ZodOptional>; fileName: import("zod").ZodString; guid: import("zod").ZodString; isHidden: import("zod").ZodBoolean; isSticker: import("zod").ZodBoolean; mimeType: import("zod").ZodString; originalGuid: import("zod").ZodOptional; totalBytes: import("zod").ZodNumber; transferState: import("zod").ZodEnum<{ unknown: "unknown"; pending: "pending"; transferring: "transferring"; failed: "failed"; finished: "finished"; }>; uti: import("zod").ZodString; }, import("zod/v4/core").$strip>>>>>; appliedReactions: import("zod").ZodOptional; kind: import("zod").ZodEnum<{ unknown: "unknown"; emoji: "emoji"; love: "love"; like: "like"; dislike: "dislike"; laugh: "laugh"; emphasize: "emphasize"; question: "question"; sticker: "sticker"; }>; }, import("zod/v4/core").$strip>>; sender: import("zod").ZodOptional; service: import("zod").ZodEnum<{ unknown: "unknown"; iMessage: "iMessage"; SMS: "SMS"; RCS: "RCS"; }>; }, import("zod/v4/core").$strip>>>; targetPartIndex: import("zod").ZodOptional; }, import("zod/v4/core").$strip>>>>>; placedStickers: import("zod").ZodOptional; scale: import("zod").ZodOptional; width: import("zod").ZodOptional; x: import("zod").ZodNumber; y: import("zod").ZodNumber; }, import("zod/v4/core").$strip>>>; sender: import("zod").ZodOptional; service: import("zod").ZodEnum<{ unknown: "unknown"; iMessage: "iMessage"; SMS: "SMS"; RCS: "RCS"; }>; }, import("zod/v4/core").$strip>>>; sticker: import("zod").ZodOptional>; fileName: import("zod").ZodString; guid: import("zod").ZodString; isHidden: import("zod").ZodBoolean; isSticker: import("zod").ZodBoolean; mimeType: import("zod").ZodString; originalGuid: import("zod").ZodOptional; totalBytes: import("zod").ZodNumber; transferState: import("zod").ZodEnum<{ unknown: "unknown"; pending: "pending"; transferring: "transferring"; failed: "failed"; finished: "finished"; }>; uti: import("zod").ZodString; }, import("zod/v4/core").$strip>>>; targetPartIndex: import("zod").ZodOptional; }, import("zod/v4/core").$strip>>>>>; reactionRecord: import("zod").ZodOptional; kind: import("zod").ZodEnum<{ unknown: "unknown"; emoji: "emoji"; love: "love"; like: "like"; dislike: "dislike"; laugh: "laugh"; emphasize: "emphasize"; question: "question"; sticker: "sticker"; }>; }, import("zod/v4/core").$strip>>; selected: import("zod").ZodOptional; targetGuid: import("zod").ZodString; targetPartIndex: import("zod").ZodOptional; }, import("zod/v4/core").$strip>>>>; itemType: import("zod").ZodOptional>; groupTitle: import("zod").ZodOptional>; partCount: import("zod").ZodOptional>; isAutoReply: import("zod").ZodOptional; isCorrupt: import("zod").ZodOptional; isExpirable: import("zod").ZodOptional; isServiceMessage: import("zod").ZodOptional; isSpam: import("zod").ZodOptional; isSystemMessage: import("zod").ZodOptional; miniAppCardSession: import("zod").ZodOptional>; partIndex: import("zod").ZodOptional; parentId: import("zod").ZodOptional; }, import("zod/v4/core").$strip>, IMessageMessage, undefined, { background: (space: Space, input: BackgroundInput, opts?: { mimeType?: string; }) => Promise; shareContactCard: (space: Space) => Promise; }, Record, { getMessage: ({ client }: { client: IMessageClient; config: { clients?: { address: string; token: string; phone: string; } | { address: string; token: string; phone: string; }[] | undefined; }; store: import("@spectrum-ts/core").Store; }, space: { id: string; type: "dm" | "group"; phone: string; } & { id: string; __platform: string; }, messageId: string) => Promise; getMembers: ({ client }: { client: IMessageClient; config: { clients?: { address: string; token: string; phone: string; } | { address: string; token: string; phone: string; }[] | undefined; }; store: import("@spectrum-ts/core").Store; }, space: { id: string; type: "dm" | "group"; phone: string; } & { id: string; __platform: string; }) => Promise; getAvatar: ({ client }: { client: IMessageClient; config: { clients?: { address: string; token: string; phone: string; } | { address: string; token: string; phone: string; }[] | undefined; }; store: import("@spectrum-ts/core").Store; }, space: { id: string; type: "dm" | "group"; phone: string; } & { id: string; __platform: string; }) => Promise; getDisplayName: ({ client }: { client: IMessageClient; config: { clients?: { address: string; token: string; phone: string; } | { address: string; token: string; phone: string; }[] | undefined; }; store: import("@spectrum-ts/core").Store; }, space: { id: string; type: "dm" | "group"; phone: string; } & { id: string; __platform: string; }) => Promise; getAttachment: ({ client }: { client: IMessageClient; }, guid: string, phone?: string) => Promise; }>> & Readonly<{ effect: { message: { readonly balloons: "com.apple.messages.effect.CKBalloonEffect"; readonly celebration: "com.apple.messages.effect.CKHappyBirthdayEffect"; readonly confetti: "com.apple.messages.effect.CKConfettiEffect"; readonly echo: "com.apple.messages.effect.CKEchoEffect"; readonly fireworks: "com.apple.messages.effect.CKFireworksEffect"; readonly gentle: "com.apple.MobileSMS.expressivesend.gentle"; readonly heart: "com.apple.messages.effect.CKHeartEffect"; readonly invisible: "com.apple.MobileSMS.expressivesend.invisibleink"; readonly lasers: "com.apple.messages.effect.CKLasersEffect"; readonly loud: "com.apple.MobileSMS.expressivesend.loud"; readonly slam: "com.apple.MobileSMS.expressivesend.impact"; readonly sparkles: "com.apple.messages.effect.CKSparklesEffect"; readonly spotlight: "com.apple.messages.effect.CKSpotlightEffect"; }; }; }>; type DefinedIMessagePlatform = typeof definedIMessage; type DefinedIMessageDefinition = DefinedIMessagePlatform extends Platform ? Definition : never; type IMessageDefinition = Omit & { message: NonNullable & { schema: typeof messageSchema; }; }; type PublicIMessagePlatform = Platform & Pick; export declare const imessage: PublicIMessagePlatform; //#endregion export { type BackgroundInput, type ContactCard, type CustomizedMiniApp, type CustomizedMiniAppInput, type CustomizedMiniAppLayout, type IMessageAppliedReaction, type IMessageAttachmentMetadata, type IMessageMention, type IMessageMessage, type IMessageMessageEffect, type IMessageMiniApp, type IMessageMiniAppLayout, type IMessagePlacedSticker, type IMessageReaction, type IMessageReactionRecord, type IMessageStickerPlacement, type IMessageTextFormat, read };