@hiero-ledger/sdk 2.80.0 → 2.81.0-beta.1
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/README.md +34 -7
- package/dist/umd.js +2213 -318
- package/dist/umd.js.map +1 -0
- package/dist/umd.min.js +6 -5
- package/dist/umd.min.js.map +1 -0
- package/lib/Executable.cjs +7 -4
- package/lib/Executable.js +1 -1
- package/lib/Executable.js.map +1 -1
- package/lib/PublicKey.cjs +45 -26
- package/lib/PublicKey.d.ts +12 -0
- package/lib/PublicKey.js +1 -1
- package/lib/PublicKey.js.map +1 -1
- package/lib/RequestType.cjs +19 -1
- package/lib/RequestType.d.ts +2 -0
- package/lib/RequestType.js +1 -1
- package/lib/RequestType.js.map +1 -1
- package/lib/Status.cjs +203 -252
- package/lib/Status.d.ts +8 -6
- package/lib/Status.js +1 -1
- package/lib/Status.js.map +1 -1
- package/lib/Transfer.cjs +25 -2
- package/lib/Transfer.d.ts +4 -0
- package/lib/Transfer.js +1 -1
- package/lib/Transfer.js.map +1 -1
- package/lib/account/AccountCreateTransaction.cjs +38 -0
- package/lib/account/AccountCreateTransaction.d.ts +21 -0
- package/lib/account/AccountCreateTransaction.js +1 -1
- package/lib/account/AccountCreateTransaction.js.map +1 -1
- package/lib/account/AccountUpdateTransaction.cjs +74 -1
- package/lib/account/AccountUpdateTransaction.d.ts +43 -0
- package/lib/account/AccountUpdateTransaction.js +1 -1
- package/lib/account/AccountUpdateTransaction.js.map +1 -1
- package/lib/account/TransferTransaction.cjs +57 -9
- package/lib/account/TransferTransaction.d.ts +31 -1
- package/lib/account/TransferTransaction.js +1 -1
- package/lib/account/TransferTransaction.js.map +1 -1
- package/lib/browser.js +1 -1
- package/lib/client/Client.cjs +38 -0
- package/lib/client/Client.d.ts +30 -0
- package/lib/client/Client.js +1 -1
- package/lib/client/Client.js.map +1 -1
- package/lib/client/addressbooks/mainnet.cjs +1 -1
- package/lib/client/addressbooks/mainnet.d.ts +1 -1
- package/lib/client/addressbooks/mainnet.js +1 -1
- package/lib/client/addressbooks/mainnet.js.map +1 -1
- package/lib/client/addressbooks/previewnet.cjs +1 -1
- package/lib/client/addressbooks/previewnet.d.ts +1 -1
- package/lib/client/addressbooks/previewnet.js +1 -1
- package/lib/client/addressbooks/previewnet.js.map +1 -1
- package/lib/client/addressbooks/testnet.cjs +1 -1
- package/lib/client/addressbooks/testnet.d.ts +1 -1
- package/lib/client/addressbooks/testnet.js +1 -1
- package/lib/client/addressbooks/testnet.js.map +1 -1
- package/lib/contract/ContractCreateTransaction.cjs +37 -1
- package/lib/contract/ContractCreateTransaction.d.ts +21 -0
- package/lib/contract/ContractCreateTransaction.js +1 -1
- package/lib/contract/ContractCreateTransaction.js.map +1 -1
- package/lib/contract/ContractUpdateTransaction.cjs +74 -1
- package/lib/contract/ContractUpdateTransaction.d.ts +43 -0
- package/lib/contract/ContractUpdateTransaction.js +1 -1
- package/lib/contract/ContractUpdateTransaction.js.map +1 -1
- package/lib/exports.cjs +103 -0
- package/lib/exports.d.ts +13 -0
- package/lib/exports.js +1 -1
- package/lib/exports.js.map +1 -1
- package/lib/hooks/EvmHook.cjs +84 -0
- package/lib/hooks/EvmHook.d.ts +51 -0
- package/lib/hooks/EvmHook.js +2 -0
- package/lib/hooks/EvmHook.js.map +1 -0
- package/lib/hooks/EvmHookCall.cjs +103 -0
- package/lib/hooks/EvmHookCall.d.ts +69 -0
- package/lib/hooks/EvmHookCall.js +2 -0
- package/lib/hooks/EvmHookCall.js.map +1 -0
- package/lib/hooks/EvmHookMappingEntry.cjs +135 -0
- package/lib/hooks/EvmHookMappingEntry.d.ts +84 -0
- package/lib/hooks/EvmHookMappingEntry.js +2 -0
- package/lib/hooks/EvmHookMappingEntry.js.map +1 -0
- package/lib/hooks/EvmHookStorageUpdate.cjs +238 -0
- package/lib/hooks/EvmHookStorageUpdate.d.ts +144 -0
- package/lib/hooks/EvmHookStorageUpdate.js +2 -0
- package/lib/hooks/EvmHookStorageUpdate.js.map +1 -0
- package/lib/hooks/FungibleHookCall.cjs +67 -0
- package/lib/hooks/FungibleHookCall.d.ts +50 -0
- package/lib/hooks/FungibleHookCall.js +2 -0
- package/lib/hooks/FungibleHookCall.js.map +1 -0
- package/lib/hooks/FungibleHookType.cjs +11 -0
- package/lib/hooks/FungibleHookType.d.ts +5 -0
- package/lib/hooks/FungibleHookType.js +2 -0
- package/lib/hooks/FungibleHookType.js.map +1 -0
- package/lib/hooks/HookCall.cjs +99 -0
- package/lib/hooks/HookCall.d.ts +64 -0
- package/lib/hooks/HookCall.js +2 -0
- package/lib/hooks/HookCall.js.map +1 -0
- package/lib/hooks/HookCreationDetails.cjs +149 -0
- package/lib/hooks/HookCreationDetails.d.ts +91 -0
- package/lib/hooks/HookCreationDetails.js +2 -0
- package/lib/hooks/HookCreationDetails.js.map +1 -0
- package/lib/hooks/HookEntityId.cjs +67 -0
- package/lib/hooks/HookEntityId.d.ts +41 -0
- package/lib/hooks/HookEntityId.js +2 -0
- package/lib/hooks/HookEntityId.js.map +1 -0
- package/lib/hooks/HookExtensionPoint.cjs +31 -0
- package/lib/hooks/HookExtensionPoint.d.ts +16 -0
- package/lib/hooks/HookExtensionPoint.js +2 -0
- package/lib/hooks/HookExtensionPoint.js.map +1 -0
- package/lib/hooks/HookId.cjs +101 -0
- package/lib/hooks/HookId.d.ts +63 -0
- package/lib/hooks/HookId.js +2 -0
- package/lib/hooks/HookId.js.map +1 -0
- package/lib/hooks/HookStoreTransaction.cjs +157 -0
- package/lib/hooks/HookStoreTransaction.d.ts +77 -0
- package/lib/hooks/HookStoreTransaction.js +2 -0
- package/lib/hooks/HookStoreTransaction.js.map +1 -0
- package/lib/hooks/NftHookCall.cjs +67 -0
- package/lib/hooks/NftHookCall.d.ts +50 -0
- package/lib/hooks/NftHookCall.js +2 -0
- package/lib/hooks/NftHookCall.js.map +1 -0
- package/lib/hooks/NftHookType.cjs +13 -0
- package/lib/hooks/NftHookType.d.ts +7 -0
- package/lib/hooks/NftHookType.js +2 -0
- package/lib/hooks/NftHookType.js.map +1 -0
- package/lib/index.js +1 -1
- package/lib/native.js +1 -1
- package/lib/token/AbstractTokenTransferTransaction.cjs +17 -5
- package/lib/token/AbstractTokenTransferTransaction.d.ts +13 -2
- package/lib/token/AbstractTokenTransferTransaction.js +1 -1
- package/lib/token/AbstractTokenTransferTransaction.js.map +1 -1
- package/lib/token/TokenAirdropTransaction.cjs +1 -1
- package/lib/token/TokenAirdropTransaction.js +1 -1
- package/lib/token/TokenAirdropTransaction.js.map +1 -1
- package/lib/token/TokenNftTransfer.cjs +51 -2
- package/lib/token/TokenNftTransfer.d.ts +7 -0
- package/lib/token/TokenNftTransfer.js +1 -1
- package/lib/token/TokenNftTransfer.js.map +1 -1
- package/lib/token/TokenTransfer.cjs +26 -2
- package/lib/token/TokenTransfer.d.ts +4 -0
- package/lib/token/TokenTransfer.js +1 -1
- package/lib/token/TokenTransfer.js.map +1 -1
- package/lib/transaction/Transaction.cjs +2 -1
- package/lib/transaction/Transaction.js +1 -1
- package/lib/transaction/Transaction.js.map +1 -1
- package/lib/transaction/TransactionResponse.cjs +82 -9
- package/lib/transaction/TransactionResponse.d.ts +33 -2
- package/lib/transaction/TransactionResponse.js +1 -1
- package/lib/transaction/TransactionResponse.js.map +1 -1
- package/lib/version.js +1 -1
- package/package.json +15 -13
- package/src/Executable.js +10 -7
- package/src/PublicKey.js +53 -36
- package/src/RequestType.js +18 -0
- package/src/Status.js +201 -252
- package/src/Transfer.js +33 -1
- package/src/account/AccountCreateTransaction.js +39 -0
- package/src/account/AccountUpdateTransaction.js +78 -0
- package/src/account/TransferTransaction.js +84 -8
- package/src/client/Client.js +38 -0
- package/src/client/addressbooks/mainnet.js +1 -1
- package/src/client/addressbooks/previewnet.js +1 -1
- package/src/client/addressbooks/testnet.js +1 -1
- package/src/contract/ContractCreateTransaction.js +37 -0
- package/src/contract/ContractUpdateTransaction.js +80 -0
- package/src/exports.js +17 -0
- package/src/hooks/EvmHook.js +83 -0
- package/src/hooks/EvmHookCall.js +100 -0
- package/src/hooks/EvmHookMappingEntry.js +140 -0
- package/src/hooks/EvmHookStorageUpdate.js +257 -0
- package/src/hooks/FungibleHookCall.js +65 -0
- package/src/hooks/FungibleHookType.js +6 -0
- package/src/hooks/HookCall.js +97 -0
- package/src/hooks/HookCreationDetails.js +155 -0
- package/src/hooks/HookEntityId.js +67 -0
- package/src/hooks/HookExtensionPoint.js +25 -0
- package/src/hooks/HookId.js +102 -0
- package/src/hooks/HookStoreTransaction.js +185 -0
- package/src/hooks/NftHookCall.js +64 -0
- package/src/hooks/NftHookType.js +8 -0
- package/src/token/AbstractTokenTransferTransaction.js +16 -1
- package/src/token/TokenAirdropTransaction.js +1 -0
- package/src/token/TokenNftTransfer.js +68 -1
- package/src/token/TokenTransfer.js +34 -1
- package/src/transaction/Transaction.js +3 -0
- package/src/transaction/TransactionResponse.js +98 -13
package/src/Transfer.js
CHANGED
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
import AccountId from "./account/AccountId.js";
|
|
4
4
|
import Hbar from "./Hbar.js";
|
|
5
|
+
import FungibleHookCall from "./hooks/FungibleHookCall.js";
|
|
6
|
+
import FungibleHookType from "./hooks/FungibleHookType.js";
|
|
5
7
|
|
|
6
8
|
/**
|
|
7
9
|
* @typedef {object} TransferJSON
|
|
@@ -31,6 +33,7 @@ export default class Transfer {
|
|
|
31
33
|
* @param {AccountId | string} props.accountId
|
|
32
34
|
* @param {number | string | Long | BigNumber | Hbar} props.amount
|
|
33
35
|
* @param {boolean} props.isApproved
|
|
36
|
+
* @param {FungibleHookCall} [props.hookCall]
|
|
34
37
|
*/
|
|
35
38
|
constructor(props) {
|
|
36
39
|
/**
|
|
@@ -52,6 +55,7 @@ export default class Transfer {
|
|
|
52
55
|
: new Hbar(props.amount);
|
|
53
56
|
|
|
54
57
|
this.isApproved = props.isApproved;
|
|
58
|
+
this.hookCall = props.hookCall;
|
|
55
59
|
}
|
|
56
60
|
|
|
57
61
|
/**
|
|
@@ -63,6 +67,19 @@ export default class Transfer {
|
|
|
63
67
|
const transfers = [];
|
|
64
68
|
|
|
65
69
|
for (const transfer of accountAmounts) {
|
|
70
|
+
let hookCall = undefined;
|
|
71
|
+
if (transfer.preTxAllowanceHook != null) {
|
|
72
|
+
hookCall = FungibleHookCall._fromProtobufWithType(
|
|
73
|
+
transfer.preTxAllowanceHook,
|
|
74
|
+
FungibleHookType.PRE_TX_ALLOWANCE_HOOK,
|
|
75
|
+
);
|
|
76
|
+
} else if (transfer.prePostTxAllowanceHook != null) {
|
|
77
|
+
hookCall = FungibleHookCall._fromProtobufWithType(
|
|
78
|
+
transfer.prePostTxAllowanceHook,
|
|
79
|
+
FungibleHookType.PRE_POST_TX_ALLOWANCE_HOOK,
|
|
80
|
+
);
|
|
81
|
+
}
|
|
82
|
+
|
|
66
83
|
transfers.push(
|
|
67
84
|
new Transfer({
|
|
68
85
|
accountId: AccountId._fromProtobuf(
|
|
@@ -74,6 +91,7 @@ export default class Transfer {
|
|
|
74
91
|
transfer.amount != null ? transfer.amount : 0,
|
|
75
92
|
),
|
|
76
93
|
isApproved: /** @type {boolean} */ (transfer.isApproval),
|
|
94
|
+
hookCall,
|
|
77
95
|
}),
|
|
78
96
|
);
|
|
79
97
|
}
|
|
@@ -86,11 +104,25 @@ export default class Transfer {
|
|
|
86
104
|
* @returns {HieroProto.proto.IAccountAmount}
|
|
87
105
|
*/
|
|
88
106
|
_toProtobuf() {
|
|
89
|
-
|
|
107
|
+
/** @type {HieroProto.proto.IAccountAmount} */
|
|
108
|
+
const result = {
|
|
90
109
|
accountID: this.accountId._toProtobuf(),
|
|
91
110
|
amount: this.amount.toTinybars(),
|
|
92
111
|
isApproval: this.isApproved,
|
|
93
112
|
};
|
|
113
|
+
|
|
114
|
+
if (this.hookCall != null) {
|
|
115
|
+
switch (this.hookCall.type) {
|
|
116
|
+
case FungibleHookType.PRE_TX_ALLOWANCE_HOOK:
|
|
117
|
+
result.preTxAllowanceHook = this.hookCall._toProtobuf();
|
|
118
|
+
break;
|
|
119
|
+
case FungibleHookType.PRE_POST_TX_ALLOWANCE_HOOK:
|
|
120
|
+
result.prePostTxAllowanceHook = this.hookCall._toProtobuf();
|
|
121
|
+
break;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
return result;
|
|
94
126
|
}
|
|
95
127
|
|
|
96
128
|
/**
|
|
@@ -39,6 +39,7 @@ export default class AccountCreateTransaction extends Transaction {
|
|
|
39
39
|
* @param {Long | number} [props.stakedNodeId]
|
|
40
40
|
* @param {boolean} [props.declineStakingReward]
|
|
41
41
|
* @param {EvmAddress} [props.alias]
|
|
42
|
+
* @param {import("../hooks/HookCreationDetails.js").default[]} [props.hooks]
|
|
42
43
|
*/
|
|
43
44
|
constructor(props = {}) {
|
|
44
45
|
super();
|
|
@@ -121,6 +122,18 @@ export default class AccountCreateTransaction extends Transaction {
|
|
|
121
122
|
*/
|
|
122
123
|
this._alias = null;
|
|
123
124
|
|
|
125
|
+
/**
|
|
126
|
+
* @private
|
|
127
|
+
* @type {import("../hooks/HookCreationDetails.js").default[]}
|
|
128
|
+
*/
|
|
129
|
+
this._hooks = [];
|
|
130
|
+
|
|
131
|
+
if (props.hooks != null) {
|
|
132
|
+
props.hooks.forEach((hook) => {
|
|
133
|
+
this.addHook(hook);
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
|
|
124
137
|
if (props.key != null) {
|
|
125
138
|
this.setKeyWithoutAlias(props.key);
|
|
126
139
|
}
|
|
@@ -652,10 +665,36 @@ export default class AccountCreateTransaction extends Transaction {
|
|
|
652
665
|
: null,
|
|
653
666
|
stakedNodeId: this.stakedNodeId,
|
|
654
667
|
declineReward: this.declineStakingRewards,
|
|
668
|
+
hookCreationDetails: this._hooks.map((hook) => hook._toProtobuf()),
|
|
655
669
|
alias,
|
|
656
670
|
};
|
|
657
671
|
}
|
|
658
672
|
|
|
673
|
+
/**
|
|
674
|
+
* @param {import("../hooks/HookCreationDetails.js").default} hook
|
|
675
|
+
* @returns {this}
|
|
676
|
+
*/
|
|
677
|
+
addHook(hook) {
|
|
678
|
+
this._hooks.push(hook);
|
|
679
|
+
return this;
|
|
680
|
+
}
|
|
681
|
+
|
|
682
|
+
/**
|
|
683
|
+
* @param {import("../hooks/HookCreationDetails.js").default[]} hooks
|
|
684
|
+
* @returns {this}
|
|
685
|
+
*/
|
|
686
|
+
setHooks(hooks) {
|
|
687
|
+
this._hooks = hooks;
|
|
688
|
+
return this;
|
|
689
|
+
}
|
|
690
|
+
|
|
691
|
+
/**
|
|
692
|
+
* @returns {import("../hooks/HookCreationDetails.js").default[]}
|
|
693
|
+
*/
|
|
694
|
+
get hooks() {
|
|
695
|
+
return this._hooks;
|
|
696
|
+
}
|
|
697
|
+
|
|
659
698
|
/**
|
|
660
699
|
* @returns {string}
|
|
661
700
|
*/
|
|
@@ -44,6 +44,8 @@ export default class AccountUpdateTransaction extends Transaction {
|
|
|
44
44
|
* @param {AccountId | string} [props.stakedAccountId]
|
|
45
45
|
* @param {Long | number} [props.stakedNodeId]
|
|
46
46
|
* @param {?boolean} [props.declineStakingReward]
|
|
47
|
+
* @param {import("../hooks/HookCreationDetails.js").default[]} [props.hooksToBeCreated]
|
|
48
|
+
* @param {Long[]} [props.hooksToBeDeleted]
|
|
47
49
|
*/
|
|
48
50
|
constructor(props = {}) {
|
|
49
51
|
super();
|
|
@@ -120,6 +122,18 @@ export default class AccountUpdateTransaction extends Transaction {
|
|
|
120
122
|
*/
|
|
121
123
|
this._declineStakingReward = null;
|
|
122
124
|
|
|
125
|
+
/**
|
|
126
|
+
* @private
|
|
127
|
+
* @type {import("../hooks/HookCreationDetails.js").default[]}
|
|
128
|
+
*/
|
|
129
|
+
this._hooksToBeCreated = [];
|
|
130
|
+
|
|
131
|
+
/**
|
|
132
|
+
* @private
|
|
133
|
+
* @type {Long[]}
|
|
134
|
+
*/
|
|
135
|
+
this._hooksToBeDeleted = [];
|
|
136
|
+
|
|
123
137
|
if (props.accountId != null) {
|
|
124
138
|
this.setAccountId(props.accountId);
|
|
125
139
|
}
|
|
@@ -166,6 +180,14 @@ export default class AccountUpdateTransaction extends Transaction {
|
|
|
166
180
|
if (props.declineStakingReward != null) {
|
|
167
181
|
this.setDeclineStakingReward(props.declineStakingReward);
|
|
168
182
|
}
|
|
183
|
+
|
|
184
|
+
if (props.hooksToBeCreated != null) {
|
|
185
|
+
this.setHooksToCreate(props.hooksToBeCreated);
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
if (props.hooksToBeDeleted != null) {
|
|
189
|
+
this.setHooksToDelete(props.hooksToBeDeleted);
|
|
190
|
+
}
|
|
169
191
|
}
|
|
170
192
|
|
|
171
193
|
/**
|
|
@@ -533,6 +555,57 @@ export default class AccountUpdateTransaction extends Transaction {
|
|
|
533
555
|
return this;
|
|
534
556
|
}
|
|
535
557
|
|
|
558
|
+
/**
|
|
559
|
+
* @param {import("../hooks/HookCreationDetails.js").default} hook
|
|
560
|
+
* @returns {this}
|
|
561
|
+
*/
|
|
562
|
+
addHookToCreate(hook) {
|
|
563
|
+
this._hooksToBeCreated.push(hook);
|
|
564
|
+
return this;
|
|
565
|
+
}
|
|
566
|
+
|
|
567
|
+
/**
|
|
568
|
+
* @param {import("../hooks/HookCreationDetails.js").default[]} hooks
|
|
569
|
+
* @returns {this}
|
|
570
|
+
*/
|
|
571
|
+
setHooksToCreate(hooks) {
|
|
572
|
+
this._hooksToBeCreated = hooks;
|
|
573
|
+
return this;
|
|
574
|
+
}
|
|
575
|
+
|
|
576
|
+
/**
|
|
577
|
+
* @returns {import("../hooks/HookCreationDetails.js").default[]}
|
|
578
|
+
*/
|
|
579
|
+
get hooksToCreate() {
|
|
580
|
+
return this._hooksToBeCreated;
|
|
581
|
+
}
|
|
582
|
+
|
|
583
|
+
/**
|
|
584
|
+
*
|
|
585
|
+
* @param {Long} hook
|
|
586
|
+
* @returns {this}
|
|
587
|
+
*/
|
|
588
|
+
addHookToDelete(hook) {
|
|
589
|
+
this._hooksToBeDeleted.push(hook);
|
|
590
|
+
return this;
|
|
591
|
+
}
|
|
592
|
+
|
|
593
|
+
/**
|
|
594
|
+
* @param {Long[]} hookIds
|
|
595
|
+
* @returns {this}
|
|
596
|
+
*/
|
|
597
|
+
setHooksToDelete(hookIds) {
|
|
598
|
+
this._hooksToBeDeleted = hookIds;
|
|
599
|
+
return this;
|
|
600
|
+
}
|
|
601
|
+
|
|
602
|
+
/**
|
|
603
|
+
* @returns {Long[]}
|
|
604
|
+
*/
|
|
605
|
+
get hooksToDelete() {
|
|
606
|
+
return this._hooksToBeDeleted;
|
|
607
|
+
}
|
|
608
|
+
|
|
536
609
|
/**
|
|
537
610
|
* @param {Client} client
|
|
538
611
|
*/
|
|
@@ -613,6 +686,11 @@ export default class AccountUpdateTransaction extends Transaction {
|
|
|
613
686
|
this.declineStakingRewards != null
|
|
614
687
|
? { value: this.declineStakingRewards }
|
|
615
688
|
: null,
|
|
689
|
+
|
|
690
|
+
hookIdsToDelete: this._hooksToBeDeleted,
|
|
691
|
+
hookCreationDetails: this._hooksToBeCreated.map((hook) =>
|
|
692
|
+
hook._toProtobuf(),
|
|
693
|
+
),
|
|
616
694
|
};
|
|
617
695
|
}
|
|
618
696
|
|
|
@@ -12,6 +12,8 @@ import HbarTransferMap from "./HbarTransferMap.js";
|
|
|
12
12
|
import TokenNftTransfer from "../token/TokenNftTransfer.js";
|
|
13
13
|
import NftId from "../token/NftId.js";
|
|
14
14
|
import AbstractTokenTransferTransaction from "../token/AbstractTokenTransferTransaction.js";
|
|
15
|
+
import FungibleHookCall from "../hooks/FungibleHookCall.js";
|
|
16
|
+
import NftHookCall from "../hooks/NftHookCall.js";
|
|
15
17
|
|
|
16
18
|
/**
|
|
17
19
|
* @typedef {import("../long.js").LongObject} LongObject
|
|
@@ -169,9 +171,10 @@ export default class TransferTransaction extends AbstractTokenTransferTransactio
|
|
|
169
171
|
* @param {AccountId | string} accountId
|
|
170
172
|
* @param {number | string | Long | LongObject | BigNumber | Hbar} amount
|
|
171
173
|
* @param {boolean} isApproved
|
|
174
|
+
* @param {FungibleHookCall} [hookCall]
|
|
172
175
|
* @returns {TransferTransaction}
|
|
173
176
|
*/
|
|
174
|
-
_addHbarTransfer(accountId, amount, isApproved) {
|
|
177
|
+
_addHbarTransfer(accountId, amount, isApproved, hookCall) {
|
|
175
178
|
this._requireNotFrozen();
|
|
176
179
|
|
|
177
180
|
const account =
|
|
@@ -194,6 +197,7 @@ export default class TransferTransaction extends AbstractTokenTransferTransactio
|
|
|
194
197
|
accountId: account,
|
|
195
198
|
amount: hbars,
|
|
196
199
|
isApproved,
|
|
200
|
+
hookCall,
|
|
197
201
|
}),
|
|
198
202
|
);
|
|
199
203
|
|
|
@@ -310,6 +314,82 @@ export default class TransferTransaction extends AbstractTokenTransferTransactio
|
|
|
310
314
|
return this;
|
|
311
315
|
}
|
|
312
316
|
|
|
317
|
+
/**
|
|
318
|
+
*
|
|
319
|
+
* @param {AccountId} accountId
|
|
320
|
+
* @param {Long} amount
|
|
321
|
+
* @param {FungibleHookCall} hook
|
|
322
|
+
* @returns {TransferTransaction}
|
|
323
|
+
*/
|
|
324
|
+
addHbarTransferWithHook(accountId, amount, hook) {
|
|
325
|
+
const isApproved = false; // this is not approved transfer, adding comment for clarity
|
|
326
|
+
return this._addHbarTransfer(
|
|
327
|
+
accountId,
|
|
328
|
+
amount,
|
|
329
|
+
isApproved,
|
|
330
|
+
new FungibleHookCall({
|
|
331
|
+
hookId: hook.hookId,
|
|
332
|
+
evmHookCall: hook.evmHookCall,
|
|
333
|
+
type: hook.type,
|
|
334
|
+
}),
|
|
335
|
+
);
|
|
336
|
+
}
|
|
337
|
+
|
|
338
|
+
/**
|
|
339
|
+
*
|
|
340
|
+
* @param {NftId} nftId
|
|
341
|
+
* @param {AccountId} sender
|
|
342
|
+
* @param {AccountId} receiver
|
|
343
|
+
* @param {NftHookCall} senderHookCall
|
|
344
|
+
* @param {NftHookCall} receiverHookCall
|
|
345
|
+
* @returns {TransferTransaction}
|
|
346
|
+
*/
|
|
347
|
+
addNftTransferWithHook(
|
|
348
|
+
nftId,
|
|
349
|
+
sender,
|
|
350
|
+
receiver,
|
|
351
|
+
senderHookCall,
|
|
352
|
+
receiverHookCall,
|
|
353
|
+
) {
|
|
354
|
+
return this._addNftTransfer(
|
|
355
|
+
false,
|
|
356
|
+
nftId,
|
|
357
|
+
sender,
|
|
358
|
+
receiver,
|
|
359
|
+
undefined, // receiver
|
|
360
|
+
senderHookCall,
|
|
361
|
+
receiverHookCall,
|
|
362
|
+
);
|
|
363
|
+
}
|
|
364
|
+
|
|
365
|
+
/**
|
|
366
|
+
*
|
|
367
|
+
* @param {TokenId} tokenId
|
|
368
|
+
* @param {AccountId} accountId
|
|
369
|
+
* @param {Long} amount
|
|
370
|
+
* @param {FungibleHookCall} hook
|
|
371
|
+
* @returns {TransferTransaction}
|
|
372
|
+
*/
|
|
373
|
+
addTokenTransferWithHook(tokenId, accountId, amount, hook) {
|
|
374
|
+
const fungibleHook = new FungibleHookCall({
|
|
375
|
+
hookId: hook.hookId != null ? hook.hookId : undefined,
|
|
376
|
+
evmHookCall:
|
|
377
|
+
hook.evmHookCall != null ? hook.evmHookCall : undefined,
|
|
378
|
+
type: hook.type,
|
|
379
|
+
});
|
|
380
|
+
|
|
381
|
+
const isApproved = false; // this is not approved transfer, adding comment for clarity
|
|
382
|
+
const expectedDecimals = null; // we don't expect decimals here, adding comment for clarity
|
|
383
|
+
|
|
384
|
+
return this._addTokenTransfer(
|
|
385
|
+
tokenId,
|
|
386
|
+
accountId,
|
|
387
|
+
amount,
|
|
388
|
+
isApproved,
|
|
389
|
+
expectedDecimals,
|
|
390
|
+
fungibleHook,
|
|
391
|
+
);
|
|
392
|
+
}
|
|
313
393
|
/**
|
|
314
394
|
* @override
|
|
315
395
|
* @internal
|
|
@@ -342,13 +422,9 @@ export default class TransferTransaction extends AbstractTokenTransferTransactio
|
|
|
342
422
|
|
|
343
423
|
return {
|
|
344
424
|
transfers: {
|
|
345
|
-
accountAmounts: this._hbarTransfers.map((transfer) =>
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
amount: transfer.amount.toTinybars(),
|
|
349
|
-
isApproval: transfer.isApproved,
|
|
350
|
-
};
|
|
351
|
-
}),
|
|
425
|
+
accountAmounts: this._hbarTransfers.map((transfer) =>
|
|
426
|
+
transfer._toProtobuf(),
|
|
427
|
+
),
|
|
352
428
|
},
|
|
353
429
|
tokenTransfers,
|
|
354
430
|
};
|
package/src/client/Client.js
CHANGED
|
@@ -132,6 +132,18 @@ export default class Client {
|
|
|
132
132
|
/** @private */
|
|
133
133
|
this._defaultRegenerateTransactionId = true;
|
|
134
134
|
|
|
135
|
+
/**
|
|
136
|
+
* When enabled, allows receipt queries to fail over to other nodes
|
|
137
|
+
* if the submitting node is unresponsive. Default is false to preserve
|
|
138
|
+
* existing semantics where receipt queries are pinned to the submitting node.
|
|
139
|
+
*
|
|
140
|
+
* Tradeoff: Improved availability vs the rare case where only the submitting
|
|
141
|
+
* node may have final failure information.
|
|
142
|
+
*
|
|
143
|
+
* @private
|
|
144
|
+
*/
|
|
145
|
+
this._allowReceiptNodeFailover = false;
|
|
146
|
+
|
|
135
147
|
/** @private */
|
|
136
148
|
this._requestTimeout = DEFAULT_REQUEST_TIMEOUT;
|
|
137
149
|
|
|
@@ -480,6 +492,32 @@ export default class Client {
|
|
|
480
492
|
return this;
|
|
481
493
|
}
|
|
482
494
|
|
|
495
|
+
/**
|
|
496
|
+
* @returns {boolean}
|
|
497
|
+
*/
|
|
498
|
+
get allowReceiptNodeFailover() {
|
|
499
|
+
return this._allowReceiptNodeFailover;
|
|
500
|
+
}
|
|
501
|
+
|
|
502
|
+
/**
|
|
503
|
+
* Enable or disable receipt query failover to other nodes when the submitting node
|
|
504
|
+
* is unresponsive. When enabled, receipt queries will start with the submitting node
|
|
505
|
+
* but can fail over to other nodes in the network if needed.
|
|
506
|
+
*
|
|
507
|
+
* Default is `false` to preserve existing behavior where receipt queries are pinned
|
|
508
|
+
* to the submitting node only.
|
|
509
|
+
*
|
|
510
|
+
* **Tradeoff**: Enabling this improves availability for high-throughput/relay use cases,
|
|
511
|
+
* but in rare cases only the submitting node may have the final failure information.
|
|
512
|
+
*
|
|
513
|
+
* @param {boolean} allowReceiptNodeFailover
|
|
514
|
+
* @returns {this}
|
|
515
|
+
*/
|
|
516
|
+
setAllowReceiptNodeFailover(allowReceiptNodeFailover) {
|
|
517
|
+
this._allowReceiptNodeFailover = allowReceiptNodeFailover;
|
|
518
|
+
return this;
|
|
519
|
+
}
|
|
520
|
+
|
|
483
521
|
/**
|
|
484
522
|
* @returns {Hbar}
|
|
485
523
|
*/
|