@@ -21,8 +21,10 @@ import {
2121} from '../generated/StakedLockingCrowdSale/StakedLockingCrowdSale'
2222
2323import { Started as PlainStartedEvent } from '../generated/CrowdSale/CrowdSale'
24+ import { Started as LockingStartedEvent } from '../generated/LockingCrowdSale/LockingCrowdSale'
2425
2526import { handleStarted as plainHandleStarted } from './crowdSaleMapping'
27+ import { lockingHandleStarted , handleLockingContractCreated as lockedHandleLockingContractCreated } from './lockingCrowdSaleMapping'
2628
2729import * as GenericCrowdSale from './genericCrowdSale'
2830
@@ -31,6 +33,9 @@ import { Contribution, CrowdSale, ERC20Token, IPT } from '../generated/schema'
3133import { TimelockedToken as TimelockedTokenTemplate } from '../generated/templates'
3234import { makeERC20Token , makeTimelockedToken } from './common'
3335
36+ /**
37+ * there are contracts that emit the started event without fees
38+ */
3439export function handleStartedLegacy ( event : LegacyStartedEvent ) : void {
3540 const parameters = event . parameters
3641 parameters [ 7 ] = new ethereum . EventParam (
@@ -60,16 +65,35 @@ export function handleStarted(event: StartedEvent): void {
6065 event . block ,
6166 event . transaction ,
6267 [
63- event . parameters [ 0 ] ,
64- event . parameters [ 1 ] ,
65- event . parameters [ 2 ] ,
66- event . parameters [ 7 ]
68+ event . parameters [ 0 ] , // uint256 saleId
69+ event . parameters [ 1 ] , // address issuer
70+ event . parameters [ 2 ] , // struct Sale
71+ event . parameters [ 7 ] // uint16 feeBp
6772 ] ,
6873 event . receipt
6974 )
7075
7176 plainHandleStarted ( _plain )
7277
78+ const _locking = new LockingStartedEvent (
79+ event . address ,
80+ event . logIndex ,
81+ event . transactionLogIndex ,
82+ event . logType ,
83+ event . block ,
84+ event . transaction ,
85+ [
86+ event . parameters [ 0 ] , // uint256 saleId
87+ event . parameters [ 1 ] , // address issuer
88+ event . parameters [ 2 ] , // struct Sale
89+ event . parameters [ 4 ] , // TimelockedToken
90+ event . parameters [ 5 ] , // uint256 lockingDuration
91+ event . parameters [ 7 ] // uint16 feeBp
92+ ] ,
93+ event . receipt
94+ )
95+ lockingHandleStarted ( _locking )
96+
7397 let crowdSale = CrowdSale . load ( event . params . saleId . toString ( ) )
7498 if ( ! crowdSale ) {
7599 log . error ( '[Crowdsale] Creation failed for: {}' , [
@@ -78,31 +102,6 @@ export function handleStarted(event: StartedEvent): void {
78102 return
79103 }
80104
81- let ipt = IPT . load ( event . params . sale . auctionToken . toHexString ( ) )
82- if ( ! ipt ) {
83- log . error ( '[Crowdsale] Ipt not found for id: {}' , [
84- event . params . sale . auctionToken . toHexString ( )
85- ] )
86- return
87- }
88-
89- if ( ! ipt . lockedToken ) {
90- ipt . lockedToken = event . params . lockingToken
91- ipt . save ( )
92- } else {
93- let _ipt = changetype < Bytes > ( ipt . lockedToken ) . toHexString ( )
94- let _newToken = event . params . lockingToken . toHexString ( )
95- if ( _ipt != _newToken ) {
96- log . error ( 'the locking token per IPT should be unique {} != {}' , [
97- _ipt ,
98- _newToken
99- ] )
100- }
101- }
102-
103- crowdSale . amountStaked = BigInt . fromU32 ( 0 )
104- crowdSale . auctionLockingDuration = event . params . lockingDuration
105-
106105 crowdSale . stakingToken = makeERC20Token (
107106 IERC20Metadata . bind ( event . params . staking . stakedToken )
108107 ) . id
@@ -127,29 +126,6 @@ export function handleFailed(event: FailedEvent): void {
127126 GenericCrowdSale . handleFailed ( event . params . saleId . toString ( ) )
128127}
129128
130- export function handleLockingContractCreated (
131- event : LockingContractCreatedEvent
132- ) : void {
133- let context = new DataSourceContext ( )
134- context . setBytes ( 'ipt' , event . params . underlyingToken )
135- context . setBytes ( 'lockingContract' , event . params . lockingContract )
136- TimelockedTokenTemplate . createWithContext (
137- event . params . lockingContract ,
138- context
139- )
140- const _underlyingTokenContract : IERC20Metadata = IERC20Metadata . bind (
141- event . params . underlyingToken
142- )
143- const underlyingErc20Token : ERC20Token = makeERC20Token (
144- _underlyingTokenContract
145- )
146-
147- makeTimelockedToken (
148- IERC20Metadata . bind ( event . params . lockingContract ) ,
149- underlyingErc20Token
150- )
151- }
152-
153129export function handleBid ( event : BidEvent ) : void {
154130 GenericCrowdSale . handleBid (
155131 new GenericCrowdSale . BidEventParams (
@@ -161,6 +137,25 @@ export function handleBid(event: BidEvent): void {
161137 )
162138}
163139
140+ export function handleClaimed ( event : ClaimedEvent ) : void {
141+ GenericCrowdSale . handleClaimed (
142+ new GenericCrowdSale . ClaimedEventParams (
143+ event . params . saleId ,
144+ event . params . claimer ,
145+ event . params . claimed ,
146+ event . params . refunded ,
147+ event . block . timestamp ,
148+ event . transaction
149+ )
150+ )
151+ }
152+
153+ export function handleLockingContractCreated (
154+ event : LockingContractCreatedEvent
155+ ) : void {
156+ lockedHandleLockingContractCreated ( event )
157+ }
158+
164159export function handleStaked ( event : StakedEvent ) : void {
165160 let crowdSale = CrowdSale . load ( event . params . saleId . toString ( ) )
166161
@@ -204,19 +199,6 @@ export function handleStaked(event: StakedEvent): void {
204199 contribution . save ( )
205200}
206201
207- export function handleClaimed ( event : ClaimedEvent ) : void {
208- GenericCrowdSale . handleClaimed (
209- new GenericCrowdSale . ClaimedEventParams (
210- event . params . saleId ,
211- event . params . claimer ,
212- event . params . claimed ,
213- event . params . refunded ,
214- event . block . timestamp ,
215- event . transaction
216- )
217- )
218- }
219-
220202export function handleClaimedStakes ( event : ClaimedStakesEvent ) : void {
221203 let contributionId =
222204 event . params . saleId . toString ( ) + '-' + event . params . claimer . toHex ( )
0 commit comments