/**
 * ProjectManager API for TypeScript
 *
 * (c) ProjectManager.com, Inc.
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 *
 * @author     ProjectManager.com <support@projectmanager.com>
 * @copyright  ProjectManager.com, Inc.
 * @link       https://github.com/projectmgr/projectmanager-sdk-typescript
 */
import { ProjectManagerClient } from "../index.js";
import { AstroResult } from "../index.js";
import { ResourceDto } from "../index.js";
import { ResourceCreateDto } from "../index.js";
import { ResourceUpdateDto } from "../index.js";
import { ResourcesDto } from "../index.js";
import { ResourcesCreateDto } from "../index.js";
export declare class ResourceClient {
    private readonly client;
    /**
     * Internal constructor for this client library
     */
    constructor(client: ProjectManagerClient);
    /**
     * Create a new Resource within your Workspace.
     *
     * A Resource represents a person, material, or tool that is used within your Projects.
     * When you attach a Resources to more than one Task, the software will schedule the usage
     * of your Resource so that it is not allocated to more than one Task at the same time.
     * The users in your Workspace are also considered Resources.  To invite a new User to your
     * Workspace, create a new Resource for that user.
     *
     * @param body The details for the new Resource to create
     */
    createResource(body: ResourceCreateDto): Promise<AstroResult<ResourceDto>>;
    /**
     * Retrieve a list of Resources that match an [OData formatted query](https://www.odata.org/).
     *
     * A Resource represents a person, material, or tool that is used within your Projects.
     * When you attach a Resources to more than one Task, the software will schedule the usage
     * of your Resource so that it is not allocated to more than one Task at the same time.
     * The users in your Workspace are also considered Resources.  To invite a new User to your
     * Workspace, create a new Resource for that user.
     *
     * @param top The number of records to return
     * @param skip Skips the given number of records and then returns $top records
     * @param filter Filter the expression according to oData queries
     * @param orderby Order collection by this field.
     * @param expand Include related data in the response
     */
    queryResources(top?: number, skip?: number, filter?: string, orderby?: string, expand?: string): Promise<AstroResult<ResourceDto[]>>;
    /**
     * Updates an existing Resource based on information you provide.
     *
     * A Resource represents a person, material, or tool that is used within your Projects.
     * When you attach a Resources to more than one Task, the software will schedule the usage
     * of your Resource so that it is not allocated to more than one Task at the same time.
     * The users in your Workspace are also considered Resources.  To invite a new User to your
     * Workspace, create a new Resource for that user.
     *
     * @param resourceId The id of the resource
     * @param body The information to update the resource
     */
    updateResource(resourceId: string, body: ResourceUpdateDto): Promise<AstroResult<ResourceDto>>;
    /**
     * Retrieve the Resource matching the specified unique ID.
     *
     * A Resource represents a person, material, or tool that is used within your Projects.
     * When you attach a Resources to more than one Task, the software will schedule the usage
     * of your Resource so that it is not allocated to more than one Task at the same time.
     * The users in your Workspace are also considered Resources.  To invite a new User to your
     * Workspace, create a new Resource for that user.
     *
     * @param resourceId The id of the Resource
     */
    retrieveResource(resourceId: string): Promise<AstroResult<ResourceDto>>;
    /**
     * Deletes an existing Resource based on information you provide.
     *
     * A Resource represents a person, material, or tool used within your Projects.
     * When you attach a Resources to more than one Task, the software will schedule the usage
     * of your Resource so that it is not allocated to more than one Task at the same time.
     * The users in your Workspace are also considered Resources.  To invite a new User to your
     * Workspace, create a new Resource for that user.
     *
     * @param resourceId The id of the resource
     */
    deleteResource(resourceId: string): Promise<AstroResult<ResourceDto>>;
    /**
     * Create new Resources within your Workspace.
     *
     * A Resource represents a person, material, or tool that is used within your Projects.
     * When you attach a Resources to more than one Task, the software will schedule the usage
     * of your Resource so that it is not allocated to more than one Task at the same time.
     * The users in your Workspace are also considered Resources.  To invite a new User to your
     * Workspace, create a new Resource for that user.
     *
     * @param body The details for the new Resources to create
     */
    createManyResources(body: ResourcesCreateDto): Promise<AstroResult<ResourcesDto>>;
    /**
     * Resend Invite Email to a Resource within your Workspace.
     *
     * When you create a Resource that is a person, ProjectManager sends that person an email inviting them to join
     * your Workspace.  If that email is accidentally deleted or sent to a spam folder, you can request this email
     * be sent again using this API.
     *
     * @param resourceId The unique identifier of the Resource to send an invitation email
     */
    resendInviteEmail(resourceId: string): Promise<AstroResult<object>>;
    /**
     * Get Resource Avatar
     *
     * @param resourceId The id of the resource
     */
    getResourceAvatar(resourceId: string): Promise<AstroResult<object>>;
}
