diff --git a/skills/controller-backend/SKILL.md b/skills/controller-backend/SKILL.md index 4cb4592..aee204a 100644 --- a/skills/controller-backend/SKILL.md +++ b/skills/controller-backend/SKILL.md @@ -46,6 +46,8 @@ async function main() { { name: "approve", entrypoint: "approve", + spender: "0x1234567890abcdef1234567890abcdef12345678", + amount: "0xffffffffffffffffffffffffffffffff", description: "Approve spending of tokens", }, { name: "transfer", entrypoint: "transfer" }, diff --git a/skills/controller-react/SKILL.md b/skills/controller-react/SKILL.md index bcf99c0..f75f662 100644 --- a/skills/controller-react/SKILL.md +++ b/skills/controller-react/SKILL.md @@ -35,6 +35,8 @@ const policies: SessionPolicies = { { name: "approve", entrypoint: "approve", + spender: "0x1234567890abcdef1234567890abcdef12345678", + amount: "0xffffffffffffffffffffffffffffffff", description: "Approve spending of tokens", }, { name: "transfer", entrypoint: "transfer" }, diff --git a/skills/controller-sessions/SKILL.md b/skills/controller-sessions/SKILL.md index ce1f891..21e6ba3 100644 --- a/skills/controller-sessions/SKILL.md +++ b/skills/controller-sessions/SKILL.md @@ -65,6 +65,7 @@ const policies: SessionPolicies = { { name: "approve", entrypoint: "approve", + spender: "0x1234567890abcdef1234567890abcdef12345678", amount: "0x3", // Limit: 3 ETH (hex, accounts for decimals) }, ], diff --git a/src/pages/controller/examples/react.md b/src/pages/controller/examples/react.md index ca9e98d..37dbc06 100644 --- a/src/pages/controller/examples/react.md +++ b/src/pages/controller/examples/react.md @@ -69,6 +69,8 @@ const policies: SessionPolicies = { { name: "approve", entrypoint: "approve", + spender: "0x1234567890abcdef1234567890abcdef12345678", + amount: "0xffffffffffffffffffffffffffffffff", description: "Approve spending of tokens", }, { name: "transfer", entrypoint: "transfer" }, diff --git a/src/pages/controller/examples/svelte.md b/src/pages/controller/examples/svelte.md index d9dd7cb..a093792 100644 --- a/src/pages/controller/examples/svelte.md +++ b/src/pages/controller/examples/svelte.md @@ -47,6 +47,8 @@ let controller = new Controller({ { name: "approve", entrypoint: "approve", + spender: "0x1234567890abcdef1234567890abcdef12345678", + amount: "0xffffffffffffffffffffffffffffffff", description: "Approve spending of tokens", }, { diff --git a/src/pages/controller/native/react-native.md b/src/pages/controller/native/react-native.md index eaee97d..2499b04 100644 --- a/src/pages/controller/native/react-native.md +++ b/src/pages/controller/native/react-native.md @@ -129,7 +129,12 @@ const CARTRIDGE_API_URL = 'https://api.cartridge.gg'; const sessionPolicies = { policies: [ { contractAddress: '0x049d...', entrypoint: 'transfer' }, - { contractAddress: '0x049d...', entrypoint: 'approve' }, + { + contractAddress: '0x049d...', + entrypoint: 'approve', + spender: '0x1234567890abcdef1234567890abcdef12345678', + amount: '0xffffffffffffffffffffffffffffffff' + }, ], maxFee: '0x2386f26fc10000', // ~0.01 ETH }; diff --git a/src/pages/controller/sessions.md b/src/pages/controller/sessions.md index 841d682..f1966fa 100644 --- a/src/pages/controller/sessions.md +++ b/src/pages/controller/sessions.md @@ -164,7 +164,8 @@ type ContractMethod = { name: string; // Method name entrypoint: string; // Contract method entrypoint description?: string; // Optional method description - amount?: string; // Optional spending limit for approve methods (hex format) + spender?: string; // Required for approve methods: address authorized to spend + amount?: string; // Required for approve methods: spending limit (hex format) }; type SignMessagePolicy = TypedDataPolicy & { @@ -399,6 +400,7 @@ const policies: SessionPolicies = { { name: "approve", entrypoint: "approve", + spender: "0x1234567890abcdef1234567890abcdef12345678", // Address authorized to spend amount: "0x3", // Limit to 3 ETH (in wei, hex format) description: "Approve spending up to 3 ETH" }, @@ -415,6 +417,7 @@ const policies: SessionPolicies = { { name: "approve", entrypoint: "approve", + spender: "0xabcdef1234567890abcdef1234567890abcdef12", // Address authorized to spend amount: "0xffffffffffffffffffffffffffffffff", // Unlimited (max uint128) description: "Approve unlimited STRK spending" } @@ -432,6 +435,11 @@ When users connect with spending limits configured: - Users see a consent notice explaining the spending permissions - Unlimited spending limits are clearly labeled as "Unlimited" +**Required Fields for Approve Methods** +- **`spender`**: The contract address authorized to spend tokens (required) +- **`amount`**: The spending limit in hexadecimal format (required) +- Both fields are required to create proper ApprovalPolicy objects and avoid deprecation warnings + **Amount Format** - Use hexadecimal format (e.g., `"0x3"` for 3, `"0xffffffffffffffffffffffffffffffff"` for unlimited) - For ERC20 tokens, amounts should account for token decimals