/**
 * Employees module
 *
 * Module for interacting with employees in the Minimax API
 */
import { BaseResource, ListResponse } from './base-resource';
/**
 * Employee resource
 */
export interface Employee {
    /**
     * Employee ID
     */
    ID: string;
    /**
     * First name
     */
    FirstName: string;
    /**
     * Last name
     */
    LastName: string;
    /**
     * Full name
     */
    FullName: string;
    /**
     * Email
     */
    Email?: string;
    /**
     * Phone
     */
    Phone?: string;
    /**
     * Address
     */
    Address?: string;
    /**
     * Position
     */
    Position?: string;
    /**
     * Department
     */
    Department?: string;
    /**
     * Status (Active/Inactive)
     */
    Status: string;
    /**
     * Employment date
     */
    EmploymentDate?: string;
    /**
     * Termination date
     */
    TerminationDate?: string;
    /**
     * Record modified date
     */
    RecordDtModified?: string;
    /**
     * Concurrency control token
     */
    RowVersion: string;
}
/**
 * Employees list response
 */
export type EmployeesListResponse = ListResponse<Employee>;
/**
 * Employee filter options
 */
export interface EmployeeFilterOptions {
    /**
     * Filter by status
     */
    status?: 'Active' | 'Inactive';
    /**
     * Filter by department
     */
    department?: string;
    /**
     * Maximum number of results to return
     */
    limit?: number;
    /**
     * Number of results to skip
     */
    offset?: number;
    /**
     * Whether to include the total count
     */
    count?: boolean;
}
/**
 * Employees module
 */
export declare class EmployeesModule extends BaseResource {
    /**
     * Base endpoint for employees
     * The actual endpoint will be constructed as api/orgs/{organizationId}/employees
     */
    protected readonly endpoint = "employees";
    /**
     * Get all employees
     *
     * @param options Filter options
     * @returns Promise resolving to an array of employees
     */
    getAll(options?: EmployeeFilterOptions): Promise<Employee[]>;
    /**
     * Get an employee by ID
     *
     * @param id Employee ID
     * @returns Promise resolving to the employee
     */
    get(id: string): Promise<Employee>;
    /**
     * Create a new employee
     *
     * @param data Employee data
     * @returns Promise resolving to the created employee
     */
    create(data: Omit<Employee, 'ID' | 'RowVersion'>): Promise<Employee>;
    /**
     * Update an employee
     *
     * @param id Employee ID
     * @param data Employee data with RowVersion
     * @returns Promise resolving to the updated employee
     */
    update(id: string, data: Partial<Employee> & {
        RowVersion: string;
    }): Promise<Employee>;
    /**
     * Delete an employee
     *
     * @param id Employee ID
     * @param rowVersion RowVersion for concurrency control
     * @returns Promise resolving when the employee is deleted
     */
    delete(id: string, rowVersion: string): Promise<void>;
}
