import type { Authentication } from './auth';
import { RetryConfig } from './config';
import type { AxiosInstance } from 'axios';
import { AbsenceResource, AbsenceTypeResource, AutomationResource, ContractResource, ContractTemplateResource, DocumentResource, EventResource, ExpenseResource, NoteResource, OrganizationResource, PauseResource, ProfileResource, ProjectResource, RateResource, ReportsClient, SettingsResource, TagResource, TaskResource, TeamResource, TimerResource, TodoResource, WebhookResource } from './resources';
export * from './auth';
export * from './config';
export * from './exceptions';
export * from './models';
export * from './http';
export * from './resources';
export declare class TimesheetClient {
    private readonly apiClient;
    private readonly reportsApiClient;
    readonly organizations: OrganizationResource;
    readonly teams: TeamResource;
    readonly projects: ProjectResource;
    readonly tasks: TaskResource;
    readonly rates: RateResource;
    readonly tags: TagResource;
    readonly expenses: ExpenseResource;
    readonly notes: NoteResource;
    readonly pauses: PauseResource;
    readonly profile: ProfileResource;
    readonly settings: SettingsResource;
    readonly automations: AutomationResource;
    readonly documents: DocumentResource;
    readonly timer: TimerResource;
    readonly todos: TodoResource;
    readonly webhooks: WebhookResource;
    readonly events: EventResource;
    readonly absences: AbsenceResource;
    readonly absenceTypes: AbsenceTypeResource;
    readonly contracts: ContractResource;
    readonly contractTemplates: ContractTemplateResource;
    readonly reports: ReportsClient;
    constructor(options: TimesheetClientOptions);
    private createAuthentication;
}
export interface TimesheetClientOptions {
    apiKey?: string;
    oauth2Token?: string;
    oauth2?: {
        clientId: string;
        clientSecret: string;
        refreshToken: string;
    };
    authentication?: Authentication;
    baseUrl?: string;
    reportsBaseUrl?: string;
    retryConfig?: RetryConfig;
    httpClient?: AxiosInstance;
    reportsHttpClient?: AxiosInstance;
}
export declare function createClient(options: TimesheetClientOptions): TimesheetClient;
//# sourceMappingURL=index.d.ts.map