1.14.4 • Published 10 months ago

@dydxprotocol/v4-abacus v1.14.4

Weekly downloads
-
License
BSL-1.1
Repository
-
Last release
10 months ago

Shared front-end and mobile logic written in Kotlin Multiplatform (https://kotlinlang.org/docs/multiplatform.html).

The library generates Swift framework for iOS, JVM library for Android, and Javascript code for Web.

giphy

Install Java 11

https://www.oracle.com/java/technologies/downloads/#java11

Documentation

API Documentation

iOS

Abacus uses Cocoapods to integrate with iOS project. The gradle configuration contains the steps needed to generate the .podspec file. Run

./gradlew podspec

to generate abacus.podspec. Configure your iOS project (https://github.com/dydxprotocol/native-ios) to import abacus.podspec.

You can also build the Abacus for iOS by running:

./gradlew assembleXCFramework

This generates the iOS framework in build/XCFrameworks folder.

Debugging on iOS directly from XCode is possible with a plugin (https://github.com/touchlab/xcode-kotlin)

Android

Abacus builds and pushes the JVM target as a Github package with the following command:

./publish_android.sh

The Android app (https://github.com/dydxprotocol/native-android) has the Gradle build step to pull the Abacus target from GithubPackage.

v4-web

If you are using v4-abacus with the v4-web repo, follow local development instructions here.

Other JavaScript / TypeScript

Abacus generates a Javascript / Typescript UMD module with the following command:

./gradlew assembleJsPackage

This outputs into build/packages/js.

A local npm package can be built with:

./gradlew packJsPackage

A tarball of the package should be created in build/packages and you can install it to your project for local testing:

npm install PATH_TO_TARBALL

Publishing to NPM

Abacus is published to an npm library (https://www.npmjs.com/package/@dydxprotocol/v4-abacus).

Unit Tests

Shared code should have unit tests written in Kotlin residing in the src/CommonTest directory. Run the tests with the following command

./gradlew jvmtest

Integration Tests

Integration tests can be written to call Abacus from non-Kotlin code (i.e., Swift, JS). Sample integration projects can be found in the integration directory.

Version Bump

./bump_version.sh

Auto-lint

Enable pre-commit to auto-lint/auto-format your changes before git commit:

brew install pre-commit pre-commit install

How to use

// create a state machine
val stateMachine = PerpTradingStateMachine()

// send socket payload to the state machine and get the state
// the param is the complete socket text
val state = stateMachine.socket(payloadText)

// See src/commonTest/kotlin/exchange.dydx.abacus/PerpV3Tests.kt for testing code

Structure

Misc:

  • Utils
  • Protocols

state (top state)

  • app -> AppStateMachine (contains network logic)
  • modal -> StateMachine (contains business logic)
  • changes -> Changes (utilities to identify which part of the state has changed)

processing:

step 1: processor (dynamic objects - dictionaries, list, not typed)

  • markets
    • orderbook
    • trades
    • funding
  • asset (referenced from markets, such as icon, url etc)
  • wallet (user info)
    • account
      • subaccount
        • assetPositions
        • openPositions
        • orders
        • fills
        • transfers
        • historicalPnl
  • configs (from Veronica mostly)

step 2 calculator (dynamic)

  • market (summary info)
  • account (step 3)
    • subaccount
      • 3.1 calculate positon notionalTotal/valueTotal etc
      • 3.2 calculate account equity etc, leverage, margin usage, buyingpower
      • 3.3 calcualte position levereage, buyingpower
  • account transformer (step 2)
    • calculate postOrder and postAllOrderStates for account (total from trade input) and positions (size from trade input)
  • input (step 1)
    • trade input
      • size (size, usdcSize, leverage)
    • transfer input (not complete)

step 3 validator (from postOrder and postAllOrders states)

  • trade
  • transfer

step 4 output (structs, typed data)

  • converts dynamic data to typed

step 5 responses

  • Construct response object from output

CommonTest

test (supporting classes, mostly mocks) utils (just utilities)

AppStateMachine (app)

  • StateMachine (payload and validation folder)

payload (test StateMachine payload and interaction)

  • API -> expected state validation (separated from payload, to target validation tests)

app (test AppStateMachine IO requests)

1.13.63

1 year ago

1.13.60

1 year ago

1.13.62

1 year ago

1.13.61

1 year ago

1.14.1

11 months ago

1.14.0

12 months ago

1.14.4

10 months ago

1.14.3

11 months ago

1.14.2

11 months ago

1.13.31

1 year ago

1.13.30

1 year ago

1.12.65

1 year ago

1.13.33

1 year ago

1.12.64

1 year ago

1.13.32

1 year ago

1.13.39

1 year ago

1.13.38

1 year ago

1.12.67

1 year ago

1.13.35

1 year ago

1.12.66

1 year ago

1.13.34

1 year ago

1.12.69

1 year ago

1.13.37

1 year ago

1.12.68

1 year ago

1.13.36

1 year ago

1.13.20

1 year ago

1.13.22

1 year ago

1.13.21

1 year ago

1.13.28

1 year ago

1.13.27

1 year ago

1.13.29

1 year ago

1.13.24

1 year ago

1.13.23

1 year ago

1.13.26

1 year ago

1.13.25

1 year ago

1.13.53

1 year ago

1.13.52

1 year ago

1.13.55

1 year ago

1.13.54

1 year ago

1.13.51

1 year ago

1.13.50

1 year ago

1.13.57

1 year ago

1.13.56

1 year ago

1.13.59

1 year ago

1.13.58

1 year ago

1.12.74

12 months ago

1.13.42

1 year ago

1.12.73

12 months ago

1.13.41

1 year ago

1.13.44

1 year ago

1.12.75

12 months ago

1.13.43

1 year ago

1.12.70

1 year ago

1.12.72

12 months ago

1.13.40

1 year ago

1.12.71

12 months ago

1.13.49

1 year ago

1.13.46

1 year ago

1.13.45

1 year ago

1.13.48

1 year ago

1.13.47

1 year ago

1.13.19

1 year ago

1.13.18

1 year ago

1.13.17

1 year ago

1.13.16

1 year ago

1.13.15

1 year ago

1.13.14

1 year ago

1.13.13

1 year ago

1.13.12

1 year ago

1.13.9

1 year ago

1.13.11

1 year ago

1.13.10

1 year ago

1.13.6

1 year ago

1.13.8

1 year ago

1.13.7

1 year ago

1.13.5

1 year ago

1.13.2

1 year ago

1.13.1

1 year ago

1.13.0

1 year ago

1.13.4

1 year ago

1.13.3

1 year ago

1.12.30

1 year ago

1.12.31

1 year ago

1.12.27

1 year ago

1.12.26

1 year ago

1.12.29

1 year ago

1.12.28

1 year ago

1.12.25

1 year ago

1.12.23

1 year ago

1.12.22

1 year ago

1.12.24

1 year ago

1.8.102

2 years ago

1.8.103

2 years ago

1.8.104

2 years ago

1.8.105

2 years ago

1.9.1

2 years ago

1.9.0

2 years ago

1.8.100

2 years ago

1.8.101

2 years ago

1.8.2

2 years ago

1.8.1

2 years ago

1.8.0

2 years ago

1.9.9

2 years ago

1.9.8

2 years ago

1.9.7

2 years ago

1.9.6

2 years ago

1.9.5

2 years ago

1.9.4

2 years ago

1.9.3

2 years ago

1.9.2

2 years ago

1.8.80

2 years ago

1.8.81

2 years ago

1.8.82

2 years ago

1.8.83

2 years ago

1.8.84

2 years ago

1.8.85

2 years ago

1.8.86

2 years ago

1.8.87

2 years ago

1.8.88

2 years ago

1.8.89

2 years ago

1.8.90

2 years ago

1.8.91

2 years ago

1.8.92

2 years ago

1.8.93

2 years ago

1.8.94

2 years ago

1.8.95

2 years ago

1.8.96

2 years ago

1.8.97

2 years ago

1.8.9

2 years ago

1.8.98

2 years ago

1.8.99

2 years ago

1.8.7

2 years ago

1.8.6

2 years ago

1.8.5

2 years ago

1.8.4

2 years ago

1.8.3

2 years ago

1.10.4

2 years ago

1.10.3

2 years ago

1.10.2

2 years ago

1.7.90

2 years ago

1.7.91

2 years ago

1.8.60

2 years ago

1.7.92

2 years ago

1.8.61

2 years ago

1.8.62

2 years ago

1.11.16

2 years ago

1.8.63

2 years ago

1.11.17

2 years ago

1.8.64

2 years ago

1.11.14

2 years ago

1.8.65

2 years ago

1.11.15

2 years ago

1.8.66

2 years ago

1.11.12

2 years ago

1.8.67

2 years ago

1.11.13

2 years ago

1.8.68

2 years ago

1.11.10

2 years ago

1.8.69

2 years ago

1.11.11

2 years ago

1.11.18

2 years ago

1.11.19

2 years ago

1.9.15

2 years ago

1.9.14

2 years ago

1.9.13

2 years ago

1.9.12

2 years ago

1.8.70

2 years ago

1.9.11

2 years ago

1.8.71

2 years ago

1.9.10

2 years ago

1.8.72

2 years ago

1.8.73

2 years ago

1.8.74

2 years ago

1.8.76

2 years ago

1.8.77

2 years ago

1.8.78

2 years ago

1.8.79

2 years ago

1.11.4

2 years ago

1.11.3

2 years ago

1.11.2

2 years ago

1.11.1

2 years ago

1.11.8

2 years ago

1.11.7

2 years ago

1.11.6

2 years ago

1.11.5

2 years ago

1.11.9

2 years ago

1.7.70

2 years ago

1.7.71

2 years ago

1.8.40

2 years ago

1.7.72

2 years ago

1.8.41

2 years ago

1.7.73

2 years ago

1.8.42

2 years ago

1.7.74

2 years ago

1.8.43

2 years ago

1.7.75

2 years ago

1.8.44

2 years ago

1.7.76

2 years ago

1.8.45

2 years ago

1.7.77

2 years ago

1.8.46

2 years ago

1.7.78

2 years ago

1.8.47

2 years ago

1.7.79

2 years ago

1.8.49

2 years ago

1.11.20

2 years ago

1.7.80

2 years ago

1.7.81

2 years ago

1.8.50

2 years ago

1.7.82

2 years ago

1.8.51

2 years ago

1.7.83

2 years ago

1.8.52

2 years ago

1.7.84

2 years ago

1.8.53

2 years ago

1.7.85

2 years ago

1.8.54

2 years ago

1.7.86

2 years ago

1.8.55

2 years ago

1.7.87

2 years ago

1.11.23

2 years ago

1.8.56

2 years ago

1.7.88

2 years ago

1.11.24

2 years ago

1.8.57

2 years ago

1.7.89

2 years ago

1.11.21

2 years ago

1.8.58

2 years ago

1.11.22

2 years ago

1.8.59

2 years ago

1.10.1

2 years ago

1.10.0

2 years ago

1.12.3

2 years ago

1.12.2

2 years ago

1.12.1

2 years ago

1.12.0

2 years ago

1.12.7

2 years ago

1.12.6

2 years ago

1.12.5

2 years ago

1.12.4

2 years ago

1.12.9

1 year ago

1.12.8

2 years ago

1.7.50

2 years ago

1.7.51

2 years ago

1.8.20

2 years ago

1.7.52

2 years ago

1.8.21

2 years ago

1.7.53

2 years ago

1.8.22

2 years ago

1.7.54

2 years ago

1.8.23

2 years ago

1.7.55

2 years ago

1.8.24

2 years ago

1.7.56

2 years ago

1.8.25

2 years ago

1.7.57

2 years ago

1.8.26

2 years ago

1.7.58

2 years ago

1.8.27

2 years ago

1.7.59

2 years ago

1.8.28

2 years ago

1.8.29

2 years ago

1.7.60

2 years ago

1.7.61

2 years ago

1.8.30

2 years ago

1.7.62

2 years ago

1.8.31

2 years ago

1.7.63

2 years ago

1.8.32

2 years ago

1.7.64

2 years ago

1.8.33

2 years ago

1.7.65

2 years ago

1.8.34

2 years ago

1.7.66

2 years ago

1.8.35

2 years ago

1.7.67

2 years ago

1.8.36

2 years ago

1.7.68

2 years ago

1.8.37

2 years ago

1.7.69

2 years ago

1.8.38

2 years ago

1.8.39

2 years ago

1.11.0

2 years ago

1.7.30

2 years ago

1.7.31

2 years ago

1.7.32

2 years ago

1.7.33

2 years ago

1.7.34

2 years ago

1.7.35

2 years ago

1.7.36

2 years ago

1.7.37

2 years ago

1.7.38

2 years ago

1.7.39

2 years ago

1.7.40

2 years ago

1.7.41

2 years ago

1.8.10

2 years ago

1.7.42

2 years ago

1.8.11

2 years ago

1.7.43

2 years ago

1.8.12

2 years ago

1.7.44

2 years ago

1.8.13

2 years ago

1.7.45

2 years ago

1.8.14

2 years ago

1.7.46

2 years ago

1.8.15

2 years ago

1.7.47

2 years ago

1.8.16

2 years ago

1.7.48

2 years ago

1.8.17

2 years ago

1.7.49

2 years ago

1.8.18

2 years ago

1.8.19

2 years ago

1.7.25

2 years ago

1.7.26

2 years ago

1.7.27

2 years ago

1.7.28

2 years ago

1.7.29

2 years ago

1.12.21

1 year ago

1.12.20

1 year ago

1.12.10

1 year ago

1.12.16

1 year ago

1.12.15

1 year ago

1.12.18

1 year ago

1.12.17

1 year ago

1.12.12

1 year ago

1.12.11

1 year ago

1.12.14

1 year ago

1.12.13

1 year ago

1.12.19

1 year ago

1.7.24

2 years ago

1.7.19

2 years ago

1.7.20

2 years ago

1.7.21

2 years ago

1.7.22

2 years ago

1.7.23

2 years ago

1.7.17

2 years ago

1.7.18

2 years ago

1.7.14

2 years ago

1.7.15

2 years ago

1.7.16

2 years ago

1.7.9

2 years ago

1.7.10

2 years ago

1.7.11

2 years ago

1.7.12

2 years ago

1.7.13

2 years ago

1.7.8

2 years ago

1.7.7

2 years ago

1.7.6

2 years ago

1.7.5

2 years ago

1.7.4

2 years ago

1.7.3

2 years ago

1.7.2

2 years ago

1.7.1

2 years ago

1.7.0

2 years ago

1.6.55

2 years ago

1.6.54

2 years ago

1.6.51

2 years ago

1.6.53

2 years ago

1.6.52

2 years ago

1.6.48

2 years ago

1.6.49

2 years ago

1.6.50

2 years ago

1.6.46

2 years ago

1.6.47

2 years ago

1.6.45

2 years ago

1.6.44

2 years ago

1.6.43

2 years ago

1.6.42

2 years ago

1.6.40

2 years ago

1.6.41

2 years ago

1.6.39

2 years ago

1.6.38

2 years ago

1.6.35

2 years ago

1.6.34

2 years ago

1.6.37

2 years ago

1.6.36

2 years ago

1.6.33

2 years ago

1.6.31

2 years ago

1.6.32

2 years ago

1.6.30

2 years ago

1.6.28

2 years ago

1.6.27

2 years ago

1.6.24

2 years ago

1.6.26

2 years ago

1.6.25

2 years ago

1.6.20

2 years ago

1.6.22

2 years ago

1.6.23

2 years ago

1.6.19

2 years ago

1.6.18

2 years ago

1.6.17

2 years ago

1.6.16

2 years ago

1.6.15

2 years ago

1.6.14

2 years ago

1.6.13

2 years ago

1.6.11

2 years ago

1.6.12

2 years ago

1.6.10

2 years ago

1.6.9

2 years ago

1.6.8

2 years ago

1.6.7

2 years ago

1.6.6

2 years ago

1.6.3

2 years ago

1.6.2

2 years ago

1.6.1

2 years ago

1.6.0

2 years ago

1.5.1

2 years ago

1.6.5

2 years ago

1.4.15

2 years ago

1.4.16

2 years ago

1.4.14

2 years ago

1.4.13

2 years ago

1.4.11

2 years ago

1.4.12

2 years ago

1.4.10

2 years ago

1.4.9

2 years ago

1.4.8

2 years ago

1.4.7

2 years ago

1.4.6

2 years ago

1.4.5

2 years ago

1.4.4

2 years ago

1.4.3

2 years ago

1.4.2

2 years ago

1.4.1

2 years ago

1.4.0

2 years ago

1.3.6

2 years ago

1.3.5

2 years ago

1.3.4

2 years ago

1.3.3

2 years ago

1.2.9

2 years ago

1.3.2

2 years ago

1.3.1

2 years ago

1.3.0

2 years ago

1.2.8

2 years ago

1.2.7

2 years ago

1.2.6

2 years ago

1.2.5

2 years ago

1.2.4

2 years ago

1.2.3

2 years ago

1.2.2

2 years ago

1.2.1

2 years ago

1.2.0

2 years ago

1.1.33

2 years ago

1.1.32

2 years ago

1.1.30

2 years ago

1.1.31

2 years ago

1.1.29

2 years ago

1.1.28

2 years ago

1.1.27

2 years ago

1.1.26

2 years ago

1.1.25

2 years ago

1.1.24

2 years ago

1.1.23

2 years ago

1.1.22

2 years ago

1.1.21

2 years ago

1.1.20

2 years ago

1.1.16

2 years ago

1.1.15

2 years ago

1.1.14

2 years ago

1.1.19

2 years ago

1.1.18

2 years ago

1.1.17

2 years ago

1.1.12

2 years ago

1.1.11

2 years ago

1.1.13

2 years ago

1.1.9

2 years ago

1.1.10

2 years ago

1.1.7

2 years ago

1.1.6

2 years ago

1.1.5

2 years ago

1.1.4

2 years ago

1.1.3

2 years ago

1.1.2

2 years ago

1.1.1

2 years ago

1.1.0

2 years ago

1.0.31

2 years ago

1.0.30

2 years ago

1.0.29

2 years ago

1.0.28

2 years ago

1.0.27

2 years ago

1.0.26

2 years ago

1.0.25

2 years ago

1.0.24

2 years ago

1.0.23

2 years ago

1.0.22

2 years ago

1.0.21

2 years ago

1.0.20

2 years ago

1.0.19

2 years ago

1.0.18

2 years ago

1.0.17

2 years ago

1.0.14

2 years ago

1.0.13

2 years ago

1.0.12

2 years ago

1.0.11

2 years ago

1.0.10

2 years ago

1.0.9

2 years ago

1.0.8

2 years ago

1.0.7

2 years ago

1.0.6

2 years ago

1.0.5

2 years ago

1.0.4

2 years ago

1.0.3

2 years ago

1.0.2

2 years ago

1.0.1

2 years ago

1.0.0

2 years ago

0.7.9

2 years ago

0.7.8

2 years ago

0.7.7

2 years ago

0.7.6

2 years ago

0.7.5

2 years ago

0.7.3

2 years ago

0.7.2

2 years ago

0.7.1

2 years ago

0.7.0

2 years ago

0.6.20

2 years ago

0.6.19

2 years ago

0.6.18

2 years ago

0.6.17

2 years ago

0.6.16

2 years ago

0.6.15

2 years ago

0.6.14

2 years ago

0.6.13

2 years ago

0.6.12

2 years ago

0.6.5

2 years ago

0.6.4

2 years ago

0.6.3

2 years ago

0.6.2

2 years ago

0.6.1

2 years ago

0.6.0

3 years ago

0.5.12

3 years ago

0.5.11

3 years ago

0.5.10

3 years ago

0.5.9

3 years ago

0.5.8

3 years ago

0.5.7

3 years ago

0.5.6

3 years ago

0.5.5

3 years ago

0.5.4

3 years ago

0.5.3

3 years ago

0.5.2

3 years ago

0.5.1

3 years ago

0.5.0

3 years ago

0.4.46

3 years ago

0.4.45

3 years ago

0.4.44

3 years ago

0.4.33

3 years ago

0.4.32

3 years ago

0.4.30

3 years ago

0.4.29

3 years ago

0.4.28

3 years ago

0.4.27

3 years ago

0.4.26

3 years ago

0.4.24

3 years ago

0.4.23

3 years ago

0.4.22

3 years ago

0.4.21

3 years ago

0.4.20

3 years ago

0.4.18

3 years ago