import { TransactionRuleEntityKey } from "./transactionRuleEntityKey";
import { TransactionRuleInterval } from "./transactionRuleInterval";
import { TransactionRuleRestrictions } from "./transactionRuleRestrictions";
export declare class TransactionRule {
    /**
    * The level at which data must be accumulated, used in rules with `type` **velocity** or **maxUsage**. The level must be the [same or lower in hierarchy](https://docs.adyen.com/issuing/transaction-rules#accumulate-data) than the `entityKey`.  If not provided, by default, the rule will accumulate data at the **paymentInstrument** level.  Possible values: **paymentInstrument**, **paymentInstrumentGroup**, **balanceAccount**, **accountHolder**, **balancePlatform**.
    */
    "aggregationLevel"?: string;
    /**
    * Your description for the transaction rule.
    */
    "description": string;
    /**
    * The date when the rule will stop being evaluated, in ISO 8601 extended offset date-time format. For example, **2025-03-19T10:15:30+01:00**.  If not provided, the rule will be evaluated until the rule status is set to **inactive**.
    */
    "endDate"?: string;
    "entityKey": TransactionRuleEntityKey;
    /**
    * The unique identifier of the transaction rule.
    */
    "id"?: string;
    "interval": TransactionRuleInterval;
    /**
    * The [outcome](https://docs.adyen.com/issuing/transaction-rules#outcome) that will be applied when a transaction meets the conditions of the rule.  Possible values: * **hardBlock** (default): the transaction is declined. * **scoreBased**: the transaction is assigned the `score` you specified. Adyen calculates the total score and if it exceeds 100, the transaction is declined. This value is not allowed when `requestType` is **bankTransfer**.  * **enforceSCA**: your user is prompted to verify their identity using [3D Secure authentication](https://docs.adyen.com/issuing/3d-secure/). If the authentication fails or times out, the transaction is declined. This value is only allowed when `requestType` is **authentication**.
    */
    "outcomeType"?: TransactionRule.OutcomeTypeEnum;
    /**
    * Specifies the reason for creating the rule.  Possible values: * **fraud**: the rule is created to regulate fraudulent activity. * **policy**: the rule is created to ensure that the transaction adheres to your business\' policies. For example, if your business has policies about the Merchant Category Codes (MCCs) allowed on a transaction, you can create a rule to block transactions that have specific MCCs.
    */
    "purpose"?: TransactionRule.PurposeEnum;
    /**
    * Your reference for the transaction rule.
    */
    "reference": string;
    /**
    * Indicates the type of request to which the rule applies. If not provided, by default, this is set to **authorization**.  Possible values: **authorization**, **authentication**, **tokenization**, **bankTransfer**.
    */
    "requestType"?: TransactionRule.RequestTypeEnum;
    "ruleRestrictions": TransactionRuleRestrictions;
    /**
    * A positive or negative score applied to the transaction if it meets the conditions of the rule. Required when `outcomeType` is **scoreBased**.  The value must be between **-100** and **100**.
    */
    "score"?: number;
    /**
    * The date when the rule will start to be evaluated, in ISO 8601 extended offset date-time format. For example, **2025-03-19T10:15:30+01:00**.  If not provided when creating a transaction rule, the `startDate` is set to the date when the rule status is set to **active**.
    */
    "startDate"?: string;
    /**
    * The status of the transaction rule. If you provide a `startDate` in the request, the rule is automatically created  with an **active** status.   Possible values: **active**, **inactive**.
    */
    "status"?: TransactionRule.StatusEnum;
    /**
    * The [type of rule](https://docs.adyen.com/issuing/transaction-rules#rule-types), which defines if a rule blocks transactions based on individual characteristics or accumulates data.  Possible values:  * **blockList**: decline a transaction when the conditions are met.  * **maxUsage**: add the amount or number of transactions for the lifetime of a payment instrument, and then decline a transaction when the specified limits are met.  * **velocity**: add the amount or number of transactions based on a specified time interval, and then decline a transaction when the specified limits are met.
    */
    "type": TransactionRule.TypeEnum;
    static readonly discriminator: string | undefined;
    static readonly mapping: {
        [index: string]: string;
    } | undefined;
    static readonly attributeTypeMap: Array<{
        name: string;
        baseName: string;
        type: string;
        format: string;
    }>;
    static getAttributeTypeMap(): {
        name: string;
        baseName: string;
        type: string;
        format: string;
    }[];
    constructor();
}
export declare namespace TransactionRule {
    enum OutcomeTypeEnum {
        EnforceSca = "enforceSCA",
        HardBlock = "hardBlock",
        ScoreBased = "scoreBased",
        TimedBlock = "timedBlock"
    }
    enum PurposeEnum {
        Compliance = "compliance",
        Fraud = "fraud",
        InternalPolicy = "internalPolicy",
        Policy = "policy",
        System = "system"
    }
    enum RequestTypeEnum {
        Authentication = "authentication",
        Authorization = "authorization",
        BankTransfer = "bankTransfer",
        Tokenization = "tokenization"
    }
    enum StatusEnum {
        Active = "active",
        Inactive = "inactive"
    }
    enum TypeEnum {
        AllowList = "allowList",
        BlockList = "blockList",
        MaxUsage = "maxUsage",
        Velocity = "velocity"
    }
}
