diff --git a/packages/sdk/src/contracts/operatorContractUtils.ts b/packages/sdk/src/contracts/operatorContractUtils.ts index 32689d265c..736b6a94ad 100644 --- a/packages/sdk/src/contracts/operatorContractUtils.ts +++ b/packages/sdk/src/contracts/operatorContractUtils.ts @@ -10,8 +10,8 @@ import type { Sponsorship as SponsorshipContract } from '../ethereumArtifacts/Sp import SponsorshipArtifact from '../ethereumArtifacts/SponsorshipAbi.json' import type { SponsorshipFactory as SponsorshipFactoryContract } from '../ethereumArtifacts/SponsorshipFactory' import SponsorshipFactoryArtifact from '../ethereumArtifacts/SponsorshipFactoryAbi.json' -import type { TestToken as TestTokenContract } from '../ethereumArtifacts/TestToken' -import TestTokenArtifact from '../ethereumArtifacts/TestTokenAbi.json' +import type { DATAv2 as DATATokenContract } from '../ethereumArtifacts/DATAv2' +import DATATokenArtifact from '../ethereumArtifacts/DATAv2Abi.json' import { SignerWithProvider } from '../Authentication' import crypto from 'crypto' @@ -184,8 +184,8 @@ export function getProvider(): Provider { }) } -export function getTestTokenContract(): TestTokenContract { - return new Contract(TEST_CHAIN_CONFIG.contracts.DATA, TestTokenArtifact) as unknown as TestTokenContract +export function getTestTokenContract(): DATATokenContract { + return new Contract(TEST_CHAIN_CONFIG.contracts.DATA, DATATokenArtifact) as unknown as DATATokenContract } export const getTestAdminWallet = (adminKey?: string, provider?: Provider): Wallet => { @@ -202,7 +202,7 @@ export async function generateWalletWithGasAndTokens(opts?: GenerateWalletWithGa const newWallet = new Wallet(privateKey) const adminWallet = getTestAdminWallet() const token = (opts?.chainConfig !== undefined) - ? new Contract(opts.chainConfig.contracts.DATA, TestTokenArtifact, adminWallet) as unknown as TestTokenContract + ? new Contract(opts.chainConfig.contracts.DATA, DATATokenArtifact, adminWallet) as unknown as DATATokenContract : getTestTokenContract().connect(adminWallet) await retry( async () => { @@ -222,7 +222,7 @@ export async function generateWalletWithGasAndTokens(opts?: GenerateWalletWithGa return newWallet.connect(provider) as (Wallet & SignerWithProvider) } -export const delegate = async (delegator: Wallet, operatorContractAddress: string, amount: number, token?: TestTokenContract): Promise => { +export const delegate = async (delegator: Wallet, operatorContractAddress: string, amount: number, token?: DATATokenContract): Promise => { logger.debug('Delegate', { amount }) // onTokenTransfer: the tokens are delegated on behalf of the given data address // eslint-disable-next-line max-len @@ -244,14 +244,14 @@ export const unstake = async (operatorContract: OperatorContract, sponsorshipCon await (await operatorContract.unstake(sponsorshipContractAddress)).wait() } -export const sponsor = async (sponsorer: Wallet, sponsorshipContractAddress: string, amount: number, token?: TestTokenContract): Promise => { +export const sponsor = async (sponsorer: Wallet, sponsorshipContractAddress: string, amount: number, token?: DATATokenContract): Promise => { logger.debug('Sponsor', { amount }) // eslint-disable-next-line max-len // https://github.com/streamr-dev/network-contracts/blob/01ec980cfe576e25e8c9acc08a57e1e4769f3e10/packages/network-contracts/contracts/OperatorTokenomics/Sponsorship.sol#L139 await transferTokens(sponsorer, sponsorshipContractAddress, amount, undefined, token) } -export const transferTokens = async (from: Wallet, to: string, amount: number, data?: string, token?: TestTokenContract): Promise => { +export const transferTokens = async (from: Wallet, to: string, amount: number, data?: string, token?: DATATokenContract): Promise => { const tx = await ((token ?? getTestTokenContract()).connect(from).transferAndCall(to, parseEther(amount.toString()), data ?? '0x')) await tx.wait() } diff --git a/packages/sdk/src/ethereumArtifacts/DATAv2.d.ts b/packages/sdk/src/ethereumArtifacts/DATAv2.d.ts new file mode 100644 index 0000000000..f55866cd6e --- /dev/null +++ b/packages/sdk/src/ethereumArtifacts/DATAv2.d.ts @@ -0,0 +1,457 @@ +/* Autogenerated file. Do not edit manually. */ +/* eslint-disable */ +import type { BaseContract, BigNumberish, BytesLike, FunctionFragment, Result, Interface, EventFragment, AddressLike, ContractRunner, ContractMethod, Listener } from "ethers"; +import type { TypedContractEvent, TypedDeferredTopicFilter, TypedEventLog, TypedLogDescription, TypedListener, TypedContractMethod } from "../common"; +export interface DATAv2Interface extends Interface { + getFunction(nameOrSignature: "DEFAULT_ADMIN_ROLE" | "DOMAIN_SEPARATOR" | "MINTER_ROLE" | "allowance" | "approve" | "balanceOf" | "burn" | "burnFrom" | "decimals" | "decreaseAllowance" | "getRoleAdmin" | "grantRole" | "hasRole" | "increaseAllowance" | "isMinter" | "mint" | "name" | "nonces" | "permit" | "renounceRole" | "revokeRole" | "setTokenInformation" | "supportsInterface" | "symbol" | "totalSupply" | "transfer" | "transferAndCall" | "transferFrom"): FunctionFragment; + getEvent(nameOrSignatureOrTopic: "Approval" | "RoleAdminChanged" | "RoleGranted" | "RoleRevoked" | "Transfer(address,address,uint256,bytes)" | "Transfer(address,address,uint256)" | "UpdatedTokenInformation"): EventFragment; + encodeFunctionData(functionFragment: "DEFAULT_ADMIN_ROLE", values?: undefined): string; + encodeFunctionData(functionFragment: "DOMAIN_SEPARATOR", values?: undefined): string; + encodeFunctionData(functionFragment: "MINTER_ROLE", values?: undefined): string; + encodeFunctionData(functionFragment: "allowance", values: [AddressLike, AddressLike]): string; + encodeFunctionData(functionFragment: "approve", values: [AddressLike, BigNumberish]): string; + encodeFunctionData(functionFragment: "balanceOf", values: [AddressLike]): string; + encodeFunctionData(functionFragment: "burn", values: [BigNumberish]): string; + encodeFunctionData(functionFragment: "burnFrom", values: [AddressLike, BigNumberish]): string; + encodeFunctionData(functionFragment: "decimals", values?: undefined): string; + encodeFunctionData(functionFragment: "decreaseAllowance", values: [AddressLike, BigNumberish]): string; + encodeFunctionData(functionFragment: "getRoleAdmin", values: [BytesLike]): string; + encodeFunctionData(functionFragment: "grantRole", values: [BytesLike, AddressLike]): string; + encodeFunctionData(functionFragment: "hasRole", values: [BytesLike, AddressLike]): string; + encodeFunctionData(functionFragment: "increaseAllowance", values: [AddressLike, BigNumberish]): string; + encodeFunctionData(functionFragment: "isMinter", values: [AddressLike]): string; + encodeFunctionData(functionFragment: "mint", values: [AddressLike, BigNumberish]): string; + encodeFunctionData(functionFragment: "name", values?: undefined): string; + encodeFunctionData(functionFragment: "nonces", values: [AddressLike]): string; + encodeFunctionData(functionFragment: "permit", values: [ + AddressLike, + AddressLike, + BigNumberish, + BigNumberish, + BigNumberish, + BytesLike, + BytesLike + ]): string; + encodeFunctionData(functionFragment: "renounceRole", values: [BytesLike, AddressLike]): string; + encodeFunctionData(functionFragment: "revokeRole", values: [BytesLike, AddressLike]): string; + encodeFunctionData(functionFragment: "setTokenInformation", values: [string, string]): string; + encodeFunctionData(functionFragment: "supportsInterface", values: [BytesLike]): string; + encodeFunctionData(functionFragment: "symbol", values?: undefined): string; + encodeFunctionData(functionFragment: "totalSupply", values?: undefined): string; + encodeFunctionData(functionFragment: "transfer", values: [AddressLike, BigNumberish]): string; + encodeFunctionData(functionFragment: "transferAndCall", values: [AddressLike, BigNumberish, BytesLike]): string; + encodeFunctionData(functionFragment: "transferFrom", values: [AddressLike, AddressLike, BigNumberish]): string; + decodeFunctionResult(functionFragment: "DEFAULT_ADMIN_ROLE", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "DOMAIN_SEPARATOR", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "MINTER_ROLE", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "allowance", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "approve", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "balanceOf", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "burn", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "burnFrom", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "decimals", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "decreaseAllowance", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "getRoleAdmin", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "grantRole", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "hasRole", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "increaseAllowance", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "isMinter", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "mint", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "name", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "nonces", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "permit", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "renounceRole", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "revokeRole", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "setTokenInformation", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "supportsInterface", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "symbol", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "totalSupply", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "transfer", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "transferAndCall", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "transferFrom", data: BytesLike): Result; +} +export declare namespace ApprovalEvent { + type InputTuple = [ + owner: AddressLike, + spender: AddressLike, + value: BigNumberish + ]; + type OutputTuple = [owner: string, spender: string, value: bigint]; + interface OutputObject { + owner: string; + spender: string; + value: bigint; + } + type Event = TypedContractEvent; + type Filter = TypedDeferredTopicFilter; + type Log = TypedEventLog; + type LogDescription = TypedLogDescription; +} +export declare namespace RoleAdminChangedEvent { + type InputTuple = [ + role: BytesLike, + previousAdminRole: BytesLike, + newAdminRole: BytesLike + ]; + type OutputTuple = [ + role: string, + previousAdminRole: string, + newAdminRole: string + ]; + interface OutputObject { + role: string; + previousAdminRole: string; + newAdminRole: string; + } + type Event = TypedContractEvent; + type Filter = TypedDeferredTopicFilter; + type Log = TypedEventLog; + type LogDescription = TypedLogDescription; +} +export declare namespace RoleGrantedEvent { + type InputTuple = [ + role: BytesLike, + account: AddressLike, + sender: AddressLike + ]; + type OutputTuple = [role: string, account: string, sender: string]; + interface OutputObject { + role: string; + account: string; + sender: string; + } + type Event = TypedContractEvent; + type Filter = TypedDeferredTopicFilter; + type Log = TypedEventLog; + type LogDescription = TypedLogDescription; +} +export declare namespace RoleRevokedEvent { + type InputTuple = [ + role: BytesLike, + account: AddressLike, + sender: AddressLike + ]; + type OutputTuple = [role: string, account: string, sender: string]; + interface OutputObject { + role: string; + account: string; + sender: string; + } + type Event = TypedContractEvent; + type Filter = TypedDeferredTopicFilter; + type Log = TypedEventLog; + type LogDescription = TypedLogDescription; +} +export declare namespace Transfer_address_address_uint256_bytes_Event { + type InputTuple = [ + from: AddressLike, + to: AddressLike, + value: BigNumberish, + data: BytesLike + ]; + type OutputTuple = [ + from: string, + to: string, + value: bigint, + data: string + ]; + interface OutputObject { + from: string; + to: string; + value: bigint; + data: string; + } + type Event = TypedContractEvent; + type Filter = TypedDeferredTopicFilter; + type Log = TypedEventLog; + type LogDescription = TypedLogDescription; +} +export declare namespace Transfer_address_address_uint256_Event { + type InputTuple = [ + from: AddressLike, + to: AddressLike, + value: BigNumberish + ]; + type OutputTuple = [from: string, to: string, value: bigint]; + interface OutputObject { + from: string; + to: string; + value: bigint; + } + type Event = TypedContractEvent; + type Filter = TypedDeferredTopicFilter; + type Log = TypedEventLog; + type LogDescription = TypedLogDescription; +} +export declare namespace UpdatedTokenInformationEvent { + type InputTuple = [newName: string, newSymbol: string]; + type OutputTuple = [newName: string, newSymbol: string]; + interface OutputObject { + newName: string; + newSymbol: string; + } + type Event = TypedContractEvent; + type Filter = TypedDeferredTopicFilter; + type Log = TypedEventLog; + type LogDescription = TypedLogDescription; +} +export interface DATAv2 extends BaseContract { + connect(runner?: ContractRunner | null): DATAv2; + waitForDeployment(): Promise; + interface: DATAv2Interface; + queryFilter(event: TCEvent, fromBlockOrBlockhash?: string | number | undefined, toBlock?: string | number | undefined): Promise>>; + queryFilter(filter: TypedDeferredTopicFilter, fromBlockOrBlockhash?: string | number | undefined, toBlock?: string | number | undefined): Promise>>; + on(event: TCEvent, listener: TypedListener): Promise; + on(filter: TypedDeferredTopicFilter, listener: TypedListener): Promise; + once(event: TCEvent, listener: TypedListener): Promise; + once(filter: TypedDeferredTopicFilter, listener: TypedListener): Promise; + listeners(event: TCEvent): Promise>>; + listeners(eventName?: string): Promise>; + removeAllListeners(event?: TCEvent): Promise; + DEFAULT_ADMIN_ROLE: TypedContractMethod<[], [string], "view">; + DOMAIN_SEPARATOR: TypedContractMethod<[], [string], "view">; + MINTER_ROLE: TypedContractMethod<[], [string], "view">; + allowance: TypedContractMethod<[ + owner: AddressLike, + spender: AddressLike + ], [ + bigint + ], "view">; + approve: TypedContractMethod<[ + spender: AddressLike, + amount: BigNumberish + ], [ + boolean + ], "nonpayable">; + balanceOf: TypedContractMethod<[account: AddressLike], [bigint], "view">; + burn: TypedContractMethod<[amount: BigNumberish], [void], "nonpayable">; + burnFrom: TypedContractMethod<[ + account: AddressLike, + amount: BigNumberish + ], [ + void + ], "nonpayable">; + decimals: TypedContractMethod<[], [bigint], "view">; + decreaseAllowance: TypedContractMethod<[ + spender: AddressLike, + subtractedValue: BigNumberish + ], [ + boolean + ], "nonpayable">; + getRoleAdmin: TypedContractMethod<[role: BytesLike], [string], "view">; + grantRole: TypedContractMethod<[ + role: BytesLike, + account: AddressLike + ], [ + void + ], "nonpayable">; + hasRole: TypedContractMethod<[ + role: BytesLike, + account: AddressLike + ], [ + boolean + ], "view">; + increaseAllowance: TypedContractMethod<[ + spender: AddressLike, + addedValue: BigNumberish + ], [ + boolean + ], "nonpayable">; + isMinter: TypedContractMethod<[minter: AddressLike], [boolean], "view">; + mint: TypedContractMethod<[ + to: AddressLike, + amount: BigNumberish + ], [ + void + ], "nonpayable">; + name: TypedContractMethod<[], [string], "view">; + nonces: TypedContractMethod<[owner: AddressLike], [bigint], "view">; + permit: TypedContractMethod<[ + owner: AddressLike, + spender: AddressLike, + value: BigNumberish, + deadline: BigNumberish, + v: BigNumberish, + r: BytesLike, + s: BytesLike + ], [ + void + ], "nonpayable">; + renounceRole: TypedContractMethod<[ + role: BytesLike, + account: AddressLike + ], [ + void + ], "nonpayable">; + revokeRole: TypedContractMethod<[ + role: BytesLike, + account: AddressLike + ], [ + void + ], "nonpayable">; + setTokenInformation: TypedContractMethod<[ + newName: string, + newSymbol: string + ], [ + void + ], "nonpayable">; + supportsInterface: TypedContractMethod<[ + interfaceId: BytesLike + ], [ + boolean + ], "view">; + symbol: TypedContractMethod<[], [string], "view">; + totalSupply: TypedContractMethod<[], [bigint], "view">; + transfer: TypedContractMethod<[ + recipient: AddressLike, + amount: BigNumberish + ], [ + boolean + ], "nonpayable">; + transferAndCall: TypedContractMethod<[ + _to: AddressLike, + _value: BigNumberish, + _data: BytesLike + ], [ + boolean + ], "nonpayable">; + transferFrom: TypedContractMethod<[ + sender: AddressLike, + recipient: AddressLike, + amount: BigNumberish + ], [ + boolean + ], "nonpayable">; + getFunction(key: string | FunctionFragment): T; + getFunction(nameOrSignature: "DEFAULT_ADMIN_ROLE"): TypedContractMethod<[], [string], "view">; + getFunction(nameOrSignature: "DOMAIN_SEPARATOR"): TypedContractMethod<[], [string], "view">; + getFunction(nameOrSignature: "MINTER_ROLE"): TypedContractMethod<[], [string], "view">; + getFunction(nameOrSignature: "allowance"): TypedContractMethod<[ + owner: AddressLike, + spender: AddressLike + ], [ + bigint + ], "view">; + getFunction(nameOrSignature: "approve"): TypedContractMethod<[ + spender: AddressLike, + amount: BigNumberish + ], [ + boolean + ], "nonpayable">; + getFunction(nameOrSignature: "balanceOf"): TypedContractMethod<[account: AddressLike], [bigint], "view">; + getFunction(nameOrSignature: "burn"): TypedContractMethod<[amount: BigNumberish], [void], "nonpayable">; + getFunction(nameOrSignature: "burnFrom"): TypedContractMethod<[ + account: AddressLike, + amount: BigNumberish + ], [ + void + ], "nonpayable">; + getFunction(nameOrSignature: "decimals"): TypedContractMethod<[], [bigint], "view">; + getFunction(nameOrSignature: "decreaseAllowance"): TypedContractMethod<[ + spender: AddressLike, + subtractedValue: BigNumberish + ], [ + boolean + ], "nonpayable">; + getFunction(nameOrSignature: "getRoleAdmin"): TypedContractMethod<[role: BytesLike], [string], "view">; + getFunction(nameOrSignature: "grantRole"): TypedContractMethod<[ + role: BytesLike, + account: AddressLike + ], [ + void + ], "nonpayable">; + getFunction(nameOrSignature: "hasRole"): TypedContractMethod<[ + role: BytesLike, + account: AddressLike + ], [ + boolean + ], "view">; + getFunction(nameOrSignature: "increaseAllowance"): TypedContractMethod<[ + spender: AddressLike, + addedValue: BigNumberish + ], [ + boolean + ], "nonpayable">; + getFunction(nameOrSignature: "isMinter"): TypedContractMethod<[minter: AddressLike], [boolean], "view">; + getFunction(nameOrSignature: "mint"): TypedContractMethod<[ + to: AddressLike, + amount: BigNumberish + ], [ + void + ], "nonpayable">; + getFunction(nameOrSignature: "name"): TypedContractMethod<[], [string], "view">; + getFunction(nameOrSignature: "nonces"): TypedContractMethod<[owner: AddressLike], [bigint], "view">; + getFunction(nameOrSignature: "permit"): TypedContractMethod<[ + owner: AddressLike, + spender: AddressLike, + value: BigNumberish, + deadline: BigNumberish, + v: BigNumberish, + r: BytesLike, + s: BytesLike + ], [ + void + ], "nonpayable">; + getFunction(nameOrSignature: "renounceRole"): TypedContractMethod<[ + role: BytesLike, + account: AddressLike + ], [ + void + ], "nonpayable">; + getFunction(nameOrSignature: "revokeRole"): TypedContractMethod<[ + role: BytesLike, + account: AddressLike + ], [ + void + ], "nonpayable">; + getFunction(nameOrSignature: "setTokenInformation"): TypedContractMethod<[ + newName: string, + newSymbol: string + ], [ + void + ], "nonpayable">; + getFunction(nameOrSignature: "supportsInterface"): TypedContractMethod<[interfaceId: BytesLike], [boolean], "view">; + getFunction(nameOrSignature: "symbol"): TypedContractMethod<[], [string], "view">; + getFunction(nameOrSignature: "totalSupply"): TypedContractMethod<[], [bigint], "view">; + getFunction(nameOrSignature: "transfer"): TypedContractMethod<[ + recipient: AddressLike, + amount: BigNumberish + ], [ + boolean + ], "nonpayable">; + getFunction(nameOrSignature: "transferAndCall"): TypedContractMethod<[ + _to: AddressLike, + _value: BigNumberish, + _data: BytesLike + ], [ + boolean + ], "nonpayable">; + getFunction(nameOrSignature: "transferFrom"): TypedContractMethod<[ + sender: AddressLike, + recipient: AddressLike, + amount: BigNumberish + ], [ + boolean + ], "nonpayable">; + getEvent(key: "Approval"): TypedContractEvent; + getEvent(key: "RoleAdminChanged"): TypedContractEvent; + getEvent(key: "RoleGranted"): TypedContractEvent; + getEvent(key: "RoleRevoked"): TypedContractEvent; + getEvent(key: "Transfer(address,address,uint256,bytes)"): TypedContractEvent; + getEvent(key: "Transfer(address,address,uint256)"): TypedContractEvent; + getEvent(key: "UpdatedTokenInformation"): TypedContractEvent; + filters: { + "Approval(address,address,uint256)": TypedContractEvent; + Approval: TypedContractEvent; + "RoleAdminChanged(bytes32,bytes32,bytes32)": TypedContractEvent; + RoleAdminChanged: TypedContractEvent; + "RoleGranted(bytes32,address,address)": TypedContractEvent; + RoleGranted: TypedContractEvent; + "RoleRevoked(bytes32,address,address)": TypedContractEvent; + RoleRevoked: TypedContractEvent; + "Transfer(address,address,uint256,bytes)": TypedContractEvent; + "Transfer(address,address,uint256)": TypedContractEvent; + "UpdatedTokenInformation(string,string)": TypedContractEvent; + UpdatedTokenInformation: TypedContractEvent; + }; +} diff --git a/packages/sdk/src/ethereumArtifacts/DATAv2Abi.json b/packages/sdk/src/ethereumArtifacts/DATAv2Abi.json new file mode 100644 index 0000000000..287243a497 --- /dev/null +++ b/packages/sdk/src/ethereumArtifacts/DATAv2Abi.json @@ -0,0 +1,734 @@ +[ + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "previousAdminRole", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "newAdminRole", + "type": "bytes32" + } + ], + "name": "RoleAdminChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleGranted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleRevoked", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "string", + "name": "newName", + "type": "string" + }, + { + "indexed": false, + "internalType": "string", + "name": "newSymbol", + "type": "string" + } + ], + "name": "UpdatedTokenInformation", + "type": "event" + }, + { + "inputs": [], + "name": "DEFAULT_ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "DOMAIN_SEPARATOR", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "MINTER_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "burn", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "burnFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "subtractedValue", + "type": "uint256" + } + ], + "name": "decreaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getRoleAdmin", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "grantRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "hasRole", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "addedValue", + "type": "uint256" + } + ], + "name": "increaseAllowance", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "minter", + "type": "address" + } + ], + "name": "isMinter", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "mint", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "nonces", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "permit", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "renounceRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "revokeRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "newName", + "type": "string" + }, + { + "internalType": "string", + "name": "newSymbol", + "type": "string" + } + ], + "name": "setTokenInformation", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_value", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "_data", + "type": "bytes" + } + ], + "name": "transferAndCall", + "outputs": [ + { + "internalType": "bool", + "name": "success", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } +] diff --git a/packages/sdk/src/ethereumArtifacts/TestToken.d.ts b/packages/sdk/src/ethereumArtifacts/TestToken.d.ts deleted file mode 100644 index 00d2dfb083..0000000000 --- a/packages/sdk/src/ethereumArtifacts/TestToken.d.ts +++ /dev/null @@ -1,228 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* eslint-disable */ -import type { BaseContract, BigNumberish, BytesLike, FunctionFragment, Result, Interface, EventFragment, AddressLike, ContractRunner, ContractMethod, Listener } from "ethers"; -import type { TypedContractEvent, TypedDeferredTopicFilter, TypedEventLog, TypedLogDescription, TypedListener, TypedContractMethod } from "../../../common"; -export interface TestTokenInterface extends Interface { - getFunction(nameOrSignature: "allowance" | "approve" | "balanceOf" | "decimals" | "decreaseAllowance" | "increaseAllowance" | "mint" | "name" | "symbol" | "totalSupply" | "transfer" | "transferAndCall" | "transferFrom"): FunctionFragment; - getEvent(nameOrSignatureOrTopic: "Approval" | "Transfer" | "TransferAndCall"): EventFragment; - encodeFunctionData(functionFragment: "allowance", values: [AddressLike, AddressLike]): string; - encodeFunctionData(functionFragment: "approve", values: [AddressLike, BigNumberish]): string; - encodeFunctionData(functionFragment: "balanceOf", values: [AddressLike]): string; - encodeFunctionData(functionFragment: "decimals", values?: undefined): string; - encodeFunctionData(functionFragment: "decreaseAllowance", values: [AddressLike, BigNumberish]): string; - encodeFunctionData(functionFragment: "increaseAllowance", values: [AddressLike, BigNumberish]): string; - encodeFunctionData(functionFragment: "mint", values: [AddressLike, BigNumberish]): string; - encodeFunctionData(functionFragment: "name", values?: undefined): string; - encodeFunctionData(functionFragment: "symbol", values?: undefined): string; - encodeFunctionData(functionFragment: "totalSupply", values?: undefined): string; - encodeFunctionData(functionFragment: "transfer", values: [AddressLike, BigNumberish]): string; - encodeFunctionData(functionFragment: "transferAndCall", values: [AddressLike, BigNumberish, BytesLike]): string; - encodeFunctionData(functionFragment: "transferFrom", values: [AddressLike, AddressLike, BigNumberish]): string; - decodeFunctionResult(functionFragment: "allowance", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "approve", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "balanceOf", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "decimals", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "decreaseAllowance", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "increaseAllowance", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "mint", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "name", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "symbol", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "totalSupply", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "transfer", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "transferAndCall", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "transferFrom", data: BytesLike): Result; -} -export declare namespace ApprovalEvent { - type InputTuple = [ - owner: AddressLike, - spender: AddressLike, - value: BigNumberish - ]; - type OutputTuple = [owner: string, spender: string, value: bigint]; - interface OutputObject { - owner: string; - spender: string; - value: bigint; - } - type Event = TypedContractEvent; - type Filter = TypedDeferredTopicFilter; - type Log = TypedEventLog; - type LogDescription = TypedLogDescription; -} -export declare namespace TransferEvent { - type InputTuple = [ - from: AddressLike, - to: AddressLike, - value: BigNumberish - ]; - type OutputTuple = [from: string, to: string, value: bigint]; - interface OutputObject { - from: string; - to: string; - value: bigint; - } - type Event = TypedContractEvent; - type Filter = TypedDeferredTopicFilter; - type Log = TypedEventLog; - type LogDescription = TypedLogDescription; -} -export declare namespace TransferAndCallEvent { - type InputTuple = [ - from: AddressLike, - to: AddressLike, - value: BigNumberish, - data: BytesLike - ]; - type OutputTuple = [ - from: string, - to: string, - value: bigint, - data: string - ]; - interface OutputObject { - from: string; - to: string; - value: bigint; - data: string; - } - type Event = TypedContractEvent; - type Filter = TypedDeferredTopicFilter; - type Log = TypedEventLog; - type LogDescription = TypedLogDescription; -} -export interface TestToken extends BaseContract { - connect(runner?: ContractRunner | null): TestToken; - waitForDeployment(): Promise; - interface: TestTokenInterface; - queryFilter(event: TCEvent, fromBlockOrBlockhash?: string | number | undefined, toBlock?: string | number | undefined): Promise>>; - queryFilter(filter: TypedDeferredTopicFilter, fromBlockOrBlockhash?: string | number | undefined, toBlock?: string | number | undefined): Promise>>; - on(event: TCEvent, listener: TypedListener): Promise; - on(filter: TypedDeferredTopicFilter, listener: TypedListener): Promise; - once(event: TCEvent, listener: TypedListener): Promise; - once(filter: TypedDeferredTopicFilter, listener: TypedListener): Promise; - listeners(event: TCEvent): Promise>>; - listeners(eventName?: string): Promise>; - removeAllListeners(event?: TCEvent): Promise; - allowance: TypedContractMethod<[ - owner: AddressLike, - spender: AddressLike - ], [ - bigint - ], "view">; - approve: TypedContractMethod<[ - spender: AddressLike, - amount: BigNumberish - ], [ - boolean - ], "nonpayable">; - balanceOf: TypedContractMethod<[account: AddressLike], [bigint], "view">; - decimals: TypedContractMethod<[], [bigint], "view">; - decreaseAllowance: TypedContractMethod<[ - spender: AddressLike, - subtractedValue: BigNumberish - ], [ - boolean - ], "nonpayable">; - increaseAllowance: TypedContractMethod<[ - spender: AddressLike, - addedValue: BigNumberish - ], [ - boolean - ], "nonpayable">; - mint: TypedContractMethod<[ - recipient: AddressLike, - amount: BigNumberish - ], [ - void - ], "nonpayable">; - name: TypedContractMethod<[], [string], "view">; - symbol: TypedContractMethod<[], [string], "view">; - totalSupply: TypedContractMethod<[], [bigint], "view">; - transfer: TypedContractMethod<[ - to: AddressLike, - amount: BigNumberish - ], [ - boolean - ], "nonpayable">; - transferAndCall: TypedContractMethod<[ - to: AddressLike, - amount: BigNumberish, - data: BytesLike - ], [ - boolean - ], "nonpayable">; - transferFrom: TypedContractMethod<[ - from: AddressLike, - to: AddressLike, - amount: BigNumberish - ], [ - boolean - ], "nonpayable">; - getFunction(key: string | FunctionFragment): T; - getFunction(nameOrSignature: "allowance"): TypedContractMethod<[ - owner: AddressLike, - spender: AddressLike - ], [ - bigint - ], "view">; - getFunction(nameOrSignature: "approve"): TypedContractMethod<[ - spender: AddressLike, - amount: BigNumberish - ], [ - boolean - ], "nonpayable">; - getFunction(nameOrSignature: "balanceOf"): TypedContractMethod<[account: AddressLike], [bigint], "view">; - getFunction(nameOrSignature: "decimals"): TypedContractMethod<[], [bigint], "view">; - getFunction(nameOrSignature: "decreaseAllowance"): TypedContractMethod<[ - spender: AddressLike, - subtractedValue: BigNumberish - ], [ - boolean - ], "nonpayable">; - getFunction(nameOrSignature: "increaseAllowance"): TypedContractMethod<[ - spender: AddressLike, - addedValue: BigNumberish - ], [ - boolean - ], "nonpayable">; - getFunction(nameOrSignature: "mint"): TypedContractMethod<[ - recipient: AddressLike, - amount: BigNumberish - ], [ - void - ], "nonpayable">; - getFunction(nameOrSignature: "name"): TypedContractMethod<[], [string], "view">; - getFunction(nameOrSignature: "symbol"): TypedContractMethod<[], [string], "view">; - getFunction(nameOrSignature: "totalSupply"): TypedContractMethod<[], [bigint], "view">; - getFunction(nameOrSignature: "transfer"): TypedContractMethod<[ - to: AddressLike, - amount: BigNumberish - ], [ - boolean - ], "nonpayable">; - getFunction(nameOrSignature: "transferAndCall"): TypedContractMethod<[ - to: AddressLike, - amount: BigNumberish, - data: BytesLike - ], [ - boolean - ], "nonpayable">; - getFunction(nameOrSignature: "transferFrom"): TypedContractMethod<[ - from: AddressLike, - to: AddressLike, - amount: BigNumberish - ], [ - boolean - ], "nonpayable">; - getEvent(key: "Approval"): TypedContractEvent; - getEvent(key: "Transfer"): TypedContractEvent; - getEvent(key: "TransferAndCall"): TypedContractEvent; - filters: { - "Approval(address,address,uint256)": TypedContractEvent; - Approval: TypedContractEvent; - "Transfer(address,address,uint256)": TypedContractEvent; - Transfer: TypedContractEvent; - "TransferAndCall(address,address,uint256,bytes)": TypedContractEvent; - TransferAndCall: TypedContractEvent; - }; -} diff --git a/packages/sdk/src/ethereumArtifacts/TestTokenAbi.json b/packages/sdk/src/ethereumArtifacts/TestTokenAbi.json deleted file mode 100644 index 4a9acea28c..0000000000 --- a/packages/sdk/src/ethereumArtifacts/TestTokenAbi.json +++ /dev/null @@ -1,366 +0,0 @@ -[ - { - "inputs": [ - { - "internalType": "string", - "name": "name", - "type": "string" - }, - { - "internalType": "string", - "name": "symbol", - "type": "string" - } - ], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "Approval", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "Transfer", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "value", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "TransferAndCall", - "type": "event" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "internalType": "address", - "name": "spender", - "type": "address" - } - ], - "name": "allowance", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "approve", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "balanceOf", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "decimals", - "outputs": [ - { - "internalType": "uint8", - "name": "", - "type": "uint8" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "internalType": "uint256", - "name": "subtractedValue", - "type": "uint256" - } - ], - "name": "decreaseAllowance", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "internalType": "uint256", - "name": "addedValue", - "type": "uint256" - } - ], - "name": "increaseAllowance", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "recipient", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "mint", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "name", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "symbol", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "totalSupply", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "transfer", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "transferAndCall", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "transferFrom", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "nonpayable", - "type": "function" - } -] \ No newline at end of file