@ember-finance/sdk 2.35.0 → 2.36.0

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.
@@ -115,6 +115,22 @@ export declare class EVMOperatorCalls extends EVMOnChainCalls {
115
115
  * @returns EvmOnChainCallResponse
116
116
  */
117
117
  setDepositAllowList(vaultAddress: string, user: string, status: boolean, options?: IEvmCallOptions): Promise<EvmOnChainCallResponse>;
118
+ /**
119
+ * Add or remove a user on a vault's withdrawal-fee exemption list.
120
+ *
121
+ * Operator-gated, unlike the fee percentages themselves which are the admin's:
122
+ * `EmberVaultValidator.setFeeExemptionListStatus` rejects any caller that is not
123
+ * `roles().operator`. Adding also rejects the vault's three role addresses and any
124
+ * protocol-blacklisted account; removing has neither restriction, so an address can always
125
+ * be taken back off the list. Setting the value it already has reverts `SameValue`.
126
+ *
127
+ * @param vaultAddress The address of the vault
128
+ * @param user The account whose exemption is changing
129
+ * @param status True to exempt from withdrawal fees, false to remove the exemption
130
+ * @param options Optional tx execution params
131
+ * @returns EvmOnChainCallResponse
132
+ */
133
+ setFeeExemptionList(vaultAddress: string, user: string, status: boolean, options?: IEvmCallOptions): Promise<EvmOnChainCallResponse>;
118
134
  /** Atomic vault: supply `assets` of idle collateral into the external ERC-4626 strategy. */
119
135
  supplyToStrategy(vaultAddress: string, assets: NumStr, options?: IEvmCallOptions): Promise<EvmOnChainCallResponse>;
120
136
  /** Atomic vault: withdraw `assets` of collateral back from the strategy into the vault. */
@@ -156,6 +156,25 @@ export class EVMOperatorCalls extends EVMOnChainCalls {
156
156
  const txCall = this.txBuilder.setVaultDepositAllowList(vaultAddress, user, status);
157
157
  return this.execCall(txCall, options);
158
158
  }
159
+ /**
160
+ * Add or remove a user on a vault's withdrawal-fee exemption list.
161
+ *
162
+ * Operator-gated, unlike the fee percentages themselves which are the admin's:
163
+ * `EmberVaultValidator.setFeeExemptionListStatus` rejects any caller that is not
164
+ * `roles().operator`. Adding also rejects the vault's three role addresses and any
165
+ * protocol-blacklisted account; removing has neither restriction, so an address can always
166
+ * be taken back off the list. Setting the value it already has reverts `SameValue`.
167
+ *
168
+ * @param vaultAddress The address of the vault
169
+ * @param user The account whose exemption is changing
170
+ * @param status True to exempt from withdrawal fees, false to remove the exemption
171
+ * @param options Optional tx execution params
172
+ * @returns EvmOnChainCallResponse
173
+ */
174
+ async setFeeExemptionList(vaultAddress, user, status, options) {
175
+ const txCall = this.txBuilder.setVaultFeeExemptionList(vaultAddress, user, status);
176
+ return this.execCall(txCall, options);
177
+ }
159
178
  // ============================================
160
179
  // Atomic Liquidity Vault — operator actions (BFE-817/818)
161
180
  // ============================================
@@ -250,6 +250,21 @@ export declare class EVMTxBuilder {
250
250
  * @returns Transaction call object
251
251
  */
252
252
  setVaultDepositAllowList(vaultAddress: string, user: string, status: boolean): ITransactionCall;
253
+ /**
254
+ * Sets withdrawal-fee exemption for a user on a vault (called via ProtocolConfig)
255
+ *
256
+ * Operator-gated on chain, unlike the fee percentages themselves which are the admin's:
257
+ * `EmberVaultValidator.setFeeExemptionListStatus` rejects any caller that is not
258
+ * `roles().operator`. Adding also rejects the vault's three role addresses and any
259
+ * protocol-blacklisted account; removing has neither restriction, so an address can always
260
+ * be taken back off the list.
261
+ *
262
+ * @param vaultAddress Address of the vault
263
+ * @param user User address to update
264
+ * @param status True to exempt the user from withdrawal fees, false to remove the exemption
265
+ * @returns Transaction call object
266
+ */
267
+ setVaultFeeExemptionList(vaultAddress: string, user: string, status: boolean): ITransactionCall;
253
268
  /**
254
269
  * Updates the maximum TVL of a vault (called via ProtocolConfig)
255
270
  * @param vaultAddress Address of the vault
@@ -498,6 +498,30 @@ export class EVMTxBuilder {
498
498
  chainId: this.getChainId()
499
499
  };
500
500
  }
501
+ /**
502
+ * Sets withdrawal-fee exemption for a user on a vault (called via ProtocolConfig)
503
+ *
504
+ * Operator-gated on chain, unlike the fee percentages themselves which are the admin's:
505
+ * `EmberVaultValidator.setFeeExemptionListStatus` rejects any caller that is not
506
+ * `roles().operator`. Adding also rejects the vault's three role addresses and any
507
+ * protocol-blacklisted account; removing has neither restriction, so an address can always
508
+ * be taken back off the list.
509
+ *
510
+ * @param vaultAddress Address of the vault
511
+ * @param user User address to update
512
+ * @param status True to exempt the user from withdrawal fees, false to remove the exemption
513
+ * @returns Transaction call object
514
+ */
515
+ setVaultFeeExemptionList(vaultAddress, user, status) {
516
+ return {
517
+ to: this.parser.getProtocolConfigAddress(),
518
+ functionName: "setVaultFeeExemptionList",
519
+ args: [vaultAddress, user, status],
520
+ abi: EmberProtocolConfigABI.abi,
521
+ value: 0n,
522
+ chainId: this.getChainId()
523
+ };
524
+ }
501
525
  /**
502
526
  * Updates the maximum TVL of a vault (called via ProtocolConfig)
503
527
  * @param vaultAddress Address of the vault
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@ember-finance/sdk",
3
3
  "description": "Ember Protocol SDK",
4
- "version": "2.35.0",
4
+ "version": "2.36.0",
5
5
  "type": "module",
6
6
  "module": "./dist/index.js",
7
7
  "main": "./dist/index.js",