/* shumate-1.0.vapi generated by vapigen, do not modify. */

[CCode (cprefix = "Shumate", gir_namespace = "Shumate", gir_version = "1.0", lower_case_cprefix = "shumate_")]
namespace Shumate {
	[CCode (cheader_filename = "shumate/shumate.h", type_id = "shumate_compass_get_type ()")]
	public class Compass : Gtk.Widget, Gtk.Accessible, Gtk.Buildable, Gtk.ConstraintTarget {
		[CCode (has_construct_function = false)]
		public Compass (Shumate.Viewport? viewport);
		public unowned Shumate.Viewport? get_viewport ();
		public void set_viewport (Shumate.Viewport? viewport);
		public Shumate.Viewport viewport { get; set; }
	}
	[CCode (cheader_filename = "shumate/shumate.h", type_id = "shumate_coordinate_get_type ()")]
	public class Coordinate : GLib.InitiallyUnowned, Shumate.Location {
		[CCode (has_construct_function = false)]
		public Coordinate ();
		[CCode (has_construct_function = false)]
		public Coordinate.full (double latitude, double longitude);
	}
	[CCode (cheader_filename = "shumate/shumate.h", type_id = "shumate_data_source_get_type ()")]
	public abstract class DataSource : GLib.Object {
		[CCode (has_construct_function = false)]
		protected DataSource ();
		[Version (since = "1.1")]
		public uint get_max_zoom_level ();
		[Version (since = "1.1")]
		public uint get_min_zoom_level ();
		public virtual async GLib.Bytes? get_tile_data_async (int x, int y, int zoom_level, GLib.Cancellable? cancellable) throws GLib.Error;
		[Version (since = "1.1")]
		public void set_max_zoom_level (uint zoom_level);
		[Version (since = "1.1")]
		public void set_min_zoom_level (uint zoom_level);
		[Version (since = "1.1")]
		public virtual Shumate.DataSourceRequest start_request (int x, int y, int zoom_level, GLib.Cancellable? cancellable = null);
		[Version (since = "1.1")]
		public uint max_zoom_level { get; set construct; }
		[Version (since = "1.1")]
		public uint min_zoom_level { get; set construct; }
		[Version (deprecated = true, deprecated_since = "1.1")]
		public signal void received_data (int x, int y, int zoom_level, GLib.Bytes bytes);
	}
	[CCode (cheader_filename = "shumate/shumate.h", type_id = "shumate_data_source_request_get_type ()")]
	[Version (since = "1.1")]
	public class DataSourceRequest : GLib.Object {
		[CCode (has_construct_function = false)]
		public DataSourceRequest (int x, int y, int zoom_level);
		public void complete ();
		public void emit_data (GLib.Bytes data, bool complete);
		public void emit_error (GLib.Error error);
		public unowned GLib.Bytes? get_data ();
		public unowned GLib.Error? get_error ();
		public int get_x ();
		public int get_y ();
		public int get_zoom_level ();
		public bool is_completed ();
		[NoAccessorMethod]
		public bool completed { get; }
		public GLib.Bytes data { get; }
		public GLib.Error error { get; }
		public int x { get; construct; }
		public int y { get; construct; }
		public int zoom_level { get; construct; }
	}
	[CCode (cheader_filename = "shumate/shumate.h", type_id = "shumate_file_cache_get_type ()")]
	public class FileCache : GLib.Object {
		[CCode (has_construct_function = false)]
		protected FileCache ();
		[CCode (has_construct_function = false)]
		public FileCache.full (uint size_limit, string cache_key, string? cache_dir);
		public unowned string get_cache_dir ();
		public unowned string get_cache_key ();
		public uint get_size_limit ();
		[CCode (async_result_pos = 3.1)]
		public async GLib.Bytes get_tile_async (int x, int y, int zoom_level, GLib.Cancellable? cancellable, out string? etag, out GLib.DateTime? modtime) throws GLib.Error;
		public void mark_up_to_date (int x, int y, int zoom_level);
		public async bool purge_cache_async (GLib.Cancellable? cancellable) throws GLib.Error;
		public void set_size_limit (uint size_limit);
		public async bool store_tile_async (int x, int y, int zoom_level, GLib.Bytes bytes, string? etag, GLib.Cancellable? cancellable) throws GLib.Error;
		public string cache_dir { get; construct; }
		public string cache_key { get; construct; }
		public uint size_limit { get; set construct; }
	}
	[CCode (cheader_filename = "shumate/shumate.h", type_id = "shumate_layer_get_type ()")]
	public abstract class Layer : Gtk.Widget, Gtk.Accessible, Gtk.Buildable, Gtk.ConstraintTarget {
		[CCode (has_construct_function = false)]
		protected Layer ();
		[NoWrapper]
		public virtual string? get_debug_text ();
		public unowned Shumate.Viewport get_viewport ();
		public Shumate.Viewport viewport { get; construct; }
	}
	[CCode (cheader_filename = "shumate/shumate.h", type_id = "shumate_license_get_type ()")]
	public class License : Gtk.Widget, Gtk.Accessible, Gtk.Buildable, Gtk.ConstraintTarget {
		[CCode (has_construct_function = false)]
		public License ();
		public void append_map_source (Shumate.MapSource map_source);
		public unowned string get_extra_text ();
		public float get_xalign ();
		public void prepend_map_source (Shumate.MapSource map_source);
		public void remove_map_source (Shumate.MapSource map_source);
		public void set_extra_text (string text);
		public void set_xalign (float xalign);
		public string extra_text { get; set; }
		public float xalign { get; set; }
	}
	[CCode (cheader_filename = "shumate/shumate.h", type_id = "shumate_map_get_type ()")]
	public class Map : Gtk.Widget, Gtk.Accessible, Gtk.Buildable, Gtk.ConstraintTarget {
		[CCode (has_construct_function = false)]
		public Map ();
		public void add_layer (Shumate.Layer layer);
		public void center_on (double latitude, double longitude);
		public bool get_animate_zoom ();
		public uint get_go_to_duration ();
		public Shumate.State get_state ();
		public unowned Shumate.Viewport get_viewport ();
		public bool get_zoom_on_double_click ();
		public void go_to (double latitude, double longitude);
		public void go_to_full (double latitude, double longitude, double zoom_level);
		public void go_to_full_with_duration (double latitude, double longitude, double zoom_level, uint duration_ms);
		public void insert_layer_above (Shumate.Layer layer, Shumate.Layer? next_sibling);
		public void insert_layer_behind (Shumate.Layer layer, Shumate.Layer? next_sibling);
		public void remove_layer (Shumate.Layer layer);
		public void set_animate_zoom (bool value);
		public void set_go_to_duration (uint duration);
		public void set_map_source (Shumate.MapSource map_source);
		public void set_zoom_on_double_click (bool value);
		[CCode (has_construct_function = false)]
		public Map.simple ();
		public void stop_go_to ();
		public void zoom_in ();
		public void zoom_out ();
		public bool animate_zoom { get; set; }
		public uint go_to_duration { get; set; }
		public Shumate.State state { get; }
		public Shumate.Viewport viewport { get; }
		public bool zoom_on_double_click { get; set; }
		public signal void animation_completed ();
	}
	[CCode (cheader_filename = "shumate/shumate.h", type_id = "shumate_map_layer_get_type ()")]
	public class MapLayer : Shumate.Layer, Gtk.Accessible, Gtk.Buildable, Gtk.ConstraintTarget {
		[CCode (has_construct_function = false)]
		public MapLayer (Shumate.MapSource map_source, Shumate.Viewport viewport);
		[NoAccessorMethod]
		public Shumate.MapSource map_source { owned get; construct; }
		[Version (since = "1.4")]
		public signal void map_loaded (bool errors);
		[Version (since = "1.1")]
		public signal void symbol_clicked (Shumate.SymbolEvent event);
		[Version (since = "1.4")]
		public signal void tile_error (Shumate.Tile tile, GLib.Error error);
	}
	[CCode (cheader_filename = "shumate/shumate.h", type_id = "shumate_map_source_get_type ()")]
	public abstract class MapSource : GLib.Object {
		[CCode (has_construct_function = false)]
		protected MapSource ();
		public virtual async bool fill_tile_async (Shumate.Tile tile, GLib.Cancellable? cancellable) throws GLib.Error;
		public uint get_column_count (uint zoom_level);
		public unowned string get_id ();
		public double get_latitude (double zoom_level, double y);
		public unowned string get_license ();
		public unowned string get_license_uri ();
		public double get_longitude (double zoom_level, double x);
		public uint get_max_zoom_level ();
		public double get_meters_per_pixel (double zoom_level, double latitude, double longitude);
		public uint get_min_zoom_level ();
		public unowned string get_name ();
		public Shumate.MapProjection get_projection ();
		public uint get_row_count (uint zoom_level);
		public uint get_tile_size ();
		public double get_tile_size_at_zoom (double zoom_level);
		public double get_x (double zoom_level, double longitude);
		public double get_y (double zoom_level, double latitude);
		public void set_id (string id);
		public void set_license (string license);
		public void set_license_uri (string license_uri);
		public void set_max_zoom_level (uint zoom_level);
		public void set_min_zoom_level (uint zoom_level);
		public void set_name (string name);
		public void set_projection (Shumate.MapProjection projection);
		public void set_tile_size (uint tile_size);
		public string id { get; set construct; }
		public string license { get; set construct; }
		public string license_uri { get; set construct; }
		public uint max_zoom_level { get; set construct; }
		public uint min_zoom_level { get; set construct; }
		public string name { get; set construct; }
		public Shumate.MapProjection projection { get; set construct; }
		public uint tile_size { get; set construct; }
	}
	[CCode (cheader_filename = "shumate/shumate.h", type_id = "shumate_map_source_registry_get_type ()")]
	public class MapSourceRegistry : GLib.Object, GLib.ListModel {
		[CCode (has_construct_function = false)]
		public MapSourceRegistry ();
		public void add (owned Shumate.MapSource map_source);
		public unowned Shumate.MapSource? get_by_id (string id);
		public void populate_defaults ();
		public void remove (string id);
		[CCode (has_construct_function = false)]
		public MapSourceRegistry.with_defaults ();
	}
	[CCode (cheader_filename = "shumate/shumate.h", type_id = "shumate_marker_get_type ()")]
	public class Marker : Gtk.Widget, Gtk.Accessible, Gtk.Buildable, Gtk.ConstraintTarget, Shumate.Location {
		[CCode (has_construct_function = false)]
		public Marker ();
		public void animate_in ();
		public void animate_in_with_delay (uint delay);
		public void animate_out ();
		public void animate_out_with_delay (uint delay);
		public unowned Gtk.Widget? get_child ();
		public bool get_draggable ();
		[Version (since = "1.5")]
		public void get_hotspot (out double x_hotspot, out double y_hotspot);
		public bool get_selectable ();
		public bool is_selected ();
		public void set_child (Gtk.Widget? child);
		public void set_draggable (bool value);
		[Version (since = "1.5")]
		public void set_hotspot (double x_hotspot, double y_hotspot);
		public void set_selectable (bool value);
		public Gtk.Widget child { get; set; }
		public bool selectable { get; set; }
		[NoAccessorMethod]
		[Version (since = "1.5")]
		public double x_hotspot { get; set; }
		[NoAccessorMethod]
		[Version (since = "1.5")]
		public double y_hotspot { get; set; }
	}
	[CCode (cheader_filename = "shumate/shumate.h", type_id = "shumate_marker_layer_get_type ()")]
	public class MarkerLayer : Shumate.Layer, Gtk.Accessible, Gtk.Buildable, Gtk.ConstraintTarget {
		[CCode (has_construct_function = false)]
		public MarkerLayer (Shumate.Viewport viewport);
		public void add_marker (Shumate.Marker marker);
		[CCode (has_construct_function = false)]
		public MarkerLayer.full (Shumate.Viewport viewport, Gtk.SelectionMode mode);
		public GLib.List<weak Shumate.Marker> get_markers ();
		public GLib.List<weak Shumate.Marker> get_selected ();
		public Gtk.SelectionMode get_selection_mode ();
		public void remove_all ();
		public void remove_marker (Shumate.Marker marker);
		public void select_all_markers ();
		public bool select_marker (Shumate.Marker marker);
		public void set_selection_mode (Gtk.SelectionMode mode);
		public void unselect_all_markers ();
		public void unselect_marker (Shumate.Marker marker);
		public Gtk.SelectionMode selection_mode { get; set; }
		public signal void marker_selected (Shumate.Marker marker);
		public signal void marker_unselected (Shumate.Marker marker);
	}
	[CCode (cheader_filename = "shumate/shumate.h", type_id = "shumate_path_layer_get_type ()")]
	public class PathLayer : Shumate.Layer, Gtk.Accessible, Gtk.Buildable, Gtk.ConstraintTarget {
		[CCode (has_construct_function = false)]
		public PathLayer (Shumate.Viewport viewport);
		public void add_node (Shumate.Location location);
		public bool get_closed ();
		public GLib.List<uint> get_dash ();
		public bool get_fill ();
		public Gdk.RGBA? get_fill_color ();
		public GLib.List<weak Shumate.Location> get_nodes ();
		public Gdk.RGBA? get_outline_color ();
		public double get_outline_width ();
		public bool get_stroke ();
		public Gdk.RGBA? get_stroke_color ();
		public double get_stroke_width ();
		public void insert_node (Shumate.Location location, uint position);
		public void remove_all ();
		public void remove_node (Shumate.Location location);
		public void set_closed (bool value);
		public void set_dash (GLib.List<uint> dash_pattern);
		public void set_fill (bool value);
		public void set_fill_color (Gdk.RGBA? color);
		public void set_outline_color (Gdk.RGBA? color);
		public void set_outline_width (double value);
		public void set_stroke (bool value);
		public void set_stroke_color (Gdk.RGBA? color);
		public void set_stroke_width (double value);
		public bool closed { get; set; }
		public bool fill { get; set; }
		public Gdk.RGBA fill_color { owned get; set; }
		public Gdk.RGBA outline_color { owned get; set; }
		public double outline_width { get; set; }
		public bool stroke { get; set; }
		public Gdk.RGBA stroke_color { owned get; set; }
		public double stroke_width { get; set; }
	}
	[CCode (cheader_filename = "shumate/shumate.h", type_id = "shumate_point_get_type ()")]
	public class Point : Shumate.Marker, Gtk.Accessible, Gtk.Buildable, Gtk.ConstraintTarget, Shumate.Location {
		[CCode (has_construct_function = false, type = "ShumateMarker*")]
		public Point ();
	}
	[CCode (cheader_filename = "shumate/shumate.h", type_id = "shumate_raster_renderer_get_type ()")]
	public class RasterRenderer : Shumate.MapSource {
		[CCode (has_construct_function = false)]
		public RasterRenderer (Shumate.DataSource data_source);
		[CCode (has_construct_function = false)]
		public RasterRenderer.from_url (string url_template);
		[CCode (has_construct_function = false)]
		public RasterRenderer.full (string id, string name, string license, string license_uri, uint min_zoom, uint max_zoom, uint tile_size, Shumate.MapProjection projection, Shumate.DataSource data_source);
		[CCode (has_construct_function = false)]
		public RasterRenderer.full_from_url (string id, string name, string license, string license_uri, uint min_zoom, uint max_zoom, uint tile_size, Shumate.MapProjection projection, string url_template);
		[NoAccessorMethod]
		public Shumate.DataSource data_source { owned get; construct; }
	}
	[CCode (cheader_filename = "shumate/shumate.h", type_id = "shumate_scale_get_type ()")]
	public class Scale : Gtk.Widget, Gtk.Accessible, Gtk.Buildable, Gtk.ConstraintTarget {
		[CCode (has_construct_function = false)]
		public Scale (Shumate.Viewport? viewport);
		public uint get_max_width ();
		public Shumate.Unit get_unit ();
		public unowned Shumate.Viewport? get_viewport ();
		public void set_max_width (uint value);
		public void set_unit (Shumate.Unit unit);
		public void set_viewport (Shumate.Viewport? viewport);
		public uint max_width { get; set; }
		public Shumate.Unit unit { get; set; }
		public Shumate.Viewport viewport { get; set; }
	}
	[CCode (cheader_filename = "shumate/shumate.h", type_id = "shumate_simple_map_get_type ()")]
	public class SimpleMap : Gtk.Widget, Gtk.Accessible, Gtk.Buildable, Gtk.ConstraintTarget {
		[CCode (has_construct_function = false)]
		public SimpleMap ();
		public void add_overlay_layer (Shumate.Layer layer);
		[Version (since = "1.4")]
		public unowned Shumate.MapLayer get_base_map_layer ();
		public unowned Shumate.Compass get_compass ();
		public unowned Shumate.License get_license ();
		public unowned Shumate.Map get_map ();
		public unowned Shumate.MapSource get_map_source ();
		public unowned Shumate.Scale get_scale ();
		public bool get_show_zoom_buttons ();
		public unowned Shumate.Viewport get_viewport ();
		[Version (since = "1.5")]
		public void insert_overlay_layer_above (Shumate.Layer layer, Shumate.Layer sibling);
		[Version (since = "1.5")]
		public void insert_overlay_layer_behind (Shumate.Layer layer, Shumate.Layer sibling);
		public void remove_overlay_layer (Shumate.Layer layer);
		public void set_map_source (Shumate.MapSource? map_source);
		public void set_show_zoom_buttons (bool show_zoom_buttons);
		[Version (since = "1.4")]
		public Shumate.MapLayer base_map_layer { get; }
		public Shumate.Compass compass { get; }
		public Shumate.License license { get; }
		public Shumate.Map map { get; }
		public Shumate.MapSource map_source { get; set; }
		public Shumate.Scale scale { get; }
		public bool show_zoom_buttons { get; set; }
		public Shumate.Viewport viewport { get; }
		[Version (since = "1.1")]
		public signal void symbol_clicked (Shumate.SymbolEvent event);
	}
	[CCode (cheader_filename = "shumate/shumate.h", type_id = "shumate_symbol_event_get_type ()")]
	[Version (since = "1.1")]
	public sealed class SymbolEvent : GLib.Object, Shumate.Location {
		[CCode (has_construct_function = false)]
		protected SymbolEvent ();
		public unowned string get_feature_id ();
		[CCode (array_length = false, array_null_terminated = true)]
		public (unowned string)[] get_keys ();
		public unowned string get_layer ();
		[Version (since = "1.5")]
		public int get_n_press ();
		public unowned string get_source_layer ();
		public unowned string get_tag (string tag_name);
		public string feature_id { get; }
		public string layer { get; }
		[NoAccessorMethod]
		[Version (since = "1.5")]
		public uint n_press { get; set; }
		public string source_layer { get; }
	}
	[CCode (cheader_filename = "shumate/shumate.h", type_id = "shumate_tile_get_type ()")]
	public class Tile : GLib.Object {
		[CCode (has_construct_function = false)]
		public Tile ();
		[CCode (has_construct_function = false)]
		public Tile.full (uint x, uint y, uint size, uint zoom_level);
		public bool get_fade_in ();
		public unowned Gdk.Paintable? get_paintable ();
		[Version (since = "1.1")]
		public double get_scale_factor ();
		public uint get_size ();
		public Shumate.State get_state ();
		public uint get_x ();
		public uint get_y ();
		public uint get_zoom_level ();
		public void set_fade_in (bool fade_in);
		public void set_paintable (Gdk.Paintable paintable);
		[Version (since = "1.1")]
		public void set_scale_factor (double scale_factor);
		public void set_size (uint size);
		public void set_state (Shumate.State state);
		public void set_x (uint x);
		public void set_y (uint y);
		public void set_zoom_level (uint zoom_level);
		public bool fade_in { get; set; }
		public Gdk.Paintable paintable { get; set; }
		[Version (since = "1.1")]
		public double scale_factor { get; set; }
		public uint size { get; set; }
		public Shumate.State state { get; set; }
		public uint x { get; set; }
		public uint y { get; set; }
		public uint zoom_level { get; set; }
	}
	[CCode (cheader_filename = "shumate/shumate.h", type_id = "shumate_tile_downloader_get_type ()")]
	public class TileDownloader : Shumate.DataSource {
		[CCode (has_construct_function = false)]
		public TileDownloader (string url_template);
		[NoAccessorMethod]
		public string url_template { owned get; construct; }
	}
	[CCode (cheader_filename = "shumate/shumate.h", type_id = "shumate_vector_reader_get_type ()")]
	[Version (since = "1.2")]
	public class VectorReader : GLib.Object {
		[CCode (has_construct_function = false)]
		public VectorReader (GLib.Bytes bytes);
		public Shumate.VectorReaderIter iterate ();
	}
	[CCode (cheader_filename = "shumate/shumate.h", type_id = "shumate_vector_reader_iter_get_type ()")]
	[Version (since = "1.2")]
	public class VectorReaderIter : GLib.Object {
		[CCode (has_construct_function = false)]
		protected VectorReaderIter ();
		public bool feature_contains_point (double x, double y);
		public Shumate.GeometryType get_feature_geometry_type ();
		public uint64 get_feature_id ();
		[CCode (array_length = false, array_null_terminated = true)]
		public (unowned string)[] get_feature_keys ();
		public bool get_feature_point (out double x, out double y);
		public bool get_feature_tag (string key, out GLib.Value value);
		public uint get_layer_count ();
		public uint get_layer_extent ();
		public uint get_layer_feature_count ();
		public unowned string get_layer_name ();
		public unowned Shumate.VectorReader get_reader ();
		public bool next_feature ();
		public void read_feature (int index);
		public void read_layer (int index);
		public bool read_layer_by_name (string name);
		public Shumate.VectorReader reader { get; construct; }
	}
	[CCode (cheader_filename = "shumate/shumate.h", type_id = "shumate_vector_renderer_get_type ()")]
	public class VectorRenderer : Shumate.MapSource, GLib.Initable {
		[CCode (has_construct_function = false)]
		public VectorRenderer (string id, string style_json) throws GLib.Error;
		[Version (since = "1.6")]
		public unowned Shumate.VectorValue get_global_state (string key);
		[Version (since = "1.1")]
		public unowned Shumate.VectorSpriteSheet get_sprite_sheet ();
		public static bool is_supported ();
		[Version (since = "1.6")]
		public void reset_global_state (string key);
		[Version (since = "1.2")]
		public void set_data_source (string name, Shumate.DataSource data_source);
		[Version (since = "1.6")]
		public void set_global_state (string key, Shumate.VectorValue value);
		[Version (since = "1.1")]
		public void set_sprite_sheet (Shumate.VectorSpriteSheet sprites);
		[Version (deprecated = true, deprecated_since = "1.1")]
		public bool set_sprite_sheet_data (Gdk.Pixbuf sprites_pixbuf, string sprites_json) throws GLib.Error;
		[Version (since = "1.1")]
		public Shumate.VectorSpriteSheet sprite_sheet { get; set; }
		[NoAccessorMethod]
		public string style_json { owned get; construct; }
	}
	[CCode (cheader_filename = "shumate/shumate.h", type_id = "shumate_vector_sprite_get_type ()")]
	[Version (since = "1.1")]
	public class VectorSprite : GLib.Object, Gdk.Paintable, Gtk.SymbolicPaintable {
		[CCode (has_construct_function = false)]
		public VectorSprite (Gdk.Paintable source_paintable);
		[CCode (has_construct_function = false)]
		public VectorSprite.full (Gdk.Paintable source_paintable, int width, int height, double scale_factor, Gdk.Rectangle? source_rect);
		public int get_height ();
		public double get_scale_factor ();
		public unowned Gdk.Paintable get_source_paintable ();
		public unowned Gdk.Rectangle? get_source_rect ();
		public int get_width ();
		public int height { get; construct; }
		public double scale_factor { get; construct; }
		public Gdk.Paintable source_paintable { get; construct; }
		public Gdk.Rectangle source_rect { get; construct; }
		public int width { get; construct; }
	}
	[CCode (cheader_filename = "shumate/shumate.h", type_id = "shumate_vector_sprite_sheet_get_type ()")]
	[Version (since = "1.1")]
	public sealed class VectorSpriteSheet : GLib.Object {
		[CCode (has_construct_function = false)]
		public VectorSpriteSheet ();
		public bool add_page (Gdk.Texture texture, string json, double default_scale) throws GLib.Error;
		public void add_sprite (string name, Shumate.VectorSprite sprite);
		public Shumate.VectorSprite? get_sprite (string name, double scale);
		public void set_fallback (owned Shumate.VectorSpriteFallbackFunc? fallback);
	}
	[CCode (cheader_filename = "shumate/shumate.h", copy_function = "shumate_vector_value_dup", free_function = "shumate_vector_value_free", type_id = "shumate_vector_value_get_type ()")]
	[Compact]
	[Version (since = "1.6")]
	public class VectorValue {
		[CCode (has_construct_function = false)]
		public VectorValue ();
		public void array_append (Shumate.VectorValue element);
		[CCode (has_construct_function = false)]
		public VectorValue.boolean (bool boolean);
		[CCode (has_construct_function = false)]
		public VectorValue.color (Gdk.RGBA color);
		public Shumate.VectorValue dup ();
		public bool equal (Shumate.VectorValue b);
		public void free ();
		[CCode (has_construct_function = false)]
		public VectorValue.from_value (GLib.Value value);
		public bool get_boolean (out bool boolean);
		public bool get_color (out Gdk.RGBA color);
		public bool get_number (out double number);
		public bool get_string (out unowned global::string? string);
		public Shumate.VectorValueType get_value_type ();
		public int hash ();
		public bool is_null ();
		[CCode (has_construct_function = false)]
		public VectorValue.number (double number);
		public void set_boolean (bool boolean);
		public void set_color (Gdk.RGBA color);
		public void set_number (double number);
		public void set_string (global::string string);
		public void start_array ();
		[CCode (has_construct_function = false)]
		public VectorValue.string (global::string string);
		public void unset ();
	}
	[CCode (cheader_filename = "shumate/shumate.h", type_id = "shumate_viewport_get_type ()")]
	public class Viewport : GLib.Object, Shumate.Location {
		[CCode (has_construct_function = false)]
		public Viewport ();
		public uint get_max_zoom_level ();
		public uint get_min_zoom_level ();
		public unowned Shumate.MapSource? get_reference_map_source ();
		public double get_rotation ();
		public double get_zoom_level ();
		public void location_to_widget_coords (Gtk.Widget widget, double latitude, double longitude, out double x, out double y);
		public void set_max_zoom_level (uint max_zoom_level);
		public void set_min_zoom_level (uint min_zoom_level);
		public void set_reference_map_source (Shumate.MapSource? map_source);
		public void set_rotation (double rotation);
		public void set_zoom_level (double zoom_level);
		public void widget_coords_to_location (Gtk.Widget widget, double x, double y, out double latitude, out double longitude);
		public uint max_zoom_level { get; set; }
		public uint min_zoom_level { get; set; }
		public Shumate.MapSource reference_map_source { get; set; }
		public double rotation { get; set; }
		public double zoom_level { get; set; }
		[Version (since = "1.6")]
		public signal void changed ();
	}
	[CCode (cheader_filename = "shumate/shumate.h", type_cname = "ShumateLocationInterface", type_id = "shumate_location_get_type ()")]
	public interface Location : GLib.Object {
		[Version (since = "1.2")]
		public double distance (Shumate.Location other);
		public abstract double get_latitude ();
		public abstract double get_longitude ();
		public abstract void set_location (double latitude, double longitude);
		[NoAccessorMethod]
		public abstract double latitude { get; set; }
		[NoAccessorMethod]
		public abstract double longitude { get; set; }
	}
	[CCode (cheader_filename = "shumate/shumate.h", cprefix = "SHUMATE_GEOMETRY_TYPE_", type_id = "shumate_geometry_type_get_type ()")]
	[Version (since = "1.2")]
	public enum GeometryType {
		UNKNOWN,
		POINT,
		MULTIPOINT,
		LINESTRING,
		MULTILINESTRING,
		POLYGON,
		MULTIPOLYGON
	}
	[CCode (cheader_filename = "shumate/shumate.h", cprefix = "SHUMATE_MAP_PROJECTION_", type_id = "shumate_map_projection_get_type ()")]
	public enum MapProjection {
		MERCATOR
	}
	[CCode (cheader_filename = "shumate/shumate.h", cprefix = "SHUMATE_STATE_", type_id = "shumate_state_get_type ()")]
	public enum State {
		NONE,
		LOADING,
		LOADED,
		DONE
	}
	[CCode (cheader_filename = "shumate/shumate.h", cprefix = "SHUMATE_UNIT_", type_id = "shumate_unit_get_type ()")]
	public enum Unit {
		BOTH,
		METRIC,
		IMPERIAL
	}
	[CCode (cheader_filename = "shumate/shumate.h", cprefix = "SHUMATE_VECTOR_VALUE_TYPE_", type_id = "shumate_vector_value_type_get_type ()")]
	[Version (since = "1.6")]
	public enum VectorValueType {
		NULL,
		NUMBER,
		BOOLEAN,
		STRING,
		COLOR,
		ARRAY,
		RESOLVED_IMAGE,
		FORMATTED_STRING,
		COLLATOR
	}
	[CCode (cheader_filename = "shumate/shumate.h", cprefix = "SHUMATE_FILE_CACHE_ERROR_", type_id = "shumate_file_cache_error_get_type ()")]
	public errordomain FileCacheError {
		FAILED;
		public static GLib.Quark quark ();
	}
	[CCode (cheader_filename = "shumate/shumate.h", cprefix = "SHUMATE_STYLE_ERROR_", type_id = "shumate_style_error_get_type ()")]
	public errordomain StyleError {
		FAILED,
		MALFORMED_STYLE,
		UNSUPPORTED_LAYER,
		INVALID_EXPRESSION,
		SUPPORT_OMITTED,
		UNSUPPORTED;
		public static GLib.Quark quark ();
	}
	[CCode (cheader_filename = "shumate/shumate.h", cprefix = "SHUMATE_TILE_DOWNLOADER_ERROR_", type_id = "shumate_tile_downloader_error_get_type ()")]
	public errordomain TileDownloaderError {
		FAILED,
		BAD_RESPONSE,
		COULD_NOT_CONNECT,
		MALFORMED_URL,
		OFFLINE;
		public static GLib.Quark quark ();
	}
	[CCode (cheader_filename = "shumate/shumate.h", instance_pos = 3.9)]
	[Version (since = "1.1")]
	public delegate Shumate.VectorSprite? VectorSpriteFallbackFunc (Shumate.VectorSpriteSheet sprite_sheet, string name, double scale);
	[CCode (cheader_filename = "shumate/shumate.h", cname = "SHUMATE_MAJOR_VERSION")]
	public const int MAJOR_VERSION;
	[CCode (cheader_filename = "shumate/shumate.h", cname = "SHUMATE_MAP_SOURCE_MFF_RELIEF")]
	public const string MAP_SOURCE_MFF_RELIEF;
	[CCode (cheader_filename = "shumate/shumate.h", cname = "SHUMATE_MAP_SOURCE_OSM_CYCLE_MAP")]
	public const string MAP_SOURCE_OSM_CYCLE_MAP;
	[CCode (cheader_filename = "shumate/shumate.h", cname = "SHUMATE_MAP_SOURCE_OSM_MAPNIK")]
	public const string MAP_SOURCE_OSM_MAPNIK;
	[CCode (cheader_filename = "shumate/shumate.h", cname = "SHUMATE_MAP_SOURCE_OSM_TRANSPORT_MAP")]
	public const string MAP_SOURCE_OSM_TRANSPORT_MAP;
	[CCode (cheader_filename = "shumate/shumate.h", cname = "SHUMATE_MAP_SOURCE_OWM_CLOUDS")]
	public const string MAP_SOURCE_OWM_CLOUDS;
	[CCode (cheader_filename = "shumate/shumate.h", cname = "SHUMATE_MAP_SOURCE_OWM_PRECIPITATION")]
	public const string MAP_SOURCE_OWM_PRECIPITATION;
	[CCode (cheader_filename = "shumate/shumate.h", cname = "SHUMATE_MAP_SOURCE_OWM_PRESSURE")]
	public const string MAP_SOURCE_OWM_PRESSURE;
	[CCode (cheader_filename = "shumate/shumate.h", cname = "SHUMATE_MAP_SOURCE_OWM_TEMPERATURE")]
	public const string MAP_SOURCE_OWM_TEMPERATURE;
	[CCode (cheader_filename = "shumate/shumate.h", cname = "SHUMATE_MAP_SOURCE_OWM_WIND")]
	public const string MAP_SOURCE_OWM_WIND;
	[CCode (cheader_filename = "shumate/shumate.h", cname = "SHUMATE_MAX_LATITUDE")]
	public const double MAX_LATITUDE;
	[CCode (cheader_filename = "shumate/shumate.h", cname = "SHUMATE_MAX_LONGITUDE")]
	public const double MAX_LONGITUDE;
	[CCode (cheader_filename = "shumate/shumate.h", cname = "SHUMATE_MICRO_VERSION")]
	public const int MICRO_VERSION;
	[CCode (cheader_filename = "shumate/shumate.h", cname = "SHUMATE_MINOR_VERSION")]
	public const int MINOR_VERSION;
	[CCode (cheader_filename = "shumate/shumate.h", cname = "SHUMATE_MIN_LATITUDE")]
	public const double MIN_LATITUDE;
	[CCode (cheader_filename = "shumate/shumate.h", cname = "SHUMATE_MIN_LONGITUDE")]
	public const double MIN_LONGITUDE;
	[CCode (cheader_filename = "shumate/shumate.h")]
	[Version (replacement = "FileCacheError.quark")]
	public static GLib.Quark file_cache_error_quark ();
	[CCode (cheader_filename = "shumate/shumate.h")]
	public static unowned string get_user_agent ();
	[CCode (cheader_filename = "shumate/shumate.h")]
	public static void set_user_agent (string? new_user_agent);
	[CCode (cheader_filename = "shumate/shumate.h")]
	[Version (replacement = "StyleError.quark")]
	public static GLib.Quark style_error_quark ();
	[CCode (cheader_filename = "shumate/shumate.h")]
	[Version (replacement = "TileDownloaderError.quark")]
	public static GLib.Quark tile_downloader_error_quark ();
}
