@alephium/web3 0.2.0-rc.3 → 0.2.0-rc.31
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/.eslintignore +2 -2
- package/README.md +2 -135
- package/dist/alephium-web3.min.js +1 -1
- package/dist/alephium-web3.min.js.LICENSE.txt +0 -17
- package/dist/alephium-web3.min.js.map +1 -1
- package/dist/src/api/api-alephium.d.ts +117 -17
- package/dist/src/api/api-alephium.js +145 -79
- package/dist/src/api/api-explorer.d.ts +163 -48
- package/dist/src/api/api-explorer.js +157 -34
- package/dist/src/api/index.d.ts +14 -2
- package/dist/src/api/index.js +46 -4
- package/dist/src/api/types.d.ts +23 -0
- package/dist/src/api/types.js +240 -0
- package/dist/src/api/utils.d.ts +6 -0
- package/dist/{scripts/rename-gitignore.js → src/api/utils.js} +11 -6
- package/dist/src/contract/contract.d.ts +110 -73
- package/dist/src/contract/contract.js +395 -451
- package/dist/src/contract/events.d.ts +4 -4
- package/dist/src/contract/events.js +2 -1
- package/dist/src/contract/index.js +5 -1
- package/dist/src/contract/ralph.d.ts +5 -4
- package/dist/src/contract/ralph.js +27 -1
- package/dist/src/global.d.ts +4 -0
- package/dist/{scripts/stop-devnet.js → src/global.js} +17 -11
- package/dist/src/index.d.ts +2 -0
- package/dist/src/index.js +23 -1
- package/dist/src/signer/index.d.ts +0 -1
- package/dist/src/signer/index.js +5 -2
- package/dist/src/signer/signer.d.ts +35 -28
- package/dist/src/signer/signer.js +79 -47
- package/dist/src/transaction/index.d.ts +0 -1
- package/dist/src/transaction/index.js +5 -2
- package/dist/src/transaction/status.d.ts +2 -1
- package/dist/src/transaction/status.js +2 -1
- package/dist/src/utils/bs58.d.ts +1 -0
- package/dist/src/utils/bs58.js +13 -1
- package/dist/src/utils/index.d.ts +0 -1
- package/dist/src/utils/index.js +5 -2
- package/dist/src/utils/subscription.d.ts +0 -3
- package/dist/src/utils/subscription.js +0 -1
- package/dist/src/utils/utils.d.ts +4 -9
- package/dist/src/utils/utils.js +20 -24
- package/jest-config.json +11 -0
- package/package.json +11 -47
- package/src/api/api-alephium.ts +169 -25
- package/src/api/api-explorer.ts +234 -51
- package/src/api/index.ts +53 -3
- package/src/api/types.ts +233 -0
- package/{scripts/rename-gitignore.js → src/api/utils.ts} +7 -6
- package/src/contract/contract.ts +582 -550
- package/src/contract/events.ts +6 -5
- package/src/contract/ralph.ts +29 -4
- package/src/{transaction/sign-verify.ts → global.ts} +14 -15
- package/src/index.ts +7 -0
- package/src/signer/index.ts +0 -1
- package/src/signer/signer.ts +122 -85
- package/src/transaction/index.ts +0 -1
- package/src/transaction/status.ts +5 -2
- package/src/utils/bs58.ts +11 -0
- package/src/utils/index.ts +0 -1
- package/src/utils/subscription.ts +0 -4
- package/src/utils/utils.ts +11 -19
- package/.eslintrc.json +0 -21
- package/LICENSE +0 -165
- package/contracts/add/add.ral +0 -16
- package/contracts/greeter/greeter.ral +0 -7
- package/contracts/greeter/greeter_interface.ral +0 -3
- package/contracts/greeter_main.ral +0 -9
- package/contracts/main.ral +0 -6
- package/contracts/sub/sub.ral +0 -9
- package/contracts/test/metadata.ral +0 -17
- package/contracts/test/warnings.ral +0 -5
- package/dev/user.conf +0 -29
- package/dist/scripts/create-project.d.ts +0 -2
- package/dist/scripts/create-project.js +0 -125
- package/dist/scripts/rename-gitignore.d.ts +0 -1
- package/dist/scripts/start-devnet.d.ts +0 -1
- package/dist/scripts/start-devnet.js +0 -131
- package/dist/scripts/stop-devnet.d.ts +0 -1
- package/dist/src/signer/node-wallet.d.ts +0 -13
- package/dist/src/signer/node-wallet.js +0 -60
- package/dist/src/test/index.d.ts +0 -7
- package/dist/src/test/index.js +0 -41
- package/dist/src/test/privatekey-wallet.d.ts +0 -12
- package/dist/src/test/privatekey-wallet.js +0 -68
- package/dist/src/transaction/sign-verify.d.ts +0 -2
- package/dist/src/transaction/sign-verify.js +0 -58
- package/dist/src/utils/password-crypto.d.ts +0 -2
- package/dist/src/utils/password-crypto.js +0 -69
- package/gitignore +0 -10
- package/scripts/create-project.ts +0 -137
- package/scripts/start-devnet.js +0 -141
- package/scripts/stop-devnet.js +0 -32
- package/src/contract/ralph.test.ts +0 -178
- package/src/fixtures/address.json +0 -36
- package/src/fixtures/balance.json +0 -9
- package/src/fixtures/self-clique.json +0 -19
- package/src/fixtures/transaction.json +0 -13
- package/src/fixtures/transactions.json +0 -179
- package/src/signer/fixtures/genesis.json +0 -26
- package/src/signer/fixtures/wallets.json +0 -26
- package/src/signer/node-wallet.ts +0 -74
- package/src/test/index.ts +0 -32
- package/src/test/privatekey-wallet.ts +0 -58
- package/src/transaction/sign-verify.test.ts +0 -50
- package/src/utils/address.test.ts +0 -47
- package/src/utils/djb2.test.ts +0 -35
- package/src/utils/password-crypto.test.ts +0 -27
- package/src/utils/password-crypto.ts +0 -77
- package/src/utils/utils.test.ts +0 -161
- package/templates/base/README.md +0 -34
- package/templates/base/package.json +0 -35
- package/templates/base/src/greeter.ts +0 -41
- package/templates/base/tsconfig.json +0 -19
- package/templates/react/README.md +0 -34
- package/templates/react/config-overrides.js +0 -18
- package/templates/react/package.json +0 -66
- package/templates/react/src/App.tsx +0 -42
- package/templates/react/src/artifacts/greeter.ral.json +0 -26
- package/templates/react/src/artifacts/greeter_main.ral.json +0 -22
- package/templates/shared/.eslintrc.json +0 -12
- package/templates/shared/scripts/header.js +0 -0
- package/test/contract.test.ts +0 -197
- package/test/events.test.ts +0 -138
- package/test/transaction.test.ts +0 -72
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { node } from '../api';
|
|
2
2
|
import { Subscription, SubscribeOptions } from '../utils';
|
|
3
|
-
export declare class EventSubscription extends Subscription<ContractEvent> {
|
|
3
|
+
export declare class EventSubscription extends Subscription<node.ContractEvent> {
|
|
4
4
|
readonly contractAddress: string;
|
|
5
5
|
private fromCount;
|
|
6
|
-
constructor(options: SubscribeOptions<ContractEvent>, contractAddress: string, fromCount?: number);
|
|
6
|
+
constructor(options: SubscribeOptions<node.ContractEvent>, contractAddress: string, fromCount?: number);
|
|
7
7
|
startPolling(): void;
|
|
8
8
|
currentEventCount(): number;
|
|
9
9
|
polling(): Promise<void>;
|
|
10
10
|
}
|
|
11
|
-
export declare function subscribeToEvents(options: SubscribeOptions<ContractEvent>, contractAddress: string, fromCount?: number): EventSubscription;
|
|
11
|
+
export declare function subscribeToEvents(options: SubscribeOptions<node.ContractEvent>, contractAddress: string, fromCount?: number): EventSubscription;
|
|
@@ -18,6 +18,7 @@ along with the library. If not, see <http://www.gnu.org/licenses/>.
|
|
|
18
18
|
*/
|
|
19
19
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
20
20
|
exports.subscribeToEvents = exports.EventSubscription = void 0;
|
|
21
|
+
const __1 = require("..");
|
|
21
22
|
const utils_1 = require("../utils");
|
|
22
23
|
class EventSubscription extends utils_1.Subscription {
|
|
23
24
|
constructor(options, contractAddress, fromCount) {
|
|
@@ -37,7 +38,7 @@ class EventSubscription extends utils_1.Subscription {
|
|
|
37
38
|
}
|
|
38
39
|
async polling() {
|
|
39
40
|
try {
|
|
40
|
-
const events = await
|
|
41
|
+
const events = await __1.web3.getCurrentNodeProvider().events.getEventsContractContractaddress(this.contractAddress, {
|
|
41
42
|
start: this.fromCount
|
|
42
43
|
});
|
|
43
44
|
if (this.cancelled) {
|
|
@@ -18,7 +18,11 @@ along with the library. If not, see <http://www.gnu.org/licenses/>.
|
|
|
18
18
|
*/
|
|
19
19
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
20
20
|
if (k2 === undefined) k2 = k;
|
|
21
|
-
Object.
|
|
21
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
22
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
23
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
24
|
+
}
|
|
25
|
+
Object.defineProperty(o, k2, desc);
|
|
22
26
|
}) : (function(o, m, k, k2) {
|
|
23
27
|
if (k2 === undefined) k2 = k;
|
|
24
28
|
o[k2] = m[k];
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { Fields,
|
|
1
|
+
import { Val } from '../api';
|
|
2
|
+
import { Fields, FieldsSig } from './contract';
|
|
3
3
|
export declare function encodeBool(bool: boolean): Uint8Array;
|
|
4
4
|
export declare function encodeI256(i256: bigint): Uint8Array;
|
|
5
5
|
export declare function encodeU256(u256: bigint): Uint8Array;
|
|
@@ -7,6 +7,7 @@ export declare function encodeByteVec(bytes: string): Uint8Array;
|
|
|
7
7
|
export declare function encodeAddress(address: string): Uint8Array;
|
|
8
8
|
export declare function encodeScriptFieldAsString(tpe: string, value: Val): string;
|
|
9
9
|
export declare function encodeScriptField(tpe: string, value: Val): Uint8Array;
|
|
10
|
-
export declare function buildScriptByteCode(bytecodeTemplate: string, fields: Fields, fieldsSig:
|
|
11
|
-
export declare function buildContractByteCode(bytecode: string, fields: Fields, fieldsSig:
|
|
10
|
+
export declare function buildScriptByteCode(bytecodeTemplate: string, fields: Fields, fieldsSig: FieldsSig): string;
|
|
11
|
+
export declare function buildContractByteCode(bytecode: string, fields: Fields, fieldsSig: FieldsSig): string;
|
|
12
12
|
export declare function encodeContractField(tpe: string, value: Val): Uint8Array[];
|
|
13
|
+
export declare function buildDebugBytecode(bytecode: string, bytecodePatch: string): string;
|
|
@@ -18,7 +18,7 @@ along with the library. If not, see <http://www.gnu.org/licenses/>.
|
|
|
18
18
|
*/
|
|
19
19
|
var _a;
|
|
20
20
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
21
|
-
exports.encodeContractField = exports.buildContractByteCode = exports.buildScriptByteCode = exports.encodeScriptField = exports.encodeScriptFieldAsString = exports.encodeAddress = exports.encodeByteVec = exports.encodeU256 = exports.encodeI256 = exports.encodeBool = void 0;
|
|
21
|
+
exports.buildDebugBytecode = exports.encodeContractField = exports.buildContractByteCode = exports.buildScriptByteCode = exports.encodeScriptField = exports.encodeScriptFieldAsString = exports.encodeAddress = exports.encodeByteVec = exports.encodeU256 = exports.encodeI256 = exports.encodeBool = void 0;
|
|
22
22
|
const buffer_1 = require("buffer/");
|
|
23
23
|
const utils_1 = require("../utils");
|
|
24
24
|
const bigIntZero = BigInt(0);
|
|
@@ -343,6 +343,32 @@ exports.encodeContractField = encodeContractField;
|
|
|
343
343
|
function invalidVal(tpe, value) {
|
|
344
344
|
return Error(`Invalid API value ${value} for type ${tpe}`);
|
|
345
345
|
}
|
|
346
|
+
function buildDebugBytecode(bytecode, bytecodePatch) {
|
|
347
|
+
if (bytecodePatch === '') {
|
|
348
|
+
return bytecode;
|
|
349
|
+
}
|
|
350
|
+
const pattern = /[=+-][0-9a-f]*/g;
|
|
351
|
+
let result = '';
|
|
352
|
+
let index = 0;
|
|
353
|
+
for (const parts of bytecodePatch.matchAll(pattern)) {
|
|
354
|
+
const part = parts[0];
|
|
355
|
+
const diffType = part[0];
|
|
356
|
+
if (diffType === '=') {
|
|
357
|
+
const length = parseInt(part.substring(1));
|
|
358
|
+
result = result + bytecode.slice(index, index + length);
|
|
359
|
+
index = index + length;
|
|
360
|
+
}
|
|
361
|
+
else if (diffType === '+') {
|
|
362
|
+
result = result + part.substring(1);
|
|
363
|
+
}
|
|
364
|
+
else {
|
|
365
|
+
const length = parseInt(part.substring(1));
|
|
366
|
+
index = index + length;
|
|
367
|
+
}
|
|
368
|
+
}
|
|
369
|
+
return result;
|
|
370
|
+
}
|
|
371
|
+
exports.buildDebugBytecode = buildDebugBytecode;
|
|
346
372
|
// export function buildContractByteCode(
|
|
347
373
|
// compiled: node.TemplateContractByteCode,
|
|
348
374
|
// templateVariables: TemplateVariables
|
|
@@ -16,17 +16,23 @@ GNU Lesser General Public License for more details.
|
|
|
16
16
|
You should have received a copy of the GNU Lesser General Public License
|
|
17
17
|
along with the library. If not, see <http://www.gnu.org/licenses/>.
|
|
18
18
|
*/
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
const
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
19
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
20
|
+
exports.getCurrentNodeProvider = exports.setCurrentNodeProvider = void 0;
|
|
21
|
+
const api_1 = require("./api");
|
|
22
|
+
let _currentNodeProvider = undefined;
|
|
23
|
+
function setCurrentNodeProvider(provider, apiKey) {
|
|
24
|
+
if (typeof provider == 'string') {
|
|
25
|
+
_currentNodeProvider = new api_1.NodeProvider(provider, apiKey);
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
_currentNodeProvider = provider;
|
|
28
29
|
}
|
|
29
30
|
}
|
|
30
|
-
|
|
31
|
-
|
|
31
|
+
exports.setCurrentNodeProvider = setCurrentNodeProvider;
|
|
32
|
+
function getCurrentNodeProvider() {
|
|
33
|
+
if (typeof _currentNodeProvider === 'undefined') {
|
|
34
|
+
throw Error('No node provider is set.');
|
|
35
|
+
}
|
|
36
|
+
return _currentNodeProvider;
|
|
32
37
|
}
|
|
38
|
+
exports.getCurrentNodeProvider = getCurrentNodeProvider;
|
package/dist/src/index.d.ts
CHANGED
package/dist/src/index.js
CHANGED
|
@@ -18,18 +18,40 @@ along with the library. If not, see <http://www.gnu.org/licenses/>.
|
|
|
18
18
|
*/
|
|
19
19
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
20
20
|
if (k2 === undefined) k2 = k;
|
|
21
|
-
Object.
|
|
21
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
22
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
23
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
24
|
+
}
|
|
25
|
+
Object.defineProperty(o, k2, desc);
|
|
22
26
|
}) : (function(o, m, k, k2) {
|
|
23
27
|
if (k2 === undefined) k2 = k;
|
|
24
28
|
o[k2] = m[k];
|
|
25
29
|
}));
|
|
30
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
31
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
32
|
+
}) : function(o, v) {
|
|
33
|
+
o["default"] = v;
|
|
34
|
+
});
|
|
26
35
|
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
27
36
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
28
37
|
};
|
|
38
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
39
|
+
if (mod && mod.__esModule) return mod;
|
|
40
|
+
var result = {};
|
|
41
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
42
|
+
__setModuleDefault(result, mod);
|
|
43
|
+
return result;
|
|
44
|
+
};
|
|
29
45
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
46
|
+
exports.utils = exports.web3 = void 0;
|
|
47
|
+
BigInt.prototype['toJSON'] = function () {
|
|
48
|
+
return this.toString();
|
|
49
|
+
};
|
|
30
50
|
__exportStar(require("./api"), exports);
|
|
31
51
|
__exportStar(require("./contract"), exports);
|
|
32
52
|
__exportStar(require("./signer"), exports);
|
|
33
53
|
__exportStar(require("./utils"), exports);
|
|
34
54
|
__exportStar(require("./transaction"), exports);
|
|
35
55
|
__exportStar(require("./constants"), exports);
|
|
56
|
+
exports.web3 = __importStar(require("./global"));
|
|
57
|
+
exports.utils = __importStar(require("./utils"));
|
package/dist/src/signer/index.js
CHANGED
|
@@ -18,7 +18,11 @@ along with the library. If not, see <http://www.gnu.org/licenses/>.
|
|
|
18
18
|
*/
|
|
19
19
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
20
20
|
if (k2 === undefined) k2 = k;
|
|
21
|
-
Object.
|
|
21
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
22
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
23
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
24
|
+
}
|
|
25
|
+
Object.defineProperty(o, k2, desc);
|
|
22
26
|
}) : (function(o, m, k, k2) {
|
|
23
27
|
if (k2 === undefined) k2 = k;
|
|
24
28
|
o[k2] = m[k];
|
|
@@ -28,4 +32,3 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
28
32
|
};
|
|
29
33
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
30
34
|
__exportStar(require("./signer"), exports);
|
|
31
|
-
__exportStar(require("./node-wallet"), exports);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { NodeProvider } from '../api';
|
|
1
|
+
import { NodeProvider, Number256, Token } from '../api';
|
|
2
2
|
import { node } from '../api';
|
|
3
|
-
|
|
3
|
+
export declare type OutputRef = node.OutputRef;
|
|
4
4
|
export interface SignResult {
|
|
5
5
|
fromGroup: number;
|
|
6
6
|
toGroup: number;
|
|
@@ -13,9 +13,6 @@ export interface Account {
|
|
|
13
13
|
group: number;
|
|
14
14
|
publicKey: string;
|
|
15
15
|
}
|
|
16
|
-
export declare type SubmitTx = {
|
|
17
|
-
submitTx?: boolean;
|
|
18
|
-
};
|
|
19
16
|
export declare type SignerAddress = {
|
|
20
17
|
signerAddress: string;
|
|
21
18
|
};
|
|
@@ -23,11 +20,10 @@ export declare type GetAccountsParams = undefined;
|
|
|
23
20
|
export declare type GetAccountsResult = Account[];
|
|
24
21
|
export interface SignTransferTxParams {
|
|
25
22
|
signerAddress: string;
|
|
26
|
-
destinations:
|
|
27
|
-
utxos?:
|
|
23
|
+
destinations: Destination[];
|
|
24
|
+
utxos?: OutputRef[];
|
|
28
25
|
gasAmount?: number;
|
|
29
|
-
gasPrice?:
|
|
30
|
-
submitTx?: boolean;
|
|
26
|
+
gasPrice?: Number256;
|
|
31
27
|
}
|
|
32
28
|
export interface SignTransferTxResult {
|
|
33
29
|
fromGroup: number;
|
|
@@ -39,12 +35,11 @@ export interface SignTransferTxResult {
|
|
|
39
35
|
export interface SignDeployContractTxParams {
|
|
40
36
|
signerAddress: string;
|
|
41
37
|
bytecode: string;
|
|
42
|
-
initialAttoAlphAmount?:
|
|
38
|
+
initialAttoAlphAmount?: Number256;
|
|
43
39
|
initialTokenAmounts?: Token[];
|
|
44
|
-
issueTokenAmount?:
|
|
40
|
+
issueTokenAmount?: Number256;
|
|
45
41
|
gasAmount?: number;
|
|
46
|
-
gasPrice?:
|
|
47
|
-
submitTx?: boolean;
|
|
42
|
+
gasPrice?: Number256;
|
|
48
43
|
}
|
|
49
44
|
export interface SignDeployContractTxResult {
|
|
50
45
|
fromGroup: number;
|
|
@@ -59,10 +54,9 @@ export interface SignExecuteScriptTxParams {
|
|
|
59
54
|
signerAddress: string;
|
|
60
55
|
bytecode: string;
|
|
61
56
|
attoAlphAmount?: string;
|
|
62
|
-
tokens?:
|
|
57
|
+
tokens?: Token[];
|
|
63
58
|
gasAmount?: number;
|
|
64
59
|
gasPrice?: string;
|
|
65
|
-
submitTx?: boolean;
|
|
66
60
|
}
|
|
67
61
|
export interface SignExecuteScriptTxResult {
|
|
68
62
|
fromGroup: number;
|
|
@@ -74,7 +68,6 @@ export interface SignExecuteScriptTxResult {
|
|
|
74
68
|
export interface SignUnsignedTxParams {
|
|
75
69
|
signerAddress: string;
|
|
76
70
|
unsignedTx: string;
|
|
77
|
-
submitTx?: boolean;
|
|
78
71
|
}
|
|
79
72
|
export interface SignUnsignedTxResult {
|
|
80
73
|
fromGroup: number;
|
|
@@ -97,8 +90,8 @@ export interface SignMessageParams {
|
|
|
97
90
|
export interface SignMessageResult {
|
|
98
91
|
signature: string;
|
|
99
92
|
}
|
|
100
|
-
export interface
|
|
101
|
-
|
|
93
|
+
export interface SignerProviderWithoutNodeProvider {
|
|
94
|
+
getSelectedAccount(): Promise<Account>;
|
|
102
95
|
signTransferTx(params: SignTransferTxParams): Promise<SignTransferTxResult>;
|
|
103
96
|
signDeployContractTx(params: SignDeployContractTxParams): Promise<SignDeployContractTxResult>;
|
|
104
97
|
signExecuteScriptTx(params: SignExecuteScriptTxParams): Promise<SignExecuteScriptTxResult>;
|
|
@@ -106,15 +99,14 @@ export interface SignerProvider {
|
|
|
106
99
|
signHexString(params: SignHexStringParams): Promise<SignHexStringResult>;
|
|
107
100
|
signMessage(params: SignMessageParams): Promise<SignMessageResult>;
|
|
108
101
|
}
|
|
109
|
-
export declare abstract class
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
private shouldSubmitTx;
|
|
102
|
+
export declare abstract class SignerProvider implements SignerProviderWithoutNodeProvider {
|
|
103
|
+
abstract get nodeProvider(): NodeProvider;
|
|
104
|
+
abstract getSelectedAccount(): Promise<Account>;
|
|
105
|
+
submitTransaction(unsignedTx: string, signature: string): Promise<SubmissionResult>;
|
|
106
|
+
signAndSubmitTransferTx(params: SignTransferTxParams): Promise<SubmissionResult>;
|
|
107
|
+
signAndSubmitDeployContractTx(params: SignDeployContractTxParams): Promise<SubmissionResult>;
|
|
108
|
+
signAndSubmitExecuteScriptTx(params: SignExecuteScriptTxParams): Promise<SubmissionResult>;
|
|
109
|
+
signAndSubmitUnsignedTx(params: SignUnsignedTxParams): Promise<SubmissionResult>;
|
|
118
110
|
private usePublicKey;
|
|
119
111
|
signTransferTx(params: SignTransferTxParams): Promise<SignTransferTxResult>;
|
|
120
112
|
buildTransferTx(params: SignTransferTxParams): Promise<node.BuildTransactionResult>;
|
|
@@ -129,11 +121,16 @@ export declare abstract class SignerWithNodeProvider implements SignerProvider {
|
|
|
129
121
|
signerAddress: string;
|
|
130
122
|
unsignedTx: string;
|
|
131
123
|
txId: string;
|
|
132
|
-
}
|
|
124
|
+
}): Promise<SignResult>;
|
|
133
125
|
signHexString(params: SignHexStringParams): Promise<SignHexStringResult>;
|
|
134
126
|
signMessage(params: SignMessageParams): Promise<SignMessageResult>;
|
|
135
127
|
abstract signRaw(signerAddress: string, hexString: string): Promise<string>;
|
|
136
128
|
}
|
|
129
|
+
export declare abstract class SignerProviderWithMultipleAccounts extends SignerProvider {
|
|
130
|
+
abstract getAccounts(): Promise<Account[]>;
|
|
131
|
+
getAccount(signerAddress: string): Promise<Account>;
|
|
132
|
+
abstract setSelectedAccount(address: string): Promise<void>;
|
|
133
|
+
}
|
|
137
134
|
export interface SubmissionResult {
|
|
138
135
|
txId: string;
|
|
139
136
|
fromGroup: number;
|
|
@@ -141,3 +138,13 @@ export interface SubmissionResult {
|
|
|
141
138
|
}
|
|
142
139
|
export declare function verifyHexString(hexString: string, publicKey: string, signature: string): boolean;
|
|
143
140
|
export declare function verifySignedMessage(message: string, publicKey: string, signature: string): boolean;
|
|
141
|
+
export interface Destination {
|
|
142
|
+
address: string;
|
|
143
|
+
attoAlphAmount: Number256;
|
|
144
|
+
tokens?: Token[];
|
|
145
|
+
lockTime?: number;
|
|
146
|
+
message?: string;
|
|
147
|
+
}
|
|
148
|
+
export declare function toApiDestination(data: Destination): node.Destination;
|
|
149
|
+
export declare function toApiDestinations(data: Destination[]): node.Destination[];
|
|
150
|
+
export declare function fromApiDestination(data: node.Destination): Destination;
|
|
@@ -18,7 +18,11 @@ along with the library. If not, see <http://www.gnu.org/licenses/>.
|
|
|
18
18
|
*/
|
|
19
19
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
20
20
|
if (k2 === undefined) k2 = k;
|
|
21
|
-
Object.
|
|
21
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
22
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
23
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
24
|
+
}
|
|
25
|
+
Object.defineProperty(o, k2, desc);
|
|
22
26
|
}) : (function(o, m, k, k2) {
|
|
23
27
|
if (k2 === undefined) k2 = k;
|
|
24
28
|
o[k2] = m[k];
|
|
@@ -39,8 +43,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
39
43
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
40
44
|
};
|
|
41
45
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
42
|
-
exports.verifySignedMessage = exports.verifyHexString = exports.
|
|
46
|
+
exports.fromApiDestination = exports.toApiDestinations = exports.toApiDestination = exports.verifySignedMessage = exports.verifyHexString = exports.SignerProviderWithMultipleAccounts = exports.SignerProvider = void 0;
|
|
43
47
|
const elliptic_1 = require("elliptic");
|
|
48
|
+
const api_1 = require("../api");
|
|
44
49
|
const utils = __importStar(require("../utils"));
|
|
45
50
|
const utils_1 = require("../utils");
|
|
46
51
|
const blakejs_1 = __importDefault(require("blakejs"));
|
|
@@ -57,91 +62,92 @@ const ec = new elliptic_1.ec('secp256k1');
|
|
|
57
62
|
(0, utils_1.assertType)();
|
|
58
63
|
(0, utils_1.assertType)();
|
|
59
64
|
(0, utils_1.assertType)();
|
|
60
|
-
class
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
this.
|
|
65
|
+
class SignerProvider {
|
|
66
|
+
async submitTransaction(unsignedTx, signature) {
|
|
67
|
+
const params = { unsignedTx: unsignedTx, signature: signature };
|
|
68
|
+
return this.nodeProvider.transactions.postTransactionsSubmit(params);
|
|
64
69
|
}
|
|
65
|
-
async
|
|
66
|
-
const
|
|
67
|
-
|
|
68
|
-
if (typeof account === 'undefined') {
|
|
69
|
-
throw new Error('Unmatched signerAddress');
|
|
70
|
-
}
|
|
71
|
-
else {
|
|
72
|
-
return account;
|
|
73
|
-
}
|
|
70
|
+
async signAndSubmitTransferTx(params) {
|
|
71
|
+
const signResult = await this.signTransferTx(params);
|
|
72
|
+
return this.submitTransaction(signResult.unsignedTx, signResult.signature);
|
|
74
73
|
}
|
|
75
|
-
async
|
|
76
|
-
|
|
74
|
+
async signAndSubmitDeployContractTx(params) {
|
|
75
|
+
const signResult = await this.signDeployContractTx(params);
|
|
76
|
+
return this.submitTransaction(signResult.unsignedTx, signResult.signature);
|
|
77
77
|
}
|
|
78
|
-
async
|
|
79
|
-
const
|
|
80
|
-
|
|
81
|
-
const params = { unsignedTx: unsignedTx, signature: signature };
|
|
82
|
-
return this.provider.transactions.postTransactionsSubmit(params);
|
|
78
|
+
async signAndSubmitExecuteScriptTx(params) {
|
|
79
|
+
const signResult = await this.signExecuteScriptTx(params);
|
|
80
|
+
return this.submitTransaction(signResult.unsignedTx, signResult.signature);
|
|
83
81
|
}
|
|
84
|
-
|
|
85
|
-
|
|
82
|
+
async signAndSubmitUnsignedTx(params) {
|
|
83
|
+
const signResult = await this.signUnsignedTx(params);
|
|
84
|
+
return this.submitTransaction(signResult.unsignedTx, signResult.signature);
|
|
86
85
|
}
|
|
87
86
|
async usePublicKey(params) {
|
|
88
87
|
const { signerAddress, ...restParams } = params;
|
|
89
|
-
const
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
throw new Error('Unknown signer address');
|
|
88
|
+
const selectedAccount = await this.getSelectedAccount();
|
|
89
|
+
if (signerAddress !== selectedAccount.address) {
|
|
90
|
+
throw new Error('The signer address is not the selected address');
|
|
93
91
|
}
|
|
94
92
|
else {
|
|
95
|
-
return { fromPublicKey:
|
|
93
|
+
return { fromPublicKey: selectedAccount.publicKey, ...restParams };
|
|
96
94
|
}
|
|
97
95
|
}
|
|
98
96
|
async signTransferTx(params) {
|
|
99
97
|
const response = await this.buildTransferTx(params);
|
|
100
|
-
return this.handleSign({ signerAddress: params.signerAddress, ...response }
|
|
98
|
+
return this.handleSign({ signerAddress: params.signerAddress, ...response });
|
|
101
99
|
}
|
|
102
100
|
async buildTransferTx(params) {
|
|
103
|
-
|
|
101
|
+
const data = {
|
|
102
|
+
...(await this.usePublicKey(params)),
|
|
103
|
+
destinations: toApiDestinations(params.destinations),
|
|
104
|
+
gasPrice: (0, api_1.toApiNumber256Optional)(params.gasPrice)
|
|
105
|
+
};
|
|
106
|
+
return this.nodeProvider.transactions.postTransactionsBuild(data);
|
|
104
107
|
}
|
|
105
108
|
async signDeployContractTx(params) {
|
|
106
109
|
const response = await this.buildContractCreationTx(params);
|
|
107
|
-
const result = await this.handleSign({ signerAddress: params.signerAddress, ...response }
|
|
110
|
+
const result = await this.handleSign({ signerAddress: params.signerAddress, ...response });
|
|
108
111
|
const contractId = utils.binToHex(utils.contractIdFromAddress(response.contractAddress));
|
|
109
112
|
return { ...result, contractId: contractId, contractAddress: response.contractAddress };
|
|
110
113
|
}
|
|
111
114
|
async buildContractCreationTx(params) {
|
|
112
|
-
|
|
115
|
+
const data = {
|
|
116
|
+
...(await this.usePublicKey(params)),
|
|
117
|
+
initialAttoAlphAmount: (0, api_1.toApiNumber256Optional)(params.initialAttoAlphAmount),
|
|
118
|
+
initialTokenAmounts: (0, api_1.toApiTokens)(params.initialTokenAmounts),
|
|
119
|
+
issueTokenAmount: (0, api_1.toApiNumber256Optional)(params.issueTokenAmount),
|
|
120
|
+
gasPrice: (0, api_1.toApiNumber256Optional)(params.gasPrice)
|
|
121
|
+
};
|
|
122
|
+
return this.nodeProvider.contracts.postContractsUnsignedTxDeployContract(data);
|
|
113
123
|
}
|
|
114
124
|
async signExecuteScriptTx(params) {
|
|
115
125
|
const response = await this.buildScriptTx(params);
|
|
116
|
-
return this.handleSign({ signerAddress: params.signerAddress, ...response }
|
|
126
|
+
return this.handleSign({ signerAddress: params.signerAddress, ...response });
|
|
117
127
|
}
|
|
118
128
|
async buildScriptTx(params) {
|
|
119
|
-
|
|
129
|
+
const data = {
|
|
130
|
+
...(await this.usePublicKey(params)),
|
|
131
|
+
tokens: (0, api_1.toApiTokens)(params.tokens)
|
|
132
|
+
};
|
|
133
|
+
return this.nodeProvider.contracts.postContractsUnsignedTxExecuteScript(data);
|
|
120
134
|
}
|
|
121
135
|
// in general, wallet should show the decoded information to user for confirmation
|
|
122
136
|
// please overwrite this function for real wallet
|
|
123
137
|
async signUnsignedTx(params) {
|
|
124
138
|
const data = { unsignedTx: params.unsignedTx };
|
|
125
|
-
const decoded = await this.
|
|
139
|
+
const decoded = await this.nodeProvider.transactions.postTransactionsDecodeUnsignedTx(data);
|
|
126
140
|
return this.handleSign({
|
|
127
141
|
fromGroup: decoded.fromGroup,
|
|
128
142
|
toGroup: decoded.toGroup,
|
|
129
143
|
signerAddress: params.signerAddress,
|
|
130
144
|
unsignedTx: params.unsignedTx,
|
|
131
145
|
txId: decoded.unsignedTx.txId
|
|
132
|
-
}
|
|
133
|
-
);
|
|
146
|
+
});
|
|
134
147
|
}
|
|
135
|
-
async handleSign(response
|
|
148
|
+
async handleSign(response) {
|
|
136
149
|
// sign the tx
|
|
137
150
|
const signature = await this.signRaw(response.signerAddress, response.txId);
|
|
138
|
-
// submit the tx if required
|
|
139
|
-
if (submitTx) {
|
|
140
|
-
await this.provider.transactions.postTransactionsSubmit({
|
|
141
|
-
unsignedTx: response.unsignedTx,
|
|
142
|
-
signature: signature
|
|
143
|
-
});
|
|
144
|
-
}
|
|
145
151
|
// return the signature back to the provider
|
|
146
152
|
return {
|
|
147
153
|
fromGroup: response.fromGroup,
|
|
@@ -162,7 +168,20 @@ class SignerWithNodeProvider {
|
|
|
162
168
|
return { signature: signature };
|
|
163
169
|
}
|
|
164
170
|
}
|
|
165
|
-
exports.
|
|
171
|
+
exports.SignerProvider = SignerProvider;
|
|
172
|
+
class SignerProviderWithMultipleAccounts extends SignerProvider {
|
|
173
|
+
async getAccount(signerAddress) {
|
|
174
|
+
const accounts = await this.getAccounts();
|
|
175
|
+
const account = accounts.find((a) => a.address === signerAddress);
|
|
176
|
+
if (typeof account === 'undefined') {
|
|
177
|
+
throw new Error('Unmatched signerAddress');
|
|
178
|
+
}
|
|
179
|
+
else {
|
|
180
|
+
return account;
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
exports.SignerProviderWithMultipleAccounts = SignerProviderWithMultipleAccounts;
|
|
166
185
|
function verifyHexString(hexString, publicKey, signature) {
|
|
167
186
|
try {
|
|
168
187
|
const key = ec.keyFromPublic(publicKey, 'hex');
|
|
@@ -182,3 +201,16 @@ function verifySignedMessage(message, publicKey, signature) {
|
|
|
182
201
|
return verifyHexString(utils.binToHex(messageHash), publicKey, signature);
|
|
183
202
|
}
|
|
184
203
|
exports.verifySignedMessage = verifySignedMessage;
|
|
204
|
+
utils_1.assertType;
|
|
205
|
+
function toApiDestination(data) {
|
|
206
|
+
return { ...data, attoAlphAmount: (0, api_1.toApiNumber256)(data.attoAlphAmount), tokens: (0, api_1.toApiTokens)(data.tokens) };
|
|
207
|
+
}
|
|
208
|
+
exports.toApiDestination = toApiDestination;
|
|
209
|
+
function toApiDestinations(data) {
|
|
210
|
+
return data.map(toApiDestination);
|
|
211
|
+
}
|
|
212
|
+
exports.toApiDestinations = toApiDestinations;
|
|
213
|
+
function fromApiDestination(data) {
|
|
214
|
+
return { ...data, attoAlphAmount: (0, api_1.fromApiNumber256)(data.attoAlphAmount), tokens: (0, api_1.fromApiTokens)(data.tokens) };
|
|
215
|
+
}
|
|
216
|
+
exports.fromApiDestination = fromApiDestination;
|
|
@@ -18,7 +18,11 @@ along with the library. If not, see <http://www.gnu.org/licenses/>.
|
|
|
18
18
|
*/
|
|
19
19
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
20
20
|
if (k2 === undefined) k2 = k;
|
|
21
|
-
Object.
|
|
21
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
22
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
23
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
24
|
+
}
|
|
25
|
+
Object.defineProperty(o, k2, desc);
|
|
22
26
|
}) : (function(o, m, k, k2) {
|
|
23
27
|
if (k2 === undefined) k2 = k;
|
|
24
28
|
o[k2] = m[k];
|
|
@@ -27,5 +31,4 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
27
31
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
28
32
|
};
|
|
29
33
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
30
|
-
__exportStar(require("./sign-verify"), exports);
|
|
31
34
|
__exportStar(require("./status"), exports);
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { node } from '../api';
|
|
2
2
|
import { Subscription, SubscribeOptions } from '../utils';
|
|
3
|
+
export declare type TxStatus = node.TxStatus;
|
|
3
4
|
export declare class TxStatusSubscription extends Subscription<TxStatus> {
|
|
4
5
|
readonly txId: string;
|
|
5
6
|
readonly fromGroup?: number;
|
|
@@ -18,6 +18,7 @@ along with the library. If not, see <http://www.gnu.org/licenses/>.
|
|
|
18
18
|
*/
|
|
19
19
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
20
20
|
exports.subscribeToTxStatus = exports.TxStatusSubscription = void 0;
|
|
21
|
+
const __1 = require("..");
|
|
21
22
|
const utils_1 = require("../utils");
|
|
22
23
|
class TxStatusSubscription extends utils_1.Subscription {
|
|
23
24
|
constructor(options, txId, fromGroup, toGroup) {
|
|
@@ -29,7 +30,7 @@ class TxStatusSubscription extends utils_1.Subscription {
|
|
|
29
30
|
}
|
|
30
31
|
async polling() {
|
|
31
32
|
try {
|
|
32
|
-
const txStatus = await
|
|
33
|
+
const txStatus = await __1.web3.getCurrentNodeProvider().transactions.getTransactionsStatus({
|
|
33
34
|
txId: this.txId,
|
|
34
35
|
fromGroup: this.fromGroup,
|
|
35
36
|
toGroup: this.toGroup
|
package/dist/src/utils/bs58.d.ts
CHANGED
package/dist/src/utils/bs58.js
CHANGED
|
@@ -20,9 +20,21 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
20
20
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
21
21
|
};
|
|
22
22
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
23
|
-
exports.bs58 = void 0;
|
|
23
|
+
exports.isBase58 = exports.bs58 = void 0;
|
|
24
24
|
/** This source is under MIT License and come originally from https://github.com/cryptocoinjs/bs58 **/
|
|
25
25
|
const base_x_1 = __importDefault(require("base-x"));
|
|
26
26
|
const ALPHABET = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz';
|
|
27
27
|
exports.bs58 = (0, base_x_1.default)(ALPHABET);
|
|
28
|
+
function isBase58(s) {
|
|
29
|
+
if (s === '' || s.trim() === '') {
|
|
30
|
+
return false;
|
|
31
|
+
}
|
|
32
|
+
try {
|
|
33
|
+
return exports.bs58.encode(exports.bs58.decode(s)) === s;
|
|
34
|
+
}
|
|
35
|
+
catch (err) {
|
|
36
|
+
return false;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
exports.isBase58 = isBase58;
|
|
28
40
|
exports.default = exports.bs58;
|