terra/protocols/terraswap/router.go
Laurent Le Houerou b0d2c071c5 replace xastro token with correct address
add terraswap xastro/astro lp
add luart staking contract
2022-04-18 13:09:26 +04:00

258 lines
10 KiB
Go

package terraswap
import (
"github.com/galacticship/terra"
"github.com/pkg/errors"
)
type Router struct {
*terra.BaseRouter
}
func NewRouter(querier *terra.Querier) (terra.Router, error) {
r, err := terra.NewBaseRouter(querier, "terra19qx5xe6q9ll4w0890ux7lv2p4mf3csd4qvt3ex", terra.NewAssetInfoFactory(), newOperation)
if err != nil {
return nil, errors.Wrap(err, "creating base router")
}
LUNAUST, err := NewPair(querier, "terra1tndcaqxkpc5ce9qee5ggqf430mr2z3pefe5wj6", terra.LUNA, terra.UST, terra.TERRASWAP_LUNAUSTLP)
if err != nil {
return nil, errors.Wrap(err, "init LUNAUST pair")
}
BLUNALUNA, err := NewPair(querier, "terra1jxazgm67et0ce260kvrpfv50acuushpjsz2y0p", terra.BLUNA, terra.LUNA, terra.TERRASWAP_BLUNALUNALP)
if err != nil {
return nil, errors.Wrap(err, "init BLUNALUNA pair")
}
LUNALUNAX, err := NewPair(querier, "terra1zrzy688j8g6446jzd88vzjzqtywh6xavww92hy", terra.LUNAX, terra.LUNA, terra.TERRASWAP_LUNAXLUNALP)
if err != nil {
return nil, errors.Wrap(err, "init LUNALUNAX pair")
}
LUNAXBLUNA, err := NewPair(querier, "terra1x8h5gan6vey5cz2xfyst74mtqsj7746fqj2hze", terra.LUNAX, terra.BLUNA, terra.TERRASWAP_LUNAXBLUNALP)
if err != nil {
return nil, errors.Wrap(err, "init LUNAXBLUNA pair")
}
LUNAXUST, err := NewPair(querier, "terra1llhpkqd5enjfflt27u3jx0jcp5pdn6s9lfadx3", terra.LUNAX, terra.UST, terra.TERRASWAP_LUNAXUSTLP)
if err != nil {
return nil, errors.Wrap(err, "init LUNAXUST pair")
}
BLUNAUST, err := NewPair(querier, "terra1qpd9n7afwf45rkjlpujrrdfh83pldec8rpujgn", terra.BLUNA, terra.UST, terra.TERRASWAP_BLUNAUSTLP)
if err != nil {
return nil, errors.Wrap(err, "init BLUNAUST pair")
}
KUJIUST, err := NewPair(querier, "terra1zkyrfyq7x9v5vqnnrznn3kvj35az4f6jxftrl2", terra.KUJI, terra.UST, terra.TERRASWAP_KUJIUSTLP)
if err != nil {
return nil, errors.Wrap(err, "init KUJIUST pair")
}
PLUNAUST, err := NewPair(querier, "terra1hngzkju6egu78eyzzw2fn8el9dnjk3rr704z2f", terra.PLUNA, terra.UST, terra.TERRASWAP_PLUNAUSTLP)
if err != nil {
return nil, errors.Wrap(err, "init PLUNAUST pair")
}
STLUNAUST, err := NewPair(querier, "terra1de8xa55xm83s3ke0s20fc5pxy7p3cpndmmm7zk", terra.STLUNA, terra.UST, terra.TERRASWAP_STLUNAUSTLP)
if err != nil {
return nil, errors.Wrap(err, "init STLUNAUST pair")
}
ANCUST, err := NewPair(querier, "terra1gm5p3ner9x9xpwugn9sp6gvhd0lwrtkyrecdn3", terra.ANC, terra.UST, terra.TERRASWAP_ANCUSTLP)
if err != nil {
return nil, errors.Wrap(err, "init ANCUST pair")
}
MIRUST, err := NewPair(querier, "terra1amv303y8kzxuegvurh0gug2xe9wkgj65enq2ux", terra.MIR, terra.UST, terra.TERRASWAP_MIRUSTLP)
if err != nil {
return nil, errors.Wrap(err, "init MIRUST pair")
}
LOOPUST, err := NewPair(querier, "terra10k7y9qw63tfwj7e3x4uuzru2u9kvtd4ureajhd", terra.LOOP, terra.UST, terra.TERRASWAP_LOOPUSTLP)
if err != nil {
return nil, errors.Wrap(err, "init LOOPUST pair")
}
LOOPRUST, err := NewPair(querier, "terra18raj59xx32kuz66sfg82kqta6q0aslfs3m8s4r", terra.LOOPR, terra.UST, terra.TERRASWAP_LOOPRUSTLP)
if err != nil {
return nil, errors.Wrap(err, "init LOOPRUST pair")
}
MINEUST, err := NewPair(querier, "terra178jydtjvj4gw8earkgnqc80c3hrmqj4kw2welz", terra.MINE, terra.UST, terra.TERRASWAP_MINEUSTLP)
if err != nil {
return nil, errors.Wrap(err, "init MINEUST pair")
}
SKUJIKUJI, err := NewPair(querier, "terra1g8kjs70d5r68j9507s3gwymzc30yaur5j2ccfr", terra.SKUJI, terra.KUJI, terra.TERRASWAP_SKUJIKUJILP)
if err != nil {
return nil, errors.Wrap(err, "init SKUJIKUJI pair")
}
MARSUST, err := NewPair(querier, "terra15sut89ms4lts4dd5yrcuwcpctlep3hdgeu729f", terra.MARS, terra.UST, terra.TERRASWAP_MARSUSTLP)
if err != nil {
return nil, errors.Wrap(err, "init MARSUST pair")
}
PRISMXPRISM, err := NewPair(querier, "terra1urt608par6rkcancsjzm76472phptfwq397gpm", terra.PRISM, terra.XPRISM, terra.TERRASWAP_PRISMXPRISMLP)
if err != nil {
return nil, errors.Wrap(err, "init PRISMXPRISM pair")
}
PRISMUST, err := NewPair(querier, "terra1ag6fqvxz33nqg78830k5c27n32mmqlcrcgqejl", terra.PRISM, terra.UST, terra.TERRASWAP_PRISMUSTLP)
if err != nil {
return nil, errors.Wrap(err, "init PRISMUST pair")
}
CLUNALUNA, err := NewPair(querier, "terra1ejyqwcemr5kda5pxwz27t2ja784j3d0nj0v6lh", terra.CLUNA, terra.LUNA, terra.TERRASWAP_CLUNALUNALP)
if err != nil {
return nil, errors.Wrap(err, "init CLUNALUNA pair")
}
ASTROUST, err := NewPair(querier, "terra1pufczag48fwqhsmekfullmyu02f93flvfc9a25", terra.ASTRO, terra.UST, terra.TERRASWAP_ASTROUSTLP)
if err != nil {
return nil, errors.Wrap(err, "init ASTROUST pair")
}
AUSTUST, err := NewPair(querier, "terra1z50zu7j39s2dls8k9xqyxc89305up0w7f7ec3n", terra.AUST, terra.UST, terra.TERRASWAP_AUSTUSTLP)
if err != nil {
return nil, errors.Wrap(err, "init AUSTUST pair")
}
AUSTVUST, err := NewPair(querier, "terra1gkdudgg2a5wt70cneyx5rtehjls4dvhhcmlptv", terra.AUST, terra.VUST, terra.TERRASWAP_AUSTVUSTLP)
if err != nil {
return nil, errors.Wrap(err, "init AUSTVUST pair")
}
WHALEVUST, err := NewPair(querier, "terra12arl49w7t4xpq7krtv43t3dg6g8kn2xxyaav56", terra.WHALE, terra.VUST, terra.TERRASWAP_WHALEVUSTLP)
if err != nil {
return nil, errors.Wrap(err, "init WHALEVUST pair")
}
BETHUST, err := NewPair(querier, "terra1c0afrdc5253tkp5wt7rxhuj42xwyf2lcre0s7c", terra.BETH, terra.UST, terra.TERRASWAP_BETHUSTLP)
if err != nil {
return nil, errors.Wrap(err, "init BETHUST pair")
}
WHALEUST, err := NewPair(querier, "terra1v4kpj65uq63m4x0mqzntzm27ecpactt42nyp5c", terra.WHALE, terra.UST, terra.TERRASWAP_WHALEUSTLP)
if err != nil {
return nil, errors.Wrap(err, "init WHALEUST pair")
}
SPECUST, err := NewPair(querier, "terra1tn8ejzw8kpuc87nu42f6qeyen4c7qy35tl8t20", terra.SPEC, terra.UST, terra.TERRASWAP_SPECUSTLP)
if err != nil {
return nil, errors.Wrap(err, "init SPECUST pair")
}
STTUST, err := NewPair(querier, "terra19pg6d7rrndg4z4t0jhcd7z9nhl3p5ygqttxjll", terra.STT, terra.UST, terra.TERRASWAP_STTUSTLP)
if err != nil {
return nil, errors.Wrap(err, "init STTUST pair")
}
TWDUST, err := NewPair(querier, "terra1etdkg9p0fkl8zal6ecp98kypd32q8k3ryced9d", terra.TWD, terra.UST, terra.TERRASWAP_TWDUSTLP)
if err != nil {
return nil, errors.Wrap(err, "init TWDUST pair")
}
PSIUST, err := NewPair(querier, "terra163pkeeuwxzr0yhndf8xd2jprm9hrtk59xf7nqf", terra.PSI, terra.UST, terra.TERRASWAP_PSIUSTLP)
if err != nil {
return nil, errors.Wrap(err, "init PSIUST pair")
}
PLYUST, err := NewPair(querier, "terra19fjaurx28dq4wgnf9fv3qg0lwldcln3jqafzm6", terra.PLY, terra.UST, terra.TERRASWAP_PLYUSTLP)
if err != nil {
return nil, errors.Wrap(err, "init PLYUST pair")
}
LOTAUST, err := NewPair(querier, "terra1pn20mcwnmeyxf68vpt3cyel3n57qm9mp289jta", terra.LOTA, terra.UST, terra.TERRASWAP_LOTAUSTLP)
if err != nil {
return nil, errors.Wrap(err, "init LOTAUST pair")
}
APOLLOUST, err := NewPair(querier, "terra1xj2w7w8mx6m2nueczgsxy2gnmujwejjeu2xf78", terra.APOLLO, terra.UST, terra.TERRASWAP_APOLLOUSTLP)
if err != nil {
return nil, errors.Wrap(err, "init APOLLOUST pair")
}
VKRUST, err := NewPair(querier, "terra1e59utusv5rspqsu8t37h5w887d9rdykljedxw0", terra.VKR, terra.UST, terra.TERRASWAP_VKRUSTLP)
if err != nil {
return nil, errors.Wrap(err, "init VKRUST pair")
}
ORIONUST, err := NewPair(querier, "terra1z6tp0ruxvynsx5r9mmcc2wcezz9ey9pmrw5r8g", terra.ORION, terra.UST, terra.TERRASWAP_ORIONUSTLP)
if err != nil {
return nil, errors.Wrap(err, "init ORIONUST pair")
}
ATLOUST, err := NewPair(querier, "terra1ycp5lnn0qu4sq4wq7k63zax9f05852xt9nu3yc", terra.ATLO, terra.UST, terra.TERRASWAP_ATLOUSTLP)
if err != nil {
return nil, errors.Wrap(err, "init ATLOUST pair")
}
GLOWUST, err := NewPair(querier, "terra1p44kn7l233p7gcj0v3mzury8k7cwf4zt6gsxs5", terra.GLOW, terra.UST, terra.TERRASWAP_GLOWUSTLP)
if err != nil {
return nil, errors.Wrap(err, "init GLOWUST pair")
}
TNSUST, err := NewPair(querier, "terra1hqnk9expq3k4la2ruzdnyapgndntec4fztdyln", terra.TNS, terra.UST, terra.TERRASWAP_TNSUSTLP)
if err != nil {
return nil, errors.Wrap(err, "init TNSUST pair")
}
LUVUST, err := NewPair(querier, "terra1hmcd4kwafyydd4mjv2rzhcuuwnfuqc2prkmlhj", terra.LUV, terra.UST, terra.TERRASWAP_LUVUSTLP)
if err != nil {
return nil, errors.Wrap(err, "init LUVUST pair")
}
ROBOUST, err := NewPair(querier, "terra1sprg4sv9dwnk78ahxdw78asslj8upyv9lerjhm", terra.ROBO, terra.UST, terra.TERRASWAP_ROBOUSTLP)
if err != nil {
return nil, errors.Wrap(err, "init ROBOUST pair")
}
XSDWHSD, err := NewPair(querier, "terra1cmehvqwvglg08clmqn66zfuv5cuxgxwrt3jz2u", terra.XSD, terra.WHSD, terra.TERRASWAP_XSDWHSDLP)
if err != nil {
return nil, errors.Wrap(err, "init XSDWHSD pair")
}
WHSDUST, err := NewPair(querier, "terra1upuslwv5twc8l7hrwlka4wju9z97q8ju63a6jt", terra.WHSD, terra.UST, terra.TERRASWAP_WHSDUSTLP)
if err != nil {
return nil, errors.Wrap(err, "init WHSDUST pair")
}
NLUNAPSI, err := NewPair(querier, "terra1zvn8z6y8u2ndwvsjhtpsjsghk6pa6ugwzxp6vx", terra.NLUNA, terra.PSI, terra.TERRASWAP_NLUNAPSILP)
if err != nil {
return nil, errors.Wrap(err, "init NLUNAPSI pair")
}
XASTROASTRO, err := NewPair(querier, "terra14q2h9nce4spj8n74g6kppj3yf86qx8hsrqngfh", terra.XASTRO, terra.ASTRO, terra.TERRASWAP_XASTROASTROLP)
if err != nil {
return nil, errors.Wrap(err, "init NLUNAPSI pair")
}
r.SetPairs(
LUNAUST,
BLUNALUNA,
LUNALUNAX,
LUNAXBLUNA,
LUNAXUST,
BLUNAUST,
KUJIUST,
PLUNAUST,
STLUNAUST,
ANCUST,
MIRUST,
LOOPUST,
LOOPRUST,
MINEUST,
SKUJIKUJI,
MARSUST,
PRISMXPRISM,
CLUNALUNA,
ASTROUST,
AUSTUST,
AUSTVUST,
WHALEVUST,
BETHUST,
WHALEUST,
SPECUST,
STTUST,
TWDUST,
PSIUST,
PLYUST,
LOTAUST,
APOLLOUST,
VKRUST,
ORIONUST,
ATLOUST,
GLOWUST,
TNSUST,
LUVUST,
ROBOUST,
XSDWHSD,
WHSDUST,
PRISMUST,
NLUNAPSI,
XASTROASTRO,
)
return &Router{r}, nil
}
type swap struct {
OfferAssetInfo terra.AssetInfo `json:"offer_asset_info"`
AskAssetInfo terra.AssetInfo `json:"ask_asset_info"`
}
type operation struct {
Swap swap `json:"terra_swap"`
}
func newOperation(aiFactory terra.AssetInfoFactory, offer terra.Token, ask terra.Token) interface{} {
var res operation
res.Swap.OfferAssetInfo = aiFactory.NewFromToken(offer)
res.Swap.AskAssetInfo = aiFactory.NewFromToken(ask)
return res
}
func (r Router) String() string {
return "terraswap"
}