github.com/hyperledger/burrow@v0.34.5-0.20220512172541-77f09336001d/js/src/solts/sol/Eventer.abi.ts (about) 1 //Code generated by solts. DO NOT EDIT. 2 import { Address, CancelStreamSignal, ContractCodec, Event, Keccak, listenerFor } from '../../index'; 3 interface Provider { 4 deploy( 5 data: string | Uint8Array, 6 contractMeta?: { 7 abi: string; 8 codeHash: Uint8Array; 9 }[], 10 ): Promise<Address>; 11 call(data: string | Uint8Array, address: string): Promise<Uint8Array | undefined>; 12 callSim(data: string | Uint8Array, address: string): Promise<Uint8Array | undefined>; 13 listen( 14 signatures: string[], 15 address: string, 16 callback: (err?: Error, event?: Event) => CancelStreamSignal | void, 17 start?: 'first' | 'latest' | 'stream' | number, 18 end?: 'first' | 'latest' | 'stream' | number, 19 ): unknown; 20 contractCodec(contractABI: string): ContractCodec; 21 } 22 export type Caller = typeof defaultCall; 23 export async function defaultCall<Output>( 24 client: Provider, 25 addr: string, 26 data: Uint8Array, 27 isSim: boolean, 28 callback: (returnData: Uint8Array | undefined) => Output, 29 ): Promise<Output> { 30 const returnData = await (isSim ? client.callSim(data, addr) : client.call(data, addr)); 31 return callback(returnData); 32 } 33 export namespace Eventer { 34 export const contractName = 'Eventer'; 35 export const abi = 36 '[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"eventId","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"intervalId","type":"bytes32"},{"indexed":false,"internalType":"address","name":"eventAddress","type":"address"},{"indexed":false,"internalType":"string","name":"namespace","type":"string"},{"indexed":false,"internalType":"string","name":"name","type":"string"},{"indexed":false,"internalType":"address","name":"controller","type":"address"},{"indexed":false,"internalType":"uint256","name":"threshold","type":"uint256"},{"indexed":false,"internalType":"string","name":"metadata","type":"string"}],"name":"Init","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"int256","name":"timestamp","type":"int256"},{"indexed":false,"internalType":"string","name":"place","type":"string"},{"indexed":false,"internalType":"string","name":"postalAddress","type":"string"}],"name":"MonoRampage","type":"event"},{"constant":false,"inputs":[],"name":"announce","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}]'; 37 export const bytecode = 38 '6080604052348015600f57600080fd5b506102b58061001f6000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c80638f970df014610030575b600080fd5b61003861003a565b005b607b7f6a35688e78094e86ac7dd4593423fa89415105dc68a0766b27106861ef4102146040518080602001806020018381038352600d8152602001807f53616e74612045756c61726961000000000000000000000000000000000000008152506020018381038252600a8152602001807f53616e74204a75616d65000000000000000000000000000000000000000000008152506020019250505060405180910390a27f696e74657276616c3200000000000000000000000000000000000000000000007f6576656e743100000000000000000000000000000000000000000000000000007f5f20df97ee573ab8b43581cf3ff905f3507ad2329b7efe6f92e802b4fad031c17359c99d4ebf520619ee7f806f11d90a9cac02ce06336004604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001806020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200180602001848103845260068152602001807f64696e696e670000000000000000000000000000000000000000000000000000815250602001848103835260098152602001807f627265616b666173740000000000000000000000000000000000000000000000815250602001848103825260178152602001807f6261636f6e2c6265616e732c656767732c746f6d61746f000000000000000000815250602001965050505050505060405180910390a356fea265627a7a72315820a6cd65593c9a8f5ed08f75519d9dd5664bcdf3a4bb67c8f507e1a69ed348f04f64736f6c63430005110032'; 39 export const deployedBytecode = 40 '608060405234801561001057600080fd5b506004361061002b5760003560e01c80638f970df014610030575b600080fd5b61003861003a565b005b607b7f6a35688e78094e86ac7dd4593423fa89415105dc68a0766b27106861ef4102146040518080602001806020018381038352600d8152602001807f53616e74612045756c61726961000000000000000000000000000000000000008152506020018381038252600a8152602001807f53616e74204a75616d65000000000000000000000000000000000000000000008152506020019250505060405180910390a27f696e74657276616c3200000000000000000000000000000000000000000000007f6576656e743100000000000000000000000000000000000000000000000000007f5f20df97ee573ab8b43581cf3ff905f3507ad2329b7efe6f92e802b4fad031c17359c99d4ebf520619ee7f806f11d90a9cac02ce06336004604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001806020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200180602001848103845260068152602001807f64696e696e670000000000000000000000000000000000000000000000000000815250602001848103835260098152602001807f627265616b666173740000000000000000000000000000000000000000000000815250602001848103825260178152602001807f6261636f6e2c6265616e732c656767732c746f6d61746f000000000000000000815250602001965050505050505060405180910390a356fea265627a7a72315820a6cd65593c9a8f5ed08f75519d9dd5664bcdf3a4bb67c8f507e1a69ed348f04f64736f6c63430005110032'; 41 export function deploy({ 42 client, 43 withContractMeta, 44 }: { 45 client: Provider; 46 withContractMeta?: boolean; 47 }): Promise<string> { 48 const codec = client.contractCodec(abi); 49 const data = Buffer.concat([Buffer.from(bytecode, 'hex'), codec.encodeDeploy()]); 50 return client.deploy( 51 data, 52 withContractMeta 53 ? [{ abi: Eventer.abi, codeHash: new Keccak(256).update(Eventer.deployedBytecode, 'hex').digest('binary') }] 54 : undefined, 55 ); 56 } 57 export async function deployContract(deps: { client: Provider; withContractMeta?: boolean }): Promise<Contract> { 58 const address = await deploy(deps); 59 return contract(deps.client, address); 60 } 61 type EventRegistry = typeof events; 62 export type EventName = keyof EventRegistry; 63 export type TaggedPayload<T extends EventName> = ReturnType<EventRegistry[T]['tagged']> & { 64 event: Event; 65 }; 66 export type SolidityEvent<T extends EventName> = TaggedPayload<T>['payload']; 67 export type TypedListener<T extends EventName> = ( 68 callback: (err?: Error, event?: TaggedPayload<T>) => void, 69 start?: 'first' | 'latest' | 'stream' | number, 70 end?: 'first' | 'latest' | 'stream' | number, 71 ) => unknown; 72 const events = { 73 Init: { 74 signature: '5F20DF97EE573AB8B43581CF3FF905F3507AD2329B7EFE6F92E802B4FAD031C1', 75 tagged: ( 76 eventId: Buffer, 77 intervalId: Buffer, 78 eventAddress: string, 79 namespace: string, 80 name: string, 81 controller: string, 82 threshold: number, 83 metadata: string, 84 ) => 85 ({ 86 name: 'Init', 87 payload: { 88 eventId: eventId, 89 intervalId: intervalId, 90 eventAddress: eventAddress, 91 namespace: namespace, 92 name: name, 93 controller: controller, 94 threshold: threshold, 95 metadata: metadata, 96 } as const, 97 } as const), 98 } as const, 99 MonoRampage: { 100 signature: '6A35688E78094E86AC7DD4593423FA89415105DC68A0766B27106861EF410214', 101 tagged: (timestamp: number, place: string, postalAddress: string) => 102 ({ 103 name: 'MonoRampage', 104 payload: { timestamp: timestamp, place: place, postalAddress: postalAddress } as const, 105 } as const), 106 } as const, 107 } as const; 108 export type Contract = ReturnType<typeof contract>; 109 export const contract = (client: Provider, address: string) => 110 ({ 111 name: 'Eventer', 112 address, 113 functions: { 114 announce(call = defaultCall): Promise<void> { 115 const data = encode(client).announce(); 116 return call<void>(client, address, data, false, (data: Uint8Array | undefined) => { 117 return decode(client, data).announce(); 118 }); 119 }, 120 } as const, 121 listeners: { 122 Init( 123 callback: ( 124 err?: Error, 125 event?: { 126 eventId: Buffer; 127 intervalId: Buffer; 128 eventAddress: string; 129 namespace: string; 130 name: string; 131 controller: string; 132 threshold: number; 133 metadata: string; 134 }, 135 ) => CancelStreamSignal | void, 136 start?: 'first' | 'latest' | 'stream' | number, 137 end?: 'first' | 'latest' | 'stream' | number, 138 ): unknown { 139 return client.listen( 140 ['5F20DF97EE573AB8B43581CF3FF905F3507AD2329B7EFE6F92E802B4FAD031C1'], 141 address, 142 (err?: Error, event?: Event) => { 143 if (err) { 144 return callback(err); 145 } 146 return callback(undefined, decode(client, event?.log.data, event?.log.topics).Init()); 147 }, 148 start, 149 end, 150 ); 151 }, 152 MonoRampage( 153 callback: ( 154 err?: Error, 155 event?: { 156 timestamp: number; 157 place: string; 158 postalAddress: string; 159 }, 160 ) => CancelStreamSignal | void, 161 start?: 'first' | 'latest' | 'stream' | number, 162 end?: 'first' | 'latest' | 'stream' | number, 163 ): unknown { 164 return client.listen( 165 ['6A35688E78094E86AC7DD4593423FA89415105DC68A0766B27106861EF410214'], 166 address, 167 (err?: Error, event?: Event) => { 168 if (err) { 169 return callback(err); 170 } 171 return callback(undefined, decode(client, event?.log.data, event?.log.topics).MonoRampage()); 172 }, 173 start, 174 end, 175 ); 176 }, 177 } as const, 178 listenerFor: <T extends EventName>(eventNames: T[]): TypedListener<T> => 179 (listenerFor(client, address, events, decode, eventNames) as unknown) as TypedListener<T>, 180 listener: listenerFor( 181 client, 182 address, 183 events, 184 decode, 185 Object.keys(events) as EventName[], 186 ) as TypedListener<EventName>, 187 } as const); 188 export const encode = (client: Provider) => { 189 const codec = client.contractCodec(abi); 190 return { 191 announce: () => { 192 return codec.encodeFunctionData('8F970DF0'); 193 }, 194 }; 195 }; 196 export const decode = (client: Provider, data: Uint8Array | undefined, topics: Uint8Array[] = []) => { 197 const codec = client.contractCodec(abi); 198 return { 199 Init: (): { 200 eventId: Buffer; 201 intervalId: Buffer; 202 eventAddress: string; 203 namespace: string; 204 name: string; 205 controller: string; 206 threshold: number; 207 metadata: string; 208 } => { 209 const [ 210 eventId, 211 intervalId, 212 eventAddress, 213 namespace, 214 name, 215 controller, 216 threshold, 217 metadata, 218 ] = codec.decodeEventLog('5F20DF97EE573AB8B43581CF3FF905F3507AD2329B7EFE6F92E802B4FAD031C1', data, topics); 219 return { 220 eventId: eventId, 221 intervalId: intervalId, 222 eventAddress: eventAddress, 223 namespace: namespace, 224 name: name, 225 controller: controller, 226 threshold: threshold, 227 metadata: metadata, 228 }; 229 }, 230 MonoRampage: (): { 231 timestamp: number; 232 place: string; 233 postalAddress: string; 234 } => { 235 const [timestamp, place, postalAddress] = codec.decodeEventLog( 236 '6A35688E78094E86AC7DD4593423FA89415105DC68A0766B27106861EF410214', 237 data, 238 topics, 239 ); 240 return { timestamp: timestamp, place: place, postalAddress: postalAddress }; 241 }, 242 announce: (): void => { 243 return; 244 }, 245 }; 246 }; 247 }