@shipload/sdk 1.0.0-next.62 → 1.0.0-next.64

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (62) hide show
  1. package/lib/shipload.d.ts +1829 -501
  2. package/lib/shipload.js +4325 -1324
  3. package/lib/shipload.js.map +1 -1
  4. package/lib/shipload.m.js +4286 -1389
  5. package/lib/shipload.m.js.map +1 -1
  6. package/lib/testing.d.ts +391 -13
  7. package/lib/testing.js +1692 -107
  8. package/lib/testing.js.map +1 -1
  9. package/lib/testing.m.js +1693 -108
  10. package/lib/testing.m.js.map +1 -1
  11. package/package.json +2 -2
  12. package/src/contracts/fund.ts +201 -0
  13. package/src/contracts/platform.ts +73 -1
  14. package/src/contracts/server.ts +946 -26
  15. package/src/contracts/token.ts +170 -0
  16. package/src/contracts.ts +2 -0
  17. package/src/data/catalog.test.ts +19 -0
  18. package/src/data/catalog.ts +6 -0
  19. package/src/data/charters.json +198 -0
  20. package/src/data/citizenry-adjectives.json +42 -0
  21. package/src/data/citizenry-nouns.json +50 -0
  22. package/src/data/entities.json +36 -0
  23. package/src/data/item-ids.ts +2 -0
  24. package/src/data/items.json +12 -0
  25. package/src/data/kind-registry.json +20 -3
  26. package/src/data/kind-registry.ts +5 -0
  27. package/src/data/metadata.ts +14 -0
  28. package/src/data/recipes.json +0 -48
  29. package/src/derivation/capabilities.ts +14 -0
  30. package/src/derivation/recipe-usage.test.ts +0 -2
  31. package/src/format.ts +9 -0
  32. package/src/index-module.ts +32 -2
  33. package/src/influence/categories.ts +32 -0
  34. package/src/influence/charters.test.ts +126 -0
  35. package/src/influence/charters.ts +120 -0
  36. package/src/influence/citizenry.ts +38 -0
  37. package/src/influence/constants.ts +63 -0
  38. package/src/influence/decay.ts +20 -0
  39. package/src/influence/decomp.ts +95 -0
  40. package/src/influence/demand.ts +106 -0
  41. package/src/influence/duration.ts +36 -0
  42. package/src/influence/index.ts +63 -0
  43. package/src/influence/influence.test.ts +317 -0
  44. package/src/influence/quality.ts +25 -0
  45. package/src/influence/valuation.ts +154 -0
  46. package/src/managers/actions.ts +227 -5
  47. package/src/managers/balances.test.ts +161 -0
  48. package/src/managers/balances.ts +93 -0
  49. package/src/managers/construction.ts +11 -1
  50. package/src/managers/context.ts +18 -0
  51. package/src/managers/entities.ts +11 -0
  52. package/src/managers/index.ts +15 -1
  53. package/src/managers/influence.test.ts +58 -0
  54. package/src/managers/influence.ts +347 -0
  55. package/src/managers/nft.test.ts +8 -1
  56. package/src/managers/nft.ts +56 -16
  57. package/src/nft/description.ts +7 -0
  58. package/src/scheduling/task-cargo.ts +1 -0
  59. package/src/shipload.ts +10 -0
  60. package/src/types.ts +23 -4
  61. package/src/utils/hash.ts +4 -0
  62. package/src/utils/system.ts +1 -5
@@ -0,0 +1,170 @@
1
+ import type {Action, AssetType, NameType} from '@wharfkit/antelope'
2
+ import {ABI, Asset, Blob, Name, Struct} from '@wharfkit/antelope'
3
+ import type {ActionOptions, ContractArgs, PartialBy, Table} from '@wharfkit/contract'
4
+ import {Contract as BaseContract} from '@wharfkit/contract'
5
+ export const abiBlob = Blob.from(
6
+ 'DmVvc2lvOjphYmkvMS4yAAoHYWNjb3VudAABB2JhbGFuY2UFYXNzZXQFY2xvc2UAAgVvd25lcgRuYW1lBnN5bWJvbAZzeW1ib2wGY3JlYXRlAAIGaXNzdWVyBG5hbWUObWF4aW11bV9zdXBwbHkFYXNzZXQOY3VycmVuY3lfc3RhdHMAAwZzdXBwbHkFYXNzZXQKbWF4X3N1cHBseQVhc3NldAZpc3N1ZXIEbmFtZQVpc3N1ZQADAnRvBG5hbWUIcXVhbnRpdHkFYXNzZXQEbWVtbwZzdHJpbmcKaXNzdWVmaXhlZAADAnRvBG5hbWUGc3VwcGx5BWFzc2V0BG1lbW8Gc3RyaW5nBG9wZW4AAwVvd25lcgRuYW1lBnN5bWJvbAZzeW1ib2wJcmFtX3BheWVyBG5hbWUGcmV0aXJlAAIIcXVhbnRpdHkFYXNzZXQEbWVtbwZzdHJpbmcMc2V0bWF4c3VwcGx5AAIGaXNzdWVyBG5hbWUObWF4aW11bV9zdXBwbHkFYXNzZXQIdHJhbnNmZXIABARmcm9tBG5hbWUCdG8EbmFtZQhxdWFudGl0eQVhc3NldARtZW1vBnN0cmluZwgAAAAAAIVpRAVjbG9zZfkDLS0tCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogQ2xvc2UgVG9rZW4gQmFsYW5jZQpzdW1tYXJ5OiAnQ2xvc2Uge3tub3dyYXAgb3duZXJ9feKAmXMgemVybyBxdWFudGl0eSBiYWxhbmNlJwppY29uOiBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vZW9zbmV0d29ya2ZvdW5kYXRpb24vZW9zLXN5c3RlbS1jb250cmFjdHMvbWFpbi9jb250cmFjdHMvaWNvbnMvdG9rZW4ucG5nIzIwN2ZmNjhiMDQwNmVhYTU2NjE4YjA4YmRhODFkNmEwOTU0NTQzZjM2YWRjMzI4YWIzMDY1ZjMxYTVjNWQ2NTQKLS0tCgp7e293bmVyfX0gYWdyZWVzIHRvIGNsb3NlIHRoZWlyIHplcm8gcXVhbnRpdHkgYmFsYW5jZSBmb3IgdGhlIHt7c3ltYm9sX3RvX3N5bWJvbF9jb2RlIHN5bWJvbH19IHRva2VuLgoKUkFNIHdpbGwgYmUgcmVmdW5kZWQgdG8gdGhlIFJBTSBwYXllciBvZiB0aGUge3tzeW1ib2xfdG9fc3ltYm9sX2NvZGUgc3ltYm9sfX0gdG9rZW4gYmFsYW5jZSBmb3Ige3tvd25lcn19LgAAAACobNRFBmNyZWF0ZZoFLS0tCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogQ3JlYXRlIE5ldyBUb2tlbgpzdW1tYXJ5OiAnQ3JlYXRlIGEgbmV3IHRva2VuJwppY29uOiBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vZW9zbmV0d29ya2ZvdW5kYXRpb24vZW9zLXN5c3RlbS1jb250cmFjdHMvbWFpbi9jb250cmFjdHMvaWNvbnMvdG9rZW4ucG5nIzIwN2ZmNjhiMDQwNmVhYTU2NjE4YjA4YmRhODFkNmEwOTU0NTQzZjM2YWRjMzI4YWIzMDY1ZjMxYTVjNWQ2NTQKLS0tCgp7eyRhY3Rpb24uYWNjb3VudH19IGFncmVlcyB0byBjcmVhdGUgYSBuZXcgdG9rZW4gd2l0aCBzeW1ib2wge3thc3NldF90b19zeW1ib2xfY29kZSBtYXhpbXVtX3N1cHBseX19IHRvIGJlIG1hbmFnZWQgYnkge3tpc3N1ZXJ9fS4KClRoaXMgYWN0aW9uIHdpbGwgbm90IHJlc3VsdCBhbnkgYW55IHRva2VucyBiZWluZyBpc3N1ZWQgaW50byBjaXJjdWxhdGlvbi4KCnt7aXNzdWVyfX0gd2lsbCBiZSBhbGxvd2VkIHRvIGlzc3VlIHRva2VucyBpbnRvIGNpcmN1bGF0aW9uLCB1cCB0byBhIG1heGltdW0gc3VwcGx5IG9mIHt7bWF4aW11bV9zdXBwbHl9fS4KClJBTSB3aWxsIGRlZHVjdGVkIGZyb20ge3skYWN0aW9uLmFjY291bnR9feKAmXMgcmVzb3VyY2VzIHRvIGNyZWF0ZSB0aGUgbmVjZXNzYXJ5IHJlY29yZHMuAAAAAAClMXYFaXNzdWXuBy0tLQpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IElzc3VlIFRva2VucyBpbnRvIENpcmN1bGF0aW9uCnN1bW1hcnk6ICdJc3N1ZSB7e25vd3JhcCBxdWFudGl0eX19IGludG8gY2lyY3VsYXRpb24gYW5kIHRyYW5zZmVyIGludG8ge3tub3dyYXAgdG99feKAmXMgYWNjb3VudCcKaWNvbjogaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2Vvc25ldHdvcmtmb3VuZGF0aW9uL2Vvcy1zeXN0ZW0tY29udHJhY3RzL21haW4vY29udHJhY3RzL2ljb25zL3Rva2VuLnBuZyMyMDdmZjY4YjA0MDZlYWE1NjYxOGIwOGJkYTgxZDZhMDk1NDU0M2YzNmFkYzMyOGFiMzA2NWYzMWE1YzVkNjU0Ci0tLQoKVGhlIHRva2VuIG1hbmFnZXIgYWdyZWVzIHRvIGlzc3VlIHt7cXVhbnRpdHl9fSBpbnRvIGNpcmN1bGF0aW9uLCBhbmQgdHJhbnNmZXIgaXQgaW50byB7e3RvfX3igJlzIGFjY291bnQuCgp7eyNpZiBtZW1vfX1UaGVyZSBpcyBhIG1lbW8gYXR0YWNoZWQgdG8gdGhlIHRyYW5zZmVyIHN0YXRpbmc6Cnt7bWVtb319Cnt7L2lmfX0KCklmIHt7dG99fSBkb2VzIG5vdCBoYXZlIGEgYmFsYW5jZSBmb3Ige3thc3NldF90b19zeW1ib2xfY29kZSBxdWFudGl0eX19LCBvciB0aGUgdG9rZW4gbWFuYWdlciBkb2VzIG5vdCBoYXZlIGEgYmFsYW5jZSBmb3Ige3thc3NldF90b19zeW1ib2xfY29kZSBxdWFudGl0eX19LCB0aGUgdG9rZW4gbWFuYWdlciB3aWxsIGJlIGRlc2lnbmF0ZWQgYXMgdGhlIFJBTSBwYXllciBvZiB0aGUge3thc3NldF90b19zeW1ib2xfY29kZSBxdWFudGl0eX19IHRva2VuIGJhbGFuY2UgZm9yIHt7dG99fS4gQXMgYSByZXN1bHQsIFJBTSB3aWxsIGJlIGRlZHVjdGVkIGZyb20gdGhlIHRva2VuIG1hbmFnZXLigJlzIHJlc291cmNlcyB0byBjcmVhdGUgdGhlIG5lY2Vzc2FyeSByZWNvcmRzLgoKVGhpcyBhY3Rpb24gZG9lcyBub3QgYWxsb3cgdGhlIHRvdGFsIHF1YW50aXR5IHRvIGV4Y2VlZCB0aGUgbWF4IGFsbG93ZWQgc3VwcGx5IG9mIHRoZSB0b2tlbi4AQFLdLaUxdgppc3N1ZWZpeGVkoQgtLS0Kc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBJc3N1ZSBGaXhlZCBTdXBwbHkgb2YgVG9rZW5zIGludG8gQ2lyY3VsYXRpb24Kc3VtbWFyeTogJ0lzc3VlIHVwIHRvIHt7bm93cmFwIHN1cHBseX19IHN1cHBseSBpbnRvIGNpcmN1bGF0aW9uIGFuZCB0cmFuc2ZlciBpbnRvIHt7bm93cmFwIHRvfX3igJlzIGFjY291bnQnCmljb246IGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9lb3NuZXR3b3JrZm91bmRhdGlvbi9lb3Mtc3lzdGVtLWNvbnRyYWN0cy9tYWluL2NvbnRyYWN0cy9pY29ucy90b2tlbi5wbmcjMjA3ZmY2OGIwNDA2ZWFhNTY2MThiMDhiZGE4MWQ2YTA5NTQ1NDNmMzZhZGMzMjhhYjMwNjVmMzFhNWM1ZDY1NAotLS0KClRoZSB0b2tlbiBtYW5hZ2VyIGFncmVlcyB0byBpc3N1ZSB0b2tlbnMgdXAgdG8ge3tzdXBwbHl9fSBmaXhlZCBzdXBwbHkgaW50byBjaXJjdWxhdGlvbiwgYW5kIHRyYW5zZmVyIGl0IGludG8ge3t0b3194oCZcyBhY2NvdW50LgoKe3sjaWYgbWVtb319VGhlcmUgaXMgYSBtZW1vIGF0dGFjaGVkIHRvIHRoZSB0cmFuc2ZlciBzdGF0aW5nOgp7e21lbW99fQp7ey9pZn19CgpJZiB7e3RvfX0gZG9lcyBub3QgaGF2ZSBhIGJhbGFuY2UgZm9yIHt7YXNzZXRfdG9fc3ltYm9sX2NvZGUgcXVhbnRpdHl9fSwgb3IgdGhlIHRva2VuIG1hbmFnZXIgZG9lcyBub3QgaGF2ZSBhIGJhbGFuY2UgZm9yIHt7YXNzZXRfdG9fc3ltYm9sX2NvZGUgcXVhbnRpdHl9fSwgdGhlIHRva2VuIG1hbmFnZXIgd2lsbCBiZSBkZXNpZ25hdGVkIGFzIHRoZSBSQU0gcGF5ZXIgb2YgdGhlIHt7YXNzZXRfdG9fc3ltYm9sX2NvZGUgcXVhbnRpdHl9fSB0b2tlbiBiYWxhbmNlIGZvciB7e3RvfX0uIEFzIGEgcmVzdWx0LCBSQU0gd2lsbCBiZSBkZWR1Y3RlZCBmcm9tIHRoZSB0b2tlbiBtYW5hZ2Vy4oCZcyByZXNvdXJjZXMgdG8gY3JlYXRlIHRoZSBuZWNlc3NhcnkgcmVjb3Jkcy4KClRoaXMgYWN0aW9uIGRvZXMgbm90IGFsbG93IHRoZSB0b3RhbCBxdWFudGl0eSB0byBleGNlZWQgdGhlIG1heCBhbGxvd2VkIHN1cHBseSBvZiB0aGUgdG9rZW4uAAAAAAAwVaUEb3BlbsYFLS0tCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogT3BlbiBUb2tlbiBCYWxhbmNlCnN1bW1hcnk6ICdPcGVuIGEgemVybyBxdWFudGl0eSBiYWxhbmNlIGZvciB7e25vd3JhcCBvd25lcn19JwppY29uOiBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vZW9zbmV0d29ya2ZvdW5kYXRpb24vZW9zLXN5c3RlbS1jb250cmFjdHMvbWFpbi9jb250cmFjdHMvaWNvbnMvdG9rZW4ucG5nIzIwN2ZmNjhiMDQwNmVhYTU2NjE4YjA4YmRhODFkNmEwOTU0NTQzZjM2YWRjMzI4YWIzMDY1ZjMxYTVjNWQ2NTQKLS0tCgp7e3JhbV9wYXllcn19IGFncmVlcyB0byBlc3RhYmxpc2ggYSB6ZXJvIHF1YW50aXR5IGJhbGFuY2UgZm9yIHt7b3duZXJ9fSBmb3IgdGhlIHt7c3ltYm9sX3RvX3N5bWJvbF9jb2RlIHN5bWJvbH19IHRva2VuLgoKSWYge3tvd25lcn19IGRvZXMgbm90IGhhdmUgYSBiYWxhbmNlIGZvciB7e3N5bWJvbF90b19zeW1ib2xfY29kZSBzeW1ib2x9fSwge3tyYW1fcGF5ZXJ9fSB3aWxsIGJlIGRlc2lnbmF0ZWQgYXMgdGhlIFJBTSBwYXllciBvZiB0aGUge3tzeW1ib2xfdG9fc3ltYm9sX2NvZGUgc3ltYm9sfX0gdG9rZW4gYmFsYW5jZSBmb3Ige3tvd25lcn19LiBBcyBhIHJlc3VsdCwgUkFNIHdpbGwgYmUgZGVkdWN0ZWQgZnJvbSB7e3JhbV9wYXllcn194oCZcyByZXNvdXJjZXMgdG8gY3JlYXRlIHRoZSBuZWNlc3NhcnkgcmVjb3Jkcy4AAAAAqOuyugZyZXRpcmXcAy0tLQpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IFJlbW92ZSBUb2tlbnMgZnJvbSBDaXJjdWxhdGlvbgpzdW1tYXJ5OiAnUmVtb3ZlIHt7bm93cmFwIHF1YW50aXR5fX0gZnJvbSBjaXJjdWxhdGlvbicKaWNvbjogaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2Vvc25ldHdvcmtmb3VuZGF0aW9uL2Vvcy1zeXN0ZW0tY29udHJhY3RzL21haW4vY29udHJhY3RzL2ljb25zL3Rva2VuLnBuZyMyMDdmZjY4YjA0MDZlYWE1NjYxOGIwOGJkYTgxZDZhMDk1NDU0M2YzNmFkYzMyOGFiMzA2NWYzMWE1YzVkNjU0Ci0tLQoKVGhlIHRva2VuIG1hbmFnZXIgYWdyZWVzIHRvIHJlbW92ZSB7e3F1YW50aXR5fX0gZnJvbSBjaXJjdWxhdGlvbiwgdGFrZW4gZnJvbSB0aGVpciBvd24gYWNjb3VudC4KCnt7I2lmIG1lbW99fSBUaGVyZSBpcyBhIG1lbW8gYXR0YWNoZWQgdG8gdGhlIGFjdGlvbiBzdGF0aW5nOgp7e21lbW99fQp7ey9pZn194GOtGncjs8IMc2V0bWF4c3VwcGx5wAMtLS0Kc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBTZXQgTWF4IFN1cHBseQpzdW1tYXJ5OiAnU2V0IG1heCBzdXBwbHkgZm9yIHRva2VuJwppY29uOiBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vZW9zbmV0d29ya2ZvdW5kYXRpb24vZW9zLXN5c3RlbS1jb250cmFjdHMvbWFpbi9jb250cmFjdHMvaWNvbnMvdG9rZW4ucG5nIzIwN2ZmNjhiMDQwNmVhYTU2NjE4YjA4YmRhODFkNmEwOTU0NTQzZjM2YWRjMzI4YWIzMDY1ZjMxYTVjNWQ2NTQKLS0tCgp7e2lzc3Vlcn19IHdpbGwgYmUgYWxsb3dlZCB0byBpc3N1ZSB0b2tlbnMgaW50byBjaXJjdWxhdGlvbiwgdXAgdG8gYSBtYXhpbXVtIHN1cHBseSBvZiB7e21heGltdW1fc3VwcGx5fX0uCgpUaGlzIGFjdGlvbiB3aWxsIG5vdCByZXN1bHQgYW55IGFueSB0b2tlbnMgYmVpbmcgaXNzdWVkIGludG8gY2lyY3VsYXRpb24uAAAAVy08zc0IdHJhbnNmZXK2By0tLQpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IFRyYW5zZmVyIFRva2VucwpzdW1tYXJ5OiAnU2VuZCB7e25vd3JhcCBxdWFudGl0eX19IGZyb20ge3tub3dyYXAgZnJvbX19IHRvIHt7bm93cmFwIHRvfX0nCmljb246IGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9lb3NuZXR3b3JrZm91bmRhdGlvbi9lb3Mtc3lzdGVtLWNvbnRyYWN0cy9tYWluL2NvbnRyYWN0cy9pY29ucy90cmFuc2Zlci5wbmcjNWRmYWQwZGY3Mjc3MmVlMWNjYzE1NWU2NzBjMWQxMjRmNWM1MTIyZjFkNTAyNzU2NWRmMzhiNDE4MDQyZDFkZAotLS0KCnt7ZnJvbX19IGFncmVlcyB0byBzZW5kIHt7cXVhbnRpdHl9fSB0byB7e3RvfX0uCgp7eyNpZiBtZW1vfX1UaGVyZSBpcyBhIG1lbW8gYXR0YWNoZWQgdG8gdGhlIHRyYW5zZmVyIHN0YXRpbmc6Cnt7bWVtb319Cnt7L2lmfX0KCklmIHt7ZnJvbX19IGlzIG5vdCBhbHJlYWR5IHRoZSBSQU0gcGF5ZXIgb2YgdGhlaXIge3thc3NldF90b19zeW1ib2xfY29kZSBxdWFudGl0eX19IHRva2VuIGJhbGFuY2UsIHt7ZnJvbX19IHdpbGwgYmUgZGVzaWduYXRlZCBhcyBzdWNoLiBBcyBhIHJlc3VsdCwgUkFNIHdpbGwgYmUgZGVkdWN0ZWQgZnJvbSB7e2Zyb219feKAmXMgcmVzb3VyY2VzIHRvIHJlZnVuZCB0aGUgb3JpZ2luYWwgUkFNIHBheWVyLgoKSWYge3t0b319IGRvZXMgbm90IGhhdmUgYSBiYWxhbmNlIGZvciB7e2Fzc2V0X3RvX3N5bWJvbF9jb2RlIHF1YW50aXR5fX0sIHt7ZnJvbX19IHdpbGwgYmUgZGVzaWduYXRlZCBhcyB0aGUgUkFNIHBheWVyIG9mIHRoZSB7e2Fzc2V0X3RvX3N5bWJvbF9jb2RlIHF1YW50aXR5fX0gdG9rZW4gYmFsYW5jZSBmb3Ige3t0b319LiBBcyBhIHJlc3VsdCwgUkFNIHdpbGwgYmUgZGVkdWN0ZWQgZnJvbSB7e2Zyb219feKAmXMgcmVzb3VyY2VzIHRvIGNyZWF0ZSB0aGUgbmVjZXNzYXJ5IHJlY29yZHMuAgAAADhPTREyA2k2NAAAB2FjY291bnQAAAAAAJBNxgNpNjQAAA5jdXJyZW5jeV9zdGF0cwAAAAAA'
7
+ )
8
+ export const abi = ABI.from(abiBlob)
9
+ export namespace Types {
10
+ @Struct.type('account')
11
+ export class account extends Struct {
12
+ @Struct.field(Asset)
13
+ declare balance: Asset
14
+ }
15
+ @Struct.type('close')
16
+ export class close extends Struct {
17
+ @Struct.field(Name)
18
+ declare owner: Name
19
+ @Struct.field(Asset.Symbol)
20
+ declare symbol: Asset.Symbol
21
+ }
22
+ @Struct.type('create')
23
+ export class create extends Struct {
24
+ @Struct.field(Name)
25
+ declare issuer: Name
26
+ @Struct.field(Asset)
27
+ declare maximum_supply: Asset
28
+ }
29
+ @Struct.type('currency_stats')
30
+ export class currency_stats extends Struct {
31
+ @Struct.field(Asset)
32
+ declare supply: Asset
33
+ @Struct.field(Asset)
34
+ declare max_supply: Asset
35
+ @Struct.field(Name)
36
+ declare issuer: Name
37
+ }
38
+ @Struct.type('issue')
39
+ export class issue extends Struct {
40
+ @Struct.field(Name)
41
+ declare to: Name
42
+ @Struct.field(Asset)
43
+ declare quantity: Asset
44
+ @Struct.field('string')
45
+ declare memo: string
46
+ }
47
+ @Struct.type('issuefixed')
48
+ export class issuefixed extends Struct {
49
+ @Struct.field(Name)
50
+ declare to: Name
51
+ @Struct.field(Asset)
52
+ declare supply: Asset
53
+ @Struct.field('string')
54
+ declare memo: string
55
+ }
56
+ @Struct.type('open')
57
+ export class open extends Struct {
58
+ @Struct.field(Name)
59
+ declare owner: Name
60
+ @Struct.field(Asset.Symbol)
61
+ declare symbol: Asset.Symbol
62
+ @Struct.field(Name)
63
+ declare ram_payer: Name
64
+ }
65
+ @Struct.type('retire')
66
+ export class retire extends Struct {
67
+ @Struct.field(Asset)
68
+ declare quantity: Asset
69
+ @Struct.field('string')
70
+ declare memo: string
71
+ }
72
+ @Struct.type('setmaxsupply')
73
+ export class setmaxsupply extends Struct {
74
+ @Struct.field(Name)
75
+ declare issuer: Name
76
+ @Struct.field(Asset)
77
+ declare maximum_supply: Asset
78
+ }
79
+ @Struct.type('transfer')
80
+ export class transfer extends Struct {
81
+ @Struct.field(Name)
82
+ declare from: Name
83
+ @Struct.field(Name)
84
+ declare to: Name
85
+ @Struct.field(Asset)
86
+ declare quantity: Asset
87
+ @Struct.field('string')
88
+ declare memo: string
89
+ }
90
+ }
91
+ export const TableMap = {
92
+ accounts: Types.account,
93
+ stat: Types.currency_stats,
94
+ }
95
+ export interface TableTypes {
96
+ accounts: Types.account
97
+ stat: Types.currency_stats
98
+ }
99
+ export type RowType<T> = T extends keyof TableTypes ? TableTypes[T] : any
100
+ export type TableNames = keyof TableTypes
101
+ export namespace ActionParams {
102
+ export namespace Type {}
103
+ export interface close {
104
+ owner: NameType
105
+ symbol: Asset.SymbolType
106
+ }
107
+ export interface create {
108
+ issuer: NameType
109
+ maximum_supply: AssetType
110
+ }
111
+ export interface issue {
112
+ to: NameType
113
+ quantity: AssetType
114
+ memo: string
115
+ }
116
+ export interface issuefixed {
117
+ to: NameType
118
+ supply: AssetType
119
+ memo: string
120
+ }
121
+ export interface open {
122
+ owner: NameType
123
+ symbol: Asset.SymbolType
124
+ ram_payer: NameType
125
+ }
126
+ export interface retire {
127
+ quantity: AssetType
128
+ memo: string
129
+ }
130
+ export interface setmaxsupply {
131
+ issuer: NameType
132
+ maximum_supply: AssetType
133
+ }
134
+ export interface transfer {
135
+ from: NameType
136
+ to: NameType
137
+ quantity: AssetType
138
+ memo: string
139
+ }
140
+ }
141
+ export interface ActionNameParams {
142
+ close: ActionParams.close
143
+ create: ActionParams.create
144
+ issue: ActionParams.issue
145
+ issuefixed: ActionParams.issuefixed
146
+ open: ActionParams.open
147
+ retire: ActionParams.retire
148
+ setmaxsupply: ActionParams.setmaxsupply
149
+ transfer: ActionParams.transfer
150
+ }
151
+ export type ActionNames = keyof ActionNameParams
152
+ export class Contract extends BaseContract {
153
+ constructor(args: PartialBy<ContractArgs, 'abi' | 'account'>) {
154
+ super({
155
+ client: args.client,
156
+ abi: abi,
157
+ account: args.account || Name.from('eosio.token'),
158
+ })
159
+ }
160
+ action<T extends ActionNames>(
161
+ name: T,
162
+ data: ActionNameParams[T],
163
+ options?: ActionOptions
164
+ ): Action {
165
+ return super.action(name, data, options)
166
+ }
167
+ table<T extends TableNames>(name: T, scope?: NameType): Table<RowType<T>> {
168
+ return super.table(name, scope, TableMap[name])
169
+ }
170
+ }
package/src/contracts.ts CHANGED
@@ -1,2 +1,4 @@
1
+ export * as FundContract from './contracts/fund'
1
2
  export * as PlatformContract from './contracts/platform'
2
3
  export * as ServerContract from './contracts/server'
4
+ export * as TokenContract from './contracts/token'
@@ -0,0 +1,19 @@
1
+ import {describe, expect, test} from 'bun:test'
2
+ import {getItems, itemTypeIndex, typeLabel} from './catalog'
3
+
4
+ describe('itemTypeIndex', () => {
5
+ test('agrees with typeLabel for every item in the catalog', () => {
6
+ for (const item of getItems()) {
7
+ expect(typeLabel(itemTypeIndex(item.id))).toBe(typeLabel(item.type))
8
+ }
9
+ })
10
+
11
+ test('covers every type in the chain enum order', () => {
12
+ const indexes = new Set(getItems().map((item) => itemTypeIndex(item.id)))
13
+ expect([...indexes].sort()).toEqual([0, 1, 2, 3])
14
+ })
15
+
16
+ test('throws for an unknown item', () => {
17
+ expect(() => itemTypeIndex(65535)).toThrow()
18
+ })
19
+ })
@@ -106,6 +106,12 @@ const TYPE_LABEL_BY_STRING: Record<ItemType, string> = {
106
106
 
107
107
  const TYPE_BY_INDEX: ItemType[] = ['resource', 'component', 'module', 'entity']
108
108
 
109
+ export function itemTypeIndex(itemId: UInt16Type): number {
110
+ const index = TYPE_BY_INDEX.indexOf(getItem(itemId).type)
111
+ if (index < 0) throw new Error(`Unknown item type for item ${UInt16.from(itemId).toNumber()}`)
112
+ return index
113
+ }
114
+
109
115
  export function typeLabel(type: ItemType | number): string {
110
116
  if (typeof type === 'number') {
111
117
  const t = TYPE_BY_INDEX[type]
@@ -0,0 +1,198 @@
1
+ {
2
+ "nodes": [
3
+ {
4
+ "nodeId": 1,
5
+ "cost": "2000000000",
6
+ "prereqs": [],
7
+ "effect": {
8
+ "kind": 1,
9
+ "itemId": 10208,
10
+ "targetItemId": 0,
11
+ "slotMask": 0,
12
+ "stat": 213
13
+ }
14
+ },
15
+ {
16
+ "nodeId": 2,
17
+ "cost": "4000000000",
18
+ "prereqs": [
19
+ 1
20
+ ],
21
+ "effect": {
22
+ "kind": 1,
23
+ "itemId": 10216,
24
+ "targetItemId": 0,
25
+ "slotMask": 0,
26
+ "stat": 213
27
+ }
28
+ },
29
+ {
30
+ "nodeId": 3,
31
+ "cost": "3000000000",
32
+ "prereqs": [
33
+ 1
34
+ ],
35
+ "effect": {
36
+ "kind": 1,
37
+ "itemId": 10209,
38
+ "targetItemId": 0,
39
+ "slotMask": 0,
40
+ "stat": 213
41
+ }
42
+ },
43
+ {
44
+ "nodeId": 4,
45
+ "cost": "2000000000",
46
+ "prereqs": [
47
+ 1
48
+ ],
49
+ "effect": {
50
+ "kind": 2,
51
+ "itemId": 10104,
52
+ "targetItemId": 10208,
53
+ "slotMask": 0,
54
+ "stat": 400
55
+ }
56
+ },
57
+ {
58
+ "nodeId": 5,
59
+ "cost": "3000000000",
60
+ "prereqs": [
61
+ 3
62
+ ],
63
+ "effect": {
64
+ "kind": 2,
65
+ "itemId": 10110,
66
+ "targetItemId": 10209,
67
+ "slotMask": 2,
68
+ "stat": 400
69
+ }
70
+ },
71
+ {
72
+ "nodeId": 6,
73
+ "cost": "2500000000",
74
+ "prereqs": [
75
+ 1
76
+ ],
77
+ "effect": {
78
+ "kind": 1,
79
+ "itemId": 10219,
80
+ "targetItemId": 0,
81
+ "slotMask": 1,
82
+ "stat": 0
83
+ }
84
+ },
85
+ {
86
+ "nodeId": 7,
87
+ "cost": "1000000000",
88
+ "prereqs": [
89
+ 6
90
+ ],
91
+ "effect": {
92
+ "kind": 2,
93
+ "itemId": 10105,
94
+ "targetItemId": 10219,
95
+ "slotMask": 2,
96
+ "stat": 213
97
+ }
98
+ },
99
+ {
100
+ "nodeId": 8,
101
+ "cost": "1500000000",
102
+ "prereqs": [
103
+ 7
104
+ ],
105
+ "effect": {
106
+ "kind": 2,
107
+ "itemId": 10105,
108
+ "targetItemId": 10219,
109
+ "slotMask": 4,
110
+ "stat": 213
111
+ }
112
+ },
113
+ {
114
+ "nodeId": 9,
115
+ "cost": "2000000000",
116
+ "prereqs": [
117
+ 8
118
+ ],
119
+ "effect": {
120
+ "kind": 2,
121
+ "itemId": 10105,
122
+ "targetItemId": 10219,
123
+ "slotMask": 8,
124
+ "stat": 213
125
+ }
126
+ },
127
+ {
128
+ "nodeId": 10,
129
+ "cost": "2500000000",
130
+ "prereqs": [
131
+ 9
132
+ ],
133
+ "effect": {
134
+ "kind": 2,
135
+ "itemId": 10105,
136
+ "targetItemId": 10219,
137
+ "slotMask": 16,
138
+ "stat": 213
139
+ }
140
+ },
141
+ {
142
+ "nodeId": 11,
143
+ "cost": "800000000",
144
+ "prereqs": [
145
+ 6
146
+ ],
147
+ "effect": {
148
+ "kind": 2,
149
+ "itemId": 10103,
150
+ "targetItemId": 10219,
151
+ "slotMask": 1,
152
+ "stat": 100
153
+ }
154
+ },
155
+ {
156
+ "nodeId": 12,
157
+ "cost": "1200000000",
158
+ "prereqs": [
159
+ 11
160
+ ],
161
+ "effect": {
162
+ "kind": 2,
163
+ "itemId": 10103,
164
+ "targetItemId": 10219,
165
+ "slotMask": 1,
166
+ "stat": 200
167
+ }
168
+ },
169
+ {
170
+ "nodeId": 13,
171
+ "cost": "1600000000",
172
+ "prereqs": [
173
+ 12
174
+ ],
175
+ "effect": {
176
+ "kind": 2,
177
+ "itemId": 10103,
178
+ "targetItemId": 10219,
179
+ "slotMask": 1,
180
+ "stat": 300
181
+ }
182
+ },
183
+ {
184
+ "nodeId": 14,
185
+ "cost": "2000000000",
186
+ "prereqs": [
187
+ 13
188
+ ],
189
+ "effect": {
190
+ "kind": 2,
191
+ "itemId": 10103,
192
+ "targetItemId": 10219,
193
+ "slotMask": 1,
194
+ "stat": 400
195
+ }
196
+ }
197
+ ]
198
+ }
@@ -0,0 +1,42 @@
1
+ [
2
+ "Free",
3
+ "Civic",
4
+ "United",
5
+ "Sovereign",
6
+ "Common",
7
+ "Greater",
8
+ "Outer",
9
+ "Inner",
10
+ "New",
11
+ "Old",
12
+ "Grand",
13
+ "High",
14
+ "Deep",
15
+ "Bright",
16
+ "Open",
17
+ "Steadfast",
18
+ "Enduring",
19
+ "Rising",
20
+ "Standing",
21
+ "Unified",
22
+ "Allied",
23
+ "Independent",
24
+ "Provisional",
25
+ "Perpetual",
26
+ "Elder",
27
+ "Prime",
28
+ "Central",
29
+ "Frontier",
30
+ "Distant",
31
+ "Kindred",
32
+ "Mutual",
33
+ "Shared",
34
+ "Reformed",
35
+ "Restored",
36
+ "Second",
37
+ "Orbital",
38
+ "Solar",
39
+ "Verdant",
40
+ "Far",
41
+ "Wayward"
42
+ ]
@@ -0,0 +1,50 @@
1
+ [
2
+ "Collective",
3
+ "Compact",
4
+ "Concord",
5
+ "Union",
6
+ "Assembly",
7
+ "League",
8
+ "Accord",
9
+ "Commune",
10
+ "Congress",
11
+ "Coalition",
12
+ "Charter",
13
+ "Syndicate",
14
+ "Directorate",
15
+ "Movement",
16
+ "Pact",
17
+ "Circle",
18
+ "Council",
19
+ "Conclave",
20
+ "Convention",
21
+ "Federation",
22
+ "Confederacy",
23
+ "Alliance",
24
+ "Association",
25
+ "Fellowship",
26
+ "Order",
27
+ "Chapter",
28
+ "Guild",
29
+ "Consortium",
30
+ "Cooperative",
31
+ "Bloc",
32
+ "Front",
33
+ "Caucus",
34
+ "Chamber",
35
+ "Quorum",
36
+ "Covenant",
37
+ "Communion",
38
+ "Trust",
39
+ "Society",
40
+ "Company",
41
+ "Corps",
42
+ "Delegation",
43
+ "Ministry",
44
+ "Authority",
45
+ "Commission",
46
+ "Bureau",
47
+ "Polity",
48
+ "Dominion",
49
+ "Protectorate"
50
+ ]
@@ -313,6 +313,11 @@
313
313
  ],
314
314
  "baseHullmass": 4000000
315
315
  },
316
+ {
317
+ "entityItemId": 10216,
318
+ "slots": [],
319
+ "baseHullmass": 100000
320
+ },
316
321
  {
317
322
  "entityItemId": 10218,
318
323
  "slots": [
@@ -334,6 +339,37 @@
334
339
  ],
335
340
  "baseHullmass": 4000000
336
341
  },
342
+ {
343
+ "entityItemId": 10219,
344
+ "slots": [
345
+ {
346
+ "type": "loader",
347
+ "outputPct": 100,
348
+ "maxTier": 1
349
+ },
350
+ {
351
+ "type": "storage",
352
+ "outputPct": 100,
353
+ "maxTier": 1
354
+ },
355
+ {
356
+ "type": "storage",
357
+ "outputPct": 100,
358
+ "maxTier": 1
359
+ },
360
+ {
361
+ "type": "storage",
362
+ "outputPct": 100,
363
+ "maxTier": 1
364
+ },
365
+ {
366
+ "type": "storage",
367
+ "outputPct": 100,
368
+ "maxTier": 1
369
+ }
370
+ ],
371
+ "baseHullmass": 100000
372
+ },
337
373
  {
338
374
  "entityItemId": 11200,
339
375
  "slots": [],
@@ -87,7 +87,9 @@ export const ITEM_TENDER_T1A_PACKED = 10212
87
87
  export const ITEM_WRIGHT_T1A_PACKED = 10213
88
88
  export const ITEM_TUG_T1A_PACKED = 10214
89
89
  export const ITEM_PORTER_T1A_PACKED = 10215
90
+ export const ITEM_NEXUS_T1_PACKED = 10216
90
91
  export const ITEM_SMITH_T1A_PACKED = 10218
92
+ export const ITEM_DEPOT_T1_PACKED = 10219
91
93
  export const ITEM_PLATE_T2 = 11001
92
94
  export const ITEM_FRAME_T2 = 11002
93
95
  export const ITEM_PLASMA_CELL_T2 = 11003
@@ -582,12 +582,24 @@
582
582
  "type": "entity",
583
583
  "tier": 1
584
584
  },
585
+ {
586
+ "id": 10216,
587
+ "mass": 4800000,
588
+ "type": "entity",
589
+ "tier": 1
590
+ },
585
591
  {
586
592
  "id": 10218,
587
593
  "mass": 2400000,
588
594
  "type": "entity",
589
595
  "tier": 1
590
596
  },
597
+ {
598
+ "id": 10219,
599
+ "mass": 4800000,
600
+ "type": "entity",
601
+ "tier": 1
602
+ },
591
603
  {
592
604
  "id": 11001,
593
605
  "mass": 4800,
@@ -51,9 +51,9 @@
51
51
  },
52
52
  {
53
53
  "kind": "nexus",
54
- "classification": "OrbitalVessel",
54
+ "classification": "OrbitalStructure",
55
55
  "capabilityFlags": 0,
56
- "zCoord": 800,
56
+ "zCoord": 0,
57
57
  "defaultLabel": "Nexus"
58
58
  },
59
59
  {
@@ -72,7 +72,7 @@
72
72
  },
73
73
  {
74
74
  "kind": "workshop",
75
- "classification": "OrbitalStructure",
75
+ "classification": "PlanetaryStructure",
76
76
  "capabilityFlags": 20,
77
77
  "zCoord": 0,
78
78
  "defaultLabel": "Workshop"
@@ -83,6 +83,13 @@
83
83
  "capabilityFlags": 20,
84
84
  "zCoord": 0,
85
85
  "defaultLabel": "Construction Dock"
86
+ },
87
+ {
88
+ "kind": "depot",
89
+ "classification": "PlanetaryStructure",
90
+ "capabilityFlags": 0,
91
+ "zCoord": 0,
92
+ "defaultLabel": "Depot"
86
93
  }
87
94
  ],
88
95
  "templates": [
@@ -176,6 +183,11 @@
176
183
  "kind": "builddock",
177
184
  "displayLabel": ""
178
185
  },
186
+ {
187
+ "itemId": 10216,
188
+ "kind": "nexus",
189
+ "displayLabel": ""
190
+ },
179
191
  {
180
192
  "itemId": 11212,
181
193
  "kind": "ship",
@@ -190,6 +202,11 @@
190
202
  "itemId": 11214,
191
203
  "kind": "ship",
192
204
  "displayLabel": "Dredger"
205
+ },
206
+ {
207
+ "itemId": 10219,
208
+ "kind": "depot",
209
+ "displayLabel": ""
193
210
  }
194
211
  ]
195
212
  }
@@ -34,6 +34,7 @@ export type EntityTypeName =
34
34
  | 'mdriver'
35
35
  | 'mcatcher'
36
36
  | 'hub'
37
+ | 'depot'
37
38
 
38
39
  export interface KindMeta {
39
40
  kind: Name
@@ -143,6 +144,7 @@ export const ENTITY_PLOT = Name.from('plot')
143
144
  export const ENTITY_MASS_DRIVER = Name.from('mdriver')
144
145
  export const ENTITY_MASS_CATCHER = Name.from('mcatcher')
145
146
  export const ENTITY_HUB = Name.from('hub')
147
+ export const ENTITY_DEPOT = Name.from('depot')
146
148
 
147
149
  export function isShip(entity: {type?: Name}): boolean {
148
150
  return entity.type?.equals(ENTITY_SHIP) ?? false
@@ -180,3 +182,6 @@ export function isMassCatcher(entity: {type?: Name}): boolean {
180
182
  export function isHub(entity: {type?: Name}): boolean {
181
183
  return entity.type?.equals(ENTITY_HUB) ?? false
182
184
  }
185
+ export function isDepot(entity: {type?: Name}): boolean {
186
+ return entity.type?.equals(ENTITY_DEPOT) ?? false
187
+ }