react-native-nitro-ark 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (55) hide show
  1. package/LICENSE +20 -0
  2. package/NitroArk.podspec +30 -0
  3. package/README.md +22 -0
  4. package/android/CMakeLists.txt +64 -0
  5. package/android/build.gradle +145 -0
  6. package/android/gradle.properties +5 -0
  7. package/android/src/main/AndroidManifest.xml +3 -0
  8. package/android/src/main/AndroidManifestNew.xml +2 -0
  9. package/android/src/main/cpp/cpp-adapter.cpp +6 -0
  10. package/android/src/main/java/com/nitroark/NitroArkPackage.kt +22 -0
  11. package/cpp/HybridArk.cpp +8 -0
  12. package/cpp/NitroArk.hpp +558 -0
  13. package/cpp/bark-cpp.h +382 -0
  14. package/lib/commonjs/NitroArk.nitro.js +6 -0
  15. package/lib/commonjs/NitroArk.nitro.js.map +1 -0
  16. package/lib/commonjs/index.js +292 -0
  17. package/lib/commonjs/index.js.map +1 -0
  18. package/lib/commonjs/package.json +1 -0
  19. package/lib/module/NitroArk.nitro.js +4 -0
  20. package/lib/module/NitroArk.nitro.js.map +1 -0
  21. package/lib/module/index.js +268 -0
  22. package/lib/module/index.js.map +1 -0
  23. package/lib/module/package.json +1 -0
  24. package/lib/typescript/commonjs/package.json +1 -0
  25. package/lib/typescript/commonjs/src/NitroArk.nitro.d.ts +59 -0
  26. package/lib/typescript/commonjs/src/NitroArk.nitro.d.ts.map +1 -0
  27. package/lib/typescript/commonjs/src/index.d.ts +180 -0
  28. package/lib/typescript/commonjs/src/index.d.ts.map +1 -0
  29. package/lib/typescript/module/package.json +1 -0
  30. package/lib/typescript/module/src/NitroArk.nitro.d.ts +59 -0
  31. package/lib/typescript/module/src/NitroArk.nitro.d.ts.map +1 -0
  32. package/lib/typescript/module/src/index.d.ts +180 -0
  33. package/lib/typescript/module/src/index.d.ts.map +1 -0
  34. package/nitrogen/generated/android/NitroArk+autolinking.cmake +78 -0
  35. package/nitrogen/generated/android/NitroArk+autolinking.gradle +27 -0
  36. package/nitrogen/generated/android/NitroArkOnLoad.cpp +44 -0
  37. package/nitrogen/generated/android/NitroArkOnLoad.hpp +25 -0
  38. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitroark/NitroArkOnLoad.kt +35 -0
  39. package/nitrogen/generated/ios/NitroArk+autolinking.rb +60 -0
  40. package/nitrogen/generated/ios/NitroArk-Swift-Cxx-Bridge.cpp +17 -0
  41. package/nitrogen/generated/ios/NitroArk-Swift-Cxx-Bridge.hpp +27 -0
  42. package/nitrogen/generated/ios/NitroArk-Swift-Cxx-Umbrella.hpp +38 -0
  43. package/nitrogen/generated/ios/NitroArkAutolinking.mm +35 -0
  44. package/nitrogen/generated/ios/NitroArkAutolinking.swift +12 -0
  45. package/nitrogen/generated/shared/c++/BarkBalance.hpp +77 -0
  46. package/nitrogen/generated/shared/c++/BarkConfigOpts.hpp +90 -0
  47. package/nitrogen/generated/shared/c++/BarkCreateOpts.hpp +96 -0
  48. package/nitrogen/generated/shared/c++/BarkRefreshModeType.hpp +94 -0
  49. package/nitrogen/generated/shared/c++/BarkRefreshOpts.hpp +81 -0
  50. package/nitrogen/generated/shared/c++/BarkSendManyOutput.hpp +73 -0
  51. package/nitrogen/generated/shared/c++/HybridNitroArkSpec.cpp +40 -0
  52. package/nitrogen/generated/shared/c++/HybridNitroArkSpec.hpp +95 -0
  53. package/package.json +178 -0
  54. package/src/NitroArk.nitro.ts +159 -0
  55. package/src/index.tsx +443 -0
package/package.json ADDED
@@ -0,0 +1,178 @@
1
+ {
2
+ "name": "react-native-nitro-ark",
3
+ "version": "0.0.2",
4
+ "description": "Pure C++ Nitro Modules for Ark client",
5
+ "source": "./src/index.tsx",
6
+ "main": "./lib/commonjs/index.js",
7
+ "module": "./lib/module/index.js",
8
+ "exports": {
9
+ ".": {
10
+ "import": {
11
+ "types": "./lib/typescript/module/src/index.d.ts",
12
+ "default": "./lib/module/index.js"
13
+ },
14
+ "require": {
15
+ "types": "./lib/typescript/commonjs/src/index.d.ts",
16
+ "default": "./lib/commonjs/index.js"
17
+ }
18
+ },
19
+ "./package.json": "./package.json"
20
+ },
21
+ "files": [
22
+ "src",
23
+ "lib",
24
+ "android",
25
+ "ios",
26
+ "cpp",
27
+ "nitrogen",
28
+ "*.podspec",
29
+ "react-native.config.js",
30
+ "!ios/build",
31
+ "!android/build",
32
+ "!android/gradle",
33
+ "!android/gradlew",
34
+ "!android/gradlew.bat",
35
+ "!android/local.properties",
36
+ "!**/__tests__",
37
+ "!**/__fixtures__",
38
+ "!**/__mocks__",
39
+ "!**/.*"
40
+ ],
41
+ "scripts": {
42
+ "example": "yarn workspace react-native-nitro-ark-example",
43
+ "test": "jest",
44
+ "typecheck": "tsc",
45
+ "lint": "eslint \"**/*.{js,ts,tsx}\"",
46
+ "clean": "del-cli android/build example/android/build example/android/app/build example/ios/build lib",
47
+ "prepare": "bob build",
48
+ "nitrogen": "rm -rf nitrogen && nitro-codegen",
49
+ "release": "release-it"
50
+ },
51
+ "keywords": [
52
+ "react-native",
53
+ "ios",
54
+ "android"
55
+ ],
56
+ "repository": {
57
+ "type": "git",
58
+ "url": "git+https://github.com/niteshbalusu11/react-native-nitro-ark.git"
59
+ },
60
+ "author": "Nitesh Balusu <niteshbalusu@icloud.com> (https://github.com/niteshbalusu11)",
61
+ "license": "MIT",
62
+ "bugs": {
63
+ "url": "https://github.com/niteshbalusu11/react-native-nitro-ark/issues"
64
+ },
65
+ "homepage": "https://github.com/niteshbalusu11/react-native-nitro-ark#readme",
66
+ "publishConfig": {
67
+ "registry": "https://registry.npmjs.org/"
68
+ },
69
+ "devDependencies": {
70
+ "@commitlint/config-conventional": "^19.6.0",
71
+ "@eslint/compat": "^1.2.7",
72
+ "@eslint/eslintrc": "^3.3.0",
73
+ "@eslint/js": "^9.22.0",
74
+ "@evilmartians/lefthook": "^1.5.0",
75
+ "@react-native/eslint-config": "^0.78.0",
76
+ "@release-it/conventional-changelog": "^9.0.2",
77
+ "@types/jest": "^29.5.5",
78
+ "@types/react": "^19.0.0",
79
+ "commitlint": "^19.6.1",
80
+ "del-cli": "^5.1.0",
81
+ "eslint": "^9.22.0",
82
+ "eslint-config-prettier": "^10.1.1",
83
+ "eslint-plugin-prettier": "^5.2.3",
84
+ "jest": "^29.7.0",
85
+ "nitro-codegen": "^0.26.2",
86
+ "prettier": "^3.0.3",
87
+ "react": "19.0.0",
88
+ "react-native": "0.78.1",
89
+ "react-native-builder-bob": "^0.39.0",
90
+ "react-native-nitro-modules": "^0.26.2",
91
+ "release-it": "^17.10.0",
92
+ "turbo": "^1.10.7",
93
+ "typescript": "^5.2.2"
94
+ },
95
+ "peerDependencies": {
96
+ "react": "*",
97
+ "react-native": "*",
98
+ "react-native-nitro-modules": "^0.25.2"
99
+ },
100
+ "workspaces": [
101
+ "example"
102
+ ],
103
+ "packageManager": "yarn@3.6.1",
104
+ "jest": {
105
+ "preset": "react-native",
106
+ "modulePathIgnorePatterns": [
107
+ "<rootDir>/example/node_modules",
108
+ "<rootDir>/lib/"
109
+ ]
110
+ },
111
+ "commitlint": {
112
+ "extends": [
113
+ "@commitlint/config-conventional"
114
+ ]
115
+ },
116
+ "release-it": {
117
+ "git": {
118
+ "commitMessage": "chore: release ${version}",
119
+ "tagName": "v${version}"
120
+ },
121
+ "npm": {
122
+ "publish": true
123
+ },
124
+ "github": {
125
+ "release": true
126
+ },
127
+ "plugins": {
128
+ "@release-it/conventional-changelog": {
129
+ "preset": {
130
+ "name": "angular"
131
+ }
132
+ }
133
+ }
134
+ },
135
+ "prettier": {
136
+ "quoteProps": "consistent",
137
+ "singleQuote": true,
138
+ "tabWidth": 2,
139
+ "trailingComma": "es5",
140
+ "useTabs": false
141
+ },
142
+ "react-native-builder-bob": {
143
+ "source": "src",
144
+ "output": "lib",
145
+ "targets": [
146
+ [
147
+ "custom",
148
+ {
149
+ "script": "nitrogen",
150
+ "clean": "nitrogen/"
151
+ }
152
+ ],
153
+ [
154
+ "module",
155
+ {
156
+ "esm": true
157
+ }
158
+ ],
159
+ [
160
+ "commonjs",
161
+ {
162
+ "esm": true
163
+ }
164
+ ],
165
+ [
166
+ "typescript",
167
+ {
168
+ "project": "tsconfig.build.json"
169
+ }
170
+ ]
171
+ ]
172
+ },
173
+ "create-react-native-library": {
174
+ "languages": "kotlin-swift",
175
+ "type": "nitro-module",
176
+ "version": "0.49.0"
177
+ }
178
+ }
@@ -0,0 +1,159 @@
1
+ import type { HybridObject } from 'react-native-nitro-modules';
2
+
3
+ // --- Interfaces matching C structs ---
4
+
5
+ export type BarkRefreshModeType =
6
+ | 'DefaultThreshold'
7
+ | 'ThresholdBlocks'
8
+ | 'ThresholdHours'
9
+ | 'Counterparty'
10
+ | 'All'
11
+ | 'Specific';
12
+
13
+ // Note: BarkError is handled via Promise rejection, not exposed directly.
14
+
15
+ export interface BarkConfigOpts {
16
+ asp?: string;
17
+ esplora?: string;
18
+ bitcoind?: string;
19
+ bitcoind_cookie?: string;
20
+ bitcoind_user?: string;
21
+ bitcoind_pass?: string;
22
+ }
23
+
24
+ export interface BarkCreateOpts {
25
+ force?: boolean;
26
+ regtest?: boolean;
27
+ signet?: boolean;
28
+ bitcoin?: boolean;
29
+ mnemonic: string;
30
+ birthday_height?: number; // uint64_t might exceed safe integer, but JS number is often used. Be mindful.
31
+ config?: BarkConfigOpts;
32
+ }
33
+
34
+ export interface BarkBalance {
35
+ onchain: number; // uint64_t -> number
36
+ offchain: number; // uint64_t -> number
37
+ pending_exit: number; // uint64_t -> number
38
+ }
39
+
40
+ export interface BarkRefreshOpts {
41
+ mode_type: BarkRefreshModeType;
42
+ threshold_value?: number; // uint32_t -> number (Only relevant for Threshold modes)
43
+ specific_vtxo_ids?: string[]; // const char *const * -> string[] (Only relevant for Specific mode)
44
+ }
45
+
46
+ // Helper interface for sendManyOnchain
47
+ export interface BarkSendManyOutput {
48
+ destination: string;
49
+ amountSat: number; // uint64_t -> number
50
+ }
51
+
52
+ // --- Nitro Module Interface ---
53
+
54
+ export interface NitroArk extends HybridObject<{ ios: 'c++'; android: 'c++' }> {
55
+ // --- Management ---
56
+ createMnemonic(): Promise<string>;
57
+ createWallet(datadir: string, opts: BarkCreateOpts): Promise<void>; // Returns void on success, throws on error
58
+
59
+ // --- Wallet Info ---
60
+ getBalance(
61
+ datadir: string,
62
+ no_sync: boolean,
63
+ mnemonic: string
64
+ ): Promise<BarkBalance>;
65
+ getOnchainAddress(datadir: string, mnemonic: string): Promise<string>;
66
+ getOnchainUtxos(
67
+ datadir: string,
68
+ mnemonic: string,
69
+ no_sync: boolean
70
+ ): Promise<string>; // Returns JSON string
71
+ getVtxoPubkey(datadir: string, mnemonic: string): Promise<string>;
72
+ getVtxos(
73
+ datadir: string,
74
+ mnemonic: string,
75
+ no_sync: boolean
76
+ ): Promise<string>; // Returns JSON string
77
+
78
+ // --- Onchain Operations ---
79
+ sendOnchain(
80
+ datadir: string,
81
+ mnemonic: string,
82
+ destination: string,
83
+ amountSat: number,
84
+ no_sync: boolean
85
+ ): Promise<string>; // Returns txid
86
+ drainOnchain(
87
+ datadir: string,
88
+ mnemonic: string,
89
+ destination: string,
90
+ no_sync: boolean
91
+ ): Promise<string>; // Returns txid
92
+ sendManyOnchain(
93
+ datadir: string,
94
+ mnemonic: string,
95
+ outputs: BarkSendManyOutput[],
96
+ no_sync: boolean
97
+ ): Promise<string>; // Returns txid
98
+
99
+ // --- Ark Operations ---
100
+ refreshVtxos(
101
+ datadir: string,
102
+ mnemonic: string,
103
+ refreshOpts: BarkRefreshOpts,
104
+ no_sync: boolean
105
+ ): Promise<string>; // Returns JSON status
106
+ boardAmount(
107
+ datadir: string,
108
+ mnemonic: string,
109
+ amountSat: number,
110
+ no_sync: boolean
111
+ ): Promise<string>; // Returns JSON status
112
+ boardAll(
113
+ datadir: string,
114
+ mnemonic: string,
115
+ no_sync: boolean
116
+ ): Promise<string>; // Returns JSON status
117
+ send(
118
+ datadir: string,
119
+ mnemonic: string,
120
+ destination: string,
121
+ amountSat: number,
122
+ comment: string | null,
123
+ no_sync: boolean
124
+ ): Promise<string>; // Returns JSON status
125
+ sendRoundOnchain(
126
+ datadir: string,
127
+ mnemonic: string,
128
+ destination: string,
129
+ amountSat: number,
130
+ no_sync: boolean
131
+ ): Promise<string>; // Returns JSON status
132
+
133
+ // --- Offboarding / Exiting ---
134
+ offboardSpecific(
135
+ datadir: string,
136
+ mnemonic: string,
137
+ vtxoIds: string[],
138
+ optionalAddress: string | null,
139
+ no_sync: boolean
140
+ ): Promise<string>; // Returns JSON result
141
+ offboardAll(
142
+ datadir: string,
143
+ mnemonic: string,
144
+ optionalAddress: string | null,
145
+ no_sync: boolean
146
+ ): Promise<string>; // Returns JSON result
147
+ exitStartSpecific(
148
+ datadir: string,
149
+ mnemonic: string,
150
+ vtxoIds: string[],
151
+ no_sync: boolean
152
+ ): Promise<string>; // Returns JSON status
153
+ exitStartAll(
154
+ datadir: string,
155
+ mnemonic: string,
156
+ no_sync: boolean
157
+ ): Promise<string>; // Returns JSON status
158
+ exitProgressOnce(datadir: string, mnemonic: string): Promise<string>; // Returns JSON status
159
+ }