import { RequestClient } from './client';
import { ClientsAPI } from './api/clients';
import { CompanyAPI } from './api/company';
import { ContactsAPI } from './api/contacts';
import { EstimateItemCategoriesAPI } from './api/estimateItemCategories';
import { EstimateMessagesAPI } from './api/estimateMessages';
import { EstimatesAPI } from './api/estimates';
import { ExpenseCategoriesAPI } from './api/expenseCategories';
import { ExpensesAPI } from './api/expenses';
import { InvoiceItemCategoriesAPI } from './api/invoiceItemCategories';
import { InvoiceMessagesAPI } from './api/invoiceMessages';
import { InvoicePaymentsAPI } from './api/invoicePayments';
import { InvoicesAPI } from './api/invoices';
import { ProjectAssignmentsAPI } from './api/projectAssignments';
import { ProjectsAPI } from './api/projects';
import { RolesAPI } from './api/roles';
import { TaskAssignmentsAPI } from './api/taskAssignments';
import { TasksAPI } from './api/tasks';
import { TimeEntriesAPI } from './api/timeEntries';
import { UserAssignmentsAPI } from './api/userAssignments';
import { UsersAPI } from './api/users';
export interface Config {
    subdomain: string;
    userAgent: string;
    concurrency?: number;
    debug?: boolean;
    auth: {
        accessToken: string;
        accountId: string;
    };
}
export default class Harvest {
    host: string;
    userAgent: string;
    concurrency: number;
    debug: boolean;
    client: RequestClient;
    request: <T>(method: string, uri: string, data?: any) => Promise<T>;
    clients: ClientsAPI;
    company: CompanyAPI;
    contacts: ContactsAPI;
    estimateItemCategories: EstimateItemCategoriesAPI;
    estimateMessages: EstimateMessagesAPI;
    estimates: EstimatesAPI;
    expenseCategories: ExpenseCategoriesAPI;
    expenses: ExpensesAPI;
    invoiceItemCategories: InvoiceItemCategoriesAPI;
    invoiceMessages: InvoiceMessagesAPI;
    invoicePayments: InvoicePaymentsAPI;
    invoices: InvoicesAPI;
    projectAssignments: ProjectAssignmentsAPI;
    projects: ProjectsAPI;
    roles: RolesAPI;
    taskAssignments: TaskAssignmentsAPI;
    tasks: TasksAPI;
    timeEntries: TimeEntriesAPI;
    userAssignments: UserAssignmentsAPI;
    users: UsersAPI;
    constructor(config: Config);
    requestGenerator<T>(): (method: string, uri: string, data?: any) => Promise<T>;
}
