/* 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 DexAccountContractJson } from "../DexAccount.ral.json"; import { getContractByCodeHash, registerContract } from "./contracts"; import * as types from "./types"; // Custom types for the contract export namespace DexAccountTypes { export type Fields = { parents: [HexString, HexString]; owner: Address; refferer: Address; counter: bigint; }; export type State = ContractState; export interface CallMethodTable { deposit: { params: CallContractParams<{ payer: Address; tokenId: HexString; amount: bigint; path: HexString; at: bigint; }>; result: CallContractResult; }; createAccount: { params: CallContractParams<{ ref: Address }>; result: CallContractResult; }; asRef: { params: CallContractParams<{ defaultRef: Address }>; result: CallContractResult
; }; updateCounter: { params: CallContractParams<{ newCounter: bigint }>; result: CallContractResult; }; setParents: { params: CallContractParams<{ newParents: [HexString, HexString] }>; 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 { deposit: { params: SignExecuteContractMethodParams<{ payer: Address; tokenId: HexString; amount: bigint; path: HexString; at: bigint; }>; result: SignExecuteScriptTxResult; }; createAccount: { params: SignExecuteContractMethodParams<{ ref: Address }>; result: SignExecuteScriptTxResult; }; asRef: { params: SignExecuteContractMethodParams<{ defaultRef: Address }>; result: SignExecuteScriptTxResult; }; updateCounter: { params: SignExecuteContractMethodParams<{ newCounter: bigint }>; result: SignExecuteScriptTxResult; }; setParents: { params: SignExecuteContractMethodParams<{ newParents: [HexString, HexString]; }>; result: SignExecuteScriptTxResult; }; } export type SignExecuteMethodParams = SignExecuteMethodTable[T]["params"]; export type SignExecuteMethodResult = SignExecuteMethodTable[T]["result"]; } class Factory extends ContractFactory< DexAccountInstance, DexAccountTypes.Fields > { encodeFields(fields: DexAccountTypes.Fields) { return encodeContractFields( addStdIdToFields(this.contract, fields), this.contract.fieldsSig, types.AllStructs ); } at(address: string): DexAccountInstance { return new DexAccountInstance(address); } tests = { deposit: async ( params: TestContractParamsWithoutMaps< DexAccountTypes.Fields, { payer: Address; tokenId: HexString; amount: bigint; path: HexString; at: bigint; } > ): Promise> => { return testMethod(this, "deposit", params, getContractByCodeHash); }, createAccount: async ( params: TestContractParamsWithoutMaps< DexAccountTypes.Fields, { ref: Address } > ): Promise> => { return testMethod(this, "createAccount", params, getContractByCodeHash); }, asRef: async ( params: TestContractParamsWithoutMaps< DexAccountTypes.Fields, { defaultRef: Address } > ): Promise> => { return testMethod(this, "asRef", params, getContractByCodeHash); }, updateCounter: async ( params: TestContractParamsWithoutMaps< DexAccountTypes.Fields, { newCounter: bigint } > ): Promise> => { return testMethod(this, "updateCounter", params, getContractByCodeHash); }, setParents: async ( params: TestContractParamsWithoutMaps< DexAccountTypes.Fields, { newParents: [HexString, HexString] } > ): Promise> => { return testMethod(this, "setParents", params, getContractByCodeHash); }, }; stateForTest( initFields: DexAccountTypes.Fields, asset?: Asset, address?: string ) { return this.stateForTest_(initFields, asset, address, undefined); } } // Use this object to test and deploy the contract export const DexAccount = new Factory( Contract.fromJson( DexAccountContractJson, "", "66c27c91033d54a2d3edc97dbc36b35022274ddd8a7b84b724631ac37586ed48", types.AllStructs ) ); registerContract(DexAccount); // Use this class to interact with the blockchain export class DexAccountInstance extends ContractInstance { constructor(address: Address) { super(address); } async fetchState(): Promise { return fetchContractState(DexAccount, this); } view = { deposit: async ( params: DexAccountTypes.CallMethodParams<"deposit"> ): Promise> => { return callMethod( DexAccount, this, "deposit", params, getContractByCodeHash ); }, createAccount: async ( params: DexAccountTypes.CallMethodParams<"createAccount"> ): Promise> => { return callMethod( DexAccount, this, "createAccount", params, getContractByCodeHash ); }, asRef: async ( params: DexAccountTypes.CallMethodParams<"asRef"> ): Promise> => { return callMethod( DexAccount, this, "asRef", params, getContractByCodeHash ); }, updateCounter: async ( params: DexAccountTypes.CallMethodParams<"updateCounter"> ): Promise> => { return callMethod( DexAccount, this, "updateCounter", params, getContractByCodeHash ); }, setParents: async ( params: DexAccountTypes.CallMethodParams<"setParents"> ): Promise> => { return callMethod( DexAccount, this, "setParents", params, getContractByCodeHash ); }, }; transact = { deposit: async ( params: DexAccountTypes.SignExecuteMethodParams<"deposit"> ): Promise> => { return signExecuteMethod(DexAccount, this, "deposit", params); }, createAccount: async ( params: DexAccountTypes.SignExecuteMethodParams<"createAccount"> ): Promise> => { return signExecuteMethod(DexAccount, this, "createAccount", params); }, asRef: async ( params: DexAccountTypes.SignExecuteMethodParams<"asRef"> ): Promise> => { return signExecuteMethod(DexAccount, this, "asRef", params); }, updateCounter: async ( params: DexAccountTypes.SignExecuteMethodParams<"updateCounter"> ): Promise> => { return signExecuteMethod(DexAccount, this, "updateCounter", params); }, setParents: async ( params: DexAccountTypes.SignExecuteMethodParams<"setParents"> ): Promise> => { return signExecuteMethod(DexAccount, this, "setParents", params); }, }; async multicall( calls: Calls ): Promise>; async multicall( callss: Narrow ): Promise>; async multicall< Callss extends | DexAccountTypes.MultiCallParams | DexAccountTypes.MultiCallParams[] >(callss: Callss): Promise { return await multicallMethods( DexAccount, this, callss, getContractByCodeHash ); } }