#encodeNew

Creates a transaction from a constructor call.

#Type

;<T extends new (...args: any) => any>(params: { constructor: T args?: ConstructorParameters<T> mod?: string }) => Promise<{ tx: NakamotoJS.Transaction effect: { res: Json; env: Json } }>

#Parameters

#params

KeyDescription
constructorA JavaScript class that extends from Contract.
argsArguments to the constructor of the class.
modA string of the form <id>:<num> specifying the location of a module.

#Return Value

See encode.

#Description

See encode.

#Example

import { Computer } from '@bitcoin-computer/lib' import { chain, expect, network, url } from '../../utils' // A smart contract class C extends Contract {} // Create wallet const computer = new Computer({ chain, network, url }) describe('encodeNew', async () => { // Fund wallet before('Fund wallet', async () => { await computer.faucet(1e8) }) it('Should encode a constructor call', async () => { // Encode a constructor call const { tx, effect } = await computer.encodeNew({ constructor: C, args: [], }) // Decode transaction expect(await computer.decode(tx)).to.deep.eq({ exp: `${C} new C()`, env: {}, mod: '', }) // Broadcast the tx to create the on-chain object const txId = await computer.broadcast(tx) // Synchronizing to the transaction id always returns the effect expect(await computer.sync(txId)).deep.eq(effect) }) })

Sources