import { Observable } from '@reactivex/rxjs';
export declare namespace AppData {
    type AppData = any[];
}
export declare namespace SchemasData {
    interface SchemaMetadata {
        id?: string;
        metadata?: {
            [k: string]: string;
        };
        tags?: {
            [k: string]: any[];
        };
        [k: string]: any;
    }
    type SchemasData = SchemaMetadata[];
}
export declare namespace SchemasTags {
    type SchemasTags = Object;
}
export declare namespace ResourceLocation {
    /**
     * Schema for showing location of the new resource.
     */
    interface ResourceLocation {
        /**
         * The identifier of the created resource
         */
        id: string;
        /**
         * The link to the created resource
         */
        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 KeyValues {
    interface KeyValues {
        [k: string]: string;
    }
}
export declare namespace UserMetadata {
    interface UserMetadata {
        [k: string]: string;
    }
}
export declare namespace SystemUserMetadata {
    interface SystemUserMetadata {
        /**
         * schema name
         */
        id?: string;
        /**
         * user schema metadata
         */
        metadata?: {
            [k: string]: string;
        };
        [k: string]: any;
    }
}
export declare class YaasApiSchemaV1 {
    _client: any;
    _path: string;
    _options: any;
    _form: any;
    _version: any;
    _Security: any;
    constructor(options?: any);
    request(client: any, method: any, path: any, opts: any): any;
    tenant(tenant: string): Resources.Tenant;
}
export declare module Resources {
    class Tenant {
        _client: any;
        _path: string;
        all: Tenant.TenantAll;
        constructor(client: any, path: any);
        schema(schema: string): Tenant.TenantSchema;
        /**
         * GET on Tenant
         */
        GET(totalCount?: boolean, pageNumber?: number, pageSize?: number, q?: string, sort?: string, opts?: any): Observable<{
            headers: any;
            responseCode: number;
            bodyRaw: any;
            "_200"?: SchemasData.SchemasData;
            "_400"?: ErrorMessage.ErrorMessage;
            "_401"?: ErrorMessage.ErrorMessage;
            "_403"?: ErrorMessage.ErrorMessage;
        }>;
        /**
         * DELETE on Tenant
         */
        DELETE(opts?: any): Observable<{
            headers: any;
            responseCode: number;
            bodyRaw: any;
            "_204": any;
            "_401"?: ErrorMessage.ErrorMessage;
            "_403"?: ErrorMessage.ErrorMessage;
        }>;
    }
    module Tenant {
        class TenantSchema {
            _client: any;
            _path: string;
            metadata: Tenant.TenantSchema.TenantSchemaMetadata;
            tags: Tenant.TenantSchema.TenantSchemaTags;
            constructor(client: any, path: any);
            /**
             * GET on TenantSchema
             */
            GET(opts?: any): Observable<{
                headers: any;
                responseCode: number;
                bodyRaw: any;
                "_200": any;
                "_401"?: ErrorMessage.ErrorMessage;
                "_403"?: ErrorMessage.ErrorMessage;
                "_404"?: ErrorMessage.ErrorMessage;
            }>;
            /**
             * POST on TenantSchema
             */
            POST(body: any, opts?: any): Observable<{
                headers: any;
                responseCode: number;
                bodyRaw: any;
                "_201"?: ResourceLocation.ResourceLocation;
                "_401"?: ErrorMessage.ErrorMessage;
                "_403"?: ErrorMessage.ErrorMessage;
                "_409"?: ErrorMessage.ErrorMessage;
            }>;
        }
        module TenantSchema {
            class TenantSchemaMetadata {
                _client: any;
                _path: string;
                constructor(client: any, path: any);
                /**
                 * GET on TenantSchemaMetadata
                 */
                GET(opts?: any): Observable<{
                    headers: any;
                    responseCode: number;
                    bodyRaw: any;
                    "_200"?: SystemUserMetadata.SystemUserMetadata;
                    "_401"?: ErrorMessage.ErrorMessage;
                    "_403"?: ErrorMessage.ErrorMessage;
                    "_404"?: ErrorMessage.ErrorMessage;
                }>;
                /**
                 * PUT on TenantSchemaMetadata
                 */
                PUT(body: KeyValues.KeyValues, opts?: any): Observable<{
                    headers: any;
                    responseCode: number;
                    bodyRaw: any;
                    "_200": any;
                    "_400"?: ErrorMessage.ErrorMessage;
                    "_401"?: ErrorMessage.ErrorMessage;
                    "_403"?: ErrorMessage.ErrorMessage;
                    "_404"?: ErrorMessage.ErrorMessage;
                }>;
            }
            module TenantSchemaMetadata {
            }
            class TenantSchemaTags {
                _client: any;
                _path: string;
                constructor(client: any, path: any);
                tag(tag: string): TenantSchemaTags.TenantSchemaTagsTag;
                /**
                 * GET on TenantSchemaTags
                 */
                GET(opts?: any): Observable<{
                    headers: any;
                    responseCode: number;
                    bodyRaw: any;
                    "_200"?: SchemasData.SchemasData;
                    "_401"?: ErrorMessage.ErrorMessage;
                    "_403"?: ErrorMessage.ErrorMessage;
                    "_404"?: ErrorMessage.ErrorMessage;
                }>;
            }
            module TenantSchemaTags {
                class TenantSchemaTagsTag {
                    _client: any;
                    _path: string;
                    constructor(client: any, path: any);
                    /**
                     * POST on TenantSchemaTagsTag
                     */
                    POST(tags: string, opts?: any): Observable<{
                        headers: any;
                        responseCode: number;
                        bodyRaw: any;
                        "_200": any;
                        "_401"?: ErrorMessage.ErrorMessage;
                        "_403"?: ErrorMessage.ErrorMessage;
                        "_404"?: ErrorMessage.ErrorMessage;
                    }>;
                    /**
                     * DELETE on TenantSchemaTagsTag
                     */
                    DELETE(tags: string, removeEmpty?: boolean, opts?: any): Observable<{
                        headers: any;
                        responseCode: number;
                        bodyRaw: any;
                        "_204": any;
                        "_401"?: ErrorMessage.ErrorMessage;
                        "_403"?: ErrorMessage.ErrorMessage;
                        "_404"?: ErrorMessage.ErrorMessage;
                    }>;
                }
                module TenantSchemaTagsTag {
                }
            }
        }
        class TenantAll {
            _client: any;
            _path: string;
            tagvalues: Tenant.TenantAll.TenantAllTagvalues;
            constructor(client: any, path: any);
        }
        module TenantAll {
            class TenantAllTagvalues {
                _client: any;
                _path: string;
                constructor(client: any, path: any);
                tag(tag: string): TenantAllTagvalues.TenantAllTagvaluesTag;
                /**
                 * GET on TenantAllTagvalues
                 */
                GET(pageNumber?: number, pageSize?: number, opts?: any): Observable<{
                    headers: any;
                    responseCode: number;
                    bodyRaw: any;
                    "_200"?: AppData.AppData;
                    "_400"?: ErrorMessage.ErrorMessage;
                    "_401"?: ErrorMessage.ErrorMessage;
                    "_403"?: ErrorMessage.ErrorMessage;
                    "_404"?: ErrorMessage.ErrorMessage;
                    "_503"?: ErrorMessage.ErrorMessage;
                }>;
            }
            module TenantAllTagvalues {
                class TenantAllTagvaluesTag {
                    _client: any;
                    _path: string;
                    constructor(client: any, path: any);
                    /**
                     * GET on TenantAllTagvaluesTag
                     */
                    GET(opts?: any): Observable<{
                        headers: any;
                        responseCode: number;
                        bodyRaw: any;
                        "_200"?: AppData.AppData;
                        "_401"?: ErrorMessage.ErrorMessage;
                        "_403"?: ErrorMessage.ErrorMessage;
                        "_404"?: ErrorMessage.ErrorMessage;
                        "_503"?: ErrorMessage.ErrorMessage;
                    }>;
                }
                module TenantAllTagvaluesTag {
                }
            }
        }
    }
}
