import { type Ref } from 'vue';
import { type ExplorerRecordType, type ExplorerLookupResult } from '@/api/netsuite-explorer';
export type ExplorerUseCase = 'lookup' | 'listByDate';
export type SyncFilter = 'all' | 'synced' | 'unsynced';
export type QueryField = 'id' | 'tranid';
export declare function useExplorerTab(): {
    activeUseCase: Ref<ExplorerUseCase, ExplorerUseCase>;
    netsuiteIdInput: Ref<string, string>;
    lookupRecordType: Ref<ExplorerRecordType, ExplorerRecordType>;
    queryField: Ref<QueryField, QueryField>;
    lookupResult: Ref<{
        netsuiteRecord: any;
        additionalInfo: {
            id: string;
            tranid: string;
            transactionnumber: string;
        } | null;
    } | null, ExplorerLookupResult | {
        netsuiteRecord: any;
        additionalInfo: {
            id: string;
            tranid: string;
            transactionnumber: string;
        } | null;
    } | null>;
    lookupResults: Ref<{
        netsuiteRecord: any;
        additionalInfo: {
            id: string;
            tranid: string;
            transactionnumber: string;
        } | null;
    }[], ExplorerLookupResult[] | {
        netsuiteRecord: any;
        additionalInfo: {
            id: string;
            tranid: string;
            transactionnumber: string;
        } | null;
    }[]>;
    dateRange: Ref<{
        startDate: Date;
        endDate: Date;
    }, {
        startDate: Date;
        endDate: Date;
    } | {
        startDate: Date;
        endDate: Date;
    }>;
    syncFilter: Ref<SyncFilter, SyncFilter>;
    direction: Ref<"in" | "out", "in" | "out">;
    filterRule: Ref<{
        value: string | number | boolean | (string | number | boolean)[];
        type: "string" | "number" | "date";
        operator: "$eq" | "$ne" | "$gt" | "$gte" | "$lt" | "$lte" | "$in" | "$nin" | "$regex" | "$contains" | "$startsWith" | "$endsWith" | "$between";
        property: string;
    } | {
        logic: "AND" | "OR";
        rules: (any | {
            value: string | number | boolean | (string | number | boolean)[];
            type: "string" | "number" | "date";
            operator: "$eq" | "$ne" | "$gt" | "$gte" | "$lt" | "$lte" | "$in" | "$nin" | "$regex" | "$contains" | "$startsWith" | "$endsWith" | "$between";
            property: string;
        })[];
    } | null, {
        value: string | number | boolean | (string | number | boolean)[];
        type: "string" | "number" | "date";
        operator: "$eq" | "$ne" | "$gt" | "$gte" | "$lt" | "$lte" | "$in" | "$nin" | "$regex" | "$contains" | "$startsWith" | "$endsWith" | "$between";
        property: string;
    } | import("@feedmepos/custom-attributes").FdoRuleGroup | {
        value: string | number | boolean | (string | number | boolean)[];
        type: "string" | "number" | "date";
        operator: "$eq" | "$ne" | "$gt" | "$gte" | "$lt" | "$lte" | "$in" | "$nin" | "$regex" | "$contains" | "$startsWith" | "$endsWith" | "$between";
        property: string;
    } | {
        logic: "AND" | "OR";
        rules: (any | {
            value: string | number | boolean | (string | number | boolean)[];
            type: "string" | "number" | "date";
            operator: "$eq" | "$ne" | "$gt" | "$gte" | "$lt" | "$lte" | "$in" | "$nin" | "$regex" | "$contains" | "$startsWith" | "$endsWith" | "$between";
            property: string;
        })[];
    } | null>;
    searchValue: Ref<string, string>;
    records: Ref<{
        syncedAt?: string | undefined;
        meta?: Record<string, unknown> | undefined;
        recordId: string;
        recordType: string;
        createdAt: string;
        transactionDate: string;
        transactionId: string;
        sourceLocationId: string;
        sourceLocationName: string;
        destinationLocationId: string;
        destinationLocationName: string;
    }[], {
        syncedAt?: string | undefined;
        meta?: Record<string, unknown> | undefined;
        recordId: string;
        recordType: string;
        createdAt: string;
        transactionDate: string;
        transactionId: string;
        sourceLocationId: string;
        sourceLocationName: string;
        destinationLocationId: string;
        destinationLocationName: string;
    }[]>;
    loading: Ref<boolean, boolean>;
    error: Ref<string | null, string | null>;
    expandedRowIds: Ref<Set<string> & Omit<Set<string>, keyof Set<any>>, Set<string> | (Set<string> & Omit<Set<string>, keyof Set<any>>)>;
    stats: import("vue").ComputedRef<{
        total: number;
        synced: number;
        unsynced: number;
    }>;
    dateRangeError: import("vue").ComputedRef<"Start date and end date are required" | "Start date must be before end date" | "Date range must not exceed 6 months" | null>;
    execute: (recordType: ExplorerRecordType, locationId: string) => Promise<void>;
    executeLookup: (recordType: ExplorerRecordType, locationId: string, queryInput: string, field: QueryField) => Promise<void>;
    executeListByDateRange: (recordType: ExplorerRecordType, locationId: string) => Promise<void>;
    toggleRowExpand: (id: string) => void;
    isRowExpanded: (id: string) => boolean;
    reset: () => void;
};
