dash-shielded-native 0.0.1
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.
- package/CHANGELOG.md +5 -0
- package/LICENSE +27 -0
- package/README.md +36 -0
- package/android/build.gradle +56 -0
- package/android/src/main/AndroidManifest.xml +1 -0
- package/android/src/main/java/app/edge/rndashshielded/RNDashShieldedModule.kt +215 -0
- package/android/src/main/java/app/edge/rndashshielded/RNDashShieldedPackage.kt +16 -0
- package/android/src/main/java/uniffi/dash/dash.kt +1665 -0
- package/android/src/main/jniLibs/arm64-v8a/libdashshielded.so +0 -0
- package/dash-shielded-native.podspec +32 -0
- package/ios/.uniffi-generated +1 -0
- package/ios/EdgeDashClient.swift +88 -0
- package/ios/RNDashShielded.m +83 -0
- package/ios/RNDashShielded.swift +214 -0
- package/ios/dash-shielded-native-Bridging-Header.h +2 -0
- package/ios/dash.swift +1124 -0
- package/ios/libdashshielded.xcframework/Info.plist +47 -0
- package/ios/libdashshielded.xcframework/ios-arm64/Headers/dashFFI.h +696 -0
- package/ios/libdashshielded.xcframework/ios-arm64/Headers/module.modulemap +7 -0
- package/ios/libdashshielded.xcframework/ios-arm64/libdashshielded.a +0 -0
- package/ios/libdashshielded.xcframework/ios-arm64-simulator/Headers/dashFFI.h +696 -0
- package/ios/libdashshielded.xcframework/ios-arm64-simulator/Headers/module.modulemap +7 -0
- package/ios/libdashshielded.xcframework/ios-arm64-simulator/libdashshielded.a +0 -0
- package/lib/load-addon.d.ts +34 -0
- package/lib/node.d.ts +50 -0
- package/lib/react-native.d.ts +31 -0
- package/lib/rndash.rn.js +267 -0
- package/lib/rndash.rn.js.map +1 -0
- package/lib/src/node.js +328 -0
- package/lib/src/node.js.map +1 -0
- package/lib/types.d.ts +73 -0
- package/node.d.ts +1 -0
- package/node.js +2 -0
- package/package.json +105 -0
- package/prebuilds/darwin-arm64/dashshielded.node +0 -0
- package/rust/Cargo.lock +6795 -0
- package/rust/Cargo.toml +63 -0
- package/rust/build.rs +7 -0
- package/rust/rust-toolchain.toml +3 -0
- package/rust/src/dash.udl +90 -0
- package/rust/src/lib.rs +16 -0
- package/rust/src/napi_api.rs +164 -0
- package/rust/src/uniffi_api.rs +116 -0
- package/rust/src/wallet.rs +888 -0
- package/rust/uniffi-bindgen.rs +3 -0
- package/src/load-addon.ts +99 -0
- package/src/node.ts +248 -0
- package/src/react-native.ts +212 -0
- package/src/types.ts +88 -0
|
Binary file
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
require "json"
|
|
2
|
+
|
|
3
|
+
package = JSON.parse(File.read(File.join(__dir__, "package.json")))
|
|
4
|
+
|
|
5
|
+
Pod::Spec.new do |s|
|
|
6
|
+
s.name = package['name']
|
|
7
|
+
s.version = package['version']
|
|
8
|
+
s.summary = package['description']
|
|
9
|
+
s.homepage = package['homepage']
|
|
10
|
+
s.license = package['license']
|
|
11
|
+
s.authors = package['author']
|
|
12
|
+
|
|
13
|
+
s.platform = :ios, "13.0"
|
|
14
|
+
s.source = {
|
|
15
|
+
:git => "https://github.com/EdgeApp/dash-shielded-native.git",
|
|
16
|
+
:tag => "v#{s.version}"
|
|
17
|
+
}
|
|
18
|
+
s.source_files =
|
|
19
|
+
"ios/dash-shielded-native-Bridging-Header.h",
|
|
20
|
+
"ios/RNDashShielded.m",
|
|
21
|
+
"ios/RNDashShielded.swift",
|
|
22
|
+
"ios/EdgeDashClient.swift",
|
|
23
|
+
"ios/dash.swift"
|
|
24
|
+
s.vendored_frameworks = "ios/libdashshielded.xcframework"
|
|
25
|
+
s.pod_target_xcconfig = {
|
|
26
|
+
'SWIFT_INCLUDE_PATHS' => '"${PODS_XCFRAMEWORKS_BUILD_DIR}/dash-shielded-native/Headers"',
|
|
27
|
+
'OTHER_LDFLAGS' => '-lc++'
|
|
28
|
+
}
|
|
29
|
+
s.libraries = "c++"
|
|
30
|
+
|
|
31
|
+
s.dependency "React-Core"
|
|
32
|
+
end
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
dash.swift dashFFI.h from rust/src/dash.udl
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import Foundation
|
|
2
|
+
|
|
3
|
+
/// Thin names over the UniFFI `dash` namespace so RNDashShielded can keep
|
|
4
|
+
/// Objective-C selector names without shadowing the Rust functions.
|
|
5
|
+
enum EdgeDashClient {
|
|
6
|
+
static func rustSetDocumentDirectory(path: String) throws {
|
|
7
|
+
try setDocumentDirectory(path: path)
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
static func rustInitialize(
|
|
11
|
+
mnemonicSeed: String,
|
|
12
|
+
account: UInt32,
|
|
13
|
+
alias: String,
|
|
14
|
+
networkName: String,
|
|
15
|
+
defaultHost: String,
|
|
16
|
+
defaultPort: UInt32
|
|
17
|
+
) throws {
|
|
18
|
+
try initialize(
|
|
19
|
+
mnemonicSeed: mnemonicSeed,
|
|
20
|
+
account: account,
|
|
21
|
+
alias: alias,
|
|
22
|
+
networkName: networkName,
|
|
23
|
+
defaultHost: defaultHost,
|
|
24
|
+
defaultPort: defaultPort
|
|
25
|
+
)
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
static func rustStop(alias: String) throws -> String {
|
|
29
|
+
try stop(alias: alias)
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
static func rustStartSync(alias: String) throws {
|
|
33
|
+
try startSync(alias: alias)
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
static func rustStopSync(alias: String) throws {
|
|
37
|
+
try stopSync(alias: alias)
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
static func rustDeriveShieldedAddress(alias: String) throws -> Addresses {
|
|
41
|
+
try deriveShieldedAddress(alias: alias)
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
static func rustIsValidAddress(address: String, network: String) -> Bool {
|
|
45
|
+
isValidAddress(address: address, network: network)
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
static func rustDeriveViewingKey(mnemonicSeed: String, network: String) throws -> String {
|
|
49
|
+
try deriveViewingKey(mnemonicSeed: mnemonicSeed, network: network)
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
static func rustWarmUpProver() throws {
|
|
53
|
+
try warmUpProver()
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
static func rustIsProverReady() -> Bool {
|
|
57
|
+
isProverReady()
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
static func rustPoll(alias: String) throws -> Poll {
|
|
61
|
+
try poll(alias: alias)
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
static func rustProposeTransfer(
|
|
65
|
+
alias: String, amountCredits: String, toAddress: String, memo: String?
|
|
66
|
+
) throws -> String {
|
|
67
|
+
try proposeTransfer(
|
|
68
|
+
alias: alias,
|
|
69
|
+
amountCredits: amountCredits,
|
|
70
|
+
toAddress: toAddress,
|
|
71
|
+
memo: memo
|
|
72
|
+
)
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
static func rustCreateTransfer(
|
|
76
|
+
alias: String, proposalId: String, mnemonicSeed: String
|
|
77
|
+
) throws -> String {
|
|
78
|
+
try createTransfer(
|
|
79
|
+
alias: alias, proposalId: proposalId, mnemonicSeed: mnemonicSeed)
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
static func rustDeriveShieldedAddressFromSeed(
|
|
83
|
+
mnemonicSeed: String, network: String, account: UInt32
|
|
84
|
+
) throws -> String {
|
|
85
|
+
try deriveShieldedAddressFromSeed(
|
|
86
|
+
mnemonicSeed: mnemonicSeed, network: network, account: account)
|
|
87
|
+
}
|
|
88
|
+
}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
#import <React/RCTBridgeModule.h>
|
|
2
|
+
#import <React/RCTEventEmitter.h>
|
|
3
|
+
|
|
4
|
+
@interface RCT_EXTERN_MODULE(RNDashShielded, RCTEventEmitter<RCTBridgeModule>)
|
|
5
|
+
|
|
6
|
+
RCT_EXTERN_METHOD(initialize:(NSString *)seed
|
|
7
|
+
:(NSInteger *)account
|
|
8
|
+
:(NSString *)alias
|
|
9
|
+
:(NSString *)networkName
|
|
10
|
+
:(NSString *)defaultHost
|
|
11
|
+
:(NSInteger *)defaultPort
|
|
12
|
+
resolver:(RCTPromiseResolveBlock)resolve
|
|
13
|
+
rejecter:(RCTPromiseRejectBlock)reject
|
|
14
|
+
)
|
|
15
|
+
|
|
16
|
+
RCT_EXTERN_METHOD(stop:(NSString *)alias
|
|
17
|
+
resolver:(RCTPromiseResolveBlock)resolve
|
|
18
|
+
rejecter:(RCTPromiseRejectBlock)reject
|
|
19
|
+
)
|
|
20
|
+
|
|
21
|
+
RCT_EXTERN_METHOD(startSync:(NSString *)alias
|
|
22
|
+
resolver:(RCTPromiseResolveBlock)resolve
|
|
23
|
+
rejecter:(RCTPromiseRejectBlock)reject
|
|
24
|
+
)
|
|
25
|
+
|
|
26
|
+
RCT_EXTERN_METHOD(stopSync:(NSString *)alias
|
|
27
|
+
resolver:(RCTPromiseResolveBlock)resolve
|
|
28
|
+
rejecter:(RCTPromiseRejectBlock)reject
|
|
29
|
+
)
|
|
30
|
+
|
|
31
|
+
RCT_EXTERN_METHOD(deriveShieldedAddress:(NSString *)alias
|
|
32
|
+
resolver:(RCTPromiseResolveBlock)resolve
|
|
33
|
+
rejecter:(RCTPromiseRejectBlock)reject
|
|
34
|
+
)
|
|
35
|
+
|
|
36
|
+
RCT_EXTERN_METHOD(deriveShieldedAddressFromSeed:(NSString *)seed
|
|
37
|
+
:(NSString *)network
|
|
38
|
+
:(NSInteger *)account
|
|
39
|
+
resolver:(RCTPromiseResolveBlock)resolve
|
|
40
|
+
rejecter:(RCTPromiseRejectBlock)reject
|
|
41
|
+
)
|
|
42
|
+
|
|
43
|
+
RCT_EXTERN_METHOD(isValidAddress:(NSString *)address
|
|
44
|
+
:(NSString *)network
|
|
45
|
+
resolver:(RCTPromiseResolveBlock)resolve
|
|
46
|
+
rejecter:(RCTPromiseRejectBlock)reject
|
|
47
|
+
)
|
|
48
|
+
|
|
49
|
+
RCT_EXTERN_METHOD(deriveViewingKey:(NSString *)seed
|
|
50
|
+
:(NSString *)network
|
|
51
|
+
resolver:(RCTPromiseResolveBlock)resolve
|
|
52
|
+
rejecter:(RCTPromiseRejectBlock)reject
|
|
53
|
+
)
|
|
54
|
+
|
|
55
|
+
RCT_EXTERN_METHOD(warmUpProver:(RCTPromiseResolveBlock)resolve
|
|
56
|
+
rejecter:(RCTPromiseRejectBlock)reject
|
|
57
|
+
)
|
|
58
|
+
|
|
59
|
+
RCT_EXTERN_METHOD(isProverReady:(RCTPromiseResolveBlock)resolve
|
|
60
|
+
rejecter:(RCTPromiseRejectBlock)reject
|
|
61
|
+
)
|
|
62
|
+
|
|
63
|
+
RCT_EXTERN_METHOD(poll:(NSString *)alias
|
|
64
|
+
resolver:(RCTPromiseResolveBlock)resolve
|
|
65
|
+
rejecter:(RCTPromiseRejectBlock)reject
|
|
66
|
+
)
|
|
67
|
+
|
|
68
|
+
RCT_EXTERN_METHOD(proposeTransfer:(NSString *)alias
|
|
69
|
+
:(NSString *)amountCredits
|
|
70
|
+
:(NSString *)toAddress
|
|
71
|
+
:(NSString *)memo
|
|
72
|
+
resolver:(RCTPromiseResolveBlock)resolve
|
|
73
|
+
rejecter:(RCTPromiseRejectBlock)reject
|
|
74
|
+
)
|
|
75
|
+
|
|
76
|
+
RCT_EXTERN_METHOD(createTransfer:(NSString *)alias
|
|
77
|
+
:(NSString *)proposalId
|
|
78
|
+
:(NSString *)seed
|
|
79
|
+
resolver:(RCTPromiseResolveBlock)resolve
|
|
80
|
+
rejecter:(RCTPromiseRejectBlock)reject
|
|
81
|
+
)
|
|
82
|
+
|
|
83
|
+
@end
|
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
import Foundation
|
|
2
|
+
|
|
3
|
+
@objc(RNDashShielded)
|
|
4
|
+
class RNDashShielded: RCTEventEmitter {
|
|
5
|
+
private static var didSetDocumentDirectory = false
|
|
6
|
+
|
|
7
|
+
override static func requiresMainQueueSetup() -> Bool {
|
|
8
|
+
return true
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
private func ensureDocumentDirectory() throws {
|
|
12
|
+
if RNDashShielded.didSetDocumentDirectory {
|
|
13
|
+
return
|
|
14
|
+
}
|
|
15
|
+
let root = try FileManager.default.url(
|
|
16
|
+
for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: true)
|
|
17
|
+
let path = root.appendingPathComponent("native/dashshielded", isDirectory: true).path
|
|
18
|
+
try EdgeDashClient.rustSetDocumentDirectory(path: path)
|
|
19
|
+
RNDashShielded.didSetDocumentDirectory = true
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
private func run(
|
|
23
|
+
_ resolve: @escaping RCTPromiseResolveBlock,
|
|
24
|
+
_ reject: @escaping RCTPromiseRejectBlock,
|
|
25
|
+
_ name: String,
|
|
26
|
+
_ body: @escaping () throws -> Any?
|
|
27
|
+
) {
|
|
28
|
+
DispatchQueue.global(qos: .userInitiated).async {
|
|
29
|
+
do {
|
|
30
|
+
try self.ensureDocumentDirectory()
|
|
31
|
+
let value = try body()
|
|
32
|
+
resolve(value)
|
|
33
|
+
} catch {
|
|
34
|
+
reject(name, error.localizedDescription, error)
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
private func pollDictionary(_ snap: Poll) -> NSDictionary {
|
|
40
|
+
let transactions: [NSDictionary] = snap.transactions.map { tx in
|
|
41
|
+
var dict: [String: Any] = [
|
|
42
|
+
"txid": tx.txid,
|
|
43
|
+
"blockTimeInSeconds": tx.blockTimeInSeconds,
|
|
44
|
+
"minedHeight": tx.minedHeight,
|
|
45
|
+
"value": tx.value,
|
|
46
|
+
"memos": tx.memos,
|
|
47
|
+
]
|
|
48
|
+
if let fee = tx.fee {
|
|
49
|
+
dict["fee"] = fee
|
|
50
|
+
}
|
|
51
|
+
if let toAddress = tx.toAddress {
|
|
52
|
+
dict["toAddress"] = toAddress
|
|
53
|
+
}
|
|
54
|
+
return dict as NSDictionary
|
|
55
|
+
}
|
|
56
|
+
return [
|
|
57
|
+
"alias": snap.alias,
|
|
58
|
+
"status": snap.status,
|
|
59
|
+
"scanProgress": snap.scanProgress,
|
|
60
|
+
"networkBlockHeight": snap.networkBlockHeight,
|
|
61
|
+
"availableCredits": snap.availableCredits,
|
|
62
|
+
"totalCredits": snap.totalCredits,
|
|
63
|
+
"transactions": transactions,
|
|
64
|
+
] as NSDictionary
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
@objc func initialize(
|
|
68
|
+
_ seed: String, _ account: Int, _ alias: String, _ networkName: String,
|
|
69
|
+
_ defaultHost: String, _ defaultPort: Int,
|
|
70
|
+
resolver resolve: @escaping RCTPromiseResolveBlock,
|
|
71
|
+
rejecter reject: @escaping RCTPromiseRejectBlock
|
|
72
|
+
) {
|
|
73
|
+
run(resolve, reject, "initialize") {
|
|
74
|
+
try EdgeDashClient.rustInitialize(
|
|
75
|
+
mnemonicSeed: seed,
|
|
76
|
+
account: UInt32(account),
|
|
77
|
+
alias: alias,
|
|
78
|
+
networkName: networkName,
|
|
79
|
+
defaultHost: defaultHost,
|
|
80
|
+
defaultPort: UInt32(defaultPort)
|
|
81
|
+
)
|
|
82
|
+
return nil
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
@objc func stop(
|
|
87
|
+
_ alias: String,
|
|
88
|
+
resolver resolve: @escaping RCTPromiseResolveBlock,
|
|
89
|
+
rejecter reject: @escaping RCTPromiseRejectBlock
|
|
90
|
+
) {
|
|
91
|
+
run(resolve, reject, "stop") {
|
|
92
|
+
try EdgeDashClient.rustStop(alias: alias)
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
@objc func startSync(
|
|
97
|
+
_ alias: String,
|
|
98
|
+
resolver resolve: @escaping RCTPromiseResolveBlock,
|
|
99
|
+
rejecter reject: @escaping RCTPromiseRejectBlock
|
|
100
|
+
) {
|
|
101
|
+
run(resolve, reject, "startSync") {
|
|
102
|
+
try EdgeDashClient.rustStartSync(alias: alias)
|
|
103
|
+
return nil
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
@objc func stopSync(
|
|
108
|
+
_ alias: String,
|
|
109
|
+
resolver resolve: @escaping RCTPromiseResolveBlock,
|
|
110
|
+
rejecter reject: @escaping RCTPromiseRejectBlock
|
|
111
|
+
) {
|
|
112
|
+
run(resolve, reject, "stopSync") {
|
|
113
|
+
try EdgeDashClient.rustStopSync(alias: alias)
|
|
114
|
+
return nil
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
@objc func deriveShieldedAddress(
|
|
119
|
+
_ alias: String,
|
|
120
|
+
resolver resolve: @escaping RCTPromiseResolveBlock,
|
|
121
|
+
rejecter reject: @escaping RCTPromiseRejectBlock
|
|
122
|
+
) {
|
|
123
|
+
run(resolve, reject, "deriveShieldedAddress") {
|
|
124
|
+
let addresses = try EdgeDashClient.rustDeriveShieldedAddress(alias: alias)
|
|
125
|
+
return ["shieldedAddress": addresses.shieldedAddress]
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
@objc func deriveShieldedAddressFromSeed(
|
|
130
|
+
_ seed: String, _ network: String, _ account: Int,
|
|
131
|
+
resolver resolve: @escaping RCTPromiseResolveBlock,
|
|
132
|
+
rejecter reject: @escaping RCTPromiseRejectBlock
|
|
133
|
+
) {
|
|
134
|
+
run(resolve, reject, "deriveShieldedAddressFromSeed") {
|
|
135
|
+
try EdgeDashClient.rustDeriveShieldedAddressFromSeed(
|
|
136
|
+
mnemonicSeed: seed, network: network, account: UInt32(account))
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
@objc func isValidAddress(
|
|
141
|
+
_ address: String, _ network: String,
|
|
142
|
+
resolver resolve: @escaping RCTPromiseResolveBlock,
|
|
143
|
+
rejecter reject: @escaping RCTPromiseRejectBlock
|
|
144
|
+
) {
|
|
145
|
+
run(resolve, reject, "isValidAddress") {
|
|
146
|
+
EdgeDashClient.rustIsValidAddress(address: address, network: network)
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
@objc func deriveViewingKey(
|
|
151
|
+
_ seed: String, _ network: String,
|
|
152
|
+
resolver resolve: @escaping RCTPromiseResolveBlock,
|
|
153
|
+
rejecter reject: @escaping RCTPromiseRejectBlock
|
|
154
|
+
) {
|
|
155
|
+
run(resolve, reject, "deriveViewingKey") {
|
|
156
|
+
try EdgeDashClient.rustDeriveViewingKey(mnemonicSeed: seed, network: network)
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
@objc func warmUpProver(
|
|
161
|
+
_ resolve: @escaping RCTPromiseResolveBlock,
|
|
162
|
+
rejecter reject: @escaping RCTPromiseRejectBlock
|
|
163
|
+
) {
|
|
164
|
+
run(resolve, reject, "warmUpProver") {
|
|
165
|
+
try EdgeDashClient.rustWarmUpProver()
|
|
166
|
+
return nil
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
@objc func isProverReady(
|
|
171
|
+
_ resolve: @escaping RCTPromiseResolveBlock,
|
|
172
|
+
rejecter reject: @escaping RCTPromiseRejectBlock
|
|
173
|
+
) {
|
|
174
|
+
run(resolve, reject, "isProverReady") {
|
|
175
|
+
EdgeDashClient.rustIsProverReady()
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
@objc func poll(
|
|
180
|
+
_ alias: String,
|
|
181
|
+
resolver resolve: @escaping RCTPromiseResolveBlock,
|
|
182
|
+
rejecter reject: @escaping RCTPromiseRejectBlock
|
|
183
|
+
) {
|
|
184
|
+
run(resolve, reject, "poll") {
|
|
185
|
+
try self.pollDictionary(EdgeDashClient.rustPoll(alias: alias))
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
@objc func proposeTransfer(
|
|
190
|
+
_ alias: String, _ amountCredits: String, _ toAddress: String, _ memo: String,
|
|
191
|
+
resolver resolve: @escaping RCTPromiseResolveBlock,
|
|
192
|
+
rejecter reject: @escaping RCTPromiseRejectBlock
|
|
193
|
+
) {
|
|
194
|
+
run(resolve, reject, "proposeTransfer") {
|
|
195
|
+
try EdgeDashClient.rustProposeTransfer(
|
|
196
|
+
alias: alias,
|
|
197
|
+
amountCredits: amountCredits,
|
|
198
|
+
toAddress: toAddress,
|
|
199
|
+
memo: memo.isEmpty ? nil : memo
|
|
200
|
+
)
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
@objc func createTransfer(
|
|
205
|
+
_ alias: String, _ proposalId: String, _ seed: String,
|
|
206
|
+
resolver resolve: @escaping RCTPromiseResolveBlock,
|
|
207
|
+
rejecter reject: @escaping RCTPromiseRejectBlock
|
|
208
|
+
) {
|
|
209
|
+
run(resolve, reject, "createTransfer") {
|
|
210
|
+
try EdgeDashClient.rustCreateTransfer(
|
|
211
|
+
alias: alias, proposalId: proposalId, mnemonicSeed: seed)
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
}
|