@bitgo-beta/abstract-substrate 1.0.0-alpha.8 → 1.0.0-alpha.80
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +127 -0
- package/dist/src/abstractSubstrateCoin.d.ts +60 -3
- package/dist/src/abstractSubstrateCoin.d.ts.map +1 -1
- package/dist/src/abstractSubstrateCoin.js +374 -15
- package/dist/src/index.d.ts +1 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +16 -1
- package/dist/src/lib/constants.d.ts +2 -0
- package/dist/src/lib/constants.d.ts.map +1 -0
- package/dist/src/lib/constants.js +5 -0
- package/dist/src/lib/errors.d.ts +8 -0
- package/dist/src/lib/errors.d.ts.map +1 -0
- package/dist/src/lib/errors.js +19 -0
- package/dist/src/lib/iface.d.ts +160 -0
- package/dist/src/lib/iface.d.ts.map +1 -0
- package/dist/src/lib/iface.js +48 -0
- package/dist/src/lib/index.d.ts +12 -0
- package/dist/src/lib/index.d.ts.map +1 -0
- package/dist/src/lib/index.js +61 -0
- package/dist/src/lib/keyPair.d.ts +24 -0
- package/dist/src/lib/keyPair.d.ts.map +1 -0
- package/dist/src/lib/keyPair.js +63 -0
- package/dist/src/lib/nativeTransferBuilder.d.ts +61 -0
- package/dist/src/lib/nativeTransferBuilder.d.ts.map +1 -0
- package/dist/src/lib/nativeTransferBuilder.js +147 -0
- package/dist/src/lib/singletonRegistry.d.ts +8 -0
- package/dist/src/lib/singletonRegistry.d.ts.map +1 -0
- package/dist/src/lib/singletonRegistry.js +20 -0
- package/dist/src/lib/transaction.d.ts +73 -0
- package/dist/src/lib/transaction.d.ts.map +1 -0
- package/dist/src/lib/transaction.js +424 -0
- package/dist/src/lib/transactionBuilder.d.ts +121 -0
- package/dist/src/lib/transactionBuilder.d.ts.map +1 -0
- package/dist/src/lib/transactionBuilder.js +334 -0
- package/dist/src/lib/transferBuilder.d.ts +6 -0
- package/dist/src/lib/transferBuilder.d.ts.map +1 -0
- package/dist/src/lib/transferBuilder.js +11 -0
- package/dist/src/lib/txnSchema.d.ts +10 -0
- package/dist/src/lib/txnSchema.d.ts.map +1 -0
- package/dist/src/lib/txnSchema.js +57 -0
- package/dist/src/lib/utils.d.ts +122 -0
- package/dist/src/lib/utils.d.ts.map +1 -0
- package/dist/src/lib/utils.js +227 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +20 -5
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
import { SignTransactionOptions as BaseSignTransactionOptions, TransactionExplanation as BaseTransactionExplanation, TransactionType } from '@bitgo-beta/sdk-core';
|
|
2
|
+
import { BaseTxInfo, DecodedUnsignedTx, TypeRegistry } from '@substrate/txwrapper-core/lib/types';
|
|
3
|
+
import { Args } from '@substrate/txwrapper-core/lib/types/method';
|
|
4
|
+
export { HexString } from '@polkadot/util/types';
|
|
5
|
+
/**
|
|
6
|
+
* Section names for the transaction methods.
|
|
7
|
+
*/
|
|
8
|
+
export declare enum SectionNames {
|
|
9
|
+
Proxy = "proxy"
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Method names for the transaction method. Names change based on the type of transaction e.g 'bond' for the staking transaction
|
|
13
|
+
*/
|
|
14
|
+
export declare enum MethodNames {
|
|
15
|
+
/**
|
|
16
|
+
* Transfer the entire transferable balance from the caller account.
|
|
17
|
+
*
|
|
18
|
+
* @see https://polkadot.js.org/docs/substrate/extrinsics/#transferalldest-multiaddress-keep_alive-bool
|
|
19
|
+
*/
|
|
20
|
+
TransferAll = "transferAll",
|
|
21
|
+
/**
|
|
22
|
+
* Same as the transfer call, but with a check that the transfer will not kill the origin account.
|
|
23
|
+
*
|
|
24
|
+
* @see https://polkadot.js.org/docs/substrate/extrinsics/#transferkeepalivedest-multiaddress-value-compactu128
|
|
25
|
+
*/
|
|
26
|
+
TransferKeepAlive = "transferKeepAlive",
|
|
27
|
+
/**
|
|
28
|
+
* Transfer funds with an optional memo attached.
|
|
29
|
+
* The memo allows adding context or metadata to the transaction, commonly used for recordkeeping or identification.
|
|
30
|
+
*
|
|
31
|
+
* @see https://developers.polymesh.network/sdk-docs/enums/Generated/Types/BalancesTx/#transferwithmemo
|
|
32
|
+
*/
|
|
33
|
+
TransferWithMemo = "transferWithMemo",
|
|
34
|
+
AddStake = "addStake",
|
|
35
|
+
RemoveStake = "removeStake",
|
|
36
|
+
/**
|
|
37
|
+
* Registers a Decentralized Identifier (DID) along with Customer Due Diligence (CDD) information.
|
|
38
|
+
*
|
|
39
|
+
* @see https://developers.polymesh.network/sdk-docs/enums/Generated/Types/IdentityTx/#cddregisterdidwithcdd
|
|
40
|
+
*/
|
|
41
|
+
RegisterDidWithCDD = "cddRegisterDidWithCdd"
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* The transaction data returned from the toJson() function of a transaction
|
|
45
|
+
*/
|
|
46
|
+
export interface TxData {
|
|
47
|
+
id: string;
|
|
48
|
+
sender: string;
|
|
49
|
+
referenceBlock: string;
|
|
50
|
+
blockNumber: number;
|
|
51
|
+
genesisHash: string;
|
|
52
|
+
nonce: number;
|
|
53
|
+
specVersion: number;
|
|
54
|
+
transactionVersion: number;
|
|
55
|
+
chainName: string;
|
|
56
|
+
method?: string;
|
|
57
|
+
specName?: string;
|
|
58
|
+
amount?: string;
|
|
59
|
+
to?: string;
|
|
60
|
+
tip?: number;
|
|
61
|
+
eraPeriod?: number;
|
|
62
|
+
payee?: string;
|
|
63
|
+
keepAlive?: boolean;
|
|
64
|
+
netuid?: string;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Transaction method specific args
|
|
68
|
+
*/
|
|
69
|
+
export interface TransferArgs {
|
|
70
|
+
dest: {
|
|
71
|
+
id: string;
|
|
72
|
+
};
|
|
73
|
+
value: string;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Transaction method specific args
|
|
77
|
+
*/
|
|
78
|
+
export interface TransferAllArgs {
|
|
79
|
+
dest: {
|
|
80
|
+
id: string;
|
|
81
|
+
};
|
|
82
|
+
keepAlive: boolean;
|
|
83
|
+
}
|
|
84
|
+
export interface TransferWithMemoArgs extends Args {
|
|
85
|
+
dest: {
|
|
86
|
+
id: string;
|
|
87
|
+
};
|
|
88
|
+
value: string;
|
|
89
|
+
memo: string;
|
|
90
|
+
}
|
|
91
|
+
export interface AddStakeArgs extends Args {
|
|
92
|
+
amountStaked: string;
|
|
93
|
+
hotkey: string;
|
|
94
|
+
netuid: string;
|
|
95
|
+
}
|
|
96
|
+
export interface RemoveStakeArgs extends Args {
|
|
97
|
+
amountUnstaked: string;
|
|
98
|
+
hotkey: string;
|
|
99
|
+
netuid: string;
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Decoded TxMethod from a transaction hex
|
|
103
|
+
*/
|
|
104
|
+
export interface TxMethod {
|
|
105
|
+
args: TransferArgs | TransferAllArgs | AddStakeArgs | RemoveStakeArgs;
|
|
106
|
+
name: MethodNames;
|
|
107
|
+
pallet: string;
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Modified unsigned transaction with a decoded method instead of a method hex
|
|
111
|
+
*/
|
|
112
|
+
export interface DecodedTx extends Omit<DecodedUnsignedTx, 'method'> {
|
|
113
|
+
method: TxMethod;
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Base transaction info shared across all types of transactions
|
|
117
|
+
*/
|
|
118
|
+
export interface CreateBaseTxInfo {
|
|
119
|
+
baseTxInfo: BaseTxInfo;
|
|
120
|
+
options: {
|
|
121
|
+
metadataRpc: `0x${string}`;
|
|
122
|
+
registry: TypeRegistry;
|
|
123
|
+
isImmortalEra?: boolean;
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
export interface TransactionExplanation extends BaseTransactionExplanation {
|
|
127
|
+
type: TransactionType;
|
|
128
|
+
payee?: string;
|
|
129
|
+
}
|
|
130
|
+
export declare enum TransactionTypes {
|
|
131
|
+
TRANSFER = "transfer"
|
|
132
|
+
}
|
|
133
|
+
export interface Material {
|
|
134
|
+
genesisHash: string;
|
|
135
|
+
chainName: string;
|
|
136
|
+
specName: string;
|
|
137
|
+
specVersion: number;
|
|
138
|
+
txVersion: number;
|
|
139
|
+
metadata: `0x${string}`;
|
|
140
|
+
}
|
|
141
|
+
export interface SignTransactionOptions extends BaseSignTransactionOptions {
|
|
142
|
+
txPrebuild: TransactionPrebuild;
|
|
143
|
+
prv: string;
|
|
144
|
+
}
|
|
145
|
+
export interface TransactionPrebuild {
|
|
146
|
+
txHex: string;
|
|
147
|
+
transaction: TxData;
|
|
148
|
+
}
|
|
149
|
+
export interface ExplainTransactionOptions {
|
|
150
|
+
txPrebuild: TransactionPrebuild;
|
|
151
|
+
publicKey: string;
|
|
152
|
+
feeInfo: {
|
|
153
|
+
fee: string;
|
|
154
|
+
};
|
|
155
|
+
}
|
|
156
|
+
export interface VerifiedTransactionParameters {
|
|
157
|
+
txHex: string;
|
|
158
|
+
prv: string;
|
|
159
|
+
}
|
|
160
|
+
//# sourceMappingURL=iface.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"iface.d.ts","sourceRoot":"","sources":["../../../src/lib/iface.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TransactionTypes = exports.MethodNames = exports.SectionNames = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Section names for the transaction methods.
|
|
6
|
+
*/
|
|
7
|
+
var SectionNames;
|
|
8
|
+
(function (SectionNames) {
|
|
9
|
+
SectionNames["Proxy"] = "proxy";
|
|
10
|
+
})(SectionNames || (exports.SectionNames = SectionNames = {}));
|
|
11
|
+
/**
|
|
12
|
+
* Method names for the transaction method. Names change based on the type of transaction e.g 'bond' for the staking transaction
|
|
13
|
+
*/
|
|
14
|
+
var MethodNames;
|
|
15
|
+
(function (MethodNames) {
|
|
16
|
+
/**
|
|
17
|
+
* Transfer the entire transferable balance from the caller account.
|
|
18
|
+
*
|
|
19
|
+
* @see https://polkadot.js.org/docs/substrate/extrinsics/#transferalldest-multiaddress-keep_alive-bool
|
|
20
|
+
*/
|
|
21
|
+
MethodNames["TransferAll"] = "transferAll";
|
|
22
|
+
/**
|
|
23
|
+
* Same as the transfer call, but with a check that the transfer will not kill the origin account.
|
|
24
|
+
*
|
|
25
|
+
* @see https://polkadot.js.org/docs/substrate/extrinsics/#transferkeepalivedest-multiaddress-value-compactu128
|
|
26
|
+
*/
|
|
27
|
+
MethodNames["TransferKeepAlive"] = "transferKeepAlive";
|
|
28
|
+
/**
|
|
29
|
+
* Transfer funds with an optional memo attached.
|
|
30
|
+
* The memo allows adding context or metadata to the transaction, commonly used for recordkeeping or identification.
|
|
31
|
+
*
|
|
32
|
+
* @see https://developers.polymesh.network/sdk-docs/enums/Generated/Types/BalancesTx/#transferwithmemo
|
|
33
|
+
*/
|
|
34
|
+
MethodNames["TransferWithMemo"] = "transferWithMemo";
|
|
35
|
+
MethodNames["AddStake"] = "addStake";
|
|
36
|
+
MethodNames["RemoveStake"] = "removeStake";
|
|
37
|
+
/**
|
|
38
|
+
* Registers a Decentralized Identifier (DID) along with Customer Due Diligence (CDD) information.
|
|
39
|
+
*
|
|
40
|
+
* @see https://developers.polymesh.network/sdk-docs/enums/Generated/Types/IdentityTx/#cddregisterdidwithcdd
|
|
41
|
+
*/
|
|
42
|
+
MethodNames["RegisterDidWithCDD"] = "cddRegisterDidWithCdd";
|
|
43
|
+
})(MethodNames || (exports.MethodNames = MethodNames = {}));
|
|
44
|
+
var TransactionTypes;
|
|
45
|
+
(function (TransactionTypes) {
|
|
46
|
+
TransactionTypes["TRANSFER"] = "transfer";
|
|
47
|
+
})(TransactionTypes || (exports.TransactionTypes = TransactionTypes = {}));
|
|
48
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2lmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQVVBOztHQUVHO0FBQ0gsSUFBWSxZQUVYO0FBRkQsV0FBWSxZQUFZO0lBQ3RCLCtCQUFlLENBQUE7QUFDakIsQ0FBQyxFQUZXLFlBQVksNEJBQVosWUFBWSxRQUV2QjtBQUVEOztHQUVHO0FBQ0gsSUFBWSxXQTZCWDtBQTdCRCxXQUFZLFdBQVc7SUFDckI7Ozs7T0FJRztJQUNILDBDQUEyQixDQUFBO0lBQzNCOzs7O09BSUc7SUFDSCxzREFBdUMsQ0FBQTtJQUN2Qzs7Ozs7T0FLRztJQUNILG9EQUFxQyxDQUFBO0lBQ3JDLG9DQUFxQixDQUFBO0lBQ3JCLDBDQUEyQixDQUFBO0lBRTNCOzs7O09BSUc7SUFDSCwyREFBNEMsQ0FBQTtBQUM5QyxDQUFDLEVBN0JXLFdBQVcsMkJBQVgsV0FBVyxRQTZCdEI7QUE2RkQsSUFBWSxnQkFFWDtBQUZELFdBQVksZ0JBQWdCO0lBQzFCLHlDQUFxQixDQUFBO0FBQ3ZCLENBQUMsRUFGVyxnQkFBZ0IsZ0NBQWhCLGdCQUFnQixRQUUzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIFNpZ25UcmFuc2FjdGlvbk9wdGlvbnMgYXMgQmFzZVNpZ25UcmFuc2FjdGlvbk9wdGlvbnMsXG4gIFRyYW5zYWN0aW9uRXhwbGFuYXRpb24gYXMgQmFzZVRyYW5zYWN0aW9uRXhwbGFuYXRpb24sXG4gIFRyYW5zYWN0aW9uVHlwZSxcbn0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgQmFzZVR4SW5mbywgRGVjb2RlZFVuc2lnbmVkVHgsIFR5cGVSZWdpc3RyeSB9IGZyb20gJ0BzdWJzdHJhdGUvdHh3cmFwcGVyLWNvcmUvbGliL3R5cGVzJztcbmltcG9ydCB7IEFyZ3MgfSBmcm9tICdAc3Vic3RyYXRlL3R4d3JhcHBlci1jb3JlL2xpYi90eXBlcy9tZXRob2QnO1xuXG5leHBvcnQgeyBIZXhTdHJpbmcgfSBmcm9tICdAcG9sa2Fkb3QvdXRpbC90eXBlcyc7XG5cbi8qKlxuICogU2VjdGlvbiBuYW1lcyBmb3IgdGhlIHRyYW5zYWN0aW9uIG1ldGhvZHMuXG4gKi9cbmV4cG9ydCBlbnVtIFNlY3Rpb25OYW1lcyB7XG4gIFByb3h5ID0gJ3Byb3h5Jyxcbn1cblxuLyoqXG4gKiBNZXRob2QgbmFtZXMgZm9yIHRoZSB0cmFuc2FjdGlvbiBtZXRob2QuIE5hbWVzIGNoYW5nZSBiYXNlZCBvbiB0aGUgdHlwZSBvZiB0cmFuc2FjdGlvbiBlLmcgJ2JvbmQnIGZvciB0aGUgc3Rha2luZyB0cmFuc2FjdGlvblxuICovXG5leHBvcnQgZW51bSBNZXRob2ROYW1lcyB7XG4gIC8qKlxuICAgKiBUcmFuc2ZlciB0aGUgZW50aXJlIHRyYW5zZmVyYWJsZSBiYWxhbmNlIGZyb20gdGhlIGNhbGxlciBhY2NvdW50LlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vcG9sa2Fkb3QuanMub3JnL2RvY3Mvc3Vic3RyYXRlL2V4dHJpbnNpY3MvI3RyYW5zZmVyYWxsZGVzdC1tdWx0aWFkZHJlc3Mta2VlcF9hbGl2ZS1ib29sXG4gICAqL1xuICBUcmFuc2ZlckFsbCA9ICd0cmFuc2ZlckFsbCcsXG4gIC8qKlxuICAgKiBTYW1lIGFzIHRoZSB0cmFuc2ZlciBjYWxsLCBidXQgd2l0aCBhIGNoZWNrIHRoYXQgdGhlIHRyYW5zZmVyIHdpbGwgbm90IGtpbGwgdGhlIG9yaWdpbiBhY2NvdW50LlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vcG9sa2Fkb3QuanMub3JnL2RvY3Mvc3Vic3RyYXRlL2V4dHJpbnNpY3MvI3RyYW5zZmVya2VlcGFsaXZlZGVzdC1tdWx0aWFkZHJlc3MtdmFsdWUtY29tcGFjdHUxMjhcbiAgICovXG4gIFRyYW5zZmVyS2VlcEFsaXZlID0gJ3RyYW5zZmVyS2VlcEFsaXZlJyxcbiAgLyoqXG4gICAqIFRyYW5zZmVyIGZ1bmRzIHdpdGggYW4gb3B0aW9uYWwgbWVtbyBhdHRhY2hlZC5cbiAgICogVGhlIG1lbW8gYWxsb3dzIGFkZGluZyBjb250ZXh0IG9yIG1ldGFkYXRhIHRvIHRoZSB0cmFuc2FjdGlvbiwgY29tbW9ubHkgdXNlZCBmb3IgcmVjb3Jka2VlcGluZyBvciBpZGVudGlmaWNhdGlvbi5cbiAgICpcbiAgICogQHNlZSBodHRwczovL2RldmVsb3BlcnMucG9seW1lc2gubmV0d29yay9zZGstZG9jcy9lbnVtcy9HZW5lcmF0ZWQvVHlwZXMvQmFsYW5jZXNUeC8jdHJhbnNmZXJ3aXRobWVtb1xuICAgKi9cbiAgVHJhbnNmZXJXaXRoTWVtbyA9ICd0cmFuc2ZlcldpdGhNZW1vJyxcbiAgQWRkU3Rha2UgPSAnYWRkU3Rha2UnLFxuICBSZW1vdmVTdGFrZSA9ICdyZW1vdmVTdGFrZScsXG5cbiAgLyoqXG4gICAqIFJlZ2lzdGVycyBhIERlY2VudHJhbGl6ZWQgSWRlbnRpZmllciAoRElEKSBhbG9uZyB3aXRoIEN1c3RvbWVyIER1ZSBEaWxpZ2VuY2UgKENERCkgaW5mb3JtYXRpb24uXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kZXZlbG9wZXJzLnBvbHltZXNoLm5ldHdvcmsvc2RrLWRvY3MvZW51bXMvR2VuZXJhdGVkL1R5cGVzL0lkZW50aXR5VHgvI2NkZHJlZ2lzdGVyZGlkd2l0aGNkZFxuICAgKi9cbiAgUmVnaXN0ZXJEaWRXaXRoQ0REID0gJ2NkZFJlZ2lzdGVyRGlkV2l0aENkZCcsXG59XG5cbi8qKlxuICogVGhlIHRyYW5zYWN0aW9uIGRhdGEgcmV0dXJuZWQgZnJvbSB0aGUgdG9Kc29uKCkgZnVuY3Rpb24gb2YgYSB0cmFuc2FjdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIFR4RGF0YSB7XG4gIGlkOiBzdHJpbmc7XG4gIHNlbmRlcjogc3RyaW5nO1xuICByZWZlcmVuY2VCbG9jazogc3RyaW5nO1xuICBibG9ja051bWJlcjogbnVtYmVyO1xuICBnZW5lc2lzSGFzaDogc3RyaW5nO1xuICBub25jZTogbnVtYmVyO1xuICBzcGVjVmVyc2lvbjogbnVtYmVyO1xuICB0cmFuc2FjdGlvblZlcnNpb246IG51bWJlcjtcbiAgY2hhaW5OYW1lOiBzdHJpbmc7XG4gIG1ldGhvZD86IHN0cmluZztcbiAgc3BlY05hbWU/OiBzdHJpbmc7XG4gIGFtb3VudD86IHN0cmluZztcbiAgdG8/OiBzdHJpbmc7XG4gIHRpcD86IG51bWJlcjtcbiAgZXJhUGVyaW9kPzogbnVtYmVyO1xuICBwYXllZT86IHN0cmluZztcbiAga2VlcEFsaXZlPzogYm9vbGVhbjtcbiAgbmV0dWlkPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFRyYW5zYWN0aW9uIG1ldGhvZCBzcGVjaWZpYyBhcmdzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVHJhbnNmZXJBcmdzIHtcbiAgZGVzdDogeyBpZDogc3RyaW5nIH07XG4gIHZhbHVlOiBzdHJpbmc7XG59XG5cbi8qKlxuICogVHJhbnNhY3Rpb24gbWV0aG9kIHNwZWNpZmljIGFyZ3NcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUcmFuc2ZlckFsbEFyZ3Mge1xuICBkZXN0OiB7IGlkOiBzdHJpbmcgfTtcbiAga2VlcEFsaXZlOiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRyYW5zZmVyV2l0aE1lbW9BcmdzIGV4dGVuZHMgQXJncyB7XG4gIGRlc3Q6IHsgaWQ6IHN0cmluZyB9O1xuICB2YWx1ZTogc3RyaW5nO1xuICBtZW1vOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWRkU3Rha2VBcmdzIGV4dGVuZHMgQXJncyB7XG4gIGFtb3VudFN0YWtlZDogc3RyaW5nO1xuICBob3RrZXk6IHN0cmluZztcbiAgbmV0dWlkOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVtb3ZlU3Rha2VBcmdzIGV4dGVuZHMgQXJncyB7XG4gIGFtb3VudFVuc3Rha2VkOiBzdHJpbmc7XG4gIGhvdGtleTogc3RyaW5nO1xuICBuZXR1aWQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBEZWNvZGVkIFR4TWV0aG9kIGZyb20gYSB0cmFuc2FjdGlvbiBoZXhcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUeE1ldGhvZCB7XG4gIGFyZ3M6IFRyYW5zZmVyQXJncyB8IFRyYW5zZmVyQWxsQXJncyB8IEFkZFN0YWtlQXJncyB8IFJlbW92ZVN0YWtlQXJncztcbiAgbmFtZTogTWV0aG9kTmFtZXM7XG4gIHBhbGxldDogc3RyaW5nO1xufVxuXG4vKipcbiAqIE1vZGlmaWVkIHVuc2lnbmVkIHRyYW5zYWN0aW9uIHdpdGggYSBkZWNvZGVkIG1ldGhvZCBpbnN0ZWFkIG9mIGEgbWV0aG9kIGhleFxuICovXG5leHBvcnQgaW50ZXJmYWNlIERlY29kZWRUeCBleHRlbmRzIE9taXQ8RGVjb2RlZFVuc2lnbmVkVHgsICdtZXRob2QnPiB7XG4gIG1ldGhvZDogVHhNZXRob2Q7XG59XG5cbi8qKlxuICogQmFzZSB0cmFuc2FjdGlvbiBpbmZvIHNoYXJlZCBhY3Jvc3MgYWxsIHR5cGVzIG9mIHRyYW5zYWN0aW9uc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIENyZWF0ZUJhc2VUeEluZm8ge1xuICBiYXNlVHhJbmZvOiBCYXNlVHhJbmZvO1xuICBvcHRpb25zOiB7XG4gICAgbWV0YWRhdGFScGM6IGAweCR7c3RyaW5nfWA7XG4gICAgcmVnaXN0cnk6IFR5cGVSZWdpc3RyeTtcbiAgICBpc0ltbW9ydGFsRXJhPzogYm9vbGVhbjtcbiAgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUcmFuc2FjdGlvbkV4cGxhbmF0aW9uIGV4dGVuZHMgQmFzZVRyYW5zYWN0aW9uRXhwbGFuYXRpb24ge1xuICB0eXBlOiBUcmFuc2FjdGlvblR5cGU7XG4gIHBheWVlPzogc3RyaW5nO1xufVxuXG5leHBvcnQgZW51bSBUcmFuc2FjdGlvblR5cGVzIHtcbiAgVFJBTlNGRVIgPSAndHJhbnNmZXInLFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1hdGVyaWFsIHtcbiAgZ2VuZXNpc0hhc2g6IHN0cmluZztcbiAgY2hhaW5OYW1lOiBzdHJpbmc7XG4gIHNwZWNOYW1lOiBzdHJpbmc7XG4gIHNwZWNWZXJzaW9uOiBudW1iZXI7XG4gIHR4VmVyc2lvbjogbnVtYmVyO1xuICBtZXRhZGF0YTogYDB4JHtzdHJpbmd9YDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTaWduVHJhbnNhY3Rpb25PcHRpb25zIGV4dGVuZHMgQmFzZVNpZ25UcmFuc2FjdGlvbk9wdGlvbnMge1xuICB0eFByZWJ1aWxkOiBUcmFuc2FjdGlvblByZWJ1aWxkO1xuICBwcnY6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUcmFuc2FjdGlvblByZWJ1aWxkIHtcbiAgdHhIZXg6IHN0cmluZztcbiAgdHJhbnNhY3Rpb246IFR4RGF0YTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFeHBsYWluVHJhbnNhY3Rpb25PcHRpb25zIHtcbiAgdHhQcmVidWlsZDogVHJhbnNhY3Rpb25QcmVidWlsZDtcbiAgcHVibGljS2V5OiBzdHJpbmc7XG4gIGZlZUluZm86IHtcbiAgICBmZWU6IHN0cmluZztcbiAgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBWZXJpZmllZFRyYW5zYWN0aW9uUGFyYW1ldGVycyB7XG4gIHR4SGV4OiBzdHJpbmc7XG4gIHBydjogc3RyaW5nO1xufVxuIl19
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import * as Constants from './constants';
|
|
2
|
+
import * as Errors from './errors';
|
|
3
|
+
import * as Interface from './iface';
|
|
4
|
+
import * as Schema from './txnSchema';
|
|
5
|
+
export { Utils, default as utils } from './utils';
|
|
6
|
+
export { KeyPair } from './keyPair';
|
|
7
|
+
export { SingletonRegistry } from './singletonRegistry';
|
|
8
|
+
export { Transaction } from './transaction';
|
|
9
|
+
export { TransactionBuilder } from './transactionBuilder';
|
|
10
|
+
export { TransferBuilder } from './transferBuilder';
|
|
11
|
+
export { Constants, Errors, Interface, Schema };
|
|
12
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,SAAS,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,MAAM,MAAM,UAAU,CAAC;AACnC,OAAO,KAAK,SAAS,MAAM,SAAS,CAAC;AACrC,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AACtC,OAAO,EAAE,KAAK,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,SAAS,CAAC;AAElD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.Schema = exports.Interface = exports.Errors = exports.Constants = exports.TransferBuilder = exports.TransactionBuilder = exports.Transaction = exports.SingletonRegistry = exports.KeyPair = exports.utils = exports.Utils = void 0;
|
|
40
|
+
const Constants = __importStar(require("./constants"));
|
|
41
|
+
exports.Constants = Constants;
|
|
42
|
+
const Errors = __importStar(require("./errors"));
|
|
43
|
+
exports.Errors = Errors;
|
|
44
|
+
const Interface = __importStar(require("./iface"));
|
|
45
|
+
exports.Interface = Interface;
|
|
46
|
+
const Schema = __importStar(require("./txnSchema"));
|
|
47
|
+
exports.Schema = Schema;
|
|
48
|
+
var utils_1 = require("./utils");
|
|
49
|
+
Object.defineProperty(exports, "Utils", { enumerable: true, get: function () { return utils_1.Utils; } });
|
|
50
|
+
Object.defineProperty(exports, "utils", { enumerable: true, get: function () { return __importDefault(utils_1).default; } });
|
|
51
|
+
var keyPair_1 = require("./keyPair");
|
|
52
|
+
Object.defineProperty(exports, "KeyPair", { enumerable: true, get: function () { return keyPair_1.KeyPair; } });
|
|
53
|
+
var singletonRegistry_1 = require("./singletonRegistry");
|
|
54
|
+
Object.defineProperty(exports, "SingletonRegistry", { enumerable: true, get: function () { return singletonRegistry_1.SingletonRegistry; } });
|
|
55
|
+
var transaction_1 = require("./transaction");
|
|
56
|
+
Object.defineProperty(exports, "Transaction", { enumerable: true, get: function () { return transaction_1.Transaction; } });
|
|
57
|
+
var transactionBuilder_1 = require("./transactionBuilder");
|
|
58
|
+
Object.defineProperty(exports, "TransactionBuilder", { enumerable: true, get: function () { return transactionBuilder_1.TransactionBuilder; } });
|
|
59
|
+
var transferBuilder_1 = require("./transferBuilder");
|
|
60
|
+
Object.defineProperty(exports, "TransferBuilder", { enumerable: true, get: function () { return transferBuilder_1.TransferBuilder; } });
|
|
61
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHVEQUF5QztBQVdoQyw4QkFBUztBQVZsQixpREFBbUM7QUFVZix3QkFBTTtBQVQxQixtREFBcUM7QUFTVCw4QkFBUztBQVJyQyxvREFBc0M7QUFRQyx3QkFBTTtBQVA3QyxpQ0FBa0Q7QUFBekMsOEZBQUEsS0FBSyxPQUFBO0FBQUUsK0dBQUEsT0FBTyxPQUFTO0FBRWhDLHFDQUFvQztBQUEzQixrR0FBQSxPQUFPLE9BQUE7QUFDaEIseURBQXdEO0FBQS9DLHNIQUFBLGlCQUFpQixPQUFBO0FBQzFCLDZDQUE0QztBQUFuQywwR0FBQSxXQUFXLE9BQUE7QUFDcEIsMkRBQTBEO0FBQWpELHdIQUFBLGtCQUFrQixPQUFBO0FBQzNCLHFEQUFvRDtBQUEzQyxrSEFBQSxlQUFlLE9BQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBDb25zdGFudHMgZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0ICogYXMgRXJyb3JzIGZyb20gJy4vZXJyb3JzJztcbmltcG9ydCAqIGFzIEludGVyZmFjZSBmcm9tICcuL2lmYWNlJztcbmltcG9ydCAqIGFzIFNjaGVtYSBmcm9tICcuL3R4blNjaGVtYSc7XG5leHBvcnQgeyBVdGlscywgZGVmYXVsdCBhcyB1dGlscyB9IGZyb20gJy4vdXRpbHMnO1xuXG5leHBvcnQgeyBLZXlQYWlyIH0gZnJvbSAnLi9rZXlQYWlyJztcbmV4cG9ydCB7IFNpbmdsZXRvblJlZ2lzdHJ5IH0gZnJvbSAnLi9zaW5nbGV0b25SZWdpc3RyeSc7XG5leHBvcnQgeyBUcmFuc2FjdGlvbiB9IGZyb20gJy4vdHJhbnNhY3Rpb24nO1xuZXhwb3J0IHsgVHJhbnNhY3Rpb25CdWlsZGVyIH0gZnJvbSAnLi90cmFuc2FjdGlvbkJ1aWxkZXInO1xuZXhwb3J0IHsgVHJhbnNmZXJCdWlsZGVyIH0gZnJvbSAnLi90cmFuc2ZlckJ1aWxkZXInO1xuZXhwb3J0IHsgQ29uc3RhbnRzLCBFcnJvcnMsIEludGVyZmFjZSwgU2NoZW1hIH07XG4iXX0=
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { DefaultKeys, Ed25519KeyPair, KeyPairOptions } from '@bitgo-beta/sdk-core';
|
|
2
|
+
import { KeyringPair } from '@polkadot/keyring/types';
|
|
3
|
+
export declare class KeyPair extends Ed25519KeyPair {
|
|
4
|
+
/**
|
|
5
|
+
* Public constructor. By default, creates a key pair with a random master seed.
|
|
6
|
+
*
|
|
7
|
+
* @param { KeyPairOptions } source Either a master seed, a private key, or a public key
|
|
8
|
+
*/
|
|
9
|
+
constructor(source?: KeyPairOptions);
|
|
10
|
+
/**
|
|
11
|
+
* Helper function to create the KeyringPair for signing a substrate transaction.
|
|
12
|
+
* @returns {KeyringPair} KeyringPair
|
|
13
|
+
*/
|
|
14
|
+
protected createKeyringPair(): KeyringPair;
|
|
15
|
+
/** @inheritdoc */
|
|
16
|
+
getAddress(ss58Format: number): string;
|
|
17
|
+
/** @inheritdoc */
|
|
18
|
+
getKeys(): DefaultKeys;
|
|
19
|
+
/** @inheritdoc */
|
|
20
|
+
recordKeysFromPrivateKeyInProtocolFormat(prv: string): DefaultKeys;
|
|
21
|
+
/** @inheritdoc */
|
|
22
|
+
recordKeysFromPublicKeyInProtocolFormat(pub: string): DefaultKeys;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=keyPair.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keyPair.d.ts","sourceRoot":"","sources":["../../../src/lib/keyPair.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,cAAc,EAAY,cAAc,EAAS,MAAM,sBAAsB,CAAC;AAIpG,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAMtD,qBAAa,OAAQ,SAAQ,cAAc;IACzC;;;;OAIG;gBACS,MAAM,CAAC,EAAE,cAAc;IAInC;;;OAGG;IACH,SAAS,CAAC,iBAAiB,IAAI,WAAW;IAM1C,kBAAkB;IAClB,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM;IAOtC,kBAAkB;IAClB,OAAO,IAAI,WAAW;IAQtB,kBAAkB;IAClB,wCAAwC,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW;IAMlE,kBAAkB;IAClB,uCAAuC,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW;CAQlE"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.KeyPair = void 0;
|
|
7
|
+
const sdk_core_1 = require("@bitgo-beta/sdk-core");
|
|
8
|
+
const statics_1 = require("@bitgo-beta/statics");
|
|
9
|
+
const keyring_1 = require("@polkadot/keyring");
|
|
10
|
+
const pair_1 = require("@polkadot/keyring/pair");
|
|
11
|
+
const bs58_1 = __importDefault(require("bs58"));
|
|
12
|
+
const utils_1 = __importDefault(require("./utils"));
|
|
13
|
+
const keyring = new keyring_1.Keyring({ type: statics_1.KeyCurve.Ed25519 });
|
|
14
|
+
class KeyPair extends sdk_core_1.Ed25519KeyPair {
|
|
15
|
+
/**
|
|
16
|
+
* Public constructor. By default, creates a key pair with a random master seed.
|
|
17
|
+
*
|
|
18
|
+
* @param { KeyPairOptions } source Either a master seed, a private key, or a public key
|
|
19
|
+
*/
|
|
20
|
+
constructor(source) {
|
|
21
|
+
super(source);
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Helper function to create the KeyringPair for signing a substrate transaction.
|
|
25
|
+
* @returns {KeyringPair} KeyringPair
|
|
26
|
+
*/
|
|
27
|
+
createKeyringPair() {
|
|
28
|
+
const secretKey = this.keyPair.prv ? new Uint8Array(Buffer.from(this.keyPair.prv, 'hex')) : undefined;
|
|
29
|
+
const publicKey = new Uint8Array(Buffer.from(this.keyPair.pub, 'hex'));
|
|
30
|
+
return (0, pair_1.createPair)({ toSS58: keyring.encodeAddress, type: statics_1.KeyCurve.Ed25519 }, { secretKey, publicKey });
|
|
31
|
+
}
|
|
32
|
+
/** @inheritdoc */
|
|
33
|
+
getAddress(ss58Format) {
|
|
34
|
+
let encodedAddress = this.createKeyringPair().address;
|
|
35
|
+
encodedAddress = keyring.encodeAddress(encodedAddress, ss58Format);
|
|
36
|
+
return encodedAddress;
|
|
37
|
+
}
|
|
38
|
+
/** @inheritdoc */
|
|
39
|
+
getKeys() {
|
|
40
|
+
const result = { pub: this.keyPair.pub };
|
|
41
|
+
if (this.keyPair.prv) {
|
|
42
|
+
result.prv = this.keyPair.prv;
|
|
43
|
+
}
|
|
44
|
+
return result;
|
|
45
|
+
}
|
|
46
|
+
/** @inheritdoc */
|
|
47
|
+
recordKeysFromPrivateKeyInProtocolFormat(prv) {
|
|
48
|
+
const decodedSeed = utils_1.default.decodeSeed(prv);
|
|
49
|
+
const bufferFromSeed = Buffer.from(decodedSeed.seed);
|
|
50
|
+
return utils_1.default.keyPairFromSeed(bufferFromSeed).keyPair;
|
|
51
|
+
}
|
|
52
|
+
/** @inheritdoc */
|
|
53
|
+
recordKeysFromPublicKeyInProtocolFormat(pub) {
|
|
54
|
+
const publicKey = keyring.addFromPair({
|
|
55
|
+
// tss common pub is in base58 format and decodes to length of 32
|
|
56
|
+
publicKey: (0, sdk_core_1.isBase58)(pub, 32) ? new Uint8Array(bs58_1.default.decode(pub)) : new Uint8Array(Buffer.from(pub, 'hex')),
|
|
57
|
+
secretKey: new Uint8Array(),
|
|
58
|
+
}).publicKey;
|
|
59
|
+
return { pub: (0, sdk_core_1.toHex)(publicKey) };
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
exports.KeyPair = KeyPair;
|
|
63
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5UGFpci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIva2V5UGFpci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxtREFBb0c7QUFDcEcsaURBQStDO0FBQy9DLCtDQUE0QztBQUM1QyxpREFBb0Q7QUFFcEQsZ0RBQXdCO0FBQ3hCLG9EQUE0QjtBQUU1QixNQUFNLE9BQU8sR0FBRyxJQUFJLGlCQUFPLENBQUMsRUFBRSxJQUFJLEVBQUUsa0JBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO0FBRXhELE1BQWEsT0FBUSxTQUFRLHlCQUFjO0lBQ3pDOzs7O09BSUc7SUFDSCxZQUFZLE1BQXVCO1FBQ2pDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNoQixDQUFDO0lBRUQ7OztPQUdHO0lBQ08saUJBQWlCO1FBQ3pCLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUN0RyxNQUFNLFNBQVMsR0FBRyxJQUFJLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDdkUsT0FBTyxJQUFBLGlCQUFVLEVBQUMsRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFDLGFBQWEsRUFBRSxJQUFJLEVBQUUsa0JBQVEsQ0FBQyxPQUFPLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO0lBQ3pHLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsVUFBVSxDQUFDLFVBQWtCO1FBQzNCLElBQUksY0FBYyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLE9BQU8sQ0FBQztRQUN0RCxjQUFjLEdBQUcsT0FBTyxDQUFDLGFBQWEsQ0FBQyxjQUFjLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFFbkUsT0FBTyxjQUFjLENBQUM7SUFDeEIsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixPQUFPO1FBQ0wsTUFBTSxNQUFNLEdBQWdCLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDdEQsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ3JCLE1BQU0sQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUM7UUFDaEMsQ0FBQztRQUNELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsd0NBQXdDLENBQUMsR0FBVztRQUNsRCxNQUFNLFdBQVcsR0FBRyxlQUFLLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzFDLE1BQU0sY0FBYyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3JELE9BQU8sZUFBSyxDQUFDLGVBQWUsQ0FBQyxjQUFjLENBQUMsQ0FBQyxPQUFPLENBQUM7SUFDdkQsQ0FBQztJQUVELGtCQUFrQjtJQUNsQix1Q0FBdUMsQ0FBQyxHQUFXO1FBQ2pELE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUM7WUFDcEMsaUVBQWlFO1lBQ2pFLFNBQVMsRUFBRSxJQUFBLG1CQUFRLEVBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLFVBQVUsQ0FBQyxjQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ3pHLFNBQVMsRUFBRSxJQUFJLFVBQVUsRUFBRTtTQUM1QixDQUFDLENBQUMsU0FBUyxDQUFDO1FBQ2IsT0FBTyxFQUFFLEdBQUcsRUFBRSxJQUFBLGdCQUFLLEVBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztJQUNuQyxDQUFDO0NBQ0Y7QUFyREQsMEJBcURDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGVmYXVsdEtleXMsIEVkMjU1MTlLZXlQYWlyLCBpc0Jhc2U1OCwgS2V5UGFpck9wdGlvbnMsIHRvSGV4IH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgS2V5Q3VydmUgfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcbmltcG9ydCB7IEtleXJpbmcgfSBmcm9tICdAcG9sa2Fkb3Qva2V5cmluZyc7XG5pbXBvcnQgeyBjcmVhdGVQYWlyIH0gZnJvbSAnQHBvbGthZG90L2tleXJpbmcvcGFpcic7XG5pbXBvcnQgeyBLZXlyaW5nUGFpciB9IGZyb20gJ0Bwb2xrYWRvdC9rZXlyaW5nL3R5cGVzJztcbmltcG9ydCBiczU4IGZyb20gJ2JzNTgnO1xuaW1wb3J0IHV0aWxzIGZyb20gJy4vdXRpbHMnO1xuXG5jb25zdCBrZXlyaW5nID0gbmV3IEtleXJpbmcoeyB0eXBlOiBLZXlDdXJ2ZS5FZDI1NTE5IH0pO1xuXG5leHBvcnQgY2xhc3MgS2V5UGFpciBleHRlbmRzIEVkMjU1MTlLZXlQYWlyIHtcbiAgLyoqXG4gICAqIFB1YmxpYyBjb25zdHJ1Y3Rvci4gQnkgZGVmYXVsdCwgY3JlYXRlcyBhIGtleSBwYWlyIHdpdGggYSByYW5kb20gbWFzdGVyIHNlZWQuXG4gICAqXG4gICAqIEBwYXJhbSB7IEtleVBhaXJPcHRpb25zIH0gc291cmNlIEVpdGhlciBhIG1hc3RlciBzZWVkLCBhIHByaXZhdGUga2V5LCBvciBhIHB1YmxpYyBrZXlcbiAgICovXG4gIGNvbnN0cnVjdG9yKHNvdXJjZT86IEtleVBhaXJPcHRpb25zKSB7XG4gICAgc3VwZXIoc291cmNlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIZWxwZXIgZnVuY3Rpb24gdG8gY3JlYXRlIHRoZSBLZXlyaW5nUGFpciBmb3Igc2lnbmluZyBhIHN1YnN0cmF0ZSB0cmFuc2FjdGlvbi5cbiAgICogQHJldHVybnMge0tleXJpbmdQYWlyfSBLZXlyaW5nUGFpclxuICAgKi9cbiAgcHJvdGVjdGVkIGNyZWF0ZUtleXJpbmdQYWlyKCk6IEtleXJpbmdQYWlyIHtcbiAgICBjb25zdCBzZWNyZXRLZXkgPSB0aGlzLmtleVBhaXIucHJ2ID8gbmV3IFVpbnQ4QXJyYXkoQnVmZmVyLmZyb20odGhpcy5rZXlQYWlyLnBydiwgJ2hleCcpKSA6IHVuZGVmaW5lZDtcbiAgICBjb25zdCBwdWJsaWNLZXkgPSBuZXcgVWludDhBcnJheShCdWZmZXIuZnJvbSh0aGlzLmtleVBhaXIucHViLCAnaGV4JykpO1xuICAgIHJldHVybiBjcmVhdGVQYWlyKHsgdG9TUzU4OiBrZXlyaW5nLmVuY29kZUFkZHJlc3MsIHR5cGU6IEtleUN1cnZlLkVkMjU1MTkgfSwgeyBzZWNyZXRLZXksIHB1YmxpY0tleSB9KTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBnZXRBZGRyZXNzKHNzNThGb3JtYXQ6IG51bWJlcik6IHN0cmluZyB7XG4gICAgbGV0IGVuY29kZWRBZGRyZXNzID0gdGhpcy5jcmVhdGVLZXlyaW5nUGFpcigpLmFkZHJlc3M7XG4gICAgZW5jb2RlZEFkZHJlc3MgPSBrZXlyaW5nLmVuY29kZUFkZHJlc3MoZW5jb2RlZEFkZHJlc3MsIHNzNThGb3JtYXQpO1xuXG4gICAgcmV0dXJuIGVuY29kZWRBZGRyZXNzO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGdldEtleXMoKTogRGVmYXVsdEtleXMge1xuICAgIGNvbnN0IHJlc3VsdDogRGVmYXVsdEtleXMgPSB7IHB1YjogdGhpcy5rZXlQYWlyLnB1YiB9O1xuICAgIGlmICh0aGlzLmtleVBhaXIucHJ2KSB7XG4gICAgICByZXN1bHQucHJ2ID0gdGhpcy5rZXlQYWlyLnBydjtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICByZWNvcmRLZXlzRnJvbVByaXZhdGVLZXlJblByb3RvY29sRm9ybWF0KHBydjogc3RyaW5nKTogRGVmYXVsdEtleXMge1xuICAgIGNvbnN0IGRlY29kZWRTZWVkID0gdXRpbHMuZGVjb2RlU2VlZChwcnYpO1xuICAgIGNvbnN0IGJ1ZmZlckZyb21TZWVkID0gQnVmZmVyLmZyb20oZGVjb2RlZFNlZWQuc2VlZCk7XG4gICAgcmV0dXJuIHV0aWxzLmtleVBhaXJGcm9tU2VlZChidWZmZXJGcm9tU2VlZCkua2V5UGFpcjtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICByZWNvcmRLZXlzRnJvbVB1YmxpY0tleUluUHJvdG9jb2xGb3JtYXQocHViOiBzdHJpbmcpOiBEZWZhdWx0S2V5cyB7XG4gICAgY29uc3QgcHVibGljS2V5ID0ga2V5cmluZy5hZGRGcm9tUGFpcih7XG4gICAgICAvLyB0c3MgY29tbW9uIHB1YiBpcyBpbiBiYXNlNTggZm9ybWF0IGFuZCBkZWNvZGVzIHRvIGxlbmd0aCBvZiAzMlxuICAgICAgcHVibGljS2V5OiBpc0Jhc2U1OChwdWIsIDMyKSA/IG5ldyBVaW50OEFycmF5KGJzNTguZGVjb2RlKHB1YikpIDogbmV3IFVpbnQ4QXJyYXkoQnVmZmVyLmZyb20ocHViLCAnaGV4JykpLFxuICAgICAgc2VjcmV0S2V5OiBuZXcgVWludDhBcnJheSgpLFxuICAgIH0pLnB1YmxpY0tleTtcbiAgICByZXR1cm4geyBwdWI6IHRvSGV4KHB1YmxpY0tleSkgfTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { BaseAddress, TransactionType } from '@bitgo-beta/sdk-core';
|
|
2
|
+
import { BaseCoin as CoinConfig } from '@bitgo-beta/statics';
|
|
3
|
+
import { DecodedSignedTx, DecodedSigningPayload, UnsignedTransaction } from '@substrate/txwrapper-core';
|
|
4
|
+
import { Transaction } from './transaction';
|
|
5
|
+
import { TransactionBuilder } from './transactionBuilder';
|
|
6
|
+
export declare abstract class NativeTransferBuilder extends TransactionBuilder {
|
|
7
|
+
protected _sweepFreeBalance: boolean;
|
|
8
|
+
protected _keepAddressAlive: boolean;
|
|
9
|
+
protected _amount: string;
|
|
10
|
+
protected _to: string;
|
|
11
|
+
constructor(_coinConfig: Readonly<CoinConfig>);
|
|
12
|
+
/**
|
|
13
|
+
*
|
|
14
|
+
* Dispatch the given call from an account that the sender is authorised for through add_proxy.
|
|
15
|
+
*
|
|
16
|
+
* @returns {UnsignedTransaction} an unsigned Dot transaction
|
|
17
|
+
*
|
|
18
|
+
* @see https://polkadot.js.org/docs/substrate/extrinsics/#proxy
|
|
19
|
+
*/
|
|
20
|
+
protected buildTransaction(): UnsignedTransaction;
|
|
21
|
+
protected get transactionType(): TransactionType;
|
|
22
|
+
/**
|
|
23
|
+
*
|
|
24
|
+
* Set this to be a sweep transaction, using TransferAll with keepAlive set to true by default.
|
|
25
|
+
* If keepAlive is false, the entire address will be swept (including the 1 DOT minimum).
|
|
26
|
+
*
|
|
27
|
+
* @param {boolean} keepAlive - keep the address alive after this sweep
|
|
28
|
+
* @returns {TransferBuilder} This transfer builder.
|
|
29
|
+
*
|
|
30
|
+
* @see https://github.com/paritytech/txwrapper-core/blob/main/docs/modules/txwrapper_substrate_src.methods.balances.md#transferall
|
|
31
|
+
*/
|
|
32
|
+
sweep(keepAlive?: boolean): this;
|
|
33
|
+
/**
|
|
34
|
+
*
|
|
35
|
+
* The amount for transfer transaction.
|
|
36
|
+
*
|
|
37
|
+
* @param {string} amount
|
|
38
|
+
* @returns {TransferBuilder} This transfer builder.
|
|
39
|
+
*
|
|
40
|
+
* @see https://wiki.polkadot.network/docs/build-protocol-info
|
|
41
|
+
*/
|
|
42
|
+
amount(amount: string): this;
|
|
43
|
+
/**
|
|
44
|
+
*
|
|
45
|
+
* The destination address for transfer transaction.
|
|
46
|
+
*
|
|
47
|
+
* @param {string} dest
|
|
48
|
+
* @returns {TransferBuilder} This transfer builder.
|
|
49
|
+
*
|
|
50
|
+
* @see https://wiki.polkadot.network/docs/build-protocol-info
|
|
51
|
+
*/
|
|
52
|
+
to({ address }: BaseAddress): this;
|
|
53
|
+
/** @inheritdoc */
|
|
54
|
+
validateDecodedTransaction(decodedTxn: DecodedSigningPayload | DecodedSignedTx, rawTransaction: string): void;
|
|
55
|
+
/** @inheritdoc */
|
|
56
|
+
protected fromImplementation(rawTransaction: string): Transaction;
|
|
57
|
+
/** @inheritdoc */
|
|
58
|
+
validateTransaction(_: Transaction): void;
|
|
59
|
+
private validateFields;
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=nativeTransferBuilder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nativeTransferBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/nativeTransferBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAA2B,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC7F,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAE7D,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAGxG,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAI1D,8BAAsB,qBAAsB,SAAQ,kBAAkB;IACpE,SAAS,CAAC,iBAAiB,UAAS;IACpC,SAAS,CAAC,iBAAiB,UAAQ;IACnC,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC;gBAEV,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAI7C;;;;;;;OAOG;IACH,SAAS,CAAC,gBAAgB,IAAI,mBAAmB;IA0BjD,SAAS,KAAK,eAAe,IAAI,eAAe,CAE/C;IAED;;;;;;;;;OASG;IACH,KAAK,CAAC,SAAS,CAAC,EAAE,OAAO,GAAG,IAAI;IAQhC;;;;;;;;OAQG;IACH,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAM5B;;;;;;;;OAQG;IACH,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,WAAW,GAAG,IAAI;IAMlC,kBAAkB;IAClB,0BAA0B,CAAC,UAAU,EAAE,qBAAqB,GAAG,eAAe,EAAE,cAAc,EAAE,MAAM,GAAG,IAAI;IAY7G,kBAAkB;IAClB,SAAS,CAAC,kBAAkB,CAAC,cAAc,EAAE,MAAM,GAAG,WAAW;IAuBjE,kBAAkB;IAClB,mBAAmB,CAAC,CAAC,EAAE,WAAW,GAAG,IAAI;IAKzC,OAAO,CAAC,cAAc;CAYvB"}
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.NativeTransferBuilder = void 0;
|
|
7
|
+
const sdk_core_1 = require("@bitgo-beta/sdk-core");
|
|
8
|
+
const txwrapper_polkadot_1 = require("@substrate/txwrapper-polkadot");
|
|
9
|
+
const bignumber_js_1 = __importDefault(require("bignumber.js"));
|
|
10
|
+
const iface_1 = require("./iface");
|
|
11
|
+
const transactionBuilder_1 = require("./transactionBuilder");
|
|
12
|
+
const txnSchema_1 = require("./txnSchema");
|
|
13
|
+
const utils_1 = __importDefault(require("./utils"));
|
|
14
|
+
class NativeTransferBuilder extends transactionBuilder_1.TransactionBuilder {
|
|
15
|
+
constructor(_coinConfig) {
|
|
16
|
+
super(_coinConfig);
|
|
17
|
+
this._sweepFreeBalance = false;
|
|
18
|
+
this._keepAddressAlive = true;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
*
|
|
22
|
+
* Dispatch the given call from an account that the sender is authorised for through add_proxy.
|
|
23
|
+
*
|
|
24
|
+
* @returns {UnsignedTransaction} an unsigned Dot transaction
|
|
25
|
+
*
|
|
26
|
+
* @see https://polkadot.js.org/docs/substrate/extrinsics/#proxy
|
|
27
|
+
*/
|
|
28
|
+
buildTransaction() {
|
|
29
|
+
const baseTxInfo = this.createBaseTxInfo();
|
|
30
|
+
let transferTx;
|
|
31
|
+
if (this._sweepFreeBalance) {
|
|
32
|
+
transferTx = txwrapper_polkadot_1.methods.balances.transferAll({
|
|
33
|
+
dest: { id: this._to },
|
|
34
|
+
keepAlive: this._keepAddressAlive,
|
|
35
|
+
}, baseTxInfo.baseTxInfo, baseTxInfo.options);
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
transferTx = txwrapper_polkadot_1.methods.balances.transferKeepAlive({
|
|
39
|
+
value: this._amount,
|
|
40
|
+
dest: { id: this._to },
|
|
41
|
+
}, baseTxInfo.baseTxInfo, baseTxInfo.options);
|
|
42
|
+
}
|
|
43
|
+
return transferTx;
|
|
44
|
+
}
|
|
45
|
+
get transactionType() {
|
|
46
|
+
return sdk_core_1.TransactionType.Send;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
*
|
|
50
|
+
* Set this to be a sweep transaction, using TransferAll with keepAlive set to true by default.
|
|
51
|
+
* If keepAlive is false, the entire address will be swept (including the 1 DOT minimum).
|
|
52
|
+
*
|
|
53
|
+
* @param {boolean} keepAlive - keep the address alive after this sweep
|
|
54
|
+
* @returns {TransferBuilder} This transfer builder.
|
|
55
|
+
*
|
|
56
|
+
* @see https://github.com/paritytech/txwrapper-core/blob/main/docs/modules/txwrapper_substrate_src.methods.balances.md#transferall
|
|
57
|
+
*/
|
|
58
|
+
sweep(keepAlive) {
|
|
59
|
+
this._sweepFreeBalance = true;
|
|
60
|
+
if (keepAlive !== undefined) {
|
|
61
|
+
this._keepAddressAlive = keepAlive;
|
|
62
|
+
}
|
|
63
|
+
return this;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
*
|
|
67
|
+
* The amount for transfer transaction.
|
|
68
|
+
*
|
|
69
|
+
* @param {string} amount
|
|
70
|
+
* @returns {TransferBuilder} This transfer builder.
|
|
71
|
+
*
|
|
72
|
+
* @see https://wiki.polkadot.network/docs/build-protocol-info
|
|
73
|
+
*/
|
|
74
|
+
amount(amount) {
|
|
75
|
+
this.validateValue(new bignumber_js_1.default(amount));
|
|
76
|
+
this._amount = amount;
|
|
77
|
+
return this;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
*
|
|
81
|
+
* The destination address for transfer transaction.
|
|
82
|
+
*
|
|
83
|
+
* @param {string} dest
|
|
84
|
+
* @returns {TransferBuilder} This transfer builder.
|
|
85
|
+
*
|
|
86
|
+
* @see https://wiki.polkadot.network/docs/build-protocol-info
|
|
87
|
+
*/
|
|
88
|
+
to({ address }) {
|
|
89
|
+
this.validateAddress({ address });
|
|
90
|
+
this._to = address;
|
|
91
|
+
return this;
|
|
92
|
+
}
|
|
93
|
+
/** @inheritdoc */
|
|
94
|
+
validateDecodedTransaction(decodedTxn, rawTransaction) {
|
|
95
|
+
if (decodedTxn.method?.name === iface_1.MethodNames.TransferKeepAlive) {
|
|
96
|
+
const txMethod = decodedTxn.method.args;
|
|
97
|
+
const amount = `${txMethod.value}`;
|
|
98
|
+
const to = txMethod.dest.id;
|
|
99
|
+
const validationResult = txnSchema_1.TransferTransactionSchema.validate({ amount, to });
|
|
100
|
+
if (validationResult.error) {
|
|
101
|
+
throw new sdk_core_1.InvalidTransactionError(`Transfer Transaction validation failed: ${validationResult.error.message}`);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
/** @inheritdoc */
|
|
106
|
+
fromImplementation(rawTransaction) {
|
|
107
|
+
const tx = super.fromImplementation(rawTransaction);
|
|
108
|
+
if (this._method?.name === iface_1.MethodNames.TransferKeepAlive) {
|
|
109
|
+
const txMethod = this._method.args;
|
|
110
|
+
this.amount(txMethod.value);
|
|
111
|
+
this.to({
|
|
112
|
+
address: utils_1.default.decodeSubstrateAddress(txMethod.dest.id, this.getAddressFormat()),
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
else if (this._method?.name === iface_1.MethodNames.TransferAll) {
|
|
116
|
+
this._sweepFreeBalance = true;
|
|
117
|
+
const txMethod = this._method.args;
|
|
118
|
+
this.sweep(txMethod.keepAlive);
|
|
119
|
+
this.to({
|
|
120
|
+
address: utils_1.default.decodeSubstrateAddress(txMethod.dest.id, this.getAddressFormat()),
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
else {
|
|
124
|
+
throw new sdk_core_1.InvalidTransactionError(`Invalid Transaction Type: ${this._method?.name}. Expected a transferKeepAlive or a proxy transferKeepAlive transaction`);
|
|
125
|
+
}
|
|
126
|
+
return tx;
|
|
127
|
+
}
|
|
128
|
+
/** @inheritdoc */
|
|
129
|
+
validateTransaction(_) {
|
|
130
|
+
super.validateTransaction(_);
|
|
131
|
+
this.validateFields(this._to, this._amount);
|
|
132
|
+
}
|
|
133
|
+
validateFields(to, amount) {
|
|
134
|
+
let validationResult;
|
|
135
|
+
if (this._sweepFreeBalance) {
|
|
136
|
+
validationResult = txnSchema_1.TransferAllTransactionSchema.validate({ to });
|
|
137
|
+
}
|
|
138
|
+
else {
|
|
139
|
+
validationResult = txnSchema_1.TransferTransactionSchema.validate({ amount, to });
|
|
140
|
+
}
|
|
141
|
+
if (validationResult.error) {
|
|
142
|
+
throw new sdk_core_1.InvalidTransactionError(`Transaction validation failed: ${validationResult.error.message}`);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
exports.NativeTransferBuilder = NativeTransferBuilder;
|
|
147
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF0aXZlVHJhbnNmZXJCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9uYXRpdmVUcmFuc2ZlckJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsbURBQTZGO0FBRTdGLHNFQUF3RDtBQUV4RCxnRUFBcUM7QUFDckMsbUNBQXFFO0FBRXJFLDZEQUEwRDtBQUMxRCwyQ0FBc0Y7QUFDdEYsb0RBQTRCO0FBRTVCLE1BQXNCLHFCQUFzQixTQUFRLHVDQUFrQjtJQU1wRSxZQUFZLFdBQWlDO1FBQzNDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztRQU5YLHNCQUFpQixHQUFHLEtBQUssQ0FBQztRQUMxQixzQkFBaUIsR0FBRyxJQUFJLENBQUM7SUFNbkMsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDTyxnQkFBZ0I7UUFDeEIsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDM0MsSUFBSSxVQUFVLENBQUM7UUFDZixJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQzNCLFVBQVUsR0FBRyw0QkFBTyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQ3ZDO2dCQUNFLElBQUksRUFBRSxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFO2dCQUN0QixTQUFTLEVBQUUsSUFBSSxDQUFDLGlCQUFpQjthQUNsQyxFQUNELFVBQVUsQ0FBQyxVQUFVLEVBQ3JCLFVBQVUsQ0FBQyxPQUFPLENBQ25CLENBQUM7UUFDSixDQUFDO2FBQU0sQ0FBQztZQUNOLFVBQVUsR0FBRyw0QkFBTyxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FDN0M7Z0JBQ0UsS0FBSyxFQUFFLElBQUksQ0FBQyxPQUFPO2dCQUNuQixJQUFJLEVBQUUsRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRTthQUN2QixFQUNELFVBQVUsQ0FBQyxVQUFVLEVBQ3JCLFVBQVUsQ0FB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QUssQ0FBQyxzQkFBc0IsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQzthQUNqRixDQUFDLENBQUM7UUFDTCxDQUFDO2FBQU0sQ0FBQztZQUNOLE1BQU0sSUFBSSxrQ0FBdUIsQ0FDL0IsNkJBQTZCLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSx5RUFBeUUsQ0FDekgsQ0FBQztRQUNKLENBQUM7UUFDRCxPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsbUJBQW1CLENBQUMsQ0FBYztRQUNoQyxLQUFLLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDN0IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRU8sY0FBYyxDQUFDLEVBQVUsRUFBRSxNQUFjO1FBQy9DLElBQUksZ0JBQWdCLENBQUM7UUFDckIsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUMzQixnQkFBZ0IsR0FBRyx3Q0FBNEIsQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ25FLENBQUM7YUFBTSxDQUFDO1lBQ04sZ0JBQWdCLEdBQUcscUNBQXlCLENBQUMsUUFBUSxDQUFDLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDeEUsQ0FBQztRQUVELElBQUksZ0JBQWdCLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDM0IsTUFBTSxJQUFJLGtDQUF1QixDQUFDLGtDQUFrQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUN4RyxDQUFDO0lBQ0gsQ0FBQztDQUNGO0FBdkpELHNEQXVKQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VBZGRyZXNzLCBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvciwgVHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgQmFzZUNvaW4gYXMgQ29pbkNvbmZpZyB9IGZyb20gJ0BiaXRnby1iZXRhL3N0YXRpY3MnO1xuaW1wb3J0IHsgbWV0aG9kcyB9IGZyb20gJ0BzdWJzdHJhdGUvdHh3cmFwcGVyLXBvbGthZG90JztcbmltcG9ydCB7IERlY29kZWRTaWduZWRUeCwgRGVjb2RlZFNpZ25pbmdQYXlsb2FkLCBVbnNpZ25lZFRyYW5zYWN0aW9uIH0gZnJvbSAnQHN1YnN0cmF0ZS90eHdyYXBwZXItY29yZSc7XG5pbXBvcnQgQmlnTnVtYmVyIGZyb20gJ2JpZ251bWJlci5qcyc7XG5pbXBvcnQgeyBNZXRob2ROYW1lcywgVHJhbnNmZXJBbGxBcmdzLCBUcmFuc2ZlckFyZ3MgfSBmcm9tICcuL2lmYWNlJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uIH0gZnJvbSAnLi90cmFuc2FjdGlvbic7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbkJ1aWxkZXIgfSBmcm9tICcuL3RyYW5zYWN0aW9uQnVpbGRlcic7XG5pbXBvcnQgeyBUcmFuc2ZlckFsbFRyYW5zYWN0aW9uU2NoZW1hLCBUcmFuc2ZlclRyYW5zYWN0aW9uU2NoZW1hIH0gZnJvbSAnLi90eG5TY2hlbWEnO1xuaW1wb3J0IHV0aWxzIGZyb20gJy4vdXRpbHMnO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgTmF0aXZlVHJhbnNmZXJCdWlsZGVyIGV4dGVuZHMgVHJhbnNhY3Rpb25CdWlsZGVyIHtcbiAgcHJvdGVjdGVkIF9zd2VlcEZyZWVCYWxhbmNlID0gZmFsc2U7XG4gIHByb3RlY3RlZCBfa2VlcEFkZHJlc3NBbGl2ZSA9IHRydWU7XG4gIHByb3RlY3RlZCBfYW1vdW50OiBzdHJpbmc7XG4gIHByb3RlY3RlZCBfdG86IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihfY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihfY29pbkNvbmZpZyk7XG4gIH1cblxuICAvKipcbiAgICpcbiAgICogRGlzcGF0Y2ggdGhlIGdpdmVuIGNhbGwgZnJvbSBhbiBhY2NvdW50IHRoYXQgdGhlIHNlbmRlciBpcyBhdXRob3Jpc2VkIGZvciB0aHJvdWdoIGFkZF9wcm94eS5cbiAgICpcbiAgICogQHJldHVybnMge1Vuc2lnbmVkVHJhbnNhY3Rpb259IGFuIHVuc2lnbmVkIERvdCB0cmFuc2FjdGlvblxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vcG9sa2Fkb3QuanMub3JnL2RvY3Mvc3Vic3RyYXRlL2V4dHJpbnNpY3MvI3Byb3h5XG4gICAqL1xuICBwcm90ZWN0ZWQgYnVpbGRUcmFuc2FjdGlvbigpOiBVbnNpZ25lZFRyYW5zYWN0aW9uIHtcbiAgICBjb25zdCBiYXNlVHhJbmZvID0gdGhpcy5jcmVhdGVCYXNlVHhJbmZvKCk7XG4gICAgbGV0IHRyYW5zZmVyVHg7XG4gICAgaWYgKHRoaXMuX3N3ZWVwRnJlZUJhbGFuY2UpIHtcbiAgICAgIHRyYW5zZmVyVHggPSBtZXRob2RzLmJhbGFuY2VzLnRyYW5zZmVyQWxsKFxuICAgICAgICB7XG4gICAgICAgICAgZGVzdDogeyBpZDogdGhpcy5fdG8gfSxcbiAgICAgICAgICBrZWVwQWxpdmU6IHRoaXMuX2tlZXBBZGRyZXNzQWxpdmUsXG4gICAgICAgIH0sXG4gICAgICAgIGJhc2VUeEluZm8uYmFzZVR4SW5mbyxcbiAgICAgICAgYmFzZVR4SW5mby5vcHRpb25zXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0cmFuc2ZlclR4ID0gbWV0aG9kcy5iYWxhbmNlcy50cmFuc2ZlcktlZXBBbGl2ZShcbiAgICAgICAge1xuICAgICAgICAgIHZhbHVlOiB0aGlzLl9hbW91bnQsXG4gICAgICAgICAgZGVzdDogeyBpZDogdGhpcy5fdG8gfSxcbiAgICAgICAgfSxcbiAgICAgICAgYmFzZVR4SW5mby5iYXNlVHhJbmZvLFxuICAgICAgICBiYXNlVHhJbmZvLm9wdGlvbnNcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRyYW5zZmVyVHg7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0IHRyYW5zYWN0aW9uVHlwZSgpOiBUcmFuc2FjdGlvblR5cGUge1xuICAgIHJldHVybiBUcmFuc2FjdGlvblR5cGUuU2VuZDtcbiAgfVxuXG4gIC8qKlxuICAgKlxuICAgKiBTZXQgdGhpcyB0byBiZSBhIHN3ZWVwIHRyYW5zYWN0aW9uLCB1c2luZyBUcmFuc2ZlckFsbCB3aXRoIGtlZXBBbGl2ZSBzZXQgdG8gdHJ1ZSBieSBkZWZhdWx0LlxuICAgKiBJZiBrZWVwQWxpdmUgaXMgZmFsc2UsIHRoZSBlbnRpcmUgYWRkcmVzcyB3aWxsIGJlIHN3ZXB0IChpbmNsdWRpbmcgdGhlIDEgRE9UIG1pbmltdW0pLlxuICAgKlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGtlZXBBbGl2ZSAtIGtlZXAgdGhlIGFkZHJlc3MgYWxpdmUgYWZ0ZXIgdGhpcyBzd2VlcFxuICAgKiBAcmV0dXJucyB7VHJhbnNmZXJCdWlsZGVyfSBUaGlzIHRyYW5zZmVyIGJ1aWxkZXIuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL3Bhcml0eXRlY2gvdHh3cmFwcGVyLWNvcmUvYmxvYi9tYWluL2RvY3MvbW9kdWxlcy90eHdyYXBwZXJfc3Vic3RyYXRlX3NyYy5tZXRob2RzLmJhbGFuY2VzLm1kI3RyYW5zZmVyYWxsXG4gICAqL1xuICBzd2VlcChrZWVwQWxpdmU/OiBib29sZWFuKTogdGhpcyB7XG4gICAgdGhpcy5fc3dlZXBGcmVlQmFsYW5jZSA9IHRydWU7XG4gICAgaWYgKGtlZXBBbGl2ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLl9rZWVwQWRkcmVzc0FsaXZlID0ga2VlcEFsaXZlO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKlxuICAgKiBUaGUgYW1vdW50IGZvciB0cmFuc2ZlciB0cmFuc2FjdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGFtb3VudFxuICAgKiBAcmV0dXJucyB7VHJhbnNmZXJCdWlsZGVyfSBUaGlzIHRyYW5zZmVyIGJ1aWxkZXIuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly93aWtpLnBvbGthZG90Lm5ldHdvcmsvZG9jcy9idWlsZC1wcm90b2NvbC1pbmZvXG4gICAqL1xuICBhbW91bnQoYW1vdW50OiBzdHJpbmcpOiB0aGlzIHtcbiAgICB0aGlzLnZhbGlkYXRlVmFsdWUobmV3IEJpZ051bWJlcihhbW91bnQpKTtcbiAgICB0aGlzLl9hbW91bnQgPSBhbW91bnQ7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICpcbiAgICogVGhlIGRlc3RpbmF0aW9uIGFkZHJlc3MgZm9yIHRyYW5zZmVyIHRyYW5zYWN0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZGVzdFxuICAgKiBAcmV0dXJucyB7VHJhbnNmZXJCdWlsZGVyfSBUaGlzIHRyYW5zZmVyIGJ1aWxkZXIuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly93aWtpLnBvbGthZG90Lm5ldHdvcmsvZG9jcy9idWlsZC1wcm90b2NvbC1pbmZvXG4gICAqL1xuICB0byh7IGFkZHJlc3MgfTogQmFzZUFkZHJlc3MpOiB0aGlzIHtcbiAgICB0aGlzLnZhbGlkYXRlQWRkcmVzcyh7IGFkZHJlc3MgfSk7XG4gICAgdGhpcy5fdG8gPSBhZGRyZXNzO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHZhbGlkYXRlRGVjb2RlZFRyYW5zYWN0aW9uKGRlY29kZWRUeG46IERlY29kZWRTaWduaW5nUGF5bG9hZCB8IERlY29kZWRTaWduZWRUeCwgcmF3VHJhbnNhY3Rpb246IHN0cmluZyk6IHZvaWQge1xuICAgIGlmIChkZWNvZGVkVHhuLm1ldGhvZD8ubmFtZSA9PT0gTWV0aG9kTmFtZXMuVHJhbnNmZXJLZWVwQWxpdmUpIHtcbiAgICAgIGNvbnN0IHR4TWV0aG9kID0gZGVjb2RlZFR4bi5tZXRob2QuYXJncyBhcyB1bmtub3duIGFzIFRyYW5zZmVyQXJncztcbiAgICAgIGNvbnN0IGFtb3VudCA9IGAke3R4TWV0aG9kLnZhbHVlfWA7XG4gICAgICBjb25zdCB0byA9IHR4TWV0aG9kLmRlc3QuaWQ7XG4gICAgICBjb25zdCB2YWxpZGF0aW9uUmVzdWx0ID0gVHJhbnNmZXJUcmFuc2FjdGlvblNjaGVtYS52YWxpZGF0ZSh7IGFtb3VudCwgdG8gfSk7XG4gICAgICBpZiAodmFsaWRhdGlvblJlc3VsdC5lcnJvcikge1xuICAgICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoYFRyYW5zZmVyIFRyYW5zYWN0aW9uIHZhbGlkYXRpb24gZmFpbGVkOiAke3ZhbGlkYXRpb25SZXN1bHQuZXJyb3IubWVzc2FnZX1gKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcHJvdGVjdGVkIGZyb21JbXBsZW1lbnRhdGlvbihyYXdUcmFuc2FjdGlvbjogc3RyaW5nKTogVHJhbnNhY3Rpb24ge1xuICAgIGNvbnN0IHR4ID0gc3VwZXIuZnJvbUltcGxlbWVudGF0aW9uKHJhd1RyYW5zYWN0aW9uKTtcbiAgICBpZiAodGhpcy5fbWV0aG9kPy5uYW1lID09PSBNZXRob2ROYW1lcy5UcmFuc2ZlcktlZXBBbGl2ZSkge1xuICAgICAgY29uc3QgdHhNZXRob2QgPSB0aGlzLl9tZXRob2QuYXJncyBhcyBUcmFuc2ZlckFyZ3M7XG4gICAgICB0aGlzLmFtb3VudCh0eE1ldGhvZC52YWx1ZSk7XG4gICAgICB0aGlzLnRvKHtcbiAgICAgICAgYWRkcmVzczogdXRpbHMuZGVjb2RlU3Vic3RyYXRlQWRkcmVzcyh0eE1ldGhvZC5kZXN0LmlkLCB0aGlzLmdldEFkZHJlc3NGb3JtYXQoKSksXG4gICAgICB9KTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuX21ldGhvZD8ubmFtZSA9PT0gTWV0aG9kTmFtZXMuVHJhbnNmZXJBbGwpIHtcbiAgICAgIHRoaXMuX3N3ZWVwRnJlZUJhbGFuY2UgPSB0cnVlO1xuICAgICAgY29uc3QgdHhNZXRob2QgPSB0aGlzLl9tZXRob2QuYXJncyBhcyBUcmFuc2ZlckFsbEFyZ3M7XG4gICAgICB0aGlzLnN3ZWVwKHR4TWV0aG9kLmtlZXBBbGl2ZSk7XG4gICAgICB0aGlzLnRvKHtcbiAgICAgICAgYWRkcmVzczogdXRpbHMuZGVjb2RlU3Vic3RyYXRlQWRkcmVzcyh0eE1ldGhvZC5kZXN0LmlkLCB0aGlzLmdldEFkZHJlc3NGb3JtYXQoKSksXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKFxuICAgICAgICBgSW52YWxpZCBUcmFuc2FjdGlvbiBUeXBlOiAke3RoaXMuX21ldGhvZD8ubmFtZX0uIEV4cGVjdGVkIGEgdHJhbnNmZXJLZWVwQWxpdmUgb3IgYSBwcm94eSB0cmFuc2ZlcktlZXBBbGl2ZSB0cmFuc2FjdGlvbmBcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiB0eDtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICB2YWxpZGF0ZVRyYW5zYWN0aW9uKF86IFRyYW5zYWN0aW9uKTogdm9pZCB7XG4gICAgc3VwZXIudmFsaWRhdGVUcmFuc2FjdGlvbihfKTtcbiAgICB0aGlzLnZhbGlkYXRlRmllbGRzKHRoaXMuX3RvLCB0aGlzLl9hbW91bnQpO1xuICB9XG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZUZpZWxkcyh0bzogc3RyaW5nLCBhbW91bnQ6IHN0cmluZyk6IHZvaWQge1xuICAgIGxldCB2YWxpZGF0aW9uUmVzdWx0O1xuICAgIGlmICh0aGlzLl9zd2VlcEZyZWVCYWxhbmNlKSB7XG4gICAgICB2YWxpZGF0aW9uUmVzdWx0ID0gVHJhbnNmZXJBbGxUcmFuc2FjdGlvblNjaGVtYS52YWxpZGF0ZSh7IHRvIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YWxpZGF0aW9uUmVzdWx0ID0gVHJhbnNmZXJUcmFuc2FjdGlvblNjaGVtYS52YWxpZGF0ZSh7IGFtb3VudCwgdG8gfSk7XG4gICAgfVxuXG4gICAgaWYgKHZhbGlkYXRpb25SZXN1bHQuZXJyb3IpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcihgVHJhbnNhY3Rpb24gdmFsaWRhdGlvbiBmYWlsZWQ6ICR7dmFsaWRhdGlvblJlc3VsdC5lcnJvci5tZXNzYWdlfWApO1xuICAgIH1cbiAgfVxufVxuIl19
|