Grants the achievement to to.
Design choice (CosmosX): we require to.require_auth(), NOT the
admin's. This means the player's own connected wallet must sign
their own claim — the on-stage demo flow where the player presses
"Claim" and approves it in Freighter. Nobody can mint an achievement
to an address that didn't itself authorize the call.
fn mint(env: soroban_sdk::Env, to: soroban_sdk::Address)
Read-only: who is the admin (deployer/owner) of this contract?
fn get_admin(env: soroban_sdk::Env) -> soroban_sdk::Address
Runs once, right after deployment, to record who deployed/owns this contract. Panics if called a second time so the admin can't be silently reassigned after setup.
fn initialize(env: soroban_sdk::Env, admin: soroban_sdk::Address)
Read-only: does who have the achievement?
fn has_achievement(env: soroban_sdk::Env, who: soroban_sdk::Address) -> bool