import './databaseEvents.types.js' import { DefaultPermissions, DefaultRoles } from './coreGeneric.types.js' interface GDbase { testUserNames: string apiKeys: string testEnvType: any } interface GDeventNamesBase { // [eventName: string]: any[] } declare global { // Those types are helpers to make it easy to augment types like role, permissions or platform interface GD_RegisterAllRoles extends Record { } interface GD_RegisterAllPermissions extends Record { } interface GD_RegisterAllPlatforms { } /** This stores all error names, particularly for `ctx.throw` autocompletion */ interface GreenDotErrors { } type GreenDotErrorNames = keyof GreenDotErrors interface GD extends GDbase { role: keyof GD_RegisterAllRoles permission: keyof GD_RegisterAllPermissions platform: keyof GD_RegisterAllPlatforms } type UserRolePermissionFields = { [K in GD['role']as `is${Capitalize}`]: boolean } type UserPermissionFields = Record & UserRolePermissionFields type UserPermissionsWithoutRolePerms = Omit interface GDeventNames extends GDeventNamesBase { } type NewEventType = { [k in EventName]: [systemCtx: Ctx, ...params: Params] } } export default {} // avoid typescript bug