diff --git a/packages/api-contract/src/base/Blueprint.ts b/packages/api-contract/src/base/Blueprint.ts index 8962bcd1dbe..5ddb85b6b4a 100644 --- a/packages/api-contract/src/base/Blueprint.ts +++ b/packages/api-contract/src/base/Blueprint.ts @@ -71,22 +71,9 @@ export class Blueprint extends Base { this.abi.findConstructor(constructorOrId).toU8a(params), encodeSalt(salt) ).withResultTransform((result: ISubmittableResult) => - new BlueprintSubmittableResult(result, - this._isRevive - ? ( - (result.status.isInBlock || result.status.isFinalized) - ? new Contract( - this.api, - this.abi, - // your fixed address for revive deployments - this.registry.createType('AccountId', '0x'), - this._decorateMethod - ) - : undefined - ) - : applyOnEvent(result, ['Instantiated'], ([record]: EventRecord[]) => - new Contract(this.api, this.abi, record.event.data[1] as AccountId, this._decorateMethod), this._isRevive - ) + new BlueprintSubmittableResult(result, applyOnEvent(result, ['Instantiated'], ([record]: EventRecord[]) => + new Contract(this.api, this.abi, record.event.data[1] as AccountId, this._decorateMethod), this._isRevive + ) ) ); }; diff --git a/packages/api-contract/src/base/Code.ts b/packages/api-contract/src/base/Code.ts index 2e3ea85f318..93c5d28b61a 100644 --- a/packages/api-contract/src/base/Code.ts +++ b/packages/api-contract/src/base/Code.ts @@ -85,8 +85,23 @@ export class Code extends Base { ).withResultTransform((result: ISubmittableResult) => new CodeSubmittableResult( result, - new Blueprint(this.api, this.abi, this.abi.info.source.hash, this._decorateMethod), - new Contract(this.api, this.abi, '0x', this._decorateMethod) + ...(applyOnEvent(result, ['Instantiated'], (records: EventRecord[]) => + records.reduce<[Blueprint | undefined, Contract | undefined]>( + ([blueprint, contract], { event }) => + this.api.events.revive['Instantiated'].is(event) + ? [ + blueprint, + new Contract( + this.api, + this.abi, + (event as unknown as { data: [Codec, AccountId] }).data[1], + this._decorateMethod + ) + ] + : [blueprint, contract], + [undefined, undefined] + ), this._isRevive + ) || [undefined, undefined]) ) ); }