import { type TUnreachable } from '../../system/unreachable/unreachable.mjs'; import { type TSchema } from '../types/schema.mjs'; import { type TProperties } from '../types/properties.mjs'; import { type TLiteral, type TLiteralValue } from '../types/literal.mjs'; import { type TBigInt } from '../types/bigint.mjs'; import { type TBoolean } from '../types/boolean.mjs'; import { type TNumber } from '../types/number.mjs'; import { type TString } from '../types/string.mjs'; import { type TExtendsRight } from './extends_right.mjs'; import * as Result from './result.mjs'; type TExtendsLiteralValue = (Left extends Right ? Result.TExtendsTrue : Result.TExtendsFalse); type TExtendsLiteralBigInt = (Right extends TLiteral ? TExtendsLiteralValue : Right extends TBigInt ? Result.TExtendsTrue : TExtendsRight, Right>); type TExtendsLiteralBoolean = (Right extends TLiteral ? TExtendsLiteralValue : Right extends TBoolean ? Result.TExtendsTrue : TExtendsRight, Right>); type TExtendsLiteralNumber = (Right extends TLiteral ? TExtendsLiteralValue : Right extends TNumber ? Result.TExtendsTrue : TExtendsRight, Right>); type TExtendsLiteralString = (Right extends TLiteral ? TExtendsLiteralValue : Right extends TString ? Result.TExtendsTrue : TExtendsRight, Right>); export type TExtendsLiteral = (Left extends TLiteral ? TExtendsLiteralBigInt : Left extends TLiteral ? TExtendsLiteralBoolean : Left extends TLiteral ? TExtendsLiteralNumber : Left extends TLiteral ? TExtendsLiteralString : TUnreachable); export declare function ExtendsLiteral(inferred: TProperties, left: Left, right: Right): TExtendsLiteral; export {};