@shipload/sdk 0.2.0 → 0.3.0

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.
@@ -1,4 +1,11 @@
1
- import type {Action, Checksum256Type, Int64Type, NameType, UInt64Type} from '@wharfkit/antelope'
1
+ import type {
2
+ Action,
3
+ Checksum256Type,
4
+ Int64Type,
5
+ NameType,
6
+ UInt16Type,
7
+ UInt64Type,
8
+ } from '@wharfkit/antelope'
2
9
  import {
3
10
  ABI,
4
11
  Blob,
@@ -17,7 +24,7 @@ import {
17
24
  import type {ActionOptions, ContractArgs, PartialBy, Table} from '@wharfkit/contract'
18
25
  import {Contract as BaseContract} from '@wharfkit/contract'
19
26
  export const abiBlob = Blob.from(
20
- 'DmVvc2lvOjphYmkvMS4yABgHYWR2YW5jZQAABmFycml2ZQACBW93bmVyBG5hbWUCaWQGdWludDY0CGJ1eWdvb2RzAAQFYnV5ZXIEbmFtZQdzaGlwX2lkBnVpbnQ2NAdnb29kX2lkBnVpbnQ2NAhxdWFudGl0eQZ1aW50NjQJY2FyZ29fcm93AAQCaWQGdWludDY0B3NoaXBfaWQGdWludDY0B2dvb2RfaWQGdWludDY0CHF1YW50aXR5BnVpbnQ2NApjbGVhcnRhYmxlAAMKdGFibGVfbmFtZQRuYW1lBXNjb3BlBW5hbWU/CG1heF9yb3dzB3VpbnQ2ND8LY29vcmRpbmF0ZXMAAgF4BWludDY0AXkFaW50NjQGZW5hYmxlAAEHZW5hYmxlZARib29sCWVzdHRyYXZlbAACAmlkBnVpbnQ2NAtkZXN0aW5hdGlvbgtjb29yZGluYXRlcwRoYXNoAAEFdmFsdWUGc3RyaW5nBGluaXQAAgRzZWVkC2NoZWNrc3VtMjU2CWVwb2Noc2VlZAtjaGVja3N1bTI1NgRqb2luAAEHYWNjb3VudARuYW1lDGxvYWRlcl9zdGF0cwAECGNhcGFjaXR5BnVpbnQxNgRtYXNzBnVpbnQzMghxdWFudGl0eQZ1aW50MTYGdGhydXN0BnVpbnQzMgpwbGF5ZXJfcm93AAMFb3duZXIEbmFtZQdiYWxhbmNlBnVpbnQ2NARkZWJ0BnVpbnQ2NAlzZWxsZ29vZHMABAZzZWxsZXIEbmFtZQdzaGlwX2lkBnVpbnQ2NAdnb29kX2lkBnVpbnQ2NAhxdWFudGl0eQZ1aW50NjQMc2VxdWVuY2Vfcm93AAIDa2V5BG5hbWUFdmFsdWUGdWludDY0CHNoaXBfcm93AAkCaWQGdWludDY0BW93bmVyBG5hbWUEbmFtZQZzdHJpbmcIbG9jYXRpb24LY29vcmRpbmF0ZXMEc2tpbgV1aW50OAR0aWVyBXVpbnQ4BXN0YXRzCnNoaXBfc3RhdHMHbG9hZGVycwxsb2FkZXJfc3RhdHMKdHJhdmVscGxhbgx0cmF2ZWxfcGxhbj8Kc2hpcF9zdGF0cwAHCGNhcGFjaXR5BnVpbnQzMgVkcmFpbgZ1aW50MzIGZW5lcmd5BnVpbnQzMgRtYXNzBnVpbnQ2NAVvcmJpdAZ1aW50MTYIcmVjaGFyZ2UGdWludDMyBnRocnVzdAZ1aW50NjQJc3RhdGVfcm93AAUHZW5hYmxlZARib29sBWVwb2NoBnVpbnQ2NAllcG9jaHNlZWQLY2hlY2tzdW0yNTYHZ2VuZXNpcxRibG9ja190aW1lc3RhbXBfdHlwZQRzZWVkC2NoZWNrc3VtMjU2C3N1bW1hcnlfcm93AAIDa2V5BG5hbWUFdmFsdWUOdHJhdmVsX3N1bW1hcnkEdGVzdAABBGRhdGEGc3RyaW5nBnRyYXZlbAAEBW93bmVyBG5hbWUCaWQGdWludDY0C2Rlc3RpbmF0aW9uC2Nvb3JkaW5hdGVzCHJlY2hhcmdlBGJvb2wLdHJhdmVsX3BsYW4AAwtkZXN0aW5hdGlvbgtjb29yZGluYXRlcwlkZXBhcnR1cmUKdGltZV9wb2ludAhkdXJhdGlvbgZ1aW50MzIOdHJhdmVsX3N1bW1hcnkADAVzdGF0cwpzaGlwX3N0YXRzB2xvYWRlcnMMbG9hZGVyX3N0YXRzBm9yaWdpbgtjb29yZGluYXRlcwtkZXN0aW5hdGlvbgtjb29yZGluYXRlcwhkaXN0YW5jZQZ1aW50NjQJdG90YWxtYXNzBnVpbnQ2NAxhY2NlbGVyYXRpb24GdWludDY0CmZsaWdodHRpbWUGdWludDY0C2VuZXJneXVzYWdlBnVpbnQ2NAxyZWNoYXJnZXRpbWUGdWludDY0CGxvYWR0aW1lBnVpbnQ2NAR0aW1lBnVpbnQ2NAR3aXBlAAANAAAAQKFpdjIHYWR2YW5jZdMBLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGFkdmFuY2UKc3VtbWFyeTogJ0FkdmFuY2UgdHVybicKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKQWR2YW5jZSB0aGUgZ2FtZSB0byB0aGUgbmV4dCB0dXJuLgAAAACo7e41BmFycml2ZQAAAAA4Ucq8PghidXlnb29kcwAAgIrH5GtURApjbGVhcnRhYmxlvgEtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogY2xlYXJ0YWJsZQpzdW1tYXJ5OiAnREVCVUc6IGNsZWFydGFibGUgYWN0aW9uJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tAAAAAKh4zFQGZW5hYmxl4gEtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogZW5hYmxlCnN1bW1hcnk6ICdTZXQgZW5hYmxlZCBzdGF0ZScKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKRW5hYmxlIG9yIGRpc2FibGUgdGhpcyBnYW1lIG9mIFNoaXBsb2FkLgoKLS0tAACIapubM1YJZXN0dHJhdmVsAAAAAAAA0LBpBGhhc2jqAS0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBoYXNoCnN1bW1hcnk6ICdDYWxjdWxhdGUgaGFzaCcKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKQ2FsY3VsYXRlcyB0aGUgaGFzaCBvZiBhIHN0cmluZyBiYXNlZCB1c2luZyB0aGUgZ2FtZSBzZWVkLgAAAAAAkN10BGluaXT/AS0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBpbml0CnN1bW1hcnk6ICdJbml0aWFsaXplIGdhbWUgc2VlZCcKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKSW5pdGlhbGl6ZSBhIHRoZSBnYW1lcyBzZWVkIGFuZCBlcG9jaHNlZWQgdmFsdWVzIHRvIGJvb3RzdHJhcCBnYW1lIHN0YXRlLgAAAAAAMB19BGpvaW7EAS0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBqb2luCnN1bW1hcnk6ICdKb2luIGEgZ2FtZScKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKSm9pbiBhIGdhbWUgb2YgU2hpcGxvYWQAAMCJUhajwglzZWxsZ29vZHMAAAAAAACQscoEdGVzdLIBLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IHRlc3QKc3VtbWFyeTogJ0RFQlVHOiB0ZXN0IGFjdGlvbicKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQAAAABEtc3NBnRyYXZlbPgBLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IHRyYXZlbApzdW1tYXJ5OiAnTW92ZSBhIHNoaXAnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkluaXRpYXRlIHRyYXZlbCBvZiBhIHNoaXAgZnJvbSBpdHMgY3VycmVudCBsb2NhdGlvbiB0byBhIG5ldyBkZXN0aW5hdGlvbi4AAAAAAKCq4wR3aXBlsgEtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogd2lwZQpzdW1tYXJ5OiAnREVCVUc6IHdpcGUgYWN0aW9uJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tBgAAAAAAyq5BA2k2NAAACWNhcmdvX3JvdwAAAABc5U2sA2k2NAAACnBsYXllcl9yb3cAAAAKTaWtwgNpNjQAAAxzZXF1ZW5jZV9yb3cAAAAAAFBdwwNpNjQAAAhzaGlwX3JvdwAAAAAAlU3GA2k2NAAACXN0YXRlX3JvdwAAAMBfI6XGA2k2NAAAC3N1bW1hcnlfcm93ARFTaGlwbG9hZCAoU2VydmVyKRFTaGlwbG9hZCAoU2VydmVyKQAAAAIAAIhqm5szVg50cmF2ZWxfc3VtbWFyeQAAAAAA0LBpC2NoZWNrc3VtNTEy'
27
+ 'DmVvc2lvOjphYmkvMS4yABwHYWR2YW5jZQAABmFycml2ZQACBW93bmVyBG5hbWUCaWQGdWludDY0CGJ1eWdvb2RzAAMHc2hpcF9pZAZ1aW50NjQHZ29vZF9pZAZ1aW50NjQIcXVhbnRpdHkGdWludDY0CWNhcmdvX3JvdwAFAmlkBnVpbnQ2NAdzaGlwX2lkBnVpbnQ2NAdnb29kX2lkBnVpbnQ2NAhxdWFudGl0eQZ1aW50NjQGbG9hZGVkBnVpbnQ2NApjbGVhcnRhYmxlAAMKdGFibGVfbmFtZQRuYW1lBXNjb3BlBW5hbWU/CG1heF9yb3dzB3VpbnQ2ND8LY29vcmRpbmF0ZXMAAgF4BWludDY0AXkFaW50NjQGZW5hYmxlAAEHZW5hYmxlZARib29sCWVzdHRyYXZlbAACAmlkBnVpbnQ2NAtkZXN0aW5hdGlvbgtjb29yZGluYXRlcwpnb29kX3ByaWNlAAICaWQGdWludDE2BXByaWNlBnVpbnQ2NARoYXNoAAEFdmFsdWUGc3RyaW5nBGluaXQAAgRzZWVkC2NoZWNrc3VtMjU2CWVwb2Noc2VlZAtjaGVja3N1bTI1NgRqb2luAAEHYWNjb3VudARuYW1lDGxvYWRlcl9zdGF0cwAECGNhcGFjaXR5BnVpbnQxNgRtYXNzBnVpbnQzMghxdWFudGl0eQZ1aW50MTYGdGhydXN0BnVpbnQzMgttYXJrZXRwcmljZQACCGxvY2F0aW9uC2Nvb3JkaW5hdGVzB2dvb2RfaWQGdWludDE2DG1hcmtldHByaWNlcwABCGxvY2F0aW9uC2Nvb3JkaW5hdGVzCnBsYXllcl9yb3cAAwVvd25lcgRuYW1lB2JhbGFuY2UGdWludDY0BGRlYnQGdWludDY0CXNlbGxnb29kcwADB3NoaXBfaWQGdWludDY0B2dvb2RfaWQGdWludDY0CHF1YW50aXR5BnVpbnQ2NAxzZXF1ZW5jZV9yb3cAAgNrZXkEbmFtZQV2YWx1ZQZ1aW50NjQIc2hpcF9yb3cACgJpZAZ1aW50NjQFb3duZXIEbmFtZQRuYW1lBnN0cmluZwhsb2NhdGlvbgtjb29yZGluYXRlcwRza2luBXVpbnQ4BHRpZXIFdWludDgFc3RhdGUKc2hpcF9zdGF0ZQVzdGF0cwpzaGlwX3N0YXRzB2xvYWRlcnMMbG9hZGVyX3N0YXRzCnRyYXZlbHBsYW4MdHJhdmVsX3BsYW4/CnNoaXBfc3RhdGUAAQZlbmVyZ3kGdWludDMyCnNoaXBfc3RhdHMABghjYXBhY2l0eQZ1aW50MzIFZHJhaW4GdWludDMyBG1hc3MGdWludDY0BW9yYml0BnVpbnQxNghyZWNoYXJnZQZ1aW50MzIGdGhydXN0BnVpbnQ2NAlzdGF0ZV9yb3cABQdlbmFibGVkBGJvb2wFZXBvY2gGdWludDY0CWVwb2Noc2VlZAtjaGVja3N1bTI1NgdnZW5lc2lzFGJsb2NrX3RpbWVzdGFtcF90eXBlBHNlZWQLY2hlY2tzdW0yNTYLc3VtbWFyeV9yb3cAAgNrZXkEbmFtZQV2YWx1ZQ50cmF2ZWxfc3VtbWFyeQR0ZXN0AAEEZGF0YQZzdHJpbmcGdHJhdmVsAAQFb3duZXIEbmFtZQJpZAZ1aW50NjQLZGVzdGluYXRpb24LY29vcmRpbmF0ZXMIcmVjaGFyZ2UEYm9vbAt0cmF2ZWxfcGxhbgADC2Rlc3RpbmF0aW9uC2Nvb3JkaW5hdGVzCWRlcGFydHVyZQp0aW1lX3BvaW50CGR1cmF0aW9uBnVpbnQzMg50cmF2ZWxfc3VtbWFyeQAMBXN0YXRzCnNoaXBfc3RhdHMHbG9hZGVycwxsb2FkZXJfc3RhdHMGb3JpZ2luC2Nvb3JkaW5hdGVzC2Rlc3RpbmF0aW9uC2Nvb3JkaW5hdGVzCGRpc3RhbmNlBnVpbnQ2NAl0b3RhbG1hc3MGdWludDY0DGFjY2VsZXJhdGlvbgZ1aW50NjQKZmxpZ2h0dGltZQZ1aW50NjQLZW5lcmd5dXNhZ2UGdWludDY0DHJlY2hhcmdldGltZQZ1aW50NjQIbG9hZHRpbWUGdWludDY0BHRpbWUGdWludDY0BHdpcGUAAA8AAABAoWl2MgdhZHZhbmNl0wEtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogYWR2YW5jZQpzdW1tYXJ5OiAnQWR2YW5jZSB0dXJuJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpBZHZhbmNlIHRoZSBnYW1lIHRvIHRoZSBuZXh0IHR1cm4uAAAAAKjt7jUGYXJyaXZlswItLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogYXJyaXZlCnN1bW1hcnk6ICdDb21wbGV0ZSB0cmF2ZWwnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkNvbXBsZXRlIHRoZSB0cmF2ZWwgb2YgYSBzaGlwIGJ5IHVwZGF0aW5nIGl0cyBsb2NhdGlvbiB0byB0aGUgZGVzdGluYXRpb24gY29vcmRpbmF0ZXMgYWZ0ZXIgdGhlIHRyYXZlbCBkdXJhdGlvbiBoYXMgcGFzc2VkLgoKLS0tAAAAOFHKvD4IYnV5Z29vZHPdAS0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiBidXlnb29kcwpzdW1tYXJ5OiAnQnV5IGdvb2RzJwppY29uOiBodHRwczovL2F2YXRhcnMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTQ3MjkyODYxP3M9NDAwJnU9M2IxYWY2NmU5MGRkODUxZjRkN2MwOTZlZDZhMmZiYjRiOWUxOTBkYQoKLS0tCgpQdXJjaGFzZSBnb29kcyBhbmQgYWRkIHRoZW0gdG8gYSBzaGlwJ3MgY2FyZ28uAICKx+RrVEQKY2xlYXJ0YWJsZb4BLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGNsZWFydGFibGUKc3VtbWFyeTogJ0RFQlVHOiBjbGVhcnRhYmxlIGFjdGlvbicKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQAAAACoeMxUBmVuYWJsZeIBLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IGVuYWJsZQpzdW1tYXJ5OiAnU2V0IGVuYWJsZWQgc3RhdGUnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkVuYWJsZSBvciBkaXNhYmxlIHRoaXMgZ2FtZSBvZiBTaGlwbG9hZC4KCi0tLQAAiGqbmzNWCWVzdHRyYXZlbAAAAAAAANCwaQRoYXNo6gEtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogaGFzaApzdW1tYXJ5OiAnQ2FsY3VsYXRlIGhhc2gnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkNhbGN1bGF0ZXMgdGhlIGhhc2ggb2YgYSBzdHJpbmcgYmFzZWQgdXNpbmcgdGhlIGdhbWUgc2VlZC4AAAAAAJDddARpbml0/wEtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogaW5pdApzdW1tYXJ5OiAnSW5pdGlhbGl6ZSBnYW1lIHNlZWQnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkluaXRpYWxpemUgYSB0aGUgZ2FtZXMgc2VlZCBhbmQgZXBvY2hzZWVkIHZhbHVlcyB0byBib290c3RyYXAgZ2FtZSBzdGF0ZS4AAAAAADAdfQRqb2luyQEtLS0KCnNwZWNfdmVyc2lvbjogIjAuMi4wIgp0aXRsZTogam9pbgpzdW1tYXJ5OiAnSm9pbiBhIGdhbWUnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkpvaW4gYSBnYW1lIG9mIFNoaXBsb2FkCgotLS0AFHK3ZgWvkQttYXJrZXRwcmljZZsCLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IG1hcmtldHByaWNlCnN1bW1hcnk6ICdHZXQgcHJpY2Ugb2YgZ29vZCBhdCBsb2NhdGlvbicKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKVGhpcyBhY3Rpb24gZGV0ZXJtaW5lcyB0aGUgbWFya2V0IHByaWNlIG9mIGEgc3BlY2lmaWVkIGdvb2QgYXQgYSBnaXZlbiBsb2NhdGlvbi4KCi0tLYAVcrdmBa+RDG1hcmtldHByaWNlc5UCLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IG1hcmtldHByaWNlcwpzdW1tYXJ5OiAnR2V0IHByaWNlIG9mIGFsbCBnb29kcyBhdCBsb2NhdGlvbicKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKVGhpcyBhY3Rpb24gZGV0ZXJtaW5lcyB0aGUgbWFya2V0IHByaWNlIG9mIGFsbCBnb29kcyBhdCBhIGdpdmVuIGxvY2F0aW9uLgAAwIlSFqPCCXNlbGxnb29kc9UBLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IHNlbGxnb29kcwpzdW1tYXJ5OiAnU2VsbCBnb29kcycKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQoKU2VsbCBnb29kcyBmcm9tIGEgc2hpcCdzIGNhcmdvLgoKLS0tAAAAAACQscoEdGVzdLIBLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IHRlc3QKc3VtbWFyeTogJ0RFQlVHOiB0ZXN0IGFjdGlvbicKaWNvbjogaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzE0NzI5Mjg2MT9zPTQwMCZ1PTNiMWFmNjZlOTBkZDg1MWY0ZDdjMDk2ZWQ2YTJmYmI0YjllMTkwZGEKCi0tLQAAAABEtc3NBnRyYXZlbP0BLS0tCgpzcGVjX3ZlcnNpb246ICIwLjIuMCIKdGl0bGU6IHRyYXZlbApzdW1tYXJ5OiAnTW92ZSBhIHNoaXAnCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0KCkluaXRpYXRlIHRyYXZlbCBvZiBhIHNoaXAgZnJvbSBpdHMgY3VycmVudCBsb2NhdGlvbiB0byBhIG5ldyBkZXN0aW5hdGlvbi4KCi0tLQAAAAAAoKrjBHdpcGWyAS0tLQoKc3BlY192ZXJzaW9uOiAiMC4yLjAiCnRpdGxlOiB3aXBlCnN1bW1hcnk6ICdERUJVRzogd2lwZSBhY3Rpb24nCmljb246IGh0dHBzOi8vYXZhdGFycy5naXRodWJ1c2VyY29udGVudC5jb20vdS8xNDcyOTI4NjE/cz00MDAmdT0zYjFhZjY2ZTkwZGQ4NTFmNGQ3YzA5NmVkNmEyZmJiNGI5ZTE5MGRhCgotLS0GAAAAAADKrkEDaTY0AAAJY2FyZ29fcm93AAAAAFzlTawDaTY0AAAKcGxheWVyX3JvdwAAAApNpa3CA2k2NAAADHNlcXVlbmNlX3JvdwAAAAAAUF3DA2k2NAAACHNoaXBfcm93AAAAAACVTcYDaTY0AAAJc3RhdGVfcm93AAAAwF8jpcYDaTY0AAALc3VtbWFyeV9yb3cBEVNoaXBsb2FkIChTZXJ2ZXIpEVNoaXBsb2FkIChTZXJ2ZXIpAAAABAAAiGqbmzNWDnRyYXZlbF9zdW1tYXJ5AAAAAADQsGkLY2hlY2tzdW01MTIAFHK3ZgWvkQpnb29kX3ByaWNlgBVyt2YFr5EMZ29vZF9wcmljZVtd'
21
28
  )
22
29
  export const abi = ABI.from(abiBlob)
23
30
  export namespace Types {
@@ -32,8 +39,6 @@ export namespace Types {
32
39
  }
33
40
  @Struct.type('buygoods')
34
41
  export class buygoods extends Struct {
35
- @Struct.field(Name)
36
- buyer!: Name
37
42
  @Struct.field(UInt64)
38
43
  ship_id!: UInt64
39
44
  @Struct.field(UInt64)
@@ -51,6 +56,8 @@ export namespace Types {
51
56
  good_id!: UInt64
52
57
  @Struct.field(UInt64)
53
58
  quantity!: UInt64
59
+ @Struct.field(UInt64)
60
+ loaded!: UInt64
54
61
  }
55
62
  @Struct.type('cleartable')
56
63
  export class cleartable extends Struct {
@@ -80,6 +87,13 @@ export namespace Types {
80
87
  @Struct.field(coordinates)
81
88
  destination!: coordinates
82
89
  }
90
+ @Struct.type('good_price')
91
+ export class good_price extends Struct {
92
+ @Struct.field(UInt16)
93
+ id!: UInt16
94
+ @Struct.field(UInt64)
95
+ price!: UInt64
96
+ }
83
97
  @Struct.type('hash')
84
98
  export class hash extends Struct {
85
99
  @Struct.field('string')
@@ -108,6 +122,18 @@ export namespace Types {
108
122
  @Struct.field(UInt32)
109
123
  thrust!: UInt32
110
124
  }
125
+ @Struct.type('marketprice')
126
+ export class marketprice extends Struct {
127
+ @Struct.field(coordinates)
128
+ location!: coordinates
129
+ @Struct.field(UInt16)
130
+ good_id!: UInt16
131
+ }
132
+ @Struct.type('marketprices')
133
+ export class marketprices extends Struct {
134
+ @Struct.field(coordinates)
135
+ location!: coordinates
136
+ }
111
137
  @Struct.type('player_row')
112
138
  export class player_row extends Struct {
113
139
  @Struct.field(Name)
@@ -119,8 +145,6 @@ export namespace Types {
119
145
  }
120
146
  @Struct.type('sellgoods')
121
147
  export class sellgoods extends Struct {
122
- @Struct.field(Name)
123
- seller!: Name
124
148
  @Struct.field(UInt64)
125
149
  ship_id!: UInt64
126
150
  @Struct.field(UInt64)
@@ -135,14 +159,17 @@ export namespace Types {
135
159
  @Struct.field(UInt64)
136
160
  value!: UInt64
137
161
  }
162
+ @Struct.type('ship_state')
163
+ export class ship_state extends Struct {
164
+ @Struct.field(UInt32)
165
+ energy!: UInt32
166
+ }
138
167
  @Struct.type('ship_stats')
139
168
  export class ship_stats extends Struct {
140
169
  @Struct.field(UInt32)
141
170
  capacity!: UInt32
142
171
  @Struct.field(UInt32)
143
172
  drain!: UInt32
144
- @Struct.field(UInt32)
145
- energy!: UInt32
146
173
  @Struct.field(UInt64)
147
174
  mass!: UInt64
148
175
  @Struct.field(UInt16)
@@ -175,6 +202,8 @@ export namespace Types {
175
202
  skin!: UInt8
176
203
  @Struct.field(UInt8)
177
204
  tier!: UInt8
205
+ @Struct.field(ship_state)
206
+ state!: ship_state
178
207
  @Struct.field(ship_stats)
179
208
  stats!: ship_stats
180
209
  @Struct.field(loader_stats)
@@ -279,7 +308,6 @@ export namespace ActionParams {
279
308
  id: UInt64Type
280
309
  }
281
310
  export interface buygoods {
282
- buyer: NameType
283
311
  ship_id: UInt64Type
284
312
  good_id: UInt64Type
285
313
  quantity: UInt64Type
@@ -306,8 +334,14 @@ export namespace ActionParams {
306
334
  export interface join {
307
335
  account: NameType
308
336
  }
337
+ export interface marketprice {
338
+ location: Type.coordinates
339
+ good_id: UInt16Type
340
+ }
341
+ export interface marketprices {
342
+ location: Type.coordinates
343
+ }
309
344
  export interface sellgoods {
310
- seller: NameType
311
345
  ship_id: UInt64Type
312
346
  good_id: UInt64Type
313
347
  quantity: UInt64Type
@@ -333,6 +367,8 @@ export interface ActionNameParams {
333
367
  hash: ActionParams.hash
334
368
  init: ActionParams.init
335
369
  join: ActionParams.join
370
+ marketprice: ActionParams.marketprice
371
+ marketprices: ActionParams.marketprices
336
372
  sellgoods: ActionParams.sellgoods
337
373
  test: ActionParams.test
338
374
  travel: ActionParams.travel
@@ -342,6 +378,8 @@ export type ActionNames = keyof ActionNameParams
342
378
  export interface ActionReturnValues {
343
379
  esttravel: Types.travel_summary
344
380
  hash: Checksum512
381
+ marketprice: Types.good_price
382
+ marketprices: Types.good_price[]
345
383
  }
346
384
  export type ActionReturnNames = keyof ActionReturnValues
347
385
  export class Contract extends BaseContract {
@@ -0,0 +1,2 @@
1
+ export * as PlatformContract from './contracts/platform'
2
+ export * as ServerContract from './contracts/server'
package/src/errors.ts ADDED
@@ -0,0 +1,9 @@
1
+ export const ERROR_SYSTEM_NOT_INITIALIZED = 'System not initialized'
2
+ export const GOOD_DOES_NOT_EXIST = 'Good does not exist'
3
+ export const GOOD_NOT_AVAILABLE_AT_LOCATION = 'Good not available at location'
4
+ export const PLAYER_NOT_FOUND = 'Player not found'
5
+ export const SHIP_NOT_FOUND = 'Ship not found'
6
+ export const SHIP_CANNOT_BUY_TRAVELING = 'Ship cannot buy while traveling'
7
+ export const INSUFFICIENT_BALANCE = 'Insufficient balance'
8
+ export const INSUFFICIENT_GOOD_QUANTITY = 'Insufficient good quantity'
9
+ export const REQUIRES_MORE_THAN_ONE = 'Requires more than one'
package/src/goods.ts ADDED
@@ -0,0 +1,113 @@
1
+ import {UInt16, UInt16Type, UInt64} from '@wharfkit/antelope'
2
+ import {Good} from './types'
3
+
4
+ // List of goods with titles and descriptions
5
+ export const goods: Good[] = [
6
+ {
7
+ id: UInt16.from(1),
8
+ name: 'FizzGlo',
9
+ description: 'Pops with flavor! A neon drink that makes your burps glow.',
10
+ base_price: UInt64.from(200),
11
+ mass: UInt64.from(500),
12
+ },
13
+ {
14
+ id: UInt16.from(2),
15
+ name: 'ZapSnacks',
16
+ description: 'Electric taste! Spicy edible energy sparks for a tongue-tingling experience.',
17
+ base_price: UInt64.from(300),
18
+ mass: UInt64.from(2000),
19
+ },
20
+ {
21
+ id: UInt16.from(3),
22
+ name: 'Blob Buddies',
23
+ description: 'Squishy friends! Clingy, cute and mood-matching pet blobs for every home!',
24
+ base_price: UInt64.from(400),
25
+ mass: UInt64.from(10000),
26
+ },
27
+ {
28
+ id: UInt16.from(4),
29
+ name: 'TuneTooth',
30
+ description: 'Whistle while you eat! Edible instrument treats that play tunes when chewed.',
31
+ base_price: UInt64.from(600),
32
+ mass: UInt64.from(3000),
33
+ },
34
+ {
35
+ id: UInt16.from(5),
36
+ name: 'SunPods',
37
+ description: 'Miniature suns in your pocket providing on-demand light & warmth.',
38
+ base_price: UInt64.from(800),
39
+ mass: UInt64.from(1000),
40
+ },
41
+ {
42
+ id: UInt16.from(6),
43
+ name: 'Fuzzix',
44
+ description: 'Pocket-sized quantum fluff generator for instant comfy.',
45
+ base_price: UInt64.from(1000),
46
+ mass: UInt64.from(4000),
47
+ },
48
+ {
49
+ id: UInt16.from(7),
50
+ name: 'GlowGo',
51
+ description: 'Ingestible bioluminescent jelly, your inside glows in the dark!',
52
+ base_price: UInt64.from(140),
53
+ mass: UInt64.from(3000),
54
+ },
55
+ {
56
+ id: UInt16.from(8),
57
+ name: 'KrackleKaps',
58
+ description: 'Capsules packed with tiny firecrackers, spice up meals and parties.',
59
+ base_price: UInt64.from(180),
60
+ mass: UInt64.from(2000),
61
+ },
62
+ {
63
+ id: UInt16.from(9),
64
+ name: 'PlasmaMints',
65
+ description: 'Hypercharged candy giving plasma breath capable of cutting through steel.',
66
+ base_price: UInt64.from(220),
67
+ mass: UInt64.from(500),
68
+ },
69
+ {
70
+ id: UInt16.from(10),
71
+ name: 'TimeTreats',
72
+ description: 'Confectionery morsels releasing slow-mo effect over a limited period.',
73
+ base_price: UInt64.from(250),
74
+ mass: UInt64.from(3000),
75
+ },
76
+ {
77
+ id: UInt16.from(11),
78
+ name: 'QuantumQuencher',
79
+ description:
80
+ 'Bottled hyper-fluid quenching thirst across multiple parallel realities simultaneously.',
81
+ base_price: UInt64.from(300),
82
+ mass: UInt64.from(6000),
83
+ },
84
+ {
85
+ id: UInt16.from(12),
86
+ name: 'TransmatterTruffles',
87
+ description: 'Delectable chocolates instantly teleporting consumers short distances.',
88
+ base_price: UInt64.from(350),
89
+ mass: UInt64.from(4000),
90
+ },
91
+ {
92
+ id: UInt16.from(13),
93
+ name: 'MemoryGum',
94
+ description: 'Chewable gum storing or replaying memories while being chewed.',
95
+ base_price: UInt64.from(400),
96
+ mass: UInt64.from(500),
97
+ },
98
+ {
99
+ id: UInt16.from(14),
100
+ name: 'SymbioSnack',
101
+ description: 'Edible alien larvae adopting owner’s taste preference upon consumption.',
102
+ base_price: UInt64.from(500),
103
+ mass: UInt64.from(1000),
104
+ },
105
+ ]
106
+
107
+ export function getGood(good_id: UInt16Type): Good {
108
+ const good = goods.find((g) => g.id.equals(good_id))
109
+ if (!good) {
110
+ throw new Error('Good does not exist')
111
+ }
112
+ return good
113
+ }
package/src/hash.ts CHANGED
@@ -1,6 +1,10 @@
1
1
  import {Bytes, Checksum256Type, Checksum512} from '@wharfkit/antelope'
2
2
 
3
- export function hash(seed: Checksum256Type, string: string): string {
3
+ export function hash(seed: Checksum256Type, string: string): Checksum512 {
4
4
  const bytes = Bytes.from(`${seed}${string}`, 'utf8')
5
- return String(Checksum512.hash(bytes))
5
+ return Checksum512.hash(bytes)
6
+ }
7
+
8
+ export function hashBytes(seed: Checksum256Type, string: string): Uint8Array {
9
+ return hash(seed, string).array
6
10
  }
@@ -1,5 +1,7 @@
1
+ export * from './contracts'
1
2
  export * from './hash'
2
3
  export * from './travel'
3
4
  export * from './types'
4
- export * as PlatformContract from './contracts/platform'
5
- export * as ServerContract from './contracts/server'
5
+ export * from './goods'
6
+ export * from './market'
7
+ export * from './errors'
package/src/market.ts ADDED
@@ -0,0 +1,58 @@
1
+ import {Coordinates, GoodPrice} from './types'
2
+ import {getGood, goods} from './goods'
3
+ import {Checksum256Type, UInt16Type, UInt64, UInt64Type} from '@wharfkit/antelope'
4
+ import {roll} from './rolls'
5
+
6
+ export async function marketprice(
7
+ location: Coordinates,
8
+ good_id: UInt16Type,
9
+ gameSeed: Checksum256Type,
10
+ epochSeed: Checksum256Type
11
+ ): Promise<UInt64> {
12
+ const good = getGood(good_id)
13
+ const rollSeed = `${location.x}${epochSeed}${location.y}${good_id}`
14
+ const rollValue = roll(gameSeed, rollSeed)
15
+ return priceFromRoll(good.base_price, rollValue)
16
+ }
17
+
18
+ export async function marketprices(
19
+ location: Coordinates,
20
+ gameSeed: Checksum256Type,
21
+ epochSeed: Checksum256Type
22
+ ): Promise<GoodPrice[]> {
23
+ return Promise.all(
24
+ goods.map(async (good) => {
25
+ const price = await marketprice(location, good.id, gameSeed, epochSeed)
26
+ return {price, id: good.id}
27
+ })
28
+ )
29
+ }
30
+
31
+ export function priceFromRoll(basePrice: UInt64Type, roll: number): UInt64 {
32
+ basePrice = Number(basePrice)
33
+ let price: number
34
+ if (roll < 13) {
35
+ price = basePrice * 2.25 // ~0.02% chance
36
+ } else if (roll < 176) {
37
+ price = basePrice * 1.75 // ~0.25% chance
38
+ } else if (roll < 996) {
39
+ price = basePrice * 1.4 // ~1.25% chance
40
+ } else if (roll < 2966) {
41
+ price = basePrice * 1.225 // ~3.00% chance
42
+ } else if (roll < 19568) {
43
+ price = basePrice * 1.07 // ~25.33% chance
44
+ } else if (roll < 45988) {
45
+ price = 0 // ~40.30% chance
46
+ } else if (roll < 62508) {
47
+ price = basePrice * 0.925 // ~25.33% chance
48
+ } else if (roll < 64518) {
49
+ price = basePrice * 0.77 // ~3.00% chance
50
+ } else if (roll < 65437) {
51
+ price = basePrice * 0.595 // ~1.25% chance
52
+ } else if (roll < 65523) {
53
+ price = basePrice * 0.41 // ~0.25% chance
54
+ } else {
55
+ price = basePrice * 0.285 // ~0.02% chance
56
+ }
57
+ return UInt64.from(price)
58
+ }
package/src/rolls.ts ADDED
@@ -0,0 +1,8 @@
1
+ import {Checksum256Type} from '@wharfkit/antelope'
2
+ import {hashBytes} from './hash'
3
+
4
+ export function roll(game_seed: Checksum256Type, roll_seed: string): number {
5
+ const byteArray = hashBytes(game_seed, roll_seed)
6
+ // Combine the first two bytes to form a uint16_t value
7
+ return (byteArray[0] << 8) | byteArray[1]
8
+ }
package/src/shipload.ts CHANGED
@@ -1 +1,59 @@
1
- export class Shipload {}
1
+ import {APIClient, UInt64} from '@wharfkit/antelope'
2
+ import {Coordinates, GoodPrice} from './types'
3
+ import {marketprice, marketprices} from './market'
4
+ import {ServerContract} from './contracts'
5
+ import {ERROR_SYSTEM_NOT_INITIALIZED} from './errors'
6
+ import {ChainDefinition} from '@wharfkit/session'
7
+ import ContractKit, {Contract} from '@wharfkit/contract'
8
+
9
+ interface ShiploadOptions {
10
+ contractName?: string
11
+ client?: APIClient
12
+ }
13
+
14
+ interface ShiploadConstructorOptions extends ShiploadOptions {
15
+ serverContract: Contract
16
+ }
17
+
18
+ export class Shipload {
19
+ private client: APIClient
20
+ private server: Contract
21
+
22
+ constructor(chain: ChainDefinition, {client, serverContract}: ShiploadConstructorOptions) {
23
+ this.client = client || new APIClient({url: chain.url})
24
+
25
+ this.server = serverContract
26
+ ? serverContract
27
+ : new ServerContract.Contract({client: this.client})
28
+ }
29
+
30
+ static async load(chain: ChainDefinition, shiploadOptions: ShiploadOptions): Promise<Shipload> {
31
+ let server: Contract = new ServerContract.Contract({
32
+ client: new APIClient({url: chain.url}),
33
+ })
34
+ if (shiploadOptions.contractName) {
35
+ const client = shiploadOptions.client || new APIClient({url: chain.url})
36
+ const contractKit = new ContractKit({client})
37
+ server = await contractKit.load(shiploadOptions.contractName)
38
+ }
39
+ return new Shipload(chain, {...shiploadOptions, serverContract: server})
40
+ }
41
+
42
+ async getState(): Promise<ServerContract.Types.state_row> {
43
+ const state = await this.server.table('state').get()
44
+ if (!state) {
45
+ throw new Error(ERROR_SYSTEM_NOT_INITIALIZED)
46
+ }
47
+ return state
48
+ }
49
+
50
+ async marketprice(location: Coordinates, good_id: number): Promise<UInt64> {
51
+ const {seed, epochseed} = await this.getState()
52
+ return marketprice(location, good_id, seed, epochseed)
53
+ }
54
+
55
+ async marketprices(location: Coordinates): Promise<GoodPrice[]> {
56
+ const {seed, epochseed} = await this.getState()
57
+ return marketprices(location, seed, epochseed)
58
+ }
59
+ }
package/src/state.ts ADDED
File without changes
package/src/travel.ts CHANGED
@@ -1,6 +1,10 @@
1
- import {Coordinates, ServerContract} from './index-module'
1
+ import {Checksum256} from '@wharfkit/antelope'
2
2
 
3
- export function distance(ship: ServerContract.Types.ship_row): number {
3
+ import {ServerContract} from './contracts'
4
+ import {hash} from './hash'
5
+ import {Coordinates, Distance} from './types'
6
+
7
+ export function distanceTraveled(ship: ServerContract.Types.ship_row): number {
4
8
  if (ship.travelplan) {
5
9
  const {departure, duration} = ship.travelplan
6
10
  return (+new Date() - +departure.toDate()) / (Number(duration) * 1000)
@@ -8,6 +12,12 @@ export function distance(ship: ServerContract.Types.ship_row): number {
8
12
  return 0
9
13
  }
10
14
 
15
+ export function distanceBetweenPoints(x1: number, y1: number, x2: number, y2: number) {
16
+ const x = Math.pow(x1 - x2, 2)
17
+ const y = Math.pow(y1 - y2, 2)
18
+ return Math.sqrt(x + y)
19
+ }
20
+
11
21
  export function lerp(origin: Coordinates, destination: Coordinates, time: number) {
12
22
  return {
13
23
  x: (1 - time) * origin.x + time * destination.x,
@@ -18,3 +28,38 @@ export function lerp(origin: Coordinates, destination: Coordinates, time: number
18
28
  export function rotation(origin: Coordinates, destination: Coordinates) {
19
29
  return Math.atan2(destination.y - origin.y, destination.x - origin.x) * (180 / Math.PI) + 90
20
30
  }
31
+
32
+ export function hasPlanet(seed: Checksum256, coords: Coordinates): boolean {
33
+ const str = ['system', coords.x, coords.y].join('-')
34
+ return String(hash(seed, str)).slice(0, 2) === '00'
35
+ }
36
+
37
+ export function findNearbyPlanets(
38
+ seed: Checksum256,
39
+ origin: Coordinates,
40
+ maxDistance = 20
41
+ ): Distance[] {
42
+ const nearbySystems: Distance[] = []
43
+
44
+ const xMin = origin.x - maxDistance
45
+ const xMax = origin.x + maxDistance
46
+ const yMin = origin.y - maxDistance
47
+ const yMax = origin.y + maxDistance
48
+
49
+ for (let x = xMin; x <= xMax; x++) {
50
+ for (let y = yMin; y <= yMax; y++) {
51
+ const samePlace = x === origin.x && y === origin.y
52
+ if (!samePlace) {
53
+ const distance = distanceBetweenPoints(origin.x, origin.y, x, y)
54
+ if (distance <= maxDistance) {
55
+ const system = hasPlanet(seed, {x, y})
56
+ if (system) {
57
+ nearbySystems.push({origin, destination: {x, y}, distance})
58
+ }
59
+ }
60
+ }
61
+ }
62
+ }
63
+
64
+ return nearbySystems
65
+ }
package/src/types.ts CHANGED
@@ -1,3 +1,5 @@
1
+ import {UInt16, UInt64} from '@wharfkit/antelope'
2
+
1
3
  export interface Coordinates {
2
4
  x: number
3
5
  y: number
@@ -17,3 +19,16 @@ export interface Distance {
17
19
  destination: Coordinates
18
20
  distance: number
19
21
  }
22
+
23
+ export interface Good {
24
+ id: UInt16
25
+ name: string
26
+ description: string
27
+ base_price: UInt64
28
+ mass: UInt64
29
+ }
30
+
31
+ export interface GoodPrice {
32
+ id: UInt16
33
+ price: UInt64
34
+ }