import { ABIDataTypes } from '@btc-vision/transaction'; import { BitcoinAbiTypes } from '../../../BitcoinAbiTypes.js'; import { BitcoinInterfaceAbi } from '../../../interfaces/BitcoinInterfaceAbi.js'; import { OP_NET_ABI } from './OP_NET_ABI.js'; /** * @category Events */ export const OP20Events: BitcoinInterfaceAbi = [ { name: 'Transferred', values: [ { name: 'operator', type: ABIDataTypes.ADDRESS, }, { name: 'from', type: ABIDataTypes.ADDRESS, }, { name: 'to', type: ABIDataTypes.ADDRESS, }, { name: 'amount', type: ABIDataTypes.UINT256, }, ], type: BitcoinAbiTypes.Event, }, { name: 'Approved', values: [ { name: 'owner', type: ABIDataTypes.ADDRESS, }, { name: 'spender', type: ABIDataTypes.ADDRESS, }, { name: 'amount', type: ABIDataTypes.UINT256, }, ], type: BitcoinAbiTypes.Event, }, { name: 'Burned', values: [ { name: 'from', type: ABIDataTypes.ADDRESS }, { name: 'amount', type: ABIDataTypes.UINT256 }, ], type: BitcoinAbiTypes.Event, }, { name: 'Minted', values: [ { name: 'to', type: ABIDataTypes.ADDRESS, }, { name: 'amount', type: ABIDataTypes.UINT256, }, ], type: BitcoinAbiTypes.Event, }, ]; /** * @category ABI */ export const OP_20_ABI: BitcoinInterfaceAbi = [ // Properties { name: 'name', constant: true, inputs: [], outputs: [ { name: 'name', type: ABIDataTypes.STRING, }, ], type: BitcoinAbiTypes.Function, }, { name: 'symbol', constant: true, inputs: [], outputs: [ { name: 'symbol', type: ABIDataTypes.STRING, }, ], type: BitcoinAbiTypes.Function, }, { name: 'icon', constant: true, inputs: [], outputs: [ { name: 'icon', type: ABIDataTypes.STRING, }, ], type: BitcoinAbiTypes.Function, }, { name: 'decimals', constant: true, inputs: [], outputs: [ { name: 'decimals', type: ABIDataTypes.UINT8, }, ], type: BitcoinAbiTypes.Function, }, { name: 'totalSupply', constant: true, inputs: [], outputs: [ { name: 'totalSupply', type: ABIDataTypes.UINT256, }, ], type: BitcoinAbiTypes.Function, }, { name: 'maximumSupply', constant: true, inputs: [], outputs: [ { name: 'maximumSupply', type: ABIDataTypes.UINT256, }, ], type: BitcoinAbiTypes.Function, }, { name: 'domainSeparator', constant: true, inputs: [], outputs: [ { name: 'domainSeparator', type: ABIDataTypes.BYTES32, }, ], type: BitcoinAbiTypes.Function, }, { name: 'balanceOf', constant: true, inputs: [ { name: 'owner', type: ABIDataTypes.ADDRESS, }, ], outputs: [ { name: 'balance', type: ABIDataTypes.UINT256, }, ], type: BitcoinAbiTypes.Function, }, { name: 'nonceOf', constant: true, inputs: [{ name: 'owner', type: ABIDataTypes.ADDRESS }], outputs: [ { name: 'nonce', type: ABIDataTypes.UINT256, }, ], type: BitcoinAbiTypes.Function, }, { name: 'allowance', constant: true, inputs: [ { name: 'owner', type: ABIDataTypes.ADDRESS, }, { name: 'spender', type: ABIDataTypes.ADDRESS, }, ], outputs: [ { name: 'remaining', type: ABIDataTypes.UINT256, }, ], type: BitcoinAbiTypes.Function, }, { name: 'transfer', inputs: [ { name: 'to', type: ABIDataTypes.ADDRESS }, { name: 'amount', type: ABIDataTypes.UINT256 }, ], outputs: [], type: BitcoinAbiTypes.Function, }, { name: 'transferFrom', inputs: [ { name: 'from', type: ABIDataTypes.ADDRESS }, { name: 'to', type: ABIDataTypes.ADDRESS }, { name: 'amount', type: ABIDataTypes.UINT256 }, ], outputs: [], type: BitcoinAbiTypes.Function, }, { name: 'safeTransfer', inputs: [ { name: 'to', type: ABIDataTypes.ADDRESS }, { name: 'amount', type: ABIDataTypes.UINT256 }, { name: 'data', type: ABIDataTypes.BYTES }, ], outputs: [], type: BitcoinAbiTypes.Function, }, { name: 'safeTransferFrom', inputs: [ { name: 'from', type: ABIDataTypes.ADDRESS }, { name: 'to', type: ABIDataTypes.ADDRESS }, { name: 'amount', type: ABIDataTypes.UINT256 }, { name: 'data', type: ABIDataTypes.BYTES }, ], outputs: [], type: BitcoinAbiTypes.Function, }, { name: 'increaseAllowance', inputs: [ { name: 'spender', type: ABIDataTypes.ADDRESS }, { name: 'amount', type: ABIDataTypes.UINT256 }, ], outputs: [], type: BitcoinAbiTypes.Function, }, { name: 'decreaseAllowance', inputs: [ { name: 'spender', type: ABIDataTypes.ADDRESS }, { name: 'amount', type: ABIDataTypes.UINT256 }, ], outputs: [], type: BitcoinAbiTypes.Function, }, { name: 'increaseAllowanceBySignature', inputs: [ { name: 'owner', type: ABIDataTypes.BYTES32 }, { name: 'ownerTweakedPublicKey', type: ABIDataTypes.BYTES32 }, { name: 'spender', type: ABIDataTypes.ADDRESS }, { name: 'amount', type: ABIDataTypes.UINT256 }, { name: 'deadline', type: ABIDataTypes.UINT64 }, { name: 'signature', type: ABIDataTypes.BYTES }, ], outputs: [], type: BitcoinAbiTypes.Function, }, { name: 'decreaseAllowanceBySignature', inputs: [ { name: 'owner', type: ABIDataTypes.BYTES32 }, { name: 'ownerTweakedPublicKey', type: ABIDataTypes.BYTES32 }, { name: 'spender', type: ABIDataTypes.ADDRESS }, { name: 'amount', type: ABIDataTypes.UINT256 }, { name: 'deadline', type: ABIDataTypes.UINT64 }, { name: 'signature', type: ABIDataTypes.BYTES }, ], outputs: [], type: BitcoinAbiTypes.Function, }, { name: 'burn', inputs: [{ name: 'amount', type: ABIDataTypes.UINT256 }], outputs: [], type: BitcoinAbiTypes.Function, }, { name: 'metadata', constant: true, inputs: [], outputs: [ { name: 'name', type: ABIDataTypes.STRING, }, { name: 'symbol', type: ABIDataTypes.STRING, }, { name: 'icon', type: ABIDataTypes.STRING, }, { name: 'decimals', type: ABIDataTypes.UINT8, }, { name: 'totalSupply', type: ABIDataTypes.UINT256, }, { name: 'domainSeparator', type: ABIDataTypes.BYTES32, }, ], type: BitcoinAbiTypes.Function, }, { name: 'mint', type: BitcoinAbiTypes.Function, inputs: [ { name: 'address', type: ABIDataTypes.ADDRESS, }, { name: 'amount', type: ABIDataTypes.UINT256, }, ], outputs: [], }, { name: 'airdrop', type: BitcoinAbiTypes.Function, inputs: [ { name: 'addressAndAmount', type: ABIDataTypes.ADDRESS_UINT256_TUPLE, }, ], outputs: [], }, // Events ...OP20Events, // OP_NET ...OP_NET_ABI, ];