import { HttpClient, HttpHeaders, HttpResponse, HttpEvent, HttpParameterCodec, HttpContext } from '@angular/common/http';
import { Observable } from 'rxjs';
import { RuleArray } from '../model/ruleArray';
import { RuleGroupArray } from '../model/ruleGroupArray';
import { RuleGroupSingle } from '../model/ruleGroupSingle';
import { RuleGroupStore } from '../model/ruleGroupStore';
import { RuleGroupUpdate } from '../model/ruleGroupUpdate';
import { TransactionArray } from '../model/transactionArray';
import { HttpConfiguration } from '../configuration';
import * as i0 from "@angular/core";
export declare class RuleGroupsService {
    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 rule group.
     * Delete a rule group.
     * @param id The ID of the rule group.
     * @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.
     */
    deleteRuleGroup(id: string, xTraceId?: string, observe?: 'body', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<any>;
    deleteRuleGroup(id: string, xTraceId?: string, observe?: 'response', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpResponse<any>>;
    deleteRuleGroup(id: string, xTraceId?: string, observe?: 'events', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpEvent<any>>;
    /**
     * Fire the rule group on your transactions.
     * Fire the rule group on your transactions. Changes will be made by the rules in the rule group! Limit the result if you want to.
     * @param id The ID of the rule group.
     * @param xTraceId Unique identifier associated with this request.
     * @param start A date formatted YYYY-MM-DD, to limit the transactions the actions will be applied to. Both the start date and the end date must be present.
     * @param end A date formatted YYYY-MM-DD, to limit the transactions the actions will be applied to. Both the start date and the end date must be present.
     * @param accounts Limit the triggering of the rule group to these asset accounts or liabilities. Only asset accounts and liabilities will be accepted. Other types will be silently dropped.
     * @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.
     */
    fireRuleGroup(id: string, xTraceId?: string, start?: string, end?: string, accounts?: Array<number>, observe?: 'body', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<any>;
    fireRuleGroup(id: string, xTraceId?: string, start?: string, end?: string, accounts?: Array<number>, observe?: 'response', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpResponse<any>>;
    fireRuleGroup(id: string, xTraceId?: string, start?: string, end?: string, accounts?: Array<number>, observe?: 'events', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpEvent<any>>;
    /**
     * Get a single rule group.
     * Get a single rule group. This does not include the rules. For that, see below.
     * @param id The ID of the rule group.
     * @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.
     */
    getRuleGroup(id: string, xTraceId?: string, observe?: 'body', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/vnd.api+json' | 'application/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<RuleGroupSingle>;
    getRuleGroup(id: string, xTraceId?: string, observe?: 'response', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/vnd.api+json' | 'application/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpResponse<RuleGroupSingle>>;
    getRuleGroup(id: string, xTraceId?: string, observe?: 'events', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/vnd.api+json' | 'application/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpEvent<RuleGroupSingle>>;
    /**
     * List rules in this rule group.
     * List rules in this rule group.
     * @param id The ID of the rule group.
     * @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.
     */
    listRuleByGroup(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<RuleArray>;
    listRuleByGroup(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<RuleArray>>;
    listRuleByGroup(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<RuleArray>>;
    /**
     * List all rule groups.
     * List all rule groups.
     * @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.
     */
    listRuleGroup(xTraceId?: string, limit?: number, page?: number, observe?: 'body', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/vnd.api+json' | 'application/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<RuleGroupArray>;
    listRuleGroup(xTraceId?: string, limit?: number, page?: number, observe?: 'response', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/vnd.api+json' | 'application/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpResponse<RuleGroupArray>>;
    listRuleGroup(xTraceId?: string, limit?: number, page?: number, observe?: 'events', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/vnd.api+json' | 'application/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpEvent<RuleGroupArray>>;
    /**
     * Store a new rule group.
     * Creates a new rule group. The data required can be submitted as a JSON body or as a list of parameters.
     * @param ruleGroupStore JSON array or key&#x3D;value pairs with the necessary rule group 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.
     */
    storeRuleGroup(ruleGroupStore: RuleGroupStore, xTraceId?: string, observe?: 'body', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/vnd.api+json' | 'application/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<RuleGroupSingle>;
    storeRuleGroup(ruleGroupStore: RuleGroupStore, xTraceId?: string, observe?: 'response', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/vnd.api+json' | 'application/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpResponse<RuleGroupSingle>>;
    storeRuleGroup(ruleGroupStore: RuleGroupStore, xTraceId?: string, observe?: 'events', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/vnd.api+json' | 'application/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpEvent<RuleGroupSingle>>;
    /**
     * Test which transactions would be hit by the rule group. No changes will be made.
     * Test which transactions would be hit by the rule group. No changes will be made. Limit the result if you want to.
     * @param id The ID of the rule group.
     * @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 limit the transactions the test will be applied to. Both the start date and the end date must be present.
     * @param end A date formatted YYYY-MM-DD, to limit the transactions the test will be applied to. Both the start date and the end date must be present.
     * @param searchLimit Maximum number of transactions Firefly III will try. Don\&#39;t set this too high, or it will take Firefly III very long to run the test. I suggest a max of 200.
     * @param triggeredLimit Maximum number of transactions the rule group can actually trigger on, before Firefly III stops. I would suggest setting this to 10 or 15. Don\&#39;t go above the user\&#39;s page size, because browsing to page 2 or 3 of a test result would fire the test again, making any navigation efforts very slow.
     * @param accounts Limit the testing of the rule group to these asset accounts or liabilities. Only asset accounts and liabilities will be accepted. Other types will be silently dropped.
     * @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.
     */
    testRuleGroup(id: string, xTraceId?: string, limit?: number, page?: number, start?: string, end?: string, searchLimit?: number, triggeredLimit?: number, accounts?: Array<number>, observe?: 'body', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/vnd.api+json' | 'application/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<TransactionArray>;
    testRuleGroup(id: string, xTraceId?: string, limit?: number, page?: number, start?: string, end?: string, searchLimit?: number, triggeredLimit?: number, accounts?: Array<number>, observe?: 'response', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/vnd.api+json' | 'application/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpResponse<TransactionArray>>;
    testRuleGroup(id: string, xTraceId?: string, limit?: number, page?: number, start?: string, end?: string, searchLimit?: number, triggeredLimit?: number, accounts?: Array<number>, observe?: 'events', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/vnd.api+json' | 'application/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpEvent<TransactionArray>>;
    /**
     * Update existing rule group.
     * Update existing rule group.
     * @param id The ID of the rule group.
     * @param ruleGroupUpdate JSON array with updated rule group 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.
     */
    updateRuleGroup(id: string, ruleGroupUpdate: RuleGroupUpdate, xTraceId?: string, observe?: 'body', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/vnd.api+json' | 'application/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<RuleGroupSingle>;
    updateRuleGroup(id: string, ruleGroupUpdate: RuleGroupUpdate, xTraceId?: string, observe?: 'response', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/vnd.api+json' | 'application/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpResponse<RuleGroupSingle>>;
    updateRuleGroup(id: string, ruleGroupUpdate: RuleGroupUpdate, xTraceId?: string, observe?: 'events', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'application/vnd.api+json' | 'application/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpEvent<RuleGroupSingle>>;
    static ɵfac: i0.ɵɵFactoryDeclaration<RuleGroupsService, [null, { optional: true; }, { optional: true; }]>;
    static ɵprov: i0.ɵɵInjectableDeclaration<RuleGroupsService>;
}
