import type { ActivityStore } from "./activity-log.js"; import { type DiscordClient, type DiscordGuildIntegrationSummary } from "./discord-client.js"; import { type OperationStore } from "./operation-store.js"; import { type DiscordPermissionName } from "./permissions.js"; import type { ScopePolicy } from "./policy.js"; import type { RequestOptions } from "./types.js"; declare const PRIVACY_OMITTED_FIELDS: readonly ["account.id", "account.name", "application.description", "application.icon", "application.name", "application.owner", "application.team", "integration.name", "rawPayload", "user.avatar", "user.discriminator", "user.email", "user.globalName", "user.username"]; export interface IntegrationDeletionRequest { acknowledgeAssociatedBotKicked: boolean; acknowledgeAssociatedWebhooksRemoved: boolean; auditReason: string; guildId: string; integrationId: string; operationKey: string; } export interface NormalizedIntegrationDeletionRequest extends Omit { operationKeyHash: string; } export interface IntegrationAccessEvidence { appliedRoleIds: string[]; botAdministrator: boolean; botIsGuildOwner: boolean; complete: true; effectivePermissionNames: DiscordPermissionName[]; effectivePermissions: string; manageGuild: true; requiredPermission: "MANAGE_GUILD"; unknownPermissionBits: string; } export interface IntegrationPrivacyProjection { externalAccountIdentitiesProjectedOut: true; namesAndProfilesProjectedOut: true; omittedFields: typeof PRIVACY_OMITTED_FIELDS; persistence: "none"; rawPayloads: "omitted"; } export interface IntegrationInventoryResult { access: IntegrationAccessEvidence; applicationId: string; botId: string; guild: { id: string; name: string; }; integrations: DiscordGuildIntegrationSummary[]; page: { inventoryComplete: boolean; returned: number; safetyLimit: number; }; privacy: IntegrationPrivacyProjection; schemaVersion: number; status: "ok"; } export interface IntegrationDeletionPlan { access: IntegrationAccessEvidence; acknowledgments: { associatedBotKicked: boolean; associatedWebhooksRemoved: true; }; action: "delete"; applicationId: string; associatedBotMembership: { present: boolean; userId: string | null; }; auditReason: string; botId: string; createdAt: string; digest: string; guild: { id: string; name: string; }; inventory: DiscordGuildIntegrationSummary[]; operationKeyHash: string; page: { inventoryComplete: true; returned: number; safetyLimit: number; }; privacy: IntegrationPrivacyProjection; schemaVersion: number; status: "planned"; target: DiscordGuildIntegrationSummary; warnings: string[]; } export interface IntegrationDeletionResult { activityId: string; associatedBotUserId: string | null; guildId: string; integrationId: string; operationKeyHash: string; planDigest: string; schemaVersion: number; status: "completed"; targetApplicationId: string | null; verifiedAbsent: true; verifiedUnchanged: true; } export interface IntegrationServiceClient extends Pick { } export interface IntegrationServiceOptions { activityStore: ActivityStore; client: IntegrationServiceClient; clock?: () => Date; operationStore: OperationStore; planKey?: Uint8Array; policy: ScopePolicy; randomId?: () => string; } export declare function normalizeIntegrationDeletionRequest(request: IntegrationDeletionRequest): NormalizedIntegrationDeletionRequest; export declare class IntegrationService { #private; constructor(options: IntegrationServiceOptions); list(applicationId: string, botId: string, guildId: string, options?: RequestOptions): Promise; plan(applicationId: string, botId: string, request: IntegrationDeletionRequest, options?: RequestOptions): Promise; execute(applicationId: string, botId: string, request: IntegrationDeletionRequest, expectedDigest: string, options?: RequestOptions): Promise; } export {}; //# sourceMappingURL=integration-service.d.ts.map