@cowprotocol/sdk-flash-loans 1.1.1 → 1.1.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.
package/dist/index.d.mts CHANGED
@@ -98,6 +98,8 @@ declare const DEFAULT_HOOK_GAS_LIMIT: {
98
98
  post: bigint;
99
99
  };
100
100
  declare const PERCENT_SCALE = 10000;
101
+ declare const BASIS_POINTS_SCALE: bigint;
102
+ declare const HALF_BASIS_POINTS_SCALE: bigint;
101
103
  declare const DEFAULT_VALIDITY: number;
102
104
  declare const GAS_ESTIMATION_ADDITION_PERCENT = 10;
103
105
  declare const ADAPTER_DOMAIN_NAME = "AaveAdapterFactory";
@@ -237,9 +239,9 @@ declare class AaveCollateralSwapSdk {
237
239
  approveCollateral(params: CollateralParameters): Promise<TransactionResponse>;
238
240
  getExpectedInstanceAddress(flashLoanType: AaveFlashLoanType, chainId: SupportedChainId, trader: AccountAddress, hookAmounts: FlashLoanHookAmounts, order: EncodedOrder): Promise<AccountAddress>;
239
241
  private approveCollateralIfNeeded;
240
- calculateFlashLoanAmounts({ sellAmount, flashLoanFeePercent }: {
242
+ calculateFlashLoanAmounts({ sellAmount, flashLoanFeeBps }: {
241
243
  sellAmount: bigint;
242
- flashLoanFeePercent: number;
244
+ flashLoanFeeBps: number;
243
245
  }): {
244
246
  flashLoanFeeAmount: bigint;
245
247
  sellAmountToSign: bigint;
@@ -254,4 +256,4 @@ declare class AaveCollateralSwapSdk {
254
256
  private adapterEIP1271Signature;
255
257
  }
256
258
 
257
- export { AAVE_ADAPTER_FACTORY, AAVE_HOOK_ADAPTER_PER_TYPE, AAVE_POOL_ADDRESS, ADAPTER_DOMAIN_NAME, ADAPTER_DOMAIN_VERSION, ADAPTER_SIGNATURE_TYPES, AaveCollateralSwapSdk, AaveFlashLoanType, type CollateralOrderData, type CollateralParameters, type CollateralPermitData, type CollateralSwapOrder, type CollateralSwapParams, type CollateralSwapPostParams, type CollateralSwapQuoteParams, type CollateralSwapTradeParams, DEFAULT_HOOK_GAS_LIMIT, DEFAULT_VALIDITY, EMPTY_PERMIT, type EncodedOrder, type FlashLoanHint, type FlashLoanHookAmounts, GAS_ESTIMATION_ADDITION_PERCENT, HASH_ZERO, PERCENT_SCALE };
259
+ export { AAVE_ADAPTER_FACTORY, AAVE_HOOK_ADAPTER_PER_TYPE, AAVE_POOL_ADDRESS, ADAPTER_DOMAIN_NAME, ADAPTER_DOMAIN_VERSION, ADAPTER_SIGNATURE_TYPES, AaveCollateralSwapSdk, AaveFlashLoanType, BASIS_POINTS_SCALE, type CollateralOrderData, type CollateralParameters, type CollateralPermitData, type CollateralSwapOrder, type CollateralSwapParams, type CollateralSwapPostParams, type CollateralSwapQuoteParams, type CollateralSwapTradeParams, DEFAULT_HOOK_GAS_LIMIT, DEFAULT_VALIDITY, EMPTY_PERMIT, type EncodedOrder, type FlashLoanHint, type FlashLoanHookAmounts, GAS_ESTIMATION_ADDITION_PERCENT, HALF_BASIS_POINTS_SCALE, HASH_ZERO, PERCENT_SCALE };
package/dist/index.d.ts CHANGED
@@ -98,6 +98,8 @@ declare const DEFAULT_HOOK_GAS_LIMIT: {
98
98
  post: bigint;
99
99
  };
100
100
  declare const PERCENT_SCALE = 10000;
101
+ declare const BASIS_POINTS_SCALE: bigint;
102
+ declare const HALF_BASIS_POINTS_SCALE: bigint;
101
103
  declare const DEFAULT_VALIDITY: number;
102
104
  declare const GAS_ESTIMATION_ADDITION_PERCENT = 10;
103
105
  declare const ADAPTER_DOMAIN_NAME = "AaveAdapterFactory";
@@ -237,9 +239,9 @@ declare class AaveCollateralSwapSdk {
237
239
  approveCollateral(params: CollateralParameters): Promise<TransactionResponse>;
238
240
  getExpectedInstanceAddress(flashLoanType: AaveFlashLoanType, chainId: SupportedChainId, trader: AccountAddress, hookAmounts: FlashLoanHookAmounts, order: EncodedOrder): Promise<AccountAddress>;
239
241
  private approveCollateralIfNeeded;
240
- calculateFlashLoanAmounts({ sellAmount, flashLoanFeePercent }: {
242
+ calculateFlashLoanAmounts({ sellAmount, flashLoanFeeBps }: {
241
243
  sellAmount: bigint;
242
- flashLoanFeePercent: number;
244
+ flashLoanFeeBps: number;
243
245
  }): {
244
246
  flashLoanFeeAmount: bigint;
245
247
  sellAmountToSign: bigint;
@@ -254,4 +256,4 @@ declare class AaveCollateralSwapSdk {
254
256
  private adapterEIP1271Signature;
255
257
  }
256
258
 
257
- export { AAVE_ADAPTER_FACTORY, AAVE_HOOK_ADAPTER_PER_TYPE, AAVE_POOL_ADDRESS, ADAPTER_DOMAIN_NAME, ADAPTER_DOMAIN_VERSION, ADAPTER_SIGNATURE_TYPES, AaveCollateralSwapSdk, AaveFlashLoanType, type CollateralOrderData, type CollateralParameters, type CollateralPermitData, type CollateralSwapOrder, type CollateralSwapParams, type CollateralSwapPostParams, type CollateralSwapQuoteParams, type CollateralSwapTradeParams, DEFAULT_HOOK_GAS_LIMIT, DEFAULT_VALIDITY, EMPTY_PERMIT, type EncodedOrder, type FlashLoanHint, type FlashLoanHookAmounts, GAS_ESTIMATION_ADDITION_PERCENT, HASH_ZERO, PERCENT_SCALE };
259
+ export { AAVE_ADAPTER_FACTORY, AAVE_HOOK_ADAPTER_PER_TYPE, AAVE_POOL_ADDRESS, ADAPTER_DOMAIN_NAME, ADAPTER_DOMAIN_VERSION, ADAPTER_SIGNATURE_TYPES, AaveCollateralSwapSdk, AaveFlashLoanType, BASIS_POINTS_SCALE, type CollateralOrderData, type CollateralParameters, type CollateralPermitData, type CollateralSwapOrder, type CollateralSwapParams, type CollateralSwapPostParams, type CollateralSwapQuoteParams, type CollateralSwapTradeParams, DEFAULT_HOOK_GAS_LIMIT, DEFAULT_VALIDITY, EMPTY_PERMIT, type EncodedOrder, type FlashLoanHint, type FlashLoanHookAmounts, GAS_ESTIMATION_ADDITION_PERCENT, HALF_BASIS_POINTS_SCALE, HASH_ZERO, PERCENT_SCALE };
package/dist/index.js CHANGED
@@ -28,10 +28,12 @@ __export(src_exports, {
28
28
  ADAPTER_SIGNATURE_TYPES: () => ADAPTER_SIGNATURE_TYPES,
29
29
  AaveCollateralSwapSdk: () => AaveCollateralSwapSdk,
30
30
  AaveFlashLoanType: () => AaveFlashLoanType,
31
+ BASIS_POINTS_SCALE: () => BASIS_POINTS_SCALE,
31
32
  DEFAULT_HOOK_GAS_LIMIT: () => DEFAULT_HOOK_GAS_LIMIT,
32
33
  DEFAULT_VALIDITY: () => DEFAULT_VALIDITY,
33
34
  EMPTY_PERMIT: () => EMPTY_PERMIT,
34
35
  GAS_ESTIMATION_ADDITION_PERCENT: () => GAS_ESTIMATION_ADDITION_PERCENT,
36
+ HALF_BASIS_POINTS_SCALE: () => HALF_BASIS_POINTS_SCALE,
35
37
  HASH_ZERO: () => HASH_ZERO,
36
38
  PERCENT_SCALE: () => PERCENT_SCALE
37
39
  });
@@ -66,6 +68,8 @@ var DEFAULT_HOOK_GAS_LIMIT = {
66
68
  post: 600000n
67
69
  };
68
70
  var PERCENT_SCALE = 1e4;
71
+ var BASIS_POINTS_SCALE = BigInt(100 * PERCENT_SCALE);
72
+ var HALF_BASIS_POINTS_SCALE = BASIS_POINTS_SCALE / 2n;
69
73
  var DEFAULT_VALIDITY = 10 * 60;
70
74
  var GAS_ESTIMATION_ADDITION_PERCENT = 10;
71
75
  var ADAPTER_DOMAIN_NAME = "AaveAdapterFactory";
@@ -481,7 +485,11 @@ var AaveCollateralSwapSdk = class {
481
485
  if (!Number.isFinite(flashLoanFeePercent) || flashLoanFeePercent < 0 || flashLoanFeePercent > 100) {
482
486
  throw new Error(`flashLoanFeePercent must be between 0 and 100, got: ${flashLoanFeePercent}`);
483
487
  }
484
- const { flashLoanFeeAmount, sellAmountToSign } = this.calculateFlashLoanAmounts({ flashLoanFeePercent, sellAmount });
488
+ const { flashLoanFeeAmount, sellAmountToSign } = this.calculateFlashLoanAmounts({
489
+ flashLoanFeeBps: flashLoanFeePercent * 100,
490
+ // Convert percentage (0.05 for 0.05%) to bps (5)
491
+ sellAmount
492
+ });
485
493
  const { validFor: _, ...restParameters } = tradeParameters;
486
494
  return {
487
495
  ...restParameters,
@@ -571,7 +579,8 @@ var AaveCollateralSwapSdk = class {
571
579
  signingScheme: import_sdk_order_book.SigningScheme.EIP1271,
572
580
  customEIP1271Signature: (orderToSign2, signer) => {
573
581
  return this.adapterEIP1271Signature(chainId, instanceAddress, orderToSign2, signer);
574
- }
582
+ },
583
+ applyCostsSlippageAndFees: false
575
584
  },
576
585
  appData: {
577
586
  metadata: {
@@ -671,8 +680,13 @@ var AaveCollateralSwapSdk = class {
671
680
  await this.approveCollateral(collateralParams);
672
681
  }
673
682
  }
674
- calculateFlashLoanAmounts({ sellAmount, flashLoanFeePercent }) {
675
- const flashLoanFeeAmount = sellAmount * BigInt(Math.round(flashLoanFeePercent * PERCENT_SCALE)) / BigInt(100 * PERCENT_SCALE);
683
+ calculateFlashLoanAmounts({ sellAmount, flashLoanFeeBps }) {
684
+ const bps = BigInt(Math.round(flashLoanFeeBps));
685
+ const PERCENTAGE_FACTOR = BigInt(PERCENT_SCALE);
686
+ const product = sellAmount * bps;
687
+ const quotient = product / PERCENTAGE_FACTOR;
688
+ const remainder = product % PERCENTAGE_FACTOR;
689
+ const flashLoanFeeAmount = quotient + (remainder > 0n ? 1n : 0n);
676
690
  return {
677
691
  flashLoanFeeAmount,
678
692
  sellAmountToSign: sellAmount - flashLoanFeeAmount
@@ -786,10 +800,12 @@ var AaveCollateralSwapSdk = class {
786
800
  ADAPTER_SIGNATURE_TYPES,
787
801
  AaveCollateralSwapSdk,
788
802
  AaveFlashLoanType,
803
+ BASIS_POINTS_SCALE,
789
804
  DEFAULT_HOOK_GAS_LIMIT,
790
805
  DEFAULT_VALIDITY,
791
806
  EMPTY_PERMIT,
792
807
  GAS_ESTIMATION_ADDITION_PERCENT,
808
+ HALF_BASIS_POINTS_SCALE,
793
809
  HASH_ZERO,
794
810
  PERCENT_SCALE
795
811
  });
package/dist/index.mjs CHANGED
@@ -32,6 +32,8 @@ var DEFAULT_HOOK_GAS_LIMIT = {
32
32
  post: 600000n
33
33
  };
34
34
  var PERCENT_SCALE = 1e4;
35
+ var BASIS_POINTS_SCALE = BigInt(100 * PERCENT_SCALE);
36
+ var HALF_BASIS_POINTS_SCALE = BASIS_POINTS_SCALE / 2n;
35
37
  var DEFAULT_VALIDITY = 10 * 60;
36
38
  var GAS_ESTIMATION_ADDITION_PERCENT = 10;
37
39
  var ADAPTER_DOMAIN_NAME = "AaveAdapterFactory";
@@ -447,7 +449,11 @@ var AaveCollateralSwapSdk = class {
447
449
  if (!Number.isFinite(flashLoanFeePercent) || flashLoanFeePercent < 0 || flashLoanFeePercent > 100) {
448
450
  throw new Error(`flashLoanFeePercent must be between 0 and 100, got: ${flashLoanFeePercent}`);
449
451
  }
450
- const { flashLoanFeeAmount, sellAmountToSign } = this.calculateFlashLoanAmounts({ flashLoanFeePercent, sellAmount });
452
+ const { flashLoanFeeAmount, sellAmountToSign } = this.calculateFlashLoanAmounts({
453
+ flashLoanFeeBps: flashLoanFeePercent * 100,
454
+ // Convert percentage (0.05 for 0.05%) to bps (5)
455
+ sellAmount
456
+ });
451
457
  const { validFor: _, ...restParameters } = tradeParameters;
452
458
  return {
453
459
  ...restParameters,
@@ -537,7 +543,8 @@ var AaveCollateralSwapSdk = class {
537
543
  signingScheme: SigningScheme.EIP1271,
538
544
  customEIP1271Signature: (orderToSign2, signer) => {
539
545
  return this.adapterEIP1271Signature(chainId, instanceAddress, orderToSign2, signer);
540
- }
546
+ },
547
+ applyCostsSlippageAndFees: false
541
548
  },
542
549
  appData: {
543
550
  metadata: {
@@ -637,8 +644,13 @@ var AaveCollateralSwapSdk = class {
637
644
  await this.approveCollateral(collateralParams);
638
645
  }
639
646
  }
640
- calculateFlashLoanAmounts({ sellAmount, flashLoanFeePercent }) {
641
- const flashLoanFeeAmount = sellAmount * BigInt(Math.round(flashLoanFeePercent * PERCENT_SCALE)) / BigInt(100 * PERCENT_SCALE);
647
+ calculateFlashLoanAmounts({ sellAmount, flashLoanFeeBps }) {
648
+ const bps = BigInt(Math.round(flashLoanFeeBps));
649
+ const PERCENTAGE_FACTOR = BigInt(PERCENT_SCALE);
650
+ const product = sellAmount * bps;
651
+ const quotient = product / PERCENTAGE_FACTOR;
652
+ const remainder = product % PERCENTAGE_FACTOR;
653
+ const flashLoanFeeAmount = quotient + (remainder > 0n ? 1n : 0n);
642
654
  return {
643
655
  flashLoanFeeAmount,
644
656
  sellAmountToSign: sellAmount - flashLoanFeeAmount
@@ -751,10 +763,12 @@ export {
751
763
  ADAPTER_SIGNATURE_TYPES,
752
764
  AaveCollateralSwapSdk,
753
765
  AaveFlashLoanType,
766
+ BASIS_POINTS_SCALE,
754
767
  DEFAULT_HOOK_GAS_LIMIT,
755
768
  DEFAULT_VALIDITY,
756
769
  EMPTY_PERMIT,
757
770
  GAS_ESTIMATION_ADDITION_PERCENT,
771
+ HALF_BASIS_POINTS_SCALE,
758
772
  HASH_ZERO,
759
773
  PERCENT_SCALE
760
774
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cowprotocol/sdk-flash-loans",
3
- "version": "1.1.1",
3
+ "version": "1.1.2",
4
4
  "description": "Flash loans for CoW Protocol",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.mjs",
@@ -15,10 +15,10 @@
15
15
  },
16
16
  "dependencies": {
17
17
  "@cowprotocol/sdk-common": "0.3.0",
18
+ "@cowprotocol/sdk-trading": "0.4.4",
18
19
  "@cowprotocol/sdk-app-data": "4.1.5",
19
- "@cowprotocol/sdk-trading": "0.4.3",
20
- "@cowprotocol/sdk-order-signing": "0.1.8",
21
20
  "@cowprotocol/sdk-order-book": "0.1.4",
21
+ "@cowprotocol/sdk-order-signing": "0.1.9",
22
22
  "@cowprotocol/sdk-config": "0.2.0"
23
23
  },
24
24
  "devDependencies": {
@@ -36,8 +36,8 @@
36
36
  "viem": "2.30.5",
37
37
  "@cow-sdk/typescript-config": "0.0.0-beta.0",
38
38
  "@cowprotocol/sdk-ethers-v5-adapter": "0.2.0",
39
- "@cowprotocol/sdk-viem-adapter": "0.2.0",
40
- "@cowprotocol/sdk-ethers-v6-adapter": "0.2.0"
39
+ "@cowprotocol/sdk-ethers-v6-adapter": "0.2.0",
40
+ "@cowprotocol/sdk-viem-adapter": "0.2.0"
41
41
  },
42
42
  "scripts": {
43
43
  "build": "tsup src/index.ts --format esm,cjs --dts",