/**
 * Fireblocks API
 * Fireblocks provides a suite of applications to manage digital asset operations and a complete development platform to build your business on the blockchain.  - Visit our website for more information: [Fireblocks Website](https://fireblocks.com) - Visit our developer docs: [Fireblocks DevPortal](https://developers.fireblocks.com)
 *
 * The version of the OpenAPI document: 1.6.2
 * Contact: developers@fireblocks.com
 *
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */
import type { Configuration } from '../configuration';
import type { AxiosPromise, AxiosInstance, RawAxiosRequestConfig } from 'axios';
import { RequestArgs, BaseAPI } from '../base';
import { ApprovalRequest } from '../models';
import { CreateTagRequest } from '../models';
import { Tag } from '../models';
import { TagType } from '../models';
import { TagsPagedResponse } from '../models';
import { UpdateTagRequest } from '../models';
/**
 * TagsApi - axios parameter creator
 * @export
 */
export declare const TagsApiAxiosParamCreator: (configuration?: Configuration) => {
    /**
     * Create a new tag. Endpoint Permissions: For protected tags: ADMIN,NON_SIGNING_ADMIN,OWNER. For non protected tags: ADMIN,NON_SIGNING_ADMIN,OWNER,SIGNER,EDITOR,APPROVER.
     * @summary Create a new tag
     * @param {CreateTagRequest} createTagRequest
     * @param {string} [idempotencyKey] A unique identifier for the request. If the request is sent multiple times with the same idempotency key, the server will return the same response as the first request. The idempotency key is valid for 24 hours.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    createTag: (createTagRequest: CreateTagRequest, idempotencyKey?: string, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
    /**
     * Delete the specified tag. Endpoint Permission: For protected tags: Owner, Admin, Non-Signing Admin. For non protected tags: Owner, Admin, Non-Signing Admin, Signer, Editor, Approver.
     * @summary Delete a tag
     * @param {string} tagId The ID of the tag to retrieve
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    deleteTag: (tagId: string, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
    /**
     * Get an approval request by id
     * @summary Get an approval request by id
     * @param {string} id
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    getApprovalRequest: (id: string, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
    /**
     * Retrieve an existing tag by ID.
     * @summary Get a tag
     * @param {string} tagId The ID of the tag to retrieve
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    getTag: (tagId: string, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
    /**
     * Retrieve a paged list of all tags according to filters.
     * @summary Get list of tags
     * @param {string} [pageCursor] Page cursor to get the next page.
     * @param {number} [pageSize] Maximum number of items in the page
     * @param {string} [label] Label prefix to filter by.
     * @param {Array<string>} [tagIds] List of tag IDs to filter by.
     * @param {boolean} [includePendingApprovalsInfo] Whether to include pending approval requests info.
     * @param {boolean} [isProtected]
     * @param {Array<TagType>} [type] Filter by tag type
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    getTags: (pageCursor?: string, pageSize?: number, label?: string, tagIds?: Array<string>, includePendingApprovalsInfo?: boolean, isProtected?: boolean, type?: Array<TagType>, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
    /**
     * Update an existing specified tag. Endpoint Permission: For protected tags: Owner, Admin, Non-Signing Admin. For non protected tags: Owner, Admin, Non-Signing Admin, Signer, Editor, Approver.
     * @summary Update a tag
     * @param {UpdateTagRequest} updateTagRequest
     * @param {string} tagId The ID of the tag to update
     * @param {string} [idempotencyKey] A unique identifier for the request. If the request is sent multiple times with the same idempotency key, the server will return the same response as the first request. The idempotency key is valid for 24 hours.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    updateTag: (updateTagRequest: UpdateTagRequest, tagId: string, idempotencyKey?: string, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
};
/**
 * TagsApi - functional programming interface
 * @export
 */
export declare const TagsApiFp: (configuration?: Configuration) => {
    /**
     * Create a new tag. Endpoint Permissions: For protected tags: ADMIN,NON_SIGNING_ADMIN,OWNER. For non protected tags: ADMIN,NON_SIGNING_ADMIN,OWNER,SIGNER,EDITOR,APPROVER.
     * @summary Create a new tag
     * @param {CreateTagRequest} createTagRequest
     * @param {string} [idempotencyKey] A unique identifier for the request. If the request is sent multiple times with the same idempotency key, the server will return the same response as the first request. The idempotency key is valid for 24 hours.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    createTag(createTagRequest: CreateTagRequest, idempotencyKey?: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<Tag>>;
    /**
     * Delete the specified tag. Endpoint Permission: For protected tags: Owner, Admin, Non-Signing Admin. For non protected tags: Owner, Admin, Non-Signing Admin, Signer, Editor, Approver.
     * @summary Delete a tag
     * @param {string} tagId The ID of the tag to retrieve
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    deleteTag(tagId: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<void>>;
    /**
     * Get an approval request by id
     * @summary Get an approval request by id
     * @param {string} id
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    getApprovalRequest(id: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<ApprovalRequest>>;
    /**
     * Retrieve an existing tag by ID.
     * @summary Get a tag
     * @param {string} tagId The ID of the tag to retrieve
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    getTag(tagId: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<Tag>>;
    /**
     * Retrieve a paged list of all tags according to filters.
     * @summary Get list of tags
     * @param {string} [pageCursor] Page cursor to get the next page.
     * @param {number} [pageSize] Maximum number of items in the page
     * @param {string} [label] Label prefix to filter by.
     * @param {Array<string>} [tagIds] List of tag IDs to filter by.
     * @param {boolean} [includePendingApprovalsInfo] Whether to include pending approval requests info.
     * @param {boolean} [isProtected]
     * @param {Array<TagType>} [type] Filter by tag type
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    getTags(pageCursor?: string, pageSize?: number, label?: string, tagIds?: Array<string>, includePendingApprovalsInfo?: boolean, isProtected?: boolean, type?: Array<TagType>, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<TagsPagedResponse>>;
    /**
     * Update an existing specified tag. Endpoint Permission: For protected tags: Owner, Admin, Non-Signing Admin. For non protected tags: Owner, Admin, Non-Signing Admin, Signer, Editor, Approver.
     * @summary Update a tag
     * @param {UpdateTagRequest} updateTagRequest
     * @param {string} tagId The ID of the tag to update
     * @param {string} [idempotencyKey] A unique identifier for the request. If the request is sent multiple times with the same idempotency key, the server will return the same response as the first request. The idempotency key is valid for 24 hours.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    updateTag(updateTagRequest: UpdateTagRequest, tagId: string, idempotencyKey?: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<Tag>>;
};
/**
 * TagsApi - factory interface
 * @export
 */
export declare const TagsApiFactory: (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) => {
    /**
     * Create a new tag. Endpoint Permissions: For protected tags: ADMIN,NON_SIGNING_ADMIN,OWNER. For non protected tags: ADMIN,NON_SIGNING_ADMIN,OWNER,SIGNER,EDITOR,APPROVER.
     * @summary Create a new tag
     * @param {TagsApiCreateTagRequest} requestParameters Request parameters.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    createTag(requestParameters: TagsApiCreateTagRequest, options?: RawAxiosRequestConfig): AxiosPromise<Tag>;
    /**
     * Delete the specified tag. Endpoint Permission: For protected tags: Owner, Admin, Non-Signing Admin. For non protected tags: Owner, Admin, Non-Signing Admin, Signer, Editor, Approver.
     * @summary Delete a tag
     * @param {TagsApiDeleteTagRequest} requestParameters Request parameters.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    deleteTag(requestParameters: TagsApiDeleteTagRequest, options?: RawAxiosRequestConfig): AxiosPromise<void>;
    /**
     * Get an approval request by id
     * @summary Get an approval request by id
     * @param {TagsApiGetApprovalRequestRequest} requestParameters Request parameters.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    getApprovalRequest(requestParameters: TagsApiGetApprovalRequestRequest, options?: RawAxiosRequestConfig): AxiosPromise<ApprovalRequest>;
    /**
     * Retrieve an existing tag by ID.
     * @summary Get a tag
     * @param {TagsApiGetTagRequest} requestParameters Request parameters.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    getTag(requestParameters: TagsApiGetTagRequest, options?: RawAxiosRequestConfig): AxiosPromise<Tag>;
    /**
     * Retrieve a paged list of all tags according to filters.
     * @summary Get list of tags
     * @param {TagsApiGetTagsRequest} requestParameters Request parameters.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    getTags(requestParameters?: TagsApiGetTagsRequest, options?: RawAxiosRequestConfig): AxiosPromise<TagsPagedResponse>;
    /**
     * Update an existing specified tag. Endpoint Permission: For protected tags: Owner, Admin, Non-Signing Admin. For non protected tags: Owner, Admin, Non-Signing Admin, Signer, Editor, Approver.
     * @summary Update a tag
     * @param {TagsApiUpdateTagRequest} requestParameters Request parameters.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    updateTag(requestParameters: TagsApiUpdateTagRequest, options?: RawAxiosRequestConfig): AxiosPromise<Tag>;
};
/**
 * Request parameters for createTag operation in TagsApi.
 * @export
 * @interface TagsApiCreateTagRequest
 */
export interface TagsApiCreateTagRequest {
    /**
     *
     * @type {CreateTagRequest}
     * @memberof TagsApiCreateTag
     */
    readonly createTagRequest: CreateTagRequest;
    /**
     * A unique identifier for the request. If the request is sent multiple times with the same idempotency key, the server will return the same response as the first request. The idempotency key is valid for 24 hours.
     * @type {string}
     * @memberof TagsApiCreateTag
     */
    readonly idempotencyKey?: string;
}
/**
 * Request parameters for deleteTag operation in TagsApi.
 * @export
 * @interface TagsApiDeleteTagRequest
 */
export interface TagsApiDeleteTagRequest {
    /**
     * The ID of the tag to retrieve
     * @type {string}
     * @memberof TagsApiDeleteTag
     */
    readonly tagId: string;
}
/**
 * Request parameters for getApprovalRequest operation in TagsApi.
 * @export
 * @interface TagsApiGetApprovalRequestRequest
 */
export interface TagsApiGetApprovalRequestRequest {
    /**
     *
     * @type {string}
     * @memberof TagsApiGetApprovalRequest
     */
    readonly id: string;
}
/**
 * Request parameters for getTag operation in TagsApi.
 * @export
 * @interface TagsApiGetTagRequest
 */
export interface TagsApiGetTagRequest {
    /**
     * The ID of the tag to retrieve
     * @type {string}
     * @memberof TagsApiGetTag
     */
    readonly tagId: string;
}
/**
 * Request parameters for getTags operation in TagsApi.
 * @export
 * @interface TagsApiGetTagsRequest
 */
export interface TagsApiGetTagsRequest {
    /**
     * Page cursor to get the next page.
     * @type {string}
     * @memberof TagsApiGetTags
     */
    readonly pageCursor?: string;
    /**
     * Maximum number of items in the page
     * @type {number}
     * @memberof TagsApiGetTags
     */
    readonly pageSize?: number;
    /**
     * Label prefix to filter by.
     * @type {string}
     * @memberof TagsApiGetTags
     */
    readonly label?: string;
    /**
     * List of tag IDs to filter by.
     * @type {Array<string>}
     * @memberof TagsApiGetTags
     */
    readonly tagIds?: Array<string>;
    /**
     * Whether to include pending approval requests info.
     * @type {boolean}
     * @memberof TagsApiGetTags
     */
    readonly includePendingApprovalsInfo?: boolean;
    /**
     *
     * @type {boolean}
     * @memberof TagsApiGetTags
     */
    readonly isProtected?: boolean;
    /**
     * Filter by tag type
     * @type {Array<TagType>}
     * @memberof TagsApiGetTags
     */
    readonly type?: Array<TagType>;
}
/**
 * Request parameters for updateTag operation in TagsApi.
 * @export
 * @interface TagsApiUpdateTagRequest
 */
export interface TagsApiUpdateTagRequest {
    /**
     *
     * @type {UpdateTagRequest}
     * @memberof TagsApiUpdateTag
     */
    readonly updateTagRequest: UpdateTagRequest;
    /**
     * The ID of the tag to update
     * @type {string}
     * @memberof TagsApiUpdateTag
     */
    readonly tagId: string;
    /**
     * A unique identifier for the request. If the request is sent multiple times with the same idempotency key, the server will return the same response as the first request. The idempotency key is valid for 24 hours.
     * @type {string}
     * @memberof TagsApiUpdateTag
     */
    readonly idempotencyKey?: string;
}
/**
 * TagsApi - object-oriented interface
 * @export
 * @class TagsApi
 * @extends {BaseAPI}
 */
export declare class TagsApi extends BaseAPI {
    /**
     * Create a new tag. Endpoint Permissions: For protected tags: ADMIN,NON_SIGNING_ADMIN,OWNER. For non protected tags: ADMIN,NON_SIGNING_ADMIN,OWNER,SIGNER,EDITOR,APPROVER.
     * @summary Create a new tag
     * @param {TagsApiCreateTagRequest} requestParameters Request parameters.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof TagsApi
     */
    createTag(requestParameters: TagsApiCreateTagRequest): Promise<import("../response/fireblocksResponse").FireblocksResponse<Tag>>;
    /**
     * Delete the specified tag. Endpoint Permission: For protected tags: Owner, Admin, Non-Signing Admin. For non protected tags: Owner, Admin, Non-Signing Admin, Signer, Editor, Approver.
     * @summary Delete a tag
     * @param {TagsApiDeleteTagRequest} requestParameters Request parameters.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof TagsApi
     */
    deleteTag(requestParameters: TagsApiDeleteTagRequest): Promise<import("../response/fireblocksResponse").FireblocksResponse<void>>;
    /**
     * Get an approval request by id
     * @summary Get an approval request by id
     * @param {TagsApiGetApprovalRequestRequest} requestParameters Request parameters.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof TagsApi
     */
    getApprovalRequest(requestParameters: TagsApiGetApprovalRequestRequest): Promise<import("../response/fireblocksResponse").FireblocksResponse<ApprovalRequest>>;
    /**
     * Retrieve an existing tag by ID.
     * @summary Get a tag
     * @param {TagsApiGetTagRequest} requestParameters Request parameters.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof TagsApi
     */
    getTag(requestParameters: TagsApiGetTagRequest): Promise<import("../response/fireblocksResponse").FireblocksResponse<Tag>>;
    /**
     * Retrieve a paged list of all tags according to filters.
     * @summary Get list of tags
     * @param {TagsApiGetTagsRequest} requestParameters Request parameters.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof TagsApi
     */
    getTags(requestParameters?: TagsApiGetTagsRequest): Promise<import("../response/fireblocksResponse").FireblocksResponse<TagsPagedResponse>>;
    /**
     * Update an existing specified tag. Endpoint Permission: For protected tags: Owner, Admin, Non-Signing Admin. For non protected tags: Owner, Admin, Non-Signing Admin, Signer, Editor, Approver.
     * @summary Update a tag
     * @param {TagsApiUpdateTagRequest} requestParameters Request parameters.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof TagsApi
     */
    updateTag(requestParameters: TagsApiUpdateTagRequest): Promise<import("../response/fireblocksResponse").FireblocksResponse<Tag>>;
}
