{"id":19303824,"url":"https://github.com/web3w/web3-accounts","last_synced_at":"2025-02-24T02:13:44.787Z","repository":{"id":39622883,"uuid":"498151657","full_name":"web3w/web3-accounts","owner":"web3w","description":"Basic operations for web3 accounts","archived":false,"fork":false,"pushed_at":"2023-11-06T01:31:05.000Z","size":1552,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-05T23:42:19.243Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://web3w.github.io/web3-accounts/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/web3w.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-05-31T01:50:46.000Z","updated_at":"2022-08-02T10:34:34.000Z","dependencies_parsed_at":"2024-11-09T23:27:53.165Z","dependency_job_id":"053f63be-3458-49d8-8fb8-935b0d3b408b","html_url":"https://github.com/web3w/web3-accounts","commit_stats":null,"previous_names":[],"tags_count":18,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/web3w%2Fweb3-accounts","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/web3w%2Fweb3-accounts/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/web3w%2Fweb3-accounts/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/web3w%2Fweb3-accounts/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/web3w","download_url":"https://codeload.github.com/web3w/web3-accounts/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240404751,"owners_count":19796064,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-09T23:27:41.176Z","updated_at":"2025-02-24T02:13:44.765Z","avatar_url":"https://github.com/web3w.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# web3-accounts\u003c!-- omit in toc --\u003e\nCommon utils for account operation ERC20 ERC721 ERC1155\n\n## Installation\n\nIn your project, run:\n\n```bash\nnpm i web3-accounts\n```\n\n## Getting Started\n \nconst privateKeys=[]\n\n```ts \nimport { Web3Accounts} from \"web3-accounts\"; \nconst account = new Web3Accounts({\n    chainId:1,\n    address: \"0x548427d1418066763173dd053D9d1AE32D161310\",\n    privateKeys: privateKeys,\n})\nconst sign =await account.signMessage('Hello Web3')\n```\n\n## The signature method\n```ts\n    ecSignMessage(message: string, privateKey?: string)  \n\n    async signMessage(message: string | Bytes) \n\n    async signTypedData(typedData: EIP712TypedData)\n```\n```ts\n    const user = new Web3Accounts({\n        chainId,\n        address: seller,\n        privateKeys: secrets.privateKeys,\n    })\n    const msg = 'hello web3'\n    const ecSign = user.ecSignMessage(msg)\n    const signature = await user.signMessage(msg)\n    console.assert(joinECSignature(ecSign) == signature)\n```\n\n## Approve and de-Approve\n```ts\nasync approveERC20Proxy(tokenAddr: string, spender: string, allowance?: string)\n\nasync cancelERC20Approve(tokenAddr: string, operator: string)\n\nasync approveERC721Proxy(tokenAddr: string, operator: string)\n\nasync cancelERC721Approve(tokenAddr: string, operator: string)\n\nasync approveERC1155Proxy(tokenAddr: string, operator: string)\n\nasync cancelERC1155Approve(tokenAddr: string, operator: string)\n\nasync assetApprove(asset: Asset, operator: string, allowance?: string)\n\n```\n```ts\n const erc20Approve = await user.approveERC20Proxy(tokenAddr, seller, \"200\")\n await erc20Approve.wait()\n```\n## Get basic asset information\n```ts\nasync getGasBalances(account?: { address?: string, rpcUrl?: string })\n\nasync getTokenBalances(params: { tokenAddr: string, account?: string, rpcUrl?: string })\n\nasync getERC20Balances(erc20Addr: string, account?: string)\n\nasync getERC20Allowance(erc20Addr: string, spender: string, account?: string)\n\nasync getERC20Decimals(erc20Addr: string)\n\nasync getERC721Balances(to: string, tokenId: string, account?: string)\n\nasync getERC721OwnerOf(to: string, tokenId: string)\n\nasync getERC721Approved(to: string, operator: string, account?: string)\n\nasync getERC1155Balances(to: string, tokenId: string, account?: string)\n\nasync getERC1155Approved(to: string, operator: string, account?: string)\n\nasync getAssetApprove(asset: Asset, operator: string, account?: string)\n\nasync getTokenApprove(tokenAddr: string, spender: string, account?: string)\n\nasync getAssetBalances(asset: Asset, account?: string)\n\nasync getUserTokenBalance(token: { tokenAddr?: string, decimals?: number, account?: string, rpcUrl?: string})\n\nasync getUserTokensBalance(params: {\n    tokens: {\n        tokenAddr: string,\n            decimals: number\n    }[],\n    account?: string,\n    rpcUrl?: string\n})\n```\n```ts\nconst erc721={\n    tokenId: '27',\n    tokenAddress: '0x56df6c8484500dc3e2fe5a02bed70b4969ffafdb',\n    schemaName: 'erc721'\n}\nconst bal721 = await user.getAssetBalances(erc721)\nconst erc1155 ={\n    tokenId: '13',\n    tokenAddress: '0x991a868aa7b0a9a24565ede2d8fe758874a6a217',\n    schemaName: 'ERC1155'\n} \nconst bal1155 = await user.getAssetBalances(erc1155)\n```\n## Transfer of assets\n```ts\nasync assetTransfer(metadata: ExchangeMetadata, to: string)\n\nasync transfer(asset: Asset, to: string, quantity: number)\n```\n\n```ts\n const tx = await user.transfer(erc721, seller, 1)\n await tx.wait()\n```\n\n## Weth transfer between eth\n```ts\nasync wethBalances(account?: string)\n\nasync wethWithdraw(ether: string)\n\nasync wethDeposit(ether: string, depositFunc?: false)\n```\n\n```ts\n    const wethBal = await user.wethBalances() \n    const wethWithdrawTx = await user.wethWithdraw(wethBal)\n    await wethWithdrawTx.wait()\n\n    const wethDepositTx = await user.wethDeposit(wethBal)\n    await wethDepositTx.wait()\n```\n\n## Type conversion funciton\n```ts\n  assetToMetadata(asset: Asset, quantity: string = \"1\", data?: string): ExchangeMetadata \n\n  metadataToAsset(metadata: ExchangeMetadata, data?: Asset): Asset  \n\n  tokenToAsset(token: Token): Asset  \n\n  tokenToMetadata(token: Token, quantity: string = \"1\", data?: string): ExchangeMetadata  \n\n  transactionToCallData(data: PopulatedTransaction): LimitedCallSpec\n \n```\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fweb3w%2Fweb3-accounts","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fweb3w%2Fweb3-accounts","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fweb3w%2Fweb3-accounts/lists"}