/* tslint:disable */
/* eslint-disable */
/**
 * authentik
 * Making authentication simple.
 *
 * The version of the OpenAPI document: 2025.10.0-rc1
 * Contact: hello@goauthentik.io
 *
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */

import { mapValues } from '../runtime';
import type { FlowStageBinding } from './FlowStageBinding';
import {
    FlowStageBindingFromJSON,
    FlowStageBindingFromJSONTyped,
    FlowStageBindingToJSON,
    FlowStageBindingToJSONTyped,
} from './FlowStageBinding';

/**
 * Serializer for an active FlowPlan
 * @export
 * @interface FlowInspectorPlan
 */
export interface FlowInspectorPlan {
    /**
     * 
     * @type {FlowStageBinding}
     * @memberof FlowInspectorPlan
     */
    readonly currentStage: FlowStageBinding;
    /**
     * 
     * @type {FlowStageBinding}
     * @memberof FlowInspectorPlan
     */
    readonly nextPlannedStage: FlowStageBinding;
    /**
     * Get the plan's context, sanitized
     * @type {{ [key: string]: any; }}
     * @memberof FlowInspectorPlan
     */
    readonly planContext: { [key: string]: any; };
    /**
     * Get a unique session ID
     * @type {string}
     * @memberof FlowInspectorPlan
     */
    readonly sessionId: string;
}

/**
 * Check if a given object implements the FlowInspectorPlan interface.
 */
export function instanceOfFlowInspectorPlan(value: object): value is FlowInspectorPlan {
    if (!('currentStage' in value) || value['currentStage'] === undefined) return false;
    if (!('nextPlannedStage' in value) || value['nextPlannedStage'] === undefined) return false;
    if (!('planContext' in value) || value['planContext'] === undefined) return false;
    if (!('sessionId' in value) || value['sessionId'] === undefined) return false;
    return true;
}

export function FlowInspectorPlanFromJSON(json: any): FlowInspectorPlan {
    return FlowInspectorPlanFromJSONTyped(json, false);
}

export function FlowInspectorPlanFromJSONTyped(json: any, ignoreDiscriminator: boolean): FlowInspectorPlan {
    if (json == null) {
        return json;
    }
    return {
        
        'currentStage': FlowStageBindingFromJSON(json['current_stage']),
        'nextPlannedStage': FlowStageBindingFromJSON(json['next_planned_stage']),
        'planContext': json['plan_context'],
        'sessionId': json['session_id'],
    };
}

export function FlowInspectorPlanToJSON(json: any): FlowInspectorPlan {
    return FlowInspectorPlanToJSONTyped(json, false);
}

export function FlowInspectorPlanToJSONTyped(value?: Omit<FlowInspectorPlan, 'current_stage'|'next_planned_stage'|'plan_context'|'session_id'> | null, ignoreDiscriminator: boolean = false): any {
    if (value == null) {
        return value;
    }

    return {
        
    };
}

