Shuffle & deal protocol
Implement a two-party commutative-encryption shuffle in TypeScript. Each party encrypts the deck under its own key, the deck is permuted, and cards are decrypted only for their intended recipient. Neither party may learn a card that has not been dealt to them.