/**
 * 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 { AccountConfig } from './account-config';
import { AmountConfig } from './amount-config';
import { AmountOverTimeConfig } from './amount-over-time-config';
import { AmountRange } from './amount-range';
import { AssetConfig } from './asset-config';
import { ContractMethodPattern } from './contract-method-pattern';
import { DAppAddressConfig } from './dapp-address-config';
import { DerivationPathConfig } from './derivation-path-config';
import { DestinationConfig } from './destination-config';
import { InitiatorConfigPattern } from './initiator-config-pattern';
import { OrderSide } from './order-side';
import { PolicyType } from './policy-type';
import { ProgramCallConfig } from './program-call-config';
import { ScreeningMetadataConfig } from './screening-metadata-config';
import { SourceConfig } from './source-config';
import { VerdictConfig } from './verdict-config';
/**
 * V2 Policy rule which is enforced on transactions
 * @export
 * @interface PolicyRule
 */
export interface PolicyRule {
    /**
     * Name of the policy rule
     * @type {string}
     * @memberof PolicyRule
     */
    'name': string;
    /**
     * Unique identifier for the policy rule
     * @type {string}
     * @memberof PolicyRule
     */
    'id': string;
    /**
     * Policy engine version
     * @type {string}
     * @memberof PolicyRule
     */
    'policyEngineVersion': PolicyRulePolicyEngineVersionEnum;
    /**
     *
     * @type {PolicyType}
     * @memberof PolicyRule
     */
    'type': PolicyType;
    /**
     *
     * @type {InitiatorConfigPattern}
     * @memberof PolicyRule
     */
    'initiator': InitiatorConfigPattern;
    /**
     *
     * @type {SourceConfig}
     * @memberof PolicyRule
     */
    'source': SourceConfig;
    /**
     *
     * @type {VerdictConfig}
     * @memberof PolicyRule
     */
    'verdict': VerdictConfig;
    /**
     *
     * @type {PolicyType}
     * @memberof PolicyRule
     */
    'subType'?: PolicyType;
    /**
     *
     * @type {AssetConfig}
     * @memberof PolicyRule
     */
    'asset'?: AssetConfig;
    /**
     *
     * @type {DestinationConfig}
     * @memberof PolicyRule
     */
    'destination'?: DestinationConfig;
    /**
     *
     * @type {AccountConfig}
     * @memberof PolicyRule
     */
    'account'?: AccountConfig;
    /**
     *
     * @type {OrderSide}
     * @memberof PolicyRule
     */
    'side'?: OrderSide;
    /**
     *
     * @type {AmountOverTimeConfig}
     * @memberof PolicyRule
     */
    'amountOverTime'?: AmountOverTimeConfig;
    /**
     *
     * @type {AmountConfig}
     * @memberof PolicyRule
     */
    'amount'?: AmountConfig;
    /**
     * External descriptor for the rule
     * @type {string}
     * @memberof PolicyRule
     */
    'externalDescriptor'?: string;
    /**
     *
     * @type {ContractMethodPattern}
     * @memberof PolicyRule
     */
    'method'?: ContractMethodPattern;
    /**
     * Whether this is a global policy
     * @type {boolean}
     * @memberof PolicyRule
     */
    'isGlobalPolicy'?: boolean;
    /**
     *
     * @type {ProgramCallConfig}
     * @memberof PolicyRule
     */
    'programCall'?: ProgramCallConfig;
    /**
     *
     * @type {ScreeningMetadataConfig}
     * @memberof PolicyRule
     */
    'screeningMetadata'?: ScreeningMetadataConfig;
    /**
     *
     * @type {AssetConfig}
     * @memberof PolicyRule
     */
    'quoteAsset'?: AssetConfig;
    /**
     *
     * @type {AssetConfig}
     * @memberof PolicyRule
     */
    'baseAsset'?: AssetConfig;
    /**
     *
     * @type {AmountRange}
     * @memberof PolicyRule
     */
    'quoteAmount'?: AmountRange;
    /**
     *
     * @type {AmountRange}
     * @memberof PolicyRule
     */
    'baseAmount'?: AmountRange;
    /**
     *
     * @type {DAppAddressConfig}
     * @memberof PolicyRule
     */
    'dAppAddress'?: DAppAddressConfig;
    /**
     *
     * @type {DerivationPathConfig}
     * @memberof PolicyRule
     */
    'derivationPath'?: DerivationPathConfig;
    /**
     * Index for the policy rule
     * @type {number}
     * @memberof PolicyRule
     */
    'index'?: number;
}
export declare const PolicyRulePolicyEngineVersionEnum: {
    readonly V2: "v2";
};
export type PolicyRulePolicyEngineVersionEnum = typeof PolicyRulePolicyEngineVersionEnum[keyof typeof PolicyRulePolicyEngineVersionEnum];
