import { HttpClient, HttpHeaders, HttpResponse, HttpEvent, HttpParameterCodec, HttpContext } from '@angular/common/http';
import { Observable } from 'rxjs';
import { AttachmentArray } from '../model/attachmentArray';
import { AttachmentSingle } from '../model/attachmentSingle';
import { AttachmentStore } from '../model/attachmentStore';
import { AttachmentUpdate } from '../model/attachmentUpdate';
import { HttpConfiguration } from '../configuration';
import * as i0 from "@angular/core";
export declare class AttachmentsService {
    protected httpClient: HttpClient;
    protected basePath: string;
    defaultHeaders: HttpHeaders;
    configuration: HttpConfiguration;
    encoder: HttpParameterCodec;
    constructor(httpClient: HttpClient, basePath: string | string[], configuration: HttpConfiguration);
    private addToHttpParams;
    private addToHttpParamsRecursive;
    /**
     * Delete an attachment.
     * With this endpoint you delete an attachment, including any stored file data.
     * @param id The ID of the single attachment.
     * @param xTraceId Unique identifier associated with this request.
     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
     * @param reportProgress flag to report request and response progress.
     */
    deleteAttachment(id: string, xTraceId?: string, observe?: 'body', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<any>;
    deleteAttachment(id: string, xTraceId?: string, observe?: 'response', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpResponse<any>>;
    deleteAttachment(id: string, xTraceId?: string, observe?: 'events', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpEvent<any>>;
    /**
     * Download a single attachment.
     * This endpoint allows you to download the binary content of a transaction. It will be sent to you as a download, using the content type \&quot;application/octet-stream\&quot; and content disposition \&quot;attachment; filename&#x3D;example.pdf\&quot;.
     * @param id The ID of the attachment.
     * @param xTraceId Unique identifier associated with this request.
     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
     * @param reportProgress flag to report request and response progress.
     */
    downloadAttachment(id: string, xTraceId?: string, observe?: 'body', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/octet-stream' | 'application/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<Blob>;
    downloadAttachment(id: string, xTraceId?: string, observe?: 'response', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/octet-stream' | 'application/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpResponse<Blob>>;
    downloadAttachment(id: string, xTraceId?: string, observe?: 'events', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/octet-stream' | 'application/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpEvent<Blob>>;
    /**
     * Get a single attachment.
     * Get a single attachment. This endpoint only returns the available metadata for the attachment. Actual file data is handled in two other endpoints (see below).
     * @param id The ID of the attachment.
     * @param xTraceId Unique identifier associated with this request.
     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
     * @param reportProgress flag to report request and response progress.
     */
    getAttachment(id: string, xTraceId?: string, observe?: 'body', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/json' | 'application/vnd.api+json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<AttachmentSingle>;
    getAttachment(id: string, xTraceId?: string, observe?: 'response', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/json' | 'application/vnd.api+json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpResponse<AttachmentSingle>>;
    getAttachment(id: string, xTraceId?: string, observe?: 'events', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/json' | 'application/vnd.api+json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpEvent<AttachmentSingle>>;
    /**
     * List all attachments.
     * This endpoint lists all attachments.
     * @param xTraceId Unique identifier associated with this request.
     * @param limit Number of items per page. The default pagination is per 50 items.
     * @param page Page number. The default pagination is per 50 items.
     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
     * @param reportProgress flag to report request and response progress.
     */
    listAttachment(xTraceId?: string, limit?: number, page?: number, observe?: 'body', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/json' | 'application/vnd.api+json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<AttachmentArray>;
    listAttachment(xTraceId?: string, limit?: number, page?: number, observe?: 'response', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/json' | 'application/vnd.api+json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpResponse<AttachmentArray>>;
    listAttachment(xTraceId?: string, limit?: number, page?: number, observe?: 'events', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/json' | 'application/vnd.api+json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpEvent<AttachmentArray>>;
    /**
     * Store a new attachment.
     * Creates a new attachment. The data required can be submitted as a JSON body or as a list of parameters. You cannot use this endpoint to upload the actual file data (see below). This endpoint only creates the attachment object.
     * @param attachmentStore JSON array or key&#x3D;value pairs with the necessary attachment information. See the model for the exact specifications.
     * @param xTraceId Unique identifier associated with this request.
     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
     * @param reportProgress flag to report request and response progress.
     */
    storeAttachment(attachmentStore: AttachmentStore, xTraceId?: string, observe?: 'body', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/json' | 'application/vnd.api+json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<AttachmentSingle>;
    storeAttachment(attachmentStore: AttachmentStore, xTraceId?: string, observe?: 'response', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/json' | 'application/vnd.api+json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpResponse<AttachmentSingle>>;
    storeAttachment(attachmentStore: AttachmentStore, xTraceId?: string, observe?: 'events', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/json' | 'application/vnd.api+json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpEvent<AttachmentSingle>>;
    /**
     * Update existing attachment.
     * Update the meta data for an existing attachment. This endpoint does not allow you to upload or download data. For that, see below.
     * @param id The ID of the attachment.
     * @param attachmentUpdate JSON array with updated attachment information. See the model for the exact specifications.
     * @param xTraceId Unique identifier associated with this request.
     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
     * @param reportProgress flag to report request and response progress.
     */
    updateAttachment(id: string, attachmentUpdate: AttachmentUpdate, xTraceId?: string, observe?: 'body', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/json' | 'application/vnd.api+json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<AttachmentSingle>;
    updateAttachment(id: string, attachmentUpdate: AttachmentUpdate, xTraceId?: string, observe?: 'response', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/json' | 'application/vnd.api+json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpResponse<AttachmentSingle>>;
    updateAttachment(id: string, attachmentUpdate: AttachmentUpdate, xTraceId?: string, observe?: 'events', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/json' | 'application/vnd.api+json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpEvent<AttachmentSingle>>;
    /**
     * Upload an attachment.
     * Use this endpoint to upload (and possible overwrite) the file contents of an attachment. Simply put the entire file in the body as binary data.
     * @param id The ID of the attachment.
     * @param xTraceId Unique identifier associated with this request.
     * @param body
     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
     * @param reportProgress flag to report request and response progress.
     */
    uploadAttachment(id: string, xTraceId?: string, body?: Blob, observe?: 'body', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<any>;
    uploadAttachment(id: string, xTraceId?: string, body?: Blob, observe?: 'response', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpResponse<any>>;
    uploadAttachment(id: string, xTraceId?: string, body?: Blob, observe?: 'events', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpEvent<any>>;
    static ɵfac: i0.ɵɵFactoryDeclaration<AttachmentsService, [null, { optional: true; }, { optional: true; }]>;
    static ɵprov: i0.ɵɵInjectableDeclaration<AttachmentsService>;
}
