import type { AgentIntegrationProviderRegion, AgentIntegrationSetupSession, AgentIntegrationSummary } from "@rudderhq/shared";
export interface FeishuAppRegistrationResult {
    appId: string;
    appSecret: string;
    installerUserId: string | null;
    installerUnionId: string | null;
}
export interface FeishuAppRegistrar {
    register(input: {
        providerRegion: AgentIntegrationProviderRegion;
        suggestedBotName: string;
        source: string;
        signal: AbortSignal;
        onSetupUrl: (info: {
            setupUrl: string;
            expireInSeconds: number;
        }) => void;
        onStatusChange: (detail: string) => void;
    }): Promise<FeishuAppRegistrationResult>;
}
export declare function createFeishuNodeSdkAppRegistrar(): FeishuAppRegistrar;
export declare function feishuAppRegistrationSessionRegistry(registrar?: FeishuAppRegistrar): {
    start: (input: {
        orgId: string;
        agentId: string;
        providerRegion: AgentIntegrationProviderRegion;
        suggestedBotName: string;
        onAuthorizationComplete?: (result: FeishuAppRegistrationResult, session: AgentIntegrationSetupSession) => Promise<AgentIntegrationSetupSession>;
    }) => Promise<AgentIntegrationSetupSession>;
    get: (input: {
        id: string;
        orgId: string;
        agentId: string;
    }) => AgentIntegrationSetupSession | null;
    takeResult: (input: {
        id: string;
        orgId: string;
        agentId: string;
    }) => FeishuAppRegistrationResult | null;
    markCompleted: (input: {
        id: string;
        orgId: string;
        agentId: string;
        integration: AgentIntegrationSummary;
    }) => AgentIntegrationSetupSession | null;
    dispose: (id: string) => void;
};
export declare const defaultFeishuAppRegistrationSessions: {
    start: (input: {
        orgId: string;
        agentId: string;
        providerRegion: AgentIntegrationProviderRegion;
        suggestedBotName: string;
        onAuthorizationComplete?: (result: FeishuAppRegistrationResult, session: AgentIntegrationSetupSession) => Promise<AgentIntegrationSetupSession>;
    }) => Promise<AgentIntegrationSetupSession>;
    get: (input: {
        id: string;
        orgId: string;
        agentId: string;
    }) => AgentIntegrationSetupSession | null;
    takeResult: (input: {
        id: string;
        orgId: string;
        agentId: string;
    }) => FeishuAppRegistrationResult | null;
    markCompleted: (input: {
        id: string;
        orgId: string;
        agentId: string;
        integration: AgentIntegrationSummary;
    }) => AgentIntegrationSetupSession | null;
    dispose: (id: string) => void;
};
//# sourceMappingURL=app-registration.d.ts.map