package network.thunder.core.communication.objects.messages.impl.blockchainlistener.bciapi.blockexplorer;
import com.google.gson.JsonObject;
/**
* Represents a transaction output.
*/
public class Output {
private int n;
private long value;
private String address;
private long txIndex;
private String script;
private boolean spent;
private boolean spentToAddress;
public Output (int n, long value, String address, long txIndex, String script, boolean spent) {
this.n = n;
this.value = value;
this.address = address;
this.txIndex = txIndex;
this.script = script;
this.spent = spent;
if (address != "") {
spentToAddress = true;
}
}
@Override
public boolean equals (Object o) {
if (this == o) {
return true;
}
if (o == null || getClass() != o.getClass()) {
return false;
}
Output output = (Output) o;
if (value != output.value) {
return false;
}
if (txIndex != output.txIndex) {
return false;
}
return !(script != null ? !script.equals(output.script) : output.script != null);
}
@Override
public int hashCode () {
int result = (int) (value ^ (value >>> 32));
result = 31 * result + (int) (txIndex ^ (txIndex >>> 32));
result = 31 * result + (script != null ? script.hashCode() : 0);
return result;
}
public Output (JsonObject o) {
this(o, o.get("spent").getAsBoolean());
}
public Output (JsonObject o, boolean spent) {
this(o.get("n").getAsInt(), o.get("value").getAsLong(), o.has("addr") ? o.get("addr").getAsString() : "", o.get("tx_index").getAsLong(), o.get("script").getAsString(), spent);
}
/**
* @return Index of the output in a transaction
*/
public int getN () {
return n;
}
/**
* @return Value of the output (in satoshi)
*/
public long getValue () {
return value;
}
/**
* @return Address that the output belongs to
*/
public String getAddress () {
return address;
}
/**
* @return Transaction index
*/
public long getTxIndex () {
return txIndex;
}
/**
* @return Output script
*/
public String getScript () {
return script;
}
/**
* @return Whether the output is spent
*/
public boolean isSpent () {
return spent;
}
/**
* @return Whether the output pays to an address.
*/
public boolean isSpentToAddress () {
return spentToAddress;
}
}