0.0.86-dev • Published 8 months ago

@aut-labs/abi-types v0.0.86-dev

Weekly downloads
-
License
ISC
Repository
github
Last release
8 months ago

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:

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
0.0.85-dev

8 months ago

0.0.86-dev

8 months ago

0.0.84-dev

9 months ago

0.0.82-dev

9 months ago

0.0.83-dev

9 months ago

0.0.81-dev

10 months ago

0.0.79-dev

10 months ago

0.0.80-dev

10 months ago

0.0.78-dev

10 months ago

0.0.77-dev

12 months ago

0.0.76-dev

1 year ago

0.0.75-dev

1 year ago

0.0.71-dev

1 year ago

0.0.74-dev

1 year ago

0.0.73-dev

1 year ago

0.0.72-dev

1 year ago

0.0.70-dev

1 year ago

0.0.68-dev

1 year ago

0.0.69-dev

1 year ago

0.0.67-dev

1 year ago

0.0.66-dev

1 year ago

0.0.65-dev

1 year ago

0.0.64-dev

1 year ago

0.0.63-dev

1 year ago

0.0.62-dev

2 years ago

0.0.59-dev

2 years ago

0.0.60-dev

2 years ago

0.0.61-dev

2 years ago

0.0.58-dev

2 years ago

0.0.57-dev

2 years ago

0.0.55-dev

2 years ago

0.0.54-dev

2 years ago

0.0.53-dev

2 years ago

0.0.52-dev

2 years ago

0.0.51-dev

2 years ago

0.0.50-dev

2 years ago

0.0.49

2 years ago

0.0.48

2 years ago

0.0.47

2 years ago

0.0.46

2 years ago

0.0.46-dev

2 years ago

0.0.45-dev

2 years ago

0.0.44-dev

2 years ago

0.0.43-dev

2 years ago

0.0.42-dev

2 years ago

0.0.41-dev

2 years ago

0.0.40

2 years ago

0.0.39

2 years ago

0.0.38

2 years ago