@secux/app-eth
Version:
SecuX Hardware Wallet ETH API
18 lines (15 loc) • 4.61 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.erc1155_def=exports.ERC1155=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.ERC1155=class{static prepareSafeTransferFrom(path,content,args){var _a;(0,ow_1.default)(content,interface_1.ow_baseData),(0,ow_1.default)(args,ow_transferArgs);const data=exports.erc1155_def.encodeFunctionData("safeTransferFrom",[args.fromAddress,args.toAddress,args.id,args.value,null!==(_a=args.data)&&void 0!==_a?_a:Buffer.alloc(0)]),builder=(0,transaction_1.getBuilder)(Object.assign(Object.assign({},content),{data}));return(0,app_eth_1.prepareSign)(path,builder,interface_2.TransactionType.NFT)}static prepareSafeBatchTransferFrom(path,content,args){var _a;(0,ow_1.default)(content,interface_1.ow_baseData),(0,ow_1.default)(args,ow_batchTransferArgs);const sorted=[...args.items].sort(((a,b)=>{const compare=toNumber(a.id)-toNumber(b.id);if(0===compare)throw Error(`ArgumentError: duplicate id found, got "${toNumber(a.id)}"`);return compare})),data=exports.erc1155_def.encodeFunctionData("safeBatchTransferFrom",[args.fromAddress,args.toAddress,sorted.map((x=>x.id)),sorted.map((x=>x.value)),null!==(_a=args.data)&&void 0!==_a?_a:Buffer.alloc(0)]),builder=(0,transaction_1.getBuilder)(Object.assign(Object.assign({},content),{data}));return(0,app_eth_1.prepareSign)(path,builder,interface_2.TransactionType.NFT)}},exports.erc1155_def=new abi_1.Interface(["function safeTransferFrom(address _from, address _to, uint256 _id, uint256 _value, bytes calldata _data)","function safeBatchTransferFrom(address _from, address _to, uint256[] calldata _ids, uint256[] calldata _values, bytes calldata _data)","function balanceOf(address _owner, uint256 _id) external view returns (uint256)","function balanceOfBatch(address[] calldata _owners, uint256[] calldata _ids) external view returns (uint256[] memory)","function setApprovalForAll(address _operator, bool _approved)","function isApprovedForAll(address _owner, address _operator) external view returns (bool)","event TransferSingle(address indexed _operator, address indexed _from, address indexed _to, uint256 _id, uint256 _value)","event TransferBatch(address indexed _operator, address indexed _from, address indexed _to, uint256[] _ids, uint256[] _values)","event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved)","event URI(string _value, uint256 indexed _id)","function onERC1155Received(address _operator, address _from, uint256 _id, uint256 _value, bytes calldata _data) external returns(bytes4)","function onERC1155BatchReceived(address _operator, address _from, uint256[] calldata _ids, uint256[] calldata _values, bytes calldata _data) external returns(bytes4)"]);const ow_transferArgs=ow_1.default.object.exactShape({fromAddress:interface_1.ow_address,toAddress:interface_1.ow_address,id:ow_1.default.any(ow_1.default.number.positive,interface_1.ow_hexString32),value:ow_1.default.any(ow_1.default.number.positive,interface_1.ow_hexString32),data:ow_1.default.any(ow_1.default.undefined,utility_1.owTool.prefixedhexString,ow_1.default.buffer)}),ow_item=ow_1.default.object.exactShape({id:ow_1.default.any(ow_1.default.number.positive,interface_1.ow_hexString32),value:ow_1.default.any(ow_1.default.number.positive,interface_1.ow_hexString32)}),ow_batchTransferArgs=ow_1.default.object.exactShape({fromAddress:interface_1.ow_address,toAddress:interface_1.ow_address,items:ow_1.default.array.ofType(ow_item),data:ow_1.default.any(ow_1.default.undefined,utility_1.owTool.prefixedhexString,ow_1.default.buffer)});function toNumber(value){return"number"==typeof value?value:parseInt(value.slice(2),16)}