vasku
Version:
TVM-Solidity contract development framework
39 lines (33 loc) • 1.25 kB
text/typescript
import { type Giver, type SendParameters } from '../index'
import { SafeMultisigWallet } from '../../contract/samples/SafeMultisigWallet'
import { type Contract, type ContractOptions, type ResultOfCall } from '../../contract'
import { type KeyPair, type ResultOfProcessMessage } from '@eversdk/core'
import { createTransferPayload } from '../../contract/payload'
import { x0 } from '../../utils/hex'
export class SafeMultisigWalletGiver implements Giver {
private readonly _keys: KeyPair
private readonly _contract: SafeMultisigWallet
constructor (keys: KeyPair, options: ContractOptions = {}) {
this._keys = keys
this._contract = new SafeMultisigWallet({ keys }, options)
}
get contract (): Contract {
return this._contract
}
async send (options: SendParameters): Promise<ResultOfCall> {
const payload = await createTransferPayload()
return await this._contract.call.sendTransaction({
dest: options.to,
value: options.value,
bounce: false,
flags: 3,
payload
})
}
async deploy (value: string | number | bigint): Promise<ResultOfProcessMessage> {
return await this._contract.deploy(value, {
owners: [x0(this._keys.public)],
reqConfirms: 1
}, false)
}
}