swap
Inicia um swap de tokens (mesma chain ou cross-chain) a partir de uma das smart accounts picnic do usuário, via agregador de swaps da Picnic. Retorna um sign_url e um resource_uri pra atualizações em tempo real. A execução começa assim que o usuário assina.
O routing distribui entre CowSwap, 0x, Bungee, Squid, Li.Fi e deBridge. Por padrão, o agregador escolhe a melhor cotação; usa provider pra forçar uma fonte específica.
Restrição de source: só são aceitos sources do tipo picnic. O safe do cartão (gnosisPay) não é uma origem válida — pra converter fundos que estão na conta do cartão, primeiro faz transfer pra conta Picnic, depois faz swap.
Escopos 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 que ser uma das contas controladas pela passkey em source_chain_id; sources gnosisPay são rejeitados. Usa get_smart_accounts pra descobrir endereços. |
source_chain_id | number | sim | Chain ID da smart account de origem. Tem que ser igual à chainId codificada em from_asset_id — divergência é rejeitada. |
from_asset_id | string | sim | asset_id de origem. |
to_asset_id | string | sim | asset_id de destino. Pode estar em outra chain (cross-chain). |
formatted_amount | string | sim | Valor decimal do asset de origem. |
slippage | number | não | Slippage como fração (default 0.01 = 1%, máx. 0.5). |
provider | string | não | Força 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. |
sign_url | string | URL pra autorizar com a passkey. |
resource_uri | string | picnic://action/{action_id}. |
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%.
Ciclo de vida (status):
proposed → signed → submitted → broadcast → executed.
Exemplos de prompt:
"Faz swap de 100 USDC pra ETH na Base."
"Faz bridge de 50 USDC da Base pra USDC na Polygon."