
interface sslOpt {
	ca?: string,
	cert?: string,
	key?: string
}
interface error {
	errorCode:string;
	message:string;
	cause:string;
	index:number;
}
interface etcdError extends Error {
	error:error;
	errorCode:number;
}
interface node {
	key:string;
	value:string;
	modifiedIndex:number;
	createdIndex:number;
}

interface responeBody {
	action:string;
	node:node;
	prevNode:node;
}
interface responeHeader {
	
}
interface callback {
	(err:etcdError, 		// Error message or null if request completed successfully
	body:responeBody, 	// Body of the message or null if error 
	headers:responeHeader		// Headers from the response
	):void
}
interface setOption {
	ttl?:number;			//time to live in seconds
	maxRetries?:number;		//Retry times
}
interface etcd {
	//host, port, sslopts, client
	new (host:string,port:string,sslopts?:sslOpt, client?:string):etcd;
	get(key:string, recursive?:{recursive?:boolean}, cb?:callback):void;
	set(key:string, value:string, cb:callback):void;
	set(key:string, value:string, option:setOption, cb:callback):void;
	del(key:string, cb:callback):void;
}
declare var Etcd:etcd
declare module "node-etcd"{
	export = Etcd;
}