import type { ActivityStore } from "./activity-log.js"; import { type ApplicationFlagEvidenceSource, type ApplicationPostureRequirements } from "./application-posture.js"; import type { DiscordClient } from "./discord-client.js"; import { type OperationStore } from "./operation-store.js"; import type { ScopePolicy } from "./policy.js"; import type { RequestOptions } from "./types.js"; export declare const APPLICATION_INTENTS: readonly ["guild-members", "message-content"]; export type ApplicationIntent = typeof APPLICATION_INTENTS[number]; export interface ApplicationIntentEnablementRequest { acknowledgePrivilegeExpansion: true; intent: ApplicationIntent; operationKey: string; reviewReason: string; } export interface NormalizedApplicationIntentEnablementRequest { acknowledgePrivilegeExpansion: true; intent: ApplicationIntent; operationKeyHash: string; reviewReason: string; } export interface ApplicationIntentState { enabled: boolean; evidenceSource: ApplicationFlagEvidenceSource; fullAuthorization: boolean; limitedToggle: boolean; } export interface ApplicationIntentEnablementPlan { applicationId: string; botId: string; createdAt: string; current: ApplicationIntentState; desired: { enabled: true; method: "limited-application-flag"; }; digest: string; effect: "change" | "none"; intent: ApplicationIntent; operationKeyHash: string; policyRequirement: "recommended" | "required"; privacy: { omittedFields: readonly [ "raw-application-flags", "review-reason", "raw-operation-key", "raw-discord-application" ]; persistence: "content-free-records-only"; }; risks: string[]; schemaVersion: number; status: "already-current" | "planned"; verification: { applicationIdentity: "exact"; flagTransition: "exact-additive-single-intent"; freshReadback: true; nonTargetFlags: "preserved"; response: "strict-current-application"; }; warnings: string[]; writeRequired: boolean; } export interface ApplicationIntentEnablementResult { activityId: string | null; applicationId: string; intent: ApplicationIntent; observed: ApplicationIntentState; operationKeyHash: string; planDigest: string; schemaVersion: number; status: "already-current" | "completed"; } export interface ApplicationIntentServiceClient { getCurrentApplication: DiscordClient["getCurrentApplication"]; modifyCurrentApplicationFlags: DiscordClient["modifyCurrentApplicationFlags"]; } export interface ApplicationIntentServiceOptions { activityStore: ActivityStore; client: ApplicationIntentServiceClient; clock?: () => Date; operationStore: OperationStore; planKey?: Uint8Array; policy: ScopePolicy; randomId?: () => string; } export declare function normalizeApplicationIntentEnablementRequest(request: ApplicationIntentEnablementRequest): NormalizedApplicationIntentEnablementRequest; export declare function applicationIntentPolicyRequirement(intent: ApplicationIntent, requirements: ApplicationPostureRequirements): "recommended" | "required"; export declare class ApplicationIntentService { #private; constructor(options: ApplicationIntentServiceOptions); plan(applicationId: string, botId: string, requirements: ApplicationPostureRequirements, request: ApplicationIntentEnablementRequest, options?: RequestOptions): Promise; execute(applicationId: string, botId: string, requirements: ApplicationPostureRequirements, request: ApplicationIntentEnablementRequest, expectedDigest: string, options?: RequestOptions): Promise; } //# sourceMappingURL=application-intent-service.d.ts.map