import * as z from "zod";
import { OpenEnum } from "../../types/enums.js";
import { Result as SafeParseResult } from "../../types/fp.js";
import { SDKValidationError } from "../errors/sdkvalidationerror.js";
import { QuestionMultipleChoiceAnswers, QuestionMultipleChoiceAnswers$Outbound } from "./questionmultiplechoiceanswers.js";
export type QuestionSchemas4 = {};
/**
 * The source value of the question's condition type
 */
export type QuestionSchemasSourceValue = QuestionSchemas4 | string | number | boolean | Array<any>;
/**
 * The type of the question's condition
 */
export declare enum QuestionSchemasValue {
    EqualsTo = "equals_to",
    Contains = "contains"
}
/**
 * The type of the question's condition
 */
export type QuestionSchemasValueOpen = OpenEnum<typeof QuestionSchemasValue>;
export type ConditionType = {
    /**
     * The source value of the question's condition type
     */
    sourceValue?: QuestionSchemas4 | string | number | boolean | Array<any> | null | undefined;
    /**
     * The type of the question's condition
     */
    value?: QuestionSchemasValueOpen | null | undefined;
};
export type ParentQuestion = {
    conditionType?: ConditionType | null | undefined;
    /**
     * Unique identifier
     */
    id?: string | null | undefined;
    /**
     * List of parent questions's option IDs
     */
    optionIds?: Array<string> | null | undefined;
    /**
     * Provider's unique identifier
     */
    remoteId?: string | null | undefined;
    /**
     * Provider's list of parent questions's option IDs
     */
    remoteOptionIds?: Array<string> | null | undefined;
};
export declare enum Question2 {
    True = "true",
    False = "false"
}
export type QuestionRequired = boolean | Question2;
export type Question4 = {};
/**
 * The source value of the questions type.
 */
export type QuestionSourceValue = Question4 | string | number | boolean | Array<any>;
/**
 * The type of the questions.
 */
export declare enum QuestionValue {
    ShortText = "short_text",
    LongText = "long_text",
    Attachment = "attachment",
    MultiSelect = "multi_select",
    SingleSelect = "single_select",
    Boolean = "boolean",
    Number = "number",
    Date = "date",
    Video = "video"
}
/**
 * The type of the questions.
 */
export type QuestionValueOpen = OpenEnum<typeof QuestionValue>;
export type QuestionType = {
    /**
     * The source value of the questions type.
     */
    sourceValue?: Question4 | string | number | boolean | Array<any> | null | undefined;
    /**
     * The type of the questions.
     */
    value?: QuestionValueOpen | null | undefined;
};
export type Question = {
    /**
     * Unique identifier
     */
    id?: string | null | undefined;
    multipleChoiceAnswers?: Array<QuestionMultipleChoiceAnswers> | null | undefined;
    name?: string | null | undefined;
    parentQuestion?: ParentQuestion | null | undefined;
    /**
     * Provider's unique identifier
     */
    remoteId?: string | null | undefined;
    required?: boolean | Question2 | null | undefined;
    text?: string | null | undefined;
    type?: QuestionType | null | undefined;
};
/** @internal */
export declare const QuestionSchemas4$inboundSchema: z.ZodType<QuestionSchemas4, z.ZodTypeDef, unknown>;
/** @internal */
export type QuestionSchemas4$Outbound = {};
/** @internal */
export declare const QuestionSchemas4$outboundSchema: z.ZodType<QuestionSchemas4$Outbound, z.ZodTypeDef, QuestionSchemas4>;
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export declare namespace QuestionSchemas4$ {
    /** @deprecated use `QuestionSchemas4$inboundSchema` instead. */
    const inboundSchema: z.ZodType<QuestionSchemas4, z.ZodTypeDef, unknown>;
    /** @deprecated use `QuestionSchemas4$outboundSchema` instead. */
    const outboundSchema: z.ZodType<QuestionSchemas4$Outbound, z.ZodTypeDef, QuestionSchemas4>;
    /** @deprecated use `QuestionSchemas4$Outbound` instead. */
    type Outbound = QuestionSchemas4$Outbound;
}
export declare function questionSchemas4ToJSON(questionSchemas4: QuestionSchemas4): string;
export declare function questionSchemas4FromJSON(jsonString: string): SafeParseResult<QuestionSchemas4, SDKValidationError>;
/** @internal */
export declare const QuestionSchemasSourceValue$inboundSchema: z.ZodType<QuestionSchemasSourceValue, z.ZodTypeDef, unknown>;
/** @internal */
export type QuestionSchemasSourceValue$Outbound = QuestionSchemas4$Outbound | string | number | boolean | Array<any>;
/** @internal */
export declare const QuestionSchemasSourceValue$outboundSchema: z.ZodType<QuestionSchemasSourceValue$Outbound, z.ZodTypeDef, QuestionSchemasSourceValue>;
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export declare namespace QuestionSchemasSourceValue$ {
    /** @deprecated use `QuestionSchemasSourceValue$inboundSchema` instead. */
    const inboundSchema: z.ZodType<QuestionSchemasSourceValue, z.ZodTypeDef, unknown>;
    /** @deprecated use `QuestionSchemasSourceValue$outboundSchema` instead. */
    const outboundSchema: z.ZodType<QuestionSchemasSourceValue$Outbound, z.ZodTypeDef, QuestionSchemasSourceValue>;
    /** @deprecated use `QuestionSchemasSourceValue$Outbound` instead. */
    type Outbound = QuestionSchemasSourceValue$Outbound;
}
export declare function questionSchemasSourceValueToJSON(questionSchemasSourceValue: QuestionSchemasSourceValue): string;
export declare function questionSchemasSourceValueFromJSON(jsonString: string): SafeParseResult<QuestionSchemasSourceValue, SDKValidationError>;
/** @internal */
export declare const QuestionSchemasValue$inboundSchema: z.ZodType<QuestionSchemasValueOpen, z.ZodTypeDef, unknown>;
/** @internal */
export declare const QuestionSchemasValue$outboundSchema: z.ZodType<QuestionSchemasValueOpen, z.ZodTypeDef, QuestionSchemasValueOpen>;
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export declare namespace QuestionSchemasValue$ {
    /** @deprecated use `QuestionSchemasValue$inboundSchema` instead. */
    const inboundSchema: z.ZodType<QuestionSchemasValueOpen, z.ZodTypeDef, unknown>;
    /** @deprecated use `QuestionSchemasValue$outboundSchema` instead. */
    const outboundSchema: z.ZodType<QuestionSchemasValueOpen, z.ZodTypeDef, QuestionSchemasValueOpen>;
}
/** @internal */
export declare const ConditionType$inboundSchema: z.ZodType<ConditionType, z.ZodTypeDef, unknown>;
/** @internal */
export type ConditionType$Outbound = {
    source_value?: QuestionSchemas4$Outbound | string | number | boolean | Array<any> | null | undefined;
    value?: string | null | undefined;
};
/** @internal */
export declare const ConditionType$outboundSchema: z.ZodType<ConditionType$Outbound, z.ZodTypeDef, ConditionType>;
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export declare namespace ConditionType$ {
    /** @deprecated use `ConditionType$inboundSchema` instead. */
    const inboundSchema: z.ZodType<ConditionType, z.ZodTypeDef, unknown>;
    /** @deprecated use `ConditionType$outboundSchema` instead. */
    const outboundSchema: z.ZodType<ConditionType$Outbound, z.ZodTypeDef, ConditionType>;
    /** @deprecated use `ConditionType$Outbound` instead. */
    type Outbound = ConditionType$Outbound;
}
export declare function conditionTypeToJSON(conditionType: ConditionType): string;
export declare function conditionTypeFromJSON(jsonString: string): SafeParseResult<ConditionType, SDKValidationError>;
/** @internal */
export declare const ParentQuestion$inboundSchema: z.ZodType<ParentQuestion, z.ZodTypeDef, unknown>;
/** @internal */
export type ParentQuestion$Outbound = {
    condition_type?: ConditionType$Outbound | null | undefined;
    id?: string | null | undefined;
    option_ids?: Array<string> | null | undefined;
    remote_id?: string | null | undefined;
    remote_option_ids?: Array<string> | null | undefined;
};
/** @internal */
export declare const ParentQuestion$outboundSchema: z.ZodType<ParentQuestion$Outbound, z.ZodTypeDef, ParentQuestion>;
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export declare namespace ParentQuestion$ {
    /** @deprecated use `ParentQuestion$inboundSchema` instead. */
    const inboundSchema: z.ZodType<ParentQuestion, z.ZodTypeDef, unknown>;
    /** @deprecated use `ParentQuestion$outboundSchema` instead. */
    const outboundSchema: z.ZodType<ParentQuestion$Outbound, z.ZodTypeDef, ParentQuestion>;
    /** @deprecated use `ParentQuestion$Outbound` instead. */
    type Outbound = ParentQuestion$Outbound;
}
export declare function parentQuestionToJSON(parentQuestion: ParentQuestion): string;
export declare function parentQuestionFromJSON(jsonString: string): SafeParseResult<ParentQuestion, SDKValidationError>;
/** @internal */
export declare const Question2$inboundSchema: z.ZodNativeEnum<typeof Question2>;
/** @internal */
export declare const Question2$outboundSchema: z.ZodNativeEnum<typeof Question2>;
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export declare namespace Question2$ {
    /** @deprecated use `Question2$inboundSchema` instead. */
    const inboundSchema: z.ZodNativeEnum<typeof Question2>;
    /** @deprecated use `Question2$outboundSchema` instead. */
    const outboundSchema: z.ZodNativeEnum<typeof Question2>;
}
/** @internal */
export declare const QuestionRequired$inboundSchema: z.ZodType<QuestionRequired, z.ZodTypeDef, unknown>;
/** @internal */
export type QuestionRequired$Outbound = boolean | string;
/** @internal */
export declare const QuestionRequired$outboundSchema: z.ZodType<QuestionRequired$Outbound, z.ZodTypeDef, QuestionRequired>;
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export declare namespace QuestionRequired$ {
    /** @deprecated use `QuestionRequired$inboundSchema` instead. */
    const inboundSchema: z.ZodType<QuestionRequired, z.ZodTypeDef, unknown>;
    /** @deprecated use `QuestionRequired$outboundSchema` instead. */
    const outboundSchema: z.ZodType<QuestionRequired$Outbound, z.ZodTypeDef, QuestionRequired>;
    /** @deprecated use `QuestionRequired$Outbound` instead. */
    type Outbound = QuestionRequired$Outbound;
}
export declare function questionRequiredToJSON(questionRequired: QuestionRequired): string;
export declare function questionRequiredFromJSON(jsonString: string): SafeParseResult<QuestionRequired, SDKValidationError>;
/** @internal */
export declare const Question4$inboundSchema: z.ZodType<Question4, z.ZodTypeDef, unknown>;
/** @internal */
export type Question4$Outbound = {};
/** @internal */
export declare const Question4$outboundSchema: z.ZodType<Question4$Outbound, z.ZodTypeDef, Question4>;
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export declare namespace Question4$ {
    /** @deprecated use `Question4$inboundSchema` instead. */
    const inboundSchema: z.ZodType<Question4, z.ZodTypeDef, unknown>;
    /** @deprecated use `Question4$outboundSchema` instead. */
    const outboundSchema: z.ZodType<Question4$Outbound, z.ZodTypeDef, Question4>;
    /** @deprecated use `Question4$Outbound` instead. */
    type Outbound = Question4$Outbound;
}
export declare function question4ToJSON(question4: Question4): string;
export declare function question4FromJSON(jsonString: string): SafeParseResult<Question4, SDKValidationError>;
/** @internal */
export declare const QuestionSourceValue$inboundSchema: z.ZodType<QuestionSourceValue, z.ZodTypeDef, unknown>;
/** @internal */
export type QuestionSourceValue$Outbound = Question4$Outbound | string | number | boolean | Array<any>;
/** @internal */
export declare const QuestionSourceValue$outboundSchema: z.ZodType<QuestionSourceValue$Outbound, z.ZodTypeDef, QuestionSourceValue>;
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export declare namespace QuestionSourceValue$ {
    /** @deprecated use `QuestionSourceValue$inboundSchema` instead. */
    const inboundSchema: z.ZodType<QuestionSourceValue, z.ZodTypeDef, unknown>;
    /** @deprecated use `QuestionSourceValue$outboundSchema` instead. */
    const outboundSchema: z.ZodType<QuestionSourceValue$Outbound, z.ZodTypeDef, QuestionSourceValue>;
    /** @deprecated use `QuestionSourceValue$Outbound` instead. */
    type Outbound = QuestionSourceValue$Outbound;
}
export declare function questionSourceValueToJSON(questionSourceValue: QuestionSourceValue): string;
export declare function questionSourceValueFromJSON(jsonString: string): SafeParseResult<QuestionSourceValue, SDKValidationError>;
/** @internal */
export declare const QuestionValue$inboundSchema: z.ZodType<QuestionValueOpen, z.ZodTypeDef, unknown>;
/** @internal */
export declare const QuestionValue$outboundSchema: z.ZodType<QuestionValueOpen, z.ZodTypeDef, QuestionValueOpen>;
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export declare namespace QuestionValue$ {
    /** @deprecated use `QuestionValue$inboundSchema` instead. */
    const inboundSchema: z.ZodType<QuestionValueOpen, z.ZodTypeDef, unknown>;
    /** @deprecated use `QuestionValue$outboundSchema` instead. */
    const outboundSchema: z.ZodType<QuestionValueOpen, z.ZodTypeDef, QuestionValueOpen>;
}
/** @internal */
export declare const QuestionType$inboundSchema: z.ZodType<QuestionType, z.ZodTypeDef, unknown>;
/** @internal */
export type QuestionType$Outbound = {
    source_value?: Question4$Outbound | string | number | boolean | Array<any> | null | undefined;
    value?: string | null | undefined;
};
/** @internal */
export declare const QuestionType$outboundSchema: z.ZodType<QuestionType$Outbound, z.ZodTypeDef, QuestionType>;
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export declare namespace QuestionType$ {
    /** @deprecated use `QuestionType$inboundSchema` instead. */
    const inboundSchema: z.ZodType<QuestionType, z.ZodTypeDef, unknown>;
    /** @deprecated use `QuestionType$outboundSchema` instead. */
    const outboundSchema: z.ZodType<QuestionType$Outbound, z.ZodTypeDef, QuestionType>;
    /** @deprecated use `QuestionType$Outbound` instead. */
    type Outbound = QuestionType$Outbound;
}
export declare function questionTypeToJSON(questionType: QuestionType): string;
export declare function questionTypeFromJSON(jsonString: string): SafeParseResult<QuestionType, SDKValidationError>;
/** @internal */
export declare const Question$inboundSchema: z.ZodType<Question, z.ZodTypeDef, unknown>;
/** @internal */
export type Question$Outbound = {
    id?: string | null | undefined;
    multiple_choice_answers?: Array<QuestionMultipleChoiceAnswers$Outbound> | null | undefined;
    name?: string | null | undefined;
    parent_question?: ParentQuestion$Outbound | null | undefined;
    remote_id?: string | null | undefined;
    required?: boolean | string | null | undefined;
    text?: string | null | undefined;
    type?: QuestionType$Outbound | null | undefined;
};
/** @internal */
export declare const Question$outboundSchema: z.ZodType<Question$Outbound, z.ZodTypeDef, Question>;
/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export declare namespace Question$ {
    /** @deprecated use `Question$inboundSchema` instead. */
    const inboundSchema: z.ZodType<Question, z.ZodTypeDef, unknown>;
    /** @deprecated use `Question$outboundSchema` instead. */
    const outboundSchema: z.ZodType<Question$Outbound, z.ZodTypeDef, Question>;
    /** @deprecated use `Question$Outbound` instead. */
    type Outbound = Question$Outbound;
}
export declare function questionToJSON(question: Question): string;
export declare function questionFromJSON(jsonString: string): SafeParseResult<Question, SDKValidationError>;
//# sourceMappingURL=question.d.ts.map