From 5502a1dd74fb0aedf051c85fb97ee8c437e8a0c8 Mon Sep 17 00:00:00 2001 From: vincentwschau <99756290+vincentwschau@users.noreply.github.com> Date: Tue, 23 Apr 2024 14:39:50 -0400 Subject: [PATCH] [TRA-227] Add V2 for perpetual market create event + handlers. (#1395) (cherry picked from commit 45fb45e975e9bdf9494b95965fb80cde5e251dbe) --- .../dydxprotocol/indexer/events/events.ts | 299 ++++++- .../handlers/perpetual-market-handler.test.ts | 154 ++-- .../ender/__tests__/helpers/constants.ts | 18 +- .../helpers/indexer-proto-helpers.ts | 24 +- .../ender/__tests__/lib/on-message.test.ts | 6 +- .../perpetual-market-validator.test.ts | 67 +- .../src/handlers/perpetual-market-handler.ts | 6 +- .../helpers/postgres/postgres-functions.ts | 3 +- .../services/ender/src/lib/block-processor.ts | 1 + indexer/services/ender/src/lib/helper.ts | 32 +- indexer/services/ender/src/lib/types.ts | 7 + .../dydx_block_processor_ordered_handlers.sql | 9 +- .../dydx_perpetual_market_v1_handler.sql | 40 + ...l => dydx_perpetual_market_v2_handler.sql} | 2 +- .../validators/perpetual-market-validator.ts | 6 +- .../dydxprotocol/indexer/events/events.proto | 53 ++ protocol/indexer/events/constants.go | 2 +- protocol/indexer/events/events.pb.go | 828 ++++++++++++++---- .../indexer/events/perpetual_market_create.go | 4 +- .../events/perpetual_market_create_test.go | 2 +- 20 files changed, 1298 insertions(+), 265 deletions(-) create mode 100644 indexer/services/ender/src/scripts/handlers/dydx_perpetual_market_v1_handler.sql rename indexer/services/ender/src/scripts/handlers/{dydx_perpetual_market_handler.sql => dydx_perpetual_market_v2_handler.sql} (95%) diff --git a/indexer/packages/v4-protos/src/codegen/dydxprotocol/indexer/events/events.ts b/indexer/packages/v4-protos/src/codegen/dydxprotocol/indexer/events/events.ts index 5ba4145c69..e90dd087b7 100644 --- a/indexer/packages/v4-protos/src/codegen/dydxprotocol/indexer/events/events.ts +++ b/indexer/packages/v4-protos/src/codegen/dydxprotocol/indexer/events/events.ts @@ -780,8 +780,12 @@ export interface AssetCreateEventV1SDKType { /** * PerpetualMarketCreateEventV1 message contains all the information about a * new Perpetual Market on the dYdX chain. + * Deprecated. See PerpetualMarketCreateEventV2 for the most up to date message + * for the event to create a new Perpetual Market. */ +/** @deprecated */ + export interface PerpetualMarketCreateEventV1 { /** * Unique Perpetual id. @@ -808,6 +812,150 @@ export interface PerpetualMarketCreateEventV1 { marketId: number; /** Status of the CLOB */ + status: ClobPairStatus; + /** + * `10^Exponent` gives the number of QuoteQuantums traded per BaseQuantum + * per Subtick. + * Defined in clob.clob_pair + */ + + quantumConversionExponent: number; + /** + * The exponent for converting an atomic amount (`size = 1`) + * to a full coin. For example, if `AtomicResolution = -8` + * then a `PerpetualPosition` with `size = 1e8` is equivalent to + * a position size of one full coin. + * Defined in perpetuals.perpetual + */ + + atomicResolution: number; + /** + * Defines the tick size of the orderbook by defining how many subticks + * are in one tick. That is, the subticks of any valid order must be a + * multiple of this value. Generally this value should start `>= 100`to + * allow room for decreasing it. + * Defined in clob.clob_pair + */ + + subticksPerTick: number; + /** + * Minimum increment in the size of orders on the CLOB, in base quantums. + * Defined in clob.clob_pair + */ + + stepBaseQuantums: Long; + /** + * The liquidity_tier that this perpetual is associated with. + * Defined in perpetuals.perpetual + */ + + liquidityTier: number; +} +/** + * PerpetualMarketCreateEventV1 message contains all the information about a + * new Perpetual Market on the dYdX chain. + * Deprecated. See PerpetualMarketCreateEventV2 for the most up to date message + * for the event to create a new Perpetual Market. + */ + +/** @deprecated */ + +export interface PerpetualMarketCreateEventV1SDKType { + /** + * Unique Perpetual id. + * Defined in perpetuals.perpetual + */ + id: number; + /** + * Unique clob pair Id associated with this perpetual market + * Defined in clob.clob_pair + */ + + clob_pair_id: number; + /** + * The name of the `Perpetual` (e.g. `BTC-USD`). + * Defined in perpetuals.perpetual + */ + + ticker: string; + /** + * Unique id of market param associated with this perpetual market. + * Defined in perpetuals.perpetual + */ + + market_id: number; + /** Status of the CLOB */ + + status: ClobPairStatusSDKType; + /** + * `10^Exponent` gives the number of QuoteQuantums traded per BaseQuantum + * per Subtick. + * Defined in clob.clob_pair + */ + + quantum_conversion_exponent: number; + /** + * The exponent for converting an atomic amount (`size = 1`) + * to a full coin. For example, if `AtomicResolution = -8` + * then a `PerpetualPosition` with `size = 1e8` is equivalent to + * a position size of one full coin. + * Defined in perpetuals.perpetual + */ + + atomic_resolution: number; + /** + * Defines the tick size of the orderbook by defining how many subticks + * are in one tick. That is, the subticks of any valid order must be a + * multiple of this value. Generally this value should start `>= 100`to + * allow room for decreasing it. + * Defined in clob.clob_pair + */ + + subticks_per_tick: number; + /** + * Minimum increment in the size of orders on the CLOB, in base quantums. + * Defined in clob.clob_pair + */ + + step_base_quantums: Long; + /** + * The liquidity_tier that this perpetual is associated with. + * Defined in perpetuals.perpetual + */ + + liquidity_tier: number; +} +/** + * PerpetualMarketCreateEventV2 message contains all the information about a + * new Perpetual Market on the dYdX chain. + */ + +export interface PerpetualMarketCreateEventV2 { + /** + * Unique Perpetual id. + * Defined in perpetuals.perpetual + */ + id: number; + /** + * Unique clob pair Id associated with this perpetual market + * Defined in clob.clob_pair + */ + + clobPairId: number; + /** + * The name of the `Perpetual` (e.g. `BTC-USD`). + * Defined in perpetuals.perpetual + */ + + ticker: string; + /** + * Unique id of market param associated with this perpetual market. + * Defined in perpetuals.perpetual + */ + + marketId: number; + /** Status of the CLOB */ + status: ClobPairStatus; /** * `10^Exponent` gives the number of QuoteQuantums traded per BaseQuantum @@ -851,11 +999,11 @@ export interface PerpetualMarketCreateEventV1 { marketType: PerpetualMarketType; } /** - * PerpetualMarketCreateEventV1 message contains all the information about a + * PerpetualMarketCreateEventV2 message contains all the information about a * new Perpetual Market on the dYdX chain. */ -export interface PerpetualMarketCreateEventV1SDKType { +export interface PerpetualMarketCreateEventV2SDKType { /** * Unique Perpetual id. * Defined in perpetuals.perpetual @@ -2649,8 +2797,7 @@ function createBasePerpetualMarketCreateEventV1(): PerpetualMarketCreateEventV1 atomicResolution: 0, subticksPerTick: 0, stepBaseQuantums: Long.UZERO, - liquidityTier: 0, - marketType: 0 + liquidityTier: 0 }; } @@ -2696,6 +2843,142 @@ export const PerpetualMarketCreateEventV1 = { writer.uint32(80).uint32(message.liquidityTier); } + return writer; + }, + + decode(input: _m0.Reader | Uint8Array, length?: number): PerpetualMarketCreateEventV1 { + const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input); + let end = length === undefined ? reader.len : reader.pos + length; + const message = createBasePerpetualMarketCreateEventV1(); + + while (reader.pos < end) { + const tag = reader.uint32(); + + switch (tag >>> 3) { + case 1: + message.id = reader.uint32(); + break; + + case 2: + message.clobPairId = reader.uint32(); + break; + + case 3: + message.ticker = reader.string(); + break; + + case 4: + message.marketId = reader.uint32(); + break; + + case 5: + message.status = (reader.int32() as any); + break; + + case 6: + message.quantumConversionExponent = reader.sint32(); + break; + + case 7: + message.atomicResolution = reader.sint32(); + break; + + case 8: + message.subticksPerTick = reader.uint32(); + break; + + case 9: + message.stepBaseQuantums = (reader.uint64() as Long); + break; + + case 10: + message.liquidityTier = reader.uint32(); + break; + + default: + reader.skipType(tag & 7); + break; + } + } + + return message; + }, + + fromPartial(object: DeepPartial): PerpetualMarketCreateEventV1 { + const message = createBasePerpetualMarketCreateEventV1(); + message.id = object.id ?? 0; + message.clobPairId = object.clobPairId ?? 0; + message.ticker = object.ticker ?? ""; + message.marketId = object.marketId ?? 0; + message.status = object.status ?? 0; + message.quantumConversionExponent = object.quantumConversionExponent ?? 0; + message.atomicResolution = object.atomicResolution ?? 0; + message.subticksPerTick = object.subticksPerTick ?? 0; + message.stepBaseQuantums = object.stepBaseQuantums !== undefined && object.stepBaseQuantums !== null ? Long.fromValue(object.stepBaseQuantums) : Long.UZERO; + message.liquidityTier = object.liquidityTier ?? 0; + return message; + } + +}; + +function createBasePerpetualMarketCreateEventV2(): PerpetualMarketCreateEventV2 { + return { + id: 0, + clobPairId: 0, + ticker: "", + marketId: 0, + status: 0, + quantumConversionExponent: 0, + atomicResolution: 0, + subticksPerTick: 0, + stepBaseQuantums: Long.UZERO, + liquidityTier: 0, + marketType: 0 + }; +} + +export const PerpetualMarketCreateEventV2 = { + encode(message: PerpetualMarketCreateEventV2, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { + if (message.id !== 0) { + writer.uint32(8).uint32(message.id); + } + + if (message.clobPairId !== 0) { + writer.uint32(16).uint32(message.clobPairId); + } + + if (message.ticker !== "") { + writer.uint32(26).string(message.ticker); + } + + if (message.marketId !== 0) { + writer.uint32(32).uint32(message.marketId); + } + + if (message.status !== 0) { + writer.uint32(40).int32(message.status); + } + + if (message.quantumConversionExponent !== 0) { + writer.uint32(48).sint32(message.quantumConversionExponent); + } + + if (message.atomicResolution !== 0) { + writer.uint32(56).sint32(message.atomicResolution); + } + + if (message.subticksPerTick !== 0) { + writer.uint32(64).uint32(message.subticksPerTick); + } + + if (!message.stepBaseQuantums.isZero()) { + writer.uint32(72).uint64(message.stepBaseQuantums); + } + + if (message.liquidityTier !== 0) { + writer.uint32(80).uint32(message.liquidityTier); + } + if (message.marketType !== 0) { writer.uint32(88).int32(message.marketType); } @@ -2703,10 +2986,10 @@ export const PerpetualMarketCreateEventV1 = { return writer; }, - decode(input: _m0.Reader | Uint8Array, length?: number): PerpetualMarketCreateEventV1 { + decode(input: _m0.Reader | Uint8Array, length?: number): PerpetualMarketCreateEventV2 { const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input); let end = length === undefined ? reader.len : reader.pos + length; - const message = createBasePerpetualMarketCreateEventV1(); + const message = createBasePerpetualMarketCreateEventV2(); while (reader.pos < end) { const tag = reader.uint32(); @@ -2765,8 +3048,8 @@ export const PerpetualMarketCreateEventV1 = { return message; }, - fromPartial(object: DeepPartial): PerpetualMarketCreateEventV1 { - const message = createBasePerpetualMarketCreateEventV1(); + fromPartial(object: DeepPartial): PerpetualMarketCreateEventV2 { + const message = createBasePerpetualMarketCreateEventV2(); message.id = object.id ?? 0; message.clobPairId = object.clobPairId ?? 0; message.ticker = object.ticker ?? ""; diff --git a/indexer/services/ender/__tests__/handlers/perpetual-market-handler.test.ts b/indexer/services/ender/__tests__/handlers/perpetual-market-handler.test.ts index 25d45f2df4..1ef52a98c7 100644 --- a/indexer/services/ender/__tests__/handlers/perpetual-market-handler.test.ts +++ b/indexer/services/ender/__tests__/handlers/perpetual-market-handler.test.ts @@ -1,5 +1,6 @@ import { PerpetualMarketCreateEventV1, + PerpetualMarketCreateEventV2, IndexerTendermintBlock, IndexerTendermintEvent, Timestamp, @@ -25,12 +26,14 @@ import { DydxIndexerSubtypes } from '../../src/lib/types'; import { createIndexerTendermintBlock, createIndexerTendermintEvent, - expectPerpetualMarket, + expectPerpetualMarketV1, expectPerpetualMarketKafkaMessage, + expectPerpetualMarketV2, } from '../helpers/indexer-proto-helpers'; import { PerpetualMarketCreationHandler } from '../../src/handlers/perpetual-market-handler'; import { - defaultPerpetualMarketCreateEvent, + defaultPerpetualMarketCreateEventV1, + defaultPerpetualMarketCreateEventV2, defaultHeight, defaultPreviousHeight, defaultTime, @@ -71,14 +74,35 @@ describe('perpetualMarketHandler', () => { jest.resetAllMocks(); }); - describe('getParallelizationIds', () => { + describe.each([ + [ + 'PerpetualMarketCreateEventV1', + 1, + PerpetualMarketCreateEventV1.encode(defaultPerpetualMarketCreateEventV1).finish(), + expectPerpetualMarketV1, + defaultPerpetualMarketCreateEventV1, + ], + [ + 'PerpetualMarketCreateEventV2', + 2, + PerpetualMarketCreateEventV2.encode(defaultPerpetualMarketCreateEventV2).finish(), + expectPerpetualMarketV2, + defaultPerpetualMarketCreateEventV2, + ], + ])('%s', ( + _name: string, + version: number, + perpetualMarketCreateEventBytes: Uint8Array, + expectPerpetualMarket: Function, + event: PerpetualMarketCreateEventV1 | PerpetualMarketCreateEventV2, + ) => { it('returns the correct parallelization ids', () => { const transactionIndex: number = 0; const eventIndex: number = 0; const indexerTendermintEvent: IndexerTendermintEvent = createIndexerTendermintEvent( DydxIndexerSubtypes.PERPETUAL_MARKET, - PerpetualMarketCreateEventV1.encode(defaultPerpetualMarketCreateEvent).finish(), + perpetualMarketCreateEventBytes, transactionIndex, eventIndex, ); @@ -94,97 +118,103 @@ describe('perpetualMarketHandler', () => { 0, indexerTendermintEvent, 0, - defaultPerpetualMarketCreateEvent, + event, ); expect(handler.getParallelizationIds()).toEqual([]); }); - }); - - it('fails when market doesnt exist for perpetual market', async () => { - const transactionIndex: number = 0; - const kafkaMessage: KafkaMessage = createKafkaMessageFromPerpetualMarketEvent({ - perpetualMarketEvent: defaultPerpetualMarketCreateEvent, - transactionIndex, - height: defaultHeight, - time: defaultTime, - txHash: defaultTxHash, - }); - await expect(onMessage(kafkaMessage)).rejects.toThrowError(); - }); + it('fails when market doesnt exist for perpetual market', async () => { + const transactionIndex: number = 0; + const kafkaMessage: KafkaMessage = createKafkaMessageFromPerpetualMarketEvent({ + perpetualMarketEventBytes: perpetualMarketCreateEventBytes, + transactionIndex, + height: defaultHeight, + time: defaultTime, + txHash: defaultTxHash, + version: 1, + }); - it('fails when liquidity tier doesnt exist for perpetual market', async () => { - await MarketTable.create(testConstants.defaultMarket); - const transactionIndex: number = 0; - const kafkaMessage: KafkaMessage = createKafkaMessageFromPerpetualMarketEvent({ - perpetualMarketEvent: defaultPerpetualMarketCreateEvent, - transactionIndex, - height: defaultHeight, - time: defaultTime, - txHash: defaultTxHash, + await expect(onMessage(kafkaMessage)).rejects.toThrowError(); }); - await expect(onMessage(kafkaMessage)).rejects.toThrowError(); - }); - - it('creates new perpetual market', async () => { - await Promise.all([ - MarketTable.create(testConstants.defaultMarket), - LiquidityTiersTable.create(testConstants.defaultLiquidityTier), - ]); - await liquidityTierRefresher.updateLiquidityTiers(); - - const transactionIndex: number = 0; + it('fails when liquidity tier doesnt exist for perpetual market', async () => { + await MarketTable.create(testConstants.defaultMarket); + const transactionIndex: number = 0; + const kafkaMessage: KafkaMessage = createKafkaMessageFromPerpetualMarketEvent({ + perpetualMarketEventBytes: perpetualMarketCreateEventBytes, + transactionIndex, + height: defaultHeight, + time: defaultTime, + txHash: defaultTxHash, + version: 1, + }); - const perpetualMarketEvent: PerpetualMarketCreateEventV1 = defaultPerpetualMarketCreateEvent; - const kafkaMessage: KafkaMessage = createKafkaMessageFromPerpetualMarketEvent({ - perpetualMarketEvent, - transactionIndex, - height: defaultHeight, - time: defaultTime, - txHash: defaultTxHash, + await expect(onMessage(kafkaMessage)).rejects.toThrowError(); }); - // Confirm there is no existing perpetualMarket. - await expectNoExistingPerpetualMarkets(); - const producerSendMock: jest.SpyInstance = jest.spyOn(producer, 'send'); - await onMessage(kafkaMessage); + it('creates new perpetual market with the event', async () => { + await Promise.all([ + MarketTable.create(testConstants.defaultMarket), + LiquidityTiersTable.create(testConstants.defaultLiquidityTier), + ]); + await liquidityTierRefresher.updateLiquidityTiers(); - const newPerpetualMarkets: PerpetualMarketFromDatabase[] = await PerpetualMarketTable.findAll( - {}, - [], { - orderBy: [[PerpetualMarketColumns.id, Ordering.ASC]], + const transactionIndex: number = 0; + const kafkaMessage: KafkaMessage = createKafkaMessageFromPerpetualMarketEvent({ + perpetualMarketEventBytes: perpetualMarketCreateEventBytes, + transactionIndex, + height: defaultHeight, + time: defaultTime, + txHash: defaultTxHash, + version, }); - expect(newPerpetualMarkets.length).toEqual(1); - expectPerpetualMarketMatchesEvent(perpetualMarketEvent, newPerpetualMarkets[0]); - const perpetualMarket: PerpetualMarketFromDatabase | undefined = perpetualMarketRefresher.getPerpetualMarketFromId('0'); - expect(perpetualMarket).toBeDefined(); - expectPerpetualMarket(perpetualMarket!, perpetualMarketEvent); - expectPerpetualMarketKafkaMessage(producerSendMock, [perpetualMarket!]); + + // Confirm there is no existing perpetualMarket. + await expectNoExistingPerpetualMarkets(); + + const producerSendMock: jest.SpyInstance = jest.spyOn(producer, 'send'); + await onMessage(kafkaMessage); + + const newPerpetualMarkets: PerpetualMarketFromDatabase[] = await PerpetualMarketTable.findAll( + {}, + [], { + orderBy: [[PerpetualMarketColumns.id, Ordering.ASC]], + }); + + expect(newPerpetualMarkets.length).toEqual(1); + expectPerpetualMarketMatchesEvent(event, newPerpetualMarkets[0]); + const perpetualMarket: PerpetualMarketFromDatabase | undefined = perpetualMarketRefresher.getPerpetualMarketFromId('0'); + expect(perpetualMarket).toBeDefined(); + expectPerpetualMarket(perpetualMarket!, event); + expectPerpetualMarketKafkaMessage(producerSendMock, [perpetualMarket!]); + }); }); }); function createKafkaMessageFromPerpetualMarketEvent({ - perpetualMarketEvent, + perpetualMarketEventBytes, transactionIndex, height, time, txHash, + version, }: { - perpetualMarketEvent: PerpetualMarketCreateEventV1, + perpetualMarketEventBytes: Uint8Array, transactionIndex: number, height: number, time: Timestamp, txHash: string, + version: number, }) { const events: IndexerTendermintEvent[] = []; events.push( createIndexerTendermintEvent( DydxIndexerSubtypes.PERPETUAL_MARKET, - PerpetualMarketCreateEventV1.encode(perpetualMarketEvent).finish(), + perpetualMarketEventBytes, transactionIndex, 0, + version, ), ); diff --git a/indexer/services/ender/__tests__/helpers/constants.ts b/indexer/services/ender/__tests__/helpers/constants.ts index e663024f96..5dac1683d5 100644 --- a/indexer/services/ender/__tests__/helpers/constants.ts +++ b/indexer/services/ender/__tests__/helpers/constants.ts @@ -25,6 +25,7 @@ import { OrderFillEventV1, OrderRemovalReason, PerpetualMarketCreateEventV1, + PerpetualMarketCreateEventV2, PerpetualMarketType, StatefulOrderEventV1, SubaccountMessage, @@ -131,7 +132,7 @@ export const defaultMarketModify: MarketEventV1 = { }, }; -export const defaultPerpetualMarketCreateEvent: PerpetualMarketCreateEventV1 = { +export const defaultPerpetualMarketCreateEventV1: PerpetualMarketCreateEventV1 = { id: 0, clobPairId: 1, ticker: 'BTC-USD', @@ -142,7 +143,20 @@ export const defaultPerpetualMarketCreateEvent: PerpetualMarketCreateEventV1 = { subticksPerTick: 100, stepBaseQuantums: Long.fromValue(10, true), liquidityTier: 0, - marketType: PerpetualMarketType.PERPETUAL_MARKET_TYPE_CROSS, +}; + +export const defaultPerpetualMarketCreateEventV2: PerpetualMarketCreateEventV2 = { + id: 0, + clobPairId: 1, + ticker: 'BTC-USD', + marketId: 0, + status: ClobPairStatus.CLOB_PAIR_STATUS_INITIALIZING, + quantumConversionExponent: -8, + atomicResolution: -10, + subticksPerTick: 100, + stepBaseQuantums: Long.fromValue(10, true), + liquidityTier: 0, + marketType: PerpetualMarketType.PERPETUAL_MARKET_TYPE_ISOLATED, }; export const defaultLiquidityTierUpsertEventV2: LiquidityTierUpsertEventV2 = { diff --git a/indexer/services/ender/__tests__/helpers/indexer-proto-helpers.ts b/indexer/services/ender/__tests__/helpers/indexer-proto-helpers.ts index 7b87fc196b..5a587b2e78 100644 --- a/indexer/services/ender/__tests__/helpers/indexer-proto-helpers.ts +++ b/indexer/services/ender/__tests__/helpers/indexer-proto-helpers.ts @@ -49,6 +49,7 @@ import { OffChainUpdateV1, IndexerOrderId, PerpetualMarketCreateEventV1, + PerpetualMarketCreateEventV2, DeleveragingEventV1, } from '@dydxprotocol-indexer/v4-protos'; import { @@ -888,9 +889,30 @@ export const HARDCODED_PERPETUAL_MARKET_VALUES: Object = { openInterest: '0', }; -export function expectPerpetualMarket( +export function expectPerpetualMarketV1( perpetualMarket: PerpetualMarketFromDatabase, perpetual: PerpetualMarketCreateEventV1, +): void { + // TODO(IND-219): Set initialMarginFraction/maintenanceMarginFraction using LiquidityTier + expect(perpetualMarket).toEqual(expect.objectContaining({ + ...HARDCODED_PERPETUAL_MARKET_VALUES, + id: perpetual.id.toString(), + status: PerpetualMarketStatus.INITIALIZING, + clobPairId: perpetual.clobPairId.toString(), + ticker: perpetual.ticker, + marketId: perpetual.marketId, + quantumConversionExponent: perpetual.quantumConversionExponent, + atomicResolution: perpetual.atomicResolution, + subticksPerTick: perpetual.subticksPerTick, + stepBaseQuantums: Number(perpetual.stepBaseQuantums), + liquidityTierId: perpetual.liquidityTier, + marketType: 'CROSS', + })); +} + +export function expectPerpetualMarketV2( + perpetualMarket: PerpetualMarketFromDatabase, + perpetual: PerpetualMarketCreateEventV2, ): void { // TODO(IND-219): Set initialMarginFraction/maintenanceMarginFraction using LiquidityTier expect(perpetualMarket).toEqual(expect.objectContaining({ diff --git a/indexer/services/ender/__tests__/lib/on-message.test.ts b/indexer/services/ender/__tests__/lib/on-message.test.ts index 58aef89a4a..973830b5f5 100644 --- a/indexer/services/ender/__tests__/lib/on-message.test.ts +++ b/indexer/services/ender/__tests__/lib/on-message.test.ts @@ -46,7 +46,7 @@ import { defaultFundingUpdateSampleEvent, defaultHeight, defaultMarketModify, - defaultPerpetualMarketCreateEvent, + defaultPerpetualMarketCreateEventV1, defaultPreviousHeight, defaultSubaccountMessage, } from '../helpers/constants'; @@ -135,7 +135,7 @@ describe('on-message', () => { const defaultPerpetualMarketEventBinary: Uint8Array = Uint8Array.from( PerpetualMarketCreateEventV1.encode( - defaultPerpetualMarketCreateEvent, + defaultPerpetualMarketCreateEventV1, ).finish(), ); @@ -309,7 +309,7 @@ describe('on-message', () => { orderBy: [[PerpetualMarketColumns.id, Ordering.ASC]], }); expect(newPerpetualMarkets.length).toEqual(2); - expectPerpetualMarketMatchesEvent(defaultPerpetualMarketCreateEvent, newPerpetualMarkets[0]); + expectPerpetualMarketMatchesEvent(defaultPerpetualMarketCreateEventV1, newPerpetualMarkets[0]); expect(stats.increment).toHaveBeenCalledWith('ender.received_kafka_message', 1); expect(stats.timing).toHaveBeenCalledWith( diff --git a/indexer/services/ender/__tests__/validators/perpetual-market-validator.test.ts b/indexer/services/ender/__tests__/validators/perpetual-market-validator.test.ts index 95848824d2..305ddb8e96 100644 --- a/indexer/services/ender/__tests__/validators/perpetual-market-validator.test.ts +++ b/indexer/services/ender/__tests__/validators/perpetual-market-validator.test.ts @@ -1,11 +1,20 @@ import { logger, ParseMessageError } from '@dydxprotocol-indexer/base'; -import { PerpetualMarketCreateEventV1, IndexerTendermintBlock, IndexerTendermintEvent } from '@dydxprotocol-indexer/v4-protos'; +import { + PerpetualMarketCreateEventV1, + PerpetualMarketCreateEventV2, + IndexerTendermintBlock, + IndexerTendermintEvent, +} from '@dydxprotocol-indexer/v4-protos'; import { dbHelpers, testMocks, perpetualMarketRefresher, } from '@dydxprotocol-indexer/postgres'; import { DydxIndexerSubtypes } from '../../src/lib/types'; import { - defaultPerpetualMarketCreateEvent, defaultHeight, defaultTime, defaultTxHash, + defaultPerpetualMarketCreateEventV1, + defaultPerpetualMarketCreateEventV2, + defaultHeight, + defaultTime, + defaultTxHash, } from '../helpers/constants'; import { createIndexerTendermintBlock, @@ -27,11 +36,29 @@ describe('perpetual-market-validator', () => { jest.clearAllMocks(); }); - describe('validate', () => { + describe.each([ + [ + 'PerpetualMarketCreateEventV1', + 1, + PerpetualMarketCreateEventV1.encode(defaultPerpetualMarketCreateEventV1).finish(), + defaultPerpetualMarketCreateEventV1, + ], + [ + 'PerpetualMarketCreateEventV2', + 2, + PerpetualMarketCreateEventV2.encode(defaultPerpetualMarketCreateEventV2).finish(), + defaultPerpetualMarketCreateEventV2, + ], + ])('validate %s', ( + _name: string, + version: number, + perpetualMarketCreateEventBytes: Uint8Array, + event: PerpetualMarketCreateEventV1 | PerpetualMarketCreateEventV2, + ) => { it('does not throw error on valid perpetual market create event', () => { const validator: PerpetualMarketValidator = new PerpetualMarketValidator( - defaultPerpetualMarketCreateEvent, - createBlock(defaultPerpetualMarketCreateEvent), + event, + createBlock(perpetualMarketCreateEventBytes), 0, ); @@ -42,8 +69,8 @@ describe('perpetual-market-validator', () => { it('throws error on existing perpetual market', async () => { await perpetualMarketRefresher.updatePerpetualMarkets(); const validator: PerpetualMarketValidator = new PerpetualMarketValidator( - defaultPerpetualMarketCreateEvent, - createBlock(defaultPerpetualMarketCreateEvent), + event, + createBlock(perpetualMarketCreateEventBytes), 0, ); const message: string = 'PerpetualMarketCreateEvent id already exists'; @@ -54,31 +81,35 @@ describe('perpetual-market-validator', () => { [ 'throws error on perpetual market create event missing ticker', { - ...defaultPerpetualMarketCreateEvent, + ...event, ticker: '', - } as PerpetualMarketCreateEventV1, + } as PerpetualMarketCreateEventV1 | PerpetualMarketCreateEventV2, 'PerpetualMarketCreateEvent ticker is not populated', ], [ 'throws error on perpetual market create event missing subticksPerTick', { - ...defaultPerpetualMarketCreateEvent, + ...event, subticksPerTick: 0, - } as PerpetualMarketCreateEventV1, + } as PerpetualMarketCreateEventV1 | PerpetualMarketCreateEventV2, 'PerpetualMarketCreateEvent subticksPerTick is not populated', ], [ 'throws error on perpetual market create event missing stepBaseQuantums', { - ...defaultPerpetualMarketCreateEvent, + ...event, stepBaseQuantums: Long.fromValue(0, true), - } as PerpetualMarketCreateEventV1, + } as PerpetualMarketCreateEventV1 | PerpetualMarketCreateEventV2, 'PerpetualMarketCreateEvent stepBaseQuantums is not populated', ], - ])('%s', (_description: string, event: PerpetualMarketCreateEventV1, expectedMessage: string) => { + ])('%s', ( + _description: string, + eventToTest: PerpetualMarketCreateEventV1 | PerpetualMarketCreateEventV2, + expectedMessage: string, + ) => { const validator: PerpetualMarketValidator = new PerpetualMarketValidator( - event, - createBlock(event), + eventToTest, + createBlock(perpetualMarketCreateEventBytes), 0, ); expect(() => validator.validate()).toThrow(new ParseMessageError(expectedMessage)); @@ -87,11 +118,11 @@ describe('perpetual-market-validator', () => { }); function createBlock( - perpetualMarketEvent: PerpetualMarketCreateEventV1, + perpetualMarketEventDataBytes: Uint8Array, ): IndexerTendermintBlock { const event: IndexerTendermintEvent = createIndexerTendermintEvent( DydxIndexerSubtypes.PERPETUAL_MARKET, - PerpetualMarketCreateEventV1.encode(perpetualMarketEvent).finish(), + perpetualMarketEventDataBytes, 0, 0, ); diff --git a/indexer/services/ender/src/handlers/perpetual-market-handler.ts b/indexer/services/ender/src/handlers/perpetual-market-handler.ts index 7175d165a6..8f8375df62 100644 --- a/indexer/services/ender/src/handlers/perpetual-market-handler.ts +++ b/indexer/services/ender/src/handlers/perpetual-market-handler.ts @@ -2,14 +2,16 @@ import { PerpetualMarketFromDatabase, PerpetualMarketModel, perpetualMarketRefresher, } from '@dydxprotocol-indexer/postgres'; -import { PerpetualMarketCreateEventV1 } from '@dydxprotocol-indexer/v4-protos'; +import { PerpetualMarketCreateEventV1, PerpetualMarketCreateEventV2 } from '@dydxprotocol-indexer/v4-protos'; import * as pg from 'pg'; import { generatePerpetualMarketMessage } from '../helpers/kafka-helper'; import { ConsolidatedKafkaEvent } from '../lib/types'; import { Handler } from './handler'; -export class PerpetualMarketCreationHandler extends Handler { +export class PerpetualMarketCreationHandler extends Handler< + PerpetualMarketCreateEventV1 | PerpetualMarketCreateEventV2 +> { eventType: string = 'PerpetualMarketCreateEvent'; public getParallelizationIds(): string[] { diff --git a/indexer/services/ender/src/helpers/postgres/postgres-functions.ts b/indexer/services/ender/src/helpers/postgres/postgres-functions.ts index 18a278eaa4..8ca240487b 100644 --- a/indexer/services/ender/src/helpers/postgres/postgres-functions.ts +++ b/indexer/services/ender/src/helpers/postgres/postgres-functions.ts @@ -37,7 +37,8 @@ const HANDLER_SCRIPTS: string[] = [ 'dydx_market_modify_handler.sql', 'dydx_market_price_update_handler.sql', 'dydx_open_interest_update_handler.sql', - 'dydx_perpetual_market_handler.sql', + 'dydx_perpetual_market_v1_handler.sql', + 'dydx_perpetual_market_v2_handler.sql', 'dydx_stateful_order_handler.sql', 'dydx_subaccount_update_handler.sql', 'dydx_trading_rewards_handler.sql', diff --git a/indexer/services/ender/src/lib/block-processor.ts b/indexer/services/ender/src/lib/block-processor.ts index 7be6b3d941..af4d6d6f50 100644 --- a/indexer/services/ender/src/lib/block-processor.ts +++ b/indexer/services/ender/src/lib/block-processor.ts @@ -44,6 +44,7 @@ const TXN_EVENT_SUBTYPE_VERSION_TO_VALIDATOR_MAPPING: Record'version')::int + WHEN 1 THEN + rval[i] = dydx_perpetual_market_v1_handler(event_data); + WHEN 2 THEN + rval[i] = dydx_perpetual_market_v2_handler(event_data); + ELSE + NULL; + END CASE; WHEN '"liquidity_tier"'::jsonb THEN rval[i] = dydx_liquidity_tier_handler(event_data); WHEN '"update_perpetual"'::jsonb THEN diff --git a/indexer/services/ender/src/scripts/handlers/dydx_perpetual_market_v1_handler.sql b/indexer/services/ender/src/scripts/handlers/dydx_perpetual_market_v1_handler.sql new file mode 100644 index 0000000000..d2268afc2c --- /dev/null +++ b/indexer/services/ender/src/scripts/handlers/dydx_perpetual_market_v1_handler.sql @@ -0,0 +1,40 @@ +CREATE OR REPLACE FUNCTION dydx_perpetual_market_v1_handler(event_data jsonb) RETURNS jsonb AS $$ +/** + Note: This is a deprecated handler, see `dydx_perpetual_market_v2_handler` for the latest handler. + Parameters: + - event_data: The 'data' field of the IndexerTendermintEvent (https://github.com/dydxprotocol/v4-chain/blob/9ed26bd/proto/dydxprotocol/indexer/indexer_manager/event.proto#L25) + converted to JSON format. Conversion to JSON is expected to be done by JSON.stringify. + Returns: JSON object containing fields: + - perpetual_market: The updated perpetual market in perpetual-market-model format (https://github.com/dydxprotocol/v4-chain/blob/9ed26bd/indexer/packages/postgres/src/models/perpetual-market-model.ts). + + (Note that no text should exist before the function declaration to ensure that exception line numbers are correct.) +*/ +DECLARE + perpetual_market_record perpetual_markets%ROWTYPE; +BEGIN + perpetual_market_record."id" = (event_data->'id')::bigint; + perpetual_market_record."clobPairId" = (event_data->'clobPairId')::bigint; + perpetual_market_record."ticker" = event_data->>'ticker'; + perpetual_market_record."marketId" = (event_data->'marketId')::integer; + perpetual_market_record."status" = dydx_clob_pair_status_to_market_status(event_data->'status'); + perpetual_market_record."priceChange24H" = 0; + perpetual_market_record."trades24H" = 0; + perpetual_market_record."volume24H" = 0; + perpetual_market_record."nextFundingRate" = 0; + perpetual_market_record."openInterest"= 0; + perpetual_market_record."quantumConversionExponent" = (event_data->'quantumConversionExponent')::integer; + perpetual_market_record."atomicResolution" = (event_data->'atomicResolution')::integer; + perpetual_market_record."subticksPerTick" = (event_data->'subticksPerTick')::integer; + perpetual_market_record."stepBaseQuantums" = dydx_from_jsonlib_long(event_data->'stepBaseQuantums'); + perpetual_market_record."liquidityTierId" = (event_data->'liquidityTier')::integer; + perpetual_market_record."marketType" = 'CROSS'; + perpetual_market_record."baseOpenInterest" = 0; + + INSERT INTO perpetual_markets VALUES (perpetual_market_record.*) RETURNING * INTO perpetual_market_record; + + RETURN jsonb_build_object( + 'perpetual_market', + dydx_to_jsonb(perpetual_market_record) + ); +END; +$$ LANGUAGE plpgsql; diff --git a/indexer/services/ender/src/scripts/handlers/dydx_perpetual_market_handler.sql b/indexer/services/ender/src/scripts/handlers/dydx_perpetual_market_v2_handler.sql similarity index 95% rename from indexer/services/ender/src/scripts/handlers/dydx_perpetual_market_handler.sql rename to indexer/services/ender/src/scripts/handlers/dydx_perpetual_market_v2_handler.sql index 6a8105c51e..df7fbaf7c6 100644 --- a/indexer/services/ender/src/scripts/handlers/dydx_perpetual_market_handler.sql +++ b/indexer/services/ender/src/scripts/handlers/dydx_perpetual_market_v2_handler.sql @@ -1,4 +1,4 @@ -CREATE OR REPLACE FUNCTION dydx_perpetual_market_handler(event_data jsonb) RETURNS jsonb AS $$ +CREATE OR REPLACE FUNCTION dydx_perpetual_market_v2_handler(event_data jsonb) RETURNS jsonb AS $$ /** Parameters: - event_data: The 'data' field of the IndexerTendermintEvent (https://github.com/dydxprotocol/v4-chain/blob/9ed26bd/proto/dydxprotocol/indexer/indexer_manager/event.proto#L25) diff --git a/indexer/services/ender/src/validators/perpetual-market-validator.ts b/indexer/services/ender/src/validators/perpetual-market-validator.ts index b599aae739..e35ef6adec 100644 --- a/indexer/services/ender/src/validators/perpetual-market-validator.ts +++ b/indexer/services/ender/src/validators/perpetual-market-validator.ts @@ -1,12 +1,14 @@ import { perpetualMarketRefresher } from '@dydxprotocol-indexer/postgres'; -import { PerpetualMarketCreateEventV1, IndexerTendermintEvent } from '@dydxprotocol-indexer/v4-protos'; +import { PerpetualMarketCreateEventV1, IndexerTendermintEvent, PerpetualMarketCreateEventV2 } from '@dydxprotocol-indexer/v4-protos'; import Long from 'long'; import { Handler } from '../handlers/handler'; import { PerpetualMarketCreationHandler } from '../handlers/perpetual-market-handler'; import { Validator } from './validator'; -export class PerpetualMarketValidator extends Validator { +export class PerpetualMarketValidator extends Validator< + PerpetualMarketCreateEventV1 | PerpetualMarketCreateEventV2 +> { public validate(): void { if (perpetualMarketRefresher.getPerpetualMarketFromId(this.event.id.toString()) !== undefined) { return this.logAndThrowParseMessageError( diff --git a/proto/dydxprotocol/indexer/events/events.proto b/proto/dydxprotocol/indexer/events/events.proto index b3b5e4d3a8..c8af386296 100644 --- a/proto/dydxprotocol/indexer/events/events.proto +++ b/proto/dydxprotocol/indexer/events/events.proto @@ -307,7 +307,60 @@ message AssetCreateEventV1 { // PerpetualMarketCreateEventV1 message contains all the information about a // new Perpetual Market on the dYdX chain. +// Deprecated. See PerpetualMarketCreateEventV2 for the most up to date message +// for the event to create a new Perpetual Market. message PerpetualMarketCreateEventV1 { + option deprecated = true; + // Unique Perpetual id. + // Defined in perpetuals.perpetual + uint32 id = 1; + + // Unique clob pair Id associated with this perpetual market + // Defined in clob.clob_pair + uint32 clob_pair_id = 2; + + // The name of the `Perpetual` (e.g. `BTC-USD`). + // Defined in perpetuals.perpetual + string ticker = 3; + + // Unique id of market param associated with this perpetual market. + // Defined in perpetuals.perpetual + uint32 market_id = 4; + + // Status of the CLOB + dydxprotocol.indexer.protocol.v1.ClobPairStatus status = 5; + + // `10^Exponent` gives the number of QuoteQuantums traded per BaseQuantum + // per Subtick. + // Defined in clob.clob_pair + sint32 quantum_conversion_exponent = 6; + + // The exponent for converting an atomic amount (`size = 1`) + // to a full coin. For example, if `AtomicResolution = -8` + // then a `PerpetualPosition` with `size = 1e8` is equivalent to + // a position size of one full coin. + // Defined in perpetuals.perpetual + sint32 atomic_resolution = 7; + + // Defines the tick size of the orderbook by defining how many subticks + // are in one tick. That is, the subticks of any valid order must be a + // multiple of this value. Generally this value should start `>= 100`to + // allow room for decreasing it. + // Defined in clob.clob_pair + uint32 subticks_per_tick = 8; + + // Minimum increment in the size of orders on the CLOB, in base quantums. + // Defined in clob.clob_pair + uint64 step_base_quantums = 9; + + // The liquidity_tier that this perpetual is associated with. + // Defined in perpetuals.perpetual + uint32 liquidity_tier = 10; +} + +// PerpetualMarketCreateEventV2 message contains all the information about a +// new Perpetual Market on the dYdX chain. +message PerpetualMarketCreateEventV2 { // Unique Perpetual id. // Defined in perpetuals.perpetual uint32 id = 1; diff --git a/protocol/indexer/events/constants.go b/protocol/indexer/events/constants.go index afb4cf5b4e..d06825ae8c 100644 --- a/protocol/indexer/events/constants.go +++ b/protocol/indexer/events/constants.go @@ -30,7 +30,7 @@ const ( FundingValuesEventVersion uint32 = 1 StatefulOrderEventVersion uint32 = 1 AssetEventVersion uint32 = 1 - PerpetualMarketEventVersion uint32 = 1 + PerpetualMarketEventVersion uint32 = 2 LiquidityTierEventVersion uint32 = 2 UpdatePerpetualEventVersion uint32 = 1 UpdateClobPairEventVersion uint32 = 1 diff --git a/protocol/indexer/events/events.pb.go b/protocol/indexer/events/events.pb.go index 9cc3d4e57f..42758bacda 100644 --- a/protocol/indexer/events/events.pb.go +++ b/protocol/indexer/events/events.pb.go @@ -1593,6 +1593,10 @@ func (m *AssetCreateEventV1) GetAtomicResolution() int32 { // PerpetualMarketCreateEventV1 message contains all the information about a // new Perpetual Market on the dYdX chain. +// Deprecated. See PerpetualMarketCreateEventV2 for the most up to date message +// for the event to create a new Perpetual Market. +// +// Deprecated: Do not use. type PerpetualMarketCreateEventV1 struct { // Unique Perpetual id. // Defined in perpetuals.perpetual @@ -1630,8 +1634,6 @@ type PerpetualMarketCreateEventV1 struct { // The liquidity_tier that this perpetual is associated with. // Defined in perpetuals.perpetual LiquidityTier uint32 `protobuf:"varint,10,opt,name=liquidity_tier,json=liquidityTier,proto3" json:"liquidity_tier,omitempty"` - // Market type of the perpetual. - MarketType types.PerpetualMarketType `protobuf:"varint,11,opt,name=market_type,json=marketType,proto3,enum=dydxprotocol.indexer.protocol.v1.PerpetualMarketType" json:"market_type,omitempty"` } func (m *PerpetualMarketCreateEventV1) Reset() { *m = PerpetualMarketCreateEventV1{} } @@ -1737,7 +1739,153 @@ func (m *PerpetualMarketCreateEventV1) GetLiquidityTier() uint32 { return 0 } -func (m *PerpetualMarketCreateEventV1) GetMarketType() types.PerpetualMarketType { +// PerpetualMarketCreateEventV2 message contains all the information about a +// new Perpetual Market on the dYdX chain. +type PerpetualMarketCreateEventV2 struct { + // Unique Perpetual id. + // Defined in perpetuals.perpetual + Id uint32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + // Unique clob pair Id associated with this perpetual market + // Defined in clob.clob_pair + ClobPairId uint32 `protobuf:"varint,2,opt,name=clob_pair_id,json=clobPairId,proto3" json:"clob_pair_id,omitempty"` + // The name of the `Perpetual` (e.g. `BTC-USD`). + // Defined in perpetuals.perpetual + Ticker string `protobuf:"bytes,3,opt,name=ticker,proto3" json:"ticker,omitempty"` + // Unique id of market param associated with this perpetual market. + // Defined in perpetuals.perpetual + MarketId uint32 `protobuf:"varint,4,opt,name=market_id,json=marketId,proto3" json:"market_id,omitempty"` + // Status of the CLOB + Status types.ClobPairStatus `protobuf:"varint,5,opt,name=status,proto3,enum=dydxprotocol.indexer.protocol.v1.ClobPairStatus" json:"status,omitempty"` + // `10^Exponent` gives the number of QuoteQuantums traded per BaseQuantum + // per Subtick. + // Defined in clob.clob_pair + QuantumConversionExponent int32 `protobuf:"zigzag32,6,opt,name=quantum_conversion_exponent,json=quantumConversionExponent,proto3" json:"quantum_conversion_exponent,omitempty"` + // The exponent for converting an atomic amount (`size = 1`) + // to a full coin. For example, if `AtomicResolution = -8` + // then a `PerpetualPosition` with `size = 1e8` is equivalent to + // a position size of one full coin. + // Defined in perpetuals.perpetual + AtomicResolution int32 `protobuf:"zigzag32,7,opt,name=atomic_resolution,json=atomicResolution,proto3" json:"atomic_resolution,omitempty"` + // Defines the tick size of the orderbook by defining how many subticks + // are in one tick. That is, the subticks of any valid order must be a + // multiple of this value. Generally this value should start `>= 100`to + // allow room for decreasing it. + // Defined in clob.clob_pair + SubticksPerTick uint32 `protobuf:"varint,8,opt,name=subticks_per_tick,json=subticksPerTick,proto3" json:"subticks_per_tick,omitempty"` + // Minimum increment in the size of orders on the CLOB, in base quantums. + // Defined in clob.clob_pair + StepBaseQuantums uint64 `protobuf:"varint,9,opt,name=step_base_quantums,json=stepBaseQuantums,proto3" json:"step_base_quantums,omitempty"` + // The liquidity_tier that this perpetual is associated with. + // Defined in perpetuals.perpetual + LiquidityTier uint32 `protobuf:"varint,10,opt,name=liquidity_tier,json=liquidityTier,proto3" json:"liquidity_tier,omitempty"` + // Market type of the perpetual. + MarketType types.PerpetualMarketType `protobuf:"varint,11,opt,name=market_type,json=marketType,proto3,enum=dydxprotocol.indexer.protocol.v1.PerpetualMarketType" json:"market_type,omitempty"` +} + +func (m *PerpetualMarketCreateEventV2) Reset() { *m = PerpetualMarketCreateEventV2{} } +func (m *PerpetualMarketCreateEventV2) String() string { return proto.CompactTextString(m) } +func (*PerpetualMarketCreateEventV2) ProtoMessage() {} +func (*PerpetualMarketCreateEventV2) Descriptor() ([]byte, []int) { + return fileDescriptor_6331dfb59c6fd2bb, []int{16} +} +func (m *PerpetualMarketCreateEventV2) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *PerpetualMarketCreateEventV2) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_PerpetualMarketCreateEventV2.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *PerpetualMarketCreateEventV2) XXX_Merge(src proto.Message) { + xxx_messageInfo_PerpetualMarketCreateEventV2.Merge(m, src) +} +func (m *PerpetualMarketCreateEventV2) XXX_Size() int { + return m.Size() +} +func (m *PerpetualMarketCreateEventV2) XXX_DiscardUnknown() { + xxx_messageInfo_PerpetualMarketCreateEventV2.DiscardUnknown(m) +} + +var xxx_messageInfo_PerpetualMarketCreateEventV2 proto.InternalMessageInfo + +func (m *PerpetualMarketCreateEventV2) GetId() uint32 { + if m != nil { + return m.Id + } + return 0 +} + +func (m *PerpetualMarketCreateEventV2) GetClobPairId() uint32 { + if m != nil { + return m.ClobPairId + } + return 0 +} + +func (m *PerpetualMarketCreateEventV2) GetTicker() string { + if m != nil { + return m.Ticker + } + return "" +} + +func (m *PerpetualMarketCreateEventV2) GetMarketId() uint32 { + if m != nil { + return m.MarketId + } + return 0 +} + +func (m *PerpetualMarketCreateEventV2) GetStatus() types.ClobPairStatus { + if m != nil { + return m.Status + } + return types.ClobPairStatus_CLOB_PAIR_STATUS_UNSPECIFIED +} + +func (m *PerpetualMarketCreateEventV2) GetQuantumConversionExponent() int32 { + if m != nil { + return m.QuantumConversionExponent + } + return 0 +} + +func (m *PerpetualMarketCreateEventV2) GetAtomicResolution() int32 { + if m != nil { + return m.AtomicResolution + } + return 0 +} + +func (m *PerpetualMarketCreateEventV2) GetSubticksPerTick() uint32 { + if m != nil { + return m.SubticksPerTick + } + return 0 +} + +func (m *PerpetualMarketCreateEventV2) GetStepBaseQuantums() uint64 { + if m != nil { + return m.StepBaseQuantums + } + return 0 +} + +func (m *PerpetualMarketCreateEventV2) GetLiquidityTier() uint32 { + if m != nil { + return m.LiquidityTier + } + return 0 +} + +func (m *PerpetualMarketCreateEventV2) GetMarketType() types.PerpetualMarketType { if m != nil { return m.MarketType } @@ -1769,7 +1917,7 @@ func (m *LiquidityTierUpsertEventV1) Reset() { *m = LiquidityTierUpsertE func (m *LiquidityTierUpsertEventV1) String() string { return proto.CompactTextString(m) } func (*LiquidityTierUpsertEventV1) ProtoMessage() {} func (*LiquidityTierUpsertEventV1) Descriptor() ([]byte, []int) { - return fileDescriptor_6331dfb59c6fd2bb, []int{16} + return fileDescriptor_6331dfb59c6fd2bb, []int{17} } func (m *LiquidityTierUpsertEventV1) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1861,7 +2009,7 @@ func (m *UpdateClobPairEventV1) Reset() { *m = UpdateClobPairEventV1{} } func (m *UpdateClobPairEventV1) String() string { return proto.CompactTextString(m) } func (*UpdateClobPairEventV1) ProtoMessage() {} func (*UpdateClobPairEventV1) Descriptor() ([]byte, []int) { - return fileDescriptor_6331dfb59c6fd2bb, []int{17} + return fileDescriptor_6331dfb59c6fd2bb, []int{18} } func (m *UpdateClobPairEventV1) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1952,7 +2100,7 @@ func (m *UpdatePerpetualEventV1) Reset() { *m = UpdatePerpetualEventV1{} func (m *UpdatePerpetualEventV1) String() string { return proto.CompactTextString(m) } func (*UpdatePerpetualEventV1) ProtoMessage() {} func (*UpdatePerpetualEventV1) Descriptor() ([]byte, []int) { - return fileDescriptor_6331dfb59c6fd2bb, []int{18} + return fileDescriptor_6331dfb59c6fd2bb, []int{19} } func (m *UpdatePerpetualEventV1) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2027,7 +2175,7 @@ func (m *TradingRewardsEventV1) Reset() { *m = TradingRewardsEventV1{} } func (m *TradingRewardsEventV1) String() string { return proto.CompactTextString(m) } func (*TradingRewardsEventV1) ProtoMessage() {} func (*TradingRewardsEventV1) Descriptor() ([]byte, []int) { - return fileDescriptor_6331dfb59c6fd2bb, []int{19} + return fileDescriptor_6331dfb59c6fd2bb, []int{20} } func (m *TradingRewardsEventV1) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2077,7 +2225,7 @@ func (m *AddressTradingReward) Reset() { *m = AddressTradingReward{} } func (m *AddressTradingReward) String() string { return proto.CompactTextString(m) } func (*AddressTradingReward) ProtoMessage() {} func (*AddressTradingReward) Descriptor() ([]byte, []int) { - return fileDescriptor_6331dfb59c6fd2bb, []int{20} + return fileDescriptor_6331dfb59c6fd2bb, []int{21} } func (m *AddressTradingReward) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2123,7 +2271,7 @@ func (m *OpenInterestUpdateEventV1) Reset() { *m = OpenInterestUpdateEve func (m *OpenInterestUpdateEventV1) String() string { return proto.CompactTextString(m) } func (*OpenInterestUpdateEventV1) ProtoMessage() {} func (*OpenInterestUpdateEventV1) Descriptor() ([]byte, []int) { - return fileDescriptor_6331dfb59c6fd2bb, []int{21} + return fileDescriptor_6331dfb59c6fd2bb, []int{22} } func (m *OpenInterestUpdateEventV1) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2171,7 +2319,7 @@ func (m *OpenInterestUpdate) Reset() { *m = OpenInterestUpdate{} } func (m *OpenInterestUpdate) String() string { return proto.CompactTextString(m) } func (*OpenInterestUpdate) ProtoMessage() {} func (*OpenInterestUpdate) Descriptor() ([]byte, []int) { - return fileDescriptor_6331dfb59c6fd2bb, []int{22} + return fileDescriptor_6331dfb59c6fd2bb, []int{23} } func (m *OpenInterestUpdate) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2237,7 +2385,7 @@ func (m *LiquidityTierUpsertEventV2) Reset() { *m = LiquidityTierUpsertE func (m *LiquidityTierUpsertEventV2) String() string { return proto.CompactTextString(m) } func (*LiquidityTierUpsertEventV2) ProtoMessage() {} func (*LiquidityTierUpsertEventV2) Descriptor() ([]byte, []int) { - return fileDescriptor_6331dfb59c6fd2bb, []int{23} + return fileDescriptor_6331dfb59c6fd2bb, []int{24} } func (m *LiquidityTierUpsertEventV2) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -2339,6 +2487,7 @@ func init() { proto.RegisterType((*StatefulOrderEventV1_LongTermOrderPlacementV1)(nil), "dydxprotocol.indexer.events.StatefulOrderEventV1.LongTermOrderPlacementV1") proto.RegisterType((*AssetCreateEventV1)(nil), "dydxprotocol.indexer.events.AssetCreateEventV1") proto.RegisterType((*PerpetualMarketCreateEventV1)(nil), "dydxprotocol.indexer.events.PerpetualMarketCreateEventV1") + proto.RegisterType((*PerpetualMarketCreateEventV2)(nil), "dydxprotocol.indexer.events.PerpetualMarketCreateEventV2") proto.RegisterType((*LiquidityTierUpsertEventV1)(nil), "dydxprotocol.indexer.events.LiquidityTierUpsertEventV1") proto.RegisterType((*UpdateClobPairEventV1)(nil), "dydxprotocol.indexer.events.UpdateClobPairEventV1") proto.RegisterType((*UpdatePerpetualEventV1)(nil), "dydxprotocol.indexer.events.UpdatePerpetualEventV1") @@ -2354,148 +2503,149 @@ func init() { } var fileDescriptor_6331dfb59c6fd2bb = []byte{ - // 2248 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xdc, 0x59, 0xcd, 0x6f, 0x23, 0x49, - 0x15, 0x8f, 0xed, 0x8e, 0xe3, 0x3c, 0xc7, 0x19, 0xbb, 0xc6, 0xc9, 0x38, 0x09, 0x64, 0x86, 0x96, - 0x90, 0x46, 0xfb, 0xe1, 0x4c, 0x86, 0x5d, 0xb4, 0xe2, 0x80, 0x88, 0xf3, 0xb1, 0x71, 0x94, 0x64, - 0xbc, 0x1d, 0x67, 0x76, 0x77, 0x40, 0xdb, 0x54, 0xba, 0xcb, 0x4e, 0x29, 0xfd, 0xb5, 0x5d, 0xed, - 0xcc, 0x64, 0x24, 0x24, 0x6e, 0x70, 0x40, 0x02, 0x09, 0x71, 0xe0, 0x80, 0x04, 0x07, 0x38, 0x20, - 0x71, 0x40, 0xe2, 0xca, 0x89, 0xcb, 0xde, 0x18, 0x71, 0x01, 0x71, 0x58, 0xa1, 0x99, 0x03, 0xff, - 0x06, 0xaa, 0x8f, 0x6e, 0x7f, 0x7b, 0x3c, 0x33, 0xd9, 0x0b, 0x27, 0x77, 0xbd, 0x57, 0xef, 0xf7, - 0x5e, 0xbd, 0xf7, 0xea, 0xd5, 0xab, 0x32, 0xdc, 0xb5, 0xaf, 0xec, 0x27, 0x41, 0xe8, 0x47, 0xbe, - 0xe5, 0x3b, 0x1b, 0xd4, 0xb3, 0xc9, 0x13, 0x12, 0x6e, 0x90, 0x4b, 0xe2, 0x45, 0x4c, 0xfd, 0x54, - 0x05, 0x1b, 0xad, 0xf5, 0xce, 0xac, 0xaa, 0x99, 0x55, 0x39, 0x65, 0x75, 0xc5, 0xf2, 0x99, 0xeb, - 0x33, 0x53, 0xf0, 0x37, 0xe4, 0x40, 0xca, 0xad, 0x96, 0xdb, 0x7e, 0xdb, 0x97, 0x74, 0xfe, 0xa5, - 0xa8, 0xf7, 0x46, 0xea, 0x65, 0xe7, 0x38, 0x24, 0xf6, 0x46, 0x48, 0x5c, 0xff, 0x12, 0x3b, 0x66, - 0x48, 0x30, 0xf3, 0x3d, 0x25, 0xf1, 0xf6, 0x48, 0x89, 0x84, 0x70, 0xb9, 0xb9, 0x61, 0x39, 0xfe, - 0xd9, 0x44, 0xf8, 0xde, 0xc9, 0x01, 0x09, 0x03, 0x12, 0x75, 0xb0, 0xa3, 0x24, 0x36, 0x5f, 0x2a, - 0xc1, 0x3a, 0x67, 0xd8, 0xb2, 0xfc, 0x8e, 0x17, 0x49, 0x11, 0xfd, 0xef, 0x29, 0xb8, 0xb1, 0xd7, - 0xf1, 0x6c, 0xea, 0xb5, 0x4f, 0x03, 0x1b, 0x47, 0xe4, 0xe1, 0x26, 0xfa, 0x06, 0x2c, 0x24, 0xc8, - 0x26, 0xb5, 0x2b, 0xa9, 0x3b, 0xa9, 0xbb, 0x05, 0x23, 0x9f, 0xd0, 0xea, 0x36, 0x7a, 0x0b, 0x4a, - 0x2d, 0x29, 0x65, 0x5e, 0x62, 0xa7, 0x43, 0xcc, 0x20, 0x70, 0x2b, 0xe9, 0x3b, 0xa9, 0xbb, 0xb3, - 0xc6, 0x0d, 0xc5, 0x78, 0xc8, 0xe9, 0x8d, 0xc0, 0x45, 0x2e, 0x14, 0xe2, 0xb9, 0xc2, 0xa4, 0x4a, - 0xe6, 0x4e, 0xea, 0xee, 0x42, 0x6d, 0xff, 0x8b, 0x2f, 0x6f, 0xcf, 0xfc, 0xfb, 0xcb, 0xdb, 0xdf, - 0x6b, 0xd3, 0xe8, 0xbc, 0x73, 0x56, 0xb5, 0x7c, 0x77, 0xa3, 0xcf, 0xfe, 0xcb, 0xf7, 0xde, 0xb5, - 0xce, 0x31, 0xf5, 0xba, 0x0b, 0xb0, 0xa3, 0xab, 0x80, 0xb0, 0xea, 0x09, 0x09, 0x29, 0x76, 0xe8, - 0x53, 0x7c, 0xe6, 0x90, 0xba, 0x17, 0x19, 0x0b, 0x0a, 0xbe, 0xce, 0xd1, 0xf5, 0x5f, 0xa6, 0x61, - 0x51, 0xad, 0x68, 0x97, 0x07, 0xf6, 0xe1, 0x26, 0x3a, 0x84, 0xb9, 0x8e, 0x58, 0x1c, 0xab, 0xa4, - 0xee, 0x64, 0xee, 0xe6, 0xef, 0xbf, 0x53, 0x9d, 0x90, 0x08, 0xd5, 0x01, 0x7f, 0xd4, 0x34, 0x6e, - 0xa9, 0x11, 0x43, 0xa0, 0x1d, 0xd0, 0xb8, 0x1d, 0x62, 0xb9, 0x8b, 0xf7, 0xef, 0x4d, 0x03, 0xa5, - 0x0c, 0xa9, 0x36, 0xaf, 0x02, 0x62, 0x08, 0x69, 0xdd, 0x05, 0x8d, 0x8f, 0x50, 0x19, 0x8a, 0xcd, - 0x4f, 0x1b, 0xbb, 0xe6, 0xe9, 0xf1, 0x49, 0x63, 0x77, 0xbb, 0xbe, 0x57, 0xdf, 0xdd, 0x29, 0xce, - 0xa0, 0x5b, 0x70, 0x53, 0x50, 0x1b, 0xc6, 0xee, 0x51, 0xfd, 0xf4, 0xc8, 0x3c, 0xd9, 0x3a, 0x6a, - 0x1c, 0xee, 0x16, 0x53, 0xe8, 0x36, 0xac, 0x09, 0xc6, 0xde, 0xe9, 0xf1, 0x4e, 0xfd, 0xf8, 0x43, - 0xd3, 0xd8, 0x6a, 0xee, 0x9a, 0x5b, 0xc7, 0x3b, 0x66, 0xfd, 0x78, 0x67, 0xf7, 0x93, 0x62, 0x1a, - 0x2d, 0x41, 0xa9, 0x4f, 0xf2, 0xe1, 0x83, 0xe6, 0x6e, 0x31, 0xa3, 0xff, 0x2d, 0x0d, 0x85, 0x23, - 0x1c, 0x5e, 0x90, 0x28, 0x76, 0xca, 0x1a, 0xcc, 0xbb, 0x82, 0xd0, 0x0d, 0x71, 0x4e, 0x12, 0xea, - 0x36, 0x7a, 0x04, 0x0b, 0x41, 0x48, 0x2d, 0x62, 0xca, 0x45, 0x8b, 0xb5, 0xe6, 0xef, 0xbf, 0x3f, - 0x71, 0xad, 0x12, 0xbe, 0xc1, 0xc5, 0xa4, 0xeb, 0x94, 0xa6, 0xfd, 0x19, 0x23, 0x1f, 0x74, 0xa9, - 0xe8, 0x63, 0x28, 0x28, 0xc5, 0x56, 0x48, 0x38, 0x78, 0x46, 0x80, 0xdf, 0x9b, 0x02, 0x7c, 0x5b, - 0x08, 0x74, 0x71, 0x17, 0xdc, 0x1e, 0x72, 0x0f, 0xb0, 0xeb, 0xdb, 0xb4, 0x75, 0x55, 0xd1, 0xa6, - 0x06, 0x3e, 0x12, 0x02, 0x43, 0xc0, 0x92, 0x5c, 0x9b, 0x83, 0x59, 0x31, 0x5b, 0x3f, 0x80, 0xca, - 0xb8, 0x55, 0xa2, 0x2a, 0xdc, 0x94, 0x2e, 0x7b, 0x4c, 0xa3, 0x73, 0x93, 0x3c, 0x09, 0x7c, 0x8f, - 0x78, 0x91, 0xf0, 0xac, 0x66, 0x94, 0x04, 0xeb, 0x63, 0x1a, 0x9d, 0xef, 0x2a, 0x86, 0xfe, 0x09, - 0x94, 0x24, 0x56, 0x0d, 0xb3, 0x04, 0x04, 0x81, 0x16, 0x60, 0x1a, 0x0a, 0xa9, 0x79, 0x43, 0x7c, - 0xa3, 0x0d, 0x28, 0xbb, 0xd4, 0x33, 0x25, 0xb8, 0x75, 0x8e, 0xbd, 0x76, 0x77, 0xbb, 0x15, 0x8c, - 0x92, 0x4b, 0x3d, 0x61, 0xcd, 0xb6, 0xe0, 0x34, 0x02, 0x57, 0xef, 0xc0, 0xcd, 0x11, 0xee, 0x42, - 0x35, 0xd0, 0xce, 0x30, 0x23, 0x02, 0x3b, 0x7f, 0xbf, 0x3a, 0x85, 0x57, 0x7a, 0x2c, 0x33, 0x84, - 0x2c, 0x5a, 0x85, 0x5c, 0xb2, 0x32, 0xae, 0xbf, 0x64, 0x24, 0x63, 0xfd, 0xd3, 0x58, 0x6d, 0x9f, - 0x33, 0xaf, 0x43, 0xad, 0xfe, 0xa7, 0x14, 0x14, 0x4e, 0xfc, 0x4e, 0x68, 0x91, 0x07, 0x2d, 0xbe, - 0xa5, 0x18, 0xfa, 0x01, 0x14, 0xba, 0xb5, 0x2c, 0xce, 0xe0, 0xb1, 0x19, 0x9a, 0x10, 0x2e, 0x37, - 0xab, 0x75, 0x49, 0x3b, 0x49, 0xa4, 0xeb, 0x36, 0x0f, 0x38, 0xeb, 0x19, 0xa3, 0xf7, 0x60, 0x0e, - 0xdb, 0x76, 0x48, 0x18, 0x13, 0xab, 0x9c, 0xaf, 0x55, 0xfe, 0xf1, 0x97, 0x77, 0xcb, 0xea, 0x48, - 0xd8, 0x92, 0x9c, 0x93, 0x28, 0xa4, 0x5e, 0x7b, 0x7f, 0xc6, 0x88, 0xa7, 0xd6, 0x72, 0x90, 0x65, - 0xc2, 0x48, 0xfd, 0x8f, 0x19, 0xb8, 0xd1, 0x0c, 0xb1, 0xc7, 0x5a, 0x24, 0x8c, 0xfd, 0xd0, 0x86, - 0x32, 0x23, 0x9e, 0x4d, 0x42, 0xf3, 0xfa, 0x0c, 0x37, 0x90, 0x84, 0xec, 0xa5, 0x21, 0x17, 0x6e, - 0x85, 0xc4, 0xa2, 0x01, 0x25, 0x5e, 0x34, 0xa0, 0x2b, 0xfd, 0x26, 0xba, 0x96, 0x12, 0xd4, 0x3e, - 0x75, 0x2b, 0x90, 0xc3, 0x8c, 0xc9, 0x32, 0x92, 0x11, 0x29, 0x39, 0x27, 0xc6, 0x75, 0x1b, 0x2d, - 0x43, 0x16, 0xbb, 0x7c, 0x9a, 0xd8, 0x89, 0x9a, 0xa1, 0x46, 0xa8, 0x06, 0x59, 0x69, 0x77, 0x65, - 0x56, 0x18, 0xf4, 0xd6, 0xc4, 0xa4, 0xe8, 0x0b, 0xbc, 0xa1, 0x24, 0xd1, 0x3e, 0xcc, 0x27, 0xf6, - 0x54, 0xb2, 0xaf, 0x0c, 0xd3, 0x15, 0xd6, 0xff, 0x99, 0x81, 0xe2, 0x83, 0xd0, 0x26, 0xe1, 0x1e, - 0x75, 0x9c, 0x38, 0x5a, 0xa7, 0x90, 0x77, 0xf1, 0x05, 0x09, 0x4d, 0x9f, 0x73, 0x26, 0x27, 0xef, - 0x08, 0xc7, 0x09, 0x3c, 0x75, 0x70, 0x80, 0x00, 0x12, 0x14, 0xb4, 0x07, 0xb3, 0x12, 0x30, 0xfd, - 0x3a, 0x80, 0xfb, 0x33, 0x86, 0x14, 0x47, 0x9f, 0x41, 0xc9, 0xa1, 0x9f, 0x77, 0xa8, 0x8d, 0x23, - 0xea, 0x7b, 0xca, 0x48, 0x59, 0xee, 0x36, 0x26, 0x7a, 0xe1, 0xb0, 0x2b, 0x25, 0x20, 0x45, 0xb5, - 0x2b, 0x3a, 0x03, 0x54, 0x74, 0x1b, 0xf2, 0x2d, 0xea, 0x38, 0xa6, 0x0a, 0x5f, 0x46, 0x84, 0x0f, - 0x38, 0x69, 0x4b, 0x86, 0x50, 0x9c, 0x1e, 0xdc, 0x3f, 0x2d, 0x42, 0x44, 0x14, 0x11, 0x3f, 0x3d, - 0x2e, 0x48, 0xb8, 0x47, 0x08, 0x67, 0x46, 0x09, 0x33, 0x2b, 0x99, 0x51, 0xcc, 0x7c, 0x07, 0x50, - 0xe4, 0x47, 0xd8, 0x31, 0x39, 0x1a, 0xb1, 0x4d, 0x21, 0x55, 0x99, 0x13, 0x1a, 0x8a, 0x82, 0xb3, - 0x27, 0x18, 0x47, 0x9c, 0x3e, 0x34, 0x5b, 0xc0, 0x54, 0x72, 0x43, 0xb3, 0x9b, 0x9c, 0x5e, 0x2b, - 0x40, 0x3e, 0xea, 0x46, 0x4d, 0xff, 0x59, 0x06, 0x6e, 0xee, 0x10, 0x87, 0x5c, 0x92, 0x10, 0xb7, - 0x7b, 0xfa, 0x81, 0xef, 0x03, 0xc4, 0x2b, 0x26, 0x6f, 0xb6, 0x01, 0xe3, 0x10, 0x77, 0xe1, 0x38, - 0xb8, 0xdf, 0x6a, 0x31, 0x12, 0x45, 0xd4, 0x6b, 0xbf, 0xd1, 0x8e, 0x8b, 0xc1, 0xbb, 0x70, 0x43, - 0xad, 0x59, 0x66, 0xb8, 0x35, 0x1b, 0x08, 0x9d, 0x36, 0x14, 0xba, 0x7b, 0x50, 0x96, 0x2e, 0xfd, - 0xbc, 0xe3, 0x47, 0xc4, 0xfc, 0xbc, 0x83, 0xbd, 0xa8, 0xe3, 0x32, 0x11, 0x45, 0xcd, 0x90, 0xee, - 0xfe, 0x88, 0xb3, 0x3e, 0x52, 0x1c, 0xb4, 0x04, 0x59, 0xca, 0xcc, 0xb3, 0xce, 0x95, 0x08, 0x66, - 0xce, 0x98, 0xa5, 0xac, 0xd6, 0xb9, 0xe2, 0x27, 0x1e, 0x65, 0x66, 0x8b, 0x7a, 0xd8, 0x31, 0xb9, - 0x81, 0x0e, 0x71, 0xf9, 0x66, 0x9c, 0x13, 0x73, 0x4a, 0x94, 0xed, 0x71, 0xce, 0x49, 0xc2, 0xd0, - 0x7f, 0x9a, 0x06, 0x34, 0x9c, 0x7f, 0x5f, 0x6d, 0x34, 0xee, 0xc0, 0x02, 0x6f, 0xa9, 0x4d, 0x7e, - 0x92, 0xc6, 0x15, 0xb0, 0x60, 0x00, 0xa7, 0x35, 0x30, 0x0d, 0xeb, 0xf6, 0x34, 0x2e, 0xfd, 0x3a, - 0x80, 0xf4, 0x18, 0xa3, 0x4f, 0x89, 0xf2, 0xe8, 0xbc, 0xa0, 0x9c, 0xd0, 0xa7, 0xa4, 0xc7, 0x3d, - 0xb3, 0xbd, 0xee, 0x59, 0x85, 0x1c, 0xeb, 0x9c, 0x45, 0xd4, 0xba, 0x60, 0xc2, 0x6f, 0x9a, 0x91, - 0x8c, 0xf5, 0xff, 0xa6, 0xe1, 0x56, 0xd7, 0xf2, 0xfe, 0x46, 0xe2, 0xd1, 0x75, 0x1e, 0x6d, 0x03, - 0x07, 0xdb, 0x53, 0x58, 0x93, 0x1d, 0x9d, 0x6d, 0x76, 0x17, 0x1d, 0xf8, 0x8c, 0xf2, 0x80, 0xb0, - 0x4a, 0x46, 0x74, 0xc7, 0xdf, 0x99, 0x5a, 0x53, 0x23, 0xc6, 0x68, 0x28, 0x08, 0x63, 0x45, 0xc1, - 0x0f, 0x71, 0x18, 0xf2, 0xe0, 0x56, 0xac, 0x5b, 0x1e, 0x18, 0x5d, 0xbd, 0x9a, 0xd0, 0xfb, 0xed, - 0xa9, 0xf5, 0x6e, 0x71, 0xf9, 0x44, 0xe7, 0x92, 0x82, 0xed, 0xa3, 0xb2, 0x03, 0x2d, 0x97, 0x2e, - 0x66, 0xf4, 0xdf, 0x01, 0x94, 0x4f, 0x22, 0x1c, 0x91, 0x56, 0xc7, 0x11, 0x19, 0x17, 0xbb, 0xd9, - 0x85, 0xbc, 0xa8, 0x12, 0x66, 0xe0, 0x60, 0x2b, 0x6e, 0x4f, 0x0e, 0x26, 0x1f, 0x21, 0x23, 0x70, - 0xfa, 0x89, 0x0d, 0x8e, 0xe5, 0xc6, 0x5d, 0x24, 0xf8, 0x09, 0x0d, 0xf9, 0x50, 0x90, 0xea, 0xd4, - 0xc5, 0x50, 0x55, 0xeb, 0xfd, 0x37, 0x54, 0x68, 0x48, 0x34, 0xd9, 0xb4, 0xfa, 0x3d, 0x14, 0xf4, - 0xf3, 0x14, 0xac, 0x59, 0xbe, 0x67, 0x0b, 0x6f, 0x60, 0xc7, 0xec, 0x59, 0xac, 0xd8, 0xa6, 0xf2, - 0xe8, 0x3d, 0x7a, 0x75, 0xfd, 0xdb, 0x5d, 0xd0, 0x11, 0x6b, 0x5e, 0xb1, 0xc6, 0xb1, 0xc7, 0x58, - 0x14, 0x85, 0xb4, 0xdd, 0x26, 0x21, 0xb1, 0xd5, 0x29, 0x7e, 0x0d, 0x16, 0x35, 0x63, 0xc8, 0xd1, - 0x16, 0x25, 0x6c, 0xf4, 0x93, 0x14, 0xac, 0x38, 0xbe, 0xd7, 0x36, 0x23, 0x12, 0xba, 0x43, 0x1e, - 0x9a, 0x7b, 0xdd, 0x94, 0x38, 0xf4, 0xbd, 0x76, 0x93, 0x84, 0xee, 0x08, 0xf7, 0x2c, 0x3b, 0x23, - 0x79, 0xab, 0x3f, 0x84, 0xca, 0xb8, 0x44, 0x42, 0x3b, 0x71, 0xd3, 0xf0, 0x5a, 0x5d, 0x88, 0x6a, - 0x19, 0x56, 0xff, 0x9a, 0x82, 0xe5, 0xd1, 0xa9, 0x83, 0x1e, 0x41, 0x51, 0x64, 0x25, 0xb1, 0x95, - 0x0f, 0x92, 0xa2, 0x73, 0xef, 0xd5, 0x74, 0xd5, 0x6d, 0x63, 0x51, 0x21, 0xa9, 0x31, 0xfa, 0x10, - 0xb2, 0xf2, 0x09, 0x44, 0xdd, 0x97, 0xc7, 0xb4, 0x27, 0xf2, 0xd5, 0xa4, 0xda, 0x6b, 0x98, 0x21, - 0xc4, 0x0c, 0x25, 0xbe, 0x6a, 0xc1, 0xda, 0x84, 0xcc, 0xbb, 0x26, 0x27, 0xfd, 0x68, 0x58, 0x49, - 0x4f, 0x32, 0xa1, 0xcf, 0x00, 0x25, 0xe9, 0xfa, 0xe6, 0xae, 0x2a, 0x26, 0x58, 0x8a, 0xc2, 0xb3, - 0x60, 0x5c, 0xee, 0x5c, 0xcf, 0x02, 0x93, 0xab, 0xac, 0xac, 0x8e, 0x07, 0x5a, 0x2e, 0x53, 0xd4, - 0xf4, 0xdf, 0xa7, 0x00, 0x89, 0xe2, 0xd9, 0x7f, 0x61, 0x5c, 0x84, 0x74, 0xf2, 0x34, 0x90, 0xa6, - 0xa2, 0x9d, 0x67, 0x57, 0xee, 0x99, 0xef, 0xc8, 0x4b, 0x91, 0xa1, 0x46, 0xfc, 0x78, 0x3c, 0xc7, - 0xcc, 0x94, 0x57, 0x66, 0x71, 0x7e, 0xe6, 0x8c, 0xf9, 0x73, 0xcc, 0xe4, 0x6d, 0xae, 0xff, 0xa1, - 0x41, 0x1b, 0x78, 0x68, 0x78, 0x1b, 0x4a, 0x38, 0xf2, 0x5d, 0x6a, 0x99, 0x21, 0x61, 0xbe, 0xd3, - 0xe1, 0x8e, 0x17, 0xa5, 0xa9, 0x64, 0x14, 0x25, 0xc3, 0x48, 0xe8, 0xfa, 0xaf, 0x34, 0xf8, 0x5a, - 0x72, 0xb0, 0x8c, 0xba, 0xe2, 0x0e, 0x5a, 0xfc, 0xf2, 0xd3, 0x7f, 0x19, 0xb2, 0xfc, 0x44, 0x26, - 0xa1, 0xb0, 0x7b, 0xde, 0x50, 0xa3, 0xc9, 0x46, 0xef, 0x43, 0x96, 0x45, 0x38, 0xea, 0xc8, 0x9e, - 0x69, 0x71, 0x9a, 0xd0, 0x6f, 0x2b, 0x95, 0x27, 0x42, 0xce, 0x50, 0xf2, 0xe8, 0xbb, 0xb0, 0xa6, - 0xfa, 0x2f, 0xd3, 0xf2, 0xbd, 0x4b, 0x12, 0x32, 0xde, 0xce, 0x27, 0x57, 0xec, 0xac, 0x70, 0xc4, - 0x8a, 0x9a, 0xb2, 0x9d, 0xcc, 0x88, 0x1f, 0x11, 0x46, 0xbb, 0x6f, 0x6e, 0xb4, 0xfb, 0xd0, 0x5b, - 0x50, 0x8a, 0x1b, 0x10, 0x7e, 0xfa, 0x9b, 0xfc, 0x4b, 0xb4, 0xd2, 0x05, 0xe3, 0x46, 0xcc, 0x68, - 0x90, 0xb0, 0x49, 0xad, 0x0b, 0xde, 0x77, 0xb3, 0x88, 0x04, 0x26, 0xbf, 0x7e, 0x77, 0x5b, 0xc4, - 0x79, 0xd9, 0x77, 0x73, 0x0e, 0xbf, 0xa4, 0x27, 0x0d, 0xe2, 0x37, 0x61, 0x51, 0xf6, 0x5c, 0x34, - 0xba, 0x32, 0x23, 0x4a, 0xc2, 0x0a, 0x08, 0xd8, 0x42, 0x42, 0x6d, 0x52, 0x12, 0xa2, 0x87, 0xfc, - 0x52, 0x25, 0x9c, 0x2a, 0x1e, 0xd0, 0xf2, 0xc2, 0x79, 0x53, 0xf4, 0x35, 0x03, 0x31, 0x17, 0xaf, - 0x68, 0xe0, 0x26, 0xdf, 0xfa, 0x6f, 0xd3, 0xb0, 0x7a, 0xd8, 0xab, 0xe9, 0x34, 0x60, 0x24, 0x8c, - 0xc6, 0x65, 0x05, 0x02, 0xcd, 0xc3, 0x2e, 0x51, 0x59, 0x2c, 0xbe, 0xf9, 0x7a, 0xa9, 0x47, 0x23, - 0x8a, 0x1d, 0x9e, 0xc7, 0x6d, 0xea, 0x89, 0x27, 0x16, 0xd9, 0x0b, 0x16, 0x15, 0xe7, 0x48, 0x30, - 0x1a, 0x81, 0x8b, 0x3e, 0x80, 0x8a, 0x8b, 0xa9, 0x17, 0x11, 0x0f, 0x7b, 0x16, 0x31, 0x5b, 0x21, - 0xb6, 0xc4, 0x3d, 0x8c, 0xcb, 0xc8, 0x64, 0x59, 0xee, 0xe1, 0xef, 0x29, 0xb6, 0x94, 0x5c, 0x16, - 0x2e, 0x8d, 0x7b, 0x1f, 0xd3, 0xf3, 0x65, 0xad, 0x91, 0xed, 0x77, 0x2d, 0x5d, 0x49, 0x19, 0x65, - 0x3e, 0x23, 0xee, 0x63, 0x8e, 0x15, 0xff, 0x40, 0xcb, 0x65, 0x8b, 0x73, 0x07, 0x5a, 0x6e, 0xae, - 0x98, 0x33, 0x6e, 0xf9, 0x01, 0xf1, 0x4c, 0xae, 0x20, 0x24, 0x2c, 0x32, 0x1d, 0xff, 0x31, 0x09, - 0x4d, 0x0b, 0x07, 0x83, 0x8c, 0x4e, 0x10, 0x48, 0x86, 0xfe, 0x9b, 0x34, 0x2c, 0xc9, 0x36, 0x33, - 0xce, 0xc4, 0xd8, 0x3b, 0x83, 0x7b, 0x24, 0x35, 0xb4, 0x47, 0xba, 0xe9, 0x9e, 0xfe, 0x6a, 0xd3, - 0x3d, 0xf3, 0xb2, 0x74, 0x1f, 0x99, 0xc1, 0xda, 0xab, 0x64, 0xf0, 0xec, 0xe8, 0x0c, 0xd6, 0xff, - 0x9c, 0x82, 0x65, 0xe9, 0x9f, 0x24, 0xd9, 0x26, 0x94, 0x41, 0x55, 0x32, 0xd2, 0xe3, 0x4b, 0x46, - 0x66, 0x9a, 0x3a, 0xa7, 0x8d, 0xd9, 0xa8, 0xc3, 0xdb, 0x69, 0x76, 0xc4, 0x76, 0xd2, 0x19, 0x2c, - 0x35, 0x43, 0x6c, 0x53, 0xaf, 0x6d, 0x90, 0xc7, 0x38, 0xb4, 0x59, 0xf7, 0x06, 0x71, 0x23, 0x92, - 0x0c, 0x33, 0x94, 0x1c, 0xf5, 0xee, 0xbd, 0x39, 0xb1, 0x97, 0x51, 0x0f, 0x5b, 0x7d, 0x98, 0xc6, - 0x62, 0xd4, 0xa7, 0x42, 0xff, 0x75, 0x0a, 0xca, 0xa3, 0x26, 0xa2, 0x32, 0xcc, 0xfa, 0x8f, 0x3d, - 0x12, 0xbf, 0x5d, 0xca, 0x01, 0xba, 0x80, 0x05, 0x9b, 0x78, 0xbe, 0x1b, 0x5f, 0x47, 0xd3, 0xd7, - 0xfc, 0xf6, 0x9f, 0x17, 0xe8, 0xf2, 0x66, 0xab, 0xff, 0x38, 0x05, 0x2b, 0x0f, 0x02, 0xe2, 0xd5, - 0x55, 0xfe, 0xf7, 0xdf, 0xab, 0x2c, 0x58, 0x1a, 0xdc, 0x1d, 0xbd, 0xff, 0x09, 0x4c, 0x7e, 0x37, - 0x19, 0x86, 0x35, 0x6e, 0xfa, 0x43, 0x34, 0xa6, 0xff, 0x21, 0x05, 0x68, 0x78, 0xee, 0x34, 0x7f, - 0xa9, 0xb8, 0x50, 0xe8, 0x33, 0xef, 0xda, 0x5d, 0xb5, 0xd0, 0x6b, 0xaf, 0xfe, 0x6c, 0x52, 0xcd, - 0xbc, 0xff, 0xff, 0x51, 0x33, 0xd1, 0xfb, 0x30, 0xae, 0x52, 0xaa, 0x1b, 0x79, 0xb9, 0xd7, 0x27, - 0x87, 0x9c, 0xb9, 0x8d, 0x83, 0x61, 0xb1, 0xa4, 0x8e, 0xaa, 0x77, 0xaa, 0x72, 0x7f, 0xe8, 0x03, - 0x21, 0x56, 0x33, 0xbe, 0x78, 0xbe, 0x9e, 0x7a, 0xf6, 0x7c, 0x3d, 0xf5, 0x9f, 0xe7, 0xeb, 0xa9, - 0x5f, 0xbc, 0x58, 0x9f, 0x79, 0xf6, 0x62, 0x7d, 0xe6, 0x5f, 0x2f, 0xd6, 0x67, 0x1e, 0x7d, 0x30, - 0x7d, 0xf0, 0xfa, 0xff, 0xbe, 0x3c, 0xcb, 0x0a, 0xc6, 0xb7, 0xfe, 0x17, 0x00, 0x00, 0xff, 0xff, - 0x4d, 0x11, 0x1d, 0x15, 0xe4, 0x1c, 0x00, 0x00, + // 2269 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x59, 0xcd, 0x6f, 0x23, 0x49, + 0x15, 0x4f, 0xdb, 0x1d, 0xc7, 0x79, 0x8e, 0x33, 0x76, 0x8d, 0x93, 0x71, 0x12, 0xc8, 0x0c, 0x2d, + 0x21, 0x8d, 0x66, 0x77, 0x9d, 0x49, 0xd8, 0x45, 0xab, 0x3d, 0x20, 0xe2, 0x7c, 0x6c, 0x1c, 0x25, + 0x19, 0x6f, 0xc7, 0x99, 0xdd, 0x1d, 0xd0, 0x36, 0x9d, 0xee, 0xb2, 0x53, 0x4a, 0x7f, 0x4d, 0x57, + 0x3b, 0x33, 0x19, 0x09, 0x89, 0x1b, 0x1c, 0x90, 0x40, 0x42, 0x1c, 0x38, 0x20, 0xc1, 0x01, 0x0e, + 0x48, 0x1c, 0x90, 0xb8, 0x72, 0x40, 0x5c, 0xf6, 0xc6, 0x88, 0x0b, 0x88, 0xc3, 0x0a, 0xcd, 0x1c, + 0xf8, 0x37, 0x50, 0x7d, 0x74, 0xfb, 0xdb, 0xe3, 0x99, 0x64, 0x25, 0x84, 0x38, 0xd9, 0xf5, 0x5e, + 0xbd, 0xdf, 0x7b, 0xf5, 0xde, 0xab, 0x7a, 0xaf, 0xaa, 0xe1, 0xae, 0x7d, 0x69, 0x3f, 0x0d, 0x42, + 0x3f, 0xf2, 0x2d, 0xdf, 0x59, 0x23, 0x9e, 0x8d, 0x9f, 0xe2, 0x70, 0x0d, 0x5f, 0x60, 0x2f, 0xa2, + 0xf2, 0xa7, 0xc2, 0xd9, 0x68, 0xa5, 0x7b, 0x66, 0x45, 0xce, 0xac, 0x88, 0x29, 0xcb, 0x4b, 0x96, + 0x4f, 0x5d, 0x9f, 0x1a, 0x9c, 0xbf, 0x26, 0x06, 0x42, 0x6e, 0xb9, 0xd4, 0xf2, 0x5b, 0xbe, 0xa0, + 0xb3, 0x7f, 0x92, 0x7a, 0x7f, 0xa8, 0x5e, 0x7a, 0x66, 0x86, 0xd8, 0x5e, 0x0b, 0xb1, 0xeb, 0x5f, + 0x98, 0x8e, 0x11, 0x62, 0x93, 0xfa, 0x9e, 0x94, 0x78, 0x6b, 0xa8, 0x44, 0x42, 0xb8, 0x58, 0x5f, + 0xb3, 0x1c, 0xff, 0x74, 0x2c, 0x7c, 0xf7, 0xe4, 0x00, 0x87, 0x01, 0x8e, 0xda, 0xa6, 0x23, 0x25, + 0xd6, 0x5f, 0x29, 0x41, 0xdb, 0xa7, 0xa6, 0x65, 0xf9, 0x6d, 0x2f, 0x12, 0x22, 0xda, 0x5f, 0x15, + 0xb8, 0xb1, 0xdb, 0xf6, 0x6c, 0xe2, 0xb5, 0x4e, 0x02, 0xdb, 0x8c, 0xf0, 0xc3, 0x75, 0xf4, 0x35, + 0x98, 0x4b, 0x90, 0x0d, 0x62, 0x97, 0x95, 0x3b, 0xca, 0xdd, 0xbc, 0x9e, 0x4b, 0x68, 0x35, 0x1b, + 0xdd, 0x83, 0x62, 0x53, 0x48, 0x19, 0x17, 0xa6, 0xd3, 0xc6, 0x46, 0x10, 0xb8, 0xe5, 0xd4, 0x1d, + 0xe5, 0xee, 0xb4, 0x7e, 0x43, 0x32, 0x1e, 0x32, 0x7a, 0x3d, 0x70, 0x91, 0x0b, 0xf9, 0x78, 0x2e, + 0x37, 0xa9, 0x9c, 0xbe, 0xa3, 0xdc, 0x9d, 0xab, 0xee, 0x7d, 0xfe, 0xc5, 0xed, 0xa9, 0x7f, 0x7e, + 0x71, 0xfb, 0xdb, 0x2d, 0x12, 0x9d, 0xb5, 0x4f, 0x2b, 0x96, 0xef, 0xae, 0xf5, 0xd8, 0x7f, 0xf1, + 0xee, 0x3b, 0xd6, 0x99, 0x49, 0xbc, 0xce, 0x02, 0xec, 0xe8, 0x32, 0xc0, 0xb4, 0x72, 0x8c, 0x43, + 0x62, 0x3a, 0xe4, 0x99, 0x79, 0xea, 0xe0, 0x9a, 0x17, 0xe9, 0x73, 0x12, 0xbe, 0xc6, 0xd0, 0xb5, + 0x9f, 0xa5, 0x60, 0x5e, 0xae, 0x68, 0x87, 0x05, 0xf6, 0xe1, 0x3a, 0x3a, 0x80, 0x99, 0x36, 0x5f, + 0x1c, 0x2d, 0x2b, 0x77, 0xd2, 0x77, 0x73, 0x1b, 0x6f, 0x57, 0xc6, 0x24, 0x42, 0xa5, 0xcf, 0x1f, + 0x55, 0x95, 0x59, 0xaa, 0xc7, 0x10, 0x68, 0x1b, 0x54, 0x66, 0x07, 0x5f, 0xee, 0xfc, 0xc6, 0xfd, + 0x49, 0xa0, 0xa4, 0x21, 0x95, 0xc6, 0x65, 0x80, 0x75, 0x2e, 0xad, 0xb9, 0xa0, 0xb2, 0x11, 0x2a, + 0x41, 0xa1, 0xf1, 0x69, 0x7d, 0xc7, 0x38, 0x39, 0x3a, 0xae, 0xef, 0x6c, 0xd5, 0x76, 0x6b, 0x3b, + 0xdb, 0x85, 0x29, 0x74, 0x0b, 0x6e, 0x72, 0x6a, 0x5d, 0xdf, 0x39, 0xac, 0x9d, 0x1c, 0x1a, 0xc7, + 0x9b, 0x87, 0xf5, 0x83, 0x9d, 0x82, 0x82, 0x6e, 0xc3, 0x0a, 0x67, 0xec, 0x9e, 0x1c, 0x6d, 0xd7, + 0x8e, 0x3e, 0x34, 0xf4, 0xcd, 0xc6, 0x8e, 0xb1, 0x79, 0xb4, 0x6d, 0xd4, 0x8e, 0xb6, 0x77, 0x3e, + 0x29, 0xa4, 0xd0, 0x02, 0x14, 0x7b, 0x24, 0x1f, 0x3e, 0x68, 0xec, 0x14, 0xd2, 0xda, 0x5f, 0x52, + 0x90, 0x3f, 0x34, 0xc3, 0x73, 0x1c, 0xc5, 0x4e, 0x59, 0x81, 0x59, 0x97, 0x13, 0x3a, 0x21, 0xce, + 0x0a, 0x42, 0xcd, 0x46, 0x8f, 0x60, 0x2e, 0x08, 0x89, 0x85, 0x0d, 0xb1, 0x68, 0xbe, 0xd6, 0xdc, + 0xc6, 0x7b, 0x63, 0xd7, 0x2a, 0xe0, 0xeb, 0x4c, 0x4c, 0xb8, 0x4e, 0x6a, 0xda, 0x9b, 0xd2, 0x73, + 0x41, 0x87, 0x8a, 0x3e, 0x86, 0xbc, 0x54, 0x6c, 0x85, 0x98, 0x81, 0xa7, 0x39, 0xf8, 0xfd, 0x09, + 0xc0, 0xb7, 0xb8, 0x40, 0x07, 0x77, 0xce, 0xed, 0x22, 0x77, 0x01, 0xbb, 0xbe, 0x4d, 0x9a, 0x97, + 0x65, 0x75, 0x62, 0xe0, 0x43, 0x2e, 0x30, 0x00, 0x2c, 0xc8, 0xd5, 0x19, 0x98, 0xe6, 0xb3, 0xb5, + 0x7d, 0x28, 0x8f, 0x5a, 0x25, 0xaa, 0xc0, 0x4d, 0xe1, 0xb2, 0x27, 0x24, 0x3a, 0x33, 0xf0, 0xd3, + 0xc0, 0xf7, 0xb0, 0x17, 0x71, 0xcf, 0xaa, 0x7a, 0x91, 0xb3, 0x3e, 0x26, 0xd1, 0xd9, 0x8e, 0x64, + 0x68, 0x9f, 0x40, 0x51, 0x60, 0x55, 0x4d, 0x9a, 0x80, 0x20, 0x50, 0x03, 0x93, 0x84, 0x5c, 0x6a, + 0x56, 0xe7, 0xff, 0xd1, 0x1a, 0x94, 0x5c, 0xe2, 0x19, 0x02, 0xdc, 0x3a, 0x33, 0xbd, 0x56, 0x67, + 0xbb, 0xe5, 0xf5, 0xa2, 0x4b, 0x3c, 0x6e, 0xcd, 0x16, 0xe7, 0xd4, 0x03, 0x57, 0x6b, 0xc3, 0xcd, + 0x21, 0xee, 0x42, 0x55, 0x50, 0x4f, 0x4d, 0x8a, 0x39, 0x76, 0x6e, 0xa3, 0x32, 0x81, 0x57, 0xba, + 0x2c, 0xd3, 0xb9, 0x2c, 0x5a, 0x86, 0x6c, 0xb2, 0x32, 0xa6, 0xbf, 0xa8, 0x27, 0x63, 0xed, 0xd3, + 0x58, 0x6d, 0x8f, 0x33, 0xaf, 0x43, 0xad, 0xf6, 0x7b, 0x05, 0xf2, 0xc7, 0x7e, 0x3b, 0xb4, 0xf0, + 0x83, 0x26, 0xdb, 0x52, 0x14, 0x7d, 0x17, 0xf2, 0x9d, 0xb3, 0x2c, 0xce, 0xe0, 0x91, 0x19, 0x9a, + 0x10, 0x2e, 0xd6, 0x2b, 0x35, 0x41, 0x3b, 0x4e, 0xa4, 0x6b, 0x36, 0x0b, 0x38, 0xed, 0x1a, 0xa3, + 0x77, 0x61, 0xc6, 0xb4, 0xed, 0x10, 0x53, 0xca, 0x57, 0x39, 0x5b, 0x2d, 0xff, 0xed, 0x8f, 0xef, + 0x94, 0x64, 0x49, 0xd8, 0x14, 0x9c, 0xe3, 0x28, 0x24, 0x5e, 0x6b, 0x6f, 0x4a, 0x8f, 0xa7, 0x56, + 0xb3, 0x90, 0xa1, 0xdc, 0x48, 0xed, 0x77, 0x69, 0xb8, 0xd1, 0x08, 0x4d, 0x8f, 0x36, 0x71, 0x18, + 0xfb, 0xa1, 0x05, 0x25, 0x8a, 0x3d, 0x1b, 0x87, 0xc6, 0xf5, 0x19, 0xae, 0x23, 0x01, 0xd9, 0x4d, + 0x43, 0x2e, 0xdc, 0x0a, 0xb1, 0x45, 0x02, 0x82, 0xbd, 0xa8, 0x4f, 0x57, 0xea, 0x2a, 0xba, 0x16, + 0x12, 0xd4, 0x1e, 0x75, 0x4b, 0x90, 0x35, 0x29, 0x15, 0xc7, 0x48, 0x9a, 0xa7, 0xe4, 0x0c, 0x1f, + 0xd7, 0x6c, 0xb4, 0x08, 0x19, 0xd3, 0x65, 0xd3, 0xf8, 0x4e, 0x54, 0x75, 0x39, 0x42, 0x55, 0xc8, + 0x08, 0xbb, 0xcb, 0xd3, 0xdc, 0xa0, 0x7b, 0x63, 0x93, 0xa2, 0x27, 0xf0, 0xba, 0x94, 0x44, 0x7b, + 0x30, 0x9b, 0xd8, 0x53, 0xce, 0xbc, 0x36, 0x4c, 0x47, 0x58, 0xfb, 0x7b, 0x1a, 0x0a, 0x0f, 0x42, + 0x1b, 0x87, 0xbb, 0xc4, 0x71, 0xe2, 0x68, 0x9d, 0x40, 0xce, 0x35, 0xcf, 0x71, 0x68, 0xf8, 0x8c, + 0x33, 0x3e, 0x79, 0x87, 0x38, 0x8e, 0xe3, 0xc9, 0xc2, 0x01, 0x1c, 0x88, 0x53, 0xd0, 0x2e, 0x4c, + 0x0b, 0xc0, 0xd4, 0x9b, 0x00, 0xee, 0x4d, 0xe9, 0x42, 0x1c, 0x7d, 0x06, 0x45, 0x87, 0x3c, 0x6e, + 0x13, 0xdb, 0x8c, 0x88, 0xef, 0x49, 0x23, 0xc5, 0x71, 0xb7, 0x36, 0xd6, 0x0b, 0x07, 0x1d, 0x29, + 0x0e, 0xc9, 0x4f, 0xbb, 0x82, 0xd3, 0x47, 0x45, 0xb7, 0x21, 0xd7, 0x24, 0x8e, 0x63, 0xc8, 0xf0, + 0xa5, 0x79, 0xf8, 0x80, 0x91, 0x36, 0x45, 0x08, 0x79, 0xf5, 0x60, 0xfe, 0x69, 0x62, 0xcc, 0xa3, + 0x88, 0x58, 0xf5, 0x38, 0xc7, 0xe1, 0x2e, 0xc6, 0x8c, 0x19, 0x25, 0xcc, 0x8c, 0x60, 0x46, 0x31, + 0xf3, 0x6d, 0x40, 0x91, 0x1f, 0x99, 0x8e, 0xc1, 0xd0, 0xb0, 0x6d, 0x70, 0xa9, 0xf2, 0x0c, 0xd7, + 0x50, 0xe0, 0x9c, 0x5d, 0xce, 0x38, 0x64, 0xf4, 0x81, 0xd9, 0x1c, 0xa6, 0x9c, 0x1d, 0x98, 0xdd, + 0x60, 0xf4, 0x6a, 0x1e, 0x72, 0x51, 0x27, 0x6a, 0xda, 0x8f, 0xd3, 0x70, 0x73, 0x1b, 0x3b, 0xf8, + 0x02, 0x87, 0x66, 0xab, 0xab, 0x1f, 0xf8, 0x0e, 0x40, 0xbc, 0x62, 0x7c, 0xb5, 0x0d, 0x18, 0x87, + 0xb8, 0x03, 0xc7, 0xc0, 0xfd, 0x66, 0x93, 0xe2, 0x28, 0x22, 0x5e, 0xeb, 0x4a, 0x3b, 0x2e, 0x06, + 0xef, 0xc0, 0x0d, 0xb4, 0x66, 0xe9, 0xc1, 0xd6, 0xac, 0x2f, 0x74, 0xea, 0x40, 0xe8, 0xee, 0x43, + 0x49, 0xb8, 0xf4, 0x71, 0xdb, 0x8f, 0xb0, 0xf1, 0xb8, 0x6d, 0x7a, 0x51, 0xdb, 0xa5, 0x3c, 0x8a, + 0xaa, 0x2e, 0xdc, 0xfd, 0x11, 0x63, 0x7d, 0x24, 0x39, 0x68, 0x01, 0x32, 0x84, 0x1a, 0xa7, 0xed, + 0x4b, 0x1e, 0xcc, 0xac, 0x3e, 0x4d, 0x68, 0xb5, 0x7d, 0xc9, 0x2a, 0x1e, 0xa1, 0x46, 0x93, 0x78, + 0xa6, 0x63, 0x30, 0x03, 0x1d, 0xec, 0xb2, 0xcd, 0x38, 0xc3, 0xe7, 0x14, 0x09, 0xdd, 0x65, 0x9c, + 0xe3, 0x84, 0xa1, 0xfd, 0x28, 0x05, 0x68, 0x30, 0xff, 0xbe, 0xdc, 0x68, 0xdc, 0x81, 0x39, 0xd6, + 0x52, 0x1b, 0xac, 0x92, 0xc6, 0x27, 0x60, 0x5e, 0x07, 0x46, 0xab, 0x9b, 0x24, 0xac, 0xd9, 0x93, + 0xb8, 0xf4, 0xab, 0x00, 0xc2, 0x63, 0x94, 0x3c, 0xc3, 0xd2, 0xa3, 0xb3, 0x9c, 0x72, 0x4c, 0x9e, + 0xe1, 0x2e, 0xf7, 0x4c, 0x77, 0xbb, 0x67, 0x19, 0xb2, 0xb4, 0x7d, 0x1a, 0x11, 0xeb, 0x9c, 0x72, + 0xbf, 0xa9, 0x7a, 0x32, 0xd6, 0xfe, 0x9d, 0x82, 0x5b, 0x1d, 0xcb, 0x7b, 0x1b, 0x89, 0x47, 0xd7, + 0x59, 0xda, 0xfa, 0x0a, 0xdb, 0x33, 0x58, 0x11, 0x1d, 0x9d, 0x6d, 0x74, 0x16, 0x1d, 0xf8, 0x94, + 0xb0, 0x80, 0xd0, 0x72, 0x9a, 0x77, 0xc7, 0x1f, 0x4c, 0xac, 0xa9, 0x1e, 0x63, 0xd4, 0x25, 0x84, + 0xbe, 0x24, 0xe1, 0x07, 0x38, 0x14, 0x79, 0x70, 0x2b, 0xd6, 0x2d, 0x0a, 0x46, 0x47, 0xaf, 0xca, + 0xf5, 0x7e, 0x73, 0x62, 0xbd, 0x9b, 0x4c, 0x3e, 0xd1, 0xb9, 0x20, 0x61, 0x7b, 0xa8, 0x74, 0x5f, + 0xcd, 0xa6, 0x0a, 0x69, 0xed, 0xd7, 0x00, 0xa5, 0xe3, 0xc8, 0x8c, 0x70, 0xb3, 0xed, 0xf0, 0x8c, + 0x8b, 0xdd, 0xec, 0x42, 0x8e, 0x9f, 0x12, 0x46, 0xe0, 0x98, 0x56, 0xdc, 0x9e, 0xec, 0x8f, 0x2f, + 0x21, 0x43, 0x70, 0x7a, 0x89, 0x75, 0x86, 0xe5, 0xc6, 0x5d, 0x24, 0xf8, 0x09, 0x0d, 0xf9, 0x90, + 0x17, 0xea, 0xe4, 0xc5, 0x50, 0x9e, 0xd6, 0x7b, 0x57, 0x54, 0xa8, 0x0b, 0x34, 0xd1, 0xb4, 0xfa, + 0x5d, 0x14, 0xf4, 0x13, 0x05, 0x56, 0x2c, 0xdf, 0xb3, 0xb9, 0x37, 0x4c, 0xc7, 0xe8, 0x5a, 0x2c, + 0xdf, 0xa6, 0xa2, 0xf4, 0x1e, 0xbe, 0xbe, 0xfe, 0xad, 0x0e, 0xe8, 0x90, 0x35, 0x2f, 0x59, 0xa3, + 0xd8, 0x23, 0x2c, 0x8a, 0x42, 0xd2, 0x6a, 0xe1, 0x10, 0xdb, 0xb2, 0x8a, 0x5f, 0x83, 0x45, 0x8d, + 0x18, 0x72, 0xb8, 0x45, 0x09, 0x1b, 0xfd, 0x50, 0x81, 0x25, 0xc7, 0xf7, 0x5a, 0x46, 0x84, 0x43, + 0x77, 0xc0, 0x43, 0x33, 0x6f, 0x9a, 0x12, 0x07, 0xbe, 0xd7, 0x6a, 0xe0, 0xd0, 0x1d, 0xe2, 0x9e, + 0x45, 0x67, 0x28, 0x6f, 0xf9, 0x7b, 0x50, 0x1e, 0x95, 0x48, 0x68, 0x3b, 0x6e, 0x1a, 0xde, 0xa8, + 0x0b, 0x91, 0x2d, 0xc3, 0xf2, 0x9f, 0x14, 0x58, 0x1c, 0x9e, 0x3a, 0xe8, 0x11, 0x14, 0x78, 0x56, + 0x62, 0x5b, 0xfa, 0x20, 0x39, 0x74, 0xee, 0xbf, 0x9e, 0xae, 0x9a, 0xad, 0xcf, 0x4b, 0x24, 0x39, + 0x46, 0x1f, 0x42, 0x46, 0x3c, 0x81, 0xc8, 0xfb, 0xf2, 0x88, 0xf6, 0x44, 0xbc, 0x9a, 0x54, 0xba, + 0x0d, 0xd3, 0xb9, 0x98, 0x2e, 0xc5, 0x97, 0x2d, 0x58, 0x19, 0x93, 0x79, 0xd7, 0xe4, 0xa4, 0xef, + 0x0f, 0x2a, 0xe9, 0x4a, 0x26, 0xf4, 0x19, 0xa0, 0x24, 0x5d, 0xaf, 0xee, 0xaa, 0x42, 0x82, 0x25, + 0x29, 0x2c, 0x0b, 0x46, 0xe5, 0xce, 0xf5, 0x2c, 0x30, 0xb9, 0xca, 0x8a, 0xd3, 0x71, 0x5f, 0xcd, + 0xa6, 0x0b, 0xaa, 0xf6, 0x1b, 0x05, 0x10, 0x3f, 0x3c, 0x7b, 0x2f, 0x8c, 0xf3, 0x90, 0x4a, 0x9e, + 0x06, 0x52, 0x84, 0xb7, 0xf3, 0xf4, 0xd2, 0x3d, 0xf5, 0x1d, 0x71, 0x29, 0xd2, 0xe5, 0x88, 0x95, + 0xc7, 0x33, 0x93, 0x1a, 0xe2, 0xca, 0xcc, 0xeb, 0x67, 0x56, 0x9f, 0x3d, 0x33, 0xa9, 0xb8, 0xcd, + 0xf5, 0x3e, 0x34, 0xa8, 0x7d, 0x0f, 0x0d, 0x6f, 0x41, 0xd1, 0x8c, 0x7c, 0x97, 0x58, 0x46, 0x88, + 0xa9, 0xef, 0xb4, 0x99, 0xe3, 0xf9, 0xd1, 0x54, 0xd4, 0x0b, 0x82, 0xa1, 0x27, 0x74, 0xed, 0xcf, + 0x69, 0xf8, 0x4a, 0x52, 0x58, 0x86, 0x5d, 0x71, 0xfb, 0x2d, 0x7e, 0x75, 0xf5, 0x5f, 0x84, 0x0c, + 0xab, 0xc8, 0x38, 0xe4, 0x76, 0xcf, 0xea, 0x72, 0x34, 0xde, 0xe8, 0x3d, 0xc8, 0xd0, 0xc8, 0x8c, + 0xda, 0xa2, 0x67, 0x9a, 0x9f, 0x24, 0xf4, 0x5b, 0x52, 0xe5, 0x31, 0x97, 0xd3, 0xa5, 0x3c, 0xfa, + 0x16, 0xac, 0xc8, 0xfe, 0xcb, 0xb0, 0x7c, 0xef, 0x02, 0x87, 0x94, 0xb5, 0xf3, 0xc9, 0x15, 0x3b, + 0xc3, 0x1d, 0xb1, 0x24, 0xa7, 0x6c, 0x25, 0x33, 0xe2, 0x47, 0x84, 0xe1, 0xee, 0x9b, 0x19, 0xee, + 0x3e, 0x74, 0x0f, 0x8a, 0x71, 0x03, 0xc2, 0xaa, 0xbf, 0xc1, 0xfe, 0xf1, 0x56, 0x3a, 0xaf, 0xdf, + 0x88, 0x19, 0x75, 0x1c, 0x36, 0x88, 0x75, 0xce, 0xfa, 0x6e, 0x1a, 0xe1, 0xc0, 0x60, 0xd7, 0xef, + 0x4e, 0x8b, 0x38, 0x2b, 0xfa, 0x6e, 0xc6, 0x61, 0x97, 0xf4, 0xa4, 0x41, 0xfc, 0x3a, 0xcc, 0x8b, + 0x9e, 0x8b, 0x44, 0x97, 0x46, 0x44, 0x70, 0x58, 0x06, 0x0e, 0x9b, 0x4f, 0xa8, 0x0d, 0x82, 0xc3, + 0x0f, 0x52, 0x65, 0x45, 0xfb, 0xb9, 0x3a, 0x36, 0x86, 0x1b, 0xff, 0x8f, 0xe1, 0x7f, 0x75, 0x0c, + 0xd1, 0x43, 0x76, 0x31, 0xe6, 0x4e, 0xe5, 0x8f, 0xa0, 0x39, 0xee, 0xbc, 0x09, 0x7a, 0xd3, 0xbe, + 0x98, 0xf3, 0x97, 0x50, 0x70, 0x93, 0xff, 0xda, 0xaf, 0x52, 0xb0, 0x7c, 0xd0, 0xad, 0xe9, 0x24, + 0xa0, 0x38, 0x8c, 0x46, 0xed, 0x6c, 0x04, 0xaa, 0x67, 0xba, 0x58, 0x9e, 0x44, 0xfc, 0x3f, 0x5b, + 0x2f, 0xf1, 0x48, 0x44, 0x4c, 0x87, 0x9d, 0x45, 0x2d, 0xe2, 0xf1, 0x67, 0x32, 0xd1, 0xcf, 0x17, + 0x24, 0xe7, 0x90, 0x33, 0xea, 0x81, 0x8b, 0xde, 0x87, 0xb2, 0x6b, 0x12, 0x2f, 0xc2, 0x9e, 0xe9, + 0x59, 0xd8, 0x68, 0x86, 0xa6, 0xc5, 0xef, 0xd2, 0x4c, 0x46, 0x24, 0xcb, 0x62, 0x17, 0x7f, 0x57, + 0xb2, 0x85, 0xe4, 0x22, 0x77, 0x69, 0xdc, 0xbf, 0x1a, 0x9e, 0x2f, 0xea, 0x85, 0xb8, 0x42, 0x55, + 0x53, 0x65, 0x45, 0x2f, 0xb1, 0x19, 0x71, 0x2f, 0x7a, 0x24, 0xf9, 0xfb, 0x6a, 0x36, 0x53, 0x98, + 0xd9, 0x57, 0xb3, 0x33, 0x85, 0xac, 0x7e, 0xcb, 0x0f, 0xb0, 0x67, 0x30, 0x05, 0x21, 0xa6, 0x91, + 0xe1, 0xf8, 0x4f, 0x70, 0x68, 0x58, 0x66, 0xd0, 0xcf, 0x68, 0x07, 0x81, 0x60, 0x68, 0xbf, 0x4c, + 0xc1, 0x82, 0xb8, 0x2a, 0xc4, 0x99, 0x18, 0x7b, 0xa7, 0x7f, 0x8f, 0x28, 0x03, 0x7b, 0xa4, 0x93, + 0xee, 0xa9, 0x2f, 0x37, 0xdd, 0xd3, 0xaf, 0x4a, 0xf7, 0xa1, 0x19, 0xac, 0xbe, 0x4e, 0x06, 0x4f, + 0x0f, 0xcf, 0x60, 0xed, 0x0f, 0x0a, 0x2c, 0x0a, 0xff, 0x24, 0xc9, 0x36, 0xa6, 0x94, 0xc9, 0x23, + 0x23, 0x35, 0xfa, 0xc8, 0x48, 0x4f, 0x52, 0xab, 0xd4, 0x11, 0x1b, 0x75, 0x70, 0x3b, 0x4d, 0x0f, + 0xd9, 0x4e, 0x1a, 0x85, 0x85, 0x46, 0x68, 0xda, 0xc4, 0x6b, 0xe9, 0xf8, 0x89, 0x19, 0xda, 0xb4, + 0x73, 0x0b, 0xbc, 0x11, 0x09, 0x86, 0x11, 0x0a, 0x8e, 0xfc, 0x76, 0xb1, 0x3e, 0xb6, 0x1f, 0x95, + 0x8f, 0x93, 0x3d, 0x98, 0xfa, 0x7c, 0xd4, 0xa3, 0x42, 0xfb, 0x85, 0x02, 0xa5, 0x61, 0x13, 0x51, + 0x09, 0xa6, 0xfd, 0x27, 0x1e, 0x8e, 0xdf, 0x9f, 0xc5, 0x00, 0x9d, 0xc3, 0x9c, 0x8d, 0x3d, 0xdf, + 0x8d, 0x9f, 0x14, 0x52, 0xd7, 0xfc, 0xfd, 0x26, 0xc7, 0xd1, 0xc5, 0xeb, 0x84, 0xf6, 0x03, 0x05, + 0x96, 0x1e, 0x04, 0xd8, 0xab, 0xc9, 0xfc, 0xef, 0xbd, 0x1b, 0x5b, 0xb0, 0xd0, 0xbf, 0x3b, 0xba, + 0xbf, 0xeb, 0x8c, 0x7f, 0xfb, 0x1a, 0x84, 0xd5, 0x6f, 0xfa, 0x03, 0x34, 0xaa, 0xfd, 0x56, 0x01, + 0x34, 0x38, 0x77, 0x92, 0xcf, 0x62, 0x2e, 0xe4, 0x7b, 0xcc, 0xbb, 0x76, 0x57, 0xcd, 0x75, 0xdb, + 0xab, 0x3d, 0x1f, 0x77, 0x66, 0x6e, 0xfc, 0x6f, 0x9c, 0x99, 0xe8, 0x3d, 0x18, 0x75, 0x52, 0xca, + 0x57, 0x95, 0x52, 0xb7, 0x4f, 0x0e, 0x18, 0x73, 0xcb, 0x0c, 0x06, 0xc5, 0x92, 0x73, 0x54, 0xbe, + 0x35, 0x96, 0x7a, 0x43, 0x1f, 0x70, 0xb1, 0xaa, 0xfe, 0xf9, 0x8b, 0x55, 0xe5, 0xf9, 0x8b, 0x55, + 0xe5, 0x5f, 0x2f, 0x56, 0x95, 0x9f, 0xbe, 0x5c, 0x9d, 0x7a, 0xfe, 0x72, 0x75, 0xea, 0x1f, 0x2f, + 0x57, 0xa7, 0x1e, 0xbd, 0x3f, 0x79, 0xf0, 0x7a, 0x3f, 0x41, 0x9f, 0x66, 0x38, 0xe3, 0x1b, 0xff, + 0x09, 0x00, 0x00, 0xff, 0xff, 0xb0, 0xa3, 0x08, 0x2d, 0xa8, 0x1e, 0x00, 0x00, } func (m *FundingUpdateV1) Marshal() (dAtA []byte, err error) { @@ -3670,6 +3820,81 @@ func (m *PerpetualMarketCreateEventV1) MarshalTo(dAtA []byte) (int, error) { } func (m *PerpetualMarketCreateEventV1) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.LiquidityTier != 0 { + i = encodeVarintEvents(dAtA, i, uint64(m.LiquidityTier)) + i-- + dAtA[i] = 0x50 + } + if m.StepBaseQuantums != 0 { + i = encodeVarintEvents(dAtA, i, uint64(m.StepBaseQuantums)) + i-- + dAtA[i] = 0x48 + } + if m.SubticksPerTick != 0 { + i = encodeVarintEvents(dAtA, i, uint64(m.SubticksPerTick)) + i-- + dAtA[i] = 0x40 + } + if m.AtomicResolution != 0 { + i = encodeVarintEvents(dAtA, i, uint64((uint32(m.AtomicResolution)<<1)^uint32((m.AtomicResolution>>31)))) + i-- + dAtA[i] = 0x38 + } + if m.QuantumConversionExponent != 0 { + i = encodeVarintEvents(dAtA, i, uint64((uint32(m.QuantumConversionExponent)<<1)^uint32((m.QuantumConversionExponent>>31)))) + i-- + dAtA[i] = 0x30 + } + if m.Status != 0 { + i = encodeVarintEvents(dAtA, i, uint64(m.Status)) + i-- + dAtA[i] = 0x28 + } + if m.MarketId != 0 { + i = encodeVarintEvents(dAtA, i, uint64(m.MarketId)) + i-- + dAtA[i] = 0x20 + } + if len(m.Ticker) > 0 { + i -= len(m.Ticker) + copy(dAtA[i:], m.Ticker) + i = encodeVarintEvents(dAtA, i, uint64(len(m.Ticker))) + i-- + dAtA[i] = 0x1a + } + if m.ClobPairId != 0 { + i = encodeVarintEvents(dAtA, i, uint64(m.ClobPairId)) + i-- + dAtA[i] = 0x10 + } + if m.Id != 0 { + i = encodeVarintEvents(dAtA, i, uint64(m.Id)) + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + +func (m *PerpetualMarketCreateEventV2) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *PerpetualMarketCreateEventV2) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *PerpetualMarketCreateEventV2) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int @@ -4611,6 +4836,46 @@ func (m *AssetCreateEventV1) Size() (n int) { } func (m *PerpetualMarketCreateEventV1) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Id != 0 { + n += 1 + sovEvents(uint64(m.Id)) + } + if m.ClobPairId != 0 { + n += 1 + sovEvents(uint64(m.ClobPairId)) + } + l = len(m.Ticker) + if l > 0 { + n += 1 + l + sovEvents(uint64(l)) + } + if m.MarketId != 0 { + n += 1 + sovEvents(uint64(m.MarketId)) + } + if m.Status != 0 { + n += 1 + sovEvents(uint64(m.Status)) + } + if m.QuantumConversionExponent != 0 { + n += 1 + sozEvents(uint64(m.QuantumConversionExponent)) + } + if m.AtomicResolution != 0 { + n += 1 + sozEvents(uint64(m.AtomicResolution)) + } + if m.SubticksPerTick != 0 { + n += 1 + sovEvents(uint64(m.SubticksPerTick)) + } + if m.StepBaseQuantums != 0 { + n += 1 + sovEvents(uint64(m.StepBaseQuantums)) + } + if m.LiquidityTier != 0 { + n += 1 + sovEvents(uint64(m.LiquidityTier)) + } + return n +} + +func (m *PerpetualMarketCreateEventV2) Size() (n int) { if m == nil { return 0 } @@ -7802,6 +8067,263 @@ func (m *PerpetualMarketCreateEventV1) Unmarshal(dAtA []byte) error { break } } + default: + iNdEx = preIndex + skippy, err := skipEvents(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthEvents + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *PerpetualMarketCreateEventV2) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEvents + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PerpetualMarketCreateEventV2: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PerpetualMarketCreateEventV2: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType) + } + m.Id = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEvents + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Id |= uint32(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ClobPairId", wireType) + } + m.ClobPairId = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEvents + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.ClobPairId |= uint32(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Ticker", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEvents + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthEvents + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthEvents + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Ticker = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field MarketId", wireType) + } + m.MarketId = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEvents + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.MarketId |= uint32(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 5: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) + } + m.Status = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEvents + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Status |= types.ClobPairStatus(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 6: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field QuantumConversionExponent", wireType) + } + var v int32 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEvents + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int32(b&0x7F) << shift + if b < 0x80 { + break + } + } + v = int32((uint32(v) >> 1) ^ uint32(((v&1)<<31)>>31)) + m.QuantumConversionExponent = v + case 7: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field AtomicResolution", wireType) + } + var v int32 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEvents + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int32(b&0x7F) << shift + if b < 0x80 { + break + } + } + v = int32((uint32(v) >> 1) ^ uint32(((v&1)<<31)>>31)) + m.AtomicResolution = v + case 8: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field SubticksPerTick", wireType) + } + m.SubticksPerTick = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEvents + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.SubticksPerTick |= uint32(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 9: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field StepBaseQuantums", wireType) + } + m.StepBaseQuantums = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEvents + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.StepBaseQuantums |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 10: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field LiquidityTier", wireType) + } + m.LiquidityTier = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowEvents + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.LiquidityTier |= uint32(b&0x7F) << shift + if b < 0x80 { + break + } + } case 11: if wireType != 0 { return fmt.Errorf("proto: wrong wireType = %d for field MarketType", wireType) diff --git a/protocol/indexer/events/perpetual_market_create.go b/protocol/indexer/events/perpetual_market_create.go index a061829764..6e0314da4e 100644 --- a/protocol/indexer/events/perpetual_market_create.go +++ b/protocol/indexer/events/perpetual_market_create.go @@ -20,8 +20,8 @@ func NewPerpetualMarketCreateEvent( stepBaseQuantums uint64, liquidityTier uint32, marketType perptypes.PerpetualMarketType, -) *PerpetualMarketCreateEventV1 { - return &PerpetualMarketCreateEventV1{ +) *PerpetualMarketCreateEventV2 { + return &PerpetualMarketCreateEventV2{ Id: id, ClobPairId: clobPairId, Ticker: ticker, diff --git a/protocol/indexer/events/perpetual_market_create_test.go b/protocol/indexer/events/perpetual_market_create_test.go index 2398aa4a9b..7a8e1e15ac 100644 --- a/protocol/indexer/events/perpetual_market_create_test.go +++ b/protocol/indexer/events/perpetual_market_create_test.go @@ -24,7 +24,7 @@ func TestNewPerpetualMarketCreateEvent_Success(t *testing.T) { 0, perptypes.PerpetualMarketType_PERPETUAL_MARKET_TYPE_CROSS, ) - expectedPerpetualMarketCreateEventProto := &PerpetualMarketCreateEventV1{ + expectedPerpetualMarketCreateEventProto := &PerpetualMarketCreateEventV2{ Id: 0, ClobPairId: 0, Ticker: "BTC",