@secux/app-eth
Version:
SecuX Hardware Wallet ETH API
18 lines (15 loc) • 4.85 kB
JavaScript
;
/*!
Copyright 2022 SecuX Technology Inc
Copyright Chen Wei-En
Copyright Wu Tsung-Yu
Licensed under the Apache License, Version 2.0 (the License);
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an AS IS BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/var __importDefault=this&&this.__importDefault||function(mod){return mod&&mod.__esModule?mod:{default:mod}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.erc721_def=exports.ERC721=void 0;const abi_1=require("@ethersproject/abi"),app_eth_1=require("./app-eth"),ow_1=__importDefault(require("ow")),interface_1=require("./interface"),transaction_1=require("./transaction"),utility_1=require("@secux/utility"),interface_2=require("@secux/protocol-transaction/lib/interface");exports.ERC721=class{static prepareSafeTransferFrom(path,content,args){(0,ow_1.default)(content,interface_1.ow_baseData),(0,ow_1.default)(args,ow_safeTransferDataArgs);const data=args.data?exports.erc721_def.encodeFunctionData("safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes data)",[args.fromAddress,args.toAddress,args.tokenId,args.data]):exports.erc721_def.encodeFunctionData("safeTransferFrom(address _from, address _to, uint256 _tokenId)",[args.fromAddress,args.toAddress,args.tokenId]),builder=(0,transaction_1.getBuilder)(Object.assign(Object.assign({},content),{data}));return(0,app_eth_1.prepareSign)(path,builder,interface_2.TransactionType.NFT)}static prepareTransferFrom(path,content,args){(0,ow_1.default)(content,interface_1.ow_baseData),(0,ow_1.default)(args,ow_safeTransferArgs);const data=exports.erc721_def.encodeFunctionData("transferFrom",[args.fromAddress,args.toAddress,args.tokenId]),builder=(0,transaction_1.getBuilder)(Object.assign(Object.assign({},content),{data}));return(0,app_eth_1.prepareSign)(path,builder,interface_2.TransactionType.NFT)}static prepareApprove(path,content,args){(0,ow_1.default)(content,interface_1.ow_baseData),(0,ow_1.default)(args,ow_approveArgs);const data=exports.erc721_def.encodeFunctionData("approve",[args.toAddress,args.tokenId]),builder=(0,transaction_1.getBuilder)(Object.assign(Object.assign({},content),{data}));return(0,app_eth_1.prepareSign)(path,builder,interface_2.TransactionType.NFT)}},exports.erc721_def=new abi_1.Interface(["function balanceOf(address _owner) external view returns (uint256)","function ownerOf(uint256 _tokenId) external view returns (address)","function safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes data) external payable","function safeTransferFrom(address _from, address _to, uint256 _tokenId) external payable","function transferFrom(address _from, address _to, uint256 _tokenId) external payable","function approve(address _approved, uint256 _tokenId) external payable","function setApprovalForAll(address _operator, bool _approved) external","function getApproved(uint256 _tokenId) external view returns (address)","function isApprovedForAll(address _owner, address _operator) external view returns (bool)","function supportsInterface(bytes4 interfaceID) external view returns (bool)","function onERC721Received(address _operator, address _from, uint256 _tokenId, bytes _data) external returns(bytes4)","event Transfer(address indexed _from, address indexed _to, uint256 indexed _tokenId)","event Approval(address indexed _owner, address indexed _approved, uint256 indexed _tokenId)","event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved)","function name() external view returns (string _name)","function symbol() external view returns (string _symbol)","function tokenURI(uint256 _tokenId) external view returns (string)","function totalSupply() external view returns (uint256)","function tokenByIndex(uint256 _index) external view returns (uint256)","function tokenOfOwnerByIndex(address _owner, uint256 _index) external view returns (uint256)"]);const _safeTransferArgs={fromAddress:interface_1.ow_address,toAddress:interface_1.ow_address,tokenId:ow_1.default.any(ow_1.default.number.positive,interface_1.ow_hexString32)},ow_safeTransferArgs=ow_1.default.object.exactShape(_safeTransferArgs),ow_safeTransferDataArgs=ow_1.default.object.exactShape(Object.assign(Object.assign({},_safeTransferArgs),{data:ow_1.default.any(ow_1.default.undefined,utility_1.owTool.prefixedhexString,ow_1.default.buffer)})),ow_approveArgs=ow_1.default.object.exactShape({toAddress:interface_1.ow_address,tokenId:ow_1.default.any(ow_1.default.number.positive,interface_1.ow_hexString32)});