The goal, the method, and the interface of the signcrypt primitive.
1. Order of signing and encrypting. 

It is often done in authenticated encryption to Encrypt-Then-MAC. However, there's a bit of problem with Encrypt-Then-Sign here as mentioned by the linked answer in the linked question. So it's better to sign-then-encrypt unless we have a more dedicated signcrypt algorithm. 

 2. The Interface. 

The tuple generally consist of the following functions: 

$\operatorname{GenSign}(\langle \text{entropy source}\rangle) \to (\text{key}_\text{sign}, \text{key}_\text{verify})$

$\operatorname{GenEnc}(\langle \text{entropy source}\rangle) \to (\text{key}_\text{enc}, \text{key}_\text{dec})$

$\operatorname{SignEnc}(\text{msg}, \text{key}_\text{sign}, \text{key}_\text{enc}) \to \text{ciphertext}$

$\operatorname{VerifyDec}(\text{ciphertext}, \text{key}_\text{verify}, \text{key}_\text{dec}) \to \text{msg}$ or $\text{FAIL}$

 3. Instant Messaging Protocol. 

The double ratchet "instant messaging" protocol had already solved the confidentiality problem from two ends: forward secrecy and future secrecy. So it's only needed to sign the message in such framework.