import { HttpClient, HttpHeaders, HttpResponse, HttpEvent, HttpParameterCodec, HttpContext } from '@angular/common/http';
import { Observable } from 'rxjs';
import { DeletedEntityResponse } from '../model/deletedEntityResponse';
import { SetTransactionConfigurationSourceRequest } from '../model/setTransactionConfigurationSourceRequest';
import { SideConfigurationDataRequest } from '../model/sideConfigurationDataRequest';
import { TransactionConfigurationDataRequest } from '../model/transactionConfigurationDataRequest';
import { TransactionSetConfigurationData } from '../model/transactionSetConfigurationData';
import { TransactionSetConfigurationDataRequest } from '../model/transactionSetConfigurationDataRequest';
import { Configuration } from '../configuration';
import * as i0 from "@angular/core";
export interface CreateConfigurationTransactionTypeRequestParams {
    /** A transaction type definition. */
    transactionConfigurationDataRequest?: TransactionConfigurationDataRequest;
}
export interface CreateSideDefinitionRequestParams {
    /** The definition of the side. */
    sideConfigurationDataRequest?: SideConfigurationDataRequest;
}
export interface DeleteTransactionConfigurationSourceRequestParams {
    /** The source to delete transaction configurations for */
    source: string;
}
export interface GetTransactionConfigurationSourceRequestParams {
    /** The source for which to retrieve transaction configurations */
    source: string;
    /** The asAt datetime at which to retrieve the transaction configurations.              Defaults to returning the latest version of the transaction configurations if not specified. */
    asAt?: string;
}
export interface ListConfigurationTransactionTypesRequestParams {
    /** The asAt datetime at which to retrieve the transaction types. Defaults              to returning the latest versions if not specified. */
    asAt?: string;
}
export interface SetConfigurationTransactionTypesRequestParams {
    /** The complete set of transaction type definitions. */
    transactionSetConfigurationDataRequest?: TransactionSetConfigurationDataRequest;
}
export interface SetTransactionConfigurationSourceRequestParams {
    /** The source to set the transaction configurations for */
    source: string;
    /** The set of transaction configurations */
    setTransactionConfigurationSourceRequest: Array<SetTransactionConfigurationSourceRequest>;
}
export declare class SystemConfigurationService {
    protected httpClient: HttpClient;
    protected basePath: string;
    defaultHeaders: HttpHeaders;
    configuration: Configuration;
    encoder: HttpParameterCodec;
    constructor(httpClient: HttpClient, basePath: string | string[], configuration: Configuration);
    private addToHttpParams;
    private addToHttpParamsRecursive;
    /**
     * [EARLY ACCESS] CreateConfigurationTransactionType: Create transaction type
     * Create a new transaction type by specifying a definition and mappings to movements.
     * @param requestParameters
     * @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.
     */
    createConfigurationTransactionType(requestParameters?: CreateConfigurationTransactionTypeRequestParams, observe?: 'body', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<TransactionSetConfigurationData>;
    createConfigurationTransactionType(requestParameters?: CreateConfigurationTransactionTypeRequestParams, observe?: 'response', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpResponse<TransactionSetConfigurationData>>;
    createConfigurationTransactionType(requestParameters?: CreateConfigurationTransactionTypeRequestParams, observe?: 'events', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpEvent<TransactionSetConfigurationData>>;
    /**
     * [EXPERIMENTAL] CreateSideDefinition: Create side definition
     * Create a new side definition for use in a transaction type. For more information, see https://support.lusid.com/knowledgebase/article/KA-01875.
     * @param requestParameters
     * @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.
     */
    createSideDefinition(requestParameters?: CreateSideDefinitionRequestParams, observe?: 'body', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<TransactionSetConfigurationData>;
    createSideDefinition(requestParameters?: CreateSideDefinitionRequestParams, observe?: 'response', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpResponse<TransactionSetConfigurationData>>;
    createSideDefinition(requestParameters?: CreateSideDefinitionRequestParams, observe?: 'events', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpEvent<TransactionSetConfigurationData>>;
    /**
     * [EXPERIMENTAL] DeleteTransactionConfigurationSource: Delete all transaction configurations for a source
     * /// WARNING! Changing existing transaction types has a material impact on how data, new and old,  is processed and aggregated by LUSID, and will affect your whole organisation. Only call this API if you are fully aware of the implications of the change.
     * @param requestParameters
     * @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.
     */
    deleteTransactionConfigurationSource(requestParameters?: DeleteTransactionConfigurationSourceRequestParams, observe?: 'body', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<DeletedEntityResponse>;
    deleteTransactionConfigurationSource(requestParameters?: DeleteTransactionConfigurationSourceRequestParams, observe?: 'response', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpResponse<DeletedEntityResponse>>;
    deleteTransactionConfigurationSource(requestParameters?: DeleteTransactionConfigurationSourceRequestParams, observe?: 'events', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpEvent<DeletedEntityResponse>>;
    /**
     * [EXPERIMENTAL] GetTransactionConfigurationSource: Get all transaction configurations for a source
     * Returns failure if requested source is not found
     * @param requestParameters
     * @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.
     */
    getTransactionConfigurationSource(requestParameters?: GetTransactionConfigurationSourceRequestParams, observe?: 'body', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<TransactionSetConfigurationData>;
    getTransactionConfigurationSource(requestParameters?: GetTransactionConfigurationSourceRequestParams, observe?: 'response', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpResponse<TransactionSetConfigurationData>>;
    getTransactionConfigurationSource(requestParameters?: GetTransactionConfigurationSourceRequestParams, observe?: 'events', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpEvent<TransactionSetConfigurationData>>;
    /**
     * [EARLY ACCESS] ListConfigurationTransactionTypes: List transaction types
     * Get the list of current transaction types. For information on the default transaction types provided with  LUSID, see https://support.lusid.com/knowledgebase/article/KA-01873/.
     * @param requestParameters
     * @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.
     */
    listConfigurationTransactionTypes(requestParameters?: ListConfigurationTransactionTypesRequestParams, observe?: 'body', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<TransactionSetConfigurationData>;
    listConfigurationTransactionTypes(requestParameters?: ListConfigurationTransactionTypesRequestParams, observe?: 'response', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpResponse<TransactionSetConfigurationData>>;
    listConfigurationTransactionTypes(requestParameters?: ListConfigurationTransactionTypesRequestParams, observe?: 'events', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpEvent<TransactionSetConfigurationData>>;
    /**
     * [EXPERIMENTAL] SetConfigurationTransactionTypes: Set transaction types
     * Configure all existing transaction types. Note it is not possible to configure a single existing transaction type on its own.                WARNING! Changing existing transaction types has a material impact on how data, new and old, is processed and aggregated by LUSID, and will affect your whole organisation. Only call this API if you are fully aware of the implications of the change.
     * @param requestParameters
     * @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.
     */
    setConfigurationTransactionTypes(requestParameters?: SetConfigurationTransactionTypesRequestParams, observe?: 'body', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<TransactionSetConfigurationData>;
    setConfigurationTransactionTypes(requestParameters?: SetConfigurationTransactionTypesRequestParams, observe?: 'response', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpResponse<TransactionSetConfigurationData>>;
    setConfigurationTransactionTypes(requestParameters?: SetConfigurationTransactionTypesRequestParams, observe?: 'events', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpEvent<TransactionSetConfigurationData>>;
    /**
     * [EXPERIMENTAL] SetTransactionConfigurationSource: Set transaction types for a source
     * This will replace all the existing transaction configurations for the given source                WARNING! Changing existing transaction types has a material impact on how data, new and old, is processed and aggregated by LUSID, and will affect your whole organisation. Only call this API if you are fully aware of the implications of the change.
     * @param requestParameters
     * @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.
     */
    setTransactionConfigurationSource(requestParameters?: SetTransactionConfigurationSourceRequestParams, observe?: 'body', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<TransactionSetConfigurationData>;
    setTransactionConfigurationSource(requestParameters?: SetTransactionConfigurationSourceRequestParams, observe?: 'response', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpResponse<TransactionSetConfigurationData>>;
    setTransactionConfigurationSource(requestParameters?: SetTransactionConfigurationSourceRequestParams, observe?: 'events', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpEvent<TransactionSetConfigurationData>>;
    static ɵfac: i0.ɵɵFactoryDeclaration<SystemConfigurationService, [null, { optional: true; }, { optional: true; }]>;
    static ɵprov: i0.ɵɵInjectableDeclaration<SystemConfigurationService>;
}
