export class SyncDescriptor { readonly ctor: any; readonly staticArguments: any[]; readonly supportsDelayedInstantiation: boolean; constructor( ctor: new (...args: any[]) => T, staticArguments: any[] = [], supportsDelayedInstantiation: boolean = false ) { this.ctor = ctor; this.staticArguments = staticArguments; this.supportsDelayedInstantiation = supportsDelayedInstantiation; } } export interface SyncDescriptor0 { ctor: any; bind(): SyncDescriptor0; } export interface SyncDescriptor1 { ctor: any; bind(a1: A1): SyncDescriptor0; } export interface SyncDescriptor2 { ctor: any; bind(a1: A1): SyncDescriptor1; bind(a1: A1, a2: A2): SyncDescriptor0; } export interface SyncDescriptor3 { ctor: any; bind(a1: A1): SyncDescriptor2; bind(a1: A1, a2: A2): SyncDescriptor1; bind(a1: A1, a2: A2, a3: A3): SyncDescriptor0; } export interface SyncDescriptor4 { ctor: any; bind(a1: A1): SyncDescriptor3; bind(a1: A1, a2: A2): SyncDescriptor2; bind(a1: A1, a2: A2, a3: A3): SyncDescriptor1; bind(a1: A1, a2: A2, a3: A3, a4: A4): SyncDescriptor0; } export interface SyncDescriptor5 { ctor: any; bind(a1: A1): SyncDescriptor4; bind(a1: A1, a2: A2): SyncDescriptor3; bind(a1: A1, a2: A2, a3: A3): SyncDescriptor2; bind(a1: A1, a2: A2, a3: A3, a4: A4): SyncDescriptor1; bind(a1: A1, a2: A2, a3: A3, a4: A4, a5: A5): SyncDescriptor0; } export interface SyncDescriptor6 { ctor: any; bind(a1: A1): SyncDescriptor5; bind(a1: A1, a2: A2): SyncDescriptor4; bind(a1: A1, a2: A2, a3: A3): SyncDescriptor3; bind(a1: A1, a2: A2, a3: A3, a4: A4): SyncDescriptor2; bind(a1: A1, a2: A2, a3: A3, a4: A4, a5: A5): SyncDescriptor1; bind(a1: A1, a2: A2, a3: A3, a4: A4, a5: A5, a6: A6): SyncDescriptor0; } export interface SyncDescriptor7 { ctor: any; bind(a1: A1): SyncDescriptor6; bind(a1: A1, a2: A2): SyncDescriptor5; bind(a1: A1, a2: A2, a3: A3): SyncDescriptor4; bind(a1: A1, a2: A2, a3: A3, a4: A4): SyncDescriptor3; bind(a1: A1, a2: A2, a3: A3, a4: A4, a5: A5): SyncDescriptor2; bind(a1: A1, a2: A2, a3: A3, a4: A4, a5: A5, a6: A6): SyncDescriptor1; bind( a1: A1, a2: A2, a3: A3, a4: A4, a5: A5, a6: A6, a7: A7 ): SyncDescriptor0; } export interface SyncDescriptor8 { ctor: any; bind(a1: A1): SyncDescriptor7; bind(a1: A1, a2: A2): SyncDescriptor6; bind(a1: A1, a2: A2, a3: A3): SyncDescriptor5; bind(a1: A1, a2: A2, a3: A3, a4: A4): SyncDescriptor4; bind(a1: A1, a2: A2, a3: A3, a4: A4, a5: A5): SyncDescriptor3; bind( a1: A1, a2: A2, a3: A3, a4: A4, a5: A5, a6: A6 ): SyncDescriptor2; bind( a1: A1, a2: A2, a3: A3, a4: A4, a5: A5, a6: A6, a7: A7 ): SyncDescriptor1; bind( a1: A1, a2: A2, a3: A3, a4: A4, a5: A5, a6: A6, a7: A7, a8: A8 ): SyncDescriptor0; }