import { authority, System, Protobuf, StringBytes } from "@koinos/sdk-as"; import { common } from "./proto/common"; export class ManaSharer { _contractId: Uint8Array; /** * Create an instance of a ManaSharer contract * @example * ```ts * const contract = new ManaSharer(Base58.decode("1DQzuCcTKacbs9GGScFTU1Hc8BsyARTPqe")); * ``` */ constructor(contractId: Uint8Array) { this._contractId = contractId; } /** * Authorize function * @external */ authorize(args: authority.authorize_arguments): common.boole { const argsBuffer = Protobuf.encode(args, authority.authorize_arguments.encode); const callRes = System.call(this._contractId, 0x4a2dbd90, argsBuffer); if (callRes.code != 0) { const errorMessage = `failed to call 'ManaSharer.authorize': ${callRes.res.error && callRes.res.error!.message ? callRes.res.error!.message : "unknown error"}`; System.exit(callRes.code, StringBytes.stringToBytes(errorMessage)); } if (!callRes.res.object) return new common.boole(); return Protobuf.decode(callRes.res.object, common.boole.decode); } /** * Add a manager of the mana * @external * @event manager_added common.address */ add_manager(args: common.address): void { const argsBuffer = Protobuf.encode(args, common.address.encode); const callRes = System.call(this._contractId, 0x3c3203f2, argsBuffer); if (callRes.code != 0) { const errorMessage = `failed to call 'ManaSharer.add_manager': ${callRes.res.error && callRes.res.error!.message ? callRes.res.error!.message : "unknown error"}`; System.exit(callRes.code, StringBytes.stringToBytes(errorMessage)); } return; } /** * Remove a manager of the mana * @external * @event manager_removed common.address */ remove_manager(args: common.address): void { const argsBuffer = Protobuf.encode(args, common.address.encode); const callRes = System.call(this._contractId, 0x0e7ea20c, argsBuffer); if (callRes.code != 0) { const errorMessage = `failed to call 'ManaSharer.remove_manager': ${callRes.res.error && callRes.res.error!.message ? callRes.res.error!.message : "unknown error"}`; System.exit(callRes.code, StringBytes.stringToBytes(errorMessage)); } return; } /** * Get managers * @external * @readonly */ get_managers(args: common.list_args): common.addresses { const argsBuffer = Protobuf.encode(args, common.list_args.encode); const callRes = System.call(this._contractId, 0x9de33c3b, argsBuffer); if (callRes.code != 0) { const errorMessage = `failed to call 'ManaSharer.get_managers': ${callRes.res.error && callRes.res.error!.message ? callRes.res.error!.message : "unknown error"}`; System.exit(callRes.code, StringBytes.stringToBytes(errorMessage)); } if (!callRes.res.object) return new common.addresses(); return Protobuf.decode(callRes.res.object, common.addresses.decode); } }