declare module "nodejs-wrapper-digitalocean-v2-api" {
	interface IPages {
		last:string;
		next:string;
	}
	interface ILink {
		pages:IPages
	}
	interface iaccount {
		droplet_limit:number;
		email:string;
		uuid:string;
		email_verified:boolean;
		status:string;
		status_message:string;
	}
	interface IAccount {
		account:iaccount;
	}
	interface iMeta {
		total:number;
	}
	interface IDomain extends Iresult{
		domains:Array<string>;
	}
	interface IImage {
		id:number;
		name:string;
		distribution:string;
		slug:string;
		public:boolean;
		regions:Array<string>;
		created_at:Date;
		min_disk_size:number;
		type:string;
	}
	interface IDroplet {
		id:number;
		name:string;
		memory:number;
		vcpus:number;
		disk:number;
		locked:boolean;
		status:string;
		kernel:string;
		created_at:Date;
		features:Array<string>;
		backup_ids:Array<Object>;
		next_backup_window:any;
		snapshot_ids:Array<any>;
		image:IImage;
		size:Array<Object>;
		size_slug:string;
		networks:Array<any>;
		region:Array<Object>;
	}
	interface Iresult {
		links:ILink;
		meta:iMeta;
	}
	interface IDropletsData extends Iresult{
		droplets:Array<IDroplet>;
	}
	interface IRegion {
		name:string;
		slug:string;
		sizes:Array<string>;
		features:Array<string>;
		available:boolean;
	}
	interface IRegions extends Iresult{
		regions:Array<IRegion>;
	}
	interface IImages extends Iresult {
		images:IImage;
	}
	function connect(ApiKey:string, cb:(err, data:IAccount)=>void):void;
	function getUserInfo (cb:(err, data:IAccount)=>void):void;
	function getDomains (cb:(err, data:IDomain)=>void):void;
	function getDroplets (cb:(err, data:IDropletsData)=>void):void;
	/**
	* Creates a new Droplet
	* 
	* @param {string}   name              Required, if set to a managed domain name, a PTR record will be configured
	* @param {string}   region            Required, unique slug identifier for region to deploy in (nyc3)
	* @param {string}   size              Required, unique slug identifier for disk size (512mb)
	* @param {string}   image             Required, unique image ID or the unique slug identifier (ubuntu-14-04-x64)
	* @param {Array}    ssh_keys          Contains IDs or fingerprints of SSH keys embedded upon creation
	* @param {boolean}  backups           Indicates whether automated backups should be enabled
	* @param {boolean}  ipv6              Indicates whether IPv6 should be enabled
	* @param {string}   userData          Currently only available in regions with metadata features
	* @param {boolean}  privateNetworking Indicates whether private networking should be enabled
	* @param {Function} callback          Complete
	*/
	function setDroplet (mame:string, region:string, size:string, image:string, ssh_keys:Array<string>, backups:boolean, 
		ipv6:boolean, userData:string, privateNetworking:boolean, cb:(err, data)=>void):void;
		
	function getAllSshKey (cb:(err, data)=>void):void;
	function getAllRegions (cb:(err, data:IRegions)=>void):void;
	function getAllDropletNeighbors (cb:(err, data)=>void):void;
	function getAllImages (cb:(err, data:IImages)=>void):void;
	function getAllImages_next (next:string, cb:(err, data:IImages)=>void):void;
}