@tatumio/flow 2.0.1-alpha.376 → 2.0.1-alpha.378

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,47 @@
1
+ import { Account, AccountAuthorization, FixedFlowCustomTransactionPK, FlowArgs, FlowPrivateKeyOrSignatureId, Transaction, TransactionResult } from '@tatumio/flow';
2
+ import { BurnNftFlowPK, FlowCreateAddressFromPubKeySecret, FlowTransactionPK, MintMultipleNftFlowPK, MintNftFlowPK, TransferNftFlowPK } from '@tatumio/api-client';
3
+ export declare type MintFlowNft = FlowPrivateKeyOrSignatureId<MintNftFlowPK>;
4
+ export declare type MintMultipleFlowNft = FlowPrivateKeyOrSignatureId<MintMultipleNftFlowPK>;
5
+ export declare type TransferFlowNft = FlowPrivateKeyOrSignatureId<TransferNftFlowPK>;
6
+ export declare type BurnFlowNft = FlowPrivateKeyOrSignatureId<BurnNftFlowPK>;
7
+ export declare type TransferFlowCustomTx = FlowPrivateKeyOrSignatureId<FixedFlowCustomTransactionPK>;
8
+ export declare type TransferFlow = FlowPrivateKeyOrSignatureId<FlowTransactionPK>;
9
+ export declare type CreateAddressFromPubKey = FlowPrivateKeyOrSignatureId<FlowCreateAddressFromPubKeySecret>;
10
+ export declare type FlowApiCalls = {
11
+ getSignKey: (isPayer: boolean) => Promise<{
12
+ keyId: number;
13
+ address: string;
14
+ }>;
15
+ signWithKey: (data: string, isPayer: boolean) => Promise<{
16
+ signature: string;
17
+ }>;
18
+ broadcast: (txData: string, signatureId?: string, proposalKey?: number) => Promise<{
19
+ txId: string;
20
+ failed?: boolean;
21
+ }>;
22
+ };
23
+ export declare const flowUtils: {
24
+ sign: (pk: string, msg: Buffer) => string;
25
+ getSigner: (pk: string, address: string, keyId?: number) => {
26
+ signer: (account: Account) => Promise<AccountAuthorization>;
27
+ };
28
+ getApiSigner: (apiCalls: FlowApiCalls, isPayer: boolean) => {
29
+ signer: (account: Account) => Promise<AccountAuthorization>;
30
+ keyHash: string;
31
+ };
32
+ sendTransaction: (apiCalls: FlowApiCalls, { code, txArgs, proposer, authorizations, payer, keyHash }: Transaction, provider: string) => Promise<TransactionResult>;
33
+ sendScript: (code: string, scriptArgs: FlowArgs[], provider: string) => Promise<any>;
34
+ getPrivateKey: (body: FlowPrivateKeyOrSignatureId<{
35
+ privateKey: string;
36
+ }>) => string | Promise<string>;
37
+ getProposalKeyOrFetch: (apiCalls: FlowApiCalls, keyHash: string, isPayer: boolean) => Promise<{
38
+ address: string;
39
+ keyId: number;
40
+ }>;
41
+ storeProposalKey: (keyHash: string, address: string, keyId: number) => void;
42
+ proposalKey: (keyHash: string) => {
43
+ address: string;
44
+ keyId: number;
45
+ } | undefined;
46
+ unlockProposalKey: (apiCalls: FlowApiCalls, keyHash?: string) => Promise<void>;
47
+ };
@@ -0,0 +1,143 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.flowUtils = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const elliptic = tslib_1.__importStar(require("elliptic"));
6
+ const sha3_1 = tslib_1.__importDefault(require("sha3"));
7
+ const fcl_1 = tslib_1.__importDefault(require("@onflow/fcl"));
8
+ const lodash_1 = tslib_1.__importDefault(require("lodash"));
9
+ const flow_sdk_errors_1 = require("../flow.sdk.errors");
10
+ const types_1 = tslib_1.__importDefault(require("@onflow/types"));
11
+ const shared_abstract_sdk_1 = require("@tatumio/shared-abstract-sdk");
12
+ const flow_wallet_utils_1 = require("./flow.wallet.utils");
13
+ function ArrayArgValue(arg) {
14
+ return arg.type === 'Array' ? types_1.default[arg.type](types_1.default[arg.subType]) : types_1.default[arg.type];
15
+ }
16
+ exports.flowUtils = {
17
+ sign: (pk, msg) => {
18
+ const keyPair = new elliptic.ec('secp256k1').keyFromPrivate(pk);
19
+ const signature = keyPair.sign(new sha3_1.default(256).update(msg).digest());
20
+ const r = signature.r.toArrayLike(Buffer, 'be', 32);
21
+ const s = signature.s.toArrayLike(Buffer, 'be', 32);
22
+ return Buffer.concat([r, s]).toString('hex');
23
+ },
24
+ getSigner: (pk, address, keyId = 0) => {
25
+ return {
26
+ signer: (account) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
27
+ return Object.assign(Object.assign({}, account), { tempId: `${address}-${keyId}`, addr: fcl_1.default.sansPrefix(address), keyId: Number(keyId), signingFunction: (data) => {
28
+ return {
29
+ addr: fcl_1.default.withPrefix(address),
30
+ keyId: Number(keyId),
31
+ signature: exports.flowUtils.sign(pk, Buffer.from(data.message, 'hex')),
32
+ };
33
+ } });
34
+ }),
35
+ };
36
+ },
37
+ getApiSigner: (apiCalls, isPayer) => {
38
+ const keyHash = lodash_1.default.uniqueId(`FLOW_PROPOSAL_KEY_`);
39
+ const signer = (account) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
40
+ const { address, keyId } = yield exports.flowUtils.getProposalKeyOrFetch(apiCalls, keyHash, isPayer);
41
+ if (!isPayer) {
42
+ exports.flowUtils.storeProposalKey(keyHash, address, keyId);
43
+ }
44
+ return Object.assign(Object.assign({}, account), { tempId: `${address}-${keyId}`, addr: fcl_1.default.sansPrefix(address), keyId, signingFunction: (data) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
45
+ return {
46
+ addr: fcl_1.default.withPrefix(address),
47
+ keyId: Number(keyId),
48
+ signature: (yield apiCalls.signWithKey(data.message, isPayer)).signature,
49
+ };
50
+ }) });
51
+ });
52
+ return { signer, keyHash: keyHash };
53
+ },
54
+ sendTransaction: (apiCalls, { code, txArgs, proposer, authorizations, payer, keyHash }, provider) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
55
+ fcl_1.default.config().put('accessNode.api', provider);
56
+ let response;
57
+ try {
58
+ response = yield fcl_1.default.send([
59
+ fcl_1.default.transaction(code),
60
+ fcl_1.default.args(txArgs.map((arg) => fcl_1.default.arg(arg.value, ArrayArgValue(arg)))),
61
+ fcl_1.default.proposer(proposer),
62
+ fcl_1.default.authorizations(authorizations),
63
+ fcl_1.default.payer(payer),
64
+ fcl_1.default.limit(1000),
65
+ ]);
66
+ }
67
+ catch (e) {
68
+ yield exports.flowUtils.unlockProposalKey(apiCalls, keyHash);
69
+ throw new flow_sdk_errors_1.FlowSdkError({ error: e });
70
+ }
71
+ const { transactionId } = response;
72
+ try {
73
+ const { error, events } = yield fcl_1.default.tx(response).onceSealed();
74
+ if (error) {
75
+ throw new flow_sdk_errors_1.FlowSdkError({ error: error });
76
+ }
77
+ return {
78
+ id: transactionId,
79
+ events,
80
+ };
81
+ }
82
+ catch (e) {
83
+ throw new flow_sdk_errors_1.FlowSdkError({ error: e });
84
+ }
85
+ finally {
86
+ yield exports.flowUtils.unlockProposalKey(apiCalls, keyHash);
87
+ }
88
+ }),
89
+ sendScript: (code, scriptArgs, provider) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
90
+ fcl_1.default.config().put('accessNode.api', provider);
91
+ const response = yield fcl_1.default.send([
92
+ fcl_1.default.script(code),
93
+ fcl_1.default.args(scriptArgs.map((arg) => fcl_1.default.arg(arg.value, types_1.default[arg.type]))),
94
+ ]);
95
+ return fcl_1.default.decode(response);
96
+ }),
97
+ getPrivateKey: (body) => {
98
+ const { mnemonic, index, privateKey } = body;
99
+ if (privateKey) {
100
+ return privateKey;
101
+ }
102
+ else {
103
+ if (mnemonic && !lodash_1.default.isNil(index) && index >= 0) {
104
+ return flow_wallet_utils_1.flowWalletUtils.generatePrivateKeyFromMnemonic(mnemonic, index);
105
+ }
106
+ else
107
+ throw new flow_sdk_errors_1.FlowSdkError({ code: shared_abstract_sdk_1.SdkErrorCode.FLOW_MISSING_MNEMONIC });
108
+ }
109
+ },
110
+ getProposalKeyOrFetch: (apiCalls, keyHash, isPayer) => {
111
+ const value = process.env[keyHash];
112
+ if (value) {
113
+ return JSON.parse(value);
114
+ }
115
+ else {
116
+ return apiCalls.getSignKey(isPayer);
117
+ }
118
+ },
119
+ storeProposalKey: (keyHash, address, keyId) => {
120
+ process.env[keyHash] = JSON.stringify({ address, keyId });
121
+ },
122
+ proposalKey: (keyHash) => {
123
+ const value = process.env[keyHash];
124
+ if (!value)
125
+ return undefined;
126
+ return keyHash ? JSON.parse(value) : undefined;
127
+ },
128
+ unlockProposalKey: (apiCalls, keyHash) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
129
+ try {
130
+ if (keyHash) {
131
+ const key = exports.flowUtils.proposalKey(keyHash);
132
+ if (key) {
133
+ yield apiCalls.broadcast('', undefined, key.keyId);
134
+ delete process.env[keyHash];
135
+ }
136
+ }
137
+ }
138
+ catch (e) {
139
+ throw new flow_sdk_errors_1.FlowSdkError({ error: e });
140
+ }
141
+ }),
142
+ };
143
+ //# sourceMappingURL=flow.utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flow.utils.js","sourceRoot":"","sources":["../../../../../../../packages/blockchain/flow/src/lib/utils/flow.utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { Wallet } from '@tatumio/api-client';
2
+ export declare const flowWalletUtils: {
3
+ generateAddressFromXPub: (xpub: string, i: number) => string;
4
+ generateAddressFromPrivateKey: (privateKey: string) => string;
5
+ generateWallet: (mnemonic?: string) => Promise<Wallet>;
6
+ generatePrivateKeyFromMnemonic: (mnemonic: string, i: number) => Promise<string>;
7
+ };
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.flowWalletUtils = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const bip32_1 = require("bip32");
6
+ const elliptic = tslib_1.__importStar(require("elliptic"));
7
+ const bip39_1 = require("bip39");
8
+ const hdkey_1 = tslib_1.__importDefault(require("hdkey"));
9
+ const shared_core_1 = require("@tatumio/shared-core");
10
+ exports.flowWalletUtils = {
11
+ generateAddressFromXPub: (xpub, i) => {
12
+ const w = (0, bip32_1.fromBase58)(xpub).derivePath(String(i));
13
+ const s = new elliptic.ec('secp256k1').keyFromPublic(w.publicKey).getPublic().encode('hex', false);
14
+ return s.slice(2);
15
+ },
16
+ generateAddressFromPrivateKey: (privateKey) => {
17
+ const s = new elliptic.ec('secp256k1').keyFromPrivate(privateKey).getPublic().encode('hex', false);
18
+ return s.slice(2);
19
+ },
20
+ generateWallet: (mnemonic) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
21
+ mnemonic || (mnemonic = (0, bip39_1.generateMnemonic)(256));
22
+ const hdwallet = hdkey_1.default.fromMasterSeed(yield (0, bip39_1.mnemonicToSeed)(mnemonic));
23
+ return {
24
+ mnemonic,
25
+ xpub: hdwallet.derive(shared_core_1.DERIVATION_PATH.FLOW).toJSON().xpub,
26
+ };
27
+ }),
28
+ generatePrivateKeyFromMnemonic: (mnemonic, i) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
29
+ const key = (0, bip32_1.fromSeed)(yield (0, bip39_1.mnemonicToSeed)(mnemonic))
30
+ .derivePath(shared_core_1.DERIVATION_PATH.FLOW)
31
+ .derive(i).privateKey;
32
+ if (!key)
33
+ throw new Error('No key generated');
34
+ return new elliptic.ec('secp256k1').keyFromPrivate(key).getPrivate().toString(16);
35
+ }),
36
+ };
37
+ //# sourceMappingURL=flow.wallet.utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flow.wallet.utils.js","sourceRoot":"","sources":["../../../../../../../packages/blockchain/flow/src/lib/utils/flow.wallet.utils.ts"],"names":[],"mappings":";;;;AAAA,iCAA4C;AAC5C,2DAAoC;AACpC,iCAAwD;AACxD,0DAAyB;AACzB,sDAAsD;AAGzC,QAAA,eAAe,GAAG;IAC7B,uBAAuB,EAAE,CAAC,IAAY,EAAE,CAAS,EAAU,EAAE;QAC3D,MAAM,CAAC,GAAG,IAAA,kBAAU,EAAC,IAAI,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;QAChD,MAAM,CAAC,GAAG,IAAI,QAAQ,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;QAClG,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;IACnB,CAAC;IACD,6BAA6B,EAAE,CAAC,UAAkB,EAAU,EAAE;QAC5D,MAAM,CAAC,GAAG,IAAI,QAAQ,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;QAClG,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;IACnB,CAAC;IACD,cAAc,EAAE,CAAO,QAAiB,EAAmB,EAAE;QAC3D,QAAQ,KAAR,QAAQ,GAAK,IAAA,wBAAgB,EAAC,GAAG,CAAC,EAAA;QAClC,MAAM,QAAQ,GAAG,eAAK,CAAC,cAAc,CAAC,MAAM,IAAA,sBAAc,EAAC,QAAQ,CAAC,CAAC,CAAA;QACrE,OAAO;YACL,QAAQ;YACR,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,6BAAe,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI;SAC1D,CAAA;IACH,CAAC,CAAA;IACD,8BAA8B,EAAE,CAAO,QAAgB,EAAE,CAAS,EAAE,EAAE;QACpE,MAAM,GAAG,GAAG,IAAA,gBAAQ,EAAC,MAAM,IAAA,sBAAc,EAAC,QAAQ,CAAC,CAAC;aACjD,UAAU,CAAC,6BAAe,CAAC,IAAI,CAAC;aAChC,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,CAAA;QACvB,IAAI,CAAC,GAAG;YAAE,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAA;QAC7C,OAAO,IAAI,QAAQ,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;IACnF,CAAC,CAAA;CACF,CAAA"}