1// PKGPATH: gno.land/r/treasury/main23package main45import (6 "chain"7 "chain/banker"8 "testing"910 "gno.land/p/nt/treasury/v0"11)1213// coins is this realm's own slice. It is handed to NewCoinsPayment and then14// rewritten, which is what a realm supplying the coins for a governance15// payment proposal can do between the vote and the execution.16var coins = chain.Coins{chain.Coin{Denom: "ugnot", Amount: 10}}1718func main(cur realm) {19 ownerAddr := chain.PackageAddress("gno.land/r/treasury/main")20 destAddr := chain.PackageAddress("gno.land/r/dest/main")2122 banker_ := banker.NewBanker(banker.BankerTypeRealmSend, cur)23 cbanker, err := treasury.NewCoinsBankerWithOwner(ownerAddr, banker_)24 if err != nil {25 panic("failed to create CoinsBanker: " + err.Error())26 }27 testing.IssueCoins(ownerAddr, chain.NewCoins(chain.NewCoin("ugnot", 1000)))2829 payment := treasury.NewCoinsPayment(coins, destAddr)30 println("payment as created:", payment.String())3132 // The supplying realm rewrites its own array. The payment must not follow.33 coins[0].Amount = 90034 println("payment after the rewrite:", payment.String())3536 if err := cbanker.Send(0, cur, payment); err != nil {37 panic("failed to send payment: " + err.Error())38 }39 println("owner balance after send:", cbanker.Balances()[0].Amount)40}4142// Output:43// payment as created: 10ugnot to g1fs92ep7z5vtrp26d767ag3zztsd6wqn9rew4ve44// payment after the rewrite: 10ugnot to g1fs92ep7z5vtrp26d767ag3zztsd6wqn9rew4ve45// owner balance after send: 99046Signatures reconstructed verbatim from vm/qfuncs — interface params keep their inline definitions.