import { BuildApprovedNamespacesParams } from '@walletconnect/utils';
import { SessionMetadata } from './session.types';
export interface VerifyContextOptions {
    verified: {
        origin: string;
        validation: string;
        verifyUrl: string;
    };
}
export type WCSessionProposalOptions = {
    id: number;
    params: BuildApprovedNamespacesParams['proposal'];
    verifyContext: VerifyContextOptions;
};
export type WCSessionRequestOptions = {
    id: number;
    topic: string;
    params: {
        chainId: string;
        request: {
            method: string;
            params: unknown[];
        };
    };
    verifyContext: VerifyContextOptions;
};
export interface TxParametersBase {
    from: string;
    to: string;
    gas?: string;
    gasPrice?: string;
    value: string;
    data?: string;
}
export interface WCTransactionParameters<T = number> extends TxParametersBase {
    chainId: T;
}
type BaseNamespace = {
    chains?: string[];
    accounts: string[];
    methods: string[];
    events: string[];
};
export type Namespaces = Record<string, BaseNamespace>;
export type WCSession = {
    topic: string;
    pairingTopic: string;
    acknowledged: boolean;
    controller: string;
    self: {
        publicKey: string;
    };
    peer: {
        publicKey: string;
        metadata: SessionMetadata;
    };
    namespaces: Namespaces;
};
export interface WCErrorResponse {
    id: number;
    error: {
        code: number;
        message: string;
    };
    jsonrpc: string;
}
export interface WCSuccessResponse {
    id: number;
    result: string | null | object;
    jsonrpc: string;
}
export type WCResponse = WCErrorResponse | WCSuccessResponse;
export type AppMetaData = {
    url?: string;
    icon: string;
    name: string;
};
export {};
