@ledgerhq/coin-canton 0.7.0-nightly.2 → 0.7.0-nightly.3
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/.turbo/turbo-build.log +1 -1
- package/CHANGELOG.md +17 -0
- package/lib/api/lastBlock.integ.test.js +0 -15
- package/lib/api/lastBlock.integ.test.js.map +1 -1
- package/lib/bridge/index.d.ts.map +1 -1
- package/lib/bridge/index.js +2 -5
- package/lib/bridge/index.js.map +1 -1
- package/lib/bridge/onboard.d.ts +11 -6
- package/lib/bridge/onboard.d.ts.map +1 -1
- package/lib/bridge/onboard.integ.test.js +49 -27
- package/lib/bridge/onboard.integ.test.js.map +1 -1
- package/lib/bridge/onboard.js +45 -152
- package/lib/bridge/onboard.js.map +1 -1
- package/lib/bridge/signOperation.d.ts.map +1 -1
- package/lib/bridge/signOperation.js +5 -5
- package/lib/bridge/signOperation.js.map +1 -1
- package/lib/bridge/sync.d.ts +3 -2
- package/lib/bridge/sync.d.ts.map +1 -1
- package/lib/bridge/sync.integ.test.js +31 -14
- package/lib/bridge/sync.integ.test.js.map +1 -1
- package/lib/bridge/sync.js +71 -57
- package/lib/bridge/sync.js.map +1 -1
- package/lib/common-logic/utils.js +2 -2
- package/lib/common-logic/utils.js.map +1 -1
- package/lib/common-logic/utils.test.js +21 -6
- package/lib/common-logic/utils.test.js.map +1 -1
- package/lib/config.d.ts +1 -1
- package/lib/config.d.ts.map +1 -1
- package/lib/network/gateway.d.ts +9 -9
- package/lib/network/gateway.d.ts.map +1 -1
- package/lib/network/gateway.integ.test.js +31 -17
- package/lib/network/gateway.integ.test.js.map +1 -1
- package/lib/network/gateway.js +33 -15
- package/lib/network/gateway.js.map +1 -1
- package/lib/types/bridge.d.ts +6 -16
- package/lib/types/bridge.d.ts.map +1 -1
- package/lib/types/onboard.d.ts +5 -5
- package/lib/types/onboard.d.ts.map +1 -1
- package/lib/types/onboard.js +10 -10
- package/lib/types/onboard.js.map +1 -1
- package/lib-es/api/lastBlock.integ.test.js +0 -15
- package/lib-es/api/lastBlock.integ.test.js.map +1 -1
- package/lib-es/bridge/index.d.ts.map +1 -1
- package/lib-es/bridge/index.js +3 -6
- package/lib-es/bridge/index.js.map +1 -1
- package/lib-es/bridge/onboard.d.ts +11 -6
- package/lib-es/bridge/onboard.d.ts.map +1 -1
- package/lib-es/bridge/onboard.integ.test.js +37 -15
- package/lib-es/bridge/onboard.integ.test.js.map +1 -1
- package/lib-es/bridge/onboard.js +44 -152
- package/lib-es/bridge/onboard.js.map +1 -1
- package/lib-es/bridge/signOperation.d.ts.map +1 -1
- package/lib-es/bridge/signOperation.js +5 -5
- package/lib-es/bridge/signOperation.js.map +1 -1
- package/lib-es/bridge/sync.d.ts +3 -2
- package/lib-es/bridge/sync.d.ts.map +1 -1
- package/lib-es/bridge/sync.integ.test.js +26 -9
- package/lib-es/bridge/sync.integ.test.js.map +1 -1
- package/lib-es/bridge/sync.js +71 -56
- package/lib-es/bridge/sync.js.map +1 -1
- package/lib-es/common-logic/utils.js +2 -2
- package/lib-es/common-logic/utils.js.map +1 -1
- package/lib-es/common-logic/utils.test.js +21 -6
- package/lib-es/common-logic/utils.test.js.map +1 -1
- package/lib-es/config.d.ts +1 -1
- package/lib-es/config.d.ts.map +1 -1
- package/lib-es/network/gateway.d.ts +9 -9
- package/lib-es/network/gateway.d.ts.map +1 -1
- package/lib-es/network/gateway.integ.test.js +31 -17
- package/lib-es/network/gateway.integ.test.js.map +1 -1
- package/lib-es/network/gateway.js +33 -15
- package/lib-es/network/gateway.js.map +1 -1
- package/lib-es/types/bridge.d.ts +6 -16
- package/lib-es/types/bridge.d.ts.map +1 -1
- package/lib-es/types/onboard.d.ts +5 -5
- package/lib-es/types/onboard.d.ts.map +1 -1
- package/lib-es/types/onboard.js +9 -9
- package/lib-es/types/onboard.js.map +1 -1
- package/package.json +5 -4
- package/src/api/lastBlock.integ.test.ts +0 -18
- package/src/bridge/index.ts +3 -6
- package/src/bridge/onboard.integ.test.ts +44 -31
- package/src/bridge/onboard.ts +61 -209
- package/src/bridge/signOperation.ts +5 -6
- package/src/bridge/sync.integ.test.ts +30 -10
- package/src/bridge/sync.ts +87 -72
- package/src/common-logic/utils.test.ts +21 -6
- package/src/common-logic/utils.ts +2 -2
- package/src/config.ts +1 -1
- package/src/network/gateway.integ.test.ts +48 -21
- package/src/network/gateway.ts +49 -34
- package/src/types/bridge.ts +8 -19
- package/src/types/onboard.ts +5 -5
- package/lib/bridge/serialization.d.ts +0 -4
- package/lib/bridge/serialization.d.ts.map +0 -1
- package/lib/bridge/serialization.js +0 -31
- package/lib/bridge/serialization.js.map +0 -1
- package/lib-es/bridge/serialization.d.ts +0 -4
- package/lib-es/bridge/serialization.d.ts.map +0 -1
- package/lib-es/bridge/serialization.js +0 -27
- package/lib-es/bridge/serialization.js.map +0 -1
- package/src/bridge/serialization.ts +0 -36
|
@@ -2,7 +2,7 @@ import network from "@ledgerhq/live-network";
|
|
|
2
2
|
import { getEnv } from "@ledgerhq/live-env";
|
|
3
3
|
import coinConfig from "../config";
|
|
4
4
|
const getGatewayUrl = (currency) => coinConfig.getCoinConfig(currency).gatewayUrl;
|
|
5
|
-
const getNodeId = (currency) => coinConfig.getCoinConfig(currency).nodeId || "ledger-devnet
|
|
5
|
+
const getNodeId = (currency) => coinConfig.getCoinConfig(currency).nodeId || "ledger-live-devnet";
|
|
6
6
|
const getNetworkType = (currency) => coinConfig.getCoinConfig(currency).networkType;
|
|
7
7
|
const gatewayNetwork = (req) => {
|
|
8
8
|
const API_KEY = getEnv("CANTON_API_KEY");
|
|
@@ -14,7 +14,7 @@ const gatewayNetwork = (req) => {
|
|
|
14
14
|
},
|
|
15
15
|
});
|
|
16
16
|
};
|
|
17
|
-
export async function prepareOnboarding(currency, pubKey
|
|
17
|
+
export async function prepareOnboarding(currency, pubKey) {
|
|
18
18
|
const gatewayUrl = getGatewayUrl(currency);
|
|
19
19
|
const nodeId = getNodeId(currency);
|
|
20
20
|
const fullUrl = `${gatewayUrl}/v1/node/${nodeId}/onboarding/prepare`;
|
|
@@ -23,22 +23,40 @@ export async function prepareOnboarding(currency, pubKey, pubKeyType) {
|
|
|
23
23
|
url: fullUrl,
|
|
24
24
|
data: {
|
|
25
25
|
public_key: pubKey,
|
|
26
|
-
public_key_type:
|
|
26
|
+
public_key_type: "ed25519",
|
|
27
27
|
},
|
|
28
28
|
});
|
|
29
29
|
return data;
|
|
30
30
|
}
|
|
31
|
-
export async function submitOnboarding(currency,
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
31
|
+
export async function submitOnboarding(currency, publicKey, prepareResponse, signature) {
|
|
32
|
+
try {
|
|
33
|
+
const { data } = await gatewayNetwork({
|
|
34
|
+
method: "POST",
|
|
35
|
+
url: `${getGatewayUrl(currency)}/v1/node/${getNodeId(currency)}/onboarding/submit`,
|
|
36
|
+
data: {
|
|
37
|
+
prepare_request: {
|
|
38
|
+
public_key: publicKey,
|
|
39
|
+
public_key_type: "ed25519",
|
|
40
|
+
},
|
|
41
|
+
prepare_response: prepareResponse,
|
|
42
|
+
signature,
|
|
43
|
+
},
|
|
44
|
+
});
|
|
45
|
+
return data;
|
|
46
|
+
}
|
|
47
|
+
catch (e) {
|
|
48
|
+
if (e instanceof Error && "type" in e && e.type === "PARTY_ALREADY_EXISTS") {
|
|
49
|
+
// eslint-disable-next-line @typescript-eslint/consistent-type-assertions
|
|
50
|
+
const { partyId } = e;
|
|
51
|
+
return {
|
|
52
|
+
party: {
|
|
53
|
+
party_id: partyId,
|
|
54
|
+
public_key: publicKey,
|
|
55
|
+
},
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
throw e;
|
|
59
|
+
}
|
|
42
60
|
}
|
|
43
61
|
export async function submit(currency, partyId, serialized, signature) {
|
|
44
62
|
const { data } = await gatewayNetwork({
|
|
@@ -96,7 +114,7 @@ export async function prepareTapRequest(currency, { partyId, amount = 1000000 })
|
|
|
96
114
|
method: "POST",
|
|
97
115
|
url: `${getGatewayUrl(currency)}/v1/node/${getNodeId(currency)}/party/${partyId}/transaction/prepare`,
|
|
98
116
|
data: {
|
|
99
|
-
amount:
|
|
117
|
+
amount: amount.toString(),
|
|
100
118
|
type: TransactionType.TAP_REQUEST,
|
|
101
119
|
},
|
|
102
120
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gateway.js","sourceRoot":"","sources":["../../src/network/gateway.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,wBAAwB,CAAC;AAE7C,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,UAAU,MAAM,WAAW,CAAC;AA+QnC,MAAM,aAAa,GAAG,CAAC,QAAwB,EAAE,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC;AAClG,MAAM,SAAS,GAAG,CAAC,QAAwB,EAAE,EAAE,CAC7C,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,MAAM,IAAI,
|
|
1
|
+
{"version":3,"file":"gateway.js","sourceRoot":"","sources":["../../src/network/gateway.ts"],"names":[],"mappings":"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"}
|
package/lib-es/types/bridge.d.ts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import type { BigNumber } from "bignumber.js";
|
|
2
2
|
import type { Observable } from "rxjs";
|
|
3
3
|
import type { Account, AccountRaw, CurrencyBridge, TransactionCommon, TransactionCommonRaw, TransactionStatusCommon, TransactionStatusCommonRaw } from "@ledgerhq/types-live";
|
|
4
|
-
import
|
|
5
|
-
import type {
|
|
4
|
+
import { CryptoCurrency } from "@ledgerhq/types-cryptoassets";
|
|
5
|
+
import type { CantonOnboardProgress, CantonOnboardResult, CantonAuthorizeProgress, CantonAuthorizeResult } from "./onboard";
|
|
6
6
|
export interface CantonCurrencyBridge extends CurrencyBridge {
|
|
7
|
-
onboardAccount: (currency: CryptoCurrency, deviceId: string,
|
|
8
|
-
authorizePreapproval: (currency: CryptoCurrency, deviceId: string,
|
|
7
|
+
onboardAccount: (currency: CryptoCurrency, deviceId: string, creatableAccount: Account) => Observable<CantonOnboardProgress | CantonOnboardResult>;
|
|
8
|
+
authorizePreapproval: (currency: CryptoCurrency, deviceId: string, creatableAccount: Account, partyId: string) => Observable<CantonAuthorizeProgress | CantonAuthorizeResult>;
|
|
9
9
|
}
|
|
10
10
|
export type NetworkInfo = {
|
|
11
11
|
family: "canton";
|
|
@@ -31,16 +31,6 @@ export type TransactionRaw = TransactionCommonRaw & {
|
|
|
31
31
|
};
|
|
32
32
|
export type TransactionStatus = TransactionStatusCommon;
|
|
33
33
|
export type TransactionStatusRaw = TransactionStatusCommonRaw;
|
|
34
|
-
export type
|
|
35
|
-
|
|
36
|
-
};
|
|
37
|
-
export type CantonResourcesRaw = {
|
|
38
|
-
partyId: string;
|
|
39
|
-
};
|
|
40
|
-
export type CantonAccount = Account & {
|
|
41
|
-
cantonResources?: CantonResources;
|
|
42
|
-
};
|
|
43
|
-
export type CantonAccountRaw = AccountRaw & {
|
|
44
|
-
cantonResources: CantonResourcesRaw;
|
|
45
|
-
};
|
|
34
|
+
export type CantonAccount = Account;
|
|
35
|
+
export type CantonAccountRaw = AccountRaw;
|
|
46
36
|
//# sourceMappingURL=bridge.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bridge.d.ts","sourceRoot":"","sources":["../../src/types/bridge.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AACvC,OAAO,KAAK,EACV,OAAO,EACP,UAAU,EACV,cAAc,EACd,iBAAiB,EACjB,oBAAoB,EACpB,uBAAuB,EACvB,0BAA0B,EAC3B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EACV,qBAAqB,EACrB,mBAAmB,EACnB,
|
|
1
|
+
{"version":3,"file":"bridge.d.ts","sourceRoot":"","sources":["../../src/types/bridge.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AACvC,OAAO,KAAK,EACV,OAAO,EACP,UAAU,EACV,cAAc,EACd,iBAAiB,EACjB,oBAAoB,EACpB,uBAAuB,EACvB,0BAA0B,EAC3B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,KAAK,EACV,qBAAqB,EACrB,mBAAmB,EACnB,uBAAuB,EACvB,qBAAqB,EACtB,MAAM,WAAW,CAAC;AAEnB,MAAM,WAAW,oBAAqB,SAAQ,cAAc;IAC1D,cAAc,EAAE,CACd,QAAQ,EAAE,cAAc,EACxB,QAAQ,EAAE,MAAM,EAChB,gBAAgB,EAAE,OAAO,KACtB,UAAU,CAAC,qBAAqB,GAAG,mBAAmB,CAAC,CAAC;IAC7D,oBAAoB,EAAE,CACpB,QAAQ,EAAE,cAAc,EACxB,QAAQ,EAAE,MAAM,EAChB,gBAAgB,EAAE,OAAO,EACzB,OAAO,EAAE,MAAM,KACZ,UAAU,CAAC,uBAAuB,GAAG,qBAAqB,CAAC,CAAC;CAClE;AAED,MAAM,MAAM,WAAW,GAAG;IACxB,MAAM,EAAE,QAAQ,CAAC;IACjB,SAAS,EAAE,SAAS,CAAC;IACrB,WAAW,EAAE,SAAS,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,MAAM,EAAE,QAAQ,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG,iBAAiB,GAAG;IAC5C,MAAM,EAAE,QAAQ,CAAC;IACjB,GAAG,EAAE,SAAS,GAAG,IAAI,GAAG,SAAS,CAAC;IAClC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,oBAAoB,GAAG;IAClD,MAAM,EAAE,QAAQ,CAAC;IACjB,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG,uBAAuB,CAAC;AACxD,MAAM,MAAM,oBAAoB,GAAG,0BAA0B,CAAC;AAE9D,MAAM,MAAM,aAAa,GAAG,OAAO,CAAC;AACpC,MAAM,MAAM,gBAAgB,GAAG,UAAU,CAAC"}
|
|
@@ -7,7 +7,7 @@ export declare enum OnboardStatus {
|
|
|
7
7
|
SUCCESS = 4,
|
|
8
8
|
ERROR = 5
|
|
9
9
|
}
|
|
10
|
-
export declare enum
|
|
10
|
+
export declare enum AuthorizeStatus {
|
|
11
11
|
INIT = 0,
|
|
12
12
|
PREPARE = 1,
|
|
13
13
|
SIGN = 2,
|
|
@@ -20,12 +20,12 @@ export type CantonOnboardProgress = {
|
|
|
20
20
|
};
|
|
21
21
|
export type CantonOnboardResult = {
|
|
22
22
|
partyId: string;
|
|
23
|
-
account:
|
|
23
|
+
account: Account;
|
|
24
24
|
};
|
|
25
|
-
export type
|
|
26
|
-
status:
|
|
25
|
+
export type CantonAuthorizeProgress = {
|
|
26
|
+
status: AuthorizeStatus;
|
|
27
27
|
};
|
|
28
|
-
export type
|
|
28
|
+
export type CantonAuthorizeResult = {
|
|
29
29
|
isApproved: boolean;
|
|
30
30
|
};
|
|
31
31
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"onboard.d.ts","sourceRoot":"","sources":["../../src/types/onboard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAE/C,oBAAY,aAAa;IACvB,IAAI,IAAA;IACJ,OAAO,IAAA;IACP,IAAI,IAAA;IACJ,MAAM,IAAA;IACN,OAAO,IAAA;IACP,KAAK,IAAA;CACN;AAED,oBAAY,
|
|
1
|
+
{"version":3,"file":"onboard.d.ts","sourceRoot":"","sources":["../../src/types/onboard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAE/C,oBAAY,aAAa;IACvB,IAAI,IAAA;IACJ,OAAO,IAAA;IACP,IAAI,IAAA;IACJ,MAAM,IAAA;IACN,OAAO,IAAA;IACP,KAAK,IAAA;CACN;AAED,oBAAY,eAAe;IACzB,IAAI,IAAA;IACJ,OAAO,IAAA;IACP,IAAI,IAAA;IACJ,MAAM,IAAA;IACN,OAAO,IAAA;IACP,KAAK,IAAA;CACN;AAED,MAAM,MAAM,qBAAqB,GAAG;IAClC,MAAM,EAAE,aAAa,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,MAAM,EAAE,eAAe,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,UAAU,EAAE,OAAO,CAAC;CACrB,CAAC;AAEF;;;GAGG;AAEH,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,gCAAgC,CAAC;IACvC,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,0BAA0B;IACzC,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,GAAG,CAAC;IACV,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,wBAAwB;IACvC,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,yBAAyB;IACxC,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,OAAO,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;CAClB"}
|
package/lib-es/types/onboard.js
CHANGED
|
@@ -7,13 +7,13 @@ export var OnboardStatus;
|
|
|
7
7
|
OnboardStatus[OnboardStatus["SUCCESS"] = 4] = "SUCCESS";
|
|
8
8
|
OnboardStatus[OnboardStatus["ERROR"] = 5] = "ERROR";
|
|
9
9
|
})(OnboardStatus || (OnboardStatus = {}));
|
|
10
|
-
export var
|
|
11
|
-
(function (
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
})(
|
|
10
|
+
export var AuthorizeStatus;
|
|
11
|
+
(function (AuthorizeStatus) {
|
|
12
|
+
AuthorizeStatus[AuthorizeStatus["INIT"] = 0] = "INIT";
|
|
13
|
+
AuthorizeStatus[AuthorizeStatus["PREPARE"] = 1] = "PREPARE";
|
|
14
|
+
AuthorizeStatus[AuthorizeStatus["SIGN"] = 2] = "SIGN";
|
|
15
|
+
AuthorizeStatus[AuthorizeStatus["SUBMIT"] = 3] = "SUBMIT";
|
|
16
|
+
AuthorizeStatus[AuthorizeStatus["SUCCESS"] = 4] = "SUCCESS";
|
|
17
|
+
AuthorizeStatus[AuthorizeStatus["ERROR"] = 5] = "ERROR";
|
|
18
|
+
})(AuthorizeStatus || (AuthorizeStatus = {}));
|
|
19
19
|
//# sourceMappingURL=onboard.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"onboard.js","sourceRoot":"","sources":["../../src/types/onboard.ts"],"names":[],"mappings":"AAEA,MAAM,CAAN,IAAY,aAOX;AAPD,WAAY,aAAa;IACvB,iDAAI,CAAA;IACJ,uDAAO,CAAA;IACP,iDAAI,CAAA;IACJ,qDAAM,CAAA;IACN,uDAAO,CAAA;IACP,mDAAK,CAAA;AACP,CAAC,EAPW,aAAa,KAAb,aAAa,QAOxB;AAED,MAAM,CAAN,IAAY,
|
|
1
|
+
{"version":3,"file":"onboard.js","sourceRoot":"","sources":["../../src/types/onboard.ts"],"names":[],"mappings":"AAEA,MAAM,CAAN,IAAY,aAOX;AAPD,WAAY,aAAa;IACvB,iDAAI,CAAA;IACJ,uDAAO,CAAA;IACP,iDAAI,CAAA;IACJ,qDAAM,CAAA;IACN,uDAAO,CAAA;IACP,mDAAK,CAAA;AACP,CAAC,EAPW,aAAa,KAAb,aAAa,QAOxB;AAED,MAAM,CAAN,IAAY,eAOX;AAPD,WAAY,eAAe;IACzB,qDAAI,CAAA;IACJ,2DAAO,CAAA;IACP,qDAAI,CAAA;IACJ,yDAAM,CAAA;IACN,2DAAO,CAAA;IACP,uDAAK,CAAA;AACP,CAAC,EAPW,eAAe,KAAf,eAAe,QAO1B"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ledgerhq/coin-canton",
|
|
3
|
-
"version": "0.7.0-nightly.
|
|
3
|
+
"version": "0.7.0-nightly.3",
|
|
4
4
|
"description": "Canton coin integration",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"Ledger",
|
|
@@ -101,12 +101,13 @@
|
|
|
101
101
|
"bignumber.js": "^9.1.2",
|
|
102
102
|
"invariant": "^2.2.4",
|
|
103
103
|
"rxjs": "^7.8.1",
|
|
104
|
-
"@ledgerhq/coin-framework": "^6.6.0-nightly.
|
|
105
|
-
"@ledgerhq/cryptoassets": "^13.30.0-nightly.
|
|
104
|
+
"@ledgerhq/coin-framework": "^6.6.0-nightly.2",
|
|
105
|
+
"@ledgerhq/cryptoassets": "^13.30.0-nightly.1",
|
|
106
106
|
"@ledgerhq/devices": "8.6.0",
|
|
107
107
|
"@ledgerhq/errors": "^6.26.0-nightly.0",
|
|
108
108
|
"@ledgerhq/live-env": "^2.17.0",
|
|
109
109
|
"@ledgerhq/live-network": "^2.0.18",
|
|
110
|
+
"@ledgerhq/logs": "^6.13.0",
|
|
110
111
|
"@ledgerhq/types-live": "^6.86.0-nightly.0"
|
|
111
112
|
},
|
|
112
113
|
"devDependencies": {
|
|
@@ -117,7 +118,7 @@
|
|
|
117
118
|
"jest": "^29.7.0",
|
|
118
119
|
"ts-jest": "^29.1.1",
|
|
119
120
|
"typescript": "^5.4.5",
|
|
120
|
-
"@ledgerhq/types-cryptoassets": "^7.28.0-nightly.
|
|
121
|
+
"@ledgerhq/types-cryptoassets": "^7.28.0-nightly.1",
|
|
121
122
|
"@ledgerhq/disable-network-setup": "^0.0.0"
|
|
122
123
|
},
|
|
123
124
|
"scripts": {
|
|
@@ -1,26 +1,8 @@
|
|
|
1
1
|
import { AlpacaApi } from "@ledgerhq/coin-framework/lib/api/types";
|
|
2
2
|
import { createApi } from ".";
|
|
3
|
-
import { CantonCoinConfig } from "../config";
|
|
4
3
|
|
|
5
4
|
let api: AlpacaApi;
|
|
6
5
|
|
|
7
|
-
describe.skip("localnet", () => {
|
|
8
|
-
beforeAll(() => {
|
|
9
|
-
api = createApi({
|
|
10
|
-
nodeUrl: "http://localhost:2975/v2",
|
|
11
|
-
nativeInstrumentId: "Amulet",
|
|
12
|
-
networkType: "localnet",
|
|
13
|
-
} satisfies Partial<CantonCoinConfig>);
|
|
14
|
-
});
|
|
15
|
-
|
|
16
|
-
describe("lastBlock", () => {
|
|
17
|
-
it("should return ledger end", async () => {
|
|
18
|
-
const lastBlock = await api.lastBlock();
|
|
19
|
-
expect(lastBlock.height).toBeGreaterThan(0);
|
|
20
|
-
});
|
|
21
|
-
});
|
|
22
|
-
});
|
|
23
|
-
|
|
24
6
|
describe.skip("devnet", () => {
|
|
25
7
|
beforeAll(() => {
|
|
26
8
|
api = createApi({
|
package/src/bridge/index.ts
CHANGED
|
@@ -18,10 +18,9 @@ import { estimateMaxSpendable } from "./estimateMaxSpendable";
|
|
|
18
18
|
import { getTransactionStatus } from "./getTransactionStatus";
|
|
19
19
|
import { prepareTransaction } from "./prepareTransaction";
|
|
20
20
|
import { buildSignOperation } from "./signOperation";
|
|
21
|
-
import {
|
|
21
|
+
import { makeGetAccountShape } from "./sync";
|
|
22
22
|
import { updateTransaction } from "./updateTransaction";
|
|
23
23
|
import { buildOnboardAccount, buildAuthorizePreapproval } from "./onboard";
|
|
24
|
-
import { assignFromAccountRaw, assignToAccountRaw } from "./serialization";
|
|
25
24
|
|
|
26
25
|
export function createBridges(
|
|
27
26
|
signerContext: SignerContext<CantonSigner>,
|
|
@@ -33,7 +32,7 @@ export function createBridges(
|
|
|
33
32
|
const receive = makeAccountBridgeReceive(getAddressWrapper(getAddress));
|
|
34
33
|
|
|
35
34
|
const scanAccounts = makeScanAccounts({
|
|
36
|
-
getAccountShape:
|
|
35
|
+
getAccountShape: makeGetAccountShape(signerContext),
|
|
37
36
|
getAddressFn: getAddress,
|
|
38
37
|
});
|
|
39
38
|
|
|
@@ -49,7 +48,7 @@ export function createBridges(
|
|
|
49
48
|
};
|
|
50
49
|
|
|
51
50
|
const signOperation = buildSignOperation(signerContext);
|
|
52
|
-
const sync = makeSync({ getAccountShape });
|
|
51
|
+
const sync = makeSync({ getAccountShape: makeGetAccountShape(signerContext) });
|
|
53
52
|
// we want one method per file
|
|
54
53
|
const accountBridge: AccountBridge<Transaction> = {
|
|
55
54
|
broadcast,
|
|
@@ -63,8 +62,6 @@ export function createBridges(
|
|
|
63
62
|
sync,
|
|
64
63
|
receive,
|
|
65
64
|
signOperation,
|
|
66
|
-
assignToAccountRaw,
|
|
67
|
-
assignFromAccountRaw,
|
|
68
65
|
getSerializedAddressParameters,
|
|
69
66
|
};
|
|
70
67
|
|
|
@@ -1,23 +1,45 @@
|
|
|
1
|
+
import BigNumber from "bignumber.js";
|
|
1
2
|
import { firstValueFrom, toArray } from "rxjs";
|
|
3
|
+
import { CryptoCurrency } from "@ledgerhq/types-cryptoassets";
|
|
4
|
+
import { emptyHistoryCache } from "@ledgerhq/coin-framework/account/index";
|
|
2
5
|
import { generateMockKeyPair, createMockSigner } from "../test/cantonTestUtils";
|
|
3
|
-
import { buildOnboardAccount, isAccountOnboarded, buildAuthorizePreapproval } from "./onboard";
|
|
4
6
|
import {
|
|
7
|
+
AuthorizeStatus,
|
|
5
8
|
OnboardStatus,
|
|
6
|
-
|
|
9
|
+
CantonAuthorizeProgress,
|
|
10
|
+
CantonAuthorizeResult,
|
|
7
11
|
CantonOnboardProgress,
|
|
8
12
|
CantonOnboardResult,
|
|
9
|
-
CantonPreApprovalProgress,
|
|
10
|
-
CantonPreApprovalResult,
|
|
11
13
|
} from "../types/onboard";
|
|
12
14
|
import coinConfig from "../config";
|
|
13
|
-
import {
|
|
15
|
+
import { buildOnboardAccount, isAccountOnboarded, buildAuthorizePreapproval } from "./onboard";
|
|
14
16
|
|
|
15
17
|
describe("onboard (devnet)", () => {
|
|
16
18
|
const mockDeviceId = "test-device-id";
|
|
17
|
-
const mockDerivationPath = "44'/6767'/0'/0'/0'";
|
|
18
19
|
const mockCurrency = {
|
|
19
20
|
id: "canton_network",
|
|
20
21
|
} as unknown as CryptoCurrency;
|
|
22
|
+
const mockAccount = {
|
|
23
|
+
type: "Account" as const,
|
|
24
|
+
id: "js:2:canton_network:canton_3f5c9d9a:canton",
|
|
25
|
+
seedIdentifier: "canton_3f5c9d9a",
|
|
26
|
+
derivationMode: "canton" as const,
|
|
27
|
+
index: 0,
|
|
28
|
+
freshAddress: "canton_3f5c9d9a",
|
|
29
|
+
freshAddressPath: "44'/6767'/0'/0'/0'",
|
|
30
|
+
used: false,
|
|
31
|
+
balance: BigNumber(10000),
|
|
32
|
+
spendableBalance: BigNumber(10000),
|
|
33
|
+
creationDate: new Date(),
|
|
34
|
+
blockHeight: 1,
|
|
35
|
+
currency: mockCurrency,
|
|
36
|
+
operationsCount: 0,
|
|
37
|
+
operations: [],
|
|
38
|
+
pendingOperations: [],
|
|
39
|
+
lastSyncDate: new Date(),
|
|
40
|
+
balanceHistoryCache: emptyHistoryCache,
|
|
41
|
+
swapHistory: [],
|
|
42
|
+
};
|
|
21
43
|
|
|
22
44
|
let onboardedAccount: {
|
|
23
45
|
keyPair: ReturnType<typeof generateMockKeyPair>;
|
|
@@ -58,7 +80,7 @@ describe("onboard (devnet)", () => {
|
|
|
58
80
|
|
|
59
81
|
const onboardObservable = buildOnboardAccount(mockSignerContext);
|
|
60
82
|
const onboardValues = await firstValueFrom(
|
|
61
|
-
onboardObservable(mockCurrency, mockDeviceId,
|
|
83
|
+
onboardObservable(mockCurrency, mockDeviceId, mockAccount).pipe(toArray()),
|
|
62
84
|
);
|
|
63
85
|
const onboardResult = onboardValues.find(
|
|
64
86
|
(value): value is CantonOnboardResult => "partyId" in value,
|
|
@@ -82,10 +104,10 @@ describe("onboard (devnet)", () => {
|
|
|
82
104
|
// THEN
|
|
83
105
|
expect(result).not.toBe(false);
|
|
84
106
|
if (typeof result === "object") {
|
|
85
|
-
expect(result.
|
|
86
|
-
expect(result.
|
|
107
|
+
expect(result.partyId).toBeDefined();
|
|
108
|
+
expect(result.partyId).toBe(onboardResult.partyId);
|
|
87
109
|
}
|
|
88
|
-
},
|
|
110
|
+
}, 40000);
|
|
89
111
|
|
|
90
112
|
it("should return false for non-onboarded account with fresh keypair", async () => {
|
|
91
113
|
// GIVEN
|
|
@@ -122,7 +144,7 @@ describe("onboard (devnet)", () => {
|
|
|
122
144
|
|
|
123
145
|
// WHEN
|
|
124
146
|
const allValues = await firstValueFrom(
|
|
125
|
-
onboardObservable(mockCurrency, mockDeviceId,
|
|
147
|
+
onboardObservable(mockCurrency, mockDeviceId, mockAccount).pipe(toArray()),
|
|
126
148
|
);
|
|
127
149
|
const progressValues = allValues.filter(
|
|
128
150
|
(value): value is CantonOnboardProgress => "status" in value && !("partyId" in value),
|
|
@@ -149,12 +171,12 @@ describe("onboard (devnet)", () => {
|
|
|
149
171
|
|
|
150
172
|
it("should complete full onboarding flow with already onboarded account", async () => {
|
|
151
173
|
// GIVEN
|
|
152
|
-
const {
|
|
174
|
+
const { mockSignerContext, onboardResult: firstResult } = getOnboardedAccount();
|
|
153
175
|
const secondOnboardObservable = buildOnboardAccount(mockSignerContext);
|
|
154
176
|
|
|
155
177
|
// WHEN
|
|
156
178
|
const secondOnboardValues = await firstValueFrom(
|
|
157
|
-
secondOnboardObservable(mockCurrency, mockDeviceId,
|
|
179
|
+
secondOnboardObservable(mockCurrency, mockDeviceId, mockAccount).pipe(toArray()),
|
|
158
180
|
);
|
|
159
181
|
const secondResult = secondOnboardValues.find(
|
|
160
182
|
(value): value is CantonOnboardResult => "partyId" in value,
|
|
@@ -175,27 +197,23 @@ describe("onboard (devnet)", () => {
|
|
|
175
197
|
|
|
176
198
|
// WHEN
|
|
177
199
|
const preapprovalValues = await firstValueFrom(
|
|
178
|
-
preapprovalObservable(
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
mockDerivationPath,
|
|
182
|
-
onboardResult.partyId,
|
|
183
|
-
).pipe(toArray()),
|
|
200
|
+
preapprovalObservable(mockCurrency, mockDeviceId, mockAccount, onboardResult.partyId).pipe(
|
|
201
|
+
toArray(),
|
|
202
|
+
),
|
|
184
203
|
);
|
|
185
204
|
|
|
186
205
|
const progressValues = preapprovalValues.filter(
|
|
187
|
-
(value): value is
|
|
188
|
-
"status" in value && !("isApproved" in value),
|
|
206
|
+
(value): value is CantonAuthorizeProgress => "status" in value && !("isApproved" in value),
|
|
189
207
|
);
|
|
190
208
|
const resultValues = preapprovalValues.filter(
|
|
191
|
-
(value): value is
|
|
209
|
+
(value): value is CantonAuthorizeResult => "isApproved" in value,
|
|
192
210
|
);
|
|
193
211
|
|
|
194
212
|
// THEN
|
|
195
213
|
// Check expected status progression
|
|
196
|
-
expect(progressValues.some(p => p.status ===
|
|
197
|
-
expect(progressValues.some(p => p.status ===
|
|
198
|
-
expect(progressValues.some(p => p.status ===
|
|
214
|
+
expect(progressValues.some(p => p.status === AuthorizeStatus.PREPARE)).toBe(true);
|
|
215
|
+
expect(progressValues.some(p => p.status === AuthorizeStatus.SIGN)).toBe(true);
|
|
216
|
+
expect(progressValues.some(p => p.status === AuthorizeStatus.SUBMIT)).toBe(true);
|
|
199
217
|
|
|
200
218
|
// Check final result (should be approved)
|
|
201
219
|
expect(resultValues.length).toBeGreaterThan(0);
|
|
@@ -216,12 +234,7 @@ describe("onboard (devnet)", () => {
|
|
|
216
234
|
// WHEN & THEN
|
|
217
235
|
try {
|
|
218
236
|
await firstValueFrom(
|
|
219
|
-
preapprovalObservable(
|
|
220
|
-
mockCurrency,
|
|
221
|
-
mockDeviceId,
|
|
222
|
-
mockDerivationPath,
|
|
223
|
-
"invalid-party-id-123",
|
|
224
|
-
),
|
|
237
|
+
preapprovalObservable(mockCurrency, mockDeviceId, mockAccount, "invalid-party-id-123"),
|
|
225
238
|
);
|
|
226
239
|
expect(true).toBe(true);
|
|
227
240
|
} catch (error) {
|