declare namespace nasl.langUtil { export class Collection> { // name = 'Collection'; FROM>(collection: Collection): Collection; INNER_JOIN>(collection: Collection): Collection<[...Arr, ...K]>; LEFT_JOIN>(collection: Collection): Collection<[...Arr, ...K]>; RIGHT_JOIN>(collection: Collection): Collection<[...Arr, ...K]>; OUTER_JOIN>(collection: Collection): Collection<[...Arr, ...K]>; ON(expr: (...types: Arr) => nasl.core.Boolean): Collection; WHERE(...exprs: Array<(...types: Arr) => nasl.core.Boolean>): Collection; WHEREPLAYGROUND(...exprs: Array<(...types: Arr) => nasl.core.Any>): Collection; GROUP_BY(...exprs: Array<(...types: Arr) => any>): Collection; SELECT(...exprs: Array<(...types: Arr) => any>): Collection; HAVING(...exprs: Array<(...types: Arr) => nasl.core.Boolean>): Collection; HAVINGPLAYGROUND(...exprs: Array<(...types: Arr) => nasl.core.Any>): Collection; ORDER_BY(...exprs: Array<(...types: Arr) => any>): Collection; LIMIT(expr: (...types: Arr) => any): Collection; // PAGINATE(page: nasl.core.Long, size: nasl.core.Long): Collection // SELECT_PAGE_OF(expr: (...types: Arr) => R): } export function FROM>(collection: Collection): Collection; export function STARTWITH(str1: nasl.core.String, str2: nasl.core.String): nasl.core.Boolean; export function ENDWITH(str1: nasl.core.String, str2: nasl.core.String): nasl.core.Boolean; export function LIKE(str1: nasl.core.String, str2: nasl.core.String): nasl.core.Boolean; export function IN(value: T, list: nasl.collection.List): nasl.core.Boolean; export function ISNULL(value: any): nasl.core.Boolean; export function NOT(value: nasl.core.Boolean): nasl.core.Boolean; export function COUNT(value: any): nasl.core.Long; export function COUNTD(value: any): nasl.core.Long; export function SUM(value: T): T; export function AVG(value: T): nasl.core.Decimal; export function MAX(value: T): T; export function MIN(value: T): T; export function ruleIn(value: T, list: T): nasl.core.Boolean; // export function CONCAT(a: nasl.core.String, b: nasl.core.String): boolean } // namespace app.dataSources.defaultDS.entities { // } // nasl.langUtil.FROM(new nasl.langUtil.Collection<[app.dataSources.defaultDS.entities.Student]>() // .LEFT_JOIN(new nasl.langUtil.Collection<[app.dataSources.defaultDS.entities.School]>()) // .ON((Student, School) => Student.schoolId === School.id)) // .WHERE((Student, School) => Student.age > new nasl.core.Long(200)) // .ORDER_BY((Student, School) => Student.name, 'ASC') // .SELECT((Student, School) => ({ Student, School }))