@funkit/core 2.1.2-next.0 → 2.1.2-next.2

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.
Files changed (171) hide show
  1. package/dist/index.js +16641 -12
  2. package/dist/index.js.map +7 -1
  3. package/dist/src/common/constants.d.ts +42 -0
  4. package/dist/src/viem/Converter.d.ts +4 -4
  5. package/package.json +6 -4
  6. package/dist/src/abis/ApproveAndExec.json +0 -106
  7. package/dist/src/abis/ApproveAndSwap.json +0 -141
  8. package/dist/src/abis/CheckoutPaymaster.json +0 -3358
  9. package/dist/src/abis/ERC20.json +0 -1
  10. package/dist/src/abis/ERC721.json +0 -1
  11. package/dist/src/abis/EntryPoint.json +0 -1023
  12. package/dist/src/abis/EstimationPaymaster.json +0 -266
  13. package/dist/src/abis/FeePercentOracle.json +0 -218
  14. package/dist/src/abis/FunWallet.json +0 -758
  15. package/dist/src/abis/FunWalletFactory.json +0 -232
  16. package/dist/src/abis/GaslessPaymaster.json +0 -558
  17. package/dist/src/abis/LidoWithdrawQueue.json +0 -1
  18. package/dist/src/abis/RoleBasedAccessControl.json +0 -836
  19. package/dist/src/abis/TestNFT.json +0 -226
  20. package/dist/src/abis/TokenPaymaster.json +0 -696
  21. package/dist/src/abis/TokenPriceOracle.json +0 -57
  22. package/dist/src/abis/UniswapV2Factory.json +0 -1
  23. package/dist/src/abis/UniswapV2Router02.json +0 -1
  24. package/dist/src/abis/UniswapV3LimitOrder.json +0 -1
  25. package/dist/src/abis/UserAuthentication.json +0 -338
  26. package/dist/src/abis/univ3factory.json +0 -1
  27. package/dist/src/abis/univ3quoter.json +0 -1
  28. package/dist/src/abis/univ3router.json +0 -1
  29. package/dist/src/actions/AccessControl.js +0 -87
  30. package/dist/src/actions/AccessControl.js.map +0 -1
  31. package/dist/src/actions/BatchActions.js +0 -8
  32. package/dist/src/actions/BatchActions.js.map +0 -1
  33. package/dist/src/actions/Bridge.js +0 -42
  34. package/dist/src/actions/Bridge.js.map +0 -1
  35. package/dist/src/actions/FirstClassActions.js +0 -329
  36. package/dist/src/actions/FirstClassActions.js.map +0 -1
  37. package/dist/src/actions/Group.js +0 -30
  38. package/dist/src/actions/Group.js.map +0 -1
  39. package/dist/src/actions/LimitOrder.js +0 -43
  40. package/dist/src/actions/LimitOrder.js.map +0 -1
  41. package/dist/src/actions/Stake.js +0 -108
  42. package/dist/src/actions/Stake.js.map +0 -1
  43. package/dist/src/actions/Swap.js +0 -150
  44. package/dist/src/actions/Swap.js.map +0 -1
  45. package/dist/src/actions/Token.js +0 -103
  46. package/dist/src/actions/Token.js.map +0 -1
  47. package/dist/src/actions/index.js +0 -8
  48. package/dist/src/actions/index.js.map +0 -1
  49. package/dist/src/actions/types.js +0 -14
  50. package/dist/src/actions/types.js.map +0 -1
  51. package/dist/src/apis/AccessControlApis.js +0 -19
  52. package/dist/src/apis/AccessControlApis.js.map +0 -1
  53. package/dist/src/apis/BridgeApis.js +0 -54
  54. package/dist/src/apis/BridgeApis.js.map +0 -1
  55. package/dist/src/apis/ContractApis.js +0 -7
  56. package/dist/src/apis/ContractApis.js.map +0 -1
  57. package/dist/src/apis/GroupApis.js +0 -15
  58. package/dist/src/apis/GroupApis.js.map +0 -1
  59. package/dist/src/apis/InfoApis.js +0 -53
  60. package/dist/src/apis/InfoApis.js.map +0 -1
  61. package/dist/src/apis/ListenerApis.js +0 -31
  62. package/dist/src/apis/ListenerApis.js.map +0 -1
  63. package/dist/src/apis/NFTApis.js +0 -29
  64. package/dist/src/apis/NFTApis.js.map +0 -1
  65. package/dist/src/apis/OperationApis.js +0 -76
  66. package/dist/src/apis/OperationApis.js.map +0 -1
  67. package/dist/src/apis/PaymasterApis.js +0 -18
  68. package/dist/src/apis/PaymasterApis.js.map +0 -1
  69. package/dist/src/apis/SwapApis.js +0 -40
  70. package/dist/src/apis/SwapApis.js.map +0 -1
  71. package/dist/src/apis/UserApis.js +0 -56
  72. package/dist/src/apis/UserApis.js.map +0 -1
  73. package/dist/src/apis/index.js +0 -9
  74. package/dist/src/apis/index.js.map +0 -1
  75. package/dist/src/apis/types.js +0 -2
  76. package/dist/src/apis/types.js.map +0 -1
  77. package/dist/src/auth/Auth.js +0 -321
  78. package/dist/src/auth/Auth.js.map +0 -1
  79. package/dist/src/auth/SessionKeyAuth.js +0 -115
  80. package/dist/src/auth/SessionKeyAuth.js.map +0 -1
  81. package/dist/src/auth/index.js +0 -3
  82. package/dist/src/auth/index.js.map +0 -1
  83. package/dist/src/auth/types.js +0 -2
  84. package/dist/src/auth/types.js.map +0 -1
  85. package/dist/src/common/constants.js +0 -477
  86. package/dist/src/common/constants.js.map +0 -1
  87. package/dist/src/common/index.js +0 -3
  88. package/dist/src/common/index.js.map +0 -1
  89. package/dist/src/common/types.js +0 -2
  90. package/dist/src/common/types.js.map +0 -1
  91. package/dist/src/config/Config.js +0 -50
  92. package/dist/src/config/Config.js.map +0 -1
  93. package/dist/src/config/index.js +0 -3
  94. package/dist/src/config/index.js.map +0 -1
  95. package/dist/src/config/types.js +0 -2
  96. package/dist/src/config/types.js.map +0 -1
  97. package/dist/src/data/Chain.js +0 -209
  98. package/dist/src/data/Chain.js.map +0 -1
  99. package/dist/src/data/NFT.js +0 -101
  100. package/dist/src/data/NFT.js.map +0 -1
  101. package/dist/src/data/Operation.js +0 -88
  102. package/dist/src/data/Operation.js.map +0 -1
  103. package/dist/src/data/SolidityData.js +0 -84
  104. package/dist/src/data/SolidityData.js.map +0 -1
  105. package/dist/src/data/Token.js +0 -118
  106. package/dist/src/data/Token.js.map +0 -1
  107. package/dist/src/data/index.js +0 -7
  108. package/dist/src/data/index.js.map +0 -1
  109. package/dist/src/data/types.js +0 -22
  110. package/dist/src/data/types.js.map +0 -1
  111. package/dist/src/errors/BaseError.js +0 -25
  112. package/dist/src/errors/BaseError.js.map +0 -1
  113. package/dist/src/errors/ClientError.js +0 -63
  114. package/dist/src/errors/ClientError.js.map +0 -1
  115. package/dist/src/errors/ServerError.js +0 -13
  116. package/dist/src/errors/ServerError.js.map +0 -1
  117. package/dist/src/errors/errors.json +0 -626
  118. package/dist/src/errors/index.js +0 -5
  119. package/dist/src/errors/index.js.map +0 -1
  120. package/dist/src/errors/types.js +0 -48
  121. package/dist/src/errors/types.js.map +0 -1
  122. package/dist/src/sponsors/CheckoutSponsor.js +0 -61
  123. package/dist/src/sponsors/CheckoutSponsor.js.map +0 -1
  124. package/dist/src/sponsors/GaslessSponsor.js +0 -75
  125. package/dist/src/sponsors/GaslessSponsor.js.map +0 -1
  126. package/dist/src/sponsors/Sponsor.js +0 -80
  127. package/dist/src/sponsors/Sponsor.js.map +0 -1
  128. package/dist/src/sponsors/TokenSponsor.js +0 -251
  129. package/dist/src/sponsors/TokenSponsor.js.map +0 -1
  130. package/dist/src/sponsors/index.js +0 -5
  131. package/dist/src/sponsors/index.js.map +0 -1
  132. package/dist/src/sponsors/types.js +0 -8
  133. package/dist/src/sponsors/types.js.map +0 -1
  134. package/dist/src/utils/ApiUtils.js +0 -94
  135. package/dist/src/utils/ApiUtils.js.map +0 -1
  136. package/dist/src/utils/AuthUtils.js +0 -31
  137. package/dist/src/utils/AuthUtils.js.map +0 -1
  138. package/dist/src/utils/ChainUtils.js +0 -131
  139. package/dist/src/utils/ChainUtils.js.map +0 -1
  140. package/dist/src/utils/CheckoutUtils.js +0 -28
  141. package/dist/src/utils/CheckoutUtils.js.map +0 -1
  142. package/dist/src/utils/GroupUtils.js +0 -26
  143. package/dist/src/utils/GroupUtils.js.map +0 -1
  144. package/dist/src/utils/MerkleUtils.js +0 -86
  145. package/dist/src/utils/MerkleUtils.js.map +0 -1
  146. package/dist/src/utils/PaymasterUtils.js +0 -17
  147. package/dist/src/utils/PaymasterUtils.js.map +0 -1
  148. package/dist/src/utils/SwapUtils.js +0 -193
  149. package/dist/src/utils/SwapUtils.js.map +0 -1
  150. package/dist/src/utils/TypeUtils.js +0 -9
  151. package/dist/src/utils/TypeUtils.js.map +0 -1
  152. package/dist/src/utils/UserOpUtils.js +0 -171
  153. package/dist/src/utils/UserOpUtils.js.map +0 -1
  154. package/dist/src/utils/ViemUtils.js +0 -30
  155. package/dist/src/utils/ViemUtils.js.map +0 -1
  156. package/dist/src/utils/WalletUtils.js +0 -56
  157. package/dist/src/utils/WalletUtils.js.map +0 -1
  158. package/dist/src/utils/index.js +0 -9
  159. package/dist/src/utils/index.js.map +0 -1
  160. package/dist/src/viem/ContractInterface.js +0 -90
  161. package/dist/src/viem/ContractInterface.js.map +0 -1
  162. package/dist/src/viem/Converter.js +0 -47
  163. package/dist/src/viem/Converter.js.map +0 -1
  164. package/dist/src/viem/index.js +0 -3
  165. package/dist/src/viem/index.js.map +0 -1
  166. package/dist/src/wallet/FunWallet.js +0 -804
  167. package/dist/src/wallet/FunWallet.js.map +0 -1
  168. package/dist/src/wallet/index.js +0 -3
  169. package/dist/src/wallet/index.js.map +0 -1
  170. package/dist/src/wallet/types.js +0 -2
  171. package/dist/src/wallet/types.js.map +0 -1
@@ -1,94 +0,0 @@
1
- import { retry } from '@lifeomic/attempt';
2
- import { API_URL } from '../common/constants';
3
- import { AccessDeniedError, ErrorCode, InternalFailureError, InvalidParameterError, ResourceNotFoundError, ThrottlingError, UserOpFailureError, } from '../errors';
4
- import { stringify } from './index';
5
- const errorHandler = (err, context) => {
6
- if (err instanceof ResourceNotFoundError ||
7
- err instanceof InvalidParameterError ||
8
- err instanceof UserOpFailureError) {
9
- context.abort();
10
- }
11
- };
12
- export const DEFAULT_RETRY_OPTIONS = {
13
- delay: 100,
14
- initialDelay: 0,
15
- maxDelay: 3000,
16
- factor: 2,
17
- maxAttempts: 5,
18
- timeout: 0,
19
- jitter: true,
20
- minDelay: 0,
21
- handleError: errorHandler,
22
- handleTimeout: null,
23
- beforeAttempt: null,
24
- calculateDelay: null,
25
- };
26
- export const sendRequest = async (uri, method, apiKey, body, retryOptions) => {
27
- try {
28
- const headers = {
29
- 'Content-Type': 'application/json',
30
- };
31
- if (apiKey) {
32
- headers['X-Api-Key'] = apiKey;
33
- }
34
- const finalRetryOptions = {
35
- ...DEFAULT_RETRY_OPTIONS,
36
- ...(retryOptions || {}),
37
- };
38
- return retry(async function () {
39
- const response = await fetch(uri, {
40
- method,
41
- headers,
42
- redirect: 'follow',
43
- body: method !== 'GET' ? stringify(body) : undefined,
44
- });
45
- const json = await response.json();
46
- if (response.ok) {
47
- return json;
48
- }
49
- else if (response.status === 400) {
50
- throw new InvalidParameterError(ErrorCode.InvalidParameter, `bad request ${JSON.stringify(json)}`, { body }, 'check the api call parameters. its mostly because some call parameters are wrong', 'https://docs.fun.xyz');
51
- }
52
- else if (response.status === 403) {
53
- throw new AccessDeniedError(ErrorCode.Unauthorized, 'Invalid API key or insufficient access.', { apiKey }, 'Check your api key at https://app.fun.xyz and check with fun team if you believe something is off', 'https://docs.fun.xyz');
54
- }
55
- else if (response.status === 404) {
56
- throw new ResourceNotFoundError(ErrorCode.ServerMissingData, JSON.stringify(json), { body }, 'check the api call parameters. its mostly because some call parameters are wrong', 'https://docs.fun.xyz');
57
- }
58
- else if (response.status === 429) {
59
- throw new ThrottlingError(ErrorCode.RequestLimitExceeded, `too many requests ${JSON.stringify(json)}`, { body }, 'you are making too many requests. please slow down. Reach out to fun team if you need more quota', 'https://docs.fun.xyz');
60
- }
61
- else if (response.status === 500) {
62
- if (json.errorCode === ErrorCode.UserOpFailureError) {
63
- throw new UserOpFailureError(ErrorCode.UserOpFailureError, JSON.stringify(json), { body }, 'fix user op failure. Most of the time this is due to invalid parameters', 'https://docs.fun.xyz');
64
- }
65
- else {
66
- throw new InternalFailureError(ErrorCode.ServerFailure, `server failure ${JSON.stringify(json)}`, { body }, 'retry later. if it still fails, please contact us.', 'https://docs.fun.xyz');
67
- }
68
- }
69
- else if (response.status === 504) {
70
- throw new InternalFailureError(ErrorCode.ServerTimeout, `server timeout failure ${JSON.stringify(json)}`, { body }, 'retry later. if it still fails, please contact us.', 'https://docs.fun.xyz');
71
- }
72
- else if (!response.ok) {
73
- throw new InternalFailureError(ErrorCode.UnknownServerError, `unknown server failure ${JSON.stringify(json)}`, { body }, 'retry later. if it still fails, please contact us.', 'https://docs.fun.xyz');
74
- }
75
- return {};
76
- }, finalRetryOptions);
77
- }
78
- catch (err) {
79
- throw new InternalFailureError(ErrorCode.ServerConnectionError, `Cannot connect to Fun API Service ${err}`, { body }, 'retry later. if it still fails, please contact us.', 'https://docs.fun.xyz');
80
- }
81
- };
82
- export async function sendGetRequest(uri = API_URL, endpoint, apiKey = globalThis.globalEnvOption?.apiKey, retryOptions = {}) {
83
- return await sendRequest(`${uri}/${endpoint}`, 'GET', apiKey, undefined, retryOptions);
84
- }
85
- export async function sendPostRequest(uri = API_URL, endpoint, body, apiKey = globalThis.globalEnvOption?.apiKey, retryOptions = {}) {
86
- return await sendRequest(`${uri}/${endpoint}`, 'POST', apiKey, body, retryOptions);
87
- }
88
- export async function sendDeleteRequest(uri = API_URL, endpoint, apiKey = globalThis.globalEnvOption.apiKey) {
89
- await sendRequest(`${uri}/${endpoint}`, 'DELETE', apiKey);
90
- }
91
- export async function sendPutRequest(uri = API_URL, endpoint, body, apiKey = globalThis.globalEnvOption.apiKey) {
92
- await sendRequest(`${uri}/${endpoint}`, 'PUT', apiKey, body);
93
- }
94
- //# sourceMappingURL=ApiUtils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ApiUtils.js","sourceRoot":"","sources":["../../../src/utils/ApiUtils.ts"],"names":[],"mappings":"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"}
@@ -1,31 +0,0 @@
1
- import { v4 as uuidv4 } from 'uuid';
2
- // @ts-ignore
3
- // eslint-disable-next-line
4
- import { generatePrivateKey as generateRandomPrivateKey } from "viem/accounts";
5
- import { createUser, getUserUniqueId } from '../apis/UserApis';
6
- export const getAuthUniqueId = async (authId, addr = 'NO_ADDRESS', skipDBActions = false) => {
7
- let authUniqueId;
8
- if (skipDBActions) {
9
- authUniqueId = addr;
10
- }
11
- else {
12
- authUniqueId = await getUserUniqueId(authId);
13
- }
14
- if (!authUniqueId) {
15
- authUniqueId = uuidv4();
16
- }
17
- const words = authId.split('###');
18
- let method;
19
- if (words[0].startsWith('0x')) {
20
- method = 'eoa';
21
- }
22
- else {
23
- method = words[0];
24
- }
25
- await createUser(authId, addr, method, authUniqueId);
26
- return authUniqueId;
27
- };
28
- export const generatePrivateKey = () => {
29
- return generateRandomPrivateKey();
30
- };
31
- //# sourceMappingURL=AuthUtils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AuthUtils.js","sourceRoot":"","sources":["../../../src/utils/AuthUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,MAAM,CAAA;AAEnC,aAAa;AACb,2BAA2B;AAC3B,OAAO,EAAE,kBAAkB,IAAI,wBAAwB,EAAE,MAAM,eAAe,CAAA;AAE9E,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAE9D,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,EAClC,MAAc,EACd,IAAI,GAAG,YAAY,EACnB,aAAa,GAAG,KAAK,EACrB,EAAE;IACF,IAAI,YAAY,CAAA;IAChB,IAAI,aAAa,EAAE,CAAC;QAClB,YAAY,GAAG,IAAI,CAAA;IACrB,CAAC;SAAM,CAAC;QACN,YAAY,GAAG,MAAM,eAAe,CAAC,MAAM,CAAC,CAAA;IAC9C,CAAC;IACD,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,YAAY,GAAG,MAAM,EAAE,CAAA;IACzB,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;IACjC,IAAI,MAAM,CAAA;IACV,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9B,MAAM,GAAG,KAAK,CAAA;IAChB,CAAC;SAAM,CAAC;QACN,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;IACnB,CAAC;IACD,MAAM,UAAU,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,CAAC,CAAA;IAEpD,OAAO,YAAY,CAAA;AACrB,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAQ,EAAE;IAC1C,OAAO,wBAAwB,EAAE,CAAA;AACnC,CAAC,CAAA"}
@@ -1,131 +0,0 @@
1
- import { getAssetFromFaucet } from '@funkit/api-base';
2
- import { concat, decodeAbiParameters, encodeAbiParameters, isAddress as isAddressViem, keccak256, pad, parseEther, toBytes, toHex, } from 'viem';
3
- import { gasSpecificChain, WALLET_CONTRACT_INTERFACE } from '../common';
4
- import { Chain } from '../data';
5
- import { ErrorCode, InvalidParameterError } from '../errors';
6
- import { sendRequest } from './ApiUtils';
7
- export const isAddress = (address) => {
8
- try {
9
- const [decodedAddr] = decodeAbiParameters([{ type: 'address' }], pad(address, { size: 32 }));
10
- return isAddressViem(decodedAddr);
11
- }
12
- catch (err) {
13
- return false;
14
- }
15
- };
16
- export const fundWallet = async (auth, wallet, value, txOptions = globalThis.globalEnvOption) => {
17
- const chain = await Chain.getChain({ chainIdentifier: txOptions.chain });
18
- const chainId = await chain.getChainId();
19
- const to = await wallet.getAddress();
20
- let txData;
21
- if (gasSpecificChain[chainId]) {
22
- let maxPriorityFee, maxFee;
23
- try {
24
- const { standard: { maxPriorityFee: maxPriorityFee1, maxFee: maxFee1 }, } = await getGasStation(gasSpecificChain[chainId].gasStationUrl);
25
- maxPriorityFee = maxPriorityFee1;
26
- maxFee = maxFee1;
27
- }
28
- catch (e) {
29
- maxPriorityFee = BigInt(gasSpecificChain[chainId].backupPriorityFee);
30
- maxFee = BigInt(gasSpecificChain[chainId].backupFee);
31
- }
32
- txData = {
33
- to,
34
- data: '0x',
35
- value: parseEther(`${value}`),
36
- maxFeePerGas: BigInt(Math.floor(maxPriorityFee * 1e9)),
37
- maxPriorityFeePerGas: BigInt(Math.floor(maxFee * 1e9)),
38
- };
39
- }
40
- else {
41
- txData = { to, data: '0x', value: parseEther(`${value}`) };
42
- }
43
- const receipt = await auth.sendTx({ ...txData });
44
- return await receipt;
45
- };
46
- export const isContract = async (address, client) => {
47
- try {
48
- const code = await client.getBytecode({ address });
49
- return !!code;
50
- }
51
- catch (error) {
52
- return false;
53
- }
54
- };
55
- export const randomBytes = (length) => {
56
- const bytes = new Uint8Array(length);
57
- for (let i = 0; i < length; i++) {
58
- bytes[i] = Math.floor(Math.random() * 256);
59
- }
60
- return toHex(bytes);
61
- };
62
- export const getWalletPermitNonce = async (walletAddr, chain, nonceKey = 0) => {
63
- try {
64
- return await WALLET_CONTRACT_INTERFACE.readFromChain(walletAddr, 'getNonce', [nonceKey], chain);
65
- }
66
- catch (e) {
67
- return 0;
68
- }
69
- };
70
- export const getPermitHash = (token, to, amount, nonce, walletAddr, chainId) => {
71
- const salt = keccak256(toBytes('Create3Deployer.deployers()'));
72
- const EIP712_DOMAIN = keccak256(encodeAbiParameters([{ type: 'string' }], [
73
- 'EIP712Domain(string name,string version,uint256 chainId,address verifyingContract,bytes32 salt)',
74
- ]));
75
- const PERMIT_TYPEHASH = 'PermitTransferStruct(address token, address to, uint256 amount, uint256 nonce)';
76
- const DOMAIN_SEPARATOR = keccak256(encodeAbiParameters([
77
- { type: 'bytes32' },
78
- { type: 'bytes32' },
79
- { type: 'bytes32' },
80
- { type: 'uint256' },
81
- { type: 'address' },
82
- { type: 'bytes32' },
83
- ], [EIP712_DOMAIN, salt, keccak256(toBytes('1')), chainId, walletAddr, salt]));
84
- const PERMIT_HASH = keccak256(encodeAbiParameters([
85
- { type: 'string' },
86
- { type: 'address' },
87
- { type: 'address' },
88
- { type: 'uint256' },
89
- { type: 'uint256' },
90
- ], [PERMIT_TYPEHASH, token, to, amount, nonce]));
91
- return keccak256(concat([DOMAIN_SEPARATOR, PERMIT_HASH]));
92
- };
93
- export const getGasStation = async (gasStationUrl) => {
94
- return await sendRequest(gasStationUrl, 'GET', '');
95
- };
96
- export const useFaucet = async (chainIdentifier, wallet) => {
97
- const chain = await Chain.getChain({ chainIdentifier });
98
- const chainName = await chain.getChainName();
99
- if (chainName !== 'goerli') {
100
- throw new InvalidParameterError(ErrorCode.InvalidChainIdentifier, 'Only Goerli is supported', chainIdentifier, 'Provide the goerli chain, 5, or goerli as the chain identifier', 'https://docs.fun.xyz/');
101
- }
102
- const walletAddress = await wallet.getAddress();
103
- const [ethRequest, usdcRequest, usdtRequest, daiRequest] = await Promise.all([
104
- getAssetFromFaucet({
105
- token: 'eth',
106
- chain: chainName,
107
- walletAddress,
108
- apiKey: globalThis.globalEnvOption.apiKey,
109
- }),
110
- getAssetFromFaucet({
111
- token: 'usdc',
112
- chain: chainName,
113
- walletAddress,
114
- apiKey: globalThis.globalEnvOption.apiKey,
115
- }),
116
- getAssetFromFaucet({
117
- token: 'usdt',
118
- chain: chainName,
119
- walletAddress,
120
- apiKey: globalThis.globalEnvOption.apiKey,
121
- }),
122
- getAssetFromFaucet({
123
- token: 'dai',
124
- chain: chainName,
125
- walletAddress,
126
- apiKey: globalThis.globalEnvOption.apiKey,
127
- }),
128
- ]);
129
- return [ethRequest, usdcRequest, usdtRequest, daiRequest];
130
- };
131
- //# sourceMappingURL=ChainUtils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ChainUtils.js","sourceRoot":"","sources":["../../../src/utils/ChainUtils.ts"],"names":[],"mappings":"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"}
@@ -1,28 +0,0 @@
1
- import { dydxChain, FUNKIT_CONNECT_CHECKOUT_NATIVE_CURRENCY_ADDRESS, FUNKIT_CONNECT_SUPPORTED_CHAINS_INFO, } from '../common';
2
- import { Chain, Token } from '../data';
3
- import { randomBytes } from './ChainUtils';
4
- export async function getDecimals({ chainId, tokenAddress, }) {
5
- // If tokenAddress is a known native currency address, check against funkitconnect supported chains mapping
6
- if (tokenAddress === FUNKIT_CONNECT_CHECKOUT_NATIVE_CURRENCY_ADDRESS) {
7
- // Assumption here is the chainId is some supported chainId in FUNKIT_CONNECT_SUPPORTED_CHAINS_INFO already
8
- // TODO: Validation / error handling
9
- return FUNKIT_CONNECT_SUPPORTED_CHAINS_INFO[chainId].nativeCurrency.decimals;
10
- }
11
- // Dydx handling - we only support noble usdc
12
- if (chainId === dydxChain.id.toString() &&
13
- FUNKIT_CONNECT_SUPPORTED_CHAINS_INFO[chainId]
14
- .checkoutAssetWhitelist?.[0] === tokenAddress.toLowerCase()) {
15
- return 6;
16
- }
17
- // Find ERC-20 tokenAddress
18
- const chain = await Chain.getChain({ chainIdentifier: chainId });
19
- const token = new Token(tokenAddress, chain);
20
- return Number(await token.getDecimals());
21
- }
22
- export function generateRandomCheckoutSalt() {
23
- return BigInt(randomBytes(32));
24
- }
25
- export function roundToNearestBottomTenth(n) {
26
- return Math.floor(n / 10) * 10;
27
- }
28
- //# sourceMappingURL=CheckoutUtils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"CheckoutUtils.js","sourceRoot":"","sources":["../../../src/utils/CheckoutUtils.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,SAAS,EACT,+CAA+C,EAC/C,oCAAoC,GACrC,MAAM,WAAW,CAAA;AAClB,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAE1C,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,EAChC,OAAO,EACP,YAAY,GAIb;IACC,2GAA2G;IAC3G,IAAI,YAAY,KAAK,+CAA+C,EAAE,CAAC;QACrE,2GAA2G;QAC3G,oCAAoC;QACpC,OAAO,oCAAoC,CAAC,OAAO,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAA;IAC9E,CAAC;IAED,6CAA6C;IAC7C,IACE,OAAO,KAAK,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE;QACnC,oCAAoC,CAAC,OAAO,CAAC;aAC1C,sBAAsB,EAAE,CAAC,CAAC,CAAC,KAAK,YAAY,CAAC,WAAW,EAAE,EAC7D,CAAC;QACD,OAAO,CAAC,CAAA;IACV,CAAC;IAED,2BAA2B;IAC3B,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,QAAQ,CAAC,EAAE,eAAe,EAAE,OAAO,EAAE,CAAC,CAAA;IAChE,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,CAAA;IAC5C,OAAO,MAAM,CAAC,MAAM,KAAK,CAAC,WAAW,EAAE,CAAC,CAAA;AAC1C,CAAC;AAED,MAAM,UAAU,0BAA0B;IACxC,OAAO,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAA;AAChC,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,CAAS;IACjD,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAA;AAChC,CAAC"}
@@ -1,26 +0,0 @@
1
- import { concat, decodeAbiParameters, keccak256 } from 'viem';
2
- import { WALLET_CONTRACT_INTERFACE } from '../common';
3
- export async function getOnChainGroupData(groupId, chain, walletAddr) {
4
- const userAuthContractAddr = await chain.getAddress('userAuthAddress');
5
- const groupKey = keccak256(concat([groupId, userAuthContractAddr]));
6
- const storedGroupData = await WALLET_CONTRACT_INTERFACE.readFromChain(walletAddr, 'getState', [groupKey], chain);
7
- if (storedGroupData === '0x') {
8
- return {
9
- memberIds: [],
10
- threshold: 0,
11
- };
12
- }
13
- else {
14
- const [storedGroup] = decodeAbiParameters([
15
- {
16
- type: 'tuple',
17
- components: [{ type: 'bytes32[]' }, { type: 'uint256' }],
18
- },
19
- ], storedGroupData);
20
- return {
21
- memberIds: storedGroup[0],
22
- threshold: Number(storedGroup[1]),
23
- };
24
- }
25
- }
26
- //# sourceMappingURL=GroupUtils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"GroupUtils.js","sourceRoot":"","sources":["../../../src/utils/GroupUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,MAAM,EAAE,mBAAmB,EAAO,SAAS,EAAE,MAAM,MAAM,CAAA;AAE3E,OAAO,EAAE,yBAAyB,EAAE,MAAM,WAAW,CAAA;AAIrD,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,OAAY,EACZ,KAAY,EACZ,UAAmB;IAEnB,MAAM,oBAAoB,GAAG,MAAM,KAAK,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAA;IACtE,MAAM,QAAQ,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,oBAAoB,CAAC,CAAC,CAAC,CAAA;IACnE,MAAM,eAAe,GAAQ,MAAM,yBAAyB,CAAC,aAAa,CACxE,UAAU,EACV,UAAU,EACV,CAAC,QAAQ,CAAC,EACV,KAAK,CACN,CAAA;IACD,IAAI,eAAe,KAAK,IAAI,EAAE,CAAC;QAC7B,OAAO;YACL,SAAS,EAAE,EAAE;YACb,SAAS,EAAE,CAAC;SACb,CAAA;IACH,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,WAAW,CAAC,GAAG,mBAAmB,CACvC;YACE;gBACE,IAAI,EAAE,OAAO;gBACb,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;aACzD;SACF,EACD,eAAe,CAChB,CAAA;QACD,OAAO;YACL,SAAS,EAAE,WAAW,CAAC,CAAC,CAAU;YAClC,SAAS,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;SAClC,CAAA;IACH,CAAC;AACH,CAAC"}
@@ -1,86 +0,0 @@
1
- import { concat, keccak256, padHex } from 'viem';
2
- // Copied from contracts repo
3
- export const createMerkleHashes = (list) => {
4
- list = list.map((data) => keccak256(data));
5
- const treeSize = 2 ** Math.ceil(Math.log2(list.length)) * 2;
6
- const buffer = new Array(treeSize).fill('0x');
7
- arrayCopy(buffer, list, treeSize / 2);
8
- for (let i = treeSize / 2 - list.length; i > 0; i--) {
9
- buffer[buffer.length - i] = list[list.length - 1];
10
- }
11
- for (let i = 1; i < buffer.length; i++) {
12
- buffer[i] = getHash(buffer, i);
13
- }
14
- return buffer;
15
- };
16
- export const getLeft = (i) => i * 2;
17
- export const getRight = (i) => i * 2 + 1;
18
- export const getParent = (index) => Math.floor(index / 2);
19
- export const getSibling = (index) => {
20
- const parent = getParent(index);
21
- if (index % 2 === 0) {
22
- return getRight(parent);
23
- }
24
- return getLeft(parent);
25
- };
26
- export const getHash = (list, i) => {
27
- if (list[i] === '0x') {
28
- if (getRight(i) < list.length) {
29
- const left = getHash(list, getLeft(i));
30
- const right = getHash(list, getRight(i));
31
- return getHashPair(left, right);
32
- }
33
- throw new Error('Invalid tree');
34
- }
35
- return list[i];
36
- };
37
- export const getHashPair = (left, right) => {
38
- if (BigInt(left) < BigInt(right)) {
39
- return keccak256(concat([left, right]));
40
- }
41
- return keccak256(concat([right, left]));
42
- };
43
- export const arrayCopy = (arr, copy, start) => {
44
- for (let i = 0; i < copy.length; i++) {
45
- arr[i + start] = copy[i];
46
- }
47
- };
48
- export const getPathForItem = (list, item) => {
49
- let index = list.indexOf(keccak256(item));
50
- if (index === -1) {
51
- throw new Error('Item not found');
52
- }
53
- const path = [];
54
- while (index > 1) {
55
- const sibling = getSibling(index);
56
- path.push(list[sibling]);
57
- index = getParent(index);
58
- }
59
- return path;
60
- };
61
- export const verifyPath = (root, item, path) => {
62
- let hash = keccak256(item);
63
- for (let i = 0; i < path.length; i++) {
64
- hash = getHashPair(hash, path[i]);
65
- }
66
- return hash === root;
67
- };
68
- export class MerkleTree {
69
- tree;
70
- constructor(list) {
71
- this.tree = createMerkleHashes(list);
72
- }
73
- getPathForItem(item) {
74
- return getPathForItem(this.tree, item);
75
- }
76
- verifyPath(item, path) {
77
- return verifyPath(this.getRootHash(), item, path);
78
- }
79
- getRootHash() {
80
- if (this.tree.length === 0) {
81
- return padHex('0x1', { size: 32 });
82
- }
83
- return this.tree[1];
84
- }
85
- }
86
- //# sourceMappingURL=MerkleUtils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"MerkleUtils.js","sourceRoot":"","sources":["../../../src/utils/MerkleUtils.ts"],"names":[],"mappings":"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"}
@@ -1,17 +0,0 @@
1
- import { PaymasterType } from '../sponsors/types';
2
- export const getPaymasterType = (txOptions) => {
3
- if (txOptions.gasSponsor?.useCheckoutSponsor) {
4
- return PaymasterType.CheckoutSponsor;
5
- }
6
- else if (txOptions.gasSponsor?.sponsorAddress &&
7
- txOptions.gasSponsor?.token) {
8
- return PaymasterType.TokenSponsor;
9
- }
10
- else if (txOptions.gasSponsor?.sponsorAddress) {
11
- return PaymasterType.GaslessSponsor;
12
- }
13
- else {
14
- throw Error('Invalid paymaster type');
15
- }
16
- };
17
- //# sourceMappingURL=PaymasterUtils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"PaymasterUtils.js","sourceRoot":"","sources":["../../../src/utils/PaymasterUtils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAEjD,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,SAAoB,EAAE,EAAE;IACvD,IAAI,SAAS,CAAC,UAAU,EAAE,kBAAkB,EAAE,CAAC;QAC7C,OAAO,aAAa,CAAC,eAAe,CAAA;IACtC,CAAC;SAAM,IACL,SAAS,CAAC,UAAU,EAAE,cAAc;QACpC,SAAS,CAAC,UAAU,EAAE,KAAK,EAC3B,CAAC;QACD,OAAO,aAAa,CAAC,YAAY,CAAA;IACnC,CAAC;SAAM,IAAI,SAAS,CAAC,UAAU,EAAE,cAAc,EAAE,CAAC;QAChD,OAAO,aAAa,CAAC,cAAc,CAAA;IACrC,CAAC;SAAM,CAAC;QACN,MAAM,KAAK,CAAC,wBAAwB,CAAC,CAAA;IACvC,CAAC;AACH,CAAC,CAAA"}
@@ -1,193 +0,0 @@
1
- import { JSBI } from '@uniswap/sdk';
2
- import { CurrencyAmount, Percent, Token, TradeType, } from '@uniswap/sdk-core';
3
- import { computePoolAddress, FeeAmount, Pool, Route, SwapQuoter, SwapRouter, Trade, } from '@uniswap/v3-sdk';
4
- import { decodeAbiParameters, parseUnits, } from 'viem';
5
- import { getTokenInfo } from '../apis';
6
- import { ERC20_CONTRACT_INTERFACE, POOL_CONTRACT_INTERFACE, UNISWAPV2ROUTER02_INTERFACE, } from '../common';
7
- export function fromReadableAmount(amount, decimals) {
8
- return parseUnits(amount.toFixed(20), decimals);
9
- }
10
- class SwapToken {
11
- client;
12
- version;
13
- quoterContractAddr;
14
- poolFactoryContractAddr;
15
- v2router;
16
- v2Factory;
17
- constructor(client, version, quoterContractAddr, poolFactoryContractAddr, v2router, v2Factory) {
18
- this.client = client;
19
- this.version = version;
20
- if (version === 3) {
21
- if (quoterContractAddr !== undefined &&
22
- poolFactoryContractAddr !== undefined) {
23
- this.quoterContractAddr = quoterContractAddr;
24
- this.poolFactoryContractAddr = poolFactoryContractAddr;
25
- }
26
- else {
27
- throw new Error('quoterContractAddr and poolFactoryContractAddr must be provided');
28
- }
29
- }
30
- else if (version === 2) {
31
- if (v2router !== undefined && v2Factory !== undefined) {
32
- this.v2Factory = v2Factory;
33
- this.v2router = v2router;
34
- }
35
- else {
36
- throw new Error('v2quoter and v2Factory must be provided');
37
- }
38
- }
39
- else {
40
- throw new Error('Invalid version');
41
- }
42
- }
43
- async getOutputQuote(route, token0, amountIn) {
44
- const { calldata } = await SwapQuoter.quoteCallParameters(route, CurrencyAmount.fromRawAmount(token0, fromReadableAmount(amountIn, token0.decimals).toString()), TradeType.EXACT_INPUT, {
45
- useQuoterV2: true,
46
- });
47
- const quoteCallReturnData = await this.client.call({
48
- to: this.quoterContractAddr,
49
- data: calldata,
50
- });
51
- if (!quoteCallReturnData.data) {
52
- throw new Error('No data returned from quote call');
53
- }
54
- return decodeAbiParameters([{ name: 'return', type: 'uint256' }], quoteCallReturnData.data)[0];
55
- }
56
- async getPoolInfo(tokenIn, tokenOut, poolFee) {
57
- const currentPoolAddress = computePoolAddress({
58
- factoryAddress: this.poolFactoryContractAddr,
59
- tokenA: tokenIn,
60
- tokenB: tokenOut,
61
- fee: poolFee,
62
- });
63
- const [token0, token1, fee, tickSpacing, liquidity, slot0] = await POOL_CONTRACT_INTERFACE.batchReadFromChain(currentPoolAddress, this.client, [
64
- {
65
- functionName: 'token0',
66
- },
67
- {
68
- functionName: 'token1',
69
- },
70
- {
71
- functionName: 'fee',
72
- },
73
- {
74
- functionName: 'tickSpacing',
75
- },
76
- {
77
- functionName: 'liquidity',
78
- },
79
- {
80
- functionName: 'slot0',
81
- },
82
- ]);
83
- return {
84
- token0,
85
- token1,
86
- fee,
87
- tickSpacing,
88
- liquidity,
89
- sqrtPriceX96: slot0[0],
90
- tick: slot0[1],
91
- };
92
- }
93
- async getTokenDecimals(tokenAddr) {
94
- return await ERC20_CONTRACT_INTERFACE.readFromChain(tokenAddr, 'decimals', [], this.client);
95
- }
96
- async createTrade(amountIn, tokenIn, tokenOut, poolFee) {
97
- const poolInfo = await this.getPoolInfo(tokenIn, tokenOut, poolFee);
98
- const pool = new Pool(tokenIn, tokenOut, poolFee, poolInfo.sqrtPriceX96.toString(), poolInfo.liquidity.toString(), poolInfo.tick);
99
- const swapRoute = new Route([pool], tokenIn, tokenOut);
100
- const amountOut = await this.getOutputQuote(swapRoute, tokenIn, amountIn);
101
- const tokenInAmount = fromReadableAmount(amountIn, tokenIn.decimals).toString();
102
- const uncheckedTrade = Trade.createUncheckedTrade({
103
- route: swapRoute,
104
- inputAmount: CurrencyAmount.fromRawAmount(tokenIn, tokenInAmount),
105
- outputAmount: CurrencyAmount.fromRawAmount(tokenOut, JSBI.BigInt(amountOut.toString())),
106
- tradeType: TradeType.EXACT_INPUT,
107
- });
108
- return { uncheckedTrade, tokenInAmount };
109
- }
110
- async createTradeV2(amountIn, tokenIn, tokenOut, poolFee) {
111
- const poolInfo = await this.getPoolInfo(tokenIn, tokenOut, poolFee);
112
- const pool = new Pool(tokenIn, tokenOut, poolFee, poolInfo.sqrtPriceX96.toString(), poolInfo.liquidity.toString(), poolInfo.tick);
113
- const swapRoute = new Route([pool], tokenIn, tokenOut);
114
- const amountOut = await this.getOutputQuote(swapRoute, tokenIn, amountIn);
115
- const tokenInAmount = fromReadableAmount(amountIn, tokenIn.decimals).toString();
116
- const uncheckedTrade = Trade.createUncheckedTrade({
117
- route: swapRoute,
118
- inputAmount: CurrencyAmount.fromRawAmount(tokenIn, tokenInAmount),
119
- outputAmount: CurrencyAmount.fromRawAmount(tokenOut, JSBI.BigInt(amountOut.toString())),
120
- tradeType: TradeType.EXACT_INPUT,
121
- });
122
- return { uncheckedTrade, tokenInAmount };
123
- }
124
- executeTrade(trade, routerAddr, walletAddress, slippage = 5000, percentDec = 10000) {
125
- const options = {
126
- slippageTolerance: new Percent(slippage, percentDec), // 50 bips, or 0.50%
127
- deadline: Date.now() + 1800, // 20 minutes from the current Unix time
128
- recipient: walletAddress,
129
- };
130
- const { calldata, value } = SwapRouter.swapCallParameters(trade, options);
131
- return {
132
- data: calldata,
133
- to: routerAddr,
134
- value,
135
- };
136
- }
137
- }
138
- const fees = {
139
- lowest: FeeAmount.LOWEST,
140
- low: FeeAmount.LOW,
141
- medium: FeeAmount.MEDIUM,
142
- high: FeeAmount.HIGH,
143
- };
144
- export async function swapExec(client, uniswapAddrs, swapParams, chainId) {
145
- const { univ3quoter, univ3factory, univ3router } = uniswapAddrs;
146
- const { tokenInAddress, tokenOutAddress, amountIn, recipient, percentDecimal, slippage, poolFee, } = swapParams;
147
- const _poolFee = fees[poolFee];
148
- const swapper = new SwapToken(client, 3, univ3quoter, univ3factory);
149
- const tokenInDecimal = await swapper.getTokenDecimals(tokenInAddress);
150
- const tokenOutDecimal = await swapper.getTokenDecimals(tokenOutAddress);
151
- const tokenIn = new Token(chainId, tokenInAddress, tokenInDecimal);
152
- const tokenOut = new Token(chainId, tokenOutAddress, tokenOutDecimal);
153
- const { uncheckedTrade, tokenInAmount } = await swapper.createTrade(amountIn, tokenIn, tokenOut, _poolFee);
154
- const data = swapper.executeTrade(uncheckedTrade, univ3router, recipient, slippage, percentDecimal);
155
- return { ...data, amount: tokenInAmount };
156
- }
157
- export async function swapExecV2(client, uniswapAddrs, swapParams, chainId) {
158
- const { router, factory } = uniswapAddrs;
159
- const { tokenInAddress, tokenOutAddress, amountIn, recipient } = swapParams;
160
- const swapper = new SwapToken(client, 2, undefined, undefined, router, factory);
161
- const tokenInDecimal = await swapper.getTokenDecimals(tokenInAddress);
162
- const wethAddr = await getTokenInfo('weth', chainId.toString());
163
- let swapTxData;
164
- if (wethAddr === tokenOutAddress) {
165
- swapTxData = UNISWAPV2ROUTER02_INTERFACE.encodeTransactionParams(router, 'swapExactTokensForETH', [
166
- fromReadableAmount(amountIn, tokenInDecimal).toString(),
167
- 0,
168
- [tokenInAddress, tokenOutAddress],
169
- recipient,
170
- Date.now() + 180000, // Long enough to rarely fail
171
- ]);
172
- return {
173
- data: swapTxData.data,
174
- to: swapTxData.to,
175
- amount: fromReadableAmount(amountIn, tokenInDecimal).toString(),
176
- };
177
- }
178
- else {
179
- swapTxData = UNISWAPV2ROUTER02_INTERFACE.encodeTransactionParams(router, 'swapExactTokensForTokens', [
180
- fromReadableAmount(amountIn, tokenInDecimal).toString(),
181
- 0,
182
- [tokenInAddress, tokenOutAddress],
183
- recipient,
184
- Date.now() + 180000, // Long enough to rarely fail
185
- ]);
186
- return {
187
- data: swapTxData.data,
188
- to: swapTxData.to,
189
- amount: fromReadableAmount(amountIn, tokenInDecimal).toString(),
190
- };
191
- }
192
- }
193
- //# sourceMappingURL=SwapUtils.js.map