declare namespace nasl.util { export function Convert(value: null): () => T; export function Convert(value: nasl.core.Long): () => T; export function Convert(value: nasl.core.Decimal): () => T; export function Convert(value: nasl.core.Binary): () => T; export function Convert(value: nasl.core.String): () => T; export function Convert(value: nasl.core.Date): () => T; export function Convert(value: nasl.core.Time): () => T; export function Convert(value: nasl.core.DateTime): () => T; export function Convert(value: nasl.core.Boolean): () => T; // 先给雨森加一下 export function Convert(value: nasl.core.Any): () => T; export function ConvertLong(value: nasl.core.Long): T; export function ConvertDecimal(value: nasl.core.Decimal): T; export function ConvertBinary(value: nasl.core.Binary): T; export function ConvertString(value: nasl.core.String): T; export function ConvertDate(value: nasl.core.Date): T; export function ConvertTime(value: nasl.core.Time): T; export function ConvertDateTime(value: nasl.core.DateTime): T; export function ConvertBoolean(value: nasl.core.Boolean): T; export function Convertany(value: nasl.core.Any): T; export function ToString(value: nasl.core.Any, timeZone?: nasl.core.String): nasl.core.String; export function FromString(value: nasl.core.String): () => T; export function EnumToList>(): nasl.collection.List>; export function EnumToList>(): nasl.collection.List>; export function EnumItemToText>(value: nasl.core.Enums): nasl.core.String; export function EnumItemToStructure>(value: nasl.core.Enums): nasl.core.AStructure<{ text: nasl.core.String, value: nasl.core.Long, item: T }>; export function EnumItemToStructure>(value: nasl.core.Enums): nasl.core.AStructure<{ text: nasl.core.String, value: nasl.core.String, item: T }>; export function ToEnumItem>(value: nasl.core.Long): T; export function ToEnumItem>(value: nasl.core.String): T; export function Split(str: nasl.core.String, separator: nasl.core.String | nasl.util.Regex, trail: nasl.core.Boolean): nasl.collection.List; export function Join(list: nasl.collection.List, separator: nasl.core.String): nasl.core.String; export function Length(str1: nasl.core.String): nasl.core.Long; export function Length(str1: nasl.collection.Map): nasl.core.Long; export function Length(str1: nasl.collection.List): nasl.core.Long; export function IndexOf(str: nasl.core.String, search: nasl.core.String, formIndex: nasl.core.Long, ignoreCase: nasl.core.Boolean): nasl.core.Long; export function LastIndexOf(str: nasl.core.String, search: nasl.core.String, ignoreCase: nasl.core.Boolean): nasl.core.Long; export function Replace(str: nasl.core.String, search: nasl.core.String | nasl.util.Regex, replace: nasl.core.String): nasl.core.String; export function SubString(str: nasl.core.String, start: nasl.core.Long, length?: nasl.core.Long): nasl.core.String; export function ToLower(str1: nasl.core.String): nasl.core.String; export function ToUpper(str1: nasl.core.String): nasl.core.String; export function Trim(str1: nasl.core.String): nasl.core.String; export function Get(list: nasl.collection.List, index: nasl.core.Long): T; export function Set(list: nasl.collection.List, index: nasl.core.Long, item: K): T; export function Contains(list: nasl.collection.List, item: K): nasl.core.Boolean; export function Add(list: nasl.collection.List, item: K): void; export function AddAll(list: nasl.collection.List, addList: nasl.collection.List): nasl.core.Long; export function Insert(list: nasl.collection.List, index: nasl.core.Long, item: K): void; export function Remove(list: nasl.collection.List, item: K): void; export function RemoveAt(list: nasl.collection.List, index: nasl.core.Long): T; export function ListHead(list: nasl.collection.List): T; export function ListLast(list: nasl.collection.List): T; export function ListFlatten(list: nasl.collection.List>): nasl.collection.List; export function ListTransform(list: nasl.collection.List, by: (elem: T0) => T): nasl.collection.List; export function ListToMap (map: nasl.collection.List, byKey: (elem: T) => K, byVal: (elem: T) => V): nasl.collection.Map; export function ListGroupBy> (list: nasl.collection.List, by: (elem: A) => K): nasl.collection.Map>; export function ListSum(list: nasl.collection.List): T; export function ListProduct(list: nasl.collection.List): T; export function ListMax(list: nasl.collection.List): T; export function ListMin(list: nasl.collection.List): T; export function ListAverage(list: nasl.collection.List | nasl.collection.List | nasl.collection.List ): nasl.core.Decimal; // the type is not precise, we must exclude union instantiation for T2, which is done at // packages/nasl-language-server-core/src/checker.ts error(node, mkIncompatibleTyErr(env, selForSort, '非 union 的基础类型:如字符串、整数、布尔等')); export function ListSort( list: nasl.collection.List, ...fns: ((item: T1) => { asc: nasl.core.Boolean, by: nasl.core.Long | nasl.core.Decimal | nasl.core.Boolean | nasl.core.String | nasl.core.Date | nasl.core.Time | nasl.core.DateTime })[]): nasl.collection.List; export function ListFind(list: nasl.collection.List, by: (item: T) => nasl.core.Boolean): T; export function ListFindIndex(list: nasl.collection.List, by: (item: T) => nasl.core.Boolean): nasl.core.Long; export function ListFindAll(list: nasl.collection.List, by: (item: T) => nasl.core.Boolean): nasl.collection.List; export function ListFilter(list: nasl.collection.List, by: (item: T) => nasl.core.Boolean): nasl.collection.List; export function ListReverse(list: nasl.collection.List): nasl.collection.List; export function ListDistinct(list: nasl.collection.List): nasl.collection.List; export function ListDistinctBy(list: nasl.collection.List ,by: nasl.collection.List<{ items: Array<(elem: A) => any> }>): nasl.collection.List; export function ListSlice(list: nasl.collection.List, start: nasl.core.Long, end: nasl.core.Long): nasl.collection.List; export function ListRange(end: nasl.core.Long): nasl.collection.List; export function ListRange(start: nasl.core.Long, end: nasl.core.Long, step?: nasl.core.Long): nasl.collection.List; export function ListRepeat(item: T, length: nasl.core.Long): nasl.collection.List; export function MapGet(map: nasl.collection.Map, key: K): V; export function MapPut(map: nasl.collection.Map, key: K, value: V): void; export function MapRemove(map: nasl.collection.Map, key: K): void; export function MapContains(map: nasl.collection.Map, key: K): nasl.core.Boolean; export function MapKeys(map: nasl.collection.Map): nasl.collection.List; export function MapValues(map: nasl.collection.Map): nasl.collection.List; export function MapFilter(map: nasl.collection.Map, by: (key: K, value: V) => nasl.core.Boolean): nasl.collection.Map; // 将元素类型为 K0, V0 的 Map 映射为元素类型为 K, V 的 Map export function MapTransform< K0, V0, K extends nasl.core.Boolean | nasl.core.Long | nasl.core.Decimal | nasl.core.String | nasl.core.Date | nasl.core.DateTime | nasl.core.Time, V >(map: nasl.collection.Map, byKey: (key: K0, value: V0) => K, byVal: (key: K0, value: V0) => V): nasl.collection.Map; export function CurrDate(timeZone?: nasl.core.String): nasl.core.Date; export function CurrTime(timeZone?: nasl.core.String): nasl.core.Time; export function CurrDateTime(timeZone?: nasl.core.String): nasl.core.DateTime; export function FormatDate(date: nasl.core.Date, formatter: nasl.core.String): nasl.core.String; export function FormatDateTime(dateTime: nasl.core.DateTime, formatter: nasl.core.String, timeZone?: nasl.core.String): nasl.core.String; export function FormatTime(time: nasl.core.Time, formatter: nasl.core.String): nasl.core.String; export function FormatNumber(doubleValue: nasl.core.Decimal | nasl.core.Long, digits: nasl.core.Long, omit: nasl.core.Boolean, showGroups: nasl.core.Boolean, fix: nasl.core.String, unit: nasl.core.String): nasl.core.String; export function FormatPercent(doubleValue: nasl.core.Decimal | nasl.core.Long, digits: nasl.core.Long, omit: nasl.core.Boolean, showGroups: nasl.core.Boolean): nasl.core.String; export function AddDays(dateTime: nasl.core.Date, amount: nasl.core.Long): nasl.core.Date; export function AddDays(dateTime: nasl.core.DateTime, amount: nasl.core.Long): nasl.core.DateTime; export function AddMonths(dateTime: nasl.core.Date, amount: nasl.core.Long): nasl.core.Date; export function AddMonths(dateTime: nasl.core.DateTime, amount: nasl.core.Long): nasl.core.DateTime; export function DateDiff(dateTime1: T, dateTime2: T, calcType: nasl.core.String, isAbs: nasl.core.Boolean): nasl.core.Long; export function ConvertTimezone(dateTime: T, timeZone: nasl.core.String): T; export function AlterDateTime(dateTime: T, option: nasl.core.String, amount: nasl.core.Long, unit: nasl.core.String): T; export function GetDateCount (dateTime: T, metric: nasl.core.String, timeZone?: nasl.core.String): nasl.core.Long; export function GetDateCountOld (dateTime: T, metric: nasl.core.String, timeZone?: nasl.core.String): nasl.core.Long; export function GetSpecificDaysOfWeek(startDate: T, endDate: T, target: nasl.collection.List, timeZone?: nasl.core.String): nasl.collection.List; export function Clone(struct: T): T; // export function Clear(struct: T): T; export function Clear(struct: T, mode?: nasl.core.String): T; export function RandomInt(start: nasl.core.Long, end: nasl.core.Long): nasl.core.Long; export function New(): T; export function NewList(...args: T[]): nasl.collection.List; export function NewMap(key: K, ...args: T[]): nasl.collection.Map; export function ValidMapKey(key: K): K; export function CreateListPage(list: nasl.collection.List, total: nasl.core.Long): nasl.core.AStructure<{ list: nasl.collection.List, total: nasl.core.Long }>; // 为防止nasl没有被干净,先保留这部分的声明 export function consoleLog(arg: nasl.core.Any): void; export function jsonSerialize(arg: nasl.core.Any): nasl.core.String; export function jsonDeserialize(arg: nasl.core.String): T; export function concatString(...args: Array): any; export function stringInterpolation(...args: Array): nasl.core.String; export function Round(value: nasl.core.Decimal, mode: nasl.core.String): nasl.core.Long; export function HasValue(value: nasl.core.Any, ...rest: Array): nasl.core.Boolean; export function ListSortAsync( list: nasl.collection.List, ...fns: ((item: T1) => { asc: nasl.core.Boolean, by: nasl.core.Long | nasl.core.Decimal | nasl.core.Boolean | nasl.core.String | nasl.core.Date | nasl.core.Time | nasl.core.DateTime })[]): nasl.collection.List; export function ListFindAsync(list: nasl.collection.List, by: (item: T) => nasl.core.Boolean): T; export function ListFindIndexAsync(list: nasl.collection.List, by: (item: T) => nasl.core.Boolean): nasl.core.Long; export function ListFilterAsync(list: nasl.collection.List, by: (item: T) => nasl.core.Boolean): nasl.collection.List; export function ListDistinctByAsync(list: nasl.collection.List, by: (elem: A) => B): nasl.collection.List; export function ListGroupByAsync(list: nasl.collection.List, by: (elem: A) => K): nasl.collection.Map>; export function ListTransformAsync(list: nasl.collection.List, by: (elem: T0) => T): nasl.collection.List; export function MapFilterAsync(map: nasl.collection.Map, by: (key: K, value: V) => nasl.core.Boolean): nasl.collection.Map; export function MapTransformAsync (map: nasl.collection.Map, byKey: (key: K0, value: V0) => K, byVal: (key: K0, value: V0) => V): nasl.collection.Map; export function ListToMapAsync (map: nasl.collection.List, byKey: (elem: T) => K, byVal: (elem: T) => V): nasl.collection.Map; // 逻辑调用和验证器函数的包装器 export function callLogicWithChecker any>(func: T, checker: (...args: Parameters) => any): T; // 分页组件函数 export function paginateLimit(list: nasl.collection.List, page: nasl.core.Long, size: nasl.core.Long): nasl.core.AStructure<{ list: nasl.collection.List, total: nasl.core.Long }>; // 审批人判断函数 export function isListorString(value: nasl.core.String | nasl.collection.List): Boolean; // 任务标题判断函数 export function isStringTaskTitle(value: nasl.core.String): Boolean; export function Ceil(value: nasl.core.Decimal): nasl.core.Long; export function Floor(value: nasl.core.Decimal): nasl.core.Long; export function Trunc(value: nasl.core.Decimal): nasl.core.Long; export function TruncDivide(dividend: nasl.core.Decimal, divisor: nasl.core.Decimal): nasl.core.Long; export function Abs(value: T): T; export function Pow(base: nasl.core.Decimal, exponent: nasl.core.Decimal): nasl.core.Decimal; export function Sqrt(value: nasl.core.Decimal): nasl.core.Decimal; export function Cbrt(value: nasl.core.Decimal): nasl.core.Decimal; export function Log(value: nasl.core.Decimal): nasl.core.Decimal; export function PadStart(str: nasl.core.String, length: nasl.core.Long, padStr: nasl.core.String): nasl.core.String; export function PadEnd(str: nasl.core.String, length: nasl.core.Long, padStr: nasl.core.String): nasl.core.String; export function TrimStart(str: nasl.core.String): nasl.core.String; export function TrimEnd(str: nasl.core.String): nasl.core.String; export function MatchRegex( str: nasl.core.String, regex: nasl.util.Regex ): nasl.collection.List; export function $NewRegex(pattern: nasl.core.String, flags?: nasl.core.String): nasl.util.Regex; export class Regex { private accept: 'Regex'; flags: nasl.core.String; pattern: nasl.core.String; } }