1.14.4 • Published 5 months ago

@dydxprotocol/v4-abacus v1.14.4

Weekly downloads
-
License
BSL-1.1
Repository
-
Last release
5 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

8 months ago

1.13.60

9 months ago

1.13.62

8 months ago

1.13.61

9 months ago

1.14.1

6 months ago

1.14.0

7 months ago

1.14.4

5 months ago

1.14.3

6 months ago

1.14.2

6 months ago

1.13.31

1 year ago

1.13.30

1 year ago

1.12.65

8 months ago

1.13.33

12 months ago

1.12.64

8 months ago

1.13.32

1 year ago

1.13.39

12 months ago

1.13.38

12 months ago

1.12.67

8 months ago

1.13.35

12 months ago

1.12.66

8 months ago

1.13.34

12 months ago

1.12.69

8 months ago

1.13.37

12 months ago

1.12.68

8 months ago

1.13.36

12 months 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

10 months ago

1.13.52

10 months ago

1.13.55

9 months ago

1.13.54

10 months ago

1.13.51

10 months ago

1.13.50

10 months ago

1.13.57

9 months ago

1.13.56

9 months ago

1.13.59

9 months ago

1.13.58

9 months ago

1.12.74

7 months ago

1.13.42

11 months ago

1.12.73

8 months ago

1.13.41

11 months ago

1.13.44

11 months ago

1.12.75

7 months ago

1.13.43

11 months ago

1.12.70

8 months ago

1.12.72

8 months ago

1.13.40

12 months ago

1.12.71

8 months ago

1.13.49

10 months ago

1.13.46

11 months ago

1.13.45

11 months ago

1.13.48

10 months ago

1.13.47

10 months 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

1 year ago

1.8.103

1 year ago

1.8.104

1 year ago

1.8.105

1 year ago

1.9.1

1 year ago

1.9.0

1 year ago

1.8.100

1 year ago

1.8.101

1 year ago

1.8.2

1 year ago

1.8.1

1 year ago

1.8.0

1 year ago

1.9.9

1 year ago

1.9.8

1 year ago

1.9.7

1 year ago

1.9.6

1 year ago

1.9.5

1 year ago

1.9.4

1 year ago

1.9.3

1 year ago

1.9.2

1 year ago

1.8.80

1 year ago

1.8.81

1 year ago

1.8.82

1 year ago

1.8.83

1 year ago

1.8.84

1 year ago

1.8.85

1 year ago

1.8.86

1 year ago

1.8.87

1 year ago

1.8.88

1 year ago

1.8.89

1 year ago

1.8.90

1 year ago

1.8.91

1 year ago

1.8.92

1 year ago

1.8.93

1 year ago

1.8.94

1 year ago

1.8.95

1 year ago

1.8.96

1 year ago

1.8.97

1 year ago

1.8.9

1 year ago

1.8.98

1 year ago

1.8.99

1 year ago

1.8.7

1 year ago

1.8.6

1 year ago

1.8.5

1 year ago

1.8.4

1 year ago

1.8.3

1 year ago

1.10.4

1 year ago

1.10.3

1 year ago

1.10.2

1 year ago

1.7.90

1 year ago

1.7.91

1 year ago

1.8.60

1 year ago

1.7.92

1 year ago

1.8.61

1 year ago

1.8.62

1 year ago

1.11.16

1 year ago

1.8.63

1 year ago

1.11.17

1 year ago

1.8.64

1 year ago

1.11.14

1 year ago

1.8.65

1 year ago

1.11.15

1 year ago

1.8.66

1 year ago

1.11.12

1 year ago

1.8.67

1 year ago

1.11.13

1 year ago

1.8.68

1 year ago

1.11.10

1 year ago

1.8.69

1 year ago

1.11.11

1 year ago

1.11.18

1 year ago

1.11.19

1 year ago

1.9.15

1 year ago

1.9.14

1 year ago

1.9.13

1 year ago

1.9.12

1 year ago

1.8.70

1 year ago

1.9.11

1 year ago

1.8.71

1 year ago

1.9.10

1 year ago

1.8.72

1 year ago

1.8.73

1 year ago

1.8.74

1 year ago

1.8.76

1 year ago

1.8.77

1 year ago

1.8.78

1 year ago

1.8.79

1 year ago

1.11.4

1 year ago

1.11.3

1 year ago

1.11.2

1 year ago

1.11.1

1 year ago

1.11.8

1 year ago

1.11.7

1 year ago

1.11.6

1 year ago

1.11.5

1 year ago

1.11.9

1 year ago

1.7.70

1 year ago

1.7.71

1 year ago

1.8.40

1 year ago

1.7.72

1 year ago

1.8.41

1 year ago

1.7.73

1 year ago

1.8.42

1 year ago

1.7.74

1 year ago

1.8.43

1 year ago

1.7.75

1 year ago

1.8.44

1 year ago

1.7.76

1 year ago

1.8.45

1 year ago

1.7.77

1 year ago

1.8.46

1 year ago

1.7.78

1 year ago

1.8.47

1 year ago

1.7.79

1 year ago

1.8.49

1 year ago

1.11.20

1 year ago

1.7.80

1 year ago

1.7.81

1 year ago

1.8.50

1 year ago

1.7.82

1 year ago

1.8.51

1 year ago

1.7.83

1 year ago

1.8.52

1 year ago

1.7.84

1 year ago

1.8.53

1 year ago

1.7.85

1 year ago

1.8.54

1 year ago

1.7.86

1 year ago

1.8.55

1 year ago

1.7.87

1 year ago

1.11.23

1 year ago

1.8.56

1 year ago

1.7.88

1 year ago

1.11.24

1 year ago

1.8.57

1 year ago

1.7.89

1 year ago

1.11.21

1 year ago

1.8.58

1 year ago

1.11.22

1 year ago

1.8.59

1 year ago

1.10.1

1 year ago

1.10.0

1 year ago

1.12.3

1 year ago

1.12.2

1 year ago

1.12.1

1 year ago

1.12.0

1 year ago

1.12.7

1 year ago

1.12.6

1 year ago

1.12.5

1 year ago

1.12.4

1 year ago

1.12.9

1 year ago

1.12.8

1 year ago

1.7.50

1 year ago

1.7.51

1 year ago

1.8.20

1 year ago

1.7.52

1 year ago

1.8.21

1 year ago

1.7.53

1 year ago

1.8.22

1 year ago

1.7.54

1 year ago

1.8.23

1 year ago

1.7.55

1 year ago

1.8.24

1 year ago

1.7.56

1 year ago

1.8.25

1 year ago

1.7.57

1 year ago

1.8.26

1 year ago

1.7.58

1 year ago

1.8.27

1 year ago

1.7.59

1 year ago

1.8.28

1 year ago

1.8.29

1 year ago

1.7.60

1 year ago

1.7.61

1 year ago

1.8.30

1 year ago

1.7.62

1 year ago

1.8.31

1 year ago

1.7.63

1 year ago

1.8.32

1 year ago

1.7.64

1 year ago

1.8.33

1 year ago

1.7.65

1 year ago

1.8.34

1 year ago

1.7.66

1 year ago

1.8.35

1 year ago

1.7.67

1 year ago

1.8.36

1 year ago

1.7.68

1 year ago

1.8.37

1 year ago

1.7.69

1 year ago

1.8.38

1 year ago

1.8.39

1 year ago

1.11.0

1 year ago

1.7.30

1 year ago

1.7.31

1 year ago

1.7.32

1 year ago

1.7.33

1 year ago

1.7.34

1 year ago

1.7.35

1 year ago

1.7.36

1 year ago

1.7.37

1 year ago

1.7.38

1 year ago

1.7.39

1 year ago

1.7.40

1 year ago

1.7.41

1 year ago

1.8.10

1 year ago

1.7.42

1 year ago

1.8.11

1 year ago

1.7.43

1 year ago

1.8.12

1 year ago

1.7.44

1 year ago

1.8.13

1 year ago

1.7.45

1 year ago

1.8.14

1 year ago

1.7.46

1 year ago

1.8.15

1 year ago

1.7.47

1 year ago

1.8.16

1 year ago

1.7.48

1 year ago

1.8.17

1 year ago

1.7.49

1 year ago

1.8.18

1 year ago

1.8.19

1 year ago

1.7.25

1 year ago

1.7.26

1 year ago

1.7.27

1 year ago

1.7.28

1 year ago

1.7.29

1 year 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

1 year 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

2 years ago

0.5.12

2 years ago

0.5.11

2 years ago

0.5.10

2 years ago

0.5.9

2 years ago

0.5.8

2 years ago

0.5.7

2 years ago

0.5.6

2 years ago

0.5.5

2 years ago

0.5.4

2 years ago

0.5.3

2 years ago

0.5.2

2 years ago

0.5.1

2 years ago

0.5.0

2 years ago

0.4.46

2 years ago

0.4.45

2 years ago

0.4.44

2 years ago

0.4.33

2 years ago

0.4.32

2 years ago

0.4.30

2 years ago

0.4.29

2 years ago

0.4.28

2 years ago

0.4.27

2 years ago

0.4.26

2 years ago

0.4.24

2 years ago

0.4.23

2 years ago

0.4.22

2 years ago

0.4.21

2 years ago

0.4.20

2 years ago

0.4.18

2 years ago