balance-contract.ts 1.24 KB
import { Contract } from 'web3-eth-contract';
import { CallReturn, SendReturn } from './callback';
import { BigNumberValue } from '../helpers';
import { TokensAggregator } from '../enums';

export interface RecipientCommitment {
  commitment: {
    x: string;
    y: string;
  };
  asset: number;
}

export interface SchnorrSignatureSet {
  message: string;
  publicKey: {
    x: string,
    y: string,
  };
  ecR: {
    x: string,
    y: string,
  };
  s: string;
}

export interface EcNewCommitment {
  x: string;
  y: string;
}

export interface PkSum {
  x: string;
  y: string;
}

export interface BalanceContractMethods {
  getLatestPrice(aggregator: number): CallReturn<any>;

  deposit(
    amountIn: BigNumberValue,
    amountComm: BigNumberValue,
    recipientCommitment: RecipientCommitment,
    schnorrSignatureSet: SchnorrSignatureSet,
  ): SendReturn<any>;

  withdraw(
    amount: BigNumberValue,
    commitmentId: BigNumberValue,
    schnorrSignatureSet: SchnorrSignatureSet,
  ): SendReturn<any>;

  groupCommitment(
    commitmentIds: BigNumberValue[],
    asset: TokensAggregator,
    ecNewCommitment: EcNewCommitment,
    pkSum: PkSum,
  ): SendReturn<any>;
}

export interface BalanceContract extends Contract {
  methods: BalanceContractMethods;
}