import { NitroModules } from 'react-native-nitro-modules' import type { StrongRandom } from './specs/StrongRandom.nitro' export interface PartialNitroKryptomXStrongRandom { randomBytes(length: number): Int8Array fill(array: Int8Array): void } export const hybridStrongRandom = NitroModules.createHybridObject('StrongRandom') export const StrongRandomService: PartialNitroKryptomXStrongRandom = { randomBytes(length: number): Int8Array { const res = new Int8Array(length) hybridStrongRandom.fill(res.buffer) return res }, fill(array: Int8Array): void { if (array.buffer instanceof ArrayBuffer) { hybridStrongRandom.fill(array.buffer) } else { const newBuffer = new Int8Array(array.byteLength) hybridStrongRandom.fill(newBuffer.buffer) array.set(newBuffer) } }, }