tempo.ts 0.11.0 → 0.11.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # tempo.ts
2
2
 
3
+ ## 0.11.1
4
+
5
+ ### Patch Changes
6
+
7
+ - [`337d6df`](https://github.com/tempoxyz/tempo-ts/commit/337d6df02f34804f85d3815e51e103802a9fcc56) Thanks [@jxom](https://github.com/jxom)! - Fixed missing exports.
8
+
3
9
  ## 0.11.0
4
10
 
5
11
  ### Minor Changes
@@ -0,0 +1,73 @@
1
+ import * as Chain from './viem/Chain.js';
2
+ export declare const tempoDevnet: Chain.define.ReturnValue<{
3
+ readonly id: 1337;
4
+ readonly name: "Tempo Devnet";
5
+ readonly nativeCurrency: {
6
+ readonly name: "USD";
7
+ readonly symbol: "USD";
8
+ readonly decimals: 6;
9
+ };
10
+ readonly rpcUrls: {
11
+ readonly default: {
12
+ readonly http: readonly ["https://rpc.devnet.tempo.xyz"];
13
+ readonly webSocket: readonly ["wss://rpc.devnet.tempo.xyz"];
14
+ };
15
+ };
16
+ }>;
17
+ export declare const tempoLocal: Chain.define.ReturnValue<{
18
+ readonly id: 1337;
19
+ readonly name: "Tempo";
20
+ readonly nativeCurrency: {
21
+ readonly name: "USD";
22
+ readonly symbol: "USD";
23
+ readonly decimals: 6;
24
+ };
25
+ readonly rpcUrls: {
26
+ readonly default: {
27
+ readonly http: readonly ["http://localhost:8545"];
28
+ };
29
+ };
30
+ }>;
31
+ export declare const tempoTestnet: Chain.define.ReturnValue<{
32
+ readonly id: 42429;
33
+ readonly blockExplorers: {
34
+ readonly default: {
35
+ readonly name: "Tempo Explorer";
36
+ readonly url: "https://explore.tempo.xyz";
37
+ };
38
+ };
39
+ readonly name: "Tempo Testnet";
40
+ readonly nativeCurrency: {
41
+ readonly name: "USD";
42
+ readonly symbol: "USD";
43
+ readonly decimals: 6;
44
+ };
45
+ readonly rpcUrls: {
46
+ readonly default: {
47
+ readonly http: readonly ["https://rpc.testnet.tempo.xyz"];
48
+ readonly webSocket: readonly ["wss://rpc.testnet.tempo.xyz"];
49
+ };
50
+ };
51
+ }>;
52
+ export declare const tempo: Chain.define.ReturnValue<{
53
+ readonly id: 42429;
54
+ readonly blockExplorers: {
55
+ readonly default: {
56
+ readonly name: "Tempo Explorer";
57
+ readonly url: "https://explore.tempo.xyz";
58
+ };
59
+ };
60
+ readonly name: "Tempo Testnet";
61
+ readonly nativeCurrency: {
62
+ readonly name: "USD";
63
+ readonly symbol: "USD";
64
+ readonly decimals: 6;
65
+ };
66
+ readonly rpcUrls: {
67
+ readonly default: {
68
+ readonly http: readonly ["https://rpc.testnet.tempo.xyz"];
69
+ readonly webSocket: readonly ["wss://rpc.testnet.tempo.xyz"];
70
+ };
71
+ };
72
+ }>;
73
+ //# sourceMappingURL=chains.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chains.d.ts","sourceRoot":"","sources":["../src/chains.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,iBAAiB,CAAA;AAExC,eAAO,MAAM,WAAW;;;;;;;;;;;;;;EActB,CAAA;AAEF,eAAO,MAAM,UAAU;;;;;;;;;;;;;EAWrB,CAAA;AAEF,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;EAoBvB,CAAA;AAEF,eAAO,MAAM,KAAK;;;;;;;;;;;;;;;;;;;;EAA6B,CAAA"}
package/dist/chains.js ADDED
@@ -0,0 +1,51 @@
1
+ import * as Chain from './viem/Chain.js';
2
+ export const tempoDevnet = /*#__PURE__*/ Chain.define({
3
+ id: 1337,
4
+ name: 'Tempo Devnet',
5
+ nativeCurrency: {
6
+ name: 'USD',
7
+ symbol: 'USD',
8
+ decimals: 6,
9
+ },
10
+ rpcUrls: {
11
+ default: {
12
+ http: ['https://rpc.devnet.tempo.xyz'],
13
+ webSocket: ['wss://rpc.devnet.tempo.xyz'],
14
+ },
15
+ },
16
+ });
17
+ export const tempoLocal = /*#__PURE__*/ Chain.define({
18
+ id: 1337,
19
+ name: 'Tempo',
20
+ nativeCurrency: {
21
+ name: 'USD',
22
+ symbol: 'USD',
23
+ decimals: 6,
24
+ },
25
+ rpcUrls: {
26
+ default: { http: ['http://localhost:8545'] },
27
+ },
28
+ });
29
+ export const tempoTestnet = /*#__PURE__*/ Chain.define({
30
+ id: 42429,
31
+ blockExplorers: {
32
+ default: {
33
+ name: 'Tempo Explorer',
34
+ url: 'https://explore.tempo.xyz',
35
+ },
36
+ },
37
+ name: 'Tempo Testnet',
38
+ nativeCurrency: {
39
+ name: 'USD',
40
+ symbol: 'USD',
41
+ decimals: 6,
42
+ },
43
+ rpcUrls: {
44
+ default: {
45
+ http: ['https://rpc.testnet.tempo.xyz'],
46
+ webSocket: ['wss://rpc.testnet.tempo.xyz'],
47
+ },
48
+ },
49
+ });
50
+ export const tempo = /*#__PURE__*/ tempoTestnet;
51
+ //# sourceMappingURL=chains.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chains.js","sourceRoot":"","sources":["../src/chains.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,iBAAiB,CAAA;AAExC,MAAM,CAAC,MAAM,WAAW,GAAG,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC;IACpD,EAAE,EAAE,IAAI;IACR,IAAI,EAAE,cAAc;IACpB,cAAc,EAAE;QACd,IAAI,EAAE,KAAK;QACX,MAAM,EAAE,KAAK;QACb,QAAQ,EAAE,CAAC;KACZ;IACD,OAAO,EAAE;QACP,OAAO,EAAE;YACP,IAAI,EAAE,CAAC,8BAA8B,CAAC;YACtC,SAAS,EAAE,CAAC,4BAA4B,CAAC;SAC1C;KACF;CACF,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,UAAU,GAAG,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC;IACnD,EAAE,EAAE,IAAI;IACR,IAAI,EAAE,OAAO;IACb,cAAc,EAAE;QACd,IAAI,EAAE,KAAK;QACX,MAAM,EAAE,KAAK;QACb,QAAQ,EAAE,CAAC;KACZ;IACD,OAAO,EAAE;QACP,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,uBAAuB,CAAC,EAAE;KAC7C;CACF,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,YAAY,GAAG,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC;IACrD,EAAE,EAAE,KAAK;IACT,cAAc,EAAE;QACd,OAAO,EAAE;YACP,IAAI,EAAE,gBAAgB;YACtB,GAAG,EAAE,2BAA2B;SACjC;KACF;IACD,IAAI,EAAE,eAAe;IACrB,cAAc,EAAE;QACd,IAAI,EAAE,KAAK;QACX,MAAM,EAAE,KAAK;QACb,QAAQ,EAAE,CAAC;KACZ;IACD,OAAO,EAAE;QACP,OAAO,EAAE;YACP,IAAI,EAAE,CAAC,+BAA+B,CAAC;YACvC,SAAS,EAAE,CAAC,6BAA6B,CAAC;SAC3C;KACF;CACF,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,KAAK,GAAG,aAAa,CAAC,YAAY,CAAA"}
@@ -0,0 +1,40 @@
1
+ import type { Chain, Client, Transport } from 'viem';
2
+ import type { VerifyHashParameters, VerifyHashReturnType } from 'viem/actions';
3
+ import type { PartialBy } from '../../internal/types.js';
4
+ /**
5
+ * Verifies that a signature is valid for a given hash and address.
6
+ * Supports multiple signature types: Secp256k1, P256, WebCrypto P256, and WebAuthn P256.
7
+ *
8
+ * @example
9
+ * ```ts
10
+ * import { createClient, http } from 'viem'
11
+ * import { tempo } from 'tempo.ts/chains'
12
+ * import { Actions, Account, P256 } from 'tempo.ts/viem'
13
+ *
14
+ * const client = createClient({
15
+ * chain: tempo({ feeToken: '0x20c0000000000000000000000000000000000001' })
16
+ * transport: http(),
17
+ * })
18
+ *
19
+ * const privateKey = P256.randomPrivateKey()
20
+ * const account = Account.fromP256(privateKey)
21
+ *
22
+ * const hash = '0x...'
23
+ * const signature = await account.sign({ hash })
24
+ *
25
+ * const valid = await Actions.verifyHash(client, {
26
+ * hash,
27
+ * signature,
28
+ * })
29
+ * ```
30
+ *
31
+ * @param client - Client.
32
+ * @param parameters - Parameters.
33
+ * @returns Whether the signature is valid.
34
+ */
35
+ export declare function verifyHash<chain extends Chain | undefined>(client: Client<Transport, chain>, parameters: verifyHash.Parameters): Promise<verifyHash.ReturnValue>;
36
+ export declare namespace verifyHash {
37
+ type Parameters = PartialBy<VerifyHashParameters, 'address'>;
38
+ type ReturnValue = VerifyHashReturnType;
39
+ }
40
+ //# sourceMappingURL=account.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"account.d.ts","sourceRoot":"","sources":["../../../src/viem/Actions/account.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,MAAM,CAAA;AACpD,OAAO,KAAK,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAA;AAG9E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAExD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAsB,UAAU,CAAC,KAAK,SAAS,KAAK,GAAG,SAAS,EAC9D,MAAM,EAAE,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,EAChC,UAAU,EAAE,UAAU,CAAC,UAAU,GAChC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAsDjC;AAED,MAAM,CAAC,OAAO,WAAW,UAAU,CAAC;IAClC,KAAY,UAAU,GAAG,SAAS,CAAC,oBAAoB,EAAE,SAAS,CAAC,CAAA;IAEnE,KAAY,WAAW,GAAG,oBAAoB,CAAA;CAC/C"}
@@ -0,0 +1,86 @@
1
+ import { Secp256k1 } from 'ox';
2
+ import * as Hex from 'ox/Hex';
3
+ import * as P256 from 'ox/P256';
4
+ import { SignatureEnvelope } from 'ox/tempo';
5
+ import * as WebAuthnP256 from 'ox/WebAuthnP256';
6
+ import { verifyHash as viem_verifyHash } from 'viem/actions';
7
+ import { getAction } from 'viem/utils';
8
+ /**
9
+ * Verifies that a signature is valid for a given hash and address.
10
+ * Supports multiple signature types: Secp256k1, P256, WebCrypto P256, and WebAuthn P256.
11
+ *
12
+ * @example
13
+ * ```ts
14
+ * import { createClient, http } from 'viem'
15
+ * import { tempo } from 'tempo.ts/chains'
16
+ * import { Actions, Account, P256 } from 'tempo.ts/viem'
17
+ *
18
+ * const client = createClient({
19
+ * chain: tempo({ feeToken: '0x20c0000000000000000000000000000000000001' })
20
+ * transport: http(),
21
+ * })
22
+ *
23
+ * const privateKey = P256.randomPrivateKey()
24
+ * const account = Account.fromP256(privateKey)
25
+ *
26
+ * const hash = '0x...'
27
+ * const signature = await account.sign({ hash })
28
+ *
29
+ * const valid = await Actions.verifyHash(client, {
30
+ * hash,
31
+ * signature,
32
+ * })
33
+ * ```
34
+ *
35
+ * @param client - Client.
36
+ * @param parameters - Parameters.
37
+ * @returns Whether the signature is valid.
38
+ */
39
+ export async function verifyHash(client, parameters) {
40
+ const { hash } = parameters;
41
+ const signature = (() => {
42
+ const signature = parameters.signature;
43
+ if (Hex.validate(signature))
44
+ return signature;
45
+ if (typeof signature === 'object' && 'r' in signature && 's' in signature)
46
+ return SignatureEnvelope.serialize({
47
+ type: 'secp256k1',
48
+ signature: {
49
+ r: BigInt(signature.r),
50
+ s: BigInt(signature.s),
51
+ yParity: signature.yParity,
52
+ },
53
+ });
54
+ return Hex.fromBytes(signature);
55
+ })();
56
+ const [envelope, userAddress] = (() => {
57
+ const envelope = SignatureEnvelope.from(signature);
58
+ if (envelope.type === 'keychain')
59
+ return [envelope.inner, envelope.userAddress];
60
+ return [envelope, undefined];
61
+ })();
62
+ if (envelope.type === 'p256')
63
+ return P256.verify({
64
+ payload: hash,
65
+ publicKey: envelope.publicKey,
66
+ signature: envelope.signature,
67
+ hash: envelope.prehash,
68
+ });
69
+ if (envelope.type === 'webAuthn')
70
+ return WebAuthnP256.verify({
71
+ challenge: hash,
72
+ metadata: envelope.metadata,
73
+ publicKey: envelope.publicKey,
74
+ signature: envelope.signature,
75
+ });
76
+ if (envelope.type === 'keychain')
77
+ throw new Error('not supported');
78
+ const address = parameters.address ??
79
+ userAddress ??
80
+ Secp256k1.recoverAddress({
81
+ payload: hash,
82
+ signature: envelope.signature,
83
+ });
84
+ return await getAction(client, viem_verifyHash, 'verifyHash')({ ...parameters, address });
85
+ }
86
+ //# sourceMappingURL=account.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"account.js","sourceRoot":"","sources":["../../../src/viem/Actions/account.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,IAAI,CAAA;AAC9B,OAAO,KAAK,GAAG,MAAM,QAAQ,CAAA;AAC7B,OAAO,KAAK,IAAI,MAAM,SAAS,CAAA;AAC/B,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAA;AAC5C,OAAO,KAAK,YAAY,MAAM,iBAAiB,CAAA;AAG/C,OAAO,EAAE,UAAU,IAAI,eAAe,EAAE,MAAM,cAAc,CAAA;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAGtC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,MAAgC,EAChC,UAAiC;IAEjC,MAAM,EAAE,IAAI,EAAE,GAAG,UAAU,CAAA;IAE3B,MAAM,SAAS,GAAG,CAAC,GAAG,EAAE;QACtB,MAAM,SAAS,GAAG,UAAU,CAAC,SAAS,CAAA;QACtC,IAAI,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC;YAAE,OAAO,SAAS,CAAA;QAC7C,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,GAAG,IAAI,SAAS,IAAI,GAAG,IAAI,SAAS;YACvE,OAAO,iBAAiB,CAAC,SAAS,CAAC;gBACjC,IAAI,EAAE,WAAW;gBACjB,SAAS,EAAE;oBACT,CAAC,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;oBACtB,CAAC,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;oBACtB,OAAO,EAAE,SAAS,CAAC,OAAQ;iBAC5B;aACF,CAAC,CAAA;QACJ,OAAO,GAAG,CAAC,SAAS,CAAC,SAAS,CAAC,CAAA;IACjC,CAAC,CAAC,EAAE,CAAA;IAEJ,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE;QACpC,MAAM,QAAQ,GAAG,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;QAClD,IAAI,QAAQ,CAAC,IAAI,KAAK,UAAU;YAC9B,OAAO,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAA;QAC/C,OAAO,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAA;IAC9B,CAAC,CAAC,EAAE,CAAA;IAEJ,IAAI,QAAQ,CAAC,IAAI,KAAK,MAAM;QAC1B,OAAO,IAAI,CAAC,MAAM,CAAC;YACjB,OAAO,EAAE,IAAI;YACb,SAAS,EAAE,QAAQ,CAAC,SAAS;YAC7B,SAAS,EAAE,QAAQ,CAAC,SAAS;YAC7B,IAAI,EAAE,QAAQ,CAAC,OAAO;SACvB,CAAC,CAAA;IACJ,IAAI,QAAQ,CAAC,IAAI,KAAK,UAAU;QAC9B,OAAO,YAAY,CAAC,MAAM,CAAC;YACzB,SAAS,EAAE,IAAI;YACf,QAAQ,EAAE,QAAQ,CAAC,QAAQ;YAC3B,SAAS,EAAE,QAAQ,CAAC,SAAS;YAC7B,SAAS,EAAE,QAAQ,CAAC,SAAS;SAC9B,CAAC,CAAA;IACJ,IAAI,QAAQ,CAAC,IAAI,KAAK,UAAU;QAAE,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,CAAA;IAElE,MAAM,OAAO,GACX,UAAU,CAAC,OAAO;QAClB,WAAW;QACX,SAAS,CAAC,cAAc,CAAC;YACvB,OAAO,EAAE,IAAI;YACb,SAAS,EAAE,QAAQ,CAAC,SAAS;SAC9B,CAAC,CAAA;IAEJ,OAAO,MAAM,SAAS,CACpB,MAAM,EACN,eAAe,EACf,YAAY,CACb,CAAC,EAAE,GAAG,UAAU,EAAE,OAAO,EAAW,CAAC,CAAA;AACxC,CAAC"}
@@ -0,0 +1,10 @@
1
+ export { verifyHash } from './account.js';
2
+ export * as amm from './amm.js';
3
+ export * as dex from './dex.js';
4
+ export * as faucet from './faucet.js';
5
+ export * as fee from './fee.js';
6
+ export * as nonce from './nonce.js';
7
+ export * as policy from './policy.js';
8
+ export * as reward from './reward.js';
9
+ export * as token from './token.js';
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/viem/Actions/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,KAAK,GAAG,MAAM,UAAU,CAAA;AAC/B,OAAO,KAAK,GAAG,MAAM,UAAU,CAAA;AAC/B,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AACrC,OAAO,KAAK,GAAG,MAAM,UAAU,CAAA;AAC/B,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AACnC,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AACrC,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AACrC,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA"}
@@ -0,0 +1,10 @@
1
+ export { verifyHash } from './account.js';
2
+ export * as amm from './amm.js';
3
+ export * as dex from './dex.js';
4
+ export * as faucet from './faucet.js';
5
+ export * as fee from './fee.js';
6
+ export * as nonce from './nonce.js';
7
+ export * as policy from './policy.js';
8
+ export * as reward from './reward.js';
9
+ export * as token from './token.js';
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/viem/Actions/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,KAAK,GAAG,MAAM,UAAU,CAAA;AAC/B,OAAO,KAAK,GAAG,MAAM,UAAU,CAAA;AAC/B,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AACrC,OAAO,KAAK,GAAG,MAAM,UAAU,CAAA;AAC/B,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AACnC,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AACrC,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AACrC,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA"}