import {instance, sleep} from "./axios";
import {UserData} from "../models/DuaActivate";
import {DuaActivateResponse} from "../models/DuaActivate";

interface StepInfo {
    step: Step
    step_data: any
}

type Step = "afm"
    | "afm_verified"
    | "afm_denied"
    | "afm_failed"
    | "dua_enabled"
    | "expired"


interface UpdateUserResponse {
    select_options: any
    step: string
    step_data: any
}
// type UpdateUserResponse = DuaActivateResponse<Step, UserFormData>

//check signature and get the current step for the user
export async function getStepInfo(sig: string | null) {

    return instance.get<StepInfo>("api/activation/check-link", {
        params: {signature: sig},
    });
}

//validates the input the user gave for afm
export async function verifyAfm(sig: string | null, afm: string | null) {
    return instance.post<DuaActivateResponse<Step>>('api/activation/afm-verification', {
        signature: sig,
        afm: afm
    })
}


//confirm prosymplhromena data + submit of extra fields
export async function updateUser(sig: string | null, body: any) {

    return instance.post<DuaActivateResponse<Step>>("api/activation/update/info", {
        signature: sig,
        ...body
    });
}

export async function newRequest(sig: string | null, body: any) {

    return instance.post<DuaActivateResponse<Step>>("api/activation/user/activation/request", {
        signature: sig,
        ...body
    });
}

export async function contractErrorCall(sig: string | null) {

    return instance.post<DuaActivateResponse<Step>>("api/activation/user/inform/wrong-contract", {
        signature: sig
    });
}

export async function refuseAfm(sig: string | null) {
    return instance.get<DuaActivateResponse<Step>>("api/activation/refuse", {
        params: {signature: sig},
    });
}

export async function duaUsersList(query: string | null) {
    return instance.get("api/users-list", {
        params: {search: query},
    });
}

export async function duaUsersEmails(query: string = '') {
    return instance.get("api/users-email", {
        params: {search: query},
    });
}