import { DeleteOptions, GetOptions, ListOptions, PagedItems, ResourceIdentityWithError, UserInfoGetOptions, UserInfoResponse, WSSubscriptionResponse } from './common';
import { Configuration } from './config';
import { Policy } from './policy';
import { ServiceResponse } from './response';
import { Service } from './service';
export declare const DefaultPSetServiceUri = "https://pset-api.connect.trimble.com/v1/";
/**
 * The request body for the @see PSet#createLibrary operation.
 */
export interface CreateLibraryRequest {
    /** The optional identifier for the new library, if not provided service will generate an unique identifier. */
    id?: string;
    /** The access control policy document to be attached to the library. */
    policy?: Policy;
    /** The optional library name. */
    name?: string;
    /** The optional description. */
    description?: string;
}
/**
 * The request parameters for the @see PSet#getLibrary operation.
 */
export interface GetLibraryOptions extends GetOptions {
}
/**
 * The request parameters for the @see PSet#getDefinition operation.
 */
export interface GetDefinitionOptions extends GetOptions {
}
/**
 * The request body for the @see PSet#updateLibrary operation.
 * All properties are optional, if property is not provided in the request the property will retain it's old value.
 */
export interface UpdateLibraryRequest {
    /**
     * The last seen version of the tree descriptor.
     * If provided service will use this information for the concurrency control and will refuse to apply changes if current version is not equal to version provided in the request.
     */
    v?: number;
    /**
     * The access control policy document to be attached to the library.
     * If property is specified caller must have org:UpdateLibraryPolicy right to execute this operation in addition to org:UpdateLibrary.
     */
    policy?: Policy;
    /** The new name. */
    name?: string;
    /** The new description. */
    description?: string;
}
/**
 * The tree descriptor returned from @see PSet#createLibrary , @see PSet#updateLibrary , @see PSet#deleteLibrary and @see PSet#getLibrary operations.
 */
export interface LibraryResponse {
    /** The unique library identifier. */
    id: string;
    /** The creation timestamp in ISO format. */
    createdAt: string;
    /** The identifier of the principal who created the tree. */
    createdBy: string;
    /** The last modification timestamp in ISO format. */
    modifiedAt: string;
    /** The identifier of the principal who last modified the tree descriptor. */
    modifiedBy: string;
    /** The current version of the tree descriptor. */
    v: number;
    /** The access control policy document attached to the library. This property is returned only if caller has pset:GetLibraryPolicy right. */
    policy?: Policy;
    /** The deletion marker. If not present or false the tree is active, otherwise the tree is marked as deleted. */
    deleted?: boolean;
    /** The library name. */
    name: string;
    /** The optional description. */
    description?: string;
    /** The collection of actions current user has rights to perform on this resource at the moment the response is generated by service. Not returned when specific version is requested. */
    _actions?: string[];
}
/**
 * The request body for the @see PSet#createDefinition operation.
 */
export interface CreateDefinitionRequest {
    /** The optional identifier for the new pset definition, if not provided service will generate an unique identifier. */
    id?: string;
    /** The pset name. */
    name: string;
    /** The optional description. */
    description?: string;
    /** The optional collection of resource types the pset applicable to. */
    types?: string[];
    /** The pset schema. */
    schema: object;
    /** The internationalization part with translation tables. */
    i18n?: object;
}
/**
 * The request body for the @see PSet#updateDefinition operation.
 * All properties are optional, if property not provided in the request the property will retain it's old value.
 */
export interface UpdateDefinitionRequest {
    /**
     * The last seen version of the tree descriptor.
     * If provided service will use this information for the concurrency control and will refuse to apply changes if current version is not equal to version provided in the request.
     */
    v?: number;
    /** The new name. */
    name?: string;
    /** The new description. */
    description?: string;
    /** The new collection of resource types the pset applicable to. */
    types?: string[];
    /** The new pset schema. */
    schema?: object;
    /** The internationalization part with translation tables. */
    i18n?: object;
}
/**
 * The pset definition descriptor returned from @see PSet#createDefinition, @see PSet#updateDefinition, @see PSet#deleteNode, @see PSet#getDefinition and @see Organizer#getDefinitionVersion operations.
 */
export interface DefinitionResponse {
    /** The library identifier. */
    libId: string;
    /** The definition identifier. Unique inside the library. */
    id: string;
    /** The creation timestamp in ISO format. */
    createdAt: string;
    /** The identifier of the principal who created the node. */
    createdBy: string;
    /** The last modification timestamp in ISO format. */
    modifiedAt: string;
    /** The identifier of the principal who last modified the node. */
    modifiedBy: string;
    /** The version number. */
    v: number;
    /** The deletion marker. If not present or false the node is active, otherwise the node is marked as deleted. */
    deleted?: boolean;
    /** The name. */
    name: string;
    /** The optional description. */
    description?: string;
    /** The collection of resource types the pset applicable to. If not present pset can be attached to all resource types. */
    types?: string[];
    /** The pset schema. */
    schema: object;
    /** The internationalization part with translation tables. */
    i18n: object;
    /** The collection of actions current user has rights to perform on this resource at the moment the response is generated by service. Not returned when specific version is requested. */
    _actions?: string[];
}
/**
 * The request options to validate psets against a new schema.
 */
export interface ValidateOptions {
    /**
     * The if defined and true informs server that entities marked as deleted should be returned as well.
     * The default behavior is to skip/hide entities marked as deleted.
     */
    deleted?: boolean;
    /** The skip token used a as cursor to indicate the place where next page of results should fetched from. */
    skiptoken?: string;
}
/**
 * The request body for the @see PSet#validate operation.
 */
export interface ValidateRequest {
    /** The schema to validate existing data against. */
    schema: object;
}
/**
 * The response body for the @see PSet#validate operation.
 */
export interface ValidateResponse {
    /** The number of valid psets. */
    validItemsCount: number;
    /** The number of not valid psets. */
    invalidItemsCount: number;
    /** The collection of error messages for found invalid psets. Only first 100 unique error messages are returned. */
    errors?: string[];
    /** The link to the next page. If not present, this is the last page. */
    next?: string;
}
/**
 * The de-serialized data returned from the request with list of pset definitions.
 */
export interface ListDefinitionsResponse extends PagedItems<DefinitionResponse> {
}
/**
 * The de-serialized data returned from the request with list of definitions.
 */
export interface ListDefinitionsOptions extends ListOptions {
    /** The return only pset definitions applicable to the given resource type. */
    type?: string;
    /** The name prefix to filter pset definitions. Only definitions whose name starts with this prefix are returned. */
    prefix?: string;
}
/**
 * The de-serialized data returned from the request with list of definition versions.
 */
export interface ListDefinitionVersionsOptions extends ListOptions {
}
/**
 * The request body for the @see PSet#updatePSet operation.
 * All properties are optional, if property not provided in the request the property will retain it's old value.
 */
export interface PSetRequest {
    /**
     * The last seen version of the pset instance.
     * If provided service will use this information for the concurrency control and will refuse to apply changes if current version is not equal to version provided in the request.
     */
    v?: number;
    /** The version of the pset definition schema. */
    schemaV?: number;
    /** The new property values. */
    props?: object;
}
/**
 * The pset instance response.
 */
export interface PSetResponse {
    /** The link to the external resource. */
    link: string;
    /** The library identifier. */
    libId: string;
    /** The pset definition identifier. */
    defId: string;
    /** The creation timestamp in ISO format. */
    createdAt: string;
    /** The identifier of the principal who created the node. */
    createdBy: string;
    /** The last modification timestamp in ISO format. */
    modifiedAt: string;
    /** The identifier of the principal who last modified the node. */
    modifiedBy: string;
    /** The version number. */
    v: number;
    /** The deletion marker. If not present or false the node is active, otherwise the node is marked as deleted. */
    deleted?: boolean;
    /** The version of pset definition schema for this pset instance. */
    schemaV: number;
    /** The property values. */
    props: object;
    /** The collection of actions current user has rights to perform on this resource at the moment the response is generated by service. Not returned when specific version is requested. */
    _actions?: string[];
}
/**
 * The pset key.
 */
export interface PSetKey {
    /** The link to the external resource. */
    link: string;
    /** The library identifier. */
    libId: string;
    /** The pset definition identifier. */
    defId: string;
    /** The version number. */
    v?: number;
}
/**
 * Body for batch request of property sets
 */
export interface PSetKeyRequest {
    /** The collection of keys for PSets to get. */
    items: PSetKey[];
}
/**
 * The pset definition/version identifier. Used in batch get.
 */
export interface PSetDefId {
    /** The pset definition identifier. When only the id is specified then the latest version is requested. */
    id: string;
    /** Requesting the definition with this schema version. Optional, can't be used together with 'v'. */
    schemaV?: number;
    /** Requesting the definition with this version. Optional, can't be used together with 'schemaV'. */
    v?: number;
}
/**
 * Body for batch request of property set definitions.
 */
export interface PSetDefIdRequest {
    /** The collection of ids for PSet definitions to get. */
    items: PSetDefId[];
}
/**
 * An error descriptor from the batch get PSet definitions API.
 */
export interface PSetDefIdError {
    /** The pset definition/version identifier (from the request). */
    item: PSetDefId;
    /** The error code. */
    code: string;
    /** A human readable error message. */
    message: string;
}
/**
 * The response from batch get PSet definitions API.
 */
export interface BatchPSetDefResponse {
    /** The list of unprocessed PSet definition keys. */
    unprocessed?: PSetDefId[];
    /** The collection PSet definitions. */
    items?: DefinitionResponse[];
    /** The list of errors. */
    errors?: PSetDefIdError[];
}
/**
 * Body for batch request of property sets for a lib/def
 */
export interface LinkRequest {
    /** The array of links for PSets to get. */
    items: string[];
}
export interface BatchPSetResponse<T> {
    /** The collection of property sets. */
    items: PSetResponse[];
    /** The collection of unhandled requests. */
    unhandled?: T[];
}
/**
 * The library identity.
 */
export interface LibraryIdentity {
    /** The library identifier. */
    libId: string;
}
/**
 * The definition identity.
 */
export interface DefinitionIdentity {
    /** The library identifier. */
    libId: string;
    /** The definition identifier. */
    defId: string;
    /** Requesting the resource with this version. Optional. If not specified the latest version is requested. */
    v?: number;
    /** Requesting the definition with this schema version. Optional. If not specified the latest version is requested. */
    schemaV?: number;
}
/**
 * The pset identity.
 */
export interface PSetIdentity {
    /** The link. */
    link: string;
    /** The library identifier. */
    libId: string;
    /** The definition identifier. */
    defId: string;
    /** Requesting the resource with this version. Optional. If not specified the latest version is requested. */
    v?: number;
}
/**
 * The batch get API request body.
 */
export interface PSetBatchGetRequest extends PSetBatchGetMap<LibraryIdentity, DefinitionIdentity, PSetIdentity> {
}
/**
 * The BatchGet API options.
 */
export interface PSetBatchGetOptions extends GetOptions {
}
/**
 * The node descriptor that includes the tree identity.
 */
export interface DefinitionWithLibIdentityResponse extends DefinitionResponse {
    /** The library identifier. */
    libId: string;
}
/**
 * The response from batch get API.
 */
export interface PSetBatchGetResponse {
    /** The list of unprocessed requested resources.
     * It is important that client has a retry logic to fetch the items unprocessed in the original request.
     * Collection of unprocessed items can be passed as is to the next request.
     */
    unprocessed: PSetBatchGetMap<LibraryIdentity, DefinitionIdentity, PSetIdentity>;
    /** The collection requested nodes. */
    responses: PSetBatchGetMap<LibraryResponse, DefinitionWithLibIdentityResponse, PSetResponse>;
    /** The list of errors. */
    errors: PSetBatchGetMap<ResourceIdentityWithError<LibraryIdentity>, ResourceIdentityWithError<DefinitionIdentity>, ResourceIdentityWithError<PSetIdentity>>;
}
/**
 * The pset service map structure used in batch get API.
 */
export interface PSetBatchGetMap<L, D, P> {
    /** The collection libraries. */
    libs?: L[];
    /** The collection definitions. */
    defs?: D[];
    /** The collection psets. */
    psets?: P[];
}
/**
 * The request options to query psets by link.
 */
export interface ListPSetsOptions extends ListOptions {
}
/**
 * The request options to query psets by definition.
 */
export interface ListPSetsByDefinitionOptions extends ListOptions {
    /** The link prefix to filter psets by. */
    link?: string;
}
/**
 * The de-serialized data returned from the request with list of pset instances.
 */
export interface ListPSetsResponse extends PagedItems<PSetResponse> {
}
/**
 * The de-serialized data returned from the request with list of definition versions.
 */
export interface ListPSetVersionsOptions extends ListOptions {
}
/**
 * The request body for @see PSet#changeset operation.
 */
export interface PSetChangesetRequest {
    /** The collection of change requests to PSets. */
    items: ChangePSetRequest[];
}
/**
 * The items in request body for @see PSet#changeset operation.
 * All properties except referencing keys are optional, if property not provided in the request the property will retain it's old value.
 */
export interface ChangePSetRequest {
    /** The link to the external resource. */
    link: string;
    /** The library identifier. */
    libId: string;
    /** The pset definition identifier. */
    defId: string;
    /**
     * The last seen version of the pset instance.
     * If provided service will use this information for the concurrency control and will refuse to apply changes if current version is not equal to version provided in the request.
     */
    v?: number;
    /** The version of the pset definition schema. */
    schemaV?: number;
    /** The new property values. */
    props?: object;
    /** The deletion flag. If specified it is an instruction to mark the pset as deleted. */
    deleted?: boolean;
}
/**
 * The response body for @see PSet#changeset operation if it goes to async execution mode (>500 items in the request).
 */
export interface PSetChangesetResponseAccepted {
    /** The changeset identifier. */
    id: string;
    /** The user identifier. */
    createdBy: string;
    /** The creation timestamp in ISO format. */
    createdAt: string;
    /** The changeset processing status: WaitingUpload, Queued, Processing, Done, Failed. */
    status: string;
}
/**
 * The response body for @see PSet#changeset operation if it is executed in sync mode (<=500 items in the request).
 */
export interface PSetChangesetResponseInline extends PSetChangesetResponseAccepted {
    /** The timestamp in ISO format when processing has been started. */
    startedAt: string;
    /** The timestamp in ISO format when processing has been finished. */
    processedAt: string;
    /** The error message if processing of the changeset failed. */
    message?: string;
    /** Number of items successful processed. */
    itemCount: number;
    /** Number of failed request items. */
    errorCount: number;
    /** The collection of echoed PSets after processing changes. */
    items: PSetResponse[];
    /** The collection of failed change requests. */
    errors?: PSetChangesetError[];
}
/**
 * The changeset request processing failed due to some error.
 */
export interface PSetChangesetError {
    /** The change requested in the changeset. */
    item: ChangePSetRequest;
    /** The error code. */
    code: string;
    /** The error message. */
    message: string;
}
/**
 * The response body for initializing asynchronous changeset,  @see PSet#changesetAsync operation.
 */
export interface PSetChangesetResponseAsync extends PSetChangesetResponseAccepted {
    /** Url for uploading request items. File must contain multiple separate ChangePSetRequest objects in Newline Delimited JSON format (see http://ndjson.org/, Content-Type=application/x-ndjson). */
    uploadUrl: string;
}
/**
 * The response body for @see PSet#changesetStatus operation.
 */
export interface PSetChangesetResponse extends PSetChangesetResponseAccepted {
    /** The timestamp in ISO format when processing has been started. */
    startedAt?: string;
    /** The timestamp in ISO format when processing has been finished. */
    processedAt?: string;
    /** The error message if processing of the changeset failed. */
    message?: string;
    /** Number of items successful processed. */
    itemCount: number;
    /** Number of failed request items. */
    errorCount: number;
    /** Url for downloading echoed processed items. File contains multiple separate PSet objects in Newline Delimited JSON format (see http://ndjson.org/, Content-Type=application/x-ndjson). */
    resultsUrl?: string;
    /** Url for downloading failed request items. File contains multiple separate PSetChangesetError objects in Newline Delimited JSON format (see http://ndjson.org/, Content-Type=application/x-ndjson). */
    errorsUrl?: string;
}
/**
 * The service client that represents connection to the Organizer Service.
 * Each API operation is exposed as a function on service.
 */
export declare class PSet extends Service {
    /**
     * @constructor Constructs a service object.
     * @param {Config} config The configuration options (e.g. service url). If not provided the default configuration will be used.
     * @param {Credentials} credentials The credentials to be attached to service requests.
     */
    constructor(config?: Partial<Configuration>);
    /**
     * Returns information the service knows about the current user.
     * @returns {Promise<ServiceResponse<UserInfoResponse>>} the information known about the caller.
     */
    getUserInfo(params?: UserInfoGetOptions): Promise<ServiceResponse<UserInfoResponse>>;
    /**
     * Returns the tree descriptor.
     * @param {string} libId The library identifier.
     * @param {GetLibraryOptions} params The optional request parameters.
     * @returns {Promise<ServiceResponse<LibraryResponse>>} The service response with tree descriptor.
     * @throws {ServiceError} in case of the error response from the service.
     */
    getLibrary(libId: string, params?: GetLibraryOptions): Promise<ServiceResponse<LibraryResponse>>;
    /**
     * Creates a new library.
     * @param {CreateLibraryRequest} request The library creation request.
     * @returns {Promise<ServiceResponse<LibraryResponse>>} The service response with tree descriptor.
     * @throws {ServiceError} in case of the error response from the service.
     */
    createLibrary(request: CreateLibraryRequest): Promise<ServiceResponse<LibraryResponse>>;
    /**
     * Updates the library descriptor.
     * @param {string} libId The library identifier.
     * @param {UpdateLibraryRequest} request The library descriptor update request.
     * @returns {Promise<ServiceResponse<LibraryResponse>>} The service response with tree descriptor.
     * @throws {ServiceError} in case of the error response from the service.
     */
    updateLibrary(libId: string, request: UpdateLibraryRequest): Promise<ServiceResponse<LibraryResponse>>;
    /**
     * Marks the tree as deleted.
     * @param {string} libId The library identifier.
     * @returns {Promise<TreeResponse>>} The de-serialized service response with library descriptor.
     * @param {DeleteOptions} params The optional request parameters.
     * @throws {ServiceError} in case of the error response from the service.
     */
    deleteLibrary(libId: string, params?: DeleteOptions): Promise<ServiceResponse<LibraryResponse>>;
    /**
     * Get the library access control policy.
     * @param {string} libId The library identifier.
     * @returns {Promise<ServiceResponse<Policy>>} the access control policy.
     */
    getLibraryPolicy(libId: string): Promise<ServiceResponse<Policy>>;
    /**
     * Puts the library access control policy.
     * @param {string} libId The library identifier.
     * @param {Policy} policy The policy.
     * @returns {Promise<ServiceResponse<void>>} the empty response.
     */
    putLibraryPolicy(libId: string, policy: Policy): Promise<ServiceResponse<void>>;
    /**
     * Returns some or all (up to 500, default is 100) of the pset definitions in a library.
     * You can use the request parameters as selection criteria to return a subset of the nodes in a tree.
     * @param {string} libId The identifier of the library to list definitions from.
     * @param {ListDefinitionsOptions} params The request parameters.
     * @returns {Promise<ServiceResponse<ListDefinitionsResponse>>} The de-serialized service response.
     * @throws {ServiceError} in case of the error response from the service.
     */
    listDefinitions(libId: string, params?: ListDefinitionsOptions): Promise<ServiceResponse<ListDefinitionsResponse>>;
    /**
     * Returns some or all (up to 500, default is 100) of the definition versions.
     * @param {string} libId The library identifier.
     * @param {string} defId The definition identifier.
     * @param {ListNodeVersionsOptions} params The request parameters.
     * @returns {Promise<ServiceResponse<ListDefinitionsResponse>>} The de-serialized service response.
     * @throws {ServiceError} in case of the error response from the service.
     */
    listDefinitionVersions(libId: string, defId: string, params?: ListDefinitionVersionsOptions): Promise<ServiceResponse<ListDefinitionsResponse>>;
    /**
     * Returns the definition descriptor.
     * @param {string} libId The library identifier.
     * @param {string} defId The definition identifier.
     * @param {GetDefinitionOptions} params The optional request parameters.
     * @returns {Promise<ServiceResponse<DefinitionResponse>>} The service response with pset definition descriptor.
     * @throws {ServiceError} in case of the error response from the service.
     */
    getDefinition(libId: string, defId: string, params?: GetDefinitionOptions): Promise<ServiceResponse<DefinitionResponse>>;
    /**
     * Returns the specific version of the pset definition.
     * @param {string} libId The library identifier.
     * @param {string} defId The definition identifier.
     * @param {number} ver The definition resource version number.
     * @returns {Promise<ServiceResponse<DefinitionResponse>>} The service response with pset definition descriptor.
     * @throws {ServiceError} in case of the error response from the service.
     */
    getDefinitionVersion(libId: string, defId: string, ver: number): Promise<ServiceResponse<DefinitionResponse>>;
    /**
     * Returns the specific version of the pset definition by the schema version.
     * @param {string} libId The library identifier.
     * @param {string} defId The definition identifier.
     * @param {number} ver The schema version number.
     * @returns {Promise<ServiceResponse<DefinitionResponse>>} The service response with pset definition descriptor.
     * @throws {ServiceError} in case of the error response from the service.
     */
    getDefinitionVersionBySchema(libId: string, defId: string, ver: number): Promise<ServiceResponse<DefinitionResponse>>;
    /**
     * Returns an object with a collection of property set definitions from a library, a collection of errors and a collection of unhandled requests.
     * It should never return a paged response.
     * @deprecated Use batchGet instead
     * @param {string} libId The library identifier.
     * @param {PSetDefIdRequest} ids The ids/versions of property set definitions to return.
     * @param {GetDefinitionOptions} params The optional request parameters.
     * @returns {Promise<ServiceResponse<BatchPSetDefResponse>>} The service response.
     * @throws {ServiceError} in case of the error response from the service.
     */
    getPSetDefinitions(libId: string, ids: PSetDefIdRequest, params?: GetDefinitionOptions): Promise<ServiceResponse<BatchPSetDefResponse>>;
    /**
     * Creates a new definition.
     * @param {string} libId The identifier of the library to create a definition in.
     * @param {CreateDefinitionRequest} request The definition creation request.
     * @returns {Promise<ServiceResponse<DefinitionResponse>>} The de-serialized service response with tree descriptor.
     * @throws {ServiceError} in case of the error response from the service.
     */
    createDefinition(libId: string, request: CreateDefinitionRequest): Promise<ServiceResponse<DefinitionResponse>>;
    /**
     * Updates the definition.
     * @param {string} libId The library identifier.
     * @param {string} defId The definition identifier.
     * @param {UpdateDefinitionRequest} request The tree descriptor update request.
     * @returns {Promise<ServiceResponse<DefinitionResponse>>} The de-serialized service response.
     * @throws {ServiceError} in case of the error response from the service.
     */
    updateDefinition(libId: string, defId: string, request: UpdateDefinitionRequest): Promise<ServiceResponse<DefinitionResponse>>;
    /**
     * Marks the definition as deleted.
     * @param {string} libId The tree identifier.
     * @param {string} defId The node identifier.
     * @param {DeleteOptions} params The optional request parameters.
     * @returns {Promise<ServiceResponse<DefinitionResponse>>} The de-serialized service response with node descriptor.
     * @throws {ServiceError} in case of the error response from the service.
     */
    deleteDefinition(libId: string, defId: string, params?: DeleteOptions): Promise<ServiceResponse<DefinitionResponse>>;
    /**
     * Validates existing pset instances against a schema proposal.
     * @param {string} libId The library identifier.
     * @param {string} defId The definition identifier.
     * @param {ValidateRequest} request The tree descriptor update request.
     * @param {ValidateOptions} params The request parameters.
     * @returns {Promise<ServiceResponse<ValidateResponse>>} The de-serialized service response.
     * @throws {ServiceError} in case of the error response from the service.
     */
    validate(libId: string, defId: string, request: ValidateRequest, params?: ValidateOptions): Promise<ServiceResponse<ValidateResponse>>;
    /**
     * Validates existing pset instances against a schema proposal.
     * @param {ValidateResponse} prev The response for previous page.
     * @param {ValidateRequest} request The tree descriptor update request.
     * @returns {Promise<ServiceResponse<ValidateResponse>>} The de-serialized service response.
     * @throws {ServiceError} in case of the error response from the service.
     */
    validateNextPage(prev: ValidateResponse, request: ValidateRequest): Promise<ServiceResponse<ValidateResponse>>;
    /**
     * Returns some or all (up to 500, default is 100) of the psets linked to the external resource.
     * You can use the request parameters as selection criteria to return a subset of the nodes in a tree.
     * @param {string} link The link to external resource.
     * @param {ListPSetsOptions} params The request parameters.
     * @returns {Promise<ServiceResponse<ListPSetsResponse>>} The de-serialized service response.
     * @throws {ServiceError} in case of the error response from the service.
     */
    listPSets(link: string, params?: ListPSetsOptions): Promise<ServiceResponse<ListPSetsResponse>>;
    /**
     * Returns some or all (up to 500, default is 100) of the psets created from the definition.
     * You can use the request parameters as selection criteria to return a subset of the nodes in a tree.
     * @param {string} libId The library id.
     * @param {string} defId The definition id.
     * @param {ListPSetsByDefinitionOptions} params The request parameters.
     * @returns {Promise<ServiceResponse<ListPSetsResponse>>} The de-serialized service response.
     * @throws {ServiceError} in case of the error response from the service.
     */
    listPSetsByDefinition(libId: string, defId: string, params?: ListPSetsByDefinitionOptions): Promise<ServiceResponse<ListPSetsResponse>>;
    /**
     * Returns some or all (up to 500, default is 100) of the pset versions.
     * @param {string} link The external resource link.
     * @param {string} libId The library identifier.
     * @param {string} defId The definition identifier.
     * @param {ListPSetVersionsOptions} params The request parameters.
     * @returns {Promise<ServiceResponse<ListPSetsResponse>>} The de-serialized service response.
     * @throws {ServiceError} in case of the error response from the service.
     */
    listPSetVersions(link: string, libId: string, defId: string, params?: ListPSetVersionsOptions): Promise<ServiceResponse<ListPSetsResponse>>;
    /**
     * Returns the pset instance.
     * @param {string} link The external resource link.
     * @param {string} libId The library identifier.
     * @param {string} defId The definition identifier.
     * @param {GetDefinitionOptions} params The optional request parameters.
     * @returns {Promise<ServiceResponse<PSetResponse>>} The service response with tree descriptor.
     * @throws {ServiceError} in case of the error response from the service.
     */
    getPSet(link: string, libId: string, defId: string, params?: GetDefinitionOptions): Promise<ServiceResponse<PSetResponse>>;
    /**
     * Returns the specific version of the pset instance.
     * @param {string} link The external resource link.
     * @param {string} libId The library identifier.
     * @param {string} defId The definition identifier.
     * @param {number} ver The version number.
     * @param {GetDefinitionOptions} params The optional request parameters.
     * @returns {Promise<ServiceResponse<PSetResponse>>} The service response with tree descriptor.
     * @throws {ServiceError} in case of the error response from the service.
     */
    getPSetVersion(link: string, libId: string, defId: string, ver: number): Promise<ServiceResponse<PSetResponse>>;
    /**
     * Returns an object with a collection of property sets and a collection of unhandled requests.
     * @deprecated Use batchGet instead
     * @keys {PSetKeyRequest} The keys of property sets to return
     * @param {GetDefinitionOptions} params The optional request parameters.
     * @returns {Promise<ServiceResponse<PSetResponse>>} The service response with tree descriptor.
     * @throws {ServiceError} in case of the error response from the service.
     */
    getPSets(keys: PSetKeyRequest, params?: GetDefinitionOptions): Promise<ServiceResponse<BatchPSetResponse<PSetKey>>>;
    /**
     * Returns an object with a collection of property sets and a collection of unhandled requests.
     * @deprecated Use batchGet instead
     * @param {string} libId The library identifier.
     * @param {string} defId The definition identifier.
     * @links {LinkRequest} The list of external resource links
     * @param {GetDefinitionOptions} params The optional request parameters.
     * @returns {Promise<ServiceResponse<PSetResponse>>} The service response with tree descriptor.
     * @throws {ServiceError} in case of the error response from the service.
     */
    getPSetsByDefinition(libId: string, defId: string, links: LinkRequest, params?: GetDefinitionOptions): Promise<ServiceResponse<BatchPSetResponse<string>>>;
    /**
     * Batch get resources. Different resource types (libs, defs, psets) can be requested in a single request.
     * It should never return a paged response.
     * @param {BatchGetRequest} request The ids/versions of resources to return.
     * @param {BatchGetOptions} params The optional request parameters.
     * @returns {Promise<ServiceResponse<BatchGetResponse>>} The service response.
     * @throws {ServiceError} in case of the error response from the service.
     */
    batchGet(request: PSetBatchGetRequest, params?: PSetBatchGetOptions): Promise<ServiceResponse<PSetBatchGetResponse>>;
    /**
     * Updates the pset.
     * @param {string} link The external resource link.
     * @param {string} libId The library identifier.
     * @param {string} defId The definition identifier.
     * @param {UpdateDefinitionRequest} request The tree descriptor update request.
     * @returns {Promise<ServiceResponse<PSetResponse>>} The de-serialized service response.
     * @throws {ServiceError} in case of the error response from the service.
     */
    updatePSet(link: string, libId: string, defId: string, request: PSetRequest): Promise<ServiceResponse<PSetResponse>>;
    /**
     * Marks the pset as deleted.
     * @param {string} link The external resource link.
     * @param {string} libId The tree identifier.
     * @param {string} defId The node identifier.
     * @param {DeleteOptions} params The optional request parameters.
     * @returns {Promise<ServiceResponse<PSetResponse>>} The de-serialized service response with node descriptor.
     * @throws {ServiceError} in case of the error response from the service.
     */
    deletePSet(link: string, libId: string, defId: string, params?: DeleteOptions): Promise<ServiceResponse<PSetResponse>>;
    /**
     * Post a changeset for processing. The changeset is processed synchronously if there are <=500 items in the request, otherwise asynchronously.
     * @param {ChangesetRequest} changeset The request.
     * @returns {Promise<ServiceResponse<ChangesetResponse | PSetChangesetAcceptedResponse>>} The de-serialized service response.
     * @throws {ServiceError} in case of the error response from the service.
     */
    changeset(changeset: PSetChangesetRequest): Promise<ServiceResponse<PSetChangesetResponseInline | PSetChangesetResponseAccepted>>;
    /**
     * Initialize a changeset and get a link for uploading changeset for later processing.
     * @returns {Promise<ServiceResponse<ChangesetStatusResponse>>} The de-serialized service response.
     * @throws {ServiceError} in case of the error response from the service.
     */
    changesetAsync(): Promise<ServiceResponse<PSetChangesetResponseAsync>>;
    /**
     * Gets a changeset status.
     * @param {string} changesetId The changeset identifier.
     * @returns {Promise<ServiceResponse<ChangesetStatusResponse>>} The de-serialized service response.
     * @throws {ServiceError} in case of the error response from the service.
     */
    changesetStatus(changesetId: string): Promise<ServiceResponse<PSetChangesetResponse>>;
    /**
     * Requests credential to subscribe to change notifications.
     * @returns {Promise<ServiceResponse<WSSubscriptionResponse>>} The de-serialized service response with temporary credentials and subscription details.
     * @throws {ServiceError} in case of the error response from the service.
     */
    subscribeWS(): Promise<ServiceResponse<WSSubscriptionResponse>>;
}
