swap
Inicia um swap de tokens (mesma chain ou cross-chain) a partir de uma das smart accounts picnic do utilizador, encaminhado pelo agregador de swaps da Picnic. Devolve um sign_url e um resource_uri para atualizações em tempo real. A execução arranca assim que o utilizador assina.
O routing distribui entre CowSwap, 0x, Bungee, Squid, Li.Fi e deBridge. Por defeito, o agregador escolhe a melhor cotação; usa provider para forçar uma fonte específica.
Restrição de source: só são aceites sources do tipo picnic. O safe do cartão (gnosisPay) não é uma origem válida — para converter fundos que estão na conta do cartão, primeiro faz transfer para a conta Picnic, depois swap.
Âmbitos necessários: propose:swap, execute:swap
Parâmetros:
| Nome | Tipo | Obrig. | Descrição |
|---|---|---|---|
source_smart_account_address | string | sim | Smart account picnic que detém o asset de origem. Tem de ser uma das contas controladas pela passkey em source_chain_id; sources gnosisPay são rejeitados. Usa get_smart_accounts para descobrir endereços. |
source_chain_id | number | sim | Chain ID da smart account de origem. Tem de ser igual à chainId codificada em from_asset_id — divergência é rejeitada. |
from_asset_id | string | sim | asset_id de origem — formato igual ao de transfer. |
to_asset_id | string | sim | asset_id de destino. Pode estar noutra chain (swap cross-chain). |
formatted_amount | string | sim | Valor decimal do asset de origem, e.g. "1.5" para 1.5 USDC. |
slippage | number | não | Slippage como fração (default 0.01 = 1%, máx. 0.5). |
provider | string | não | Forçar provider — cowswap, 0x, lifi, bungee, squid, debridge. Default: melhor de todos. |
Retorna:
| Campo | Tipo | Descrição |
|---|---|---|
action_id | string | UUID da action pendente. |
status | string | Sempre "proposed" imediatamente após esta chamada. |
summary | string | Resumo legível mostrado ao utilizador. |
sign_url | string | URL para autorizar com a passkey. |
resource_uri | string | picnic://action/{action_id}. Subscreve para receber atualizações. |
simulation_url | string | URL de preview Tenderly. |
expires_at | date | Timestamp ISO; 10 minutos após criação. |
Avisos de slippage: a página de assinatura mostra banner amarelo quando ≥1% e banner vermelho acima de 5%. Mais de 5% normalmente indica pool pouco profunda, rota invulgar, ou token fraudulento.
Ciclo de vida (status):
proposed → signed → submitted → broadcast → executed (caminho de sucesso)
Exemplos de prompt:
"Faz swap de 100 USDC para ETH na Base."
"Faz bridge de 50 USDC da Base para USDC na Polygon."