import * as __typia_transform__isTypeUint32 from "typia/lib/internal/_isTypeUint32";
import * as __typia_transform__assertGuard from "typia/lib/internal/_assertGuard";
import typia from 'typia';
export const assertRule = (() => { const _io0 = input => Array.isArray(input.locations) && input.locations.every(elem => "string" === typeof elem) && ("number" === typeof input.replicas && __typia_transform__isTypeUint32._isTypeUint32(input.replicas)) && ("number" === typeof input.priority && __typia_transform__isTypeUint32._isTypeUint32(input.priority)) && (Array.isArray(input.includes) && input.includes.every(elem => "string" === typeof elem)) && (Array.isArray(input.excludes) && input.excludes.every(elem => "string" === typeof elem)); const _ao0 = (input, _path, _exceptionable = true) => ((Array.isArray(input.locations) || __typia_transform__assertGuard._assertGuard(_exceptionable, {
    method: "typia.createAssert",
    path: _path + ".locations",
    expected: "Array<string>",
    value: input.locations
}, _errorFactory)) && input.locations.every((elem, _index4) => "string" === typeof elem || __typia_transform__assertGuard._assertGuard(_exceptionable, {
    method: "typia.createAssert",
    path: _path + ".locations[" + _index4 + "]",
    expected: "string",
    value: elem
}, _errorFactory)) || __typia_transform__assertGuard._assertGuard(_exceptionable, {
    method: "typia.createAssert",
    path: _path + ".locations",
    expected: "Array<string>",
    value: input.locations
}, _errorFactory)) && ("number" === typeof input.replicas && (__typia_transform__isTypeUint32._isTypeUint32(input.replicas) || __typia_transform__assertGuard._assertGuard(_exceptionable, {
    method: "typia.createAssert",
    path: _path + ".replicas",
    expected: "number & Type<\"uint32\">",
    value: input.replicas
}, _errorFactory)) || __typia_transform__assertGuard._assertGuard(_exceptionable, {
    method: "typia.createAssert",
    path: _path + ".replicas",
    expected: "(number & Type<\"uint32\">)",
    value: input.replicas
}, _errorFactory)) && ("number" === typeof input.priority && (__typia_transform__isTypeUint32._isTypeUint32(input.priority) || __typia_transform__assertGuard._assertGuard(_exceptionable, {
    method: "typia.createAssert",
    path: _path + ".priority",
    expected: "number & Type<\"uint32\">",
    value: input.priority
}, _errorFactory)) || __typia_transform__assertGuard._assertGuard(_exceptionable, {
    method: "typia.createAssert",
    path: _path + ".priority",
    expected: "(number & Type<\"uint32\">)",
    value: input.priority
}, _errorFactory)) && ((Array.isArray(input.includes) || __typia_transform__assertGuard._assertGuard(_exceptionable, {
    method: "typia.createAssert",
    path: _path + ".includes",
    expected: "Array<string>",
    value: input.includes
}, _errorFactory)) && input.includes.every((elem, _index5) => "string" === typeof elem || __typia_transform__assertGuard._assertGuard(_exceptionable, {
    method: "typia.createAssert",
    path: _path + ".includes[" + _index5 + "]",
    expected: "string",
    value: elem
}, _errorFactory)) || __typia_transform__assertGuard._assertGuard(_exceptionable, {
    method: "typia.createAssert",
    path: _path + ".includes",
    expected: "Array<string>",
    value: input.includes
}, _errorFactory)) && ((Array.isArray(input.excludes) || __typia_transform__assertGuard._assertGuard(_exceptionable, {
    method: "typia.createAssert",
    path: _path + ".excludes",
    expected: "Array<string>",
    value: input.excludes
}, _errorFactory)) && input.excludes.every((elem, _index6) => "string" === typeof elem || __typia_transform__assertGuard._assertGuard(_exceptionable, {
    method: "typia.createAssert",
    path: _path + ".excludes[" + _index6 + "]",
    expected: "string",
    value: elem
}, _errorFactory)) || __typia_transform__assertGuard._assertGuard(_exceptionable, {
    method: "typia.createAssert",
    path: _path + ".excludes",
    expected: "Array<string>",
    value: input.excludes
}, _errorFactory)); const __is = input => "object" === typeof input && null !== input && _io0(input); let _errorFactory; return (input, errorFactory) => {
    if (false === __is(input)) {
        _errorFactory = errorFactory;
        ((input, _path, _exceptionable = true) => ("object" === typeof input && null !== input || __typia_transform__assertGuard._assertGuard(true, {
            method: "typia.createAssert",
            path: _path + "",
            expected: "Rule",
            value: input
        }, _errorFactory)) && _ao0(input, _path + "", true) || __typia_transform__assertGuard._assertGuard(true, {
            method: "typia.createAssert",
            path: _path + "",
            expected: "Rule",
            value: input
        }, _errorFactory))(input, "$input", true);
    }
    return input;
}; })();
