import { TccET_BIZOBJ } from "../../../../../odata/models/bizobj.model";
import { TccODataServiceFactory } from "../../../../../odata/factories/tcc-odata-service/tcc-odata-service.factory";
import { TccOdataFunctionsService } from "../../../../../odata/services/tcc-odata-functions/tcc-odata-functions.service";
import { Observable } from "rxjs";
import { TccOdataHelperService } from "../../../../../odata/services/tcc-odata-helper/tcc-odata-helper.service";
import { TccBoPropValue } from "../../../../classes/tcc-bo-property-value.controller";
import { ODataQuery, ODataService } from "@mgrcto/angular-odata-v401";
import { TccET_MDM } from "../../../../../odata/models/mdm.model";
interface TccDatabaseQueryResponse {
    Rows: {
        [fieldName: string]: any;
    }[];
    Columns: string[];
}
declare abstract class IRemoteQuery {
    SourceType: TccET_BIZOBJ.SourceType;
    SourceId: string;
    Query: string;
    /**
     * @deprecated synchronous requests not supported
     * @param timeout
     * @returns
     */
    Exec(timeout?: number): boolean;
    /**
     * Fetch response asynchronously.
     * @returns Observable boolean that shows if the request was successful
     */
    ExecAsync(): Observable<boolean>;
    Reset(): void;
    protected abstract buildObservable(): Observable<boolean>;
}
export declare class TccRemoteQueryRepository extends IRemoteQuery {
    private factory;
    private helper;
    SourceType: TccET_BIZOBJ.SourceType.ccUX_Repository;
    private bopropValueService;
    constructor(factory: TccODataServiceFactory, helper: TccOdataHelperService);
    private response;
    /**
     * After the observable completes true, the response can be accessed.
     */
    get Response(): TccBoPropValue.Controller[];
    protected buildObservable(): Observable<boolean>;
    private buildRepoResponse;
}
export declare class TccRemoteQueryDatabase extends IRemoteQuery {
    private odatafunctions;
    SourceType: TccET_BIZOBJ.SourceType.ccUX_Database;
    constructor(odatafunctions: TccOdataFunctionsService);
    private response;
    /**
     * Pass in values for referenced fields in the query
     */
    QueryFields: {
        [FieldName: string]: any;
    };
    /**
     * After the observable completes true, the response can be accessed.
     */
    get Response(): TccDatabaseQueryResponse;
    /**
     * Reset settings for new request
     */
    Reset(): void;
    protected buildObservable(): Observable<boolean>;
    private buildDbResponse;
}
export declare class TccRemoteQueryFactory {
    private factory;
    private helper;
    private odatafunctions;
    constructor(factory: TccODataServiceFactory, helper: TccOdataHelperService, odatafunctions: TccOdataFunctionsService);
    /**
     * Gibt ein Klassenobjekt zurück mit dem Repositoryabfragen gemacht werden können
     * @param SourceId SourceId des TccET_ECM.Repository
     * @param Query OdataFilterstring
     * @returns TccRemoteQueryRepository
     */
    CreateRepositoryRemoteQuery(SourceId?: string, Query?: string): TccRemoteQueryRepository;
    /**
     * Gibt ein Klassenobjekt zurück mit dem Datenbankabfragen gemacht werden können
     * @param SourceId SourceId des TccET_BPI.DatabaseProfile
     * @param Query QueryString
     * @param QueryFields Suchfelder im QueryString
     * @returns TccRemoteQueryDatabase
     */
    CreateDatabaseRemoteQuery(SourceId?: string, Query?: string, QueryFields?: {
        [FieldName: string]: any;
    }): TccRemoteQueryDatabase;
    /**
     * Gibt ein Klassenobjekt zurück mit dem die Debitorenabfragen gemacht werden können
     * @returns ODataQuery
     */
    CreateDebitorsQuery(): ODataQuery<TccET_MDM.Debitor>;
    /**
     * Gibt ein Klassenobjekt zurück mit dem die Creditorenabfragen gemacht werden können
     * @returns ODataQuery
     */
    CreateCreditorsQuery(): ODataQuery<TccET_MDM.Creditor>;
    /**
     * Gibt ein Klassenobjekt zurück mit dem die Companiesabfragen gemacht werden können
     * @returns ODataQuery
     */
    CreateCompaniesQuery(): ODataQuery<TccET_MDM.Company>;
    /**
     * Gibt ein Klassenobjekt zurück mit dem die SalesOrgsabfragen gemacht werden können
     * @returns ODataQuery
     */
    CreateSalesOrgsQuery(): ODataQuery<TccET_MDM.SalesOrg>;
    /**
     * Gibt ein Klassenobjekt zurück mit dem die Articlesabfragen gemacht werden können
     * @returns ODataQuery
     */
    CreateArticlesQuery(): ODataQuery<TccET_MDM.Article>;
    /**
     * Gibt ein Klassenobjekt zurück mit dem die Ordersabfragen gemacht werden können
     * @returns ODataQuery
     */
    CreateOrdersQuery(): ODataQuery<TccET_MDM.Order>;
    /**
     * Gibt ein Klassenobjekt zurück mit dem die Quotesabfragen gemacht werden können
     * @returns ODataQuery
     */
    CreateQuotesQuery(): ODataQuery<TccET_MDM.Quote>;
    /**
     * Gibt ein Klassenobjekt zurück mit dem odata Requests erstellt werden können
     * @param entitypath request endpoint
     * @returns ODataService
     */
    CreateOdataService<T>(entitypath: string): ODataService<T>;
}
export {};
