Generate Types & APIs
Before interacting with a contract, you need to generate Types & APIs from the contract metadata to interact with. You can do that using dedot
cli:
dedot typink -m ./path/to/metadata.json # or metadata.contract
# use option -o to customize folder to put generated types
dedot typink -m ./path/to/metadata.json -o ./where/to-put/generated-types
After running the command, Types & APIs of the contract will be generated. E.g: if the contract's name is flipper
, the Types & APIs will be put in a folder named flipper
, the entry-point interface for the contract will be FlipperContractApi
in flipper/index.d.ts
file. An example of Types & APIs for flipper contract can be found here.
ContractApi
interface
ContractApi
interfaceThe generated ContractApi
interface has the following structure, illustrated with an example of FlipperContractApi
:
/**
* @name: FlipperContractApi
* @contractName: flipper
* @contractVersion: 0.1.0
* @authors: Parity Technologies <[email protected]>
* @language: ink! 6.0.0-alpha
**/
export interface FlipperContractApi<
Rv extends RpcVersion = RpcVersion,
ChainApi extends VersionedGenericSubstrateApi = SubstrateApi,
> extends GenericContractApi<Rv, ChainApi> {
query: ContractQuery<ChainApi[Rv]>;
tx: ContractTx<ChainApi[Rv]>;
constructorQuery: ConstructorQuery<ChainApi[Rv]>;
constructorTx: ConstructorTx<ChainApi[Rv]>;
events: ContractEvents<ChainApi[Rv]>;
storage: {
root(): Promise<Flipper>;
lazy(): WithLazyStorage<Flipper>;
};
types: {
RootStorage: Flipper;
LazyStorage: WithLazyStorage<Flipper>;
LangError: InkPrimitivesLangError;
ChainApi: ChainApi[Rv];
};
}
Last updated
Was this helpful?