@folks-finance/xchain-sdk 0.0.25 → 0.0.27

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.
@@ -1,9 +1,11 @@
1
1
  import type { EvmAddress } from "../../../../common/types/address.js";
2
+ import type { FolksChainId } from "../../../../common/types/chain.js";
2
3
  import type { MessageId } from "../../../../common/types/gmp.js";
3
4
  import type { AdapterType } from "../../../../common/types/message.js";
4
5
  import type { MessageReceived } from "../../common/types/gmp.js";
5
6
  import type { PrepareRetryMessageCall, PrepareReverseMessageCall } from "../../common/types/module.js";
6
7
  import type { HubChain } from "../types/chain.js";
8
+ import type { HubTokenData } from "../types/token.js";
7
9
  import type { Client, EstimateGasParameters, Hex, WalletClient } from "viem";
8
10
  export declare const prepare: {
9
11
  retryMessage(provider: Client, sender: EvmAddress, adapterId: AdapterType, messageId: MessageId, message: MessageReceived, extraArgs: Hex, value: bigint, hubChain: HubChain, transactionOptions?: EstimateGasParameters): Promise<PrepareRetryMessageCall>;
@@ -13,3 +15,4 @@ export declare const write: {
13
15
  retryMessage(provider: Client, signer: WalletClient, adapterId: AdapterType, messageId: MessageId, prepareCall: PrepareRetryMessageCall): Promise<`0x${string}`>;
14
16
  reverseMessage(provider: Client, signer: WalletClient, adapterId: AdapterType, messageId: MessageId, prepareCall: PrepareReverseMessageCall): Promise<`0x${string}`>;
15
17
  };
18
+ export declare function getSendMessageFee(provider: Client, toFolksChainId: FolksChainId, adapterId: AdapterType, gasLimit: bigint, hubChain: HubChain, hubTokenData: HubTokenData): Promise<bigint>;
@@ -1,5 +1,9 @@
1
+ import { FINALITY } from "../../../../common/constants/message.js";
2
+ import { getRandomGenericAddress } from "../../../../common/utils/address.js";
3
+ import { getRandomBytes } from "../../../../common/utils/bytes.js";
1
4
  import { GAS_LIMIT_ESTIMATE_INCREASE } from "../../common/constants/contract.js";
2
5
  import { getEvmSignerAccount } from "../../common/utils/chain.js";
6
+ import { buildMessageParams, buildSendTokenExtraArgsWhenRemoving } from "../../common/utils/message.js";
3
7
  import { getBridgeRouterHubContract } from "../utils/contract.js";
4
8
  export const prepare = {
5
9
  async retryMessage(provider, sender, adapterId, messageId, message, extraArgs, value, hubChain, transactionOptions = {
@@ -45,7 +49,7 @@ export const write = {
45
49
  account: getEvmSignerAccount(signer),
46
50
  chain: signer.chain,
47
51
  gas: gasLimit,
48
- msgValue,
52
+ value: msgValue,
49
53
  });
50
54
  },
51
55
  async reverseMessage(provider, signer, adapterId, messageId, prepareCall) {
@@ -55,8 +59,29 @@ export const write = {
55
59
  account: getEvmSignerAccount(signer),
56
60
  chain: signer.chain,
57
61
  gas: gasLimit,
58
- msgValue,
62
+ value: msgValue,
59
63
  });
60
64
  },
61
65
  };
66
+ export async function getSendMessageFee(provider, toFolksChainId, adapterId, gasLimit, hubChain, hubTokenData) {
67
+ const hubBridgeRouter = getBridgeRouterHubContract(provider, hubChain.bridgeRouterAddress);
68
+ // construct return message
69
+ const message = {
70
+ params: buildMessageParams({
71
+ adapters: {
72
+ adapterId,
73
+ returnAdapterId: 0,
74
+ },
75
+ gasLimit,
76
+ }),
77
+ sender: hubChain.hubAddress,
78
+ destinationChainId: toFolksChainId,
79
+ handler: getRandomGenericAddress(),
80
+ payload: getRandomBytes(256),
81
+ finalityLevel: FINALITY.FINALISED,
82
+ extraArgs: buildSendTokenExtraArgsWhenRemoving(getRandomGenericAddress(), hubTokenData.token, 1n),
83
+ };
84
+ // get return adapter fee
85
+ return await hubBridgeRouter.read.getSendFee([message]);
86
+ }
62
87
  //# sourceMappingURL=folks-hub-gmp.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"folks-hub-gmp.js","sourceRoot":"","sources":["../../../../../src/chains/evm/hub/modules/folks-hub-gmp.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"folks-hub-gmp.js","sourceRoot":"","sources":["../../../../../src/chains/evm/hub/modules/folks-hub-gmp.ts"],"names":[],"mappings":"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"}
@@ -2,8 +2,10 @@ import type { EvmAddress, GenericAddress } from "../../../../common/types/addres
2
2
  import type { FolksChainId, SpokeChain } from "../../../../common/types/chain.js";
3
3
  import type { MessageId } from "../../../../common/types/gmp.js";
4
4
  import type { AdapterType } from "../../../../common/types/message.js";
5
+ import type { SpokeTokenData } from "../../../../common/types/token.js";
5
6
  import type { MessageReceived } from "../../common/types/gmp.js";
6
7
  import type { PrepareResendWormholeMessageCall, PrepareRetryMessageCall, PrepareReverseMessageCall } from "../../common/types/module.js";
8
+ import type { HubChain } from "../../hub/types/chain.js";
7
9
  import type { Client, EstimateGasParameters, Hex, WalletClient } from "viem";
8
10
  export declare const prepare: {
9
11
  retryMessage(provider: Client, sender: EvmAddress, adapterId: AdapterType, messageId: MessageId, message: MessageReceived, extraArgs: Hex, value: bigint, spokeChain: SpokeChain, transactionOptions?: EstimateGasParameters): Promise<PrepareRetryMessageCall>;
@@ -15,3 +17,4 @@ export declare const write: {
15
17
  reverseMessage(provider: Client, signer: WalletClient, adapterId: AdapterType, messageId: MessageId, prepareCall: PrepareReverseMessageCall): Promise<`0x${string}`>;
16
18
  resendMessage(provider: Client, signer: WalletClient, prepareCall: PrepareResendWormholeMessageCall): Promise<`0x${string}`>;
17
19
  };
20
+ export declare function getSendMessageFee(provider: Client, adapterId: AdapterType, receiverValue: bigint, gasLimit: bigint, hubChain: HubChain, spokeChain: SpokeChain, spokeTokenData?: SpokeTokenData): Promise<bigint>;
@@ -1,9 +1,12 @@
1
+ import { FINALITY } from "../../../../common/constants/message.js";
1
2
  import { ChainType } from "../../../../common/types/chain.js";
2
- import { convertFromGenericAddress, convertToGenericAddress } from "../../../../common/utils/address.js";
3
+ import { convertFromGenericAddress, convertToGenericAddress, getRandomGenericAddress, } from "../../../../common/utils/address.js";
4
+ import { getRandomBytes } from "../../../../common/utils/bytes.js";
3
5
  import { getWormholeData } from "../../../../common/utils/gmp.js";
4
6
  import { GAS_LIMIT_ESTIMATE_INCREASE } from "../../common/constants/contract.js";
5
7
  import { getEvmSignerAccount } from "../../common/utils/chain.js";
6
8
  import { getWormholeRelayerContract } from "../../common/utils/contract.js";
9
+ import { buildMessageParams, buildSendTokenExtraArgsWhenAdding } from "../../common/utils/message.js";
7
10
  import { getBridgeRouterSpokeContract } from "../utils/contract.js";
8
11
  export const prepare = {
9
12
  async retryMessage(provider, sender, adapterId, messageId, message, extraArgs, value, spokeChain, transactionOptions = {
@@ -111,4 +114,28 @@ export const write = {
111
114
  });
112
115
  },
113
116
  };
117
+ export async function getSendMessageFee(provider, adapterId, receiverValue, gasLimit, hubChain, spokeChain, spokeTokenData) {
118
+ const bridgeRouter = getBridgeRouterSpokeContract(provider, spokeChain.bridgeRouterAddress);
119
+ // construct return message
120
+ const message = {
121
+ params: buildMessageParams({
122
+ adapters: {
123
+ adapterId,
124
+ returnAdapterId: 0,
125
+ },
126
+ gasLimit,
127
+ receiverValue,
128
+ }),
129
+ sender: spokeChain.spokeCommonAddress,
130
+ destinationChainId: hubChain.folksChainId,
131
+ handler: getRandomGenericAddress(),
132
+ payload: getRandomBytes(256),
133
+ finalityLevel: FINALITY.FINALISED,
134
+ extraArgs: spokeTokenData
135
+ ? buildSendTokenExtraArgsWhenAdding(getRandomGenericAddress(), spokeTokenData.token, 1n)
136
+ : "0x",
137
+ };
138
+ // get return adapter fee
139
+ return await bridgeRouter.read.getSendFee([message]);
140
+ }
114
141
  //# sourceMappingURL=folks-evm-gmp.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"folks-evm-gmp.js","sourceRoot":"","sources":["../../../../../src/chains/evm/spoke/modules/folks-evm-gmp.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"folks-evm-gmp.js","sourceRoot":"","sources":["../../../../../src/chains/evm/spoke/modules/folks-evm-gmp.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,8 @@ export declare function doesAdapterSupportDataMessage(folksChainId: FolksChainId
5
5
  export declare function assertAdapterSupportsDataMessage(folksChainId: FolksChainId, adapterId: AdapterType): void;
6
6
  export declare function doesAdapterSupportTokenMessage(folksChainId: FolksChainId, adapterId: AdapterType): boolean;
7
7
  export declare function assertAdapterSupportsTokenMessage(folksChainId: FolksChainId, adapterId: AdapterType): void;
8
+ export declare function doesAdapterSupportReceiverValue(folksChainId: FolksChainId, adapterId: AdapterType): boolean;
9
+ export declare function assertAdapterSupportsReceiverValue(folksChainId: FolksChainId, adapterId: AdapterType): void;
8
10
  export declare function getSupportedMessageAdapters(params: MessageAdapterParams): {
9
11
  adapterIds: readonly [AdapterType.WORMHOLE_CCTP, AdapterType.CCIP_TOKEN] | readonly [AdapterType.WORMHOLE_DATA, AdapterType.CCIP_DATA] | readonly [AdapterType.HUB];
10
12
  returnAdapterIds: readonly [AdapterType.WORMHOLE_CCTP, AdapterType.CCIP_TOKEN] | readonly [AdapterType.WORMHOLE_DATA, AdapterType.CCIP_DATA] | readonly [AdapterType.HUB];
@@ -23,6 +23,15 @@ export function assertAdapterSupportsTokenMessage(folksChainId, adapterId) {
23
23
  if (!doesAdapterSupportTokenMessage(folksChainId, adapterId))
24
24
  throw Error(`Adapter ${adapterId} does not support token message for folksChainId: ${folksChainId}`);
25
25
  }
26
+ export function doesAdapterSupportReceiverValue(folksChainId, adapterId) {
27
+ const isHub = isHubChain(folksChainId, FolksCore.getSelectedNetwork());
28
+ return ((isHub && adapterId === AdapterType.HUB) ||
29
+ (!isHub && (adapterId === AdapterType.WORMHOLE_DATA || adapterId === AdapterType.WORMHOLE_CCTP)));
30
+ }
31
+ export function assertAdapterSupportsReceiverValue(folksChainId, adapterId) {
32
+ if (!doesAdapterSupportReceiverValue(folksChainId, adapterId))
33
+ throw Error(`Adapter ${adapterId} does not support receiver value for folksChainId: ${folksChainId}`);
34
+ }
26
35
  function getAdapterIds(messageAdapterParams) {
27
36
  const { sourceFolksChainId, network, messageAdapterParamType } = messageAdapterParams;
28
37
  if (isHubChain(sourceFolksChainId, network))
@@ -1 +1 @@
1
- {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../../src/common/utils/adapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../../src/common/utils/adapter.ts"],"names":[],"mappings":"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"}
@@ -2,10 +2,11 @@ import type { MessageReceived, RetryMessageExtraArgs, ReverseMessageExtraArgs }
2
2
  import type { GenericAddress } from "../../common/types/address.js";
3
3
  import type { FolksChainId } from "../../common/types/chain.js";
4
4
  import type { MessageId } from "../../common/types/gmp.js";
5
- import type { AdapterType } from "../../common/types/message.js";
5
+ import type { AdapterType, MessageAdapters } from "../../common/types/message.js";
6
6
  import type { PrepareRetryMessageCall, PrepareReverseMessageCall, PrepareResendWormholeMessageCall } from "../../common/types/module.js";
7
+ import type { FolksTokenId } from "../../common/types/token.js";
7
8
  export declare const prepare: {
8
- retryMessage(adapterId: AdapterType, messageId: MessageId, value: bigint, message: MessageReceived, extraArgs: RetryMessageExtraArgs | undefined, isHub?: boolean): Promise<import("../../chains/evm/common/types/module.js").PrepareRetryMessageCall>;
9
+ retryMessage(adapterId: AdapterType, messageId: MessageId, message: MessageReceived, extraArgs: RetryMessageExtraArgs | undefined, value: bigint, isHub?: boolean): Promise<import("../../chains/evm/common/types/module.js").PrepareRetryMessageCall>;
9
10
  reverseMessage(adapterId: AdapterType, messageId: MessageId, message: MessageReceived, extraArgs: ReverseMessageExtraArgs | undefined, value: bigint, isHub?: boolean): Promise<import("../../chains/evm/common/types/module.js").PrepareRetryMessageCall>;
10
11
  resendWormholeMessage(sourceFolksChainId: FolksChainId, emitterAddress: GenericAddress, sequence: bigint, targetFolksChainId: FolksChainId, receiverValue: bigint, receiverGasLimit: bigint): Promise<import("../../chains/evm/common/types/module.js").PrepareResendWormholeMessageCall>;
11
12
  };
@@ -14,3 +15,8 @@ export declare const write: {
14
15
  reverseMessage(adapterId: AdapterType, messageId: MessageId, prepareCall: PrepareReverseMessageCall): Promise<`0x${string}`>;
15
16
  resendWormholeMessage(prepareCall: PrepareResendWormholeMessageCall): Promise<`0x${string}`>;
16
17
  };
18
+ export declare const util: {
19
+ spokeToHubMessageFee(adapterId: AdapterType, fromFolksChainId: FolksChainId, sendFolksTokenId?: FolksTokenId, receiverValue?: bigint, gasLimit?: bigint): Promise<bigint>;
20
+ hubToSpokeMessageFee(adapterId: AdapterType, toFolksChainId: FolksChainId, receiveFolksTokenId: FolksTokenId, gasLimit?: bigint): Promise<bigint>;
21
+ roundTripMessageFee(adapters: MessageAdapters, startFolksChainId: FolksChainId, endFolksChainId: FolksChainId, receiveFolksTokenId: FolksTokenId, gasLimit?: bigint, returnGasLimit?: bigint): Promise<bigint>;
22
+ };
@@ -1,12 +1,14 @@
1
1
  import { getEvmSignerAddress } from "../../chains/evm/common/utils/chain.js";
2
2
  import { encodeRetryMessageExtraArgs, encodeReverseMessageExtraArgs } from "../../chains/evm/common/utils/gmp.js";
3
3
  import { FolksHubGmp } from "../../chains/evm/hub/modules/index.js";
4
- import { getHubChain } from "../../chains/evm/hub/utils/chain.js";
4
+ import { getHubChain, getHubTokenData } from "../../chains/evm/hub/utils/chain.js";
5
5
  import { FolksEvmGmp } from "../../chains/evm/spoke/modules/index.js";
6
- import { assertHubChainSelected, getSpokeChain } from "../../common/utils/chain.js";
6
+ import { assertAdapterSupportsDataMessage, assertAdapterSupportsReceiverValue, assertAdapterSupportsTokenMessage, } from "../../common/utils/adapter.js";
7
+ import { assertHubChainSelected, getSpokeChain, getSpokeTokenData } from "../../common/utils/chain.js";
8
+ import { isCircleToken } from "../../common/utils/token.js";
7
9
  import { FolksCore } from "../core/folks-core.js";
8
10
  export const prepare = {
9
- async retryMessage(adapterId, messageId, value, message, extraArgs, isHub = true) {
11
+ async retryMessage(adapterId, messageId, message, extraArgs, value, isHub = true) {
10
12
  const folksChain = FolksCore.getSelectedFolksChain();
11
13
  const encodedExtraArgs = encodeRetryMessageExtraArgs(extraArgs);
12
14
  if (isHub) {
@@ -60,4 +62,35 @@ export const write = {
60
62
  return await FolksEvmGmp.write.resendMessage(FolksCore.getHubProvider(), FolksCore.getSigner(), prepareCall);
61
63
  },
62
64
  };
65
+ export const util = {
66
+ async spokeToHubMessageFee(adapterId, fromFolksChainId, sendFolksTokenId, receiverValue = 0n, gasLimit = 1500000n) {
67
+ const network = FolksCore.getSelectedNetwork();
68
+ const spokeChain = getSpokeChain(fromFolksChainId, network);
69
+ const hubChain = getHubChain(network);
70
+ // check receiver value is support
71
+ if (receiverValue > 0n)
72
+ assertAdapterSupportsReceiverValue(fromFolksChainId, adapterId);
73
+ // check adapter id is supported
74
+ sendFolksTokenId && isCircleToken(sendFolksTokenId)
75
+ ? assertAdapterSupportsTokenMessage(fromFolksChainId, adapterId)
76
+ : assertAdapterSupportsDataMessage(fromFolksChainId, adapterId);
77
+ const spokeTokenData = sendFolksTokenId ? getSpokeTokenData(spokeChain, sendFolksTokenId) : undefined;
78
+ return FolksEvmGmp.getSendMessageFee(FolksCore.getProvider(fromFolksChainId), adapterId, receiverValue, gasLimit, hubChain, spokeChain, spokeTokenData);
79
+ },
80
+ async hubToSpokeMessageFee(adapterId, toFolksChainId, receiveFolksTokenId, gasLimit = 500000n) {
81
+ const network = FolksCore.getSelectedNetwork();
82
+ const hubChain = getHubChain(network);
83
+ // check adapter id is supported
84
+ isCircleToken(receiveFolksTokenId)
85
+ ? assertAdapterSupportsTokenMessage(toFolksChainId, adapterId)
86
+ : assertAdapterSupportsDataMessage(toFolksChainId, adapterId);
87
+ const hubTokenData = getHubTokenData(receiveFolksTokenId, network);
88
+ return await FolksHubGmp.getSendMessageFee(FolksCore.getHubProvider(), toFolksChainId, adapterId, gasLimit, hubChain, hubTokenData);
89
+ },
90
+ async roundTripMessageFee(adapters, startFolksChainId, endFolksChainId, receiveFolksTokenId, gasLimit = 1500000n, returnGasLimit = 500000n) {
91
+ const { adapterId, returnAdapterId } = adapters;
92
+ const receiverValue = await this.hubToSpokeMessageFee(returnAdapterId, endFolksChainId, receiveFolksTokenId, returnGasLimit);
93
+ return await this.spokeToHubMessageFee(adapterId, startFolksChainId, undefined, receiverValue, gasLimit);
94
+ },
95
+ };
63
96
  //# sourceMappingURL=folks-gmp.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"folks-gmp.js","sourceRoot":"","sources":["../../../src/xchain/modules/folks-gmp.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"folks-gmp.js","sourceRoot":"","sources":["../../../src/xchain/modules/folks-gmp.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@folks-finance/xchain-sdk",
3
3
  "description": "The official JavaScript SDK for the Folks Finance Cross-Chain Lending Protocol",
4
- "version": "0.0.25",
4
+ "version": "0.0.27",
5
5
  "license": "MIT",
6
6
  "publishConfig": {
7
7
  "access": "public"
@@ -1,13 +1,19 @@
1
+ import { FINALITY } from "../../../../common/constants/message.js";
2
+ import { getRandomGenericAddress } from "../../../../common/utils/address.js";
3
+ import { getRandomBytes } from "../../../../common/utils/bytes.js";
1
4
  import { GAS_LIMIT_ESTIMATE_INCREASE } from "../../common/constants/contract.js";
2
5
  import { getEvmSignerAccount } from "../../common/utils/chain.js";
6
+ import { buildMessageParams, buildSendTokenExtraArgsWhenRemoving } from "../../common/utils/message.js";
3
7
  import { getBridgeRouterHubContract } from "../utils/contract.js";
4
8
 
5
9
  import type { EvmAddress } from "../../../../common/types/address.js";
10
+ import type { FolksChainId } from "../../../../common/types/chain.js";
6
11
  import type { MessageId } from "../../../../common/types/gmp.js";
7
- import type { AdapterType } from "../../../../common/types/message.js";
12
+ import type { AdapterType, MessageToSend } from "../../../../common/types/message.js";
8
13
  import type { MessageReceived } from "../../common/types/gmp.js";
9
14
  import type { PrepareRetryMessageCall, PrepareReverseMessageCall } from "../../common/types/module.js";
10
15
  import type { HubChain } from "../types/chain.js";
16
+ import type { HubTokenData } from "../types/token.js";
11
17
  import type { Client, EstimateGasParameters, Hex, WalletClient } from "viem";
12
18
 
13
19
  export const prepare = {
@@ -88,7 +94,7 @@ export const write = {
88
94
  account: getEvmSignerAccount(signer),
89
95
  chain: signer.chain,
90
96
  gas: gasLimit,
91
- msgValue,
97
+ value: msgValue,
92
98
  });
93
99
  },
94
100
 
@@ -107,7 +113,38 @@ export const write = {
107
113
  account: getEvmSignerAccount(signer),
108
114
  chain: signer.chain,
109
115
  gas: gasLimit,
110
- msgValue,
116
+ value: msgValue,
111
117
  });
112
118
  },
113
119
  };
120
+
121
+ export async function getSendMessageFee(
122
+ provider: Client,
123
+ toFolksChainId: FolksChainId,
124
+ adapterId: AdapterType,
125
+ gasLimit: bigint,
126
+ hubChain: HubChain,
127
+ hubTokenData: HubTokenData,
128
+ ): Promise<bigint> {
129
+ const hubBridgeRouter = getBridgeRouterHubContract(provider, hubChain.bridgeRouterAddress);
130
+
131
+ // construct return message
132
+ const message: MessageToSend = {
133
+ params: buildMessageParams({
134
+ adapters: {
135
+ adapterId,
136
+ returnAdapterId: 0 as AdapterType,
137
+ },
138
+ gasLimit,
139
+ }),
140
+ sender: hubChain.hubAddress,
141
+ destinationChainId: toFolksChainId,
142
+ handler: getRandomGenericAddress(),
143
+ payload: getRandomBytes(256),
144
+ finalityLevel: FINALITY.FINALISED,
145
+ extraArgs: buildSendTokenExtraArgsWhenRemoving(getRandomGenericAddress(), hubTokenData.token, 1n),
146
+ };
147
+
148
+ // get return adapter fee
149
+ return await hubBridgeRouter.read.getSendFee([message]);
150
+ }
@@ -1,21 +1,30 @@
1
+ import { FINALITY } from "../../../../common/constants/message.js";
1
2
  import { ChainType } from "../../../../common/types/chain.js";
2
- import { convertFromGenericAddress, convertToGenericAddress } from "../../../../common/utils/address.js";
3
+ import {
4
+ convertFromGenericAddress,
5
+ convertToGenericAddress,
6
+ getRandomGenericAddress,
7
+ } from "../../../../common/utils/address.js";
8
+ import { getRandomBytes } from "../../../../common/utils/bytes.js";
3
9
  import { getWormholeData } from "../../../../common/utils/gmp.js";
4
10
  import { GAS_LIMIT_ESTIMATE_INCREASE } from "../../common/constants/contract.js";
5
11
  import { getEvmSignerAccount } from "../../common/utils/chain.js";
6
12
  import { getWormholeRelayerContract } from "../../common/utils/contract.js";
13
+ import { buildMessageParams, buildSendTokenExtraArgsWhenAdding } from "../../common/utils/message.js";
7
14
  import { getBridgeRouterSpokeContract } from "../utils/contract.js";
8
15
 
9
16
  import type { EvmAddress, GenericAddress } from "../../../../common/types/address.js";
10
17
  import type { FolksChainId, SpokeChain } from "../../../../common/types/chain.js";
11
18
  import type { MessageId } from "../../../../common/types/gmp.js";
12
- import type { AdapterType } from "../../../../common/types/message.js";
19
+ import type { AdapterType, MessageToSend } from "../../../../common/types/message.js";
20
+ import type { SpokeTokenData } from "../../../../common/types/token.js";
13
21
  import type { MessageReceived } from "../../common/types/gmp.js";
14
22
  import type {
15
23
  PrepareResendWormholeMessageCall,
16
24
  PrepareRetryMessageCall,
17
25
  PrepareReverseMessageCall,
18
26
  } from "../../common/types/module.js";
27
+ import type { HubChain } from "../../hub/types/chain.js";
19
28
  import type { Client, EstimateGasParameters, Hex, WalletClient } from "viem";
20
29
 
21
30
  export const prepare = {
@@ -201,3 +210,38 @@ export const write = {
201
210
  );
202
211
  },
203
212
  };
213
+
214
+ export async function getSendMessageFee(
215
+ provider: Client,
216
+ adapterId: AdapterType,
217
+ receiverValue: bigint,
218
+ gasLimit: bigint,
219
+ hubChain: HubChain,
220
+ spokeChain: SpokeChain,
221
+ spokeTokenData?: SpokeTokenData,
222
+ ): Promise<bigint> {
223
+ const bridgeRouter = getBridgeRouterSpokeContract(provider, spokeChain.bridgeRouterAddress);
224
+
225
+ // construct return message
226
+ const message: MessageToSend = {
227
+ params: buildMessageParams({
228
+ adapters: {
229
+ adapterId,
230
+ returnAdapterId: 0 as AdapterType,
231
+ },
232
+ gasLimit,
233
+ receiverValue,
234
+ }),
235
+ sender: spokeChain.spokeCommonAddress,
236
+ destinationChainId: hubChain.folksChainId,
237
+ handler: getRandomGenericAddress(),
238
+ payload: getRandomBytes(256),
239
+ finalityLevel: FINALITY.FINALISED,
240
+ extraArgs: spokeTokenData
241
+ ? buildSendTokenExtraArgsWhenAdding(getRandomGenericAddress(), spokeTokenData.token, 1n)
242
+ : "0x",
243
+ };
244
+
245
+ // get return adapter fee
246
+ return await bridgeRouter.read.getSendFee([message]);
247
+ }
@@ -36,6 +36,19 @@ export function assertAdapterSupportsTokenMessage(folksChainId: FolksChainId, ad
36
36
  throw Error(`Adapter ${adapterId} does not support token message for folksChainId: ${folksChainId}`);
37
37
  }
38
38
 
39
+ export function doesAdapterSupportReceiverValue(folksChainId: FolksChainId, adapterId: AdapterType): boolean {
40
+ const isHub = isHubChain(folksChainId, FolksCore.getSelectedNetwork());
41
+ return (
42
+ (isHub && adapterId === AdapterType.HUB) ||
43
+ (!isHub && (adapterId === AdapterType.WORMHOLE_DATA || adapterId === AdapterType.WORMHOLE_CCTP))
44
+ );
45
+ }
46
+
47
+ export function assertAdapterSupportsReceiverValue(folksChainId: FolksChainId, adapterId: AdapterType): void {
48
+ if (!doesAdapterSupportReceiverValue(folksChainId, adapterId))
49
+ throw Error(`Adapter ${adapterId} does not support receiver value for folksChainId: ${folksChainId}`);
50
+ }
51
+
39
52
  function getAdapterIds(messageAdapterParams: MessageAdapterParams) {
40
53
  const { sourceFolksChainId, network, messageAdapterParamType } = messageAdapterParams;
41
54
  if (isHubChain(sourceFolksChainId, network)) return HUB_ADAPTERS;
@@ -1,9 +1,15 @@
1
1
  import { getEvmSignerAddress } from "../../chains/evm/common/utils/chain.js";
2
2
  import { encodeRetryMessageExtraArgs, encodeReverseMessageExtraArgs } from "../../chains/evm/common/utils/gmp.js";
3
3
  import { FolksHubGmp } from "../../chains/evm/hub/modules/index.js";
4
- import { getHubChain } from "../../chains/evm/hub/utils/chain.js";
4
+ import { getHubChain, getHubTokenData } from "../../chains/evm/hub/utils/chain.js";
5
5
  import { FolksEvmGmp } from "../../chains/evm/spoke/modules/index.js";
6
- import { assertHubChainSelected, getSpokeChain } from "../../common/utils/chain.js";
6
+ import {
7
+ assertAdapterSupportsDataMessage,
8
+ assertAdapterSupportsReceiverValue,
9
+ assertAdapterSupportsTokenMessage,
10
+ } from "../../common/utils/adapter.js";
11
+ import { assertHubChainSelected, getSpokeChain, getSpokeTokenData } from "../../common/utils/chain.js";
12
+ import { isCircleToken } from "../../common/utils/token.js";
7
13
  import { FolksCore } from "../core/folks-core.js";
8
14
 
9
15
  import type {
@@ -14,20 +20,21 @@ import type {
14
20
  import type { GenericAddress } from "../../common/types/address.js";
15
21
  import type { ChainType, FolksChainId } from "../../common/types/chain.js";
16
22
  import type { MessageId } from "../../common/types/gmp.js";
17
- import type { AdapterType } from "../../common/types/message.js";
23
+ import type { AdapterType, MessageAdapters } from "../../common/types/message.js";
18
24
  import type {
19
25
  PrepareRetryMessageCall,
20
26
  PrepareReverseMessageCall,
21
27
  PrepareResendWormholeMessageCall,
22
28
  } from "../../common/types/module.js";
29
+ import type { FolksTokenId } from "../../common/types/token.js";
23
30
 
24
31
  export const prepare = {
25
32
  async retryMessage(
26
33
  adapterId: AdapterType,
27
34
  messageId: MessageId,
28
- value: bigint,
29
35
  message: MessageReceived,
30
36
  extraArgs: RetryMessageExtraArgs | undefined,
37
+ value: bigint,
31
38
  isHub = true,
32
39
  ) {
33
40
  const folksChain = FolksCore.getSelectedFolksChain();
@@ -176,3 +183,80 @@ export const write = {
176
183
  );
177
184
  },
178
185
  };
186
+
187
+ export const util = {
188
+ async spokeToHubMessageFee(
189
+ adapterId: AdapterType,
190
+ fromFolksChainId: FolksChainId,
191
+ sendFolksTokenId?: FolksTokenId,
192
+ receiverValue = 0n,
193
+ gasLimit = 1_500_000n,
194
+ ): Promise<bigint> {
195
+ const network = FolksCore.getSelectedNetwork();
196
+ const spokeChain = getSpokeChain(fromFolksChainId, network);
197
+ const hubChain = getHubChain(network);
198
+
199
+ // check receiver value is support
200
+ if (receiverValue > 0n) assertAdapterSupportsReceiverValue(fromFolksChainId, adapterId);
201
+
202
+ // check adapter id is supported
203
+ sendFolksTokenId && isCircleToken(sendFolksTokenId)
204
+ ? assertAdapterSupportsTokenMessage(fromFolksChainId, adapterId)
205
+ : assertAdapterSupportsDataMessage(fromFolksChainId, adapterId);
206
+ const spokeTokenData = sendFolksTokenId ? getSpokeTokenData(spokeChain, sendFolksTokenId) : undefined;
207
+
208
+ return FolksEvmGmp.getSendMessageFee(
209
+ FolksCore.getProvider<ChainType.EVM>(fromFolksChainId),
210
+ adapterId,
211
+ receiverValue,
212
+ gasLimit,
213
+ hubChain,
214
+ spokeChain,
215
+ spokeTokenData,
216
+ );
217
+ },
218
+
219
+ async hubToSpokeMessageFee(
220
+ adapterId: AdapterType,
221
+ toFolksChainId: FolksChainId,
222
+ receiveFolksTokenId: FolksTokenId,
223
+ gasLimit = 500_000n,
224
+ ): Promise<bigint> {
225
+ const network = FolksCore.getSelectedNetwork();
226
+ const hubChain = getHubChain(network);
227
+
228
+ // check adapter id is supported
229
+ isCircleToken(receiveFolksTokenId)
230
+ ? assertAdapterSupportsTokenMessage(toFolksChainId, adapterId)
231
+ : assertAdapterSupportsDataMessage(toFolksChainId, adapterId);
232
+
233
+ const hubTokenData = getHubTokenData(receiveFolksTokenId, network);
234
+
235
+ return await FolksHubGmp.getSendMessageFee(
236
+ FolksCore.getHubProvider(),
237
+ toFolksChainId,
238
+ adapterId,
239
+ gasLimit,
240
+ hubChain,
241
+ hubTokenData,
242
+ );
243
+ },
244
+
245
+ async roundTripMessageFee(
246
+ adapters: MessageAdapters,
247
+ startFolksChainId: FolksChainId,
248
+ endFolksChainId: FolksChainId,
249
+ receiveFolksTokenId: FolksTokenId,
250
+ gasLimit = 1_500_000n,
251
+ returnGasLimit = 500_000n,
252
+ ): Promise<bigint> {
253
+ const { adapterId, returnAdapterId } = adapters;
254
+ const receiverValue = await this.hubToSpokeMessageFee(
255
+ returnAdapterId,
256
+ endFolksChainId,
257
+ receiveFolksTokenId,
258
+ returnGasLimit,
259
+ );
260
+ return await this.spokeToHubMessageFee(adapterId, startFolksChainId, undefined, receiverValue, gasLimit);
261
+ },
262
+ };