Bitcoin doesn't even zksnark to be able to get a mixer service.
i kinda feel doubt that.
As you know bitcoin protocol doesn't offer smart contracts (practically) like Ethereum does. Binance protocol (Binance smart chain) is no different than Ethereum as you may know (they use EVM) and because it offers smart contract support, zkSnark based mixers are being implemented on Ethereum for years but of course zksnark is not fully implemented in the smart contracts. Protocol uses snark.js and circom on the javascript client side as well. In deposit, a hash created from trapdoor and nullifier and then sent to smart contract. Then a merkle tree leaf created using this hash and inserted in the tree to get its index. Then index sent to client side and combined with trapdoor and nullifier in a secret given only to the end user. For withdrawal, user provides the secret on the client side. A proof using snarkjs groth function generated on the client side. This proof is sent to smart contract for verification in a standard verifier function and once verified funds are released. You can check our github link on our webpage to read the code in detail. Javascriot code you can check from the minified js file but it may be hard, but you can read the smart contract part. The smart contract codes are actually similar to other mixers so you can read any other mixer code to understand how it's done on Ethereum/Binance.