/**
 * 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';
/**
 * PolicyEditorV2Api - axios parameter creator
 * @export
 */
export declare const PolicyEditorV2ApiAxiosParamCreator: (configuration?: Configuration) => {
    /**
     * Returns the active policy and its validation for a specific policy type.  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.
     * @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.  **⚠️ IMPORTANT SECURITY NOTICE:**  The Fireblocks Policy is a critical security guardrail. Programmatically modifying your policy via the API introduces significant security risks. As an industry best practice, Fireblocks strongly recommends manual editing accompanied by strict human oversight and approval workflows for all policy changes. Programmatic updates should only be implemented by advanced users with comprehensive, multi-layer security controls in place.  If you want to 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.  **⚠️ IMPORTANT SECURITY NOTICE:**  The Fireblocks Policy is a critical security guardrail. Programmatically modifying your policy via the API introduces significant security risks. As an industry best practice, Fireblocks strongly recommends manual editing accompanied by strict human oversight and approval workflows for all policy changes. Programmatic updates should only be implemented by advanced users with comprehensive, multi-layer security controls in place.
     * @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>;
};
/**
 * PolicyEditorV2Api - functional programming interface
 * @export
 */
export declare const PolicyEditorV2ApiFp: (configuration?: Configuration) => {
    /**
     * Returns the active policy and its validation for a specific policy type.  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.
     * @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.  **⚠️ IMPORTANT SECURITY NOTICE:**  The Fireblocks Policy is a critical security guardrail. Programmatically modifying your policy via the API introduces significant security risks. As an industry best practice, Fireblocks strongly recommends manual editing accompanied by strict human oversight and approval workflows for all policy changes. Programmatic updates should only be implemented by advanced users with comprehensive, multi-layer security controls in place.  If you want to 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.  **⚠️ IMPORTANT SECURITY NOTICE:**  The Fireblocks Policy is a critical security guardrail. Programmatically modifying your policy via the API introduces significant security risks. As an industry best practice, Fireblocks strongly recommends manual editing accompanied by strict human oversight and approval workflows for all policy changes. Programmatic updates should only be implemented by advanced users with comprehensive, multi-layer security controls in place.
     * @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>>;
};
/**
 * PolicyEditorV2Api - factory interface
 * @export
 */
export declare const PolicyEditorV2ApiFactory: (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) => {
    /**
     * Returns the active policy and its validation for a specific policy type.  Endpoint Permissions: Owner, Admin, Non-Signing Admin.
     * @summary Get the active policy and its validation by policy type
     * @param {PolicyEditorV2ApiGetActivePolicyRequest} requestParameters Request parameters.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    getActivePolicy(requestParameters: PolicyEditorV2ApiGetActivePolicyRequest, options?: RawAxiosRequestConfig): AxiosPromise<PolicyAndValidationResponse>;
    /**
     * Returns the active draft and its validation for a specific policy type.
     * @summary Get the active draft by policy type
     * @param {PolicyEditorV2ApiGetDraftRequest} requestParameters Request parameters.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    getDraft(requestParameters: PolicyEditorV2ApiGetDraftRequest, options?: RawAxiosRequestConfig): AxiosPromise<DraftReviewAndValidationResponse>;
    /**
     * Send publish request of certain draft id and returns the response.  **⚠️ IMPORTANT SECURITY NOTICE:**  The Fireblocks Policy is a critical security guardrail. Programmatically modifying your policy via the API introduces significant security risks. As an industry best practice, Fireblocks strongly recommends manual editing accompanied by strict human oversight and approval workflows for all policy changes. Programmatic updates should only be implemented by advanced users with comprehensive, multi-layer security controls in place.  If you want to 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 {PolicyEditorV2ApiPublishDraftRequest} requestParameters Request parameters.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    publishDraft(requestParameters: PolicyEditorV2ApiPublishDraftRequest, options?: RawAxiosRequestConfig): AxiosPromise<PublishResult>;
    /**
     * Update the draft and return its validation for specific policy types.  **⚠️ IMPORTANT SECURITY NOTICE:**  The Fireblocks Policy is a critical security guardrail. Programmatically modifying your policy via the API introduces significant security risks. As an industry best practice, Fireblocks strongly recommends manual editing accompanied by strict human oversight and approval workflows for all policy changes. Programmatic updates should only be implemented by advanced users with comprehensive, multi-layer security controls in place.
     * @summary Update the draft with a new set of rules by policy types
     * @param {PolicyEditorV2ApiUpdateDraftRequest} requestParameters Request parameters.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     */
    updateDraft(requestParameters: PolicyEditorV2ApiUpdateDraftRequest, options?: RawAxiosRequestConfig): AxiosPromise<DraftReviewAndValidationResponse>;
};
/**
 * Request parameters for getActivePolicy operation in PolicyEditorV2Api.
 * @export
 * @interface PolicyEditorV2ApiGetActivePolicyRequest
 */
export interface PolicyEditorV2ApiGetActivePolicyRequest {
    /**
     * 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 PolicyEditorV2ApiGetActivePolicy
     */
    readonly policyType: PolicyType;
}
/**
 * Request parameters for getDraft operation in PolicyEditorV2Api.
 * @export
 * @interface PolicyEditorV2ApiGetDraftRequest
 */
export interface PolicyEditorV2ApiGetDraftRequest {
    /**
     * 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 PolicyEditorV2ApiGetDraft
     */
    readonly policyType: PolicyType;
}
/**
 * Request parameters for publishDraft operation in PolicyEditorV2Api.
 * @export
 * @interface PolicyEditorV2ApiPublishDraftRequest
 */
export interface PolicyEditorV2ApiPublishDraftRequest {
    /**
     *
     * @type {PublishDraftRequest}
     * @memberof PolicyEditorV2ApiPublishDraft
     */
    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 PolicyEditorV2ApiPublishDraft
     */
    readonly idempotencyKey?: string;
}
/**
 * Request parameters for updateDraft operation in PolicyEditorV2Api.
 * @export
 * @interface PolicyEditorV2ApiUpdateDraftRequest
 */
export interface PolicyEditorV2ApiUpdateDraftRequest {
    /**
     *
     * @type {UpdateDraftRequest}
     * @memberof PolicyEditorV2ApiUpdateDraft
     */
    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 PolicyEditorV2ApiUpdateDraft
     */
    readonly idempotencyKey?: string;
}
/**
 * PolicyEditorV2Api - object-oriented interface
 * @export
 * @class PolicyEditorV2Api
 * @extends {BaseAPI}
 */
export declare class PolicyEditorV2Api extends BaseAPI {
    /**
     * Returns the active policy and its validation for a specific policy type.  Endpoint Permissions: Owner, Admin, Non-Signing Admin.
     * @summary Get the active policy and its validation by policy type
     * @param {PolicyEditorV2ApiGetActivePolicyRequest} requestParameters Request parameters.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PolicyEditorV2Api
     */
    getActivePolicy(requestParameters: PolicyEditorV2ApiGetActivePolicyRequest): Promise<import("../response/fireblocksResponse").FireblocksResponse<PolicyAndValidationResponse>>;
    /**
     * Returns the active draft and its validation for a specific policy type.
     * @summary Get the active draft by policy type
     * @param {PolicyEditorV2ApiGetDraftRequest} requestParameters Request parameters.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PolicyEditorV2Api
     */
    getDraft(requestParameters: PolicyEditorV2ApiGetDraftRequest): Promise<import("../response/fireblocksResponse").FireblocksResponse<DraftReviewAndValidationResponse>>;
    /**
     * Send publish request of certain draft id and returns the response.  **⚠️ IMPORTANT SECURITY NOTICE:**  The Fireblocks Policy is a critical security guardrail. Programmatically modifying your policy via the API introduces significant security risks. As an industry best practice, Fireblocks strongly recommends manual editing accompanied by strict human oversight and approval workflows for all policy changes. Programmatic updates should only be implemented by advanced users with comprehensive, multi-layer security controls in place.  If you want to 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 {PolicyEditorV2ApiPublishDraftRequest} requestParameters Request parameters.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PolicyEditorV2Api
     */
    publishDraft(requestParameters: PolicyEditorV2ApiPublishDraftRequest): Promise<import("../response/fireblocksResponse").FireblocksResponse<PublishResult>>;
    /**
     * Update the draft and return its validation for specific policy types.  **⚠️ IMPORTANT SECURITY NOTICE:**  The Fireblocks Policy is a critical security guardrail. Programmatically modifying your policy via the API introduces significant security risks. As an industry best practice, Fireblocks strongly recommends manual editing accompanied by strict human oversight and approval workflows for all policy changes. Programmatic updates should only be implemented by advanced users with comprehensive, multi-layer security controls in place.
     * @summary Update the draft with a new set of rules by policy types
     * @param {PolicyEditorV2ApiUpdateDraftRequest} requestParameters Request parameters.
     * @param {*} [options] Override http request option.
     * @throws {RequiredError}
     * @memberof PolicyEditorV2Api
     */
    updateDraft(requestParameters: PolicyEditorV2ApiUpdateDraftRequest): Promise<import("../response/fireblocksResponse").FireblocksResponse<DraftReviewAndValidationResponse>>;
}
