import type { RootResult } from '../result/RootResult.js';
export type JtpResult = JtpNameResult | JtpNullableResult | JtpNotNullableResult | JtpOptionalResult | JtpVariadicResult | JtpTypeOfResult | JtpTupleResult | JtpKeyOfResult | JtpStringValueResult | JtpImportResult | JtpAnyResult | JtpUnknownResult | JtpFunctionResult | JtpGenericResult | JtpRecordEntryResult | JtpRecordResult | JtpMemberResult | JtpUnionResult | JtpParenthesisResult | JtpNamedParameterResult | JtpModuleResult | JtpFilePath | JtpIntersectionResult | JtpNumberResult;
type JtpQuoteStyle = 'single' | 'double' | 'none';
export interface JtpNullableResult {
    type: 'NULLABLE';
    value: JtpResult;
    meta: {
        syntax: 'PREFIX_QUESTION_MARK' | 'SUFFIX_QUESTION_MARK';
    };
}
export interface JtpNotNullableResult {
    type: 'NOT_NULLABLE';
    value: JtpResult;
    meta: {
        syntax: 'PREFIX_BANG' | 'SUFFIX_BANG';
    };
}
export interface JtpOptionalResult {
    type: 'OPTIONAL';
    value: JtpResult;
    meta: {
        syntax: 'PREFIX_EQUAL_SIGN' | 'SUFFIX_EQUALS_SIGN' | 'SUFFIX_KEY_QUESTION_MARK';
    };
}
export interface JtpVariadicResult {
    type: 'VARIADIC';
    value?: JtpResult;
    meta: {
        syntax: 'PREFIX_DOTS' | 'SUFFIX_DOTS' | 'ONLY_DOTS';
    };
}
export interface JtpNameResult {
    type: 'NAME';
    name: string;
}
export interface JtpTypeOfResult {
    type: 'TYPE_QUERY';
    name?: JtpResult;
}
export interface JtpKeyOfResult {
    type: 'KEY_QUERY';
    value?: JtpResult;
}
export interface JtpTupleResult {
    type: 'TUPLE';
    entries: JtpResult[];
}
export interface JtpStringValueResult {
    type: 'STRING_VALUE';
    quoteStyle: JtpQuoteStyle;
    string: string;
}
export interface JtpImportResult {
    type: 'IMPORT';
    path: JtpStringValueResult;
}
export interface JtpAnyResult {
    type: 'ANY';
}
export interface JtpUnknownResult {
    type: 'UNKNOWN';
}
export interface JtpFunctionResult {
    type: 'FUNCTION' | 'ARROW';
    params: JtpResult[];
    returns: JtpResult | null;
    new: JtpResult | null;
    this?: JtpResult | null;
}
export interface JtpGenericResult {
    type: 'GENERIC';
    subject: JtpResult;
    objects: JtpResult[];
    meta: {
        syntax: 'ANGLE_BRACKET' | 'ANGLE_BRACKET_WITH_DOT' | 'SQUARE_BRACKET';
    };
}
export interface JtpRecordEntryResult {
    type: 'RECORD_ENTRY';
    key: string;
    quoteStyle: JtpQuoteStyle;
    value: JtpResult | null;
    readonly: false;
}
export interface JtpRecordResult {
    type: 'RECORD';
    entries: JtpRecordEntryResult[];
}
export interface JtpMemberResult {
    type: 'MEMBER' | 'INNER_MEMBER' | 'INSTANCE_MEMBER';
    owner: JtpResult;
    name: string;
    quoteStyle: JtpQuoteStyle;
    hasEventPrefix: boolean;
}
export interface JtpUnionResult {
    type: 'UNION';
    left: JtpResult;
    right: JtpResult;
}
export interface JtpIntersectionResult {
    type: 'INTERSECTION';
    left: JtpResult;
    right: JtpResult;
}
export interface JtpParenthesisResult {
    type: 'PARENTHESIS';
    value: JtpResult;
}
export interface JtpNamedParameterResult {
    type: 'NAMED_PARAMETER';
    name: string;
    typeName: JtpResult;
}
export interface JtpModuleResult {
    type: 'MODULE';
    value: JtpResult;
}
export interface JtpFilePath {
    type: 'FILE_PATH';
    quoteStyle: JtpQuoteStyle;
    path: string;
}
export interface JtpNumberResult {
    type: 'NUMBER_VALUE';
    number: string;
}
export declare function jtpTransform(result: RootResult): JtpResult;
export {};
