import { BlockchainAddress, Amount, PublicKey, Tag, EntityId, IsoDatetime, Initiator, BlockchainNetwork, DocumentSnapshot, IntegerPositiveStrict } from '../Foundations';
export declare type SignatureResponse = {
    r: string;
    s: string;
    recid: number;
};
export declare type PublicKeyRecord = {
    id: EntityId;
    externalId?: string;
    orgId: EntityId;
    publicKey: PublicKey;
    signerIds: string[];
    groupThreshold: number;
    groupSize: number;
    tags?: Tag[];
    isEddsa: boolean;
};
export declare type GetPublicKeyAddressResponse = {
    publicKeyId: string;
    network: string;
    address: BlockchainAddress;
};
export declare type Signature = {
    id: EntityId;
    orgId: EntityId;
    publicKeyId: string;
    hash: string;
    r: string;
    s: string;
    recid: number;
    status: SignatureStatus;
    initiator: Initiator;
    dateCreated: IsoDatetime;
};
export declare type CosmosDenomAmount = {
    denom: string;
    amount: string;
};
export declare type CosmosTimeoutHeight = {
    revisionNumber: string;
    revisionHeight: string;
};
export declare type EvmGenericTx = {
    templateKind: TransactionTemplateKind.EvmGenericTx;
    to: string;
    gasLimit: Amount;
    gasPrice: Amount;
    nonce?: string;
    value?: string;
    data?: string;
    publicKeyId?: string;
    network: BlockchainNetwork;
    /**
     * the maximum amount of gas to be included as a tip to the miner
     */
    maxPriorityFeePerGas?: Amount;
    /**
     * the maximum amount of gas willing to be paid for the transaction (inclusive of baseFeePerGas and maxPriorityFeePerGas)
     */
    maxFeePerGas?: Amount;
    typedData?: Eip712TypedData;
};
export declare type CosmosIbcTransferTx = {
    templateKind: TransactionTemplateKind.CosmosIbcTransfer;
    sourcePort: string;
    sourceChannel: string;
    token: CosmosDenomAmount;
    sender: string;
    receiver: string;
    timeoutHeight: CosmosTimeoutHeight;
    timeoutTimestamp: string;
    publicKeyId?: string;
    network: BlockchainNetwork;
};
export declare type Eip712TypedData = {
    types: Record<string, unknown>;
    values: Record<string, unknown>;
    domain?: Eip712TypedDataDomain;
};
export declare type Eip712TypedDataDomain = {
    name?: string;
    chainId?: string;
    version?: string;
    verifyingContract?: string;
    salt?: string;
};
export declare type BroadcastedTransaction = {
    id: EntityId;
    transaction: TransactionPayload;
    snapshot: DocumentSnapshot;
    network: BlockchainNetwork;
    dateCreated: IsoDatetime;
    dateUpdated: IsoDatetime;
    status: TransactionStatus;
    txHash?: string;
    networkResponse?: string;
    dateBroadcasted?: IsoDatetime;
    initiator: Initiator;
    publicKeyId: string;
    orgId: EntityId;
};
export declare type GetPublicKeyResponse = {
    id: EntityId;
    externalId?: string;
    publicKey: PublicKey;
    groupThreshold: number;
    groupSize: number;
    tags?: Tag[];
    isEddsa: boolean;
};
export declare type StartWalletConnectSessionOutput = {
    session: WalletConnectSession;
};
export declare type WalletConnectClientMeta = {
    name: string;
    description: string;
    icons: string[];
};
export declare type WalletConnectSession = {
    accounts: string[];
    chainId: IntegerPositiveStrict;
    bridge: string;
    key: string;
    clientId: string;
    clientMeta?: WalletConnectClientMeta;
    peerId: string;
    peerMeta?: WalletConnectClientMeta;
    handshakeId: IntegerPositiveStrict;
    handshakeTopic: string;
};
export declare type CreateSignatureInput = {
    hash: string;
};
export declare type CreatePublicKeyInput = {
    externalId?: string;
    assetAccountId: EntityId;
    groupSize?: number;
    groupThreshold?: number;
    isEddsa: boolean;
    tags?: Tag[];
};
export declare type CreateWalletTxInput = {
    to: BlockchainAddress;
    amount: Amount;
    asset: string;
};
export declare type StartWalletConnectSessionInput = {
    wcUri: string;
};
export declare type TransactionPayload = EvmGenericTx | CosmosIbcTransferTx;
export declare enum PublicKeyStatus {
    Active = "Active",
    Disabled = "Disabled",
    Compromised = "Compromised"
}
export declare enum SignatureStatus {
    Pending = "Pending",
    Executed = "Executed",
    Rejected = "Rejected",
    Failed = "Failed"
}
export declare enum TransactionTemplateKind {
    EvmGenericTx = "EvmGenericTx",
    CosmosIbcTransfer = "CosmosIbcTransfer"
}
export declare enum TransactionStatus {
    Initiated = "Initiated",
    PolicyAccepted = "PolicyAccepted",
    PolicyRejected = "PolicyRejected",
    BroadcastPending = "BroadcastPending",
    BroadcastRejected = "BroadcastRejected",
    Broadcasted = "Broadcasted",
    Confirmed = "Confirmed"
}
