import type { ActivityStore } from "./activity-log.js"; import type { DiscordClient } from "./discord-client.js"; import { type OperationStore } from "./operation-store.js"; import type { ScopePolicy } from "./policy.js"; import type { DiscordApplicationCommand, RequestOptions } from "./types.js"; export declare const NATIVE_INTERACTION_COMMAND_ACTIONS: readonly ["install", "remove"]; export type NativeInteractionCommandAction = typeof NATIVE_INTERACTION_COMMAND_ACTIONS[number]; export interface NativeInteractionCommandRequest { action: NativeInteractionCommandAction; guildId: string; operationKey: string; } export interface NativeInteractionCommandContract { defaultMemberPermissions: "0"; description: string; guildOnly: true; name: string; nsfw: false; option: { description: string; maximumLength: number; minimumLength: 1; name: "request"; required: true; type: "string"; }; type: "chat-input"; } export interface NativeInteractionCommandPlan { action: NativeInteractionCommandAction; applicationId: string; botId: string; command: { contract: NativeInteractionCommandContract; id: string | null; version: string | null; }; createdAt: string; digest: string; guild: { id: string; name: string; }; inventory: { chatInputCount: number; chatInputLimit: number; totalCount: number; }; mutation: "create" | "delete" | "none"; operationKeyHash: string; schemaVersion: number; status: "already-absent" | "already-installed" | "planned"; warnings: string[]; } export interface NativeInteractionCommandResult { action: NativeInteractionCommandAction; activityId: string | null; commandId: string | null; guildId: string; operationKeyHash: string; planDigest: string; readbackMatched: boolean; schemaVersion: number; status: "already-absent" | "already-installed" | "completed"; } export interface NativeInteractionCommandServiceClient extends Pick { } export interface NativeInteractionCommandServiceOptions { activityStore: ActivityStore; client: NativeInteractionCommandServiceClient; clock?: () => Date; commandName: string; operationStore: OperationStore; planKey?: Uint8Array; policy: ScopePolicy; randomId?: () => string; } export declare function nativeInteractionCommandContract(commandName: string): NativeInteractionCommandContract; export declare function exactNativeInteractionCommand(value: unknown, applicationId: string, guildId: string, contract: NativeInteractionCommandContract): DiscordApplicationCommand | undefined; export declare class NativeInteractionCommandService { #private; constructor(options: NativeInteractionCommandServiceOptions); plan(applicationId: string, botId: string, request: NativeInteractionCommandRequest, options?: RequestOptions): Promise; execute(applicationId: string, botId: string, request: NativeInteractionCommandRequest, expectedDigest: string, options?: RequestOptions): Promise; } //# sourceMappingURL=native-interaction-command-service.d.ts.map