Skip to content

Commit 94d9fcb

Browse files
committed
adding provider to spend permissions and updating types
1 parent f13b93d commit 94d9fcb

File tree

7 files changed

+198
-5
lines changed

7 files changed

+198
-5
lines changed

docs/base-account/improve-ux/spend-permissions.mdx

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,14 @@ You create an EIP-712 payload that describes the permission and ask the user to
3131

3232
```tsx
3333
import { requestSpendPermission } from "@base-org/account/spend-permission";
34+
import { createBaseAccountSDK } from "@base-org/account";
35+
import { base } from "viem/chains";
36+
37+
const sdk = createBaseAccountSDK({
38+
appName: 'Base Account SDK Demo',
39+
appLogoUrl: 'https://base.org/logo.png',
40+
appChainIds: [base.id],
41+
});
3442

3543
const permission = await requestSpendPermission({
3644
account: "0x...",
@@ -39,6 +47,7 @@ const permission = await requestSpendPermission({
3947
chainId: 8453, // or any other supported chain
4048
allowance: 1_000_000n,
4149
periodInDays: 30,
50+
provider: sdk.getProvider(),
4251
});
4352

4453
console.log("Spend Permission:", permission);
@@ -177,13 +186,23 @@ import {
177186
prepareRevokeCallData,
178187
} from "@base-org/account/spend-permission";
179188

189+
import { createBaseAccountSDK } from "@base-org/account";
190+
import { base } from "viem/chains";
191+
192+
const sdk = createBaseAccountSDK({
193+
appName: 'Base Account SDK Demo',
194+
appLogoUrl: 'https://base.org/logo.png',
195+
appChainIds: [base.id],
196+
});
197+
180198
const spender = "0xAppSpenderAddress";
181199

182200
// 1) Fetch available permissions
183201
const permissions = await fetchPermissions({
184202
account: "0xUserBaseAccountAddress",
185203
chainId: 84532,
186204
spender,
205+
provider: sdk.getProvider(),
187206
});
188207

189208
// ========================================
@@ -237,6 +256,7 @@ const newPermission = await requestSpendPermission({
237256
chainId: 84532,
238257
allowance: 1_000_000n,
239258
periodInDays: 30,
259+
provider: sdk.getProvider(),
240260
});
241261

242262
// 3. prepare the calls

docs/base-account/reference/spend-permission-utilities/fetchPermissions.mdx

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,20 +24,62 @@ Defined in the [Base Account SDK](https://github.com/base/account-sdk)
2424
Spender address you intend to use for spending.
2525
</ParamField>
2626

27+
<ParamField body="provider" type="EIP1193Provider" required>
28+
EIP-1193 compliant Ethereum provider instance. Get this from `sdk.getProvider()`.
29+
</ParamField>
30+
2731
## Returns
2832

2933
<ResponseField name="permissions" type="SpendPermission[]">
3034
Array of spend permissions matching the query.
35+
36+
<Expandable title="SpendPermission properties">
37+
<ResponseField name="permissionHash" type="string">
38+
Deterministic EIP-712 hash of the permission.
39+
</ResponseField>
40+
41+
<ResponseField name="signature" type="string">
42+
Signature for the EIP-712 payload.
43+
</ResponseField>
44+
45+
<ResponseField name="chainId" type="number">
46+
Target chain ID.
47+
</ResponseField>
48+
49+
<ResponseField name="permission" type="object">
50+
Underlying permission fields.
51+
52+
<Expandable title="permission fields">
53+
<ResponseField name="account" type="address" />
54+
<ResponseField name="spender" type="address" />
55+
<ResponseField name="token" type="address" />
56+
<ResponseField name="allowance" type="bigint" />
57+
<ResponseField name="period" type="number">Duration in seconds.</ResponseField>
58+
<ResponseField name="start" type="number">Unix timestamp (seconds).</ResponseField>
59+
<ResponseField name="end" type="number">Unix timestamp (seconds).</ResponseField>
60+
<ResponseField name="salt" type="string" />
61+
<ResponseField name="extraData" type="string" />
62+
</Expandable>
63+
</ResponseField>
64+
</Expandable>
3165
</ResponseField>
3266

3367
<RequestExample>
3468
```typescript Fetch permissions
3569
import { fetchPermissions } from "@base-org/account/spend-permission";
70+
import { createBaseAccountSDK } from "@base-org/account";
71+
72+
const sdk = createBaseAccountSDK({
73+
appName: 'My App',
74+
appLogoUrl: 'https://example.com/logo.png',
75+
appChainIds: [84532],
76+
});
3677

3778
const permissions = await fetchPermissions({
3879
account: "0xUserBaseAccountAddress",
3980
chainId: 84532,
4081
spender: "0xAppSpenderAddress",
82+
provider: sdk.getProvider(),
4183
});
4284
```
4385
</RequestExample>

docs/base-account/reference/spend-permission-utilities/getPermissionStatus.mdx

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,37 @@ Defined in the [Base Account SDK](https://github.com/base/account-sdk)
1313
## Parameters
1414

1515
<ParamField body="permission" type="SpendPermission" required>
16-
Signed permission to evaluate.
16+
Signed permission to evaluate. This should be a SpendPermission object returned from [`requestSpendPermission`](/base-account/reference/spend-permission-utilities/requestSpendPermission) or fetched via [`fetchPermissions`](/base-account/reference/spend-permission-utilities/fetchPermissions).
17+
18+
<Expandable title="SpendPermission properties">
19+
<ParamField body="permissionHash" type="string">
20+
Deterministic EIP-712 hash of the permission.
21+
</ParamField>
22+
23+
<ParamField body="signature" type="string">
24+
Signature for the EIP-712 payload.
25+
</ParamField>
26+
27+
<ParamField body="chainId" type="number">
28+
Target chain ID.
29+
</ParamField>
30+
31+
<ParamField body="permission" type="object">
32+
Underlying permission fields.
33+
34+
<Expandable title="permission fields">
35+
<ParamField body="account" type="address" />
36+
<ParamField body="spender" type="address" />
37+
<ParamField body="token" type="address" />
38+
<ParamField body="allowance" type="bigint" />
39+
<ParamField body="period" type="number">Duration in seconds.</ParamField>
40+
<ParamField body="start" type="number">Unix timestamp (seconds).</ParamField>
41+
<ParamField body="end" type="number">Unix timestamp (seconds).</ParamField>
42+
<ParamField body="salt" type="string" />
43+
<ParamField body="extraData" type="string" />
44+
</Expandable>
45+
</ParamField>
46+
</Expandable>
1747
</ParamField>
1848

1949
## Returns

docs/base-account/reference/spend-permission-utilities/prepareRevokeCallData.mdx

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,37 @@ Defined in the [Base Account SDK](https://github.com/base/account-sdk)
1414
## Parameters
1515

1616
<ParamField body="permission" type="SpendPermission" required>
17-
The permission to revoke.
17+
The spend permission to revoke. This should be a SpendPermission object returned from [`requestSpendPermission`](/base-account/reference/spend-permission-utilities/requestSpendPermission) or fetched via [`fetchPermissions`](/base-account/reference/spend-permission-utilities/fetchPermissions).
18+
19+
<Expandable title="SpendPermission properties">
20+
<ParamField body="permissionHash" type="string">
21+
Deterministic EIP-712 hash of the permission.
22+
</ParamField>
23+
24+
<ParamField body="signature" type="string">
25+
Signature for the EIP-712 payload.
26+
</ParamField>
27+
28+
<ParamField body="chainId" type="number">
29+
Target chain ID.
30+
</ParamField>
31+
32+
<ParamField body="permission" type="object">
33+
Underlying permission fields.
34+
35+
<Expandable title="permission fields">
36+
<ParamField body="account" type="address" />
37+
<ParamField body="spender" type="address" />
38+
<ParamField body="token" type="address" />
39+
<ParamField body="allowance" type="bigint" />
40+
<ParamField body="period" type="number">Duration in seconds.</ParamField>
41+
<ParamField body="start" type="number">Unix timestamp (seconds).</ParamField>
42+
<ParamField body="end" type="number">Unix timestamp (seconds).</ParamField>
43+
<ParamField body="salt" type="string" />
44+
<ParamField body="extraData" type="string" />
45+
</Expandable>
46+
</ParamField>
47+
</Expandable>
1848
</ParamField>
1949

2050
## Returns

docs/base-account/reference/spend-permission-utilities/prepareSpendCallData.mdx

Lines changed: 31 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,37 @@ Defined in the [Base Account SDK](https://github.com/base/account-sdk)
1414
## Parameters
1515

1616
<ParamField body="permission" type="SpendPermission" required>
17-
Signed permission returned from `requestSpendPermission` or fetched via
18-
`fetchPermissions`.
17+
Signed permission returned from [`requestSpendPermission`](/base-account/reference/spend-permission-utilities/requestSpendPermission) or fetched via [`fetchPermissions`](/base-account/reference/spend-permission-utilities/fetchPermissions).
18+
19+
<Expandable title="SpendPermission properties">
20+
<ParamField body="permissionHash" type="string">
21+
Deterministic EIP-712 hash of the permission.
22+
</ParamField>
23+
24+
<ParamField body="signature" type="string">
25+
Signature for the EIP-712 payload.
26+
</ParamField>
27+
28+
<ParamField body="chainId" type="number">
29+
Target chain ID.
30+
</ParamField>
31+
32+
<ParamField body="permission" type="object">
33+
Underlying permission fields.
34+
35+
<Expandable title="permission fields">
36+
<ParamField body="account" type="address" />
37+
<ParamField body="spender" type="address" />
38+
<ParamField body="token" type="address" />
39+
<ParamField body="allowance" type="bigint" />
40+
<ParamField body="period" type="number">Duration in seconds.</ParamField>
41+
<ParamField body="start" type="number">Unix timestamp (seconds).</ParamField>
42+
<ParamField body="end" type="number">Unix timestamp (seconds).</ParamField>
43+
<ParamField body="salt" type="string" />
44+
<ParamField body="extraData" type="string" />
45+
</Expandable>
46+
</ParamField>
47+
</Expandable>
1948
</ParamField>
2049

2150
<ParamField body="amount" type="bigint">

docs/base-account/reference/spend-permission-utilities/requestRevoke.mdx

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,37 @@ Defined in the [Base Account SDK](https://github.com/base/account-sdk)
1313
## Parameters
1414

1515
<ParamField body="permission" type="SpendPermission" required>
16-
The permission to revoke.
16+
The spend permission to revoke. This should be a SpendPermission object returned from [`requestSpendPermission`](/base-account/reference/spend-permission-utilities/requestSpendPermission) or fetched via [`fetchPermissions`](/base-account/reference/spend-permission-utilities/fetchPermissions).
17+
18+
<Expandable title="SpendPermission properties">
19+
<ParamField body="permissionHash" type="string">
20+
Deterministic EIP-712 hash of the permission.
21+
</ParamField>
22+
23+
<ParamField body="signature" type="string">
24+
Signature for the EIP-712 payload.
25+
</ParamField>
26+
27+
<ParamField body="chainId" type="number">
28+
Target chain ID.
29+
</ParamField>
30+
31+
<ParamField body="permission" type="object">
32+
Underlying permission fields.
33+
34+
<Expandable title="permission fields">
35+
<ParamField body="account" type="address" />
36+
<ParamField body="spender" type="address" />
37+
<ParamField body="token" type="address" />
38+
<ParamField body="allowance" type="bigint" />
39+
<ParamField body="period" type="number">Duration in seconds.</ParamField>
40+
<ParamField body="start" type="number">Unix timestamp (seconds).</ParamField>
41+
<ParamField body="end" type="number">Unix timestamp (seconds).</ParamField>
42+
<ParamField body="salt" type="string" />
43+
<ParamField body="extraData" type="string" />
44+
</Expandable>
45+
</ParamField>
46+
</Expandable>
1747
</ParamField>
1848

1949
## Returns

docs/base-account/reference/spend-permission-utilities/requestSpendPermission.mdx

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,10 @@ Defined in the [Base Account SDK](https://github.com/base/account-sdk)
5454
Arbitrary data to attach to the permission. Hex string. Defaults to `0x`.
5555
</ParamField>
5656

57+
<ParamField body="provider" type="EIP1193Provider" required>
58+
EIP-1193 compliant Ethereum provider instance. Get this from `sdk.getProvider()`.
59+
</ParamField>
60+
5761
## Returns
5862

5963
<ResponseField name="permission" type="SpendPermission">
@@ -93,6 +97,13 @@ Underlying permission fields.
9397
<RequestExample>
9498
```typescript Create and sign a spend permission
9599
import { requestSpendPermission } from "@base-org/account/spend-permission";
100+
import { createBaseAccountSDK } from "@base-org/account";
101+
102+
const sdk = createBaseAccountSDK({
103+
appName: 'My App',
104+
appLogoUrl: 'https://example.com/logo.png',
105+
appChainIds: [84532],
106+
});
96107

97108
const permission = await requestSpendPermission({
98109
account: "0xUserBaseAccountAddress",
@@ -101,6 +112,7 @@ const permission = await requestSpendPermission({
101112
chainId: 84532,
102113
allowance: 1_000_000n,
103114
periodInDays: 30,
115+
provider: sdk.getProvider(),
104116
});
105117

106118
console.log("Spend Permission:", permission);

0 commit comments

Comments
 (0)