Type alias IBuilders

IBuilders: {
    builders: Iterable<IBuilder>;
    self?: IBuilders;
} & {
    [key in keyof IBuilderMethods]: ((...args) => ReturnType<IBuilderMethods[key]> extends IBuilder
        ? IBuilders
        : ReturnType<IBuilderMethods[key]>[])
}

Type declaration