{"_id":"@ar-packages-changeit/sdk-bitcoin","_rev":"3-0ca0adec3000cc610b78d4ea96ad576a","name":"@ar-packages-changeit/sdk-bitcoin","dist-tags":{"latest":"0.0.1","develop":"0.0.1-ab7d7d42"},"versions":{"0.0.0":{"name":"@ar-packages-changeit/sdk-bitcoin","version":"0.0.0","author":{"name":"Rosen Team"},"license":"MIT","_id":"@ar-packages-changeit/sdk-bitcoin@0.0.0","maintainers":[{"name":"arsalanyavari","email":"arya48.yavari79@gmail.com"}],"homepage":"https://github.com/rosen-bridge/rosen-sdk#readme","bugs":{"url":"https://github.com/rosen-bridge/rosen-sdk/issues"},"dist":{"shasum":"ee2f3a589a96de3d98ef6e296071e3746677edda","tarball":"https://registry.npmjs.org/@ar-packages-changeit/sdk-bitcoin/-/sdk-bitcoin-0.0.0.tgz","fileCount":17,"integrity":"sha512-n1cXQ4wrmQcJ8+Nj20unv85hLdIbv3QYruTxvUwV5mTSUz3jkLb8xOh5LlydzvkRPEl/e2Bh7EgCpcqy6dNm8A==","signatures":[{"sig":"MEQCIB2Ju/xM3gWrynijnMC+MsTTXEpGMHc7VctFwA1CkmDxAiAYRFCDweClx+4BmD2/aD5Ktg29Dm+gwaSuwDbExblBDQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":32733},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=22.18.0"},"gitHead":"8c64365068e3817da37ae50d42f9810c57e213b9","scripts":{"lint":"eslint --fix . && npm run prettify","test":"NODE_OPTIONS='--import tsx' vitest","build":"tsc --build tsconfig.build.json","clean":"rimraf dist && rimraf tsconfig.build.tsbuildinfo","release":"npm run clean && npm run build && npm run test -- --run && npm publish --access public","coverage":"npm run test -- --coverage","prettify":"prettier --write . --ignore-path ../../.gitignore","lint:check":"eslint . && npm run prettify:check","type-check":"tsc --noEmit","prettify:check":"prettier --check . --ignore-path ../../.gitignore"},"_npmUser":{"name":"arsalanyavari","email":"arya48.yavari79@gmail.com"},"repository":{"url":"git+https://github.com/rosen-bridge/rosen-sdk.git","type":"git"},"_npmVersion":"11.6.2","description":"Bitcoin chain specific functions of Rosen SDK to interact with and create transactions on Rosen Bridge","directories":{},"_nodeVersion":"22.18.0","dependencies":{"bitcoinjs-lib":"^6.1.7","@rosen-bridge/tokens":"^4.0.1","@rosen-bridge/sdk-abstract":"^0.0.0","@rosen-bridge/sdk-constant":"^0.0.0","@rosen-bridge/abstract-logger":"^3.0.1","@rosen-bridge/bitcoin-utxo-selection":"^2.0.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.20.6","vitest":"^3.1.4","@vitest/coverage-istanbul":"^3.1.4","@rosen-bridge/address-codec":"^1.0.1"},"_npmOperationalInternal":{"tmp":"tmp/sdk-bitcoin_0.0.0_1763561668602_0.017264984574164144","host":"s3://npm-registry-packages-npm-production"}},"0.0.1-ab7d7d42":{"name":"@ar-packages-changeit/sdk-bitcoin","version":"0.0.1-ab7d7d42","author":{"name":"Rosen Team"},"license":"MIT","_id":"@ar-packages-changeit/sdk-bitcoin@0.0.1-ab7d7d42","maintainers":[{"name":"arsalanyavari","email":"arya48.yavari79@gmail.com"}],"homepage":"https://github.com/rosen-bridge/rosen-sdk#readme","bugs":{"url":"https://github.com/rosen-bridge/rosen-sdk/issues"},"dist":{"shasum":"2d83df8c6117dddb2752a5ce5b5f994f7579d034","tarball":"https://registry.npmjs.org/@ar-packages-changeit/sdk-bitcoin/-/sdk-bitcoin-0.0.1-ab7d7d42.tgz","fileCount":18,"integrity":"sha512-svVMyEEPweW/l/Sb83wzJdp3eCssQOEa77RA8hTFtoxB8Vp3xLGKN4Q+NoWkTyH8NAlNZ6ZUTIbudLfa5WOMRw==","signatures":[{"sig":"MEQCIHMud68X4fgw50qegtHURVHqsf0iPoivcnyuFQ+DTwQmAiAniTTnjr/lriklskTJ+SY5JxM1RBzff9tYIWGVmfbfpQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":32825},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=22.18.0"},"gitHead":"ab7d7d42d34c23397629e2b2c6663442f6c2309a","scripts":{"lint":"eslint --fix . && npm run prettify","test":"NODE_OPTIONS='--import tsx' vitest","build":"tsc --build tsconfig.build.json","clean":"rimraf dist && rimraf tsconfig.build.tsbuildinfo","release":"npm run clean && npm run build && npm run test -- --run && npm publish --access public","coverage":"npm run test -- --coverage","prettify":"prettier --write . --ignore-path ../../.gitignore","lint:check":"eslint . && npm run prettify:check","type-check":"tsc --noEmit","prettify:check":"prettier --check . --ignore-path ../../.gitignore"},"_npmUser":{"name":"arsalanyavari","email":"arya48.yavari79@gmail.com"},"repository":{"url":"git+https://github.com/rosen-bridge/rosen-sdk.git","type":"git"},"_npmVersion":"11.6.2","description":"Bitcoin chain specific functions of Rosen SDK to interact with and create transactions on Rosen Bridge","directories":{},"_nodeVersion":"22.18.0","dependencies":{"bitcoinjs-lib":"^6.1.7","@rosen-bridge/tokens":"^4.0.1","@rosen-bridge/sdk-abstract":"^0.0.0","@rosen-bridge/sdk-constant":"^0.0.0","@rosen-bridge/abstract-logger":"^3.0.1","@rosen-bridge/bitcoin-utxo-selection":"^2.0.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"tsx":"^4.20.6","vitest":"^3.1.4","@vitest/coverage-istanbul":"^3.1.4","@rosen-bridge/address-codec":"^1.0.1"},"_npmOperationalInternal":{"tmp":"tmp/sdk-bitcoin_0.0.1-ab7d7d42_1763561959111_0.31706687500931374","host":"s3://npm-registry-packages-npm-production"}},"0.0.1":{"name":"@ar-packages-changeit/sdk-bitcoin","version":"0.0.1","description":"Bitcoin chain specific functions of Rosen SDK to interact with and create transactions on Rosen Bridge","repository":{"type":"git","url":"git+https://github.com/rosen-bridge/rosen-sdk.git"},"license":"MIT","author":{"name":"Rosen Team"},"type":"module","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc --build tsconfig.build.json","clean":"rimraf dist && rimraf tsconfig.build.tsbuildinfo","coverage":"npm run test -- --coverage","lint":"eslint --fix . && npm run prettify","lint:check":"eslint . && npm run prettify:check","prettify":"prettier --write . --ignore-path ../../.gitignore","prettify:check":"prettier --check . --ignore-path ../../.gitignore","release":"npm run clean && npm run build && npm run test -- --run && npm publish --access public","test":"NODE_OPTIONS='--import tsx' vitest","type-check":"tsc --noEmit"},"dependencies":{"@rosen-bridge/abstract-logger":"^3.0.1","@rosen-bridge/bitcoin-utxo-selection":"^2.0.1","@ar-packages-changeit/sdk-abstract":"^0.0.1","@ar-packages-changeit/sdk-constant":"^0.0.1","@rosen-bridge/tokens":"^4.0.1","bitcoinjs-lib":"^6.1.7"},"devDependencies":{"@rosen-bridge/address-codec":"^1.0.1","@vitest/coverage-istanbul":"^3.1.4","tsx":"^4.20.6","vitest":"^3.1.4"},"engines":{"node":">=22.18.0"},"gitHead":"caab3cbec891a1ff9894f92308b9ad2b2da72166","_id":"@ar-packages-changeit/sdk-bitcoin@0.0.1","bugs":{"url":"https://github.com/rosen-bridge/rosen-sdk/issues"},"homepage":"https://github.com/rosen-bridge/rosen-sdk#readme","_nodeVersion":"22.18.0","_npmVersion":"11.6.2","dist":{"integrity":"sha512-WsGQMvZVydrzDwAJU9pqgCVsNVEB8gSg1JNvhP1gVDqg2ov6Ta4EMbMTyEhcp6FkHnH4h8owG+e+kCIfRAfDbA==","shasum":"3e8510b6a930ae34576535223986b6bd45e755f6","tarball":"https://registry.npmjs.org/@ar-packages-changeit/sdk-bitcoin/-/sdk-bitcoin-0.0.1.tgz","fileCount":19,"unpackedSize":95792,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIGtzTvQxenvzJi9d+ZNL8O2UQXg7hA1kUU9mnT6+5bteAiEA4WmpdjiB41xtZqN8tKl8mZgXVyy1HW+gmwYy9sbMcZA="}]},"_npmUser":{"name":"arsalanyavari","email":"arya48.yavari79@gmail.com"},"directories":{},"maintainers":[{"name":"arsalanyavari","email":"arya48.yavari79@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/sdk-bitcoin_0.0.1_1763574235628_0.6757000532562885"},"_hasShrinkwrap":false}},"time":{"created":"2025-11-19T14:14:28.471Z","modified":"2025-11-19T17:43:56.042Z","0.0.0":"2025-11-19T14:14:28.774Z","0.0.1-ab7d7d42":"2025-11-19T14:19:19.320Z","0.0.1":"2025-11-19T17:43:55.840Z"},"bugs":{"url":"https://github.com/rosen-bridge/rosen-sdk/issues"},"author":{"name":"Rosen Team"},"license":"MIT","homepage":"https://github.com/rosen-bridge/rosen-sdk#readme","repository":{"type":"git","url":"git+https://github.com/rosen-bridge/rosen-sdk.git"},"description":"Bitcoin chain specific functions of Rosen SDK to interact with and create transactions on Rosen Bridge","maintainers":[{"name":"arsalanyavari","email":"arya48.yavari79@gmail.com"}],"readme":"# @ar-packages-changeit/sdk-bitcoin\n\n## Table of contents\n\n- [@ar-packages-changeit/sdk-bitcoin](#rosen-bridgesdk-bitcoin)\n  - [Table of contents](#table-of-contents)\n  - [Introduction](#introduction)\n  - [Installation](#installation)\n  - [Usage](#usage)\n    - [Initialize the SDK](#initialize-the-sdk)\n    - [Generate Lock Transactions](#generate-lock-transactions)\n    - [Constants and Types](#constants-and-types)\n    - [Error handling](#error-handling)\n\n## Introduction\n\nThis package provides Bitcoin chain-specific functionality for the Rosen Bridge SDK, enabling you to interact with and create transactions on the Rosen Bridge for the Bitcoin blockchain.\n\n## Installation\n\nnpm:\n\n```sh\nnpm i @ar-packages-changeit/sdk-bitcoin\n```\n\nyarn:\n\n```sh\nyarn add @ar-packages-changeit/sdk-bitcoin\n```\n\n## Usage\n\n### Initialize the SDK\n\nTo use the SDK, initialize an instance of `BitcoinRosenChainSDK` with your token configuration and lock address:\n\n```typescript\nimport { BitcoinRosenChainSDK } from '@ar-packages-changeit/sdk-bitcoin';\nimport { NETWORKS } from '@ar-packages-changeit/sdk-constant';\n\nimport { TokenMap } from '@rosen-bridge/tokens';\n\nconst rosenTokens = [\n  {\n    ergo: {\n      tokenId:\n        'b2dcea48caf0e73309138d659f6eb69d7ec8793dee989670c72dd4ffde7ebeb3',\n      name: 'rpnBTC',\n      decimals: 8,\n      type: 'EIP-004',\n      residency: 'wrapped',\n      extra: {},\n    },\n    bitcoin: {\n      tokenId: 'btc',\n      name: 'BTC',\n      decimals: 8,\n      type: 'native',\n      residency: 'native',\n      extra: {},\n    },\n    cardano: {\n      tokenId:\n        '57abe42f549784c88f14e78872127d62fc0a7bfbed0ad7d41e5eb2fb.72706e425443',\n      name: 'rpnBTC',\n      decimals: 8,\n      type: 'CIP26',\n      residency: 'wrapped',\n      extra: {\n        policyId: '57abe42f549784c88f14e78872127d62fc0a7bfbed0ad7d41e5eb2fb',\n        assetName: '72706e425443',\n      },\n    },\n  },\n];\n\nconst tokenMap = new TokenMap();\nawait tokenMap.updateConfigByJson(rosenTokens);\n\nconst lockAddress = 'bc1q...'; // Rosen Bitcoin lock address\n\nconst sdk = new BitcoinRosenChainSDK(\n  tokenMap, // TokenMap instance\n  lockAddress, // Lock address for bridge\n);\n```\n\n### Generate Lock Transactions\n\nYou can generate an unsigned lock transaction for bridging btc from Bitcoin to another chain:\n\n```typescript\nconst unsignedTx = await sdk.generateLockTransaction(\n  'btc', // Token ID on Bitcoin (only 'btc' is supported)\n  NETWORKS.YOUR_TARGET_CHAIN, // Target chain (e.g., NETWORKS.ERGO)\n  'toEncodedAddress', // Recipient address on target chain (encoded)\n  'fromAddress', // Sender's Bitcoin address (bech32)\n  1_500_000n, // Amount to bridge (in satoshis)\n  9_551n, // Bridge fee (in satoshis)\n  153n, // Network fee (in satoshis)\n  utxoIterator, // Iterator or async iterator of available Bitcoin UTxOs\n  {\n    feeRatio: 4.968, // fee ratio for estimation\n  },\n);\n\n// The result is an object containing the unsigned PSBT (base64/hex encoded) and related data.\nconsole.log(unsignedTx);\n```\n\n- `utxoIterator` should yield Bitcoin UTxOs covering the required amount.\n- The SDK does not sign transactions; you must sign and submit the transaction using your own wallet or tools.\n\n### Constants and Types\n\nThe SDK exports several useful constants and types:\n\n- Types such as `BitcoinUtxo`, etc., are available for strong typing of transaction data.\n\n### Error handling\n\nThe SDK may throw the following errors:\n\n- `UnsupportedTokenException`: Thrown if the provided token is not supported (only 'btc' is supported).\n- `InsufficientAssetsException`: Thrown if the provided UTxOs do not cover the required amount for the transaction.\n\nExample:\n\n```typescript\nimport {\n  UnsupportedTokenException,\n  InsufficientAssetsException,\n} from '@ar-packages-changeit/sdk-bitcoin';\n\ntry {\n  // ... call generateLockTransaction ...\n} catch (e) {\n  if (e instanceof UnsupportedTokenException) {\n    // Handle unsupported token\n  } else if (e instanceof InsufficientAssetsException) {\n    // Handle insufficient assets\n  } else {\n    throw e;\n  }\n}\n```\n\n---\n\n**Note:**\n\n- You must provide a realistic token configuration and valid lock address for your environment.\n- Transaction signing is not handled by this SDK; you must provide UTxOs and sign the transaction as appropriate for your application.\n","readmeFilename":"README.md"}