import Crowdin, { ReportsModel, SourceFilesModel, TranslationsModel, WebhooksModel } from '@crowdin/crowdin-api-client';
interface UpdateOrCreateFileArgs {
    client: Crowdin;
    projectId: number;
    name: string;
    title?: string;
    type?: SourceFilesModel.FileType;
    directoryId?: number;
    data: any;
    file?: SourceFilesModel.File;
    excludedTargetLanguages?: string[];
    importOptions?: SourceFilesModel.ImportOptions;
}
export declare function updateOrCreateFile(options: UpdateOrCreateFileArgs): Promise<number>;
interface GetFolderArgs {
    directories: SourceFilesModel.Directory[];
    client: Crowdin;
    projectId: number;
    directoryName: string;
    parentDirectory?: SourceFilesModel.Directory;
}
export declare function getFolder(args: GetFolderArgs): Promise<{
    folder?: SourceFilesModel.Directory;
    files: SourceFilesModel.File[];
}>;
interface GetOrCreateFolderArgs {
    directories: SourceFilesModel.Directory[];
    client: Crowdin;
    projectId: number;
    directoryName: string;
    parentDirectory?: SourceFilesModel.Directory;
}
export declare function getOrCreateFolder(args: GetOrCreateFolderArgs): Promise<{
    folder: SourceFilesModel.Directory;
    files: SourceFilesModel.File[];
    created: boolean;
}>;
interface UploadTranslationsArgs {
    client: Crowdin;
    projectId: number;
    fileId: number;
    language: string;
    fileName: string;
    fileContent: any;
    request?: Omit<TranslationsModel.UploadTranslationRequest, 'fileId' | 'storageId'>;
}
export declare function uploadTranslations(args: UploadTranslationsArgs): Promise<TranslationsModel.UploadTranslationResponse>;
interface UpdateSourceFilesArgs {
    client: Crowdin;
    projectId: number;
    directory: string;
    fileEntities: FileEntity[];
    parentDirectory?: SourceFilesModel.Directory;
}
export declare function updateSourceFiles(args: UpdateSourceFilesArgs): Promise<void>;
interface HandleTranslationsArgs {
    client: Crowdin;
    projectId: number;
    directory: string;
    request: TranslationsRequest;
    parentDirectory?: SourceFilesModel.Directory;
    handleFn: (translations: any, language: string, file: SourceFilesModel.File) => Promise<void>;
}
export declare function handleTranslations(args: HandleTranslationsArgs): Promise<void>;
interface CreateOrUpdateWebhookArgs {
    client: Crowdin;
    projectId: number;
    url: string;
    events: WebhooksModel.Event[];
    payload: any;
    name: string;
    requestType?: WebhooksModel.RequestType;
    batchingEnabled?: boolean;
    headers?: Record<string, string>;
    contentType?: WebhooksModel.ContentType;
    webhookId?: number;
    webhookMatch?: (webhook: WebhooksModel.Webhook) => boolean;
}
export declare function createOrUpdateWebhook(args: CreateOrUpdateWebhookArgs): Promise<number>;
export declare function getSubscription({ appIdentifier, token, organization, baseUrl, }: SubscriptionRequest): Promise<Subscription>;
export declare function generateReport({ client, projectId, request, }: {
    client: Crowdin;
    projectId: number;
    request: ReportsModel.GenerateReportRequest;
}): Promise<any | undefined>;
interface FileEntity {
    name: string;
    title: string;
    type: SourceFilesModel.FileType;
    data: any;
}
interface TranslationsRequest {
    [fileId: string]: string[];
}
interface SubscriptionRequest {
    token: string;
    organization?: string;
    appIdentifier: string;
    baseUrl?: string;
}
interface Subscription {
    expires: string;
}
export {};
