@wharfkit/resources 1.5.0-rc3 → 1.5.0-rc4

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.
@@ -3,8 +3,6 @@ import {Int64, Int64Type, Struct, UInt128, UInt128Type} from '@wharfkit/antelope
3
3
  import {BNPrecision, intToBigDecimal, SampleUsage} from '..'
4
4
  import {PowerUpStateResource} from './abstract'
5
5
  import {PowerUpStateOptions} from './options'
6
- import BN from 'bn.js'
7
- import bigDecimal from 'js-big-decimal'
8
6
 
9
7
  @Struct.type('powerupstateresourcecpu')
10
8
  export class PowerUpStateResourceCPU extends PowerUpStateResource {
@@ -26,9 +24,6 @@ export class PowerUpStateResourceCPU extends PowerUpStateResource {
26
24
  }
27
25
 
28
26
  // Convert weight to μs (microseconds)
29
- weight_to_us_legacy(sample: UInt128, weight: number): number {
30
- return Math.ceil((weight * Number(sample)) / BNPrecision)
31
- }
32
27
  weight_to_us(sample: UInt128Type, weight: Int64Type): UInt128 {
33
28
  return UInt128.from(
34
29
  UInt128.from(weight).multiplying(Int64.from(sample)).dividing(BNPrecision, 'ceil')
@@ -36,29 +31,17 @@ export class PowerUpStateResourceCPU extends PowerUpStateResource {
36
31
  }
37
32
 
38
33
  // Convert μs (microseconds) to weight
39
- us_to_weight_legacy(sample: UInt128, us: number): number {
40
- const sampled = intToBigDecimal(sample)
41
- return Math.floor((us / Number(sampled.getValue())) * BNPrecision)
42
- }
43
34
  us_to_weight(sample: UInt128, us: Int64Type): Int64 {
44
- return Int64.from(us).multiplying(BNPrecision).dividing(Int64.from(sample), 'floor')
35
+ return Int64.from(us).multiplying(BNPrecision).dividing(sample, 'floor')
45
36
  }
46
37
 
47
38
  // Default frac generation by smallest unit type
48
- frac_legacy = (usage: SampleUsage, us: number) => this.frac_by_us_legacy(usage, us)
49
39
  frac = (usage: SampleUsage, us: number) => this.frac_by_us(usage, us)
50
40
 
51
41
  // Frac generation by ms (milliseconds)
52
- frac_by_ms_legacy = (usage: SampleUsage, ms: number) => this.frac_by_us_legacy(usage, ms * 1000)
53
42
  frac_by_ms = (usage: SampleUsage, ms: number) => this.frac_by_us(usage, ms * 1000)
54
43
 
55
44
  // Frac generation by μs (microseconds)
56
- frac_by_us_legacy(usage: SampleUsage, us: number) {
57
- const weight = intToBigDecimal(this.us_to_weight_legacy(usage.cpu, us))
58
- const current = intToBigDecimal(this.weight)
59
- const frac = weight.divide(current)
60
- return Math.floor(Number(frac.getValue()) * Math.pow(10, 15))
61
- }
62
45
  frac_by_us(usage: SampleUsage, us: Int64Type): Int64 {
63
46
  const precision = 15
64
47
  const converted = intToBigDecimal(this.us_to_weight(usage.cpu, us))
@@ -69,64 +52,25 @@ export class PowerUpStateResourceCPU extends PowerUpStateResource {
69
52
  }
70
53
 
71
54
  // Price generation by smallest units, μs (microseconds)
72
- price_per_legacy = (usage: SampleUsage, us = 1000, options?: PowerUpStateOptions): number =>
73
- this.price_per_us_legacy(usage, us, options)
74
55
  price_per = (usage: SampleUsage, us = 1000, options?: PowerUpStateOptions): number =>
75
56
  this.price_per_us(usage, us, options)
76
57
 
77
58
  // Price generation by ms (milliseconds)
78
- price_per_ms_legacy = (usage: SampleUsage, ms = 1, options?: PowerUpStateOptions): number =>
79
- this.price_per_us_legacy(usage, ms * 1000, options)
80
59
  price_per_ms = (usage: SampleUsage, ms = 1, options?: PowerUpStateOptions): number =>
81
60
  this.price_per_us(usage, ms * 1000, options)
82
61
 
83
62
  // Price generation by μs (microseconds)
84
- price_per_us_legacy(usage: SampleUsage, us = 1000, options?: PowerUpStateOptions): number {
85
- // Determine the utilization increase by this action
86
- const frac = UInt128.from(this.frac_legacy(usage, us))
87
- console.log('frac', String(frac))
88
-
89
- const utilization_increase = this.utilization_increase_legacy(frac)
90
- console.log('utilization_increase', String(utilization_increase))
91
-
92
- // Determine the adjusted utilization if needed
93
- const adjusted_utilization = this.determine_adjusted_utilization(options)
94
- console.log('adjusted_utilization', String(adjusted_utilization))
95
-
96
- // Derive the fee from the increase and utilization
97
- const fee = this.fee_legacy(utilization_increase, adjusted_utilization)
98
- console.log('fee', fee)
99
-
100
- // Force the fee up to the next highest value of precision
101
- const precision = Math.pow(10, this.max_price.symbol.precision)
102
- const value = Math.ceil(fee * precision) / precision
103
- console.log('ceil', value)
104
-
105
- // Return the modified fee
106
- return value
107
- }
108
63
  price_per_us(usage: SampleUsage, us = 1000, options?: PowerUpStateOptions): number {
109
64
  // Determine the utilization increase by this action
110
65
  const frac = UInt128.from(this.frac(usage, us))
111
- console.log('frac', String(frac))
112
-
113
66
  const utilization_increase = this.utilization_increase(frac)
114
- console.log('utilization_increase', String(utilization_increase))
115
-
116
67
  // Determine the adjusted utilization if needed
117
68
  const adjusted_utilization = this.determine_adjusted_utilization(options)
118
- console.log('adjusted_utilization', String(adjusted_utilization))
119
-
120
69
  // Derive the fee from the increase and utilization
121
70
  const fee = this.fee(utilization_increase, adjusted_utilization)
122
- console.log('fee', fee)
123
-
124
71
  // Force the fee up to the next highest value of precision
125
72
  const precision = Math.pow(10, this.max_price.symbol.precision)
126
73
  const value = Math.ceil(fee * precision) / precision
127
-
128
- console.log('ceil', value)
129
-
130
74
  // Return the modified fee
131
75
  return value
132
76
  }
@@ -3,7 +3,6 @@ import {Int64, Int64Type, Struct, UInt128} from '@wharfkit/antelope'
3
3
  import {BNPrecision, intToBigDecimal, SampleUsage} from '..'
4
4
  import {PowerUpStateResource} from './abstract'
5
5
  import {PowerUpStateOptions} from './options'
6
- import BN from 'bn.js'
7
6
 
8
7
  @Struct.type('powerupstateresourcenet')
9
8
  export class PowerUpStateResourceNET extends PowerUpStateResource {
@@ -25,9 +24,6 @@ export class PowerUpStateResourceNET extends PowerUpStateResource {
25
24
  }
26
25
 
27
26
  // Convert weight to bytes
28
- weight_to_bytes_legacy(sample: UInt128, weight: number): number {
29
- return Math.ceil((weight * Number(sample)) / BNPrecision)
30
- }
31
27
  weight_to_bytes(sample: UInt128, weight: number): UInt128 {
32
28
  return UInt128.from(
33
29
  UInt128.from(weight).multiplying(Int64.from(sample)).dividing(BNPrecision, 'ceil')
@@ -35,29 +31,18 @@ export class PowerUpStateResourceNET extends PowerUpStateResource {
35
31
  }
36
32
 
37
33
  // Convert bytes to weight
38
- bytes_to_weight_legacy(sample: UInt128, bytes: number): number {
39
- return Math.floor((bytes / Number(sample)) * BNPrecision)
40
- }
41
34
  bytes_to_weight(sample: UInt128, bytes: Int64Type): Int64 {
42
35
  return Int64.from(bytes).multiplying(BNPrecision).dividing(Int64.from(sample), 'floor')
43
36
  }
44
37
 
45
38
  // Default frac generation by smallest unit type
46
- frac_legacy = (usage: SampleUsage, bytes: number) => this.frac_by_bytes_legacy(usage, bytes)
47
39
  frac = (usage: SampleUsage, bytes: number) => this.frac_by_bytes(usage, bytes)
48
40
 
49
41
  // Frac generation by kb
50
- frac_by_kb_legacy = (usage: SampleUsage, kilobytes: number) =>
51
- this.frac_by_bytes_legacy(usage, kilobytes * 1000)
52
42
  frac_by_kb = (usage: SampleUsage, kilobytes: number) =>
53
43
  this.frac_by_bytes(usage, kilobytes * 1000)
54
44
 
55
45
  // Frac generation by bytes
56
- frac_by_bytes_legacy(usage: SampleUsage, bytes: number) {
57
- const {weight} = this
58
- const frac = new BN(this.bytes_to_weight_legacy(usage.net, bytes)) / Number(weight)
59
- return Math.floor(frac * Math.pow(10, 15))
60
- }
61
46
  frac_by_bytes(usage: SampleUsage, bytes: Int64Type): Int64 {
62
47
  const precision = 15
63
48
  const converted = intToBigDecimal(this.bytes_to_weight(usage.net, bytes))
@@ -68,38 +53,14 @@ export class PowerUpStateResourceNET extends PowerUpStateResource {
68
53
  }
69
54
 
70
55
  // Price generation by smallest units, bytes
71
- price_per_legacy = (usage: SampleUsage, bytes = 1000, options?: PowerUpStateOptions) =>
72
- this.price_per_byte_legacy(usage, bytes, options)
73
56
  price_per = (usage: SampleUsage, bytes = 1000, options?: PowerUpStateOptions) =>
74
57
  this.price_per_byte(usage, bytes, options)
75
58
 
76
59
  // Price generation by kb
77
- price_per_kb_legacy = (
78
- usage: SampleUsage,
79
- kilobytes = 1,
80
- options?: PowerUpStateOptions
81
- ): number => this.price_per_byte_legacy(usage, kilobytes * 1000, options)
82
60
  price_per_kb = (usage: SampleUsage, kilobytes = 1, options?: PowerUpStateOptions): number =>
83
61
  this.price_per_byte(usage, kilobytes * 1000, options)
84
62
 
85
63
  // Price generation by bytes
86
- price_per_byte_legacy(usage: SampleUsage, bytes = 1000, options?: PowerUpStateOptions): number {
87
- // Determine the utilization increase by this action
88
- const frac = UInt128.from(this.frac_legacy(usage, bytes))
89
- const utilization_increase = this.utilization_increase_legacy(frac)
90
-
91
- // Determine the adjusted utilization if needed
92
- const adjusted_utilization = this.determine_adjusted_utilization(options)
93
-
94
- // Derive the fee from the increase and utilization
95
- const fee = this.fee_legacy(utilization_increase, adjusted_utilization)
96
-
97
- const precision = Math.pow(10, this.max_price.symbol.precision)
98
- const value = Math.ceil(fee * precision) / precision
99
-
100
- // Return the modified fee
101
- return value
102
- }
103
64
  price_per_byte(usage: SampleUsage, bytes = 1000, options?: PowerUpStateOptions): number {
104
65
  // Determine the utilization increase by this action
105
66
  const frac = UInt128.from(this.frac(usage, bytes))
package/src/rex.ts CHANGED
@@ -1,4 +1,4 @@
1
- import {BNPrecision, Resources, SampleUsage} from './'
1
+ import {BNPrecision, intToBigDecimal, Resources, SampleUsage} from './'
2
2
 
3
3
  import {Asset, Struct, UInt128, UInt64, UInt8} from '@wharfkit/antelope'
4
4
 
@@ -26,17 +26,18 @@ export class REXState extends Struct {
26
26
  }
27
27
 
28
28
  public get value() {
29
- return (
30
- (Number(this.total_lent.units) + Number(this.total_unlent.units)) /
31
- Number(this.total_rex.units)
32
- )
29
+ const lent = intToBigDecimal(this.total_lent.units)
30
+ const unlent = intToBigDecimal(this.total_unlent.units)
31
+ const rex = intToBigDecimal(this.total_rex.units)
32
+ return Number(lent.add(unlent).divide(rex, 18).getValue())
33
33
  }
34
34
 
35
35
  exchange(amount: Asset): Asset {
36
- return Asset.from(
37
- (amount.value * this.total_lendable.value) / this.total_rex.value,
38
- this.symbol
39
- )
36
+ const value = intToBigDecimal(amount.units)
37
+ const lendable = intToBigDecimal(this.total_lendable.units)
38
+ const rex = intToBigDecimal(this.total_rex.units)
39
+ const tokens = value.multiply(lendable).divide(rex, this.precision)
40
+ return Asset.fromUnits(Number(tokens.getValue()), this.symbol)
40
41
  }
41
42
 
42
43
  cpu_price_per_ms(sample: SampleUsage, ms = 1): number {