// Interfaces
import { resultInterface } from "../common-interfaces"
import { SuggestiveInterface } from "./suggestive-interface"


export interface StaticFilters {
    shortDate: {
        filter: number,
        name: string,
        count: number,
        isChecked: boolean
    }[],
    manufacturer: {
        filter: string,
        name: string,
        count: number,
        isChecked: boolean
    }[],
    supplier: {
        filter: number,
        name: string,
        hide_supplier: number,
        count: number,
        isChecked: boolean
    }[],
    packsize: {
        filter: number,
        name: number,
        count: number,
        isChecked: boolean
    }[],
    strength: {
        filter: string,
        name: string,
        count: number,
        isChecked: boolean
    }[],
    dosageForm: {
        filter: string,
        name: string,
        count: number,
        isChecked: boolean
    }[],
    vawdOnly?: {
        filter: string,
        name: string,
        count: number,
        isChecked: boolean
    }[],
    brandOrGeneric?: {
        filter: string,
        name: string,
        count: number,
        isChecked: boolean
    }[],
    cntrlSchedules?: {
        filter: string,
        name: string,
        count: number,
        isChecked: boolean
    }[],
    productCategory: {
        filter: string,
        name: string,
        count: number,
        isChecked: boolean
    }[],
    ADR: {
        filter: string,
        name: string,
        count: number,
        isChecked: boolean
    }[],
    purchasedBefore: boolean;
}

export interface UserSearchInterFace {
    success: boolean,
    data: {
        search_result: {
            lowest: {
                price: number[],
                unit: number[],
                manufacturer: any[]
            },
            other: [
                SuggestiveInterface['data'][0]['rows']['result'][0][]
            ],
            shippingInfo: SuggestiveInterface['data'][0]['rows']['shippingInfo'],
            totalReturned: number,
            totalResults: number,
            staticFilters: [StaticFilters],
            elsevierProductData: resultInterface,
            isLowestAval?: boolean
        }
    },
}

export interface advancedFilterInterface {
    searchtype: string,
    config: {
        show?: boolean,
        keepOpen?: boolean,

        /**
         * PURCHASED BEFORE
         * When true, returns items previously purchased by buyer
         * (all-time, excluding Cancelled / Unaccepted)
         */
        purchasedBefore?: boolean,

        selectAllFilter: {
            filter: number,
            name: string,
            count: number,
            hide_supplier?: number
        }[],
    },
    staticFilters: StaticFilters
}
