/*
This file is part of web3.js.
web3.js is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
web3.js is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with web3.js. If not, see .
*/
import { Bytes, Transaction } from '@theqrl/web3-types';
import QRL from '@theqrl/web3-qrl';
import {
decodeLog,
decodeParameter,
decodeParameters,
encodeFunctionCall,
encodeFunctionSignature,
encodeParameter,
encodeParameters,
} from '@theqrl/web3-qrl-abi';
import {
encrypt,
hashMessage,
recoverTransaction,
sign,
signTransaction,
Wallet,
Web3Account,
} from '@theqrl/web3-qrl-accounts';
import { Contract } from '@theqrl/web3-qrl-contract';
import { QRNS } from '@theqrl/web3-qrl-qrns';
import { Net } from '@theqrl/web3-net';
import { Iban } from '@theqrl/web3-qrl-iban';
/**
* The QRL interface for main web3 object. It provides extra methods in addition to `web3-qrl` interface.
*
* {@link web3_qrl.Web3QRL} for details about the `QRL` interface.
*/
export interface Web3QRLInterface extends QRL {
/**
* Extended [Contract](/api/@theqrl/web3-qrl-contract/classes/Contract) constructor for main `web3` object. See [Contract](/api/@theqrl/web3-qrl-contract/classes/Contract) for further details.
*
* You can use `.setProvider` on this constructor to set provider for **all the instances** of the contracts which were created by `web3.qrl.Contract`.
*
* ```ts
* web3.qrl.Contract.setProvider(myProvider)
* ```
*/
Contract: typeof Contract;
Iban: typeof Iban;
net: Net;
qrns: QRNS;
abi: {
encodeEventSignature: typeof encodeFunctionSignature;
encodeFunctionCall: typeof encodeFunctionCall;
encodeFunctionSignature: typeof encodeFunctionSignature;
encodeParameter: typeof encodeParameter;
encodeParameters: typeof encodeParameters;
decodeParameter: typeof decodeParameter;
decodeParameters: typeof decodeParameters;
decodeLog: typeof decodeLog;
};
accounts: {
create: () => Web3Account;
seedToAccount: (seed: Uint8Array | string) => Web3Account;
signTransaction: (
transaction: Transaction,
seed: Bytes,
) => ReturnType;
recoverTransaction: typeof recoverTransaction;
hashMessage: typeof hashMessage;
sign: typeof sign;
encrypt: typeof encrypt;
decrypt: (
keystore: string,
password: string,
options?: Record,
) => Promise;
wallet: Wallet;
};
}