Skip to content

Commit

Permalink
update drift
Browse files Browse the repository at this point in the history
  • Loading branch information
jpe7s committed Aug 16, 2024
1 parent 808f0a2 commit 15ef7c6
Show file tree
Hide file tree
Showing 15 changed files with 709 additions and 17 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/gradle.yml
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ jobs:
- name: Generate Source
run: ./genSrc.sh --log="INFO" --tabLength=2 --sourceDirectory="programs/src/main/java" --rpc="${{ secrets.RPC_URL }}" --baseDelayMillis=200 --numThreads=5
env:
GITHUB_ACTOR: ${{ secrets.GPR_USER }}
GITHUB_ACTOR: ${{ secrets.GITHUB_ACTOR }}
GITHUB_TOKEN: ${{ secrets.GPR_TOKEN }}

- name: Gradle Check
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ jobs:
- name: Generate Source
run: ./genSrc.sh --log="INFO" --tabLength=2 --sourceDirectory="programs/src/main/java" --rpc="${{ secrets.RPC_URL }}" --baseDelayMillis=200 --numThreads=5
env:
GITHUB_ACTOR: ${{ secrets.GPR_USER }}
GITHUB_ACTOR: ${{ secrets.GITHUB_ACTOR }}
GITHUB_TOKEN: ${{ secrets.GPR_TOKEN }}

- name: Gradle Check
Expand Down

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@
public enum ContractType implements Borsh.Enum {

Perpetual,
Future;
Future,
Prediction;

public static ContractType read(final byte[] _data, final int offset) {
return Borsh.read(ContractType.values(), _data, offset);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,8 @@ public enum FillMode implements Borsh.Enum {

Fill,
PlaceAndMake,
PlaceAndTake;
PlaceAndTake,
Liquidation;

public static FillMode read(final byte[] _data, final int offset) {
return Borsh.read(FillMode.values(), _data, offset);
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,186 @@
package software.sava.anchor.programs.drift.anchor.types;

import java.util.function.BiFunction;

import software.sava.core.accounts.PublicKey;
import software.sava.core.borsh.Borsh;
import software.sava.core.programs.Discriminator;
import software.sava.core.rpc.Filter;

import static software.sava.anchor.AnchorUtil.parseDiscriminator;
import static software.sava.core.accounts.PublicKey.readPubKey;
import static software.sava.core.encoding.ByteUtil.getInt16LE;
import static software.sava.core.encoding.ByteUtil.putInt16LE;

public record OpenbookV2FulfillmentConfig(PublicKey _address,
Discriminator discriminator,
PublicKey pubkey,
PublicKey openbookV2ProgramId,
PublicKey openbookV2Market,
PublicKey openbookV2MarketAuthority,
PublicKey openbookV2EventHeap,
PublicKey openbookV2Bids,
PublicKey openbookV2Asks,
PublicKey openbookV2BaseVault,
PublicKey openbookV2QuoteVault,
int marketIndex,
SpotFulfillmentType fulfillmentType,
SpotFulfillmentConfigStatus status,
int[] padding) implements Borsh {

public static final int BYTES = 304;
public static final Filter SIZE_FILTER = Filter.createDataSizeFilter(BYTES);

public static final int PUBKEY_OFFSET = 8;
public static final int OPENBOOK_V2_PROGRAM_ID_OFFSET = 40;
public static final int OPENBOOK_V2_MARKET_OFFSET = 72;
public static final int OPENBOOK_V2_MARKET_AUTHORITY_OFFSET = 104;
public static final int OPENBOOK_V2_EVENT_HEAP_OFFSET = 136;
public static final int OPENBOOK_V2_BIDS_OFFSET = 168;
public static final int OPENBOOK_V2_ASKS_OFFSET = 200;
public static final int OPENBOOK_V2_BASE_VAULT_OFFSET = 232;
public static final int OPENBOOK_V2_QUOTE_VAULT_OFFSET = 264;
public static final int MARKET_INDEX_OFFSET = 296;
public static final int FULFILLMENT_TYPE_OFFSET = 298;
public static final int STATUS_OFFSET = 299;
public static final int PADDING_OFFSET = 300;

public static Filter createPubkeyFilter(final PublicKey pubkey) {
return Filter.createMemCompFilter(PUBKEY_OFFSET, pubkey);
}

public static Filter createOpenbookV2ProgramIdFilter(final PublicKey openbookV2ProgramId) {
return Filter.createMemCompFilter(OPENBOOK_V2_PROGRAM_ID_OFFSET, openbookV2ProgramId);
}

public static Filter createOpenbookV2MarketFilter(final PublicKey openbookV2Market) {
return Filter.createMemCompFilter(OPENBOOK_V2_MARKET_OFFSET, openbookV2Market);
}

public static Filter createOpenbookV2MarketAuthorityFilter(final PublicKey openbookV2MarketAuthority) {
return Filter.createMemCompFilter(OPENBOOK_V2_MARKET_AUTHORITY_OFFSET, openbookV2MarketAuthority);
}

public static Filter createOpenbookV2EventHeapFilter(final PublicKey openbookV2EventHeap) {
return Filter.createMemCompFilter(OPENBOOK_V2_EVENT_HEAP_OFFSET, openbookV2EventHeap);
}

public static Filter createOpenbookV2BidsFilter(final PublicKey openbookV2Bids) {
return Filter.createMemCompFilter(OPENBOOK_V2_BIDS_OFFSET, openbookV2Bids);
}

public static Filter createOpenbookV2AsksFilter(final PublicKey openbookV2Asks) {
return Filter.createMemCompFilter(OPENBOOK_V2_ASKS_OFFSET, openbookV2Asks);
}

public static Filter createOpenbookV2BaseVaultFilter(final PublicKey openbookV2BaseVault) {
return Filter.createMemCompFilter(OPENBOOK_V2_BASE_VAULT_OFFSET, openbookV2BaseVault);
}

public static Filter createOpenbookV2QuoteVaultFilter(final PublicKey openbookV2QuoteVault) {
return Filter.createMemCompFilter(OPENBOOK_V2_QUOTE_VAULT_OFFSET, openbookV2QuoteVault);
}

public static Filter createMarketIndexFilter(final int marketIndex) {
final byte[] _data = new byte[2];
putInt16LE(_data, 0, marketIndex);
return Filter.createMemCompFilter(MARKET_INDEX_OFFSET, _data);
}

public static Filter createFulfillmentTypeFilter(final SpotFulfillmentType fulfillmentType) {
return Filter.createMemCompFilter(FULFILLMENT_TYPE_OFFSET, fulfillmentType.write());
}

public static Filter createStatusFilter(final SpotFulfillmentConfigStatus status) {
return Filter.createMemCompFilter(STATUS_OFFSET, status.write());
}

public static OpenbookV2FulfillmentConfig read(final byte[] _data, final int offset) {
return read(null, _data, offset);
}

public static OpenbookV2FulfillmentConfig read(final PublicKey _address, final byte[] _data) {
return read(_address, _data, 0);
}

public static final BiFunction<PublicKey, byte[], OpenbookV2FulfillmentConfig> FACTORY = OpenbookV2FulfillmentConfig::read;

public static OpenbookV2FulfillmentConfig read(final PublicKey _address, final byte[] _data, final int offset) {
final var discriminator = parseDiscriminator(_data, offset);
int i = offset + discriminator.length();
final var pubkey = readPubKey(_data, i);
i += 32;
final var openbookV2ProgramId = readPubKey(_data, i);
i += 32;
final var openbookV2Market = readPubKey(_data, i);
i += 32;
final var openbookV2MarketAuthority = readPubKey(_data, i);
i += 32;
final var openbookV2EventHeap = readPubKey(_data, i);
i += 32;
final var openbookV2Bids = readPubKey(_data, i);
i += 32;
final var openbookV2Asks = readPubKey(_data, i);
i += 32;
final var openbookV2BaseVault = readPubKey(_data, i);
i += 32;
final var openbookV2QuoteVault = readPubKey(_data, i);
i += 32;
final var marketIndex = getInt16LE(_data, i);
i += 2;
final var fulfillmentType = SpotFulfillmentType.read(_data, i);
i += Borsh.len(fulfillmentType);
final var status = SpotFulfillmentConfigStatus.read(_data, i);
i += Borsh.len(status);
final var padding = Borsh.readArray(new int[4], _data, i);
return new OpenbookV2FulfillmentConfig(_address,
discriminator,
pubkey,
openbookV2ProgramId,
openbookV2Market,
openbookV2MarketAuthority,
openbookV2EventHeap,
openbookV2Bids,
openbookV2Asks,
openbookV2BaseVault,
openbookV2QuoteVault,
marketIndex,
fulfillmentType,
status,
padding);
}

@Override
public int write(final byte[] _data, final int offset) {
int i = offset + discriminator.write(_data, offset);
pubkey.write(_data, i);
i += 32;
openbookV2ProgramId.write(_data, i);
i += 32;
openbookV2Market.write(_data, i);
i += 32;
openbookV2MarketAuthority.write(_data, i);
i += 32;
openbookV2EventHeap.write(_data, i);
i += 32;
openbookV2Bids.write(_data, i);
i += 32;
openbookV2Asks.write(_data, i);
i += 32;
openbookV2BaseVault.write(_data, i);
i += 32;
openbookV2QuoteVault.write(_data, i);
i += 32;
putInt16LE(_data, i, marketIndex);
i += 2;
i += Borsh.write(fulfillmentType, _data, i);
i += Borsh.write(status, _data, i);
i += Borsh.fixedWrite(padding, _data, i);
return i - offset;
}

@Override
public int l() {
return BYTES;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,8 @@ public enum OracleSource implements Borsh.Enum {
PythPull,
Pyth1KPull,
Pyth1MPull,
PythStableCoinPull;
PythStableCoinPull,
SwitchboardOnDemand;

public static OracleSource read(final byte[] _data, final int offset) {
return Borsh.read(OracleSource.values(), _data, offset);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,8 @@ public enum OrderActionExplanation implements Borsh.Enum {
OrderFillWithPhoenix,
OrderFilledWithAMMJitLPSplit,
OrderFilledWithLPJit,
DeriskLp;
DeriskLp,
OrderFilledWithOpenbookV2;

public static OrderActionExplanation read(final byte[] _data, final int offset) {
return Borsh.read(OrderActionExplanation.values(), _data, offset);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,15 @@ public record PerpMarket(PublicKey _address,
// E.g. if this is -50 and the fee is 5bps, the new fee will be 2.5bps
// if this is 50 and the fee is 5bps, the new fee will be 7.5bps
int feeAdjustment,
// fuel multiplier for perp funding
// precision: 10
int fuelBoostPosition,
// fuel multiplier for perp taker
// precision: 10
int fuelBoostTaker,
// fuel multiplier for perp maker
// precision: 10
int fuelBoostMaker,
int[] padding) implements Borsh {

public static final int PUBKEY_OFFSET = 8;
Expand Down Expand Up @@ -175,7 +184,13 @@ public static PerpMarket read(final PublicKey _address, final byte[] _data, fina
i += 2;
final var feeAdjustment = getInt16LE(_data, i);
i += 2;
final var padding = Borsh.readArray(new int[46], _data, i);
final var fuelBoostPosition = _data[i] & 0xFF;
++i;
final var fuelBoostTaker = _data[i] & 0xFF;
++i;
final var fuelBoostMaker = _data[i] & 0xFF;
++i;
final var padding = Borsh.readArray(new int[43], _data, i);
return new PerpMarket(_address,
discriminator,
pubkey,
Expand Down Expand Up @@ -206,6 +221,9 @@ public static PerpMarket read(final PublicKey _address, final byte[] _data, fina
pausedOperations,
quoteSpotMarketIndex,
feeAdjustment,
fuelBoostPosition,
fuelBoostTaker,
fuelBoostMaker,
padding);
}

Expand Down Expand Up @@ -261,6 +279,12 @@ public int write(final byte[] _data, final int offset) {
i += 2;
putInt16LE(_data, i, feeAdjustment);
i += 2;
_data[i] = (byte) fuelBoostPosition;
++i;
_data[i] = (byte) fuelBoostTaker;
++i;
_data[i] = (byte) fuelBoostMaker;
++i;
i += Borsh.fixedWrite(padding, _data, i);
return i - offset;
}
Expand Down Expand Up @@ -295,6 +319,9 @@ public int l() {
+ 1
+ 2
+ 2
+ 1
+ 1
+ 1
+ Borsh.fixedLen(padding);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,8 @@ public enum SpotFulfillmentType implements Borsh.Enum {

SerumV3,
Match,
PhoenixV1;
PhoenixV1,
OpenbookV2;

public static SpotFulfillmentType read(final byte[] _data, final int offset) {
return Borsh.read(SpotFulfillmentType.values(), _data, offset);
Expand Down
Loading

0 comments on commit 15ef7c6

Please sign in to comment.