{"_id":"@angadie/chittie-transport-react-native","_rev":"8-5d6962c8729df118cf866f84c26671ff","name":"@angadie/chittie-transport-react-native","dist-tags":{"latest":"0.5.2"},"versions":{"0.1.0":{"name":"@angadie/chittie-transport-react-native","version":"0.1.0","license":"MIT","_id":"@angadie/chittie-transport-react-native@0.1.0","maintainers":[{"name":"octalpixel","email":"mithushancj@gmail.com"}],"dist":{"shasum":"b6b23fd9db26da1e15250f57656eb51816bd26aa","tarball":"https://registry.npmjs.org/@angadie/chittie-transport-react-native/-/chittie-transport-react-native-0.1.0.tgz","fileCount":5,"integrity":"sha512-9ZA6VLnTeKvYbCJq37p8Aa6m7n9WPg3RRLxby2B4oBxpoYn+N2Q7Wxbn1mxowwmKL17hwd1X+CcVaYtqdFloyQ==","signatures":[{"sig":"MEUCIQDBmw28sjhGVi6/Ht528Q7aukbKsErSOr1t9NE3vbxYsQIgOeGIxihBr4jhl5K4hilFzHpl8vz9/tv8hfc4XINluyU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13826},"type":"module","_from":"file:angadie-chittie-transport-react-native-0.1.0.tgz","types":"./dist/index.d.mts","exports":{".":{"types":"./dist/index.d.mts","import":"./dist/index.mjs"}},"scripts":{"test":"tsx spikes/rn-transport.spike.ts","build":"tsdown","typecheck":"tsc --noEmit"},"_npmUser":{"name":"octalpixel","email":"mithushancj@gmail.com"},"_resolved":"/private/var/folders/j5/7dkmn95d0_9b5fdnfsmpjs580000gn/T/8185862c426324dd2ffea22c3a2edc5c/angadie-chittie-transport-react-native-0.1.0.tgz","_integrity":"sha512-9ZA6VLnTeKvYbCJq37p8Aa6m7n9WPg3RRLxby2B4oBxpoYn+N2Q7Wxbn1mxowwmKL17hwd1X+CcVaYtqdFloyQ==","_npmVersion":"10.9.7","description":"Library-agnostic React Native / Expo transport for chittie. Bring any BLE/Classic/TCP library; we provide the adapter factory + MTU chunking.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"@angadie/chittie-transport":"0.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/chittie-transport-react-native_0.1.0_1782189720542_0.5292109342081419","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@angadie/chittie-transport-react-native","version":"0.1.1","license":"MIT","_id":"@angadie/chittie-transport-react-native@0.1.1","maintainers":[{"name":"octalpixel","email":"mithushancj@gmail.com"}],"dist":{"shasum":"1316a2ec4fccb2615ab1a9fc549e33ac9eac1d64","tarball":"https://registry.npmjs.org/@angadie/chittie-transport-react-native/-/chittie-transport-react-native-0.1.1.tgz","fileCount":5,"integrity":"sha512-VgqqZ9dfMqLawNBkg6Xoeq8F50xsRto9VKe5LDUzDjO8Wfe+4WxBvpPLDc8i4EtloZB+Dfijp/NL8Q49QoK0gA==","signatures":[{"sig":"MEYCIQC7TqSPsK/chLhkytGUV9K9nRNRm5FdfmNR3VHD75BVKQIhAPB7tjamILc/we8EIFnFJ1KJshP9kY/HT5n6dop3/khR","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13826},"type":"module","_from":"file:angadie-chittie-transport-react-native-0.1.1.tgz","types":"./dist/index.d.mts","exports":{".":{"types":"./dist/index.d.mts","import":"./dist/index.mjs"}},"scripts":{"test":"tsx spikes/rn-transport.spike.ts","build":"tsdown","typecheck":"tsc --noEmit"},"_npmUser":{"name":"octalpixel","email":"mithushancj@gmail.com"},"_resolved":"/private/var/folders/j5/7dkmn95d0_9b5fdnfsmpjs580000gn/T/e84d2a30272e3392f23929d9ba172ce0/angadie-chittie-transport-react-native-0.1.1.tgz","_integrity":"sha512-VgqqZ9dfMqLawNBkg6Xoeq8F50xsRto9VKe5LDUzDjO8Wfe+4WxBvpPLDc8i4EtloZB+Dfijp/NL8Q49QoK0gA==","_npmVersion":"10.9.7","description":"Library-agnostic React Native / Expo transport for chittie. Bring any BLE/Classic/TCP library; we provide the adapter factory + MTU chunking.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"@angadie/chittie-transport":"0.1.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/chittie-transport-react-native_0.1.1_1782190365841_0.4551169196927074","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@angadie/chittie-transport-react-native","version":"0.2.0","license":"MIT","_id":"@angadie/chittie-transport-react-native@0.2.0","maintainers":[{"name":"octalpixel","email":"mithushancj@gmail.com"}],"dist":{"shasum":"c271e3be21b459c669e3d52a6c8aad20797b52ca","tarball":"https://registry.npmjs.org/@angadie/chittie-transport-react-native/-/chittie-transport-react-native-0.2.0.tgz","fileCount":5,"integrity":"sha512-CJAuxtAiFqPYVcC2M1simIoBwqSfffSs/z/yzRWOw0cBOE7TsGw6qIlqQkFfbDicv0xb8erR8ESSUKYujoRh4g==","signatures":[{"sig":"MEUCIA5aaBxEIoav6lwRUlFhWJFLyCNnkeZRK/vBbPsEccBkAiEAkOm0BtcARyHe2Eub9sNDQXXp2bexBk/EgTTtF2pnFbU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13826},"type":"module","_from":"file:angadie-chittie-transport-react-native-0.2.0.tgz","types":"./dist/index.d.mts","exports":{".":{"types":"./dist/index.d.mts","import":"./dist/index.mjs"}},"scripts":{"test":"tsx spikes/rn-transport.spike.ts","build":"tsdown","typecheck":"tsc --noEmit"},"_npmUser":{"name":"octalpixel","email":"mithushancj@gmail.com"},"_resolved":"/private/var/folders/j5/7dkmn95d0_9b5fdnfsmpjs580000gn/T/1640bf25099cf209af7915a6ba3ee2b9/angadie-chittie-transport-react-native-0.2.0.tgz","_integrity":"sha512-CJAuxtAiFqPYVcC2M1simIoBwqSfffSs/z/yzRWOw0cBOE7TsGw6qIlqQkFfbDicv0xb8erR8ESSUKYujoRh4g==","_npmVersion":"10.9.7","description":"Library-agnostic React Native / Expo transport for chittie. Bring any BLE/Classic/TCP library; we provide the adapter factory + MTU chunking.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"@angadie/chittie-transport":"0.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/chittie-transport-react-native_0.2.0_1782192877966_0.01565361313455993","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@angadie/chittie-transport-react-native","version":"0.3.0","license":"MIT","_id":"@angadie/chittie-transport-react-native@0.3.0","maintainers":[{"name":"octalpixel","email":"mithushancj@gmail.com"}],"dist":{"shasum":"6c7789fdcbe6b4b8e42ccef25428c66a13385e93","tarball":"https://registry.npmjs.org/@angadie/chittie-transport-react-native/-/chittie-transport-react-native-0.3.0.tgz","fileCount":5,"integrity":"sha512-tVFvf3lEubueEFpxc5dTrC7q0/jwWX84K9gAawN9aRKV1nwdv4ndyZ/7mIJ6Y/w6rxusd+AjnQfeAzK+HveXbA==","signatures":[{"sig":"MEUCIBn9QjMj2gF+9dGIH5yBXaavPMW1v9RHxHkDgP0yV06NAiEA2vtzWmCd8C6jtX6bg57KD8qo3R9laRLD2dKAWTp/ysA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13826},"type":"module","_from":"file:angadie-chittie-transport-react-native-0.3.0.tgz","types":"./dist/index.d.mts","exports":{".":{"types":"./dist/index.d.mts","import":"./dist/index.mjs"}},"scripts":{"test":"tsx spikes/rn-transport.spike.ts","build":"tsdown","typecheck":"tsc --noEmit"},"_npmUser":{"name":"octalpixel","email":"mithushancj@gmail.com"},"_resolved":"/private/var/folders/j5/7dkmn95d0_9b5fdnfsmpjs580000gn/T/de3967e883001cbee7636fca0dc1b89b/angadie-chittie-transport-react-native-0.3.0.tgz","_integrity":"sha512-tVFvf3lEubueEFpxc5dTrC7q0/jwWX84K9gAawN9aRKV1nwdv4ndyZ/7mIJ6Y/w6rxusd+AjnQfeAzK+HveXbA==","_npmVersion":"10.9.7","description":"Library-agnostic React Native / Expo transport for chittie. Bring any BLE/Classic/TCP library; we provide the adapter factory + MTU chunking.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"@angadie/chittie-transport":"0.3.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/chittie-transport-react-native_0.3.0_1782238393764_0.02448035359746714","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@angadie/chittie-transport-react-native","version":"0.4.0","license":"MIT","_id":"@angadie/chittie-transport-react-native@0.4.0","maintainers":[{"name":"octalpixel","email":"mithushancj@gmail.com"}],"dist":{"shasum":"7ec17cb38fdea2014b51b8a7798511e6a0a7dbbd","tarball":"https://registry.npmjs.org/@angadie/chittie-transport-react-native/-/chittie-transport-react-native-0.4.0.tgz","fileCount":5,"integrity":"sha512-Zvd8hQwv3sEs1PMc5VXmCLcuLe4CvLChQK+bizLKnbZfJOw7zelbFRbYHkebTziUO3gc1bt/Kh2KIVT+r4BcUA==","signatures":[{"sig":"MEUCIQD0VLxx+z2t7w2R/tQqkGnaOoobBqN6z8ntTnErmJ4ubgIgJ77afufu7UF1aWgcFNU35KX4L5HYDiR+ItBLmL+IWzw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13826},"type":"module","_from":"file:angadie-chittie-transport-react-native-0.4.0.tgz","types":"./dist/index.d.mts","exports":{".":{"types":"./dist/index.d.mts","import":"./dist/index.mjs"}},"scripts":{"test":"tsx spikes/rn-transport.spike.ts","build":"tsdown","typecheck":"tsc --noEmit"},"_npmUser":{"name":"octalpixel","email":"mithushancj@gmail.com"},"_resolved":"/private/var/folders/j5/7dkmn95d0_9b5fdnfsmpjs580000gn/T/3e71101e49f8c3bfe61ecf6427808637/angadie-chittie-transport-react-native-0.4.0.tgz","_integrity":"sha512-Zvd8hQwv3sEs1PMc5VXmCLcuLe4CvLChQK+bizLKnbZfJOw7zelbFRbYHkebTziUO3gc1bt/Kh2KIVT+r4BcUA==","_npmVersion":"10.9.7","description":"Library-agnostic React Native / Expo transport for chittie. Bring any BLE/Classic/TCP library; we provide the adapter factory + MTU chunking.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"@angadie/chittie-transport":"0.4.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/chittie-transport-react-native_0.4.0_1782239451070_0.27708134468953727","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@angadie/chittie-transport-react-native","version":"0.5.0","license":"MIT","_id":"@angadie/chittie-transport-react-native@0.5.0","maintainers":[{"name":"octalpixel","email":"mithushancj@gmail.com"}],"dist":{"shasum":"53cd9ec30d887268bf6f6d50239fd06d1586c392","tarball":"https://registry.npmjs.org/@angadie/chittie-transport-react-native/-/chittie-transport-react-native-0.5.0.tgz","fileCount":5,"integrity":"sha512-Z5xwdrBy2t4+4dh6GUfbnySikHh7mbbXNunnFb4exazlYI9RwlnUMQr/vtbNhn57FGJPl1nz93pkIj+IOlIwBw==","signatures":[{"sig":"MEYCIQC2FSAJxV2UINn2kSwjfm2PbKEZw2BaM9GGQ0JIX3ep0wIhAMh4JDy4SmK2p3k31nlK/xXg91ohpcljXqobR+/rl4k1","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13826},"type":"module","_from":"file:angadie-chittie-transport-react-native-0.5.0.tgz","types":"./dist/index.d.mts","exports":{".":{"types":"./dist/index.d.mts","import":"./dist/index.mjs"}},"scripts":{"test":"tsx spikes/rn-transport.spike.ts","build":"tsdown","typecheck":"tsc --noEmit"},"_npmUser":{"name":"octalpixel","email":"mithushancj@gmail.com"},"_resolved":"/private/var/folders/j5/7dkmn95d0_9b5fdnfsmpjs580000gn/T/fd0a2aeb72efdd32fb14c5763cd6e02d/angadie-chittie-transport-react-native-0.5.0.tgz","_integrity":"sha512-Z5xwdrBy2t4+4dh6GUfbnySikHh7mbbXNunnFb4exazlYI9RwlnUMQr/vtbNhn57FGJPl1nz93pkIj+IOlIwBw==","_npmVersion":"10.9.7","description":"Library-agnostic React Native / Expo transport for chittie. Bring any BLE/Classic/TCP library; we provide the adapter factory + MTU chunking.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"@angadie/chittie-transport":"0.5.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/chittie-transport-react-native_0.5.0_1782240870528_0.8773887937009821","host":"s3://npm-registry-packages-npm-production"}},"0.5.1":{"name":"@angadie/chittie-transport-react-native","version":"0.5.1","license":"MIT","_id":"@angadie/chittie-transport-react-native@0.5.1","maintainers":[{"name":"octalpixel","email":"mithushancj@gmail.com"}],"dist":{"shasum":"d0b571e5ceabe0e5fa36512bbdee2f7d5a26ff86","tarball":"https://registry.npmjs.org/@angadie/chittie-transport-react-native/-/chittie-transport-react-native-0.5.1.tgz","fileCount":5,"integrity":"sha512-/C0nG9PqIJUXcVFu6xL/PXW5my5TqXR7GaFQIhACrPS/AWhG55MvotvokWKhzmJFoyRR6bMVJFGaHrlOe2npEw==","signatures":[{"sig":"MEQCIEw6vFlLfF3k2aUgOgLdNMWI0SzG4rKuSKpYTuIdvZUZAiB7cU+G4D1DjGxncQILipRKJWaISxhgBPqfSb2DMAIosg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13826},"type":"module","_from":"file:angadie-chittie-transport-react-native-0.5.1.tgz","types":"./dist/index.d.mts","exports":{".":{"types":"./dist/index.d.mts","import":"./dist/index.mjs"}},"scripts":{"test":"tsx spikes/rn-transport.spike.ts","build":"tsdown","typecheck":"tsc --noEmit"},"_npmUser":{"name":"octalpixel","email":"mithushancj@gmail.com"},"_resolved":"/private/var/folders/j5/7dkmn95d0_9b5fdnfsmpjs580000gn/T/f0ab170e4486b78e31565caa5509077f/angadie-chittie-transport-react-native-0.5.1.tgz","_integrity":"sha512-/C0nG9PqIJUXcVFu6xL/PXW5my5TqXR7GaFQIhACrPS/AWhG55MvotvokWKhzmJFoyRR6bMVJFGaHrlOe2npEw==","_npmVersion":"10.9.7","description":"Library-agnostic React Native / Expo transport for chittie. Bring any BLE/Classic/TCP library; we provide the adapter factory + MTU chunking.","directories":{},"_nodeVersion":"22.22.2","dependencies":{"@angadie/chittie-transport":"0.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/chittie-transport-react-native_0.5.1_1782372101585_0.4340576938942309","host":"s3://npm-registry-packages-npm-production"}},"0.5.2":{"name":"@angadie/chittie-transport-react-native","version":"0.5.2","description":"Library-agnostic React Native / Expo transport for chittie. Bring any BLE/Classic/TCP library; we provide the adapter factory + MTU chunking.","license":"MIT","type":"module","types":"./dist/index.d.mts","exports":{".":{"types":"./dist/index.d.mts","import":"./dist/index.mjs","default":"./dist/index.mjs"}},"dependencies":{"@angadie/chittie-transport":"0.6.1"},"publishConfig":{"access":"public"},"scripts":{"build":"tsdown","typecheck":"tsc --noEmit","test":"tsx spikes/rn-transport.spike.ts"},"_id":"@angadie/chittie-transport-react-native@0.5.2","_integrity":"sha512-hZqZQNsepFAF/LyUo8cxbehDOKmunq4ZhpZpVILHioRWjZPv3JJ9UnJDSTzUfXx5+7dLJqUJD5VZU4UwipaQUw==","_resolved":"/private/var/folders/j5/7dkmn95d0_9b5fdnfsmpjs580000gn/T/556ec015d404ae16af4e3637da54766e/angadie-chittie-transport-react-native-0.5.2.tgz","_from":"file:angadie-chittie-transport-react-native-0.5.2.tgz","_nodeVersion":"22.22.2","_npmVersion":"10.9.7","dist":{"integrity":"sha512-hZqZQNsepFAF/LyUo8cxbehDOKmunq4ZhpZpVILHioRWjZPv3JJ9UnJDSTzUfXx5+7dLJqUJD5VZU4UwipaQUw==","shasum":"88955fcba592e47a8652ff73650830c225907140","tarball":"https://registry.npmjs.org/@angadie/chittie-transport-react-native/-/chittie-transport-react-native-0.5.2.tgz","fileCount":5,"unpackedSize":13863,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDdor6ApkVFZHYqEhy1uuK1BLaMeqa8fPDdmLR5awjquAIgTDAWT+B8bGveL2V5qLdQlEcxQWE9ZQek7WHx4bXJkJY="}]},"_npmUser":{"name":"octalpixel","email":"mithushancj@gmail.com"},"directories":{},"maintainers":[{"name":"octalpixel","email":"mithushancj@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/chittie-transport-react-native_0.5.2_1782463006186_0.06962666828715847"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-23T04:42:00.321Z","modified":"2026-06-26T08:36:46.427Z","0.1.0":"2026-06-23T04:42:00.679Z","0.1.1":"2026-06-23T04:52:45.981Z","0.2.0":"2026-06-23T05:34:38.087Z","0.3.0":"2026-06-23T18:13:13.904Z","0.4.0":"2026-06-23T18:30:51.207Z","0.5.0":"2026-06-23T18:54:30.670Z","0.5.1":"2026-06-25T07:21:41.722Z","0.5.2":"2026-06-26T08:36:46.313Z"},"license":"MIT","description":"Library-agnostic React Native / Expo transport for chittie. Bring any BLE/Classic/TCP library; we provide the adapter factory + MTU chunking.","maintainers":[{"name":"octalpixel","email":"mithushancj@gmail.com"}],"readme":"# @angadie/chittie-transport-react-native\n\nLibrary-agnostic React Native / Expo transport for chittie. **Bring any** BLE, Classic Bluetooth, TCP, or device-built-in printer library — chittie only needs your `write()`. MTU chunking and byte-encoding helpers are provided so wiring any library is a one-liner.\n\n## Install\n\n```bash\npnpm add @angadie/chittie-transport-react-native @angadie/chittie-transport\n```\n\n## Choosing a Bluetooth library (the important part)\n\n**iOS supports BLE (GATT) only — not Classic Bluetooth SPP** (without MFi certification). Most cheap thermal printers are Classic-SPP and therefore **Android-only**. For an app that runs on **both iOS and Android, target BLE printers** and use a cross-platform BLE library:\n\n| Library | Platforms | `write` value type | Notes |\n|---|---|---|---|\n| **react-native-ble-plx** | iOS + Android | **base64 string** | Most popular/maintained. Use `toBase64()`. |\n| **react-native-ble-manager** | iOS + Android | **`number[]`** | Library-side chunking via `maxByteSize`. Use `toByteArray()`. |\n| react-native-bluetooth-classic | **Android-only** in practice | `Buffer` | Classic SPP; iOS needs MFi. |\n| react-native-tcp-socket | iOS + Android | `Uint8Array` directly | Network/Wi-Fi printers (port 9100), not Bluetooth. |\n\n**BLE restrictions to plan for:**\n- **MTU / write size.** Default BLE write is ~20 bytes (ATT MTU 23). iOS negotiates a larger MTU automatically; **on Android you must call the library's `requestMTU(512)`** after connecting, or keep `chunkSize` small. `createBleTransport` chunks at **180** by default with a 20 ms inter-chunk delay.\n- **Use write-without-response** for print streams — it's markedly faster (printers don't ACK).\n- The printer's write **characteristic must support** `WRITE` or `WRITE_WITHOUT_RESPONSE`.\n- **Permissions:** iOS needs `NSBluetoothAlwaysUsageDescription`; Android 12+ needs `BLUETOOTH_SCAN` + `BLUETOOTH_CONNECT` runtime permissions.\n- **Expo:** these are native modules — you need a **dev/prebuild client** (config plugin), not Expo Go.\n\n## Encoding helpers\n\n`write(data)` hands you a `Uint8Array`. These pure (Buffer-free) helpers convert it to what each library wants:\n\n```ts\nimport { toBase64, toByteArray } from '@angadie/chittie-transport-react-native';\ntoBase64(bytes);    // string  → react-native-ble-plx, bluetooth-classic, Sunmi/iMin sendRAWData\ntoByteArray(bytes); // number[] → react-native-ble-manager\n```\n\n## Wiring — react-native-ble-plx (iOS + Android)\n\n```ts\nimport { print } from '@angadie/chittie-transport';\nimport { createBleTransport, toBase64 } from '@angadie/chittie-transport-react-native';\n\nawait device.requestMTU(512); // Android; iOS is automatic\nconst transport = createBleTransport(\n  (bytes) => manager.writeCharacteristicWithoutResponseForDevice(device.id, SERVICE, CHAR, toBase64(bytes)).then(() => {}),\n  { connect: () => device.connect().then(() => {}) }\n);\nawait print(transport, bytes);\n```\n\n## Wiring — react-native-ble-manager (iOS + Android)\n\n```ts\nimport { createBleTransport, toByteArray } from '@angadie/chittie-transport-react-native';\n\nconst transport = createBleTransport((bytes) =>\n  BleManager.writeWithoutResponse(peripheralId, SERVICE, CHAR, toByteArray(bytes), 512)\n);\n```\n\n## Other backends\n\n- **Network (Wi-Fi/LAN, both platforms):** `react-native-tcp-socket` — `socket.write(bytes)` takes a `Uint8Array` directly (no helper). Use `createTransport`.\n- **Built-in printers (Sunmi, iMin):** see the dedicated section below.\n- **Epson via `react-native-esc-pos-printer`:** exposes `addCommand(Uint8Array)` — can serve as a transport for chittie bytes.\n\n## Built-in printers — Sunmi & iMin (Android POS devices)\n\nThese print through an on-device **service** (Sunmi AIDL `IWoyouService`, iMin SDK), **not** Bluetooth or network — so there's no scan/connect; you init the device's printer and push bytes. **Android-only.**\n\n**They accept standard ESC/POS via `sendRAWData`** — Sunmi's docs state it \"supports ESC/POS instruction sets\" (a documented *subset*), and you can send \"already prepared ESC/POS commands.\" So drive the receipt **body** (text, alignment, rules) with chittie:\n\n```ts\n// iMin — sendRAWData takes number[]\nimport { createTransport, toByteArray, toHex } from '@angadie/chittie-transport-react-native';\nconst transport = createTransport({ write: (b) => PrinterImin.sendRAWData(toByteArray(b)) });\n//                      …or the hex sink: write: (b) => PrinterImin.sendRAWDataHexStr(toHex(b))\n\n// Sunmi — wrapper-dependent; common wrappers take a base64 string\nconst transport = createTransport({ write: (b) => SunmiPrinter.sendRAWData(toBase64(b)) });\n```\n\n**Use the device SDK's own methods for cut, QR, and images** — not because the dialect is non-standard, but because:\n- **Cut** is a dedicated call (`cutPaper()` / iMin `fullCut`/`partialCut`) and needs a **hardware cutter** — many handhelds have none, so raw `GS V` does nothing.\n- **Images** go through the SDK's **Bitmap** API (`printBitmap` / iMin `printSingleBitmap`), not guaranteed via chittie's raster bytes.\n- **QR** has a dedicated call (`printQRCode` / `printQrCode`); raw `GS ( k` isn't guaranteed in the subset.\n\nSo: chittie builds the text body → `sendRAWData`; call the SDK for the cut, a QR, or a logo bitmap.\n\n## API\n\n```ts\ncreateTransport(adapter: { connect?; write(Uint8Array); disconnect? }, options?): Transport\ncreateBleTransport(write, options?): Transport   // chunkSize 180, chunkDelayMs 20 defaults\ntoBase64(Uint8Array): string      // ble-plx, bluetooth-classic, Sunmi sendRAWData (wrappers that take base64)\ntoByteArray(Uint8Array): number[] // ble-manager, iMin sendRAWData\ntoHex(Uint8Array): string         // iMin sendRAWDataHexStr, Classic-BT hex\nBLE_DEFAULT_CHUNK: 180\n```\n\n## License\n\nMIT.\n","readmeFilename":"README.md"}