'use strict';
var ValidationRule = require('./validation-rule.js');
var ValidationContext = require('./validation-context.js');
var ValidationResult = require('./validation-result.js');
var DataTypeRule = require('./data-type-rule.js');
var AuthorizationRule = require('./authorization-rule.js');
var AuthorizationContext = require('./authorization-context.js');
var AuthorizationResult = require('./authorization-result.js');
var AuthorizationError = require('./authorization-error.js');
var AuthorizationAction = require('./authorization-action.js');
var NoAccessBehavior = require('./no-access-behavior.js');
var RuleManager = require('./rule-manager.js');
var RuleList = require('./rule-list.js');
var RuleSeverity = require('./rule-severity.js');
var RuleBase = require('./rule-base.js');
var ResultBase = require('./result-base.js');
var BrokenRule = require('./broken-rule.js');
var BrokenRuleList = require('./broken-rule-list.js');
var RuleNotice = require('./rule-notice.js');
var BrokenRulesOutput = require('./broken-rules-output.js');
var BrokenRulesResponse = require('./broken-rules-response.js');
/**
* Contains components used by authorization and validation rules.
*
* @namespace bo.rules
*
* @property {function} ValidationRule - {@link bo.rules.ValidationRule Validation rule}
* constructor creates a new validation rule instance.
* @property {function} ValidationContext - {@link bo.rules.ValidationContext Validation context}
* constructor creates a new validation context instance.
* @property {function} ValidationResult - {@link bo.rules.ValidationResult Validation result}
* constructor creates a new validation result instance.
* @property {function} DataTypeRule - {@link bo.rules.DataTypeRule Data type rule}
* constructor creates a new data type rule instance.
*
* @property {function} AuthorizationRule - {@link bo.rules.AuthorizationRule Authorization rule}
* constructor creates a new authorization rule instance.
* @property {function} AuthorizationContext - {@link bo.rules.AuthorizationContext Authorization context}
* constructor creates a new authorization context instance.
* @property {function} AuthorizationResult - {@link bo.rules.AuthorizationResult Authorization result}
* constructor creates a new authorization result instance.
* @property {function} AuthorizationError - {@link bo.rules.AuthorizationError Authorization error}
* constructor creates a new error related to a broken authorization rule.
* @property {object} AuthorizationAction - {@link bo.rules.AuthorizationAction Authorization action}
* object specifies the operations of models to authorize.
* @property {object} NoAccessBehavior - {@link bo.rules.NoAccessBehavior No access behavior}
* object specifies the behavior options of failed authorization rules.
*
* @property {function} RuleManager - {@link bo.rules.RuleManager Rule manager}
* constructor creates a new manager instance.
* @property {function} RuleList - {@link bo.rules.RuleList Rule list}
* constructor creates a new rule list instance.
* @property {object} RuleSeverity - {@link bo.rules.RuleSeverity Rule severity}
* object specifies the severity options of rule failures.
* @property {function} RuleBase - {@link bo.rules.RuleBase Base rule}
* constructor creates a new base rule instance.
* @property {function} ResultBase - {@link bo.rules.ResultBase Base rule result}
* constructor creates a new base rule result instance.
*
* @property {function} BrokenRule - {@link bo.rules.BrokenRule Broken rule}
* constructor creates a new broken rule instance.
* @property {function} BrokenRuleList - {@link bo.rules.BrokenRuleList Broken rule list}
* constructor creates a new broken rule list instance.
* @property {function} RuleNotice - {@link bo.rules.RuleNotice Rule notice}
* constructor creates a new rule notice instance.
* @property {function} BrokenRulesOutput - {@link bo.rules.BrokenRulesOutput Broken rules output}
* constructor creates a new object instance holding the broken rule information.
* @property {function} BrokenRulesResponse - {@link bo.rules.BrokenRulesResponse Validation response}
* constructor creates a new broken rules response instance.
*/
var index = {
ValidationRule: ValidationRule,
ValidationContext: ValidationContext,
ValidationResult: ValidationResult,
DataTypeRule: DataTypeRule,
AuthorizationRule: AuthorizationRule,
AuthorizationContext: AuthorizationContext,
AuthorizationResult: AuthorizationResult,
AuthorizationError: AuthorizationError,
AuthorizationAction: AuthorizationAction,
NoAccessBehavior: NoAccessBehavior,
RuleManager: RuleManager,
RuleList: RuleList,
RuleSeverity: RuleSeverity,
RuleBase: RuleBase,
ResultBase: ResultBase,
BrokenRule: BrokenRule,
BrokenRuleList: BrokenRuleList,
RuleNotice: RuleNotice,
BrokenRulesOutput: BrokenRulesOutput,
BrokenRulesResponse: BrokenRulesResponse
};
// Immutable object.
Object.freeze(index);
module.exports = index;