Skip to content

Commit 6855a48

Browse files
committed
chore: added SpecificActionERC20TransferBatchEnforcer utils
1 parent dd8fc3d commit 6855a48

7 files changed

Lines changed: 754 additions & 2 deletions

File tree

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
import * as read from './read';
2+
3+
export { read };
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
import { SpecificActionERC20TransferBatchEnforcer } from '@metamask/delegation-abis';
2+
import type { Client, Hex } from 'viem';
3+
import { readContract } from 'viem/actions';
4+
5+
export type ReadGetTermsInfoParameters = {
6+
client: Client;
7+
contractAddress: `0x${string}`;
8+
terms: Hex;
9+
};
10+
11+
export type TermsData = {
12+
tokenAddress: `0x${string}`;
13+
recipient: `0x${string}`;
14+
amount: bigint;
15+
firstTarget: `0x${string}`;
16+
firstCalldata: Hex;
17+
};
18+
19+
export const read = async ({
20+
client,
21+
contractAddress,
22+
terms,
23+
}: ReadGetTermsInfoParameters): Promise<TermsData> => {
24+
const termsData = await readContract(client, {
25+
address: contractAddress,
26+
abi: SpecificActionERC20TransferBatchEnforcer.abi,
27+
functionName: 'getTermsInfo',
28+
args: [terms],
29+
});
30+
31+
return termsData as TermsData;
32+
};
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
import { SpecificActionERC20TransferBatchEnforcer } from '@metamask/delegation-abis';
2+
import type { Client, Hex } from 'viem';
3+
import { readContract } from 'viem/actions';
4+
5+
export type ReadUsedDelegationsParameters = {
6+
client: Client;
7+
contractAddress: `0x${string}`;
8+
delegationManager: `0x${string}`;
9+
delegationHash: Hex;
10+
};
11+
12+
export const read = async ({
13+
client,
14+
contractAddress,
15+
delegationManager,
16+
delegationHash,
17+
}: ReadUsedDelegationsParameters) => {
18+
const isUsed = await readContract(client, {
19+
address: contractAddress,
20+
abi: SpecificActionERC20TransferBatchEnforcer.abi,
21+
functionName: 'usedDelegations',
22+
args: [delegationManager, delegationHash],
23+
});
24+
25+
return isUsed;
26+
};
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
import { read as getTermsInfo } from './methods/getTermsInfo';
2+
import { read as usedDelegations } from './methods/usedDelegations';
3+
4+
export { getTermsInfo, usedDelegations };

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import * as NonceEnforcer from '../DelegationFramework/NonceEnforcer';
1717
import * as Ownable2Step from '../DelegationFramework/Ownable2Step';
1818
import * as Pausable from '../DelegationFramework/Pausable';
1919
import * as SimpleFactory from '../DelegationFramework/SimpleFactory';
20+
import * as SpecificActionERC20TransferBatchEnforcer from '../DelegationFramework/SpecificActionERC20TransferBatchEnforcer';
2021

2122
export {
2223
isContractDeployed,
@@ -39,6 +40,7 @@ export {
3940
Ownable2Step,
4041
Pausable,
4142
SimpleFactory,
43+
SpecificActionERC20TransferBatchEnforcer,
4244
ERC20PeriodTransferEnforcer,
4345
ERC20StreamingEnforcer,
4446
ERC20TransferAmountEnforcer,

0 commit comments

Comments
 (0)