Skip to content

Commit 31ca9f4

Browse files
committed
feat: add handler for IssueAmountChange event
Signed-off-by: Gregory Hill <gregorydhill@outlook.com>
1 parent 40624d5 commit 31ca9f4

5 files changed

Lines changed: 46 additions & 2 deletions

File tree

kintsugi.typegen.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
"issue.CancelIssue",
1010
"issue.ExecuteIssue",
1111
"issue.IssuePeriodChange",
12+
"issue.IssueAmountChange",
1213
"issue.RequestIssue",
1314
"oracle.FeedValues",
1415
"redeem.CancelRedeem",
@@ -28,4 +29,4 @@
2829
"Issue.IssuePeriod",
2930
"Redeem.RedeemPeriod"
3031
]
31-
}
32+
}

schema.graphql

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@ type Issue @entity {
7373
backingPayment: IssuePayment @derivedFrom(field: "issue")
7474
status: IssueStatus @index # TODO: find a way to optimise queries by status
7575
execution: IssueExecution @derivedFrom(field: "issue")
76+
amountChange: IssueAmountChange @derivedFrom(field: "issue")
7677
cancellation: IssueCancellation @derivedFrom(field: "issue")
7778
refund: Refund @derivedFrom(field: "issue")
7879
}
@@ -102,6 +103,14 @@ type IssueExecution @entity {
102103
timestamp: DateTime!
103104
}
104105

106+
type IssueAmountChange @entity {
107+
issue: Issue! @unique
108+
amountWrapped: BigInt!
109+
bridgeFeeWrapped: BigInt!
110+
confiscatedGriefingCollateral: BigInt!
111+
height: Height!
112+
}
113+
105114
type IssueCancellation @entity {
106115
issue: Issue! @unique
107116
height: Height!

src/mappings/event/issue.ts

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import {
55
Issue,
66
IssueCancellation,
77
IssueExecution,
8+
IssueAmountChange,
89
IssuePeriod,
910
IssueRequest,
1011
IssueStatus,
@@ -16,6 +17,7 @@ import {
1617
IssueCancelIssueEvent,
1718
IssueExecuteIssueEvent,
1819
IssueIssuePeriodChangeEvent,
20+
IssueIssueAmountChangeEvent,
1921
IssueRequestIssueEvent,
2022
RefundExecuteRefundEvent,
2123
RefundRequestRefundEvent,
@@ -304,3 +306,32 @@ export async function issuePeriodChange(
304306

305307
await ctx.store.save(issuePeriod);
306308
}
309+
310+
export async function issueAmountChange(ctx: EventHandlerContext): Promise<void> {
311+
const rawEvent = new IssueIssueAmountChangeEvent(ctx);
312+
const e = rawEvent.asLatest;
313+
314+
const id = toHex(e.issueId);
315+
316+
const issue = await ctx.store.get(Issue, { where: { id } });
317+
if (issue === undefined) {
318+
debug(
319+
"WARNING: IssueAmountChange event did not match any existing issue requests! Skipping."
320+
);
321+
return;
322+
}
323+
const height = await blockToHeight(
324+
ctx.store,
325+
ctx.block.height,
326+
"IssueAmountChange"
327+
);
328+
const amountChanged = new IssueAmountChange({
329+
id: issue.id,
330+
issue,
331+
amountWrapped: e.amount,
332+
bridgeFeeWrapped: e.fee,
333+
height,
334+
});
335+
await ctx.store.save(amountChanged);
336+
await ctx.store.save(issue);
337+
}

src/processor.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import {
1111
findAndUpdateExpiredRequests,
1212
increaseLockedCollateral,
1313
issuePeriodChange,
14+
issueAmountChange,
1415
redeemPeriodChange,
1516
registerVault,
1617
requestIssue,
@@ -48,6 +49,7 @@ processor.addEventHandler("issue.CancelIssue", cancelIssue);
4849
processor.addEventHandler("issue.ExecuteIssue", executeIssue);
4950
processor.addEventHandler("issue.RequestIssue", requestIssue);
5051
processor.addEventHandler("issue.IssuePeriodChange", issuePeriodChange);
52+
processor.addEventHandler("issue.IssueAmountChange", issueAmountChange);
5153
processor.addEventHandler("oracle.FeedValues", feedValues);
5254
processor.addEventHandler("redeem.CancelRedeem", cancelRedeem);
5355
processor.addEventHandler("redeem.ExecuteRedeem", executeRedeem);

testnet.typegen.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
"issue.CancelIssue",
1010
"issue.ExecuteIssue",
1111
"issue.IssuePeriodChange",
12+
"issue.IssueAmountChange",
1213
"issue.RequestIssue",
1314
"oracle.FeedValues",
1415
"redeem.CancelRedeem",
@@ -28,4 +29,4 @@
2829
"Issue.IssuePeriod",
2930
"Redeem.RedeemPeriod"
3031
]
31-
}
32+
}

0 commit comments

Comments
 (0)