export interface MicrosoftSubscription {
    id: string;
    resource: string;
    changeType?: string;
    clientState?: string;
    notificationUrl?: string;
    expirationDateTime?: string;
    creatorId?: string;
}
export type SubscriptionFilter = (subscription: MicrosoftSubscription) => boolean;
export interface SubscriptionCleanupOptions {
    accessToken: string;
    filter?: SubscriptionFilter;
}
export interface SubscriptionCleanupResult {
    totalFound: number;
    successfullyDeleted: number;
    failedToDelete: number;
    deletedSubscriptionIds: string[];
    errors: Array<{
        subscriptionId: string;
        error: string;
    }>;
}
export declare class MicrosoftSubscriptionService {
    private readonly logger;
    private readonly graphApiBaseUrl;
    private readonly msAuthUrl;
    getActiveSubscriptions(accessToken: string): Promise<MicrosoftSubscription[]>;
    getActiveSubscriptionsForClient(clientId: number, accessToken: string): Promise<MicrosoftSubscription[]>;
    getActiveSubscriptionsForUser(userId: number, accessToken: string): Promise<MicrosoftSubscription[]>;
    deleteSubscription(subscriptionId: string, accessToken: string): Promise<void>;
    cleanupSubscriptions(options: SubscriptionCleanupOptions): Promise<SubscriptionCleanupResult>;
    cleanupSubscriptionsForClient(clientId: number, accessToken: string): Promise<SubscriptionCleanupResult>;
    cleanupSubscriptionsForUser(userId: number, accessToken: string): Promise<SubscriptionCleanupResult>;
    revokeTokens(refreshToken: string): Promise<void>;
    fullCleanup(refreshToken: string, accessToken: string, filter?: SubscriptionFilter): Promise<SubscriptionCleanupResult>;
}
