Skip to content

Commit 89fc353

Browse files
committed
chore: caveat enforcer configs, and extend
1 parent 9cdc7db commit 89fc353

5 files changed

Lines changed: 130 additions & 163 deletions

File tree

packages/delegation-toolkit/src/actions/getCaveatAvailableAmount.ts

Lines changed: 110 additions & 131 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,6 @@ import * as NativeTokenPeriodTransferEnforcer from '../DelegationFramework/Nativ
77
import * as NativeTokenStreamingEnforcer from '../DelegationFramework/NativeTokenStreamingEnforcer';
88
import type { DeleGatorEnvironment } from '../types';
99

10-
/**
11-
* Configuration for caveat enforcer client
12-
*/
13-
export type CaveatEnforcerClientConfig = {
14-
environment: DeleGatorEnvironment;
15-
};
16-
1710
/**
1811
* Shared base params for all enforcer actions
1912
*/
@@ -119,23 +112,20 @@ function resolveEnforcerAddress(
119112
* Get available amount for ERC20 period transfer enforcer.
120113
*
121114
* @param client - The viem public client.
122-
* @param config - The configuration for caveat enforcers.
115+
* @param environment - The delegator environment.
123116
* @param params - The parameters for the ERC20 period transfer enforcer.
124117
* @returns Promise resolving to the period transfer result.
125118
*/
126119
export async function getErc20PeriodTransferEnforcerAvailableAmount(
127120
client: PublicClient,
128-
config: CaveatEnforcerClientConfig,
121+
environment: DeleGatorEnvironment,
129122
params: ERC20PeriodTransferParams,
130123
): Promise<PeriodTransferResult> {
131-
const delegationManager = resolveDelegationManager(
132-
params,
133-
config.environment,
134-
);
124+
const delegationManager = resolveDelegationManager(params, environment);
135125
const enforcerAddress = resolveEnforcerAddress(
136126
'ERC20PeriodTransferEnforcer',
137127
params,
138-
config.environment,
128+
environment,
139129
);
140130

141131
return ERC20PeriodTransferEnforcer.read.getAvailableAmount({
@@ -151,23 +141,20 @@ export async function getErc20PeriodTransferEnforcerAvailableAmount(
151141
* Get available amount for ERC20 streaming enforcer.
152142
*
153143
* @param client - The viem public client.
154-
* @param config - The configuration for caveat enforcers.
144+
* @param environment - The delegator environment.
155145
* @param params - The parameters for the ERC20 streaming enforcer.
156146
* @returns Promise resolving to the streaming result.
157147
*/
158148
export async function getErc20StreamingEnforcerAvailableAmount(
159149
client: PublicClient,
160-
config: CaveatEnforcerClientConfig,
150+
environment: DeleGatorEnvironment,
161151
params: ERC20StreamingParams,
162152
): Promise<StreamingResult> {
163-
const delegationManager = resolveDelegationManager(
164-
params,
165-
config.environment,
166-
);
153+
const delegationManager = resolveDelegationManager(params, environment);
167154
const enforcerAddress = resolveEnforcerAddress(
168155
'ERC20StreamingEnforcer',
169156
params,
170-
config.environment,
157+
environment,
171158
);
172159

173160
return ERC20StreamingEnforcer.read.getAvailableAmount({
@@ -183,23 +170,20 @@ export async function getErc20StreamingEnforcerAvailableAmount(
183170
* Get available amount for multi-token period enforcer.
184171
*
185172
* @param client - The viem public client.
186-
* @param config - The configuration for caveat enforcers.
173+
* @param environment - The delegator environment.
187174
* @param params - The parameters for the multi-token period enforcer.
188175
* @returns Promise resolving to the period transfer result.
189176
*/
190177
export async function getMultiTokenPeriodEnforcerAvailableAmount(
191178
client: PublicClient,
192-
config: CaveatEnforcerClientConfig,
179+
environment: DeleGatorEnvironment,
193180
params: MultiTokenPeriodParams,
194181
): Promise<PeriodTransferResult> {
195-
const delegationManager = resolveDelegationManager(
196-
params,
197-
config.environment,
198-
);
182+
const delegationManager = resolveDelegationManager(params, environment);
199183
const enforcerAddress = resolveEnforcerAddress(
200184
'MultiTokenPeriodEnforcer',
201185
params,
202-
config.environment,
186+
environment,
203187
);
204188

205189
return MultiTokenPeriodEnforcer.read.getAvailableAmount({
@@ -216,23 +200,20 @@ export async function getMultiTokenPeriodEnforcerAvailableAmount(
216200
* Get available amount for native token period transfer enforcer.
217201
*
218202
* @param client - The viem public client.
219-
* @param config - The configuration for caveat enforcers.
203+
* @param environment - The delegator environment.
220204
* @param params - The parameters for the native token period transfer enforcer.
221205
* @returns Promise resolving to the period transfer result.
222206
*/
223207
export async function getNativeTokenPeriodTransferEnforcerAvailableAmount(
224208
client: PublicClient,
225-
config: CaveatEnforcerClientConfig,
209+
environment: DeleGatorEnvironment,
226210
params: NativeTokenPeriodTransferParams,
227211
): Promise<PeriodTransferResult> {
228-
const delegationManager = resolveDelegationManager(
229-
params,
230-
config.environment,
231-
);
212+
const delegationManager = resolveDelegationManager(params, environment);
232213
const enforcerAddress = resolveEnforcerAddress(
233214
'NativeTokenPeriodTransferEnforcer',
234215
params,
235-
config.environment,
216+
environment,
236217
);
237218

238219
return NativeTokenPeriodTransferEnforcer.read.getAvailableAmount({
@@ -248,23 +229,20 @@ export async function getNativeTokenPeriodTransferEnforcerAvailableAmount(
248229
* Get available amount for native token streaming enforcer.
249230
*
250231
* @param client - The viem public client.
251-
* @param config - The configuration for caveat enforcers.
232+
* @param environment - The delegator environment.
252233
* @param params - The parameters for the native token streaming enforcer.
253234
* @returns Promise resolving to the streaming result.
254235
*/
255236
export async function getNativeTokenStreamingEnforcerAvailableAmount(
256237
client: PublicClient,
257-
config: CaveatEnforcerClientConfig,
238+
environment: DeleGatorEnvironment,
258239
params: NativeTokenStreamingParams,
259240
): Promise<StreamingResult> {
260-
const delegationManager = resolveDelegationManager(
261-
params,
262-
config.environment,
263-
);
241+
const delegationManager = resolveDelegationManager(params, environment);
264242
const enforcerAddress = resolveEnforcerAddress(
265243
'NativeTokenStreamingEnforcer',
266244
params,
267-
config.environment,
245+
environment,
268246
);
269247

270248
return NativeTokenStreamingEnforcer.read.getAvailableAmount({
@@ -280,112 +258,113 @@ export async function getNativeTokenStreamingEnforcerAvailableAmount(
280258
* Caveat enforcer actions for extending viem clients.
281259
*
282260
* @param params - The parameters object.
283-
* @param params.client - The viem public client.
284-
* @param params.config - The configuration for caveat enforcers.
285-
* @returns The client extension with caveat enforcer actions.
261+
* @param params.environment - The delegator environment.
262+
* @returns A function that takes a client and returns the client extension with caveat enforcer actions.
286263
*/
287-
export const caveatEnforcerActions = ({
288-
client,
289-
config,
290-
}: {
291-
client: PublicClient;
292-
config: CaveatEnforcerClientConfig;
293-
}) => ({
294-
/**
295-
* Get available amount for ERC20 period transfer enforcer.
296-
*
297-
* @param params - The parameters for the ERC20 period transfer enforcer.
298-
* @returns Promise resolving to the period transfer result.
299-
*/
300-
getErc20PeriodTransferEnforcerAvailableAmount: async (
301-
params: ERC20PeriodTransferParams,
302-
): Promise<PeriodTransferResult> => {
303-
return getErc20PeriodTransferEnforcerAvailableAmount(
304-
client,
305-
config,
306-
params,
307-
);
308-
},
309-
310-
/**
311-
* Get available amount for ERC20 streaming enforcer.
312-
*
313-
* @param params - The parameters for the ERC20 streaming enforcer.
314-
* @returns Promise resolving to the streaming result.
315-
*/
316-
getErc20StreamingEnforcerAvailableAmount: async (
317-
params: ERC20StreamingParams,
318-
): Promise<StreamingResult> => {
319-
return getErc20StreamingEnforcerAvailableAmount(client, config, params);
320-
},
321-
322-
/**
323-
* Get available amount for multi-token period enforcer.
324-
*
325-
* @param params - The parameters for the multi-token period enforcer.
326-
* @returns Promise resolving to the period transfer result.
327-
*/
328-
getMultiTokenPeriodEnforcerAvailableAmount: async (
329-
params: MultiTokenPeriodParams,
330-
): Promise<PeriodTransferResult> => {
331-
return getMultiTokenPeriodEnforcerAvailableAmount(client, config, params);
332-
},
333-
334-
/**
335-
* Get available amount for native token period transfer enforcer.
336-
*
337-
* @param params - The parameters for the native token period transfer enforcer.
338-
* @returns Promise resolving to the period transfer result.
339-
*/
340-
getNativeTokenPeriodTransferEnforcerAvailableAmount: async (
341-
params: NativeTokenPeriodTransferParams,
342-
): Promise<PeriodTransferResult> => {
343-
return getNativeTokenPeriodTransferEnforcerAvailableAmount(
344-
client,
345-
config,
346-
params,
347-
);
348-
},
349-
350-
/**
351-
* Get available amount for native token streaming enforcer.
352-
*
353-
* @param params - The parameters for the native token streaming enforcer.
354-
* @returns Promise resolving to the streaming result.
355-
*/
356-
getNativeTokenStreamingEnforcerAvailableAmount: async (
357-
params: NativeTokenStreamingParams,
358-
): Promise<StreamingResult> => {
359-
return getNativeTokenStreamingEnforcerAvailableAmount(
360-
client,
361-
config,
362-
params,
363-
);
364-
},
365-
});
264+
export const caveatEnforcerActions =
265+
({ environment }: { environment: DeleGatorEnvironment }) =>
266+
(client: PublicClient) => ({
267+
/**
268+
* Get available amount for ERC20 period transfer enforcer.
269+
*
270+
* @param params - The parameters for the ERC20 period transfer enforcer.
271+
* @returns Promise resolving to the period transfer result.
272+
*/
273+
getErc20PeriodTransferEnforcerAvailableAmount: async (
274+
params: ERC20PeriodTransferParams,
275+
): Promise<PeriodTransferResult> => {
276+
return getErc20PeriodTransferEnforcerAvailableAmount(
277+
client,
278+
environment,
279+
params,
280+
);
281+
},
282+
283+
/**
284+
* Get available amount for ERC20 streaming enforcer.
285+
*
286+
* @param params - The parameters for the ERC20 streaming enforcer.
287+
* @returns Promise resolving to the streaming result.
288+
*/
289+
getErc20StreamingEnforcerAvailableAmount: async (
290+
params: ERC20StreamingParams,
291+
): Promise<StreamingResult> => {
292+
return getErc20StreamingEnforcerAvailableAmount(
293+
client,
294+
environment,
295+
params,
296+
);
297+
},
298+
299+
/**
300+
* Get available amount for multi-token period enforcer.
301+
*
302+
* @param params - The parameters for the multi-token period enforcer.
303+
* @returns Promise resolving to the period transfer result.
304+
*/
305+
getMultiTokenPeriodEnforcerAvailableAmount: async (
306+
params: MultiTokenPeriodParams,
307+
): Promise<PeriodTransferResult> => {
308+
return getMultiTokenPeriodEnforcerAvailableAmount(
309+
client,
310+
environment,
311+
params,
312+
);
313+
},
314+
315+
/**
316+
* Get available amount for native token period transfer enforcer.
317+
*
318+
* @param params - The parameters for the native token period transfer enforcer.
319+
* @returns Promise resolving to the period transfer result.
320+
*/
321+
getNativeTokenPeriodTransferEnforcerAvailableAmount: async (
322+
params: NativeTokenPeriodTransferParams,
323+
): Promise<PeriodTransferResult> => {
324+
return getNativeTokenPeriodTransferEnforcerAvailableAmount(
325+
client,
326+
environment,
327+
params,
328+
);
329+
},
330+
331+
/**
332+
* Get available amount for native token streaming enforcer.
333+
*
334+
* @param params - The parameters for the native token streaming enforcer.
335+
* @returns Promise resolving to the streaming result.
336+
*/
337+
getNativeTokenStreamingEnforcerAvailableAmount: async (
338+
params: NativeTokenStreamingParams,
339+
): Promise<StreamingResult> => {
340+
return getNativeTokenStreamingEnforcerAvailableAmount(
341+
client,
342+
environment,
343+
params,
344+
);
345+
},
346+
});
366347

367348
/**
368349
* Type for client extended with caveat enforcer actions.
369350
*/
370351
export type CaveatEnforcerClient = PublicClient &
371-
ReturnType<typeof caveatEnforcerActions>;
352+
ReturnType<ReturnType<typeof caveatEnforcerActions>>;
372353

373354
/**
374355
* Create a viem client extended with caveat enforcer actions.
375356
*
376357
* @param params - The parameters object.
377358
* @param params.client - The viem public client.
378-
* @param params.config - The configuration for caveat enforcers.
359+
* @param params.environment - The delegator environment.
379360
* @returns The extended client with caveat enforcer actions.
380361
*/
381362
export function createCaveatEnforcerClient({
382363
client,
383-
config,
364+
environment,
384365
}: {
385366
client: PublicClient;
386-
config: CaveatEnforcerClientConfig;
367+
environment: DeleGatorEnvironment;
387368
}): CaveatEnforcerClient {
388-
return client.extend((extendedClient) =>
389-
caveatEnforcerActions({ client: extendedClient, config }),
390-
);
369+
return client.extend(caveatEnforcerActions({ environment }));
391370
}

packages/delegation-toolkit/src/actions/index.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ export {
1414
createCaveatEnforcerClient,
1515
caveatEnforcerActions,
1616
type CaveatEnforcerClient,
17-
type CaveatEnforcerClientConfig,
1817
// Parameter types
1918
type ERC20PeriodTransferParams,
2019
type ERC20StreamingParams,

0 commit comments

Comments
 (0)