import { IApiPayload, IDataTableQuery, IDataFetcherResponse } from '../../../../../_common';
import { IDeleteResponse, IColumnDefinitionContainer, IListOfLanguagesScopesAndFields } from '../../common';
import { ITenantAttribute, IDataTypesDataType, INewAttributeRequest, ITenantAttributeSetMap, IUpdateAttributeRequest, IAttributesDataTableQuery } from './Attributes.models';

export declare const DATA_HUB_ATTRIBUTES_API_BASE = "Actindo.Modules.Actindo.DataHub.Attributes.";
export declare const attributesApiGenerator: (moduleBaseApi?: string) => {
    /** returns a list of attributes */
    getList(query?: IAttributesDataTableQuery): Promise<IDataFetcherResponse<ITenantAttribute>>;
    /** get attribute */
    get(id: number, freeze: boolean): Promise<IApiPayload<ITenantAttribute>>;
    /** create attribute */
    create(attribute: INewAttributeRequest): Promise<IApiPayload<ITenantAttribute>>;
    /** delete attribute */
    delete(ids: number[]): Promise<IDeleteResponse>;
    /** save attribute */
    save(attribute: IUpdateAttributeRequest): Promise<IApiPayload<ITenantAttribute>>;
    /** returns a list of all available data types for attributes */
    getAttributeDataTypes(): Promise<IDataFetcherResponse<IDataTypesDataType>>;
    /** Endpoint to change the attribute key;
     * CAUTION: Changing the key leads to changes in API-description and may influence connected systems, workflows, etc */
    changeKey(id: number, newKey: string): Promise<IApiPayload<ITenantAttribute>>;
    /** getListOfLanguagesScopesAndFields */
    getListOfLanguagesScopesAndFields(): Promise<IListOfLanguagesScopesAndFields>;
    /** List assigned attribute sets for an attribute */
    listAttributeSetAssignments(query?: IDataTableQuery & {
        attributeId: number;
    }): Promise<IDataFetcherResponse<ITenantAttributeSetMap>>;
    getColumns(): Promise<IApiPayload<IColumnDefinitionContainer>>;
};
