import * as AbiParameters from '../core/AbiParameters.js';
import * as Hash from '../core/Hash.js';
import * as Hex from '../core/Hex.js';
import * as ChannelDescriptor from './ChannelDescriptor.js';
/**
 * TIP-20 channel reserve precompile address.
 */
export declare const address: "0x4d50500000000000000000000000000000000000";
/**
 * Delay between payer `requestClose` and `withdraw`, in seconds.
 */
export declare const closeGracePeriod = 900n;
/**
 * EIP-712 type hash for `Voucher(bytes32 channelId,uint96 cumulativeAmount)`.
 */
export declare const voucherTypehash: `0x${string}`;
/**
 * TIP-20 channel descriptor.
 */
export type Descriptor = ChannelDescriptor.ChannelDescriptor;
/**
 * Computes the canonical TIP-20 channel id for a descriptor.
 *
 * Mirrors `computeChannelId` on the TIP-20 channel reserve precompile without
 * performing an RPC call.
 *
 * @example
 * ```ts twoslash
 * import { Channel } from 'ox/tempo'
 *
 * const channelId = Channel.computeId({
 *   authorizedSigner: '0x0000000000000000000000000000000000000000',
 *   chainId: 4217,
 *   expiringNonceHash: '0x0000000000000000000000000000000000000000000000000000000000000000',
 *   operator: '0x0000000000000000000000000000000000000000',
 *   payee: '0x2222222222222222222222222222222222222222',
 *   payer: '0x1111111111111111111111111111111111111111',
 *   salt: '0x0000000000000000000000000000000000000000000000000000000000000001',
 *   token: 1n,
 * })
 * ```
 *
 * @param value - Channel descriptor and chain id.
 * @returns The channel id.
 */
export declare function computeId(value: computeId.Value): Hex.Hex;
export declare namespace computeId {
    type Value = ChannelDescriptor.from.Value & {
        /** Chain id used by the channel reserve precompile. */
        chainId: number | bigint;
    };
    type ErrorType = AbiParameters.encode.ErrorType | ChannelDescriptor.from.ErrorType | Hash.keccak256.ErrorType;
}
/**
 * Computes the EIP-712 domain separator for the TIP-20 channel reserve.
 *
 * Mirrors `domainSeparator` on the TIP-20 channel reserve precompile without
 * performing an RPC call.
 *
 * @example
 * ```ts twoslash
 * import { Channel } from 'ox/tempo'
 *
 * const separator = Channel.domainSeparator({ chainId: 4217 })
 * ```
 *
 * @param value - Chain id.
 * @returns The EIP-712 domain separator.
 */
export declare function domainSeparator(value: domainSeparator.Value): Hex.Hex;
export declare namespace domainSeparator {
    type Value = {
        /** Chain id used by the channel reserve precompile. */
        chainId: number | bigint;
    };
    type ErrorType = AbiParameters.encode.ErrorType | Hash.keccak256.ErrorType;
}
/**
 * Computes the EIP-712 sign payload for a TIP-20 channel voucher.
 *
 * Mirrors `getVoucherDigest` on the TIP-20 channel reserve precompile without
 * performing an RPC call.
 *
 * @example
 * ```ts twoslash
 * import { Channel } from 'ox/tempo'
 *
 * const payload = Channel.getVoucherSignPayload({
 *   chainId: 4217,
 *   channelId: '0x0000000000000000000000000000000000000000000000000000000000000000',
 *   cumulativeAmount: 1n,
 * })
 * ```
 *
 * @param value - Voucher fields and chain id.
 * @returns The voucher sign payload.
 */
export declare function getVoucherSignPayload(value: getVoucherSignPayload.Value): Hex.Hex;
export declare namespace getVoucherSignPayload {
    type Value = {
        /** Chain id used by the channel reserve precompile. */
        chainId: number | bigint;
        /** Channel id. */
        channelId: Hex.Hex;
        /** Total voucher amount signed for the channel. */
        cumulativeAmount: bigint;
    };
    type ErrorType = AbiParameters.encode.ErrorType | domainSeparator.ErrorType | Hash.keccak256.ErrorType;
}
//# sourceMappingURL=Channel.d.ts.map