import type { Schema } from '../interface.js'; import type { AbstractInstanceType } from '../types.js'; export interface IndexInterface { key(params?: P): string; readonly schema: S; } export type ArrayElement = ArrayType[number]; export type IndexParams = S extends ( { indexes: readonly string[]; } ) ? { [K in Extract< ArrayElement, keyof AbstractInstanceType >]?: AbstractInstanceType[K]; } : Readonly;