export interface AvantiApiConfiguration {
    /**
     * https://[tenant].myavanti.ca/
     */
    tenant: string;
    latestASSP?: boolean;
    /**
     * Client ID
     */
    client_id: string;
    /**
     * Client password
     */
    client_secret: string;
    /**
     * Employee user name
     */
    username: string;
    /**
     * Employee password
     */
    password: string;
    /**
     * Company database name
     */
    company: string;
    device_id?: string;
}
export type AvantiApiOptions = {
    method: 'get';
    getParameters?: Record<string, boolean | number | string | undefined>;
} | {
    method: 'post';
    bodyParameters?: object;
};
export interface AvantiApiError {
    type?: string;
    title?: string;
    status?: number;
    detail?: string;
    instance?: string;
    error?: Error;
}
export type AvantiApiResponse<T> = {
    success: false;
    error: AvantiApiError;
} | {
    success: true;
    response: T;
};
export interface AccessTokenResponse {
    access_token: string;
    expires_in: number;
    token_type: string;
    scope: string;
    auth_state: number;
    company: string;
}
export type AvantiApiEndpoint = `/v${number}/${string}`;
export interface GetEmployeesRequest {
    skip?: number;
    take?: number;
    empNoReference?: string;
    search?: string;
    total?: boolean;
    active?: 0 | 1 | 2;
    sortOrder?: 0 | 1 | 2;
    sortDirection?: 0 | 1;
    takeOption?: 0 | 1;
    locations?: string[];
    employmentStatus?: string[];
    positions?: string[];
    sortDefinitions?: Array<{
        field?: string;
        dir?: string;
    }>;
}
export interface GetEmployeesResponse {
    employees?: GetEmployeesEmployee[];
    total?: number;
    index?: number;
}
export interface GetEmployeesEmployee {
    empNo?: string;
    givenName?: string;
    surname?: string;
    preferredName?: string;
    initial?: string;
    primaryPositionCode?: string;
    positionName?: string;
    positionNameFr?: string;
    active: boolean;
    email?: string;
    payGroupCode?: string;
    payGroupDesc?: string;
    locationCode?: string;
    locationDesc?: string;
    employStatusCode?: string;
    employStatusDesc?: string;
    jobStatusCode?: string;
    jobStatusDesc?: string;
    fte?: number;
}
export interface GetEmployeeEarningCodesEarningCode {
    text?: string;
    value?: string;
}
export interface GetEmployeeJobDataResponse {
    employeeJobInfo: {
        active: boolean;
        location: string;
        locationDescription?: string;
        position: string;
        positionName?: string;
        employmentStatus: string;
        employmentStatusDescription?: string;
        jobStatus?: string;
        jobStatusDescription?: string;
        wcbGroup?: string;
        wcbGroupDescription?: string;
        unionCode?: string;
        unionCodeDescription?: string;
        workGroup?: string;
        workGroupDescription?: string;
        scheduleTemplate?: string;
        scheduleTemplateDescription?: string;
        reportsToPosition?: string;
        reportsToEmployee?: string;
        employeeNumber?: string;
        employmentGroup?: string;
        employmentGroupDescription?: string;
        initialHireDate?: string;
        lastHireDate?: string;
        seniorityDate?: string;
        overtimeExempt: boolean;
        scheduleStartDate?: string;
        scheduleEndDate?: string;
        employeeFte: number;
    };
    glInfo: {
        account?: string;
        accountDescription?: string;
        accountDescriptionAbrev?: string;
        benefitGroup?: string;
        benefitGroupName?: string;
        group?: string;
        groupName?: string;
        option: string;
    };
    userDefinedDates: {
        date1?: string;
        date2?: string;
        date3?: string;
        date4?: string;
        date5?: string;
        date6?: string;
        date7?: string;
        date8?: string;
        date9?: string;
        date10?: string;
        date11?: string;
        date12?: string;
        date1Name?: string;
        date2Name?: string;
        date3Name?: string;
        date4Name?: string;
        date5Name?: string;
        date6Name?: string;
        date7Name?: string;
        date8Name?: string;
        date9Name?: string;
        date10Name?: string;
        date11Name?: string;
        date12Name?: string;
    };
    userDefinedValues: {
        dedFig1: number;
        dedFig2: number;
        dedFig3: number;
        dedFig4: number;
        dedFig5: number;
        dedFig6: number;
        dedFig7: number;
        dedFig8: number;
        dedFig9: number;
        dedFig10: number;
        dedFig11: number;
        dedFig12: number;
        dedFig13: number;
        dedFig14: number;
        dedFig15: number;
        otherText1?: string;
        otherText2?: string;
        otherText3?: string;
        otherText4?: string;
        otherText5?: string;
        otherText6?: string;
        otherText7?: string;
        otherText8?: string;
        otherText9?: string;
        otherText10?: string;
        otherText11?: string;
        otherText12?: string;
        otherText13?: string;
        otherText14?: string;
        otherText15?: string;
        otherText16?: string;
        otherText17?: string;
        otherText18?: string;
        otherText19?: string;
        otherText20?: string;
        dedFigName1?: string;
        dedFigName2?: string;
        dedFigName3?: string;
        dedFigName4?: string;
        dedFigName5?: string;
        dedFigName6?: string;
        dedFigName7?: string;
        dedFigName8?: string;
        dedFigName9?: string;
        dedFigName10?: string;
        dedFigName11?: string;
        dedFigName12?: string;
        dedFigName13?: string;
        dedFigName14?: string;
        dedFigName15?: string;
        textFieldName1?: string;
        textFieldName2?: string;
        textFieldName3?: string;
        textFieldName4?: string;
        textFieldName5?: string;
        textFieldName6?: string;
        textFieldName7?: string;
        textFieldName8?: string;
        textFieldName9?: string;
        textFieldName10?: string;
        textFieldName11?: string;
        textFieldName12?: string;
        textFieldName13?: string;
        textFieldName14?: string;
        textFieldName15?: string;
        textFieldName16?: string;
        textFieldName17?: string;
        textFieldName18?: string;
        textFieldName19?: string;
        textFieldName20?: string;
    };
    position: {
        code?: string;
        name?: string;
        nameFrM?: string;
        nameFrF?: string;
        reportsToPosition?: string;
        reportsToPositionName?: string;
        reportsToPositionNameFrF?: string;
        reportsToPositionNameFrM?: string;
        primaryPosition?: string;
        employeeFte: number;
        totalActiveFte: string;
        reportsToEmployee?: string;
        effectiveDate?: string;
        expiryDate?: string;
        active: boolean;
    };
    employeePositions?: Array<{
        position?: string;
        positionName?: string;
        active?: string;
        payrate: number;
        payRateUOM: string;
        effectiveDate?: string;
        expiryDate?: string;
        rateSource: 0 | 1 | 2 | 3;
        positionFte: number;
        positionRateLevel: number;
        ytdUnits: number;
        ytdUOM?: string;
    }>;
    ytdLtdPositionUnits?: Array<{
        position?: string;
        positionName?: string;
        rateLevel: number;
        ytdUnits: number;
        ytdUOM?: string;
        ltdUnits: number;
        ltdUOM: string;
    }>;
}
type GetEmployeePersonalInfoPhoneNumberType = 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11;
type GetEmployeePersonalInfoEmailType = 0 | 1 | 2 | 3 | 4 | 5;
export interface GetEmployeePersonalInfoResponse {
    photoRevision?: number;
    userName?: string;
    givenName?: string;
    surname?: string;
    initial?: string;
    preferredName?: string;
    address1?: string;
    address2?: string;
    city?: string;
    province?: string;
    country?: 'CAN' | 'USA' | string;
    postal?: string;
    birthDate: string;
    seniorityDate: string;
    firstLanguage: string;
    gender: 'F' | 'M' | 'X';
    marital: 'M' | 'S' | 'D' | 'E' | 'F' | 'G' | string;
    sin?: string;
    previousSurname?: string;
    sinExpiryDate?: string;
    temporarySin: boolean;
    phoneType1: GetEmployeePersonalInfoPhoneNumberType;
    phoneNumber1?: string;
    phoneType2: GetEmployeePersonalInfoPhoneNumberType;
    phoneNumber2?: string;
    phoneType3: GetEmployeePersonalInfoPhoneNumberType;
    phoneNumber3?: string;
    phoneType4: GetEmployeePersonalInfoPhoneNumberType;
    phoneNumber4?: string;
    email?: string;
    emailType1: GetEmployeePersonalInfoEmailType;
    email1?: string;
    emailType2: GetEmployeePersonalInfoEmailType;
    email2?: string;
    emailType3: GetEmployeePersonalInfoEmailType;
    email3?: string;
    emailType4: GetEmployeePersonalInfoEmailType;
    email4?: string;
    emailType5: GetEmployeePersonalInfoEmailType;
    email5?: string;
    otherText1?: string;
    otherText2?: string;
    otherText3?: string;
    otherText4?: string;
    otherText5?: string;
    otherText6?: string;
    otherText7?: string;
    otherText8?: string;
    otherText9?: string;
    otherText10?: string;
    otherText11?: string;
    otherText12?: string;
    otherText13?: string;
    otherText14?: string;
    otherText15?: string;
    otherText16?: string;
    otherText17?: string;
    otherText18?: string;
    otherText19?: string;
    otherText20?: string;
    dedFig1: number;
    dedFig2: number;
    dedFig3: number;
    dedFig4: number;
    dedFig5: number;
    dedFig6: number;
    dedFig7: number;
    dedFig8: number;
    dedFig9: number;
    dedFig10: number;
    dedFig11: number;
    dedFig12: number;
    dedFig13: number;
    dedFig14: number;
    dedFig15: number;
    otherDate1?: string;
    otherDate2?: string;
    otherDate3?: string;
    otherDate4?: string;
    otherDate5?: string;
    otherDate6?: string;
    otherDate7?: string;
    otherDate8?: string;
    otherDate9?: string;
    otherDate10?: string;
    otherDate11?: string;
    otherDate12?: string;
    initialHireDate: string;
    accumServHrs: number;
    vacDate: string;
    empNo?: string;
    position?: string;
    positionName?: string;
    positionNameFr?: string;
    active: boolean;
    webStatements: boolean;
    payGroup?: string;
    location?: string;
    provinceEmployed?: string;
    fte: number;
    wcbGroup?: string;
    vacGroup?: string;
    vacCode?: '0' | '1' | '2' | '3';
    vacEarnCode?: string;
    unionCode?: string;
    glType?: 'a' | 'g';
    glGroup?: string;
    earnGl?: string;
    workGroup?: string;
    jobStatus?: string;
    smoker: string;
    lastHireDate: string;
    prevVacEarn: number;
    prevWcbEarn: number;
    prevMiscEarnAccum1: number;
    prevMiscEarnAccum2: number;
    prevMiscEarnAccum3: number;
    prevMiscEarnAccum4: number;
    prevMiscEarnAccum5: number;
    prevMiscEarnAccum6: number;
    prevMiscEarnAccum7: number;
    prevMiscEarnAccum8: number;
    prevVacHrs: number;
    prevWcbHrs: number;
    prevWcbPremHrs: number;
    prevMiscUnitsAccum1: number;
    prevMiscUnitsAccum2: number;
    prevMiscAccum16: number;
    prevMiscAccum17: number;
    prevMiscAccum18: number;
    prevMiscAccum19: number;
    prevMiscAccum20: number;
    prevMiscAccum21: number;
    prevMiscAccum22: number;
    prevMiscAccum23: number;
    prevMiscAccum24: number;
    prevMiscAccum25: number;
    prevMiscAccum26: number;
    prevMiscAccum27: number;
    prevMiscAccum28: number;
    prevMiscAccum29: number;
    prevMiscAccum30: number;
    roleAssignmentPermissions?: Array<{
        roleId?: string;
        roleType: number;
        startDate: string;
        expiryDate: string;
        approvalLevel: number;
        insertData: boolean;
        modifyData: boolean;
        viewData: boolean;
        deleteData: boolean;
        viewAmounts: boolean;
        createTime: boolean;
    }>;
    employeeNameFormat: number;
    fullName?: string;
}
export interface GetTimeEntriesRequest extends Record<string, string | number | boolean | undefined> {
    before?: boolean;
    date: string;
    empNo?: string;
    endDate?: string;
    id?: number;
    skip?: number;
    take?: number;
}
export interface GetTimeEntriesTimeEntry {
    source: 0 | 1 | 2 | 3 | 4 | 5;
    id: number;
    empNo?: string;
    date?: string;
    originalDate?: string;
    dates?: string;
    unit?: number;
    unitCode?: string;
    unitCodeDescription?: string;
    fromTime?: string;
    toTime?: string;
    originalFromTime?: string;
    isApproved: boolean;
    approvalLevel: number;
    maxApprovalLevel: number;
    approvedBy?: string;
    approvedDate?: string;
    positionCode?: string;
    positionCodeDescription?: string;
    comments?: string;
    shiftId?: string;
    shiftIdDescription?: string;
    attendanceCode?: string;
    attendanceCodeDescription?: string;
    taskId?: string;
    taskIdDescription?: string;
    unionOverride?: string;
    unionOverrideDescription?: string;
    vacOverride?: string;
    vacOverrideDescription?: string;
    wcbOverride?: string;
    wcbOverrideDescription?: string;
    provEmployedOverride?: string;
    provEmployedOverrideDescription?: string;
    location?: string;
    locationDescription?: string;
    gl?: string;
    glSegment: Array<{
        no: number;
        value?: string;
        description?: string;
    }>;
    documents?: Array<{
        documentId: number;
        name?: string;
        contentType?: string;
        typeId: number;
        typeIdDescription?: string;
        fileName?: string;
        content?: string;
        description?: string;
        summary?: string;
        createdBy?: string;
        isDirty: boolean;
        readOnly: boolean;
        allowInsert: boolean;
        allowModify: boolean;
        allowDelete: boolean;
        allowView: boolean;
    }>;
    deletedDocuments?: number[];
    userApprovalLevel: number;
    allowInsert: boolean;
    allowModify: boolean;
    allowDelete: boolean;
    viewAmounts: boolean;
    unitEnabled: boolean;
    unitCodeEnabled: boolean;
    fromTimeEnabled: boolean;
    toTimeEnabled: boolean;
    shiftIdEnabled: boolean;
    details?: string;
    isDirty: boolean;
    isValid: boolean;
    status: 0 | 1 | 2 | 3 | 4;
    readOnly: boolean;
    isProcessed: boolean;
    processedBy?: string;
    processedDate?: string;
    inExceptionCode?: number;
    recordSource: number;
    punchRuleId?: string;
    breakRuleId?: string;
    rate?: number;
    earnDeductCode?: string;
    earnDeductCodeDescription?: string;
    workOrder?: string;
    gridCode?: string;
    gridPercent?: number;
    glSource?: number;
    glType?: string;
    glGroup?: string;
    glGroupDescription?: string;
    benGroup?: string;
    isUnscheduled: boolean;
    outExceptionCode?: number;
    createdBy?: string;
    createdDateTime?: string;
    modifiedBy?: string;
    modifiedDateTime?: string;
    recordSourceId: number;
    isBreakRuleApplied: boolean;
    isOtherRuleApplied: boolean;
    isInBatch: boolean;
    rateLevel?: number;
    otOption: boolean;
    payPrimaryPosRate: boolean;
    payCode?: string;
    payCodeDescription?: string;
    createdFromTimeCardId: number;
    exceptionCodes: number;
    exceptions?: string;
    timeCardOverrides?: Array<{
        apply: boolean;
        type: 0 | 1;
        ruleId?: string;
        typeDescription?: string;
        description?: string;
    }>;
    timeCardEdits?: string;
    modificationCodes: number;
    scheduleFromTime?: number;
    scheduleToTime?: number;
    scheduleCode?: string;
    scheduleUnits: number;
    scheduleUnitCode?: string;
    scheduled?: string;
    isCancelled: boolean;
    punchId?: string;
    punchOut?: string;
    punched?: string;
    fromRawDataId: number;
    toRawDataId: number;
    fromRawDataIsBreak: boolean;
    toRawDataIsBreak: boolean;
    toRawEventTypeId: number;
    fromRawEventTypeId: number;
    scheduleId: number;
    breakStart1?: number;
    breakStart2?: number;
    breakStart3?: number;
    breakStart4?: number;
    breakStart5?: number;
    breakDuration1?: number;
    breakDuration2?: number;
    breakDuration3?: number;
    breakDuration4?: number;
    breakDuration5?: number;
    timeSourceId: number;
    batchNumber?: number;
    week?: string;
    earnType: number;
    rateSource: number;
    earningAmount: number;
    deductionAmount: number;
    benefitAmount: number;
    payGroup?: string;
    entryRejected: boolean;
    leaveBenefitCode?: string;
    leaveUnit: number;
    leaveUnitCode?: string;
    runNumber: number;
    processedRunNumber: number;
    isUpdated: boolean;
    enteredBy?: string;
    reduceSalary: boolean;
    workGroupId?: string;
    payEndingDate?: string;
    availabilityType?: number;
    availabilityTypeDescription?: string;
    entrySourceId: number;
    entrySourceType: number;
    allDay: boolean;
    allDayEnabled: boolean;
    poolPickupRuleId?: string;
    poolEntryId?: number;
    poolCreatedBy?: string;
    poolCreatedDate?: string;
    poolIsCancelled: boolean;
    poolExpiryDate?: string;
    postSwapStatus?: string;
    allowPostSwap: boolean;
    poolRuleExists: boolean;
    isPooled: boolean;
    breaks?: string;
}
export interface GetTimeEntryTemplatesRequest extends Record<string, string | undefined> {
    empNo?: string;
    viewId?: string;
}
export interface GetTimeEntryTemplatesTimeEntryTemplate {
    templateId?: string;
    name?: string;
    nameFr?: string;
    priority: number;
    source: 0 | 1 | 2 | 3 | 4 | 5;
    copyUnits: boolean;
    doNotSpanDays: boolean;
    fields?: Array<{
        name?: string;
        index: number;
        key?: string;
        isDetail: boolean;
        isVisible: boolean;
        isReadOnly: boolean;
        isRequired: boolean;
        sortOrder: number;
        defaultValue: unknown;
        filters?: Array<{
            codes?: string;
            value: unknown;
        }>;
        header?: string;
        headerFr?: string;
        customHeader?: string;
        customHeaderFr?: string;
        customSetting?: string;
        isDateField: boolean;
        validation?: Array<{
            validation?: string;
            validationMessage?: string;
            validationMessageFr?: string;
        }>;
    }>;
    filters?: Array<{
        table?: string;
        id: number;
        description?: string;
        letter?: string;
        fieldName?: string;
        condition: number;
        value?: string;
        valueType: number;
        conjunction: 0 | 1;
        openingBrackets: number;
        closingBrackets: number;
    }>;
    criteria?: Array<{
        table?: string;
        id: number;
        description?: string;
        letter?: string;
        fieldName?: string;
        condition: number;
        value?: string;
        valueType: number;
        conjunction: number;
        openingBrackets: number;
        closingBrackets: number;
    }>;
    validation?: Array<{
        expression?: string;
        type: 0 | 1 | 2 | 3;
        onLoad: boolean;
        message?: string;
        messageFr?: string;
    }>;
    userGroups?: string[];
    payGroupEntitlementValidation?: object;
    entitlementThreshold?: object;
    allowInvalidGlAccount: boolean;
    showEntitlements: boolean;
    dateExpression?: string;
    calendarColor: 0 | 1 | 2 | 3 | 4;
    calendarMonthExpression?: string;
    calendarMonthDescExpression?: string;
    calendarWeekExpression?: string;
    calendarWeekDescExpression?: string;
    calendarDayExpression?: string;
    calendarDayDescExpression?: string;
    allowPooling: boolean;
    filterGlSegments: boolean;
    glSegmentFields?: Array<{
        name?: string;
        index: number;
        key?: string;
        isDetail: boolean;
        isVisible: boolean;
        isReadOnly: boolean;
        isRequired: boolean;
        sortOrder: number;
        defaultValue?: unknown;
        filters?: Array<{
            codes?: string;
            value: unknown;
        }>;
        header?: string;
        headerFr?: string;
        customHeader?: string;
        customHeaderFr?: string;
        customSetting?: string;
        isDateField: boolean;
        validation?: Array<{
            validation?: string;
            validationMessage?: string;
            validationMessageFr?: string;
        }>;
    }>;
}
export {};
