pub async fn swap( amm_pool: &Pubkey, input_mint: &Pubkey, output_mint: &Pubkey, amount: u64, wallet: &Keypair, provider: &Provider, ) -> Result<(), Box<dyn Error + Send + Sync>>