@merkl/api 0.10.347 → 0.10.349
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/dist/src/eden/index.d.ts +86 -0
- package/dist/src/index.d.ts +36 -0
- package/dist/src/libs/tokens/allowances.d.ts +1 -0
- package/dist/src/libs/tokens/allowances.js +18 -0
- package/dist/src/modules/v4/campaign/campaign.service.js +1 -2
- package/dist/src/modules/v4/programPayload/programPayload.repository.d.ts +17 -1
- package/dist/src/modules/v4/programPayload/programPayload.repository.js +261 -2
- package/dist/src/modules/v4/router.d.ts +36 -0
- package/dist/src/modules/v4/token/token.controller.d.ts +36 -0
- package/dist/src/modules/v4/token/token.controller.js +14 -1
- package/dist/src/modules/v4/token/token.model.d.ts +5 -0
- package/dist/src/modules/v4/token/token.model.js +5 -0
- package/dist/tsconfig.package.tsbuildinfo +1 -1
- package/package.json +1 -1
package/dist/src/eden/index.d.ts
CHANGED
@@ -1025,6 +1025,31 @@ declare const eden: {
|
|
1025
1025
|
price?: number | null | undefined;
|
1026
1026
|
} | undefined;
|
1027
1027
|
}>>;
|
1028
|
+
allowance: ((params: {
|
1029
|
+
owner: string | number;
|
1030
|
+
}) => {} & ((params: {
|
1031
|
+
spender: string | number;
|
1032
|
+
}) => {
|
1033
|
+
get: (options?: {
|
1034
|
+
headers?: Record<string, unknown> | undefined;
|
1035
|
+
query?: Record<string, unknown> | undefined;
|
1036
|
+
fetch?: RequestInit | undefined;
|
1037
|
+
} | undefined) => Promise<import("@elysiajs/eden").Treaty.TreatyResponse<{
|
1038
|
+
200: {
|
1039
|
+
allowance: bigint;
|
1040
|
+
symbol: string;
|
1041
|
+
name: string | null;
|
1042
|
+
id: string;
|
1043
|
+
icon: string;
|
1044
|
+
chainId: number;
|
1045
|
+
address: string;
|
1046
|
+
decimals: number;
|
1047
|
+
verified: boolean;
|
1048
|
+
isTest: boolean;
|
1049
|
+
price?: number | null | undefined;
|
1050
|
+
} | undefined;
|
1051
|
+
}>>;
|
1052
|
+
})) & {};
|
1028
1053
|
patch: (body: {
|
1029
1054
|
icon?: string | undefined;
|
1030
1055
|
displaySymbol?: string | undefined;
|
@@ -4403,6 +4428,42 @@ export declare const MerklApi: (domain: string | import("elysia").default<"", fa
|
|
4403
4428
|
};
|
4404
4429
|
};
|
4405
4430
|
};
|
4431
|
+
} & {
|
4432
|
+
tokens: {
|
4433
|
+
":id": {
|
4434
|
+
allowance: {
|
4435
|
+
":owner": {
|
4436
|
+
":spender": {
|
4437
|
+
get: {
|
4438
|
+
body: unknown;
|
4439
|
+
params: {
|
4440
|
+
id: string;
|
4441
|
+
owner: string;
|
4442
|
+
spender: string;
|
4443
|
+
};
|
4444
|
+
query: unknown;
|
4445
|
+
headers: unknown;
|
4446
|
+
response: {
|
4447
|
+
200: {
|
4448
|
+
allowance: bigint;
|
4449
|
+
symbol: string;
|
4450
|
+
name: string | null;
|
4451
|
+
id: string;
|
4452
|
+
icon: string;
|
4453
|
+
chainId: number;
|
4454
|
+
address: string;
|
4455
|
+
decimals: number;
|
4456
|
+
verified: boolean;
|
4457
|
+
isTest: boolean;
|
4458
|
+
price?: number | null | undefined;
|
4459
|
+
} | undefined;
|
4460
|
+
};
|
4461
|
+
};
|
4462
|
+
};
|
4463
|
+
};
|
4464
|
+
};
|
4465
|
+
};
|
4466
|
+
};
|
4406
4467
|
} & {
|
4407
4468
|
tokens: {
|
4408
4469
|
reward: {
|
@@ -8193,6 +8254,31 @@ export declare const MerklApi: (domain: string | import("elysia").default<"", fa
|
|
8193
8254
|
price?: number | null | undefined;
|
8194
8255
|
} | undefined;
|
8195
8256
|
}>>;
|
8257
|
+
allowance: ((params: {
|
8258
|
+
owner: string | number;
|
8259
|
+
}) => {} & ((params: {
|
8260
|
+
spender: string | number;
|
8261
|
+
}) => {
|
8262
|
+
get: (options?: {
|
8263
|
+
headers?: Record<string, unknown> | undefined;
|
8264
|
+
query?: Record<string, unknown> | undefined;
|
8265
|
+
fetch?: RequestInit | undefined;
|
8266
|
+
} | undefined) => Promise<import("@elysiajs/eden").Treaty.TreatyResponse<{
|
8267
|
+
200: {
|
8268
|
+
allowance: bigint;
|
8269
|
+
symbol: string;
|
8270
|
+
name: string | null;
|
8271
|
+
id: string;
|
8272
|
+
icon: string;
|
8273
|
+
chainId: number;
|
8274
|
+
address: string;
|
8275
|
+
decimals: number;
|
8276
|
+
verified: boolean;
|
8277
|
+
isTest: boolean;
|
8278
|
+
price?: number | null | undefined;
|
8279
|
+
} | undefined;
|
8280
|
+
}>>;
|
8281
|
+
})) & {};
|
8196
8282
|
patch: (body: {
|
8197
8283
|
icon?: string | undefined;
|
8198
8284
|
displaySymbol?: string | undefined;
|
package/dist/src/index.d.ts
CHANGED
@@ -1220,6 +1220,42 @@ declare const app: Elysia<"", false, {
|
|
1220
1220
|
};
|
1221
1221
|
};
|
1222
1222
|
};
|
1223
|
+
} & {
|
1224
|
+
tokens: {
|
1225
|
+
":id": {
|
1226
|
+
allowance: {
|
1227
|
+
":owner": {
|
1228
|
+
":spender": {
|
1229
|
+
get: {
|
1230
|
+
body: unknown;
|
1231
|
+
params: {
|
1232
|
+
id: string;
|
1233
|
+
owner: string;
|
1234
|
+
spender: string;
|
1235
|
+
};
|
1236
|
+
query: unknown;
|
1237
|
+
headers: unknown;
|
1238
|
+
response: {
|
1239
|
+
200: {
|
1240
|
+
allowance: bigint;
|
1241
|
+
symbol: string;
|
1242
|
+
name: string | null;
|
1243
|
+
id: string;
|
1244
|
+
icon: string;
|
1245
|
+
chainId: number;
|
1246
|
+
address: string;
|
1247
|
+
decimals: number;
|
1248
|
+
verified: boolean;
|
1249
|
+
isTest: boolean;
|
1250
|
+
price?: number | null | undefined;
|
1251
|
+
} | undefined;
|
1252
|
+
};
|
1253
|
+
};
|
1254
|
+
};
|
1255
|
+
};
|
1256
|
+
};
|
1257
|
+
};
|
1258
|
+
};
|
1223
1259
|
} & {
|
1224
1260
|
tokens: {
|
1225
1261
|
reward: {
|
@@ -0,0 +1 @@
|
|
1
|
+
export declare function getUserAllowance(chainId: number, tokenAddress: string, userAddress: string, spenderAddresses: string): Promise<bigint>;
|
@@ -0,0 +1,18 @@
|
|
1
|
+
import { ChainId, ChainInteractionService, ETH_ZKSYNC_ADDRESS, Erc20__factory, EthOnZKSync_INTERFACE } from "@sdk";
|
2
|
+
export async function getUserAllowance(chainId, tokenAddress, userAddress, spenderAddresses) {
|
3
|
+
const ERC20_Interface = Erc20__factory.createInterface();
|
4
|
+
const allowanceCall = chainId === ChainId.ZKSYNC && tokenAddress === ETH_ZKSYNC_ADDRESS
|
5
|
+
? {
|
6
|
+
allowFailure: true,
|
7
|
+
callData: EthOnZKSync_INTERFACE.encodeFunctionData("allowance", [userAddress, spenderAddresses]),
|
8
|
+
target: tokenAddress,
|
9
|
+
}
|
10
|
+
: {
|
11
|
+
allowFailure: true,
|
12
|
+
callData: ERC20_Interface.encodeFunctionData("allowance", [userAddress, spenderAddresses]),
|
13
|
+
target: tokenAddress,
|
14
|
+
};
|
15
|
+
const [result] = await ChainInteractionService(chainId).fetchState([allowanceCall]);
|
16
|
+
const allowance = ERC20_Interface.decodeFunctionResult("allowance", result.returnData)[0].toString();
|
17
|
+
return BigInt(allowance);
|
18
|
+
}
|
@@ -43,8 +43,7 @@ export class CampaignService {
|
|
43
43
|
if (existingCampaign.type === "ERC20" && campaign.opportunityIdentifier === undefined) {
|
44
44
|
const campaignParams = existingCampaign.params;
|
45
45
|
campaign.opportunityIdentifier = utils
|
46
|
-
.keccak256(campaignParams.targetToken
|
47
|
-
utils.keccak256(utils.defaultAbiCoder.encode(["address[]"], [campaignParams.whitelist.sort()])))
|
46
|
+
.keccak256(utils.defaultAbiCoder.encode(["string", "address[]"], [campaignParams.targetToken, campaignParams.whitelist.sort()]))
|
48
47
|
.slice(0, 42);
|
49
48
|
}
|
50
49
|
if (campaign.opportunityIdentifier === undefined) {
|
@@ -166,7 +166,23 @@ export declare enum modeCampaigns {
|
|
166
166
|
Meson_Izumi_WETH_mBTC_Mode = "Meson Izumi WETH/m-BTC 0xD40B3D30aEe24e7B8d3aE6501024203e6c4e9EB6",
|
167
167
|
Ionic_Supply_ionoBTC_Mode = "Ionic supply oBTC 0x48c234ab217f077df3c7f541b67d90436cf59b27",
|
168
168
|
Ionic_Supply_ionuniBTC_Mode = "Ionic supply uniBTC 0xa48750877a83f7dec11f722178c317b54a44d142",
|
169
|
-
Lisa_Labs_Kim_vLISTX_USDC_Mode = "Lisa Labs Kim vLISTX/USDC 0xd54aba804a676c8f265e2e6742d7b86d383d093b"
|
169
|
+
Lisa_Labs_Kim_vLISTX_USDC_Mode = "Lisa Labs Kim vLISTX/USDC 0xd54aba804a676c8f265e2e6742d7b86d383d093b",
|
170
|
+
BMX_Hold_sbfBMX_Mode = "BMX Hold sbfBMX 0x548f93779fBC992010C07467cBaf329DD5F059B7",
|
171
|
+
Etherfi_Add_liquidity_wMLT_vault_Mode = "Add Liquidity to wMLT vault 0x8b2EeA0999876AAB1E7955fe01A5D261b570452C",
|
172
|
+
Etherfi_Kim_weETH_WETH_Mode = "Ether.fi Kim weETH/WETH 0xE24C8feB38ca2B18b542994BFBA7E70880171035",
|
173
|
+
Kim_Steer_FLS_WETH_USDC_Mode = "Kim Steer FLS WETH/USDC 0x468cc91df6f669cae6cdce766995bd7874052fbc",
|
174
|
+
Kim_Steer_EES_v2_WETH_USDC_Mode = "Kim Steer EES V2 WETH/USDC 0x468cc91df6f669cae6cdce766995bd7874052fbc",
|
175
|
+
Kim_Steer_CRS_v2_WETH_USDC_Mode = "Kim Steer CRS V2 WETH/USDC 0x468cc91df6f669cae6cdce766995bd7874052fbc",
|
176
|
+
Kim_Gamma_WETH_USDC_Mode = "Kim Gamma Long-Short WETH/USDC 0x468cc91df6f669cae6cdce766995bd7874052fbc",
|
177
|
+
Kim_v4_WETH_USDC_Mode = "Kim v4 WETH/USDC 0x468cc91df6f669cae6cdce766995bd7874052fbc",
|
178
|
+
Kim_Ichi_SSD_WETH_KIM_Mode = "Kim Ichi SSD WETH/KIM 0x3C3a173984e3152FEd868345904eC0C9325FA516",
|
179
|
+
Kim_Steer_CRS_V2_WETH_KIM_Mode = "Kim Steer CRS V2 WETH/KIM 0x3C3a173984e3152FEd868345904eC0C9325FA516",
|
180
|
+
Kim_Gamma_WETH_KIM_Mode = "Kim Gamma Long-Short WETH/KIM 0x3C3a173984e3152FEd868345904eC0C9325FA516",
|
181
|
+
Kim_v4_WETH_KIM_Mode = "Kim v4 WETH/Kim 0x3C3a173984e3152FEd868345904eC0C9325FA516",
|
182
|
+
Kim_Ichi_SSD_WETH_MODE_Mode = "Kim Ichi SSD WETH/Mode 0x8cfE2A02dfBAbC56aE7e573170E35f88A38BeA55",
|
183
|
+
Kim_Steer_CRS_V2_WETH_MODE_Mode = "Kim Steer CRS V2 WETH/Mode 0x8cfE2A02dfBAbC56aE7e573170E35f88A38BeA55",
|
184
|
+
Kim_Gamma_WETH_MODE_Mode = "Kim Gamma Narrow WETH/Mode 0x8cfE2A02dfBAbC56aE7e573170E35f88A38BeA55",
|
185
|
+
Kim_V4_WETH_MODE_Mode = "Kim V4 WETH/Mode 0x8cfE2A02dfBAbC56aE7e573170E35f88A38BeA55"
|
170
186
|
}
|
171
187
|
declare const ModeInterfaceCampaigns: {
|
172
188
|
[key in modeCampaigns]: partialConfig;
|
@@ -171,6 +171,22 @@ export var modeCampaigns;
|
|
171
171
|
modeCampaigns["Ionic_Supply_ionoBTC_Mode"] = "Ionic supply oBTC 0x48c234ab217f077df3c7f541b67d90436cf59b27";
|
172
172
|
modeCampaigns["Ionic_Supply_ionuniBTC_Mode"] = "Ionic supply uniBTC 0xa48750877a83f7dec11f722178c317b54a44d142";
|
173
173
|
modeCampaigns["Lisa_Labs_Kim_vLISTX_USDC_Mode"] = "Lisa Labs Kim vLISTX/USDC 0xd54aba804a676c8f265e2e6742d7b86d383d093b";
|
174
|
+
modeCampaigns["BMX_Hold_sbfBMX_Mode"] = "BMX Hold sbfBMX 0x548f93779fBC992010C07467cBaf329DD5F059B7";
|
175
|
+
modeCampaigns["Etherfi_Add_liquidity_wMLT_vault_Mode"] = "Add Liquidity to wMLT vault 0x8b2EeA0999876AAB1E7955fe01A5D261b570452C";
|
176
|
+
modeCampaigns["Etherfi_Kim_weETH_WETH_Mode"] = "Ether.fi Kim weETH/WETH 0xE24C8feB38ca2B18b542994BFBA7E70880171035";
|
177
|
+
modeCampaigns["Kim_Steer_FLS_WETH_USDC_Mode"] = "Kim Steer FLS WETH/USDC 0x468cc91df6f669cae6cdce766995bd7874052fbc";
|
178
|
+
modeCampaigns["Kim_Steer_EES_v2_WETH_USDC_Mode"] = "Kim Steer EES V2 WETH/USDC 0x468cc91df6f669cae6cdce766995bd7874052fbc";
|
179
|
+
modeCampaigns["Kim_Steer_CRS_v2_WETH_USDC_Mode"] = "Kim Steer CRS V2 WETH/USDC 0x468cc91df6f669cae6cdce766995bd7874052fbc";
|
180
|
+
modeCampaigns["Kim_Gamma_WETH_USDC_Mode"] = "Kim Gamma Long-Short WETH/USDC 0x468cc91df6f669cae6cdce766995bd7874052fbc";
|
181
|
+
modeCampaigns["Kim_v4_WETH_USDC_Mode"] = "Kim v4 WETH/USDC 0x468cc91df6f669cae6cdce766995bd7874052fbc";
|
182
|
+
modeCampaigns["Kim_Ichi_SSD_WETH_KIM_Mode"] = "Kim Ichi SSD WETH/KIM 0x3C3a173984e3152FEd868345904eC0C9325FA516";
|
183
|
+
modeCampaigns["Kim_Steer_CRS_V2_WETH_KIM_Mode"] = "Kim Steer CRS V2 WETH/KIM 0x3C3a173984e3152FEd868345904eC0C9325FA516";
|
184
|
+
modeCampaigns["Kim_Gamma_WETH_KIM_Mode"] = "Kim Gamma Long-Short WETH/KIM 0x3C3a173984e3152FEd868345904eC0C9325FA516";
|
185
|
+
modeCampaigns["Kim_v4_WETH_KIM_Mode"] = "Kim v4 WETH/Kim 0x3C3a173984e3152FEd868345904eC0C9325FA516";
|
186
|
+
modeCampaigns["Kim_Ichi_SSD_WETH_MODE_Mode"] = "Kim Ichi SSD WETH/Mode 0x8cfE2A02dfBAbC56aE7e573170E35f88A38BeA55";
|
187
|
+
modeCampaigns["Kim_Steer_CRS_V2_WETH_MODE_Mode"] = "Kim Steer CRS V2 WETH/Mode 0x8cfE2A02dfBAbC56aE7e573170E35f88A38BeA55";
|
188
|
+
modeCampaigns["Kim_Gamma_WETH_MODE_Mode"] = "Kim Gamma Narrow WETH/Mode 0x8cfE2A02dfBAbC56aE7e573170E35f88A38BeA55";
|
189
|
+
modeCampaigns["Kim_V4_WETH_MODE_Mode"] = "Kim V4 WETH/Mode 0x8cfE2A02dfBAbC56aE7e573170E35f88A38BeA55";
|
174
190
|
})(modeCampaigns || (modeCampaigns = {}));
|
175
191
|
const ModeInterfaceCampaigns = {
|
176
192
|
[modeCampaigns.Steer_EES_V2_Weth_USDC_Kim_Mode]: {
|
@@ -276,7 +292,7 @@ const ModeInterfaceCampaigns = {
|
|
276
292
|
computeChainId: ChainId.MODE,
|
277
293
|
hooks: [],
|
278
294
|
poolAddress: "0x468cc91df6f669cae6cdce766995bd7874052fbc",
|
279
|
-
whitelist: ["
|
295
|
+
whitelist: ["0x7eCCD6D077e4ad7120150578E936A22f058fBCCe"],
|
280
296
|
blacklist: ["0x67135675e22F7ff34eBA30f15f39F9cd30d29079"],
|
281
297
|
url: "https://app.kim.exchange/pools/vaults/gamma/0x7eccd6d077e4ad7120150578e936a22f058fbcce",
|
282
298
|
forwarders: [],
|
@@ -775,6 +791,249 @@ const ModeInterfaceCampaigns = {
|
|
775
791
|
weightToken0: 4000,
|
776
792
|
weightToken1: 4000,
|
777
793
|
},
|
794
|
+
[modeCampaigns.BMX_Hold_sbfBMX_Mode]: {
|
795
|
+
campaignType: Campaign.ERC20,
|
796
|
+
computeChainId: ChainId.MODE,
|
797
|
+
hooks: [],
|
798
|
+
targetToken: "0x548f93779fBC992010C07467cBaf329DD5F059B7",
|
799
|
+
whitelist: [],
|
800
|
+
blacklist: [],
|
801
|
+
url: "https://www.bmx.trade/deli-shop/single-staking",
|
802
|
+
forwarders: [],
|
803
|
+
},
|
804
|
+
[modeCampaigns.Etherfi_Add_liquidity_wMLT_vault_Mode]: {
|
805
|
+
campaignType: Campaign.ERC20,
|
806
|
+
computeChainId: ChainId.MODE,
|
807
|
+
hooks: [],
|
808
|
+
targetToken: "0x8b2EeA0999876AAB1E7955fe01A5D261b570452C",
|
809
|
+
whitelist: [],
|
810
|
+
blacklist: [
|
811
|
+
"0x70f531F133C7De52F0b06F193D862f5a8f17A0cF",
|
812
|
+
"0x060fC017B55676fF0A4F84780FAe8E80C0F96Ff1",
|
813
|
+
"0x8874846147AfF9a207d8f925a9Bc229e0eB0A4A6",
|
814
|
+
"0xe3C3A08AE41c36b204eF9a980f9eF5C579CC3f0f",
|
815
|
+
"0xd65EaCAed50706254b5001f22963C8615968AF7d",
|
816
|
+
"0xFdC4ba603B25Fbf2659a45cED114a205a4867457",
|
817
|
+
],
|
818
|
+
url: "https://www.bmx.trade/deli-shop/wrapper",
|
819
|
+
forwarders: [],
|
820
|
+
},
|
821
|
+
[modeCampaigns.Etherfi_Kim_weETH_WETH_Mode]: {
|
822
|
+
campaignType: Campaign.CLAMM,
|
823
|
+
computeChainId: ChainId.MODE,
|
824
|
+
hooks: [],
|
825
|
+
poolAddress: "0xE24C8feB38ca2B18b542994BFBA7E70880171035",
|
826
|
+
whitelist: [],
|
827
|
+
blacklist: [],
|
828
|
+
url: "https://app.kim.exchange/pools/v4/0xe24c8feb38ca2b18b542994bfba7e70880171035",
|
829
|
+
forwarders: [],
|
830
|
+
isOutOfRangeIncentivized: false,
|
831
|
+
weightFees: 2000,
|
832
|
+
weightToken0: 4000,
|
833
|
+
weightToken1: 4000,
|
834
|
+
},
|
835
|
+
[modeCampaigns.Kim_Steer_FLS_WETH_USDC_Mode]: {
|
836
|
+
campaignType: Campaign.CLAMM,
|
837
|
+
computeChainId: ChainId.MODE,
|
838
|
+
hooks: [],
|
839
|
+
poolAddress: "0x468cC91dF6F669CaE6cdCE766995Bd7874052FBc",
|
840
|
+
whitelist: ["0xACb9a8676FC6ADa472611A62354BF47502969287"],
|
841
|
+
blacklist: ["0x67135675e22F7ff34eBA30f15f39F9cd30d29079"],
|
842
|
+
url: "https://app.kim.exchange/pools/vaults/0xacb9a8676fc6ada472611a62354bf47502969287",
|
843
|
+
forwarders: [],
|
844
|
+
isOutOfRangeIncentivized: false,
|
845
|
+
weightFees: 2000,
|
846
|
+
weightToken0: 4000,
|
847
|
+
weightToken1: 4000,
|
848
|
+
},
|
849
|
+
[modeCampaigns.Kim_Steer_EES_v2_WETH_USDC_Mode]: {
|
850
|
+
campaignType: Campaign.CLAMM,
|
851
|
+
computeChainId: ChainId.MODE,
|
852
|
+
hooks: [],
|
853
|
+
poolAddress: "0x468cC91dF6F669CaE6cdCE766995Bd7874052FBc",
|
854
|
+
whitelist: ["0xc07df1D13188c081f770944ece48e469B326B2A5"],
|
855
|
+
blacklist: ["0x67135675e22F7ff34eBA30f15f39F9cd30d29079"],
|
856
|
+
url: "https://app.kim.exchange/pools/vaults/0xc07df1d13188c081f770944ece48e469b326b2a5",
|
857
|
+
forwarders: [],
|
858
|
+
isOutOfRangeIncentivized: false,
|
859
|
+
weightFees: 2000,
|
860
|
+
weightToken0: 4000,
|
861
|
+
weightToken1: 4000,
|
862
|
+
},
|
863
|
+
[modeCampaigns.Kim_Steer_CRS_v2_WETH_USDC_Mode]: {
|
864
|
+
campaignType: Campaign.CLAMM,
|
865
|
+
computeChainId: ChainId.MODE,
|
866
|
+
hooks: [],
|
867
|
+
poolAddress: "0x468cC91dF6F669CaE6cdCE766995Bd7874052FBc",
|
868
|
+
whitelist: ["0xC40D4D88aFC7B03C65391cBfB6F399f464F6aB03"],
|
869
|
+
blacklist: ["0x67135675e22F7ff34eBA30f15f39F9cd30d29079"],
|
870
|
+
url: "https://app.kim.exchange/pools/vaults/0xc40d4d88afc7b03c65391cbfb6f399f464f6ab03",
|
871
|
+
forwarders: [],
|
872
|
+
isOutOfRangeIncentivized: false,
|
873
|
+
weightFees: 2000,
|
874
|
+
weightToken0: 4000,
|
875
|
+
weightToken1: 4000,
|
876
|
+
},
|
877
|
+
[modeCampaigns.Kim_Gamma_WETH_USDC_Mode]: {
|
878
|
+
campaignType: Campaign.CLAMM,
|
879
|
+
computeChainId: ChainId.MODE,
|
880
|
+
hooks: [],
|
881
|
+
poolAddress: "0x468cC91dF6F669CaE6cdCE766995Bd7874052FBc",
|
882
|
+
whitelist: ["0x7eCCD6D077e4ad7120150578E936A22f058fBCCe"],
|
883
|
+
blacklist: ["0x67135675e22F7ff34eBA30f15f39F9cd30d29079"],
|
884
|
+
url: "https://app.kim.exchange/pools/vaults/gamma/0x7eccd6d077e4ad7120150578e936a22f058fbcce",
|
885
|
+
forwarders: [],
|
886
|
+
isOutOfRangeIncentivized: false,
|
887
|
+
weightFees: 2000,
|
888
|
+
weightToken0: 4000,
|
889
|
+
weightToken1: 4000,
|
890
|
+
},
|
891
|
+
[modeCampaigns.Kim_v4_WETH_USDC_Mode]: {
|
892
|
+
campaignType: Campaign.CLAMM,
|
893
|
+
computeChainId: ChainId.MODE,
|
894
|
+
hooks: [],
|
895
|
+
poolAddress: "0x468cC91dF6F669CaE6cdCE766995Bd7874052FBc",
|
896
|
+
whitelist: [],
|
897
|
+
blacklist: [
|
898
|
+
"0x67135675e22F7ff34eBA30f15f39F9cd30d29079",
|
899
|
+
"0xACb9a8676FC6ADa472611A62354BF47502969287",
|
900
|
+
"0xc07df1D13188c081f770944ece48e469B326B2A5",
|
901
|
+
"0xC40D4D88aFC7B03C65391cBfB6F399f464F6aB03",
|
902
|
+
"0x7eCCD6D077e4ad7120150578E936A22f058fBCCe",
|
903
|
+
],
|
904
|
+
url: "https://app.kim.exchange/positions",
|
905
|
+
forwarders: [],
|
906
|
+
isOutOfRangeIncentivized: false,
|
907
|
+
weightFees: 2000,
|
908
|
+
weightToken0: 4000,
|
909
|
+
weightToken1: 4000,
|
910
|
+
},
|
911
|
+
[modeCampaigns.Kim_Ichi_SSD_WETH_KIM_Mode]: {
|
912
|
+
campaignType: Campaign.CLAMM,
|
913
|
+
computeChainId: ChainId.MODE,
|
914
|
+
hooks: [],
|
915
|
+
poolAddress: "0x3C3a173984e3152FEd868345904eC0C9325FA516",
|
916
|
+
whitelist: ["0xF5DDF269948C53D86B87Fa3393a5B2579348C07f"],
|
917
|
+
blacklist: ["0x67135675e22F7ff34eBA30f15f39F9cd30d29079"],
|
918
|
+
url: "https://app.kim.exchange/pools/vaults/ichi/0xf5ddf269948c53d86b87fa3393a5b2579348c07f",
|
919
|
+
forwarders: [],
|
920
|
+
isOutOfRangeIncentivized: false,
|
921
|
+
weightFees: 2000,
|
922
|
+
weightToken0: 4000,
|
923
|
+
weightToken1: 4000,
|
924
|
+
},
|
925
|
+
[modeCampaigns.Kim_Steer_CRS_V2_WETH_KIM_Mode]: {
|
926
|
+
campaignType: Campaign.CLAMM,
|
927
|
+
computeChainId: ChainId.MODE,
|
928
|
+
hooks: [],
|
929
|
+
poolAddress: "0x3C3a173984e3152FEd868345904eC0C9325FA516",
|
930
|
+
whitelist: ["0xAC8C89516bC4b60621c5326446e33680357bB3D2"],
|
931
|
+
blacklist: ["0x67135675e22F7ff34eBA30f15f39F9cd30d29079"],
|
932
|
+
url: "https://app.kim.exchange/pools/vaults/0xac8c89516bc4b60621c5326446e33680357bb3d2",
|
933
|
+
forwarders: [],
|
934
|
+
isOutOfRangeIncentivized: false,
|
935
|
+
weightFees: 2000,
|
936
|
+
weightToken0: 4000,
|
937
|
+
weightToken1: 4000,
|
938
|
+
},
|
939
|
+
[modeCampaigns.Kim_Gamma_WETH_KIM_Mode]: {
|
940
|
+
campaignType: Campaign.CLAMM,
|
941
|
+
computeChainId: ChainId.MODE,
|
942
|
+
hooks: [],
|
943
|
+
poolAddress: "0x3C3a173984e3152FEd868345904eC0C9325FA516",
|
944
|
+
whitelist: ["0x1392698B2F2cA87E6329c1ca502C5d4BA938d1b8"],
|
945
|
+
blacklist: ["0x67135675e22F7ff34eBA30f15f39F9cd30d29079"],
|
946
|
+
url: "https://app.kim.exchange/pools/vaults/gamma/0x1392698b2f2ca87e6329c1ca502c5d4ba938d1b8",
|
947
|
+
forwarders: [],
|
948
|
+
isOutOfRangeIncentivized: false,
|
949
|
+
weightFees: 2000,
|
950
|
+
weightToken0: 4000,
|
951
|
+
weightToken1: 4000,
|
952
|
+
},
|
953
|
+
[modeCampaigns.Kim_v4_WETH_KIM_Mode]: {
|
954
|
+
campaignType: Campaign.CLAMM,
|
955
|
+
computeChainId: ChainId.MODE,
|
956
|
+
hooks: [],
|
957
|
+
poolAddress: "0x3C3a173984e3152FEd868345904eC0C9325FA516",
|
958
|
+
whitelist: [],
|
959
|
+
blacklist: [
|
960
|
+
"0x67135675e22F7ff34eBA30f15f39F9cd30d29079",
|
961
|
+
"0xF5DDF269948C53D86B87Fa3393a5B2579348C07f",
|
962
|
+
"0xAC8C89516bC4b60621c5326446e33680357bB3D2",
|
963
|
+
"0x1392698B2F2cA87E6329c1ca502C5d4BA938d1b8",
|
964
|
+
"0x7c207cb731ebc0BA5dF699d7B36348302FD8480c",
|
965
|
+
"0x3da7476152f7EFF205cBf56f67aBaB17CF9d37eE",
|
966
|
+
],
|
967
|
+
url: "https://app.kim.exchange/positions",
|
968
|
+
forwarders: [],
|
969
|
+
isOutOfRangeIncentivized: false,
|
970
|
+
weightFees: 2000,
|
971
|
+
weightToken0: 4000,
|
972
|
+
weightToken1: 4000,
|
973
|
+
},
|
974
|
+
[modeCampaigns.Kim_Ichi_SSD_WETH_MODE_Mode]: {
|
975
|
+
campaignType: Campaign.CLAMM,
|
976
|
+
computeChainId: ChainId.MODE,
|
977
|
+
hooks: [],
|
978
|
+
poolAddress: "0x8cfE2A02dfBAbC56aE7e573170E35f88A38BeA55",
|
979
|
+
whitelist: ["0x91f6fF8cDBD9B516c0DfB901063B3b00612962EB"],
|
980
|
+
blacklist: ["0x67135675e22F7ff34eBA30f15f39F9cd30d29079"],
|
981
|
+
url: "https://app.kim.exchange/pools/vaults/ichi/0x91f6ff8cdbd9b516c0dfb901063b3b00612962eb",
|
982
|
+
forwarders: [],
|
983
|
+
isOutOfRangeIncentivized: false,
|
984
|
+
weightFees: 2000,
|
985
|
+
weightToken0: 4000,
|
986
|
+
weightToken1: 4000,
|
987
|
+
},
|
988
|
+
[modeCampaigns.Kim_Steer_CRS_V2_WETH_MODE_Mode]: {
|
989
|
+
campaignType: Campaign.CLAMM,
|
990
|
+
computeChainId: ChainId.MODE,
|
991
|
+
hooks: [],
|
992
|
+
poolAddress: "0x8cfE2A02dfBAbC56aE7e573170E35f88A38BeA55",
|
993
|
+
whitelist: ["0x23c17a512d486D6F46DB63A8Dd5144B352497762"],
|
994
|
+
blacklist: ["0x67135675e22F7ff34eBA30f15f39F9cd30d29079"],
|
995
|
+
url: "https://app.kim.exchange/pools/vaults/0x23c17a512d486d6f46db63a8dd5144b352497762",
|
996
|
+
forwarders: [],
|
997
|
+
isOutOfRangeIncentivized: false,
|
998
|
+
weightFees: 2000,
|
999
|
+
weightToken0: 4000,
|
1000
|
+
weightToken1: 4000,
|
1001
|
+
},
|
1002
|
+
[modeCampaigns.Kim_Gamma_WETH_MODE_Mode]: {
|
1003
|
+
campaignType: Campaign.CLAMM,
|
1004
|
+
computeChainId: ChainId.MODE,
|
1005
|
+
hooks: [],
|
1006
|
+
poolAddress: "0x8cfE2A02dfBAbC56aE7e573170E35f88A38BeA55",
|
1007
|
+
whitelist: ["0xD6Cc4a33dA7557A629e819c68fB805ddB225f517"],
|
1008
|
+
blacklist: ["0x67135675e22F7ff34eBA30f15f39F9cd30d29079"],
|
1009
|
+
url: "https://app.kim.exchange/pools/vaults/gamma/0xd6cc4a33da7557a629e819c68fb805ddb225f517",
|
1010
|
+
forwarders: [],
|
1011
|
+
isOutOfRangeIncentivized: false,
|
1012
|
+
weightFees: 2000,
|
1013
|
+
weightToken0: 4000,
|
1014
|
+
weightToken1: 4000,
|
1015
|
+
},
|
1016
|
+
[modeCampaigns.Kim_V4_WETH_MODE_Mode]: {
|
1017
|
+
campaignType: Campaign.CLAMM,
|
1018
|
+
computeChainId: ChainId.MODE,
|
1019
|
+
hooks: [],
|
1020
|
+
poolAddress: "0x8cfE2A02dfBAbC56aE7e573170E35f88A38BeA55",
|
1021
|
+
whitelist: [],
|
1022
|
+
blacklist: [
|
1023
|
+
"0x67135675e22F7ff34eBA30f15f39F9cd30d29079",
|
1024
|
+
"0x91f6fF8cDBD9B516c0DfB901063B3b00612962EB",
|
1025
|
+
"0x23c17a512d486D6F46DB63A8Dd5144B352497762",
|
1026
|
+
"0x91f6fF8cDBD9B516c0DfB901063B3b00612962EB",
|
1027
|
+
"0xdd97504448cC51b4De4944157838c4800C773C5A",
|
1028
|
+
"0xBBD68F14F61bfcbB833618d83779e4Aa1Af5670e",
|
1029
|
+
],
|
1030
|
+
url: "https://app.kim.exchange/pools/vaults/gamma/0xd6cc4a33da7557a629e819c68fb805ddb225f517",
|
1031
|
+
forwarders: [],
|
1032
|
+
isOutOfRangeIncentivized: false,
|
1033
|
+
weightFees: 2000,
|
1034
|
+
weightToken0: 4000,
|
1035
|
+
weightToken1: 4000,
|
1036
|
+
},
|
778
1037
|
};
|
779
1038
|
const ZkSyncInterfaceCampaigns = {
|
780
1039
|
[zkSyncCampaigns.Vest_USDC]: {
|
@@ -914,7 +1173,7 @@ const ZkSyncInterfaceCampaigns = {
|
|
914
1173
|
targetToken: "0x9e20e83d636870a887ce7c85cecfb8b3e95c9db2",
|
915
1174
|
whitelist: [],
|
916
1175
|
blacklist: [],
|
917
|
-
url: "https://
|
1176
|
+
url: "https://one.zerolend.xyz/reserve-overview/?underlyingAsset=0x1d17cbcf0d6d143135ae902365d2e5e2a16538d4&marketName=proto_zksync_era_v3&utm_source=merkl&utm_medium=website&utm_campaign=merkl30",
|
918
1177
|
forwarders: [],
|
919
1178
|
},
|
920
1179
|
[zkSyncCampaigns.Aave_WstETH]: {
|
@@ -1098,6 +1098,42 @@ export declare const v4: Elysia<"/v4", false, {
|
|
1098
1098
|
};
|
1099
1099
|
};
|
1100
1100
|
};
|
1101
|
+
} & {
|
1102
|
+
tokens: {
|
1103
|
+
":id": {
|
1104
|
+
allowance: {
|
1105
|
+
":owner": {
|
1106
|
+
":spender": {
|
1107
|
+
get: {
|
1108
|
+
body: unknown;
|
1109
|
+
params: {
|
1110
|
+
id: string;
|
1111
|
+
owner: string;
|
1112
|
+
spender: string;
|
1113
|
+
};
|
1114
|
+
query: unknown;
|
1115
|
+
headers: unknown;
|
1116
|
+
response: {
|
1117
|
+
200: {
|
1118
|
+
allowance: bigint;
|
1119
|
+
symbol: string;
|
1120
|
+
name: string | null;
|
1121
|
+
id: string;
|
1122
|
+
icon: string;
|
1123
|
+
chainId: number;
|
1124
|
+
address: string;
|
1125
|
+
decimals: number;
|
1126
|
+
verified: boolean;
|
1127
|
+
isTest: boolean;
|
1128
|
+
price?: number | null | undefined;
|
1129
|
+
} | undefined;
|
1130
|
+
};
|
1131
|
+
};
|
1132
|
+
};
|
1133
|
+
};
|
1134
|
+
};
|
1135
|
+
};
|
1136
|
+
};
|
1101
1137
|
} & {
|
1102
1138
|
tokens: {
|
1103
1139
|
reward: {
|
@@ -38,6 +38,42 @@ export declare const TokenController: Elysia<"/tokens", false, {
|
|
38
38
|
};
|
39
39
|
};
|
40
40
|
};
|
41
|
+
} & {
|
42
|
+
tokens: {
|
43
|
+
":id": {
|
44
|
+
allowance: {
|
45
|
+
":owner": {
|
46
|
+
":spender": {
|
47
|
+
get: {
|
48
|
+
body: unknown;
|
49
|
+
params: {
|
50
|
+
id: string;
|
51
|
+
owner: string;
|
52
|
+
spender: string;
|
53
|
+
};
|
54
|
+
query: unknown;
|
55
|
+
headers: unknown;
|
56
|
+
response: {
|
57
|
+
200: {
|
58
|
+
allowance: bigint;
|
59
|
+
symbol: string;
|
60
|
+
name: string | null;
|
61
|
+
id: string;
|
62
|
+
icon: string;
|
63
|
+
chainId: number;
|
64
|
+
address: string;
|
65
|
+
decimals: number;
|
66
|
+
verified: boolean;
|
67
|
+
isTest: boolean;
|
68
|
+
price?: number | null | undefined;
|
69
|
+
} | undefined;
|
70
|
+
};
|
71
|
+
};
|
72
|
+
};
|
73
|
+
};
|
74
|
+
};
|
75
|
+
};
|
76
|
+
};
|
41
77
|
} & {
|
42
78
|
tokens: {
|
43
79
|
reward: {
|
@@ -1,9 +1,10 @@
|
|
1
1
|
import { NotFoundError } from "../../../errors/NotFound.error";
|
2
2
|
import { AuthorizationHeadersDto, BackOfficeGuard } from "../../../guards/BackOffice.guard";
|
3
|
+
import { getUserAllowance } from "../../../libs/tokens/allowances";
|
3
4
|
import { throwOnInvalidRequiredAddress, throwOnUnsupportedChainId } from "../../../utils/throw";
|
4
5
|
import Elysia from "elysia";
|
5
6
|
import { ChainDto } from "../accounting";
|
6
|
-
import { CreateTokenDto, FindUniqueTokenDto, GetTokenBalanceDto, GetTokenQueryDto, TokenIdDto, UpdateTokenDto, } from "./token.model";
|
7
|
+
import { CreateTokenDto, FindUniqueTokenAllowanceDto, FindUniqueTokenDto, GetTokenBalanceDto, GetTokenQueryDto, TokenIdDto, UpdateTokenDto, } from "./token.model";
|
7
8
|
import { TokenService } from "./token.service";
|
8
9
|
// ─── Tokens Controller ───────────────────────────────────────────────────────
|
9
10
|
export const TokenController = new Elysia({ prefix: "/tokens", detail: { tags: ["Tokens"], hide: true } })
|
@@ -18,6 +19,18 @@ export const TokenController = new Elysia({ prefix: "/tokens", detail: { tags: [
|
|
18
19
|
throw new NotFoundError();
|
19
20
|
}
|
20
21
|
}, { params: FindUniqueTokenDto })
|
22
|
+
.get("/:id/allowance/:owner/:spender", async ({ params: { id, owner, spender } }) => {
|
23
|
+
try {
|
24
|
+
const [chainId, address] = id.split("-");
|
25
|
+
const token = await TokenService.findUniqueOrThrow({ chainId: +chainId, address });
|
26
|
+
const allowance = await getUserAllowance(token.chainId, token.address, owner, spender);
|
27
|
+
return { ...token, allowance };
|
28
|
+
}
|
29
|
+
catch (err) {
|
30
|
+
if (err.code && err.code === "P2025")
|
31
|
+
throw new NotFoundError();
|
32
|
+
}
|
33
|
+
}, { params: FindUniqueTokenAllowanceDto })
|
21
34
|
// ─── Get Valid Reward Token ───────────────────────────────────────────
|
22
35
|
.get("/reward/:chainId", async ({ params }) => TokenService.getValidRewardTokens(params.chainId), {
|
23
36
|
params: ChainDto,
|
@@ -26,6 +26,11 @@ export declare const TokenResourceDto: import("@sinclair/typebox").TObject<{
|
|
26
26
|
export declare const FindUniqueTokenDto: import("@sinclair/typebox").TObject<{
|
27
27
|
id: import("@sinclair/typebox").TString;
|
28
28
|
}>;
|
29
|
+
export declare const FindUniqueTokenAllowanceDto: import("@sinclair/typebox").TObject<{
|
30
|
+
id: import("@sinclair/typebox").TString;
|
31
|
+
owner: import("@sinclair/typebox").TString;
|
32
|
+
spender: import("@sinclair/typebox").TString;
|
33
|
+
}>;
|
29
34
|
export declare const GetTokenQueryDto: import("@sinclair/typebox").TObject<{
|
30
35
|
symbol: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
31
36
|
displaySymbol: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
@@ -15,6 +15,11 @@ export const TokenResourceDto = t.Object({
|
|
15
15
|
export const FindUniqueTokenDto = t.Object({
|
16
16
|
id: t.String(),
|
17
17
|
});
|
18
|
+
export const FindUniqueTokenAllowanceDto = t.Object({
|
19
|
+
id: t.String(),
|
20
|
+
owner: t.String(),
|
21
|
+
spender: t.String(),
|
22
|
+
});
|
18
23
|
export const GetTokenQueryDto = t.Object({
|
19
24
|
symbol: t.Optional(t.String()),
|
20
25
|
displaySymbol: t.Optional(t.String()), // To filter by displaySymbol or if null symbol
|