{"_id":"@anyline/tire-tread-react-native-module","_rev":"10-610cda18903372f9ecc4ec73758d410a","name":"@anyline/tire-tread-react-native-module","dist-tags":{"latest":"15.5.0"},"versions":{"0.7.0":{"name":"@anyline/tire-tread-react-native-module","version":"0.7.0","keywords":["react-native","ios","android","anyline","tire","tread","scanner","tire-tread","depth-measurement","computer-vision"],"author":{"url":"https://anyline.com","name":"Anyline GmbH"},"license":"SEE LICENSE IN LICENSE.md","_id":"@anyline/tire-tread-react-native-module@0.7.0","maintainers":[{"name":"danielalbertini","email":"daniel@anyline.io"},{"name":"david.dengg","email":"david@anyline.com"},{"name":"adam-anyline","email":"adam.zielinski@anyline.com"},{"name":"balazs_anyline","email":"balazs@anyline.com"},{"name":"berndkamplanyline","email":"bernd.kampl@anyline.com"},{"name":"cloudio-anyline","email":"cloudio@anyline.com"},{"name":"igor.graca_anyline","email":"igor.graca@anyline.com"},{"name":"ricardo.colombo.oliveira_anyline","email":"ricardo.oliveira@anyline.com"}],"homepage":"https://github.com/Anyline/anyline-tiretread-react-native#readme","bugs":{"url":"https://github.com/Anyline/anyline-tiretread-react-native/issues"},"dist":{"shasum":"630e2f66c568cdad01a6c16b216ba1aab181909a","tarball":"https://registry.npmjs.org/@anyline/tire-tread-react-native-module/-/tire-tread-react-native-module-0.7.0.tgz","fileCount":92,"integrity":"sha512-5pEBsUS3kDI+sfuuj/9UQJcjt9E+Wnk2VzJMUh83LDRg2Cwy/JuWItUlhwwc8N/bJLgT90v/MP8KdN7hWgUAzw==","signatures":[{"sig":"MEYCIQCH6RD7LGsX39yH8D7WIsay5UEpb97ZvZti99MPE85LCgIhAM0ELF+20VpykQWZ0KiSLXM0fRRpwhprE5WuDl7U5AmO","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":123462},"jest":{"preset":"react-native","modulePathIgnorePatterns":["<rootDir>/example/node_modules","<rootDir>/lib/"]},"main":"lib/commonjs/index","types":"lib/typescript/src/index.d.ts","module":"lib/module/index","source":"src/index","engines":{"node":">=18"},"gitHead":"4c2444cb94e91fe0bcda21b7b466a0439ed5c152","scripts":{"lint":"eslint \"**/*.{js,ts,tsx}\"","test":"jest","clean":"del-cli android/build example/android/build example/android/app/build example/ios/build lib","prepack":"bob build","typecheck":"tsc --noEmit","release:publish":"node ./scripts/publish-npm.mjs","release:publish:check":"npm run typecheck && npm pack --dry-run"},"_npmUser":{"name":"balazs_anyline","email":"balazs@anyline.com"},"prettier":{"useTabs":false,"tabWidth":2,"quoteProps":"consistent","singleQuote":true,"trailingComma":"es5"},"repository":{"url":"git+https://github.com/Anyline/anyline-tiretread-react-native.git","type":"git"},"_npmVersion":"10.9.4","description":"React Native SDK for Anyline Tire Tread scanning and depth measurement","directories":{},"resolutions":{"@types/react":"^18.2.44"},"_nodeVersion":"22.22.1","eslintConfig":{"root":true,"rules":{"prettier/prettier":["error",{"useTabs":false,"tabWidth":2,"quoteProps":"consistent","singleQuote":true,"trailingComma":"es5"}]},"extends":["@react-native","prettier"]},"eslintIgnore":["node_modules/","lib/","src/generated/","android/build/"],"react-native":"src/index","codegenConfig":{"ios":{"modulesProvider":{"AnylineTtrMobileWrapperReactNative":"AnylineTtrMobileWrapperReactNative"}},"name":"AnylineTtrMobileWrapperReactNativeSpec","type":"modules","android":{"javaPackageName":"com.anyline.ttr.reactnative"},"jsSrcsDir":"src/specs"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","react":"^18.3.1","turbo":"^1.10.7","eslint":"^8.51.0","del-cli":"^5.1.0","prettier":"^3.0.3","typescript":"^5.2.2","@types/jest":"^29.5.5","@types/react":"^18.2.44","react-native":"^0.75.5","@expo/config-plugins":"^9.0.0","eslint-config-prettier":"^9.0.0","eslint-plugin-prettier":"^5.0.1","react-native-builder-bob":"^0.23.2","@react-native/eslint-config":"^0.73.1"},"peerDependencies":{"expo":">=50.0.0","react":"*","react-native":">=0.75"},"peerDependenciesMeta":{"expo":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/tire-tread-react-native-module_0.7.0_1773858479616_0.32286240985407777","host":"s3://npm-registry-packages-npm-production"},"react-native-builder-bob":{"output":"lib","source":"src","targets":["commonjs","module",["typescript",{"project":"tsconfig.build.json"}]]}},"1.0.0":{"name":"@anyline/tire-tread-react-native-module","version":"1.0.0","keywords":["react-native","ios","android","anyline","tire","tread","scanner","tire-tread","depth-measurement","computer-vision"],"author":{"url":"https://anyline.com","name":"Anyline GmbH"},"license":"SEE LICENSE IN LICENSE.md","_id":"@anyline/tire-tread-react-native-module@1.0.0","maintainers":[{"name":"danielalbertini","email":"daniel@anyline.io"},{"name":"david.dengg","email":"david@anyline.com"},{"name":"adam-anyline","email":"adam.zielinski@anyline.com"},{"name":"balazs_anyline","email":"balazs@anyline.com"},{"name":"berndkamplanyline","email":"bernd.kampl@anyline.com"},{"name":"cloudio-anyline","email":"cloudio@anyline.com"},{"name":"igor.graca_anyline","email":"igor.graca@anyline.com"},{"name":"ricardo.colombo.oliveira_anyline","email":"ricardo.oliveira@anyline.com"}],"homepage":"https://github.com/Anyline/anyline-tiretread-react-native#readme","bugs":{"url":"https://github.com/Anyline/anyline-tiretread-react-native/issues"},"dist":{"shasum":"3e513088a2a36ad5fd7a806f116cef6ea680fb5d","tarball":"https://registry.npmjs.org/@anyline/tire-tread-react-native-module/-/tire-tread-react-native-module-1.0.0.tgz","fileCount":93,"integrity":"sha512-aKUbT7LMYUFp/R0t9QHolDCXjAc8DkImhaNNvhLNkHDFR6KTPGelDtyMYWOu0NLakZF4Ea/xVBpFkjy3DRKcpQ==","signatures":[{"sig":"MEQCIEyI07QSVOj3m6jVCMR43IR32FwRO8nBMS8WcCdUrFR2AiAo9p4SogQh/cuAhSH3iA6FOTubFou1c9Jk0e5kqu5igQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":124734},"jest":{"preset":"react-native","modulePathIgnorePatterns":["<rootDir>/example/node_modules","<rootDir>/lib/"]},"main":"lib/commonjs/index","types":"lib/typescript/src/index.d.ts","module":"lib/module/index","source":"src/index","engines":{"node":">=18"},"gitHead":"828bb2262ef6a410a2e2b1c7797e9c1c74750d0a","scripts":{"lint":"eslint \"**/*.{js,ts,tsx}\"","test":"jest","clean":"del-cli android/build example/android/build example/android/app/build example/ios/build lib","prepack":"bob build","typecheck":"tsc --noEmit","release:publish":"node ./scripts/publish-npm.mjs","release:publish:check":"npm run typecheck && npm pack --dry-run"},"_npmUser":{"name":"balazs_anyline","email":"balazs@anyline.com"},"prettier":{"useTabs":false,"tabWidth":2,"quoteProps":"consistent","singleQuote":true,"trailingComma":"es5"},"repository":{"url":"git+https://github.com/Anyline/anyline-tiretread-react-native.git","type":"git"},"_npmVersion":"10.9.7","description":"React Native SDK for Anyline Tire Tread scanning and depth measurement","directories":{},"resolutions":{"@types/react":"^18.2.44"},"_nodeVersion":"22.22.2","eslintConfig":{"root":true,"rules":{"prettier/prettier":["error",{"useTabs":false,"tabWidth":2,"quoteProps":"consistent","singleQuote":true,"trailingComma":"es5"}]},"extends":["@react-native","prettier"]},"eslintIgnore":["node_modules/","lib/","src/generated/","android/build/"],"react-native":"src/index","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","react":"^18.3.1","turbo":"^1.10.7","eslint":"^8.51.0","del-cli":"^5.1.0","prettier":"^3.0.3","typescript":"^5.2.2","@types/jest":"^29.5.5","@types/react":"^18.2.44","react-native":"^0.75.5","@expo/config-plugins":"^9.0.0","eslint-config-prettier":"^9.0.0","eslint-plugin-prettier":"^5.0.1","react-native-builder-bob":"^0.23.2","@react-native/eslint-config":"^0.73.1"},"peerDependencies":{"expo":">=50.0.0","react":"*","react-native":">=0.75"},"peerDependenciesMeta":{"expo":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/tire-tread-react-native-module_1.0.0_1774458713941_0.4925877645143226","host":"s3://npm-registry-packages-npm-production"},"react-native-builder-bob":{"output":"lib","source":"src","targets":["commonjs","module",["typescript",{"project":"tsconfig.build.json"}]]}},"15.1.0":{"name":"@anyline/tire-tread-react-native-module","version":"15.1.0","keywords":["react-native","ios","android","anyline","tire","tread","scanner","tire-tread","depth-measurement","computer-vision"],"author":{"url":"https://anyline.com","name":"Anyline GmbH"},"license":"SEE LICENSE IN LICENSE.md","_id":"@anyline/tire-tread-react-native-module@15.1.0","maintainers":[{"name":"danielalbertini","email":"daniel@anyline.io"},{"name":"david.dengg","email":"david@anyline.com"},{"name":"adam-anyline","email":"adam.zielinski@anyline.com"},{"name":"balazs_anyline","email":"balazs@anyline.com"},{"name":"berndkamplanyline","email":"bernd.kampl@anyline.com"},{"name":"cloudio-anyline","email":"cloudio@anyline.com"},{"name":"igor.graca_anyline","email":"igor.graca@anyline.com"},{"name":"ricardo.colombo.oliveira_anyline","email":"ricardo.oliveira@anyline.com"}],"homepage":"https://github.com/Anyline/anyline-tiretread-react-native#readme","bugs":{"url":"https://github.com/Anyline/anyline-tiretread-react-native/issues"},"dist":{"shasum":"25d45379bb2a0ffb8dfec3cdd24effd0d41a6276","tarball":"https://registry.npmjs.org/@anyline/tire-tread-react-native-module/-/tire-tread-react-native-module-15.1.0.tgz","fileCount":93,"integrity":"sha512-Akd28sVV1W+9UIVhNdEpCw4A89ewgrdCmUkPhkAnlGwXZurREWWVeXsUVPt4tgmGiG0YBDZx9uhrININkMdjpA==","signatures":[{"sig":"MEUCIAkPXgKt7PUfx+sbUeiE+BZj6ZTjMyEMEalpfT2fPglDAiEA8XUjCbwtmwUMwd3Kc1MzrfPI+p+09uMvxffQdDQrSHI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":127602},"jest":{"preset":"react-native","modulePathIgnorePatterns":["<rootDir>/example/node_modules","<rootDir>/lib/"]},"main":"lib/commonjs/index","types":"lib/typescript/src/index.d.ts","module":"lib/module/index","source":"src/index","engines":{"node":">=18"},"gitHead":"414051994903d9ab4f2146b380ec015cb9eea30a","scripts":{"lint":"eslint \"**/*.{js,ts,tsx}\"","test":"jest","clean":"del-cli android/build example/android/build example/android/app/build example/ios/build lib","prepack":"bob build","typecheck":"tsc --noEmit","release:publish":"node ./scripts/publish-npm.mjs","release:publish:check":"npm run typecheck && npm pack --dry-run"},"_npmUser":{"name":"balazs_anyline","email":"balazs@anyline.com"},"prettier":{"useTabs":false,"tabWidth":2,"quoteProps":"consistent","singleQuote":true,"trailingComma":"es5"},"repository":{"url":"git+https://github.com/Anyline/anyline-tiretread-react-native.git","type":"git"},"_npmVersion":"10.9.8","description":"React Native SDK for Anyline Tire Tread scanning and depth measurement","directories":{},"resolutions":{"@types/react":"^18.2.44"},"_nodeVersion":"22.22.3","eslintConfig":{"root":true,"rules":{"prettier/prettier":["error",{"useTabs":false,"tabWidth":2,"quoteProps":"consistent","singleQuote":true,"trailingComma":"es5"}]},"extends":["@react-native","prettier"]},"eslintIgnore":["node_modules/","lib/","src/generated/","android/build/"],"react-native":"src/index","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","react":"^18.3.1","turbo":"^1.10.7","eslint":"^8.51.0","del-cli":"^5.1.0","prettier":"^3.0.3","typescript":"^5.2.2","@types/jest":"^29.5.5","@types/react":"^18.2.44","react-native":"^0.75.5","@expo/config-plugins":"^9.0.0","eslint-config-prettier":"^9.0.0","eslint-plugin-prettier":"^5.0.1","react-native-builder-bob":"^0.23.2","@react-native/eslint-config":"^0.73.1"},"peerDependencies":{"expo":">=50.0.0","react":"*","react-native":">=0.75"},"peerDependenciesMeta":{"expo":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/tire-tread-react-native-module_15.1.0_1781525412268_0.2917786571247736","host":"s3://npm-registry-packages-npm-production"},"react-native-builder-bob":{"output":"lib","source":"src","targets":["commonjs","module",["typescript",{"project":"tsconfig.build.json"}]]}},"15.3.0":{"name":"@anyline/tire-tread-react-native-module","version":"15.3.0","keywords":["react-native","ios","android","anyline","tire","tread","scanner","tire-tread","depth-measurement","computer-vision"],"author":{"url":"https://anyline.com","name":"Anyline GmbH"},"license":"SEE LICENSE IN LICENSE.md","_id":"@anyline/tire-tread-react-native-module@15.3.0","maintainers":[{"name":"danielalbertini","email":"daniel@anyline.io"},{"name":"david.dengg","email":"david@anyline.com"},{"name":"adam-anyline","email":"adam.zielinski@anyline.com"},{"name":"balazs_anyline","email":"balazs@anyline.com"},{"name":"berndkamplanyline","email":"bernd.kampl@anyline.com"},{"name":"cloudio-anyline","email":"cloudio@anyline.com"},{"name":"igor.graca_anyline","email":"igor.graca@anyline.com"},{"name":"ricardo.colombo.oliveira_anyline","email":"ricardo.oliveira@anyline.com"}],"homepage":"https://github.com/Anyline/anyline-tiretread-react-native#readme","bugs":{"url":"https://github.com/Anyline/anyline-tiretread-react-native/issues"},"dist":{"shasum":"2cde896b378fd368cf0fa8657bb8322ad9510dc9","tarball":"https://registry.npmjs.org/@anyline/tire-tread-react-native-module/-/tire-tread-react-native-module-15.3.0.tgz","fileCount":101,"integrity":"sha512-TUlvl5nuR2PEDpJmY3vh56Y7rlUQ5Ud/ybq3DCPIcv2W0ng6Ppc70LZTRDEc6RUFaCPWR3n4fknZTZi3V9nAqw==","signatures":[{"sig":"MEUCIQCpeodB89ZiB5Y0I3TDPVeN4KmxLGnYI1K/2tnOazxG/AIgGOA/bERaaG2TGXGc5p/U1cqJ/wJs8ca9t9vBCVvyYlw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@anyline%2ftire-tread-react-native-module@15.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":166588},"jest":{"preset":"react-native","modulePathIgnorePatterns":["<rootDir>/example/node_modules","<rootDir>/lib/"]},"main":"lib/commonjs/index","types":"lib/typescript/src/index.d.ts","module":"lib/module/index","source":"src/index","engines":{"node":">=18"},"gitHead":"420975357a81587027c7b7b011656949aa80046e","scripts":{"lint":"eslint \"**/*.{js,ts,tsx}\"","test":"jest","clean":"del-cli android/build example/android/build example/android/app/build example/ios/build lib","prepack":"bob build","typecheck":"tsc --noEmit","release:publish":"node ./scripts/publish-npm.mjs","release:publish:check":"npm run typecheck && npm pack --dry-run"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:369681cd-23c4-4120-9951-c88cb6698ce8"}},"prettier":{"useTabs":false,"tabWidth":2,"quoteProps":"consistent","singleQuote":true,"trailingComma":"es5"},"repository":{"url":"git+https://github.com/Anyline/anyline-tiretread-react-native.git","type":"git"},"_npmVersion":"11.18.0","description":"React Native SDK for Anyline Tire Tread scanning and depth measurement","directories":{},"resolutions":{"@types/react":"^18.2.44"},"_nodeVersion":"22.23.1","eslintConfig":{"root":true,"rules":{"prettier/prettier":["error",{"useTabs":false,"tabWidth":2,"quoteProps":"consistent","singleQuote":true,"trailingComma":"es5"}]},"extends":["@react-native","prettier"]},"eslintIgnore":["node_modules/","lib/","src/generated/","android/build/"],"react-native":"src/index","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","react":"^18.3.1","turbo":"^1.10.7","eslint":"^8.51.0","del-cli":"^5.1.0","prettier":"^3.0.3","typescript":"^5.2.2","@types/jest":"^29.5.5","@types/react":"^18.2.44","react-native":"^0.75.5","@expo/config-plugins":"^9.0.0","eslint-config-prettier":"^9.0.0","eslint-plugin-prettier":"^5.0.1","react-native-builder-bob":"^0.23.2","@react-native/eslint-config":"^0.73.1"},"peerDependencies":{"expo":">=50.0.0","react":"*","react-native":">=0.75"},"peerDependenciesMeta":{"expo":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/tire-tread-react-native-module_15.3.0_1783606612250_0.4709579152312007","host":"s3://npm-registry-packages-npm-production"},"react-native-builder-bob":{"output":"lib","source":"src","targets":["commonjs","module",["typescript",{"project":"tsconfig.build.json"}]]}},"15.3.2":{"name":"@anyline/tire-tread-react-native-module","version":"15.3.2","keywords":["react-native","ios","android","anyline","tire","tread","scanner","tire-tread","depth-measurement","computer-vision"],"author":{"url":"https://anyline.com","name":"Anyline GmbH"},"license":"SEE LICENSE IN LICENSE.md","_id":"@anyline/tire-tread-react-native-module@15.3.2","maintainers":[{"name":"danielalbertini","email":"daniel@anyline.io"},{"name":"david.dengg","email":"david@anyline.com"},{"name":"adam-anyline","email":"adam.zielinski@anyline.com"},{"name":"balazs_anyline","email":"balazs@anyline.com"},{"name":"berndkamplanyline","email":"bernd.kampl@anyline.com"},{"name":"cloudio-anyline","email":"cloudio@anyline.com"},{"name":"igor.graca_anyline","email":"igor.graca@anyline.com"},{"name":"ricardo.colombo.oliveira_anyline","email":"ricardo.oliveira@anyline.com"}],"homepage":"https://github.com/Anyline/anyline-tiretread-react-native#readme","bugs":{"url":"https://github.com/Anyline/anyline-tiretread-react-native/issues"},"dist":{"shasum":"62276300c7aa110ed9d25023cc3e37754421d929","tarball":"https://registry.npmjs.org/@anyline/tire-tread-react-native-module/-/tire-tread-react-native-module-15.3.2.tgz","fileCount":101,"integrity":"sha512-FauV5eyxIkVPU9usypowq9INZCnF8xGwLiI0wwoDXUvki0tOUKZCx6CtvC+xxxx1SCUwL5GIBHov0hr9DM3DCw==","signatures":[{"sig":"MEUCIAF4DW2USsaPNNnqJxaWISXxaJpkPYF0eYmsWf4Pix5tAiEAj8twMqX3QDDAzBL4vLkv5IC8MHPYCSSu7q3/i5p2d2Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@anyline%2ftire-tread-react-native-module@15.3.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":167647},"jest":{"preset":"react-native","modulePathIgnorePatterns":["<rootDir>/example/node_modules","<rootDir>/lib/"]},"main":"lib/commonjs/index","types":"lib/typescript/src/index.d.ts","module":"lib/module/index","source":"src/index","engines":{"node":">=18"},"gitHead":"1b8b397d86f943f41dbf8c68315ef064144b48ce","scripts":{"lint":"eslint \"**/*.{js,ts,tsx}\"","test":"jest","clean":"del-cli android/build example/android/build example/android/app/build example/ios/build lib","prepack":"bob build","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:369681cd-23c4-4120-9951-c88cb6698ce8"}},"prettier":{"useTabs":false,"tabWidth":2,"quoteProps":"consistent","singleQuote":true,"trailingComma":"es5"},"repository":{"url":"git+https://github.com/Anyline/anyline-tiretread-react-native.git","type":"git"},"_npmVersion":"11.18.0","description":"React Native SDK for Anyline Tire Tread scanning and depth measurement","directories":{},"resolutions":{"@types/react":"^18.2.44"},"_nodeVersion":"22.23.1","eslintConfig":{"root":true,"rules":{"prettier/prettier":["error",{"useTabs":false,"tabWidth":2,"quoteProps":"consistent","singleQuote":true,"trailingComma":"es5"}]},"extends":["@react-native","prettier"]},"eslintIgnore":["node_modules/","lib/","src/generated/","android/build/"],"react-native":"src/index","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","react":"^18.3.1","turbo":"^1.10.7","eslint":"^8.51.0","del-cli":"^5.1.0","prettier":"^3.0.3","typescript":"^5.2.2","@types/jest":"^29.5.5","@types/react":"^18.2.44","react-native":"^0.75.5","@expo/config-plugins":"^9.0.0","eslint-config-prettier":"^9.0.0","eslint-plugin-prettier":"^5.0.1","react-native-builder-bob":"^0.23.2","@react-native/eslint-config":"^0.73.1"},"peerDependencies":{"expo":">=50.0.0","react":"*","react-native":">=0.75"},"peerDependenciesMeta":{"expo":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/tire-tread-react-native-module_15.3.2_1784275529798_0.24358532190639526","host":"s3://npm-registry-packages-npm-production"},"react-native-builder-bob":{"output":"lib","source":"src","targets":["commonjs","module",["typescript",{"project":"tsconfig.build.json"}]]}},"15.3.3":{"name":"@anyline/tire-tread-react-native-module","version":"15.3.3","keywords":["react-native","ios","android","anyline","tire","tread","scanner","tire-tread","depth-measurement","computer-vision"],"author":{"url":"https://anyline.com","name":"Anyline GmbH"},"license":"SEE LICENSE IN LICENSE.md","_id":"@anyline/tire-tread-react-native-module@15.3.3","maintainers":[{"name":"danielalbertini","email":"daniel@anyline.io"},{"name":"david.dengg","email":"david@anyline.com"},{"name":"adam-anyline","email":"adam.zielinski@anyline.com"},{"name":"balazs_anyline","email":"balazs@anyline.com"},{"name":"berndkamplanyline","email":"bernd.kampl@anyline.com"},{"name":"cloudio-anyline","email":"cloudio@anyline.com"},{"name":"igor.graca_anyline","email":"igor.graca@anyline.com"},{"name":"ricardo.colombo.oliveira_anyline","email":"ricardo.oliveira@anyline.com"}],"homepage":"https://github.com/Anyline/anyline-tiretread-react-native#readme","bugs":{"url":"https://github.com/Anyline/anyline-tiretread-react-native/issues"},"dist":{"shasum":"f18902f1ae90569973ee31228ac94f599b790530","tarball":"https://registry.npmjs.org/@anyline/tire-tread-react-native-module/-/tire-tread-react-native-module-15.3.3.tgz","fileCount":101,"integrity":"sha512-ip+gzsK+8hKMyfOqY0RTMtgcpt3m7TTtwGe03yjghZtT43WwMSCGyH9BOBV9sSQrDEapTa0uVHd/akZ9B+4H5g==","signatures":[{"sig":"MEUCIBr93FgHCpRaHOfMlD+D/UD2r6Qi43obYS3mo9Usho3DAiEAv1vnhIcFmOP8HdbbNUGYi+yUftaL5sNQHDyyQEpuMrk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@anyline%2ftire-tread-react-native-module@15.3.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":168341},"jest":{"preset":"react-native","modulePathIgnorePatterns":["<rootDir>/example/node_modules","<rootDir>/lib/"]},"main":"lib/commonjs/index","types":"lib/typescript/src/index.d.ts","module":"lib/module/index","source":"src/index","engines":{"node":">=18"},"gitHead":"97063930ebd3c2947e0f1a4bab68e311a540e85d","scripts":{"lint":"eslint \"**/*.{js,ts,tsx}\"","test":"jest","clean":"del-cli android/build example/android/build example/android/app/build example/ios/build lib","prepack":"bob build","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:369681cd-23c4-4120-9951-c88cb6698ce8"}},"prettier":{"useTabs":false,"tabWidth":2,"quoteProps":"consistent","singleQuote":true,"trailingComma":"es5"},"repository":{"url":"git+https://github.com/Anyline/anyline-tiretread-react-native.git","type":"git"},"_npmVersion":"11.18.0","description":"React Native SDK for Anyline Tire Tread scanning and depth measurement","directories":{},"resolutions":{"@types/react":"^18.2.44"},"_nodeVersion":"22.23.1","eslintConfig":{"root":true,"rules":{"prettier/prettier":["error",{"useTabs":false,"tabWidth":2,"quoteProps":"consistent","singleQuote":true,"trailingComma":"es5"}]},"extends":["@react-native","prettier"]},"eslintIgnore":["node_modules/","lib/","src/generated/","android/build/"],"react-native":"src/index","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","react":"^18.3.1","turbo":"^1.10.7","eslint":"^8.51.0","del-cli":"^5.1.0","prettier":"^3.0.3","typescript":"^5.2.2","@types/jest":"^29.5.5","@types/react":"^18.2.44","react-native":"^0.75.5","@expo/config-plugins":"^9.0.0","eslint-config-prettier":"^9.0.0","eslint-plugin-prettier":"^5.0.1","react-native-builder-bob":"^0.23.2","@react-native/eslint-config":"^0.73.1"},"peerDependencies":{"expo":">=50.0.0","react":"*","react-native":">=0.75"},"peerDependenciesMeta":{"expo":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/tire-tread-react-native-module_15.3.3_1784714656759_0.2870903032979293","host":"s3://npm-registry-packages-npm-production"},"react-native-builder-bob":{"output":"lib","source":"src","targets":["commonjs","module",["typescript",{"project":"tsconfig.build.json"}]]}},"15.4.0":{"name":"@anyline/tire-tread-react-native-module","version":"15.4.0","keywords":["react-native","ios","android","anyline","tire","tread","scanner","tire-tread","depth-measurement","computer-vision"],"author":{"url":"https://anyline.com","name":"Anyline GmbH"},"license":"SEE LICENSE IN LICENSE.md","_id":"@anyline/tire-tread-react-native-module@15.4.0","maintainers":[{"name":"danielalbertini","email":"daniel@anyline.io"},{"name":"david.dengg","email":"david@anyline.com"},{"name":"adam-anyline","email":"adam.zielinski@anyline.com"},{"name":"berndkamplanyline","email":"bernd.kampl@anyline.com"},{"name":"cloudio-anyline","email":"cloudio@anyline.com"},{"name":"igor.graca_anyline","email":"igor.graca@anyline.com"},{"name":"aldrichanyline","email":"aldrich.co@anyline.com"},{"name":"ricardo.colombo.oliveira_anyline","email":"ricardo.oliveira@anyline.com"}],"homepage":"https://github.com/Anyline/anyline-tiretread-react-native#readme","bugs":{"url":"https://github.com/Anyline/anyline-tiretread-react-native/issues"},"dist":{"shasum":"39411942d00495a4f877d9807e0f36d48694f8f3","tarball":"https://registry.npmjs.org/@anyline/tire-tread-react-native-module/-/tire-tread-react-native-module-15.4.0.tgz","fileCount":101,"integrity":"sha512-SoidDSTV2Eeti2xAU8NtpsRtIu0Ufb6TI46Bk7UP3dQL8unGDeKwFVblyC6K/7/hW/QqJk6aABB30fRsToAq+A==","signatures":[{"sig":"MEUCIQDrKMLW8WoriK1LSJ/s4QPeerXll7sO66/aEviSFAhPbwIgPqPnoDBUOq1JWVyl2zet5HL/GZ7KtRiLkoMS7XTPGSA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@anyline%2ftire-tread-react-native-module@15.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":169149},"jest":{"preset":"react-native","modulePathIgnorePatterns":["<rootDir>/example/node_modules","<rootDir>/lib/"]},"main":"lib/commonjs/index","types":"lib/typescript/src/index.d.ts","module":"lib/module/index","source":"src/index","engines":{"node":">=18"},"gitHead":"8ba49ef5aa00a4befea04c7939ee5e655e88c77e","scripts":{"lint":"eslint \"**/*.{js,ts,tsx}\"","test":"jest","clean":"del-cli android/build example/android/build example/android/app/build example/ios/build lib","prepack":"bob build","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:369681cd-23c4-4120-9951-c88cb6698ce8"}},"prettier":{"useTabs":false,"tabWidth":2,"quoteProps":"consistent","singleQuote":true,"trailingComma":"es5"},"repository":{"url":"git+https://github.com/Anyline/anyline-tiretread-react-native.git","type":"git"},"_npmVersion":"11.19.0","description":"React Native SDK for Anyline Tire Tread scanning and depth measurement","directories":{},"resolutions":{"@types/react":"^18.2.44"},"_nodeVersion":"22.23.2","eslintConfig":{"root":true,"rules":{"prettier/prettier":["error",{"useTabs":false,"tabWidth":2,"quoteProps":"consistent","singleQuote":true,"trailingComma":"es5"}]},"extends":["@react-native","prettier"]},"eslintIgnore":["node_modules/","lib/","src/generated/","android/build/"],"react-native":"src/index","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","react":"^18.3.1","turbo":"^1.10.7","eslint":"^8.51.0","del-cli":"^5.1.0","prettier":"^3.0.3","typescript":"^5.2.2","@types/jest":"^29.5.5","@types/react":"^18.2.44","react-native":"^0.75.5","@expo/config-plugins":"^9.0.0","eslint-config-prettier":"^9.0.0","eslint-plugin-prettier":"^5.0.1","react-native-builder-bob":"^0.23.2","@react-native/eslint-config":"^0.73.1"},"peerDependencies":{"expo":">=50.0.0","react":"*","react-native":">=0.75"},"peerDependenciesMeta":{"expo":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/tire-tread-react-native-module_15.4.0_1787748575047_0.9531128635945318","host":"s3://npm-registry-packages-npm-production"},"react-native-builder-bob":{"output":"lib","source":"src","targets":["commonjs","module",["typescript",{"project":"tsconfig.build.json"}]]}},"15.5.0":{"name":"@anyline/tire-tread-react-native-module","version":"15.5.0","keywords":["react-native","ios","android","anyline","tire","tread","scanner","tire-tread","depth-measurement","computer-vision"],"author":{"url":"https://anyline.com","name":"Anyline GmbH"},"license":"SEE LICENSE IN LICENSE.md","_id":"@anyline/tire-tread-react-native-module@15.5.0","maintainers":[{"name":"danielalbertini","email":"daniel@anyline.io"},{"name":"david.dengg","email":"david@anyline.com"},{"name":"adam-anyline","email":"adam.zielinski@anyline.com"},{"name":"berndkamplanyline","email":"bernd.kampl@anyline.com"},{"name":"cloudio-anyline","email":"cloudio@anyline.com"},{"name":"igor.graca_anyline","email":"igor.graca@anyline.com"},{"name":"aldrichanyline","email":"aldrich.co@anyline.com"},{"name":"ricardo.colombo.oliveira_anyline","email":"ricardo.oliveira@anyline.com"}],"homepage":"https://github.com/Anyline/anyline-tiretread-react-native#readme","bugs":{"url":"https://github.com/Anyline/anyline-tiretread-react-native/issues"},"dist":{"shasum":"c4cf0efe2eeae180274012d538d34fe3f1545ccf","tarball":"https://registry.npmjs.org/@anyline/tire-tread-react-native-module/-/tire-tread-react-native-module-15.5.0.tgz","fileCount":102,"integrity":"sha512-AFU/3MXS1D/CTgqkKRiDoAJgegBJPjBnd05bRvZ7luyUuboVC3lsnK7d7Voi+1E+CH6B1t4JMCVG4lzmPyPtRA==","signatures":[{"sig":"MEYCIQCoYvFmlCj5tAg94Zn1cbgUaireofwRAqrnD+khqT17HAIhANqXomVuGRmf/vkG6DetbVA2sQBhD3dDhdNFA7U+snxn","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@anyline%2ftire-tread-react-native-module@15.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":174641},"jest":{"preset":"react-native","modulePathIgnorePatterns":["<rootDir>/example/node_modules","<rootDir>/lib/"]},"main":"lib/commonjs/index","types":"lib/typescript/src/index.d.ts","module":"lib/module/index","source":"src/index","engines":{"node":">=18"},"gitHead":"d2a2dea38e894af89f291cb0ab7d117ab57e7edc","scripts":{"lint":"eslint \"**/*.{js,ts,tsx}\"","test":"jest","clean":"del-cli android/build example/android/build example/android/app/build example/ios/build lib","prepack":"bob build","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:369681cd-23c4-4120-9951-c88cb6698ce8"}},"prettier":{"useTabs":false,"tabWidth":2,"quoteProps":"consistent","singleQuote":true,"trailingComma":"es5"},"repository":{"url":"git+https://github.com/Anyline/anyline-tiretread-react-native.git","type":"git"},"_npmVersion":"11.19.1","description":"React Native SDK for Anyline Tire Tread scanning and depth measurement","directories":{},"resolutions":{"@types/react":"^18.2.44"},"_nodeVersion":"22.23.2","eslintConfig":{"root":true,"rules":{"prettier/prettier":["error",{"useTabs":false,"tabWidth":2,"quoteProps":"consistent","singleQuote":true,"trailingComma":"es5"}]},"extends":["@react-native","prettier"]},"eslintIgnore":["node_modules/","lib/","src/generated/","android/build/"],"react-native":"src/index","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","react":"^18.3.1","turbo":"^1.10.7","eslint":"^8.51.0","del-cli":"^5.1.0","prettier":"^3.0.3","typescript":"^5.2.2","@types/jest":"^29.5.5","@types/react":"^18.2.44","react-native":"^0.75.5","@expo/config-plugins":"^9.0.0","eslint-config-prettier":"^9.0.0","eslint-plugin-prettier":"^5.0.1","react-native-builder-bob":"^0.23.2","@react-native/eslint-config":"^0.73.1"},"peerDependencies":{"expo":">=50.0.0","react":"*","react-native":">=0.75"},"peerDependenciesMeta":{"expo":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/tire-tread-react-native-module_15.5.0_1788187424373_0.6977691553127159","host":"s3://npm-registry-packages-npm-production"},"react-native-builder-bob":{"output":"lib","source":"src","targets":["commonjs","module",["typescript",{"project":"tsconfig.build.json"}]]}}},"time":{"created":"2026-03-18T18:27:59.533Z","modified":"2026-09-02T09:03:52.604Z","0.7.0":"2026-03-18T18:27:59.765Z","1.0.0":"2026-03-25T17:11:54.102Z","15.1.0":"2026-06-15T12:10:12.403Z","15.3.0":"2026-07-09T14:16:52.402Z","15.3.2":"2026-07-17T08:05:29.924Z","15.3.3":"2026-07-22T10:04:16.917Z","15.4.0":"2026-08-26T12:49:35.190Z","15.5.0":"2026-08-31T14:43:44.514Z"},"bugs":{"url":"https://github.com/Anyline/anyline-tiretread-react-native/issues"},"author":{"url":"https://anyline.com","name":"Anyline GmbH"},"license":"SEE LICENSE IN LICENSE.md","homepage":"https://github.com/Anyline/anyline-tiretread-react-native#readme","keywords":["react-native","ios","android","anyline","tire","tread","scanner","tire-tread","depth-measurement","computer-vision"],"repository":{"url":"git+https://github.com/Anyline/anyline-tiretread-react-native.git","type":"git"},"description":"React Native SDK for Anyline Tire Tread scanning and depth measurement","maintainers":[{"email":"daniel@anyline.io","name":"danielalbertini"},{"email":"david@anyline.com","name":"david.dengg"},{"email":"adam.zielinski@anyline.com","name":"adam-anyline"},{"email":"bernd.kampl@anyline.com","name":"berndkamplanyline"},{"email":"cloudio@anyline.com","name":"cloudio-anyline"},{"email":"igor.graca@anyline.com","name":"igor.graca_anyline"},{"email":"aldrich.co@anyline.com","name":"aldrichanyline"}],"readme":"# Anyline Tire Tread React Native SDK\n\n[![npm version](https://img.shields.io/npm/v/@anyline%2Ftire-tread-react-native-module.svg)](https://www.npmjs.com/package/@anyline/tire-tread-react-native-module)\n[![platform](https://img.shields.io/badge/platform-iOS%20%7C%20Android-lightgrey.svg)]()\n[![license](https://img.shields.io/npm/l/@anyline%2Ftire-tread-react-native-module.svg)](./LICENSE.md)\n\nMeasure tire tread depth from a smartphone camera. The SDK captures frames on-device, uploads them to Anyline's servers, and returns per-region tread depth measurements.\n\n## Requirements\n\n- React Native 0.75+\n- Node 18+\n- Camera with autofocus and 1080p capability\n- Stable internet connection\n- **Android** 6.0+ (API 23)\n- **iOS** 13.4+\n\n## Installation\n\n```sh\nyarn add @anyline/tire-tread-react-native-module\n# or\nnpm install @anyline/tire-tread-react-native-module\n```\n\n### Android\n\nAdd the Anyline Maven repository to your project-level `build.gradle` (or `settings.gradle` for newer projects):\n\n```gradle\nallprojects {\n  repositories {\n    maven { url \"https://europe-maven.pkg.dev/anyline-ttr-sdk/maven\" }\n  }\n}\n```\n\n### iOS\n\n```sh\ncd ios && pod install\n```\n\nThe module ships the Anyline Tire Tread SDK: `pod install` downloads a prebuilt `AnylineTireTreadSdk.xcframework` from the Anyline CDN and checks it against a SHA-256 set in the module's podspec.\n\nIf your `Podfile` declares `pod 'AnylineTireTreadSdk'`, remove that line, since the module itself would supply the SDK.\n\n#### iOS installation troubleshooting\n\nTwo things can go wrong because the SDK arrives during `pod install`.\n\n**The framework is missing and `pod install` will not fetch it again.**\n\nThe plugin downloads the SDK from its podspec's `prepare_command`, and CocoaPods\nruns that step only when it *installs* the plugin. Usually it doesn't: when\n`Podfile.lock` and `ios/Pods/Manifest.lock` agree, CocoaPods reuses what it\nalready has. The xcframework also sits next to the plugin in `node_modules`,\noutside `ios/Pods`, so CocoaPods never checks whether it is still there.\n\nDelete the framework, or let a cleaning script remove it, and the next\n`pod install` reports success while the build fails for a missing SDK.\n\nLook for the plugin's line in the `pod install` output:\n\n```\nUsing anyline-ttr-react-native (15.3.3)       skipped, nothing was fetched\nInstalling anyline-ttr-react-native (15.3.3)  ran, the framework is present\n```\n\nCocoaPods hides the download step's own output, so that line is the only\nconfirmation you get.\n\nTo force the reinstall, delete the manifest and run again:\n\n```sh\nrm -f ios/Pods/Manifest.lock\ncd ios && pod install\n```\n\nChanging the plugin's version does the same thing, for the same reason: it makes\nCocoaPods install the plugin instead of reusing it.\n\n**`pod install` fails with a checksum mismatch.**\n\n```\nerror: checksum mismatch for AnylineTireTreadSdk.xcframework <version>\n```\n\nA corrupted or truncated download is the usual cause, so first do a retry. A proxy that rewrites HTTPS responses may also trigger this. If the same issue re-occurs on a clean network, [contact Anyline support](https://anyline.com/support) with the version and both checksums from the error. Do not edit the pinned checksum to get around it: that is the check guaranteeing that you are building against the exact binary we published.\n\n### Camera Permissions\n\nThe scan UI requires camera access. Configure permissions before calling `scan`.\n\n**Android** — add to `AndroidManifest.xml`:\n```xml\n<uses-permission android:name=\"android.permission.CAMERA\" />\n```\n\n**iOS** — add to `Info.plist`:\n```xml\n<key>NSCameraUsageDescription</key>\n<string>Camera access is needed to scan tire tread depth.</string>\n```\n\n## Usage\n\n> See the [`example/`](./example) app for a complete working integration.\n\nEvery API call returns a result object — promises never reject. Check `ok` to distinguish success from failure.\n\n```typescript\nimport {\n  initialize,\n  scan,\n  getResult,\n  sendCommentFeedback,\n  sendTreadDepthResultFeedback,\n  sendTireIdFeedback,\n  type TireTreadConfig,\n  type ScanOutcome,\n  type TreadDepthResult,\n} from '@anyline/tire-tread-react-native-module';\n```\n\n### 1. Initialize\n\nCall once at app startup. Requires a valid Anyline license key.\n\n```typescript\nconst init = await initialize('YOUR_LICENSE_KEY');\nif (!init.ok) {\n  // init.error.type is the category (LICENSE_ERROR, CONFIG_ERROR, NETWORK_ERROR, ...)\n  // init.error.code is the specific detail (INVALID_LICENSE, NO_CONNECTION, ...)\n  console.error(init.error.type, init.error.code, init.error.message);\n  return;\n}\n```\n\nYou can pass an optional `InitOptions` object as the second argument:\n\n```typescript\nconst init = await initialize('YOUR_LICENSE_KEY', {\n  customTag: 'warehouse-scanner-3',   // optional tag to tell apart different devices (max 50 chars)\n});\n```\n\n### 2. Scan\n\nOpens a full-screen camera UI. The user positions the phone near the tire and the SDK captures frames automatically.\n\n```typescript\nconst config: TireTreadConfig = {\n  uiConfig: {\n    measurementSystem: 'Metric',\n  },\n};\n\nconst outcome: ScanOutcome = await scan(config);\n\nswitch (outcome.kind) {\n  case 'ScanCompleted':\n    console.log('Measurement UUID:', outcome.measurementUUID);\n    break;\n  case 'ScanAborted':\n    // User closed the scanner\n    return;\n  case 'ScanFailed':\n    console.error(outcome.error?.type, outcome.error?.code, outcome.error?.message);\n    return;\n}\n```\n\n#### Scan Outcomes\n\n| `kind` | Meaning | Fields |\n|--------|---------|--------|\n| `ScanCompleted` | Frames captured and uploaded | `measurementUUID` |\n| `ScanAborted` | User closed the scanner | `measurementUUID?` (present if session was created) |\n| `ScanFailed` | Scan could not complete | `error`, `measurementUUID?` |\n\n### 3. Get Results\n\nPoll the backend for tread depth measurements. You can pass an optional timeout override in seconds if needed.\n\n```typescript\nconst result = await getResult(outcome.measurementUUID!);\nif (!result.ok) {\n  console.error(result.error.type, result.error.code, result.error.message);\n  return;\n}\n\nconst { global, regions } = result.value;\nconsole.log(`Global depth: ${global.value_mm} mm`);\nfor (const region of regions) {\n  if (region.available) {\n    console.log(`  Region: ${region.value_mm} mm (${region.value_inch_32nds}/32\")`);\n  }\n}\n```\n\n### 4. Send Feedback\n\nAfter reviewing results, you can submit corrections to improve future measurements.\n\n```typescript\n// Attach a comment\nawait sendCommentFeedback(measurementUUID, 'Tire was wet during scan');\n\n// Submit corrected tread depth values\nawait sendTreadDepthResultFeedback(measurementUUID, [\n  { available: true, value_mm: 5.2 },\n  { available: true, value_mm: 4.8 },\n  { available: true, value_mm: 5.0 },\n]);\n\n// Submit a tire identifier\nawait sendTireIdFeedback(measurementUUID, 'FL-001');\n```\n\nAll feedback functions return `SdkResult<MeasurementInfo>`.\n\n## API Reference\n\nAll functions are fully typed. Return types and error shapes are available via TypeScript autocompletion.\n\n### Scan\n\n- `initialize(licenseKey, options?)` — Initialize the SDK\n- `scan(config?, options?)` — Open scanner, returns `ScanOutcome`\n- `getResult(measurementUUID, timeout?)` — Fetch tread depth results\n\n### Feedback\n\n- `sendCommentFeedback(measurementUUID, comment)` — Attach a text comment to a measurement\n- `sendTreadDepthResultFeedback(measurementUUID, treadResultRegions)` — Submit corrected tread depth values\n- `sendTireIdFeedback(measurementUUID, tireId)` — Submit a corrected tire identifier\n\n### Tire Sidewall (TSW)\n\n- `TireSidewall.scan({ clientId, config? })` — Open the sidewall scanner, returns `TswScanOutcome`\n- `TireSidewall.isSupported()` — Check whether the device can run the sidewall scanner\n- `TireSidewall.resolvePlayServices()` — Show the Play Services resolution dialog (Android only)\n\nSee [Tire Sidewall (TSW) Scanner](#tire-sidewall-tsw-scanner) for details.\n\n### Utility\n\n- `getSdkVersion()` — Native SDK version\n- `getWrapperVersion()` — Module version\n\n## Scan Configuration\n\nPass a `TireTreadConfig` object to `scan`. All fields are optional.\n\n```typescript\nconst config: TireTreadConfig = {\n  scanConfig: {\n    // Only set tireWidth if you know the exact width in mm beforehand.\n    // If omitted, the SDK will prompt the user to enter it before scanning.\n    // Passing an incorrect value will reduce measurement accuracy.\n    tireWidth: 225,\n  },\n  uiConfig: {\n    measurementSystem: 'Metric',       // 'Metric' | 'Imperial'\n  },\n  additionalContext: {\n    correlationId: 'fleet-inspection-42',\n    tirePosition: { axle: 1, positionOnAxle: 1, side: 'Left' },\n  },\n};\n```\n\nFull configuration reference: [Scan Configuration](https://documentation.anyline.com/tiretreadsdk-component/latest/scan-configuration.html) | [Default UI](https://documentation.anyline.com/tiretreadsdk-component/latest/default-ui/overview.html)\n\n## Error Handling\n\nAll errors follow a structured format with a `type` category and a specific `code`:\n\n```typescript\ninterface SdkError {\n  type: ErrorType;\n  code: ErrorCode;\n  message: string;\n  debug?: Record<string, string>;\n}\n```\n\n### Error Types and Codes\n\n<details>\n<summary><code>LICENSE_ERROR</code> — license validation failures</summary>\n\n| Code | When |\n|------|------|\n| `INVALID_LICENSE` | License key is malformed or expired |\n| `LICENSE_KEY_FORBIDDEN` | License not authorized for this app/bundle ID |\n| `SDK_NOT_VERIFIED` | License verification failed (network or server issue) |\n\n</details>\n\n<details>\n<summary><code>CONFIG_ERROR</code> — invalid configuration</summary>\n\n| Code | When |\n|------|------|\n| `INVALID_ARGUMENT` | Invalid config value passed to an API call |\n| `CAMERA_PERMISSION_DENIED` | Camera permission was denied at runtime |\n\n</details>\n\n<details>\n<summary><code>NETWORK_ERROR</code> — connectivity issues</summary>\n\n| Code | When |\n|------|------|\n| `NO_CONNECTION` | Device is offline or cannot reach Anyline servers |\n| `UPLOAD_FAILED` | Frame upload to backend failed |\n| `TIMEOUT` | Server did not respond within the timeout period |\n\n</details>\n\n<details>\n<summary><code>SCAN_ERROR</code> — scan lifecycle failures</summary>\n\n| Code | When |\n|------|------|\n| `SDK_NOT_INITIALIZED` | API called before `initialize` completed |\n| `INITIALIZATION_FAILED` | SDK startup failed (missing permissions, resources) |\n| `SESSION_CREATION_FAILED` | Backend rejected the scan session |\n| `MEASUREMENT_ERROR` | Backend could not process the scan |\n| `ALREADY_RUNNING` | A scan is already in progress |\n| `PLAY_SERVICES_UNAVAILABLE` | Android: Google Play Services / on-device runtime unavailable (sidewall support check) |\n| `INTERNAL_ERROR` | Unexpected native SDK error |\n| `UNKNOWN_ERROR` | Unclassified error |\n\n</details>\n\n<details>\n<summary><code>RESULT_ERROR</code> — result retrieval failures</summary>\n\n| Code | When |\n|------|------|\n| `INVALID_UUID` | Measurement UUID not found |\n| `RESULT_ERROR` | Failed to retrieve tread depth results |\n\n</details>\n\n## Result Structure\n\nA successful `getResult` call returns a `TreadDepthResult`. Here's what you get back:\n\n```typescript\n// result.value: TreadDepthResult\n{\n  global: TreadResultRegion,        // overall tire depth\n  regions: TreadResultRegion[],     // per-region measurements (typically 3)\n  measurementInfo: {\n    measurementUUID: string,\n    status: MeasurementStatus,      // see below\n    additionalContext?: {           // echoes back what you passed to scan()\n      correlationId?: string,\n      tirePosition?: { axle, positionOnAxle, side },\n    },\n  },\n  measurementMetadata?: {\n    movementDirection?: 'LeftToRight' | 'RightToLeft' | 'Unknown',\n  },\n}\n\n// Each TreadResultRegion:\n{\n  available: boolean,               // false if this region couldn't be measured\n  value_mm: number,                 // depth in millimeters\n  value_inch: number,               // depth in inches\n  value_inch_32nds: number,         // depth in 32nds of an inch\n}\n\n// MeasurementStatus:\n'Unknown' | 'WaitingForImages' | 'Processing'\n  | 'ResultReady' | 'ResultAndReportReady'\n  | 'Completed' | 'Aborted' | 'Failed'\n```\n\n## Tire Sidewall (TSW) Scanner\n\nThe Tire Sidewall scanner is a **standalone** scanner that captures a single tire\nsidewall image on-device, uploads it to the Anyline cloud, and returns the result\nsynchronously. It is independent of tread-depth scanning:\n\n- It does **not** require `initialize()`.\n- It is authed by a separate cloud **`clientId`** (provided by Anyline), not the\n  TTR license key.\n\n```typescript\nimport { TireSidewall } from '@anyline/tire-tread-react-native-module';\n\n// 1. (Optional) Check device support — does not require initialization.\nconst support = await TireSidewall.isSupported();\nif (!support.supported) {\n  if (support.userResolvable) {\n    await TireSidewall.resolvePlayServices(); // Android only; no-op on iOS\n  }\n  return;\n}\n\n// 2. Scan.\nconst outcome = await TireSidewall.scan({\n  clientId: 'YOUR_SIDEWALL_CLIENT_ID',\n  config: {\n    correlationId: 'c0ffee00-c0ff-4ee0-b0ba-c0ffee0000ff', // optional, v4 UUID\n    texts: { alignTire: 'Align the tire' },                 // optional UI overrides\n  },\n});\n\n// 3. Handle the outcome.\nswitch (outcome.kind) {\n  case 'completed':\n    // outcome.resultJson  — raw cloud JSON (parse in your app)\n    // outcome.imageBase64 — captured JPEG, base64 (no data-URI prefix)\n    // outcome.lighting    — 'Dark' | 'Bright' | 'Good' | null\n    break;\n  case 'aborted':\n    // user dismissed the scanner before capture\n    break;\n  case 'failed':\n    // outcome.error: SdkError\n    break;\n}\n```\n\nRender the captured image directly from the base64 payload:\n\n```tsx\n<Image source={{ uri: `data:image/jpeg;base64,${outcome.imageBase64}` }} />\n```\n\n### Configuration (`TireSidewallConfig`)\n\n| Field | Type | Notes |\n|-------|------|-------|\n| `correlationId` | `string?` | Correlates scans across Anyline products. Must be a **v4 UUID** when set; an invalid value fails the scan with `INVALID_UUID`. |\n| `texts` | `TireSidewallTexts?` | Optional overrides for the scanner overlay strings. Omit a field to keep the SDK default. |\n\n### Outcome (`TswScanOutcome`)\n\n| `kind` | Fields |\n|--------|--------|\n| `'completed'` | `resultJson: string`, `imageBase64: string`, `lighting: 'Dark' \\| 'Bright' \\| 'Good' \\| null` |\n| `'aborted'` | — |\n| `'failed'` | `error?: SdkError` |\n\n### Sidewall-specific error codes\n\nIn addition to the shared codes (see [Error Handling](#error-handling)), a sidewall\nscan can return:\n\n| Code | When |\n|------|------|\n| `INVALID_UUID` | `correlationId` is not a valid v4 UUID |\n| `PLAY_SERVICES_UNAVAILABLE` | Android: Google Play Services / on-device runtime is missing (may be user-resolvable) |\n| `CAMERA_PERMISSION_DENIED` | Camera permission was denied at runtime |\n\n## Troubleshooting\n\n<details>\n<summary>Camera permission denied at runtime</summary>\n\nRequest camera permission before calling `scan`. On iOS, the first call triggers the system prompt. On Android, use `PermissionsAndroid.request()` or a library like `react-native-permissions`.\n</details>\n\n<details>\n<summary>Scan fails immediately with <code>INITIALIZATION_FAILED</code></summary>\n\nEnsure `initialize` completed with `ok: true` before scanning. Check that the device has autofocus — tablets and some low-end devices without autofocus are not supported.\n</details>\n\n<details>\n<summary><code>NO_CONNECTION</code> or <code>TIMEOUT</code> during result retrieval</summary>\n\nThe SDK uploads frames and retrieves results over HTTPS. Verify the device has a stable internet connection and can reach `anyline.com` endpoints. Increase the timeout if processing takes longer than expected.\n</details>\n\n<details>\n<summary><code>LICENSE_KEY_FORBIDDEN</code> on one platform but not the other</summary>\n\nLicense keys are bound to app identifiers. Verify the bundle ID (iOS) and application ID (Android) match what was configured in your Anyline account.\n</details>\n\n<details>\n<summary>Android build fails: \"Could not resolve io.anyline.tiretread.sdk\"</summary>\n\nThe Anyline Maven repository is not in your Gradle config. Add `maven { url \"https://europe-maven.pkg.dev/anyline-ttr-sdk/maven\" }` to your repositories block.\n</details>\n\n<details>\n<summary>iOS build fails: pod not found</summary>\n\nRun `pod repo update` then `pod install` again. Ensure your Podfile's platform is set to iOS 13.4 or higher.\n</details>\n\n## Expo\n\nThis module includes an Expo config plugin that automatically:\n\n- adds `NSCameraUsageDescription` to your iOS `Info.plist`\n- adds `CAMERA` permission to your Android `AndroidManifest.xml`\n- adds the Anyline Android Maven repository to the project repositories\n\n```json\n{\n  \"plugins\": [\n    \"@anyline/tire-tread-react-native-module\"\n  ]\n}\n```\n\n> **Note:** This module uses native code and is not compatible with Expo Go. You must use a [development build](https://docs.expo.dev/develop/development-builds/introduction/) (`npx expo run:android` / `npx expo run:ios`).\n\n## Support\n\nFor issues or questions, open a support request at the [Anyline Helpdesk](https://support.anyline.com).\n\n## License\n\nSee [LICENSE.md](./LICENSE.md) for licensing information.\n","readmeFilename":"README.md"}