/*
 * weinre is available under *either* the terms of the modified BSD license *or* the
 * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
 * 
 * Copyright (c) 2010, 2011 IBM Corporation
 */

// messages from the server to the target

module weinre {
    interface WeinreTargetEvents {
    
        void connectionCreated(string clientId, string targetId);
        void connectionDestroyed(string clientId, string targetId);
        
        void sendCallback(string callbackId, Object result);

    };
}

