import type { ActivityStore } from "./activity-log.js"; import type { DiscordClient } from "./discord-client.js"; import { type GuildApplicationCommandDefinition, type GuildApplicationCommandType, type ProjectedGuildApplicationCommand } from "./guild-application-command-definition.js"; import { type OperationStore } from "./operation-store.js"; import type { ScopePolicy } from "./policy.js"; import type { RequestOptions } from "./types.js"; export declare const GUILD_APPLICATION_COMMAND_ACTIONS: readonly ["create", "delete", "update"]; export type GuildApplicationCommandAction = typeof GUILD_APPLICATION_COMMAND_ACTIONS[number]; export interface CreateGuildApplicationCommandRequest { action: "create"; definition: GuildApplicationCommandDefinition; guildId: string; operationKey: string; } export interface UpdateGuildApplicationCommandRequest { action: "update"; commandId: string; definition: GuildApplicationCommandDefinition; guildId: string; operationKey: string; } export interface DeleteGuildApplicationCommandRequest { acknowledgeDeletion: true; action: "delete"; commandId: string; guildId: string; operationKey: string; } export type GuildApplicationCommandChangeRequest = CreateGuildApplicationCommandRequest | DeleteGuildApplicationCommandRequest | UpdateGuildApplicationCommandRequest; interface NormalizedRequestBase { action: GuildApplicationCommandAction; guildId: string; operationKeyHash: string; } export type NormalizedGuildApplicationCommandChangeRequest = (Omit & NormalizedRequestBase) | (Omit & NormalizedRequestBase) | (Omit & NormalizedRequestBase); export interface GuildApplicationCommandInventoryEntry { commandId: string; definitionDigest: string; name: string; type: GuildApplicationCommandType; version: string; } export interface GuildApplicationCommandPermissionOverwrite { allowed: boolean; id: string; type: 1 | 2 | 3; } export interface GuildApplicationCommandPermissionEntry { commandId: string; entryDigest: string; overwriteCount: number; } export interface GuildApplicationCommandPermissionTarget { commandId: string; entryDigest: string; overwrites: GuildApplicationCommandPermissionOverwrite[]; } export interface GuildApplicationCommandPlan { action: GuildApplicationCommandAction; applicationId: string; botId: string; commandId: string | null; commandType: GuildApplicationCommandType | null; createdAt: string; desiredDefinition: GuildApplicationCommandDefinition | null; desiredDefinitionDigest: string | null; digest: string; effect: "change" | "none"; existingDefinition: GuildApplicationCommandDefinition | null; existingDefinitionDigest: string | null; guild: { id: string; name: string; }; inventory: { counts: Record; digest: string; entries: GuildApplicationCommandInventoryEntry[]; limits: Record; returned: number; totalLimit: number; }; operationKeyHash: string; permissionEffect: "none" | "target-overwrites-cleared-by-discord"; permissions: { digest: string; entries: GuildApplicationCommandPermissionEntry[]; returned: number; target: GuildApplicationCommandPermissionTarget | null; }; privacy: { definitionsPersisted: false; namesPersisted: false; permissionTargetsPersisted: false; planTextTransient: true; }; risks: string[]; schemaVersion: number; status: "already-absent" | "already-current" | "planned"; verification: { commandInventory: "exact-full-localization-readback"; permissionInventory: "exact-survivor-readback"; retriesAfterReservation: false; }; warnings: string[]; writeRequired: boolean; } export interface GuildApplicationCommandResult { action: GuildApplicationCommandAction; activityId: string | null; applicationId: string; commandId: string; commandType: GuildApplicationCommandType | null; guildId: string; observed: ProjectedGuildApplicationCommand | null; observedInventoryDigest: string; observedPermissionDigest: string; operationKeyHash: string; planDigest: string; readbackMatched: true; schemaVersion: number; status: "already-absent" | "already-current" | "completed"; } export interface GuildApplicationCommandServiceClient extends Pick { } export interface GuildApplicationCommandServiceOptions { activityStore: ActivityStore; client: GuildApplicationCommandServiceClient; clock?: () => Date; operationStore: OperationStore; planKey?: Uint8Array; policy: ScopePolicy; randomId?: () => string; } export declare function normalizeGuildApplicationCommandChangeRequest(request: GuildApplicationCommandChangeRequest): NormalizedGuildApplicationCommandChangeRequest; export declare class GuildApplicationCommandService { #private; constructor(options: GuildApplicationCommandServiceOptions); plan(applicationId: string, botId: string, request: GuildApplicationCommandChangeRequest, options?: RequestOptions): Promise; execute(applicationId: string, botId: string, request: GuildApplicationCommandChangeRequest, expectedDigest: string, options?: RequestOptions): Promise; } export {}; //# sourceMappingURL=guild-application-command-service.d.ts.map