diff --git a/packages/delegation-toolkit/src/experimental/erc7715GrantPermissionsAction.ts b/packages/delegation-toolkit/src/experimental/erc7715GrantPermissionsAction.ts index 6e99503c..cb878829 100644 --- a/packages/delegation-toolkit/src/experimental/erc7715GrantPermissionsAction.ts +++ b/packages/delegation-toolkit/src/experimental/erc7715GrantPermissionsAction.ts @@ -28,7 +28,7 @@ export type NativeTokenStreamPermission = Permission & { data: { initialAmount?: bigint; amountPerSecond: bigint; - startTime: number; + startTime?: number; maxAmount?: number; justification: string; }; @@ -392,10 +392,6 @@ function formatNativeTokenStreamPermission( permission.data.justification, 'Invalid parameters: justification is required', ); - assertIsDefined( - permission.data.startTime, - 'Invalid parameters: startTime is required', - ); const isInitialAmountSpecified = permission.data.initialAmount !== undefined && @@ -405,6 +401,10 @@ function formatNativeTokenStreamPermission( permission.data.maxAmount !== undefined && permission.data.maxAmount !== null; + const isStartTimeSpecified = + permission.data.startTime !== undefined && + permission.data.startTime !== null; + const optionalFields = { ...(isInitialAmountSpecified && { initialAmount: toHexOrThrow(permission.data.initialAmount), @@ -412,6 +412,9 @@ function formatNativeTokenStreamPermission( ...(isMaxAmountSpecified && { maxAmount: toHexOrThrow(permission.data.maxAmount), }), + ...(isStartTimeSpecified && { + startTime: Number(permission.data.startTime), + }), }; return { @@ -421,7 +424,6 @@ function formatNativeTokenStreamPermission( permission.data.amountPerSecond, 'Invalid parameters: amountPerSecond is required', ), - startTime: Number(permission.data.startTime), justification: permission.data.justification, ...optionalFields, }, diff --git a/packages/delegation-toolkit/test/experimental/erc7715GrantPermissionsAction.test.ts b/packages/delegation-toolkit/test/experimental/erc7715GrantPermissionsAction.test.ts index cec5fc58..28d544f0 100644 --- a/packages/delegation-toolkit/test/experimental/erc7715GrantPermissionsAction.test.ts +++ b/packages/delegation-toolkit/test/experimental/erc7715GrantPermissionsAction.test.ts @@ -137,31 +137,6 @@ describe('erc7715GrantPermissionsAction', () => { ).rejects.toThrow('Invalid parameters: amountPerSecond is required'); }); - it('should throw an error when startTime is undefined', async () => { - const parameters = [ - { - chainId: 31337, - address: bob.address, - expiry: 1234567890, - permission: { - type: 'native-token-stream', - data: { - amountPerSecond: '0x1', - maxAmount: '0x2', - startTime: undefined, - justification: 'Test justification', - }, - }, - isAdjustmentAllowed: false, - signer: { type: 'account', data: { address: alice.address } }, - }, - ]; - - await expect( - erc7715GrantPermissionsAction(mockClient, parameters), - ).rejects.toThrow('Invalid parameters: startTime is required'); - }); - it('should throw an error when justification is undefined', async () => { const parameters = [ {