import { HttpClient, HttpHeaders, HttpResponse, HttpEvent, HttpParameterCodec, HttpContext } from '@angular/common/http';
import { Observable } from 'rxjs';
import { AttachmentArray } from '../model/attachmentArray';
import { BudgetArray } from '../model/budgetArray';
import { BudgetLimit } from '../model/budgetLimit';
import { BudgetLimitArray } from '../model/budgetLimitArray';
import { BudgetLimitSingle } from '../model/budgetLimitSingle';
import { BudgetLimitStore } from '../model/budgetLimitStore';
import { BudgetSingle } from '../model/budgetSingle';
import { BudgetStore } from '../model/budgetStore';
import { BudgetUpdate } from '../model/budgetUpdate';
import { TransactionArray } from '../model/transactionArray';
import { TransactionTypeFilter } from '../model/transactionTypeFilter';
import { HttpConfiguration } from '../configuration';
import * as i0 from "@angular/core";
export declare class BudgetsService {
    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 a budget.
     * Delete a budget. Transactions will not be deleted.
     * @param id The ID of the budget.
     * @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.
     */
    deleteBudget(id: string, xTraceId?: string, observe?: 'body', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<any>;
    deleteBudget(id: string, xTraceId?: string, observe?: 'response', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpResponse<any>>;
    deleteBudget(id: string, xTraceId?: string, observe?: 'events', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpEvent<any>>;
    /**
     * Delete a budget limit.
     * Delete a budget limit.
     * @param id The ID of the budget. The budget limit MUST be associated to the budget ID.
     * @param limitId The ID of the budget limit. The budget limit MUST be associated to the budget ID.
     * @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.
     */
    deleteBudgetLimit(id: string, limitId: string, xTraceId?: string, observe?: 'body', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<any>;
    deleteBudgetLimit(id: string, limitId: string, xTraceId?: string, observe?: 'response', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpResponse<any>>;
    deleteBudgetLimit(id: string, limitId: string, xTraceId?: string, observe?: 'events', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpEvent<any>>;
    /**
     * Get a single budget.
     * Get a single budget. If the start date and end date are submitted as well, the \&quot;spent\&quot; array will be updated accordingly.
     * @param id The ID of the requested budget.
     * @param xTraceId Unique identifier associated with this request.
     * @param start A date formatted YYYY-MM-DD, to get info on how much the user has spent.
     * @param end A date formatted YYYY-MM-DD, to get info on how much the user has spent.
     * @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.
     */
    getBudget(id: string, xTraceId?: string, start?: string, end?: string, observe?: 'body', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/vnd.api+json' | 'application/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<BudgetSingle>;
    getBudget(id: string, xTraceId?: string, start?: string, end?: string, observe?: 'response', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/vnd.api+json' | 'application/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpResponse<BudgetSingle>>;
    getBudget(id: string, xTraceId?: string, start?: string, end?: string, observe?: 'events', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/vnd.api+json' | 'application/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpEvent<BudgetSingle>>;
    /**
     * Get single budget limit.
     * @param id The ID of the budget. The budget limit MUST be associated to the budget ID.
     * @param limitId The ID of the budget limit. The budget limit MUST be associated to the budget ID.
     * @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.
     */
    getBudgetLimit(id: string, limitId: number, xTraceId?: string, observe?: 'body', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/vnd.api+json' | 'application/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<BudgetLimitSingle>;
    getBudgetLimit(id: string, limitId: number, xTraceId?: string, observe?: 'response', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/vnd.api+json' | 'application/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpResponse<BudgetLimitSingle>>;
    getBudgetLimit(id: string, limitId: number, xTraceId?: string, observe?: 'events', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/vnd.api+json' | 'application/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpEvent<BudgetLimitSingle>>;
    /**
     * Lists all attachments of a budget.
     * Lists all attachments.
     * @param id The ID of the budget.
     * @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.
     */
    listAttachmentByBudget(id: string, xTraceId?: string, limit?: number, page?: number, observe?: 'body', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/vnd.api+json' | 'application/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<AttachmentArray>;
    listAttachmentByBudget(id: string, xTraceId?: string, limit?: number, page?: number, observe?: 'response', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/vnd.api+json' | 'application/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpResponse<AttachmentArray>>;
    listAttachmentByBudget(id: string, xTraceId?: string, limit?: number, page?: number, observe?: 'events', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/vnd.api+json' | 'application/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpEvent<AttachmentArray>>;
    /**
     * List all budgets.
     * List all the budgets the user has made. If the start date and end date are submitted as well, the \&quot;spent\&quot; array will be updated accordingly.
     * @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, to get info on how much the user has spent. You must submit both start and end.
     * @param end A date formatted YYYY-MM-DD, to get info on how much the user has spent. You must submit both start and end.
     * @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.
     */
    listBudget(xTraceId?: string, limit?: number, page?: number, start?: string, end?: string, observe?: 'body', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/vnd.api+json' | 'application/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<BudgetArray>;
    listBudget(xTraceId?: string, limit?: number, page?: number, start?: string, end?: string, observe?: 'response', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/vnd.api+json' | 'application/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpResponse<BudgetArray>>;
    listBudget(xTraceId?: string, limit?: number, page?: number, start?: string, end?: string, observe?: 'events', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/vnd.api+json' | 'application/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpEvent<BudgetArray>>;
    /**
     * Get list of budget limits by date
     * Get all budget limits for for this date range.
     * @param start A date formatted YYYY-MM-DD.
     * @param end A date formatted YYYY-MM-DD.
     * @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.
     */
    listBudgetLimit(start: string, end: string, xTraceId?: string, observe?: 'body', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/vnd.api+json' | 'application/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<BudgetLimitArray>;
    listBudgetLimit(start: string, end: string, xTraceId?: string, observe?: 'response', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/vnd.api+json' | 'application/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpResponse<BudgetLimitArray>>;
    listBudgetLimit(start: string, end: string, xTraceId?: string, observe?: 'events', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/vnd.api+json' | 'application/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpEvent<BudgetLimitArray>>;
    /**
     * Get all limits for a budget.
     * Get all budget limits for this budget and the money spent, and money left. You can limit the list by submitting a date range as well. The \&quot;spent\&quot; array for each budget limit is NOT influenced by the start and end date of your query, but by the start and end date of the budget limit itself.
     * @param id The ID of the requested budget.
     * @param xTraceId Unique identifier associated with this request.
     * @param start A date formatted YYYY-MM-DD.
     * @param end A date formatted YYYY-MM-DD.
     * @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.
     */
    listBudgetLimitByBudget(id: string, xTraceId?: string, start?: string, end?: string, observe?: 'body', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/vnd.api+json' | 'application/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<BudgetLimitArray>;
    listBudgetLimitByBudget(id: string, xTraceId?: string, start?: string, end?: string, observe?: 'response', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/vnd.api+json' | 'application/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpResponse<BudgetLimitArray>>;
    listBudgetLimitByBudget(id: string, xTraceId?: string, start?: string, end?: string, observe?: 'events', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/vnd.api+json' | 'application/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpEvent<BudgetLimitArray>>;
    /**
     * All transactions to a budget.
     * Get all transactions linked to a budget, possibly limited by start and end
     * @param id The ID of the budget.
     * @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.
     */
    listTransactionByBudget(id: string, xTraceId?: string, limit?: number, page?: number, start?: string, end?: string, type?: TransactionTypeFilter, observe?: 'body', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/vnd.api+json' | 'application/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<TransactionArray>;
    listTransactionByBudget(id: string, xTraceId?: string, limit?: number, page?: number, start?: string, end?: string, type?: TransactionTypeFilter, observe?: 'response', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/vnd.api+json' | 'application/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpResponse<TransactionArray>>;
    listTransactionByBudget(id: string, xTraceId?: string, limit?: number, page?: number, start?: string, end?: string, type?: TransactionTypeFilter, observe?: 'events', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/vnd.api+json' | 'application/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpEvent<TransactionArray>>;
    /**
     * List all transactions by a budget limit ID.
     * List all the transactions within one budget limit. The start and end date are dictated by the budget limit.
     * @param id The ID of the budget. The budget limit MUST be associated to the budget ID.
     * @param limitId The ID of the budget limit. The budget limit MUST be associated to the budget ID.
     * @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 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.
     */
    listTransactionByBudgetLimit(id: string, limitId: string, xTraceId?: string, limit?: number, page?: number, type?: TransactionTypeFilter, observe?: 'body', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/vnd.api+json' | 'application/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<TransactionArray>;
    listTransactionByBudgetLimit(id: string, limitId: string, xTraceId?: string, limit?: number, page?: number, type?: TransactionTypeFilter, observe?: 'response', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/vnd.api+json' | 'application/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpResponse<TransactionArray>>;
    listTransactionByBudgetLimit(id: string, limitId: string, xTraceId?: string, limit?: number, page?: number, type?: TransactionTypeFilter, observe?: 'events', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/vnd.api+json' | 'application/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpEvent<TransactionArray>>;
    /**
     * Store a new budget
     * Creates a new budget. The data required can be submitted as a JSON body or as a list of parameters.
     * @param budgetStore JSON array or key&#x3D;value pairs with the necessary budget 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.
     */
    storeBudget(budgetStore: BudgetStore, xTraceId?: string, observe?: 'body', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/vnd.api+json' | 'application/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<BudgetSingle>;
    storeBudget(budgetStore: BudgetStore, xTraceId?: string, observe?: 'response', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/vnd.api+json' | 'application/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpResponse<BudgetSingle>>;
    storeBudget(budgetStore: BudgetStore, xTraceId?: string, observe?: 'events', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/vnd.api+json' | 'application/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpEvent<BudgetSingle>>;
    /**
     * Store new budget limit.
     * Store a new budget limit under this budget.
     * @param id The ID of the budget.
     * @param budgetLimitStore JSON array or key&#x3D;value pairs with the necessary budget 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.
     */
    storeBudgetLimit(id: string, budgetLimitStore: BudgetLimitStore, xTraceId?: string, observe?: 'body', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/vnd.api+json' | 'application/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<BudgetLimitSingle>;
    storeBudgetLimit(id: string, budgetLimitStore: BudgetLimitStore, xTraceId?: string, observe?: 'response', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/vnd.api+json' | 'application/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpResponse<BudgetLimitSingle>>;
    storeBudgetLimit(id: string, budgetLimitStore: BudgetLimitStore, xTraceId?: string, observe?: 'events', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/vnd.api+json' | 'application/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpEvent<BudgetLimitSingle>>;
    /**
     * Update existing budget.
     * Update existing budget. This endpoint cannot be used to set budget amount limits.
     * @param id The ID of the budget.
     * @param budgetUpdate JSON array with updated budget 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.
     */
    updateBudget(id: string, budgetUpdate: BudgetUpdate, xTraceId?: string, observe?: 'body', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/vnd.api+json' | 'application/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<BudgetSingle>;
    updateBudget(id: string, budgetUpdate: BudgetUpdate, xTraceId?: string, observe?: 'response', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/vnd.api+json' | 'application/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpResponse<BudgetSingle>>;
    updateBudget(id: string, budgetUpdate: BudgetUpdate, xTraceId?: string, observe?: 'events', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/vnd.api+json' | 'application/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpEvent<BudgetSingle>>;
    /**
     * Update existing budget limit.
     * Update existing budget limit.
     * @param id The ID of the budget. The budget limit MUST be associated to the budget ID.
     * @param limitId The ID of the budget limit. The budget limit MUST be associated to the budget ID.
     * @param budgetLimit JSON array with updated budget limit 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.
     */
    updateBudgetLimit(id: string, limitId: string, budgetLimit: BudgetLimit, xTraceId?: string, observe?: 'body', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/vnd.api+json' | 'application/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<BudgetLimitSingle>;
    updateBudgetLimit(id: string, limitId: string, budgetLimit: BudgetLimit, xTraceId?: string, observe?: 'response', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/vnd.api+json' | 'application/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpResponse<BudgetLimitSingle>>;
    updateBudgetLimit(id: string, limitId: string, budgetLimit: BudgetLimit, xTraceId?: string, observe?: 'events', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/vnd.api+json' | 'application/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpEvent<BudgetLimitSingle>>;
    static ɵfac: i0.ɵɵFactoryDeclaration<BudgetsService, [null, { optional: true; }, { optional: true; }]>;
    static ɵprov: i0.ɵɵInjectableDeclaration<BudgetsService>;
}
