/**
 * 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 { DraftReviewAndValidationResponse } from '../models';
import { PolicyAndValidationResponse } from '../models';
import { PolicyType } from '../models';
import { PublishDraftRequest } from '../models';
import { PublishResult } from '../models';
import { UpdateDraftRequest } from '../models';
/**
 * PolicyEditorV2BetaApi - axios parameter creator
 * @export
 */
export declare const PolicyEditorV2BetaApiAxiosParamCreator: (configuration?: Configuration) => {
    /**
     * Returns the active policy and its validation for a specific policy type.  **Note:** This endpoint is currently in beta and subject to change. If you want to participate in the Policies beta, contact your Fireblocks Customer Success Manager or send an email to csm@fireblocks.com.  Endpoint Permissions: Owner, Admin, Non-Signing Admin.
     * @summary Get the active policy and its validation by policy type
     * @param {PolicyType} policyType The policy type(s) to retrieve. Can be a single type or multiple types by repeating the parameter (e.g., ?policyType&#x3D;TRANSFER&amp;policyType&#x3D;MINT).
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    getActivePolicy: (policyType: PolicyType, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
    /**
     * Returns the active draft and its validation for a specific policy type.  **Note:** These endpoints are currently in beta and might be subject to changes.
     * @summary Get the active draft by policy type
     * @param {PolicyType} policyType The policy type(s) to retrieve. Can be a single type or multiple types by repeating the parameter (e.g., ?policyType&#x3D;TRANSFER&amp;policyType&#x3D;MINT).
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    getDraft: (policyType: PolicyType, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
    /**
     * Send publish request of certain draft id and returns the response.  **Note:** These endpoints are currently in beta and might be subject to changes. If you want to participate and learn more about the Fireblocks Policy Editor, please contact your Fireblocks Customer Success Manager or send an email to CSM@fireblocks.com.
     * @summary Send publish request for a certain draft id
     * @param {PublishDraftRequest} publishDraftRequest
     * @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}
     */
    publishDraft: (publishDraftRequest: PublishDraftRequest, idempotencyKey?: string, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
    /**
     * Update the draft and return its validation for specific policy types.  **Note:** These endpoints are currently in beta and might be subject to changes.
     * @summary Update the draft with a new set of rules by policy types
     * @param {UpdateDraftRequest} updateDraftRequest
     * @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}
     */
    updateDraft: (updateDraftRequest: UpdateDraftRequest, idempotencyKey?: string, options?: RawAxiosRequestConfig) => Promise<RequestArgs>;
};
/**
 * PolicyEditorV2BetaApi - functional programming interface
 * @export
 */
export declare const PolicyEditorV2BetaApiFp: (configuration?: Configuration) => {
    /**
     * Returns the active policy and its validation for a specific policy type.  **Note:** This endpoint is currently in beta and subject to change. If you want to participate in the Policies beta, contact your Fireblocks Customer Success Manager or send an email to csm@fireblocks.com.  Endpoint Permissions: Owner, Admin, Non-Signing Admin.
     * @summary Get the active policy and its validation by policy type
     * @param {PolicyType} policyType The policy type(s) to retrieve. Can be a single type or multiple types by repeating the parameter (e.g., ?policyType&#x3D;TRANSFER&amp;policyType&#x3D;MINT).
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    getActivePolicy(policyType: PolicyType, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<PolicyAndValidationResponse>>;
    /**
     * Returns the active draft and its validation for a specific policy type.  **Note:** These endpoints are currently in beta and might be subject to changes.
     * @summary Get the active draft by policy type
     * @param {PolicyType} policyType The policy type(s) to retrieve. Can be a single type or multiple types by repeating the parameter (e.g., ?policyType&#x3D;TRANSFER&amp;policyType&#x3D;MINT).
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    getDraft(policyType: PolicyType, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<DraftReviewAndValidationResponse>>;
    /**
     * Send publish request of certain draft id and returns the response.  **Note:** These endpoints are currently in beta and might be subject to changes. If you want to participate and learn more about the Fireblocks Policy Editor, please contact your Fireblocks Customer Success Manager or send an email to CSM@fireblocks.com.
     * @summary Send publish request for a certain draft id
     * @param {PublishDraftRequest} publishDraftRequest
     * @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}
     */
    publishDraft(publishDraftRequest: PublishDraftRequest, idempotencyKey?: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<PublishResult>>;
    /**
     * Update the draft and return its validation for specific policy types.  **Note:** These endpoints are currently in beta and might be subject to changes.
     * @summary Update the draft with a new set of rules by policy types
     * @param {UpdateDraftRequest} updateDraftRequest
     * @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}
     */
    updateDraft(updateDraftRequest: UpdateDraftRequest, idempotencyKey?: string, options?: RawAxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise<DraftReviewAndValidationResponse>>;
};
/**
 * PolicyEditorV2BetaApi - factory interface
 * @export
 */
export declare const PolicyEditorV2BetaApiFactory: (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) => {
    /**
     * Returns the active policy and its validation for a specific policy type.  **Note:** This endpoint is currently in beta and subject to change. If you want to participate in the Policies beta, contact your Fireblocks Customer Success Manager or send an email to csm@fireblocks.com.  Endpoint Permissions: Owner, Admin, Non-Signing Admin.
     * @summary Get the active policy and its validation by policy type
     * @param {PolicyEditorV2BetaApiGetActivePolicyRequest} requestParameters Request parameters.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    getActivePolicy(requestParameters: PolicyEditorV2BetaApiGetActivePolicyRequest, options?: RawAxiosRequestConfig): AxiosPromise<PolicyAndValidationResponse>;
    /**
     * Returns the active draft and its validation for a specific policy type.  **Note:** These endpoints are currently in beta and might be subject to changes.
     * @summary Get the active draft by policy type
     * @param {PolicyEditorV2BetaApiGetDraftRequest} requestParameters Request parameters.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    getDraft(requestParameters: PolicyEditorV2BetaApiGetDraftRequest, options?: RawAxiosRequestConfig): AxiosPromise<DraftReviewAndValidationResponse>;
    /**
     * Send publish request of certain draft id and returns the response.  **Note:** These endpoints are currently in beta and might be subject to changes. If you want to participate and learn more about the Fireblocks Policy Editor, please contact your Fireblocks Customer Success Manager or send an email to CSM@fireblocks.com.
     * @summary Send publish request for a certain draft id
     * @param {PolicyEditorV2BetaApiPublishDraftRequest} requestParameters Request parameters.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    publishDraft(requestParameters: PolicyEditorV2BetaApiPublishDraftRequest, options?: RawAxiosRequestConfig): AxiosPromise<PublishResult>;
    /**
     * Update the draft and return its validation for specific policy types.  **Note:** These endpoints are currently in beta and might be subject to changes.
     * @summary Update the draft with a new set of rules by policy types
     * @param {PolicyEditorV2BetaApiUpdateDraftRequest} requestParameters Request parameters.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    updateDraft(requestParameters: PolicyEditorV2BetaApiUpdateDraftRequest, options?: RawAxiosRequestConfig): AxiosPromise<DraftReviewAndValidationResponse>;
};
/**
 * Request parameters for getActivePolicy operation in PolicyEditorV2BetaApi.
 * @export
 * @interface PolicyEditorV2BetaApiGetActivePolicyRequest
 */
export interface PolicyEditorV2BetaApiGetActivePolicyRequest {
    /**
     * The policy type(s) to retrieve. Can be a single type or multiple types by repeating the parameter (e.g., ?policyType&#x3D;TRANSFER&amp;policyType&#x3D;MINT).
     * @type {PolicyType}
     * @memberof PolicyEditorV2BetaApiGetActivePolicy
     */
    readonly policyType: PolicyType;
}
/**
 * Request parameters for getDraft operation in PolicyEditorV2BetaApi.
 * @export
 * @interface PolicyEditorV2BetaApiGetDraftRequest
 */
export interface PolicyEditorV2BetaApiGetDraftRequest {
    /**
     * The policy type(s) to retrieve. Can be a single type or multiple types by repeating the parameter (e.g., ?policyType&#x3D;TRANSFER&amp;policyType&#x3D;MINT).
     * @type {PolicyType}
     * @memberof PolicyEditorV2BetaApiGetDraft
     */
    readonly policyType: PolicyType;
}
/**
 * Request parameters for publishDraft operation in PolicyEditorV2BetaApi.
 * @export
 * @interface PolicyEditorV2BetaApiPublishDraftRequest
 */
export interface PolicyEditorV2BetaApiPublishDraftRequest {
    /**
     *
     * @type {PublishDraftRequest}
     * @memberof PolicyEditorV2BetaApiPublishDraft
     */
    readonly publishDraftRequest: PublishDraftRequest;
    /**
     * 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 PolicyEditorV2BetaApiPublishDraft
     */
    readonly idempotencyKey?: string;
}
/**
 * Request parameters for updateDraft operation in PolicyEditorV2BetaApi.
 * @export
 * @interface PolicyEditorV2BetaApiUpdateDraftRequest
 */
export interface PolicyEditorV2BetaApiUpdateDraftRequest {
    /**
     *
     * @type {UpdateDraftRequest}
     * @memberof PolicyEditorV2BetaApiUpdateDraft
     */
    readonly updateDraftRequest: UpdateDraftRequest;
    /**
     * 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 PolicyEditorV2BetaApiUpdateDraft
     */
    readonly idempotencyKey?: string;
}
/**
 * PolicyEditorV2BetaApi - object-oriented interface
 * @export
 * @class PolicyEditorV2BetaApi
 * @extends {BaseAPI}
 */
export declare class PolicyEditorV2BetaApi extends BaseAPI {
    /**
     * Returns the active policy and its validation for a specific policy type.  **Note:** This endpoint is currently in beta and subject to change. If you want to participate in the Policies beta, contact your Fireblocks Customer Success Manager or send an email to csm@fireblocks.com.  Endpoint Permissions: Owner, Admin, Non-Signing Admin.
     * @summary Get the active policy and its validation by policy type
     * @param {PolicyEditorV2BetaApiGetActivePolicyRequest} requestParameters Request parameters.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PolicyEditorV2BetaApi
     */
    getActivePolicy(requestParameters: PolicyEditorV2BetaApiGetActivePolicyRequest): Promise<import("../response/fireblocksResponse").FireblocksResponse<PolicyAndValidationResponse>>;
    /**
     * Returns the active draft and its validation for a specific policy type.  **Note:** These endpoints are currently in beta and might be subject to changes.
     * @summary Get the active draft by policy type
     * @param {PolicyEditorV2BetaApiGetDraftRequest} requestParameters Request parameters.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PolicyEditorV2BetaApi
     */
    getDraft(requestParameters: PolicyEditorV2BetaApiGetDraftRequest): Promise<import("../response/fireblocksResponse").FireblocksResponse<DraftReviewAndValidationResponse>>;
    /**
     * Send publish request of certain draft id and returns the response.  **Note:** These endpoints are currently in beta and might be subject to changes. If you want to participate and learn more about the Fireblocks Policy Editor, please contact your Fireblocks Customer Success Manager or send an email to CSM@fireblocks.com.
     * @summary Send publish request for a certain draft id
     * @param {PolicyEditorV2BetaApiPublishDraftRequest} requestParameters Request parameters.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PolicyEditorV2BetaApi
     */
    publishDraft(requestParameters: PolicyEditorV2BetaApiPublishDraftRequest): Promise<import("../response/fireblocksResponse").FireblocksResponse<PublishResult>>;
    /**
     * Update the draft and return its validation for specific policy types.  **Note:** These endpoints are currently in beta and might be subject to changes.
     * @summary Update the draft with a new set of rules by policy types
     * @param {PolicyEditorV2BetaApiUpdateDraftRequest} requestParameters Request parameters.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PolicyEditorV2BetaApi
     */
    updateDraft(requestParameters: PolicyEditorV2BetaApiUpdateDraftRequest): Promise<import("../response/fireblocksResponse").FireblocksResponse<DraftReviewAndValidationResponse>>;
}
