@folks-finance/xchain-sdk 0.0.30 → 0.0.31

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2,6 +2,8 @@ import { RECEIVE_TOKEN_ACTIONS } from "../../../../common/constants/message.js";
2
2
  import { ChainType } from "../../../../common/types/chain.js";
3
3
  import { MessageDirection } from "../../../../common/types/gmp.js";
4
4
  import { Action } from "../../../../common/types/message.js";
5
+ import { TokenType } from "../../../../common/types/token.js";
6
+ import { assertAdapterSupportsDataMessage, assertAdapterSupportsTokenMessage, } from "../../../../common/utils/adapter.js";
5
7
  import { getSpokeChain, getSpokeTokenData } from "../../../../common/utils/chain.js";
6
8
  import { buildMessageToSend, decodeMessagePayloadData, estimateAdapterReceiveGasLimit, } from "../../../../common/utils/messages.js";
7
9
  import { getFolksTokenIdFromPool } from "../../../../common/utils/token.js";
@@ -17,12 +19,18 @@ export async function getHubRetryMessageExtraArgsAndAdapterFees(provider, hubCha
17
19
  const folksTokenId = getFolksTokenIdFromPool(payloadData.poolId);
18
20
  const spokeChain = getSpokeChain(payloadData.receiverFolksChainId, network);
19
21
  const spokeTokenData = getSpokeTokenData(spokeChain, folksTokenId);
22
+ const hubSpokeChain = getSpokeChain(hubChain.folksChainId, network);
23
+ const hubSpokeTokenData = getSpokeTokenData(hubSpokeChain, folksTokenId);
24
+ if (hubSpokeTokenData.token.type === TokenType.CIRCLE)
25
+ assertAdapterSupportsTokenMessage(payloadData.receiverFolksChainId, returnAdapterId);
26
+ else
27
+ assertAdapterSupportsDataMessage(payloadData.receiverFolksChainId, returnAdapterId);
20
28
  const returnData = {
21
29
  amount: payloadData.amount,
22
30
  };
23
31
  const returnExtraArgs = {
24
32
  folksTokenId,
25
- token: spokeTokenData.token,
33
+ token: hubSpokeTokenData.token,
26
34
  recipient: spokeTokenData.spokeAddress,
27
35
  amount: payloadData.amount,
28
36
  };
@@ -42,7 +50,9 @@ export async function getHubRetryMessageExtraArgsAndAdapterFees(provider, hubCha
42
50
  };
43
51
  const returnGasLimit = await estimateAdapterReceiveGasLimit(hubChain.folksChainId, payloadData.receiverFolksChainId, FolksCore.getEVMProvider(payloadData.receiverFolksChainId), network, MessageDirection.HubToSpoke, returnMessageBuilderParams);
44
52
  const bridgeRouter = getBridgeRouterHubContract(provider, hubChain.bridgeRouterAddress);
45
- const messageToSend = buildMessageToSend(ChainType.EVM, returnMessageBuilderParams);
53
+ const messageToSend = buildMessageToSend(ChainType.EVM, returnMessageBuilderParams, {
54
+ gasLimit: returnGasLimit,
55
+ });
46
56
  const adapterFees = await bridgeRouter.read.getSendFee([messageToSend]);
47
57
  return {
48
58
  adapterFees,
@@ -52,17 +62,23 @@ export async function getHubRetryMessageExtraArgsAndAdapterFees(provider, hubCha
52
62
  export async function getHubReverseMessageExtraArgsAndAdapterFees(provider, hubChain, network, userAddress, message, extraArgsParams, payload) {
53
63
  const { action, data } = payload;
54
64
  const payloadData = decodeMessagePayloadData(action, data);
65
+ const folksTokenId = getFolksTokenIdFromPool(payloadData.poolId);
55
66
  const returnAdapterId = extraArgsParams?.returnAdapterId ?? message.returnAdapterId;
56
67
  const accountId = extraArgsParams?.accountId ?? payload.accountId;
57
- const folksTokenId = getFolksTokenIdFromPool(payloadData.poolId);
58
68
  const spokeChain = getSpokeChain(message.sourceChainId, network);
59
69
  const spokeTokenData = getSpokeTokenData(spokeChain, folksTokenId);
70
+ const hubSpokeChain = getSpokeChain(hubChain.folksChainId, network);
71
+ const hubSpokeTokenData = getSpokeTokenData(hubSpokeChain, folksTokenId);
72
+ if (hubSpokeTokenData.token.type === TokenType.CIRCLE)
73
+ assertAdapterSupportsTokenMessage(message.sourceChainId, returnAdapterId);
74
+ else
75
+ assertAdapterSupportsDataMessage(message.sourceChainId, returnAdapterId);
60
76
  const returnData = {
61
77
  amount: payloadData.amount,
62
78
  };
63
79
  const returnExtraArgs = {
64
80
  folksTokenId,
65
- token: spokeTokenData.token,
81
+ token: hubSpokeTokenData.token,
66
82
  recipient: spokeTokenData.spokeAddress,
67
83
  amount: payloadData.amount,
68
84
  };
@@ -1 +1 @@
1
- {"version":3,"file":"message.js","sourceRoot":"","sources":["../../../../../src/chains/evm/hub/utils/message.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"message.js","sourceRoot":"","sources":["../../../../../src/chains/evm/hub/utils/message.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export declare function getRandomElement<T>(arr: ReadonlyArray<T>): T;
@@ -0,0 +1,4 @@
1
+ export function getRandomElement(arr) {
2
+ return arr[Math.floor(Math.random() * arr.length)];
3
+ }
4
+ //# sourceMappingURL=random.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"random.js","sourceRoot":"","sources":["../../src/utils/random.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,gBAAgB,CAAI,GAAqB;IACvD,OAAO,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;AACrD,CAAC"}
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.30",
4
+ "version": "0.0.31",
5
5
  "license": "MIT",
6
6
  "publishConfig": {
7
7
  "access": "public"
@@ -2,6 +2,11 @@ import { RECEIVE_TOKEN_ACTIONS } from "../../../../common/constants/message.js";
2
2
  import { ChainType } from "../../../../common/types/chain.js";
3
3
  import { MessageDirection } from "../../../../common/types/gmp.js";
4
4
  import { Action } from "../../../../common/types/message.js";
5
+ import { TokenType } from "../../../../common/types/token.js";
6
+ import {
7
+ assertAdapterSupportsDataMessage,
8
+ assertAdapterSupportsTokenMessage,
9
+ } from "../../../../common/utils/adapter.js";
5
10
  import { getSpokeChain, getSpokeTokenData } from "../../../../common/utils/chain.js";
6
11
  import {
7
12
  buildMessageToSend,
@@ -57,13 +62,19 @@ export async function getHubRetryMessageExtraArgsAndAdapterFees(
57
62
 
58
63
  const spokeChain = getSpokeChain(payloadData.receiverFolksChainId, network);
59
64
  const spokeTokenData = getSpokeTokenData(spokeChain, folksTokenId);
65
+ const hubSpokeChain = getSpokeChain(hubChain.folksChainId, network);
66
+ const hubSpokeTokenData = getSpokeTokenData(hubSpokeChain, folksTokenId);
67
+
68
+ if (hubSpokeTokenData.token.type === TokenType.CIRCLE)
69
+ assertAdapterSupportsTokenMessage(payloadData.receiverFolksChainId, returnAdapterId);
70
+ else assertAdapterSupportsDataMessage(payloadData.receiverFolksChainId, returnAdapterId);
60
71
 
61
72
  const returnData: SendTokenMessageData = {
62
73
  amount: payloadData.amount,
63
74
  };
64
75
  const returnExtraArgs: SendTokenExtraArgs = {
65
76
  folksTokenId,
66
- token: spokeTokenData.token,
77
+ token: hubSpokeTokenData.token,
67
78
  recipient: spokeTokenData.spokeAddress,
68
79
  amount: payloadData.amount,
69
80
  };
@@ -91,7 +102,9 @@ export async function getHubRetryMessageExtraArgsAndAdapterFees(
91
102
  );
92
103
 
93
104
  const bridgeRouter = getBridgeRouterHubContract(provider, hubChain.bridgeRouterAddress);
94
- const messageToSend = buildMessageToSend(ChainType.EVM, returnMessageBuilderParams);
105
+ const messageToSend = buildMessageToSend(ChainType.EVM, returnMessageBuilderParams, {
106
+ gasLimit: returnGasLimit,
107
+ });
95
108
  const adapterFees = await bridgeRouter.read.getSendFee([messageToSend]);
96
109
 
97
110
  return {
@@ -114,21 +127,26 @@ export async function getHubReverseMessageExtraArgsAndAdapterFees(
114
127
  }> {
115
128
  const { action, data } = payload;
116
129
  const payloadData = decodeMessagePayloadData(action as ReversibleHubAction, data);
130
+ const folksTokenId = getFolksTokenIdFromPool(payloadData.poolId);
117
131
 
118
132
  const returnAdapterId = extraArgsParams?.returnAdapterId ?? message.returnAdapterId;
119
133
  const accountId = extraArgsParams?.accountId ?? payload.accountId;
120
134
 
121
- const folksTokenId = getFolksTokenIdFromPool(payloadData.poolId);
122
-
123
135
  const spokeChain = getSpokeChain(message.sourceChainId, network);
124
136
  const spokeTokenData = getSpokeTokenData(spokeChain, folksTokenId);
137
+ const hubSpokeChain = getSpokeChain(hubChain.folksChainId, network);
138
+ const hubSpokeTokenData = getSpokeTokenData(hubSpokeChain, folksTokenId);
139
+
140
+ if (hubSpokeTokenData.token.type === TokenType.CIRCLE)
141
+ assertAdapterSupportsTokenMessage(message.sourceChainId, returnAdapterId);
142
+ else assertAdapterSupportsDataMessage(message.sourceChainId, returnAdapterId);
125
143
 
126
144
  const returnData: SendTokenMessageData = {
127
145
  amount: payloadData.amount,
128
146
  };
129
147
  const returnExtraArgs: SendTokenExtraArgs = {
130
148
  folksTokenId,
131
- token: spokeTokenData.token,
149
+ token: hubSpokeTokenData.token,
132
150
  recipient: spokeTokenData.spokeAddress,
133
151
  amount: payloadData.amount,
134
152
  };
@@ -0,0 +1,3 @@
1
+ export function getRandomElement<T>(arr: ReadonlyArray<T>): T {
2
+ return arr[Math.floor(Math.random() * arr.length)];
3
+ }