blocklock-js
Version:
A library for encrypting and decrypting data for the future
56 lines (41 loc) • 1.42 kB
text/typescript
import { AbiCoder, BigNumberish } from "ethers";
export class SolidityDecoder {
private abiCoder: AbiCoder;
constructor() {
this.abiCoder = AbiCoder.defaultAbiCoder();
}
// ------------------- DECODERS -------------------
decodeUint256(data: string): BigNumberish {
return this.abiCoder.decode(["uint256"], data)[0];
}
decodeInt256(data: string): BigNumberish {
return this.abiCoder.decode(["int256"], data)[0];
}
decodeAddress(data: string): string {
return this.abiCoder.decode(["address"], data)[0];
}
decodeString(data: string): string {
return this.abiCoder.decode(["string"], data)[0];
}
decodeBool(data: string): boolean {
return this.abiCoder.decode(["bool"], data)[0];
}
decodeBytes32(data: string): string {
return this.abiCoder.decode(["bytes32"], data)[0];
}
decodeBytes(data: string): string {
return this.abiCoder.decode(["bytes"], data)[0];
}
decodeUint256Array(data: string): BigNumberish[] {
return this.abiCoder.decode(["uint256[]"], data)[0];
}
decodeAddressArray(data: string): string[] {
return this.abiCoder.decode(["address[]"], data)[0];
}
decodeTuple(types: string[], data: string): any[] {
return this.abiCoder.decode([`tuple(${types.join(",")})`], data)[0];
}
decodeStruct(structDefinition: string[], data: string): any[] {
return this.decodeTuple(structDefinition, data);
}
}