import type { ActivityStore } from "./activity-log.js"; import { type DiscordClient, type MessagePinPageOptions } from "./discord-client.js"; import { type OperationStore } from "./operation-store.js"; import type { ScopePolicy } from "./policy.js"; import { deletionPreview, normalizeChannel, normalizeMessage } from "./normalize.js"; import type { RequestOptions } from "./types.js"; export declare const MESSAGE_PIN_STATES: readonly ["pinned", "unpinned"]; export type MessagePinState = typeof MESSAGE_PIN_STATES[number]; export interface MessagePinRequest { auditReason: string; channelId: string; desiredState: MessagePinState; messageId: string; operationKey: string; } export interface NormalizedMessagePinRequest extends MessagePinRequest { desiredPinned: boolean; operationKeyHash: string; } export interface MessagePinPlan { action: "change" | "none"; applicationId: string; auditReason: string; botId: string; channel: ReturnType; createdAt: string; digest: string; guild: { id: string; name: string; }; message: ReturnType & { jumpUrl: string; pinned: boolean; type: number; }; operationKeyHash: string; permission: { administrator: boolean; canReadMessages: true; confidence: "complete"; effectivePermissions: string; permissionSourceChannelId: string; pinMessages: boolean; privateThreadAccess: "lookup-succeeded" | "not-applicable"; readMessageHistory: boolean; viewChannel: boolean; }; schemaVersion: number; status: "already-current" | "planned"; target: { desiredState: MessagePinState; pinned: boolean; }; warnings: string[]; } export interface MessagePinResult { activityId: string | null; channelId: string; guildId: string; messageSnapshotMatched: boolean; messageId: string; observedPinned: boolean; operationKeyHash: string; planDigest: string; schemaVersion: number; status: "already-current" | "completed" | "completed-with-drift"; url: string; } export interface MessagePinListResult { channel: ReturnType; guildId: string; page: { hasMore: boolean; nextCursor: string | null; requestedLimit: number; returned: number; }; pins: Array<{ message: ReturnType; pinnedAt: string; }>; schemaVersion: number; status: "ok"; } export interface MessagePinServiceClient extends Pick { } export interface MessagePinServiceOptions { activityStore: ActivityStore; client: MessagePinServiceClient; clock?: () => Date; operationStore: OperationStore; planKey?: Uint8Array; policy: ScopePolicy; randomId?: () => string; } export declare function normalizeMessagePinRequest(request: MessagePinRequest): NormalizedMessagePinRequest; export declare class MessagePinService { #private; constructor(options: MessagePinServiceOptions); list(channelId: string, options?: MessagePinPageOptions): Promise; plan(applicationId: string, botId: string, request: MessagePinRequest, options?: RequestOptions): Promise; execute(applicationId: string, botId: string, request: MessagePinRequest, expectedDigest: string, options?: RequestOptions): Promise; } //# sourceMappingURL=message-pin-service.d.ts.map