/* Autogenerated file. Do not edit manually. */ /* tslint:disable */ /* eslint-disable */ import { Address, Contract, ContractState, TestContractResult, HexString, ContractFactory, EventSubscribeOptions, EventSubscription, CallContractParams, CallContractResult, TestContractParams, ContractEvent, subscribeContractEvent, subscribeContractEvents, testMethod, callMethod, multicallMethods, fetchContractState, Asset, ContractInstance, getContractEventsCurrentCount, TestContractParamsWithoutMaps, TestContractResultWithoutMaps, SignExecuteContractMethodParams, SignExecuteScriptTxResult, signExecuteMethod, addStdIdToFields, encodeContractFields, Narrow, } from "@alephium/web3"; import { default as AlphUnstakeVaultContractJson } from "../AlphUnstakeVault.ral.json"; import { getContractByCodeHash, registerContract } from "./contracts"; import * as types from "./types"; // Custom types for the contract export namespace AlphUnstakeVaultTypes { export type Fields = { xalphToken: HexString; unstakerAddress: Address; totalUnstakeAmount: bigint; unstakeStartTime: bigint; unstakeDuration: bigint; withdrawnAmount: bigint; }; export type State = ContractState; export interface CallMethodTable { mulDiv: { params: CallContractParams<{ a: bigint; b: bigint; denominator: bigint }>; result: CallContractResult; }; getTotalUnstakeAmount: { params: Omit, "args">; result: CallContractResult; }; getClaimableAmount: { params: Omit, "args">; result: CallContractResult; }; claim: { params: CallContractParams<{ amount: bigint }>; result: CallContractResult; }; destroy: { params: Omit, "args">; result: CallContractResult; }; } export type CallMethodParams = CallMethodTable[T]["params"]; export type CallMethodResult = CallMethodTable[T]["result"]; export type MultiCallParams = Partial<{ [Name in keyof CallMethodTable]: CallMethodTable[Name]["params"]; }>; export type MultiCallResults = { [MaybeName in keyof T]: MaybeName extends keyof CallMethodTable ? CallMethodTable[MaybeName]["result"] : undefined; }; export type MulticallReturnType = { [index in keyof Callss]: MultiCallResults; }; export interface SignExecuteMethodTable { mulDiv: { params: SignExecuteContractMethodParams<{ a: bigint; b: bigint; denominator: bigint; }>; result: SignExecuteScriptTxResult; }; getTotalUnstakeAmount: { params: Omit, "args">; result: SignExecuteScriptTxResult; }; getClaimableAmount: { params: Omit, "args">; result: SignExecuteScriptTxResult; }; claim: { params: SignExecuteContractMethodParams<{ amount: bigint }>; result: SignExecuteScriptTxResult; }; destroy: { params: Omit, "args">; result: SignExecuteScriptTxResult; }; } export type SignExecuteMethodParams = SignExecuteMethodTable[T]["params"]; export type SignExecuteMethodResult = SignExecuteMethodTable[T]["result"]; } class Factory extends ContractFactory< AlphUnstakeVaultInstance, AlphUnstakeVaultTypes.Fields > { encodeFields(fields: AlphUnstakeVaultTypes.Fields) { return encodeContractFields( addStdIdToFields(this.contract, fields), this.contract.fieldsSig, types.AllStructs ); } consts = { FullMathError: { DivByZero: BigInt("350"), MulDivOverflow: BigInt("351") }, ErrorCodes: { InvalidCaller: BigInt("20"), InsufficientClaimableAmount: BigInt("21"), InvalidUnstakeDuration: BigInt("22"), InvalidTimestamp: BigInt("23"), }, }; at(address: string): AlphUnstakeVaultInstance { return new AlphUnstakeVaultInstance(address); } tests = { mulDiv: async ( params: TestContractParamsWithoutMaps< AlphUnstakeVaultTypes.Fields, { a: bigint; b: bigint; denominator: bigint } > ): Promise> => { return testMethod(this, "mulDiv", params, getContractByCodeHash); }, getTotalUnstakeAmount: async ( params: Omit< TestContractParamsWithoutMaps, "args" > ): Promise> => { return testMethod( this, "getTotalUnstakeAmount", params, getContractByCodeHash ); }, getClaimableAmount: async ( params: Omit< TestContractParamsWithoutMaps, "args" > ): Promise> => { return testMethod( this, "getClaimableAmount", params, getContractByCodeHash ); }, claim: async ( params: TestContractParamsWithoutMaps< AlphUnstakeVaultTypes.Fields, { amount: bigint } > ): Promise> => { return testMethod(this, "claim", params, getContractByCodeHash); }, destroy: async ( params: Omit< TestContractParamsWithoutMaps, "args" > ): Promise> => { return testMethod(this, "destroy", params, getContractByCodeHash); }, }; stateForTest( initFields: AlphUnstakeVaultTypes.Fields, asset?: Asset, address?: string ) { return this.stateForTest_(initFields, asset, address, undefined); } } // Use this object to test and deploy the contract export const AlphUnstakeVault = new Factory( Contract.fromJson( AlphUnstakeVaultContractJson, "", "5216c458f360d0f51f5e2109a760814ff97eab76f546adc835eb318c6cbc5256", types.AllStructs ) ); registerContract(AlphUnstakeVault); // Use this class to interact with the blockchain export class AlphUnstakeVaultInstance extends ContractInstance { constructor(address: Address) { super(address); } async fetchState(): Promise { return fetchContractState(AlphUnstakeVault, this); } view = { mulDiv: async ( params: AlphUnstakeVaultTypes.CallMethodParams<"mulDiv"> ): Promise> => { return callMethod( AlphUnstakeVault, this, "mulDiv", params, getContractByCodeHash ); }, getTotalUnstakeAmount: async ( params?: AlphUnstakeVaultTypes.CallMethodParams<"getTotalUnstakeAmount"> ): Promise< AlphUnstakeVaultTypes.CallMethodResult<"getTotalUnstakeAmount"> > => { return callMethod( AlphUnstakeVault, this, "getTotalUnstakeAmount", params === undefined ? {} : params, getContractByCodeHash ); }, getClaimableAmount: async ( params?: AlphUnstakeVaultTypes.CallMethodParams<"getClaimableAmount"> ): Promise< AlphUnstakeVaultTypes.CallMethodResult<"getClaimableAmount"> > => { return callMethod( AlphUnstakeVault, this, "getClaimableAmount", params === undefined ? {} : params, getContractByCodeHash ); }, claim: async ( params: AlphUnstakeVaultTypes.CallMethodParams<"claim"> ): Promise> => { return callMethod( AlphUnstakeVault, this, "claim", params, getContractByCodeHash ); }, destroy: async ( params?: AlphUnstakeVaultTypes.CallMethodParams<"destroy"> ): Promise> => { return callMethod( AlphUnstakeVault, this, "destroy", params === undefined ? {} : params, getContractByCodeHash ); }, }; transact = { mulDiv: async ( params: AlphUnstakeVaultTypes.SignExecuteMethodParams<"mulDiv"> ): Promise> => { return signExecuteMethod(AlphUnstakeVault, this, "mulDiv", params); }, getTotalUnstakeAmount: async ( params: AlphUnstakeVaultTypes.SignExecuteMethodParams<"getTotalUnstakeAmount"> ): Promise< AlphUnstakeVaultTypes.SignExecuteMethodResult<"getTotalUnstakeAmount"> > => { return signExecuteMethod( AlphUnstakeVault, this, "getTotalUnstakeAmount", params ); }, getClaimableAmount: async ( params: AlphUnstakeVaultTypes.SignExecuteMethodParams<"getClaimableAmount"> ): Promise< AlphUnstakeVaultTypes.SignExecuteMethodResult<"getClaimableAmount"> > => { return signExecuteMethod( AlphUnstakeVault, this, "getClaimableAmount", params ); }, claim: async ( params: AlphUnstakeVaultTypes.SignExecuteMethodParams<"claim"> ): Promise> => { return signExecuteMethod(AlphUnstakeVault, this, "claim", params); }, destroy: async ( params: AlphUnstakeVaultTypes.SignExecuteMethodParams<"destroy"> ): Promise> => { return signExecuteMethod(AlphUnstakeVault, this, "destroy", params); }, }; async multicall( calls: Calls ): Promise>; async multicall( callss: Narrow ): Promise>; async multicall< Callss extends | AlphUnstakeVaultTypes.MultiCallParams | AlphUnstakeVaultTypes.MultiCallParams[] >(callss: Callss): Promise { return await multicallMethods( AlphUnstakeVault, this, callss, getContractByCodeHash ); } }