import { GetEnvelopedFn } from './get-enveloped.js'; import { Plugin } from './plugin.js'; import { Spread, TuplifyUnion, Unarray } from './utils.js'; export interface DefaultContext extends Record { } export type ComposeContextArray = V extends [] ? [] : V extends [Plugin] ? [Ctx] : V extends [Plugin, ...infer R] ? [Ctx, ...ComposeContextArray] : [{ error: 'ComposeContextArray-no-match'; value: V; }]; export type ComposeContext = Spread>>>; export type ContextFrom = TEnvelop extends GetEnvelopedFn ? Context : never;