@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
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
|
|
3
|
+
import HookCall from "./HookCall.js";
|
|
4
|
+
import EvmHookCall from "./EvmHookCall.js";
|
|
5
|
+
import FungibleHookType from "./FungibleHookType.js";
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* @namespace proto
|
|
9
|
+
* @typedef {import("@hiero-ledger/proto").proto.IHookCall} HieroProto.proto.IHookCall
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* @typedef {typeof FungibleHookType[keyof typeof FungibleHookType]} FungibleHookTypeValue
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* A typed hook call for fungible (HBAR and FT) transfers.
|
|
18
|
+
*/
|
|
19
|
+
class FungibleHookCall extends HookCall {
|
|
20
|
+
/**
|
|
21
|
+
* @param {object} props
|
|
22
|
+
* @param {Long} [props.hookId]
|
|
23
|
+
* @param {import("../hooks/EvmHookCall.js").default} [props.evmHookCall]
|
|
24
|
+
* @param {FungibleHookTypeValue} props.type - One of FungibleHookType.PRE_TX_ALLOWANCE_HOOK or FungibleHookType.PRE_POST_TX_ALLOWANCE_HOOK
|
|
25
|
+
*/
|
|
26
|
+
constructor(props) {
|
|
27
|
+
super(props);
|
|
28
|
+
|
|
29
|
+
if (props.type == null) {
|
|
30
|
+
throw new Error("type cannot be null");
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* The type of fungible hook
|
|
35
|
+
* @private
|
|
36
|
+
* @type {FungibleHookTypeValue}
|
|
37
|
+
*/
|
|
38
|
+
this._type = props.type;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* @returns {FungibleHookTypeValue}
|
|
43
|
+
*/
|
|
44
|
+
get type() {
|
|
45
|
+
return this._type;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* @internal
|
|
50
|
+
* @param {HieroProto.proto.IHookCall} hookCall
|
|
51
|
+
* @param {FungibleHookTypeValue} type
|
|
52
|
+
* @returns {FungibleHookCall}
|
|
53
|
+
*/
|
|
54
|
+
static _fromProtobufWithType(hookCall, type) {
|
|
55
|
+
return new FungibleHookCall({
|
|
56
|
+
hookId: hookCall.hookId != null ? hookCall.hookId : undefined,
|
|
57
|
+
evmHookCall: hookCall.evmHookCall
|
|
58
|
+
? EvmHookCall._fromProtobuf(hookCall.evmHookCall)
|
|
59
|
+
: undefined,
|
|
60
|
+
type,
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
export default FungibleHookCall;
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @namespace proto
|
|
3
|
+
* @typedef {import("@hiero-ledger/proto").proto.IHookCall} HieroProto.proto.IHookCall
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import EvmHookCall from "../hooks/EvmHookCall.js";
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
*
|
|
10
|
+
* Specifies a call to a hook from within a transaction.
|
|
11
|
+
* <p>
|
|
12
|
+
* Often the hook's entity is implied by the nature of the call site. For example, when using an account allowance hook
|
|
13
|
+
* inside a crypto transfer, the hook's entity is necessarily the account whose authorization is required.
|
|
14
|
+
* <p>
|
|
15
|
+
* For future extension points where the hook owner is not forced by the context, we include the option to fully
|
|
16
|
+
* specify the hook id for the call.
|
|
17
|
+
*/
|
|
18
|
+
class HookCall {
|
|
19
|
+
/**
|
|
20
|
+
*
|
|
21
|
+
* @param {object} props
|
|
22
|
+
* @param {Long} [props.hookId]
|
|
23
|
+
* @param {import("../hooks/EvmHookCall.js").default} [props.evmHookCall]
|
|
24
|
+
*/
|
|
25
|
+
constructor(props = {}) {
|
|
26
|
+
if (props.hookId !== undefined) {
|
|
27
|
+
this.setHookId(props.hookId);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
if (props.evmHookCall !== undefined) {
|
|
31
|
+
this.setCall(props.evmHookCall);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
*
|
|
37
|
+
* @param {Long} hookId
|
|
38
|
+
* @returns {this}
|
|
39
|
+
*/
|
|
40
|
+
setHookId(hookId) {
|
|
41
|
+
this._hookId = hookId;
|
|
42
|
+
return this;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
*
|
|
47
|
+
* @param {import("../hooks/EvmHookCall.js").default} evmHookCall
|
|
48
|
+
* @returns {this}
|
|
49
|
+
*/
|
|
50
|
+
setCall(evmHookCall) {
|
|
51
|
+
this._evmHookCall = evmHookCall;
|
|
52
|
+
return this;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
*
|
|
57
|
+
* @returns {Long | undefined}
|
|
58
|
+
*/
|
|
59
|
+
get hookId() {
|
|
60
|
+
return this._hookId;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
*
|
|
65
|
+
* @returns {import("../hooks/EvmHookCall.js").default | undefined}
|
|
66
|
+
*/
|
|
67
|
+
get evmHookCall() {
|
|
68
|
+
return this._evmHookCall;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* @internal
|
|
73
|
+
* @param {HieroProto.proto.IHookCall} hookCall
|
|
74
|
+
* @returns {HookCall}
|
|
75
|
+
*/
|
|
76
|
+
static _fromProtobuf(hookCall) {
|
|
77
|
+
return new HookCall({
|
|
78
|
+
hookId: hookCall.hookId ?? undefined,
|
|
79
|
+
evmHookCall: hookCall.evmHookCall
|
|
80
|
+
? EvmHookCall._fromProtobuf(hookCall.evmHookCall)
|
|
81
|
+
: undefined,
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
*
|
|
87
|
+
* @returns {import("@hiero-ledger/proto").proto.HookCall}}
|
|
88
|
+
*/
|
|
89
|
+
_toProtobuf() {
|
|
90
|
+
return {
|
|
91
|
+
hookId: this._hookId,
|
|
92
|
+
evmHookCall: this._evmHookCall?._toProtobuf(),
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
export default HookCall;
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
import Long from "long";
|
|
2
|
+
import HookExtensionPoint from "./HookExtensionPoint.js";
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* The details of a hook's creation.
|
|
6
|
+
*/
|
|
7
|
+
class HookCreationDetails {
|
|
8
|
+
/**
|
|
9
|
+
*
|
|
10
|
+
* @param {object} props
|
|
11
|
+
* @param {HookExtensionPoint} [props.extensionPoint]
|
|
12
|
+
* @param {Long | number} [props.hookId]
|
|
13
|
+
* @param {import("./EvmHook.js").default} [props.evmHook]
|
|
14
|
+
* @param {import("../Key.js").default} [props.adminKey]
|
|
15
|
+
*/
|
|
16
|
+
constructor(props = {}) {
|
|
17
|
+
/**
|
|
18
|
+
* @private
|
|
19
|
+
* @type {HookExtensionPoint | null}
|
|
20
|
+
*/
|
|
21
|
+
this._extensionPoint = null;
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* @private
|
|
25
|
+
* @type {Long | null}
|
|
26
|
+
*/
|
|
27
|
+
this._hookId = null;
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* @private
|
|
31
|
+
* @type {import("./EvmHook.js").default | null}
|
|
32
|
+
*/
|
|
33
|
+
this._evmHook = null;
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* @private
|
|
37
|
+
* @type {import("../Key.js").default | null}
|
|
38
|
+
*/
|
|
39
|
+
this._adminKey = null;
|
|
40
|
+
|
|
41
|
+
if (props.extensionPoint != null) {
|
|
42
|
+
this.setExtensionPoint(props.extensionPoint);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
if (props.hookId != null) {
|
|
46
|
+
this.setHookId(props.hookId);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
if (props.evmHook != null) {
|
|
50
|
+
this.setEvmHook(props.evmHook);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
if (props.adminKey != null) {
|
|
54
|
+
this.setAdminKey(props.adminKey);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
*
|
|
60
|
+
* @param {HookExtensionPoint} extensionPoint
|
|
61
|
+
* @returns {this}
|
|
62
|
+
*/
|
|
63
|
+
setExtensionPoint(extensionPoint) {
|
|
64
|
+
this._extensionPoint = extensionPoint;
|
|
65
|
+
return this;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
*
|
|
70
|
+
* @param {Long | number} hookId
|
|
71
|
+
* @returns {this}
|
|
72
|
+
*/
|
|
73
|
+
setHookId(hookId) {
|
|
74
|
+
this._hookId =
|
|
75
|
+
hookId instanceof Long ? hookId : Long.fromNumber(hookId);
|
|
76
|
+
return this;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
*
|
|
81
|
+
* @param {import("./EvmHook.js").default} evmHook
|
|
82
|
+
* @returns {this}
|
|
83
|
+
*/
|
|
84
|
+
setEvmHook(evmHook) {
|
|
85
|
+
this._evmHook = evmHook;
|
|
86
|
+
return this;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
*
|
|
91
|
+
* @param {import("../Key.js").default} adminKey
|
|
92
|
+
* @returns {this}
|
|
93
|
+
*/
|
|
94
|
+
setAdminKey(adminKey) {
|
|
95
|
+
this._adminKey = adminKey;
|
|
96
|
+
return this;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
*
|
|
101
|
+
* @returns {HookExtensionPoint | null}
|
|
102
|
+
*/
|
|
103
|
+
get extensionPoint() {
|
|
104
|
+
return this._extensionPoint;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
/**
|
|
108
|
+
*
|
|
109
|
+
* @returns {Long | null}
|
|
110
|
+
*/
|
|
111
|
+
get hookId() {
|
|
112
|
+
return this._hookId;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
/**
|
|
116
|
+
*
|
|
117
|
+
* @returns {import("./EvmHook.js").default | null}
|
|
118
|
+
*/
|
|
119
|
+
get evmHook() {
|
|
120
|
+
return this._evmHook;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
/**
|
|
124
|
+
*
|
|
125
|
+
* @returns {import("../Key.js").default | null}
|
|
126
|
+
*/
|
|
127
|
+
get adminKey() {
|
|
128
|
+
return this._adminKey;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
/**
|
|
132
|
+
*
|
|
133
|
+
* @returns {import("@hiero-ledger/proto").com.hedera.hapi.node.hooks.IHookCreationDetails}
|
|
134
|
+
*/
|
|
135
|
+
_toProtobuf() {
|
|
136
|
+
if (this._extensionPoint == null) {
|
|
137
|
+
throw new Error(
|
|
138
|
+
"extensionPoint is required for HookCreationDetails",
|
|
139
|
+
);
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
return {
|
|
143
|
+
extensionPoint:
|
|
144
|
+
/** @type {import("@hiero-ledger/proto").com.hedera.hapi.node.hooks.HookExtensionPoint} */ (
|
|
145
|
+
this._extensionPoint
|
|
146
|
+
),
|
|
147
|
+
hookId: this._hookId,
|
|
148
|
+
evmHook: this._evmHook != null ? this._evmHook._toProtobuf() : null,
|
|
149
|
+
adminKey:
|
|
150
|
+
this._adminKey != null ? this._adminKey._toProtobufKey() : null,
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
export default HookCreationDetails;
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import AccountId from "../account/AccountId.js";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* The id of an entity using a hook.
|
|
5
|
+
*/
|
|
6
|
+
class HookEntityId {
|
|
7
|
+
/**
|
|
8
|
+
*
|
|
9
|
+
* @param {object} props
|
|
10
|
+
* @param {AccountId} [props.accountId]
|
|
11
|
+
*/
|
|
12
|
+
constructor(props = {}) {
|
|
13
|
+
/**
|
|
14
|
+
* @private
|
|
15
|
+
* @type {?AccountId}
|
|
16
|
+
*/
|
|
17
|
+
this._accountId = null;
|
|
18
|
+
|
|
19
|
+
if (props.accountId != null) {
|
|
20
|
+
this.setAccountId(props.accountId);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* @param {AccountId} accountId
|
|
26
|
+
* @returns {this}
|
|
27
|
+
*/
|
|
28
|
+
setAccountId(accountId) {
|
|
29
|
+
this._accountId = accountId;
|
|
30
|
+
return this;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
*
|
|
35
|
+
* @returns {AccountId | null}
|
|
36
|
+
*/
|
|
37
|
+
get accountId() {
|
|
38
|
+
return this._accountId;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
*
|
|
43
|
+
* @returns {import("@hiero-ledger/proto").proto.IHookEntityId}
|
|
44
|
+
*/
|
|
45
|
+
_toProtobuf() {
|
|
46
|
+
return {
|
|
47
|
+
accountId:
|
|
48
|
+
this._accountId != null ? this._accountId._toProtobuf() : null,
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
*
|
|
54
|
+
* @param {import("@hiero-ledger/proto").proto.IHookEntityId} hookEntityId
|
|
55
|
+
* @returns {HookEntityId}
|
|
56
|
+
*/
|
|
57
|
+
static _fromProtobuf(hookEntityId) {
|
|
58
|
+
return new HookEntityId({
|
|
59
|
+
accountId:
|
|
60
|
+
hookEntityId.accountId != null
|
|
61
|
+
? AccountId._fromProtobuf(hookEntityId.accountId)
|
|
62
|
+
: undefined,
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
export default HookEntityId;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @namespace proto
|
|
3
|
+
* @typedef {import("@hiero-ledger/proto").com.hedera.hapi.node.hooks.HookExtensionPoint} HieroHookExtensionPoint
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* The Hiero extension points that accept a hook.
|
|
8
|
+
*/
|
|
9
|
+
export class HookExtensionPoint {
|
|
10
|
+
/**
|
|
11
|
+
* @hideconstructor
|
|
12
|
+
* @internal
|
|
13
|
+
*/
|
|
14
|
+
constructor() {}
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Used to customize an account's allowances during a CryptoTransfer transaction.
|
|
18
|
+
* @returns {HookExtensionPoint}
|
|
19
|
+
*/
|
|
20
|
+
static get ACCOUNT_ALLOWANCE_HOOK() {
|
|
21
|
+
return 0;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export default HookExtensionPoint;
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import HookEntityId from "./HookEntityId.js";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Once a hook is created, its full id.
|
|
5
|
+
* <p>
|
|
6
|
+
* A composite of its creating entity's id and an arbitrary 64-bit hook id
|
|
7
|
+
* (which need not be sequential).
|
|
8
|
+
*/
|
|
9
|
+
class HookId {
|
|
10
|
+
/**
|
|
11
|
+
*
|
|
12
|
+
* @param {object} props
|
|
13
|
+
* @param {HookEntityId} [props.entityId]
|
|
14
|
+
* @param {Long} [props.hookId]
|
|
15
|
+
*/
|
|
16
|
+
constructor(props = {}) {
|
|
17
|
+
/**
|
|
18
|
+
* @private
|
|
19
|
+
* @type {?HookEntityId}
|
|
20
|
+
*/
|
|
21
|
+
this._entityId = null;
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* @private
|
|
25
|
+
* @type {?Long}
|
|
26
|
+
*/
|
|
27
|
+
this._hookId = null;
|
|
28
|
+
|
|
29
|
+
if (props.entityId != null) {
|
|
30
|
+
this.setEntityId(props.entityId);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
if (props.hookId != null) {
|
|
34
|
+
this.setHookId(props.hookId);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
*
|
|
40
|
+
* @param {HookEntityId} entityId
|
|
41
|
+
* @returns {this}
|
|
42
|
+
*/
|
|
43
|
+
setEntityId(entityId) {
|
|
44
|
+
this._entityId = entityId;
|
|
45
|
+
return this;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
*
|
|
50
|
+
* @param {Long} hookId
|
|
51
|
+
* @returns {this}
|
|
52
|
+
*/
|
|
53
|
+
setHookId(hookId) {
|
|
54
|
+
this._hookId = hookId;
|
|
55
|
+
return this;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
*
|
|
60
|
+
* @returns {HookEntityId | null}
|
|
61
|
+
*/
|
|
62
|
+
get entityId() {
|
|
63
|
+
return this._entityId;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
*
|
|
68
|
+
* @returns {Long | null}
|
|
69
|
+
*/
|
|
70
|
+
get hookId() {
|
|
71
|
+
return this._hookId;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
*
|
|
76
|
+
* @param {import("@hiero-ledger/proto").proto.IHookId} hookId
|
|
77
|
+
* @returns {HookId}
|
|
78
|
+
*/
|
|
79
|
+
static _fromProtobuf(hookId) {
|
|
80
|
+
return new HookId({
|
|
81
|
+
entityId:
|
|
82
|
+
hookId.entityId != null
|
|
83
|
+
? HookEntityId._fromProtobuf(hookId.entityId)
|
|
84
|
+
: undefined,
|
|
85
|
+
hookId: hookId.hookId != null ? hookId.hookId : undefined,
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
*
|
|
91
|
+
* @returns {import("@hiero-ledger/proto").proto.IHookId}
|
|
92
|
+
*/
|
|
93
|
+
_toProtobuf() {
|
|
94
|
+
return {
|
|
95
|
+
entityId:
|
|
96
|
+
this._entityId != null ? this._entityId._toProtobuf() : null,
|
|
97
|
+
hookId: this._hookId,
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
export default HookId;
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
import HookId from "../hooks/HookId.js";
|
|
2
|
+
import { EvmHookStorageUpdate } from "../hooks/EvmHookStorageUpdate.js";
|
|
3
|
+
import Transaction, {
|
|
4
|
+
TRANSACTION_REGISTRY,
|
|
5
|
+
} from "../transaction/Transaction.js";
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* @typedef {import("../channel/Channel.js").default} Channel
|
|
9
|
+
* @typedef {import("../client/Client.js").default<*, *>} Client
|
|
10
|
+
* @typedef {import("../Timestamp.js").default} Timestamp
|
|
11
|
+
* @typedef {import("../transaction/TransactionId.js").default} TransactionId
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
class HookStoreTransaction extends Transaction {
|
|
15
|
+
/**
|
|
16
|
+
*
|
|
17
|
+
* @param {object} props
|
|
18
|
+
* @param {import("../hooks/HookId.js").default} [props.hookId]
|
|
19
|
+
* @param {import("../hooks/EvmHookStorageUpdate.js").EvmHookStorageUpdate[]} [props.storageUpdates]
|
|
20
|
+
*/
|
|
21
|
+
constructor(props = {}) {
|
|
22
|
+
super();
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* @private
|
|
26
|
+
* @type {HookId | null}
|
|
27
|
+
*/
|
|
28
|
+
this._hookId = null;
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* @private
|
|
32
|
+
* @type {EvmHookStorageUpdate[]}
|
|
33
|
+
*/
|
|
34
|
+
this._storageUpdates = [];
|
|
35
|
+
|
|
36
|
+
if (props.hookId != null) {
|
|
37
|
+
this.setHookId(props.hookId);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
if (props.storageUpdates != null) {
|
|
41
|
+
this.setStorageUpdates(props.storageUpdates);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* @returns {HookId | null}
|
|
47
|
+
*/
|
|
48
|
+
get hookId() {
|
|
49
|
+
return this._hookId;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
*
|
|
54
|
+
* @param {HookId} hookId
|
|
55
|
+
* @returns {this}
|
|
56
|
+
*/
|
|
57
|
+
setHookId(hookId) {
|
|
58
|
+
this._requireNotFrozen();
|
|
59
|
+
this._hookId = hookId;
|
|
60
|
+
return this;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* @returns {EvmHookStorageUpdate[] | []}
|
|
65
|
+
*/
|
|
66
|
+
get storageUpdates() {
|
|
67
|
+
return this._storageUpdates;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
*
|
|
72
|
+
* @param {EvmHookStorageUpdate[]} storageUpdates
|
|
73
|
+
* @returns {this}
|
|
74
|
+
*/
|
|
75
|
+
setStorageUpdates(storageUpdates) {
|
|
76
|
+
this._requireNotFrozen();
|
|
77
|
+
this._storageUpdates = storageUpdates;
|
|
78
|
+
return this;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* @param {EvmHookStorageUpdate} storageUpdate
|
|
83
|
+
* @returns {this}
|
|
84
|
+
*/
|
|
85
|
+
addStorageUpdate(storageUpdate) {
|
|
86
|
+
this._requireNotFrozen();
|
|
87
|
+
this._storageUpdates.push(storageUpdate);
|
|
88
|
+
return this;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* @override
|
|
93
|
+
* @protected
|
|
94
|
+
* @returns {import("@hiero-ledger/proto").com.hedera.hapi.node.hooks.IHookStoreTransactionBody} HieroProto.proto.IHookStoreTransactionBody
|
|
95
|
+
*/
|
|
96
|
+
_makeTransactionData() {
|
|
97
|
+
return {
|
|
98
|
+
hookId: this.hookId?._toProtobuf(),
|
|
99
|
+
storageUpdates: this.storageUpdates?.map((update) =>
|
|
100
|
+
update._toProtobuf(),
|
|
101
|
+
),
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
/**
|
|
106
|
+
* @override
|
|
107
|
+
* @internal
|
|
108
|
+
* @param {Channel} channel
|
|
109
|
+
* @param {import("@hiero-ledger/proto").proto.ITransaction} request
|
|
110
|
+
* @returns {Promise<import("@hiero-ledger/proto").proto.ITransactionResponse>}
|
|
111
|
+
*/
|
|
112
|
+
_execute(channel, request) {
|
|
113
|
+
return channel.smartContract.hookStore(request);
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
/**
|
|
117
|
+
* @override
|
|
118
|
+
* @protected
|
|
119
|
+
* @returns {NonNullable<import("@hiero-ledger/proto").proto.TransactionBody["data"]>}
|
|
120
|
+
*/
|
|
121
|
+
_getTransactionDataCase() {
|
|
122
|
+
return "hookStore";
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
/**
|
|
126
|
+
* @returns {string}
|
|
127
|
+
*/
|
|
128
|
+
_getLogId() {
|
|
129
|
+
const timestamp = /** @type {import("../Timestamp.js").default} */ (
|
|
130
|
+
this._transactionIds.current.validStart
|
|
131
|
+
);
|
|
132
|
+
return `HookStoreTransaction:${timestamp.toString()}`;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
/**
|
|
136
|
+
* @internal
|
|
137
|
+
* @param {import("@hiero-ledger/proto").proto.ITransaction[]} transactions
|
|
138
|
+
* @param {import("@hiero-ledger/proto").proto.ISignedTransaction[]} signedTransactions
|
|
139
|
+
* @param {TransactionId[]} transactionIds
|
|
140
|
+
* @param {import("../account/AccountId.js").default[]} nodeIds
|
|
141
|
+
* @param {import("@hiero-ledger/proto").proto.ITransactionBody[]} bodies
|
|
142
|
+
* @returns {HookStoreTransaction}
|
|
143
|
+
*/
|
|
144
|
+
static _fromProtobuf(
|
|
145
|
+
transactions,
|
|
146
|
+
signedTransactions,
|
|
147
|
+
transactionIds,
|
|
148
|
+
nodeIds,
|
|
149
|
+
bodies,
|
|
150
|
+
) {
|
|
151
|
+
const body = bodies[0];
|
|
152
|
+
const create =
|
|
153
|
+
/** @type {import("@hiero-ledger/proto").com.hedera.hapi.node.hooks.IHookStoreTransactionBody} */ (
|
|
154
|
+
body.hookStore
|
|
155
|
+
);
|
|
156
|
+
|
|
157
|
+
return Transaction._fromProtobufTransactions(
|
|
158
|
+
new HookStoreTransaction({
|
|
159
|
+
hookId:
|
|
160
|
+
create.hookId != null
|
|
161
|
+
? HookId._fromProtobuf(create.hookId)
|
|
162
|
+
: undefined,
|
|
163
|
+
storageUpdates:
|
|
164
|
+
create.storageUpdates != null
|
|
165
|
+
? create.storageUpdates.map((update) =>
|
|
166
|
+
EvmHookStorageUpdate._fromProtobuf(update),
|
|
167
|
+
)
|
|
168
|
+
: undefined,
|
|
169
|
+
}),
|
|
170
|
+
transactions,
|
|
171
|
+
signedTransactions,
|
|
172
|
+
transactionIds,
|
|
173
|
+
nodeIds,
|
|
174
|
+
bodies,
|
|
175
|
+
);
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
TRANSACTION_REGISTRY.set(
|
|
180
|
+
"hookStore",
|
|
181
|
+
// eslint-disable-next-line @typescript-eslint/unbound-method
|
|
182
|
+
HookStoreTransaction._fromProtobuf,
|
|
183
|
+
);
|
|
184
|
+
|
|
185
|
+
export default HookStoreTransaction;
|