Skip to content

Commit

Permalink
Adapt to latest changes on specVersion:41 (#239)
Browse files Browse the repository at this point in the history
* Get latest chain metadata

* Regenerate types based on new metadata

* Initialize rejectReason from MarketRejected event

* Initialize latest `Asset` type

* Remap `disputeMechanism.authorized`

* Debug

* Reformat
  • Loading branch information
saboonikhil committed Dec 1, 2022
1 parent 662d2f0 commit 1438387
Show file tree
Hide file tree
Showing 7 changed files with 493 additions and 57 deletions.
2 changes: 1 addition & 1 deletion src/mappings/predictionMarkets/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -279,7 +279,7 @@ export async function marketCreated(ctx: EventHandlerContext<Store, {event: {arg
let disputeMechanism = new MarketDisputeMechanism()
const d = market.disputeMechanism
if (d.__kind == 'Authorized') {
disputeMechanism.authorized = encodeAddress(d.value, 73)
disputeMechanism.authorized = d.value ? encodeAddress(d.value, 73) : null
} else if (d.__kind == 'Court') {
disputeMechanism.court = true
} else if (d.__kind == 'SimpleDisputes') {
Expand Down
30 changes: 20 additions & 10 deletions src/mappings/predictionMarkets/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ export function getMarketCreatedEvent(ctx: EventHandlerContext<Store, {event: {a
market.period.start = market.period.value.start
market.period.end = market.period.value.end
return { marketId, marketAccountId, market }
} else if (event.isV38 || event.isV40) {
} else if (event.isV38 || event.isV40 || event.isV41) {
const marketAccountId = encodeAddress(param1, 73)
const market = param2 as any
market.period.start = market.period.value.start
Expand Down Expand Up @@ -167,14 +167,19 @@ export function getMarketInsufficientSubsidyEvent(ctx: EventContext): MarketInsu
}

export function getMarketRejectedEvent(ctx: EventContext): MarketRejectedEvent {
const marketRejectedEvent = new PredictionMarketsMarketRejectedEvent(ctx)
if (marketRejectedEvent.isV23) {
const marketId = Number(marketRejectedEvent.asV23)
return {marketId}
const event = new PredictionMarketsMarketRejectedEvent(ctx)
if (event.isV23) {
const marketId = Number(event.asV23)
const reason = new Uint8Array(0)
return {marketId, reason}
} else if (event.isV41) {
const [mId, reason] = event.asV41
const marketId = Number(mId)
return {marketId, reason}
} else {
const [mId] = ctx.event.args
const [mId, reason] = ctx.event.args
const marketId = Number(mId)
return {marketId}
return {marketId, reason}
}
}

Expand Down Expand Up @@ -263,10 +268,14 @@ export function getSoldCompleteSetEvent(ctx: EventContext): SoldCompleteSetEvent
}

export function getTokensRedeemedEvent(ctx: EventContext): TokensRedeemedEvent {
const tokensRedeemedEvent = new PredictionMarketsTokensRedeemedEvent(ctx)
const event = new PredictionMarketsTokensRedeemedEvent(ctx)
let mId, marketId, currencyId, amtRedeemed, payout, who, walletId
if (tokensRedeemedEvent.isV35) {
[mId, currencyId, amtRedeemed, payout, who] = tokensRedeemedEvent.asV35
if (event.isV35) {
[mId, currencyId, amtRedeemed, payout, who] = event.asV35
marketId = Number(mId)
walletId = ss58.codec('zeitgeist').encode(who)
} else if (event.isV41) {
[mId, currencyId, amtRedeemed, payout, who] = event.asV41
marketId = Number(mId)
walletId = ss58.codec('zeitgeist').encode(who)
} else {
Expand Down Expand Up @@ -320,6 +329,7 @@ interface MarketInsufficientSubsidyEvent {

interface MarketRejectedEvent {
marketId: number
reason: Uint8Array
}

interface MarketReportedEvent {
Expand Down
91 changes: 55 additions & 36 deletions src/mappings/swaps/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@ import * as ss58 from '@subsquid/ss58'
import { SwapsPoolActiveEvent, SwapsPoolClosedEvent, SwapsPoolCreateEvent, SwapsPoolExitEvent,
SwapsPoolJoinEvent, SwapsSwapExactAmountInEvent, SwapsSwapExactAmountOutEvent} from '../../types/events'
import { EventContext } from '../../types/support'
import { PoolAssetsEvent } from '../../types/v35'
import { SwapEvent } from '../../types/v37'
import { CommonPoolEventParams, Pool } from '../../types/v39'
import { PoolAssetsEvent } from '../../types/v41'
import { SwapEvent } from '../../types/v41'
import { CommonPoolEventParams, Pool } from '../../types/v41'


export function getPoolActiveEvent(ctx: EventContext): PoolActiveEvent {
Expand All @@ -31,30 +31,33 @@ export function getPoolClosedEvent(ctx: EventContext): PoolClosedEvent {
}

export function getPoolCreateEvent(ctx: EventContext): PoolCreateEvent {
const poolCreateEvent = new SwapsPoolCreateEvent(ctx)
if (poolCreateEvent.isV23) {
const [cpep, pool] = poolCreateEvent.asV23
const event = new SwapsPoolCreateEvent(ctx)
if (event.isV23) {
const [cpep, pool] = event.asV23
let swapPool = pool as Pool
const amount = BigInt(0)
return {cpep, swapPool, amount}
} else if (poolCreateEvent.isV32) {
const [cpep, pool] = poolCreateEvent.asV32
} else if (event.isV32) {
const [cpep, pool] = event.asV32
let swapPool = pool as Pool
const amount = BigInt(0)
return {cpep, swapPool, amount}
} else if (poolCreateEvent.isV35) {
const [cpep, pool, amount] = poolCreateEvent.asV35
} else if (event.isV35) {
const [cpep, pool, amount] = event.asV35
let swapPool = pool as Pool
return {cpep, swapPool, amount}
} else if (poolCreateEvent.isV36) {
const [cpep, pool, amount] = poolCreateEvent.asV36
} else if (event.isV36) {
const [cpep, pool, amount] = event.asV36
let swapPool = pool as Pool
return {cpep, swapPool, amount}
} else if (poolCreateEvent.isV37) {
const [cpep, swapPool, amount] = poolCreateEvent.asV37
} else if (event.isV37) {
const [cpep, swapPool, amount] = event.asV37
return {cpep, swapPool, amount}
} else if (poolCreateEvent.isV39) {
const [cpep, swapPool, amount] = poolCreateEvent.asV39
} else if (event.isV39) {
const [cpep, swapPool, amount] = event.asV39
return {cpep, swapPool, amount}
} else if (event.isV41) {
const [cpep, swapPool, amount] = event.asV41
return {cpep, swapPool, amount}
} else {
const [cpep, swapPool, amount] = ctx.event.args
Expand All @@ -63,19 +66,23 @@ export function getPoolCreateEvent(ctx: EventContext): PoolCreateEvent {
}

export function getPoolJoinEvent(ctx: EventContext): PoolJoinEvent {
const poolJoinEvent = new SwapsPoolJoinEvent(ctx)
if (poolJoinEvent.isV23) {
const event = new SwapsPoolJoinEvent(ctx)
if (event.isV23) {
let pae = ctx.event.args as PoolAssetsEvent
pae.poolAmount = BigInt(0)
const walletId = encodeAddress(pae.cpep.who, 73)
return {pae, walletId}
} else if (poolJoinEvent.isV32) {
} else if (event.isV32) {
let pae = ctx.event.args as PoolAssetsEvent
pae.poolAmount = BigInt(0)
const walletId = encodeAddress(pae.cpep.who, 73)
return {pae, walletId}
} else if (poolJoinEvent.isV35) {
const pae = poolJoinEvent.asV35
} else if (event.isV35) {
const pae = event.asV35
const walletId = ss58.codec('zeitgeist').encode(pae.cpep.who)
return {pae, walletId}
} else if (event.isV41) {
const pae = event.asV41
const walletId = ss58.codec('zeitgeist').encode(pae.cpep.who)
return {pae, walletId}
} else {
Expand All @@ -86,19 +93,23 @@ export function getPoolJoinEvent(ctx: EventContext): PoolJoinEvent {
}

export function getPoolExitEvent(ctx: EventContext): PoolExitEvent {
const poolExitEvent = new SwapsPoolExitEvent(ctx)
if (poolExitEvent.isV23) {
const event = new SwapsPoolExitEvent(ctx)
if (event.isV23) {
let pae = ctx.event.args as PoolAssetsEvent
pae.poolAmount = BigInt(0)
const walletId = encodeAddress(pae.cpep.who, 73)
return {pae, walletId}
} else if (poolExitEvent.isV32) {
} else if (event.isV32) {
let pae = ctx.event.args as PoolAssetsEvent
pae.poolAmount = BigInt(0)
const walletId = encodeAddress(pae.cpep.who, 73)
return {pae, walletId}
} else if (poolExitEvent.isV35) {
const pae = poolExitEvent.asV35
} else if (event.isV35) {
const pae = event.asV35
const walletId = ss58.codec('zeitgeist').encode(pae.cpep.who)
return {pae, walletId}
} else if (event.isV41) {
const pae = event.asV41
const walletId = ss58.codec('zeitgeist').encode(pae.cpep.who)
return {pae, walletId}
} else {
Expand All @@ -109,17 +120,21 @@ export function getPoolExitEvent(ctx: EventContext): PoolExitEvent {
}

export function getSwapExactAmountInEvent(ctx: EventContext): SwapExactAmountInEvent {
const swapExactAmountInEvent = new SwapsSwapExactAmountInEvent(ctx)
if (swapExactAmountInEvent.isV23) {
const event = new SwapsSwapExactAmountInEvent(ctx)
if (event.isV23) {
let swapEvent = ctx.event.args as SwapEvent
const walletId = encodeAddress(swapEvent.cpep.who, 73)
return {swapEvent, walletId}
} else if (swapExactAmountInEvent.isV32) {
} else if (event.isV32) {
let swapEvent = ctx.event.args as SwapEvent
const walletId = encodeAddress(swapEvent.cpep.who, 73)
return {swapEvent, walletId}
} else if (swapExactAmountInEvent.isV37) {
const swapEvent = swapExactAmountInEvent.asV37
} else if (event.isV37) {
const swapEvent = event.asV37
const walletId = ss58.codec('zeitgeist').encode(swapEvent.cpep.who)
return {swapEvent, walletId}
} else if (event.isV41) {
const swapEvent = event.asV41
const walletId = ss58.codec('zeitgeist').encode(swapEvent.cpep.who)
return {swapEvent, walletId}
} else {
Expand All @@ -130,17 +145,21 @@ export function getSwapExactAmountInEvent(ctx: EventContext): SwapExactAmountInE
}

export function getSwapExactAmountOutEvent(ctx: EventContext): SwapExactAmountOutEvent {
const swapExactAmountOutEvent = new SwapsSwapExactAmountOutEvent(ctx)
if (swapExactAmountOutEvent.isV23) {
const event = new SwapsSwapExactAmountOutEvent(ctx)
if (event.isV23) {
let swapEvent = ctx.event.args as SwapEvent
const walletId = encodeAddress(swapEvent.cpep.who, 73)
return {swapEvent, walletId}
} else if (swapExactAmountOutEvent.isV32) {
} else if (event.isV32) {
let swapEvent = ctx.event.args as SwapEvent
const walletId = encodeAddress(swapEvent.cpep.who, 73)
return {swapEvent, walletId}
} else if (swapExactAmountOutEvent.isV37) {
const swapEvent = swapExactAmountOutEvent.asV37
} else if (event.isV37) {
const swapEvent = event.asV37
const walletId = ss58.codec('zeitgeist').encode(swapEvent.cpep.who)
return {swapEvent, walletId}
} else if (event.isV41) {
const swapEvent = event.asV41
const walletId = ss58.codec('zeitgeist').encode(swapEvent.cpep.who)
return {swapEvent, walletId}
} else {
Expand Down
29 changes: 19 additions & 10 deletions src/mappings/tokens/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,10 @@ export function getTokensEndowedEvent(ctx: EventContext): EndowedEvent {
currencyId = event.asV34.currencyId
walletId = ss58.codec('zeitgeist').encode(event.asV34.who)
amount = event.asV34.amount
} else if (event.isV41) {
currencyId = event.asV41.currencyId
walletId = ss58.codec('zeitgeist').encode(event.asV41.who)
amount = event.asV41.amount
} else {
[currencyId, who, amount] = ctx.event.args
walletId = encodeAddress(who, 73)
Expand All @@ -27,21 +31,26 @@ export function getTokensEndowedEvent(ctx: EventContext): EndowedEvent {
}

export function getTokensTransferEvent(ctx: EventContext): TransferEvent {
const transferEvent = new TokensTransferEvent(ctx)
const event = new TokensTransferEvent(ctx)
let currencyId, from, fromId, to, toId, amount
if (transferEvent.isV23) {
[currencyId, from, to, amount] = transferEvent.asV23
if (event.isV23) {
[currencyId, from, to, amount] = event.asV23
fromId = ss58.codec('zeitgeist').encode(from)
toId = ss58.codec('zeitgeist').encode(to)
} else if (transferEvent.isV32) {
[currencyId, from, to, amount] = transferEvent.asV32
} else if (event.isV32) {
[currencyId, from, to, amount] = event.asV32
fromId = ss58.codec('zeitgeist').encode(from)
toId = ss58.codec('zeitgeist').encode(to)
} else if (transferEvent.isV34) {
currencyId = transferEvent.asV34.currencyId
fromId = ss58.codec('zeitgeist').encode(transferEvent.asV34.from)
toId = ss58.codec('zeitgeist').encode(transferEvent.asV34.to)
amount = transferEvent.asV34.amount
} else if (event.isV34) {
currencyId = event.asV34.currencyId
fromId = ss58.codec('zeitgeist').encode(event.asV34.from)
toId = ss58.codec('zeitgeist').encode(event.asV34.to)
amount = event.asV34.amount
} else if (event.isV41) {
currencyId = event.asV41.currencyId
fromId = ss58.codec('zeitgeist').encode(event.asV41.from)
toId = ss58.codec('zeitgeist').encode(event.asV41.to)
amount = event.asV41.amount
} else {
[currencyId, from, to, amount] = ctx.event.args
fromId = encodeAddress(from, 73)
Expand Down
Loading

0 comments on commit 1438387

Please sign in to comment.