import { LMSConfig, LMSTeachMeConfig } from '../store/useLMSConfigStore';
/** * Interface representing the structure of the JSON payload
 * for variant/rule configuration feedback.
 */
export interface PublishFeedbackPayload {
    status: 'approved' | 'rejected';
    metadata: {
        userName: string;
        userEmailId: string;
        llm: string;
        isVariantFlow: boolean;
        config?: {
            master_name: string;
            config_structure?: {
                scheduling_config: any;
            };
            config_data?: {
                scheduling_config: any;
            };
        };
        datasource?: {
            type: string;
            ref: string;
            tag: string;
        };
        variant: {
            variant: string;
            conditions_whentoapply: string;
            conditions_whennottoapply: string;
            referenceVariantID?: string | null;
            referenceVariantIDVersion?: string | null;
            scope: {
                name: string;
                parentScopeId: string | null;
                scopeRowId: string | null;
                value: {
                    scopeName: string;
                    scopeId: string;
                    customScopeGroupName?: string;
                    description?: string;
                };
            };
            overriden: boolean;
            isDefault: boolean;
            tier: {
                name: string;
                tierGroupName: string;
                tierPriority: number;
                tier_id?: string;
            };
            topic: {
                id: string | null;
                value: string;
                description: string | null;
            };
            categories: Array<{
                id: string | null;
                value: string;
                description: string | null;
            }>;
            originalQuestion: string;
            questionId?: string | null;
            variantType?: string | null;
            variant_type?: string | null;
            parameterizedQuestion: string | null;
            created_at: string;
            created_by: string;
            instantLearningType: string;
            appliedTagsIL: string[];
            tagMappingInfoIL: Record<string, string>;
            tierLinkId?: string | null;
            /** Whether the user accepted risk flagged by the Validation Agent */
            is_user_accepted_risk?: boolean;
        };
        isAgentsFeedback: boolean;
    };
    appsecData?: {
        application: string;
        scopeLevelModuleId: string;
        applicationLevelModuleId: string;
        applicationLevelResourceId: string;
    };
}
export interface SaveInstantLearningQuestionPayload {
    question: string;
    orgName: string;
    scope_id?: string;
    tier_id?: string;
}
export interface ChatFeedbackPayload {
    user_id: string;
    user_name: string;
    user_email: string;
    assistant_name: string;
    what_went_wrong: string;
    severity: string;
    user_query: string;
    query_time: string;
    session_id: string;
    request_id: string;
}
export interface RetrieveGenreScopesPayload {
    limit?: string | number;
    offset?: string | number;
}
export interface SearchScopesPayload {
    search_string: string;
    limit?: string | number;
}
export declare const audacyApi: any;
declare const llmApi: any;
export declare const appsecApi: any;
export declare const appsecApigetUser: any;
export declare const llmApiWithToken: (token: string) => any;
export default llmApi;
/**
 * Publishes variant feedback and rule configurations to the LLM Studio endpoint.
 * This respects the VITE_LLM_STUDIO_URL configuration.
 */
export declare const publishFeedback: (payload: any, assistantName: string) => Promise<any>;
export declare const submitChatFeedback: (payload: ChatFeedbackPayload) => Promise<any>;
export declare const saveInstantLearningQuestion: (payload: SaveInstantLearningQuestionPayload) => Promise<any>;
export declare const fetchScopes: (appIntegrationId: string | undefined, token: string) => Promise<any>;
interface RenameScopePayload {
    scope_id: string;
    scope_name: string;
}
export declare const renameScope: (payload: RenameScopePayload) => Promise<any>;
export declare const getRulesInRuleSetById: (ruleSetId: string, token: string) => Promise<any>;
export declare const getRuleOverrideHistory: (variantId: string) => Promise<any>;
export declare const createRuleSet: (payload: any, token: string) => Promise<any>;
export declare const fetchStationsByKeyword: (keyword: string, includeOnboarded?: boolean) => Promise<any>;
export declare const saveRuleSet: (payload: any) => Promise<any>;
export declare const deleteRuleSet: (ruleSetId: string, token: string) => Promise<any>;
export declare const deleteRule: (ruleId: string) => Promise<any>;
export declare const deleteQuestion: (questionId: string) => Promise<any>;
export declare const deleteTier: (scopeId: string, tierId: string) => Promise<any>;
/**
 * Payload for updating a variant during edit flow.
 */
export interface UpdateVariantPayload {
    /** Variant ID to update */
    variantId: string;
    /** Variant description */
    ruleDesc: string;
    /** Conditions for when to apply (joined by " OR ") */
    whenToApply: string;
    /** Conditions for when NOT to apply (joined by " OR ") */
    whenNotToApply: string;
    /** Whether this is the default variant */
    isDefault: boolean;
    /** Tier object with full details */
    tier: {
        tier_id: string;
        tier_name: string;
        tier_priority: number | null;
    };
    /** Scope/RuleSet ID */
    scope_id: string;
    /** Scope/RuleSet description */
    description: string;
    /** Topic (e.g., "customRuleSet") */
    topic: string;
    /** Configuration payload */
    configuration: Record<string, any> | null;
    /** Link ID for linking variants across tiers */
    tierLinkId?: string | null;
    /** Data source reference for the variant */
    dataSource?: {
        type: string;
        ref: string;
        tag: string;
    };
    /** Inheritance chain (e.g. ["Global Rules"]) */
    inheritance?: string[];
    variantType?: string;
    /** Whether the user accepted risk flagged by the Validation Agent */
    is_user_accepted_risk?: boolean;
    /** Whether the variant is enabled */
    is_enabled?: boolean;
}
/**
 * Update a variant during edit flow.
 * Currently a mock implementation that logs the payload.
 * @param payload - The variant update payload
 * @returns Promise with success response
 */
export declare const updateVariant: (payload: UpdateVariantPayload, updatedBy: string) => Promise<any>;
/**
 * Backward Compatible w/o app mapping ID
 */
export interface InheritScopePayloadBackwardCompatible {
    source_scope_id: string;
    target_scope_id: string;
    is_copy_parent_variant_id?: boolean;
}
/**
 * Payload for federated ILOTJ
 */
export interface InheritScopePayload {
    source_scope_id: string;
    target_scope_id: string;
    is_copy_parent_variant_id?: boolean;
    application_mapping_id: string;
}
/**
 * Old Inherit scope used for Audacy backward compatibility
 * @param payload
 * @returns
 * @deprecated
 */
export declare const inheritScopeBackwardCompatible: (payload: InheritScopePayloadBackwardCompatible) => Promise<any>;
/**
 * New Inherit Scope with App Mapping ID support
 * @param payload
 * @returns
 */
export declare const inheritScope: (payload: InheritScopePayload) => Promise<any>;
export interface UpdateStationPayload {
    station_name: string;
    market?: string;
    region?: string;
    timezone?: string;
    primetime_windows?: string[];
    genre?: string;
    station_type?: string | null;
    low_sellout_configurations?: string | null;
    ruleset_id?: string;
    station_guid?: string;
    description?: string;
}
export declare const updateStation: (payload: UpdateStationPayload) => Promise<any>;
export declare const exportRuleSet: (scopeId: string) => Promise<any>;
export declare const toggleVariant: (variantIds: string[], isEnabled: boolean, updatedBy: string) => Promise<any>;
export declare const fetchTiers: () => Promise<void>;
export declare const alterQuestionPriority: (scopeId: string, tierId: string, movedRuleId: string, prevRuleId: string | null, nextRuleId: string | null) => Promise<any>;
export declare const fetchRulesByQuestionId: (questionId: string, scopeId: string) => Promise<any>;
export declare const retrieveGenreScopes: (payload?: RetrieveGenreScopesPayload) => Promise<any>;
export declare const searchScopes: (payload: SearchScopesPayload) => Promise<any>;
/**
 * Mock API to get stations for a specific scope ID.
 * Replace with real API endpoint when available.
 */
export declare const getStationsByScopeId: (scopeId: string) => Promise<any>;
export interface ValidateSessionPayload {
    session_start_time: string;
    scope_id: string;
}
export declare const validateSession: (payload: ValidateSessionPayload) => Promise<boolean>;
export interface AppsecGroup {
    _id: string;
    name: string;
    description: string;
    appId: string;
    users: string[];
    createdBy: string;
    isActive: boolean;
    createdAt: string;
    updatedAt: string;
}
export interface AppsecGroupsPagination {
    enabled: boolean;
    page: number;
    limit: number;
    totalItems: number;
    totalPages: number;
    hasNextPage: boolean;
    hasPrevPage: boolean;
}
export interface GetAppsecAuthApiResponse {
    createdAt?: string;
    departments?: string[];
    firstName?: string;
    joinedOn?: string;
    email?: string;
    lastname?: string;
    resetToken?: string;
    role?: string[];
    status?: string;
    userValidity?: string;
    _id: string;
}
export interface AppsecGetUserGroupsParams {
    appId?: string;
    name?: string;
    user?: string;
    isActive?: boolean;
    page?: number;
    limit?: number;
    pagination?: boolean;
}
export interface AppsecGetUserGroupsResponse {
    success: boolean;
    message: string;
    data: AppsecGroup[];
    pagination: AppsecGroupsPagination;
}
export declare const appsecGetUsersByQueryLite: (searchQuery: string, options?: {
    isPopulateRoles?: boolean | undefined;
    isPopulatePermissions?: boolean | undefined;
    isPopulateApps?: boolean | undefined;
    isPopulateEnvironments?: boolean | undefined;
    isPopulateOperations?: boolean | undefined;
    isPopulateGroups?: boolean | undefined;
    isPopulateOrganization?: boolean | undefined;
} | undefined) => Promise<GetAppsecAuthApiResponse>;
export declare const appsecGetUserGroups: (params?: AppsecGetUserGroupsParams) => Promise<AppsecGetUserGroupsResponse>;
export interface IApproveOrRejectParams {
    variant_ids: string[];
    status: string;
    feedback?: string;
    scopeId: string;
    is_deleted?: boolean;
    appsecData?: {
        application: string;
        scopeLevelModuleId: string;
        applicationLevelModuleId: string;
        applicationLevelResourceId: string;
    };
}
export declare const ApproveOrRejectVariants: ({ variant_ids, status, feedback, scopeId, is_deleted, appsecData, }: IApproveOrRejectParams) => Promise<any>;
export declare const GetAppsecRoles: (appId: string) => Promise<any>;
export declare const requestAccess: (scopeId: string) => Promise<any>;
export interface ValueTypeConfigResult {
    lmsConfig: LMSConfig | null;
    teachMeConfig: LMSTeachMeConfig | null;
    template: string | null;
}
export declare function fetchLMSConfig(baseUrl: string, appIntegrationId: string, token: string): Promise<ValueTypeConfigResult>;
//# sourceMappingURL=scopeApis.d.ts.map