import type { ActivityStore } from "./activity-log.js"; import { type ApplicationRoleConnectionMetadataDefinition } from "./application-role-connection-metadata-definition.js"; import type { DiscordClient } from "./discord-client.js"; import { type OperationStore } from "./operation-store.js"; import type { ScopePolicy } from "./policy.js"; import type { DiscordApplication, RequestOptions } from "./types.js"; export interface ReplaceApplicationRoleConnectionMetadataRequest { acknowledgeGlobalReplacement: true; action: "replace"; operationKey: string; records: ApplicationRoleConnectionMetadataDefinition[]; } export interface ClearApplicationRoleConnectionMetadataRequest { acknowledgeSchemaClearance: true; action: "clear"; operationKey: string; } export type ApplicationRoleConnectionMetadataChangeRequest = ClearApplicationRoleConnectionMetadataRequest | ReplaceApplicationRoleConnectionMetadataRequest; interface NormalizedRequestBase { action: "clear" | "replace"; operationKeyHash: string; } export type NormalizedApplicationRoleConnectionMetadataChangeRequest = (Omit & NormalizedRequestBase) | (Omit & NormalizedRequestBase); export interface ApplicationRoleConnectionMetadataDiff { added: number; changed: number; removed: number; reordered: boolean; unchanged: number; } export interface ApplicationRoleConnectionMetadataPlan { acknowledgement: "application-wide-replacement" | "complete-schema-clearance"; action: "clear" | "replace"; applicationId: string; botId: string; createdAt: string; current: ApplicationRoleConnectionMetadataDefinition[]; currentSchemaDigest: string; desired: ApplicationRoleConnectionMetadataDefinition[]; desiredSchemaDigest: string; diff: ApplicationRoleConnectionMetadataDiff; digest: string; effect: "change" | "none"; operationKeyHash: string; privacy: { definitionsPersisted: false; omitted: readonly [ "guild-role-configuration", "raw-discord-payloads", "user-role-connection-values", "verification-endpoint-url" ]; text: "transient-untrusted"; }; risks: string[]; schemaVersion: number; status: "already-current" | "already-empty" | "planned"; verification: { applicationIdentity: "exact"; independentReadback: true; requestRetries: false; response: "exact-complete-schema"; }; verificationEndpointConfigured: boolean; warnings: string[]; writeRequired: boolean; } export interface ApplicationRoleConnectionMetadataResult { action: "clear" | "replace"; activityId: string | null; applicationId: string; botId: string; observed: ApplicationRoleConnectionMetadataDefinition[]; observedSchemaDigest: string; operationKeyHash: string; planDigest: string; schemaVersion: number; status: "already-current" | "already-empty" | "completed"; } export interface ApplicationRoleConnectionMetadataServiceClient { listApplicationRoleConnectionMetadata: DiscordClient["listApplicationRoleConnectionMetadata"]; replaceApplicationRoleConnectionMetadata: DiscordClient["replaceApplicationRoleConnectionMetadata"]; } export interface ApplicationRoleConnectionMetadataServiceOptions { activityStore: ActivityStore; client: ApplicationRoleConnectionMetadataServiceClient; clock?: () => Date; operationStore: OperationStore; planKey?: Uint8Array; policy: ScopePolicy; randomId?: () => string; } export declare function normalizeApplicationRoleConnectionMetadataChangeRequest(request: ApplicationRoleConnectionMetadataChangeRequest): NormalizedApplicationRoleConnectionMetadataChangeRequest; export declare class ApplicationRoleConnectionMetadataService { #private; constructor(options: ApplicationRoleConnectionMetadataServiceOptions); plan(application: DiscordApplication, botId: string, request: ApplicationRoleConnectionMetadataChangeRequest, options?: RequestOptions): Promise; execute(application: DiscordApplication, botId: string, request: ApplicationRoleConnectionMetadataChangeRequest, expectedDigest: string, options?: RequestOptions): Promise; } export {}; //# sourceMappingURL=application-role-connection-metadata-service.d.ts.map