Interface Class<I, A, C, Self, Inherited>

      Since

      1.0.0

      interface Class {
          new Classnew (props, disableValidation?): A & Omit<Inherited, keyof A>;
          [TypeId]: {
              From: ((_) => I);
              To: ((_) => Self);
          };
          ast: AST;
          extend: (<Extended>() => (<FieldsB>(fields) => [unknown] extends [Extended]
              ? "Missing `Self` generic - use `class Self extends Base.extend<Self>()({ ... })`"
              : S.Class<Simplify<Omit<I, keyof FieldsB> & {
                  readonly [K in string | number | symbol]: From<FieldsB[K]>
              } & {
                  readonly [K in string | number | symbol]?: From<FieldsB[K]>
              }>, Simplify<Omit<A, keyof FieldsB> & {
                  readonly [K in string | number | symbol]: To<FieldsB[K]>
              } & {
                  readonly [K in string | number | symbol]?: To<FieldsB[K]>
              }>, Simplify<Omit<C, keyof FieldsB> & {
                  readonly [K in string | number | symbol]: To<FieldsB[K]>
              } & {
                  readonly [K in string | number | symbol]?: To<FieldsB[K]>
              }>, Extended, Self>));
          struct: Schema<I, A>;
          transform: (<Transformed>() => (<FieldsB>(fields, decode, encode) => [unknown] extends [Transformed]
              ? "Missing `Self` generic - use `class Self extends Base.transform<Self>()({ ... })`"
              : S.Class<I, Simplify<Omit<A, keyof FieldsB> & {
                  readonly [K in string | number | symbol]: To<FieldsB[K]>
              } & {
                  readonly [K in string | number | symbol]?: To<FieldsB[K]>
              }>, Simplify<Omit<C, keyof FieldsB> & {
                  readonly [K in string | number | symbol]: To<FieldsB[K]>
              } & {
                  readonly [K in string | number | symbol]?: To<FieldsB[K]>
              }>, Transformed, Self>));
          transformFrom: (<Transformed>() => (<FieldsB>(fields, decode, encode) => [unknown] extends [Transformed]
              ? "Missing `Self` generic - use `class Self extends Base.transformFrom<Self>()({ ... })`"
              : S.Class<I, Simplify<Omit<A, keyof FieldsB> & {
                  readonly [K in string | number | symbol]: To<FieldsB[K]>
              } & {
                  readonly [K in string | number | symbol]?: To<FieldsB[K]>
              }>, Simplify<Omit<C, keyof FieldsB> & {
                  readonly [K in string | number | symbol]: To<FieldsB[K]>
              } & {
                  readonly [K in string | number | symbol]?: To<FieldsB[K]>
              }>, Transformed, Self>));
          pipe<A, B>(this, ab): B;
          pipe<A, B, C>(this, ab, bc): C;
          pipe<A, B, C, D>(this, ab, bc, cd): D;
          pipe<A, B, C, D, E>(this, ab, bc, cd, de): E;
          pipe<A, B, C, D, E, F>(this, ab, bc, cd, de, ef): F;
          pipe<A, B, C, D, E, F, G>(this, ab, bc, cd, de, ef, fg): G;
          pipe<A, B, C, D, E, F, G, H>(this, ab, bc, cd, de, ef, fg, gh): H;
          pipe<A, B, C, D, E, F, G, H, I>(this, ab, bc, cd, de, ef, fg, gh, hi): I;
          pipe<A, B, C, D, E, F, G, H, I, J>(this, ab, bc, cd, de, ef, fg, gh, hi, ij): J;
          pipe<A, B, C, D, E, F, G, H, I, J, K>(this, ab, bc, cd, de, ef, fg, gh, hi, ij, jk): K;
          pipe<A, B, C, D, E, F, G, H, I, J, K, L>(this, ab, bc, cd, de, ef, fg, gh, hi, ij, jk, kl): L;
          pipe<A, B, C, D, E, F, G, H, I, J, K, L, M>(this, ab, bc, cd, de, ef, fg, gh, hi, ij, jk, kl, lm): M;
          pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N>(this, ab, bc, cd, de, ef, fg, gh, hi, ij, jk, kl, lm, mn): N;
          pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O>(this, ab, bc, cd, de, ef, fg, gh, hi, ij, jk, kl, lm, mn, no): O;
          pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P>(this, ab, bc, cd, de, ef, fg, gh, hi, ij, jk, kl, lm, mn, no, op): P;
          pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q>(this, ab, bc, cd, de, ef, fg, gh, hi, ij, jk, kl, lm, mn, no, op, pq): Q;
          pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R>(this, ab, bc, cd, de, ef, fg, gh, hi, ij, jk, kl, lm, mn, no, op, pq, qr): R;
          pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S>(this, ab, bc, cd, de, ef, fg, gh, hi, ij, jk, kl, lm, mn, no, op, pq, qr, rs): S;
          pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T>(this, ab, bc, cd, de, ef, fg, gh, hi, ij, jk, kl, lm, mn, no, op, pq, qr, rs, st): T;
          pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U>(this, ab, bc, cd, de, ef, fg, gh, hi, ij, jk, kl, lm, mn, no, op, pq, qr, rs, st, tu): U;
          pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U>(this, ab, bc, cd, de, ef, fg, gh, hi, ij, jk, kl, lm, mn, no, op, pq, qr, rs, st, tu): U;
      }

      Type Parameters

      • I

      • A

      • C

      • Self

      • Inherited = Case

      Hierarchy

      Constructors

      • Parameters

        • props: Equals<C, {}> extends true
              ? void | {}
              : C
        • Optional disableValidation: boolean

        Returns A & Omit<Inherited, keyof A>

      Methods

      • Type Parameters

        • A

        • B

        Parameters

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

              • _: A

              Returns B

        Returns B

      • Type Parameters

        • A

        • B

        • C

        Parameters

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

              • _: A

              Returns B

        • bc: ((_) => C)
            • (_): C
            • Parameters

              • _: B

              Returns C

        Returns C

      • Type Parameters

        • A

        • B

        • C

        • D

        Parameters

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

              • _: A

              Returns B

        • bc: ((_) => C)
            • (_): C
            • Parameters

              • _: B

              Returns C

        • cd: ((_) => D)
            • (_): D
            • Parameters

              • _: C

              Returns D

        Returns D

      • Type Parameters

        • A

        • B

        • C

        • D

        • E

        Parameters

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

              • _: A

              Returns B

        • bc: ((_) => C)
            • (_): C
            • Parameters

              • _: B

              Returns C

        • cd: ((_) => D)
            • (_): D
            • Parameters

              • _: C

              Returns D

        • de: ((_) => E)
            • (_): E
            • Parameters

              • _: D

              Returns E

        Returns E

      • Type Parameters

        • A

        • B

        • C

        • D

        • E

        • F

        Parameters

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

              • _: A

              Returns B

        • bc: ((_) => C)
            • (_): C
            • Parameters

              • _: B

              Returns C

        • cd: ((_) => D)
            • (_): D
            • Parameters

              • _: C

              Returns D

        • de: ((_) => E)
            • (_): E
            • Parameters

              • _: D

              Returns E

        • ef: ((_) => F)
            • (_): F
            • Parameters

              • _: E

              Returns F

        Returns F

      • Type Parameters

        • A

        • B

        • C

        • D

        • E

        • F

        • G

        Parameters

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

              • _: A

              Returns B

        • bc: ((_) => C)
            • (_): C
            • Parameters

              • _: B

              Returns C

        • cd: ((_) => D)
            • (_): D
            • Parameters

              • _: C

              Returns D

        • de: ((_) => E)
            • (_): E
            • Parameters

              • _: D

              Returns E

        • ef: ((_) => F)
            • (_): F
            • Parameters

              • _: E

              Returns F

        • fg: ((_) => G)
            • (_): G
            • Parameters

              • _: F

              Returns G

        Returns G

      • Type Parameters

        • A

        • B

        • C

        • D

        • E

        • F

        • G

        • H

        Parameters

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

              • _: A

              Returns B

        • bc: ((_) => C)
            • (_): C
            • Parameters

              • _: B

              Returns C

        • cd: ((_) => D)
            • (_): D
            • Parameters

              • _: C

              Returns D

        • de: ((_) => E)
            • (_): E
            • Parameters

              • _: D

              Returns E

        • ef: ((_) => F)
            • (_): F
            • Parameters

              • _: E

              Returns F

        • fg: ((_) => G)
            • (_): G
            • Parameters

              • _: F

              Returns G

        • gh: ((_) => H)
            • (_): H
            • Parameters

              • _: G

              Returns H

        Returns H

      • Type Parameters

        • A

        • B

        • C

        • D

        • E

        • F

        • G

        • H

        • I

        Parameters

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

              • _: A

              Returns B

        • bc: ((_) => C)
            • (_): C
            • Parameters

              • _: B

              Returns C

        • cd: ((_) => D)
            • (_): D
            • Parameters

              • _: C

              Returns D

        • de: ((_) => E)
            • (_): E
            • Parameters

              • _: D

              Returns E

        • ef: ((_) => F)
            • (_): F
            • Parameters

              • _: E

              Returns F

        • fg: ((_) => G)
            • (_): G
            • Parameters

              • _: F

              Returns G

        • gh: ((_) => H)
            • (_): H
            • Parameters

              • _: G

              Returns H

        • hi: ((_) => I)
            • (_): I
            • Parameters

              • _: H

              Returns I

        Returns I

      • Type Parameters

        • A

        • B

        • C

        • D

        • E

        • F

        • G

        • H

        • I

        • J

        Parameters

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

              • _: A

              Returns B

        • bc: ((_) => C)
            • (_): C
            • Parameters

              • _: B

              Returns C

        • cd: ((_) => D)
            • (_): D
            • Parameters

              • _: C

              Returns D

        • de: ((_) => E)
            • (_): E
            • Parameters

              • _: D

              Returns E

        • ef: ((_) => F)
            • (_): F
            • Parameters

              • _: E

              Returns F

        • fg: ((_) => G)
            • (_): G
            • Parameters

              • _: F

              Returns G

        • gh: ((_) => H)
            • (_): H
            • Parameters

              • _: G

              Returns H

        • hi: ((_) => I)
            • (_): I
            • Parameters

              • _: H

              Returns I

        • ij: ((_) => J)
            • (_): J
            • Parameters

              • _: I

              Returns J

        Returns J

      • Type Parameters

        • A

        • B

        • C

        • D

        • E

        • F

        • G

        • H

        • I

        • J

        • K

        Parameters

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

              • _: A

              Returns B

        • bc: ((_) => C)
            • (_): C
            • Parameters

              • _: B

              Returns C

        • cd: ((_) => D)
            • (_): D
            • Parameters

              • _: C

              Returns D

        • de: ((_) => E)
            • (_): E
            • Parameters

              • _: D

              Returns E

        • ef: ((_) => F)
            • (_): F
            • Parameters

              • _: E

              Returns F

        • fg: ((_) => G)
            • (_): G
            • Parameters

              • _: F

              Returns G

        • gh: ((_) => H)
            • (_): H
            • Parameters

              • _: G

              Returns H

        • hi: ((_) => I)
            • (_): I
            • Parameters

              • _: H

              Returns I

        • ij: ((_) => J)
            • (_): J
            • Parameters

              • _: I

              Returns J

        • jk: ((_) => K)
            • (_): K
            • Parameters

              • _: J

              Returns K

        Returns K

      • Type Parameters

        • A

        • B

        • C

        • D

        • E

        • F

        • G

        • H

        • I

        • J

        • K

        • L

        Parameters

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

              • _: A

              Returns B

        • bc: ((_) => C)
            • (_): C
            • Parameters

              • _: B

              Returns C

        • cd: ((_) => D)
            • (_): D
            • Parameters

              • _: C

              Returns D

        • de: ((_) => E)
            • (_): E
            • Parameters

              • _: D

              Returns E

        • ef: ((_) => F)
            • (_): F
            • Parameters

              • _: E

              Returns F

        • fg: ((_) => G)
            • (_): G
            • Parameters

              • _: F

              Returns G

        • gh: ((_) => H)
            • (_): H
            • Parameters

              • _: G

              Returns H

        • hi: ((_) => I)
            • (_): I
            • Parameters

              • _: H

              Returns I

        • ij: ((_) => J)
            • (_): J
            • Parameters

              • _: I

              Returns J

        • jk: ((_) => K)
            • (_): K
            • Parameters

              • _: J

              Returns K

        • kl: ((_) => L)
            • (_): L
            • Parameters

              • _: K

              Returns L

        Returns L

      • Type Parameters

        • A

        • B

        • C

        • D

        • E

        • F

        • G

        • H

        • I

        • J

        • K

        • L

        • M

        Parameters

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

              • _: A

              Returns B

        • bc: ((_) => C)
            • (_): C
            • Parameters

              • _: B

              Returns C

        • cd: ((_) => D)
            • (_): D
            • Parameters

              • _: C

              Returns D

        • de: ((_) => E)
            • (_): E
            • Parameters

              • _: D

              Returns E

        • ef: ((_) => F)
            • (_): F
            • Parameters

              • _: E

              Returns F

        • fg: ((_) => G)
            • (_): G
            • Parameters

              • _: F

              Returns G

        • gh: ((_) => H)
            • (_): H
            • Parameters

              • _: G

              Returns H

        • hi: ((_) => I)
            • (_): I
            • Parameters

              • _: H

              Returns I

        • ij: ((_) => J)
            • (_): J
            • Parameters

              • _: I

              Returns J

        • jk: ((_) => K)
            • (_): K
            • Parameters

              • _: J

              Returns K

        • kl: ((_) => L)
            • (_): L
            • Parameters

              • _: K

              Returns L

        • lm: ((_) => M)
            • (_): M
            • Parameters

              • _: L

              Returns M

        Returns M

      • Type Parameters

        • A

        • B

        • C

        • D

        • E

        • F

        • G

        • H

        • I

        • J

        • K

        • L

        • M

        • N

        Parameters

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

              • _: A

              Returns B

        • bc: ((_) => C)
            • (_): C
            • Parameters

              • _: B

              Returns C

        • cd: ((_) => D)
            • (_): D
            • Parameters

              • _: C

              Returns D

        • de: ((_) => E)
            • (_): E
            • Parameters

              • _: D

              Returns E

        • ef: ((_) => F)
            • (_): F
            • Parameters

              • _: E

              Returns F

        • fg: ((_) => G)
            • (_): G
            • Parameters

              • _: F

              Returns G

        • gh: ((_) => H)
            • (_): H
            • Parameters

              • _: G

              Returns H

        • hi: ((_) => I)
            • (_): I
            • Parameters

              • _: H

              Returns I

        • ij: ((_) => J)
            • (_): J
            • Parameters

              • _: I

              Returns J

        • jk: ((_) => K)
            • (_): K
            • Parameters

              • _: J

              Returns K

        • kl: ((_) => L)
            • (_): L
            • Parameters

              • _: K

              Returns L

        • lm: ((_) => M)
            • (_): M
            • Parameters

              • _: L

              Returns M

        • mn: ((_) => N)
            • (_): N
            • Parameters

              • _: M

              Returns N

        Returns N

      • Type Parameters

        • A

        • B

        • C

        • D

        • E

        • F

        • G

        • H

        • I

        • J

        • K

        • L

        • M

        • N

        • O

        Parameters

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

              • _: A

              Returns B

        • bc: ((_) => C)
            • (_): C
            • Parameters

              • _: B

              Returns C

        • cd: ((_) => D)
            • (_): D
            • Parameters

              • _: C

              Returns D

        • de: ((_) => E)
            • (_): E
            • Parameters

              • _: D

              Returns E

        • ef: ((_) => F)
            • (_): F
            • Parameters

              • _: E

              Returns F

        • fg: ((_) => G)
            • (_): G
            • Parameters

              • _: F

              Returns G

        • gh: ((_) => H)
            • (_): H
            • Parameters

              • _: G

              Returns H

        • hi: ((_) => I)
            • (_): I
            • Parameters

              • _: H

              Returns I

        • ij: ((_) => J)
            • (_): J
            • Parameters

              • _: I

              Returns J

        • jk: ((_) => K)
            • (_): K
            • Parameters

              • _: J

              Returns K

        • kl: ((_) => L)
            • (_): L
            • Parameters

              • _: K

              Returns L

        • lm: ((_) => M)
            • (_): M
            • Parameters

              • _: L

              Returns M

        • mn: ((_) => N)
            • (_): N
            • Parameters

              • _: M

              Returns N

        • no: ((_) => O)
            • (_): O
            • Parameters

              • _: N

              Returns O

        Returns O

      • Type Parameters

        • A

        • B

        • C

        • D

        • E

        • F

        • G

        • H

        • I

        • J

        • K

        • L

        • M

        • N

        • O

        • P

        Parameters

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

              • _: A

              Returns B

        • bc: ((_) => C)
            • (_): C
            • Parameters

              • _: B

              Returns C

        • cd: ((_) => D)
            • (_): D
            • Parameters

              • _: C

              Returns D

        • de: ((_) => E)
            • (_): E
            • Parameters

              • _: D

              Returns E

        • ef: ((_) => F)
            • (_): F
            • Parameters

              • _: E

              Returns F

        • fg: ((_) => G)
            • (_): G
            • Parameters

              • _: F

              Returns G

        • gh: ((_) => H)
            • (_): H
            • Parameters

              • _: G

              Returns H

        • hi: ((_) => I)
            • (_): I
            • Parameters

              • _: H

              Returns I

        • ij: ((_) => J)
            • (_): J
            • Parameters

              • _: I

              Returns J

        • jk: ((_) => K)
            • (_): K
            • Parameters

              • _: J

              Returns K

        • kl: ((_) => L)
            • (_): L
            • Parameters

              • _: K

              Returns L

        • lm: ((_) => M)
            • (_): M
            • Parameters

              • _: L

              Returns M

        • mn: ((_) => N)
            • (_): N
            • Parameters

              • _: M

              Returns N

        • no: ((_) => O)
            • (_): O
            • Parameters

              • _: N

              Returns O

        • op: ((_) => P)
            • (_): P
            • Parameters

              • _: O

              Returns P

        Returns P

      • Type Parameters

        • A

        • B

        • C

        • D

        • E

        • F

        • G

        • H

        • I

        • J

        • K

        • L

        • M

        • N

        • O

        • P

        • Q

        Parameters

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

              • _: A

              Returns B

        • bc: ((_) => C)
            • (_): C
            • Parameters

              • _: B

              Returns C

        • cd: ((_) => D)
            • (_): D
            • Parameters

              • _: C

              Returns D

        • de: ((_) => E)
            • (_): E
            • Parameters

              • _: D

              Returns E

        • ef: ((_) => F)
            • (_): F
            • Parameters

              • _: E

              Returns F

        • fg: ((_) => G)
            • (_): G
            • Parameters

              • _: F

              Returns G

        • gh: ((_) => H)
            • (_): H
            • Parameters

              • _: G

              Returns H

        • hi: ((_) => I)
            • (_): I
            • Parameters

              • _: H

              Returns I

        • ij: ((_) => J)
            • (_): J
            • Parameters

              • _: I

              Returns J

        • jk: ((_) => K)
            • (_): K
            • Parameters

              • _: J

              Returns K

        • kl: ((_) => L)
            • (_): L
            • Parameters

              • _: K

              Returns L

        • lm: ((_) => M)
            • (_): M
            • Parameters

              • _: L

              Returns M

        • mn: ((_) => N)
            • (_): N
            • Parameters

              • _: M

              Returns N

        • no: ((_) => O)
            • (_): O
            • Parameters

              • _: N

              Returns O

        • op: ((_) => P)
            • (_): P
            • Parameters

              • _: O

              Returns P

        • pq: ((_) => Q)
            • (_): Q
            • Parameters

              • _: P

              Returns Q

        Returns Q

      • Type Parameters

        • A

        • B

        • C

        • D

        • E

        • F

        • G

        • H

        • I

        • J

        • K

        • L

        • M

        • N

        • O

        • P

        • Q

        • R

        Parameters

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

              • _: A

              Returns B

        • bc: ((_) => C)
            • (_): C
            • Parameters

              • _: B

              Returns C

        • cd: ((_) => D)
            • (_): D
            • Parameters

              • _: C

              Returns D

        • de: ((_) => E)
            • (_): E
            • Parameters

              • _: D

              Returns E

        • ef: ((_) => F)
            • (_): F
            • Parameters

              • _: E

              Returns F

        • fg: ((_) => G)
            • (_): G
            • Parameters

              • _: F

              Returns G

        • gh: ((_) => H)
            • (_): H
            • Parameters

              • _: G

              Returns H

        • hi: ((_) => I)
            • (_): I
            • Parameters

              • _: H

              Returns I

        • ij: ((_) => J)
            • (_): J
            • Parameters

              • _: I

              Returns J

        • jk: ((_) => K)
            • (_): K
            • Parameters

              • _: J

              Returns K

        • kl: ((_) => L)
            • (_): L
            • Parameters

              • _: K

              Returns L

        • lm: ((_) => M)
            • (_): M
            • Parameters

              • _: L

              Returns M

        • mn: ((_) => N)
            • (_): N
            • Parameters

              • _: M

              Returns N

        • no: ((_) => O)
            • (_): O
            • Parameters

              • _: N

              Returns O

        • op: ((_) => P)
            • (_): P
            • Parameters

              • _: O

              Returns P

        • pq: ((_) => Q)
            • (_): Q
            • Parameters

              • _: P

              Returns Q

        • qr: ((_) => R)
            • (_): R
            • Parameters

              • _: Q

              Returns R

        Returns R

      • Type Parameters

        • A

        • B

        • C

        • D

        • E

        • F

        • G

        • H

        • I

        • J

        • K

        • L

        • M

        • N

        • O

        • P

        • Q

        • R

        • S

        Parameters

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

              • _: A

              Returns B

        • bc: ((_) => C)
            • (_): C
            • Parameters

              • _: B

              Returns C

        • cd: ((_) => D)
            • (_): D
            • Parameters

              • _: C

              Returns D

        • de: ((_) => E)
            • (_): E
            • Parameters

              • _: D

              Returns E

        • ef: ((_) => F)
            • (_): F
            • Parameters

              • _: E

              Returns F

        • fg: ((_) => G)
            • (_): G
            • Parameters

              • _: F

              Returns G

        • gh: ((_) => H)
            • (_): H
            • Parameters

              • _: G

              Returns H

        • hi: ((_) => I)
            • (_): I
            • Parameters

              • _: H

              Returns I

        • ij: ((_) => J)
            • (_): J
            • Parameters

              • _: I

              Returns J

        • jk: ((_) => K)
            • (_): K
            • Parameters

              • _: J

              Returns K

        • kl: ((_) => L)
            • (_): L
            • Parameters

              • _: K

              Returns L

        • lm: ((_) => M)
            • (_): M
            • Parameters

              • _: L

              Returns M

        • mn: ((_) => N)
            • (_): N
            • Parameters

              • _: M

              Returns N

        • no: ((_) => O)
            • (_): O
            • Parameters

              • _: N

              Returns O

        • op: ((_) => P)
            • (_): P
            • Parameters

              • _: O

              Returns P

        • pq: ((_) => Q)
            • (_): Q
            • Parameters

              • _: P

              Returns Q

        • qr: ((_) => R)
            • (_): R
            • Parameters

              • _: Q

              Returns R

        • rs: ((_) => S)
            • (_): S
            • Parameters

              • _: R

              Returns S

        Returns S

      • Type Parameters

        • A

        • B

        • C

        • D

        • E

        • F

        • G

        • H

        • I

        • J

        • K

        • L

        • M

        • N

        • O

        • P

        • Q

        • R

        • S

        • T

        Parameters

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

              • _: A

              Returns B

        • bc: ((_) => C)
            • (_): C
            • Parameters

              • _: B

              Returns C

        • cd: ((_) => D)
            • (_): D
            • Parameters

              • _: C

              Returns D

        • de: ((_) => E)
            • (_): E
            • Parameters

              • _: D

              Returns E

        • ef: ((_) => F)
            • (_): F
            • Parameters

              • _: E

              Returns F

        • fg: ((_) => G)
            • (_): G
            • Parameters

              • _: F

              Returns G

        • gh: ((_) => H)
            • (_): H
            • Parameters

              • _: G

              Returns H

        • hi: ((_) => I)
            • (_): I
            • Parameters

              • _: H

              Returns I

        • ij: ((_) => J)
            • (_): J
            • Parameters

              • _: I

              Returns J

        • jk: ((_) => K)
            • (_): K
            • Parameters

              • _: J

              Returns K

        • kl: ((_) => L)
            • (_): L
            • Parameters

              • _: K

              Returns L

        • lm: ((_) => M)
            • (_): M
            • Parameters

              • _: L

              Returns M

        • mn: ((_) => N)
            • (_): N
            • Parameters

              • _: M

              Returns N

        • no: ((_) => O)
            • (_): O
            • Parameters

              • _: N

              Returns O

        • op: ((_) => P)
            • (_): P
            • Parameters

              • _: O

              Returns P

        • pq: ((_) => Q)
            • (_): Q
            • Parameters

              • _: P

              Returns Q

        • qr: ((_) => R)
            • (_): R
            • Parameters

              • _: Q

              Returns R

        • rs: ((_) => S)
            • (_): S
            • Parameters

              • _: R

              Returns S

        • st: ((_) => T)
            • (_): T
            • Parameters

              • _: S

              Returns T

        Returns T

      • Type Parameters

        • A

        • B

        • C

        • D

        • E

        • F

        • G

        • H

        • I

        • J

        • K

        • L

        • M

        • N

        • O

        • P

        • Q

        • R

        • S

        • T

        • U

        Parameters

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

              • _: A

              Returns B

        • bc: ((_) => C)
            • (_): C
            • Parameters

              • _: B

              Returns C

        • cd: ((_) => D)
            • (_): D
            • Parameters

              • _: C

              Returns D

        • de: ((_) => E)
            • (_): E
            • Parameters

              • _: D

              Returns E

        • ef: ((_) => F)
            • (_): F
            • Parameters

              • _: E

              Returns F

        • fg: ((_) => G)
            • (_): G
            • Parameters

              • _: F

              Returns G

        • gh: ((_) => H)
            • (_): H
            • Parameters

              • _: G

              Returns H

        • hi: ((_) => I)
            • (_): I
            • Parameters

              • _: H

              Returns I

        • ij: ((_) => J)
            • (_): J
            • Parameters

              • _: I

              Returns J

        • jk: ((_) => K)
            • (_): K
            • Parameters

              • _: J

              Returns K

        • kl: ((_) => L)
            • (_): L
            • Parameters

              • _: K

              Returns L

        • lm: ((_) => M)
            • (_): M
            • Parameters

              • _: L

              Returns M

        • mn: ((_) => N)
            • (_): N
            • Parameters

              • _: M

              Returns N

        • no: ((_) => O)
            • (_): O
            • Parameters

              • _: N

              Returns O

        • op: ((_) => P)
            • (_): P
            • Parameters

              • _: O

              Returns P

        • pq: ((_) => Q)
            • (_): Q
            • Parameters

              • _: P

              Returns Q

        • qr: ((_) => R)
            • (_): R
            • Parameters

              • _: Q

              Returns R

        • rs: ((_) => S)
            • (_): S
            • Parameters

              • _: R

              Returns S

        • st: ((_) => T)
            • (_): T
            • Parameters

              • _: S

              Returns T

        • tu: ((_) => U)
            • (_): U
            • Parameters

              • _: T

              Returns U

        Returns U

      • Type Parameters

        • A

        • B

        • C

        • D

        • E

        • F

        • G

        • H

        • I

        • J

        • K

        • L

        • M

        • N

        • O

        • P

        • Q

        • R

        • S

        • T

        • U

        Parameters

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

              • _: A

              Returns B

        • bc: ((_) => C)
            • (_): C
            • Parameters

              • _: B

              Returns C

        • cd: ((_) => D)
            • (_): D
            • Parameters

              • _: C

              Returns D

        • de: ((_) => E)
            • (_): E
            • Parameters

              • _: D

              Returns E

        • ef: ((_) => F)
            • (_): F
            • Parameters

              • _: E

              Returns F

        • fg: ((_) => G)
            • (_): G
            • Parameters

              • _: F

              Returns G

        • gh: ((_) => H)
            • (_): H
            • Parameters

              • _: G

              Returns H

        • hi: ((_) => I)
            • (_): I
            • Parameters

              • _: H

              Returns I

        • ij: ((_) => J)
            • (_): J
            • Parameters

              • _: I

              Returns J

        • jk: ((_) => K)
            • (_): K
            • Parameters

              • _: J

              Returns K

        • kl: ((_) => L)
            • (_): L
            • Parameters

              • _: K

              Returns L

        • lm: ((_) => M)
            • (_): M
            • Parameters

              • _: L

              Returns M

        • mn: ((_) => N)
            • (_): N
            • Parameters

              • _: M

              Returns N

        • no: ((_) => O)
            • (_): O
            • Parameters

              • _: N

              Returns O

        • op: ((_) => P)
            • (_): P
            • Parameters

              • _: O

              Returns P

        • pq: ((_) => Q)
            • (_): Q
            • Parameters

              • _: P

              Returns Q

        • qr: ((_) => R)
            • (_): R
            • Parameters

              • _: Q

              Returns R

        • rs: ((_) => S)
            • (_): S
            • Parameters

              • _: R

              Returns S

        • st: ((_) => T)
            • (_): T
            • Parameters

              • _: S

              Returns T

        • tu: ((_) => U)
            • (_): U
            • Parameters

              • _: T

              Returns U

        Returns U

      Properties

      [TypeId]: {
          From: ((_) => I);
          To: ((_) => Self);
      }

      Type declaration

      • Readonly From: ((_) => I)
          • (_): I
          • Parameters

            • _: I

            Returns I

      • Readonly To: ((_) => Self)
          • (_): Self
          • Parameters

            • _: Self

            Returns Self

      ast: AST
      extend: (<Extended>() => (<FieldsB>(fields) => [unknown] extends [Extended]
          ? "Missing `Self` generic - use `class Self extends Base.extend<Self>()({ ... })`"
          : S.Class<Simplify<Omit<I, keyof FieldsB> & {
              readonly [K in string | number | symbol]: From<FieldsB[K]>
          } & {
              readonly [K in string | number | symbol]?: From<FieldsB[K]>
          }>, Simplify<Omit<A, keyof FieldsB> & {
              readonly [K in string | number | symbol]: To<FieldsB[K]>
          } & {
              readonly [K in string | number | symbol]?: To<FieldsB[K]>
          }>, Simplify<Omit<C, keyof FieldsB> & {
              readonly [K in string | number | symbol]: To<FieldsB[K]>
          } & {
              readonly [K in string | number | symbol]?: To<FieldsB[K]>
          }>, Extended, Self>))

      Type declaration

        • <Extended>(): (<FieldsB>(fields) => [unknown] extends [Extended]
              ? "Missing `Self` generic - use `class Self extends Base.extend<Self>()({ ... })`"
              : S.Class<Simplify<Omit<I, keyof FieldsB> & {
                  readonly [K in string | number | symbol]: From<FieldsB[K]>
              } & {
                  readonly [K in string | number | symbol]?: From<FieldsB[K]>
              }>, Simplify<Omit<A, keyof FieldsB> & {
                  readonly [K in string | number | symbol]: To<FieldsB[K]>
              } & {
                  readonly [K in string | number | symbol]?: To<FieldsB[K]>
              }>, Simplify<Omit<C, keyof FieldsB> & {
                  readonly [K in string | number | symbol]: To<FieldsB[K]>
              } & {
                  readonly [K in string | number | symbol]?: To<FieldsB[K]>
              }>, Extended, Self>)
        • Type Parameters

          • Extended

          Returns (<FieldsB>(fields) => [unknown] extends [Extended]
              ? "Missing `Self` generic - use `class Self extends Base.extend<Self>()({ ... })`"
              : S.Class<Simplify<Omit<I, keyof FieldsB> & {
                  readonly [K in string | number | symbol]: From<FieldsB[K]>
              } & {
                  readonly [K in string | number | symbol]?: From<FieldsB[K]>
              }>, Simplify<Omit<A, keyof FieldsB> & {
                  readonly [K in string | number | symbol]: To<FieldsB[K]>
              } & {
                  readonly [K in string | number | symbol]?: To<FieldsB[K]>
              }>, Simplify<Omit<C, keyof FieldsB> & {
                  readonly [K in string | number | symbol]: To<FieldsB[K]>
              } & {
                  readonly [K in string | number | symbol]?: To<FieldsB[K]>
              }>, Extended, Self>)

            • <FieldsB>(fields): [unknown] extends [Extended]
                  ? "Missing `Self` generic - use `class Self extends Base.extend<Self>()({ ... })`"
                  : S.Class<Simplify<Omit<I, keyof FieldsB> & {
                      readonly [K in string | number | symbol]: From<FieldsB[K]>
                  } & {
                      readonly [K in string | number | symbol]?: From<FieldsB[K]>
                  }>, Simplify<Omit<A, keyof FieldsB> & {
                      readonly [K in string | number | symbol]: To<FieldsB[K]>
                  } & {
                      readonly [K in string | number | symbol]?: To<FieldsB[K]>
                  }>, Simplify<Omit<C, keyof FieldsB> & {
                      readonly [K in string | number | symbol]: To<FieldsB[K]>
                  } & {
                      readonly [K in string | number | symbol]?: To<FieldsB[K]>
                  }>, Extended, Self>
            • Type Parameters

              Parameters

              • fields: FieldsB

              Returns [unknown] extends [Extended]
                  ? "Missing `Self` generic - use `class Self extends Base.extend<Self>()({ ... })`"
                  : S.Class<Simplify<Omit<I, keyof FieldsB> & {
                      readonly [K in string | number | symbol]: From<FieldsB[K]>
                  } & {
                      readonly [K in string | number | symbol]?: From<FieldsB[K]>
                  }>, Simplify<Omit<A, keyof FieldsB> & {
                      readonly [K in string | number | symbol]: To<FieldsB[K]>
                  } & {
                      readonly [K in string | number | symbol]?: To<FieldsB[K]>
                  }>, Simplify<Omit<C, keyof FieldsB> & {
                      readonly [K in string | number | symbol]: To<FieldsB[K]>
                  } & {
                      readonly [K in string | number | symbol]?: To<FieldsB[K]>
                  }>, Extended, Self>

      struct: Schema<I, A>
      transform: (<Transformed>() => (<FieldsB>(fields, decode, encode) => [unknown] extends [Transformed]
          ? "Missing `Self` generic - use `class Self extends Base.transform<Self>()({ ... })`"
          : S.Class<I, Simplify<Omit<A, keyof FieldsB> & {
              readonly [K in string | number | symbol]: To<FieldsB[K]>
          } & {
              readonly [K in string | number | symbol]?: To<FieldsB[K]>
          }>, Simplify<Omit<C, keyof FieldsB> & {
              readonly [K in string | number | symbol]: To<FieldsB[K]>
          } & {
              readonly [K in string | number | symbol]?: To<FieldsB[K]>
          }>, Transformed, Self>))

      Type declaration

        • <Transformed>(): (<FieldsB>(fields, decode, encode) => [unknown] extends [Transformed]
              ? "Missing `Self` generic - use `class Self extends Base.transform<Self>()({ ... })`"
              : S.Class<I, Simplify<Omit<A, keyof FieldsB> & {
                  readonly [K in string | number | symbol]: To<FieldsB[K]>
              } & {
                  readonly [K in string | number | symbol]?: To<FieldsB[K]>
              }>, Simplify<Omit<C, keyof FieldsB> & {
                  readonly [K in string | number | symbol]: To<FieldsB[K]>
              } & {
                  readonly [K in string | number | symbol]?: To<FieldsB[K]>
              }>, Transformed, Self>)
        • Type Parameters

          • Transformed

          Returns (<FieldsB>(fields, decode, encode) => [unknown] extends [Transformed]
              ? "Missing `Self` generic - use `class Self extends Base.transform<Self>()({ ... })`"
              : S.Class<I, Simplify<Omit<A, keyof FieldsB> & {
                  readonly [K in string | number | symbol]: To<FieldsB[K]>
              } & {
                  readonly [K in string | number | symbol]?: To<FieldsB[K]>
              }>, Simplify<Omit<C, keyof FieldsB> & {
                  readonly [K in string | number | symbol]: To<FieldsB[K]>
              } & {
                  readonly [K in string | number | symbol]?: To<FieldsB[K]>
              }>, Transformed, Self>)

            • <FieldsB>(fields, decode, encode): [unknown] extends [Transformed]
                  ? "Missing `Self` generic - use `class Self extends Base.transform<Self>()({ ... })`"
                  : S.Class<I, Simplify<Omit<A, keyof FieldsB> & {
                      readonly [K in string | number | symbol]: To<FieldsB[K]>
                  } & {
                      readonly [K in string | number | symbol]?: To<FieldsB[K]>
                  }>, Simplify<Omit<C, keyof FieldsB> & {
                      readonly [K in string | number | symbol]: To<FieldsB[K]>
                  } & {
                      readonly [K in string | number | symbol]?: To<FieldsB[K]>
                  }>, Transformed, Self>
            • Type Parameters

              Parameters

              • fields: FieldsB
              • decode: ((input) => ParseResult<Omit<A, keyof FieldsB> & {
                    readonly [K in string | number | symbol]: To<FieldsB[K]>
                } & {
                    readonly [K in string | number | symbol]?: To<FieldsB[K]>
                }>)
                  • (input): ParseResult<Omit<A, keyof FieldsB> & {
                        readonly [K in string | number | symbol]: To<FieldsB[K]>
                    } & {
                        readonly [K in string | number | symbol]?: To<FieldsB[K]>
                    }>
                  • Parameters

                    • input: A

                    Returns ParseResult<Omit<A, keyof FieldsB> & {
                        readonly [K in string | number | symbol]: To<FieldsB[K]>
                    } & {
                        readonly [K in string | number | symbol]?: To<FieldsB[K]>
                    }>

              • encode: ((input) => ParseResult<A>)
                  • (input): ParseResult<A>
                  • Parameters

                    • input: Simplify<Omit<A, keyof FieldsB> & {
                          readonly [K in string | number | symbol]: To<FieldsB[K]>
                      } & {
                          readonly [K in string | number | symbol]?: To<FieldsB[K]>
                      }>

                    Returns ParseResult<A>

              Returns [unknown] extends [Transformed]
                  ? "Missing `Self` generic - use `class Self extends Base.transform<Self>()({ ... })`"
                  : S.Class<I, Simplify<Omit<A, keyof FieldsB> & {
                      readonly [K in string | number | symbol]: To<FieldsB[K]>
                  } & {
                      readonly [K in string | number | symbol]?: To<FieldsB[K]>
                  }>, Simplify<Omit<C, keyof FieldsB> & {
                      readonly [K in string | number | symbol]: To<FieldsB[K]>
                  } & {
                      readonly [K in string | number | symbol]?: To<FieldsB[K]>
                  }>, Transformed, Self>

      transformFrom: (<Transformed>() => (<FieldsB>(fields, decode, encode) => [unknown] extends [Transformed]
          ? "Missing `Self` generic - use `class Self extends Base.transformFrom<Self>()({ ... })`"
          : S.Class<I, Simplify<Omit<A, keyof FieldsB> & {
              readonly [K in string | number | symbol]: To<FieldsB[K]>
          } & {
              readonly [K in string | number | symbol]?: To<FieldsB[K]>
          }>, Simplify<Omit<C, keyof FieldsB> & {
              readonly [K in string | number | symbol]: To<FieldsB[K]>
          } & {
              readonly [K in string | number | symbol]?: To<FieldsB[K]>
          }>, Transformed, Self>))

      Type declaration

        • <Transformed>(): (<FieldsB>(fields, decode, encode) => [unknown] extends [Transformed]
              ? "Missing `Self` generic - use `class Self extends Base.transformFrom<Self>()({ ... })`"
              : S.Class<I, Simplify<Omit<A, keyof FieldsB> & {
                  readonly [K in string | number | symbol]: To<FieldsB[K]>
              } & {
                  readonly [K in string | number | symbol]?: To<FieldsB[K]>
              }>, Simplify<Omit<C, keyof FieldsB> & {
                  readonly [K in string | number | symbol]: To<FieldsB[K]>
              } & {
                  readonly [K in string | number | symbol]?: To<FieldsB[K]>
              }>, Transformed, Self>)
        • Type Parameters

          • Transformed

          Returns (<FieldsB>(fields, decode, encode) => [unknown] extends [Transformed]
              ? "Missing `Self` generic - use `class Self extends Base.transformFrom<Self>()({ ... })`"
              : S.Class<I, Simplify<Omit<A, keyof FieldsB> & {
                  readonly [K in string | number | symbol]: To<FieldsB[K]>
              } & {
                  readonly [K in string | number | symbol]?: To<FieldsB[K]>
              }>, Simplify<Omit<C, keyof FieldsB> & {
                  readonly [K in string | number | symbol]: To<FieldsB[K]>
              } & {
                  readonly [K in string | number | symbol]?: To<FieldsB[K]>
              }>, Transformed, Self>)

            • <FieldsB>(fields, decode, encode): [unknown] extends [Transformed]
                  ? "Missing `Self` generic - use `class Self extends Base.transformFrom<Self>()({ ... })`"
                  : S.Class<I, Simplify<Omit<A, keyof FieldsB> & {
                      readonly [K in string | number | symbol]: To<FieldsB[K]>
                  } & {
                      readonly [K in string | number | symbol]?: To<FieldsB[K]>
                  }>, Simplify<Omit<C, keyof FieldsB> & {
                      readonly [K in string | number | symbol]: To<FieldsB[K]>
                  } & {
                      readonly [K in string | number | symbol]?: To<FieldsB[K]>
                  }>, Transformed, Self>
            • Type Parameters

              Parameters

              • fields: FieldsB
              • decode: ((input) => ParseResult<Omit<I, keyof FieldsB> & {
                    readonly [K in string | number | symbol]: From<FieldsB[K]>
                } & {
                    readonly [K in string | number | symbol]?: From<FieldsB[K]>
                }>)
                  • (input): ParseResult<Omit<I, keyof FieldsB> & {
                        readonly [K in string | number | symbol]: From<FieldsB[K]>
                    } & {
                        readonly [K in string | number | symbol]?: From<FieldsB[K]>
                    }>
                  • Parameters

                    • input: I

                    Returns ParseResult<Omit<I, keyof FieldsB> & {
                        readonly [K in string | number | symbol]: From<FieldsB[K]>
                    } & {
                        readonly [K in string | number | symbol]?: From<FieldsB[K]>
                    }>

              • encode: ((input) => ParseResult<I>)
                  • (input): ParseResult<I>
                  • Parameters

                    • input: Simplify<Omit<I, keyof FieldsB> & {
                          readonly [K in string | number | symbol]: From<FieldsB[K]>
                      } & {
                          readonly [K in string | number | symbol]?: From<FieldsB[K]>
                      }>

                    Returns ParseResult<I>

              Returns [unknown] extends [Transformed]
                  ? "Missing `Self` generic - use `class Self extends Base.transformFrom<Self>()({ ... })`"
                  : S.Class<I, Simplify<Omit<A, keyof FieldsB> & {
                      readonly [K in string | number | symbol]: To<FieldsB[K]>
                  } & {
                      readonly [K in string | number | symbol]?: To<FieldsB[K]>
                  }>, Simplify<Omit<C, keyof FieldsB> & {
                      readonly [K in string | number | symbol]: To<FieldsB[K]>
                  } & {
                      readonly [K in string | number | symbol]?: To<FieldsB[K]>
                  }>, Transformed, Self>