{"id":15065510,"url":"https://github.com/autonomoussoftware/metronome-lib","last_synced_at":"2025-10-05T06:31:00.164Z","repository":{"id":57296034,"uuid":"177875821","full_name":"autonomoussoftware/metronome-lib","owner":"autonomoussoftware","description":"A JavaScript library for the Metronome Token.","archived":true,"fork":false,"pushed_at":"2019-03-26T22:24:58.000Z","size":107,"stargazers_count":0,"open_issues_count":0,"forks_count":1,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-01-14T22:54:49.593Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/autonomoussoftware.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-03-26T22:07:02.000Z","updated_at":"2023-01-27T20:32:31.000Z","dependencies_parsed_at":"2022-08-30T22:30:36.695Z","dependency_job_id":null,"html_url":"https://github.com/autonomoussoftware/metronome-lib","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/autonomoussoftware%2Fmetronome-lib","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/autonomoussoftware%2Fmetronome-lib/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/autonomoussoftware%2Fmetronome-lib/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/autonomoussoftware%2Fmetronome-lib/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/autonomoussoftware","download_url":"https://codeload.github.com/autonomoussoftware/metronome-lib/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":235370461,"owners_count":18979093,"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-09-25T00:39:51.316Z","updated_at":"2025-10-05T06:30:59.691Z","avatar_url":"https://github.com/autonomoussoftware.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# metronome-lib\n\n[![Build Status](https://travis-ci.com/autonomoussoftware/metronome-lib.svg?branch=master)](https://travis-ci.com/autonomoussoftware/metronome-lib)\n\nA JavaScript library for the Metronome Token.\n\nThis library is a thin wrapper around `web3`, `metronome-contracts` and `metronome-ops` to easy even more the interaction with the Metronome contracts.\nOperations like buying MET tokens in an auction, converting or porting tokens is mostly a one-liner. \n\n## Installation\n\n```shell\nnpm install metronome-lib\n```\n\n## Basic usage\n\n```js\nconst Metronome = require('metronome-lib')\n\n// Get the status of the Metronome auction and converter contracts\nconst met = new Metronome(web3Instance)\nmet.getStatus().then(status =\u003e { /* ... */ })\n\n// But MET in the ongoing auction\nmet.setAccount(myPrivateKeyOrMnemonic)\nmet.buyMet('1000000000000000000').then(purchase =\u003e { /* ... */ })\n\n// Check my MET balance\nmet.getMetBalance().then(balance =\u003e { /* ... */ })\n\n// Send MET to another account\nmet.sendMet(destinationAddress).then(transfer =\u003e { /* ... */ })\n\n// Convert ether to MET\nmet.convertCoinsToMet('1000000000000000000').then(conv =\u003e { /* ... */ })\n\n// Convert MET back to ether\nmet.convertMetToCoins('1000000000000000000').then(back =\u003e { /* ... */ })\n\n// Port MET to another chain\nconst destMet = new Metronome(web3InstanceOnDestinationChain) // I.e. ETC\nPromise.all([destMet.getDestinationChainData(), met.getOriginChainData()])\n  .then(([destChainData, origChainData]) =\u003e met.exportMet(destChainData, '1000000000000000000')\n    .then(exp =\u003e met.getExportProof(exp.data)\n      .then(proof =\u003e destMet.importMet(origChainData, exp.data, proof))\n    )\n  )\n  .then(imp =\u003e { /* ... */ })\n```\n\n## API\n\n\u003ca name=\"new_Metronome_new\"\u003e\u003c/a\u003e\n\n### new Metronome(web3)\nCreate a Metronome object ready to work with the Metronome contracts.\n\nThe proper contracts-set will be selected based on which chain the web3\ninstance is connected to.\n\n\n| Param | Type | Description |\n| --- | --- | --- |\n| web3 | \u003ccode\u003eObject\u003c/code\u003e | A Web3 instance. |\n\n\u003ca name=\"Metronome+getContracts\"\u003e\u003c/a\u003e\n\n### metronome.getContracts() ⇒ [\u003ccode\u003ePromise.\u0026lt;MetronomeContractsInstance\u0026gt;\u003c/code\u003e](#MetronomeContractsInstance)\nGet the Metronome contracts of the library instance.\n\n\u003ca name=\"Metronome+getMetChainName\"\u003e\u003c/a\u003e\n\n### metronome.getMetChainName() ⇒ \u003ccode\u003ePromise.\u0026lt;string\u0026gt;\u003c/code\u003e\nGet the Metronome chain name.\n\n**Returns**: \u003ccode\u003ePromise.\u0026lt;string\u0026gt;\u003c/code\u003e - The name i.e. `'ETH'`.  \n\u003ca name=\"Metronome+getAuctionStatus\"\u003e\u003c/a\u003e\n\n### metronome.getAuctionStatus() ⇒ [\u003ccode\u003ePromise.\u0026lt;AuctionStatus\u0026gt;\u003c/code\u003e](#AuctionStatus)\nGet the status of the Auctions contract.\n\n**Returns**: [\u003ccode\u003ePromise.\u0026lt;AuctionStatus\u0026gt;\u003c/code\u003e](#AuctionStatus) - The status.  \n\u003ca name=\"Metronome+getConverterStatus\"\u003e\u003c/a\u003e\n\n### metronome.getConverterStatus() ⇒ [\u003ccode\u003ePromise.\u0026lt;AutonomousConverterStatus\u0026gt;\u003c/code\u003e](#AutonomousConverterStatus)\nGet the status of the AutonomousConverter contract.\n\n**Returns**: [\u003ccode\u003ePromise.\u0026lt;AutonomousConverterStatus\u0026gt;\u003c/code\u003e](#AutonomousConverterStatus) - The status.  \n\u003ca name=\"Metronome+getStatus\"\u003e\u003c/a\u003e\n\n### metronome.getStatus() ⇒ [\u003ccode\u003ePromise.\u0026lt;AuctionAndConverterStatus\u0026gt;\u003c/code\u003e](#AuctionAndConverterStatus)\nGet the status of both the Auctions and AutonomousConverter contracts.\n\n**Returns**: [\u003ccode\u003ePromise.\u0026lt;AuctionAndConverterStatus\u0026gt;\u003c/code\u003e](#AuctionAndConverterStatus) - The statuses.  \n\u003ca name=\"Metronome+getMetBalance\"\u003e\u003c/a\u003e\n\n### metronome.getMetBalance([owner]) ⇒ \u003ccode\u003ePromise.\u0026lt;string\u0026gt;\u003c/code\u003e\nGet the MET balance of an account.\n\n**Returns**: \u003ccode\u003ePromise.\u0026lt;string\u0026gt;\u003c/code\u003e - The MET balance.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| [owner] | \u003ccode\u003estring\u003c/code\u003e | The address of the account. Defaults to the set account. |\n\n\u003ca name=\"Metronome+getCoinsToMetResult\"\u003e\u003c/a\u003e\n\n### metronome.getCoinsToMetResult(depositAmount) ⇒ \u003ccode\u003ePromise.\u0026lt;string\u0026gt;\u003c/code\u003e\nCalculate the coin to MET return conversion.\n\n**Returns**: \u003ccode\u003ePromise.\u0026lt;string\u0026gt;\u003c/code\u003e - The MET amount that would be returned.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| depositAmount | \u003ccode\u003estring\u003c/code\u003e | The coin amount to convert. |\n\n\u003ca name=\"Metronome+getMetToCoinsResult\"\u003e\u003c/a\u003e\n\n### metronome.getMetToCoinsResult(depositAmount) ⇒ \u003ccode\u003ePromise.\u0026lt;string\u0026gt;\u003c/code\u003e\nCalculate the MET to coin return conversion.\n\n**Returns**: \u003ccode\u003ePromise.\u0026lt;string\u0026gt;\u003c/code\u003e - The coin amount that would be returned.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| depositAmount | \u003ccode\u003estring\u003c/code\u003e | The MET amount to convert. |\n\n\u003ca name=\"Metronome+getDestinationChainData\"\u003e\u003c/a\u003e\n\n### metronome.getDestinationChainData() ⇒ [\u003ccode\u003ePromise.\u0026lt;DestinationChainData\u0026gt;\u003c/code\u003e](#DestinationChainData)\nGet the destination chain data to perform an export.\n\n**Returns**: [\u003ccode\u003ePromise.\u0026lt;DestinationChainData\u0026gt;\u003c/code\u003e](#DestinationChainData) - The chain data.  \n\u003ca name=\"Metronome+getOriginChainData\"\u003e\u003c/a\u003e\n\n### metronome.getOriginChainData() ⇒ [\u003ccode\u003ePromise.\u0026lt;OriginChainData\u0026gt;\u003c/code\u003e](#OriginChainData)\nGet the destination chain data to perform an export.\n\n**Returns**: [\u003ccode\u003ePromise.\u0026lt;OriginChainData\u0026gt;\u003c/code\u003e](#OriginChainData) - The chain data.  \n\u003ca name=\"Metronome+getExportProof\"\u003e\u003c/a\u003e\n\n### metronome.getExportProof(exportData) ⇒ \u003ccode\u003ePromise.\u0026lt;string\u0026gt;\u003c/code\u003e\nGet the Merkle root of a last 16 burns.\n\n**Returns**: \u003ccode\u003ePromise.\u0026lt;string\u0026gt;\u003c/code\u003e - The Merkle root hash.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| exportData | \u003ccode\u003eObject\u003c/code\u003e | The returned export data. |\n| exportData.burnSequence | \u003ccode\u003estring\u003c/code\u003e | The burn sequence number. |\n\n\u003ca name=\"Metronome+setAccount\"\u003e\u003c/a\u003e\n\n### metronome.setAccount(privKeyOrMnemonic, options) ⇒ [\u003ccode\u003eMetronome\u003c/code\u003e](#Metronome)\nSet the default account for this library instance.\n\nAll transactions will be signed and sent using the default account.\n\n**Returns**: [\u003ccode\u003eMetronome\u003c/code\u003e](#Metronome) - The library instance.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| privKeyOrMnemonic | \u003ccode\u003estring\u003c/code\u003e | Either an `0x` prefixed hex private key or a 12-word mnemonic. |\n| options | \u003ccode\u003eObject\u003c/code\u003e |  |\n| [options.derivationPath] | \u003ccode\u003estring\u003c/code\u003e | The key derivarion path to derive the keys from the mnemonic. Defaults to `m/44'/60'/0'/0/0`. |\n| [options.password] | \u003ccode\u003estring\u003c/code\u003e | The mnemonic password. |\n\n\u003ca name=\"Metronome+buyMet\"\u003e\u003c/a\u003e\n\n### metronome.buyMet(value) ⇒ [\u003ccode\u003ePromise.\u0026lt;OperationResult\u0026gt;\u003c/code\u003e](#OperationResult)\nBuy MET in auction.\n\n**Returns**: [\u003ccode\u003ePromise.\u0026lt;OperationResult\u0026gt;\u003c/code\u003e](#OperationResult) - The purchase result.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| value | \u003ccode\u003estring\u003c/code\u003e | The coins to send to the contract. |\n\n\u003ca name=\"Metronome+sendMet\"\u003e\u003c/a\u003e\n\n### metronome.sendMet(to, value) ⇒ [\u003ccode\u003ePromise.\u0026lt;OperationResult\u0026gt;\u003c/code\u003e](#OperationResult)\nTransfer MET.\n\n**Returns**: [\u003ccode\u003ePromise.\u0026lt;OperationResult\u0026gt;\u003c/code\u003e](#OperationResult) - The transfer result.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| to | \u003ccode\u003estring\u003c/code\u003e | The recipient address. |\n| value | \u003ccode\u003estring\u003c/code\u003e | The amount to transfer. |\n\n\u003ca name=\"Metronome+approveMet\"\u003e\u003c/a\u003e\n\n### metronome.approveMet(spender, value) ⇒ [\u003ccode\u003ePromise.\u0026lt;OperationResult\u0026gt;\u003c/code\u003e](#OperationResult)\nSet MET allowance.\n\n**Returns**: [\u003ccode\u003ePromise.\u0026lt;OperationResult\u0026gt;\u003c/code\u003e](#OperationResult) - The allowance result.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| spender | \u003ccode\u003estring\u003c/code\u003e | The address allowed to spend tokens. |\n| value | \u003ccode\u003estring\u003c/code\u003e | The amount to approve. |\n\n\u003ca name=\"Metronome+convertCoinsToMet\"\u003e\u003c/a\u003e\n\n### metronome.convertCoinsToMet(value, [minReturn]) ⇒ [\u003ccode\u003ePromise.\u0026lt;OperationResult\u0026gt;\u003c/code\u003e](#OperationResult)\nConvert coins to MET.\n\n**Returns**: [\u003ccode\u003ePromise.\u0026lt;OperationResult\u0026gt;\u003c/code\u003e](#OperationResult) - The conversion result.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| value | \u003ccode\u003estring\u003c/code\u003e | The coin amount to convert. |\n| [minReturn] | \u003ccode\u003estring\u003c/code\u003e | Will cancel conversion if minReturn tokens are not obtained. |\n\n\u003ca name=\"Metronome+convertMetToCoins\"\u003e\u003c/a\u003e\n\n### metronome.convertMetToCoins(amount, [minReturn]) ⇒ [\u003ccode\u003ePromise.\u0026lt;OperationResult\u0026gt;\u003c/code\u003e](#OperationResult)\nConvert MET to coins.\n\nThis function can result in up to 3 transactions depending on the previous\nallowance level granted to the AutonomousConverter contract. Only the last\noperation -the conversion- will be returned as the result of calling this\nfunction.\n\n**Returns**: [\u003ccode\u003ePromise.\u0026lt;OperationResult\u0026gt;\u003c/code\u003e](#OperationResult) - The conversion result.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| amount | \u003ccode\u003estring\u003c/code\u003e | The MET amount to convert. |\n| [minReturn] | \u003ccode\u003estring\u003c/code\u003e | Will cancel conversion if minReturn tokens are not obtained. |\n\n\u003ca name=\"Metronome+exportMet\"\u003e\u003c/a\u003e\n\n### metronome.exportMet(destinationData, amount) ⇒ [\u003ccode\u003ePromise.\u0026lt;OperationResult\u0026gt;\u003c/code\u003e](#OperationResult)\nInitiate an export of MET to another chain and obtain the burn data.\n\n**Returns**: [\u003ccode\u003ePromise.\u0026lt;OperationResult\u0026gt;\u003c/code\u003e](#OperationResult) - The export result.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| destinationData | [\u003ccode\u003eDestinationChainData\u003c/code\u003e](#DestinationChainData) | The destination chain data. |\n| amount | \u003ccode\u003estring\u003c/code\u003e | The MET amount to burn and export. |\n\n\u003ca name=\"Metronome+importMet\"\u003e\u003c/a\u003e\n\n### metronome.importMet(originData, exportData, proof) ⇒ [\u003ccode\u003ePromise.\u0026lt;OperationResult\u0026gt;\u003c/code\u003e](#OperationResult)\nRequest the import of MET burned on another chain.\n\n**Returns**: [\u003ccode\u003ePromise.\u0026lt;OperationResult\u0026gt;\u003c/code\u003e](#OperationResult) - The import request result.  \n\n| Param | Type | Description |\n| --- | --- | --- |\n| originData | [\u003ccode\u003eOriginChainData\u003c/code\u003e](#OriginChainData) | The origin chain data. |\n| exportData | \u003ccode\u003eObject\u003c/code\u003e | The data obtained when the tokens were exported. |\n| proof | \u003ccode\u003estring\u003c/code\u003e | The burn proof on the origin chain. |\n\n\u003ca name=\"MetronomeContractsInstance\"\u003e\u003c/a\u003e\n\n### MetronomeContractsInstance : \u003ccode\u003eObject\u003c/code\u003e\nA Metronome contracts set.\n\n**Properties**\n\n| Name | Type | Description |\n| --- | --- | --- |\n| Auctions | \u003ccode\u003eObject\u003c/code\u003e | The Web3 contract instance. |\n| AutonomousConverter | \u003ccode\u003eObject\u003c/code\u003e | The Web3 contract instance. |\n| METToken | \u003ccode\u003eObject\u003c/code\u003e | The Web3 contract instance. |\n| TokenPorter | \u003ccode\u003eObject\u003c/code\u003e | The Web3 contract instance. |\n\n\u003ca name=\"AuctionStatus\"\u003e\u003c/a\u003e\n\n### AuctionStatus : \u003ccode\u003eObject.\u0026lt;string, any\u0026gt;\u003c/code\u003e\nAn object representing the auction status.\n\n**Properties**\n\n| Name | Type | Description |\n| --- | --- | --- |\n| currAuction | \u003ccode\u003estring\u003c/code\u003e | The auction number. |\n| currentAuctionPrice | \u003ccode\u003estring\u003c/code\u003e | The MET price. |\n| dailyAuctionStartTime | \u003ccode\u003enumber\u003c/code\u003e | The daily auctions start time (ms). |\n| genesisTime | \u003ccode\u003enumber\u003c/code\u003e | The ISA start time (ms). |\n| lastPurchasePrice | \u003ccode\u003estring\u003c/code\u003e | The last purchase price. |\n| lastPurchaseTime | \u003ccode\u003enumber\u003c/code\u003e | The last purchase time (ms). |\n| minting | \u003ccode\u003estring\u003c/code\u003e | The coins available in the current auction. |\n| nextAuctionTime | \u003ccode\u003enumber\u003c/code\u003e | The next auction start time (ms). |\n\n\u003ca name=\"AutonomousConverterStatus\"\u003e\u003c/a\u003e\n\n### AutonomousConverterStatus : \u003ccode\u003eObject\u003c/code\u003e\nAn object representing the autonomous converter status.\n\nThe converter price returned is for informational purposes only as the\nconversion price will change depending on the amount sent and the contract's\nbalance.\n\n**Properties**\n\n| Name | Type | Description |\n| --- | --- | --- |\n| currentConverterPrice | \u003ccode\u003estring\u003c/code\u003e | The coins returned for 1 MET. |\n| ethBalance | \u003ccode\u003estring\u003c/code\u003e | The contract's coins balance. I.e. ETH. |\n| metBalance | \u003ccode\u003estring\u003c/code\u003e | The contract's MET balance. |\n\n\u003ca name=\"AuctionAndConverterStatus\"\u003e\u003c/a\u003e\n\n### AuctionAndConverterStatus : \u003ccode\u003eObject\u003c/code\u003e\nA combined status.\n\n**Properties**\n\n| Name | Type |\n| --- | --- |\n| auction | [\u003ccode\u003eAuctionStatus\u003c/code\u003e](#AuctionStatus) | \n| converter | [\u003ccode\u003eAutonomousConverterStatus\u003c/code\u003e](#AutonomousConverterStatus) | \n\n\u003ca name=\"DestinationChainData\"\u003e\u003c/a\u003e\n\n### DestinationChainData : \u003ccode\u003eObject\u003c/code\u003e\nAn object having destination contracts data.\n\n**Properties**\n\n| Name | Type | Description |\n| --- | --- | --- |\n| destChain | \u003ccode\u003estring\u003c/code\u003e | The Metronome chain name. |\n| destMetronomeAddr | \u003ccode\u003estring\u003c/code\u003e | The METToken contract address. |\n\n\u003ca name=\"OriginChainData\"\u003e\u003c/a\u003e\n\n### OriginChainData : \u003ccode\u003eObject\u003c/code\u003e\nAn object having destination contracts data.\n\n**Properties**\n\n| Name | Type | Description |\n| --- | --- | --- |\n| dailyAuctionStartTime | \u003ccode\u003enumber\u003c/code\u003e | The METToken contract address. |\n| genesisTime | \u003ccode\u003enumber\u003c/code\u003e | The METToken contract address. |\n| originChain | \u003ccode\u003estring\u003c/code\u003e | The Metronome chain name. |\n\n\u003ca name=\"OperationResult\"\u003e\u003c/a\u003e\n\n### OperationResult : \u003ccode\u003eObject\u003c/code\u003e\nThe result of any library operation.\n\n**Properties**\n\n| Name | Type | Description |\n| --- | --- | --- |\n| transactionHash | \u003ccode\u003estrict\u003c/code\u003e | The hash of the resulting transaction. |\n| data | \u003ccode\u003eObject\u003c/code\u003e | The returned data in the transaction logs for the operation. |\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fautonomoussoftware%2Fmetronome-lib","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fautonomoussoftware%2Fmetronome-lib","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fautonomoussoftware%2Fmetronome-lib/lists"}