import { PostmanTransformer } from './PostmanTransformer.js';
import { HttpProject } from '../HttpProject.js';
import { ProjectFolder } from '../ProjectFolder.js';
import { ProjectRequest } from '../ProjectRequest.js';
import { IMultipartBody } from '../../lib/transformers/PayloadSerializer.js';
export declare const currentItemValue: unique symbol;
interface PostmanInfo {
    /**
     * Name of the collection
     */
    name: string;
    /**
     * This should ideally hold a link to the Postman schema that is used to validate this collection. E.g: https://schema.getpostman.com/collection/v1
     */
    schema: string;
    /**
     * Every collection is identified by the unique value of this field.
     * The value of this field is usually easiest to generate using a UID generator function.
     * If you already have a collection, it is recommended that you maintain the same id since changing
     * the id usually implies that is a different collection than it was originally.
     * Note: This field exists for compatibility reasons with Collection Format V1.
     */
    _postman_id?: string;
    description?: string;
}
interface PostmanRequestUrl {
    raw?: string;
    protocol?: string;
    host?: string | string[];
    path?: string | string[];
    port?: string;
}
interface PostmanParameter {
    key?: string | null;
    value?: string | null;
    disabled?: boolean;
    description?: string;
}
interface PostmanUrlEncoded extends PostmanParameter {
    type?: string;
}
interface PostmanFormData extends PostmanParameter {
    type?: string;
    src?: string;
    contentType?: string;
}
interface PostmanFile {
    src: string | null;
    contentType?: string;
}
interface PostmanBody {
    mode: string | null;
    raw?: string;
    urlencoded?: PostmanUrlEncoded[];
    formdata?: PostmanFormData[];
    file?: PostmanFile;
}
interface PostmanRequest {
    url?: string | PostmanRequestUrl;
    method?: string;
    description?: string;
    header?: string | PostmanParameter[];
    body?: PostmanBody;
}
interface PostmanResponse {
}
interface PostmanItem {
    /**
     * A unique ID that is used to identify collections internally
     */
    id?: string;
    /**
     * Name of the collection
     */
    name?: string;
    description?: string;
    request: PostmanRequest;
    response?: PostmanResponse[];
}
interface PostmanItemGroup {
    /**
     * A folder's friendly name is defined by this field. You would want to set this field
     * to a value that would allow you to easily identify this folder.
     */
    name?: string;
    description?: string;
    item: PostmanItem[] | PostmanItemGroup[];
}
interface PostmanVariable {
    disabled?: boolean;
    key: string;
    value: string;
}
interface PostmanV2 {
    variable?: PostmanVariable[];
    info: PostmanInfo;
    item: PostmanItem[] | PostmanItemGroup[];
}
/**
 * Transforms Postman v2 collections to ARC import object.
 */
export declare class PostmanV2Transformer extends PostmanTransformer {
    /**
     * Transforms `_data` into ARC data model.
     * @returns Promise resolved when data are transformed.
     */
    transform(): Promise<HttpProject>;
    createProject(data: PostmanV2): HttpProject;
    setProjectVariables(project: HttpProject, collection: PostmanV2): void;
    addProjectItem(current: HttpProject | ProjectFolder, item: PostmanItem | PostmanItemGroup): Promise<void>;
    addProjectFolder(current: HttpProject | ProjectFolder, group: PostmanItemGroup): Promise<void>;
    addProjectRequest(current: HttpProject | ProjectFolder, item: PostmanItem): Promise<void>;
    /**
     * Computes headers string from item's headers.
     *
     * @param headers Postman Request.header model.
     * @return Computed value of headers.
     */
    computeHeaders(headers?: string | PostmanParameter[]): string;
    addRequestBody(created: ProjectRequest, body?: PostmanBody): Promise<void>;
    addBinaryBody(created: ProjectRequest, body: PostmanBody): Promise<void>;
    addUrlencodedBody(created: ProjectRequest, body: PostmanBody): Promise<void>;
    addParamsBody(created: ProjectRequest, body: PostmanBody): Promise<void>;
    addParamsTextPart(body: IMultipartBody[], param: PostmanFormData): Promise<void>;
    addParamsFilePart(body: IMultipartBody[], param: PostmanFormData): Promise<void>;
    addRawBody(created: ProjectRequest, body: PostmanBody): Promise<void>;
}
export {};
//# sourceMappingURL=PostmanV2Transformer.d.ts.map