react-native-candle 0.1.20 → 0.1.21

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 (35) hide show
  1. package/ReactNativeCandle.podspec +1 -1
  2. package/ios/Sources/CandleActionViewModel.swift +13 -0
  3. package/ios/Sources/CandleTradeExecutionSheetWrapper.swift +31 -0
  4. package/ios/Sources/HostingViewController.swift +7 -0
  5. package/ios/Sources/RNCandle.swift +166 -39
  6. package/lib/commonjs/index.js +77 -13
  7. package/lib/commonjs/index.js.map +1 -1
  8. package/lib/module/index.js +77 -13
  9. package/lib/module/index.js.map +1 -1
  10. package/lib/typescript/commonjs/src/index.d.ts +21 -7
  11. package/lib/typescript/commonjs/src/index.d.ts.map +1 -1
  12. package/lib/typescript/commonjs/src/specs/RNCandle.nitro.d.ts +6 -1
  13. package/lib/typescript/commonjs/src/specs/RNCandle.nitro.d.ts.map +1 -1
  14. package/lib/typescript/module/src/index.d.ts +21 -7
  15. package/lib/typescript/module/src/index.d.ts.map +1 -1
  16. package/lib/typescript/module/src/specs/RNCandle.nitro.d.ts +6 -1
  17. package/lib/typescript/module/src/specs/RNCandle.nitro.d.ts.map +1 -1
  18. package/nitrogen/generated/ios/ReactNativeCandle-Swift-Cxx-Bridge.cpp +8 -0
  19. package/nitrogen/generated/ios/ReactNativeCandle-Swift-Cxx-Bridge.hpp +115 -81
  20. package/nitrogen/generated/ios/ReactNativeCandle-Swift-Cxx-Umbrella.hpp +3 -3
  21. package/nitrogen/generated/ios/c++/HybridRNCandleSpecSwift.hpp +57 -59
  22. package/nitrogen/generated/ios/swift/Func_void_TradeExecutionResult.swift +46 -0
  23. package/nitrogen/generated/ios/swift/HybridRNCandleSpec.swift +3 -1
  24. package/nitrogen/generated/ios/swift/HybridRNCandleSpec_cxx.swift +23 -21
  25. package/nitrogen/generated/ios/swift/TradeExecutionResult.swift +82 -0
  26. package/nitrogen/generated/ios/swift/TradeQuote.swift +13 -2
  27. package/nitrogen/generated/shared/c++/HybridRNCandleSpec.cpp +1 -1
  28. package/nitrogen/generated/shared/c++/HybridRNCandleSpec.hpp +7 -7
  29. package/nitrogen/generated/shared/c++/TradeExecutionResult.hpp +76 -0
  30. package/nitrogen/generated/shared/c++/TradeQuote.hpp +7 -2
  31. package/package.json +1 -1
  32. package/src/index.ts +88 -20
  33. package/src/specs/RNCandle.nitro.ts +11 -1
  34. package/nitrogen/generated/ios/swift/ExecuteTradeRequest.swift +0 -44
  35. package/nitrogen/generated/shared/c++/ExecuteTradeRequest.hpp +0 -73
@@ -30,7 +30,7 @@ Pod::Spec.new do |s|
30
30
  load 'nitrogen/generated/ios/ReactNativeCandle+autolinking.rb'
31
31
  add_nitrogen_files(s)
32
32
 
33
- s.dependency 'Candle', '3.0.247-beta'
33
+ s.dependency 'Candle', '3.0.258-beta'
34
34
  s.dependency 'React-jsi'
35
35
  s.dependency 'React-callinvoker'
36
36
  install_modules_dependencies(s)
@@ -0,0 +1,13 @@
1
+ import Candle
2
+ import Combine
3
+
4
+ @available(iOS 17.0, *)
5
+ final class CandleActionViewModel: ObservableObject {
6
+
7
+ @Published var tradeQuote: Models.TradeQuote?
8
+ @Published var tradeResult: Result<Candle.Models.Trade, Candle.Models.ExecuteTrade.Error>?
9
+
10
+ init(tradeQuote: Models.TradeQuote?) {
11
+ self.tradeQuote = tradeQuote
12
+ }
13
+ }
@@ -0,0 +1,31 @@
1
+ import Candle
2
+ import SwiftUI
3
+
4
+ @available(iOS 17.0, *)
5
+ struct CandleTradeExecutionSheetWrapper: View {
6
+
7
+ let candleClient: CandleClient
8
+
9
+ @ObservedObject var viewModel: CandleActionViewModel
10
+ let presentationBackground: PresentationBackground
11
+
12
+ var toCandlePresentationBackground: AnyShapeStyle {
13
+ switch presentationBackground {
14
+ case .default:
15
+ return AnyShapeStyle(Material.regular)
16
+ case .blur:
17
+ return AnyShapeStyle(Material.ultraThick)
18
+ }
19
+ }
20
+
21
+ var body: some View {
22
+ Color.clear
23
+ .candleTradeExecutionSheet(
24
+ item: $viewModel.tradeQuote,
25
+ presentationBackground: toCandlePresentationBackground
26
+ ) { result in
27
+ viewModel.tradeResult = result
28
+ }
29
+ .environment(candleClient)
30
+ }
31
+ }
@@ -8,6 +8,13 @@ extension UIViewController {
8
8
  child.view.pinEdges(to: view)
9
9
  child.didMove(toParent: self)
10
10
  }
11
+
12
+ func embedOnTop(_ child: UIViewController) {
13
+ addChild(child)
14
+ view.insertSubview(child.view, aboveSubview: view)
15
+ child.view.pinEdges(to: view)
16
+ child.didMove(toParent: self)
17
+ }
11
18
  }
12
19
 
13
20
  extension UIView {
@@ -91,6 +91,69 @@ final class HybridRNCandle: HybridRNCandleSpec {
91
91
  }
92
92
  }
93
93
 
94
+ public func candleTradeExecutionSheet(
95
+ tradeQuote: TradeQuote,
96
+ presentationBackground: PresentationBackground,
97
+ completion: @escaping (TradeExecutionResult) -> Void
98
+ ) throws {
99
+ Task { @MainActor in
100
+ let wrapperView = CandleTradeExecutionSheetWrapper(
101
+ candleClient: try viewModel.candleClient,
102
+ viewModel: .init(tradeQuote: nil),
103
+ presentationBackground: presentationBackground
104
+ )
105
+
106
+ let hostingVC = UIHostingController(rootView: wrapperView)
107
+ hostingVC.view.backgroundColor = .clear
108
+ guard
109
+ let rootHostingVC = UIApplication.keyWindow?
110
+ .rootViewController
111
+ else {
112
+ throw RNClientError.badInitialization(
113
+ message:
114
+ "\(#function) \(#line): Candle client was not initialized."
115
+ )
116
+ }
117
+ rootHostingVC.embedOnTop(hostingVC)
118
+ let tradeQuote = try tradeQuote.toCandleModel
119
+ DispatchQueue.main.asyncAfter(deadline: .now() + 0.2) {
120
+ wrapperView.viewModel.tradeQuote = tradeQuote
121
+ }
122
+ wrapperView.viewModel.$tradeQuote
123
+ .dropFirst()
124
+ .receive(on: RunLoop.main)
125
+ .sink { [weak hostingVC] trade in
126
+ if trade == nil {
127
+ DispatchQueue.main.asyncAfter(deadline: .now() + 0.3) {
128
+ hostingVC?.willMove(toParent: nil)
129
+ hostingVC?.view.removeFromSuperview()
130
+ hostingVC?.removeFromParent()
131
+ }
132
+ }
133
+ }
134
+ .store(in: &cancellables)
135
+
136
+ wrapperView.viewModel.$tradeResult
137
+ .receive(on: RunLoop.main)
138
+ .sink { result in
139
+ switch result {
140
+ case .success(let trade):
141
+ completion(
142
+ .init(
143
+ trade: trade.toTrade,
144
+ error: nil
145
+ )
146
+ )
147
+ case .failure(let error):
148
+ completion(.init(trade: nil, error: "We encountered an error: \(error)"))
149
+ case .none:
150
+ break
151
+ }
152
+ }
153
+ .store(in: &cancellables)
154
+ }
155
+ }
156
+
94
157
  // MARK: - Public
95
158
 
96
159
  public func unlinkAccount(ref: LinkedAccountRef) throws -> Promise<Void> {
@@ -152,13 +215,7 @@ final class HybridRNCandle: HybridRNCandleSpec {
152
215
  gained: try ref.gained.toTradeAssetRef
153
216
  )
154
217
  )
155
- return Trade(
156
- dateTime: trade.dateTime,
157
- state: trade.state.toRNModel,
158
- counterparty: trade.toCounterparty,
159
- lost: trade.lost.toAsset,
160
- gained: trade.gained.toAsset
161
- )
218
+ return trade.toTrade
162
219
  }
163
220
  }
164
221
 
@@ -172,15 +229,7 @@ final class HybridRNCandle: HybridRNCandleSpec {
172
229
  lostAssetKind: query.toLostAssetKind,
173
230
  counterpartyKind: query.toCounterpartyKindPayload
174
231
  ))
175
- return trades.map { trade in
176
- return Trade(
177
- dateTime: trade.dateTime,
178
- state: trade.state.toRNModel,
179
- counterparty: trade.toCounterparty,
180
- lost: trade.lost.toAsset,
181
- gained: trade.gained.toAsset
182
- )
183
- }
232
+ return trades.map(\.toTrade)
184
233
  }
185
234
  }
186
235
 
@@ -198,31 +247,13 @@ final class HybridRNCandle: HybridRNCandleSpec {
198
247
  return accounts.map { account in
199
248
  TradeQuote(
200
249
  lost: account.lost.toAsset,
201
- gained: account.gained.toAsset
250
+ gained: account.gained.toAsset,
251
+ context: account.context
202
252
  )
203
253
  }
204
254
  }
205
255
  }
206
256
 
207
- public func executeTrade(request: ExecuteTradeRequest) throws -> Promise<
208
- Trade
209
- > {
210
- .async {
211
- let trade = try await self.viewModel.candleClient.executeTrade(
212
- context: .init(
213
- linkedAccountID: request.linkedAccountID,
214
- context: request.context)
215
- )
216
- return Trade(
217
- dateTime: trade.dateTime,
218
- state: trade.state.toRNModel,
219
- counterparty: trade.toCounterparty,
220
- lost: trade.lost.toAsset,
221
- gained: trade.gained.toAsset
222
- )
223
- }
224
- }
225
-
226
257
  public func deleteUser() throws -> Promise<Void> {
227
258
  .async {
228
259
  try await self.viewModel.candleClient.deleteUser()
@@ -489,6 +520,18 @@ extension Models.TradeAsset {
489
520
  }
490
521
  }
491
522
 
523
+ extension Models.Trade {
524
+ var toTrade: Trade {
525
+ .init(
526
+ dateTime: dateTime,
527
+ state: state.toRNModel,
528
+ counterparty: toCounterparty,
529
+ lost: lost.toAsset,
530
+ gained: gained.toAsset
531
+ )
532
+ }
533
+ }
534
+
492
535
  extension TradeQuoteRequest {
493
536
  var toGained: Models.TradeAssetQuoteRequest {
494
537
  get throws {
@@ -505,11 +548,15 @@ extension TradeQuoteRequest {
505
548
  } else if let marketAssetQuoteRequest = gained
506
549
  .marketAssetQuoteRequest
507
550
  {
551
+ guard
552
+ let assetKind = Models.MarketAssetQuoteRequest.AssetKindPayload(
553
+ rawValue: marketAssetQuoteRequest.assetKind)
554
+ else {
555
+ throw RNClientError.badEncoding
556
+ }
508
557
  return Models.TradeAssetQuoteRequest.MarketAssetQuoteRequest(
509
558
  .init(
510
- assetKind: .init(
511
- rawValue: marketAssetQuoteRequest.assetKind)
512
- ?? .stock,
559
+ assetKind: assetKind,
513
560
  serviceAccountID: marketAssetQuoteRequest
514
561
  .serviceAccountID,
515
562
  serviceAssetID: marketAssetQuoteRequest.serviceAssetID,
@@ -1078,3 +1125,83 @@ extension TradeAssetRef {
1078
1125
  }
1079
1126
  }
1080
1127
  }
1128
+
1129
+ extension TradeAsset {
1130
+ var toCandleModel: Models.TradeAsset {
1131
+ get throws {
1132
+ if let fiat = fiatAsset {
1133
+ return .FiatAsset(
1134
+ .init(
1135
+ assetKind: .fiat,
1136
+ serviceTradeID: fiat.serviceTradeID,
1137
+ serviceAccountID: fiat.serviceAccountID,
1138
+ currencyCode: fiat.currencyCode,
1139
+ amount: fiat.amount,
1140
+ linkedAccountID: fiat.linkedAccountID,
1141
+ service: fiat.service.toService
1142
+ )
1143
+ )
1144
+ } else if let market = marketTradeAsset {
1145
+ guard let assetKind = Models.MarketTradeAsset.AssetKindPayload(rawValue: market.assetKind)
1146
+ else {
1147
+ throw RNClientError.badEncoding
1148
+ }
1149
+ return .MarketTradeAsset(
1150
+ .init(
1151
+ assetKind: assetKind,
1152
+ serviceAccountID: market.serviceAccountID,
1153
+ serviceAssetID: market.serviceAssetID,
1154
+ symbol: market.symbol,
1155
+ amount: market.amount,
1156
+ serviceTradeID: market.serviceTradeID,
1157
+ linkedAccountID: market.linkedAccountID,
1158
+ service: market.service.toService,
1159
+ name: market.name,
1160
+ color: market.color,
1161
+ logoURL: market.logoURL
1162
+ )
1163
+ )
1164
+ } else if let transport = transportAsset {
1165
+ return .TransportAsset(
1166
+ .init(
1167
+ assetKind: .transport,
1168
+ serviceTradeID: transport.serviceTradeID,
1169
+ serviceAssetID: transport.serviceAssetID,
1170
+ name: transport.name,
1171
+ description: transport.description,
1172
+ imageURL: transport.imageURL,
1173
+ originCoordinates: .init(
1174
+ latitude: transport.originCoordinates.latitude,
1175
+ longitude: transport.originCoordinates.longitude
1176
+ ),
1177
+ originAddress: .init(value: transport.originAddress.value),
1178
+ destinationCoordinates: .init(
1179
+ latitude: transport.destinationCoordinates.latitude,
1180
+ longitude: transport.destinationCoordinates.longitude
1181
+ ),
1182
+ destinationAddress: .init(value: transport.destinationAddress.value),
1183
+ seats: transport.seats,
1184
+ linkedAccountID: transport.linkedAccountID,
1185
+ service: transport.service.toService
1186
+ )
1187
+ )
1188
+ } else if otherAsset != nil {
1189
+ return .OtherAsset(.init(assetKind: .other))
1190
+ } else {
1191
+ return .NothingAsset(.init(assetKind: .nothing))
1192
+ }
1193
+ }
1194
+ }
1195
+ }
1196
+
1197
+ extension TradeQuote {
1198
+ var toCandleModel: Models.TradeQuote {
1199
+ get throws {
1200
+ .init(
1201
+ lost: try lost.toCandleModel,
1202
+ gained: try gained.toCandleModel,
1203
+ context: context
1204
+ )
1205
+ }
1206
+ }
1207
+ }
@@ -11,6 +11,31 @@ class CandleClient {
11
11
  this.candle = CandleHybridObject;
12
12
  this.candle.initialize(appUser);
13
13
  }
14
+ presentTradeExecutionSheet(input) {
15
+ const quote = this.convertTradeQuote(input.tradeQuote);
16
+ this.candle.candleTradeExecutionSheet(quote, input.presentationBackground ?? "default", result => {
17
+ if (input.completion === undefined) {
18
+ return;
19
+ }
20
+ if (result.trade !== undefined) {
21
+ input.completion({
22
+ kind: "success",
23
+ ...result.trade,
24
+ counterparty: this.convertToCounterparty(result.trade.counterparty),
25
+ lost: this.convertTradeAsset(result.trade.lost),
26
+ gained: this.convertTradeAsset(result.trade.gained)
27
+ });
28
+ } else {
29
+ if (result.error === undefined) {
30
+ throw new Error("Internal Candle Error: corrupted trade execution result.");
31
+ }
32
+ input.completion({
33
+ kind: "failure",
34
+ error: result.error
35
+ });
36
+ }
37
+ });
38
+ }
14
39
  presentCandleLinkSheet({
15
40
  services = undefined,
16
41
  cornerRadius = 24,
@@ -58,16 +83,6 @@ class CandleClient {
58
83
  async getAvailableTools() {
59
84
  return this.candle.getAvailableTools();
60
85
  }
61
- async executeTrade(request) {
62
- const result = await this.candle.executeTrade(request);
63
- return {
64
- dateTime: result.dateTime,
65
- state: result.state,
66
- counterparty: this.convertToCounterparty(result.counterparty),
67
- lost: this.convertTradeAsset(result.lost),
68
- gained: this.convertTradeAsset(result.gained)
69
- };
70
- }
71
86
  async executeTool(tool) {
72
87
  return this.candle.executeTool(tool);
73
88
  }
@@ -140,7 +155,8 @@ class CandleClient {
140
155
  return quotes.map(quote => {
141
156
  return {
142
157
  gained: this.convertTradeAsset(quote.gained),
143
- lost: this.convertTradeAsset(quote.lost)
158
+ lost: this.convertTradeAsset(quote.lost),
159
+ context: quote.context
144
160
  };
145
161
  });
146
162
  }
@@ -185,6 +201,46 @@ class CandleClient {
185
201
  };
186
202
  }
187
203
  }
204
+ toInternalTradeAsset(asset) {
205
+ switch (asset.assetKind) {
206
+ case "fiat":
207
+ return {
208
+ fiatAsset: asset
209
+ };
210
+ case "stock":
211
+ case "crypto":
212
+ return {
213
+ marketTradeAsset: {
214
+ ...asset,
215
+ assetKind: asset.assetKind
216
+ }
217
+ };
218
+ case "transport":
219
+ return {
220
+ transportAsset: asset
221
+ };
222
+ case "other":
223
+ return {
224
+ otherAsset: asset
225
+ };
226
+ case "nothing":
227
+ return {
228
+ nothingAsset: asset
229
+ };
230
+ }
231
+ }
232
+ convertTradeQuote(tradeQuote) {
233
+ const {
234
+ context,
235
+ gained,
236
+ lost
237
+ } = tradeQuote;
238
+ return {
239
+ context,
240
+ gained: this.toInternalTradeAsset(gained),
241
+ lost: this.toInternalTradeAsset(lost)
242
+ };
243
+ }
188
244
  convertTradeAsset(tradeAsset) {
189
245
  if (tradeAsset.fiatAsset !== undefined) {
190
246
  return {
@@ -192,9 +248,10 @@ class CandleClient {
192
248
  assetKind: "fiat"
193
249
  };
194
250
  } else if (tradeAsset.marketTradeAsset !== undefined) {
251
+ this.assertMarketAssetKind(tradeAsset.marketTradeAsset.assetKind);
195
252
  return {
196
253
  ...tradeAsset.marketTradeAsset,
197
- assetKind: tradeAsset.marketTradeAsset.assetKind
254
+ assetKind: this.assertMarketAssetKind(tradeAsset.marketTradeAsset.assetKind)
198
255
  };
199
256
  } else if (tradeAsset.transportAsset !== undefined) {
200
257
  return {
@@ -233,6 +290,13 @@ class CandleClient {
233
290
  throw new Error("Unknown counterparty kind");
234
291
  }
235
292
  }
293
+ assertMarketAssetKind(kind) {
294
+ if (kind !== "stock" && kind !== "crypto") {
295
+ throw new Error("Internal Candle Error: corrupted market account.");
296
+ } else {
297
+ return kind;
298
+ }
299
+ }
236
300
  convertToAssetAccount(account) {
237
301
  const {
238
302
  legalAccountKind,
@@ -257,7 +321,7 @@ class CandleClient {
257
321
  nickname,
258
322
  details: {
259
323
  ...marketAccountDetails,
260
- assetKind: marketAccountDetails.assetKind
324
+ assetKind: this.assertMarketAssetKind(marketAccountDetails.assetKind)
261
325
  }
262
326
  };
263
327
  } else {
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNativeNitroModules","require","CandleClient","constructor","appUser","CandleHybridObject","NitroModules","createHybridObject","candle","initialize","presentCandleLinkSheet","services","undefined","cornerRadius","customerName","showDynamicLoading","presentationBackground","presentationStyle","onSuccess","candleLinkSheet","getLinkedAccounts","accounts","map","account","details","activeLinkedAccountDetails","state","inactiveLinkedAccountDetails","Error","getLinkedAccount","ref","unlinkAccount","path","deleteUser","getAvailableTools","executeTrade","request","result","dateTime","counterparty","convertToCounterparty","lost","convertTradeAsset","gained","executeTool","tool","getAssetAccounts","query","convertToAssetAccount","getAssetAccount","getTrades","trades","getTrade","input","trade","convertTradeAssetRef","getTradeQuotes","gainedRequest","assetKind","fiatAssetQuoteRequest","marketAssetQuoteRequest","transportAssetQuoteRequest","nothingAssetQuoteRequest","quotes","linkedAccountIDs","quote","tradeAssetRef","fiatAssetRef","linkedAccountID","serviceTradeID","marketTradeAssetRef","transportAssetRef","otherAssetRef","nothingAssetRef","tradeAsset","fiatAsset","marketTradeAsset","transportAsset","otherAsset","nothingAsset","merchantCounterparty","kind","userCounterparty","serviceCounterparty","legalAccountKind","nickname","fiatAccountDetails","marketAccountDetails","exports"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_reactNativeNitroModules","require","CandleClient","constructor","appUser","CandleHybridObject","NitroModules","createHybridObject","candle","initialize","presentTradeExecutionSheet","input","quote","convertTradeQuote","tradeQuote","candleTradeExecutionSheet","presentationBackground","result","completion","undefined","trade","kind","counterparty","convertToCounterparty","lost","convertTradeAsset","gained","error","Error","presentCandleLinkSheet","services","cornerRadius","customerName","showDynamicLoading","presentationStyle","onSuccess","candleLinkSheet","getLinkedAccounts","accounts","map","account","details","activeLinkedAccountDetails","state","inactiveLinkedAccountDetails","getLinkedAccount","ref","unlinkAccount","path","deleteUser","getAvailableTools","executeTool","tool","getAssetAccounts","query","convertToAssetAccount","getAssetAccount","getTrades","trades","dateTime","getTrade","convertTradeAssetRef","getTradeQuotes","request","gainedRequest","assetKind","fiatAssetQuoteRequest","marketAssetQuoteRequest","transportAssetQuoteRequest","nothingAssetQuoteRequest","quotes","linkedAccountIDs","context","tradeAssetRef","fiatAssetRef","linkedAccountID","serviceTradeID","marketTradeAssetRef","transportAssetRef","otherAssetRef","nothingAssetRef","toInternalTradeAsset","asset","fiatAsset","marketTradeAsset","transportAsset","otherAsset","nothingAsset","tradeAsset","assertMarketAssetKind","merchantCounterparty","userCounterparty","serviceCounterparty","legalAccountKind","nickname","fiatAccountDetails","marketAccountDetails","exports"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":"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","ignoreList":[]}
@@ -7,6 +7,31 @@ export class CandleClient {
7
7
  this.candle = CandleHybridObject;
8
8
  this.candle.initialize(appUser);
9
9
  }
10
+ presentTradeExecutionSheet(input) {
11
+ const quote = this.convertTradeQuote(input.tradeQuote);
12
+ this.candle.candleTradeExecutionSheet(quote, input.presentationBackground ?? "default", result => {
13
+ if (input.completion === undefined) {
14
+ return;
15
+ }
16
+ if (result.trade !== undefined) {
17
+ input.completion({
18
+ kind: "success",
19
+ ...result.trade,
20
+ counterparty: this.convertToCounterparty(result.trade.counterparty),
21
+ lost: this.convertTradeAsset(result.trade.lost),
22
+ gained: this.convertTradeAsset(result.trade.gained)
23
+ });
24
+ } else {
25
+ if (result.error === undefined) {
26
+ throw new Error("Internal Candle Error: corrupted trade execution result.");
27
+ }
28
+ input.completion({
29
+ kind: "failure",
30
+ error: result.error
31
+ });
32
+ }
33
+ });
34
+ }
10
35
  presentCandleLinkSheet({
11
36
  services = undefined,
12
37
  cornerRadius = 24,
@@ -54,16 +79,6 @@ export class CandleClient {
54
79
  async getAvailableTools() {
55
80
  return this.candle.getAvailableTools();
56
81
  }
57
- async executeTrade(request) {
58
- const result = await this.candle.executeTrade(request);
59
- return {
60
- dateTime: result.dateTime,
61
- state: result.state,
62
- counterparty: this.convertToCounterparty(result.counterparty),
63
- lost: this.convertTradeAsset(result.lost),
64
- gained: this.convertTradeAsset(result.gained)
65
- };
66
- }
67
82
  async executeTool(tool) {
68
83
  return this.candle.executeTool(tool);
69
84
  }
@@ -136,7 +151,8 @@ export class CandleClient {
136
151
  return quotes.map(quote => {
137
152
  return {
138
153
  gained: this.convertTradeAsset(quote.gained),
139
- lost: this.convertTradeAsset(quote.lost)
154
+ lost: this.convertTradeAsset(quote.lost),
155
+ context: quote.context
140
156
  };
141
157
  });
142
158
  }
@@ -181,6 +197,46 @@ export class CandleClient {
181
197
  };
182
198
  }
183
199
  }
200
+ toInternalTradeAsset(asset) {
201
+ switch (asset.assetKind) {
202
+ case "fiat":
203
+ return {
204
+ fiatAsset: asset
205
+ };
206
+ case "stock":
207
+ case "crypto":
208
+ return {
209
+ marketTradeAsset: {
210
+ ...asset,
211
+ assetKind: asset.assetKind
212
+ }
213
+ };
214
+ case "transport":
215
+ return {
216
+ transportAsset: asset
217
+ };
218
+ case "other":
219
+ return {
220
+ otherAsset: asset
221
+ };
222
+ case "nothing":
223
+ return {
224
+ nothingAsset: asset
225
+ };
226
+ }
227
+ }
228
+ convertTradeQuote(tradeQuote) {
229
+ const {
230
+ context,
231
+ gained,
232
+ lost
233
+ } = tradeQuote;
234
+ return {
235
+ context,
236
+ gained: this.toInternalTradeAsset(gained),
237
+ lost: this.toInternalTradeAsset(lost)
238
+ };
239
+ }
184
240
  convertTradeAsset(tradeAsset) {
185
241
  if (tradeAsset.fiatAsset !== undefined) {
186
242
  return {
@@ -188,9 +244,10 @@ export class CandleClient {
188
244
  assetKind: "fiat"
189
245
  };
190
246
  } else if (tradeAsset.marketTradeAsset !== undefined) {
247
+ this.assertMarketAssetKind(tradeAsset.marketTradeAsset.assetKind);
191
248
  return {
192
249
  ...tradeAsset.marketTradeAsset,
193
- assetKind: tradeAsset.marketTradeAsset.assetKind
250
+ assetKind: this.assertMarketAssetKind(tradeAsset.marketTradeAsset.assetKind)
194
251
  };
195
252
  } else if (tradeAsset.transportAsset !== undefined) {
196
253
  return {
@@ -229,6 +286,13 @@ export class CandleClient {
229
286
  throw new Error("Unknown counterparty kind");
230
287
  }
231
288
  }
289
+ assertMarketAssetKind(kind) {
290
+ if (kind !== "stock" && kind !== "crypto") {
291
+ throw new Error("Internal Candle Error: corrupted market account.");
292
+ } else {
293
+ return kind;
294
+ }
295
+ }
232
296
  convertToAssetAccount(account) {
233
297
  const {
234
298
  legalAccountKind,
@@ -253,7 +317,7 @@ export class CandleClient {
253
317
  nickname,
254
318
  details: {
255
319
  ...marketAccountDetails,
256
- assetKind: marketAccountDetails.assetKind
320
+ assetKind: this.assertMarketAssetKind(marketAccountDetails.assetKind)
257
321
  }
258
322
  };
259
323
  } else {