import { HttpClient, HttpHeaders, HttpResponse, HttpEvent, HttpParameterCodec, HttpContext } from '@angular/common/http';
import { Observable } from 'rxjs';
import { DeletedEntityResponse } from '../model/deletedEntityResponse';
import { PagedResourceListOfItemAndWorkspace } from '../model/pagedResourceListOfItemAndWorkspace';
import { PagedResourceListOfWorkspace } from '../model/pagedResourceListOfWorkspace';
import { PagedResourceListOfWorkspaceItem } from '../model/pagedResourceListOfWorkspaceItem';
import { Workspace } from '../model/workspace';
import { WorkspaceCreationRequest } from '../model/workspaceCreationRequest';
import { WorkspaceItem } from '../model/workspaceItem';
import { WorkspaceItemCreationRequest } from '../model/workspaceItemCreationRequest';
import { WorkspaceItemUpdateRequest } from '../model/workspaceItemUpdateRequest';
import { WorkspaceUpdateRequest } from '../model/workspaceUpdateRequest';
import { Configuration } from '../configuration';
import * as i0 from "@angular/core";
export interface CreateItemRequestParams {
    /** The visibility for the containing workspace; case is important. Available values: shared, personal. */
    visibility: 'shared' | 'personal';
    /** The item\&#39;s workspace name. */
    workspaceName: string;
    /** The item to be created. */
    workspaceItemCreationRequest?: WorkspaceItemCreationRequest;
}
export interface CreateWorkspaceRequestParams {
    /** The visibility for the workspace being created; case is important. Available values: shared, personal. */
    visibility: 'shared' | 'personal';
    /** The workspace to be created. */
    workspaceCreationRequest: WorkspaceCreationRequest;
    /** If true, includes the workspace item actions the user is permitted to perform in the response. Defaults to false. */
    includeItemAccess?: boolean;
}
export interface DeleteItemRequestParams {
    /** The visibility for the containing workspace; case is important. Available values: shared, personal. */
    visibility: 'shared' | 'personal';
    /** The name of the workspace. */
    workspaceName: string;
    /** The group containing the item. */
    groupName: string;
    /** The name of the item. */
    itemName: string;
}
export interface DeleteWorkspaceRequestParams {
    /** The visibility for the workspace; case is important. Available values: shared, personal. */
    visibility: 'shared' | 'personal';
    /** The name of the workspace. */
    workspaceName: string;
    /** If true, recursively delete items in the workspace. */
    recurse?: boolean;
}
export interface GetItemRequestParams {
    /** The visibility for the containing workspace; case is important. Available values: shared, personal. */
    visibility: 'shared' | 'personal';
    /** The name of the workspace. */
    workspaceName: string;
    /** The group containing the item. */
    groupName: string;
    /** The name of the item. */
    itemName: string;
    /** The datetime at which to request the workspace item. If not provided, defaults to \&#39;latest\&#39;. */
    asAt?: string;
}
export interface GetWorkspaceRequestParams {
    /** The visibility for the workspace; case is important. Available values: shared, personal. */
    visibility: 'shared' | 'personal';
    /** The workspace name. */
    workspaceName: string;
    /** The asAt datetime at which to retrieve workspaces. Defaults to \&#39;latest\&#39; if not specified. */
    asAt?: string;
    /** If true, includes the workspace item actions the user is permitted to perform in the response. Defaults to false. */
    includeItemAccess?: boolean;
}
export interface ListItemsRequestParams {
    /** The visibility for the containing workspace; case is important. Available values: shared, personal. */
    visibility: 'shared' | 'personal';
    /** The item\&#39;s workspace name. */
    workspaceName: string;
    /** The asAt datetime at which to retrieve workspace items. Defaults to \&#39;latest\&#39; if not specified. */
    asAt?: string;
    /** The pagination token to use to continue listing workspaces items from a previous call to list workspaces items.              This value is returned from the previous call. If a pagination token is provided the sortBy, filter, effectiveAt, and asAt fields              must not have changed since the original request. */
    page?: string;
    /** A list of field names to sort by, each suffixed by \&quot; ASC\&quot; or \&quot; DESC\&quot;. */
    sortBy?: Array<string>;
    /** When paginating, limit the number of returned results to this many. */
    limit?: number;
    /** Expression to filter the result set. Read more about filtering results from LUSID here:              https://support.lusid.com/filtering-results-from-lusid. */
    filter?: string;
}
export interface ListWorkspacesRequestParams {
    /** The visibility for the workspaces; case is important. Available values: shared, personal. */
    visibility: 'shared' | 'personal';
    /** The asAt datetime at which to retrieve workspaces. Defaults to \&#39;latest\&#39; if not specified. */
    asAt?: string;
    /** The pagination token to use to continue listing workspaces from a previous call to list workspaces.              This value is returned from the previous call. If a pagination token is provided the sortBy, filter, effectiveAt, and asAt fields              must not have changed since the original request. */
    page?: string;
    /** A list of field names to sort by, each suffixed by \&quot; ASC\&quot; or \&quot; DESC\&quot;. */
    sortBy?: Array<string>;
    /** When paginating, limit the number of returned results to this many. */
    limit?: number;
    /** Expression to filter the result set. Read more about filtering results from LUSID here:              https://support.lusid.com/filtering-results-from-lusid. */
    filter?: string;
    /** If true, includes the workspace item actions the user is permitted to perform in the response. Defaults to false. */
    includeItemAccess?: boolean;
}
export interface SearchItemsRequestParams {
    /** The visibility for the containing workspace; case is important. Available values: shared, personal. */
    visibility: 'shared' | 'personal';
    /** The asAt datetime at which to retrieve workspace items. Defaults to \&#39;latest\&#39; if not specified. */
    asAt?: string;
    /** The pagination token to use to continue listing workspaces items from a previous call to list workspaces items.              This value is returned from the previous call. If a pagination token is provided the sortBy, filter, effectiveAt, and asAt fields              must not have changed since the original request. */
    page?: string;
    /** A list of field names to sort by, each suffixed by \&quot; ASC\&quot; or \&quot; DESC\&quot;. */
    sortBy?: Array<string>;
    /** When paginating, limit the number of returned results to this many. */
    limit?: number;
    /** Expression to filter the result set. Read more about filtering results from LUSID here:              https://support.lusid.com/filtering-results-from-lusid. */
    filter?: string;
}
export interface UpdateItemRequestParams {
    /** The visibility for the containing workspace; case is important. Available values: shared, personal. */
    visibility: 'shared' | 'personal';
    /** The workspace name. */
    workspaceName: string;
    /** The group containing the item. */
    groupName: string;
    /** The item name. */
    itemName: string;
    /** The new item details. */
    workspaceItemUpdateRequest?: WorkspaceItemUpdateRequest;
}
export interface UpdateWorkspaceRequestParams {
    /** The visibility for the workspace; case is important. Available values: shared, personal. */
    visibility: 'shared' | 'personal';
    /** The workspace name. */
    workspaceName: string;
    /** The new workspace details. */
    workspaceUpdateRequest: WorkspaceUpdateRequest;
    /** If true, includes the workspace item actions the user is permitted to perform in the response. Defaults to false. */
    includeItemAccess?: boolean;
}
export declare class WorkspaceService {
    protected httpClient: HttpClient;
    protected basePath: string;
    defaultHeaders: HttpHeaders;
    configuration: Configuration;
    encoder: HttpParameterCodec;
    constructor(httpClient: HttpClient, basePath: string | string[], configuration: Configuration);
    private addToHttpParams;
    private addToHttpParamsRecursive;
    /**
     * [EXPERIMENTAL] CreateItem: Create a new item in a workspace.
     * Create a new item in a workspace.
     * @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.
     */
    createItem(requestParameters?: CreateItemRequestParams, observe?: 'body', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<WorkspaceItem>;
    createItem(requestParameters?: CreateItemRequestParams, observe?: 'response', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpResponse<WorkspaceItem>>;
    createItem(requestParameters?: CreateItemRequestParams, observe?: 'events', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpEvent<WorkspaceItem>>;
    /**
     * [EXPERIMENTAL] CreateWorkspace: Create a new workspace.
     * Create a new workspace.
     * @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.
     */
    createWorkspace(requestParameters?: CreateWorkspaceRequestParams, observe?: 'body', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<Workspace>;
    createWorkspace(requestParameters?: CreateWorkspaceRequestParams, observe?: 'response', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpResponse<Workspace>>;
    createWorkspace(requestParameters?: CreateWorkspaceRequestParams, observe?: 'events', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpEvent<Workspace>>;
    /**
     * [EXPERIMENTAL] DeleteItem: Delete an item from a workspace.
     * Delete an item from a workspace.
     * @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.
     */
    deleteItem(requestParameters?: DeleteItemRequestParams, observe?: 'body', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<DeletedEntityResponse>;
    deleteItem(requestParameters?: DeleteItemRequestParams, observe?: 'response', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpResponse<DeletedEntityResponse>>;
    deleteItem(requestParameters?: DeleteItemRequestParams, observe?: 'events', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpEvent<DeletedEntityResponse>>;
    /**
     * [EXPERIMENTAL] DeleteWorkspace: Delete a workspace.
     * Delete a workspace.
     * @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.
     */
    deleteWorkspace(requestParameters?: DeleteWorkspaceRequestParams, observe?: 'body', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<DeletedEntityResponse>;
    deleteWorkspace(requestParameters?: DeleteWorkspaceRequestParams, observe?: 'response', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpResponse<DeletedEntityResponse>>;
    deleteWorkspace(requestParameters?: DeleteWorkspaceRequestParams, observe?: 'events', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpEvent<DeletedEntityResponse>>;
    /**
     * [EXPERIMENTAL] GetItem: Get a single workspace item.
     * Get a single workspace item.
     * @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.
     */
    getItem(requestParameters?: GetItemRequestParams, observe?: 'body', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<WorkspaceItem>;
    getItem(requestParameters?: GetItemRequestParams, observe?: 'response', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpResponse<WorkspaceItem>>;
    getItem(requestParameters?: GetItemRequestParams, observe?: 'events', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpEvent<WorkspaceItem>>;
    /**
     * [EXPERIMENTAL] GetWorkspace: Get a workspace.
     * Get a workspace.
     * @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.
     */
    getWorkspace(requestParameters?: GetWorkspaceRequestParams, observe?: 'body', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<Workspace>;
    getWorkspace(requestParameters?: GetWorkspaceRequestParams, observe?: 'response', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpResponse<Workspace>>;
    getWorkspace(requestParameters?: GetWorkspaceRequestParams, observe?: 'events', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpEvent<Workspace>>;
    /**
     * [EXPERIMENTAL] ListItems: List the items in a workspace.
     * List the items in a workspace.
     * @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.
     */
    listItems(requestParameters?: ListItemsRequestParams, observe?: 'body', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<PagedResourceListOfWorkspaceItem>;
    listItems(requestParameters?: ListItemsRequestParams, observe?: 'response', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpResponse<PagedResourceListOfWorkspaceItem>>;
    listItems(requestParameters?: ListItemsRequestParams, observe?: 'events', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpEvent<PagedResourceListOfWorkspaceItem>>;
    /**
     * [EXPERIMENTAL] ListWorkspaces: List workspaces.
     * List workspaces.
     * @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.
     */
    listWorkspaces(requestParameters?: ListWorkspacesRequestParams, observe?: 'body', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<PagedResourceListOfWorkspace>;
    listWorkspaces(requestParameters?: ListWorkspacesRequestParams, observe?: 'response', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpResponse<PagedResourceListOfWorkspace>>;
    listWorkspaces(requestParameters?: ListWorkspacesRequestParams, observe?: 'events', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpEvent<PagedResourceListOfWorkspace>>;
    /**
     * [EXPERIMENTAL] SearchItems: List items across all workspaces.
     * List items across all workspaces.
     * @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.
     */
    searchItems(requestParameters?: SearchItemsRequestParams, observe?: 'body', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<PagedResourceListOfItemAndWorkspace>;
    searchItems(requestParameters?: SearchItemsRequestParams, observe?: 'response', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpResponse<PagedResourceListOfItemAndWorkspace>>;
    searchItems(requestParameters?: SearchItemsRequestParams, observe?: 'events', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpEvent<PagedResourceListOfItemAndWorkspace>>;
    /**
     * [EXPERIMENTAL] UpdateItem: Update an item in a workspace.
     * Update an item in a workspace.
     * @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.
     */
    updateItem(requestParameters?: UpdateItemRequestParams, observe?: 'body', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<WorkspaceItem>;
    updateItem(requestParameters?: UpdateItemRequestParams, observe?: 'response', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpResponse<WorkspaceItem>>;
    updateItem(requestParameters?: UpdateItemRequestParams, observe?: 'events', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpEvent<WorkspaceItem>>;
    /**
     * [EXPERIMENTAL] UpdateWorkspace: Update a workspace.
     * Update a workspace.
     * @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.
     */
    updateWorkspace(requestParameters?: UpdateWorkspaceRequestParams, observe?: 'body', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<Workspace>;
    updateWorkspace(requestParameters?: UpdateWorkspaceRequestParams, observe?: 'response', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpResponse<Workspace>>;
    updateWorkspace(requestParameters?: UpdateWorkspaceRequestParams, observe?: 'events', reportProgress?: boolean, options?: {
        httpHeaderAccept?: 'text/plain' | 'application/json' | 'text/json';
        context?: HttpContext;
        transferCache?: boolean;
    }): Observable<HttpEvent<Workspace>>;
    static ɵfac: i0.ɵɵFactoryDeclaration<WorkspaceService, [null, { optional: true; }, { optional: true; }]>;
    static ɵprov: i0.ɵɵInjectableDeclaration<WorkspaceService>;
}
