import type Redis from "ioredis";
import type { CreateZoomMeetingRequest, ExternalCalendarEvent, ConnectedAccountProvider, ConnectedAccountStatus, OAuthAccountProvider, RewriteMessageRequest } from "@slackwsh/contracts";
import { type EntityIdInput } from "./channels";
declare function publicWebUrl(): string;
declare function isOAuthProvider(provider: string): provider is OAuthAccountProvider;
export declare function listConnectedAccountStatuses(userId: EntityIdInput): Promise<ConnectedAccountStatus[]>;
export declare function saveOpenAiKey(userId: EntityIdInput, apiKey: string): Promise<ConnectedAccountStatus>;
export declare function disconnectIntegration(userId: EntityIdInput, provider: ConnectedAccountProvider): Promise<void>;
export declare function rewriteMessage(userId: EntityIdInput, input: RewriteMessageRequest): Promise<{
    text: string;
}>;
export declare function startOAuth(redis: Redis, userId: EntityIdInput, provider: OAuthAccountProvider, returnTo?: string): Promise<{
    url: string;
}>;
export declare function completeOAuth(redis: Redis, provider: OAuthAccountProvider, code: string, state: string): Promise<{
    returnTo: string;
}>;
export declare function listExternalCalendarEvents(userId: EntityIdInput, fromIso: string, toIso: string): Promise<ExternalCalendarEvent[]>;
export declare function createZoomMeeting(userId: EntityIdInput, input: CreateZoomMeetingRequest): Promise<{
    joinUrl: string;
    meetingId: string | number;
    startUrl?: string;
}>;
export declare function oauthCallbackRedirect(returnTo: string, ok: boolean, message?: string): string;
export { isOAuthProvider, publicWebUrl };
//# sourceMappingURL=integrations.d.ts.map