iso-signatures
Version:
Signatures tooling.
549 lines • 21.7 kB
TypeScript
/**
* @typedef {import('../types.js').ISigner<string>} ISigner
* @typedef {import('ox').Provider.Provider} Provider
*/
/**
* EIP191 signer
*
* @implements {ISigner}
*/
export class EIP191Signer extends DID implements ISigner {
/**
* Generate a new signer
*
* @param {object} options
* @param {Provider} options.provider - https://oxlib.sh/guides/eip-1193#eip-1193-providers
* @param {`0x${string}`} [options.address] - default: first account from provider
* @param {number | `0x${string}`} [options.chainId] - default: 1
* @param {string} [options.namespace] - default: eip155
*
* @example
* ```ts twoslash
* import { Provider } from 'ox'
* const provider = Provider.from(window.ethereum)
* const signer = await EIP191Signer.generate({
* provider,
* })
* ```
*/
static from(options: {
provider: Provider;
address?: `0x${string}` | undefined;
chainId?: number | `0x${string}` | undefined;
namespace?: string | undefined;
}): Promise<EIP191Signer>;
/**
* Create a DIDPkh from an address
*
* @param {Provider} provider - https://oxlib.sh/guides/eip-1193#eip-1193-providers
* @param {`0x${string}`} address
* @param {number | `0x${string}`} [chainId]
* @param {string} [namespace]
*/
constructor(provider: Provider, address: `0x${string}`, chainId?: number | `0x${string}`, namespace?: string);
/** @type {import('../types.js').SignatureType} */
signatureType: import("../types.js").SignatureType;
provider: {
request: Provider.RequestFn<{
Request: {
method: "eth_accounts";
params?: undefined;
};
ReturnType: readonly import("ox/Address").Address[];
} | {
Request: {
method: "eth_blobBaseFee";
params?: undefined;
};
ReturnType: import("ox/Hex").Hex;
} | {
Request: {
method: "eth_blockNumber";
params?: undefined;
};
ReturnType: import("ox/Hex").Hex;
} | {
Request: {
method: "eth_call";
params: [transaction: import("ox/TransactionRequest").Rpc] | [transaction: import("ox/TransactionRequest").Rpc, block: import("ox/Block").Number<import("ox/Hex").Hex> | import("ox/Block").Tag | import("ox/Block").Hash | import("ox/Block").Identifier] | [transaction: import("ox/TransactionRequest").Rpc, block: import("ox/Block").Number<import("ox/Hex").Hex> | import("ox/Block").Tag | import("ox/Block").Hash | import("ox/Block").Identifier, stateOverrides: import("ox/StateOverrides").Rpc];
};
ReturnType: import("ox/Hex").Hex;
} | {
Request: {
method: "eth_chainId";
params?: undefined;
};
ReturnType: import("ox/Hex").Hex;
} | {
Request: {
method: "eth_coinbase";
params?: undefined;
};
ReturnType: import("ox/Address").Address;
} | {
Request: {
method: "eth_estimateGas";
params: [transaction: import("ox/TransactionRequest").Rpc] | [transaction: import("ox/TransactionRequest").Rpc, block: import("ox/Block").Number<import("ox/Hex").Hex> | import("ox/Block").Tag | import("ox/Block").Hash | import("ox/Block").Identifier] | [transaction: import("ox/TransactionRequest").Rpc, block: import("ox/Block").Number<import("ox/Hex").Hex> | import("ox/Block").Tag | import("ox/Block").Hash | import("ox/Block").Identifier, stateOverrides: import("ox/StateOverrides").Rpc];
};
ReturnType: import("ox/Hex").Hex;
} | {
Request: {
method: "eth_feeHistory";
params: [blockCount: import("ox/Hex").Hex, newestBlock: import("ox/Block").Number<import("ox/Hex").Hex> | import("ox/Block").Tag, rewardPercentiles: number[] | undefined];
};
ReturnType: import("ox/Fee").FeeHistoryRpc;
} | {
Request: {
method: "eth_gasPrice";
params?: undefined;
};
ReturnType: import("ox/Hex").Hex;
} | {
Request: {
method: "eth_getBalance";
params: [address: import("ox/Address").Address, block: import("ox/Block").Number<import("ox/Hex").Hex> | import("ox/Block").Tag | import("ox/Block").Hash | import("ox/Block").Identifier];
};
ReturnType: import("ox/Hex").Hex;
} | {
Request: {
method: "eth_getBlockByHash";
params: [hash: import("ox/Hex").Hex, includeTransactionObjects: boolean];
};
ReturnType: import("ox/Block").Rpc | null;
} | {
Request: {
method: "eth_getBlockByNumber";
params: [block: import("ox/Block").Number<import("ox/Hex").Hex> | import("ox/Block").Tag, includeTransactionObjects: boolean];
};
ReturnType: import("ox/Block").Rpc | null;
} | {
Request: {
method: "eth_getBlockTransactionCountByHash";
params: [hash: import("ox/Hex").Hex];
};
ReturnType: import("ox/Hex").Hex;
} | {
Request: {
method: "eth_getBlockTransactionCountByNumber";
params: [block: import("ox/Block").Number<import("ox/Hex").Hex> | import("ox/Block").Tag];
};
ReturnType: import("ox/Hex").Hex;
} | {
Request: {
method: "eth_getCode";
params: [address: import("ox/Address").Address, block: import("ox/Block").Number<import("ox/Hex").Hex> | import("ox/Block").Tag | import("ox/Block").Hash | import("ox/Block").Identifier];
};
ReturnType: import("ox/Hex").Hex;
} | {
Request: {
method: "eth_getFilterChanges";
params: [filterId: import("ox/Hex").Hex];
};
ReturnType: readonly import("ox/Log").Rpc[] | readonly import("ox/Hex").Hex[];
} | {
Request: {
method: "eth_getFilterLogs";
params: [filterId: import("ox/Hex").Hex];
};
ReturnType: readonly import("ox/Log").Rpc[];
} | {
Request: {
method: "eth_getLogs";
params: [filter: import("ox/Filter").Rpc];
};
ReturnType: readonly import("ox/Log").Rpc[];
} | {
Request: {
method: "eth_getProof";
params: [address: import("ox/Address").Address, storageKeys: import("ox/Hex").Hex[], block: import("ox/Block").Number<import("ox/Hex").Hex> | import("ox/Block").Tag | import("ox/Block").Hash | import("ox/Block").Identifier];
};
ReturnType: import("ox/AccountProof").Rpc;
} | {
Request: {
method: "eth_getStorageAt";
params: [address: import("ox/Address").Address, index: import("ox/Hex").Hex, block: import("ox/Block").Number<import("ox/Hex").Hex> | import("ox/Block").Tag | import("ox/Block").Hash | import("ox/Block").Identifier];
};
ReturnType: import("ox/Hex").Hex;
} | {
Request: {
method: "eth_getTransactionByBlockHashAndIndex";
params: [hash: import("ox/Hex").Hex, index: import("ox/Hex").Hex];
};
ReturnType: import("ox/Transaction").Rpc | null;
} | {
Request: {
method: "eth_getTransactionByBlockNumberAndIndex";
params: [block: import("ox/Block").Number<import("ox/Hex").Hex> | import("ox/Block").Tag, index: import("ox/Hex").Hex];
};
ReturnType: import("ox/Transaction").Rpc | null;
} | {
Request: {
method: "eth_getTransactionByHash";
params: [hash: import("ox/Hex").Hex];
};
ReturnType: import("ox/Transaction").Rpc | null;
} | {
Request: {
method: "eth_getTransactionCount";
params: [address: import("ox/Address").Address, block: import("ox/Block").Number<import("ox/Hex").Hex> | import("ox/Block").Tag | import("ox/Block").Hash | import("ox/Block").Identifier];
};
ReturnType: import("ox/Hex").Hex;
} | {
Request: {
method: "eth_getTransactionReceipt";
params: [hash: import("ox/Hex").Hex];
};
ReturnType: import("ox/TransactionReceipt").Rpc | null;
} | {
Request: {
method: "eth_getUncleCountByBlockHash";
params: [hash: import("ox/Hex").Hex];
};
ReturnType: import("ox/Hex").Hex;
} | {
Request: {
method: "eth_getUncleCountByBlockNumber";
params: [block: import("ox/Block").Number<import("ox/Hex").Hex> | import("ox/Block").Tag];
};
ReturnType: import("ox/Hex").Hex;
} | {
Request: {
method: "eth_maxPriorityFeePerGas";
params?: undefined;
};
ReturnType: import("ox/Hex").Hex;
} | {
Request: {
method: "eth_newBlockFilter";
params?: undefined;
};
ReturnType: import("ox/Hex").Hex;
} | {
Request: {
method: "eth_newFilter";
params: [filter: import("ox/Filter").Rpc];
};
ReturnType: import("ox/Hex").Hex;
} | {
Request: {
method: "eth_newPendingTransactionFilter";
params?: undefined;
};
ReturnType: import("ox/Hex").Hex;
} | {
Request: {
method: "eth_protocolVersion";
params?: undefined;
};
ReturnType: string;
} | {
Request: {
method: "eth_requestAccounts";
params?: undefined;
};
ReturnType: readonly import("ox/Address").Address[];
} | {
Request: {
method: "eth_sendRawTransaction";
params: [serializedTransaction: import("ox/Hex").Hex];
};
ReturnType: import("ox/Hex").Hex;
} | {
Request: {
method: "eth_sendTransaction";
params: [transaction: import("ox/TransactionRequest").Rpc];
};
ReturnType: import("ox/Hex").Hex;
} | {
Request: {
method: "eth_simulateV1";
params: [{
blockStateCalls: readonly {
blockOverrides?: import("ox/BlockOverrides").Rpc | undefined;
calls?: readonly import("ox/TransactionRequest").Rpc[] | undefined;
stateOverrides?: import("ox/StateOverrides").Rpc | undefined;
}[];
returnFullTransactions?: boolean | undefined;
traceTransfers?: boolean | undefined;
validation?: boolean | undefined;
}, block: import("ox/Block").Number<import("ox/Hex").Hex> | import("ox/Block").Tag | import("ox/Block").Hash | import("ox/Block").Identifier];
};
ReturnType: readonly (import("ox/Block").Rpc & {
calls?: readonly {
error?: {
data?: import("ox/Hex").Hex | undefined;
code: number;
message: string;
} | undefined;
logs?: readonly import("ox/Log").Rpc[] | undefined;
gasUsed: import("ox/Hex").Hex;
returnData: import("ox/Hex").Hex;
status: import("ox/Hex").Hex;
}[] | undefined;
})[];
} | {
Request: {
method: "eth_signTransaction";
params: [request: import("ox/TransactionRequest").Rpc];
};
ReturnType: import("ox/Hex").Hex;
} | {
Request: {
method: "eth_signTypedData_v4";
params: [address: import("ox/Address").Address, message: string];
};
ReturnType: import("ox/Hex").Hex;
} | {
Request: {
method: "eth_uninstallFilter";
params: [filterId: import("ox/Hex").Hex];
};
ReturnType: boolean;
} | {
Request: {
method: "eth_requestAccounts";
params?: undefined;
};
ReturnType: readonly import("ox/Address").Address[];
} | {
Request: {
method: "eth_sendRawTransaction";
params: [serializedTransaction: import("ox/Hex").Hex];
};
ReturnType: import("ox/Hex").Hex;
} | {
Request: {
method: "eth_sendTransaction";
params: [transaction: import("ox/TransactionRequest").Rpc];
};
ReturnType: import("ox/Hex").Hex;
} | {
Request: {
method: "eth_signTransaction";
params: [request: import("ox/TransactionRequest").Rpc];
};
ReturnType: import("ox/Hex").Hex;
} | {
Request: {
method: "eth_signTypedData_v4";
params: [address: import("ox/Address").Address, message: string];
};
ReturnType: import("ox/Hex").Hex;
} | {
Request: {
method: "personal_sign";
params: [data: import("ox/Hex").Hex, address: import("ox/Address").Address];
};
ReturnType: import("ox/Hex").Hex;
} | {
Request: {
method: "wallet_addEthereumChain";
params: [chain: {
chainId: string;
chainName: string;
nativeCurrency?: {
name: string;
symbol: string;
decimals: number;
} | undefined | undefined;
rpcUrls: readonly string[];
blockExplorerUrls?: readonly string[] | undefined;
iconUrls?: readonly string[] | undefined;
}];
};
ReturnType: null;
} | {
Request: {
method: "wallet_getCallsStatus";
params?: [string];
};
ReturnType: {
atomic: boolean;
capabilities?: {
[capability: string]: any;
} | undefined;
chainId: import("ox/Hex").Hex;
id: string;
receipts?: readonly {
logs: {
address: import("ox/Hex").Hex;
data: import("ox/Hex").Hex;
topics: readonly import("ox/Hex").Hex[];
}[];
status: import("ox/Hex").Hex;
blockHash: import("ox/Hex").Hex;
blockNumber: import("ox/Hex").Hex;
gasUsed: import("ox/Hex").Hex;
transactionHash: import("ox/Hex").Hex;
}[] | undefined;
status: number;
version: string;
};
} | {
Request: {
method: "wallet_getCapabilities";
params?: readonly [] | readonly [import("ox/Address").Address | undefined] | readonly [import("ox/Address").Address | undefined, readonly import("ox/Hex").Hex[] | undefined] | undefined;
};
ReturnType: {
[x: `0x${string}`]: {
[capability: string]: any;
};
};
} | {
Request: {
method: "wallet_getPermissions";
params?: undefined;
};
ReturnType: readonly {
caveats: readonly {
type: string;
value: any;
}[];
date: number;
id: string;
invoker: `http://${string}` | `https://${string}`;
parentCapability: "eth_accounts" | string;
}[];
} | {
Request: {
method: "wallet_grantPermissions";
params?: [{
signer?: {
type: string;
data?: unknown | undefined;
} | undefined;
permissions: readonly {
data: unknown;
policies: readonly {
data: unknown;
type: string;
}[];
required?: boolean | undefined;
type: string;
}[];
expiry: number;
}];
};
ReturnType: {
expiry: number;
factory?: `0x${string}` | undefined | undefined;
factoryData?: string | undefined | undefined;
grantedPermissions: readonly {
data: unknown;
policies: readonly {
data: unknown;
type: string;
}[];
required?: boolean | undefined;
type: string;
}[];
permissionsContext: string;
signerData?: {
userOpBuilder?: `0x${string}` | undefined;
submitToAddress?: `0x${string}` | undefined;
} | undefined | undefined;
};
} | {
Request: {
method: "wallet_requestPermissions";
params: [permissions: {
eth_accounts: Record<string, any>;
}];
};
ReturnType: readonly {
caveats: readonly {
type: string;
value: any;
}[];
date: number;
id: string;
invoker: `http://${string}` | `https://${string}`;
parentCapability: "eth_accounts" | string;
}[];
} | {
Request: {
method: "wallet_revokePermissions";
params: [permissions: {
eth_accounts: Record<string, any>;
}];
};
ReturnType: null;
} | {
Request: {
method: "wallet_sendCalls";
params: [{
atomicRequired: boolean;
calls: readonly {
capabilities?: {
[capability: string]: any;
} | undefined;
to?: import("ox/Address").Address | undefined;
data?: import("ox/Hex").Hex | undefined;
value?: import("ox/Hex").Hex | undefined;
}[];
capabilities?: {
[capability: string]: any;
} | undefined;
chainId?: import("ox/Hex").Hex | undefined;
id?: string | undefined;
from?: import("ox/Address").Address | undefined;
version: string;
}];
};
ReturnType: {
capabilities?: {
[capability: string]: any;
} | undefined;
id: string;
};
} | {
Request: {
method: "wallet_showCallsStatus";
params: [string];
};
ReturnType: undefined;
} | {
Request: {
method: "wallet_switchEthereumChain";
params: [chain: {
chainId: string;
}];
};
ReturnType: null;
} | {
Request: {
method: "wallet_watchAsset";
params: [{
type: "ERC20";
options: {
address: string;
symbol: string;
decimals: number;
image?: string | undefined;
};
}];
};
ReturnType: boolean;
}>;
on: Provider.EventListenerFn;
removeListener: Provider.EventListenerFn;
};
address: `0x${string}`;
chainId: number | `0x${string}`;
namespace: string;
/**
* Sign a message
*
* @param {Uint8Array} message
*/
sign(message: Uint8Array): Promise<Uint8Array<ArrayBufferLike>>;
/**
* Export the signer as a encoded string
*/
export(): string;
}
export type ISigner = import("../types.js").ISigner<string>;
export type Provider = import("ox").Provider.Provider;
import { DID } from 'iso-did';
import { Provider } from 'ox';
//# sourceMappingURL=eip191.d.ts.map