New Research: Supply Chain Attack on Axios Pulls Malicious Dependency from npm.Details
Socket
Book a DemoSign in
Socket

@aut-labs/abi-types

Package Overview
Dependencies
Maintainers
4
Versions
52
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@aut-labs/abi-types

ABI Contract functions

latest
Source
npmnpm
Version
0.0.89-dev
Version published
Weekly downloads
131
118.33%
Maintainers
4
Weekly downloads
 
Created
Source

Getting Started with Aut ABI types & Contract proxy

A library which generates typescript types based on abis.

By providing an ExampleContract.abi.ts inside abis folder & running npm build it will:

  • Create a folder in the ProviderFactory
  • Generate aut-contract-functions.ts which includes all functions & emit events definitions in [ExampleContractFunctions & ExampleContractEventType]
  • Generate index.ts which exports the provider as follows:
const Web3ExampleContractProvider = async (
  addressOrName: string,
  extras?: Partial<Web3ProviderExtras<ExampleContractEventType>>
) => {
  return Web3ContractProvider<ExampleContractEventType, ExampleContractFunctions>(
    addressOrName,
    ExampleABI,
    extras as Web3ProviderExtras<ExampleContractEventType>
  );
};

export { Web3ExampleContractProvider, ExampleContractEventType, ExampleContractFunctions };

... additionally there is a Contract Proxy which based on the type provided as seen in the Web3ExampleContractProvider it will provide code completion defined in the ExampleContractFunctions

It also waits for event transactions for example:

const contract = await Web3ExampleContractProvider(address, {
    event: ExampleContractEventType.SomeEvent
});

if the event provide matches the events returned in the transaction the it will await tx.wait() as well

This way we reduce a lot boilerplate code.

How to use

Generate types

npm run build

Install dependency

npm install @aut-labs-private/abi-types

Example executing transaction with event

import { ExampleContractEventType, Web3ExampleContractProvider } from "@aut-labs-private/abi-types";

const address = 0x00000...;
(async () => {
  const contract = await Web3ExampleContractProvider(address, {
    event: ExampleContractEventType.SomeEvent,
  });
  try {
    await contract.someFunction();
  } catch (error) {
    console.log(error);
  }
})();

Example executing transaction without event

import { Web3AutIDProvider } from "@aut-labs-private/abi-types";

const address = 0x00000...;
(async () => {
  const contract = await Web3ExampleContractProvider(address);
  try {
    await contract.someFunction();
  } catch (error) {
    console.log(error);
  }
})();

Extras

Provider Config Parameters

export interface Web3ProviderExtras<EventTypes> {
  event: EventTypes;
  signer: () => Promise<ethers.providers.JsonRpcSigner>;
  provider: () => Promise<ethers.providers.Web3Provider>;
  beforeRequest: Function;
  afterRequest: Function;
  transactionState: (
    state: "started" | "rejected" | "waiting" | "done",
    ...args: any
  ) => void;
}

NOTE - By default it creates a provider from ethers.js which will deprectated and removed in the future

const provider = new ethers.providers.Web3Provider(window.ethereum);

Its recommended that you provide your own signer as follows:

import { ExampleContractEventType, Web3ExampleContractProvider } from "@aut-labs-private/abi-types";
import { ethers } from "ethers";

const address = 0x00000...;
(async () => {
  const provider = new ethers.providers.Web3Provider(window.ethereum);
  const signer = provider.getSigner();
  const contract = await Web3ExampleContractProvider(address, {
    event: ExampleContractEventType.SomeEvent,
    signer: async () => signer
  });
  try {
    await contract.someFunction();
  } catch (error) {
    console.log(error);
  }
})();

Available Web3 Providers

  • Web3AutIDProvider
  • Web3CommunityCallProvider
  • Web3DAOExpanderFactoryProvider
  • Web3DAOExpanderProvider
  • Web3DAOExpanderRegistryProvider
  • Web3InteractionsProvider
  • Web3ManifestoProvider
  • Web3PollsProvider
  • Web3TasksProvider

FAQs

Package last updated on 09 Dec 2024

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts