// Generated by nautilus-codegen. Do not edit manually.

export interface {{ type_name }}ValueInput {
  value: string;
}
{%- if is_spatial %}
export interface {{ type_name }}WktInput {
  wkt: string;
  srid?: number;
}
{%- if is_geometry %}
export interface {{ type_name }}PointInput {
  x: number;
  y: number;
  srid?: number;
}
{%- endif %}
{%- if is_geography %}
export interface {{ type_name }}PointInput {
  lon: number;
  lat: number;
  srid?: number;
}
{%- endif %}
export type {{ type_name }}BuilderInput =
  | {{ type_name }}ValueInput
  | {{ type_name }}WktInput
  | {{ type_name }}PointInput;
{%- else %}
export type {{ type_name }}BuilderInput = {{ type_name }}ValueInput;
{%- endif %}
export type {{ type_name }}Input = {{ type_name }} | string | {{ type_name }}BuilderInput;

export declare class {{ type_name }} {
  readonly value: string;
  constructor(value: string | {{ type_name }}BuilderInput);
  static of(value: string): {{ type_name }};
{%- if is_spatial %}
  static wkt(value: string, srid?: number): {{ type_name }};
{%- if is_geometry %}
  static point(x: number, y: number, srid?: number): {{ type_name }};
{%- endif %}
{%- if is_geography %}
  static point(lon: number, lat: number, srid?: number): {{ type_name }};
{%- endif %}
{%- endif %}
  static from(value: {{ type_name }}Input): {{ type_name }};
  static toWireInput(value: {{ type_name }}Input): string;
  asString(): string;
  toWire(): string;
  equals(other: {{ type_name }}Input): boolean;
  isEmpty(): boolean;
  toString(): string;
}
