export type AccountProvider = 'apple' | 'discord' | 'google' | 'zoo_corp' | 'github' | 'microsoft' | 'saml' | 'test_provider';
export interface AddHoleFromOffset {
    /**
     * {
     *   "format": "uuid"
     * }
     */
    entity_ids: string[];
}
export interface AddOrgMember {
    /** format:email, description:The email address of the user to add to the org. */
    email: string;
    /** The organization role to give the user. */
    role: UserOrgRole;
}
export interface Address {
    /** The city component. */
    city?: string;
    /** The country component. This is a two-letter ISO country code. */
    country: CountryCode;
    /** title:DateTime, format:date-time, description:The time and date the address was created. */
    created_at: string;
    /** The unique identifier of the address. */
    id: Uuid;
    /** The state component. */
    state?: string;
    /** The first street component. */
    street1?: string;
    /** The second street component. */
    street2?: string;
    /** title:DateTime, format:date-time, description:The time and date the address was last updated. */
    updated_at: string;
    /** The user ID that this address belongs to. */
    user_id: Uuid;
    /** The zip component. */
    zip?: string;
}
export interface AddressDetails {
    /** The city component. */
    city?: string;
    /** The country component. This is a two-letter ISO country code. */
    country: CountryCode;
    /** The state component. */
    state?: string;
    /** The first street component. */
    street1?: string;
    /** The second street component. */
    street2?: string;
    /** The zip component. */
    zip?: string;
}
export interface AdjacencyInfo {
    /** nullable:true, description:Adjacent edge and face info. */
    adjacent_info?: EdgeInfo;
    /** nullable:true, description:Opposite edge and face info. */
    opposite_info?: EdgeInfo;
    /** nullable:true, description:Original edge id and face info. */
    original_info?: EdgeInfo;
}
export interface Angle {
    /** What unit is the measurement? */
    unit: UnitAngle;
    /**
     * {
     *   "format": "double",
     *   "description": "The size of the angle, measured in the chosen unit."
     * }
     */
    value: number;
}
export interface AnnotationBasicDimension {
    /** default:1, format:float, description:The scale of the dimension arrows. Defaults to 1. */
    arrow_scale?: number;
    /** Basic dimension parameters (symbol and tolerance) */
    dimension: AnnotationMbdBasicDimension;
    /**
     * {
     *   "format": "uint32",
     *   "minimum": 0,
     *   "description": "The point size of the fonts used to generate the annotation label.  Very large values can negatively affect performance."
     * }
     */
    font_point_size: number;
    /** format:float, description:The scale of the font label in 3D space */
    font_scale: number;
    /** format:uuid, description:Entity to measure the dimension from */
    from_entity_id: string;
    /** Normalized position within the entity to position the dimension from */
    from_entity_pos: Point2d;
    /** 2D Position offset of the annotation within the plane. */
    offset: Point2d;
    /**
     * {
     *   "format": "uuid",
     *   "description": "Orientation plane.  The annotation will lie in this plane which is positioned about the leader position as its origin."
     * }
     */
    plane_id: string;
    /**
     * {
     *   "format": "uint32",
     *   "minimum": 0,
     *   "description": "Number of decimal places to use when displaying tolerance and dimension values"
     * }
     */
    precision: number;
    /** format:uuid, description:Entity to measure the dimension to */
    to_entity_id: string;
    /** Normalized position within the entity to position the dimension to */
    to_entity_pos: Point2d;
}
export interface AnnotationFeatureControl {
    /** nullable:true, description:MBD Control frame for geometric control */
    control_frame?: AnnotationMbdControlFrame;
    /**
     * {
     *   "nullable": true,
     *   "minLength": 1,
     *   "maxLength": 1,
     *   "description": "Set if this annotation is defining a datum"
     * }
     */
    defined_datum?: string;
    /** nullable:true, description:Basic dimensions */
    dimension?: AnnotationMbdBasicDimension;
    /** format:uuid, description:Entity to place the annotation leader from */
    entity_id: string;
    /** Normalized position within the entity to position the annotation leader from */
    entity_pos: Point2d;
    /**
     * {
     *   "format": "uint32",
     *   "minimum": 0,
     *   "description": "The point size of the fonts used to generate the annotation label.  Very large values can negatively affect performance."
     * }
     */
    font_point_size: number;
    /** format:float, description:The scale of the font label in 3D space */
    font_scale: number;
    /**
     * {
     *   "default": 1,
     *   "format": "float",
     *   "description": "The scale of the leader (dot or arrow). Defaults to 1."
     * }
     */
    leader_scale?: number;
    /** Type of leader to use */
    leader_type: AnnotationLineEnd;
    /** 2D Position offset of the annotation within the plane. */
    offset: Point2d;
    /**
     * {
     *   "format": "uuid",
     *   "description": "Orientation plane.  The annotation will lie in this plane which is positioned about the leader position as its origin."
     * }
     */
    plane_id: string;
    /**
     * {
     *   "format": "uint32",
     *   "minimum": 0,
     *   "description": "Number of decimal places to use when displaying tolerance and dimension values"
     * }
     */
    precision: number;
    /**
     * {
     *   "nullable": true,
     *   "description": "Prefix text which will appear before the basic dimension"
     * }
     */
    prefix?: string;
    /**
     * {
     *   "nullable": true,
     *   "description": "Suffix text which will appear after the basic dimension"
     * }
     */
    suffix?: string;
}
export interface AnnotationFeatureTag {
    /** format:uuid, description:Entity to place the annotation leader from */
    entity_id: string;
    /** Normalized position within the entity to position the annotation leader from */
    entity_pos: Point2d;
    /**
     * {
     *   "format": "uint32",
     *   "minimum": 0,
     *   "description": "The point size of the fonts used to generate the annotation label.  Very large values can negatively affect performance."
     * }
     */
    font_point_size: number;
    /** format:float, description:The scale of the font label in 3D space */
    font_scale: number;
    /** Tag key */
    key: string;
    /**
     * {
     *   "default": 1,
     *   "format": "float",
     *   "description": "The scale of the leader (dot or arrow). Defaults to 1."
     * }
     */
    leader_scale?: number;
    /** Type of leader to use */
    leader_type: AnnotationLineEnd;
    /** 2D Position offset of the annotation within the plane. */
    offset: Point2d;
    /**
     * {
     *   "format": "uuid",
     *   "description": "Orientation plane.  The annotation will lie in this plane which is positioned about the leader position as its origin."
     * }
     */
    plane_id: string;
    /** Whether or not to display the key on the annotation label */
    show_key: boolean;
    /** Tag value */
    value: string;
}
export type AnnotationLineEnd = 
/** Annotation line end type */
'none' | 'arrow' | 'dot';
export interface AnnotationLineEndOptions {
    /** How to style the end of the annotation line. */
    end: AnnotationLineEnd;
    /** How to style the start of the annotation line. */
    start: AnnotationLineEnd;
}
export interface AnnotationMbdBasicDimension {
    /**
     * {
     *   "nullable": true,
     *   "format": "double",
     *   "description": "The explicitly defined dimension.  Only required if the measurement is not automatically calculated."
     * }
     */
    dimension?: number;
    /**
     * {
     *   "nullable": true,
     *   "description": "Type of symbol to use for this dimension (if required)"
     * }
     */
    symbol?: MbdSymbol;
    /** format:double, description:The tolerance of the dimension */
    tolerance: number;
}
export interface AnnotationMbdControlFrame {
    /**
     * {
     *   "nullable": true,
     *   "description": "Diameter symbol (if required) whether the geometric control requires a cylindrical or diameter tolerance"
     * }
     */
    diameter_symbol?: MbdSymbol;
    /** nullable:true, description:Feature of size or tolerance modifiers */
    modifier?: MbdSymbol;
    /**
     * {
     *   "nullable": true,
     *   "minLength": 1,
     *   "maxLength": 1,
     *   "description": "Primary datum"
     * }
     */
    primary_datum?: string;
    /**
     * {
     *   "nullable": true,
     *   "minLength": 1,
     *   "maxLength": 1,
     *   "description": "Secondary datum"
     * }
     */
    secondary_datum?: string;
    /** Geometric symbol, the type of geometric control specified */
    symbol: MbdSymbol;
    /**
     * {
     *   "nullable": true,
     *   "minLength": 1,
     *   "maxLength": 1,
     *   "description": "Tertiary datum"
     * }
     */
    tertiary_datum?: string;
    /**
     * {
     *   "format": "double",
     *   "description": "Tolerance value - the total tolerance of the geometric control.  The unit is based on the drawing standard."
     * }
     */
    tolerance: number;
}
export interface AnnotationOptions {
    /** nullable:true, description:Color to render the annotation */
    color?: Color;
    /** nullable:true, description:Set as an MBD measured basic dimension annotation */
    dimension?: AnnotationBasicDimension;
    /** nullable:true, description:Set as an MBD Feature control annotation */
    feature_control?: AnnotationFeatureControl;
    /** nullable:true, description:Set as a feature tag annotation */
    feature_tag?: AnnotationFeatureTag;
    /** nullable:true, description:How to style the start and end of the line */
    line_ends?: AnnotationLineEndOptions;
    /** nullable:true, format:float, description:Width of the annotation's line */
    line_width?: number;
    /** nullable:true, description:Position to put the annotation */
    position?: Point3d;
    /** nullable:true, description:Text displayed on the annotation */
    text?: AnnotationTextOptions;
}
export type AnnotationTextAlignmentX = 
/** Horizontal Text alignment */
'left' | 'center' | 'right';
export type AnnotationTextAlignmentY = 
/** Vertical Text alignment */
'bottom' | 'center' | 'top';
export interface AnnotationTextOptions {
    /** format:uint32, minimum:0, description:Text font's point size */
    point_size: number;
    /** Text displayed on the annotation */
    text: string;
    /** Alignment along the X axis */
    x: AnnotationTextAlignmentX;
    /** Alignment along the Y axis */
    y: AnnotationTextAlignmentY;
}
export type AnnotationType = 't2d' | 't3d';
export type ApiCallStatus = 'queued' | 'uploaded' | 'in_progress' | 'completed' | 'failed';
export interface ApiCallWithPrice {
    /**
     * {
     *   "nullable": true,
     *   "title": "DateTime",
     *   "format": "date-time",
     *   "description": "The date and time the API call completed billing."
     * }
     */
    completed_at?: string;
    /** title:DateTime, format:date-time, description:The date and time the API call was created. */
    created_at: string;
    /**
     * {
     *   "nullable": true,
     *   "title": "int64",
     *   "format": "duration",
     *   "description": "The duration of the API call."
     * }
     */
    duration?: number;
    /** format:email, description:The user's email address. */
    email?: string;
    /** The endpoint requested by the API call. */
    endpoint?: string;
    /** The unique identifier for the API call. */
    id: Uuid;
    /** title:String, format:ip, description:The ip address of the origin. */
    ip_address?: string;
    /** The HTTP method requested by the API call. */
    method: Method;
    /**
     * {
     *   "nullable": true,
     *   "format": "int32",
     *   "description": "The number of minutes the API call was billed for."
     * }
     */
    minutes?: number;
    /**
     * {
     *   "nullable": true,
     *   "description": "The organization ID of the API call if it is billable through an organization."
     * }
     */
    org_id?: Uuid;
    /** The origin of the API call. */
    origin?: string;
    /**
     * {
     *   "nullable": true,
     *   "title": "double",
     *   "format": "money-usd",
     *   "description": "The price of the API call."
     * }
     */
    price?: number;
    /** The request query params sent by the API call. */
    request_query_params?: string;
    /**
     * {
     *   "nullable": true,
     *   "format": "int32",
     *   "description": "The number of seconds the API call was billed for."
     * }
     */
    seconds?: number;
    /**
     * {
     *   "nullable": true,
     *   "title": "DateTime",
     *   "format": "date-time",
     *   "description": "The date and time the API call started billing."
     * }
     */
    started_at?: string;
    /**
     * {
     *   "nullable": true,
     *   "title": "int32",
     *   "format": "int32",
     *   "description": "The status code returned by the API call."
     * }
     */
    status_code?: number;
    /** The Stripe invoice item ID of the API call if it is billable. */
    stripe_invoice_item_id?: string;
    /** The API token that made the API call. */
    token: Uuid;
    /** title:DateTime, format:date-time, description:The date and time the API call was last updated. */
    updated_at: string;
    /** The user agent of the request. */
    user_agent: string;
    /** The ID of the user that made the API call. */
    user_id: Uuid;
}
export interface ApiCallWithPriceResultsPage {
    /** list of items on this page of results */
    items: ApiCallWithPrice[];
    /**
     * {
     *   "nullable": true,
     *   "description": "token used to fetch the next page of results (if any)"
     * }
     */
    next_page?: string;
}
export type ApiEndpoint = 'modeling' | 'ml' | 'file';
export interface ApiError {
    /** The error code. */
    error_code: ErrorCode;
    /** The error message. */
    message: string;
}
export interface ApiToken {
    /** title:DateTime, format:date-time, description:The date and time the API token was created. */
    created_at: string;
    /** The unique identifier for the API token. */
    id: Uuid;
    /** If the token is valid. We never delete API tokens, but we can mark them as invalid. We save them for ever to preserve the history of the API token. */
    is_valid: boolean;
    /** nullable:true, description:An optional label for the API token. */
    label?: string;
    /** The API token itself. */
    token: ApiTokenUuid;
    /** title:DateTime, format:date-time, description:The date and time the API token was last updated. */
    updated_at: string;
    /** The ID of the user that owns the API token. */
    user_id: Uuid;
}
export interface ApiTokenResultsPage {
    /** list of items on this page of results */
    items: ApiToken[];
    /**
     * {
     *   "nullable": true,
     *   "description": "token used to fetch the next page of results (if any)"
     * }
     */
    next_page?: string;
}
export type ApiTokenUuid = 
/** An auth token. A uuid with a prefix of api- */
string;
export interface AppClientInfo {
    /** The URL for consent. */
    url?: string;
}
export type AsyncApiCallOutput = {
    /**
     * {
     *   "nullable": true,
     *   "title": "DateTime",
     *   "format": "date-time",
     *   "description": "The time and date the API call was completed."
     * }
     */
    completed_at?: string;
    /** title:DateTime, format:date-time, description:The time and date the API call was created. */
    created_at: string;
    /** nullable:true, description:The error the function returned, if any. */
    error?: string;
    /** The unique identifier of the API call.

This is the same as the API call ID. */
    id: Uuid;
    /** The output format of the file conversion. */
    output_format: FileExportFormat;
    /** nullable:true, description:The output format options of the file conversion. */
    output_format_options?: OutputFormat3d;
    outputs?: {
        [key: string]: string;
    };
    /** The source format of the file conversion. */
    src_format: FileImportFormat;
    /** nullable:true, description:The source format options of the file conversion. */
    src_format_options?: InputFormat3d;
    /**
     * {
     *   "nullable": true,
     *   "title": "DateTime",
     *   "format": "date-time",
     *   "description": "The time and date the API call was started."
     * }
     */
    started_at?: string;
    /** The status of the API call. */
    status: ApiCallStatus;
    type: 'file_conversion';
    /** title:DateTime, format:date-time, description:The time and date the API call was last updated. */
    updated_at: string;
    /** The user ID of the user who created the API call. */
    user_id: Uuid;
} | {
    /** nullable:true, description:The resulting center of mass. */
    center_of_mass?: Point3d;
    /**
     * {
     *   "nullable": true,
     *   "title": "DateTime",
     *   "format": "date-time",
     *   "description": "The time and date the API call was completed."
     * }
     */
    completed_at?: string;
    /** title:DateTime, format:date-time, description:The time and date the API call was created. */
    created_at: string;
    /** nullable:true, description:The error the function returned, if any. */
    error?: string;
    /** The unique identifier of the API call.

This is the same as the API call ID. */
    id: Uuid;
    /** The output unit for the center of mass. */
    output_unit: UnitLength;
    /** The source format of the file. */
    src_format: FileImportFormat;
    /**
     * {
     *   "nullable": true,
     *   "title": "DateTime",
     *   "format": "date-time",
     *   "description": "The time and date the API call was started."
     * }
     */
    started_at?: string;
    /** The status of the API call. */
    status: ApiCallStatus;
    type: 'file_center_of_mass';
    /** title:DateTime, format:date-time, description:The time and date the API call was last updated. */
    updated_at: string;
    /** The user ID of the user who created the API call. */
    user_id: Uuid;
} | {
    /**
     * {
     *   "nullable": true,
     *   "title": "DateTime",
     *   "format": "date-time",
     *   "description": "The time and date the API call was completed."
     * }
     */
    completed_at?: string;
    /** title:DateTime, format:date-time, description:The time and date the API call was created. */
    created_at: string;
    /** nullable:true, description:The error the function returned, if any. */
    error?: string;
    /** The unique identifier of the API call.

This is the same as the API call ID. */
    id: Uuid;
    /** nullable:true, format:double, description:The resulting mass. */
    mass?: number;
    /** default:0, format:double, description:The material density as denoted by the user. */
    material_density?: number;
    /** The material density unit. */
    material_density_unit: UnitDensity;
    /** The output unit for the mass. */
    output_unit: UnitMass;
    /** The source format of the file. */
    src_format: FileImportFormat;
    /**
     * {
     *   "nullable": true,
     *   "title": "DateTime",
     *   "format": "date-time",
     *   "description": "The time and date the API call was started."
     * }
     */
    started_at?: string;
    /** The status of the API call. */
    status: ApiCallStatus;
    type: 'file_mass';
    /** title:DateTime, format:date-time, description:The time and date the API call was last updated. */
    updated_at: string;
    /** The user ID of the user who created the API call. */
    user_id: Uuid;
} | {
    /**
     * {
     *   "nullable": true,
     *   "title": "DateTime",
     *   "format": "date-time",
     *   "description": "The time and date the API call was completed."
     * }
     */
    completed_at?: string;
    /** title:DateTime, format:date-time, description:The time and date the API call was created. */
    created_at: string;
    /** nullable:true, description:The error the function returned, if any. */
    error?: string;
    /** The unique identifier of the API call.

This is the same as the API call ID. */
    id: Uuid;
    /** The output unit for the volume. */
    output_unit: UnitVolume;
    /** The source format of the file. */
    src_format: FileImportFormat;
    /**
     * {
     *   "nullable": true,
     *   "title": "DateTime",
     *   "format": "date-time",
     *   "description": "The time and date the API call was started."
     * }
     */
    started_at?: string;
    /** The status of the API call. */
    status: ApiCallStatus;
    type: 'file_volume';
    /** title:DateTime, format:date-time, description:The time and date the API call was last updated. */
    updated_at: string;
    /** The user ID of the user who created the API call. */
    user_id: Uuid;
    /** nullable:true, format:double, description:The resulting volume. */
    volume?: number;
} | {
    /**
     * {
     *   "nullable": true,
     *   "title": "DateTime",
     *   "format": "date-time",
     *   "description": "The time and date the API call was completed."
     * }
     */
    completed_at?: string;
    /** title:DateTime, format:date-time, description:The time and date the API call was created. */
    created_at: string;
    /** nullable:true, format:double, description:The resulting density. */
    density?: number;
    /** nullable:true, description:The error the function returned, if any. */
    error?: string;
    /** The unique identifier of the API call.

This is the same as the API call ID. */
    id: Uuid;
    /** default:0, format:double, description:The material mass as denoted by the user. */
    material_mass?: number;
    /** The material mass unit. */
    material_mass_unit: UnitMass;
    /** The output unit for the density. */
    output_unit: UnitDensity;
    /** The source format of the file. */
    src_format: FileImportFormat;
    /**
     * {
     *   "nullable": true,
     *   "title": "DateTime",
     *   "format": "date-time",
     *   "description": "The time and date the API call was started."
     * }
     */
    started_at?: string;
    /** The status of the API call. */
    status: ApiCallStatus;
    type: 'file_density';
    /** title:DateTime, format:date-time, description:The time and date the API call was last updated. */
    updated_at: string;
    /** The user ID of the user who created the API call. */
    user_id: Uuid;
} | {
    /**
     * {
     *   "nullable": true,
     *   "title": "DateTime",
     *   "format": "date-time",
     *   "description": "The time and date the API call was completed."
     * }
     */
    completed_at?: string;
    /** title:DateTime, format:date-time, description:The time and date the API call was created. */
    created_at: string;
    /** nullable:true, description:The error the function returned, if any. */
    error?: string;
    /** The unique identifier of the API call.

This is the same as the API call ID. */
    id: Uuid;
    /** The output unit for the surface area. */
    output_unit: UnitArea;
    /** The source format of the file. */
    src_format: FileImportFormat;
    /**
     * {
     *   "nullable": true,
     *   "title": "DateTime",
     *   "format": "date-time",
     *   "description": "The time and date the API call was started."
     * }
     */
    started_at?: string;
    /** The status of the API call. */
    status: ApiCallStatus;
    /** nullable:true, format:double, description:The resulting surface area. */
    surface_area?: number;
    type: 'file_surface_area';
    /** title:DateTime, format:date-time, description:The time and date the API call was last updated. */
    updated_at: string;
    /** The user ID of the user who created the API call. */
    user_id: Uuid;
} | {
    /**
     * {
     *   "nullable": true,
     *   "description": "The code for the model. This is optional but will be required in the future once we are at v1."
     * }
     */
    code?: string;
    /**
     * {
     *   "nullable": true,
     *   "title": "DateTime",
     *   "format": "date-time",
     *   "description": "The time and date the API call was completed."
     * }
     */
    completed_at?: string;
    /** The conversation ID Conversations group different prompts together. */
    conversation_id: Uuid;
    /** title:DateTime, format:date-time, description:The time and date the API call was created. */
    created_at: string;
    /** nullable:true, description:The error the function returned, if any. */
    error?: string;
    /** nullable:true, description:Feedback from the user, if any. */
    feedback?: MlFeedback;
    /** The unique identifier of the API call.

This is the same as the API call ID. */
    id: Uuid;
    /** nullable:true, description:The version of kcl requested. */
    kcl_version?: string;
    /** The model being used. */
    model: TextToCadModel;
    /** The version of the model. */
    model_version: string;
    /** The output format of the model. */
    output_format: FileExportFormat;
    outputs?: {
        [key: string]: string;
    };
    /** The prompt. */
    prompt: string;
    /**
     * {
     *   "nullable": true,
     *   "title": "DateTime",
     *   "format": "date-time",
     *   "description": "The time and date the API call was started."
     * }
     */
    started_at?: string;
    /** The status of the API call. */
    status: ApiCallStatus;
    type: 'text_to_cad';
    /** title:DateTime, format:date-time, description:The time and date the API call was last updated. */
    updated_at: string;
    /** The user ID of the user who created the API call. */
    user_id: Uuid;
} | {
    /** The code for the new model. */
    code: string;
    /**
     * {
     *   "nullable": true,
     *   "title": "DateTime",
     *   "format": "date-time",
     *   "description": "The time and date the API call was completed."
     * }
     */
    completed_at?: string;
    /** The conversation ID Conversations group different prompts together. */
    conversation_id: Uuid;
    /** title:DateTime, format:date-time, description:The time and date the API call was created. */
    created_at: string;
    /** nullable:true, description:The error the function returned, if any. */
    error?: string;
    /** nullable:true, description:Feedback from the user, if any. */
    feedback?: MlFeedback;
    /** The unique identifier of the API call.

This is the same as the API call ID. */
    id: Uuid;
    /** The model being used. */
    model: TextToCadModel;
    /** The version of the model. */
    model_version: string;
    /** The original source code for the model, previous to the changes. */
    original_source_code: string;
    /**
     * {
     *   "nullable": true,
     *   "description": "The prompt for the overall changes. This is optional if you only want changes on specific source ranges."
     * }
     */
    prompt?: string;
    /** The source ranges the user suggested to change. */
    source_ranges: SourceRangePrompt[];
    /**
     * {
     *   "nullable": true,
     *   "title": "DateTime",
     *   "format": "date-time",
     *   "description": "The time and date the API call was started."
     * }
     */
    started_at?: string;
    /** The status of the API call. */
    status: ApiCallStatus;
    type: 'text_to_cad_iteration';
    /** title:DateTime, format:date-time, description:The time and date the API call was last updated. */
    updated_at: string;
    /** The user ID of the user who created the API call. */
    user_id: Uuid;
} | {
    /**
     * {
     *   "nullable": true,
     *   "title": "DateTime",
     *   "format": "date-time",
     *   "description": "The time and date the API call was completed."
     * }
     */
    completed_at?: string;
    /** The conversation ID Conversations group different prompts together. */
    conversation_id: Uuid;
    /** title:DateTime, format:date-time, description:The time and date the API call was created. */
    created_at: string;
    /** nullable:true, description:The error the function returned, if any. */
    error?: string;
    /** nullable:true, description:Feedback from the user, if any. */
    feedback?: MlFeedback;
    /** The unique identifier of the API call.

This is the same as the API call ID. */
    id: Uuid;
    /**
     * {
     *   "nullable": true,
     *   "description": "The version of kcl to use. If empty, the latest version will be used."
     * }
     */
    kcl_version?: string;
    /** The model being used. */
    model: TextToCadModel;
    /** The version of the model. */
    model_version: string;
    outputs?: {
        [key: string]: string;
    };
    /**
     * {
     *   "nullable": true,
     *   "description": "The project name. This is used to tie the prompt to a project. Which helps us make our models better over time."
     * }
     */
    project_name?: string;
    /**
     * {
     *   "nullable": true,
     *   "description": "The prompt for the overall changes. This is optional if you only want changes on specific source ranges. This will apply to all the files."
     * }
     */
    prompt?: string;
    /** The source ranges the user suggested to change. */
    source_ranges: SourceRangePrompt[];
    /**
     * {
     *   "nullable": true,
     *   "title": "DateTime",
     *   "format": "date-time",
     *   "description": "The time and date the API call was started."
     * }
     */
    started_at?: string;
    /** The status of the API call. */
    status: ApiCallStatus;
    type: 'text_to_cad_multi_file_iteration';
    /** title:DateTime, format:date-time, description:The time and date the API call was last updated. */
    updated_at: string;
    /** The user ID of the user who created the API call. */
    user_id: Uuid;
};
export interface AuthApiKeyResponse {
    /** The session token */
    session_token: string;
}
export interface AuthCallback {
    /** The authorization code. */
    code?: string;
    /**
     * {
     *   "nullable": true,
     *   "description": "For Apple only, a JSON web token containing the user’s identity information."
     * }
     */
    id_token?: string;
    /** The state that we had passed in through the user consent URL. */
    state?: string;
    /**
     * {
     *   "nullable": true,
     *   "description": "For Apple only, a JSON string containing the data requested in the scope property. The returned data is in the following format: `{ \"name\": { \"firstName\": string, \"lastName\": string }, \"email\": string }`"
     * }
     */
    user?: string;
}
export type Axis = 'y' | 'z';
export interface AxisDirectionPair {
    /** Axis specifier. */
    axis: Axis;
    /** Specifies which direction the axis is pointing. */
    direction: Direction;
}
export type BatchResponse = {
    /** Response to the modeling command. */
    response: OkModelingCmdResponse;
} | {
    /** Errors that occurred during the modeling command. */
    errors: ApiError[];
};
export type BillingCadence = 'annual' | 'quarterly' | 'monthly' | 'manual';
export type BillingCommitmentScope = 'pooled' | 'per_item';
export interface BillingContractItemInput {
    /**
     * {
     *   "default": true,
     *   "description": "Whether the item should participate in billing decisions immediately."
     * }
     */
    active?: boolean;
    /**
     * {
     *   "nullable": true,
     *   "description": "Optional normalization rule used before rating usage."
     * }
     */
    billing_unit_granularity?: BillingUnitGranularity;
    /** Canonical item code so later metering can find the right price row. */
    code: BillingItemCode;
    /** Human-readable name shown in finance tooling. */
    display_name: string;
    /**
     * {
     *   "nullable": true,
     *   "title": "double",
     *   "format": "money-usd",
     *   "description": "Fixed fee charged for the item when the kind is `fixed_fee`."
     * }
     */
    fixed_fee_amount?: number;
    /**
     * {
     *   "default": false,
     *   "description": "Whether usage from this item may burn down contract commitment."
     * }
     */
    is_commitment_eligible?: boolean;
    /** Pricing model for this item. */
    kind: BillingItemKind;
    /** default:[], description:Pricing tiers for usage-rated items. */
    rate_tiers?: BillingRateTierInput[];
    /** Base measurement unit for pricing and usage. */
    unit: BillingUnit;
}
export interface BillingContractItemView {
    /** Whether the item is active. */
    active: boolean;
    /** nullable:true, description:Optional normalization rule for usage. */
    billing_unit_granularity?: BillingUnitGranularity;
    /** Canonical item code. */
    code: BillingItemCode;
    /** Human-readable item name. */
    display_name: string;
    /**
     * {
     *   "nullable": true,
     *   "title": "double",
     *   "format": "money-usd",
     *   "description": "Fixed fee charged for the item when applicable."
     * }
     */
    fixed_fee_amount?: number;
    /** Database identifier for the contract item row. */
    id: Uuid;
    /** Whether this item can consume commitment. */
    is_commitment_eligible: boolean;
    /** Pricing model for the item. */
    kind: BillingItemKind;
    /** Usage tiers for the item. */
    rate_tiers: BillingRateTierView[];
    /** Measurement unit for the item. */
    unit: BillingUnit;
}
export type BillingContractStatus = 'draft' | 'scheduled' | 'active' | 'closed' | 'canceled';
export interface BillingContractUpsert {
    /** Operational cadence used for finance workflows. */
    billing_cadence: BillingCadence;
    /** Whether commitment is shared or item-scoped. */
    commitment_scope: BillingCommitmentScope;
    /** Contract currency shared by every money field in this definition. */
    currency: Currency;
    /**
     * {
     *   "nullable": true,
     *   "description": "Free-form finance note for discounts or negotiated pricing."
     * }
     */
    discount_description?: string;
    /** title:DateTime, format:date-time, description:Timestamp when the contract starts to apply. */
    effective_at: string;
    /**
     * {
     *   "nullable": true,
     *   "description": "Provider-owned customer reference, when one already exists."
     * }
     */
    external_customer_id?: BillingExternalCustomerId;
    /** Billable items attached to the contract. */
    items: BillingContractItemInput[];
    /** Human-readable contract label. */
    name: string;
    /** nullable:true, description:Internal notes about the contract. */
    notes?: string;
    /** Period schedule for the contract term. */
    periods: BillingPeriodInput[];
    /** Downstream provider responsible for collecting the invoice. */
    provider: BillingProvider;
    /** What should happen to unused commitment when a period ends. */
    rollover_policy: BillingRolloverPolicy;
    /** Lifecycle state for the new contract. */
    status: BillingContractStatus;
    /** title:DateTime, format:date-time, description:Timestamp when the contract term ends. */
    term_end_at: string;
}
export interface BillingContractView {
    /** Billing account identifier that owns the contract. */
    account_id: Uuid;
    /** Operational cadence for finance workflows. */
    billing_cadence: BillingCadence;
    /** Whether commitment is shared or item-scoped. */
    commitment_scope: BillingCommitmentScope;
    /** Billing contract identifier. */
    contract_id: Uuid;
    /** Currency shared by every money field in the contract. */
    currency: Currency;
    /** nullable:true, description:Discount note associated with the contract. */
    discount_description?: string;
    /** title:DateTime, format:date-time, description:Timestamp when the contract started applying. */
    effective_at: string;
    /**
     * {
     *   "nullable": true,
     *   "description": "Provider-owned customer reference, when one exists."
     * }
     */
    external_customer_id?: BillingExternalCustomerId;
    /** Billable items attached to the contract. */
    items: BillingContractItemView[];
    /** Human-readable contract label. */
    name: string;
    /** nullable:true, description:Internal notes for the contract. */
    notes?: string;
    /** Period schedule for the contract. */
    periods: BillingPeriodView[];
    /** Downstream invoice provider. */
    provider: BillingProvider;
    /** What happens to unused commitment when a period ends. */
    rollover_policy: BillingRolloverPolicy;
    /** Lifecycle state for the contract. */
    status: BillingContractStatus;
    /** title:DateTime, format:date-time, description:Timestamp when the contract term ends. */
    term_end_at: string;
}
export type BillingExternalCustomerId = 
/** Provider-owned customer reference for downstream invoicing systems. */
string;
export interface BillingInfo {
    /** nullable:true, description:The address of the customer. */
    address?: AddressDetails;
    /** The name of the customer. */
    name?: string;
    /**
     * {
     *   "title": "String",
     *   "default": "",
     *   "format": "phone",
     *   "description": "The phone for the customer."
     * }
     */
    phone?: string;
}
export type BillingItemCode = 'enterprise_support' | 'fde' | 'govcloud_management' | 'file_ingestion_conversion' | 'licensed_api_credits';
export type BillingItemKind = 'fixed_fee' | 'usage_tiered' | 'usage_commitment_bucket';
export type BillingPeriodIndex = 
/**
 * {
 *   "format": "int32",
 *   "description": "Non-negative index of a billing period inside a contract."
 * }
 */
number;
export interface BillingPeriodInput {
    /** title:double, format:money-usd, description:New commitment funded for this period. */
    commitment_amount: number;
    /** title:DateTime, format:date-time, description:Exclusive period end timestamp. */
    period_end_at: string;
    /** Sequence index for the period inside the contract. */
    period_index: BillingPeriodIndex;
    /** title:DateTime, format:date-time, description:Inclusive period start timestamp. */
    period_start_at: string;
    /**
     * {
     *   "nullable": true,
     *   "title": "double",
     *   "format": "money-usd",
     *   "description": "Commitment carried in from an earlier period."
     * }
     */
    rollover_in_amount?: number;
    /**
     * {
     *   "nullable": true,
     *   "title": "double",
     *   "format": "money-usd",
     *   "description": "Commitment intentionally rolled out to a later period."
     * }
     */
    rollover_out_amount?: number;
    /** nullable:true, description:Operational status for the period. */
    status?: BillingPeriodStatus;
}
export type BillingPeriodStatus = 'open' | 'closed';
export interface BillingPeriodView {
    /** title:double, format:money-usd, description:New commitment funded for this period. */
    commitment_amount: number;
    /** Database identifier for the period row. */
    id: Uuid;
    /** title:DateTime, format:date-time, description:Exclusive period end timestamp. */
    period_end_at: string;
    /** Sequence index for the period inside the contract. */
    period_index: BillingPeriodIndex;
    /** title:DateTime, format:date-time, description:Inclusive period start timestamp. */
    period_start_at: string;
    /** title:double, format:money-usd, description:Commitment carried in from a previous period. */
    rollover_in_amount: number;
    /**
     * {
     *   "title": "double",
     *   "format": "money-usd",
     *   "description": "Commitment intentionally rolled out to a later period."
     * }
     */
    rollover_out_amount: number;
    /** Operational status for the period. */
    status: BillingPeriodStatus;
}
export type BillingProvider = 'stripe' | 'manual_invoice';
export type BillingQuantity = 
/**
 * {
 *   "format": "int64",
 *   "description": "Non-negative quantity used for tier boundaries and later usage counts."
 * }
 */
number;
export interface BillingRateTierInput {
    /**
     * {
     *   "nullable": true,
     *   "description": "Exclusive upper bound for the tier, or `None` when the tier is open-ended."
     * }
     */
    tier_end_exclusive?: BillingQuantity;
    /** First billable quantity in this tier. */
    tier_start_inclusive: BillingQuantity;
    /**
     * {
     *   "title": "double",
     *   "format": "money-usd",
     *   "description": "Price to charge for each unit that lands in this tier."
     * }
     */
    unit_price: number;
}
export interface BillingRateTierView {
    /** Database identifier for the tier row. */
    id: Uuid;
    /**
     * {
     *   "nullable": true,
     *   "description": "Exclusive upper bound for the tier, or `None` when the tier is open-ended."
     * }
     */
    tier_end_exclusive?: BillingQuantity;
    /** First billable quantity in this tier. */
    tier_start_inclusive: BillingQuantity;
    /** title:double, format:money-usd, description:Price charged for each unit in the tier. */
    unit_price: number;
}
export type BillingRolloverPolicy = 'none' | 'year1_to_year2_once';
export type BillingUnit = 'file' | 'minute' | 'second' | 'year' | 'period';
export type BillingUnitGranularity = 'minute' | 'second';
export type BlendType = 'tangent';
export type BlockReason = 'missing_payment_method' | 'payment_method_failed' | 'upgrade_downgrade_abuse';
export interface BodiesCreated {
    /** All bodies created by this operation. */
    bodies: BodyCreated[];
}
export interface BodiesUpdated {
    /** All bodies created by this operation. */
    bodies: BodyUpdated[];
}
export interface BodyCreated {
    /** format:uuid, description:The body's ID. */
    id: string;
    /** Surfaces this body contains. */
    surfaces: SurfaceCreated[];
}
export type BodyType = 'solid' | 'surface';
export interface BodyUpdated {
    /** format:uuid, description:The body's ID. */
    id: string;
    /** Surfaces added to this body. */
    surfaces: SurfaceCreated[];
}
export interface BooleanImprint {
    /** If the operation involved any intersecting solids. */
    any_intersections?: boolean;
    /**
     * {
     *   "format": "uuid"
     * }
     */
    extra_solid_ids?: string[];
}
export interface BooleanIntersection {
    /** If the operation involved any intersecting solids. */
    any_intersections?: boolean;
    /**
     * {
     *   "format": "uuid"
     * }
     */
    extra_solid_ids?: string[];
}
export interface BooleanSubtract {
    /** If the operation involved any intersecting solids. */
    any_intersections?: boolean;
    /**
     * {
     *   "format": "uuid"
     * }
     */
    extra_solid_ids?: string[];
}
export interface BooleanUnion {
    /** If the operation involved any intersecting solids. */
    any_intersections?: boolean;
    /**
     * {
     *   "format": "uuid"
     * }
     */
    extra_solid_ids?: string[];
}
export interface BoundingBox {
    /** Center of the box. */
    center: Point3d;
    /** Dimensions of the box along each axis. */
    dimensions: Point3d;
}
export type CadDesignWorkflow = 'sketching' | 'coding' | 'ai' | 'hybrid_approach';
export type CadDiscoverySource = 'google' | 'x' | 'tiktok' | 'reddit' | 'payload_space' | 'youtube' | 'instagram' | 'facebook' | 'word_of_mouth' | 'other';
export type CadExperienceLevel = 'beginner' | 'intermediate' | 'advanced';
export type CadIndustry = 'mechanical_engineering' | 'manufacturing' | 'automotive' | 'aerospace' | 'civil_engineering' | 'electrical_engineering' | 'construction' | 'product_design' | 'architecture' | 'other';
export type CadUserType = 'student_or_researcher' | 'hobbyist' | 'professional';
export interface CameraDragEnd {
    /** Camera settings */
    settings: CameraSettings;
}
export type CameraDragInteractionType = 'pan' | 'rotate' | 'rotatetrackball' | 'zoom';
export interface CameraDragMove {
    /** Camera settings */
    settings: CameraSettings;
}
export interface CameraDragStart {
}
export type CameraMovement = 'vantage' | 'none';
export interface CameraSettings {
    /** Camera's look-at center (center-pos gives viewing vector) */
    center: Point3d;
    /** nullable:true, format:float, description:Camera's field-of-view angle (if ortho is false) */
    fov_y?: number;
    /** The Camera's orientation (in the form of a quaternion) */
    orientation: Point4d;
    /** Whether or not the camera is in ortho mode */
    ortho: boolean;
    /**
     * {
     *   "nullable": true,
     *   "format": "float",
     *   "description": "The camera's ortho scale (derived from viewing distance if ortho is true)"
     * }
     */
    ortho_scale?: number;
    /** Camera position (vantage) */
    pos: Point3d;
    /** Camera's world-space up vector */
    up: Point3d;
}
export interface CameraViewState {
    /**
     * {
     *   "format": "float"
     * }
     */
    eye_offset: number;
    /**
     * {
     *   "format": "float"
     * }
     */
    fov_y: number;
    is_ortho: boolean;
    ortho_scale_enabled: boolean;
    /**
     * {
     *   "format": "float"
     * }
     */
    ortho_scale_factor: number;
    /**
     * {
     *   "$ref": "#/components/schemas/Point3d"
     * }
     */
    pivot_position: Point3d;
    /**
     * {
     *   "$ref": "#/components/schemas/Point4d"
     * }
     */
    pivot_rotation: Point4d;
    /**
     * {
     *   "$ref": "#/components/schemas/WorldCoordinateSystem"
     * }
     */
    world_coord_system: WorldCoordinateSystem;
}
export interface CardDetails {
    /** Card brand.
  
  Can be `amex`, `diners`, `discover`, `jcb`, `mastercard`, `unionpay`, `visa`, or `unknown`. */
    brand?: string;
    /** default:{}, description:Checks on Card address and CVC if provided. */
    checks?: PaymentMethodCardChecks;
    /** Two-letter ISO code representing the country of the card. */
    country?: string;
    /**
     * {
     *   "default": 0,
     *   "format": "int64",
     *   "description": "Two-digit number representing the card's expiration month."
     * }
     */
    exp_month?: number;
    /**
     * {
     *   "default": 0,
     *   "format": "int64",
     *   "description": "Four-digit number representing the card's expiration year."
     * }
     */
    exp_year?: number;
    /** Uniquely identifies this particular card number. */
    fingerprint?: string;
    /** Card funding type.
  
  Can be `credit`, `debit`, `prepaid`, or `unknown`. */
    funding?: string;
    /** The last four digits of the card. */
    last4?: string;
}
export interface CenterOfMass {
    /** The center of mass. */
    center_of_mass: Point3d;
    /** The output unit for the center of mass. */
    output_unit: UnitLength;
}
export interface ClientErrorReport {
    /** Stable identifier for the client application reporting the error. */
    client: string;
    /**
     * {
     *   "nullable": true,
     *   "description": "Optional application-defined error code or fingerprint."
     * }
     */
    code?: string;
    /** nullable:true, description:Optional JavaScript/runtime error name. */
    error_name?: string;
    /** Human-readable error message. */
    message: string;
    /** Client release/version string. */
    release: string;
    /** nullable:true, description:Optional route/path where the error occurred. */
    route?: string;
    /** nullable:true, description:Optional stack trace or equivalent debug context. */
    stack?: string;
}
export interface ClientErrorReportAccepted {
    /** Whether the report was accepted. */
    accepted: boolean;
}
export interface ClientMetrics {
    /**
     * {
     *   "nullable": true,
     *   "format": "uint32",
     *   "minimum": 0,
     *   "description": "The height of the inbound video stream in pixels.\n\nhttps://www.w3.org/TR/webrtc-stats/#dom-rtcinboundrtpstreamstats-frameheight"
     * }
     */
    rtc_frame_height?: number;
    /**
     * {
     *   "nullable": true,
     *   "format": "uint32",
     *   "minimum": 0,
     *   "description": "The width of the inbound video stream in pixels.\n\nhttps://www.w3.org/TR/webrtc-stats/#dom-rtcinboundrtpstreamstats-framewidth"
     * }
     */
    rtc_frame_width?: number;
    /**
     * {
     *   "nullable": true,
     *   "format": "uint64",
     *   "minimum": 0,
     *   "description": "Counter of the number of WebRTC frames that the client has decoded from the inbound video stream.\n\nhttps://www.w3.org/TR/webrtc-stats/#dom-rtcinboundrtpstreamstats-freezecount"
     * }
     */
    rtc_frames_decoded?: number;
    /**
     * {
     *   "nullable": true,
     *   "format": "uint32",
     *   "minimum": 0,
     *   "description": "Counter of the number of WebRTC frames the client has dropped from the inbound video stream.\n\nhttps://www.w3.org/TR/webrtc-stats/#dom-rtcinboundrtpstreamstats-framesdropped"
     * }
     */
    rtc_frames_dropped?: number;
    /**
     * {
     *   "nullable": true,
     *   "format": "uint8",
     *   "minimum": 0,
     *   "description": "Current number of frames being rendered in the last second. A good target is 60 frames per second, but it can fluctuate depending on network conditions.\n\nhttps://www.w3.org/TR/webrtc-stats/#dom-rtcinboundrtpstreamstats-freezecount"
     * }
     */
    rtc_frames_per_second?: number;
    /**
     * {
     *   "nullable": true,
     *   "format": "uint64",
     *   "minimum": 0,
     *   "description": "Counter of the number of WebRTC frames that the client has received from the inbound video stream.\n\nhttps://www.w3.org/TR/webrtc-stats/#dom-rtcinboundrtpstreamstats-freezecount"
     * }
     */
    rtc_frames_received?: number;
    /**
     * {
     *   "nullable": true,
     *   "format": "uint32",
     *   "minimum": 0,
     *   "description": "Number of times the inbound video playback has frozen. This is usually due to network conditions.\n\nhttps://www.w3.org/TR/webrtc-stats/#dom-rtcinboundrtpstreamstats-freezecount"
     * }
     */
    rtc_freeze_count?: number;
    /**
     * {
     *   "nullable": true,
     *   "format": "double",
     *   "description": "Amount of \"jitter\" in the inbound video stream. Network latency is the time it takes a packet to traverse the network. The amount that the latency varies is the jitter. Video latency is the time it takes to render a frame sent by the server (including network latency). A low jitter means the video latency can be reduced without impacting smooth playback. High jitter means clients will increase video latency to ensure smooth playback.\n\nhttps://www.w3.org/TR/webrtc-stats/#dom-rtcreceivedrtpstreamstats-jitter"
     * }
     */
    rtc_jitter_sec?: number;
    /**
     * {
     *   "nullable": true,
     *   "format": "uint32",
     *   "minimum": 0,
     *   "description": "Number of \"key frames\" decoded in the inbound h.264 stream. A key frame is an expensive (bandwidth-wise) \"full image\" of the video frame. Data after the keyframe become -- effectively -- \"diff\" operations on that key frame. The Engine will only send a keyframe if required, which is an indication that some of the \"diffs\" have been lost, usually an indication of poor network conditions. We like this metric to understand times when the connection has had to recover.\n\nhttps://www.w3.org/TR/webrtc-stats/#dom-rtcinboundrtpstreamstats-keyframesdecoded"
     * }
     */
    rtc_keyframes_decoded?: number;
    /**
     * {
     *   "nullable": true,
     *   "format": "uint32",
     *   "minimum": 0,
     *   "description": "Amount of packets lost in the inbound video stream.\n\nhttps://www.w3.org/TR/webrtc-stats/#dom-rtcreceivedrtpstreamstats-packetslost"
     * }
     */
    rtc_packets_lost?: number;
    /**
     * {
     *   "nullable": true,
     *   "format": "uint32",
     *   "minimum": 0,
     *   "description": "Count of the total number of video pauses experienced by this receiver.\n\nhttps://www.w3.org/TR/webrtc-stats/#dom-rtcinboundrtpstreamstats-pausecount"
     * }
     */
    rtc_pause_count?: number;
    /**
     * {
     *   "nullable": true,
     *   "format": "uint32",
     *   "minimum": 0,
     *   "description": "Count the total number of Picture Loss Indication (PLI) packets.\n\nhttps://www.w3.org/TR/webrtc-stats/#dom-rtcinboundrtpstreamstats-plicount"
     * }
     */
    rtc_pli_count?: number;
    /**
     * {
     *   "nullable": true,
     *   "format": "float",
     *   "description": "Total duration of pauses in seconds.\n\nThis is the \"ping\" between the client and the STUN server. Not to be confused with the E2E RTT documented [here](https://www.w3.org/TR/webrtc-stats/#dom-rtcremoteinboundrtpstreamstats-roundtriptime)\n\nhttps://www.w3.org/TR/webrtc-stats/#dom-rtcicecandidatepairstats-currentroundtriptime"
     * }
     */
    rtc_stun_rtt_sec?: number;
    /**
     * {
     *   "nullable": true,
     *   "format": "float",
     *   "description": "Number of seconds of frozen video the user has been subjected to.\n\nhttps://www.w3.org/TR/webrtc-stats/#dom-rtcinboundrtpstreamstats-totalfreezesduration"
     * }
     */
    rtc_total_freezes_duration_sec?: number;
    /**
     * {
     *   "nullable": true,
     *   "format": "float",
     *   "description": "Count of the total number of video pauses experienced by this receiver.\n\nhttps://www.w3.org/TR/webrtc-stats/#dom-rtcinboundrtpstreamstats-totalpausesduration"
     * }
     */
    rtc_total_pauses_duration_sec?: number;
}
export interface ClosePath {
    /**
     * {
     *   "format": "uuid",
     *   "description": "The UUID of the lone face of the resulting solid2D."
     * }
     */
    face_id: string;
}
export interface ClosestEdge {
    /**
     * {
     *   "nullable": true,
     *   "format": "uuid",
     *   "description": "The ID of the edge closest to the point given in the request. If there are no edges in the scene, returns None."
     * }
     */
    edge_id?: string;
}
export type CodeLanguage = 'go' | 'python' | 'node';
export type CodeOption = 
/** `CodeOption`

<details><summary>JSON schema</summary>

```json { "type": "string", "enum": [ "parse", "mock_execute", "execute" ] } ``` </details> */
'parse' | 'mock_execute' | 'execute';
export interface CodeOutput {
    /** The contents of the files requested if they were passed. */
    output_files?: OutputFile[];
    /** default:, description:The stderr of the code. */
    stderr?: string;
    /** default:, description:The stdout of the code. */
    stdout?: string;
}
export interface Color {
    /** format:float, description:Alpha */
    a: number;
    /** format:float, description:Blue */
    b: number;
    /** format:float, description:Green */
    g: number;
    /** format:float, description:Red */
    r: number;
}
export type CompanySize = 'one_to_ten' | 'eleven_to_fifty' | 'fifty_one_to_two_hundred' | 'two_hundred_one_to_five_hundred' | 'five_hundred_one_to_one_thousand' | 'one_thousand_plus' | 'other';
export interface ComplementaryEdges {
    /**
     * {
     *   "format": "uuid"
     * }
     */
    adjacent_ids: string[];
    /**
     * {
     *   "nullable": true,
     *   "format": "uuid",
     *   "description": "The opposite edge has no common vertices with the original edge. A wall may not have an opposite edge (i.e. a revolve that touches the axis of rotation)."
     * }
     */
    opposite_id?: string;
}
export interface ComponentTransform {
    /**
     * {
     *   "nullable": true,
     *   "description": "Rotate component of the transform. The rotation is specified as an axis and an angle (xyz are the components of the axis, w is the angle in degrees)."
     * }
     */
    rotate_angle_axis?: TransformByForPoint4d;
    /**
     * {
     *   "nullable": true,
     *   "description": "Rotate component of the transform. The rotation is specified as a roll, pitch, yaw."
     * }
     */
    rotate_rpy?: TransformByForPoint3d;
    /** nullable:true, description:Scale component of the transform. */
    scale?: TransformByForPoint3d;
    /** nullable:true, description:Translate component of the transform. */
    translate?: TransformByForPoint3d;
}
export interface Conversation {
    /** title:DateTime, format:date-time, description:The date and time the conversation was created. */
    created_at: string;
    /** The prompt that started this conversation. */
    first_prompt: string;
    /** The unique identifier for the conversation. */
    id: Uuid;
    /**
     * {
     *   "title": "DateTime",
     *   "format": "date-time",
     *   "description": "The date and time the conversation was last updated."
     * }
     */
    updated_at: string;
    /** The user ID of the user who created the conversation. */
    user_id: Uuid;
}
export interface ConversationResultsPage {
    /** list of items on this page of results */
    items: Conversation[];
    /**
     * {
     *   "nullable": true,
     *   "description": "token used to fetch the next page of results (if any)"
     * }
     */
    next_page?: string;
}
export interface ConversionParams {
    /** Describes the output file(s). */
    output_format: OutputFormat3d;
    /** Describes the input file(s). */
    src_format: InputFormat3d;
}
export type ConversionSortMode = 'created_at_ascending' | 'created_at_descending' | 'status_ascending' | 'status_descending' | 'updated_at_ascending' | 'updated_at_descending';
export type CountryCode = 
/** An ISO-3166 alpha-2 country code. Always uppercase. */
string;
export interface Coupon {
    /**
     * {
     *   "nullable": true,
     *   "title": "double",
     *   "format": "money-usd",
     *   "description": "Amount (in the `currency` specified) that will be taken off the subtotal of any invoices for this customer."
     * }
     */
    amount_off?: number;
    /** Unique identifier for the object. */
    id?: string;
    metadata?: {
        [key: string]: string;
    };
    /**
     * {
     *   "nullable": true,
     *   "description": "Name of the coupon displayed to customers on, for instance invoices, or receipts.\n\nBy default the `id` is shown if `name` is not set."
     * }
     */
    name?: string;
    /**
     * {
     *   "nullable": true,
     *   "format": "double",
     *   "description": "Percent that will be taken off the subtotal of any invoices for this customer for the duration of the coupon.\n\nFor example, a coupon with percent_off of 50 will make a %s100 invoice %s50 instead."
     * }
     */
    percent_off?: number;
}
export interface CreateCustomModel {
    /** Org dataset IDs that should be linked to the model. Must contain at least one dataset owned by the org. */
    dataset_ids: Uuid[];
    /** The model's display name. */
    name: string;
    /** nullable:true, description:The model's system prompt. */
    system_prompt?: string;
}
export interface CreateOAuth2AppRequest {
    /** The OAuth grant types this app can use. */
    grant_types?: OAuth2AppGrantType[];
    /** nullable:true, description:The deployment mode for this app. */
    mode?: OAuth2AppMode;
    /** The display name of the app. */
    name: string;
    /**
     * {
     *   "format": "uri"
     * }
     */
    redirect_uris?: string[];
}
export interface CreateOrgDataset {
    /** nullable:true, description:Optional human-readable notes about the dataset. */
    description?: string;
    /** The dataset's display name. */
    name: string;
    /**
     * {
     *   "default": false,
     *   "description": "Whether a low raw-KCL similarity score should block conversion success."
     * }
     */
    require_raw_kcl_similarity_score_for_success?: boolean;
    /** Details for accessing the dataset. */
    source: OrgDatasetSource;
}
export interface CreateProjectShareLinkRequest {
    /** default:anyone_with_link, description:Access policy for the generated share link. */
    access_mode?: KclProjectShareLinkAccessMode;
}
export interface CreateRegion {
    region_mapping: {
        [key: string]: string;
    };
}
export interface CreateRegionFromQueryPoint {
    region_mapping: {
        [key: string]: string;
    };
}
export interface CreateShortlinkRequest {
    /**
     * {
     *   "nullable": true,
     *   "description": "The password for the shortlink, if you want to restrict access to it. This can only be set if your subscription allows for it. Otherwise, it will return an error. When you access the link it will be required to enter this password through basic auth. The username will be `{anything}` and the password will be the password you set here."
     * }
     */
    password?: string;
    /**
     * {
     *   "default": false,
     *   "description": "If the shortlink should be restricted to the user's organization to view. This only applies to org shortlinks. If you are creating a user shortlink and you are not a member of a team or enterprise and you try to set this to true, it will fail."
     * }
     */
    restrict_to_org?: boolean;
    /** format:uri, description:The URL to redirect back to. */
    url: string;
}
export interface CreateShortlinkResponse {
    /** The key for this url. This is what you use to update or delete the specific shortlink. */
    key: string;
    /** format:uri, description:The shortened url. */
    url: string;
}
export type CreatedAtSortMode = 'created_at_ascending' | 'created_at_descending';
export type Currency = 
/** A billing currency code.

This is intentionally billing-owned instead of Stripe-owned, so contract and manual invoice flows can use the same validated type without reaching back into a provider-specific crate. */
string;
export interface CurveGetControlPoints {
    /** Control points in the curve. */
    control_points: Point3d[];
}
export interface CurveGetEndPoints {
    /** End */
    end: Point3d;
    /** Start */
    start: Point3d;
}
export interface CurveGetType {
    /** Curve type */
    curve_type: CurveType;
}
export interface CurveSetConstraint {
}
export type CurveType = 
/** The type of Curve (embedded within path) */
'line' | 'arc' | 'nurbs';
export interface CustomModel {
    /** title:DateTime, format:date-time, description:The date and time the model was created. */
    created_at: string;
    /** The unique identifier for the model. */
    id: Uuid;
    /** User-provided display name. This is mutable; lookup by ID instead. */
    name: string;
    /** The ID of the org owning the model. */
    org_id: Uuid;
    /** User-provided LLM system prompt. This is akin to `AGENTS.md`. */
    system_prompt: string;
    /** title:DateTime, format:date-time, description:The date and time the model was last updated. */
    updated_at: string;
}
export interface Customer {
    /** nullable:true, description:The customer's address. */
    address?: AddressDetails;
    /**
     * {
     *   "title": "double",
     *   "default": 0,
     *   "format": "money-usd",
     *   "description": "Current balance, if any, being stored on the customer in the payments service.\n\nIf negative, the customer has credit to apply to their next invoice. If positive, the customer has an amount owed that will be added to their next invoice. The balance does not refer to any unpaid invoices; it solely takes into account amounts that have yet to be successfully applied to any invoice. This balance is only taken into account as invoices are finalized."
     * }
     */
    balance?: number;
    /** format:date-time, description:Time at which the object was created. */
    created_at: string;
    /**
     * {
     *   "default": "USD",
     *   "description": "Three-letter ISO code for the currency the customer can be charged in for recurring billing purposes."
     * }
     */
    currency?: Currency;
    /**
     * {
     *   "default": false,
     *   "description": "When the customer's latest invoice is billed by charging automatically, `delinquent` is `true` if the invoice's latest charge failed.\n\nWhen the customer's latest invoice is billed by sending an invoice, `delinquent` is `true` if the invoice isn't paid by its due date.  If an invoice is marked uncollectible by dunning, `delinquent` doesn't get reset to `false`."
     * }
     */
    delinquent?: boolean;
    /** format:email, description:The customer's email address. */
    email?: string;
    /** Unique identifier for the object. */
    id?: string;
    metadata?: {
        [key: string]: string;
    };
    /** The customer's full name or business name. */
    name?: string;
    /**
     * {
     *   "title": "String",
     *   "default": "",
     *   "format": "phone",
     *   "description": "The customer's phone number."
     * }
     */
    phone?: string;
}
export interface CustomerBalance {
    /** title:DateTime, format:date-time, description:The date and time the balance was created. */
    created_at: string;
    /**
     * {
     *   "format": "uint64",
     *   "minimum": 0,
     *   "description": "The number of monthly API credits remaining in the balance. This is the number of credits remaining in the balance.\n\nBoth the monetary value and the number of credits are returned, but they reflect the same value in the database."
     * }
     */
    monthly_api_credits_remaining: number;
    /**
     * {
     *   "title": "double",
     *   "format": "money-usd",
     *   "description": "The monetary value of the monthly API credits remaining in the balance. This gets re-upped every month, but if the credits are not used for a month they do not carry over to the next month.\n\nBoth the monetary value and the number of credits are returned, but they reflect the same value in the database."
     * }
     */
    monthly_api_credits_remaining_monetary_value: number;
    /**
     * {
     *   "format": "uint64",
     *   "minimum": 0,
     *   "description": "The number of stable API credits remaining in the balance. These do not get reset or re-upped every month. This is separate from the monthly credits. Credits will first pull from the monthly credits, then the stable credits. Stable just means that they do not get reset every month. A user will have stable credits if a Zoo employee granted them credits.\n\nBoth the monetary value and the number of credits are returned, but they reflect the same value in the database."
     * }
     */
    stable_api_credits_remaining: number;
    /**
     * {
     *   "title": "double",
     *   "format": "money-usd",
     *   "description": "The monetary value of stable API credits remaining in the balance. These do not get reset or re-upped every month. This is separate from the monthly credits. Credits will first pull from the monthly credits, then the stable credits. Stable just means that they do not get reset every month. A user will have stable credits if a Zoo employee granted them credits.\n\nBoth the monetary value and the number of credits are returned, but they reflect the same value in the database."
     * }
     */
    stable_api_credits_remaining_monetary_value: number;
    /** nullable:true, description:Details about the subscription. */
    subscription_details?: ZooProductSubscriptions;
    /** nullable:true, description:The subscription ID for the user. */
    subscription_id?: string;
    /**
     * {
     *   "nullable": true,
     *   "title": "double",
     *   "format": "money-usd",
     *   "description": "This includes any outstanding, draft, or open invoices and any pending invoice items. This does not include any credits the customer has on their account. This amount is only returned if requested from the api."
     * }
     */
    total_due?: number;
    /** title:DateTime, format:date-time, description:The date and time the balance was last updated. */
    updated_at: string;
}
export type CutStrategy = 'basic' | 'csg' | 'automatic';
export type CutType = 'fillet' | 'chamfer';
export type CutTypeV2 = {
    fillet: {
        /** The radius of the fillet. */
        radius: LengthUnit;
        /**
         * {
         *   "nullable": true,
         *   "description": "The second length affects the edge length of the second face of the cut. This will cause the fillet to take on the shape of a conic section, instead of an arc."
         * }
         */
        second_length?: LengthUnit;
    };
} | {
    chamfer: {
        /** nullable:true, description:The angle of the chamfer, default is 45deg. */
        angle?: Angle;
        /** The distance from the edge to cut on each face. */
        distance: LengthUnit;
        /**
         * {
         *   "nullable": true,
         *   "description": "The second distance affects the edge length of the second face of the cut."
         * }
         */
        second_distance?: LengthUnit;
        /** If true, the second distance or angle is applied to the other face of the cut. */
        swap: boolean;
    };
} | {
    custom: {
        /**
         * {
         *   "format": "uuid",
         *   "description": "The path that will be used for the custom profile."
         * }
         */
        path: string;
    };
};
export interface DatasetS3Policies {
    bucket_policy: string;
    permission_policy: string;
    trust_policy: string;
}
export interface DefaultCameraCenterToScene {
}
export interface DefaultCameraCenterToSelection {
}
export interface DefaultCameraFocusOn {
}
export interface DefaultCameraGetSettings {
    /** Camera settings */
    settings: CameraSettings;
}
export interface DefaultCameraGetView {
    /** Camera view state */
    view: CameraViewState;
}
export interface DefaultCameraLookAt {
}
export interface DefaultCameraPerspectiveSettings {
}
export interface DefaultCameraSetOrthographic {
}
export interface DefaultCameraSetPerspective {
}
export interface DefaultCameraSetView {
}
export interface DefaultCameraZoom {
    /** Camera settings */
    settings: CameraSettings;
}
export interface Density {
    /** format:double, description:The density. */
    density: number;
    /** The output unit for the density. */
    output_unit: UnitDensity;
}
export interface DerEncodedKeyPair {
    /** title:String, format:byte, description:The request signing private key (pem file). */
    private_key: string;
    /**
     * {
     *   "title": "String",
     *   "format": "byte",
     *   "description": "The request signing public certificate (pem file)."
     * }
     */
    public_cert: string;
}
export interface DeviceAccessTokenRequestForm {
    /** format:uuid, description:The client ID. */
    client_id: string;
    /** format:uuid, description:The device code. */
    device_code: string;
    /** The grant type. */
    grant_type: OAuth2GrantType;
}
export interface DeviceAuthConfirmParams {
    /** The user code. */
    user_code: string;
}
export interface DeviceAuthRequestForm {
    /** format:uuid, description:The client ID. */
    client_id: string;
}
export type Direction = 'positive' | 'negative';
export interface DisableDryRun {
}
export interface Discount {
    /** The coupon that applied to create this discount. */
    coupon: Coupon;
}
export interface DiscountCode {
    /** The code for the discount. */
    code: string;
    /** nullable:true, format:date-time, description:The date the discount code expires. */
    expires_at?: string;
    /** format:uint32, minimum:0, description:The percent off for the discount. */
    percent_off: number;
}
export type DistanceType = {
    type: 'euclidean';
} | {
    /** Global axis */
    axis: GlobalAxis;
    type: 'on_axis';
};
export type DxfStorage = 'ascii' | 'binary';
export interface EdgeInfo {
    /** format:uuid, description:The UUID of the id. */
    edge_id: string;
    /**
     * {
     *   "format": "uuid"
     * }
     */
    faces: string[];
}
export interface EdgeLinesVisible {
}
export interface EdgeSpecifier {
    /**
     * {
     *   "format": "uuid"
     * }
     */
    end_faces?: string[];
    /**
     * {
     *   "nullable": true,
     *   "format": "uint32",
     *   "minimum": 0,
     *   "description": "Optional index for disambiguation when multiple edges share the same faces. If not provided (None), all matching edges will be used. If provided (Some(n)), only the edge at index n will be used."
     * }
     */
    index?: number;
    /**
     * {
     *   "format": "uuid"
     * }
     */
    side_faces: string[];
}
export interface EmailAuthenticationForm {
    /**
     * {
     *   "nullable": true,
     *   "format": "uri",
     *   "description": "The URL to redirect back to after we have authenticated."
     * }
     */
    callback_url?: string;
    /** format:email, description:The user's email. */
    email: string;
}
export interface EmailMarketingConfirmTokenBody {
    /** The token id from the confirmation email. */
    token: string;
}
export interface EmailMarketingConsentState {
    /**
     * {
     *   "nullable": true,
     *   "title": "DateTime",
     *   "format": "date-time",
     *   "description": "Time the double opt-in confirmation completed."
     * }
     */
    confirmed_at?: string;
    /** Whether the user is currently subscribed to marketing email. */
    is_subscribed: boolean;
    /**
     * {
     *   "nullable": true,
     *   "title": "DateTime",
     *   "format": "date-time",
     *   "description": "First time the in-app prompt was seen."
     * }
     */
    prompt_seen_at?: string;
    /**
     * {
     *   "nullable": true,
     *   "title": "DateTime",
     *   "format": "date-time",
     *   "description": "Time the latest opt-in request email was sent."
     * }
     */
    requested_at?: string;
    /** Whether the website should show the modal for this user. */
    should_show_prompt: boolean;
    /** Current consent state. */
    status: EmailMarketingConsentStatus;
}
export type EmailMarketingConsentStatus = 'unknown' | 'dismissed' | 'pending' | 'confirmed' | 'unsubscribed' | 'declined';
export interface EnableDryRun {
}
export interface EnableSketchMode {
}
export interface EngineUtilEvaluatePath {
    /** The evaluated path curve position */
    pos: Point3d;
}
export interface EntityCircularPattern {
    /** The Face, edge, and entity ids of the patterned entities. */
    entity_face_edge_ids?: FaceEdgeInfo[];
}
export interface EntityClone {
    /** The Face and Edge Ids of the cloned entity. */
    face_edge_ids?: FaceEdgeInfo[];
}
export interface EntityDeleteChildren {
}
export interface EntityFade {
}
export interface EntityGetAllChildUuids {
    /**
     * {
     *   "format": "uuid"
     * }
     */
    entity_ids: string[];
}
export interface EntityGetChildUuid {
    /** format:uuid, description:The UUID of the child entity. */
    entity_id: string;
}
export interface EntityGetDistance {
    /** The maximum distance between the input entities. */
    max_distance: LengthUnit;
    /** The minimum distance between the input entities. */
    min_distance: LengthUnit;
}
export interface EntityGetIndex {
    /** format:uint32, minimum:0, description:The child index of the entity. */
    entity_index: number;
}
export interface EntityGetNumChildren {
    /** format:uint32, minimum:0, description:The number of children the entity has. */
    num: number;
}
export interface EntityGetParentId {
    /** format:uuid, description:The UUID of the parent entity. */
    entity_id: string;
}
export interface EntityGetPrimitiveIndex {
    /** The type of this entity.  Helps infer whether this is an edge or a face index. */
    entity_type: EntityType;
    /** format:uint32, minimum:0, description:The primitive index of the entity. */
    primitive_index: number;
}
export interface EntityGetSketchPaths {
    /**
     * {
     *   "format": "uuid"
     * }
     */
    entity_ids: string[];
}
export interface EntityLinearPattern {
    /** The Face, edge, and entity ids of the patterned entities. */
    entity_face_edge_ids?: FaceEdgeInfo[];
}
export interface EntityLinearPatternTransform {
    /** The Face, edge, and entity ids of the patterned entities. */
    entity_face_edge_ids?: FaceEdgeInfo[];
}
export interface EntityMakeHelix {
}
export interface EntityMakeHelixFromEdge {
}
export interface EntityMakeHelixFromParams {
}
export interface EntityMirror {
    /** The Face, edge, and entity ids of the patterned entities. */
    entity_face_edge_ids?: FaceEdgeInfo[];
}
export interface EntityMirrorAcross {
    /** The Face, edge, and entity ids of the patterned entities. */
    entity_face_edge_ids?: FaceEdgeInfo[];
}
export interface EntityMirrorAcrossEdge {
    /** The Face, edge, and entity ids of the patterned entities. */
    entity_face_edge_ids?: FaceEdgeInfo[];
}
export type EntityReference = {
    /** format:uuid, description:Id of the plane being referenced. */
    plane_id: string;
    /**
     * {
     *   "nullable": true,
     *   "description": "Optional primitive topology on a parent (not used for planes today)."
     * }
     */
    topology_fallback?: PrimitiveTopologyFallback;
    type: 'plane';
} | {
    /** format:uuid, description:Id of the face being referenced. */
    face_id: string;
    /**
     * {
     *   "nullable": true,
     *   "description": "Fallback: solid3d UUID + face index on that body when `face_id` cannot be resolved client-side."
     * }
     */
    topology_fallback?: PrimitiveTopologyFallback;
    type: 'face';
} | {
    /**
     * {
     *   "format": "uuid"
     * }
     */
    end_faces?: string[];
    /**
     * {
     *   "nullable": true,
     *   "format": "uint32",
     *   "minimum": 0,
     *   "description": "Optional index for disambiguation when multiple edges share the same faces. If not provided (None), all matching edges will be used. If provided (Some(n)), only the edge at index n will be used."
     * }
     */
    index?: number;
    /**
     * {
     *   "format": "uuid"
     * }
     */
    side_faces: string[];
    /**
     * {
     *   "nullable": true,
     *   "description": "Fallback: solid3d UUID + edge index on that body for 3D BREP edges (distinct from `inner.index`)."
     * }
     */
    topology_fallback?: PrimitiveTopologyFallback;
    type: 'edge';
} | {
    /**
     * {
     *   "nullable": true,
     *   "format": "uint32",
     *   "minimum": 0,
     *   "description": "Optional index among the filtered candidates."
     * }
     */
    index?: number;
    /**
     * {
     *   "format": "uuid"
     * }
     */
    side_faces: string[];
    /**
     * {
     *   "nullable": true,
     *   "description": "Fallback: solid3d UUID + vertex index on that body."
     * }
     */
    topology_fallback?: PrimitiveTopologyFallback;
    type: 'vertex';
} | {
    /** format:uuid, description:Id of the solid2d being referenced. */
    solid2d_id: string;
    /**
     * {
     *   "nullable": true,
     *   "description": "Typically omitted: `solid2d_id` is already the owning profile. Present for schema parity with other variants."
     * }
     */
    topology_fallback?: PrimitiveTopologyFallback;
    type: 'solid2d';
} | {
    /** format:uuid, description:Id of the solid3d being referenced. */
    solid3d_id: string;
    /**
     * {
     *   "nullable": true,
     *   "description": "Typically omitted: `solid3d_id` is already the owning body. Present for schema parity with other variants."
     * }
     */
    topology_fallback?: PrimitiveTopologyFallback;
    type: 'solid3d';
} | {
    /** format:uuid, description:Id of the edge being referenced. */
    edge_id: string;
    /**
     * {
     *   "nullable": true,
     *   "description": "Fallback: solid2d UUID + curve index in that profile."
     * }
     */
    topology_fallback?: PrimitiveTopologyFallback;
    type: 'solid2d_edge';
} | {
    /** format:uuid, description:Id of the path containing the segment. */
    path_id: string;
    /** format:uuid, description:Id of the segment (curve) being referenced. */
    segment_id: string;
    /** nullable:true, description:Fallback: path UUID + segment curve index. */
    topology_fallback?: PrimitiveTopologyFallback;
    type: 'segment';
} | {
    /** format:uuid, description:Id of the region being referenced. */
    region_id: string;
    /** nullable:true, description:Fallback: path UUID + region index on that path. */
    topology_fallback?: PrimitiveTopologyFallback;
    type: 'region';
};
export interface EntitySetOpacity {
}
export type EntityType = 
/** The type of entity */
'entity' | 'object' | 'path' | 'segment' | 'curve' | 'solid2d' | 'solid3d' | 'edge' | 'face' | 'plane' | 'vertex' | 'region';
export interface Error {
    error_code?: string;
    message: string;
    request_id: string;
}
export type ErrorCode = 'internal_engine' | 'internal_api' | 'bad_request' | 'auth_token_missing' | 'auth_token_invalid' | 'invalid_json' | 'invalid_bson' | 'wrong_protocol' | 'connection_problem' | 'message_type_not_accepted' | 'message_type_not_accepted_for_web_r_t_c';
export interface Export {
    /** The files that were exported. */
    files: ExportFile[];
}
export interface Export2d {
    /** The files that were exported. */
    files: ExportFile[];
}
export interface Export3d {
    /** The files that were exported. */
    files: ExportFile[];
}
export interface ExportFile {
    /** title:String, format:byte, description:The contents of the file, base64 encoded. */
    contents: string;
    /** The name of the file. */
    name: string;
}
export interface ExtendPath {
}
export interface ExtendedUser {
    /** nullable:true, description:If the user should be blocked and the reason why. */
    block?: BlockReason;
    /**
     * {
     *   "default": false,
     *   "description": "If we can train on the user's data. If the user is a member of an organization, the organization's setting will override this."
     * }
     */
    can_train_on_data?: boolean;
    /** The user's company. */
    company?: string;
    /** title:DateTime, format:date-time, description:The date and time the user was created. */
    created_at: string;
    /** default:false, description:If the user is scheduled for deletion */
    deletion_scheduled?: boolean;
    /** The user's Discord handle. */
    discord?: string;
    /** format:email, description:The email address of the user. */
    email?: string;
    /**
     * {
     *   "nullable": true,
     *   "title": "DateTime",
     *   "format": "date-time",
     *   "description": "The date and time the email address was verified."
     * }
     */
    email_verified?: string;
    /** The user's first name. */
    first_name?: string;
    /** The user's GitHub handle. */
    github?: string;
    /** The unique identifier for the user. */
    id: Uuid;
    /** title:String, format:uri, description:The image avatar for the user. This is a URL. */
    image: string;
    /** default:false, description:If the user has finished onboarding. */
    is_onboarded?: boolean;
    /** default:false, description:If the user is tied to a service account. */
    is_service_account?: boolean;
    /** The user's last name. */
    last_name?: string;
    /** The name of the user. This is auto populated at first from the authentication provider (if there was a name). It can be updated by the user by updating their `first_name` and `last_name` fields. */
    name?: string;
    /**
     * {
     *   "title": "String",
     *   "default": "",
     *   "format": "phone",
     *   "description": "The user's phone number."
     * }
     */
    phone?: string;
    /**
     * {
     *   "nullable": true,
     *   "description": "The user's Stripe ID. This is mostly used for internal mapping."
     * }
     */
    stripe_id?: string;
    /** title:DateTime, format:date-time, description:The date and time the user was last updated. */
    updated_at: string;
    /**
     * {
     *   "default": "",
     *   "description": "Public username/handle for community-facing features."
     * }
     */
    username?: string;
}
export interface Extrude {
    /** Any new bodies created by the request. */
    bodies_created?: BodiesCreated;
    /** Any existing bodies updated by the request. */
    bodies_updated?: BodiesUpdated;
}
export type ExtrudeMethod = 'new' | 'merge';
export type ExtrudeReference = {
    entity_reference: {
        /**
         * {
         *   "nullable": true,
         *   "format": "uuid",
         *   "description": "Legacy UUID of the entity to extrude to. If both `entity_id` and `entity_reference` are provided, `entity_reference` takes precedence."
         * }
         */
        entity_id?: string;
        /**
         * {
         *   "nullable": true,
         *   "description": "Entity reference (e.g. edge by side_faces). If both `entity_id` and `entity_reference` are provided, `entity_reference` takes precedence."
         * }
         */
        entity_reference?: EntityReference;
    };
} | {
    axis: {
        /** The axis to extrude to. */
        axis: Point3d;
        /**
         * {
         *   "default": {
         *     "x": 0,
         *     "y": 0,
         *     "z": 0
         *   },
         *   "description": "Point the axis goes through. Defaults to (0, 0, 0)."
         * }
         */
        point?: Point3d;
    };
} | {
    point: {
        /** The point to extrude to. */
        point: Point3d;
    };
};
export interface ExtrudeToReference {
    /** Any new bodies created by the request. */
    bodies_created?: BodiesCreated;
    /** Any existing bodies updated by the request. */
    bodies_updated?: BodiesUpdated;
}
export interface ExtrudedFaceInfo {
    /**
     * {
     *   "nullable": true,
     *   "format": "uuid",
     *   "description": "The face made from the original 2D shape being extruded. If the solid is extruded from a shape which already has an ID (e.g. extruding something which was sketched on a face), this doesn't need to be sent."
     * }
     */
    bottom?: string;
    /** Any intermediate sides between the top and bottom. */
    sides: SideFace[];
    /**
     * {
     *   "format": "uuid",
     *   "description": "Top face of the extrusion (parallel and further away from the original 2D shape being extruded)."
     * }
     */
    top: string;
}
export type ExtrusionFaceCapType = 'none' | 'top' | 'bottom' | 'both';
export interface ExtrusionFaceInfo {
    /** Whether or not this extrusion face is a top/bottom cap face or not. Note that top/bottom cap faces will not have associated curve IDs. */
    cap: ExtrusionFaceCapType;
    /** nullable:true, format:uuid, description:Path component (curve) UUID. */
    curve_id?: string;
    /** nullable:true, format:uuid, description:Face uuid. */
    face_id?: string;
}
export interface FaceEdgeInfo {
    /**
     * {
     *   "format": "uuid"
     * }
     */
    edges: string[];
    /**
     * {
     *   "format": "uuid"
     * }
     */
    faces: string[];
    /** format:uuid, description:The UUID of the object. */
    object_id: string;
}
export interface FaceGetCenter {
    /** The 3D position on the surface center of mass */
    pos: Point3d;
}
export interface FaceGetGradient {
    /** dFdu */
    df_du: Point3d;
    /** dFdv */
    df_dv: Point3d;
    /** Normal (||dFdu x dFdv||) */
    normal: Point3d;
}
export interface FaceGetPosition {
    /** The 3D position on the surface that was evaluated */
    pos: Point3d;
}
export interface FaceIsPlanar {
    /** nullable:true, description:plane's origin */
    origin?: Point3d;
    /** nullable:true, description:plane's local x-axis */
    x_axis?: Point3d;
    /** nullable:true, description:plane's local y-axis */
    y_axis?: Point3d;
    /** nullable:true, description:plane's local z-axis (normal) */
    z_axis?: Point3d;
}
export interface FailureWebSocketResponse {
    /** The errors that occurred. */
    errors: ApiError[];
    /**
     * {
     *   "nullable": true,
     *   "format": "uuid",
     *   "description": "Which request this is a response to. If the request was a modeling command, this is the modeling command ID. If no request ID was sent, this will be null."
     * }
     */
    request_id?: string;
    /** Always false */
    success: boolean;
}
export type FbxStorage = 'ascii' | 'binary';
export interface FileCenterOfMass {
    /** nullable:true, description:The resulting center of mass. */
    center_of_mass?: Point3d;
    /**
     * {
     *   "nullable": true,
     *   "title": "DateTime",
     *   "format": "date-time",
     *   "description": "The time and date the API call was completed."
     * }
     */
    completed_at?: string;
    /** title:DateTime, format:date-time, description:The time and date the API call was created. */
    created_at: string;
    /** nullable:true, description:The error the function returned, if any. */
    error?: string;
    /** The unique identifier of the API call.
  
  This is the same as the API call ID. */
    id: Uuid;
    /** The output unit for the center of mass. */
    output_unit: UnitLength;
    /** The source format of the file. */
    src_format: FileImportFormat;
    /**
     * {
     *   "nullable": true,
     *   "title": "DateTime",
     *   "format": "date-time",
     *   "description": "The time and date the API call was started."
     * }
     */
    started_at?: string;
    /** The status of the API call. */
    status: ApiCallStatus;
    /** title:DateTime, format:date-time, description:The time and date the API call was last updated. */
    updated_at: string;
    /** The user ID of the user who created the API call. */
    user_id: Uuid;
}
export interface FileConversion {
    /**
     * {
     *   "nullable": true,
     *   "title": "DateTime",
     *   "format": "date-time",
     *   "description": "The time and date the API call was completed."
     * }
     */
    completed_at?: string;
    /** title:DateTime, format:date-time, description:The time and date the API call was created. */
    created_at: string;
    /** nullable:true, description:The error the function returned, if any. */
    error?: string;
    /** The unique identifier of the API call.
  
  This is the same as the API call ID. */
    id: Uuid;
    /** The output format of the file conversion. */
    output_format: FileExportFormat;
    /** nullable:true, description:The output format options of the file conversion. */
    output_format_options?: OutputFormat3d;
    outputs?: {
        [key: string]: string;
    };
    /** The source format of the file conversion. */
    src_format: FileImportFormat;
    /** nullable:true, description:The source format options of the file conversion. */
    src_format_options?: InputFormat3d;
    /**
     * {
     *   "nullable": true,
     *   "title": "DateTime",
     *   "format": "date-time",
     *   "description": "The time and date the API call was started."
     * }
     */
    started_at?: string;
    /** The status of the API call. */
    status: ApiCallStatus;
    /** title:DateTime, format:date-time, description:The time and date the API call was last updated. */
    updated_at: string;
    /** The user ID of the user who created the API call. */
    user_id: Uuid;
}
export interface FileDensity {
    /**
     * {
     *   "nullable": true,
     *   "title": "DateTime",
     *   "format": "date-time",
     *   "description": "The time and date the API call was completed."
     * }
     */
    completed_at?: string;
    /** title:DateTime, format:date-time, description:The time and date the API call was created. */
    created_at: string;
    /** nullable:true, format:double, description:The resulting density. */
    density?: number;
    /** nullable:true, description:The error the function returned, if any. */
    error?: string;
    /** The unique identifier of the API call.
  
  This is the same as the API call ID. */
    id: Uuid;
    /** default:0, format:double, description:The material mass as denoted by the user. */
    material_mass?: number;
    /** The material mass unit. */
    material_mass_unit: UnitMass;
    /** The output unit for the density. */
    output_unit: UnitDensity;
    /** The source format of the file. */
    src_format: FileImportFormat;
    /**
     * {
     *   "nullable": true,
     *   "title": "DateTime",
     *   "format": "date-time",
     *   "description": "The time and date the API call was started."
     * }
     */
    started_at?: string;
    /** The status of the API call. */
    status: ApiCallStatus;
    /** title:DateTime, format:date-time, description:The time and date the API call was last updated. */
    updated_at: string;
    /** The user ID of the user who created the API call. */
    user_id: Uuid;
}
export type FileExportFormat = 'fbx' | 'glb' | 'gltf' | 'obj' | 'ply' | 'step' | 'stl';
export type FileImportFormat = 'fbx' | 'gltf' | 'obj' | 'ply' | 'sldprt' | 'step' | 'stl';
export interface FileMass {
    /**
     * {
     *   "nullable": true,
     *   "title": "DateTime",
     *   "format": "date-time",
     *   "description": "The time and date the API call was completed."
     * }
     */
    completed_at?: string;
    /** title:DateTime, format:date-time, description:The time and date the API call was created. */
    created_at: string;
    /** nullable:true, description:The error the function returned, if any. */
    error?: string;
    /** The unique identifier of the API call.
  
  This is the same as the API call ID. */
    id: Uuid;
    /** nullable:true, format:double, description:The resulting mass. */
    mass?: number;
    /** default:0, format:double, description:The material density as denoted by the user. */
    material_density?: number;
    /** The material density unit. */
    material_density_unit: UnitDensity;
    /** The output unit for the mass. */
    output_unit: UnitMass;
    /** The source format of the file. */
    src_format: FileImportFormat;
    /**
     * {
     *   "nullable": true,
     *   "title": "DateTime",
     *   "format": "date-time",
     *   "description": "The time and date the API call was started."
     * }
     */
    started_at?: string;
    /** The status of the API call. */
    status: ApiCallStatus;
    /** title:DateTime, format:date-time, description:The time and date the API call was last updated. */
    updated_at: string;
    /** The user ID of the user who created the API call. */
    user_id: Uuid;
}
export interface FileSurfaceArea {
    /**
     * {
     *   "nullable": true,
     *   "title": "DateTime",
     *   "format": "date-time",
     *   "description": "The time and date the API call was completed."
     * }
     */
    completed_at?: string;
    /** title:DateTime, format:date-time, description:The time and date the API call was created. */
    created_at: string;
    /** nullable:true, description:The error the function returned, if any. */
    error?: string;
    /** The unique identifier of the API call.
  
  This is the same as the API call ID. */
    id: Uuid;
    /** The output unit for the surface area. */
    output_unit: UnitArea;
    /** The source format of the file. */
    src_format: FileImportFormat;
    /**
     * {
     *   "nullable": true,
     *   "title": "DateTime",
     *   "format": "date-time",
     *   "description": "The time and date the API call was started."
     * }
     */
    started_at?: string;
    /** The status of the API call. */
    status: ApiCallStatus;
    /** nullable:true, format:double, description:The resulting surface area. */
    surface_area?: number;
    /** title:DateTime, format:date-time, description:The time and date the API call was last updated. */
    updated_at: string;
    /** The user ID of the user who created the API call. */
    user_id: Uuid;
}
export interface FileVolume {
    /**
     * {
     *   "nullable": true,
     *   "title": "DateTime",
     *   "format": "date-time",
     *   "description": "The time and date the API call was completed."
     * }
     */
    completed_at?: string;
    /** title:DateTime, format:date-time, description:The time and date the API call was created. */
    created_at: string;
    /** nullable:true, description:The error the function returned, if any. */
    error?: string;
    /** The unique identifier of the API call.
  
  This is the same as the API call ID. */
    id: Uuid;
    /** The output unit for the volume. */
    output_unit: UnitVolume;
    /** The source format of the file. */
    src_format: FileImportFormat;
    /**
     * {
     *   "nullable": true,
     *   "title": "DateTime",
     *   "format": "date-time",
     *   "description": "The time and date the API call was started."
     * }
     */
    started_at?: string;
    /** The status of the API call. */
    status: ApiCallStatus;
    /** title:DateTime, format:date-time, description:The time and date the API call was last updated. */
    updated_at: string;
    /** The user ID of the user who created the API call. */
    user_id: Uuid;
    /** nullable:true, format:double, description:The resulting volume. */
    volume?: number;
}
export interface FractionOfEdge {
    /**
     * {
     *   "nullable": true,
     *   "format": "uuid",
     *   "description": "The id of the edge (legacy). If both `edge_id` and `edge_specifier` are provided, `edge_specifier` takes precedence."
     * }
     */
    edge_id?: string;
    /**
     * {
     *   "nullable": true,
     *   "description": "Edge specifier (side_faces, end_faces, index) identifying the edge. If both `edge_id` and `edge_specifier` are provided, `edge_specifier` takes precedence."
     * }
     */
    edge_specifier?: EdgeSpecifier;
    /**
     * {
     *   "default": 0,
     *   "format": "float",
     *   "minimum": 0,
     *   "maximum": 1,
     *   "description": "A value between [0.0, 1.0] (default 0.0) that is a percentage along the edge. This bound will control how much of the edge is used during the blend. If lower_bound is larger than upper_bound, the edge is effectively \"flipped\"."
     * }
     */
    lower_bound?: number;
    /**
     * {
     *   "default": 1,
     *   "format": "float",
     *   "minimum": 0,
     *   "maximum": 1,
     *   "description": "A value between [0.0, 1.0] (default 1.0) that is a percentage along the edge. This bound will control how much of the edge is used during the blend. If lower_bound is larger than upper_bound, the edge is effectively \"flipped\"."
     * }
     */
    upper_bound?: number;
}
export interface GetEntityType {
    /** The type of the entity. */
    entity_type: EntityType;
}
export interface GetNumObjects {
    /** format:uint32, minimum:0, description:The number of objects in the scene. */
    num_objects: number;
}
export interface GetSketchModePlane {
    /** The origin. */
    origin: Point3d;
    /** The x axis. */
    x_axis: Point3d;
    /** The y axis. */
    y_axis: Point3d;
    /** The z axis (normal). */
    z_axis: Point3d;
}
export type GlobalAxis = 'x' | 'y' | 'z';
export type GltfPresentation = 'compact' | 'pretty';
export type GltfStorage = 'binary' | 'standard' | 'embedded';
export interface HandleMouseDragEnd {
}
export interface HandleMouseDragMove {
}
export interface HandleMouseDragStart {
}
export interface HighlightSetEntities {
}
export interface HighlightSetEntity {
    /** nullable:true, format:uuid, description:The UUID of the entity that was highlighted. */
    entity_id?: string;
    /**
     * {
     *   "nullable": true,
     *   "format": "uint32",
     *   "minimum": 0,
     *   "description": "If the client sent a sequence ID with its request, the backend sends it back."
     * }
     */
    sequence?: number;
}
export interface IceServer {
    /** nullable:true, description:Credentials for a given TURN server. */
    credential?: string;
    urls: string[];
    /** nullable:true, description:Username for a given TURN server. */
    username?: string;
}
export type IdpMetadataSource = {
    type: 'url';
    /**
     * {
     *   "title": "String",
     *   "format": "uri",
     *   "description": "The URL of the identity provider metadata descriptor."
     * }
     */
    url: string;
} | {
    /**
     * {
     *   "title": "String",
     *   "format": "byte",
     *   "description": "The base64 encoded XML document containing the identity provider metadata descriptor."
     * }
     */
    data: string;
    type: 'base64_encoded_xml';
};
export type ImageFormat = 'png' | 'jpeg';
export interface ImportFile {
    /**
     * {
     *   "format": "uint8",
     *   "minimum": 0
     * }
     */
    data: number[];
    /** The file's full path, including file extension. */
    path: string;
}
export interface ImportFiles {
    /** format:uuid, description:ID of the imported 3D models within the scene. */
    object_id: string;
}
export interface ImportedGeometry {
    /** format:uuid, description:ID of the imported 3D models within the scene. */
    id: string;
    value: string[];
}
export type InputFormat3d = {
    type: 'fbx';
} | {
    type: 'gltf';
} | {
    /** Co-ordinate system of input data.

Defaults to the [KittyCAD co-ordinate system].

[KittyCAD co-ordinate system]: ../coord/constant.KITTYCAD.html */
    coords: System;
    type: 'obj';
    /** The units of the input data.

This is very important for correct scaling and when calculating physics properties like mass, etc.

Defaults to millimeters. */
    units: UnitLength;
} | {
    /** Co-ordinate system of input data.

Defaults to the [KittyCAD co-ordinate system].

[KittyCAD co-ordinate system]: ../coord/constant.KITTYCAD.html */
    coords: System;
    type: 'ply';
    /** The units of the input data.

This is very important for correct scaling and when calculating physics properties like mass, etc.

Defaults to millimeters. */
    units: UnitLength;
} | {
    /**
     * {
     *   "default": false,
     *   "description": "Splits all closed faces into two open faces.\n\nDefaults to `false` but is implicitly `true` when importing into the engine."
     * }
     */
    split_closed_faces?: boolean;
    type: 'sldprt';
} | {
    /**
     * {
     *   "default": {
     *     "forward": {
     *       "axis": "y",
     *       "direction": "negative"
     *     },
     *     "up": {
     *       "axis": "z",
     *       "direction": "positive"
     *     }
     *   },
     *   "description": "Co-ordinate system of input data.\n\nDefaults to the [KittyCAD co-ordinate system].\n\n[KittyCAD co-ordinate system]: ../coord/constant.KITTYCAD.html"
     * }
     */
    coords?: System;
    /**
     * {
     *   "default": false,
     *   "description": "Splits all closed faces into two open faces.\n\nDefaults to `false` but is implicitly `true` when importing into the engine."
     * }
     */
    split_closed_faces?: boolean;
    type: 'step';
} | {
    /** Co-ordinate system of input data.

Defaults to the [KittyCAD co-ordinate system].

[KittyCAD co-ordinate system]: ../coord/constant.KITTYCAD.html */
    coords: System;
    type: 'stl';
    /** The units of the input data.

This is very important for correct scaling and when calculating physics properties like mass, etc.

Defaults to millimeters. */
    units: UnitLength;
};
export interface Invoice {
    /**
     * {
     *   "title": "double",
     *   "default": 0,
     *   "format": "money-usd",
     *   "description": "Final amount due at this time for this invoice.\n\nIf the invoice's total is smaller than the minimum charge amount, for example, or if there is account credit that can be applied to the invoice, the `amount_due` may be 0. If there is a positive `starting_balance` for the invoice (the customer owes money), the `amount_due` will also take that into account. The charge that gets generated for the invoice will be for the amount specified in `amount_due`."
     * }
     */
    amount_due?: number;
    /**
     * {
     *   "title": "double",
     *   "default": 0,
     *   "format": "money-usd",
     *   "description": "The amount, in USD, that was paid."
     * }
     */
    amount_paid?: number;
    /**
     * {
     *   "title": "double",
     *   "default": 0,
     *   "format": "money-usd",
     *   "description": "Total amount refunded across all captured charges linked to this invoice."
     * }
     */
    amount_refunded?: number;
    /**
     * {
     *   "title": "double",
     *   "default": 0,
     *   "format": "money-usd",
     *   "description": "The amount remaining, in USD, that is due."
     * }
     */
    amount_remaining?: number;
    /**
     * {
     *   "default": 0,
     *   "format": "uint64",
     *   "minimum": 0,
     *   "description": "Number of payment attempts made for this invoice, from the perspective of the payment retry schedule.\n\nAny payment attempt counts as the first attempt, and subsequently only automatic retries increment the attempt count. In other words, manual payment attempts after the first attempt do not affect the retry schedule."
     * }
     */
    attempt_count?: number;
    /**
     * {
     *   "default": false,
     *   "description": "Whether an attempt has been made to pay the invoice.\n\nAn invoice is not attempted until 1 hour after the `invoice.created` webhook, for example, so you might not want to display that invoice as unpaid to your users."
     * }
     */
    attempted?: boolean;
    /**
     * {
     *   "nullable": true,
     *   "description": "Why this invoice was created (e.g. `subscription_cycle`)."
     * }
     */
    billing_reason?: string;
    /** nullable:true, description:Invoice collection method as returned by Stripe. */
    collection_method?: string;
    /** format:date-time, description:Time at which the object was created. */
    created_at: string;
    /**
     * {
     *   "default": "USD",
     *   "description": "Three-letter [ISO currency code](https://www.iso.org/iso-4217-currency-codes.html)."
     * }
     */
    currency?: Currency;
    /**
     * {
     *   "format": "email",
     *   "description": "The email address for the customer. Until the invoice is finalized, this field will equal customer.email. Once the invoice is finalized, this field will no longer be updated."
     * }
     */
    customer_email?: string;
    /** Customer ID. The unique identifier for the customer this invoice belongs to. This is the customer ID in the payments service, not our database customer ID. */
    customer_id?: string;
    /** Default payment method. */
    default_payment_method?: string;
    /** Description of the invoice. */
    description?: string;
    /** The discounts applied to the invoice. This is an array of discount objects. */
    discounts?: Discount[];
    /** Unique identifier for the object. */
    id?: string;
    /** The individual line items that make up the invoice.
  
  `lines` is sorted as follows: invoice items in reverse chronological order, followed by the subscription, if any. */
    lines?: InvoiceLineItem[];
    metadata?: {
        [key: string]: string;
    };
    /** A unique, identifying string that appears on emails sent to the customer for this invoice. */
    number?: string;
    /**
     * {
     *   "default": false,
     *   "description": "Whether payment was successfully collected for this invoice.\n\nAn invoice can be paid (most commonly) with a charge or with credit from the customer's account balance."
     * }
     */
    paid?: boolean;
    /** nullable:true, format:uri, description:The link to download the PDF for the invoice. */
    pdf?: string;
    /** This is the transaction number that appears on email receipts sent for this invoice. */
    receipt_number?: string;
    /**
     * {
     *   "nullable": true,
     *   "description": "Refund summary for the invoice's payments, when any refunds have posted."
     * }
     */
    refund_status?: InvoiceRefundStatus;
    /** Extra information about an invoice for the customer's credit card statement. */
    statement_descriptor?: string;
    /**
     * {
     *   "nullable": true,
     *   "description": "The status of the invoice, one of `draft`, `open`, `paid`, `uncollectible`, or `void`."
     * }
     */
    status?: InvoiceStatus;
    /**
     * {
     *   "nullable": true,
     *   "description": "Subscription ID tied to this invoice, when available."
     * }
     */
    subscription_id?: string;
    /**
     * {
     *   "title": "double",
     *   "default": 0,
     *   "format": "money-usd",
     *   "description": "Total of all subscriptions, invoice items, and prorations on the invoice before any invoice level discount or tax is applied.\n\nItem discounts are already incorporated."
     * }
     */
    subtotal?: number;
    /**
     * {
     *   "title": "double",
     *   "default": 0,
     *   "format": "money-usd",
     *   "description": "The amount of tax on this invoice.\n\nThis is the sum of all the tax amounts on this invoice."
     * }
     */
    tax?: number;
    /**
     * {
     *   "title": "double",
     *   "default": 0,
     *   "format": "money-usd",
     *   "description": "Total after discounts and taxes."
     * }
     */
    total?: number;
    /**
     * {
     *   "nullable": true,
     *   "format": "uri",
     *   "description": "The URL for the hosted invoice page, which allows customers to view and pay an invoice."
     * }
     */
    url?: string;
}
export interface InvoiceLineItem {
    /**
     * {
     *   "title": "double",
     *   "default": 0,
     *   "format": "money-usd",
     *   "description": "The amount, in USD."
     * }
     */
    amount?: number;
    /**
     * {
     *   "default": "USD",
     *   "description": "Three-letter [ISO currency code](https://www.iso.org/iso-4217-currency-codes.html)."
     * }
     */
    currency?: Currency;
    /** The description. */
    description?: string;
    /** Unique identifier for the object. */
    id?: string;
    /** The ID of the invoice item associated with this line item if any. */
    invoice_item?: string;
    metadata?: {
        [key: string]: string;
    };
}
export type InvoiceRefundStatus = 'partially_refunded' | 'refunded';
export interface InvoiceResultsPage {
    /** list of items on this page of results */
    items: Invoice[];
    /**
     * {
     *   "nullable": true,
     *   "description": "token used to fetch the next page of results (if any)"
     * }
     */
    next_page?: string;
}
export type InvoiceStatus = 'draft' | 'open' | 'paid' | 'uncollectible' | 'void' | 'unknown';
export interface IpAddrInfo {
    /** nullable:true, format:int64, description:Autonomous System Number. */
    asn?: number;
    /** nullable:true, description:City name. */
    city?: string;
    /** nullable:true, description:Continent code (e.g., \EU\ for Europe). */
    continent_code?: string;
    /** nullable:true, description:Country name. */
    country?: string;
    /**
     * {
     *   "nullable": true,
     *   "description": "Two-letter country code (e.g., \"NL\" for Netherlands)."
     * }
     */
    country_code?: CountryCode;
    /**
     * {
     *   "nullable": true,
     *   "description": "Three-letter country code (e.g., \"NLD\" for Netherlands)."
     * }
     */
    country_code3?: string;
    /** title:String, format:ip, description:IP address of the user. */
    ip?: string;
    /**
     * {
     *   "nullable": true,
     *   "description": "Flag indicating whether the country is in the European Union."
     * }
     */
    is_in_european_union?: boolean;
    /** nullable:true, format:double, description:Geographic latitude. */
    latitude?: number;
    /** nullable:true, format:double, description:Geographic longitude. */
    longitude?: number;
    /** nullable:true, format:int64, description:Time offset in seconds from UTC. */
    offset?: number;
    /** nullable:true, description:Organization name (e.g., \RIPE NCC\). */
    organization?: string;
    /** nullable:true, description:Postal code. */
    postal_code?: string;
    /** nullable:true, description:Name of the region (e.g., \North Holland\). */
    region?: string;
    /** nullable:true, description:Region code (e.g., \NH\ for North Holland). */
    region_code?: string;
    /** nullable:true, description:Timezone (e.g., \Europe/Amsterdam\). */
    timezone?: string;
}
export interface KclCodeCompletionParams {
    /** default:, description:The language of the code. */
    language?: string;
    /**
     * {
     *   "nullable": true,
     *   "format": "uint8",
     *   "minimum": 0,
     *   "description": "The next indent of the code."
     * }
     */
    next_indent?: number;
    /**
     * {
     *   "nullable": true,
     *   "format": "uint32",
     *   "minimum": 0,
     *   "description": "The prompt tokens for the completions."
     * }
     */
    prompt_tokens?: number;
    /**
     * {
     *   "nullable": true,
     *   "format": "uint32",
     *   "minimum": 0,
     *   "description": "The suffix tokens for the completions."
     * }
     */
    suffix_tokens?: number;
    /** default:false, description:If we should trim by indentation. */
    trim_by_indentation?: boolean;
}
export interface KclCodeCompletionRequest {
    /** default:{language:, trim_by_indentation:false}, description:Extra parameters for the completions. */
    extra?: KclCodeCompletionParams;
    /**
     * {
     *   "nullable": true,
     *   "format": "uint16",
     *   "minimum": 0,
     *   "description": "The maximum number of tokens that can be generated for the completions. The total length of input tokens and generated tokens is limited by the model’s context length."
     * }
     */
    max_tokens?: number;
    /**
     * {
     *   "nullable": true,
     *   "description": "Zoo provided model, or custom model which should be used to process this request."
     * }
     */
    model_version?: string;
    /**
     * {
     *   "nullable": true,
     *   "format": "uint8",
     *   "minimum": 0,
     *   "description": "How many completion choices to generate for each input message."
     * }
     */
    n?: number;
    /**
     * {
     *   "nullable": true,
     *   "description": "For GitHub copilot this is the `{org}/{repo}`. This does not do anything yet. But we wanted the same API as GitHub Copilot. It might be used in the future."
     * }
     */
    nwo?: string;
    /** default:, description:The prompt for the desired part. */
    prompt?: string;
    stop?: string[];
    /**
     * {
     *   "default": false,
     *   "description": "If set, partial message deltas will be sent, like in ChatGPT or OpenAPI. Tokens will be sent as data-only server-sent events as they become available, with the stream terminated by a data: [DONE] message."
     * }
     */
    stream?: boolean;
    /** default:, description:The suffix for the desired part. */
    suffix?: string;
    /** nullable:true, format:float, description:The temperature for the model. */
    temperature?: number;
    /** nullable:true, format:float, description:The top p for the model. */
    top_p?: number;
}
export interface KclCodeCompletionResponse {
    completions: string[];
}
export interface KclModel {
    /** The KCL code. */
    code: string;
}
export type KclProjectFileRole = 'project_toml' | 'project_file' | 'preview_image';
export type KclProjectPreviewStatus = 'pending' | 'ready' | 'failed';
export type KclProjectPublicationStatus = 'private' | 'draft' | 'pending_review' | 'published' | 'rejected' | 'deleted';
export type KclProjectShareLinkAccessMode = 'anyone_with_link' | 'organization_only';
export type LengthUnit = number;
export type LenientUrl = 
/**
 * {
 *   "nullable": true,
 *   "format": "uri"
 * }
 */
string;
export interface Loft {
    /** format:uuid, description:The UUID of the newly created solid loft. */
    solid_id: string;
}
export interface MakeAxesGizmo {
}
export interface MakeOffsetPath {
    /**
     * {
     *   "format": "uuid"
     * }
     */
    entity_ids: string[];
}
export interface MakePlane {
}
export interface Mass {
    /** format:double, description:The mass. */
    mass: number;
    /** The output unit for the mass. */
    output_unit: UnitMass;
}
export type MbdSymbol = 
/** MBD symbol type */
'none' | 'arclength' | 'between' | 'degrees' | 'plusminus' | 'angularity' | 'cylindricity' | 'roundness' | 'concentricity' | 'straightness' | 'parallelism' | 'flatness' | 'profileofline' | 'surfaceprofile' | 'symmetry' | 'perpendicularity' | 'runout' | 'totalrunout' | 'position' | 'centerline' | 'partingline' | 'isoenvelope' | 'isoenvelopenony145m' | 'freestate' | 'statisticaltolerance' | 'continuousfeature' | 'independency' | 'depth' | 'start' | 'leastcondition' | 'maxcondition' | 'conicaltaper' | 'projected' | 'slope' | 'micro' | 'tangentplane' | 'unilateral' | 'squarefeature' | 'countersink' | 'spotface' | 'target' | 'diameter' | 'radius' | 'sphericalradius' | 'sphericaldiameter' | 'controlledradius' | 'boxstart' | 'boxbar' | 'boxbarbetween' | 'letterbackwardunderline' | 'punctuationbackwardunderline' | 'modifierbackwardunderline' | 'numericbackwardunderline' | 'boxend' | 'datumup' | 'datumleft' | 'datumright' | 'datumdown' | 'datumtriangle' | 'halfspace' | 'quarterspace' | 'eighthspace' | 'modifierspace';
export type Method = 'OPTIONS' | 'GET' | 'POST' | 'PUT' | 'DELETE' | 'HEAD' | 'TRACE' | 'CONNECT' | 'PATCH' | 'EXTENSION';
export type MirrorAcross = {
    edge: {
        /** format:uuid, description:Edge ID. */
        id: string;
    };
} | {
    axis: {
        /** Axis to use as mirror. */
        axis: Point3d;
        /** Point through which the mirror axis passes. */
        point: Point3d;
    };
} | {
    plane: {
        /** format:uuid, description:Plane ID. */
        id: string;
    };
};
export type MlCopilotClientMessage = {
    type: 'ping';
} | {
    type: 'list_modes';
} | {
    headers: {
        [key: string]: string;
    };
    type: 'headers';
} | {
    current_files?: {
        [key: string]: number[];
    };
    /** nullable:true, description:The project name, if any. */
    project_name?: string;
    type: 'project_context';
} | {
    /** The user can send additional files like images or PDFs to provide more context. */
    additional_files?: MlCopilotFile[];
    /** The content of the user's message. */
    content: string;
    current_files?: {
        [key: string]: number[];
    };
    /** The user can force specific tools to be used for this message. */
    forced_tools?: MlCopilotTool[];
    /**
     * {
     *   "nullable": true,
     *   "description": "Pick a mode for the agent to operate in. Defaults to a fast mode."
     * }
     */
    mode?: MlCopilotMode;
    /** nullable:true, description:Override the default or mode model with another. */
    model?: MlCopilotSupportedModels;
    /**
     * {
     *   "nullable": true,
     *   "description": "The project name, if any. This can be used to associate the message with a specific project."
     * }
     */
    project_name?: string;
    /** nullable:true, description:Change the default or mode reasoning effort. */
    reasoning_effort?: MlReasoningEffort;
    /** The source ranges the user suggested to change. If empty, the content (prompt) will be used and is required. */
    source_ranges?: SourceRangePrompt[];
    type: 'user';
} | {
    /** The content of the system message. */
    command: MlCopilotSystemCommand;
    type: 'system';
} | {
    /**
     * {
     *   "nullable": true,
     *   "description": "Error encountered while loading attachments, if any."
     * }
     */
    error?: string;
    /** Loaded attachment files. Empty when no matching attachments were found. */
    files?: MlCopilotFile[];
    /** nullable:true, description:Prompt the attachments were loaded from. */
    prompt_id?: Uuid;
    /**
     * {
     *   "nullable": true,
     *   "description": "Optional backend-provided identifier to correlate request/response pairs."
     * }
     */
    request_id?: string;
    /** nullable:true, format:int32, description:Specific client message sequence, when requested. */
    seq?: number;
    type: 'attachment_response';
};
export interface MlCopilotFile {
    /**
     * {
     *   "format": "uint8",
     *   "minimum": 0
     * }
     */
    data: number[];
    /** nullable:true, description:Optional blob storage path for the file contents. */
    data_ref?: string;
    metadata?: {
        [key: string]: string;
    };
    /** The MIME type of the file (e.g., "image/png", "application/pdf", "model/stl"). */
    mimetype: string;
    /** The name of the file. */
    name: string;
}
export type MlCopilotMode = 'fast' | 'thoughtful';
export interface MlCopilotModeOption {
    /** Human-readable display description. */
    description: string;
    /** Client icon identifier. */
    icon: string;
    /** Stable mode identifier to send in user messages. */
    id: string;
    /** Human-readable display label. */
    label: string;
}
export type MlCopilotServerMessage = {
    pong: Record<string, unknown>;
} | {
    session_data: {
        /** The API call id associated with this websocket session. */
        api_call_id: string;
    };
} | {
    conversation_id: {
        /** The unique identifier for the conversation. */
        conversation_id: string;
    };
} | {
    delta: {
        /** The delta text, which is a part of the response that is being streamed. */
        delta: string;
    };
} | {
    tool_output: {
        /** The result of the tool call. */
        result: MlToolResult;
    };
} | {
    error: {
        /** The error message. */
        detail: string;
    };
} | {
    info: {
        /** The informational text. */
        text: string;
    };
} | {
    modes_response: {
        /** Default mode identifier used when no mode is requested. */
        default_mode: string;
        /** Available modes in configuration order. */
        modes: MlCopilotModeOption[];
    };
} | {
    backend_shutdown: {
        /** nullable:true, description:The reason given for the backend shutdown. */
        reason?: string;
    };
} | {
    project_updated: {
        files: {
            [key: string]: string;
        };
    };
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/ReasoningMessage"
     * }
     */
    reasoning: ReasoningMessage;
} | {
    request_attachments: {
        /**
         * {
         *   "nullable": true,
         *   "description": "Conversation to search for attachments. Used when prompt_id is not known."
         * }
         */
        conversation_id?: Uuid;
        names?: string[];
        /**
         * {
         *   "default": false,
         *   "description": "If true, return attachment metadata without loading file contents."
         * }
         */
        only_metadata?: boolean;
        /**
         * {
         *   "nullable": true,
         *   "description": "Prompt to load attachments from. Defaults to the active/resumed prompt."
         * }
         */
        prompt_id?: Uuid;
        /**
         * {
         *   "nullable": true,
         *   "description": "Optional backend-provided identifier to correlate request/response pairs."
         * }
         */
        request_id?: string;
        /**
         * {
         *   "nullable": true,
         *   "format": "int32",
         *   "description": "Specific client message sequence to inspect. Defaults to recent client messages."
         * }
         */
        seq?: number;
    };
} | {
    attachments_loaded: {
        /**
         * {
         *   "nullable": true,
         *   "description": "Optional backend-provided identifier to correlate request/response pairs."
         * }
         */
        request_id?: string;
    };
} | {
    replay: {
        messages: number[][];
    };
} | {
    end_of_stream: {
        /**
         * {
         *   "nullable": true,
         *   "format": "date-time",
         *   "description": "This indicates the time that the server has finished processing the request. This can be used by the client to measure the total time taken for the request. Although this might be passed in other contexts, outside of copilot mode, it is only relevant in copilot mode."
         * }
         */
        completed_at?: string;
        /** nullable:true, description:The conversation id for this session. */
        conversation_id?: string;
        /** nullable:true, description:The ML prompt id for this turn. */
        id?: Uuid;
        /**
         * {
         *   "nullable": true,
         *   "format": "date-time",
         *   "description": "This indicates the time that the server had started processing the request. This can be used by the client to measure the total time taken for the request. Although this might be passed in other contexts, outside of copilot mode, it is only relevant in copilot mode."
         * }
         */
        started_at?: string;
        /**
         * {
         *   "nullable": true,
         *   "description": "The whole response text, which is the final output of the AI. This is only relevant if in copilot mode, where the AI is expected to return the whole response at once."
         * }
         */
        whole_response?: string;
    };
} | {
    files: {
        /** The list of files being sent. */
        files: MlCopilotFile[];
    };
};
export type MlCopilotSupportedModels = 'gpt5_nano' | 'gpt5_mini' | 'gpt5_codex' | 'gpt5' | 'o3_mini' | 'azure_o3_mini' | 'azure_gpt4o' | 'azure_gpt4o_mini';
export type MlCopilotSystemCommand = 'new' | 'bye' | 'continue' | 'interrupt' | 'cancel' | 'answer_now';
export type MlCopilotTool = 'edit_kcl_code' | 'text_to_cad' | 'mechanical_knowledge_base' | 'web_search';
export type MlFeedback = 'thumbs_up' | 'thumbs_down' | 'accepted' | 'rejected';
export type MlReasoningEffort = 'low' | 'medium' | 'high' | 'xhigh';
export type MlToolResult = {
    /**
     * {
     *   "nullable": true,
     *   "description": "Any error that occurred during the tool execution."
     * }
     */
    error?: string;
    outputs?: {
        [key: string]: string;
    };
    /** nullable:true, description:The name of the project, if any. */
    project_name?: string;
    /** title:int32, format:int32, description:The status code of the tool execution. */
    status_code: number;
    type: 'text_to_cad';
} | {
    /**
     * {
     *   "nullable": true,
     *   "description": "Any error that occurred during the tool execution."
     * }
     */
    error?: string;
    outputs?: {
        [key: string]: string;
    };
    /** nullable:true, description:The name of the project, if any. */
    project_name?: string;
    /** title:int32, format:int32, description:The status code of the tool execution. */
    status_code: number;
    type: 'edit_kcl_code';
} | {
    /** The response from the mechanical knowledge base. */
    response: string;
    type: 'mechanical_knowledge_base';
};
export type ModelingAppShareLinks = 'public' | 'password_protected' | 'organization_only';
export interface ModelingAppSubscriptionTier {
    /**
     * {
     *   "nullable": true,
     *   "format": "double",
     *   "description": "Annual discount. The percentage off the monthly price if the user pays annually."
     * }
     */
    annual_discount?: number;
    /**
     * {
     *   "default": "standard",
     *   "description": "Indicates how billing collection is routed for this plan."
     * }
     */
    billing_mode?: SubscriptionBillingMode;
    /** A description of the tier. */
    description: string;
    /** default:, description:The display name of the tier. */
    display_name?: string;
    /** The Zoo API endpoints that are included when through an approved zoo tool. */
    endpoints_included?: ApiEndpoint[];
    /** minItems:0, maxItems:15, description:Features that are included in the subscription. */
    features?: SubscriptionTierFeature[];
    /**
     * {
     *   "default": false,
     *   "description": "Indicates whether the plan enables custom ML models."
     * }
     */
    ml_custom_models?: boolean;
    /**
     * {
     *   "default": 0,
     *   "format": "uint64",
     *   "minimum": 0,
     *   "description": "The amount of pay-as-you-go API credits the individual or org gets outside the modeling app per month. This re-ups on the 1st of each month. This is equivalent to the monetary value divided by the price of an API credit."
     * }
     */
    monthly_pay_as_you_go_api_credits?: number;
    /**
     * {
     *   "title": "double",
     *   "default": 0,
     *   "format": "money-usd",
     *   "description": "The monetary value of pay-as-you-go API credits the individual or org gets outside the modeling app per month. This re-ups on the 1st of each month."
     * }
     */
    monthly_pay_as_you_go_api_credits_monetary_value?: number;
    /** The name of the tier. */
    name: string;
    /**
     * {
     *   "title": "double",
     *   "default": 0,
     *   "format": "money-usd",
     *   "description": "The price of an API credit."
     * }
     */
    pay_as_you_go_api_credit_price?: number;
    /** The price of the tier per month. If this is for an individual, this is the price they pay. If this is for an organization, this is the price the organization pays per member in the org. This is in USD. */
    price: SubscriptionTierPrice;
    /** The options for sharable links through the modeling app. */
    share_links?: ModelingAppShareLinks[];
    /** The support tier the subscription provides. */
    support_tier: SupportTier;
    /** The behavior of the users data (can it be used for training, etc). */
    training_data_behavior: SubscriptionTrainingDataBehavior;
    /** If the tier is offered for an individual or an org. */
    type: SubscriptionTierType;
    /** The Zoo tools that you can call unlimited times with this tier. */
    zoo_tools_included?: ZooTool[];
}
export type ModelingCmd = {
    /** The path in json form (the serialized result of the kcl Sketch/Path object */
    path_json: string;
    /**
     * {
     *   "format": "double",
     *   "description": "The evaluation parameter (path curve parameter in the normalized domain [0, 1])"
     * }
     */
    t: number;
    type: 'engine_util_evaluate_path';
} | {
    type: 'start_path';
} | {
    /** The ID of the command which created the path. */
    path: ModelingCmdId;
    /** Where the path's pen should be. */
    to: Point3d;
    type: 'move_path_pen';
} | {
    /**
     * {
     *   "nullable": true,
     *   "description": "Optional label to associate with the new path segment."
     * }
     */
    label?: string;
    /** The ID of the command which created the path. */
    path: ModelingCmdId;
    /** Segment to append to the path. This segment will implicitly begin at the current "pen" location. */
    segment: PathSegment;
    type: 'extend_path';
} | {
    /**
     * {
     *   "default": "solid",
     *   "description": "Should this extrude create a solid body or a surface?"
     * }
     */
    body_type?: BodyType;
    /** How far off the plane to extrude */
    distance: LengthUnit;
    /**
     * {
     *   "default": "merge",
     *   "description": "Should the extrusion create a new object or be part of the existing object."
     * }
     */
    extrude_method?: ExtrudeMethod;
    /**
     * {
     *   "nullable": true,
     *   "description": "Which IDs should the new faces have? If this isn't given, the engine will generate IDs."
     * }
     */
    faces?: ExtrudedFaceInfo;
    /**
     * {
     *   "nullable": true,
     *   "description": "Only used if the extrusion is created from a face and extrude_method = Merge If true, coplanar faces will be merged and seams will be hidden. Otherwise, seams between the extrusion and original body will be shown."
     * }
     */
    merge_coplanar_faces?: boolean;
    /**
     * {
     *   "default": "None",
     *   "description": "Should the extrusion also extrude in the opposite direction? If so, this specifies its distance."
     * }
     */
    opposite?: OppositeForLengthUnit;
    /** Which sketch to extrude. Must be a closed 2D solid. */
    target: ModelingCmdId;
    type: 'extrude';
} | {
    /**
     * {
     *   "default": "solid",
     *   "description": "Should this extrude create a solid body or a surface?"
     * }
     */
    body_type?: BodyType;
    /**
     * {
     *   "default": "merge",
     *   "description": "Should the extrusion create a new object or be part of the existing object."
     * }
     */
    extrude_method?: ExtrudeMethod;
    /**
     * {
     *   "nullable": true,
     *   "description": "Which IDs should the new faces have? If this isn't given, the engine will generate IDs."
     * }
     */
    faces?: ExtrudedFaceInfo;
    /** Reference to extrude to. Extrusion occurs along the target's normal until it is as close to the reference as possible. */
    reference: ExtrudeReference;
    /** Which sketch to extrude. Must be a closed 2D solid. */
    target: ModelingCmdId;
    type: 'extrude_to_reference';
} | {
    /**
     * {
     *   "default": {
     *     "unit": "degrees",
     *     "value": 15
     *   },
     *   "description": "Angle step interval (converted to whole number degrees and bounded between 4° and 90°)"
     * }
     */
    angle_step_size?: Angle;
    /**
     * {
     *   "default": "solid",
     *   "description": "Should this extrude create a solid body or a surface?"
     * }
     */
    body_type?: BodyType;
    /**
     * {
     *   "default": {
     *     "x": 0,
     *     "y": 0
     *   },
     *   "description": "Center to twist about (relative to plane's origin) Defaults to `[0, 0]` i.e. the plane's origin"
     * }
     */
    center_2d?: Point2d;
    /** How far off the plane to extrude */
    distance: LengthUnit;
    /**
     * {
     *   "nullable": true,
     *   "description": "Which IDs should the new faces have? If this isn't given, the engine will generate IDs."
     * }
     */
    faces?: ExtrudedFaceInfo;
    /** Which sketch to extrude. Must be a closed 2D solid. */
    target: ModelingCmdId;
    /** The twisted surface loft tolerance */
    tolerance: LengthUnit;
    /** Total rotation of the section */
    total_rotation_angle: Angle;
    type: 'twist_extrude';
} | {
    /**
     * {
     *   "default": "solid",
     *   "description": "Should this sweep create a solid body or a surface?"
     * }
     */
    body_type?: BodyType;
    /** default:sketch_plane, description:What is this sweep relative to? */
    relative_to?: RelativeTo;
    /** If true, the sweep will be broken up into sub-sweeps (extrusions, revolves, sweeps) based on the trajectory path components. */
    sectional: boolean;
    /** Which sketch to sweep. Must be a closed 2D solid. */
    target: ModelingCmdId;
    /** The maximum acceptable surface gap computed between the revolution surface joints. Must be positive (i.e. greater than zero). */
    tolerance: LengthUnit;
    /** Path along which to sweep. */
    trajectory: ModelingCmdId;
    type: 'sweep';
    /**
     * {
     *   "nullable": true,
     *   "format": "uint8",
     *   "minimum": 0,
     *   "description": "What version of the sweeping algorithm to use. If None, or zero, the engine's default algorithm will be used"
     * }
     */
    version?: number;
} | {
    /** The signed angle of revolution (in degrees, must be <= 360 in either direction) */
    angle: Angle;
    /** The axis of the extrusion (taken from the origin) */
    axis: Point3d;
    /** If true, the axis is interpreted within the 2D space of the solid 2D's plane */
    axis_is_2d: boolean;
    /**
     * {
     *   "default": "solid",
     *   "description": "Should this extrude create a solid body or a surface?"
     * }
     */
    body_type?: BodyType;
    /**
     * {
     *   "default": "None",
     *   "description": "Should the revolution also revolve in the opposite direction along the given axis? If so, this specifies its angle."
     * }
     */
    opposite?: OppositeForAngle;
    /** The origin of the extrusion axis */
    origin: Point3d;
    /** Which sketch to revolve. Must be a closed 2D solid. */
    target: ModelingCmdId;
    /** The maximum acceptable surface gap computed between the revolution surface joints. Must be positive (i.e. greater than zero). */
    tolerance: LengthUnit;
    type: 'revolve';
} | {
    /**
     * {
     *   "format": "uuid"
     * }
     */
    face_ids: string[];
    /**
     * {
     *   "default": false,
     *   "description": "If true, the Solid3D is made hollow instead of removing the selected faces"
     * }
     */
    hollow?: boolean;
    /** format:uuid, description:Which Solid3D is being shelled. */
    object_id: string;
    /** How thick the shell should be. Smaller values mean a thinner shell. */
    shell_thickness: LengthUnit;
    type: 'solid3d_shell_face';
} | {
    /** format:uuid, description:Which Solid3D is being joined. */
    object_id: string;
    type: 'solid3d_join';
} | {
    /**
     * {
     *   "format": "uuid"
     * }
     */
    object_ids: string[];
    /** The maximum acceptable surface gap computed between the joints. Must be positive (i.e. greater than zero). */
    tolerance: LengthUnit;
    type: 'solid3d_multi_join';
} | {
    /** default:tangent, description:The type of blend to use. */
    blend_type?: BlendType;
    /** minItems:2, maxItems:2, description:The two surfaces that the blend will span between */
    surfaces: SurfaceEdgeReference[];
    type: 'surface_blend';
} | {
    /** format:uint32, minimum:0, description:The primitive index of the edge being queried. */
    edge_index: number;
    /** format:uuid, description:The Solid3D parent who owns the edge */
    object_id: string;
    type: 'solid3d_get_edge_uuid';
} | {
    /** format:uint32, minimum:0, description:The primitive index of the face being queried. */
    face_index: number;
    /** format:uuid, description:The Solid3D parent who owns the face */
    object_id: string;
    type: 'solid3d_get_face_uuid';
} | {
    /** format:uuid, description:The Solid3D whose body type is being queried. */
    object_id: string;
    type: 'solid3d_get_body_type';
} | {
    /** The signed angle of revolution (in degrees, must be <= 360 in either direction) */
    angle: Angle;
    /**
     * {
     *   "default": "solid",
     *   "description": "Should this extrude create a solid body or a surface?"
     * }
     */
    body_type?: BodyType;
    /**
     * {
     *   "nullable": true,
     *   "format": "uuid",
     *   "description": "The edge to use as the axis of revolution, must be linear and lie in the plane of the solid"
     * }
     */
    edge_id?: string;
    /**
     * {
     *   "nullable": true,
     *   "description": "Edge reference to use as the axis of revolution (new API). If both `edge_id` and `edge_reference` are provided, `edge_reference` takes precedence."
     * }
     */
    edge_reference?: EdgeSpecifier;
    /**
     * {
     *   "default": "None",
     *   "description": "Should the revolution also revolve in the opposite direction along the given axis? If so, this specifies its angle."
     * }
     */
    opposite?: OppositeForAngle;
    /** Which sketch to revolve. Must be a closed 2D solid. */
    target: ModelingCmdId;
    /** The maximum acceptable surface gap computed between the revolution surface joints. Must be positive (i.e. greater than zero). */
    tolerance: LengthUnit;
    type: 'revolve_about_edge';
} | {
    /**
     * {
     *   "nullable": true,
     *   "format": "uint32",
     *   "minimum": 0,
     *   "description": "This can be set to override the automatically determined topological base curve, which is usually the first section encountered."
     * }
     */
    base_curve_index?: number;
    /** Attempt to approximate rational curves (such as arcs) using a bezier. This will remove banding around interpolations between arcs and non-arcs.  It may produce errors in other scenarios Over time, this field won't be necessary. */
    bez_approximate_rational: boolean;
    /**
     * {
     *   "default": "solid",
     *   "description": "Should this loft create a solid body or a surface?"
     * }
     */
    body_type?: BodyType;
    /**
     * {
     *   "format": "uuid"
     * }
     */
    section_ids: string[];
    /** Tolerance */
    tolerance: LengthUnit;
    type: 'loft';
    /**
     * {
     *   "format": "uint32",
     *   "minimum": 1,
     *   "description": "Degree of the interpolation. Must be greater than zero. For example, use 2 for quadratic, or 3 for cubic interpolation in the V direction."
     * }
     */
    v_degree: number;
} | {
    /** format:uuid, description:Which path to close. */
    path_id: string;
    type: 'close_path';
} | {
    /** The type of camera drag interaction. */
    interaction: CameraDragInteractionType;
    type: 'camera_drag_start';
    /** The initial mouse position. */
    window: Point2d;
} | {
    /** The type of camera drag interaction. */
    interaction: CameraDragInteractionType;
    /**
     * {
     *   "nullable": true,
     *   "format": "uint32",
     *   "minimum": 0,
     *   "description": "Logical timestamp. The client should increment this with every event in the current mouse drag. That way, if the events are being sent over an unordered channel, the API can ignore the older events."
     * }
     */
    sequence?: number;
    type: 'camera_drag_move';
    /** The current mouse position. */
    window: Point2d;
} | {
    /** The type of camera drag interaction. */
    interaction: CameraDragInteractionType;
    type: 'camera_drag_end';
    /** The final mouse position. */
    window: Point2d;
} | {
    type: 'default_camera_get_settings';
} | {
    type: 'default_camera_get_view';
} | {
    type: 'default_camera_set_view';
    /** Camera view state */
    view: CameraViewState;
} | {
    /** What the camera is looking at. Center of the camera's field of vision */
    center: Point3d;
    /**
     * {
     *   "nullable": true,
     *   "format": "uint32",
     *   "minimum": 0,
     *   "description": "Logical timestamp. The client should increment this with every event in the current mouse drag. That way, if the events are being sent over an unordered channel, the API can ignore the older events."
     * }
     */
    sequence?: number;
    type: 'default_camera_look_at';
    /** Which way is "up", from the camera's point of view. */
    up: Point3d;
    /** Where the camera is positioned */
    vantage: Point3d;
} | {
    /** What the camera is looking at. Center of the camera's field of vision */
    center: Point3d;
    /**
     * {
     *   "nullable": true,
     *   "format": "float",
     *   "description": "The field of view angle in the y direction, in degrees."
     * }
     */
    fov_y?: number;
    /**
     * {
     *   "nullable": true,
     *   "format": "uint32",
     *   "minimum": 0,
     *   "description": "Logical timestamp. The client should increment this with every event in the current mouse drag. That way, if the events are being sent over an unordered channel, the API can ignore the older events."
     * }
     */
    sequence?: number;
    type: 'default_camera_perspective_settings';
    /** Which way is "up", from the camera's point of view. */
    up: Point3d;
    /** Where the camera is positioned */
    vantage: Point3d;
    /** nullable:true, format:float, description:The distance to the far clipping plane. */
    z_far?: number;
    /** nullable:true, format:float, description:The distance to the near clipping plane. */
    z_near?: number;
} | {
    /**
     * {
     *   "format": "float",
     *   "description": "Move the camera forward along the vector it's looking at, by this magnitudedefaultCameraZoom. Basically, how much should the camera move forward by."
     * }
     */
    magnitude: number;
    type: 'default_camera_zoom';
} | {
    /**
     * {
     *   "format": "uuid"
     * }
     */
    entity_ids: string[];
    /** The file format to export to. */
    format: OutputFormat2d;
    type: 'export2d';
} | {
    /**
     * {
     *   "format": "uuid"
     * }
     */
    entity_ids: string[];
    /** The file format to export to. */
    format: OutputFormat3d;
    type: 'export3d';
} | {
    /**
     * {
     *   "format": "uuid"
     * }
     */
    entity_ids: string[];
    /** The file format to export to. */
    format: OutputFormat3d;
    type: 'export';
} | {
    /** format:uuid, description:ID of the entity being queried. */
    entity_id: string;
    type: 'entity_get_parent_id';
} | {
    /** format:uuid, description:ID of the entity being queried. */
    entity_id: string;
    type: 'entity_get_num_children';
} | {
    /** format:uint32, minimum:0, description:Index into the entity's list of children. */
    child_index: number;
    /** format:uuid, description:ID of the entity being queried. */
    entity_id: string;
    type: 'entity_get_child_uuid';
} | {
    /** format:uuid, description:ID of the entity being queried. */
    entity_id: string;
    type: 'entity_get_index';
} | {
    /** format:uuid, description:ID of the entity being queried. */
    entity_id: string;
    type: 'entity_get_primitive_index';
} | {
    /**
     * {
     *   "format": "uuid"
     * }
     */
    child_entity_ids: string[];
    /** format:uuid, description:ID of the entity being modified */
    entity_id: string;
    type: 'entity_delete_children';
} | {
    /** format:uuid, description:ID of the entity being queried. */
    entity_id: string;
    type: 'entity_get_all_child_uuids';
} | {
    /** format:uuid, description:ID of the entity being queried. */
    entity_id: string;
    type: 'entity_get_sketch_paths';
} | {
    /** Type of distance to be measured. */
    distance_type: DistanceType;
    /** format:uuid, description:ID of the first entity being queried. */
    entity_id1: string;
    /** format:uuid, description:ID of the second entity being queried. */
    entity_id2: string;
    type: 'entity_get_distance';
} | {
    /** format:uuid, description:ID of the entity being cloned. */
    entity_id: string;
    type: 'entity_clone';
} | {
    /** format:uuid, description:ID of the entity being copied. */
    entity_id: string;
    /**
     * {
     *   "default": [],
     *   "description": "How to transform each repeated solid. The 0th transform will create the first copy of the entity. The total number of (optional) repetitions equals the size of this list."
     * }
     */
    transform?: Transform[];
    transforms?: Transform[][];
    type: 'entity_linear_pattern_transform';
} | {
    /** Axis along which to make the copies. For Solid2d patterns, the z component is ignored. */
    axis: Point3d;
    /** format:uuid, description:ID of the entity being copied. */
    entity_id: string;
    /** format:uint32, minimum:0, description:Number of repetitions to make. */
    num_repetitions: number;
    /** Spacing between repetitions. */
    spacing: LengthUnit;
    type: 'entity_linear_pattern';
} | {
    /**
     * {
     *   "format": "double",
     *   "description": "Arc angle (in degrees) to place repetitions along."
     * }
     */
    arc_degrees: number;
    /** Axis around which to make the copies. For Solid2d patterns, this is ignored. */
    axis: Point3d;
    /** Point around which to make the copies. For Solid2d patterns, the z component is ignored. */
    center: Point3d;
    /** format:uuid, description:ID of the entity being copied. */
    entity_id: string;
    /** format:uint32, minimum:0, description:Number of repetitions to make. */
    num_repetitions: number;
    /** Whether or not to rotate the objects as they are copied. */
    rotate_duplicates: boolean;
    type: 'entity_circular_pattern';
} | {
    /** format:uuid, description:ID of the cylinder. */
    cylinder_id: string;
    /** Is the helix rotation clockwise? */
    is_clockwise: boolean;
    /**
     * {
     *   "nullable": true,
     *   "description": "Length of the helix. If None, the length of the cylinder will be used instead."
     * }
     */
    length?: LengthUnit;
    /** format:double, description:Number of revolutions. */
    revolutions: number;
    /** default:{unit:degrees, value:0}, description:Start angle. */
    start_angle?: Angle;
    type: 'entity_make_helix';
} | {
    /** Axis of the helix. The helix will be created around and in the direction of this axis. */
    axis: Point3d;
    /** Center of the helix at the base of the helix. */
    center: Point3d;
    /** Is the helix rotation clockwise? */
    is_clockwise: boolean;
    /** Length of the helix. */
    length: LengthUnit;
    /** Radius of the helix. */
    radius: LengthUnit;
    /** format:double, description:Number of revolutions. */
    revolutions: number;
    /** default:{unit:degrees, value:0}, description:Start angle. */
    start_angle?: Angle;
    type: 'entity_make_helix_from_params';
} | {
    /**
     * {
     *   "nullable": true,
     *   "format": "uuid",
     *   "description": "Edge ID about which to make the helix (legacy API, for backwards compatibility). If both `edge_id` and `edge_reference` are provided, `edge_reference` takes precedence."
     * }
     */
    edge_id?: string;
    /**
     * {
     *   "nullable": true,
     *   "description": "Edge reference about which to make the helix (new API). If both `edge_id` and `edge_reference` are provided, `edge_reference` takes precedence."
     * }
     */
    edge_reference?: EdgeSpecifier;
    /** Is the helix rotation clockwise? */
    is_clockwise: boolean;
    /**
     * {
     *   "nullable": true,
     *   "description": "Length of the helix. If None, the length of the edge will be used instead."
     * }
     */
    length?: LengthUnit;
    /** Radius of the helix. */
    radius: LengthUnit;
    /** format:double, description:Number of revolutions. */
    revolutions: number;
    /** default:{unit:degrees, value:0}, description:Start angle. */
    start_angle?: Angle;
    type: 'entity_make_helix_from_edge';
} | {
    /** What to mirror across */
    across: MirrorAcross;
    /**
     * {
     *   "format": "uuid"
     * }
     */
    ids: string[];
    type: 'entity_mirror_across';
} | {
    /** Axis to use as mirror. */
    axis: Point3d;
    /**
     * {
     *   "format": "uuid"
     * }
     */
    ids: string[];
    /** Point through which the mirror axis passes. */
    point: Point3d;
    type: 'entity_mirror';
} | {
    /**
     * {
     *   "nullable": true,
     *   "format": "uuid",
     *   "description": "The edge to use as the mirror axis (legacy API). Must be linear and lie in the plane of the solid. If both `edge_id` and `edge_reference` are provided, `edge_reference` takes precedence."
     * }
     */
    edge_id?: string;
    /**
     * {
     *   "nullable": true,
     *   "description": "Edge reference to use as the mirror axis (new API). If both `edge_id` and `edge_reference` are provided, `edge_reference` takes precedence."
     * }
     */
    edge_reference?: EdgeSpecifier;
    /**
     * {
     *   "format": "uuid"
     * }
     */
    ids: string[];
    type: 'entity_mirror_across_edge';
} | {
    /** Where in the window was selected */
    selected_at_window: Point2d;
    /** What entity was selected? */
    selection_type: SceneSelectionType;
    type: 'select_with_point';
} | {
    /** Where in the window was selected */
    selected_at_window: Point2d;
    /** What entity was selected? */
    selection_type: SceneSelectionType;
    type: 'query_entity_type_with_point';
} | {
    /** format:uuid, description:The entity id to query */
    entity_id: string;
    type: 'query_entity_type';
} | {
    /**
     * {
     *   "format": "uuid"
     * }
     */
    entities: string[];
    type: 'select_add';
} | {
    /**
     * {
     *   "format": "uuid"
     * }
     */
    entities: string[];
    type: 'select_remove';
} | {
    type: 'scene_clear_all';
} | {
    /**
     * {
     *   "format": "uuid"
     * }
     */
    entities: string[];
    type: 'select_replace';
} | {
    /** Coordinates of the window being clicked */
    selected_at_window: Point2d;
    /**
     * {
     *   "nullable": true,
     *   "format": "uint32",
     *   "minimum": 0,
     *   "description": "Logical timestamp. The client should increment this with every event in the current mouse drag. That way, if the events are being sent over an unordered channel, the API can ignore the older events."
     * }
     */
    sequence?: number;
    type: 'highlight_set_entity';
} | {
    /**
     * {
     *   "format": "uuid"
     * }
     */
    entities: string[];
    type: 'highlight_set_entities';
} | {
    /** What type of annotation to create. */
    annotation_type: AnnotationType;
    /** If true, any existing drawables within the obj will be replaced (the object will be reset) */
    clobber: boolean;
    /** What should the annotation contain? */
    options: AnnotationOptions;
    type: 'new_annotation';
} | {
    /** format:uuid, description:Which annotation to update */
    annotation_id: string;
    /** If any of these fields are set, they will overwrite the previous options for the annotation. */
    options: AnnotationOptions;
    type: 'update_annotation';
} | {
    /** Whether or not the edge lines should be hidden. */
    hidden: boolean;
    type: 'edge_lines_visible';
} | {
    /** Whether or not the object should be hidden. */
    hidden: boolean;
    /** format:uuid, description:Which object to change */
    object_id: string;
    type: 'object_visible';
} | {
    /** format:uuid, description:Which object to change */
    object_id: string;
    type: 'object_bring_to_front';
} | {
    /** format:float, description:Ambient Occlusion of the new material */
    ambient_occlusion: number;
    /** nullable:true, description:Color of the backface */
    backface_color?: Color;
    /** Color of the new material */
    color: Color;
    /** format:float, description:Metalness of the new material */
    metalness: number;
    /** format:uuid, description:Which object to change */
    object_id: string;
    /** format:float, description:Roughness of the new material */
    roughness: number;
    type: 'object_set_material_params_pbr';
} | {
    /** format:uuid, description:ID of the entity being queried. */
    entity_id: string;
    type: 'get_entity_type';
} | {
    /** format:uuid, description:Which edge you want the faces of. */
    edge_id: string;
    /** format:uuid, description:Which object is being queried. */
    object_id: string;
    type: 'solid3d_get_all_edge_faces';
} | {
    /** format:uuid, description:Which object is being flipped. */
    object_id: string;
    type: 'solid3d_flip';
} | {
    /** format:uuid, description:Which face you want to flip. */
    face_id: string;
    /** format:uuid, description:Which object is being queried. */
    object_id: string;
    type: 'solid3d_flip_face';
} | {
    /**
     * {
     *   "format": "uuid",
     *   "description": "The id of the path to use as the inner profile (hole)."
     * }
     */
    hole_id: string;
    /** format:uuid, description:Which object to add the hole to. */
    object_id: string;
    type: 'solid2d_add_hole';
} | {
    /**
     * {
     *   "nullable": true,
     *   "description": "If given, only faces parallel to this vector will be considered."
     * }
     */
    along_vector?: Point3d;
    /** format:uuid, description:Which edge you want the opposites of. */
    edge_id: string;
    /** format:uuid, description:Which object is being queried. */
    object_id: string;
    type: 'solid3d_get_all_opposite_edges';
} | {
    /** format:uuid, description:Which edge you want the opposite of. */
    edge_id: string;
    /**
     * {
     *   "format": "uuid",
     *   "description": "Which face is used to figure out the opposite edge?"
     * }
     */
    face_id: string;
    /** format:uuid, description:Which object is being queried. */
    object_id: string;
    type: 'solid3d_get_opposite_edge';
} | {
    /** format:uuid, description:Which edge you want the opposite of. */
    edge_id: string;
    /**
     * {
     *   "format": "uuid",
     *   "description": "Which face is used to figure out the opposite edge?"
     * }
     */
    face_id: string;
    /** format:uuid, description:Which object is being queried. */
    object_id: string;
    type: 'solid3d_get_next_adjacent_edge';
} | {
    /** format:uuid, description:Which edge you want the opposite of. */
    edge_id: string;
    /**
     * {
     *   "format": "uuid",
     *   "description": "Which face is used to figure out the opposite edge?"
     * }
     */
    face_id: string;
    /** format:uuid, description:Which object is being queried. */
    object_id: string;
    type: 'solid3d_get_prev_adjacent_edge';
} | {
    /**
     * {
     *   "format": "uuid"
     * }
     */
    face_ids: string[];
    /** format:uuid, description:Which object is being queried. */
    object_id: string;
    type: 'solid3d_get_common_edge';
} | {
    /** default:fillet, description:How to apply the cut. */
    cut_type?: CutType;
    /** nullable:true, format:uuid, description:Which edge you want to fillet. */
    edge_id?: string;
    /**
     * {
     *   "format": "uuid"
     * }
     */
    edge_ids?: string[];
    /** A struct containing the information required to reference an edge. */
    edges_references?: EdgeSpecifier[];
    /**
     * {
     *   "format": "uuid"
     * }
     */
    extra_face_ids?: string[];
    /** format:uuid, description:Which object is being filletted. */
    object_id: string;
    /** The radius of the fillet. Measured in length (using the same units that the current sketch uses). Must be positive (i.e. greater than zero). */
    radius: LengthUnit;
    /** default:automatic, description:Which cutting algorithm to use. */
    strategy?: CutStrategy;
    /** The maximum acceptable surface gap computed between the filleted surfaces. Must be positive (i.e. greater than zero). */
    tolerance: LengthUnit;
    type: 'solid3d_fillet_edge';
    /** If true, use the legacy CSG algorithm. */
    use_legacy?: boolean;
} | {
    /** The cut type and information required to perform the cut. */
    cut_type: CutTypeV2;
    /**
     * {
     *   "default": [],
     *   "description": "A struct containing the information required to reference an edge."
     * }
     */
    edges_references?: EdgeSpecifier[];
    /**
     * {
     *   "format": "uuid"
     * }
     */
    extra_face_ids?: string[];
    /** format:uuid, description:Which object is being cut. */
    object_id: string;
    /** default:automatic, description:Which cutting algorithm to use. */
    strategy?: CutStrategy;
    /** The maximum acceptable surface gap computed between the cut surfaces. Must be positive (i.e. greater than zero). */
    tolerance: LengthUnit;
    type: 'solid3d_cut_edge_references';
    /** If true, use the legacy CSG algorithm. */
    use_legacy?: boolean;
} | {
    /** The cut type and information required to perform the cut. */
    cut_type: CutTypeV2;
    /**
     * {
     *   "format": "uuid"
     * }
     */
    edge_ids?: string[];
    /**
     * {
     *   "format": "uuid"
     * }
     */
    extra_face_ids?: string[];
    /** format:uuid, description:Which object is being cut. */
    object_id: string;
    /** default:automatic, description:Which cutting algorithm to use. */
    strategy?: CutStrategy;
    /** The maximum acceptable surface gap computed between the cut surfaces. Must be positive (i.e. greater than zero). */
    tolerance: LengthUnit;
    type: 'solid3d_cut_edges';
    /** If true, use the legacy CSG algorithm. */
    use_legacy?: boolean;
} | {
    /** format:uuid, description:Which face is being queried. */
    object_id: string;
    type: 'face_is_planar';
} | {
    /** format:uuid, description:Which face is being queried. */
    object_id: string;
    type: 'face_get_position';
    /** The 2D parameter-space u,v position to evaluate the surface at */
    uv: Point2d;
} | {
    /** format:uuid, description:Which face is being queried. */
    object_id: string;
    type: 'face_get_center';
} | {
    /** format:uuid, description:Which face is being queried. */
    object_id: string;
    type: 'face_get_gradient';
    /** The 2D parameter-space u,v position to evaluate the surface at */
    uv: Point2d;
} | {
    /** Bring to front = true, send to back = false. */
    front: boolean;
    /** format:uuid, description:Which object is being changed. */
    object_id: string;
    type: 'send_object';
} | {
    /** format:uuid, description:Which entity is being changed. */
    entity_id: string;
    /**
     * {
     *   "format": "float",
     *   "description": "How transparent should it be? 0 or lower is totally transparent. 1 or greater is totally opaque."
     * }
     */
    opacity: number;
    type: 'entity_set_opacity';
} | {
    /** default:0.4, format:double, description:How many seconds the animation should take. */
    duration_seconds?: number;
    /** format:uuid, description:Which entity is being changed. */
    entity_id: string;
    /** Fade in = true, fade out = false. */
    fade_in: boolean;
    type: 'entity_fade';
} | {
    /** If true, any existing drawables within the obj will be replaced (the object will be reset) */
    clobber: boolean;
    /**
     * {
     *   "nullable": true,
     *   "description": "If true, the plane will be created but hidden initially."
     * }
     */
    hide?: boolean;
    /** Origin of the plane */
    origin: Point3d;
    /** What should the plane's span/extent? When rendered visually, this is both the width and height along X and Y axis respectively. */
    size: LengthUnit;
    type: 'make_plane';
    /** What should the plane's X axis be? */
    x_axis: Point3d;
    /** What should the plane's Y axis be? */
    y_axis: Point3d;
} | {
    /** What color it should be. */
    color: Color;
    /** format:uuid, description:Which plane is being changed. */
    plane_id: string;
    type: 'plane_set_color';
} | {
    /** What tool should be active. */
    tool: SceneToolType;
    type: 'set_tool';
} | {
    /**
     * {
     *   "nullable": true,
     *   "format": "uint32",
     *   "minimum": 0,
     *   "description": "Logical timestamp. The client should increment this with every event in the current mouse drag. That way, if the events are being sent over an unordered channel, the API can ignore the older events."
     * }
     */
    sequence?: number;
    type: 'mouse_move';
    /** Where the mouse is */
    window: Point2d;
} | {
    type: 'mouse_click';
    /** Where the mouse is */
    window: Point2d;
} | {
    type: 'sketch_mode_disable';
} | {
    type: 'get_sketch_mode_plane';
} | {
    /** Which constraint to apply. */
    constraint_bound: PathComponentConstraintBound;
    /** What part of the curve should be constrained. */
    constraint_type: PathComponentConstraintType;
    /** format:uuid, description:Which curve to constrain. */
    object_id: string;
    type: 'curve_set_constraint';
} | {
    /** Should the camera move at all? */
    adjust_camera: boolean;
    /** Should we animate or snap for the camera transition? */
    animated: boolean;
    /** format:uuid, description:Which entity to sketch on. */
    entity_id: string;
    /** Should the camera use orthographic projection? In other words, should an object's size in the rendered image stay constant regardless of its distance from the camera. */
    ortho: boolean;
    /**
     * {
     *   "nullable": true,
     *   "description": "If provided, ensures that the normal of the sketch plane must be aligned with this supplied normal (otherwise the camera position will be used to infer the normal to point towards the viewer)"
     * }
     */
    planar_normal?: Point3d;
    type: 'enable_sketch_mode';
} | {
    type: 'enable_dry_run';
} | {
    type: 'disable_dry_run';
} | {
    /** The color to set the background to. */
    color: Color;
    type: 'set_background_color';
} | {
    /** nullable:true, description:The color to set the tool line to. */
    color?: Color;
    type: 'set_current_tool_properties';
} | {
    /** nullable:true, description:The default color to use for all backfaces */
    backface_color?: Color;
    /** nullable:true, description:The default system color. */
    color?: Color;
    /** nullable:true, description:The default color to use for highlight */
    highlight_color?: Color;
    /** nullable:true, description:The default color to use for selection */
    selection_color?: Color;
    type: 'set_default_system_properties';
} | {
    /** format:uuid, description:Which curve to query. */
    curve_id: string;
    type: 'curve_get_type';
} | {
    /** format:uuid, description:Which curve to query. */
    curve_id: string;
    type: 'curve_get_control_points';
} | {
    /**
     * {
     *   "nullable": true,
     *   "format": "uuid",
     *   "description": "Which entity to project (vertex or edge). Legacy; if both `entity_id` and `entity_reference` are provided, `entity_reference` takes precedence."
     * }
     */
    entity_id?: string;
    /**
     * {
     *   "nullable": true,
     *   "description": "Entity reference (e.g. edge by side_faces, vertex, face) to project. If both `entity_id` and `entity_reference` are provided, `entity_reference` takes precedence."
     * }
     */
    entity_reference?: EntityReference;
    /** format:uuid, description:Which plane to project the entity onto. */
    plane_id: string;
    type: 'project_entity_to_plane';
    /** If true: the projected points are returned in the plane_id's coordinate system, else: the projected points are returned in the world coordinate system. */
    use_plane_coords: boolean;
} | {
    /** format:uuid, description:The id of the plane used for the projection. */
    plane_id: string;
    /** The list of points that will be projected. */
    points: Point3d[];
    type: 'project_points_to_plane';
    /** If true: the projected points are returned in the plane_id's coordinate sysetm. else: the projected points are returned in the world coordinate system. */
    use_plane_coords: boolean;
} | {
    /** What image format to return. */
    format: ImageFormat;
    type: 'take_snapshot';
} | {
    /** If true, any existing drawables within the obj will be replaced (the object will be reset) */
    clobber: boolean;
    /** If true, axes gizmo will be placed in the corner of the screen. If false, it will be placed at the origin of the scene. */
    gizmo_mode: boolean;
    type: 'make_axes_gizmo';
} | {
    /** format:uuid, description:Which path to query */
    path_id: string;
    type: 'path_get_info';
} | {
    /** format:uuid, description:Which path to query */
    path_id: string;
    type: 'path_get_curve_uuids_for_vertices';
    /**
     * {
     *   "format": "uuid"
     * }
     */
    vertex_ids: string[];
} | {
    /**
     * {
     *   "format": "uint32",
     *   "minimum": 0,
     *   "description": "IDs of the vertices for which to obtain curve ids from"
     * }
     */
    index: number;
    /** format:uuid, description:Which path to query */
    path_id: string;
    type: 'path_get_curve_uuid';
} | {
    /** format:uuid, description:Which path to query */
    path_id: string;
    type: 'path_get_vertex_uuids';
} | {
    /** format:uuid, description:Which path to query */
    path_id: string;
    type: 'path_get_sketch_target_uuid';
} | {
    type: 'handle_mouse_drag_start';
    /** The mouse position. */
    window: Point2d;
} | {
    /**
     * {
     *   "nullable": true,
     *   "format": "uint32",
     *   "minimum": 0,
     *   "description": "Logical timestamp. The client should increment this with every event in the current mouse drag. That way, if the events are being sent over an unordered channel, the API can ignore the older events."
     * }
     */
    sequence?: number;
    type: 'handle_mouse_drag_move';
    /** The mouse position. */
    window: Point2d;
} | {
    type: 'handle_mouse_drag_end';
    /** The mouse position. */
    window: Point2d;
} | {
    /**
     * {
     *   "format": "uuid"
     * }
     */
    object_ids: string[];
    type: 'remove_scene_objects';
} | {
    /** format:uuid, description:The plane you're intersecting against. */
    plane_id: string;
    type: 'plane_intersect_and_project';
    /** Window coordinates where the ray cast should be aimed. */
    window: Point2d;
} | {
    /** format:uuid, description:ID of the curve being queried. */
    curve_id: string;
    type: 'curve_get_end_points';
} | {
    /**
     * {
     *   "nullable": true,
     *   "format": "uint32",
     *   "minimum": 0,
     *   "description": "Video feed's constant bitrate (CBR)"
     * }
     */
    bitrate?: number;
    /** format:uint32, minimum:0, description:Frames per second. */
    fps: number;
    /** format:uint32, minimum:0, description:Height of the stream. */
    height: number;
    type: 'reconfigure_stream';
    /** format:uint32, minimum:0, description:Width of the stream. */
    width: number;
} | {
    /** Files to import. */
    files: ImportFile[];
    /** Input file format. */
    format: InputFormat3d;
    type: 'import_files';
} | {
    type: 'set_scene_units';
    /** Which units the scene uses. */
    unit: UnitLength;
} | {
    /**
     * {
     *   "format": "uuid"
     * }
     */
    entity_ids: string[];
    /** format:double, description:The material density. */
    material_density: number;
    /** The material density unit. */
    material_density_unit: UnitDensity;
    /** The output unit for the mass. */
    output_unit: UnitMass;
    type: 'mass';
} | {
    /**
     * {
     *   "format": "uuid"
     * }
     */
    entity_ids: string[];
    /** format:double, description:The material mass. */
    material_mass: number;
    /** The material mass unit. */
    material_mass_unit: UnitMass;
    /** The output unit for the density. */
    output_unit: UnitDensity;
    type: 'density';
} | {
    /**
     * {
     *   "format": "uuid"
     * }
     */
    entity_ids: string[];
    /** The output unit for the volume. */
    output_unit: UnitVolume;
    type: 'volume';
} | {
    /**
     * {
     *   "format": "uuid"
     * }
     */
    entity_ids: string[];
    /** The output unit for the center of mass. */
    output_unit: UnitLength;
    type: 'center_of_mass';
} | {
    /**
     * {
     *   "format": "uuid"
     * }
     */
    entity_ids: string[];
    /** The output unit for the surface area. */
    output_unit: UnitArea;
    type: 'surface_area';
} | {
    type: 'default_camera_focus_on';
    /** format:uuid, description:UUID of object to focus on. */
    uuid: string;
} | {
    /** What type of selection should occur when you select something? */
    selection_type: SceneSelectionType;
    type: 'set_selection_type';
} | {
    /** If vector is empty, clear all filters. If vector is non-empty, only the given entity types will be selectable. */
    filter: EntityType[];
    type: 'set_selection_filter';
} | {
    /** The entity types to be queried. */
    filter: EntityType[];
    /**
     * {
     *   "format": "uint32",
     *   "minimum": 0,
     *   "description": "Skip the first n returned ids. If multiple filters are provided, this skip will apply to each filter individually."
     * }
     */
    skip: number;
    /**
     * {
     *   "format": "uint32",
     *   "minimum": 1,
     *   "maximum": 1000,
     *   "description": "Take n ids after any ids skipped. This value must be greater than zero and not exceed 1000. If multiple filters are provided, this take will apply to each filter individually. If there are fewer than `take` items of the provided filter type then the returned list's length will be the smaller value."
     * }
     */
    take: number;
    type: 'scene_get_entity_ids';
} | {
    type: 'default_camera_set_orthographic';
} | {
    /**
     * {
     *   "nullable": true,
     *   "description": "If this is not given, use the same parameters as last time the perspective camera was used."
     * }
     */
    parameters?: PerspectiveCameraParameters;
    type: 'default_camera_set_perspective';
} | {
    /**
     * {
     *   "default": "vantage",
     *   "description": "Dictates whether or not the camera position should be adjusted during this operation If no movement is requested, the camera will orbit around the new center from its current position"
     * }
     */
    camera_movement?: CameraMovement;
    type: 'default_camera_center_to_selection';
} | {
    /**
     * {
     *   "default": "vantage",
     *   "description": "Dictates whether or not the camera position should be adjusted during this operation If no movement is requested, the camera will orbit around the new center from its current position"
     * }
     */
    camera_movement?: CameraMovement;
    type: 'default_camera_center_to_scene';
} | {
    /** default:false, description:Whether or not to animate the camera movement. */
    animated?: boolean;
    /**
     * {
     *   "format": "uuid"
     * }
     */
    object_ids?: string[];
    /**
     * {
     *   "default": 0,
     *   "format": "float",
     *   "description": "How much to pad the view frame by, as a fraction of the object(s) bounding box size. Negative padding will crop the view of the object proportionally. e.g. padding = 0.2 means the view will span 120% of the object(s) bounding box, and padding = -0.2 means the view will span 80% of the object(s) bounding box."
     * }
     */
    padding?: number;
    type: 'zoom_to_fit';
} | {
    /**
     * {
     *   "default": false,
     *   "description": "Whether or not to animate the camera movement. (Animation is currently not supported.)"
     * }
     */
    animated?: boolean;
    /**
     * {
     *   "format": "uuid",
     *   "description": "Which face to orient camera to. If the face is not planar, no action will occur."
     * }
     */
    face_id: string;
    /**
     * {
     *   "default": 0,
     *   "format": "float",
     *   "description": "How much to pad the view frame by, as a fraction of the face bounding box size. Negative padding will crop the view of the face proportionally. e.g. padding = 0.2 means the view will span 120% of the face bounding box, and padding = -0.2 means the view will span 80% of the face bounding box."
     * }
     */
    padding?: number;
    type: 'orient_to_face';
} | {
    /**
     * {
     *   "default": 0,
     *   "format": "float",
     *   "description": "How much to pad the view frame by, as a fraction of the object(s) bounding box size. Negative padding will crop the view of the object proportionally. e.g. padding = 0.2 means the view will span 120% of the object(s) bounding box, and padding = -0.2 means the view will span 80% of the object(s) bounding box."
     * }
     */
    padding?: number;
    type: 'view_isometric';
} | {
    /** format:uuid, description:Any edge that lies on the extrusion base path. */
    edge_id: string;
    /**
     * {
     *   "format": "uuid",
     *   "description": "The Solid3d object whose extrusion is being queried."
     * }
     */
    object_id: string;
    type: 'solid3d_get_extrusion_face_info';
} | {
    /** format:uuid, description:Any edge that lies on the extrusion base path. */
    edge_id: string;
    /** format:uuid, description:The Solid3d object whose info is being queried. */
    object_id: string;
    type: 'solid3d_get_adjacency_info';
} | {
    type: 'select_clear';
} | {
    /** Which entities to select (face-based references for edges/vertices, face_id for faces) */
    entities: EntityReference[];
    type: 'select_entity';
} | {
    type: 'select_get';
} | {
    type: 'get_num_objects';
} | {
    /** format:uuid, description:Id of the object whose transform is to be set. */
    object_id: string;
    /** List of transforms to be applied to the object. */
    transforms: ComponentTransform[];
    type: 'set_object_transform';
} | {
    /**
     * {
     *   "default": false,
     *   "description": "If true, non-contiguous bodies in the result will be returned as separate objects"
     * }
     */
    separate_bodies?: boolean;
    /**
     * {
     *   "format": "uuid"
     * }
     */
    solid_ids: string[];
    /** The maximum acceptable surface gap computed between the joined solids. Must be positive (i.e. greater than zero). */
    tolerance: LengthUnit;
    type: 'boolean_union';
    /** If true, use the legacy CSG algorithm. */
    use_legacy?: boolean;
} | {
    /**
     * {
     *   "default": false,
     *   "description": "If true, non-contiguous bodies in the result will be returned as separate objects"
     * }
     */
    separate_bodies?: boolean;
    /**
     * {
     *   "format": "uuid"
     * }
     */
    solid_ids: string[];
    /** The maximum acceptable surface gap computed between the joined solids. Must be positive (i.e. greater than zero). */
    tolerance: LengthUnit;
    type: 'boolean_intersection';
    /** If true, use the legacy CSG algorithm. */
    use_legacy?: boolean;
} | {
    /**
     * {
     *   "default": false,
     *   "description": "If true, non-contiguous bodies in the result will be returned as separate objects"
     * }
     */
    separate_bodies?: boolean;
    /**
     * {
     *   "format": "uuid"
     * }
     */
    target_ids: string[];
    /** The maximum acceptable surface gap computed between the target and the solids cut out from it. Must be positive (i.e. greater than zero). */
    tolerance: LengthUnit;
    /**
     * {
     *   "format": "uuid"
     * }
     */
    tool_ids: string[];
    type: 'boolean_subtract';
    /** If true, use the legacy CSG algorithm. */
    use_legacy?: boolean;
} | {
    /**
     * {
     *   "format": "uuid"
     * }
     */
    body_ids: string[];
    /**
     * {
     *   "default": false,
     *   "description": "If true, the provided tool bodies will not be modified"
     * }
     */
    keep_tools?: boolean;
    /**
     * {
     *   "default": false,
     *   "description": "If true, target bodies will be separated into multiple objects at their intersection boundaries."
     * }
     */
    separate_bodies?: boolean;
    /** The maximum acceptable surface gap between the intersected bodies. Must be positive (i.e. greater than zero). */
    tolerance: LengthUnit;
    /**
     * {
     *   "format": "uuid"
     * }
     */
    tool_ids?: string[];
    type: 'boolean_imprint';
    /** If true, use the legacy CSG algorithm. */
    use_legacy?: boolean;
} | {
    /**
     * {
     *   "nullable": true,
     *   "format": "uuid",
     *   "description": "If the object is a solid, this is the ID of the face to base the offset on. If given, and `object_id` refers to a solid, then this face on the solid will be offset. If given but `object_id` doesn't refer to a solid, responds with an error. If not given, then `object_id` itself will be offset directly."
     * }
     */
    face_id?: string;
    /**
     * {
     *   "format": "uuid",
     *   "description": "The object that will be offset (can be a path, sketch, or a solid)"
     * }
     */
    object_id: string;
    /** The distance to offset the path (positive for outset, negative for inset) */
    offset: LengthUnit;
    type: 'make_offset_path';
} | {
    /** format:uuid, description:The closed path to add a hole to. */
    object_id: string;
    /** The distance to offset the path (positive for outset, negative for inset) */
    offset: LengthUnit;
    type: 'add_hole_from_offset';
} | {
    /** format:uuid, description:The grid to be moved. */
    grid_id: string;
    /**
     * {
     *   "format": "uuid",
     *   "description": "The plane or face that the grid will be aligned to. If a face, it must be planar to succeed."
     * }
     */
    reference_id: string;
    type: 'set_grid_reference_plane';
} | {
    type: 'set_grid_scale';
    /** Which units the `value` field uses. */
    units: UnitLength;
    /**
     * {
     *   "format": "float",
     *   "description": "Distance between grid lines represents this much distance."
     * }
     */
    value: number;
} | {
    type: 'set_grid_auto_scale';
} | {
    /**
     * {
     *   "nullable": true,
     *   "description": "Enables or disables OIT. If not given, toggles it."
     * }
     */
    enabled?: boolean;
    type: 'set_order_independent_transparency';
} | {
    /**
     * {
     *   "default": false,
     *   "description": "By default, curve counterclockwise at intersections. If this is true, instead curve clockwise."
     * }
     */
    curve_clockwise?: boolean;
    /**
     * {
     *   "default": -1,
     *   "format": "int32",
     *   "description": "At which intersection between `segment` and `intersection_segment` should we stop following the `segment` and start following `intersection_segment`? Defaults to -1, which means the last intersection."
     * }
     */
    intersection_index?: number;
    /**
     * {
     *   "format": "uuid",
     *   "description": "Second segment to follow to find the region. Intersects the first segment."
     * }
     */
    intersection_segment: string;
    /** format:uuid, description:Which sketch object to create the region from. */
    object_id: string;
    /** format:uuid, description:First segment to follow to find the region. */
    segment: string;
    type: 'create_region';
    /** Which version of the Region endpoint to call. */
    version?: RegionVersion;
} | {
    /** format:uuid, description:Which sketch object to create the region from. */
    object_id: string;
    /** The query point (in the same coordinates as the sketch itself) if a possible sketch region contains this point, then that region will be created */
    query_point: Point2d;
    type: 'create_region_from_query_point';
    /** Which version of the Region endpoint to call. */
    version?: RegionVersion;
} | {
    /** format:uuid, description:Which region to search within */
    region_id: string;
    type: 'region_get_query_point';
} | {
    /** Where in the window was selected */
    selected_at_window: Point2d;
    type: 'select_region_from_point';
} | {
    /**
     * {
     *   "format": "uuid"
     * }
     */
    entity_ids: string[];
    /**
     * {
     *   "default": "mm",
     *   "description": "The output unit for the box's dimensions. Defaults to millimeters."
     * }
     */
    output_unit?: UnitLength;
    type: 'bounding_box';
} | {
    /** The distance to offset the surface by. */
    distance: LengthUnit;
    /** Flip the newly created face. */
    flip: boolean;
    /** format:uuid, description:The surface to offset. */
    surface_id: string;
    type: 'offset_surface';
} | {
    /** Find the edge closest to this point. Assumed to be in absolute coordinates, relative to global (scene) origin. */
    closest_to: Point3d;
    /**
     * {
     *   "nullable": true,
     *   "format": "uuid",
     *   "description": "The body whose edges are being queried. If not given, will search all bodies in the scene."
     * }
     */
    object_id?: string;
    type: 'closest_edge';
};
export type ModelingCmdId = 
/**
 * {
 *   "format": "uuid",
 *   "description": "All commands have unique IDs. These should be randomly generated."
 * }
 */
string;
export interface ModelingCmdReq {
    /** Which command to submit to the Kittycad engine. */
    cmd: ModelingCmd;
    /** ID of command being submitted. */
    cmd_id: ModelingCmdId;
}
export interface ModelingSessionData {
    /** ID of the API call this modeling session is using. Useful for tracing and debugging. */
    api_call_id: string;
}
export interface MouseClick {
    /**
     * {
     *   "format": "uuid"
     * }
     */
    entities_modified: string[];
    /**
     * {
     *   "format": "uuid"
     * }
     */
    entities_selected: string[];
}
export interface MouseMove {
}
export interface MovePathPen {
}
export interface NewAnnotation {
}
export type OAuth2AppClientType = 'public' | 'confidential';
export type OAuth2AppGrantType = 'device_code' | 'authorization_code' | 'refresh_token' | 'client_credentials';
export type OAuth2AppMode = 'development' | 'production';
export interface OAuth2AppResponse {
    /** The OAuth 2.0 client identifier. */
    client_id: Uuid;
    /** The client type. */
    client_type: OAuth2AppClientType;
    /** title:DateTime, format:date-time, description:When the app record was created. */
    created_at: string;
    /** Whether this app is first-party. */
    first_party: boolean;
    /** The OAuth grant types this app can use. */
    grant_types: OAuth2AppGrantType[];
    /** Whether this app is active. */
    is_active: boolean;
    /** The deployment mode for this app. */
    mode: OAuth2AppMode;
    /** The display name of the app. */
    name: string;
    /**
     * {
     *   "title": "String",
     *   "format": "uri"
     * }
     */
    redirect_uris: string[];
    /** title:DateTime, format:date-time, description:When the app record was last updated. */
    updated_at: string;
}
export interface OAuth2AppResponseResultsPage {
    /** list of items on this page of results */
    items: OAuth2AppResponse[];
    /**
     * {
     *   "nullable": true,
     *   "description": "token used to fetch the next page of results (if any)"
     * }
     */
    next_page?: string;
}
export type OAuth2AuthorizationCodeUuid = 
/** An auth token. A uuid with a prefix of zoo-oac- */
string;
export interface OAuth2AuthorizationDecisionResponse {
    /** The URL the user agent should navigate to after the decision. */
    redirect_url: string;
}
export interface OAuth2AuthorizationRequestResponse {
    /** The OAuth app display name. */
    app_name: string;
    /** title:DateTime, format:date-time, description:When this authorization request expires. */
    expires_at: string;
    /** nullable:true, description:The OAuth app owner display name, if available. */
    owner_name?: string;
    /**
     * {
     *   "title": "String",
     *   "format": "uri",
     *   "description": "The redirect URI that will receive the authorization result."
     * }
     */
    redirect_uri: string;
    /** The pending authorization request ID. */
    request_id: Uuid;
    /** The scopes requested by the app. */
    scopes: OAuth2Scope[];
}
export type OAuth2AuthorizationResponseType = 'code';
export interface OAuth2ClientInfo {
    /** Value used for [CSRF](https://tools.ietf.org/html/rfc6749#section-10.12) protection via the `state` parameter. */
    csrf_token?: string;
    /** nullable:true, description:Nonce required for OIDC flows. */
    oidc_nonce?: string;
    /**
     * {
     *   "nullable": true,
     *   "description": "Code Verifier used for [PKCE]((https://tools.ietf.org/html/rfc7636)) protection via the `code_verifier` parameter. The value must have a minimum length of 43 characters and a maximum length of 128 characters.  Each character must be ASCII alphanumeric or one of the characters \"-\" / \".\" / \"_\" / \"~\"."
     * }
     */
    pkce_code_verifier?: string;
    /** The URL for consent. */
    url?: string;
}
export type OAuth2CodeChallengeMethod = 'PLAIN' | 'S256';
export type OAuth2GrantType = 'urn:ietf:params:oauth:grant-type:device_code';
export type OAuth2RefreshTokenUuid = 
/** An auth token. A uuid with a prefix of zoo-rfr- */
string;
export type OAuth2Scope = 'modeling' | 'admin:write';
export type OAuth2Scopes = 
/** OAuth 2.0 scopes encoded as a space-delimited string. */
string;
export type OAuth2TokenGrantType = 'authorization_code' | 'refresh_token';
export interface OAuth2TokenRequestForm {
    /** format:uuid, description:The OAuth app client ID. */
    client_id: string;
    /** nullable:true, description:The authorization code, for `authorization_code`. */
    code?: OAuth2AuthorizationCodeUuid;
    /** nullable:true, description:The PKCE verifier, for `authorization_code`. */
    code_verifier?: string;
    /** The OAuth token grant type. */
    grant_type: OAuth2TokenGrantType;
    /** nullable:true, format:uri, description:The redirect URI, for `authorization_code`. */
    redirect_uri?: string;
    /** nullable:true, description:The refresh token, for `refresh_token`. */
    refresh_token?: OAuth2RefreshTokenUuid;
}
export interface ObjectBringToFront {
}
export interface ObjectSetMaterialParamsPbr {
}
export interface ObjectVisible {
}
export interface OffsetSurface {
}
export type OkModelingCmdResponse = {
    type: 'empty';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/EngineUtilEvaluatePath"
     * }
     */
    data: EngineUtilEvaluatePath;
    type: 'engine_util_evaluate_path';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/StartPath"
     * }
     */
    data: StartPath;
    type: 'start_path';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/MovePathPen"
     * }
     */
    data: MovePathPen;
    type: 'move_path_pen';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/ExtendPath"
     * }
     */
    data: ExtendPath;
    type: 'extend_path';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/Extrude"
     * }
     */
    data: Extrude;
    type: 'extrude';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/ExtrudeToReference"
     * }
     */
    data: ExtrudeToReference;
    type: 'extrude_to_reference';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/TwistExtrude"
     * }
     */
    data: TwistExtrude;
    type: 'twist_extrude';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/Sweep"
     * }
     */
    data: Sweep;
    type: 'sweep';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/Revolve"
     * }
     */
    data: Revolve;
    type: 'revolve';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/Solid3dShellFace"
     * }
     */
    data: Solid3dShellFace;
    type: 'solid3d_shell_face';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/Solid3dJoin"
     * }
     */
    data: Solid3dJoin;
    type: 'solid3d_join';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/Solid3dMultiJoin"
     * }
     */
    data: Solid3dMultiJoin;
    type: 'solid3d_multi_join';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/SurfaceBlend"
     * }
     */
    data: SurfaceBlend;
    type: 'surface_blend';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/Solid3dGetEdgeUuid"
     * }
     */
    data: Solid3dGetEdgeUuid;
    type: 'solid3d_get_edge_uuid';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/Solid3dGetFaceUuid"
     * }
     */
    data: Solid3dGetFaceUuid;
    type: 'solid3d_get_face_uuid';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/Solid3dGetBodyType"
     * }
     */
    data: Solid3dGetBodyType;
    type: 'solid3d_get_body_type';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/RevolveAboutEdge"
     * }
     */
    data: RevolveAboutEdge;
    type: 'revolve_about_edge';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/CameraDragStart"
     * }
     */
    data: CameraDragStart;
    type: 'camera_drag_start';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/DefaultCameraLookAt"
     * }
     */
    data: DefaultCameraLookAt;
    type: 'default_camera_look_at';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/DefaultCameraPerspectiveSettings"
     * }
     */
    data: DefaultCameraPerspectiveSettings;
    type: 'default_camera_perspective_settings';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/SelectAdd"
     * }
     */
    data: SelectAdd;
    type: 'select_add';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/SelectRemove"
     * }
     */
    data: SelectRemove;
    type: 'select_remove';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/SceneClearAll"
     * }
     */
    data: SceneClearAll;
    type: 'scene_clear_all';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/SelectReplace"
     * }
     */
    data: SelectReplace;
    type: 'select_replace';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/HighlightSetEntities"
     * }
     */
    data: HighlightSetEntities;
    type: 'highlight_set_entities';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/NewAnnotation"
     * }
     */
    data: NewAnnotation;
    type: 'new_annotation';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/UpdateAnnotation"
     * }
     */
    data: UpdateAnnotation;
    type: 'update_annotation';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/EdgeLinesVisible"
     * }
     */
    data: EdgeLinesVisible;
    type: 'edge_lines_visible';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/ObjectVisible"
     * }
     */
    data: ObjectVisible;
    type: 'object_visible';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/ObjectBringToFront"
     * }
     */
    data: ObjectBringToFront;
    type: 'object_bring_to_front';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/ObjectSetMaterialParamsPbr"
     * }
     */
    data: ObjectSetMaterialParamsPbr;
    type: 'object_set_material_params_pbr';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/Solid2dAddHole"
     * }
     */
    data: Solid2dAddHole;
    type: 'solid2d_add_hole';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/Solid3dFilletEdge"
     * }
     */
    data: Solid3dFilletEdge;
    type: 'solid3d_fillet_edge';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/Solid3dCutEdgeReferences"
     * }
     */
    data: Solid3dCutEdgeReferences;
    type: 'solid3d_cut_edge_references';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/Solid3dCutEdges"
     * }
     */
    data: Solid3dCutEdges;
    type: 'solid3d_cut_edges';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/SendObject"
     * }
     */
    data: SendObject;
    type: 'send_object';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/EntitySetOpacity"
     * }
     */
    data: EntitySetOpacity;
    type: 'entity_set_opacity';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/EntityFade"
     * }
     */
    data: EntityFade;
    type: 'entity_fade';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/MakePlane"
     * }
     */
    data: MakePlane;
    type: 'make_plane';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/PlaneSetColor"
     * }
     */
    data: PlaneSetColor;
    type: 'plane_set_color';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/SetTool"
     * }
     */
    data: SetTool;
    type: 'set_tool';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/MouseMove"
     * }
     */
    data: MouseMove;
    type: 'mouse_move';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/SketchModeDisable"
     * }
     */
    data: SketchModeDisable;
    type: 'sketch_mode_disable';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/EnableDryRun"
     * }
     */
    data: EnableDryRun;
    type: 'enable_dry_run';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/DisableDryRun"
     * }
     */
    data: DisableDryRun;
    type: 'disable_dry_run';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/CurveSetConstraint"
     * }
     */
    data: CurveSetConstraint;
    type: 'curve_set_constraint';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/EnableSketchMode"
     * }
     */
    data: EnableSketchMode;
    type: 'enable_sketch_mode';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/SetBackgroundColor"
     * }
     */
    data: SetBackgroundColor;
    type: 'set_background_color';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/SetCurrentToolProperties"
     * }
     */
    data: SetCurrentToolProperties;
    type: 'set_current_tool_properties';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/SetDefaultSystemProperties"
     * }
     */
    data: SetDefaultSystemProperties;
    type: 'set_default_system_properties';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/MakeAxesGizmo"
     * }
     */
    data: MakeAxesGizmo;
    type: 'make_axes_gizmo';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/HandleMouseDragStart"
     * }
     */
    data: HandleMouseDragStart;
    type: 'handle_mouse_drag_start';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/HandleMouseDragMove"
     * }
     */
    data: HandleMouseDragMove;
    type: 'handle_mouse_drag_move';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/HandleMouseDragEnd"
     * }
     */
    data: HandleMouseDragEnd;
    type: 'handle_mouse_drag_end';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/RemoveSceneObjects"
     * }
     */
    data: RemoveSceneObjects;
    type: 'remove_scene_objects';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/ReconfigureStream"
     * }
     */
    data: ReconfigureStream;
    type: 'reconfigure_stream';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/SetSceneUnits"
     * }
     */
    data: SetSceneUnits;
    type: 'set_scene_units';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/SetSelectionType"
     * }
     */
    data: SetSelectionType;
    type: 'set_selection_type';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/SetSelectionFilter"
     * }
     */
    data: SetSelectionFilter;
    type: 'set_selection_filter';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/DefaultCameraSetOrthographic"
     * }
     */
    data: DefaultCameraSetOrthographic;
    type: 'default_camera_set_orthographic';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/DefaultCameraSetPerspective"
     * }
     */
    data: DefaultCameraSetPerspective;
    type: 'default_camera_set_perspective';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/DefaultCameraCenterToSelection"
     * }
     */
    data: DefaultCameraCenterToSelection;
    type: 'default_camera_center_to_selection';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/DefaultCameraCenterToScene"
     * }
     */
    data: DefaultCameraCenterToScene;
    type: 'default_camera_center_to_scene';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/SelectClear"
     * }
     */
    data: SelectClear;
    type: 'select_clear';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/SelectEntity"
     * }
     */
    data: SelectEntity;
    type: 'select_entity';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/Export2d"
     * }
     */
    data: Export2d;
    type: 'export2d';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/Export3d"
     * }
     */
    data: Export3d;
    type: 'export3d';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/Export"
     * }
     */
    data: Export;
    type: 'export';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/SelectWithPoint"
     * }
     */
    data: SelectWithPoint;
    type: 'select_with_point';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/QueryEntityTypeWithPoint"
     * }
     */
    data: QueryEntityTypeWithPoint;
    type: 'query_entity_type_with_point';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/QueryEntityType"
     * }
     */
    data: QueryEntityType;
    type: 'query_entity_type';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/HighlightSetEntity"
     * }
     */
    data: HighlightSetEntity;
    type: 'highlight_set_entity';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/EntityGetChildUuid"
     * }
     */
    data: EntityGetChildUuid;
    type: 'entity_get_child_uuid';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/EntityGetIndex"
     * }
     */
    data: EntityGetIndex;
    type: 'entity_get_index';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/EntityGetPrimitiveIndex"
     * }
     */
    data: EntityGetPrimitiveIndex;
    type: 'entity_get_primitive_index';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/EntityDeleteChildren"
     * }
     */
    data: EntityDeleteChildren;
    type: 'entity_delete_children';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/EntityGetNumChildren"
     * }
     */
    data: EntityGetNumChildren;
    type: 'entity_get_num_children';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/EntityGetParentId"
     * }
     */
    data: EntityGetParentId;
    type: 'entity_get_parent_id';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/EntityGetAllChildUuids"
     * }
     */
    data: EntityGetAllChildUuids;
    type: 'entity_get_all_child_uuids';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/EntityGetSketchPaths"
     * }
     */
    data: EntityGetSketchPaths;
    type: 'entity_get_sketch_paths';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/Loft"
     * }
     */
    data: Loft;
    type: 'loft';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/ClosePath"
     * }
     */
    data: ClosePath;
    type: 'close_path';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/CameraDragMove"
     * }
     */
    data: CameraDragMove;
    type: 'camera_drag_move';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/CameraDragEnd"
     * }
     */
    data: CameraDragEnd;
    type: 'camera_drag_end';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/DefaultCameraGetSettings"
     * }
     */
    data: DefaultCameraGetSettings;
    type: 'default_camera_get_settings';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/DefaultCameraGetView"
     * }
     */
    data: DefaultCameraGetView;
    type: 'default_camera_get_view';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/DefaultCameraSetView"
     * }
     */
    data: DefaultCameraSetView;
    type: 'default_camera_set_view';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/DefaultCameraZoom"
     * }
     */
    data: DefaultCameraZoom;
    type: 'default_camera_zoom';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/ZoomToFit"
     * }
     */
    data: ZoomToFit;
    type: 'zoom_to_fit';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/OrientToFace"
     * }
     */
    data: OrientToFace;
    type: 'orient_to_face';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/ViewIsometric"
     * }
     */
    data: ViewIsometric;
    type: 'view_isometric';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/GetNumObjects"
     * }
     */
    data: GetNumObjects;
    type: 'get_num_objects';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/MakeOffsetPath"
     * }
     */
    data: MakeOffsetPath;
    type: 'make_offset_path';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/SetObjectTransform"
     * }
     */
    data: SetObjectTransform;
    type: 'set_object_transform';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/AddHoleFromOffset"
     * }
     */
    data: AddHoleFromOffset;
    type: 'add_hole_from_offset';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/DefaultCameraFocusOn"
     * }
     */
    data: DefaultCameraFocusOn;
    type: 'default_camera_focus_on';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/SelectGet"
     * }
     */
    data: SelectGet;
    type: 'select_get';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/Solid3dGetAdjacencyInfo"
     * }
     */
    data: Solid3dGetAdjacencyInfo;
    type: 'solid3d_get_adjacency_info';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/Solid3dGetAllEdgeFaces"
     * }
     */
    data: Solid3dGetAllEdgeFaces;
    type: 'solid3d_get_all_edge_faces';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/Solid3dFlip"
     * }
     */
    data: Solid3dFlip;
    type: 'solid3d_flip';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/Solid3dFlipFace"
     * }
     */
    data: Solid3dFlipFace;
    type: 'solid3d_flip_face';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/Solid3dGetAllOppositeEdges"
     * }
     */
    data: Solid3dGetAllOppositeEdges;
    type: 'solid3d_get_all_opposite_edges';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/Solid3dGetOppositeEdge"
     * }
     */
    data: Solid3dGetOppositeEdge;
    type: 'solid3d_get_opposite_edge';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/Solid3dGetNextAdjacentEdge"
     * }
     */
    data: Solid3dGetNextAdjacentEdge;
    type: 'solid3d_get_next_adjacent_edge';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/Solid3dGetPrevAdjacentEdge"
     * }
     */
    data: Solid3dGetPrevAdjacentEdge;
    type: 'solid3d_get_prev_adjacent_edge';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/Solid3dGetCommonEdge"
     * }
     */
    data: Solid3dGetCommonEdge;
    type: 'solid3d_get_common_edge';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/GetEntityType"
     * }
     */
    data: GetEntityType;
    type: 'get_entity_type';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/SceneGetEntityIds"
     * }
     */
    data: SceneGetEntityIds;
    type: 'scene_get_entity_ids';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/CurveGetControlPoints"
     * }
     */
    data: CurveGetControlPoints;
    type: 'curve_get_control_points';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/ProjectEntityToPlane"
     * }
     */
    data: ProjectEntityToPlane;
    type: 'project_entity_to_plane';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/ProjectPointsToPlane"
     * }
     */
    data: ProjectPointsToPlane;
    type: 'project_points_to_plane';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/CurveGetType"
     * }
     */
    data: CurveGetType;
    type: 'curve_get_type';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/MouseClick"
     * }
     */
    data: MouseClick;
    type: 'mouse_click';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/TakeSnapshot"
     * }
     */
    data: TakeSnapshot;
    type: 'take_snapshot';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/PathGetInfo"
     * }
     */
    data: PathGetInfo;
    type: 'path_get_info';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/PathSegmentInfo"
     * }
     */
    data: PathSegmentInfo;
    type: 'path_segment_info';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/PathGetCurveUuidsForVertices"
     * }
     */
    data: PathGetCurveUuidsForVertices;
    type: 'path_get_curve_uuids_for_vertices';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/PathGetCurveUuid"
     * }
     */
    data: PathGetCurveUuid;
    type: 'path_get_curve_uuid';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/PathGetVertexUuids"
     * }
     */
    data: PathGetVertexUuids;
    type: 'path_get_vertex_uuids';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/PathGetSketchTargetUuid"
     * }
     */
    data: PathGetSketchTargetUuid;
    type: 'path_get_sketch_target_uuid';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/CurveGetEndPoints"
     * }
     */
    data: CurveGetEndPoints;
    type: 'curve_get_end_points';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/FaceIsPlanar"
     * }
     */
    data: FaceIsPlanar;
    type: 'face_is_planar';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/FaceGetPosition"
     * }
     */
    data: FaceGetPosition;
    type: 'face_get_position';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/FaceGetCenter"
     * }
     */
    data: FaceGetCenter;
    type: 'face_get_center';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/FaceGetGradient"
     * }
     */
    data: FaceGetGradient;
    type: 'face_get_gradient';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/PlaneIntersectAndProject"
     * }
     */
    data: PlaneIntersectAndProject;
    type: 'plane_intersect_and_project';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/ImportFiles"
     * }
     */
    data: ImportFiles;
    type: 'import_files';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/ImportedGeometry"
     * }
     */
    data: ImportedGeometry;
    type: 'imported_geometry';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/Mass"
     * }
     */
    data: Mass;
    type: 'mass';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/Volume"
     * }
     */
    data: Volume;
    type: 'volume';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/Density"
     * }
     */
    data: Density;
    type: 'density';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/SurfaceArea"
     * }
     */
    data: SurfaceArea;
    type: 'surface_area';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/CenterOfMass"
     * }
     */
    data: CenterOfMass;
    type: 'center_of_mass';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/GetSketchModePlane"
     * }
     */
    data: GetSketchModePlane;
    type: 'get_sketch_mode_plane';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/EntityGetDistance"
     * }
     */
    data: EntityGetDistance;
    type: 'entity_get_distance';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/FaceEdgeInfo"
     * }
     */
    data: FaceEdgeInfo;
    type: 'face_edge_info';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/EdgeInfo"
     * }
     */
    data: EdgeInfo;
    type: 'edge_info';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/EntityClone"
     * }
     */
    data: EntityClone;
    type: 'entity_clone';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/EntityLinearPatternTransform"
     * }
     */
    data: EntityLinearPatternTransform;
    type: 'entity_linear_pattern_transform';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/EntityLinearPattern"
     * }
     */
    data: EntityLinearPattern;
    type: 'entity_linear_pattern';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/EntityCircularPattern"
     * }
     */
    data: EntityCircularPattern;
    type: 'entity_circular_pattern';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/EntityMirror"
     * }
     */
    data: EntityMirror;
    type: 'entity_mirror';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/EntityMirrorAcross"
     * }
     */
    data: EntityMirrorAcross;
    type: 'entity_mirror_across';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/EntityMirrorAcrossEdge"
     * }
     */
    data: EntityMirrorAcrossEdge;
    type: 'entity_mirror_across_edge';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/EntityMakeHelix"
     * }
     */
    data: EntityMakeHelix;
    type: 'entity_make_helix';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/EntityMakeHelixFromParams"
     * }
     */
    data: EntityMakeHelixFromParams;
    type: 'entity_make_helix_from_params';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/EntityMakeHelixFromEdge"
     * }
     */
    data: EntityMakeHelixFromEdge;
    type: 'entity_make_helix_from_edge';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/Solid3dGetExtrusionFaceInfo"
     * }
     */
    data: Solid3dGetExtrusionFaceInfo;
    type: 'solid3d_get_extrusion_face_info';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/ExtrusionFaceInfo"
     * }
     */
    data: ExtrusionFaceInfo;
    type: 'extrusion_face_info';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/ComplementaryEdges"
     * }
     */
    data: ComplementaryEdges;
    type: 'complementary_edges';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/AdjacencyInfo"
     * }
     */
    data: AdjacencyInfo;
    type: 'adjacency_info';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/SetGridReferencePlane"
     * }
     */
    data: SetGridReferencePlane;
    type: 'set_grid_reference_plane';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/BooleanUnion"
     * }
     */
    data: BooleanUnion;
    type: 'boolean_union';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/BooleanIntersection"
     * }
     */
    data: BooleanIntersection;
    type: 'boolean_intersection';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/BooleanSubtract"
     * }
     */
    data: BooleanSubtract;
    type: 'boolean_subtract';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/BooleanImprint"
     * }
     */
    data: BooleanImprint;
    type: 'boolean_imprint';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/SetGridScale"
     * }
     */
    data: SetGridScale;
    type: 'set_grid_scale';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/SetGridAutoScale"
     * }
     */
    data: SetGridAutoScale;
    type: 'set_grid_auto_scale';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/SetOrderIndependentTransparency"
     * }
     */
    data: SetOrderIndependentTransparency;
    type: 'set_order_independent_transparency';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/CreateRegion"
     * }
     */
    data: CreateRegion;
    type: 'create_region';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/CreateRegionFromQueryPoint"
     * }
     */
    data: CreateRegionFromQueryPoint;
    type: 'create_region_from_query_point';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/RegionGetQueryPoint"
     * }
     */
    data: RegionGetQueryPoint;
    type: 'region_get_query_point';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/SelectRegionFromPoint"
     * }
     */
    data: SelectRegionFromPoint;
    type: 'select_region_from_point';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/BoundingBox"
     * }
     */
    data: BoundingBox;
    type: 'bounding_box';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/OffsetSurface"
     * }
     */
    data: OffsetSurface;
    type: 'offset_surface';
} | {
    /**
     * {
     *   "$ref": "#/components/schemas/ClosestEdge"
     * }
     */
    data: ClosestEdge;
    type: 'closest_edge';
};
export type OkWebSocketResponseData = {
    data: {
        /** Information about the ICE servers. */
        ice_servers: IceServer[];
    };
    type: 'ice_server_info';
} | {
    data: {
        /** Information about the ICE candidate. */
        candidate: RtcIceCandidateInit;
    };
    type: 'trickle_ice';
} | {
    data: {
        /** The session description. */
        answer: RtcSessionDescription;
    };
    type: 'sdp_answer';
} | {
    data: {
        /** The result of the command. */
        modeling_response: OkModelingCmdResponse;
    };
    type: 'modeling';
} | {
    data: {
        /** For each request in the batch, maps its ID to the request's outcome. */
        responses: {
            [key: string]: BatchResponse;
        };
    };
    type: 'modeling_batch';
} | {
    data: {
        /** The exported files */
        files: RawFile[];
    };
    type: 'export';
} | {
    data: Record<string, unknown>;
    type: 'metrics_request';
} | {
    data: {
        /** Data about the Modeling Session (application-level). */
        session: ModelingSessionData;
    };
    type: 'modeling_session_data';
} | {
    data: Record<string, unknown>;
    type: 'pong';
} | {
    data: {
        /** Instance name. This may or may not mean something. */
        name: string;
    };
    type: 'debug';
};
export type OppositeForAngle = string;
export type OppositeForLengthUnit = string;
export interface Org {
    /**
     * {
     *   "nullable": true,
     *   "description": "If we should allow all future users who are created with email addresses from this domain to join the org."
     * }
     */
    allow_users_in_domain_to_auto_join?: boolean;
    /**
     * {
     *   "nullable": true,
     *   "description": "ExternalId our workers supply when assuming customer roles, following AWS guidance for avoiding the [confused deputy problem](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html). Required before an org can register external datasets."
     * }
     */
    aws_external_id?: Uuid;
    /** format:email, description:The billing email address of the org. */
    billing_email: string;
    /**
     * {
     *   "nullable": true,
     *   "title": "DateTime",
     *   "format": "date-time",
     *   "description": "The date and time the billing email address was verified."
     * }
     */
    billing_email_verified?: string;
    /** nullable:true, description:If the org should be blocked and the reason why. */
    block?: BlockReason;
    /**
     * {
     *   "default": false,
     *   "description": "If we can train on the orgs's data. This value overrides any individual user's `can_train_on_data` value if they are a member of the org."
     * }
     */
    can_train_on_data?: boolean;
    /** title:DateTime, format:date-time, description:The date and time the org was created. */
    created_at: string;
    /** nullable:true, description:The org's domain. */
    domain?: string;
    /** The unique identifier for the org. */
    id: Uuid;
    /**
     * {
     *   "nullable": true,
     *   "title": "String",
     *   "format": "uri",
     *   "description": "The image for the org. This is a URL."
     * }
     */
    image?: string;
    /** The name of the org. */
    name?: string;
    /**
     * {
     *   "title": "String",
     *   "default": "",
     *   "format": "phone",
     *   "description": "The org's phone number."
     * }
     */
    phone?: string;
    /** nullable:true, description:The org's stripe id. */
    stripe_id?: string;
    /** title:DateTime, format:date-time, description:The date and time the org was last updated. */
    updated_at: string;
}
export interface OrgAddress {
    /** The city component. */
    city?: string;
    /** The country component. This is a two-letter ISO country code. */
    country: CountryCode;
    /** title:DateTime, format:date-time, description:The time and date the address was created. */
    created_at: string;
    /** The unique identifier of the address. */
    id: Uuid;
    /** The org ID that this address belongs to. */
    org_id: Uuid;
    /** The state component. */
    state?: string;
    /** The first street component. */
    street1?: string;
    /** The second street component. */
    street2?: string;
    /** title:DateTime, format:date-time, description:The time and date the address was last updated. */
    updated_at: string;
    /** The zip component. */
    zip?: string;
}
export interface OrgAdminDetails {
    /**
     * {
     *   "nullable": true,
     *   "description": "Latest billing address stored for the organization."
     * }
     */
    address?: OrgAddress;
    /** nullable:true, description:Readable billing address summary. */
    address_summary?: string;
    /** nullable:true, description:Block reason when the org is blocked. */
    block?: BlockReason;
    /** nullable:true, description:Human-friendly block reason message. */
    block_message?: string;
    /**
     * {
     *   "nullable": true,
     *   "format": "int32",
     *   "description": "Optional org-wide per-user override for concurrent engine sessions."
     * }
     */
    max_engine_sessions_per_user_override?: number;
    /** Whether this organization is permanently exempt from blocking. */
    never_block: boolean;
    /** Known payment methods on file. */
    payment_methods: PaymentMethod[];
    payment_methods_summary: string[];
    /** nullable:true, description:Stripe customer identifier if one exists. */
    stripe_customer_id?: string;
    /** nullable:true, description:Direct link to the Stripe customer dashboard. */
    stripe_dashboard_url?: string;
}
export interface OrgDataset {
    /** Identity we assume when accessing the dataset (AWS role ARN today). Pair this with the org's `aws_external_id` to mitigate the AWS confused deputy risk. See <https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html>. */
    access_role_arn: string;
    /** title:DateTime, format:date-time, description:The date and time the dataset was created. */
    created_at: string;
    /**
     * {
     *   "nullable": true,
     *   "description": "User-provided description for humans reviewing the dataset."
     * }
     */
    description?: string;
    /** The unique identifier for the dataset. */
    id: Uuid;
    /**
     * {
     *   "nullable": true,
     *   "description": "Last recorded sync error message, if dataset access failed."
     * }
     */
    last_sync_error?: string;
    /**
     * {
     *   "nullable": true,
     *   "title": "DateTime",
     *   "format": "date-time",
     *   "description": "Timestamp for the last sync error."
     * }
     */
    last_sync_error_at?: string;
    /** User-provided display name. This is mutable; lookup by ID instead. */
    name: string;
    /** The ID of the org owning the dataset. */
    org_id: Uuid;
    /** Whether a low raw-KCL similarity score should block conversion success for this dataset. */
    require_raw_kcl_similarity_score_for_success: boolean;
    /** Fully-qualified URI to the dataset location (e.g. s3://bucket/prefix). */
    source_uri: string;
    /** Lifecycle status for this dataset. */
    status: OrgDatasetStatus;
    /** Storage provider identifier. */
    storage_provider: StorageProvider;
    /** title:DateTime, format:date-time, description:The date and time the dataset was last updated. */
    updated_at: string;
}
export interface OrgDatasetConversionStatsResponse {
    by_status: {
        [key: string]: number;
    };
    /** Dataset identifier. */
    dataset_id: Uuid;
    /**
     * {
     *   "format": "int64",
     *   "description": "Number of conversions currently in an error state."
     * }
     */
    failures: number;
    /**
     * {
     *   "format": "int64",
     *   "description": "Number of conversions that completed successfully."
     * }
     */
    successes: number;
    /** format:int64, description:Total number of tracked conversions. */
    total: number;
}
export interface OrgDatasetFileConversionDetails {
    /**
     * {
     *   "nullable": true,
     *   "title": "DateTime",
     *   "format": "date-time",
     *   "description": "The date and time the conversion got its current `status`."
     * }
     */
    completed_at?: string;
    /** title:DateTime, format:date-time, description:The date and time the conversion was created. */
    created_at: string;
    /** The ID of the dataset this file is being converted from. */
    dataset_id: Uuid;
    /** File's ETag from dataset bucket, for detecting whether a file needs to be reconverted. */
    file_etag: string;
    /** Location within dataset `path`. */
    file_path: string;
    /**
     * {
     *   "format": "int64",
     *   "description": "Number of bytes, for measuring throughput and debugging conversion errors."
     * }
     */
    file_size: number;
    /** The unique identifier for the conversion. */
    id: Uuid;
    /**
     * {
     *   "nullable": true,
     *   "description": "Tracks which version processed this file when available."
     * }
     */
    importer_version?: string;
    /**
     * {
     *   "nullable": true,
     *   "description": "Plain-text contents of the admin-provided manual KCL override, when available."
     * }
     */
    manual_kcl_override?: string;
    /** Indicates whether a persisted manual KCL override will be used instead of regenerating KCL automatically. */
    manual_kcl_override_active: boolean;
    /**
     * {
     *   "nullable": true,
     *   "title": "DateTime",
     *   "format": "date-time",
     *   "description": "Timestamp when the manual KCL override was last updated."
     * }
     */
    manual_kcl_override_updated_at?: string;
    metadata: unknown;
    /** Snapshot images for the original source model. */
    original_snapshot_images: OrgDatasetSnapshotImage[];
    /**
     * {
     *   "nullable": true,
     *   "description": "Plain-text contents of the converted artifact, when available."
     * }
     */
    output?: string;
    /** Current step in the conversion pipeline. */
    phase: OrgDatasetFileConversionPhase;
    /**
     * {
     *   "nullable": true,
     *   "description": "Plain-text contents of the raw KCL artifact, when available."
     * }
     */
    raw_kcl_output?: string;
    /**
     * {
     *   "nullable": true,
     *   "format": "double",
     *   "description": "Score from `0.0` to `1.0` that quantifies how closely the raw KCL model matches the original model."
     * }
     */
    raw_kcl_similarity_score?: number;
    /** Snapshot images for the raw KCL model. */
    raw_kcl_snapshot_images: OrgDatasetSnapshotImage[];
    /**
     * {
     *   "nullable": true,
     *   "description": "Plain-text contents of the salon/refactored KCL artifact, when available."
     * }
     */
    salon_kcl_output?: string;
    /**
     * {
     *   "nullable": true,
     *   "format": "double",
     *   "description": "Score from `0.0` to `1.0` that quantifies how closely the salon KCL model matches the raw KCL model."
     * }
     */
    salon_kcl_similarity_score?: number;
    /** Snapshot images for the salon/refactored KCL model. */
    salon_kcl_snapshot_images: OrgDatasetSnapshotImage[];
    /**
     * {
     *   "nullable": true,
     *   "title": "DateTime",
     *   "format": "date-time",
     *   "description": "The date and time the conversion started."
     * }
     */
    started_at?: string;
    /** Conversion status. */
    status: OrgDatasetFileConversionStatus;
    /** nullable:true, description:Details associated with `status`. */
    status_message?: string;
    /**
     * {
     *   "title": "DateTime",
     *   "format": "date-time",
     *   "description": "The date and time the conversion was last updated."
     * }
     */
    updated_at: string;
}
export type OrgDatasetFileConversionPhase = 'queued' | 'zoo_generated_original_metadata' | 'snapshot_original' | 'user_provided_metadata' | 'manual_kcl_override' | 'convert_raw_kcl' | 'zoo_generated_raw_kcl_metadata' | 'snapshot_raw_kcl' | 'salon' | 'zoo_generated_salon_kcl_metadata' | 'snapshot_salon_kcl' | 'completed';
export type OrgDatasetFileConversionStatus = 'queued' | 'canceled' | 'in_progress' | 'success' | 'error_user' | 'error_geometry_mismatch' | 'error_unsupported' | 'error_internal';
export interface OrgDatasetFileConversionSummary {
    /**
     * {
     *   "nullable": true,
     *   "title": "DateTime",
     *   "format": "date-time",
     *   "description": "The date and time the conversion got its current `status`."
     * }
     */
    completed_at?: string;
    /** title:DateTime, format:date-time, description:The date and time the conversion was created. */
    created_at: string;
    /** The ID of the dataset this file is being converted from. */
    dataset_id: Uuid;
    /** File's ETag from dataset bucket, for detecting whether a file needs to be reconverted. */
    file_etag: string;
    /** Location within dataset `path`. */
    file_path: string;
    /**
     * {
     *   "format": "int64",
     *   "description": "Number of bytes, for measuring throughput and debugging conversion errors."
     * }
     */
    file_size: number;
    /** The unique identifier for the conversion. */
    id: Uuid;
    /**
     * {
     *   "nullable": true,
     *   "description": "Tracks which version processed this file when available."
     * }
     */
    importer_version?: string;
    /** Indicates whether a persisted manual KCL override will be used instead of regenerating KCL automatically. */
    manual_kcl_override_active: boolean;
    /**
     * {
     *   "nullable": true,
     *   "title": "DateTime",
     *   "format": "date-time",
     *   "description": "Timestamp when the manual KCL override was last updated."
     * }
     */
    manual_kcl_override_updated_at?: string;
    metadata: unknown;
    /** Current step in the conversion pipeline. */
    phase: OrgDatasetFileConversionPhase;
    /**
     * {
     *   "nullable": true,
     *   "format": "double",
     *   "description": "Score from `0.0` to `1.0` that quantifies how closely the raw KCL model matches the original model."
     * }
     */
    raw_kcl_similarity_score?: number;
    /**
     * {
     *   "nullable": true,
     *   "format": "double",
     *   "description": "Score from `0.0` to `1.0` that quantifies how closely the salon KCL model matches the raw KCL model."
     * }
     */
    salon_kcl_similarity_score?: number;
    /**
     * {
     *   "nullable": true,
     *   "title": "DateTime",
     *   "format": "date-time",
     *   "description": "The date and time the conversion started."
     * }
     */
    started_at?: string;
    /** Conversion status. */
    status: OrgDatasetFileConversionStatus;
    /** nullable:true, description:Details associated with `status`. */
    status_message?: string;
    /**
     * {
     *   "title": "DateTime",
     *   "format": "date-time",
     *   "description": "The date and time the conversion was last updated."
     * }
     */
    updated_at: string;
}
export interface OrgDatasetFileConversionSummaryResultsPage {
    /** list of items on this page of results */
    items: OrgDatasetFileConversionSummary[];
    /**
     * {
     *   "nullable": true,
     *   "description": "token used to fetch the next page of results (if any)"
     * }
     */
    next_page?: string;
}
export interface OrgDatasetResultsPage {
    /** list of items on this page of results */
    items: OrgDataset[];
    /**
     * {
     *   "nullable": true,
     *   "description": "token used to fetch the next page of results (if any)"
     * }
     */
    next_page?: string;
}
export interface OrgDatasetSemanticSearchMatch {
    /**
     * {
     *   "format": "int32",
     *   "description": "Zero-based chunk ordinal in the conversion output."
     * }
     */
    chunk_index: number;
    /** Full converted output text for the matched conversion, when available. */
    content: string;
    /** Matching conversion id. */
    conversion_id: Uuid;
    /** format:double, description:Cosine-similarity score in roughly [-1, 1]. */
    similarity: number;
    /** Source path for the conversion. */
    source_file_path: string;
}
export interface OrgDatasetSnapshotImage {
    /** title:String, format:byte, description:Base64-encoded image bytes. */
    data_base64: string;
    /** MIME type of the stored image. */
    mime_type: string;
}
export interface OrgDatasetSource {
    /**
     * {
     *   "nullable": true,
     *   "description": "Identity we assume when accessing the dataset. Required when `provider` is `s3`; ignored for Zoo-managed datasets. Must be configured with the org's `aws_external_id` per AWS confused deputy guidance. See <https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html>."
     * }
     */
    access_role_arn?: string;
    /** Storage provider identifier. */
    provider: StorageProvider;
    /**
     * {
     *   "nullable": true,
     *   "description": "Fully-qualified URI for the dataset contents. Required when `provider` is `s3`; ignored for Zoo-managed datasets."
     * }
     */
    uri?: string;
}
export type OrgDatasetStatus = 'active' | 'deleting' | 'errored';
export interface OrgDetails {
    /**
     * {
     *   "nullable": true,
     *   "description": "If we should allow all future users who are created with email addresses from this domain to join the org."
     * }
     */
    allow_users_in_domain_to_auto_join?: boolean;
    /** format:email, description:The billing email address of the org. */
    billing_email?: string;
    /** nullable:true, description:The org's domain. */
    domain?: string;
    /**
     * {
     *   "nullable": true,
     *   "title": "String",
     *   "format": "uri",
     *   "description": "The image for the org. This is a URL."
     * }
     */
    image?: string;
    /** The name of the org. */
    name?: string;
    /**
     * {
     *   "title": "String",
     *   "default": "",
     *   "format": "phone",
     *   "description": "The org's phone number."
     * }
     */
    phone?: string;
}
export interface OrgMember {
    /** The user's company. */
    company?: string;
    /** title:DateTime, format:date-time, description:The date and time the user was created. */
    created_at: string;
    /** The user's Discord handle. */
    discord?: string;
    /** format:email, description:The email address of the user. */
    email?: string;
    /**
     * {
     *   "nullable": true,
     *   "title": "DateTime",
     *   "format": "date-time",
     *   "description": "The date and time the email address was verified."
     * }
     */
    email_verified?: string;
    /** The user's first name. */
    first_name?: string;
    /** The user's GitHub handle. */
    github?: string;
    /** The unique identifier for the user. */
    id: Uuid;
    /** title:String, format:uri, description:The image avatar for the user. This is a URL. */
    image: string;
    /** The user's last name. */
    last_name?: string;
    /** The name of the user. This is auto populated at first from the authentication provider (if there was a name). It can be updated by the user by updating their `first_name` and `last_name` fields. */
    name?: string;
    /**
     * {
     *   "title": "String",
     *   "default": "",
     *   "format": "phone",
     *   "description": "The user's phone number."
     * }
     */
    phone?: string;
    /** The user's role in the org. */
    role: OrgRole;
    /** title:DateTime, format:date-time, description:The date and time the user was last updated. */
    updated_at: string;
}
export interface OrgMemberResultsPage {
    /** list of items on this page of results */
    items: OrgMember[];
    /**
     * {
     *   "nullable": true,
     *   "description": "token used to fetch the next page of results (if any)"
     * }
     */
    next_page?: string;
}
export type OrgRole = 'admin' | 'member' | 'service_account';
export interface OrientToFace {
    /** Camera settings */
    settings: CameraSettings;
}
export type OriginType = {
    type: 'local';
} | {
    type: 'global';
} | {
    /** Custom origin point. */
    origin: Point3d;
    type: 'custom';
};
export interface OutputFile {
    /**
     * {
     *   "nullable": true,
     *   "description": "The contents of the file. This is base64 encoded so we can ensure it is UTF-8 for JSON."
     * }
     */
    contents?: string;
    /** default:, description:The name of the file. */
    name?: string;
}
export type OutputFormat2d = {
    /** default:ascii, description:Export storage. */
    storage?: DxfStorage;
    type: 'dxf';
};
export type OutputFormat3d = {
    /** nullable:true, format:date-time, description:Timestamp override. */
    created?: string;
    /** Specifies which kind of FBX will be exported. */
    storage: FbxStorage;
    type: 'fbx';
} | {
    /** Specifies how the JSON will be presented. */
    presentation: GltfPresentation;
    /** Specifies which kind of glTF 2.0 will be exported. */
    storage: GltfStorage;
    type: 'gltf';
} | {
    /** Co-ordinate system of output data.

Defaults to the [KittyCAD co-ordinate system].

[KittyCAD co-ordinate system]: ../coord/constant.KITTYCAD.html */
    coords: System;
    type: 'obj';
    /** Export length unit.

Defaults to millimeters. */
    units: UnitLength;
} | {
    /** Co-ordinate system of output data.

Defaults to the [KittyCAD co-ordinate system].

[KittyCAD co-ordinate system]: ../coord/constant.KITTYCAD.html */
    coords: System;
    /** Export selection. */
    selection: Selection;
    /** The storage for the output PLY file. */
    storage: PlyStorage;
    type: 'ply';
    /** Export length unit.

Defaults to millimeters. */
    units: UnitLength;
} | {
    /**
     * {
     *   "default": {
     *     "forward": {
     *       "axis": "y",
     *       "direction": "negative"
     *     },
     *     "up": {
     *       "axis": "z",
     *       "direction": "positive"
     *     }
     *   },
     *   "description": "Co-ordinate system of output data.\n\nDefaults to the [KittyCAD co-ordinate system].\n\n[KittyCAD co-ordinate system]: ../coord/constant.KITTYCAD.html"
     * }
     */
    coords?: System;
    /** nullable:true, format:date-time, description:Timestamp override. */
    created?: string;
    /** default:pretty, description:Presentation style. */
    presentation?: StepPresentation;
    type: 'step';
    /** default:m, description:Export length unit.\n\nDefaults to meters. */
    units?: UnitLength;
} | {
    /** Co-ordinate system of output data.

Defaults to the [KittyCAD co-ordinate system].

[KittyCAD co-ordinate system]: ../coord/constant.KITTYCAD.html */
    coords: System;
    /** Export selection. */
    selection: Selection;
    /** Export storage. */
    storage: StlStorage;
    type: 'stl';
    /** Export length unit.

Defaults to millimeters. */
    units: UnitLength;
};
export type PathCommand = 
/** The path component command type (within a Path) */
'move_to' | 'line_to' | 'bez_curve_to' | 'nurbs_curve_to' | 'add_arc';
export type PathComponentConstraintBound = 
/** The path component constraint bounds type */
'unconstrained' | 'partially_constrained' | 'fully_constrained';
export type PathComponentConstraintType = 
/** The path component constraint type */
'unconstrained' | 'vertical' | 'horizontal' | 'equal_length' | 'parallel' | 'angle_between';
export interface PathGetCurveUuid {
    /** format:uuid, description:The UUID of the curve entity. */
    curve_id: string;
}
export interface PathGetCurveUuidsForVertices {
    /**
     * {
     *   "format": "uuid"
     * }
     */
    curve_ids: string[];
}
export interface PathGetInfo {
    /** All segments in the path, in the order they were added. */
    segments: PathSegmentInfo[];
}
export interface PathGetSketchTargetUuid {
    /** nullable:true, format:uuid, description:The UUID of the sketch target. */
    target_id?: string;
}
export interface PathGetVertexUuids {
    /**
     * {
     *   "format": "uuid"
     * }
     */
    vertex_ids: string[];
}
export type PathSegment = {
    /** End point of the line. */
    end: Point3d;
    /** Whether or not this line is a relative offset */
    relative: boolean;
    type: 'line';
} | {
    /** Center of the circle */
    center: Point2d;
    /** End of the arc along circle's perimeter. */
    end: Angle;
    /** Radius of the circle */
    radius: LengthUnit;
    /** Whether or not this arc is a relative offset */
    relative: boolean;
    /** Start of the arc along circle's perimeter. */
    start: Angle;
    type: 'arc';
} | {
    /** First control point. */
    control1: Point3d;
    /** Second control point. */
    control2: Point3d;
    /** Final control point. */
    end: Point3d;
    /** Whether or not this bezier is a relative offset */
    relative: boolean;
    type: 'bezier';
} | {
    /** Offset of the arc. Negative values will arc clockwise. */
    offset: Angle;
    /** Radius of the arc. Not to be confused with Raiders of the Lost Ark. */
    radius: LengthUnit;
    type: 'tangential_arc';
} | {
    /** nullable:true, description:0 will be interpreted as none/null. */
    angle_snap_increment?: Angle;
    /** Where the arc should end. Must lie in the same plane as the current path pen position. Must not be colinear with current path pen position. */
    to: Point3d;
    type: 'tangential_arc_to';
} | {
    /** End point of the arc. */
    end: Point3d;
    /** Interior point of the arc. */
    interior: Point3d;
    /** Whether or not interior and end are relative to the previous path position */
    relative: boolean;
    type: 'arc_to';
} | {
    /** The angle to rotate the involute by. A value of zero will produce a curve with a tangent along the x-axis at the start point of the curve. */
    angle: Angle;
    /** The involute is described between two circles, end_radius is the radius of the outer circle. */
    end_radius: LengthUnit;
    /** If reverse is true, the segment will start from the end of the involute, otherwise it will start from that start. */
    reverse: boolean;
    /** The involute is described between two circles, start_radius is the radius of the inner circle. */
    start_radius: LengthUnit;
    type: 'circular_involute';
} | {
    /** The center point of the ellipse. */
    center: Point2d;
    /** End of the path along the perimeter of the ellipse. */
    end_angle: Angle;
    /** Major axis of the ellipse. */
    major_axis: Point2d;
    /** Minor radius of the ellipse. */
    minor_radius: LengthUnit;
    /** Start of the path along the perimeter of the ellipse. */
    start_angle: Angle;
    type: 'ellipse';
} | {
    /** End point of the conic. */
    end: Point2d;
    /** Tangent at the end of the conic. */
    end_tangent: Point2d;
    /** Interior point that lies on the conic. */
    interior: Point2d;
    /** Whether or not the interior and end points are relative to the previous path position. */
    relative: boolean;
    /** Tangent at the start of the conic. */
    start_tangent: Point2d;
    type: 'conic_to';
};
export interface PathSegmentInfo {
    /** What is the path segment? */
    command: PathCommand;
    /**
     * {
     *   "nullable": true,
     *   "description": "Which command created this path? This field is absent if the path command is not actually creating a path segment, e.g. moving the pen doesn't create a path segment."
     * }
     */
    command_id?: ModelingCmdId;
    /** Whether or not this segment is a relative offset */
    relative: boolean;
}
export interface PaymentIntent {
    /** The client secret is used for client-side retrieval using a publishable key. The client secret can be used to complete payment setup from your frontend. It should not be stored, logged, or exposed to anyone other than the customer. Make sure that you have TLS enabled on any page that includes the client secret. */
    client_secret: string;
}
export interface PaymentMethod {
    /** The billing info for the payment method. */
    billing_info: BillingInfo;
    /**
     * {
     *   "nullable": true,
     *   "description": "The card, if it is one. For our purposes, this is the only type of payment method that we support."
     * }
     */
    card?: CardDetails;
    /** format:date-time, description:Time at which the object was created. */
    created_at: string;
    /** Unique identifier for the object. */
    id?: string;
    metadata?: {
        [key: string]: string;
    };
    /** The type of payment method. */
    type: PaymentMethodType;
}
export interface PaymentMethodCardChecks {
    /** If a address line1 was provided, results of the check, one of `pass`, `fail`, `unavailable`, or `unchecked`. */
    address_line1_check?: string;
    /** If a address postal code was provided, results of the check, one of `pass`, `fail`, `unavailable`, or `unchecked`. */
    address_postal_code_check?: string;
    /** If a CVC was provided, results of the check, one of `pass`, `fail`, `unavailable`, or `unchecked`. */
    cvc_check?: string;
}
export type PaymentMethodType = 'card';
export interface PerspectiveCameraParameters {
    /** nullable:true, format:float, description:Camera frustum vertical field of view. */
    fov_y?: number;
    /** nullable:true, format:float, description:Camera frustum far plane. */
    z_far?: number;
    /** nullable:true, format:float, description:Camera frustum near plane. */
    z_near?: number;
}
export type PlanInterval = 'day' | 'month' | 'week' | 'year' | 'unknown';
export interface PlanStep {
    /** The edit instructions for the step. */
    edit_instructions: string;
    /** The file path it's editing. */
    filepath_to_edit: string;
}
export interface PlaneIntersectAndProject {
    /**
     * {
     *   "nullable": true,
     *   "description": "Corresponding coordinates of given window coordinates, intersected on given plane."
     * }
     */
    plane_coordinates?: Point2d;
}
export interface PlaneSetColor {
}
export type PlyStorage = 'ascii' | 'binary_little_endian' | 'binary_big_endian';
export interface Point2d {
    /**
     * {
     *   "$ref": "#/components/schemas/LengthUnit"
     * }
     */
    x: LengthUnit;
    /**
     * {
     *   "$ref": "#/components/schemas/LengthUnit"
     * }
     */
    y: LengthUnit;
}
export interface Point3d {
    /**
     * {
     *   "format": "float"
     * }
     */
    x: number;
    /**
     * {
     *   "format": "float"
     * }
     */
    y: number;
    /**
     * {
     *   "format": "float"
     * }
     */
    z: number;
}
export interface Point4d {
    /**
     * {
     *   "format": "float"
     * }
     */
    w: number;
    /**
     * {
     *   "format": "float"
     * }
     */
    x: number;
    /**
     * {
     *   "format": "float"
     * }
     */
    y: number;
    /**
     * {
     *   "format": "float"
     * }
     */
    z: number;
}
export interface Pong {
    /** The pong response. */
    message: string;
}
export type PostEffectType = 
/** Post effect type */
'phosphor' | 'ssao' | 'noeffect';
export interface PriceUpsertRequest {
    /** default:true, description:Whether the price should be active. */
    active?: boolean;
    /** Billing model (flat or per-user). */
    billing_model: SubscriptionPlanBillingModel;
    /** Cadence for billing (day, week, month, year). */
    cadence: PlanInterval;
    /** format:double, description:Amount in USD. */
    unit_amount: number;
}
export interface PrimitiveTopologyFallback {
    /**
     * {
     *   "format": "uuid",
     *   "description": "UUID of the parent entity that owns the primitive (solid3d, solid2d, or path)."
     * }
     */
    parent_id: string;
    /**
     * {
     *   "format": "uint32",
     *   "minimum": 0,
     *   "description": "Index of the face, edge, vertex, profile curve, or path segment on `parent_id`."
     * }
     */
    primitive_index: number;
}
export interface PrivacySettings {
    /** If we can train on the data. If the user is a member of an organization, the organization's setting will override this. The organization's setting takes priority. */
    can_train_on_data: boolean;
}
export type ProjectArchiveFormat = 'tar' | 'zip';
export interface ProjectCategoryResponse {
    /** Optional helper text shown to users choosing a category. */
    description: string;
    /** Human-readable category name. */
    display_name: string;
    /** Unique category identifier. */
    id: Uuid;
    /** Stable URL-safe category slug. */
    slug: string;
    /**
     * {
     *   "format": "int64",
     *   "description": "Sort order used when presenting categories in clients."
     * }
     */
    sort_order: number;
}
export interface ProjectEntityToPlane {
    /** Projected points. */
    projected_points: Point3d[];
}
export interface ProjectFileResponse {
    /** format:int64, description:File size in bytes. */
    byte_size: number;
    /** Stored MIME type. */
    content_type: string;
    /** title:DateTime, format:date-time, description:File creation timestamp. */
    created_at: string;
    /** Logical role within the project. */
    file_role: KclProjectFileRole;
    /** Unique file identifier. */
    id: Uuid;
    /** Relative path as seen inside the project. */
    relative_path: string;
    /**
     * {
     *   "nullable": true,
     *   "description": "Hex-encoded SHA-256 of the stored contents, when known."
     * }
     */
    sha256?: string;
    /** format:int64, description:Stable ordering hint. */
    sort_order: number;
    /** title:DateTime, format:date-time, description:File last update timestamp. */
    updated_at: string;
}
export interface ProjectPointsToPlane {
    /** Projected points. */
    projected_points: Point3d[];
}
export interface ProjectPublicationInfoResponse {
    /** Whether the current editable draft differs from the last live version. */
    has_unpublished_changes: boolean;
    /**
     * {
     *   "nullable": true,
     *   "title": "DateTime",
     *   "format": "date-time",
     *   "description": "When a version of this project most recently became public."
     * }
     */
    last_published_at?: string;
    /**
     * {
     *   "nullable": true,
     *   "description": "Last version that successfully went live for this project."
     * }
     */
    last_published_version_id?: Uuid;
    /**
     * {
     *   "nullable": true,
     *   "title": "DateTime",
     *   "format": "date-time",
     *   "description": "When the current version was most recently submitted for review."
     * }
     */
    submitted_at?: string;
}
export interface ProjectResponse {
    /** Selected category identifiers associated with the project. */
    category_ids: Uuid[];
    /** title:DateTime, format:date-time, description:When the project row was created. */
    created_at: string;
    /** User-facing project description. */
    description: string;
    /** Relative path to the entrypoint KCL file. */
    entrypoint_path: string;
    /** Project files currently stored for the owner-visible draft. */
    files: ProjectFileResponse[];
    /** Unique project identifier. */
    id: Uuid;
    /** Current preview generation state. */
    preview_status: KclProjectPreviewStatus;
    /**
     * {
     *   "nullable": true,
     *   "description": "Stable authenticated thumbnail URL, when one exists."
     * }
     */
    preview_url?: string;
    /** Relative path to the project's manifest file. */
    project_toml_path: string;
    /** Owner-facing publication metadata for the current and last live version. */
    publication: ProjectPublicationInfoResponse;
    /** Current publication workflow state. */
    publication_status: KclProjectPublicationStatus;
    /** User-facing project title. */
    title: string;
    /** title:DateTime, format:date-time, description:When the project row was last updated. */
    updated_at: string;
}
export interface ProjectShareLinkResponse {
    /** Access policy for the share link. */
    access_mode: KclProjectShareLinkAccessMode;
    /** title:DateTime, format:date-time, description:Share-link creation timestamp. */
    created_at: string;
    /** Opaque identifier used in the public shared URL. */
    key: string;
    /** title:DateTime, format:date-time, description:Share-link last update timestamp. */
    updated_at: string;
    /** format:uri, description:Fully-qualified URL that can be shared. */
    url: string;
}
export interface ProjectSummaryResponse {
    /** Selected category identifiers associated with the project. */
    category_ids: Uuid[];
    /** title:DateTime, format:date-time, description:When the project row was created. */
    created_at: string;
    /** User-facing project description. */
    description: string;
    /** Relative path to the entrypoint KCL file. */
    entrypoint_path: string;
    /** Unique project identifier. */
    id: Uuid;
    /** Current preview generation state. */
    preview_status: KclProjectPreviewStatus;
    /**
     * {
     *   "nullable": true,
     *   "description": "Stable authenticated thumbnail URL, when one exists."
     * }
     */
    preview_url?: string;
    /** Relative path to the project's manifest file. */
    project_toml_path: string;
    /** Owner-facing publication metadata for the current and last live version. */
    publication: ProjectPublicationInfoResponse;
    /** Current publication workflow state. */
    publication_status: KclProjectPublicationStatus;
    /** User-facing project title. */
    title: string;
    /** title:DateTime, format:date-time, description:When the project row was last updated. */
    updated_at: string;
}
export interface PublicEmailMarketingConsentRequest {
    /** format:email, description:The email */
    email: string;
}
export interface PublicMailingListMembershipRequest {
    /** format:email, description:Email address to add or remove. */
    email: string;
}
export interface PublicProjectOwnerResponse {
    /** Community-facing username/handle. */
    username: string;
}
export interface PublicProjectResponse {
    /** Selected public categories. */
    categories: ProjectCategoryResponse[];
    /** Public project description. */
    description: string;
    /** Unique project identifier. */
    id: Uuid;
    /** format:int64, description:Current total public like count for the project. */
    like_count: number;
    /**
     * {
     *   "nullable": true,
     *   "description": "Whether the authenticated viewer currently likes the project."
     * }
     */
    liked?: boolean;
    /** Public creator metadata. */
    owner: PublicProjectOwnerResponse;
    /** nullable:true, description:Stable public thumbnail URL, when one exists. */
    preview_url?: string;
    /** title:DateTime, format:date-time, description:When the project was published publicly. */
    published_at: string;
    /** Public project title. */
    title: string;
}
export interface PublicProjectVoteResponse {
    /** format:int64, description:Current total public like count for the project. */
    like_count: number;
    /** Whether the authenticated viewer currently likes the project. */
    liked: boolean;
}
export interface QueryEntityType {
    /** How to reference the provided entity using face ids. */
    reference: EntityReference;
}
export interface QueryEntityTypeWithPoint {
    /**
     * {
     *   "nullable": true,
     *   "description": "How to reference the selected entity using face ids. None if no entity was found at the given point (e.g. clicked in empty space)."
     * }
     */
    reference?: EntityReference;
}
export interface RawFile {
    /**
     * {
     *   "format": "uint8",
     *   "minimum": 0
     * }
     */
    contents: number[];
    /** The name of the file. */
    name: string;
}
export type ReasoningMessage = {
    /** The content of the reasoning. */
    content: string;
    type: 'text';
} | {
    /** The content of the reasoning. */
    content: string;
    type: 'markdown';
} | {
    /** The content of the reasoning. */
    content: string;
    type: 'kcl_docs';
} | {
    /** The content of the reasoning. */
    content: string;
    type: 'kcl_code_examples';
} | {
    /** The content of the reasoning. */
    content: string;
    type: 'feature_tree_outline';
} | {
    /** The steps in the design plan. */
    steps: PlanStep[];
    type: 'design_plan';
} | {
    /** The content of the reasoning. */
    code: string;
    type: 'generated_kcl_code';
} | {
    /** The error message. */
    error: string;
    type: 'kcl_code_error';
} | {
    /** The content of the file. */
    content: string;
    /** The file name. */
    file_name: string;
    type: 'created_kcl_file';
} | {
    /** The content of the file. */
    content: string;
    /** The file name. */
    file_name: string;
    type: 'updated_kcl_file';
} | {
    /** The file name. */
    file_name: string;
    type: 'deleted_kcl_file';
};
export interface ReconfigureStream {
}
export interface RegionGetQueryPoint {
    /** A point that is inside of the queried region, in the same coordinate frame as the sketch itself */
    query_point: Point2d;
}
export type RegionVersion = 'V0' | 'V1';
export type RelativeTo = 'sketch_plane' | 'trajectory_curve';
export interface RemoveSceneObjects {
}
export interface Revolve {
    /** Any new bodies created by the request. */
    bodies_created?: BodiesCreated;
    /** Any existing bodies updated by the request. */
    bodies_updated?: BodiesUpdated;
}
export interface RevolveAboutEdge {
    /** Any new bodies created by the request. */
    bodies_created?: BodiesCreated;
    /** Any existing bodies updated by the request. */
    bodies_updated?: BodiesUpdated;
}
export interface Rotation {
    /** Rotate this far about the rotation axis. Defaults to zero (i.e. no rotation). */
    angle: Angle;
    /** Rotation axis. Defaults to (0, 0, 1) (i.e. the Z axis). */
    axis: Point3d;
    /** Origin of the rotation. If one isn't provided, the object will rotate about its own bounding box center. */
    origin: OriginType;
}
export interface RtcIceCandidateInit {
    /** The candidate string associated with the object. */
    candidate: string;
    /**
     * {
     *   "nullable": true,
     *   "format": "uint16",
     *   "minimum": 0,
     *   "description": "The index (starting at zero) of the m-line in the SDP this candidate is associated with."
     * }
     */
    sdpMLineIndex?: number;
    /**
     * {
     *   "nullable": true,
     *   "description": "The identifier of the \"media stream identification\" as defined in [RFC 8841](https://tools.ietf.org/html/rfc8841)."
     * }
     */
    sdpMid?: string;
    /**
     * {
     *   "nullable": true,
     *   "description": "The username fragment (as defined in [RFC 8445](https://tools.ietf.org/html/rfc8445#section-5.2.1)) associated with the object."
     * }
     */
    usernameFragment?: string;
}
export type RtcSdpType = 'unspecified' | 'offer' | 'pranswer' | 'answer' | 'rollback';
export interface RtcSessionDescription {
    /** SDP string. */
    sdp: string;
    /** SDP type. */
    type: RtcSdpType;
}
export type SalesInquiryType = 'pilot_inquiry' | 'general_inquiry' | 'sales_question' | 'developer_inquiry' | 'partnership_opportunity' | 'other_sales_inquiry';
export interface SamlIdentityProvider {
    /** title:String, format:uri, description:The ACS (Assertion Consumer Service) URL. */
    acs_url: string;
    /**
     * {
     *   "title": "DateTime",
     *   "format": "date-time",
     *   "description": "The date and time the SAML identity provider was created."
     * }
     */
    created_at: string;
    /** The unique identifier for the SAML identity provider. */
    id: Uuid;
    /** The entity ID of the SAML identity provider. */
    idp_entity_id?: string;
    /** The metadata document as a string. */
    idp_metadata_document_string?: string;
    /** The organization ID the SAML identity provider belongs to. */
    org_id: Uuid;
    /**
     * {
     *   "nullable": true,
     *   "writeOnly": true,
     *   "title": "String",
     *   "format": "byte",
     *   "description": "The private key for the SAML identity provider. This is the PEM corresponding to the X509 pair.\n\nNever serialized in API responses: the SP signing key is a secret used internally to sign AuthnRequests, and would otherwise leak to admin GETs, audit logs, support tooling, and browser history. Input is accepted via the dedicated `SamlIdentityProviderCreate` body type, not by deserializing this struct."
     * }
     */
    private_key?: string;
    /**
     * {
     *   "nullable": true,
     *   "title": "String",
     *   "format": "byte",
     *   "description": "The public certificate for the SAML identity provider. This is the PEM corresponding to the X509 pair."
     * }
     */
    public_cert?: string;
    /** title:String, format:uri, description:The SLO (Single Logout) URL. */
    slo_url: string;
    /**
     * {
     *   "format": "email",
     *   "description": "The technical contact email address for the SAML identity provider."
     * }
     */
    technical_contact_email?: string;
    /**
     * {
     *   "title": "DateTime",
     *   "format": "date-time",
     *   "description": "The date and time the SAML identity provider was last updated."
     * }
     */
    updated_at: string;
}
export interface SamlIdentityProviderCreate {
    /** The entity ID of the SAML identity provider. */
    idp_entity_id?: string;
    /** The source of an identity provider metadata descriptor. */
    idp_metadata_source: IdpMetadataSource;
    /** nullable:true, description:The request signing key pair. */
    signing_keypair?: DerEncodedKeyPair;
    /**
     * {
     *   "format": "email",
     *   "description": "The technical contact email address for the SAML identity provider."
     * }
     */
    technical_contact_email?: string;
}
export interface SceneClearAll {
}
export interface SceneGetEntityIds {
    entity_ids: string[][];
}
export type SceneSelectionType = 'replace' | 'add' | 'remove';
export type SceneToolType = 
/** The type of scene's active tool */
'camera_revolve' | 'select' | 'move' | 'sketch_line' | 'sketch_tangential_arc' | 'sketch_curve' | 'sketch_curve_mod';
export interface SelectAdd {
}
export interface SelectClear {
}
export interface SelectEntity {
}
export interface SelectGet {
    /**
     * {
     *   "format": "uuid"
     * }
     */
    entity_ids: string[];
}
export interface SelectRegionFromPoint {
    /**
     * {
     *   "nullable": true,
     *   "description": "The region the user clicked on. If they clicked an open space which isn't a region, this returns None."
     * }
     */
    region?: SelectedRegion;
}
export interface SelectRemove {
}
export interface SelectReplace {
}
export interface SelectWithPoint {
    /** nullable:true, format:uuid, description:The UUID of the entity that was selected. */
    entity_id?: string;
}
export interface SelectedRegion {
    /**
     * {
     *   "default": false,
     *   "description": "By default (when this is false), curve counterclockwise at intersections. If this is true, instead curve clockwise."
     * }
     */
    curve_clockwise?: boolean;
    /**
     * {
     *   "default": -1,
     *   "format": "int32",
     *   "description": "At which intersection between `segment` and `intersection_segment` should we stop following the `segment` and start following `intersection_segment`? Defaults to -1, which means the last intersection."
     * }
     */
    intersection_index?: number;
    /**
     * {
     *   "format": "uuid",
     *   "description": "Second segment to follow to find the region. Intersects the first segment."
     * }
     */
    intersection_segment: string;
    /** format:uuid, description:First segment to follow to find the region. */
    segment: string;
}
export type Selection = {
    type: 'default_scene';
} | {
    /** format:uint, minimum:0, description:The index. */
    index: number;
    type: 'scene_by_index';
} | {
    /** The name. */
    name: string;
    type: 'scene_by_name';
} | {
    /** format:uint, minimum:0, description:The index. */
    index: number;
    type: 'mesh_by_index';
} | {
    /** The name. */
    name: string;
    type: 'mesh_by_name';
};
export interface SendObject {
}
export interface ServiceAccount {
    /** title:DateTime, format:date-time, description:The date and time the API token was created. */
    created_at: string;
    /** The unique identifier for the API token. */
    id: Uuid;
    /** If the token is valid. We never delete API tokens, but we can mark them as invalid. We save them for ever to preserve the history of the API token. */
    is_valid: boolean;
    /** nullable:true, description:An optional label for the API token. */
    label?: string;
    /** The ID of the organization that owns the API token. */
    org_id: Uuid;
    /** The API token itself. */
    token: ServiceAccountUuid;
    /** title:DateTime, format:date-time, description:The date and time the API token was last updated. */
    updated_at: string;
}
export interface ServiceAccountResultsPage {
    /** list of items on this page of results */
    items: ServiceAccount[];
    /**
     * {
     *   "nullable": true,
     *   "description": "token used to fetch the next page of results (if any)"
     * }
     */
    next_page?: string;
}
export type ServiceAccountUuid = 
/** An auth token. A uuid with a prefix of svc- */
string;
export interface Session {
    /** title:DateTime, format:date-time, description:The date and time the session was created. */
    created_at: string;
    /** title:DateTime, format:date-time, description:The date and time the session expires. */
    expires: string;
    /** The unique identifier for the session. */
    id: Uuid;
    /** The session token. */
    session_token: SessionUuid;
    /** title:DateTime, format:date-time, description:The date and time the session was last updated. */
    updated_at: string;
    /** The user ID of the user that the session belongs to. */
    user_id: Uuid;
}
export type SessionUuid = 
/** An auth token. A uuid with a prefix of ses- */
string;
export interface SetBackgroundColor {
}
export interface SetCurrentToolProperties {
}
export interface SetDefaultSystemProperties {
}
export interface SetGridAutoScale {
}
export interface SetGridReferencePlane {
}
export interface SetGridScale {
}
export interface SetObjectTransform {
}
export interface SetOrderIndependentTransparency {
    /** Is it now enabled, or disabled? */
    enabled: boolean;
}
export interface SetSceneUnits {
}
export interface SetSelectionFilter {
}
export interface SetSelectionType {
}
export interface SetTool {
}
export interface Shortlink {
    /** title:DateTime, format:date-time, description:The date and time the shortlink was created. */
    created_at: string;
    /** The unique identifier for the shortlink. */
    id: Uuid;
    /** The key of the shortlink. This is the short part of the URL. */
    key: string;
    /** nullable:true, description:The organization ID of the shortlink. */
    org_id?: Uuid;
    /** nullable:true, description:The hash of the password for the shortlink. */
    password_hash?: string;
    /**
     * {
     *   "default": false,
     *   "description": "If the shortlink should be restricted to the organization. This only applies to org shortlinks. If you are creating a user shortlink and you are not a member of a team or enterprise and you try to set this to true, it will fail."
     * }
     */
    restrict_to_org?: boolean;
    /** title:DateTime, format:date-time, description:The date and time the shortlink was last updated. */
    updated_at: string;
    /** The ID of the user that made the shortlink. */
    user_id: Uuid;
    /** title:String, format:uri, description:The URL the shortlink redirects to. */
    value: string;
}
export interface ShortlinkResultsPage {
    /** list of items on this page of results */
    items: Shortlink[];
    /**
     * {
     *   "nullable": true,
     *   "description": "token used to fetch the next page of results (if any)"
     * }
     */
    next_page?: string;
}
export interface SideFace {
    /** format:uuid, description:Desired ID for the resulting face. */
    face_id: string;
    /** format:uuid, description:ID of the path this face is being extruded from. */
    path_id: string;
}
export interface SketchModeDisable {
}
export interface Solid2dAddHole {
}
export interface Solid3dCutEdgeReferences {
}
export interface Solid3dCutEdges {
}
export interface Solid3dFilletEdge {
}
export interface Solid3dFlip {
}
export interface Solid3dFlipFace {
}
export interface Solid3dGetAdjacencyInfo {
    /** Details of each edge. */
    edges: AdjacencyInfo[];
}
export interface Solid3dGetAllEdgeFaces {
    /**
     * {
     *   "format": "uuid"
     * }
     */
    faces: string[];
}
export interface Solid3dGetAllOppositeEdges {
    /**
     * {
     *   "format": "uuid"
     * }
     */
    edges: string[];
}
export interface Solid3dGetBodyType {
    /** The body type */
    body_type: BodyType;
}
export interface Solid3dGetCommonEdge {
    /** nullable:true, format:uuid, description:The UUID of the common edge, if any. */
    edge?: string;
}
export interface Solid3dGetEdgeUuid {
    /** format:uuid, description:The UUID of the edge. */
    edge_id: string;
}
export interface Solid3dGetExtrusionFaceInfo {
    /** Details of each face. */
    faces: ExtrusionFaceInfo[];
}
export interface Solid3dGetFaceUuid {
    /** format:uuid, description:The UUID of the face. */
    face_id: string;
}
export interface Solid3dGetNextAdjacentEdge {
    /** nullable:true, format:uuid, description:The UUID of the edge. */
    edge?: string;
}
export interface Solid3dGetOppositeEdge {
    /** format:uuid, description:The UUID of the edge. */
    edge: string;
}
export interface Solid3dGetPrevAdjacentEdge {
    /** nullable:true, format:uuid, description:The UUID of the edge. */
    edge?: string;
}
export interface Solid3dJoin {
}
export interface Solid3dMultiJoin {
}
export interface Solid3dShellFace {
}
export interface SourcePosition {
    /** format:uint32, minimum:0, description:The column number. */
    column: number;
    /** format:uint32, minimum:0, description:The line number. */
    line: number;
}
export interface SourceRange {
    /** The end of the range. */
    end: SourcePosition;
    /** The start of the range. */
    start: SourcePosition;
}
export interface SourceRangePrompt {
    /**
     * {
     *   "nullable": true,
     *   "description": "The name of the file the source range applies to. This is the relative path to the file from the root of the project. This only applies to multi-file iterations."
     * }
     */
    file?: string;
    /** The prompt for the changes. */
    prompt: string;
    /** The range of the source code to change. If you want to apply the prompt to the whole file, set the start to 0 and the end to the end of the file. */
    range: SourceRange;
}
export interface StartPath {
}
export type StepPresentation = 'compact' | 'pretty';
export type StlStorage = 'ascii' | 'binary';
export type StorageProvider = 's3' | 'zoo_managed';
export interface StoreCouponParams {
    /** format:uint32, minimum:0, description:The percentage off. */
    percent_off: number;
}
export type SubscriptionActionType = 'payment_intent' | 'setup_intent';
export type SubscriptionBillingMode = 'standard' | 'contract';
export type SubscriptionPlanBillingModel = 'flat' | 'per_user';
export interface SubscriptionPlanPriceRecord {
    /** Whether this price is currently active. */
    active: boolean;
    /** Billing model persisted in the database (`flat`, `per_user`, or `enterprise`). */
    billing_model: SubscriptionPlanBillingModel;
    /** Billing cadence string (for example `month` or `year`). */
    cadence: PlanInterval;
    /** title:DateTime, format:date-time, description:Timestamp when the price row was created. */
    created_at: string;
    /** Unique identifier for the plan price entry. */
    id: Uuid;
    /** nullable:true, description:Stripe price identifier, when synchronized. */
    stripe_price_id?: string;
    /** Foreign key referencing the parent plan. */
    subscription_plan_id: Uuid;
    /**
     * {
     *   "nullable": true,
     *   "pattern": "^-?[0-9]+(\\.[0-9]+)?$",
     *   "description": "Optional monetary amount associated with the price row."
     * }
     */
    unit_amount?: string;
    /** title:DateTime, format:date-time, description:Timestamp when the price row was last updated. */
    updated_at: string;
}
export interface SubscriptionTierFeature {
    /** minLength:1, maxLength:80, description:Information about the feature. */
    info: string;
}
export type SubscriptionTierPrice = {
    /** The interval the price is charged. */
    interval: PlanInterval;
    /** title:double, format:money-usd, description:The price. */
    price: number;
    type: 'flat';
} | {
    /** The interval the price is charged. */
    interval: PlanInterval;
    /** title:double, format:money-usd, description:The price. */
    price: number;
    type: 'per_user';
} | {
    type: 'contract';
};
export type SubscriptionTierType = {
    type: 'individual';
} | {
    /** Whether or not the subscription type supports SAML SSO. */
    saml_sso: boolean;
    type: 'organization';
};
export type SubscriptionTrainingDataBehavior = 'always' | 'default_on' | 'default_off';
export interface SuccessWebSocketResponse {
    /**
     * {
     *   "nullable": true,
     *   "format": "uuid",
     *   "description": "Which request this is a response to. If the request was a modeling command, this is the modeling command ID. If no request ID was sent, this will be null."
     * }
     */
    request_id?: string;
    /** The data sent with a successful response. This will be flattened into a 'type' and 'data' field. */
    resp: OkWebSocketResponseData;
    /** Always true */
    success: boolean;
}
export type SupportInquiryType = 'technical_support' | 'account_management' | 'other_support_inquiry';
export type SupportTier = 'community' | 'standard_email' | 'priority_email' | 'premium';
export interface SurfaceArea {
    /** The output unit for the surface area. */
    output_unit: UnitArea;
    /** format:double, description:The surface area. */
    surface_area: number;
}
export interface SurfaceBlend {
}
export interface SurfaceCreated {
    /**
     * {
     *   "format": "uuid"
     * }
     */
    from_segments: string[];
    /** format:uuid, description:The surface's ID. */
    id: string;
    /** format:uint32, minimum:0, description:Which number face of the parent body is this? */
    primitive_face_index: number;
}
export interface SurfaceEdgeReference {
    /** A list of the edge ids that belong to the body. */
    edges: FractionOfEdge[];
    /** format:uuid, description:The id of the body. */
    object_id: string;
}
export interface Sweep {
    /** Any new bodies created by the request. */
    bodies_created?: BodiesCreated;
    /** Any existing bodies updated by the request. */
    bodies_updated?: BodiesUpdated;
}
export interface System {
    /** Axis the front face of a model looks along. */
    forward: AxisDirectionPair;
    /** Axis pointing up and away from a model. */
    up: AxisDirectionPair;
}
export interface TakeSnapshot {
    /** title:String, format:byte, description:Contents of the image. */
    contents: string;
}
export interface TextToCad {
    /**
     * {
     *   "nullable": true,
     *   "description": "The code for the model. This is optional but will be required in the future once we are at v1."
     * }
     */
    code?: string;
    /**
     * {
     *   "nullable": true,
     *   "title": "DateTime",
     *   "format": "date-time",
     *   "description": "The time and date the API call was completed."
     * }
     */
    completed_at?: string;
    /** The conversation ID Conversations group different prompts together. */
    conversation_id: Uuid;
    /** title:DateTime, format:date-time, description:The time and date the API call was created. */
    created_at: string;
    /** nullable:true, description:The error the function returned, if any. */
    error?: string;
    /** nullable:true, description:Feedback from the user, if any. */
    feedback?: MlFeedback;
    /** The unique identifier of the API call.
  
  This is the same as the API call ID. */
    id: Uuid;
    /** nullable:true, description:The version of kcl requested. */
    kcl_version?: string;
    /** The model being used. */
    model: TextToCadModel;
    /** The version of the model. */
    model_version: string;
    /** The output format of the model. */
    output_format: FileExportFormat;
    outputs?: {
        [key: string]: string;
    };
    /** The prompt. */
    prompt: string;
    /**
     * {
     *   "nullable": true,
     *   "title": "DateTime",
     *   "format": "date-time",
     *   "description": "The time and date the API call was started."
     * }
     */
    started_at?: string;
    /** The status of the API call. */
    status: ApiCallStatus;
    /** title:DateTime, format:date-time, description:The time and date the API call was last updated. */
    updated_at: string;
    /** The user ID of the user who created the API call. */
    user_id: Uuid;
}
export interface TextToCadCreateBody {
    /**
     * {
     *   "nullable": true,
     *   "description": "The version of kcl to use. If empty, the latest version will be used."
     * }
     */
    kcl_version?: string;
    /**
     * {
     *   "nullable": true,
     *   "description": "Zoo provided model, or custom model which should be used to process this request."
     * }
     */
    model_version?: string;
    /**
     * {
     *   "nullable": true,
     *   "description": "The project name. This is used to tie the prompt to a project. Which helps us make our models better over time."
     * }
     */
    project_name?: string;
    /** The prompt for the desired part. */
    prompt: string;
}
export interface TextToCadIteration {
    /** The code for the new model. */
    code: string;
    /**
     * {
     *   "nullable": true,
     *   "title": "DateTime",
     *   "format": "date-time",
     *   "description": "The time and date the API call was completed."
     * }
     */
    completed_at?: string;
    /** The conversation ID Conversations group different prompts together. */
    conversation_id: Uuid;
    /** title:DateTime, format:date-time, description:The time and date the API call was created. */
    created_at: string;
    /** nullable:true, description:The error the function returned, if any. */
    error?: string;
    /** nullable:true, description:Feedback from the user, if any. */
    feedback?: MlFeedback;
    /** The unique identifier of the API call.
  
  This is the same as the API call ID. */
    id: Uuid;
    /** The model being used. */
    model: TextToCadModel;
    /** The version of the model. */
    model_version: string;
    /** The original source code for the model, previous to the changes. */
    original_source_code: string;
    /**
     * {
     *   "nullable": true,
     *   "description": "The prompt for the overall changes. This is optional if you only want changes on specific source ranges."
     * }
     */
    prompt?: string;
    /** The source ranges the user suggested to change. */
    source_ranges: SourceRangePrompt[];
    /**
     * {
     *   "nullable": true,
     *   "title": "DateTime",
     *   "format": "date-time",
     *   "description": "The time and date the API call was started."
     * }
     */
    started_at?: string;
    /** The status of the API call. */
    status: ApiCallStatus;
    /** title:DateTime, format:date-time, description:The time and date the API call was last updated. */
    updated_at: string;
    /** The user ID of the user who created the API call. */
    user_id: Uuid;
}
export interface TextToCadIterationBody {
    /**
     * {
     *   "nullable": true,
     *   "description": "The version of kcl to use. If empty, the latest version will be used."
     * }
     */
    kcl_version?: string;
    /** The source code for the model (in kcl) that is to be edited. */
    original_source_code: string;
    /**
     * {
     *   "nullable": true,
     *   "description": "The project name. This is used to tie the prompt to a project. Which helps us make our models better over time."
     * }
     */
    project_name?: string;
    /**
     * {
     *   "nullable": true,
     *   "description": "The prompt for the model, if not using source ranges."
     * }
     */
    prompt?: string;
    /** The source ranges the user suggested to change. If empty, the prompt will be used and is required. */
    source_ranges: SourceRangePrompt[];
}
export type TextToCadModel = 'cad' | 'kcl' | 'kcl_iteration';
export interface TextToCadMultiFileIteration {
    /**
     * {
     *   "nullable": true,
     *   "title": "DateTime",
     *   "format": "date-time",
     *   "description": "The time and date the API call was completed."
     * }
     */
    completed_at?: string;
    /** The conversation ID Conversations group different prompts together. */
    conversation_id: Uuid;
    /** title:DateTime, format:date-time, description:The time and date the API call was created. */
    created_at: string;
    /** nullable:true, description:The error the function returned, if any. */
    error?: string;
    /** nullable:true, description:Feedback from the user, if any. */
    feedback?: MlFeedback;
    /** The unique identifier of the API call.
  
  This is the same as the API call ID. */
    id: Uuid;
    /**
     * {
     *   "nullable": true,
     *   "description": "The version of kcl to use. If empty, the latest version will be used."
     * }
     */
    kcl_version?: string;
    /** The model being used. */
    model: TextToCadModel;
    /** The version of the model. */
    model_version: string;
    outputs?: {
        [key: string]: string;
    };
    /**
     * {
     *   "nullable": true,
     *   "description": "The project name. This is used to tie the prompt to a project. Which helps us make our models better over time."
     * }
     */
    project_name?: string;
    /**
     * {
     *   "nullable": true,
     *   "description": "The prompt for the overall changes. This is optional if you only want changes on specific source ranges. This will apply to all the files."
     * }
     */
    prompt?: string;
    /** The source ranges the user suggested to change. */
    source_ranges: SourceRangePrompt[];
    /**
     * {
     *   "nullable": true,
     *   "title": "DateTime",
     *   "format": "date-time",
     *   "description": "The time and date the API call was started."
     * }
     */
    started_at?: string;
    /** The status of the API call. */
    status: ApiCallStatus;
    /** title:DateTime, format:date-time, description:The time and date the API call was last updated. */
    updated_at: string;
    /** The user ID of the user who created the API call. */
    user_id: Uuid;
}
export interface TextToCadMultiFileIterationBody {
    /**
     * {
     *   "nullable": true,
     *   "description": "The conversation ID Conversations group different prompts together. This should be omitted when starting a new conversation. The conversation_id returned in the response should be used to link future messages in the same conversation."
     * }
     */
    conversation_id?: Uuid;
    /**
     * {
     *   "nullable": true,
     *   "description": "The version of kcl to use. If empty, the latest version will be used."
     * }
     */
    kcl_version?: string;
    /**
     * {
     *   "nullable": true,
     *   "description": "The project name. This is used to tie the prompt to a project. Which helps us make our models better over time."
     * }
     */
    project_name?: string;
    /**
     * {
     *   "nullable": true,
     *   "description": "The prompt for the overall changes. This is optional if you only want changes on specific source ranges. This will apply to all the files. If you want to apply a prompt to just a single file, use the source_ranges field and you can leave this empty."
     * }
     */
    prompt?: string;
    /** The source ranges the user suggested to change. If empty, the prompt will be used and is required. */
    source_ranges?: SourceRangePrompt[];
}
export type TextToCadResponse = {
    /**
     * {
     *   "nullable": true,
     *   "description": "The code for the model. This is optional but will be required in the future once we are at v1."
     * }
     */
    code?: string;
    /**
     * {
     *   "nullable": true,
     *   "title": "DateTime",
     *   "format": "date-time",
     *   "description": "The time and date the API call was completed."
     * }
     */
    completed_at?: string;
    /** The conversation ID Conversations group different prompts together. */
    conversation_id: Uuid;
    /** title:DateTime, format:date-time, description:The time and date the API call was created. */
    created_at: string;
    /** nullable:true, description:The error the function returned, if any. */
    error?: string;
    /** nullable:true, description:Feedback from the user, if any. */
    feedback?: MlFeedback;
    /** The unique identifier of the API call.

This is the same as the API call ID. */
    id: Uuid;
    /** nullable:true, description:The version of kcl requested. */
    kcl_version?: string;
    /** The model being used. */
    model: TextToCadModel;
    /** The version of the model. */
    model_version: string;
    /** The output format of the model. */
    output_format: FileExportFormat;
    outputs?: {
        [key: string]: string;
    };
    /** The prompt. */
    prompt: string;
    /**
     * {
     *   "nullable": true,
     *   "title": "DateTime",
     *   "format": "date-time",
     *   "description": "The time and date the API call was started."
     * }
     */
    started_at?: string;
    /** The status of the API call. */
    status: ApiCallStatus;
    type: 'text_to_cad';
    /** title:DateTime, format:date-time, description:The time and date the API call was last updated. */
    updated_at: string;
    /** The user ID of the user who created the API call. */
    user_id: Uuid;
} | {
    /** The code for the new model. */
    code: string;
    /**
     * {
     *   "nullable": true,
     *   "title": "DateTime",
     *   "format": "date-time",
     *   "description": "The time and date the API call was completed."
     * }
     */
    completed_at?: string;
    /** The conversation ID Conversations group different prompts together. */
    conversation_id: Uuid;
    /** title:DateTime, format:date-time, description:The time and date the API call was created. */
    created_at: string;
    /** nullable:true, description:The error the function returned, if any. */
    error?: string;
    /** nullable:true, description:Feedback from the user, if any. */
    feedback?: MlFeedback;
    /** The unique identifier of the API call.

This is the same as the API call ID. */
    id: Uuid;
    /** The model being used. */
    model: TextToCadModel;
    /** The version of the model. */
    model_version: string;
    /** The original source code for the model, previous to the changes. */
    original_source_code: string;
    /**
     * {
     *   "nullable": true,
     *   "description": "The prompt for the overall changes. This is optional if you only want changes on specific source ranges."
     * }
     */
    prompt?: string;
    /** The source ranges the user suggested to change. */
    source_ranges: SourceRangePrompt[];
    /**
     * {
     *   "nullable": true,
     *   "title": "DateTime",
     *   "format": "date-time",
     *   "description": "The time and date the API call was started."
     * }
     */
    started_at?: string;
    /** The status of the API call. */
    status: ApiCallStatus;
    type: 'text_to_cad_iteration';
    /** title:DateTime, format:date-time, description:The time and date the API call was last updated. */
    updated_at: string;
    /** The user ID of the user who created the API call. */
    user_id: Uuid;
} | {
    /**
     * {
     *   "nullable": true,
     *   "title": "DateTime",
     *   "format": "date-time",
     *   "description": "The time and date the API call was completed."
     * }
     */
    completed_at?: string;
    /** The conversation ID Conversations group different prompts together. */
    conversation_id: Uuid;
    /** title:DateTime, format:date-time, description:The time and date the API call was created. */
    created_at: string;
    /** nullable:true, description:The error the function returned, if any. */
    error?: string;
    /** nullable:true, description:Feedback from the user, if any. */
    feedback?: MlFeedback;
    /** The unique identifier of the API call.

This is the same as the API call ID. */
    id: Uuid;
    /**
     * {
     *   "nullable": true,
     *   "description": "The version of kcl to use. If empty, the latest version will be used."
     * }
     */
    kcl_version?: string;
    /** The model being used. */
    model: TextToCadModel;
    /** The version of the model. */
    model_version: string;
    outputs?: {
        [key: string]: string;
    };
    /**
     * {
     *   "nullable": true,
     *   "description": "The project name. This is used to tie the prompt to a project. Which helps us make our models better over time."
     * }
     */
    project_name?: string;
    /**
     * {
     *   "nullable": true,
     *   "description": "The prompt for the overall changes. This is optional if you only want changes on specific source ranges. This will apply to all the files."
     * }
     */
    prompt?: string;
    /** The source ranges the user suggested to change. */
    source_ranges: SourceRangePrompt[];
    /**
     * {
     *   "nullable": true,
     *   "title": "DateTime",
     *   "format": "date-time",
     *   "description": "The time and date the API call was started."
     * }
     */
    started_at?: string;
    /** The status of the API call. */
    status: ApiCallStatus;
    type: 'text_to_cad_multi_file_iteration';
    /** title:DateTime, format:date-time, description:The time and date the API call was last updated. */
    updated_at: string;
    /** The user ID of the user who created the API call. */
    user_id: Uuid;
};
export interface TextToCadResponseResultsPage {
    /** list of items on this page of results */
    items: TextToCadResponse[];
    /**
     * {
     *   "nullable": true,
     *   "description": "token used to fetch the next page of results (if any)"
     * }
     */
    next_page?: string;
}
export interface TokenRevokeRequestForm {
    /** format:uuid, description:The client ID. */
    client_id: string;
    /** nullable:true, description:The client secret. */
    client_secret?: string;
    /** The token to revoke. */
    token: string;
}
export interface Transform {
    /**
     * {
     *   "default": true,
     *   "description": "Whether to replicate the original solid in this instance."
     * }
     */
    replicate?: boolean;
    /**
     * {
     *   "default": {
     *     "angle": {
     *       "unit": "degrees",
     *       "value": 0
     *     },
     *     "axis": {
     *       "x": 0,
     *       "y": 0,
     *       "z": 1
     *     },
     *     "origin": {
     *       "type": "local"
     *     }
     *   },
     *   "description": "Rotate the replica about the specified rotation axis and origin. Defaults to no rotation."
     * }
     */
    rotation?: Rotation;
    /**
     * {
     *   "default": {
     *     "x": 1,
     *     "y": 1,
     *     "z": 1
     *   },
     *   "description": "Scale the replica's size along each axis. Defaults to (1, 1, 1) (i.e. the same size as the original)."
     * }
     */
    scale?: Point3d;
    /**
     * {
     *   "default": {
     *     "x": 0,
     *     "y": 0,
     *     "z": 0
     *   },
     *   "description": "Translate the replica this far along each dimension. Defaults to zero vector (i.e. same position as the original)."
     * }
     */
    translate?: Point3d;
}
export interface TransformByForPoint3d {
    /** default:{type:local}, description:What to use as the origin for the transformation. */
    origin?: OriginType;
    /** The scale, or rotation, or translation. */
    property: Point3d;
    /** If true, overwrite the previous value with this. If false, the previous value will be modified. E.g. when translating, `set=true` will set a new location, and `set=false` will translate the current location by the given X/Y/Z. */
    set: boolean;
}
export interface TransformByForPoint4d {
    /** default:{type:local}, description:What to use as the origin for the transformation. */
    origin?: OriginType;
    /** The scale, or rotation, or translation. */
    property: Point4d;
    /** If true, overwrite the previous value with this. If false, the previous value will be modified. E.g. when translating, `set=true` will set a new location, and `set=false` will translate the current location by the given X/Y/Z. */
    set: boolean;
}
export interface TwistExtrude {
    /** Any new bodies created by the request. */
    bodies_created?: BodiesCreated;
    /** Any existing bodies updated by the request. */
    bodies_updated?: BodiesUpdated;
}
export type UnitAngle = 'degrees' | 'radians';
export interface UnitAngleConversion {
    /**
     * {
     *   "nullable": true,
     *   "title": "DateTime",
     *   "format": "date-time",
     *   "description": "The time and date the API call was completed."
     * }
     */
    completed_at?: string;
    /** title:DateTime, format:date-time, description:The time and date the API call was created. */
    created_at: string;
    /** nullable:true, description:The error the function returned, if any. */
    error?: string;
    /** The unique identifier of the API call.
  
  This is the same as the API call ID. */
    id: Uuid;
    /** default:0, format:double, description:The input value. */
    input?: number;
    /** The source format of the unit conversion. */
    input_unit: UnitAngle;
    /** nullable:true, format:double, description:The resulting value. */
    output?: number;
    /** The output format of the unit conversion. */
    output_unit: UnitAngle;
    /**
     * {
     *   "nullable": true,
     *   "title": "DateTime",
     *   "format": "date-time",
     *   "description": "The time and date the API call was started."
     * }
     */
    started_at?: string;
    /** The status of the API call. */
    status: ApiCallStatus;
    /** title:DateTime, format:date-time, description:The time and date the API call was last updated. */
    updated_at: string;
    /** The user ID of the user who created the API call. */
    user_id: Uuid;
}
export type UnitArea = 'cm2' | 'dm2' | 'ft2' | 'in2' | 'km2' | 'm2' | 'mm2' | 'yd2';
export interface UnitAreaConversion {
    /**
     * {
     *   "nullable": true,
     *   "title": "DateTime",
     *   "format": "date-time",
     *   "description": "The time and date the API call was completed."
     * }
     */
    completed_at?: string;
    /** title:DateTime, format:date-time, description:The time and date the API call was created. */
    created_at: string;
    /** nullable:true, description:The error the function returned, if any. */
    error?: string;
    /** The unique identifier of the API call.
  
  This is the same as the API call ID. */
    id: Uuid;
    /** default:0, format:double, description:The input value. */
    input?: number;
    /** The source format of the unit conversion. */
    input_unit: UnitArea;
    /** nullable:true, format:double, description:The resulting value. */
    output?: number;
    /** The output format of the unit conversion. */
    output_unit: UnitArea;
    /**
     * {
     *   "nullable": true,
     *   "title": "DateTime",
     *   "format": "date-time",
     *   "description": "The time and date the API call was started."
     * }
     */
    started_at?: string;
    /** The status of the API call. */
    status: ApiCallStatus;
    /** title:DateTime, format:date-time, description:The time and date the API call was last updated. */
    updated_at: string;
    /** The user ID of the user who created the API call. */
    user_id: Uuid;
}
export type UnitCurrent = 'amperes' | 'microamperes' | 'milliamperes' | 'nanoamperes';
export interface UnitCurrentConversion {
    /**
     * {
     *   "nullable": true,
     *   "title": "DateTime",
     *   "format": "date-time",
     *   "description": "The time and date the API call was completed."
     * }
     */
    completed_at?: string;
    /** title:DateTime, format:date-time, description:The time and date the API call was created. */
    created_at: string;
    /** nullable:true, description:The error the function returned, if any. */
    error?: string;
    /** The unique identifier of the API call.
  
  This is the same as the API call ID. */
    id: Uuid;
    /** default:0, format:double, description:The input value. */
    input?: number;
    /** The source format of the unit conversion. */
    input_unit: UnitCurrent;
    /** nullable:true, format:double, description:The resulting value. */
    output?: number;
    /** The output format of the unit conversion. */
    output_unit: UnitCurrent;
    /**
     * {
     *   "nullable": true,
     *   "title": "DateTime",
     *   "format": "date-time",
     *   "description": "The time and date the API call was started."
     * }
     */
    started_at?: string;
    /** The status of the API call. */
    status: ApiCallStatus;
    /** title:DateTime, format:date-time, description:The time and date the API call was last updated. */
    updated_at: string;
    /** The user ID of the user who created the API call. */
    user_id: Uuid;
}
export type UnitDensity = 'lb:ft3' | 'kg:m3';
export type UnitEnergy = 'btu' | 'electronvolts' | 'joules' | 'kilocalories' | 'kilowatt_hours' | 'watt_hours';
export interface UnitEnergyConversion {
    /**
     * {
     *   "nullable": true,
     *   "title": "DateTime",
     *   "format": "date-time",
     *   "description": "The time and date the API call was completed."
     * }
     */
    completed_at?: string;
    /** title:DateTime, format:date-time, description:The time and date the API call was created. */
    created_at: string;
    /** nullable:true, description:The error the function returned, if any. */
    error?: string;
    /** The unique identifier of the API call.
  
  This is the same as the API call ID. */
    id: Uuid;
    /** default:0, format:double, description:The input value. */
    input?: number;
    /** The source format of the unit conversion. */
    input_unit: UnitEnergy;
    /** nullable:true, format:double, description:The resulting value. */
    output?: number;
    /** The output format of the unit conversion. */
    output_unit: UnitEnergy;
    /**
     * {
     *   "nullable": true,
     *   "title": "DateTime",
     *   "format": "date-time",
     *   "description": "The time and date the API call was started."
     * }
     */
    started_at?: string;
    /** The status of the API call. */
    status: ApiCallStatus;
    /** title:DateTime, format:date-time, description:The time and date the API call was last updated. */
    updated_at: string;
    /** The user ID of the user who created the API call. */
    user_id: Uuid;
}
export type UnitForce = 'dynes' | 'kiloponds' | 'micronewtons' | 'millinewtons' | 'newtons' | 'poundals' | 'pounds';
export interface UnitForceConversion {
    /**
     * {
     *   "nullable": true,
     *   "title": "DateTime",
     *   "format": "date-time",
     *   "description": "The time and date the API call was completed."
     * }
     */
    completed_at?: string;
    /** title:DateTime, format:date-time, description:The time and date the API call was created. */
    created_at: string;
    /** nullable:true, description:The error the function returned, if any. */
    error?: string;
    /** The unique identifier of the API call.
  
  This is the same as the API call ID. */
    id: Uuid;
    /** default:0, format:double, description:The input value. */
    input?: number;
    /** The source format of the unit conversion. */
    input_unit: UnitForce;
    /** nullable:true, format:double, description:The resulting value. */
    output?: number;
    /** The output format of the unit conversion. */
    output_unit: UnitForce;
    /**
     * {
     *   "nullable": true,
     *   "title": "DateTime",
     *   "format": "date-time",
     *   "description": "The time and date the API call was started."
     * }
     */
    started_at?: string;
    /** The status of the API call. */
    status: ApiCallStatus;
    /** title:DateTime, format:date-time, description:The time and date the API call was last updated. */
    updated_at: string;
    /** The user ID of the user who created the API call. */
    user_id: Uuid;
}
export type UnitFrequency = 'gigahertz' | 'hertz' | 'kilohertz' | 'megahertz' | 'microhertz' | 'millihertz' | 'nanohertz' | 'terahertz';
export interface UnitFrequencyConversion {
    /**
     * {
     *   "nullable": true,
     *   "title": "DateTime",
     *   "format": "date-time",
     *   "description": "The time and date the API call was completed."
     * }
     */
    completed_at?: string;
    /** title:DateTime, format:date-time, description:The time and date the API call was created. */
    created_at: string;
    /** nullable:true, description:The error the function returned, if any. */
    error?: string;
    /** The unique identifier of the API call.
  
  This is the same as the API call ID. */
    id: Uuid;
    /** default:0, format:double, description:The input value. */
    input?: number;
    /** The source format of the unit conversion. */
    input_unit: UnitFrequency;
    /** nullable:true, format:double, description:The resulting value. */
    output?: number;
    /** The output format of the unit conversion. */
    output_unit: UnitFrequency;
    /**
     * {
     *   "nullable": true,
     *   "title": "DateTime",
     *   "format": "date-time",
     *   "description": "The time and date the API call was started."
     * }
     */
    started_at?: string;
    /** The status of the API call. */
    status: ApiCallStatus;
    /** title:DateTime, format:date-time, description:The time and date the API call was last updated. */
    updated_at: string;
    /** The user ID of the user who created the API call. */
    user_id: Uuid;
}
export type UnitLength = 'cm' | 'ft' | 'in' | 'm' | 'mm' | 'yd';
export interface UnitLengthConversion {
    /**
     * {
     *   "nullable": true,
     *   "title": "DateTime",
     *   "format": "date-time",
     *   "description": "The time and date the API call was completed."
     * }
     */
    completed_at?: string;
    /** title:DateTime, format:date-time, description:The time and date the API call was created. */
    created_at: string;
    /** nullable:true, description:The error the function returned, if any. */
    error?: string;
    /** The unique identifier of the API call.
  
  This is the same as the API call ID. */
    id: Uuid;
    /** default:0, format:double, description:The input value. */
    input?: number;
    /** The source format of the unit conversion. */
    input_unit: UnitLength;
    /** nullable:true, format:double, description:The resulting value. */
    output?: number;
    /** The output format of the unit conversion. */
    output_unit: UnitLength;
    /**
     * {
     *   "nullable": true,
     *   "title": "DateTime",
     *   "format": "date-time",
     *   "description": "The time and date the API call was started."
     * }
     */
    started_at?: string;
    /** The status of the API call. */
    status: ApiCallStatus;
    /** title:DateTime, format:date-time, description:The time and date the API call was last updated. */
    updated_at: string;
    /** The user ID of the user who created the API call. */
    user_id: Uuid;
}
export type UnitMass = 'g' | 'kg' | 'lb';
export interface UnitMassConversion {
    /**
     * {
     *   "nullable": true,
     *   "title": "DateTime",
     *   "format": "date-time",
     *   "description": "The time and date the API call was completed."
     * }
     */
    completed_at?: string;
    /** title:DateTime, format:date-time, description:The time and date the API call was created. */
    created_at: string;
    /** nullable:true, description:The error the function returned, if any. */
    error?: string;
    /** The unique identifier of the API call.
  
  This is the same as the API call ID. */
    id: Uuid;
    /** default:0, format:double, description:The input value. */
    input?: number;
    /** The source format of the unit conversion. */
    input_unit: UnitMass;
    /** nullable:true, format:double, description:The resulting value. */
    output?: number;
    /** The output format of the unit conversion. */
    output_unit: UnitMass;
    /**
     * {
     *   "nullable": true,
     *   "title": "DateTime",
     *   "format": "date-time",
     *   "description": "The time and date the API call was started."
     * }
     */
    started_at?: string;
    /** The status of the API call. */
    status: ApiCallStatus;
    /** title:DateTime, format:date-time, description:The time and date the API call was last updated. */
    updated_at: string;
    /** The user ID of the user who created the API call. */
    user_id: Uuid;
}
export type UnitPower = 'btu_per_minute' | 'horsepower' | 'kilowatts' | 'metric_horsepower' | 'microwatts' | 'milliwatts' | 'watts';
export interface UnitPowerConversion {
    /**
     * {
     *   "nullable": true,
     *   "title": "DateTime",
     *   "format": "date-time",
     *   "description": "The time and date the API call was completed."
     * }
     */
    completed_at?: string;
    /** title:DateTime, format:date-time, description:The time and date the API call was created. */
    created_at: string;
    /** nullable:true, description:The error the function returned, if any. */
    error?: string;
    /** The unique identifier of the API call.
  
  This is the same as the API call ID. */
    id: Uuid;
    /** default:0, format:double, description:The input value. */
    input?: number;
    /** The source format of the unit conversion. */
    input_unit: UnitPower;
    /** nullable:true, format:double, description:The resulting value. */
    output?: number;
    /** The output format of the unit conversion. */
    output_unit: UnitPower;
    /**
     * {
     *   "nullable": true,
     *   "title": "DateTime",
     *   "format": "date-time",
     *   "description": "The time and date the API call was started."
     * }
     */
    started_at?: string;
    /** The status of the API call. */
    status: ApiCallStatus;
    /** title:DateTime, format:date-time, description:The time and date the API call was last updated. */
    updated_at: string;
    /** The user ID of the user who created the API call. */
    user_id: Uuid;
}
export type UnitPressure = 'atmospheres' | 'bars' | 'hectopascals' | 'kilopascals' | 'millibars' | 'pascals' | 'psi';
export interface UnitPressureConversion {
    /**
     * {
     *   "nullable": true,
     *   "title": "DateTime",
     *   "format": "date-time",
     *   "description": "The time and date the API call was completed."
     * }
     */
    completed_at?: string;
    /** title:DateTime, format:date-time, description:The time and date the API call was created. */
    created_at: string;
    /** nullable:true, description:The error the function returned, if any. */
    error?: string;
    /** The unique identifier of the API call.
  
  This is the same as the API call ID. */
    id: Uuid;
    /** default:0, format:double, description:The input value. */
    input?: number;
    /** The source format of the unit conversion. */
    input_unit: UnitPressure;
    /** nullable:true, format:double, description:The resulting value. */
    output?: number;
    /** The output format of the unit conversion. */
    output_unit: UnitPressure;
    /**
     * {
     *   "nullable": true,
     *   "title": "DateTime",
     *   "format": "date-time",
     *   "description": "The time and date the API call was started."
     * }
     */
    started_at?: string;
    /** The status of the API call. */
    status: ApiCallStatus;
    /** title:DateTime, format:date-time, description:The time and date the API call was last updated. */
    updated_at: string;
    /** The user ID of the user who created the API call. */
    user_id: Uuid;
}
export type UnitTemperature = 'celsius' | 'fahrenheit' | 'kelvin' | 'rankine';
export interface UnitTemperatureConversion {
    /**
     * {
     *   "nullable": true,
     *   "title": "DateTime",
     *   "format": "date-time",
     *   "description": "The time and date the API call was completed."
     * }
     */
    completed_at?: string;
    /** title:DateTime, format:date-time, description:The time and date the API call was created. */
    created_at: string;
    /** nullable:true, description:The error the function returned, if any. */
    error?: string;
    /** The unique identifier of the API call.
  
  This is the same as the API call ID. */
    id: Uuid;
    /** default:0, format:double, description:The input value. */
    input?: number;
    /** The source format of the unit conversion. */
    input_unit: UnitTemperature;
    /** nullable:true, format:double, description:The resulting value. */
    output?: number;
    /** The output format of the unit conversion. */
    output_unit: UnitTemperature;
    /**
     * {
     *   "nullable": true,
     *   "title": "DateTime",
     *   "format": "date-time",
     *   "description": "The time and date the API call was started."
     * }
     */
    started_at?: string;
    /** The status of the API call. */
    status: ApiCallStatus;
    /** title:DateTime, format:date-time, description:The time and date the API call was last updated. */
    updated_at: string;
    /** The user ID of the user who created the API call. */
    user_id: Uuid;
}
export type UnitTorque = 'newton_metres' | 'pound_foot';
export interface UnitTorqueConversion {
    /**
     * {
     *   "nullable": true,
     *   "title": "DateTime",
     *   "format": "date-time",
     *   "description": "The time and date the API call was completed."
     * }
     */
    completed_at?: string;
    /** title:DateTime, format:date-time, description:The time and date the API call was created. */
    created_at: string;
    /** nullable:true, description:The error the function returned, if any. */
    error?: string;
    /** The unique identifier of the API call.
  
  This is the same as the API call ID. */
    id: Uuid;
    /** default:0, format:double, description:The input value. */
    input?: number;
    /** The source format of the unit conversion. */
    input_unit: UnitTorque;
    /** nullable:true, format:double, description:The resulting value. */
    output?: number;
    /** The output format of the unit conversion. */
    output_unit: UnitTorque;
    /**
     * {
     *   "nullable": true,
     *   "title": "DateTime",
     *   "format": "date-time",
     *   "description": "The time and date the API call was started."
     * }
     */
    started_at?: string;
    /** The status of the API call. */
    status: ApiCallStatus;
    /** title:DateTime, format:date-time, description:The time and date the API call was last updated. */
    updated_at: string;
    /** The user ID of the user who created the API call. */
    user_id: Uuid;
}
export type UnitVolume = 'mm3' | 'cm3' | 'ft3' | 'in3' | 'm3' | 'yd3' | 'usfloz' | 'usgal' | 'l' | 'ml';
export interface UnitVolumeConversion {
    /**
     * {
     *   "nullable": true,
     *   "title": "DateTime",
     *   "format": "date-time",
     *   "description": "The time and date the API call was completed."
     * }
     */
    completed_at?: string;
    /** title:DateTime, format:date-time, description:The time and date the API call was created. */
    created_at: string;
    /** nullable:true, description:The error the function returned, if any. */
    error?: string;
    /** The unique identifier of the API call.
  
  This is the same as the API call ID. */
    id: Uuid;
    /** default:0, format:double, description:The input value. */
    input?: number;
    /** The source format of the unit conversion. */
    input_unit: UnitVolume;
    /** nullable:true, format:double, description:The resulting value. */
    output?: number;
    /** The output format of the unit conversion. */
    output_unit: UnitVolume;
    /**
     * {
     *   "nullable": true,
     *   "title": "DateTime",
     *   "format": "date-time",
     *   "description": "The time and date the API call was started."
     * }
     */
    started_at?: string;
    /** The status of the API call. */
    status: ApiCallStatus;
    /** title:DateTime, format:date-time, description:The time and date the API call was last updated. */
    updated_at: string;
    /** The user ID of the user who created the API call. */
    user_id: Uuid;
}
export interface UpdateAnnotation {
}
export interface UpdateCustomModel {
    /** nullable:true, description:The model's display name. */
    name?: string;
    /** nullable:true, description:The model's system prompt. */
    system_prompt?: string;
}
export interface UpdateMemberToOrgBody {
    /** The organization role to give the user. */
    role: UserOrgRole;
}
export interface UpdateOAuth2AppRequest {
    /** nullable:true, description:The OAuth grant types this app can use. */
    grant_types?: OAuth2AppGrantType[];
    /** nullable:true, description:The deployment mode for this app. */
    mode?: OAuth2AppMode;
    /** nullable:true, description:The new display name of the app. */
    name?: string;
    /**
     * {
     *   "format": "uri"
     * }
     */
    redirect_uris?: string[];
}
export interface UpdateOrgDataset {
    /**
     * {
     *   "nullable": true,
     *   "description": "Optional description override. Null clears the description."
     * }
     */
    description?: string;
    /** nullable:true, description:Optional new display name. */
    name?: string;
    /**
     * {
     *   "nullable": true,
     *   "description": "Optional override for whether a low raw-KCL similarity score should block conversion success."
     * }
     */
    require_raw_kcl_similarity_score_for_success?: boolean;
    /** nullable:true, description:Optional storage connection overrides. */
    source?: UpdateOrgDatasetSource;
}
export interface UpdateOrgDatasetSource {
    /**
     * {
     *   "nullable": true,
     *   "description": "Updated identity Zoo should assume when reading the dataset."
     * }
     */
    access_role_arn?: string;
    /** nullable:true, description:Updated storage provider identifier. */
    provider?: StorageProvider;
    /**
     * {
     *   "nullable": true,
     *   "description": "Updated fully-qualified URI for the dataset contents."
     * }
     */
    uri?: string;
}
export interface UpdatePaymentBalance {
    /**
     * {
     *   "nullable": true,
     *   "title": "double",
     *   "format": "money-usd",
     *   "description": "The monetary value of the monthy API credits remaining in the balance. This gets re-upped every month,"
     * }
     */
    monthly_api_credits_remaining_monetary_value?: number;
    /**
     * {
     *   "nullable": true,
     *   "title": "double",
     *   "format": "money-usd",
     *   "description": "The monetary value of stable API credits remaining in the balance. These do not get reset or re-upped every month. This is separate from the monthly credits. Credits will first pull from the monthly credits, then the stable credits. Stable just means that they do not get reset every month. A user will have stable credits if a Zoo employee granted them credits."
     * }
     */
    stable_api_credits_remaining_monetary_value?: number;
}
export interface UpdateShortlinkRequest {
    /**
     * {
     *   "nullable": true,
     *   "description": "The password for the shortlink, if you want to restrict access to it. This can only be set if your subscription allows for it. Otherwise, it will return an error. When you access the link it will be required to enter this password through basic auth. The username will be `{anything}` and the password will be the password you set here."
     * }
     */
    password?: string;
    /** If the shortlink should be restricted to the user's organization to view. This only applies to org shortlinks. If you are creating a user shortlink and you are not a member of a team or enterprise and you try to set this to true, it will fail. */
    restrict_to_org: boolean;
}
export interface UpdateUser {
    /** The user's company. */
    company?: string;
    /** The user's Discord handle. */
    discord?: string;
    /** The user's first name. */
    first_name?: string;
    /** The user's GitHub handle. */
    github?: string;
    /**
     * {
     *   "title": "String",
     *   "format": "uri",
     *   "description": "The image URL for the user. NOTE: If the user uses an OAuth2 provider, this will be overwritten by the provider's image URL when the user logs in next."
     * }
     */
    image: string;
    /** nullable:true, description:If the user is now onboarded. */
    is_onboarded?: boolean;
    /** The user's last name. */
    last_name?: string;
    /**
     * {
     *   "title": "String",
     *   "default": "",
     *   "format": "phone",
     *   "description": "The user's phone number."
     * }
     */
    phone?: string;
    /** Public username/handle for community-facing features. Empty clears it. */
    username?: string;
}
export interface UploadOrgDatasetFilesResponse {
    /** format:uint, minimum:0, description:Number of conversion jobs newly queued. */
    queued_conversions: number;
    /** format:uint, minimum:0, description:Number of files accepted and stored. */
    uploaded_files: number;
}
export interface UserAdminDetails {
    /** format:int64, description:Count of valid API tokens. */
    active_api_tokens_count: number;
    /**
     * {
     *   "format": "int64",
     *   "description": "Count of active (non-expired) device access tokens."
     * }
     */
    active_device_tokens_count: number;
    /** format:int64, description:Count of active (non-expired) sessions. */
    active_sessions_count: number;
    /** nullable:true, description:Latest billing address stored for the user. */
    address?: Address;
    /** nullable:true, description:Readable billing address summary. */
    address_summary?: string;
    /** nullable:true, description:Block reason when the user is blocked. */
    block?: BlockReason;
    /** nullable:true, description:Human-friendly block reason message. */
    block_message?: string;
    /**
     * {
     *   "nullable": true,
     *   "description": "CAD user info collected from website onboarding/CRM form."
     * }
     */
    cad_user_info?: UserCadInfoAdminDetails;
    /** Whether this user is permanently exempt from blocking. */
    never_block: boolean;
    /** Known payment methods on file. */
    payment_methods: PaymentMethod[];
    payment_methods_summary: string[];
    /** nullable:true, description:Stripe customer identifier if one exists. */
    stripe_customer_id?: string;
    /** nullable:true, description:Direct link to the Stripe customer dashboard. */
    stripe_dashboard_url?: string;
}
export interface UserCadInfoAdminDetails {
    /** nullable:true, description:CAD/API experience level. */
    cad_experience_level?: CadExperienceLevel;
    /** nullable:true, description:CAD industry selection. */
    cad_industry?: CadIndustry;
    /** nullable:true, description:CAD user persona/type. */
    cad_user_type?: CadUserType;
    /** nullable:true, description:Company size selection. */
    company_size?: CompanySize;
    /** nullable:true, description:Preferred design workflow. */
    design_workflow?: CadDesignWorkflow;
    /**
     * {
     *   "nullable": true,
     *   "description": "Whether the user has used Zoo Design Studio or the API before."
     * }
     */
    has_used_zoo_design_studio_or_api_before?: boolean;
    /** nullable:true, description:Acquisition source selection. */
    how_did_you_find_us?: CadDiscoverySource;
    /**
     * {
     *   "nullable": true,
     *   "description": "Free-text acquisition source when `other` was selected."
     * }
     */
    how_did_you_find_us_other?: string;
    /** nullable:true, description:Free-text city for the user's location. */
    location_city?: string;
    /** nullable:true, description:Free-text country for the user's location. */
    location_country?: string;
    /**
     * {
     *   "nullable": true,
     *   "description": "Free-text state or region for the user's location."
     * }
     */
    location_state?: string;
    /** nullable:true, description:Number of CAD users. */
    number_of_cad_users?: string;
    /**
     * {
     *   "nullable": true,
     *   "description": "Free-text description of what the user wants to build."
     * }
     */
    what_are_you_building?: string;
}
export type UserFeature = 'aquarium' | 'bodies_pane' | 'enable_z0006_lint' | 'modeling_dialogs' | 'plugins' | 'proprietary_to_kcl_conversion_beta' | 'sketch_experimental_features' | 'web_app_file_browser';
export interface UserFeatureEntry {
    /** Stable identifier for the feature flag (snake_case). */
    id: UserFeature;
}
export interface UserFeatureList {
    /** Features that are active and safe to expose to the current user. */
    features: UserFeatureEntry[];
}
export type UserIdentifier = string;
export interface UserOrgInfo {
    /**
     * {
     *   "nullable": true,
     *   "description": "If we should allow all future users who are created with email addresses from this domain to join the org."
     * }
     */
    allow_users_in_domain_to_auto_join?: boolean;
    /** format:email, description:The billing email address of the org. */
    billing_email?: string;
    /**
     * {
     *   "nullable": true,
     *   "title": "DateTime",
     *   "format": "date-time",
     *   "description": "The date and time the billing email address was verified."
     * }
     */
    billing_email_verified?: string;
    /** nullable:true, description:If the org should be blocked and the reason why. */
    block?: BlockReason;
    /** title:DateTime, format:date-time, description:The date and time the org was created. */
    created_at: string;
    /** nullable:true, description:The org's domain. */
    domain?: string;
    /** The unique identifier for the org. */
    id: Uuid;
    /**
     * {
     *   "nullable": true,
     *   "title": "String",
     *   "format": "uri",
     *   "description": "The image for the org. This is a URL."
     * }
     */
    image?: string;
    /** The name of the org. */
    name?: string;
    /**
     * {
     *   "title": "String",
     *   "default": "",
     *   "format": "phone",
     *   "description": "The org's phone number."
     * }
     */
    phone?: string;
    /** The user's role in the org. */
    role: OrgRole;
    /** nullable:true, description:The org's stripe id. */
    stripe_id?: string;
    /** title:DateTime, format:date-time, description:The date and time the org was last updated. */
    updated_at: string;
}
export type UserOrgRole = 'admin' | 'member';
export interface UserResponse {
    /** nullable:true, description:If the user should be blocked and the reason why. */
    block?: BlockReason;
    /** nullable:true, description:Human-friendly block reason message. */
    block_message?: string;
    /**
     * {
     *   "default": false,
     *   "description": "If we can train on the user's data. If the user is a member of an organization, the organization's setting will override this."
     * }
     */
    can_train_on_data?: boolean;
    /** The user's company. */
    company?: string;
    /** title:DateTime, format:date-time, description:The date and time the user was created. */
    created_at: string;
    /** default:false, description:If the user is scheduled for deletion. */
    deletion_scheduled?: boolean;
    /** The user's Discord handle. */
    discord?: string;
    /** format:email, description:The email address of the user. */
    email?: string;
    /**
     * {
     *   "nullable": true,
     *   "title": "DateTime",
     *   "format": "date-time",
     *   "description": "The date and time the email address was verified."
     * }
     */
    email_verified?: string;
    /** The user's first name. */
    first_name?: string;
    /** The user's GitHub handle. */
    github?: string;
    /** The unique identifier for the user. */
    id: Uuid;
    /** title:String, format:uri, description:The image avatar for the user. This is a URL. */
    image: string;
    /** default:false, description:If the user has finished onboarding. */
    is_onboarded?: boolean;
    /** default:false, description:If the user is tied to a service account. */
    is_service_account?: boolean;
    /** The user's last name. */
    last_name?: string;
    /** The name of the user. This is auto populated at first from the authentication provider (if there was a name). It can be updated by the user by updating their `first_name` and `last_name` fields. */
    name?: string;
    /**
     * {
     *   "title": "String",
     *   "default": "",
     *   "format": "phone",
     *   "description": "The user's phone number."
     * }
     */
    phone?: string;
    /** title:DateTime, format:date-time, description:The date and time the user was last updated. */
    updated_at: string;
    /**
     * {
     *   "default": "",
     *   "description": "Public username/handle for community-facing features."
     * }
     */
    username?: string;
}
export type Uuid = 
/** format:uuid, description:A UUID usually v4 or v7 */
string;
export interface VerificationTokenResponse {
    /**
     * {
     *   "title": "DateTime",
     *   "format": "date-time",
     *   "description": "The date and time the verification token was created."
     * }
     */
    created_at: string;
    /** title:DateTime, format:date-time, description:The date and time the verification token expires. */
    expires: string;
    /** The token used for verification. This is used as the id for the table since it is unique per record. */
    id: Uuid;
    /**
     * {
     *   "format": "email",
     *   "description": "The identifier for the user. This is typically the user's email address since that is what we are verifying."
     * }
     */
    identifier?: string;
    /**
     * {
     *   "nullable": true,
     *   "title": "String",
     *   "format": "uri",
     *   "description": "The URL to redirect to if the user requires SAML authentication or belongs somewhere else."
     * }
     */
    redirect_url?: string;
    /**
     * {
     *   "title": "DateTime",
     *   "format": "date-time",
     *   "description": "The date and time the verification token was last updated."
     * }
     */
    updated_at: string;
}
export interface ViewIsometric {
    /** Camera settings */
    settings: CameraSettings;
}
export interface Volume {
    /** The output unit for the volume. */
    output_unit: UnitVolume;
    /** format:double, description:The volume. */
    volume: number;
}
export type WebSocketRequest = {
    /** Information about the ICE candidate. */
    candidate: RtcIceCandidateInit;
    type: 'trickle_ice';
} | {
    /** The session description. */
    offer: RtcSessionDescription;
    type: 'sdp_offer';
} | {
    /** Which command to submit to the Kittycad engine. */
    cmd: ModelingCmd;
    /** ID of command being submitted. */
    cmd_id: ModelingCmdId;
    type: 'modeling_cmd_req';
} | {
    /** ID of batch being submitted. Each request has their own individual ModelingCmdId, but this is the ID of the overall batch. */
    batch_id: ModelingCmdId;
    /** A sequence of modeling requests. If any request fails, following requests will not be tried. */
    requests: ModelingCmdReq[];
    /**
     * {
     *   "default": false,
     *   "description": "If false or omitted, responses to each batch command will just be Ok(()). If true, responses will be the actual response data for that modeling command."
     * }
     */
    responses?: boolean;
    type: 'modeling_cmd_batch_req';
} | {
    type: 'ping';
} | {
    /** Collected metrics from the Client's end of the engine connection. */
    metrics: ClientMetrics;
    type: 'metrics_response';
} | {
    type: 'debug';
} | {
    headers: {
        [key: string]: string;
    };
    type: 'headers';
};
export type WebSocketResponse = {
    /**
     * {
     *   "nullable": true,
     *   "format": "uuid",
     *   "description": "Which request this is a response to. If the request was a modeling command, this is the modeling command ID. If no request ID was sent, this will be null."
     * }
     */
    request_id?: string;
    /** The data sent with a successful response. This will be flattened into a 'type' and 'data' field. */
    resp: OkWebSocketResponseData;
    /** Always true */
    success: boolean;
} | {
    /** The errors that occurred. */
    errors: ApiError[];
    /**
     * {
     *   "nullable": true,
     *   "format": "uuid",
     *   "description": "Which request this is a response to. If the request was a modeling command, this is the modeling command ID. If no request ID was sent, this will be null."
     * }
     */
    request_id?: string;
    /** Always false */
    success: boolean;
};
export interface WebsiteCadUserInfoForm {
    /** nullable:true, description:Experience level with CAD software or APIs. */
    cad_experience_level?: CadExperienceLevel;
    /** nullable:true, description:The industry of the user. */
    cad_industry?: CadIndustry;
    /** nullable:true, description:The user type. */
    cad_user_type?: CadUserType;
    /** nullable:true, description:Optional company size metadata. */
    company_size?: CompanySize;
    /**
     * {
     *   "nullable": true,
     *   "description": "Which design workflow the user is most excited about."
     * }
     */
    design_workflow?: CadDesignWorkflow;
    /**
     * {
     *   "nullable": true,
     *   "description": "Whether the user has used Zoo Design Studio or the API before."
     * }
     */
    has_used_zoo_design_studio_or_api_before?: boolean;
    /** nullable:true, description:How the user found Zoo. */
    how_did_you_find_us?: CadDiscoverySource;
    /**
     * {
     *   "nullable": true,
     *   "description": "Optional free-text value when \"Other\" is selected."
     * }
     */
    how_did_you_find_us_other?: string;
    /** nullable:true, description:Optional city for the user's location. */
    location_city?: string;
    /** nullable:true, description:Optional country for the user's location. */
    location_country?: string;
    /** nullable:true, description:Optional state or region for the user's location. */
    location_state?: string;
    /** nullable:true, description:The number of CAD users. */
    number_of_cad_users?: string;
    /**
     * {
     *   "nullable": true,
     *   "description": "Optional free-text description of what the user wants to build."
     * }
     */
    what_are_you_building?: string;
}
export interface WebsiteSalesForm {
    cad_platforms?: string[];
    /** nullable:true, description:The company name. */
    company?: string;
    /** format:email, description:The email address of the user. */
    email: string;
    /** The first name of the user. */
    first_name: string;
    /** nullable:true, description:The industry of the user. */
    industry?: string;
    /** The type of sales inquiry. */
    inquiry_type: SalesInquiryType;
    /** nullable:true, description:The job title (used for pilot inquiries). */
    job_title?: string;
    /** The last name of the user. */
    last_name: string;
    /** The message content. */
    message: string;
    /**
     * {
     *   "nullable": true,
     *   "description": "The number of CAD users (used for pilot inquiries)."
     * }
     */
    num_cad_users?: string;
    /** nullable:true, description:The phone number of the user. */
    phone?: string;
}
export interface WebsiteSupportForm {
    /** nullable:true, description:Optional company metadata. */
    company?: string;
    /** format:email, description:The email address of the user. */
    email: string;
    /** The first name of the user. */
    first_name: string;
    /** The type of support inquiry. */
    inquiry_type: SupportInquiryType;
    /** The last name of the user. */
    last_name: string;
    /** The message content. */
    message: string;
    /** nullable:true, description:Optional phone metadata. */
    phone?: string;
}
export type WorldCoordinateSystem = 'right_handed_up_z' | 'right_handed_up_y';
export type ZooProductSubscription = {
    /**
     * {
     *   "nullable": true,
     *   "format": "double",
     *   "description": "Annual discount. The percentage off the monthly price if the user pays annually."
     * }
     */
    annual_discount?: number;
    /**
     * {
     *   "default": "standard",
     *   "description": "Indicates how billing collection is routed for this plan."
     * }
     */
    billing_mode?: SubscriptionBillingMode;
    /** A description of the tier. */
    description: string;
    /** default:, description:The display name of the tier. */
    display_name?: string;
    /** The Zoo API endpoints that are included when through an approved zoo tool. */
    endpoints_included?: ApiEndpoint[];
    /** minItems:0, maxItems:15, description:Features that are included in the subscription. */
    features?: SubscriptionTierFeature[];
    /**
     * {
     *   "default": false,
     *   "description": "Indicates whether the plan enables custom ML models."
     * }
     */
    ml_custom_models?: boolean;
    /**
     * {
     *   "default": 0,
     *   "format": "uint64",
     *   "minimum": 0,
     *   "description": "The amount of pay-as-you-go API credits the individual or org gets outside the modeling app per month. This re-ups on the 1st of each month. This is equivalent to the monetary value divided by the price of an API credit."
     * }
     */
    monthly_pay_as_you_go_api_credits?: number;
    /**
     * {
     *   "title": "double",
     *   "default": 0,
     *   "format": "money-usd",
     *   "description": "The monetary value of pay-as-you-go API credits the individual or org gets outside the modeling app per month. This re-ups on the 1st of each month."
     * }
     */
    monthly_pay_as_you_go_api_credits_monetary_value?: number;
    /** The name of the tier. */
    name: string;
    /**
     * {
     *   "title": "double",
     *   "default": 0,
     *   "format": "money-usd",
     *   "description": "The price of an API credit."
     * }
     */
    pay_as_you_go_api_credit_price?: number;
    /** The price of the tier per month. If this is for an individual, this is the price they pay. If this is for an organization, this is the price the organization pays per member in the org. This is in USD. */
    price: SubscriptionTierPrice;
    /** The options for sharable links through the modeling app. */
    share_links?: ModelingAppShareLinks[];
    /** The support tier the subscription provides. */
    support_tier: SupportTier;
    /** The behavior of the users data (can it be used for training, etc). */
    training_data_behavior: SubscriptionTrainingDataBehavior;
    /** If the tier is offered for an individual or an org. */
    type: SubscriptionTierType;
    /** The Zoo tools that you can call unlimited times with this tier. */
    zoo_tools_included?: ZooTool[];
};
export interface ZooProductSubscriptions {
    /**
     * {
     *   "nullable": true,
     *   "description": "Client secret to complete SCA/3DS for the current subscription change, when applicable."
     * }
     */
    action_client_secret?: string;
    /**
     * {
     *   "nullable": true,
     *   "description": "Type of intent associated with `action_client_secret`."
     * }
     */
    action_type?: SubscriptionActionType;
    /** A modeling app subscription. */
    modeling_app: ModelingAppSubscriptionTier;
}
export interface ZooProductSubscriptionsOrgRequest {
    /** Slug of the modeling app subscription tier requested. */
    modeling_app: string;
    /**
     * {
     *   "nullable": true,
     *   "description": "If the customer chooses to pay annually or monthly, we can add that here. The annual discount will apply if there is a discount for the subscription."
     * }
     */
    pay_annually?: boolean;
}
export interface ZooProductSubscriptionsUserRequest {
    /** Slug of the modeling app subscription tier requested. */
    modeling_app: string;
    /**
     * {
     *   "nullable": true,
     *   "description": "If the customer chooses to pay annually or monthly, we can add that here. The annual discount will apply if there is a discount for the subscription."
     * }
     */
    pay_annually?: boolean;
}
export type ZooTool = 'modeling_app' | 'text_to_cad';
export interface ZoomToFit {
    /** Camera settings */
    settings: CameraSettings;
}
export interface Models {
    AccountProvider: AccountProvider;
    AddHoleFromOffset: AddHoleFromOffset;
    AddOrgMember: AddOrgMember;
    Address: Address;
    AddressDetails: AddressDetails;
    AdjacencyInfo: AdjacencyInfo;
    Angle: Angle;
    AnnotationBasicDimension: AnnotationBasicDimension;
    AnnotationFeatureControl: AnnotationFeatureControl;
    AnnotationFeatureTag: AnnotationFeatureTag;
    AnnotationLineEnd: AnnotationLineEnd;
    AnnotationLineEndOptions: AnnotationLineEndOptions;
    AnnotationMbdBasicDimension: AnnotationMbdBasicDimension;
    AnnotationMbdControlFrame: AnnotationMbdControlFrame;
    AnnotationOptions: AnnotationOptions;
    AnnotationTextAlignmentX: AnnotationTextAlignmentX;
    AnnotationTextAlignmentY: AnnotationTextAlignmentY;
    AnnotationTextOptions: AnnotationTextOptions;
    AnnotationType: AnnotationType;
    ApiCallStatus: ApiCallStatus;
    ApiCallWithPrice: ApiCallWithPrice;
    ApiCallWithPriceResultsPage: ApiCallWithPriceResultsPage;
    ApiEndpoint: ApiEndpoint;
    ApiError: ApiError;
    ApiToken: ApiToken;
    ApiTokenResultsPage: ApiTokenResultsPage;
    ApiTokenUuid: ApiTokenUuid;
    AppClientInfo: AppClientInfo;
    AsyncApiCallOutput: AsyncApiCallOutput;
    AuthApiKeyResponse: AuthApiKeyResponse;
    AuthCallback: AuthCallback;
    Axis: Axis;
    AxisDirectionPair: AxisDirectionPair;
    BatchResponse: BatchResponse;
    BillingCadence: BillingCadence;
    BillingCommitmentScope: BillingCommitmentScope;
    BillingContractItemInput: BillingContractItemInput;
    BillingContractItemView: BillingContractItemView;
    BillingContractStatus: BillingContractStatus;
    BillingContractUpsert: BillingContractUpsert;
    BillingContractView: BillingContractView;
    BillingExternalCustomerId: BillingExternalCustomerId;
    BillingInfo: BillingInfo;
    BillingItemCode: BillingItemCode;
    BillingItemKind: BillingItemKind;
    BillingPeriodIndex: BillingPeriodIndex;
    BillingPeriodInput: BillingPeriodInput;
    BillingPeriodStatus: BillingPeriodStatus;
    BillingPeriodView: BillingPeriodView;
    BillingProvider: BillingProvider;
    BillingQuantity: BillingQuantity;
    BillingRateTierInput: BillingRateTierInput;
    BillingRateTierView: BillingRateTierView;
    BillingRolloverPolicy: BillingRolloverPolicy;
    BillingUnit: BillingUnit;
    BillingUnitGranularity: BillingUnitGranularity;
    BlendType: BlendType;
    BlockReason: BlockReason;
    BodiesCreated: BodiesCreated;
    BodiesUpdated: BodiesUpdated;
    BodyCreated: BodyCreated;
    BodyType: BodyType;
    BodyUpdated: BodyUpdated;
    BooleanImprint: BooleanImprint;
    BooleanIntersection: BooleanIntersection;
    BooleanSubtract: BooleanSubtract;
    BooleanUnion: BooleanUnion;
    BoundingBox: BoundingBox;
    CadDesignWorkflow: CadDesignWorkflow;
    CadDiscoverySource: CadDiscoverySource;
    CadExperienceLevel: CadExperienceLevel;
    CadIndustry: CadIndustry;
    CadUserType: CadUserType;
    CameraDragEnd: CameraDragEnd;
    CameraDragInteractionType: CameraDragInteractionType;
    CameraDragMove: CameraDragMove;
    CameraDragStart: CameraDragStart;
    CameraMovement: CameraMovement;
    CameraSettings: CameraSettings;
    CameraViewState: CameraViewState;
    CardDetails: CardDetails;
    CenterOfMass: CenterOfMass;
    ClientErrorReport: ClientErrorReport;
    ClientErrorReportAccepted: ClientErrorReportAccepted;
    ClientMetrics: ClientMetrics;
    ClosePath: ClosePath;
    ClosestEdge: ClosestEdge;
    CodeLanguage: CodeLanguage;
    CodeOption: CodeOption;
    CodeOutput: CodeOutput;
    Color: Color;
    CompanySize: CompanySize;
    ComplementaryEdges: ComplementaryEdges;
    ComponentTransform: ComponentTransform;
    Conversation: Conversation;
    ConversationResultsPage: ConversationResultsPage;
    ConversionParams: ConversionParams;
    ConversionSortMode: ConversionSortMode;
    CountryCode: CountryCode;
    Coupon: Coupon;
    CreateCustomModel: CreateCustomModel;
    CreateOAuth2AppRequest: CreateOAuth2AppRequest;
    CreateOrgDataset: CreateOrgDataset;
    CreateProjectShareLinkRequest: CreateProjectShareLinkRequest;
    CreateRegion: CreateRegion;
    CreateRegionFromQueryPoint: CreateRegionFromQueryPoint;
    CreateShortlinkRequest: CreateShortlinkRequest;
    CreateShortlinkResponse: CreateShortlinkResponse;
    CreatedAtSortMode: CreatedAtSortMode;
    Currency: Currency;
    CurveGetControlPoints: CurveGetControlPoints;
    CurveGetEndPoints: CurveGetEndPoints;
    CurveGetType: CurveGetType;
    CurveSetConstraint: CurveSetConstraint;
    CurveType: CurveType;
    CustomModel: CustomModel;
    Customer: Customer;
    CustomerBalance: CustomerBalance;
    CutStrategy: CutStrategy;
    CutType: CutType;
    CutTypeV2: CutTypeV2;
    DatasetS3Policies: DatasetS3Policies;
    DefaultCameraCenterToScene: DefaultCameraCenterToScene;
    DefaultCameraCenterToSelection: DefaultCameraCenterToSelection;
    DefaultCameraFocusOn: DefaultCameraFocusOn;
    DefaultCameraGetSettings: DefaultCameraGetSettings;
    DefaultCameraGetView: DefaultCameraGetView;
    DefaultCameraLookAt: DefaultCameraLookAt;
    DefaultCameraPerspectiveSettings: DefaultCameraPerspectiveSettings;
    DefaultCameraSetOrthographic: DefaultCameraSetOrthographic;
    DefaultCameraSetPerspective: DefaultCameraSetPerspective;
    DefaultCameraSetView: DefaultCameraSetView;
    DefaultCameraZoom: DefaultCameraZoom;
    Density: Density;
    DerEncodedKeyPair: DerEncodedKeyPair;
    DeviceAccessTokenRequestForm: DeviceAccessTokenRequestForm;
    DeviceAuthConfirmParams: DeviceAuthConfirmParams;
    DeviceAuthRequestForm: DeviceAuthRequestForm;
    Direction: Direction;
    DisableDryRun: DisableDryRun;
    Discount: Discount;
    DiscountCode: DiscountCode;
    DistanceType: DistanceType;
    DxfStorage: DxfStorage;
    EdgeInfo: EdgeInfo;
    EdgeLinesVisible: EdgeLinesVisible;
    EdgeSpecifier: EdgeSpecifier;
    EmailAuthenticationForm: EmailAuthenticationForm;
    EmailMarketingConfirmTokenBody: EmailMarketingConfirmTokenBody;
    EmailMarketingConsentState: EmailMarketingConsentState;
    EmailMarketingConsentStatus: EmailMarketingConsentStatus;
    EnableDryRun: EnableDryRun;
    EnableSketchMode: EnableSketchMode;
    EngineUtilEvaluatePath: EngineUtilEvaluatePath;
    EntityCircularPattern: EntityCircularPattern;
    EntityClone: EntityClone;
    EntityDeleteChildren: EntityDeleteChildren;
    EntityFade: EntityFade;
    EntityGetAllChildUuids: EntityGetAllChildUuids;
    EntityGetChildUuid: EntityGetChildUuid;
    EntityGetDistance: EntityGetDistance;
    EntityGetIndex: EntityGetIndex;
    EntityGetNumChildren: EntityGetNumChildren;
    EntityGetParentId: EntityGetParentId;
    EntityGetPrimitiveIndex: EntityGetPrimitiveIndex;
    EntityGetSketchPaths: EntityGetSketchPaths;
    EntityLinearPattern: EntityLinearPattern;
    EntityLinearPatternTransform: EntityLinearPatternTransform;
    EntityMakeHelix: EntityMakeHelix;
    EntityMakeHelixFromEdge: EntityMakeHelixFromEdge;
    EntityMakeHelixFromParams: EntityMakeHelixFromParams;
    EntityMirror: EntityMirror;
    EntityMirrorAcross: EntityMirrorAcross;
    EntityMirrorAcrossEdge: EntityMirrorAcrossEdge;
    EntityReference: EntityReference;
    EntitySetOpacity: EntitySetOpacity;
    EntityType: EntityType;
    Error: Error;
    ErrorCode: ErrorCode;
    Export: Export;
    Export2d: Export2d;
    Export3d: Export3d;
    ExportFile: ExportFile;
    ExtendPath: ExtendPath;
    ExtendedUser: ExtendedUser;
    Extrude: Extrude;
    ExtrudeMethod: ExtrudeMethod;
    ExtrudeReference: ExtrudeReference;
    ExtrudeToReference: ExtrudeToReference;
    ExtrudedFaceInfo: ExtrudedFaceInfo;
    ExtrusionFaceCapType: ExtrusionFaceCapType;
    ExtrusionFaceInfo: ExtrusionFaceInfo;
    FaceEdgeInfo: FaceEdgeInfo;
    FaceGetCenter: FaceGetCenter;
    FaceGetGradient: FaceGetGradient;
    FaceGetPosition: FaceGetPosition;
    FaceIsPlanar: FaceIsPlanar;
    FailureWebSocketResponse: FailureWebSocketResponse;
    FbxStorage: FbxStorage;
    FileCenterOfMass: FileCenterOfMass;
    FileConversion: FileConversion;
    FileDensity: FileDensity;
    FileExportFormat: FileExportFormat;
    FileImportFormat: FileImportFormat;
    FileMass: FileMass;
    FileSurfaceArea: FileSurfaceArea;
    FileVolume: FileVolume;
    FractionOfEdge: FractionOfEdge;
    GetEntityType: GetEntityType;
    GetNumObjects: GetNumObjects;
    GetSketchModePlane: GetSketchModePlane;
    GlobalAxis: GlobalAxis;
    GltfPresentation: GltfPresentation;
    GltfStorage: GltfStorage;
    HandleMouseDragEnd: HandleMouseDragEnd;
    HandleMouseDragMove: HandleMouseDragMove;
    HandleMouseDragStart: HandleMouseDragStart;
    HighlightSetEntities: HighlightSetEntities;
    HighlightSetEntity: HighlightSetEntity;
    IceServer: IceServer;
    IdpMetadataSource: IdpMetadataSource;
    ImageFormat: ImageFormat;
    ImportFile: ImportFile;
    ImportFiles: ImportFiles;
    ImportedGeometry: ImportedGeometry;
    InputFormat3d: InputFormat3d;
    Invoice: Invoice;
    InvoiceLineItem: InvoiceLineItem;
    InvoiceRefundStatus: InvoiceRefundStatus;
    InvoiceResultsPage: InvoiceResultsPage;
    InvoiceStatus: InvoiceStatus;
    IpAddrInfo: IpAddrInfo;
    KclCodeCompletionParams: KclCodeCompletionParams;
    KclCodeCompletionRequest: KclCodeCompletionRequest;
    KclCodeCompletionResponse: KclCodeCompletionResponse;
    KclModel: KclModel;
    KclProjectFileRole: KclProjectFileRole;
    KclProjectPreviewStatus: KclProjectPreviewStatus;
    KclProjectPublicationStatus: KclProjectPublicationStatus;
    KclProjectShareLinkAccessMode: KclProjectShareLinkAccessMode;
    LengthUnit: LengthUnit;
    LenientUrl: LenientUrl;
    Loft: Loft;
    MakeAxesGizmo: MakeAxesGizmo;
    MakeOffsetPath: MakeOffsetPath;
    MakePlane: MakePlane;
    Mass: Mass;
    MbdSymbol: MbdSymbol;
    Method: Method;
    MirrorAcross: MirrorAcross;
    MlCopilotClientMessage: MlCopilotClientMessage;
    MlCopilotFile: MlCopilotFile;
    MlCopilotMode: MlCopilotMode;
    MlCopilotModeOption: MlCopilotModeOption;
    MlCopilotServerMessage: MlCopilotServerMessage;
    MlCopilotSupportedModels: MlCopilotSupportedModels;
    MlCopilotSystemCommand: MlCopilotSystemCommand;
    MlCopilotTool: MlCopilotTool;
    MlFeedback: MlFeedback;
    MlReasoningEffort: MlReasoningEffort;
    MlToolResult: MlToolResult;
    ModelingAppShareLinks: ModelingAppShareLinks;
    ModelingAppSubscriptionTier: ModelingAppSubscriptionTier;
    ModelingCmd: ModelingCmd;
    ModelingCmdId: ModelingCmdId;
    ModelingCmdReq: ModelingCmdReq;
    ModelingSessionData: ModelingSessionData;
    MouseClick: MouseClick;
    MouseMove: MouseMove;
    MovePathPen: MovePathPen;
    NewAnnotation: NewAnnotation;
    OAuth2AppClientType: OAuth2AppClientType;
    OAuth2AppGrantType: OAuth2AppGrantType;
    OAuth2AppMode: OAuth2AppMode;
    OAuth2AppResponse: OAuth2AppResponse;
    OAuth2AppResponseResultsPage: OAuth2AppResponseResultsPage;
    OAuth2AuthorizationCodeUuid: OAuth2AuthorizationCodeUuid;
    OAuth2AuthorizationDecisionResponse: OAuth2AuthorizationDecisionResponse;
    OAuth2AuthorizationRequestResponse: OAuth2AuthorizationRequestResponse;
    OAuth2AuthorizationResponseType: OAuth2AuthorizationResponseType;
    OAuth2ClientInfo: OAuth2ClientInfo;
    OAuth2CodeChallengeMethod: OAuth2CodeChallengeMethod;
    OAuth2GrantType: OAuth2GrantType;
    OAuth2RefreshTokenUuid: OAuth2RefreshTokenUuid;
    OAuth2Scope: OAuth2Scope;
    OAuth2Scopes: OAuth2Scopes;
    OAuth2TokenGrantType: OAuth2TokenGrantType;
    OAuth2TokenRequestForm: OAuth2TokenRequestForm;
    ObjectBringToFront: ObjectBringToFront;
    ObjectSetMaterialParamsPbr: ObjectSetMaterialParamsPbr;
    ObjectVisible: ObjectVisible;
    OffsetSurface: OffsetSurface;
    OkModelingCmdResponse: OkModelingCmdResponse;
    OkWebSocketResponseData: OkWebSocketResponseData;
    OppositeForAngle: OppositeForAngle;
    OppositeForLengthUnit: OppositeForLengthUnit;
    Org: Org;
    OrgAddress: OrgAddress;
    OrgAdminDetails: OrgAdminDetails;
    OrgDataset: OrgDataset;
    OrgDatasetConversionStatsResponse: OrgDatasetConversionStatsResponse;
    OrgDatasetFileConversionDetails: OrgDatasetFileConversionDetails;
    OrgDatasetFileConversionPhase: OrgDatasetFileConversionPhase;
    OrgDatasetFileConversionStatus: OrgDatasetFileConversionStatus;
    OrgDatasetFileConversionSummary: OrgDatasetFileConversionSummary;
    OrgDatasetFileConversionSummaryResultsPage: OrgDatasetFileConversionSummaryResultsPage;
    OrgDatasetResultsPage: OrgDatasetResultsPage;
    OrgDatasetSemanticSearchMatch: OrgDatasetSemanticSearchMatch;
    OrgDatasetSnapshotImage: OrgDatasetSnapshotImage;
    OrgDatasetSource: OrgDatasetSource;
    OrgDatasetStatus: OrgDatasetStatus;
    OrgDetails: OrgDetails;
    OrgMember: OrgMember;
    OrgMemberResultsPage: OrgMemberResultsPage;
    OrgRole: OrgRole;
    OrientToFace: OrientToFace;
    OriginType: OriginType;
    OutputFile: OutputFile;
    OutputFormat2d: OutputFormat2d;
    OutputFormat3d: OutputFormat3d;
    PathCommand: PathCommand;
    PathComponentConstraintBound: PathComponentConstraintBound;
    PathComponentConstraintType: PathComponentConstraintType;
    PathGetCurveUuid: PathGetCurveUuid;
    PathGetCurveUuidsForVertices: PathGetCurveUuidsForVertices;
    PathGetInfo: PathGetInfo;
    PathGetSketchTargetUuid: PathGetSketchTargetUuid;
    PathGetVertexUuids: PathGetVertexUuids;
    PathSegment: PathSegment;
    PathSegmentInfo: PathSegmentInfo;
    PaymentIntent: PaymentIntent;
    PaymentMethod: PaymentMethod;
    PaymentMethodCardChecks: PaymentMethodCardChecks;
    PaymentMethodType: PaymentMethodType;
    PerspectiveCameraParameters: PerspectiveCameraParameters;
    PlanInterval: PlanInterval;
    PlanStep: PlanStep;
    PlaneIntersectAndProject: PlaneIntersectAndProject;
    PlaneSetColor: PlaneSetColor;
    PlyStorage: PlyStorage;
    Point2d: Point2d;
    Point3d: Point3d;
    Point4d: Point4d;
    Pong: Pong;
    PostEffectType: PostEffectType;
    PriceUpsertRequest: PriceUpsertRequest;
    PrimitiveTopologyFallback: PrimitiveTopologyFallback;
    PrivacySettings: PrivacySettings;
    ProjectArchiveFormat: ProjectArchiveFormat;
    ProjectCategoryResponse: ProjectCategoryResponse;
    ProjectEntityToPlane: ProjectEntityToPlane;
    ProjectFileResponse: ProjectFileResponse;
    ProjectPointsToPlane: ProjectPointsToPlane;
    ProjectPublicationInfoResponse: ProjectPublicationInfoResponse;
    ProjectResponse: ProjectResponse;
    ProjectShareLinkResponse: ProjectShareLinkResponse;
    ProjectSummaryResponse: ProjectSummaryResponse;
    PublicEmailMarketingConsentRequest: PublicEmailMarketingConsentRequest;
    PublicMailingListMembershipRequest: PublicMailingListMembershipRequest;
    PublicProjectOwnerResponse: PublicProjectOwnerResponse;
    PublicProjectResponse: PublicProjectResponse;
    PublicProjectVoteResponse: PublicProjectVoteResponse;
    QueryEntityType: QueryEntityType;
    QueryEntityTypeWithPoint: QueryEntityTypeWithPoint;
    RawFile: RawFile;
    ReasoningMessage: ReasoningMessage;
    ReconfigureStream: ReconfigureStream;
    RegionGetQueryPoint: RegionGetQueryPoint;
    RegionVersion: RegionVersion;
    RelativeTo: RelativeTo;
    RemoveSceneObjects: RemoveSceneObjects;
    Revolve: Revolve;
    RevolveAboutEdge: RevolveAboutEdge;
    Rotation: Rotation;
    RtcIceCandidateInit: RtcIceCandidateInit;
    RtcSdpType: RtcSdpType;
    RtcSessionDescription: RtcSessionDescription;
    SalesInquiryType: SalesInquiryType;
    SamlIdentityProvider: SamlIdentityProvider;
    SamlIdentityProviderCreate: SamlIdentityProviderCreate;
    SceneClearAll: SceneClearAll;
    SceneGetEntityIds: SceneGetEntityIds;
    SceneSelectionType: SceneSelectionType;
    SceneToolType: SceneToolType;
    SelectAdd: SelectAdd;
    SelectClear: SelectClear;
    SelectEntity: SelectEntity;
    SelectGet: SelectGet;
    SelectRegionFromPoint: SelectRegionFromPoint;
    SelectRemove: SelectRemove;
    SelectReplace: SelectReplace;
    SelectWithPoint: SelectWithPoint;
    SelectedRegion: SelectedRegion;
    Selection: Selection;
    SendObject: SendObject;
    ServiceAccount: ServiceAccount;
    ServiceAccountResultsPage: ServiceAccountResultsPage;
    ServiceAccountUuid: ServiceAccountUuid;
    Session: Session;
    SessionUuid: SessionUuid;
    SetBackgroundColor: SetBackgroundColor;
    SetCurrentToolProperties: SetCurrentToolProperties;
    SetDefaultSystemProperties: SetDefaultSystemProperties;
    SetGridAutoScale: SetGridAutoScale;
    SetGridReferencePlane: SetGridReferencePlane;
    SetGridScale: SetGridScale;
    SetObjectTransform: SetObjectTransform;
    SetOrderIndependentTransparency: SetOrderIndependentTransparency;
    SetSceneUnits: SetSceneUnits;
    SetSelectionFilter: SetSelectionFilter;
    SetSelectionType: SetSelectionType;
    SetTool: SetTool;
    Shortlink: Shortlink;
    ShortlinkResultsPage: ShortlinkResultsPage;
    SideFace: SideFace;
    SketchModeDisable: SketchModeDisable;
    Solid2dAddHole: Solid2dAddHole;
    Solid3dCutEdgeReferences: Solid3dCutEdgeReferences;
    Solid3dCutEdges: Solid3dCutEdges;
    Solid3dFilletEdge: Solid3dFilletEdge;
    Solid3dFlip: Solid3dFlip;
    Solid3dFlipFace: Solid3dFlipFace;
    Solid3dGetAdjacencyInfo: Solid3dGetAdjacencyInfo;
    Solid3dGetAllEdgeFaces: Solid3dGetAllEdgeFaces;
    Solid3dGetAllOppositeEdges: Solid3dGetAllOppositeEdges;
    Solid3dGetBodyType: Solid3dGetBodyType;
    Solid3dGetCommonEdge: Solid3dGetCommonEdge;
    Solid3dGetEdgeUuid: Solid3dGetEdgeUuid;
    Solid3dGetExtrusionFaceInfo: Solid3dGetExtrusionFaceInfo;
    Solid3dGetFaceUuid: Solid3dGetFaceUuid;
    Solid3dGetNextAdjacentEdge: Solid3dGetNextAdjacentEdge;
    Solid3dGetOppositeEdge: Solid3dGetOppositeEdge;
    Solid3dGetPrevAdjacentEdge: Solid3dGetPrevAdjacentEdge;
    Solid3dJoin: Solid3dJoin;
    Solid3dMultiJoin: Solid3dMultiJoin;
    Solid3dShellFace: Solid3dShellFace;
    SourcePosition: SourcePosition;
    SourceRange: SourceRange;
    SourceRangePrompt: SourceRangePrompt;
    StartPath: StartPath;
    StepPresentation: StepPresentation;
    StlStorage: StlStorage;
    StorageProvider: StorageProvider;
    StoreCouponParams: StoreCouponParams;
    SubscriptionActionType: SubscriptionActionType;
    SubscriptionBillingMode: SubscriptionBillingMode;
    SubscriptionPlanBillingModel: SubscriptionPlanBillingModel;
    SubscriptionPlanPriceRecord: SubscriptionPlanPriceRecord;
    SubscriptionTierFeature: SubscriptionTierFeature;
    SubscriptionTierPrice: SubscriptionTierPrice;
    SubscriptionTierType: SubscriptionTierType;
    SubscriptionTrainingDataBehavior: SubscriptionTrainingDataBehavior;
    SuccessWebSocketResponse: SuccessWebSocketResponse;
    SupportInquiryType: SupportInquiryType;
    SupportTier: SupportTier;
    SurfaceArea: SurfaceArea;
    SurfaceBlend: SurfaceBlend;
    SurfaceCreated: SurfaceCreated;
    SurfaceEdgeReference: SurfaceEdgeReference;
    Sweep: Sweep;
    System: System;
    TakeSnapshot: TakeSnapshot;
    TextToCad: TextToCad;
    TextToCadCreateBody: TextToCadCreateBody;
    TextToCadIteration: TextToCadIteration;
    TextToCadIterationBody: TextToCadIterationBody;
    TextToCadModel: TextToCadModel;
    TextToCadMultiFileIteration: TextToCadMultiFileIteration;
    TextToCadMultiFileIterationBody: TextToCadMultiFileIterationBody;
    TextToCadResponse: TextToCadResponse;
    TextToCadResponseResultsPage: TextToCadResponseResultsPage;
    TokenRevokeRequestForm: TokenRevokeRequestForm;
    Transform: Transform;
    TransformByForPoint3d: TransformByForPoint3d;
    TransformByForPoint4d: TransformByForPoint4d;
    TwistExtrude: TwistExtrude;
    UnitAngle: UnitAngle;
    UnitAngleConversion: UnitAngleConversion;
    UnitArea: UnitArea;
    UnitAreaConversion: UnitAreaConversion;
    UnitCurrent: UnitCurrent;
    UnitCurrentConversion: UnitCurrentConversion;
    UnitDensity: UnitDensity;
    UnitEnergy: UnitEnergy;
    UnitEnergyConversion: UnitEnergyConversion;
    UnitForce: UnitForce;
    UnitForceConversion: UnitForceConversion;
    UnitFrequency: UnitFrequency;
    UnitFrequencyConversion: UnitFrequencyConversion;
    UnitLength: UnitLength;
    UnitLengthConversion: UnitLengthConversion;
    UnitMass: UnitMass;
    UnitMassConversion: UnitMassConversion;
    UnitPower: UnitPower;
    UnitPowerConversion: UnitPowerConversion;
    UnitPressure: UnitPressure;
    UnitPressureConversion: UnitPressureConversion;
    UnitTemperature: UnitTemperature;
    UnitTemperatureConversion: UnitTemperatureConversion;
    UnitTorque: UnitTorque;
    UnitTorqueConversion: UnitTorqueConversion;
    UnitVolume: UnitVolume;
    UnitVolumeConversion: UnitVolumeConversion;
    UpdateAnnotation: UpdateAnnotation;
    UpdateCustomModel: UpdateCustomModel;
    UpdateMemberToOrgBody: UpdateMemberToOrgBody;
    UpdateOAuth2AppRequest: UpdateOAuth2AppRequest;
    UpdateOrgDataset: UpdateOrgDataset;
    UpdateOrgDatasetSource: UpdateOrgDatasetSource;
    UpdatePaymentBalance: UpdatePaymentBalance;
    UpdateShortlinkRequest: UpdateShortlinkRequest;
    UpdateUser: UpdateUser;
    UploadOrgDatasetFilesResponse: UploadOrgDatasetFilesResponse;
    UserAdminDetails: UserAdminDetails;
    UserCadInfoAdminDetails: UserCadInfoAdminDetails;
    UserFeature: UserFeature;
    UserFeatureEntry: UserFeatureEntry;
    UserFeatureList: UserFeatureList;
    UserIdentifier: UserIdentifier;
    UserOrgInfo: UserOrgInfo;
    UserOrgRole: UserOrgRole;
    UserResponse: UserResponse;
    Uuid: Uuid;
    VerificationTokenResponse: VerificationTokenResponse;
    ViewIsometric: ViewIsometric;
    Volume: Volume;
    WebSocketRequest: WebSocketRequest;
    WebSocketResponse: WebSocketResponse;
    WebsiteCadUserInfoForm: WebsiteCadUserInfoForm;
    WebsiteSalesForm: WebsiteSalesForm;
    WebsiteSupportForm: WebsiteSupportForm;
    WorldCoordinateSystem: WorldCoordinateSystem;
    ZooProductSubscription: ZooProductSubscription;
    ZooProductSubscriptions: ZooProductSubscriptions;
    ZooProductSubscriptionsOrgRequest: ZooProductSubscriptionsOrgRequest;
    ZooProductSubscriptionsUserRequest: ZooProductSubscriptionsUserRequest;
    ZooTool: ZooTool;
    ZoomToFit: ZoomToFit;
}
export type File = {
    readonly name: string;
    readonly data: Blob;
};
//# sourceMappingURL=models.d.ts.map