/**
 * Interface for Okta client operations
 */
import type { OktaUser, OktaGroup, OktaApplication, OktaPolicy, OktaPolicyRule } from './types.js';
export interface ApiResponse<T> {
    data: T;
    headers?: {
        link?: string;
        [key: string]: string | undefined;
    };
}
export interface IOktaClient {
    listUsers(params?: {
        limit?: number;
        after?: string;
        filter?: string;
        search?: string;
        status?: string;
        lastUpdated?: string;
        sortBy?: string;
        sortOrder?: 'asc' | 'desc';
    }): Promise<ApiResponse<OktaUser[]>>;
    getUser(userIdOrLogin: string): Promise<OktaUser>;
    createUser(userData: {
        profile: Record<string, unknown>;
        credentials?: Record<string, unknown>;
        groupIds?: string[];
    }, queryParams?: {
        activate?: boolean;
        provider?: boolean;
        nextLogin?: string;
    }): Promise<OktaUser>;
    updateUser(userId: string, userData: {
        profile?: Record<string, unknown>;
        credentials?: Record<string, unknown>;
    }): Promise<OktaUser>;
    deactivateUser(userId: string, sendEmail?: boolean): Promise<void>;
    deleteUser(userId: string): Promise<void>;
    getUserGroups(userId: string, params?: {
        limit?: number;
        after?: string;
    }): Promise<ApiResponse<OktaGroup[]>>;
    listGroups(params?: {
        limit?: number;
        after?: string;
        filter?: string;
        search?: string;
        type?: string;
        sortBy?: string;
        sortOrder?: 'asc' | 'desc';
    }): Promise<ApiResponse<OktaGroup[]>>;
    getGroup(groupId: string): Promise<OktaGroup>;
    createGroup(groupData: {
        profile: {
            name: string;
            description?: string;
        };
    }): Promise<OktaGroup>;
    updateGroup(groupId: string, groupData: {
        profile: {
            name?: string;
            description?: string;
        };
    }): Promise<OktaGroup>;
    deleteGroup(groupId: string): Promise<void>;
    listGroupMembers(groupId: string, params?: {
        limit?: number;
        after?: string;
    }): Promise<ApiResponse<OktaUser[]>>;
    addGroupMember(groupId: string, userId: string): Promise<void>;
    removeGroupMember(groupId: string, userId: string): Promise<void>;
    getLogs(params?: {
        since?: string;
        until?: string;
        filter?: string;
        q?: string;
        limit?: number;
        sortOrder?: 'ASCENDING' | 'DESCENDING';
        after?: string;
    }): Promise<ApiResponse<unknown[]>>;
    listApps(params?: {
        limit?: number;
        after?: string;
        filter?: string;
        q?: string;
        expand?: string;
    }): Promise<ApiResponse<OktaApplication[]>>;
    getApp(appId: string, expand?: string): Promise<OktaApplication>;
    createApp(appData: {
        name: string;
        label: string;
        signOnMode: string;
        status?: string;
        accessibility?: Record<string, unknown>;
        visibility?: Record<string, unknown>;
        features?: string[];
        settings?: Record<string, unknown>;
        credentials?: Record<string, unknown>;
        licensing?: Record<string, unknown>;
    }): Promise<OktaApplication>;
    updateApp(appId: string, appData: {
        name?: string;
        label?: string;
        status?: string;
        accessibility?: Record<string, unknown>;
        visibility?: Record<string, unknown>;
        features?: string[];
        settings?: Record<string, unknown>;
        credentials?: Record<string, unknown>;
        licensing?: Record<string, unknown>;
    }): Promise<OktaApplication>;
    deleteApp(appId: string): Promise<void>;
    activateApp(appId: string): Promise<void>;
    deactivateApp(appId: string): Promise<void>;
    assignUserToApp(appId: string, userId: string, assignmentData?: {
        profile?: Record<string, unknown>;
        credentials?: Record<string, unknown>;
    }): Promise<unknown>;
    assignGroupToApp(appId: string, groupId: string, assignmentData?: {
        priority?: number;
        profile?: Record<string, unknown>;
    }): Promise<unknown>;
    removeUserFromApp(appId: string, userId: string, sendEmail?: boolean): Promise<void>;
    removeGroupFromApp(appId: string, groupId: string): Promise<void>;
    listAppUsers(appId: string, params?: {
        limit?: number;
        after?: string;
        q?: string;
        filter?: string;
        expand?: string;
    }): Promise<ApiResponse<unknown[]>>;
    listAppGroups(appId: string, params?: {
        limit?: number;
        after?: string;
        q?: string;
        expand?: string;
    }): Promise<ApiResponse<unknown[]>>;
    updateAppUser(appId: string, userId: string, updateData: {
        profile?: Record<string, unknown>;
        credentials?: Record<string, unknown>;
    }): Promise<unknown>;
    listPolicies(params?: {
        type: string;
        status?: string;
        limit?: number;
        after?: string;
        sortBy?: string;
        sortOrder?: 'asc' | 'desc';
        filter?: string;
    }): Promise<ApiResponse<OktaPolicy[]>>;
    getPolicy(policyId: string, expand?: string): Promise<OktaPolicy>;
    createPolicy(policyData: {
        name: string;
        type: string;
        description?: string;
        priority?: number;
        status?: string;
        conditions?: Record<string, unknown>;
        settings?: Record<string, unknown>;
    }): Promise<OktaPolicy>;
    updatePolicy(policyId: string, policyData: {
        name?: string;
        description?: string;
        priority?: number;
        status?: string;
        conditions?: Record<string, unknown>;
        settings?: Record<string, unknown>;
    }): Promise<OktaPolicy>;
    deletePolicy(policyId: string): Promise<void>;
    activatePolicy(policyId: string): Promise<void>;
    deactivatePolicy(policyId: string): Promise<void>;
    listPolicyRules(policyId: string, params?: {
        limit?: number;
        after?: string;
    }): Promise<ApiResponse<OktaPolicyRule[]>>;
    getPolicyRule(policyId: string, ruleId: string): Promise<OktaPolicyRule>;
    createPolicyRule(policyId: string, ruleData: {
        name: string;
        priority?: number;
        status?: string;
        type?: string;
        conditions?: Record<string, unknown>;
        actions?: Record<string, unknown>;
    }): Promise<OktaPolicyRule>;
    updatePolicyRule(policyId: string, ruleId: string, ruleData: {
        name?: string;
        priority?: number;
        status?: string;
        conditions?: Record<string, unknown>;
        actions?: Record<string, unknown>;
    }): Promise<OktaPolicyRule>;
    deletePolicyRule(policyId: string, ruleId: string): Promise<void>;
    activatePolicyRule(policyId: string, ruleId: string): Promise<void>;
    deactivatePolicyRule(policyId: string, ruleId: string): Promise<void>;
    close(): Promise<void>;
}
//# sourceMappingURL=okta-client-interface.d.ts.map