import { HttpClient, HttpHeaders, HttpResponse, HttpEvent, HttpParameterCodec, HttpContext } from '@angular/common/http';
import { Observable } from 'rxjs';
import { AccountArray } from '../model/accountArray';
import { AccountSingle } from '../model/accountSingle';
import { AccountStore } from '../model/accountStore';
import { AccountTypeFilter } from '../model/accountTypeFilter';
import { AccountUpdate } from '../model/accountUpdate';
import { AttachmentArray } from '../model/attachmentArray';
import { PiggyBankArray } from '../model/piggyBankArray';
import { TransactionArray } from '../model/transactionArray';
import { TransactionTypeFilter } from '../model/transactionTypeFilter';
import { HttpConfiguration } from '../configuration';
import * as i0 from "@angular/core";
export declare class AccountsService {
    protected httpClient: HttpClient;
    protected basePath: string;
    defaultHeaders: HttpHeaders;
    configuration: HttpConfiguration;
    encoder: HttpParameterCodec;
    constructor(httpClient: HttpClient, basePath: string | string[], configuration: HttpConfiguration);
    private addToHttpParams;
    private addToHttpParamsRecursive;
    /**
     * Permanently delete account.
     * Will permanently delete an account. Any associated transactions and piggy banks are ALSO deleted. Cannot be recovered from.
     * @param id The ID of the account.
     * @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.
     */
    deleteAccount(id: string, xTraceId?: string, observe?: 'body', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<any>;
    deleteAccount(id: string, xTraceId?: string, observe?: 'response', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpResponse<any>>;
    deleteAccount(id: string, xTraceId?: string, observe?: 'events', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpEvent<any>>;
    /**
     * Get single account.
     * Returns a single account by its ID.
     * @param id The ID of the account.
     * @param xTraceId Unique identifier associated with this request.
     * @param date A date formatted YYYY-MM-DD. When added to the request, Firefly III will show the account\&#39;s balance on that day.
     * @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.
     */
    getAccount(id: string, xTraceId?: string, date?: string, observe?: 'body', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/json' | 'application/vnd.api+json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<AccountSingle>;
    getAccount(id: string, xTraceId?: string, date?: string, observe?: 'response', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/json' | 'application/vnd.api+json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpResponse<AccountSingle>>;
    getAccount(id: string, xTraceId?: string, date?: string, observe?: 'events', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/json' | 'application/vnd.api+json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpEvent<AccountSingle>>;
    /**
     * List all accounts.
     * This endpoint returns a list of all the accounts owned by the authenticated user.
     * @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 date A date formatted YYYY-MM-DD. When added to the request, Firefly III will show the account\&#39;s balance on that day.
     * @param type Optional filter on the account type(s) returned
     * @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.
     */
    listAccount(xTraceId?: string, limit?: number, page?: number, date?: string, type?: AccountTypeFilter, observe?: 'body', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/json' | 'application/vnd.api+json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<AccountArray>;
    listAccount(xTraceId?: string, limit?: number, page?: number, date?: string, type?: AccountTypeFilter, observe?: 'response', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/json' | 'application/vnd.api+json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpResponse<AccountArray>>;
    listAccount(xTraceId?: string, limit?: number, page?: number, date?: string, type?: AccountTypeFilter, observe?: 'events', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/json' | 'application/vnd.api+json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpEvent<AccountArray>>;
    /**
     * Lists all attachments.
     * Lists all attachments.
     * @param id The ID of the account.
     * @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.
     */
    listAttachmentByAccount(id: string, xTraceId?: string, limit?: number, page?: number, observe?: 'body', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/json' | 'application/vnd.api+json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<AttachmentArray>;
    listAttachmentByAccount(id: string, 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>>;
    listAttachmentByAccount(id: string, 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>>;
    /**
     * List all piggy banks related to the account.
     * This endpoint returns a list of all the piggy banks connected to the account.
     * @param id The ID of the account.
     * @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.
     */
    listPiggyBankByAccount(id: string, xTraceId?: string, limit?: number, page?: number, observe?: 'body', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/json' | 'application/vnd.api+json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<PiggyBankArray>;
    listPiggyBankByAccount(id: string, xTraceId?: string, limit?: number, page?: number, observe?: 'response', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/json' | 'application/vnd.api+json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpResponse<PiggyBankArray>>;
    listPiggyBankByAccount(id: string, xTraceId?: string, limit?: number, page?: number, observe?: 'events', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/json' | 'application/vnd.api+json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpEvent<PiggyBankArray>>;
    /**
     * List all transactions related to the account.
     * This endpoint returns a list of all the transactions connected to the account.
     * @param id The ID of the account.
     * @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 start A date formatted YYYY-MM-DD.
     * @param end A date formatted YYYY-MM-DD.
     * @param type Optional filter on the transaction type(s) returned.
     * @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.
     */
    listTransactionByAccount(id: string, xTraceId?: string, limit?: number, page?: number, start?: string, end?: string, type?: TransactionTypeFilter, observe?: 'body', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/json' | 'application/vnd.api+json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<TransactionArray>;
    listTransactionByAccount(id: string, xTraceId?: string, limit?: number, page?: number, start?: string, end?: string, type?: TransactionTypeFilter, observe?: 'response', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/json' | 'application/vnd.api+json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpResponse<TransactionArray>>;
    listTransactionByAccount(id: string, xTraceId?: string, limit?: number, page?: number, start?: string, end?: string, type?: TransactionTypeFilter, observe?: 'events', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/json' | 'application/vnd.api+json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpEvent<TransactionArray>>;
    /**
     * Create new account.
     * Creates a new account. The data required can be submitted as a JSON body or as a list of parameters (in key&#x3D;value pairs, like a webform).
     * @param accountStore JSON array with the necessary account information or key&#x3D;value pairs. 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.
     */
    storeAccount(accountStore: AccountStore, xTraceId?: string, observe?: 'body', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/json' | 'application/vnd.api+json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<AccountSingle>;
    storeAccount(accountStore: AccountStore, xTraceId?: string, observe?: 'response', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/json' | 'application/vnd.api+json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpResponse<AccountSingle>>;
    storeAccount(accountStore: AccountStore, xTraceId?: string, observe?: 'events', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/json' | 'application/vnd.api+json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpEvent<AccountSingle>>;
    /**
     * Update existing account.
     * Used to update a single account. All fields that are not submitted will be cleared (set to NULL). The model will tell you which fields are mandatory.
     * @param id The ID of the account.
     * @param accountUpdate JSON array or formdata with updated account 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.
     */
    updateAccount(id: string, accountUpdate: AccountUpdate, xTraceId?: string, observe?: 'body', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/json' | 'application/vnd.api+json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<AccountSingle>;
    updateAccount(id: string, accountUpdate: AccountUpdate, xTraceId?: string, observe?: 'response', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/json' | 'application/vnd.api+json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpResponse<AccountSingle>>;
    updateAccount(id: string, accountUpdate: AccountUpdate, xTraceId?: string, observe?: 'events', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/json' | 'application/vnd.api+json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpEvent<AccountSingle>>;
    static ɵfac: i0.ɵɵFactoryDeclaration<AccountsService, [null, { optional: true; }, { optional: true; }]>;
    static ɵprov: i0.ɵɵInjectableDeclaration<AccountsService>;
}
