@lit-protocol/vincent-policy-send-counter 0.0.7-mma → 0.0.11-mma
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/CHANGELOG.md +14 -0
- package/CONTRIBUTING.md +6 -6
- package/README.md +1 -1
- package/dist/CHANGELOG.md +14 -0
- package/dist/CONTRIBUTING.md +6 -6
- package/dist/README.md +1 -1
- package/dist/package.json +2 -2
- package/dist/src/generated/lit-action.js +2 -2
- package/dist/src/generated/vincent-bundled-policy.d.ts +183 -144
- package/dist/src/generated/vincent-bundled-policy.d.ts.map +1 -1
- package/dist/src/generated/vincent-policy-metadata.json +1 -1
- package/dist/src/lib/abi/counterSignatures.d.ts +82 -0
- package/dist/src/lib/abi/counterSignatures.d.ts.map +1 -0
- package/dist/src/lib/abi/counterSignatures.js +100 -0
- package/dist/src/lib/abi/counterSignatures.js.map +1 -0
- package/dist/src/lib/helpers/index.d.ts +26 -0
- package/dist/src/lib/helpers/index.d.ts.map +1 -0
- package/dist/src/lib/helpers/index.js +107 -0
- package/dist/src/lib/helpers/index.js.map +1 -0
- package/dist/src/lib/schemas.d.ts +115 -64
- package/dist/src/lib/schemas.d.ts.map +1 -1
- package/dist/src/lib/schemas.js +75 -36
- package/dist/src/lib/schemas.js.map +1 -1
- package/dist/src/lib/vincent-policy.d.ts +183 -144
- package/dist/src/lib/vincent-policy.d.ts.map +1 -1
- package/dist/src/lib/vincent-policy.js +154 -73
- package/dist/src/lib/vincent-policy.js.map +1 -1
- package/package.json +4 -4
- package/dist/src/lib/policy-helpers/calculate-usd-value.d.ts +0 -7
- package/dist/src/lib/policy-helpers/calculate-usd-value.d.ts.map +0 -1
- package/dist/src/lib/policy-helpers/calculate-usd-value.js +0 -22
- package/dist/src/lib/policy-helpers/calculate-usd-value.js.map +0 -1
- package/dist/src/lib/policy-helpers/check-spending-limit.d.ts +0 -16
- package/dist/src/lib/policy-helpers/check-spending-limit.d.ts.map +0 -1
- package/dist/src/lib/policy-helpers/check-spending-limit.js +0 -29
- package/dist/src/lib/policy-helpers/check-spending-limit.js.map +0 -1
- package/dist/src/lib/policy-helpers/get-eth-usd-price.d.ts +0 -6
- package/dist/src/lib/policy-helpers/get-eth-usd-price.d.ts.map +0 -1
- package/dist/src/lib/policy-helpers/get-eth-usd-price.js +0 -22
- package/dist/src/lib/policy-helpers/get-eth-usd-price.js.map +0 -1
- package/dist/src/lib/policy-helpers/get-token-amount-in-usd.d.ts +0 -10
- package/dist/src/lib/policy-helpers/get-token-amount-in-usd.d.ts.map +0 -1
- package/dist/src/lib/policy-helpers/get-token-amount-in-usd.js +0 -68
- package/dist/src/lib/policy-helpers/get-token-amount-in-usd.js.map +0 -1
- package/dist/src/lib/policy-helpers/get-uniswap-quote.d.ts +0 -15
- package/dist/src/lib/policy-helpers/get-uniswap-quote.d.ts.map +0 -1
- package/dist/src/lib/policy-helpers/get-uniswap-quote.js +0 -114
- package/dist/src/lib/policy-helpers/get-uniswap-quote.js.map +0 -1
- package/dist/src/lib/policy-helpers/index.d.ts +0 -7
- package/dist/src/lib/policy-helpers/index.d.ts.map +0 -1
- package/dist/src/lib/policy-helpers/index.js +0 -10
- package/dist/src/lib/policy-helpers/index.js.map +0 -1
- package/dist/src/lib/policy-helpers/send-spend-tx.d.ts +0 -9
- package/dist/src/lib/policy-helpers/send-spend-tx.d.ts.map +0 -1
- package/dist/src/lib/policy-helpers/send-spend-tx.js +0 -144
- package/dist/src/lib/policy-helpers/send-spend-tx.js.map +0 -1
- package/dist/src/lib/policy-helpers/sign-tx.d.ts +0 -3
- package/dist/src/lib/policy-helpers/sign-tx.d.ts.map +0 -1
- package/dist/src/lib/policy-helpers/sign-tx.js +0 -28
- package/dist/src/lib/policy-helpers/sign-tx.js.map +0 -1
- package/dist/src/lib/policy-helpers/spending-limit-contract.d.ts +0 -4
- package/dist/src/lib/policy-helpers/spending-limit-contract.d.ts.map +0 -1
- package/dist/src/lib/policy-helpers/spending-limit-contract.js +0 -22
- package/dist/src/lib/policy-helpers/spending-limit-contract.js.map +0 -1
|
@@ -2,11 +2,12 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.vincentPolicy = void 0;
|
|
4
4
|
const vincent_ability_sdk_1 = require("@lit-protocol/vincent-ability-sdk");
|
|
5
|
-
const
|
|
6
|
-
const
|
|
5
|
+
const vincent_scaffold_sdk_1 = require("@lit-protocol/vincent-scaffold-sdk");
|
|
6
|
+
const index_1 = require("./helpers/index");
|
|
7
7
|
const schemas_1 = require("./schemas");
|
|
8
|
+
const counterSignatures_1 = require("./abi/counterSignatures");
|
|
8
9
|
exports.vincentPolicy = (0, vincent_ability_sdk_1.createVincentPolicy)({
|
|
9
|
-
packageName: '@lit-protocol/vincent-policy-
|
|
10
|
+
packageName: '@lit-protocol/vincent-policy-send-counter-limit',
|
|
10
11
|
abilityParamsSchema: schemas_1.abilityParamsSchema,
|
|
11
12
|
userParamsSchema: schemas_1.userParamsSchema,
|
|
12
13
|
commitParamsSchema: schemas_1.commitParamsSchema,
|
|
@@ -17,55 +18,81 @@ exports.vincentPolicy = (0, vincent_ability_sdk_1.createVincentPolicy)({
|
|
|
17
18
|
commitAllowResultSchema: schemas_1.commitAllowResultSchema,
|
|
18
19
|
commitDenyResultSchema: schemas_1.commitDenyResultSchema,
|
|
19
20
|
precheck: async ({ abilityParams, userParams }, { allow, deny, appId, delegation: { delegatorPkpInfo } }) => {
|
|
20
|
-
console.log('
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
ethRpcUrl,
|
|
26
|
-
rpcUrlForUniswap,
|
|
27
|
-
chainIdForUniswap,
|
|
28
|
-
tokenAddress: tokenAddress,
|
|
29
|
-
tokenDecimals,
|
|
30
|
-
buyAmount,
|
|
31
|
-
maxDailySpendingLimitInUsdCents,
|
|
32
|
-
pkpEthAddress: ethAddress,
|
|
21
|
+
console.log('[@lit-protocol/vincent-policy-send-counter-limit/precheck] 🔍 POLICY PRECHECK CALLED');
|
|
22
|
+
console.log('[@lit-protocol/vincent-policy-send-counter-limit/precheck] 🔍 Policy precheck params:', {
|
|
23
|
+
abilityParams,
|
|
24
|
+
userParams,
|
|
25
|
+
ethAddress: delegatorPkpInfo.ethAddress,
|
|
33
26
|
appId,
|
|
34
27
|
});
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
28
|
+
// Only use what we actually need - no defaults in policy logic
|
|
29
|
+
const { maxSends, timeWindowSeconds } = userParams;
|
|
30
|
+
const { ethAddress } = delegatorPkpInfo;
|
|
31
|
+
try {
|
|
32
|
+
// Convert BigInt to number for helper function
|
|
33
|
+
const maxSendsNum = Number(maxSends);
|
|
34
|
+
const timeWindowSecondsNum = Number(timeWindowSeconds);
|
|
35
|
+
// Check current send limit for the user
|
|
36
|
+
const limitCheck = await (0, index_1.checkSendLimit)(ethAddress, maxSendsNum, timeWindowSecondsNum);
|
|
37
|
+
if (!limitCheck.allowed) {
|
|
38
|
+
const denyResult = {
|
|
39
|
+
reason: `Send limit exceeded. Maximum ${Number(maxSends)} sends per ${Number(timeWindowSeconds)} seconds. Try again in ${limitCheck.secondsUntilReset} seconds.`,
|
|
40
|
+
currentCount: limitCheck.currentCount,
|
|
41
|
+
maxSends: Number(maxSends),
|
|
42
|
+
secondsUntilReset: limitCheck.secondsUntilReset || 0,
|
|
43
|
+
};
|
|
44
|
+
console.log('[@lit-protocol/vincent-policy-send-counter-limit/precheck] 🚫 POLICY PRECHECK DENYING REQUEST:');
|
|
45
|
+
console.log('[@lit-protocol/vincent-policy-send-counter-limit/precheck] 🚫 Deny result:', JSON.stringify(denyResult, null, 2));
|
|
46
|
+
console.log('[@lit-protocol/vincent-policy-send-counter-limit/precheck] 🚫 Current count:', limitCheck.currentCount);
|
|
47
|
+
console.log('[@lit-protocol/vincent-policy-send-counter-limit/precheck] 🚫 Max sends:', Number(maxSends));
|
|
48
|
+
console.log('[@lit-protocol/vincent-policy-send-counter-limit/precheck] 🚫 Limit check result:', JSON.stringify(limitCheck, null, 2));
|
|
49
|
+
console.log('[@lit-protocol/vincent-policy-send-counter-limit/precheck] 🚫 About to call deny() function...');
|
|
50
|
+
const denyResponse = deny(denyResult);
|
|
51
|
+
console.log('[@lit-protocol/vincent-policy-send-counter-limit/precheck] 🚫 POLICY PRECHECK DENY RESPONSE:', JSON.stringify(denyResponse, null, 2));
|
|
52
|
+
return denyResponse;
|
|
53
|
+
}
|
|
54
|
+
const allowResult = {
|
|
55
|
+
currentCount: limitCheck.currentCount,
|
|
56
|
+
maxSends: Number(maxSends),
|
|
57
|
+
remainingSends: limitCheck.remainingSends,
|
|
58
|
+
timeWindowSeconds: Number(timeWindowSeconds),
|
|
59
|
+
};
|
|
60
|
+
console.log('[SendLimitPolicy/precheck] ✅ POLICY PRECHECK ALLOWING REQUEST:');
|
|
61
|
+
console.log('[SendLimitPolicy/precheck] ✅ Allow result:', JSON.stringify(allowResult, null, 2));
|
|
62
|
+
console.log('[SendLimitPolicy/precheck] ✅ Current count:', limitCheck.currentCount);
|
|
63
|
+
console.log('[SendLimitPolicy/precheck] ✅ Max sends:', Number(maxSends));
|
|
64
|
+
console.log('[SendLimitPolicy/precheck] ✅ Remaining sends:', limitCheck.remainingSends);
|
|
65
|
+
const allowResponse = allow(allowResult);
|
|
66
|
+
console.log('[SendLimitPolicy/precheck] ✅ POLICY PRECHECK ALLOW RESPONSE:', JSON.stringify(allowResponse, null, 2));
|
|
67
|
+
return allowResponse;
|
|
68
|
+
}
|
|
69
|
+
catch (error) {
|
|
70
|
+
console.error('[SendLimitPolicy/precheck] Error in precheck:', error);
|
|
71
|
+
return deny({
|
|
72
|
+
reason: `Policy error: ${error instanceof Error ? error.message : 'Unknown error'}`,
|
|
73
|
+
currentCount: 0,
|
|
74
|
+
maxSends: Number(maxSends),
|
|
75
|
+
secondsUntilReset: 0,
|
|
44
76
|
});
|
|
77
|
+
}
|
|
45
78
|
},
|
|
46
79
|
evaluate: async ({ abilityParams, userParams }, { allow, deny, appId, delegation: { delegatorPkpInfo } }) => {
|
|
80
|
+
console.log('[@lit-protocol/vincent-policy-send-counter-limit/evaluate] Evaluating send limit policy', {
|
|
81
|
+
abilityParams,
|
|
82
|
+
userParams,
|
|
83
|
+
});
|
|
84
|
+
// Only use what we actually need - no defaults in policy logic
|
|
85
|
+
const { maxSends, timeWindowSeconds } = userParams;
|
|
47
86
|
const { ethAddress } = delegatorPkpInfo;
|
|
48
|
-
|
|
49
|
-
const { buyAmount, ethRpcUrl, rpcUrlForUniswap, chainIdForUniswap, tokenAddress, tokenDecimals, } = abilityParams;
|
|
50
|
-
const { maxDailySpendingLimitInUsdCents } = userParams;
|
|
51
|
-
const checkBuyAmountResponse = await Lit.Actions.runOnce({ waitForResponse: true, name: 'checkBuyAmount' }, async () => {
|
|
87
|
+
const checkSendResponse = await Lit.Actions.runOnce({ waitForResponse: true, name: 'checkSendLimit' }, async () => {
|
|
52
88
|
try {
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
tokenAddress: tokenAddress,
|
|
58
|
-
tokenDecimals,
|
|
59
|
-
buyAmount,
|
|
60
|
-
maxDailySpendingLimitInUsdCents,
|
|
61
|
-
pkpEthAddress: ethAddress,
|
|
62
|
-
appId,
|
|
63
|
-
});
|
|
89
|
+
// Convert BigInt to number for helper function
|
|
90
|
+
const maxSendsNum = Number(maxSends);
|
|
91
|
+
const timeWindowSecondsNum = Number(timeWindowSeconds);
|
|
92
|
+
const limitCheck = await (0, index_1.checkSendLimit)(ethAddress, maxSendsNum, timeWindowSecondsNum);
|
|
64
93
|
return JSON.stringify({
|
|
65
94
|
status: 'success',
|
|
66
|
-
|
|
67
|
-
buyAmountInUsd: buyAmountInUsd.toString(),
|
|
68
|
-
adjustedMaxDailySpendingLimit: adjustedMaxDailySpendingLimit.toString(),
|
|
95
|
+
...limitCheck,
|
|
69
96
|
});
|
|
70
97
|
}
|
|
71
98
|
catch (error) {
|
|
@@ -75,43 +102,97 @@ exports.vincentPolicy = (0, vincent_ability_sdk_1.createVincentPolicy)({
|
|
|
75
102
|
});
|
|
76
103
|
}
|
|
77
104
|
});
|
|
78
|
-
const
|
|
79
|
-
if (
|
|
105
|
+
const parsedResponse = JSON.parse(checkSendResponse);
|
|
106
|
+
if (parsedResponse.status === 'error') {
|
|
80
107
|
return deny({
|
|
81
|
-
reason: `Error checking
|
|
108
|
+
reason: `Error checking send limit: ${parsedResponse.error} (evaluate)`,
|
|
109
|
+
currentCount: 0,
|
|
110
|
+
maxSends: Number(maxSends),
|
|
111
|
+
secondsUntilReset: 0,
|
|
112
|
+
timeWindowSeconds: Number(timeWindowSeconds),
|
|
82
113
|
});
|
|
83
114
|
}
|
|
84
|
-
const {
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
maxSpendingLimitInUsd: Number(adjustedMaxDailySpendingLimit),
|
|
93
|
-
buyAmountInUsd: Number(buyAmountInUsd),
|
|
94
|
-
})
|
|
95
|
-
: deny({
|
|
96
|
-
reason: 'Attempted buy amount exceeds daily limit',
|
|
97
|
-
maxSpendingLimitInUsd: Number(adjustedMaxDailySpendingLimit),
|
|
98
|
-
buyAmountInUsd: Number(buyAmountInUsd),
|
|
115
|
+
const { allowed, currentCount, remainingSends, secondsUntilReset } = parsedResponse;
|
|
116
|
+
if (!allowed) {
|
|
117
|
+
return deny({
|
|
118
|
+
reason: `Send limit exceeded during evaluation. Maximum ${Number(maxSends)} sends per ${Number(timeWindowSeconds)} seconds. Try again in ${secondsUntilReset} seconds.`,
|
|
119
|
+
currentCount,
|
|
120
|
+
maxSends: Number(maxSends),
|
|
121
|
+
secondsUntilReset: secondsUntilReset || 0,
|
|
122
|
+
timeWindowSeconds: Number(timeWindowSeconds),
|
|
99
123
|
});
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
appId,
|
|
106
|
-
amountSpentUsd,
|
|
107
|
-
maxSpendingLimitInUsd,
|
|
108
|
-
spendingLimitDuration: 86400, // number of seconds in a day
|
|
109
|
-
pkpEthAddress: ethAddress,
|
|
110
|
-
pkpPubKey: publicKey,
|
|
124
|
+
}
|
|
125
|
+
console.log('[@lit-protocol/vincent-policy-send-counter-limit/evaluate] Evaluated send limit policy', {
|
|
126
|
+
currentCount,
|
|
127
|
+
maxSends,
|
|
128
|
+
remainingSends,
|
|
111
129
|
});
|
|
112
130
|
return allow({
|
|
113
|
-
|
|
131
|
+
currentCount,
|
|
132
|
+
maxSends: Number(maxSends),
|
|
133
|
+
remainingSends,
|
|
134
|
+
timeWindowSeconds: Number(timeWindowSeconds),
|
|
114
135
|
});
|
|
115
136
|
},
|
|
137
|
+
commit: async ({ currentCount, maxSends, timeWindowSeconds }, { allow, appId, delegation: { delegatorPkpInfo } }) => {
|
|
138
|
+
const { ethAddress } = delegatorPkpInfo;
|
|
139
|
+
console.log('[@lit-protocol/vincent-policy-send-counter-limit/commit] 🚀 IM COMMITING!');
|
|
140
|
+
// Check if we need to reset the counter first
|
|
141
|
+
const checkResponse = await (0, index_1.checkSendLimit)(ethAddress, maxSends, Number(timeWindowSeconds));
|
|
142
|
+
if (checkResponse.shouldReset) {
|
|
143
|
+
console.log(`[@lit-protocol/vincent-policy-send-counter-limit/commit] Resetting counter for ${ethAddress} due to time window expiration`);
|
|
144
|
+
try {
|
|
145
|
+
await (0, index_1.resetSendCounter)(ethAddress, delegatorPkpInfo.publicKey);
|
|
146
|
+
console.log(`[@lit-protocol/vincent-policy-send-counter-limit/commit] Counter reset successful for ${ethAddress}`);
|
|
147
|
+
}
|
|
148
|
+
catch (error) {
|
|
149
|
+
console.warn(`Counter reset failed for ${ethAddress}:`, error);
|
|
150
|
+
// Continue anyway, the counter will still work
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
try {
|
|
154
|
+
// Record the send to the smart contract
|
|
155
|
+
console.log(`[@lit-protocol/vincent-policy-send-counter-limit/commit] Recording send to contract for ${ethAddress} (appId: ${appId})`);
|
|
156
|
+
// Execute the contract call to increment the counter directly
|
|
157
|
+
console.log(`[@lit-protocol/vincent-policy-send-counter-limit/commit] Calling incrementByAddress(${ethAddress}) on contract ${counterSignatures_1.counterSignatures.address}`);
|
|
158
|
+
const provider = await Lit.Actions.getRpcUrl({ chain: 'yellowstone' });
|
|
159
|
+
// Call contract directly without Lit.Actions.runOnce wrapper
|
|
160
|
+
const txHash = await vincent_scaffold_sdk_1.laUtils.transaction.handler.contractCall({
|
|
161
|
+
provider,
|
|
162
|
+
pkpPublicKey: delegatorPkpInfo.publicKey,
|
|
163
|
+
callerAddress: ethAddress,
|
|
164
|
+
abi: [counterSignatures_1.counterSignatures.methods.increment],
|
|
165
|
+
contractAddress: counterSignatures_1.counterSignatures.address,
|
|
166
|
+
functionName: 'increment',
|
|
167
|
+
args: [],
|
|
168
|
+
overrides: {
|
|
169
|
+
gasLimit: 100000,
|
|
170
|
+
},
|
|
171
|
+
});
|
|
172
|
+
const newCount = currentCount + 1;
|
|
173
|
+
const remainingSends = Number(maxSends) - newCount;
|
|
174
|
+
console.log('[@lit-protocol/vincent-policy-send-counter-limit/commit] Policy commit successful', {
|
|
175
|
+
ethAddress,
|
|
176
|
+
newCount,
|
|
177
|
+
maxSends,
|
|
178
|
+
remainingSends,
|
|
179
|
+
txHash,
|
|
180
|
+
});
|
|
181
|
+
return allow({
|
|
182
|
+
recorded: true,
|
|
183
|
+
newCount,
|
|
184
|
+
remainingSends: Math.max(0, remainingSends),
|
|
185
|
+
});
|
|
186
|
+
}
|
|
187
|
+
catch (error) {
|
|
188
|
+
console.error('[@lit-protocol/vincent-policy-send-counter-limit/commit] Error in commit phase:', error);
|
|
189
|
+
// Still return success since the transaction itself succeeded
|
|
190
|
+
return allow({
|
|
191
|
+
recorded: false,
|
|
192
|
+
newCount: currentCount + 1,
|
|
193
|
+
remainingSends: Math.max(0, Number(maxSends) - currentCount - 1),
|
|
194
|
+
});
|
|
195
|
+
}
|
|
196
|
+
},
|
|
116
197
|
});
|
|
117
198
|
//# sourceMappingURL=vincent-policy.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vincent-policy.js","sourceRoot":"","sources":["../../../src/lib/vincent-policy.ts"],"names":[],"mappings":";;;AAAA,2EAAwE;
|
|
1
|
+
{"version":3,"file":"vincent-policy.js","sourceRoot":"","sources":["../../../src/lib/vincent-policy.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lit-protocol/vincent-policy-send-counter",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.11-mma",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public"
|
|
6
6
|
},
|
|
7
7
|
"dependencies": {
|
|
8
|
-
"@
|
|
8
|
+
"@lit-protocol/vincent-scaffold-sdk": "^1.1.7",
|
|
9
9
|
"ethers": "^5.8.0",
|
|
10
10
|
"tslib": "2.8.1",
|
|
11
11
|
"zod": "^3.25.64",
|
|
12
|
-
"@lit-protocol/vincent-ability-sdk": "0.0.
|
|
12
|
+
"@lit-protocol/vincent-ability-sdk": "0.0.11-mma"
|
|
13
13
|
},
|
|
14
14
|
"peerDependencies": {
|
|
15
|
-
"@lit-protocol/vincent-app-sdk": "^0.0.
|
|
15
|
+
"@lit-protocol/vincent-app-sdk": "^0.0.11-mma"
|
|
16
16
|
},
|
|
17
17
|
"devDependencies": {
|
|
18
18
|
"esbuild": "^0.19.12",
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { ethers } from 'ethers';
|
|
2
|
-
export declare const calculateUsdValue: ({ ethRpcUrl, chainlinkPriceFeedAddress, amountInWeth, }: {
|
|
3
|
-
ethRpcUrl: string;
|
|
4
|
-
chainlinkPriceFeedAddress: string;
|
|
5
|
-
amountInWeth: ethers.BigNumber;
|
|
6
|
-
}) => Promise<ethers.BigNumber>;
|
|
7
|
-
//# sourceMappingURL=calculate-usd-value.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"calculate-usd-value.d.ts","sourceRoot":"","sources":["../../../../src/lib/policy-helpers/calculate-usd-value.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAIhC,eAAO,MAAM,iBAAiB,GAAU,yDAIrC;IACD,SAAS,EAAE,MAAM,CAAC;IAClB,yBAAyB,EAAE,MAAM,CAAC;IAClC,YAAY,EAAE,MAAM,CAAC,SAAS,CAAC;CAChC,KAAG,OAAO,CAAC,MAAM,CAAC,SAAS,CAgB3B,CAAC"}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.calculateUsdValue = void 0;
|
|
4
|
-
const ethers_1 = require("ethers");
|
|
5
|
-
const get_eth_usd_price_1 = require("./get-eth-usd-price");
|
|
6
|
-
const calculateUsdValue = async ({ ethRpcUrl, chainlinkPriceFeedAddress, amountInWeth, }) => {
|
|
7
|
-
const ethPriceInUsd = await (0, get_eth_usd_price_1.getEthUsdPriceFromChainlink)({ ethRpcUrl, chainlinkPriceFeedAddress });
|
|
8
|
-
// Calculate USD value (8 decimals precision)
|
|
9
|
-
const CHAINLINK_DECIMALS = 8;
|
|
10
|
-
const WETH_DECIMALS = 18; // WETH decimals
|
|
11
|
-
const amountInUsd = amountInWeth
|
|
12
|
-
.mul(ethPriceInUsd)
|
|
13
|
-
.div(ethers_1.ethers.utils.parseUnits('1', WETH_DECIMALS));
|
|
14
|
-
console.log(`Calculate token amount in USDC (calculateUsdValue)`, {
|
|
15
|
-
tokenAmountInWeth: ethers_1.ethers.utils.formatUnits(amountInWeth, WETH_DECIMALS),
|
|
16
|
-
ethPriceInUsd: ethers_1.ethers.utils.formatUnits(ethPriceInUsd, CHAINLINK_DECIMALS),
|
|
17
|
-
tokenAmountInUsd: ethers_1.ethers.utils.formatUnits(amountInUsd, CHAINLINK_DECIMALS),
|
|
18
|
-
});
|
|
19
|
-
return amountInUsd;
|
|
20
|
-
};
|
|
21
|
-
exports.calculateUsdValue = calculateUsdValue;
|
|
22
|
-
//# sourceMappingURL=calculate-usd-value.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"calculate-usd-value.js","sourceRoot":"","sources":["../../../../src/lib/policy-helpers/calculate-usd-value.ts"],"names":[],"mappings":";;;AAAA,mCAAgC;AAEhC,2DAAkE;AAE3D,MAAM,iBAAiB,GAAG,KAAK,EAAE,EACtC,SAAS,EACT,yBAAyB,EACzB,YAAY,GAKb,EAA6B,EAAE;IAC9B,MAAM,aAAa,GAAG,MAAM,IAAA,+CAA2B,EAAC,EAAE,SAAS,EAAE,yBAAyB,EAAE,CAAC,CAAC;IAElG,6CAA6C;IAC7C,MAAM,kBAAkB,GAAG,CAAC,CAAC;IAC7B,MAAM,aAAa,GAAG,EAAE,CAAC,CAAC,gBAAgB;IAC1C,MAAM,WAAW,GAAG,YAAY;SAC7B,GAAG,CAAC,aAAa,CAAC;SAClB,GAAG,CAAC,eAAM,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC,CAAC;IACpD,OAAO,CAAC,GAAG,CAAC,oDAAoD,EAAE;QAChE,iBAAiB,EAAE,eAAM,CAAC,KAAK,CAAC,WAAW,CAAC,YAAY,EAAE,aAAa,CAAC;QACxE,aAAa,EAAE,eAAM,CAAC,KAAK,CAAC,WAAW,CAAC,aAAa,EAAE,kBAAkB,CAAC;QAC1E,gBAAgB,EAAE,eAAM,CAAC,KAAK,CAAC,WAAW,CAAC,WAAW,EAAE,kBAAkB,CAAC;KAC5E,CAAC,CAAC;IAEH,OAAO,WAAW,CAAC;AACrB,CAAC,CAAC;AAxBW,QAAA,iBAAiB,qBAwB5B"}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
export declare const checkIfBuyAmountAllowed: ({ ethRpcUrl, rpcUrlForUniswap, chainIdForUniswap, tokenAddress, tokenDecimals, buyAmount, maxDailySpendingLimitInUsdCents, pkpEthAddress, appId, }: {
|
|
2
|
-
ethRpcUrl: string;
|
|
3
|
-
rpcUrlForUniswap: string;
|
|
4
|
-
chainIdForUniswap: number;
|
|
5
|
-
tokenAddress: `0x${string}`;
|
|
6
|
-
tokenDecimals: number;
|
|
7
|
-
buyAmount: number;
|
|
8
|
-
maxDailySpendingLimitInUsdCents: bigint;
|
|
9
|
-
pkpEthAddress: `0x${string}`;
|
|
10
|
-
appId: number;
|
|
11
|
-
}) => Promise<{
|
|
12
|
-
buyAmountAllowed: boolean;
|
|
13
|
-
buyAmountInUsd: bigint;
|
|
14
|
-
adjustedMaxDailySpendingLimit: bigint;
|
|
15
|
-
}>;
|
|
16
|
-
//# sourceMappingURL=check-spending-limit.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"check-spending-limit.d.ts","sourceRoot":"","sources":["../../../../src/lib/policy-helpers/check-spending-limit.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,uBAAuB,GAAU,oJAU3C;IACD,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;IACzB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,YAAY,EAAE,KAAK,MAAM,EAAE,CAAC;IAC5B,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,+BAA+B,EAAE,MAAM,CAAC;IACxC,aAAa,EAAE,KAAK,MAAM,EAAE,CAAC;IAC7B,KAAK,EAAE,MAAM,CAAC;CACf,KAAG,OAAO,CAAC;IACV,gBAAgB,EAAE,OAAO,CAAC;IAC1B,cAAc,EAAE,MAAM,CAAC;IACvB,6BAA6B,EAAE,MAAM,CAAC;CACvC,CAoCA,CAAC"}
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.checkIfBuyAmountAllowed = void 0;
|
|
4
|
-
const get_token_amount_in_usd_1 = require("./get-token-amount-in-usd");
|
|
5
|
-
const spending_limit_contract_1 = require("./spending-limit-contract");
|
|
6
|
-
const checkIfBuyAmountAllowed = async ({ ethRpcUrl, rpcUrlForUniswap, chainIdForUniswap, tokenAddress, tokenDecimals, buyAmount, maxDailySpendingLimitInUsdCents, pkpEthAddress, appId, }) => {
|
|
7
|
-
const buyAmountInUsd = await (0, get_token_amount_in_usd_1.getTokenAmountInUsd)({
|
|
8
|
-
ethRpcUrl,
|
|
9
|
-
rpcUrlForUniswap,
|
|
10
|
-
chainIdForUniswap,
|
|
11
|
-
tokenAddress,
|
|
12
|
-
tokenDecimals,
|
|
13
|
-
tokenAmount: buyAmount,
|
|
14
|
-
});
|
|
15
|
-
// maxDailySpendingLimitInUsdCents has 2 decimal precision, but tokenAmountInUsd has 8,
|
|
16
|
-
// so we multiply by 10^6 to match the precision
|
|
17
|
-
const adjustedMaxDailySpendingLimit = maxDailySpendingLimitInUsdCents * 1000000n;
|
|
18
|
-
console.log(`Adjusted maxDailySpendingLimitInUsdCents to 8 decimal precision: ${adjustedMaxDailySpendingLimit.toString()} (spendingLimitPolicyPrecheck)`);
|
|
19
|
-
const spendingLimitContract = (0, spending_limit_contract_1.getSpendingLimitContractInstance)();
|
|
20
|
-
const buyAmountAllowed = await spendingLimitContract.checkLimit(pkpEthAddress, BigInt(appId), buyAmountInUsd.toBigInt(), adjustedMaxDailySpendingLimit, 86400n);
|
|
21
|
-
console.log(`Buy amount allowed: ${JSON.stringify(buyAmountAllowed)} (spendingLimitPolicyPrecheck)`);
|
|
22
|
-
return {
|
|
23
|
-
buyAmountAllowed,
|
|
24
|
-
buyAmountInUsd: buyAmountInUsd.toBigInt(),
|
|
25
|
-
adjustedMaxDailySpendingLimit,
|
|
26
|
-
};
|
|
27
|
-
};
|
|
28
|
-
exports.checkIfBuyAmountAllowed = checkIfBuyAmountAllowed;
|
|
29
|
-
//# sourceMappingURL=check-spending-limit.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"check-spending-limit.js","sourceRoot":"","sources":["../../../../src/lib/policy-helpers/check-spending-limit.ts"],"names":[],"mappings":";;;AAAA,uEAAgE;AAChE,uEAA6E;AAEtE,MAAM,uBAAuB,GAAG,KAAK,EAAE,EAC5C,SAAS,EACT,gBAAgB,EAChB,iBAAiB,EACjB,YAAY,EACZ,aAAa,EACb,SAAS,EACT,+BAA+B,EAC/B,aAAa,EACb,KAAK,GAWN,EAIE,EAAE;IACH,MAAM,cAAc,GAAG,MAAM,IAAA,6CAAmB,EAAC;QAC/C,SAAS;QACT,gBAAgB;QAChB,iBAAiB;QACjB,YAAY;QACZ,aAAa;QACb,WAAW,EAAE,SAAS;KACvB,CAAC,CAAC;IAEH,uFAAuF;IACvF,gDAAgD;IAChD,MAAM,6BAA6B,GAAG,+BAA+B,GAAG,QAAU,CAAC;IACnF,OAAO,CAAC,GAAG,CACT,oEAAoE,6BAA6B,CAAC,QAAQ,EAAE,gCAAgC,CAC7I,CAAC;IAEF,MAAM,qBAAqB,GAAG,IAAA,0DAAgC,GAAE,CAAC;IAEjE,MAAM,gBAAgB,GAAG,MAAM,qBAAqB,CAAC,UAAU,CAC7D,aAAa,EACb,MAAM,CAAC,KAAK,CAAC,EACb,cAAc,CAAC,QAAQ,EAAE,EACzB,6BAA6B,EAC7B,MAAM,CACP,CAAC;IAEF,OAAO,CAAC,GAAG,CACT,uBAAuB,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,gCAAgC,CACxF,CAAC;IAEF,OAAO;QACL,gBAAgB;QAChB,cAAc,EAAE,cAAc,CAAC,QAAQ,EAAE;QACzC,6BAA6B;KAC9B,CAAC;AACJ,CAAC,CAAC;AA5DW,QAAA,uBAAuB,2BA4DlC"}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import { ethers } from 'ethers';
|
|
2
|
-
export declare const getEthUsdPriceFromChainlink: ({ chainlinkPriceFeedAddress, ethRpcUrl, }: {
|
|
3
|
-
chainlinkPriceFeedAddress: string;
|
|
4
|
-
ethRpcUrl: string;
|
|
5
|
-
}) => Promise<ethers.BigNumber>;
|
|
6
|
-
//# sourceMappingURL=get-eth-usd-price.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"get-eth-usd-price.d.ts","sourceRoot":"","sources":["../../../../src/lib/policy-helpers/get-eth-usd-price.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAMhC,eAAO,MAAM,2BAA2B,GAAU,2CAG/C;IACD,yBAAyB,EAAE,MAAM,CAAC;IAClC,SAAS,EAAE,MAAM,CAAC;CACnB,KAAG,OAAO,CAAC,MAAM,CAAC,SAAS,CAiB3B,CAAC"}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getEthUsdPriceFromChainlink = void 0;
|
|
4
|
-
const ethers_1 = require("ethers");
|
|
5
|
-
const CHAINLINK_AGGREGATOR_ABI = [
|
|
6
|
-
'function latestRoundData() external view returns (uint80 roundId, int256 answer, uint256 startedAt, uint256 updatedAt, uint80 answeredInRound)',
|
|
7
|
-
];
|
|
8
|
-
const getEthUsdPriceFromChainlink = async ({ chainlinkPriceFeedAddress, ethRpcUrl, }) => {
|
|
9
|
-
console.log(`Getting ETH price in USD from Chainlink (getEthUsdPriceFromChainlink)`, {
|
|
10
|
-
chainlinkPriceFeedAddress,
|
|
11
|
-
ethRpcUrl,
|
|
12
|
-
});
|
|
13
|
-
const provider = new ethers_1.ethers.providers.StaticJsonRpcProvider(ethRpcUrl);
|
|
14
|
-
const contract = new ethers_1.ethers.Contract(chainlinkPriceFeedAddress, CHAINLINK_AGGREGATOR_ABI, provider);
|
|
15
|
-
const [_, answer] = await contract.latestRoundData();
|
|
16
|
-
console.log(`Got ETH price in USD (getEthUsdPriceFromChainlink)`, {
|
|
17
|
-
ethPriceInUsd: ethers_1.ethers.utils.formatUnits(answer, 8),
|
|
18
|
-
});
|
|
19
|
-
return answer;
|
|
20
|
-
};
|
|
21
|
-
exports.getEthUsdPriceFromChainlink = getEthUsdPriceFromChainlink;
|
|
22
|
-
//# sourceMappingURL=get-eth-usd-price.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"get-eth-usd-price.js","sourceRoot":"","sources":["../../../../src/lib/policy-helpers/get-eth-usd-price.ts"],"names":[],"mappings":";;;AAAA,mCAAgC;AAEhC,MAAM,wBAAwB,GAAG;IAC/B,gJAAgJ;CACjJ,CAAC;AAEK,MAAM,2BAA2B,GAAG,KAAK,EAAE,EAChD,yBAAyB,EACzB,SAAS,GAIV,EAA6B,EAAE;IAC9B,OAAO,CAAC,GAAG,CAAC,uEAAuE,EAAE;QACnF,yBAAyB;QACzB,SAAS;KACV,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAG,IAAI,eAAM,CAAC,SAAS,CAAC,qBAAqB,CAAC,SAAS,CAAC,CAAC;IACvE,MAAM,QAAQ,GAAG,IAAI,eAAM,CAAC,QAAQ,CAClC,yBAAyB,EACzB,wBAAwB,EACxB,QAAQ,CACT,CAAC;IACF,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,MAAM,QAAQ,CAAC,eAAe,EAAE,CAAC;IACrD,OAAO,CAAC,GAAG,CAAC,oDAAoD,EAAE;QAChE,aAAa,EAAE,eAAM,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC;KACnD,CAAC,CAAC;IACH,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAvBW,QAAA,2BAA2B,+BAuBtC"}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { ethers } from 'ethers';
|
|
2
|
-
export declare const getTokenAmountInUsd: ({ ethRpcUrl, rpcUrlForUniswap, chainIdForUniswap, tokenAddress, tokenAmount, tokenDecimals, }: {
|
|
3
|
-
ethRpcUrl: string;
|
|
4
|
-
rpcUrlForUniswap: string;
|
|
5
|
-
chainIdForUniswap: number;
|
|
6
|
-
tokenAddress: string;
|
|
7
|
-
tokenDecimals: number;
|
|
8
|
-
tokenAmount: number;
|
|
9
|
-
}) => Promise<ethers.BigNumber>;
|
|
10
|
-
//# sourceMappingURL=get-token-amount-in-usd.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"get-token-amount-in-usd.d.ts","sourceRoot":"","sources":["../../../../src/lib/policy-helpers/get-token-amount-in-usd.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAWhC,eAAO,MAAM,mBAAmB,GAAU,+FAOvC;IACD,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;IACzB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;CACrB,KAAG,OAAO,CAAC,MAAM,CAAC,SAAS,CAiE3B,CAAC"}
|
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getTokenAmountInUsd = void 0;
|
|
4
|
-
const ethers_1 = require("ethers");
|
|
5
|
-
const calculate_usd_value_1 = require("./calculate-usd-value");
|
|
6
|
-
const get_uniswap_quote_1 = require("./get-uniswap-quote");
|
|
7
|
-
const ETH_MAINNET_WETH_ADDRESS = '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2';
|
|
8
|
-
/**
|
|
9
|
-
* Source: https://docs.chain.link/data-feeds/price-feeds/addresses/?network=ethereum&page=1&search=ETH%2FUSD
|
|
10
|
-
*/
|
|
11
|
-
const ETH_MAINNET_ETH_USD_CHAINLINK_FEED = '0x5f4eC3Df9cbd43714FE2740f5E3616155c5b8419';
|
|
12
|
-
const getTokenAmountInUsd = async ({ ethRpcUrl, rpcUrlForUniswap, chainIdForUniswap, tokenAddress, tokenAmount, tokenDecimals, }) => {
|
|
13
|
-
console.log(`Getting token amount in USD (getTokenAmountInUsd)`, {
|
|
14
|
-
ethRpcUrl,
|
|
15
|
-
rpcUrlForUniswap,
|
|
16
|
-
chainIdForUniswap,
|
|
17
|
-
tokenAddress,
|
|
18
|
-
tokenAmount,
|
|
19
|
-
tokenDecimals,
|
|
20
|
-
ethMainnetWethAddress: ETH_MAINNET_WETH_ADDRESS,
|
|
21
|
-
ethMainnetEthUsdChainlinkFeed: ETH_MAINNET_ETH_USD_CHAINLINK_FEED,
|
|
22
|
-
});
|
|
23
|
-
const provider = new ethers_1.ethers.providers.JsonRpcProvider(rpcUrlForUniswap);
|
|
24
|
-
const tokenInContract = new ethers_1.ethers.Contract(tokenAddress, ['function symbol() view returns (string)'], provider);
|
|
25
|
-
const tokenInSymbol = await tokenInContract.symbol();
|
|
26
|
-
console.log(`tokenInSymbol: ${tokenInSymbol} (getTokenAmountInUsd)`);
|
|
27
|
-
// Special case for WETH - no need to get a quote since it's already in ETH terms
|
|
28
|
-
if (tokenInSymbol.toUpperCase() === 'WETH') {
|
|
29
|
-
console.log(`Token is WETH, using amount directly: ${tokenAmount} (getTokenAmountInUsd)`);
|
|
30
|
-
const amountInWeth = ethers_1.ethers.utils.parseUnits(tokenAmount.toString(), tokenDecimals);
|
|
31
|
-
return (0, calculate_usd_value_1.calculateUsdValue)({
|
|
32
|
-
ethRpcUrl,
|
|
33
|
-
chainlinkPriceFeedAddress: ETH_MAINNET_ETH_USD_CHAINLINK_FEED,
|
|
34
|
-
amountInWeth,
|
|
35
|
-
});
|
|
36
|
-
}
|
|
37
|
-
console.log(`Getting price in WETH from Uniswap (getTokenAmountInUsd)`, {
|
|
38
|
-
tokenInAddress: tokenAddress,
|
|
39
|
-
tokenInDecimals: tokenDecimals,
|
|
40
|
-
tokenInAmount: tokenAmount,
|
|
41
|
-
tokenOutAddress: ETH_MAINNET_WETH_ADDRESS,
|
|
42
|
-
tokenOutDecimals: 18,
|
|
43
|
-
rpcUrl: rpcUrlForUniswap,
|
|
44
|
-
chainId: chainIdForUniswap,
|
|
45
|
-
});
|
|
46
|
-
const amountInWeth = await (0, get_uniswap_quote_1.getUniswapQuote)({
|
|
47
|
-
tokenInAddress: tokenAddress,
|
|
48
|
-
tokenInDecimals: tokenDecimals,
|
|
49
|
-
tokenInAmount: tokenAmount,
|
|
50
|
-
tokenOutAddress: ETH_MAINNET_WETH_ADDRESS,
|
|
51
|
-
tokenOutDecimals: 18,
|
|
52
|
-
rpcUrl: rpcUrlForUniswap,
|
|
53
|
-
chainId: chainIdForUniswap,
|
|
54
|
-
});
|
|
55
|
-
// Convert WETH amount to USD
|
|
56
|
-
const amountInUsdc = await (0, calculate_usd_value_1.calculateUsdValue)({
|
|
57
|
-
ethRpcUrl,
|
|
58
|
-
chainlinkPriceFeedAddress: ETH_MAINNET_ETH_USD_CHAINLINK_FEED,
|
|
59
|
-
amountInWeth: amountInWeth.bestQuote,
|
|
60
|
-
});
|
|
61
|
-
console.log('Calculated token amount in USDC (getTokenAmountInUsd)', {
|
|
62
|
-
amountInWeth: ethers_1.ethers.utils.formatUnits(amountInWeth.bestQuote, 18),
|
|
63
|
-
amountInUsdc: ethers_1.ethers.utils.formatUnits(amountInUsdc, 8),
|
|
64
|
-
});
|
|
65
|
-
return amountInUsdc;
|
|
66
|
-
};
|
|
67
|
-
exports.getTokenAmountInUsd = getTokenAmountInUsd;
|
|
68
|
-
//# sourceMappingURL=get-token-amount-in-usd.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"get-token-amount-in-usd.js","sourceRoot":"","sources":["../../../../src/lib/policy-helpers/get-token-amount-in-usd.ts"],"names":[],"mappings":";;;AAAA,mCAAgC;AAEhC,+DAA0D;AAC1D,2DAAsD;AAEtD,MAAM,wBAAwB,GAAG,4CAA4C,CAAC;AAC9E;;GAEG;AACH,MAAM,kCAAkC,GAAG,4CAA4C,CAAC;AAEjF,MAAM,mBAAmB,GAAG,KAAK,EAAE,EACxC,SAAS,EACT,gBAAgB,EAChB,iBAAiB,EACjB,YAAY,EACZ,WAAW,EACX,aAAa,GAQd,EAA6B,EAAE;IAC9B,OAAO,CAAC,GAAG,CAAC,mDAAmD,EAAE;QAC/D,SAAS;QACT,gBAAgB;QAChB,iBAAiB;QACjB,YAAY;QACZ,WAAW;QACX,aAAa;QACb,qBAAqB,EAAE,wBAAwB;QAC/C,6BAA6B,EAAE,kCAAkC;KAClE,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAG,IAAI,eAAM,CAAC,SAAS,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAC;IACxE,MAAM,eAAe,GAAG,IAAI,eAAM,CAAC,QAAQ,CACzC,YAAY,EACZ,CAAC,yCAAyC,CAAC,EAC3C,QAAQ,CACT,CAAC;IACF,MAAM,aAAa,GAAG,MAAM,eAAe,CAAC,MAAM,EAAE,CAAC;IACrD,OAAO,CAAC,GAAG,CAAC,kBAAkB,aAAa,wBAAwB,CAAC,CAAC;IAErE,iFAAiF;IACjF,IAAI,aAAa,CAAC,WAAW,EAAE,KAAK,MAAM,EAAE,CAAC;QAC3C,OAAO,CAAC,GAAG,CAAC,yCAAyC,WAAW,wBAAwB,CAAC,CAAC;QAC1F,MAAM,YAAY,GAAG,eAAM,CAAC,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,QAAQ,EAAE,EAAE,aAAa,CAAC,CAAC;QACpF,OAAO,IAAA,uCAAiB,EAAC;YACvB,SAAS;YACT,yBAAyB,EAAE,kCAAkC;YAC7D,YAAY;SACb,CAAC,CAAC;IACL,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,0DAA0D,EAAE;QACtE,cAAc,EAAE,YAAY;QAC5B,eAAe,EAAE,aAAa;QAC9B,aAAa,EAAE,WAAW;QAC1B,eAAe,EAAE,wBAAwB;QACzC,gBAAgB,EAAE,EAAE;QACpB,MAAM,EAAE,gBAAgB;QACxB,OAAO,EAAE,iBAAiB;KAC3B,CAAC,CAAC;IAEH,MAAM,YAAY,GAAG,MAAM,IAAA,mCAAe,EAAC;QACzC,cAAc,EAAE,YAAY;QAC5B,eAAe,EAAE,aAAa;QAC9B,aAAa,EAAE,WAAW;QAC1B,eAAe,EAAE,wBAAwB;QACzC,gBAAgB,EAAE,EAAE;QACpB,MAAM,EAAE,gBAAgB;QACxB,OAAO,EAAE,iBAAiB;KAC3B,CAAC,CAAC;IAEH,6BAA6B;IAC7B,MAAM,YAAY,GAAG,MAAM,IAAA,uCAAiB,EAAC;QAC3C,SAAS;QACT,yBAAyB,EAAE,kCAAkC;QAC7D,YAAY,EAAE,YAAY,CAAC,SAAS;KACrC,CAAC,CAAC;IAEH,OAAO,CAAC,GAAG,CAAC,uDAAuD,EAAE;QACnE,YAAY,EAAE,eAAM,CAAC,KAAK,CAAC,WAAW,CAAC,YAAY,CAAC,SAAS,EAAE,EAAE,CAAC;QAClE,YAAY,EAAE,eAAM,CAAC,KAAK,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC,CAAC;KACxD,CAAC,CAAC;IAEH,OAAO,YAAY,CAAC;AACtB,CAAC,CAAC;AA/EW,QAAA,mBAAmB,uBA+E9B"}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { ethers } from 'ethers';
|
|
2
|
-
export declare const getUniswapQuote: ({ rpcUrl, chainId, tokenInAddress, tokenInDecimals, tokenInAmount, tokenOutAddress, tokenOutDecimals, }: {
|
|
3
|
-
rpcUrl: string;
|
|
4
|
-
chainId: number;
|
|
5
|
-
tokenInAddress: string;
|
|
6
|
-
tokenInDecimals: number;
|
|
7
|
-
tokenInAmount: number;
|
|
8
|
-
tokenOutAddress: string;
|
|
9
|
-
tokenOutDecimals: number;
|
|
10
|
-
}) => Promise<{
|
|
11
|
-
bestQuote: ethers.BigNumber;
|
|
12
|
-
bestFee: number;
|
|
13
|
-
amountOutMin: ethers.BigNumber;
|
|
14
|
-
}>;
|
|
15
|
-
//# sourceMappingURL=get-uniswap-quote.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"get-uniswap-quote.d.ts","sourceRoot":"","sources":["../../../../src/lib/policy-helpers/get-uniswap-quote.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAMhC,eAAO,MAAM,eAAe,GAAU,yGAQnC;IACD,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;CAC1B,KAAG,OAAO,CAAC;IACV,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC,SAAS,CAAC;CAChC,CA8HA,CAAC"}
|