// Path: src/main/java/org/github/etcd/service/api/EtcdProxy.java
// public interface EtcdProxy extends AutoCloseable {
// 
//     void close();
//     /**
//      * Performs an http <b>GET</b> to the <b>/version</b> endpoint
//      *
//      * @return etcd registry version
//      */
//     String getVersion();
// 
//     Boolean isAuthEnabled();
// 
//     /**
//      * Performs an http <b>GET</b> to the <b>/v2/stats/self</b> endpoint
//      *
//      * @return etcd node self statistics
//      */
//     EtcdSelfStats getSelfStats();
// 
//     /**
//      * If the reported etcd version is 0.4.x it uses the peer address
//      * <b>http://&lt;host&gt;:7001/</b> and performs an http <b>GET</b>
//      * against the <b>/v2/admin/machines</b> endpoint. Otherwise it
//      * uses the default client provided address URL and performs an
//      * http <b>GET</b> to the <b>/v2/members</b> endpoint.
//      *
//      * @return the list of etcd cluster members and their roles
//      */
//     List<EtcdMember> getMembers();
// 
//     /**
//      * Performs an http GET to the /v2/keys/{key} endpoint.
//      * If the supplied key is not found it throws an exception
//      * indicating so.
//      *
//      * @param key The key-value key parameter
//      * @return The requested key-value or directory node
//      */
//     EtcdNode getNode(String key);
// 
//     /**
//      * Performs an http PUT to the /v2/keys/{key} endpoint by
//      * submitting a url encoded form. This form contains the
//      * 'value' parameter if it is a value node or the 'dir=true'
//      * parameter if it is a directory. The 'prevExist' parameter
//      * is sent always as false to indicate that this node does
//      * not exist already. If the supplied node contains TTL then
//      * the 'ttl' parameter is set as well.
//      *
//      * @param node The key-value pair or directory to save
//      */
//     void saveNode(EtcdNode node);
// 
//     /**
//      * Performs an http PUT to the /v2/keys/{key} endpoint by
//      * submitting a url encoded form. This form contains the
//      * 'value' parameter if it is a value node or the 'dir=true'
//      * parameter if it is a directory. The 'prevExist' parameter
//      * is sent always as true to indicate that this node must
//      * exist already. The 'ttl' parameter is always set to the
//      * supplied TTL value if it is set otherwise it is sent as
//      * empty '' to enable removing TTL from key-value pairs
//      * or directories.
//      *
//      * @param node The key-value pair or directory to update
//      * @return The node before the update
//      */
//     EtcdNode updateNode(EtcdNode node);
// 
//     /**
//      * Performs an http DELETE to the /v2/keys/{key} endpoint.
//      * If the supplied node is a directory then the query
//      * parameter ?dir=true is appended to the endpoint url.
// 
//      * @param node The key-value pair or directory to delete.
//      * @return The deleted node
//      */
//     EtcdNode deleteNode(EtcdNode node);
// 
//     /**
//      * Performs an http DELETE to the /v2/keys/{key} endpoint.
//      * If the supplied node is a directory then the query
//      * parameter ?dir=true is appended to the endpoint url.
// 
//      * @param node The key-value pair or directory to delete.
//      * @param recursive if it is set to true then even non
//      * empty directory nodes can be removed. It appends the
//      * ?recursive=true query parameter and skips the ?dir=true.
//      * @return The deleted node
//      */
//     EtcdNode deleteNode(EtcdNode node, boolean recursive);
// 
// }


import org.github.etcd.service.api.EtcdProxy;
package org.github.etcd.service;


public interface EtcdProxyFactory {
    EtcdProxy getEtcdProxy(String registry, String clientURL, ApiVersion apiVersion);
// Path: src/main/java/org/github/etcd/service/api/EtcdProxy.java
// public interface EtcdProxy extends AutoCloseable {
// 
//     void close();
//     /**
//      * Performs an http <b>GET</b> to the <b>/version</b> endpoint
//      *
//      * @return etcd registry version
//      */
//     String getVersion();
// 
//     Boolean isAuthEnabled();
// 
//     /**
//      * Performs an http <b>GET</b> to the <b>/v2/stats/self</b> endpoint
//      *
//      * @return etcd node self statistics
//      */
//     EtcdSelfStats getSelfStats();
// 
//     /**
//      * If the reported etcd version is 0.4.x it uses the peer address
//      * <b>http://&lt;host&gt;:7001/</b> and performs an http <b>GET</b>
//      * against the <b>/v2/admin/machines</b> endpoint. Otherwise it
//      * uses the default client provided address URL and performs an
//      * http <b>GET</b> to the <b>/v2/members</b> endpoint.
//      *
//      * @return the list of etcd cluster members and their roles
//      */
//     List<EtcdMember> getMembers();
// 
//     /**
//      * Performs an http GET to the /v2/keys/{key} endpoint.
//      * If the supplied key is not found it throws an exception
//      * indicating so.
//      *
//      * @param key The key-value key parameter
//      * @return The requested key-value or directory node
//      */
//     EtcdNode getNode(String key);
// 
//     /**
//      * Performs an http PUT to the /v2/keys/{key} endpoint by
//      * submitting a url encoded form. This form contains the
//      * 'value' parameter if it is a value node or the 'dir=true'
//      * parameter if it is a directory. The 'prevExist' parameter
//      * is sent always as false to indicate that this node does
//      * not exist already. If the supplied node contains TTL then
//      * the 'ttl' parameter is set as well.
//      *
//      * @param node The key-value pair or directory to save
//      */
//     void saveNode(EtcdNode node);
// 
//     /**
//      * Performs an http PUT to the /v2/keys/{key} endpoint by
//      * submitting a url encoded form. This form contains the
//      * 'value' parameter if it is a value node or the 'dir=true'
//      * parameter if it is a directory. The 'prevExist' parameter
//      * is sent always as true to indicate that this node must
//      * exist already. The 'ttl' parameter is always set to the
//      * supplied TTL value if it is set otherwise it is sent as
//      * empty '' to enable removing TTL from key-value pairs
//      * or directories.
//      *
//      * @param node The key-value pair or directory to update
//      * @return The node before the update
//      */
//     EtcdNode updateNode(EtcdNode node);
// 
//     /**
//      * Performs an http DELETE to the /v2/keys/{key} endpoint.
//      * If the supplied node is a directory then the query
//      * parameter ?dir=true is appended to the endpoint url.
// 
//      * @param node The key-value pair or directory to delete.
//      * @return The deleted node
//      */
//     EtcdNode deleteNode(EtcdNode node);
// 
//     /**
//      * Performs an http DELETE to the /v2/keys/{key} endpoint.
//      * If the supplied node is a directory then the query
//      * parameter ?dir=true is appended to the endpoint url.
// 
//      * @param node The key-value pair or directory to delete.
//      * @param recursive if it is set to true then even non
//      * empty directory nodes can be removed. It appends the
//      * ?recursive=true query parameter and skips the ?dir=true.
//      * @return The deleted node
//      */
//     EtcdNode deleteNode(EtcdNode node, boolean recursive);
// 
// }


// Path: src/main/java/org/github/etcd/service/EtcdProxyFactory.java
import org.github.etcd.service.api.EtcdProxy;

package org.github.etcd.service;


public interface EtcdProxyFactory {
    EtcdProxy getEtcdProxy(String registry, String clientURL, ApiVersion apiVersion);
    EtcdProxy getEtcdProxy(String registry);