import { Observable } from '@reactivex/rxjs';
export declare namespace GenericResponse {
    interface GenericResponse {
        code?: string;
        status?: string;
        message?: string;
        data?: string;
        [k: string]: any;
    }
}
export declare namespace ResourceLocation {
    interface ResourceLocation {
        id?: string;
        link?: string;
        [k: string]: any;
    }
}
export declare namespace ErrorMessage {
    /**
     * schema for specific error cause
     */
    interface ErrorDetail {
        /**
         * a bean notation expression specifying the element in request data causing the error, eg product.variants[3].name, this can be empty if violation was not field specific
         */
        field?: string;
        /**
         * classification of the error detail type, lower case with underscore eg missing_value, this value must be always interpreted in context of the general error type.
         */
        type: string;
        /**
         * descriptive error detail message for debugging
         */
        message?: string;
        /**
         * link to documentation to investigate further and finding support for error detail
         */
        moreInfo?: string;
        [k: string]: any;
    }
    /**
     * schema for API specified errors
     */
    interface ErrorMessage {
        /**
         * original HTTP error code, should be consistent with the response HTTP code
         */
        status: number;
        /**
         * classification of the error type, lower case with underscore eg validation_failure
         */
        type: string;
        /**
         * descriptive error message for debugging
         */
        message?: string;
        /**
         * link to documentation to investigate further and finding support
         */
        moreInfo?: string;
        /**
         * list of problems causing this error
         */
        details?: ErrorDetail[];
        [k: string]: any;
    }
}
export declare namespace TenantData {
    interface TenantData {
        /**
         * the name of the tenant
         */
        tenant?: string;
        /**
         * the list of all existing apps for the tenant
         */
        apps?: string[];
        [k: string]: any;
    }
}
export declare namespace TenantsData {
    type TenantsData = string[];
}
export declare namespace TenantsStatistics {
    type TenantsStatistics = {
        timestamp: string;
        client: string;
        tenant: string;
        typeCount: number;
        indexCount: null;
        dataSizeBytes: null;
        [k: string]: any;
    }[];
}
export declare namespace ClientStatistics {
    interface ClientStatistics {
        timestamp: string;
        client: string;
        tenantCount: number;
        typeCount: number;
        indexCount: number;
        dataSizeBytes: number;
        [k: string]: any;
    }
}
export declare namespace AppData {
    interface AppData {
        /**
         * the name of the tenant
         */
        tenant?: string;
        /**
         * the name of the app
         */
        app?: string;
        /**
         * the list of all existing types for the tenant, app comibination
         */
        types?: string[];
        [k: string]: any;
    }
}
export declare namespace DocumentInput {
    type Id = string;
    interface DocumentInput {
        metadata?: {
            version?: number;
            /**
             * URI to schema specified for document
             */
            schema?: string;
            /**
             * Mixins object. Keys in mixins can be constructed only from numbers, letters, hyphens and underscores.
             */
            mixins?: {
                mixinsRoot?: string;
            };
            [k: string]: any;
        };
        /**
         * Value contains object ID.
         */
        id?: Id;
        [k: string]: any;
    }
}
export declare namespace DocumentOutput {
    type CreatedAt = string;
    type ModifiedAt = string;
    type Id = string;
    interface DocumentOutput {
        metadata?: {
            /**
             * Value contains creation time of document.
             */
            createdAt?: CreatedAt;
            /**
             * Value contains modification time of document.
             */
            modifiedAt?: ModifiedAt;
            version?: number;
            /**
             * URI to schema specified for document
             */
            schema?: string;
            /**
             * Mixins object. Keys in mixins can be constructed only from numbers, letters, hyphens and underscores.
             */
            mixins?: {
                mixinsRoot?: string;
            };
            [k: string]: any;
        };
        /**
         * Value contains object ID.
         */
        id?: Id;
        [k: string]: any;
    }
}
export declare namespace DocumentsOutput {
    type CreatedAt = string;
    type ModifiedAt = string;
    type Id = string;
    type DocumentsOutput = {
        metadata?: {
            /**
             * Value contains creation time of document.
             */
            createdAt?: CreatedAt;
            /**
             * Value contains modification time of document.
             */
            modifiedAt?: ModifiedAt;
            version?: number;
            /**
             * URI to schema specified for document
             */
            schema?: string;
            /**
             * Mixins object. Keys in mixins can be constructed only from numbers, letters, hyphens and underscores.
             */
            mixins?: {
                mixinsRoot?: string;
            };
            [k: string]: any;
        };
        /**
         * Value contains object ID.
         */
        id?: Id;
        [k: string]: any;
    }[];
}
export declare namespace IndexInput {
    /**
     * input to create index
     */
    interface IndexInput {
        keys: {
            [k: string]: number;
        };
        options?: {
            name?: string;
            unique?: boolean;
            sparse?: boolean;
            [k: string]: any;
        };
    }
}
export declare namespace IndexOutput {
    /**
     * index definition
     */
    interface IndexOutput {
        key: {
            [k: string]: number;
        };
        name: string;
        unique?: boolean;
        sparse?: boolean;
        [k: string]: any;
    }
}
export declare namespace IndexesOutput {
    type IndexesOutput = {
        key: {
            [k: string]: number;
        };
        name: string;
        unique?: boolean;
        sparse?: boolean;
        [k: string]: any;
    }[];
}
export declare class YaasApiDocumentV1 {
    _client: any;
    _path: string;
    _options: any;
    _form: any;
    _version: any;
    _Security: any;
    all: Resources.All;
    constructor(options?: any);
    request(client: any, method: any, path: any, opts: any): any;
    tenant(tenant: string): Resources.Tenant;
}
export declare module Resources {
    class All {
        _client: any;
        _path: string;
        statistics: All.AllStatistics;
        constructor(client: any, path: any);
        /**
         * GET on All
         */
        GET(opts?: any): Observable<{
            headers: any;
            responseCode: number;
            bodyRaw: any;
            "_200": any;
            "_304": any;
            "_401": any;
            "_403": any;
        }>;
    }
    module All {
        class AllStatistics {
            _client: any;
            _path: string;
            total: All.AllStatistics.AllStatisticsTotal;
            constructor(client: any, path: any);
            /**
             * GET on AllStatistics
             */
            GET(opts?: any): Observable<{
                headers: any;
                responseCode: number;
                bodyRaw: any;
                "_200": any;
                "_401": any;
                "_403": any;
            }>;
        }
        module AllStatistics {
            class AllStatisticsTotal {
                _client: any;
                _path: string;
                constructor(client: any, path: any);
                /**
                 * GET on AllStatisticsTotal
                 */
                GET(opts?: any): Observable<{
                    headers: any;
                    responseCode: number;
                    bodyRaw: any;
                    "_200": any;
                    "_401": any;
                    "_403": any;
                }>;
            }
            module AllStatisticsTotal {
            }
        }
    }
    class Tenant {
        _client: any;
        _path: string;
        constructor(client: any, path: any);
        client(client: string): Tenant.TenantClient;
        /**
         * GET on Tenant
         */
        GET(opts?: any): Observable<{
            headers: any;
            responseCode: number;
            bodyRaw: any;
            "_200": any;
            "_304": any;
            "_400": any;
            "_401": any;
            "_403": any;
        }>;
        /**
         * HEAD on Tenant
         */
        HEAD(opts?: any): Observable<{
            headers: any;
            responseCode: number;
            bodyRaw: any;
            "_400": any;
            "_401": any;
            "_403": any;
        }>;
        /**
         * DELETE on Tenant
         */
        DELETE(opts?: any): Observable<{
            headers: any;
            responseCode: number;
            bodyRaw: any;
            "_400": any;
            "_401": any;
            "_403": any;
        }>;
    }
    module Tenant {
        class TenantClient {
            _client: any;
            _path: string;
            data: Tenant.TenantClient.TenantClientData;
            aggr: Tenant.TenantClient.TenantClientAggr;
            indexes: Tenant.TenantClient.TenantClientIndexes;
            tags: Tenant.TenantClient.TenantClientTags;
            constructor(client: any, path: any);
            /**
             * GET on TenantClient
             */
            GET(opts?: any): Observable<{
                headers: any;
                responseCode: number;
                bodyRaw: any;
                "_200": any;
                "_304": any;
                "_400": any;
                "_401": any;
                "_403": any;
            }>;
            /**
             * HEAD on TenantClient
             */
            HEAD(opts?: any): Observable<{
                headers: any;
                responseCode: number;
                bodyRaw: any;
                "_200": any;
                "_400": any;
                "_401": any;
                "_403": any;
            }>;
            /**
             * DELETE on TenantClient
             */
            DELETE(opts?: any): Observable<{
                headers: any;
                responseCode: number;
                bodyRaw: any;
                "_204": any;
                "_400": any;
                "_401": any;
                "_403": any;
            }>;
        }
        module TenantClient {
            class TenantClientData {
                _client: any;
                _path: string;
                constructor(client: any, path: any);
                type(type: string): TenantClientData.TenantClientDataType;
            }
            module TenantClientData {
                class TenantClientDataType {
                    _client: any;
                    _path: string;
                    constructor(client: any, path: any);
                    dataId(dataId: string): TenantClientDataType.TenantClientDataTypeDataId;
                    /**
                     * HEAD on TenantClientDataType
                     */
                    HEAD(q?: string, opts?: any): Observable<{
                        headers: any;
                        responseCode: number;
                        bodyRaw: any;
                        "_200": any;
                        "_400": any;
                        "_401": any;
                        "_403": any;
                    }>;
                    /**
                     * GET on TenantClientDataType
                     */
                    GET(text?: string, scoreField?: string, language?: string, caseSensitive?: boolean, diacriticSensitive?: boolean, fetchAll?: boolean, fields?: string, totalCount?: boolean, pageNumber?: number, pageSize?: number, sort?: string, q?: string, opts?: any): Observable<{
                        headers: any;
                        responseCode: number;
                        bodyRaw: any;
                        "_200": any;
                        "_304": any;
                        "_400": any;
                        "_401": any;
                        "_403": any;
                        "_408": any;
                    }>;
                    /**
                     * POST on TenantClientDataType
                     */
                    POST(body: any, rawwrite?: string, opts?: any): Observable<{
                        headers: any;
                        responseCode: number;
                        bodyRaw: any;
                        "_201": any;
                        "_400": any;
                        "_401": any;
                        "_403": any;
                        "_409": any;
                    }>;
                    /**
                     * DELETE on TenantClientDataType
                     */
                    DELETE(q?: string, drop?: string, opts?: any): Observable<{
                        headers: any;
                        responseCode: number;
                        bodyRaw: any;
                        "_204": any;
                        "_400": any;
                        "_401": any;
                        "_403": any;
                    }>;
                    /**
                     * PUT on TenantClientDataType
                     */
                    PUT(body: any, q?: string, opts?: any): Observable<{
                        headers: any;
                        responseCode: number;
                        bodyRaw: any;
                        "_200": any;
                        "_400": any;
                        "_401": any;
                        "_403": any;
                        "_409": any;
                    }>;
                }
                module TenantClientDataType {
                    class TenantClientDataTypeDataId {
                        _client: any;
                        _path: string;
                        constructor(client: any, path: any);
                        attributeName(attributeName: string): TenantClientDataTypeDataId.TenantClientDataTypeDataIdAttributeName;
                        /**
                         * GET on TenantClientDataTypeDataId
                         */
                        GET(fields?: string, opts?: any): Observable<{
                            headers: any;
                            responseCode: number;
                            bodyRaw: any;
                            "_200": any;
                            "_304": any;
                            "_400": any;
                            "_401": any;
                            "_403": any;
                            "_404": any;
                        }>;
                        /**
                         * HEAD on TenantClientDataTypeDataId
                         */
                        HEAD(fields?: string, opts?: any): Observable<{
                            headers: any;
                            responseCode: number;
                            bodyRaw: any;
                            "_200": any;
                            "_400": any;
                            "_401": any;
                            "_403": any;
                            "_404": any;
                        }>;
                        /**
                         * POST on TenantClientDataTypeDataId
                         */
                        POST(body: any, opts?: any): Observable<{
                            headers: any;
                            responseCode: number;
                            bodyRaw: any;
                            "_201": any;
                            "_400": any;
                            "_401": any;
                            "_403": any;
                            "_409": any;
                        }>;
                        /**
                         * PUT on TenantClientDataTypeDataId
                         */
                        PUT(body: any, upsert?: boolean, patch?: boolean, partial?: boolean, version?: number, opts?: any): Observable<{
                            headers: any;
                            responseCode: number;
                            bodyRaw: any;
                            "_200": any;
                            "_201": any;
                            "_400": any;
                            "_401": any;
                            "_403": any;
                            "_404": any;
                            "_409": any;
                        }>;
                        /**
                         * DELETE on TenantClientDataTypeDataId
                         */
                        DELETE(version?: number, opts?: any): Observable<{
                            headers: any;
                            responseCode: number;
                            bodyRaw: any;
                            "_204": any;
                            "_400": any;
                            "_401": any;
                            "_403": any;
                            "_404": any;
                        }>;
                    }
                    module TenantClientDataTypeDataId {
                        class TenantClientDataTypeDataIdAttributeName {
                            _client: any;
                            _path: string;
                            constructor(client: any, path: any);
                            index(index: string): TenantClientDataTypeDataIdAttributeName.TenantClientDataTypeDataIdAttributeNameIndex;
                            /**
                             * POST on TenantClientDataTypeDataIdAttributeName
                             */
                            POST(body: any, version?: number, opts?: any): Observable<{
                                headers: any;
                                responseCode: number;
                                bodyRaw: any;
                                "_200": any;
                                "_400": any;
                                "_401": any;
                                "_403": any;
                                "_409": any;
                            }>;
                            /**
                             * DELETE on TenantClientDataTypeDataIdAttributeName
                             */
                            DELETE(version?: number, opts?: any): Observable<{
                                headers: any;
                                responseCode: number;
                                bodyRaw: any;
                                "_204": any;
                                "_400": any;
                                "_401": any;
                                "_403": any;
                                "_409": any;
                            }>;
                        }
                        module TenantClientDataTypeDataIdAttributeName {
                            class TenantClientDataTypeDataIdAttributeNameIndex {
                                _client: any;
                                _path: string;
                                constructor(client: any, path: any);
                                /**
                                 * GET on TenantClientDataTypeDataIdAttributeNameIndex
                                 */
                                GET(opts?: any): Observable<{
                                    headers: any;
                                    responseCode: number;
                                    bodyRaw: any;
                                    "_200": any;
                                    "_304": any;
                                    "_400": any;
                                    "_401": any;
                                    "_403": any;
                                }>;
                                /**
                                 * HEAD on TenantClientDataTypeDataIdAttributeNameIndex
                                 */
                                HEAD(opts?: any): Observable<{
                                    headers: any;
                                    responseCode: number;
                                    bodyRaw: any;
                                    "_200": any;
                                    "_400": any;
                                    "_401": any;
                                    "_403": any;
                                }>;
                                /**
                                 * PUT on TenantClientDataTypeDataIdAttributeNameIndex
                                 */
                                PUT(body: any, compact?: boolean, version?: number, opts?: any): Observable<{
                                    headers: any;
                                    responseCode: number;
                                    bodyRaw: any;
                                    "_200": any;
                                    "_400": any;
                                    "_401": any;
                                    "_403": any;
                                    "_404": any;
                                    "_409": any;
                                }>;
                                /**
                                 * DELETE on TenantClientDataTypeDataIdAttributeNameIndex
                                 */
                                DELETE(compact?: boolean, version?: number, opts?: any): Observable<{
                                    headers: any;
                                    responseCode: number;
                                    bodyRaw: any;
                                    "_204": any;
                                    "_400": any;
                                    "_401": any;
                                    "_403": any;
                                    "_409": any;
                                }>;
                            }
                            module TenantClientDataTypeDataIdAttributeNameIndex {
                            }
                        }
                    }
                }
            }
            class TenantClientAggr {
                _client: any;
                _path: string;
                constructor(client: any, path: any);
                type(type: string): TenantClientAggr.TenantClientAggrType;
            }
            module TenantClientAggr {
                class TenantClientAggrType {
                    _client: any;
                    _path: string;
                    constructor(client: any, path: any);
                    /**
                     * HEAD on TenantClientAggrType
                     */
                    HEAD(opts?: any): Observable<{
                        headers: any;
                        responseCode: number;
                        bodyRaw: any;
                        "_200": any;
                        "_401": any;
                        "_403": any;
                    }>;
                    /**
                     * GET on TenantClientAggrType
                     */
                    GET(sum?: string, avg?: string, count?: boolean, opts?: any): Observable<{
                        headers: any;
                        responseCode: number;
                        bodyRaw: any;
                        "_200": any;
                        "_304": any;
                        "_401": any;
                        "_403": any;
                    }>;
                }
                module TenantClientAggrType {
                }
            }
            class TenantClientIndexes {
                _client: any;
                _path: string;
                constructor(client: any, path: any);
                type(type: string): TenantClientIndexes.TenantClientIndexesType;
            }
            module TenantClientIndexes {
                class TenantClientIndexesType {
                    _client: any;
                    _path: string;
                    constructor(client: any, path: any);
                    name(name: string): TenantClientIndexesType.TenantClientIndexesTypeName;
                    /**
                     * GET on TenantClientIndexesType
                     */
                    GET(opts?: any): Observable<{
                        headers: any;
                        responseCode: number;
                        bodyRaw: any;
                        "_200": any;
                        "_304": any;
                        "_401": any;
                        "_403": any;
                    }>;
                    /**
                     * HEAD on TenantClientIndexesType
                     */
                    HEAD(opts?: any): Observable<{
                        headers: any;
                        responseCode: number;
                        bodyRaw: any;
                        "_200": any;
                        "_401": any;
                        "_403": any;
                    }>;
                    /**
                     * POST on TenantClientIndexesType
                     */
                    POST(body: any, opts?: any): Observable<{
                        headers: any;
                        responseCode: number;
                        bodyRaw: any;
                        "_201": any;
                        "_400": any;
                        "_401": any;
                        "_403": any;
                        "_409": any;
                    }>;
                    /**
                     * DELETE on TenantClientIndexesType
                     */
                    DELETE(opts?: any): Observable<{
                        headers: any;
                        responseCode: number;
                        bodyRaw: any;
                        "_204": any;
                        "_400": any;
                        "_401": any;
                        "_403": any;
                    }>;
                }
                module TenantClientIndexesType {
                    class TenantClientIndexesTypeName {
                        _client: any;
                        _path: string;
                        constructor(client: any, path: any);
                        /**
                         * GET on TenantClientIndexesTypeName
                         */
                        GET(opts?: any): Observable<{
                            headers: any;
                            responseCode: number;
                            bodyRaw: any;
                            "_200": any;
                            "_304": any;
                            "_401": any;
                            "_403": any;
                            "_404": any;
                        }>;
                        /**
                         * HEAD on TenantClientIndexesTypeName
                         */
                        HEAD(opts?: any): Observable<{
                            headers: any;
                            responseCode: number;
                            bodyRaw: any;
                            "_200": any;
                            "_304": any;
                            "_401": any;
                            "_403": any;
                            "_404": any;
                        }>;
                        /**
                         * DELETE on TenantClientIndexesTypeName
                         */
                        DELETE(opts?: any): Observable<{
                            headers: any;
                            responseCode: number;
                            bodyRaw: any;
                            "_204": any;
                            "_400": any;
                            "_401": any;
                            "_403": any;
                        }>;
                    }
                    module TenantClientIndexesTypeName {
                    }
                }
            }
            class TenantClientTags {
                _client: any;
                _path: string;
                constructor(client: any, path: any);
                type(type: string): TenantClientTags.TenantClientTagsType;
            }
            module TenantClientTags {
                class TenantClientTagsType {
                    _client: any;
                    _path: string;
                    constructor(client: any, path: any);
                    id(id: string): TenantClientTagsType.TenantClientTagsTypeId;
                    /**
                     * POST on TenantClientTagsType
                     */
                    POST(tags: string, q?: string, opts?: any): Observable<{
                        headers: any;
                        responseCode: number;
                        bodyRaw: any;
                        "_200": any;
                        "_400": any;
                        "_401": any;
                        "_403": any;
                    }>;
                    /**
                     * DELETE on TenantClientTagsType
                     */
                    DELETE(tags: string, q?: string, removeEmpty?: boolean, opts?: any): Observable<{
                        headers: any;
                        responseCode: number;
                        bodyRaw: any;
                        "_204": any;
                        "_400": any;
                        "_401": any;
                        "_403": any;
                    }>;
                }
                module TenantClientTagsType {
                    class TenantClientTagsTypeId {
                        _client: any;
                        _path: string;
                        constructor(client: any, path: any);
                        tagName(tagName: string): TenantClientTagsTypeId.TenantClientTagsTypeIdTagName;
                    }
                    module TenantClientTagsTypeId {
                        class TenantClientTagsTypeIdTagName {
                            _client: any;
                            _path: string;
                            constructor(client: any, path: any);
                            /**
                             * POST on TenantClientTagsTypeIdTagName
                             */
                            POST(tags: string, version?: number, opts?: any): Observable<{
                                headers: any;
                                responseCode: number;
                                bodyRaw: any;
                                "_200": any;
                                "_400": any;
                                "_401": any;
                                "_403": any;
                                "_404": any;
                                "_409": any;
                            }>;
                            /**
                             * DELETE on TenantClientTagsTypeIdTagName
                             */
                            DELETE(tags: string, version?: number, removeEmpty?: boolean, opts?: any): Observable<{
                                headers: any;
                                responseCode: number;
                                bodyRaw: any;
                                "_204": any;
                                "_400": any;
                                "_401": any;
                                "_403": any;
                                "_404": any;
                                "_409": any;
                            }>;
                        }
                        module TenantClientTagsTypeIdTagName {
                        }
                    }
                }
            }
        }
    }
}
