ContractFunction.java
- /*
- * @copyright defined in LICENSE.txt
- */
- package hera.api.model;
- import static hera.util.ValidationUtils.assertNotNull;
- import static java.util.Collections.unmodifiableList;
- import hera.annotation.ApiAudience;
- import hera.annotation.ApiStability;
- import java.util.Collections;
- import java.util.List;
- import lombok.EqualsAndHashCode;
- import lombok.Getter;
- import lombok.ToString;
- @ApiAudience.Public
- @ApiStability.Unstable
- @ToString
- @EqualsAndHashCode
- public class ContractFunction {
- @Getter
- protected final String name;
- @Getter
- protected final List<String> argumentNames;
- @Getter
- protected final boolean payable;
- @Getter
- protected final boolean view;
- @Getter
- protected final boolean feeDelegation;
- /**
- * ContractFunction constructor.
- *
- * @param name a function name
- */
- @ApiAudience.Private
- public ContractFunction(final String name) {
- this(name, Collections.<String>emptyList());
- }
- /**
- * ContractFunction constructor.
- *
- * @param name a function name
- * @param argumentNames an argument names
- */
- @ApiAudience.Private
- public ContractFunction(final String name, final List<String> argumentNames) {
- this(name, argumentNames, false, false, false);
- }
- /**
- * ContractFunction constructor.
- *
- * @param name a function name
- * @param payable whether a function is payable or not
- * @param view whether a function is view or not
- * @param feeDelegation whether a function can delegate fee or not
- */
- @ApiAudience.Private
- public ContractFunction(final String name, final boolean payable, final boolean view,
- final boolean feeDelegation) {
- this(name, Collections.<String>emptyList(), payable, view, feeDelegation);
- }
- /**
- * ContractFunction constructor.
- *
- * @param name a function name
- * @param argumentNames an argument names
- * @param payable whether a function is payable or not
- * @param view whether a function is view or not
- * @param feeDelegation whether a function can delegate fee or not
- */
- @ApiAudience.Private
- public ContractFunction(final String name, final List<String> argumentNames,
- final boolean payable, final boolean view, final boolean feeDelegation) {
- assertNotNull(name, "Function name must not null");
- assertNotNull(argumentNames, "Argument names must not null");
- this.name = name;
- this.argumentNames = unmodifiableList(argumentNames);
- this.payable = payable;
- this.view = view;
- this.feeDelegation = feeDelegation;
- }
- }