@elysiumoss/ui-capture - v0.3.0
    Preparing search index...

    Class CaptureConfig

    Hierarchy

    • { viewports: readonly ViewportConfig[] } & { states: readonly CaptureState[] } & {
          outputDir: string;
      } & { captureVideo: boolean } & { maxDepth: number } & { waitTime: number } & {
          videoOptions: VideoOptions;
      } & { includeSubdomains: boolean } & { allowedHosts: readonly string[] } & {
          routeConcurrency: number;
      } & { menuInteractionSelectors: readonly string[] } & {
          screenshotHideSelectors: readonly string[];
      } & { ffmpegPath: string } & { warmupScroll: boolean } & {
          launchArgs: readonly string[];
      } & { colorScheme: "light"
      | "dark"
      | "no-preference" } & { stateTimeout: number } & {
          preconditionTimeout: number;
      } & { captureRoutes: boolean } & { allowStateRequests: boolean } & Omit<
          {},
          | "viewports"
          | "states"
          | "outputDir"
          | "captureVideo"
          | "maxDepth"
          | "waitTime"
          | "videoOptions"
          | "includeSubdomains"
          | "allowedHosts"
          | "routeConcurrency"
          | "menuInteractionSelectors"
          | "screenshotHideSelectors"
          | "ffmpegPath"
          | "warmupScroll"
          | "launchArgs"
          | "colorScheme"
          | "stateTimeout"
          | "preconditionTimeout"
          | "captureRoutes"
          | "allowStateRequests",
      >
      • CaptureConfig
    Index
    • Parameters

      • props: {
            outputDir: string;
            captureVideo: boolean;
            viewports: readonly ViewportConfig[];
            maxDepth: number;
            waitTime: number;
            videoOptions: VideoOptions;
            includeSubdomains: boolean;
            allowedHosts: readonly string[];
            routeConcurrency: number;
            menuInteractionSelectors: readonly string[];
            screenshotHideSelectors: readonly string[];
            ffmpegPath: string;
            warmupScroll: boolean;
            launchArgs: readonly string[];
            colorScheme: "light" | "dark" | "no-preference";
            states: readonly CaptureState[];
            stateTimeout: number;
            preconditionTimeout: number;
            captureRoutes: boolean;
            allowStateRequests: boolean;
        }
        • ReadonlyoutputDir: string
        • ReadonlycaptureVideo: boolean
        • Readonlyviewports: readonly ViewportConfig[]
        • ReadonlymaxDepth: number
        • ReadonlywaitTime: number
        • ReadonlyvideoOptions: VideoOptions
        • ReadonlyincludeSubdomains: boolean
        • ReadonlyallowedHosts: readonly string[]
        • ReadonlyrouteConcurrency: number
        • ReadonlymenuInteractionSelectors: readonly string[]
        • ReadonlyscreenshotHideSelectors: readonly string[]
        • ReadonlyffmpegPath: string
        • ReadonlywarmupScroll: boolean
        • ReadonlylaunchArgs: readonly string[]
        • ReadonlycolorScheme: "light" | "dark" | "no-preference"

          The prefers-color-scheme the browser reports to the page.

          Defaults to "light", matching Playwright, so existing captures are unchanged. Sites that follow the OS theme render their light face under headless Chromium regardless of what their authors see day to day, so capturing such a site's dark face requires saying so explicitly.

        • Readonlystates: readonly CaptureState[]

          Named interaction scripts run before capture. Empty by default, so a run without a states file behaves exactly as it always has.

        • ReadonlystateTimeout: number

          Default budget in ms for reaching a state: navigation, the precondition probe and the script. A state may override it.

          It deliberately stops there. Screenshot and video capture are bounded by their own timeouts and by videoOptions.duration × viewport count, and folding them in made the default unsatisfiable: a state captured with --video could not fit a 30 s budget on any configuration, so every state timed out. The default exceeds the 30 s navigation timeout so a slow first load still leaves the script a budget to run in.

        • ReadonlypreconditionTimeout: number

          Budget for a state's precondition probe; a state may override it with its own preconditionTimeoutMs.

          Separate from stateTimeout, and much smaller, because the two answer different questions. The probe decides whether the state exists here at all, and its cost is paid in full by every state that legitimately does not — so it has to be long enough for a slow-booting app to reach first paint, and short enough that a skip is not the run's dominant cost.

        • ReadonlycaptureRoutes: boolean

          Crawl and capture routes. false captures only scripted states.

        • ReadonlyallowStateRequests: boolean

          Permit request steps. Off by default: a states file handed to you by a colleague should not be able to POST to your app because you ran the tool.

      • Optionaloptions: MakeOptions

      Returns CaptureConfig

    Encoded: {
        viewports: readonly { name: string; width: number; height: number }[];
        states: readonly {
            name: string;
            steps: readonly (
                | {
                    selector: string;
                    kind: "waitFor";
                    state?: "visible"
                    | "hidden"
                    | "attached"
                    | "detached";
                    minCount?: number;
                    optional?: boolean;
                    timeoutMs?: number;
                    settleMs?: number;
                }
                | {
                    kind: "wait";
                    ms: number;
                    optional?: boolean;
                    timeoutMs?: number;
                    settleMs?: number;
                }
                | {
                    selector: string;
                    kind: "click";
                    optional?: boolean;
                    timeoutMs?: number;
                    settleMs?: number;
                    nth?: number;
                }
                | {
                    selector: string;
                    kind: "fill";
                    value: string;
                    optional?: boolean;
                    timeoutMs?: number;
                    settleMs?: number;
                }
                | {
                    values: readonly string[];
                    selector: string;
                    kind: "select";
                    optional?: boolean;
                    timeoutMs?: number;
                    settleMs?: number;
                }
                | {
                    kind: "press";
                    key: string;
                    selector?: string;
                    optional?: boolean;
                    timeoutMs?: number;
                    settleMs?: number;
                }
                | {
                    kind: "request";
                    path: string;
                    method: "GET"
                    | "POST"
                    | "PUT"
                    | "PATCH"
                    | "DELETE";
                    optional?: boolean;
                    timeoutMs?: number;
                    settleMs?: number;
                    json?: unknown;
                    headers?: { readonly [key: string]: string };
                    expectStatus?: number;
                }
                | {
                    kind: "reload";
                    optional?: boolean;
                    timeoutMs?: number;
                    settleMs?: number;
                    waitUntil?: "load"
                    | "domcontentloaded"
                    | "networkidle"
                    | "commit";
                }
            )[];
            timeoutMs?: number;
            description?: string;
            url?: string;
            extends?: string;
            precondition?: string;
            preconditionTimeoutMs?: number;
            viewports?: readonly string[];
            allowVideoReplay?: boolean;
        }[];
        outputDir: string;
        captureVideo: boolean;
        maxDepth: number;
        waitTime: number;
        videoOptions: { duration: number; interactions: boolean };
        includeSubdomains: boolean;
        allowedHosts: readonly string[];
        routeConcurrency: number;
        menuInteractionSelectors: readonly string[];
        screenshotHideSelectors: readonly string[];
        ffmpegPath: string;
        warmupScroll: boolean;
        launchArgs: readonly string[];
        colorScheme: "light" | "dark" | "no-preference";
        stateTimeout: number;
        preconditionTimeout: number;
        captureRoutes: boolean;
        allowStateRequests: boolean;
    }
    Context: never

    0.69.3

    "[TypeId]": {
        _A: Invariant<CaptureConfig>;
        _I: Invariant<
            {
                viewports: readonly { name: string; width: number; height: number }[];
                states: readonly {
                    name: string;
                    steps: readonly (
                        | {
                            selector: string;
                            kind: "waitFor";
                            state?: "visible"
                            | "hidden"
                            | "attached"
                            | "detached";
                            minCount?: number;
                            optional?: boolean;
                            timeoutMs?: number;
                            settleMs?: number;
                        }
                        | {
                            kind: "wait";
                            ms: number;
                            optional?: boolean;
                            timeoutMs?: number;
                            settleMs?: number;
                        }
                        | {
                            selector: string;
                            kind: "click";
                            optional?: boolean;
                            timeoutMs?: number;
                            settleMs?: number;
                            nth?: number;
                        }
                        | {
                            selector: string;
                            kind: "fill";
                            value: string;
                            optional?: boolean;
                            timeoutMs?: number;
                            settleMs?: number;
                        }
                        | {
                            values: readonly string[];
                            selector: string;
                            kind: "select";
                            optional?: boolean;
                            timeoutMs?: number;
                            settleMs?: number;
                        }
                        | {
                            kind: "press";
                            key: string;
                            selector?: string;
                            optional?: boolean;
                            timeoutMs?: number;
                            settleMs?: number;
                        }
                        | {
                            kind: "request";
                            path: string;
                            method: "GET"
                            | "POST"
                            | "PUT"
                            | "PATCH"
                            | "DELETE";
                            optional?: boolean;
                            timeoutMs?: number;
                            settleMs?: number;
                            json?: unknown;
                            headers?: { readonly [key: string]: string };
                            expectStatus?: number;
                        }
                        | {
                            kind: "reload";
                            optional?: boolean;
                            timeoutMs?: number;
                            settleMs?: number;
                            waitUntil?: "load"
                            | "domcontentloaded"
                            | "networkidle"
                            | "commit";
                        }
                    )[];
                    timeoutMs?: number;
                    description?: string;
                    url?: string;
                    extends?: string;
                    precondition?: string;
                    preconditionTimeoutMs?: number;
                    viewports?: readonly string[];
                    allowVideoReplay?: boolean;
                }[];
                outputDir: string;
                captureVideo: boolean;
                maxDepth: number;
                waitTime: number;
                videoOptions: { duration: number; interactions: boolean };
                includeSubdomains: boolean;
                allowedHosts: readonly string[];
                routeConcurrency: number;
                menuInteractionSelectors: readonly string[];
                screenshotHideSelectors: readonly string[];
                ffmpegPath: string;
                warmupScroll: boolean;
                launchArgs: readonly string[];
                colorScheme: "light" | "dark" | "no-preference";
                stateTimeout: number;
                preconditionTimeout: number;
                captureRoutes: boolean;
                allowStateRequests: boolean;
            },
        >;
        _R: Covariant<never>;
    }
    ast: Transformation

    0.69.3

    fields: {
        outputDir: typeof String$;
        captureVideo: typeof Boolean$;
        viewports: Array$<typeof ViewportConfig>;
        maxDepth: filter<Schema<number, number, never>>;
        waitTime: filter<Schema<number, number, never>>;
        videoOptions: typeof VideoOptions;
        includeSubdomains: typeof Boolean$;
        allowedHosts: Array$<typeof String$>;
        routeConcurrency: filter<Schema<number, number, never>>;
        menuInteractionSelectors: Array$<typeof String$>;
        screenshotHideSelectors: Array$<typeof String$>;
        ffmpegPath: typeof String$;
        warmupScroll: typeof Boolean$;
        launchArgs: Array$<typeof String$>;
        colorScheme: Literal<["light", "dark", "no-preference"]>;
        states: Array$<typeof CaptureState>;
        stateTimeout: filter<Schema<number, number, never>>;
        preconditionTimeout: filter<Schema<number, number, never>>;
        captureRoutes: typeof Boolean$;
        allowStateRequests: typeof Boolean$;
    }

    Type Declaration

    • ReadonlyoutputDir: typeof String$
    • ReadonlycaptureVideo: typeof Boolean$
    • Readonlyviewports: Array$<typeof ViewportConfig>
    • ReadonlymaxDepth: filter<Schema<number, number, never>>
    • ReadonlywaitTime: filter<Schema<number, number, never>>
    • ReadonlyvideoOptions: typeof VideoOptions
    • ReadonlyincludeSubdomains: typeof Boolean$
    • ReadonlyallowedHosts: Array$<typeof String$>
    • ReadonlyrouteConcurrency: filter<Schema<number, number, never>>
    • ReadonlymenuInteractionSelectors: Array$<typeof String$>
    • ReadonlyscreenshotHideSelectors: Array$<typeof String$>
    • ReadonlyffmpegPath: typeof String$
    • ReadonlywarmupScroll: typeof Boolean$
    • ReadonlylaunchArgs: Array$<typeof String$>
    • ReadonlycolorScheme: Literal<["light", "dark", "no-preference"]>

      The prefers-color-scheme the browser reports to the page.

      Defaults to "light", matching Playwright, so existing captures are unchanged. Sites that follow the OS theme render their light face under headless Chromium regardless of what their authors see day to day, so capturing such a site's dark face requires saying so explicitly.

    • Readonlystates: Array$<typeof CaptureState>

      Named interaction scripts run before capture. Empty by default, so a run without a states file behaves exactly as it always has.

    • ReadonlystateTimeout: filter<Schema<number, number, never>>

      Default budget in ms for reaching a state: navigation, the precondition probe and the script. A state may override it.

      It deliberately stops there. Screenshot and video capture are bounded by their own timeouts and by videoOptions.duration × viewport count, and folding them in made the default unsatisfiable: a state captured with --video could not fit a 30 s budget on any configuration, so every state timed out. The default exceeds the 30 s navigation timeout so a slow first load still leaves the script a budget to run in.

    • ReadonlypreconditionTimeout: filter<Schema<number, number, never>>

      Budget for a state's precondition probe; a state may override it with its own preconditionTimeoutMs.

      Separate from stateTimeout, and much smaller, because the two answer different questions. The probe decides whether the state exists here at all, and its cost is paid in full by every state that legitimately does not — so it has to be long enough for a slow-booting app to reach first paint, and short enough that a skip is not the run's dominant cost.

    • ReadonlycaptureRoutes: typeof Boolean$

      Crawl and capture routes. false captures only scripted states.

    • ReadonlyallowStateRequests: typeof Boolean$

      Permit request steps. Off by default: a states file handed to you by a colleague should not be able to POST to your app because you ran the tool.

    identifier: string
    outputDir: string = S.String
    captureVideo: boolean = S.Boolean
    viewports: readonly ViewportConfig[] = ...
    maxDepth: number = ...
    waitTime: number = ...
    videoOptions: VideoOptions = VideoOptions
    includeSubdomains: boolean = S.Boolean
    allowedHosts: readonly string[] = ...
    routeConcurrency: number = ...
    menuInteractionSelectors: readonly string[] = ...
    screenshotHideSelectors: readonly string[] = ...
    ffmpegPath: string = S.String
    warmupScroll: boolean = S.Boolean
    launchArgs: readonly string[] = ...
    colorScheme: "light" | "dark" | "no-preference" = ...

    The prefers-color-scheme the browser reports to the page.

    Defaults to "light", matching Playwright, so existing captures are unchanged. Sites that follow the OS theme render their light face under headless Chromium regardless of what their authors see day to day, so capturing such a site's dark face requires saying so explicitly.

    states: readonly CaptureState[] = ...

    Named interaction scripts run before capture. Empty by default, so a run without a states file behaves exactly as it always has.

    stateTimeout: number = ...

    Default budget in ms for reaching a state: navigation, the precondition probe and the script. A state may override it.

    It deliberately stops there. Screenshot and video capture are bounded by their own timeouts and by videoOptions.duration × viewport count, and folding them in made the default unsatisfiable: a state captured with --video could not fit a 30 s budget on any configuration, so every state timed out. The default exceeds the 30 s navigation timeout so a slow first load still leaves the script a budget to run in.

    preconditionTimeout: number = ...

    Budget for a state's precondition probe; a state may override it with its own preconditionTimeoutMs.

    Separate from stateTimeout, and much smaller, because the two answer different questions. The probe decides whether the state exists here at all, and its cost is paid in full by every state that legitimately does not — so it has to be long enough for a slow-booting app to reach first paint, and short enough that a skip is not the run's dominant cost.

    captureRoutes: boolean = S.Boolean

    Crawl and capture routes. false captures only scripted states.

    allowStateRequests: boolean = S.Boolean

    Permit request steps. Off by default: a states file handed to you by a colleague should not be able to POST to your app because you ran the tool.

    Default: CaptureConfig = ...
    • Type Parameters

      • Args extends any[]
      • X

      Parameters

      • this: new (...args: Args) => X
      • ...args: Args

      Returns X

    • Merges a set of new annotations with existing ones, potentially overwriting any duplicates.

      Parameters

      Returns SchemaClass<
          CaptureConfig,
          {
              viewports: readonly { name: string; width: number; height: number }[];
              states: readonly {
                  name: string;
                  steps: readonly (
                      | {
                          selector: string;
                          kind: "waitFor";
                          state?: "visible"
                          | "hidden"
                          | "attached"
                          | "detached";
                          minCount?: number;
                          optional?: boolean;
                          timeoutMs?: number;
                          settleMs?: number;
                      }
                      | {
                          kind: "wait";
                          ms: number;
                          optional?: boolean;
                          timeoutMs?: number;
                          settleMs?: number;
                      }
                      | {
                          selector: string;
                          kind: "click";
                          optional?: boolean;
                          timeoutMs?: number;
                          settleMs?: number;
                          nth?: number;
                      }
                      | {
                          selector: string;
                          kind: "fill";
                          value: string;
                          optional?: boolean;
                          timeoutMs?: number;
                          settleMs?: number;
                      }
                      | {
                          values: readonly string[];
                          selector: string;
                          kind: "select";
                          optional?: boolean;
                          timeoutMs?: number;
                          settleMs?: number;
                      }
                      | {
                          kind: "press";
                          key: string;
                          selector?: string;
                          optional?: boolean;
                          timeoutMs?: number;
                          settleMs?: number;
                      }
                      | {
                          kind: "request";
                          path: string;
                          method: "GET"
                          | "POST"
                          | "PUT"
                          | "PATCH"
                          | "DELETE";
                          optional?: boolean;
                          timeoutMs?: number;
                          settleMs?: number;
                          json?: unknown;
                          headers?: { readonly [key: string]: string };
                          expectStatus?: number;
                      }
                      | {
                          kind: "reload";
                          optional?: boolean;
                          timeoutMs?: number;
                          settleMs?: number;
                          waitUntil?: "load"
                          | "domcontentloaded"
                          | "networkidle"
                          | "commit";
                      }
                  )[];
                  timeoutMs?: number;
                  description?: string;
                  url?: string;
                  extends?: string;
                  precondition?: string;
                  preconditionTimeoutMs?: number;
                  viewports?: readonly string[];
                  allowVideoReplay?: boolean;
              }[];
              outputDir: string;
              captureVideo: boolean;
              maxDepth: number;
              waitTime: number;
              videoOptions: { duration: number; interactions: boolean };
              includeSubdomains: boolean;
              allowedHosts: readonly string[];
              routeConcurrency: number;
              menuInteractionSelectors: readonly string[];
              screenshotHideSelectors: readonly string[];
              ffmpegPath: string;
              warmupScroll: boolean;
              launchArgs: readonly string[];
              colorScheme: "light" | "dark" | "no-preference";
              stateTimeout: number;
              preconditionTimeout: number;
              captureRoutes: boolean;
              allowStateRequests: boolean;
          },
          never,
      >

    • Type Parameters

      • Extended = never

      Parameters

      • identifier: string

      Returns <newFields extends Fields>(
          fields: newFields | HasFields<newFields>,
          annotations?: Schema<Extended, readonly []>,
      ) => [Extended] extends [never]
          ? "Missing `Self` generic - use `class Self extends Base.extend<Self>()({ ... })`"
          : Class<
              Extended,
              {
                  outputDir: typeof String$;
                  captureVideo: typeof Boolean$;
                  viewports: Array$<typeof ViewportConfig>;
                  maxDepth: filter<Schema<number, number, never>>;
                  waitTime: filter<Schema<number, number, never>>;
                  videoOptions: typeof VideoOptions;
                  includeSubdomains: typeof Boolean$;
                  allowedHosts: Array$<typeof String$>;
                  routeConcurrency: filter<Schema<number, number, never>>;
                  menuInteractionSelectors: Array$<typeof String$>;
                  screenshotHideSelectors: Array$<typeof String$>;
                  ffmpegPath: typeof String$;
                  warmupScroll: typeof Boolean$;
                  launchArgs: Array$<typeof String$>;
                  colorScheme: Literal<["light", "dark", "no-preference"]>;
                  states: Array$<typeof CaptureState>;
                  stateTimeout: filter<Schema<number, number, never>>;
                  preconditionTimeout: filter<Schema<number, number, never>>;
                  captureRoutes: typeof Boolean$;
                  allowStateRequests: typeof Boolean$;
              } & newFields,
              {
                  viewports: readonly { name: string; width: number; height: number }[];
                  states: readonly {
                      name: string;
                      steps: readonly (
                          | {
                              selector: string;
                              kind: "waitFor";
                              state?: (...)
                              | (...)
                              | (...)
                              | (...)
                              | (...);
                              minCount?: (...) | (...);
                              optional?: (...) | (...) | (...);
                              timeoutMs?: (...) | (...);
                              settleMs?: (...) | (...);
                          }
                          | {
                              kind: "wait";
                              ms: number;
                              optional?: (...)
                              | (...)
                              | (...);
                              timeoutMs?: (...) | (...);
                              settleMs?: (...) | (...);
                          }
                          | {
                              selector: string;
                              kind: "click";
                              optional?: (...)
                              | (...)
                              | (...);
                              timeoutMs?: (...) | (...);
                              settleMs?: (...) | (...);
                              nth?: (...) | (...);
                          }
                          | {
                              selector: string;
                              kind: "fill";
                              value: string;
                              optional?: (...)
                              | (...)
                              | (...);
                              timeoutMs?: (...) | (...);
                              settleMs?: (...) | (...);
                          }
                          | {
                              values: readonly (...)[];
                              selector: string;
                              kind: "select";
                              optional?: (...) | (...) | (...);
                              timeoutMs?: (...) | (...);
                              settleMs?: (...) | (...);
                          }
                          | {
                              kind: "press";
                              key: string;
                              selector?: (...)
                              | (...);
                              optional?: (...) | (...) | (...);
                              timeoutMs?: (...) | (...);
                              settleMs?: (...) | (...);
                          }
                          | {
                              kind: "request";
                              path: string;
                              method: (...)
                              | (...)
                              | (...)
                              | (...)
                              | (...);
                              optional?: (...) | (...) | (...);
                              timeoutMs?: (...) | (...);
                              settleMs?: (...) | (...);
                              json?: unknown;
                              headers?: (...) | (...);
                              expectStatus?: (...) | (...);
                          }
                          | {
                              kind: "reload";
                              optional?: (...)
                              | (...)
                              | (...);
                              timeoutMs?: (...) | (...);
                              settleMs?: (...) | (...);
                              waitUntil?: (...) | (...) | (...) | (...) | (...);
                          }
                      )[];
                      timeoutMs?: number;
                      description?: string;
                      url?: string;
                      extends?: string;
                      precondition?: string;
                      preconditionTimeoutMs?: number;
                      viewports?: readonly string[];
                      allowVideoReplay?: boolean;
                  }[];
                  outputDir: string;
                  captureVideo: boolean;
                  maxDepth: number;
                  waitTime: number;
                  videoOptions: { duration: number; interactions: boolean };
                  includeSubdomains: boolean;
                  allowedHosts: readonly string[];
                  routeConcurrency: number;
                  menuInteractionSelectors: readonly string[];
                  screenshotHideSelectors: readonly string[];
                  ffmpegPath: string;
                  warmupScroll: boolean;
                  launchArgs: readonly string[];
                  colorScheme: "light" | "dark" | "no-preference";
                  stateTimeout: number;
                  preconditionTimeout: number;
                  captureRoutes: boolean;
                  allowStateRequests: boolean;
              } & {} & {
                  readonly [K in string
                  | number
                  | symbol as Key<newFields, K>]: Encoded<newFields[K]>
              } & {
                  readonly [K in string
                  | number
                  | symbol as Key<newFields, K>]?: Encoded<newFields[K]>
              },
              Context<newFields[keyof newFields]>,
              { viewports: readonly ViewportConfig[] } & {
                  states: readonly CaptureState[];
              } & { outputDir: string } & { captureVideo: boolean } & {
                  maxDepth: number;
              } & { waitTime: number } & { videoOptions: VideoOptions } & {
                  includeSubdomains: boolean;
              } & { allowedHosts: readonly string[] } & { routeConcurrency: number } & {
                  menuInteractionSelectors: readonly string[];
              } & { screenshotHideSelectors: readonly string[] } & {
                  ffmpegPath: string;
              } & { warmupScroll: boolean } & { launchArgs: readonly string[] } & {
                  colorScheme: "light" | "dark" | "no-preference";
              } & { stateTimeout: number } & { preconditionTimeout: number } & {
                  captureRoutes: boolean;
              } & { allowStateRequests: boolean } & Constructor<newFields>,
              CaptureConfig,
              {},
          >

    • Type Parameters

      • Transformed = never

      Parameters

      • identifier: string

      Returns <newFields extends Fields, R2, R3>(
          fields: newFields,
          options: {
              decode: (
                  input: {
                      outputDir: string;
                      captureVideo: boolean;
                      viewports: readonly ViewportConfig[];
                      maxDepth: number;
                      waitTime: number;
                      videoOptions: VideoOptions;
                      includeSubdomains: boolean;
                      allowedHosts: readonly string[];
                      routeConcurrency: number;
                      menuInteractionSelectors: readonly string[];
                      screenshotHideSelectors: readonly string[];
                      ffmpegPath: string;
                      warmupScroll: boolean;
                      launchArgs: readonly string[];
                      colorScheme: "light" | "dark" | "no-preference";
                      states: readonly CaptureState[];
                      stateTimeout: number;
                      preconditionTimeout: number;
                      captureRoutes: boolean;
                      allowStateRequests: boolean;
                  },
                  options: ParseOptions,
                  ast: Transformation,
              ) => Effect<
                  {
                      [K in string
                      | number
                      | symbol]: Type<
                          {
                              outputDir: typeof String$;
                              captureVideo: typeof Boolean$;
                              viewports: Array$<typeof ViewportConfig>;
                              maxDepth: filter<Schema<(...), (...), (...)>>;
                              waitTime: filter<Schema<(...), (...), (...)>>;
                              videoOptions: typeof VideoOptions;
                              includeSubdomains: typeof Boolean$;
                              allowedHosts: Array$<typeof String$>;
                              routeConcurrency: filter<Schema<(...), (...), (...)>>;
                              menuInteractionSelectors: Array$<typeof String$>;
                              screenshotHideSelectors: Array$<typeof String$>;
                              ffmpegPath: typeof String$;
                              warmupScroll: typeof Boolean$;
                              launchArgs: Array$<typeof String$>;
                              colorScheme: Literal<[(...), (...), (...)]>;
                              states: Array$<typeof CaptureState>;
                              stateTimeout: filter<Schema<(...), (...), (...)>>;
                              preconditionTimeout: filter<Schema<(...), (...), (...)>>;
                              captureRoutes: typeof Boolean$;
                              allowStateRequests: typeof Boolean$;
                          } & newFields,
                      >[K]
                  },
                  ParseIssue,
                  R2,
              >;
              encode: (
                  input: {
                      [K in string | number | symbol]: Type<
                          {
                              outputDir: typeof String$;
                              captureVideo: typeof Boolean$;
                              viewports: Array$<typeof ViewportConfig>;
                              maxDepth: filter<Schema<number, number, never>>;
                              waitTime: filter<Schema<number, number, never>>;
                              videoOptions: typeof VideoOptions;
                              includeSubdomains: typeof Boolean$;
                              allowedHosts: Array$<typeof String$>;
                              routeConcurrency: filter<Schema<number, number, never>>;
                              menuInteractionSelectors: Array$<typeof String$>;
                              screenshotHideSelectors: Array$<typeof String$>;
                              ffmpegPath: typeof String$;
                              warmupScroll: typeof Boolean$;
                              launchArgs: Array$<typeof String$>;
                              colorScheme: Literal<["light", "dark", "no-preference"]>;
                              states: Array$<typeof CaptureState>;
                              stateTimeout: filter<Schema<number, number, never>>;
                              preconditionTimeout: filter<Schema<number, number, never>>;
                              captureRoutes: typeof Boolean$;
                              allowStateRequests: typeof Boolean$;
                          } & newFields,
                      >[K]
                  },
                  options: ParseOptions,
                  ast: Transformation,
              ) => Effect<
                  { viewports: readonly ViewportConfig[] } & {
                      states: readonly CaptureState[];
                  } & { outputDir: string } & { captureVideo: boolean } & {
                      maxDepth: number;
                  } & { waitTime: number } & { videoOptions: VideoOptions } & {
                      includeSubdomains: boolean;
                  } & { allowedHosts: readonly string[] } & { routeConcurrency: number } & {
                      menuInteractionSelectors: readonly string[];
                  } & { screenshotHideSelectors: readonly string[] } & {
                      ffmpegPath: string;
                  } & { warmupScroll: boolean } & { launchArgs: readonly string[] } & {
                      colorScheme: "light" | "dark" | "no-preference";
                  } & { stateTimeout: number } & { preconditionTimeout: number } & {
                      captureRoutes: boolean;
                  } & { allowStateRequests: boolean },
                  ParseIssue,
                  R3,
              >;
          },
          annotations?: Schema<Transformed, readonly []>,
      ) => [Transformed] extends [never]
          ? "Missing `Self` generic - use `class Self extends Base.transformOrFail<Self>()({ ... })`"
          : Class<
              Transformed,
              {
                  outputDir: typeof String$;
                  captureVideo: typeof Boolean$;
                  viewports: Array$<typeof ViewportConfig>;
                  maxDepth: filter<Schema<number, number, never>>;
                  waitTime: filter<Schema<number, number, never>>;
                  videoOptions: typeof VideoOptions;
                  includeSubdomains: typeof Boolean$;
                  allowedHosts: Array$<typeof String$>;
                  routeConcurrency: filter<Schema<number, number, never>>;
                  menuInteractionSelectors: Array$<typeof String$>;
                  screenshotHideSelectors: Array$<typeof String$>;
                  ffmpegPath: typeof String$;
                  warmupScroll: typeof Boolean$;
                  launchArgs: Array$<typeof String$>;
                  colorScheme: Literal<["light", "dark", "no-preference"]>;
                  states: Array$<typeof CaptureState>;
                  stateTimeout: filter<Schema<number, number, never>>;
                  preconditionTimeout: filter<Schema<number, number, never>>;
                  captureRoutes: typeof Boolean$;
                  allowStateRequests: typeof Boolean$;
              } & newFields,
              Encoded<
                  {
                      outputDir: typeof String$;
                      captureVideo: typeof Boolean$;
                      viewports: Array$<typeof ViewportConfig>;
                      maxDepth: filter<Schema<number, number, never>>;
                      waitTime: filter<Schema<number, number, never>>;
                      videoOptions: typeof VideoOptions;
                      includeSubdomains: typeof Boolean$;
                      allowedHosts: Array$<typeof String$>;
                      routeConcurrency: filter<Schema<number, number, never>>;
                      menuInteractionSelectors: Array$<typeof String$>;
                      screenshotHideSelectors: Array$<typeof String$>;
                      ffmpegPath: typeof String$;
                      warmupScroll: typeof Boolean$;
                      launchArgs: Array$<typeof String$>;
                      colorScheme: Literal<["light", "dark", "no-preference"]>;
                      states: Array$<typeof CaptureState>;
                      stateTimeout: filter<Schema<number, number, never>>;
                      preconditionTimeout: filter<Schema<number, number, never>>;
                      captureRoutes: typeof Boolean$;
                      allowStateRequests: typeof Boolean$;
                  },
              >,
              R2
              | R3
              | Context<newFields[keyof newFields]>,
              { viewports: readonly ViewportConfig[] } & {
                  states: readonly CaptureState[];
              } & { outputDir: string } & { captureVideo: boolean } & {
                  maxDepth: number;
              } & { waitTime: number } & { videoOptions: VideoOptions } & {
                  includeSubdomains: boolean;
              } & { allowedHosts: readonly string[] } & { routeConcurrency: number } & {
                  menuInteractionSelectors: readonly string[];
              } & { screenshotHideSelectors: readonly string[] } & {
                  ffmpegPath: string;
              } & { warmupScroll: boolean } & { launchArgs: readonly string[] } & {
                  colorScheme: "light" | "dark" | "no-preference";
              } & { stateTimeout: number } & { preconditionTimeout: number } & {
                  captureRoutes: boolean;
              } & { allowStateRequests: boolean } & Constructor<newFields>,
              CaptureConfig,
              {},
          >

    • Type Parameters

      • Transformed = never

      Parameters

      • identifier: string

      Returns <newFields extends Fields, R2, R3>(
          fields: newFields,
          options: {
              decode: (
                  input: {
                      viewports: readonly { name: string; width: number; height: number }[];
                      states: readonly {
                          name: string;
                          steps: readonly (
                              | {
                                  selector: string;
                                  kind: "waitFor";
                                  state?: "visible"
                                  | "hidden"
                                  | "attached"
                                  | "detached";
                                  minCount?: number;
                                  optional?: boolean;
                                  timeoutMs?: number;
                                  settleMs?: number;
                              }
                              | {
                                  kind: "wait";
                                  ms: number;
                                  optional?: boolean;
                                  timeoutMs?: number;
                                  settleMs?: number;
                              }
                              | {
                                  selector: string;
                                  kind: "click";
                                  optional?: boolean;
                                  timeoutMs?: number;
                                  settleMs?: number;
                                  nth?: number;
                              }
                              | {
                                  selector: string;
                                  kind: "fill";
                                  value: string;
                                  optional?: boolean;
                                  timeoutMs?: number;
                                  settleMs?: number;
                              }
                              | {
                                  values: readonly string[];
                                  selector: string;
                                  kind: "select";
                                  optional?: boolean;
                                  timeoutMs?: number;
                                  settleMs?: number;
                              }
                              | {
                                  kind: "press";
                                  key: string;
                                  selector?: string;
                                  optional?: boolean;
                                  timeoutMs?: number;
                                  settleMs?: number;
                              }
                              | {
                                  kind: "request";
                                  path: string;
                                  method: "GET"
                                  | "POST"
                                  | "PUT"
                                  | "PATCH"
                                  | "DELETE";
                                  optional?: boolean;
                                  timeoutMs?: number;
                                  settleMs?: number;
                                  json?: unknown;
                                  headers?: { readonly [key: ...]: ... };
                                  expectStatus?: number;
                              }
                              | {
                                  kind: "reload";
                                  optional?: boolean;
                                  timeoutMs?: number;
                                  settleMs?: number;
                                  waitUntil?: "load"
                                  | "domcontentloaded"
                                  | "networkidle"
                                  | "commit";
                              }
                          )[];
                          timeoutMs?: number;
                          description?: string;
                          url?: string;
                          extends?: string;
                          precondition?: string;
                          preconditionTimeoutMs?: number;
                          viewports?: readonly string[];
                          allowVideoReplay?: boolean;
                      }[];
                      outputDir: string;
                      captureVideo: boolean;
                      maxDepth: number;
                      waitTime: number;
                      videoOptions: { duration: number; interactions: boolean };
                      includeSubdomains: boolean;
                      allowedHosts: readonly string[];
                      routeConcurrency: number;
                      menuInteractionSelectors: readonly string[];
                      screenshotHideSelectors: readonly string[];
                      ffmpegPath: string;
                      warmupScroll: boolean;
                      launchArgs: readonly string[];
                      colorScheme: "light" | "dark" | "no-preference";
                      stateTimeout: number;
                      preconditionTimeout: number;
                      captureRoutes: boolean;
                      allowStateRequests: boolean;
                  },
                  options: ParseOptions,
                  ast: Transformation,
              ) => Effect<
                  {
                      [K in string
                      | number
                      | symbol]: (
                          {
                              viewports: readonly { name: string; width: number; height: number }[];
                              states: readonly {
                                  name: string;
                                  steps: readonly (...)[];
                                  timeoutMs?: (...) | (...);
                                  description?: (...) | (...);
                                  url?: (...) | (...);
                                  extends?: (...) | (...);
                                  precondition?: (...) | (...);
                                  preconditionTimeoutMs?: (...) | (...);
                                  viewports?: (...) | (...);
                                  allowVideoReplay?: (...) | (...) | (...);
                              }[];
                              outputDir: string;
                              captureVideo: boolean;
                              maxDepth: number;
                              waitTime: number;
                              videoOptions: { duration: number; interactions: boolean };
                              includeSubdomains: boolean;
                              allowedHosts: readonly string[];
                              routeConcurrency: number;
                              menuInteractionSelectors: readonly string[];
                              screenshotHideSelectors: readonly string[];
                              ffmpegPath: string;
                              warmupScroll: boolean;
                              launchArgs: readonly string[];
                              colorScheme: "light" | "dark" | "no-preference";
                              stateTimeout: number;
                              preconditionTimeout: number;
                              captureRoutes: boolean;
                              allowStateRequests: boolean;
                          } & {} & {
                              readonly [K in string
                              | number
                              | symbol as Key<newFields, K>]: Encoded<newFields[K]>
                          } & {
                              readonly [K in string
                              | number
                              | symbol as Key<newFields, K>]?: Encoded<(...)[(...)]>
                          }
                      )[K]
                  },
                  ParseIssue,
                  R2,
              >;
              encode: (
                  input: {
                      [K in string | number | symbol]: (
                          {
                              viewports: readonly { name: string; width: number; height: number }[];
                              states: readonly {
                                  name: string;
                                  steps: readonly (
                                      (...)
                                      | (...)
                                      | (...)
                                      | (...)
                                      | (...)
                                      | (...)
                                      | (...)
                                      | (...)
                                  )[];
                                  timeoutMs?: number;
                                  description?: string;
                                  url?: string;
                                  extends?: string;
                                  precondition?: string;
                                  preconditionTimeoutMs?: number;
                                  viewports?: readonly (...)[];
                                  allowVideoReplay?: boolean;
                              }[];
                              outputDir: string;
                              captureVideo: boolean;
                              maxDepth: number;
                              waitTime: number;
                              videoOptions: { duration: number; interactions: boolean };
                              includeSubdomains: boolean;
                              allowedHosts: readonly string[];
                              routeConcurrency: number;
                              menuInteractionSelectors: readonly string[];
                              screenshotHideSelectors: readonly string[];
                              ffmpegPath: string;
                              warmupScroll: boolean;
                              launchArgs: readonly string[];
                              colorScheme: "light" | "dark" | "no-preference";
                              stateTimeout: number;
                              preconditionTimeout: number;
                              captureRoutes: boolean;
                              allowStateRequests: boolean;
                          } & {} & {
                              readonly [K in string
                              | number
                              | symbol as Key<newFields, K>]: Encoded<newFields[K]>
                          } & {
                              readonly [K in string
                              | number
                              | symbol as Key<newFields, K>]?: Encoded<newFields[K]>
                          }
                      )[K]
                  },
                  options: ParseOptions,
                  ast: Transformation,
              ) => Effect<
                  Encoded<
                      {
                          outputDir: typeof String$;
                          captureVideo: typeof Boolean$;
                          viewports: Array$<typeof ViewportConfig>;
                          maxDepth: filter<Schema<number, number, never>>;
                          waitTime: filter<Schema<number, number, never>>;
                          videoOptions: typeof VideoOptions;
                          includeSubdomains: typeof Boolean$;
                          allowedHosts: Array$<typeof String$>;
                          routeConcurrency: filter<Schema<number, number, never>>;
                          menuInteractionSelectors: Array$<typeof String$>;
                          screenshotHideSelectors: Array$<typeof String$>;
                          ffmpegPath: typeof String$;
                          warmupScroll: typeof Boolean$;
                          launchArgs: Array$<typeof String$>;
                          colorScheme: Literal<["light", "dark", "no-preference"]>;
                          states: Array$<typeof CaptureState>;
                          stateTimeout: filter<Schema<number, number, never>>;
                          preconditionTimeout: filter<Schema<number, number, never>>;
                          captureRoutes: typeof Boolean$;
                          allowStateRequests: typeof Boolean$;
                      },
                  >,
                  ParseIssue,
                  R3,
              >;
          },
          annotations?: Schema<Transformed, readonly []>,
      ) => [Transformed] extends [never]
          ? "Missing `Self` generic - use `class Self extends Base.transformOrFailFrom<Self>()({ ... })`"
          : Class<
              Transformed,
              {
                  outputDir: typeof String$;
                  captureVideo: typeof Boolean$;
                  viewports: Array$<typeof ViewportConfig>;
                  maxDepth: filter<Schema<number, number, never>>;
                  waitTime: filter<Schema<number, number, never>>;
                  videoOptions: typeof VideoOptions;
                  includeSubdomains: typeof Boolean$;
                  allowedHosts: Array$<typeof String$>;
                  routeConcurrency: filter<Schema<number, number, never>>;
                  menuInteractionSelectors: Array$<typeof String$>;
                  screenshotHideSelectors: Array$<typeof String$>;
                  ffmpegPath: typeof String$;
                  warmupScroll: typeof Boolean$;
                  launchArgs: Array$<typeof String$>;
                  colorScheme: Literal<["light", "dark", "no-preference"]>;
                  states: Array$<typeof CaptureState>;
                  stateTimeout: filter<Schema<number, number, never>>;
                  preconditionTimeout: filter<Schema<number, number, never>>;
                  captureRoutes: typeof Boolean$;
                  allowStateRequests: typeof Boolean$;
              } & newFields,
              Encoded<
                  {
                      outputDir: typeof String$;
                      captureVideo: typeof Boolean$;
                      viewports: Array$<typeof ViewportConfig>;
                      maxDepth: filter<Schema<number, number, never>>;
                      waitTime: filter<Schema<number, number, never>>;
                      videoOptions: typeof VideoOptions;
                      includeSubdomains: typeof Boolean$;
                      allowedHosts: Array$<typeof String$>;
                      routeConcurrency: filter<Schema<number, number, never>>;
                      menuInteractionSelectors: Array$<typeof String$>;
                      screenshotHideSelectors: Array$<typeof String$>;
                      ffmpegPath: typeof String$;
                      warmupScroll: typeof Boolean$;
                      launchArgs: Array$<typeof String$>;
                      colorScheme: Literal<["light", "dark", "no-preference"]>;
                      states: Array$<typeof CaptureState>;
                      stateTimeout: filter<Schema<number, number, never>>;
                      preconditionTimeout: filter<Schema<number, number, never>>;
                      captureRoutes: typeof Boolean$;
                      allowStateRequests: typeof Boolean$;
                  },
              >,
              R2
              | R3
              | Context<newFields[keyof newFields]>,
              { viewports: readonly ViewportConfig[] } & {
                  states: readonly CaptureState[];
              } & { outputDir: string } & { captureVideo: boolean } & {
                  maxDepth: number;
              } & { waitTime: number } & { videoOptions: VideoOptions } & {
                  includeSubdomains: boolean;
              } & { allowedHosts: readonly string[] } & { routeConcurrency: number } & {
                  menuInteractionSelectors: readonly string[];
              } & { screenshotHideSelectors: readonly string[] } & {
                  ffmpegPath: string;
              } & { warmupScroll: boolean } & { launchArgs: readonly string[] } & {
                  colorScheme: "light" | "dark" | "no-preference";
              } & { stateTimeout: number } & { preconditionTimeout: number } & {
                  captureRoutes: boolean;
              } & { allowStateRequests: boolean } & Constructor<newFields>,
              CaptureConfig,
              {},
          >

    • Type Parameters

      • A

      Parameters

      • this: A

      Returns A

    • Type Parameters

      • A
      • B = never

      Parameters

      • this: A
      • ab: (_: A) => B

      Returns B

    • Type Parameters

      • A
      • B = never
      • C = never

      Parameters

      • this: A
      • ab: (_: A) => B
      • bc: (_: B) => C

      Returns C

    • Type Parameters

      • A
      • B = never
      • C = never
      • D = never

      Parameters

      • this: A
      • ab: (_: A) => B
      • bc: (_: B) => C
      • cd: (_: C) => D

      Returns D

    • Type Parameters

      • A
      • B = never
      • C = never
      • D = never
      • E = never

      Parameters

      • this: A
      • ab: (_: A) => B
      • bc: (_: B) => C
      • cd: (_: C) => D
      • de: (_: D) => E

      Returns E

    • Type Parameters

      • A
      • B = never
      • C = never
      • D = never
      • E = never
      • F = never

      Parameters

      • this: A
      • ab: (_: A) => B
      • bc: (_: B) => C
      • cd: (_: C) => D
      • de: (_: D) => E
      • ef: (_: E) => F

      Returns F

    • Type Parameters

      • A
      • B = never
      • C = never
      • D = never
      • E = never
      • F = never
      • G = never

      Parameters

      • this: A
      • ab: (_: A) => B
      • bc: (_: B) => C
      • cd: (_: C) => D
      • de: (_: D) => E
      • ef: (_: E) => F
      • fg: (_: F) => G

      Returns G

    • Type Parameters

      • A
      • B = never
      • C = never
      • D = never
      • E = never
      • F = never
      • G = never
      • H = never

      Parameters

      • this: A
      • ab: (_: A) => B
      • bc: (_: B) => C
      • cd: (_: C) => D
      • de: (_: D) => E
      • ef: (_: E) => F
      • fg: (_: F) => G
      • gh: (_: G) => H

      Returns H

    • Type Parameters

      • A
      • B = never
      • C = never
      • D = never
      • E = never
      • F = never
      • G = never
      • H = never
      • I = never

      Parameters

      • this: A
      • ab: (_: A) => B
      • bc: (_: B) => C
      • cd: (_: C) => D
      • de: (_: D) => E
      • ef: (_: E) => F
      • fg: (_: F) => G
      • gh: (_: G) => H
      • hi: (_: H) => I

      Returns I

    • Type Parameters

      • A
      • B = never
      • C = never
      • D = never
      • E = never
      • F = never
      • G = never
      • H = never
      • I = never
      • J = never

      Parameters

      • this: A
      • ab: (_: A) => B
      • bc: (_: B) => C
      • cd: (_: C) => D
      • de: (_: D) => E
      • ef: (_: E) => F
      • fg: (_: F) => G
      • gh: (_: G) => H
      • hi: (_: H) => I
      • ij: (_: I) => J

      Returns J

    • Type Parameters

      • A
      • B = never
      • C = never
      • D = never
      • E = never
      • F = never
      • G = never
      • H = never
      • I = never
      • J = never
      • K = never

      Parameters

      • this: A
      • ab: (_: A) => B
      • bc: (_: B) => C
      • cd: (_: C) => D
      • de: (_: D) => E
      • ef: (_: E) => F
      • fg: (_: F) => G
      • gh: (_: G) => H
      • hi: (_: H) => I
      • ij: (_: I) => J
      • jk: (_: J) => K

      Returns K

    • Type Parameters

      • A
      • B = never
      • C = never
      • D = never
      • E = never
      • F = never
      • G = never
      • H = never
      • I = never
      • J = never
      • K = never
      • L = never

      Parameters

      • this: A
      • ab: (_: A) => B
      • bc: (_: B) => C
      • cd: (_: C) => D
      • de: (_: D) => E
      • ef: (_: E) => F
      • fg: (_: F) => G
      • gh: (_: G) => H
      • hi: (_: H) => I
      • ij: (_: I) => J
      • jk: (_: J) => K
      • kl: (_: K) => L

      Returns L

    • Type Parameters

      • A
      • B = never
      • C = never
      • D = never
      • E = never
      • F = never
      • G = never
      • H = never
      • I = never
      • J = never
      • K = never
      • L = never
      • M = never

      Parameters

      • this: A
      • ab: (_: A) => B
      • bc: (_: B) => C
      • cd: (_: C) => D
      • de: (_: D) => E
      • ef: (_: E) => F
      • fg: (_: F) => G
      • gh: (_: G) => H
      • hi: (_: H) => I
      • ij: (_: I) => J
      • jk: (_: J) => K
      • kl: (_: K) => L
      • lm: (_: L) => M

      Returns M

    • Type Parameters

      • A
      • B = never
      • C = never
      • D = never
      • E = never
      • F = never
      • G = never
      • H = never
      • I = never
      • J = never
      • K = never
      • L = never
      • M = never
      • N = never

      Parameters

      • this: A
      • ab: (_: A) => B
      • bc: (_: B) => C
      • cd: (_: C) => D
      • de: (_: D) => E
      • ef: (_: E) => F
      • fg: (_: F) => G
      • gh: (_: G) => H
      • hi: (_: H) => I
      • ij: (_: I) => J
      • jk: (_: J) => K
      • kl: (_: K) => L
      • lm: (_: L) => M
      • mn: (_: M) => N

      Returns N

    • Type Parameters

      • A
      • B = never
      • C = never
      • D = never
      • E = never
      • F = never
      • G = never
      • H = never
      • I = never
      • J = never
      • K = never
      • L = never
      • M = never
      • N = never
      • O = never

      Parameters

      • this: A
      • ab: (_: A) => B
      • bc: (_: B) => C
      • cd: (_: C) => D
      • de: (_: D) => E
      • ef: (_: E) => F
      • fg: (_: F) => G
      • gh: (_: G) => H
      • hi: (_: H) => I
      • ij: (_: I) => J
      • jk: (_: J) => K
      • kl: (_: K) => L
      • lm: (_: L) => M
      • mn: (_: M) => N
      • no: (_: N) => O

      Returns O

    • Type Parameters

      • A
      • B = never
      • C = never
      • D = never
      • E = never
      • F = never
      • G = never
      • H = never
      • I = never
      • J = never
      • K = never
      • L = never
      • M = never
      • N = never
      • O = never
      • P = never

      Parameters

      • this: A
      • ab: (_: A) => B
      • bc: (_: B) => C
      • cd: (_: C) => D
      • de: (_: D) => E
      • ef: (_: E) => F
      • fg: (_: F) => G
      • gh: (_: G) => H
      • hi: (_: H) => I
      • ij: (_: I) => J
      • jk: (_: J) => K
      • kl: (_: K) => L
      • lm: (_: L) => M
      • mn: (_: M) => N
      • no: (_: N) => O
      • op: (_: O) => P

      Returns P

    • Type Parameters

      • A
      • B = never
      • C = never
      • D = never
      • E = never
      • F = never
      • G = never
      • H = never
      • I = never
      • J = never
      • K = never
      • L = never
      • M = never
      • N = never
      • O = never
      • P = never
      • Q = never

      Parameters

      • this: A
      • ab: (_: A) => B
      • bc: (_: B) => C
      • cd: (_: C) => D
      • de: (_: D) => E
      • ef: (_: E) => F
      • fg: (_: F) => G
      • gh: (_: G) => H
      • hi: (_: H) => I
      • ij: (_: I) => J
      • jk: (_: J) => K
      • kl: (_: K) => L
      • lm: (_: L) => M
      • mn: (_: M) => N
      • no: (_: N) => O
      • op: (_: O) => P
      • pq: (_: P) => Q

      Returns Q

    • Type Parameters

      • A
      • B = never
      • C = never
      • D = never
      • E = never
      • F = never
      • G = never
      • H = never
      • I = never
      • J = never
      • K = never
      • L = never
      • M = never
      • N = never
      • O = never
      • P = never
      • Q = never
      • R = never

      Parameters

      • this: A
      • ab: (_: A) => B
      • bc: (_: B) => C
      • cd: (_: C) => D
      • de: (_: D) => E
      • ef: (_: E) => F
      • fg: (_: F) => G
      • gh: (_: G) => H
      • hi: (_: H) => I
      • ij: (_: I) => J
      • jk: (_: J) => K
      • kl: (_: K) => L
      • lm: (_: L) => M
      • mn: (_: M) => N
      • no: (_: N) => O
      • op: (_: O) => P
      • pq: (_: P) => Q
      • qr: (_: Q) => R

      Returns R

    • Type Parameters

      • A
      • B = never
      • C = never
      • D = never
      • E = never
      • F = never
      • G = never
      • H = never
      • I = never
      • J = never
      • K = never
      • L = never
      • M = never
      • N = never
      • O = never
      • P = never
      • Q = never
      • R = never
      • S = never

      Parameters

      • this: A
      • ab: (_: A) => B
      • bc: (_: B) => C
      • cd: (_: C) => D
      • de: (_: D) => E
      • ef: (_: E) => F
      • fg: (_: F) => G
      • gh: (_: G) => H
      • hi: (_: H) => I
      • ij: (_: I) => J
      • jk: (_: J) => K
      • kl: (_: K) => L
      • lm: (_: L) => M
      • mn: (_: M) => N
      • no: (_: N) => O
      • op: (_: O) => P
      • pq: (_: P) => Q
      • qr: (_: Q) => R
      • rs: (_: R) => S

      Returns S

    • Type Parameters

      • A
      • B = never
      • C = never
      • D = never
      • E = never
      • F = never
      • G = never
      • H = never
      • I = never
      • J = never
      • K = never
      • L = never
      • M = never
      • N = never
      • O = never
      • P = never
      • Q = never
      • R = never
      • S = never
      • T = never

      Parameters

      • this: A
      • ab: (_: A) => B
      • bc: (_: B) => C
      • cd: (_: C) => D
      • de: (_: D) => E
      • ef: (_: E) => F
      • fg: (_: F) => G
      • gh: (_: G) => H
      • hi: (_: H) => I
      • ij: (_: I) => J
      • jk: (_: J) => K
      • kl: (_: K) => L
      • lm: (_: L) => M
      • mn: (_: M) => N
      • no: (_: N) => O
      • op: (_: O) => P
      • pq: (_: P) => Q
      • qr: (_: Q) => R
      • rs: (_: R) => S
      • st: (_: S) => T

      Returns T

    • Type Parameters

      • A
      • B = never
      • C = never
      • D = never
      • E = never
      • F = never
      • G = never
      • H = never
      • I = never
      • J = never
      • K = never
      • L = never
      • M = never
      • N = never
      • O = never
      • P = never
      • Q = never
      • R = never
      • S = never
      • T = never
      • U = never

      Parameters

      • this: A
      • ab: (_: A) => B
      • bc: (_: B) => C
      • cd: (_: C) => D
      • de: (_: D) => E
      • ef: (_: E) => F
      • fg: (_: F) => G
      • gh: (_: G) => H
      • hi: (_: H) => I
      • ij: (_: I) => J
      • jk: (_: J) => K
      • kl: (_: K) => L
      • lm: (_: L) => M
      • mn: (_: M) => N
      • no: (_: N) => O
      • op: (_: O) => P
      • pq: (_: P) => Q
      • qr: (_: Q) => R
      • rs: (_: R) => S
      • st: (_: S) => T
      • tu: (_: T) => U

      Returns U

    • Type Parameters

      • A
      • B = never
      • C = never
      • D = never
      • E = never
      • F = never
      • G = never
      • H = never
      • I = never
      • J = never
      • K = never
      • L = never
      • M = never
      • N = never
      • O = never
      • P = never
      • Q = never
      • R = never
      • S = never
      • T = never
      • U = never

      Parameters

      • this: A
      • ab: (_: A) => B
      • bc: (_: B) => C
      • cd: (_: C) => D
      • de: (_: D) => E
      • ef: (_: E) => F
      • fg: (_: F) => G
      • gh: (_: G) => H
      • hi: (_: H) => I
      • ij: (_: I) => J
      • jk: (_: J) => K
      • kl: (_: K) => L
      • lm: (_: L) => M
      • mn: (_: M) => N
      • no: (_: N) => O
      • op: (_: O) => P
      • pq: (_: P) => Q
      • qr: (_: Q) => R
      • rs: (_: R) => S
      • st: (_: S) => T
      • tu: (_: T) => U

      Returns U