package com.googlesource.gerrit.plugins.zuul.client;

import com.google.gwt.core.client.JavaScriptObject;
import com.google.gwt.core.client.JsArrayString;

public class DependencyInfo extends JavaScriptObject {

  public final native JsArrayString dependsOn() /*-{ return this.depends_on; }-*/;
  public final native JsArrayString neededBy() /*-{ return this.needed_by; }-*/;
  public final native boolean cycle() /*-{ return this.cycle; }-*/;

  protected DependencyInfo() {
  }
}
