How to swap a token for SOL or vise versa** from within** a Solana smart contract? That is, on-chain. How to interract with a router of either Raydium or SolDex? I haven’t found any example of this.